From 5a2e346c604d4eb354dbc548b578f78976438f84 Mon Sep 17 00:00:00 2001 From: Yee Hing Tong Date: Mon, 1 May 2023 17:31:28 -0700 Subject: [PATCH] Data addresses #minor (#391) Signed-off-by: Yee Hing Tong --- .../go/admin/mocks/DataProxyServiceClient.go | 48 + .../go/admin/mocks/DataProxyServiceServer.go | 41 + clients/go/admin/mocks/isDataResponse_Data.go | 15 + .../go/admin/mocks/isGetDataResponse_Data.go | 15 + gen/pb-cpp/flyteidl/admin/common.pb.cc | 492 ++- gen/pb-cpp/flyteidl/admin/common.pb.h | 321 +- .../flyteidl/admin/node_execution.pb.cc | 96 +- gen/pb-cpp/flyteidl/admin/node_execution.pb.h | 55 + .../flyteidl/admin/task_execution.pb.cc | 94 +- gen/pb-cpp/flyteidl/admin/task_execution.pb.h | 55 + gen/pb-cpp/flyteidl/service/admin.pb.cc | 512 ++- gen/pb-cpp/flyteidl/service/admin.pb.h | 2 - .../flyteidl/service/dataproxy.grpc.pb.cc | 42 + .../flyteidl/service/dataproxy.grpc.pb.h | 169 +- gen/pb-cpp/flyteidl/service/dataproxy.pb.cc | 1404 +++++++- gen/pb-cpp/flyteidl/service/dataproxy.pb.h | 754 +++- gen/pb-go/flyteidl/admin/common.pb.go | 202 +- .../flyteidl/admin/common.pb.validate.go | 70 + gen/pb-go/flyteidl/admin/node_execution.pb.go | 158 +- .../admin/node_execution.pb.validate.go | 10 + gen/pb-go/flyteidl/admin/task_execution.pb.go | 135 +- .../admin/task_execution.pb.validate.go | 10 + gen/pb-go/flyteidl/service/admin.pb.go | 258 +- gen/pb-go/flyteidl/service/admin.swagger.json | 22 + gen/pb-go/flyteidl/service/dataproxy.pb.go | 335 +- gen/pb-go/flyteidl/service/dataproxy.pb.gw.go | 44 + .../flyteidl/service/dataproxy.swagger.json | 538 +++ .../flyteidl/service/flyteadmin/README.md | 1 + .../service/flyteadmin/api/swagger.yaml | 29 + .../flyteadmin/model_admin_flyte_ur_ls.go | 17 + ..._admin_node_execution_get_data_response.go | 1 + ..._admin_task_execution_get_data_response.go | 1 + gen/pb-go/flyteidl/service/openapi.go | 4 +- gen/pb-java/flyteidl/admin/Common.java | 853 ++++- .../admin/NodeExecutionOuterClass.java | 205 +- .../admin/TaskExecutionOuterClass.java | 278 +- gen/pb-java/flyteidl/service/Admin.java | 508 ++- gen/pb-java/flyteidl/service/Dataproxy.java | 3188 ++++++++++++++++- gen/pb-js/flyteidl.d.ts | 274 ++ gen/pb-js/flyteidl.js | 635 ++++ gen/pb_python/flyteidl/admin/common_pb2.py | 61 + gen/pb_python/flyteidl/admin/common_pb2.pyi | 12 + .../flyteidl/admin/node_execution_pb2.py | 41 + .../flyteidl/admin/node_execution_pb2.pyi | 158 + .../flyteidl/admin/task_execution_pb2.py | 23 + .../flyteidl/admin/task_execution_pb2.pyi | 64 + gen/pb_python/flyteidl/service/admin_pb2.py | 11 +- gen/pb_python/flyteidl/service/admin_pb2.pyi | 2 - .../flyteidl/service/dataproxy_pb2.py | 48 + .../flyteidl/service/dataproxy_pb2.pyi | 101 + .../flyteidl/service/dataproxy_pb2_grpc.py | 138 + .../flyteidl/service/flyteadmin/README.md | 1 + .../service/flyteadmin/flyteadmin/__init__.py | 1 + .../flyteadmin/flyteadmin/models/__init__.py | 1 + .../flyteadmin/models/admin_flyte_ur_ls.py | 167 + .../admin_node_execution_get_data_response.py | 33 +- .../admin_task_execution_get_data_response.py | 33 +- .../flyteadmin/test/test_admin_flyte_ur_ls.py | 40 + gen/pb_rust/flyteidl.admin.rs | 2821 +++++++++++++++ gen/pb_rust/flyteidl.service.rs | 385 ++ go.mod | 3 +- go.sum | 1 + protos/flyteidl/admin/common.proto | 7 + protos/flyteidl/admin/node_execution.proto | 3 + protos/flyteidl/admin/task_execution.proto | 4 + protos/flyteidl/service/admin.proto | 2 - protos/flyteidl/service/dataproxy.proto | 40 + 67 files changed, 14902 insertions(+), 1190 deletions(-) create mode 100644 clients/go/admin/mocks/isDataResponse_Data.go create mode 100644 clients/go/admin/mocks/isGetDataResponse_Data.go create mode 100644 gen/pb-go/flyteidl/service/flyteadmin/model_admin_flyte_ur_ls.go create mode 100644 gen/pb_python/flyteidl/admin/node_execution_pb2.pyi create mode 100644 gen/pb_python/flyteidl/service/dataproxy_pb2.pyi create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_flyte_ur_ls.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_flyte_ur_ls.py create mode 100644 gen/pb_rust/flyteidl.admin.rs create mode 100644 gen/pb_rust/flyteidl.service.rs diff --git a/clients/go/admin/mocks/DataProxyServiceClient.go b/clients/go/admin/mocks/DataProxyServiceClient.go index d161dc3fe..ce7b9de11 100644 --- a/clients/go/admin/mocks/DataProxyServiceClient.go +++ b/clients/go/admin/mocks/DataProxyServiceClient.go @@ -160,3 +160,51 @@ func (_m *DataProxyServiceClient) CreateUploadLocation(ctx context.Context, in * return r0, r1 } + +type DataProxyServiceClient_GetData struct { + *mock.Call +} + +func (_m DataProxyServiceClient_GetData) Return(_a0 *service.GetDataResponse, _a1 error) *DataProxyServiceClient_GetData { + return &DataProxyServiceClient_GetData{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *DataProxyServiceClient) OnGetData(ctx context.Context, in *service.GetDataRequest, opts ...grpc.CallOption) *DataProxyServiceClient_GetData { + c_call := _m.On("GetData", ctx, in, opts) + return &DataProxyServiceClient_GetData{Call: c_call} +} + +func (_m *DataProxyServiceClient) OnGetDataMatch(matchers ...interface{}) *DataProxyServiceClient_GetData { + c_call := _m.On("GetData", matchers...) + return &DataProxyServiceClient_GetData{Call: c_call} +} + +// GetData provides a mock function with given fields: ctx, in, opts +func (_m *DataProxyServiceClient) GetData(ctx context.Context, in *service.GetDataRequest, opts ...grpc.CallOption) (*service.GetDataResponse, 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 *service.GetDataResponse + if rf, ok := ret.Get(0).(func(context.Context, *service.GetDataRequest, ...grpc.CallOption) *service.GetDataResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*service.GetDataResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *service.GetDataRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} diff --git a/clients/go/admin/mocks/DataProxyServiceServer.go b/clients/go/admin/mocks/DataProxyServiceServer.go index 6ba37135a..ce2dae0da 100644 --- a/clients/go/admin/mocks/DataProxyServiceServer.go +++ b/clients/go/admin/mocks/DataProxyServiceServer.go @@ -136,3 +136,44 @@ func (_m *DataProxyServiceServer) CreateUploadLocation(_a0 context.Context, _a1 return r0, r1 } + +type DataProxyServiceServer_GetData struct { + *mock.Call +} + +func (_m DataProxyServiceServer_GetData) Return(_a0 *service.GetDataResponse, _a1 error) *DataProxyServiceServer_GetData { + return &DataProxyServiceServer_GetData{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *DataProxyServiceServer) OnGetData(_a0 context.Context, _a1 *service.GetDataRequest) *DataProxyServiceServer_GetData { + c_call := _m.On("GetData", _a0, _a1) + return &DataProxyServiceServer_GetData{Call: c_call} +} + +func (_m *DataProxyServiceServer) OnGetDataMatch(matchers ...interface{}) *DataProxyServiceServer_GetData { + c_call := _m.On("GetData", matchers...) + return &DataProxyServiceServer_GetData{Call: c_call} +} + +// GetData provides a mock function with given fields: _a0, _a1 +func (_m *DataProxyServiceServer) GetData(_a0 context.Context, _a1 *service.GetDataRequest) (*service.GetDataResponse, error) { + ret := _m.Called(_a0, _a1) + + var r0 *service.GetDataResponse + if rf, ok := ret.Get(0).(func(context.Context, *service.GetDataRequest) *service.GetDataResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*service.GetDataResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *service.GetDataRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} diff --git a/clients/go/admin/mocks/isDataResponse_Data.go b/clients/go/admin/mocks/isDataResponse_Data.go new file mode 100644 index 000000000..a42a9f210 --- /dev/null +++ b/clients/go/admin/mocks/isDataResponse_Data.go @@ -0,0 +1,15 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import mock "github.com/stretchr/testify/mock" + +// isDataResponse_Data is an autogenerated mock type for the isDataResponse_Data type +type isDataResponse_Data struct { + mock.Mock +} + +// isDataResponse_Data provides a mock function with given fields: +func (_m *isDataResponse_Data) isDataResponse_Data() { + _m.Called() +} diff --git a/clients/go/admin/mocks/isGetDataResponse_Data.go b/clients/go/admin/mocks/isGetDataResponse_Data.go new file mode 100644 index 000000000..3300b7e1b --- /dev/null +++ b/clients/go/admin/mocks/isGetDataResponse_Data.go @@ -0,0 +1,15 @@ +// Code generated by mockery v1.0.1. DO NOT EDIT. + +package mocks + +import mock "github.com/stretchr/testify/mock" + +// isGetDataResponse_Data is an autogenerated mock type for the isGetDataResponse_Data type +type isGetDataResponse_Data struct { + mock.Mock +} + +// isGetDataResponse_Data provides a mock function with given fields: +func (_m *isGetDataResponse_Data) isGetDataResponse_Data() { + _m.Called() +} diff --git a/gen/pb-cpp/flyteidl/admin/common.pb.cc b/gen/pb-cpp/flyteidl/admin/common.pb.cc index a64ea9629..f9c289156 100644 --- a/gen/pb-cpp/flyteidl/admin/common.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/common.pb.cc @@ -127,6 +127,10 @@ class RawOutputDataConfigDefaultTypeInternal { public: ::google::protobuf::internal::ExplicitlyConstructed _instance; } _RawOutputDataConfig_default_instance_; +class FlyteURLsDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _FlyteURLs_default_instance_; } // namespace admin } // namespace flyteidl static void InitDefaultsNamedEntityIdentifier_flyteidl_2fadmin_2fcommon_2eproto() { @@ -480,6 +484,20 @@ static void InitDefaultsRawOutputDataConfig_flyteidl_2fadmin_2fcommon_2eproto() ::google::protobuf::internal::SCCInfo<0> scc_info_RawOutputDataConfig_flyteidl_2fadmin_2fcommon_2eproto = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsRawOutputDataConfig_flyteidl_2fadmin_2fcommon_2eproto}, {}}; +static void InitDefaultsFlyteURLs_flyteidl_2fadmin_2fcommon_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_FlyteURLs_default_instance_; + new (ptr) ::flyteidl::admin::FlyteURLs(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::FlyteURLs::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_FlyteURLs_flyteidl_2fadmin_2fcommon_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsFlyteURLs_flyteidl_2fadmin_2fcommon_2eproto}, {}}; + void InitDefaults_flyteidl_2fadmin_2fcommon_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_NamedEntityIdentifier_flyteidl_2fadmin_2fcommon_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_NamedEntityMetadata_flyteidl_2fadmin_2fcommon_2eproto.base); @@ -505,9 +523,10 @@ void InitDefaults_flyteidl_2fadmin_2fcommon_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_Annotations_flyteidl_2fadmin_2fcommon_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_AuthRole_flyteidl_2fadmin_2fcommon_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_RawOutputDataConfig_flyteidl_2fadmin_2fcommon_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_FlyteURLs_flyteidl_2fadmin_2fcommon_2eproto.base); } -::google::protobuf::Metadata file_level_metadata_flyteidl_2fadmin_2fcommon_2eproto[24]; +::google::protobuf::Metadata file_level_metadata_flyteidl_2fadmin_2fcommon_2eproto[25]; const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_flyteidl_2fadmin_2fcommon_2eproto[2]; constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_flyteidl_2fadmin_2fcommon_2eproto = nullptr; @@ -693,6 +712,14 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fcommon_2eproto:: ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::RawOutputDataConfig, output_location_prefix_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::FlyteURLs, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::FlyteURLs, inputs_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::FlyteURLs, outputs_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::FlyteURLs, deck_), }; static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, sizeof(::flyteidl::admin::NamedEntityIdentifier)}, @@ -719,6 +746,7 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 162, -1, sizeof(::flyteidl::admin::Annotations)}, { 168, -1, sizeof(::flyteidl::admin::AuthRole)}, { 175, -1, sizeof(::flyteidl::admin::RawOutputDataConfig)}, + { 181, -1, sizeof(::flyteidl::admin::FlyteURLs)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -746,12 +774,13 @@ static ::google::protobuf::Message const * const file_default_instances[] = { reinterpret_cast(&::flyteidl::admin::_Annotations_default_instance_), reinterpret_cast(&::flyteidl::admin::_AuthRole_default_instance_), reinterpret_cast(&::flyteidl::admin::_RawOutputDataConfig_default_instance_), + reinterpret_cast(&::flyteidl::admin::_FlyteURLs_default_instance_), }; ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_flyteidl_2fadmin_2fcommon_2eproto = { {}, AddDescriptors_flyteidl_2fadmin_2fcommon_2eproto, "flyteidl/admin/common.proto", schemas, file_default_instances, TableStruct_flyteidl_2fadmin_2fcommon_2eproto::offsets, - file_level_metadata_flyteidl_2fadmin_2fcommon_2eproto, 24, file_level_enum_descriptors_flyteidl_2fadmin_2fcommon_2eproto, file_level_service_descriptors_flyteidl_2fadmin_2fcommon_2eproto, + file_level_metadata_flyteidl_2fadmin_2fcommon_2eproto, 25, file_level_enum_descriptors_flyteidl_2fadmin_2fcommon_2eproto, file_level_service_descriptors_flyteidl_2fadmin_2fcommon_2eproto, }; const char descriptor_table_protodef_flyteidl_2fadmin_2fcommon_2eproto[] = @@ -817,16 +846,17 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2fcommon_2eproto[] = "\n\010AuthRole\022\032\n\022assumable_iam_role\030\001 \001(\t\022\"" "\n\032kubernetes_service_account\030\002 \001(\t:\002\030\001\"5" "\n\023RawOutputDataConfig\022\036\n\026output_location" - "_prefix\030\001 \001(\t*\\\n\020NamedEntityState\022\027\n\023NAM" - "ED_ENTITY_ACTIVE\020\000\022\031\n\025NAMED_ENTITY_ARCHI" - "VED\020\001\022\024\n\020SYSTEM_GENERATED\020\002B7Z5github.co" - "m/flyteorg/flyteidl/gen/pb-go/flyteidl/a" - "dminb\006proto3" + "_prefix\030\001 \001(\t\":\n\tFlyteURLs\022\016\n\006inputs\030\001 \001" + "(\t\022\017\n\007outputs\030\002 \001(\t\022\014\n\004deck\030\003 \001(\t*\\\n\020Nam" + "edEntityState\022\027\n\023NAMED_ENTITY_ACTIVE\020\000\022\031" + "\n\025NAMED_ENTITY_ARCHIVED\020\001\022\024\n\020SYSTEM_GENE" + "RATED\020\002B7Z5github.com/flyteorg/flyteidl/" + "gen/pb-go/flyteidl/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2fcommon_2eproto = { false, InitDefaults_flyteidl_2fadmin_2fcommon_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2fcommon_2eproto, - "flyteidl/admin/common.proto", &assign_descriptors_table_flyteidl_2fadmin_2fcommon_2eproto, 2652, + "flyteidl/admin/common.proto", &assign_descriptors_table_flyteidl_2fadmin_2fcommon_2eproto, 2712, }; void AddDescriptors_flyteidl_2fadmin_2fcommon_2eproto() { @@ -9540,6 +9570,449 @@ ::google::protobuf::Metadata RawOutputDataConfig::GetMetadata() const { } +// =================================================================== + +void FlyteURLs::InitAsDefaultInstance() { +} +class FlyteURLs::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int FlyteURLs::kInputsFieldNumber; +const int FlyteURLs::kOutputsFieldNumber; +const int FlyteURLs::kDeckFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +FlyteURLs::FlyteURLs() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.FlyteURLs) +} +FlyteURLs::FlyteURLs(const FlyteURLs& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + inputs_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.inputs().size() > 0) { + inputs_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.inputs_); + } + outputs_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.outputs().size() > 0) { + outputs_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.outputs_); + } + deck_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.deck().size() > 0) { + deck_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.deck_); + } + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.FlyteURLs) +} + +void FlyteURLs::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_FlyteURLs_flyteidl_2fadmin_2fcommon_2eproto.base); + inputs_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + outputs_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + deck_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +FlyteURLs::~FlyteURLs() { + // @@protoc_insertion_point(destructor:flyteidl.admin.FlyteURLs) + SharedDtor(); +} + +void FlyteURLs::SharedDtor() { + inputs_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + outputs_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + deck_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +void FlyteURLs::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const FlyteURLs& FlyteURLs::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_FlyteURLs_flyteidl_2fadmin_2fcommon_2eproto.base); + return *internal_default_instance(); +} + + +void FlyteURLs::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.FlyteURLs) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + inputs_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + outputs_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + deck_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* FlyteURLs::_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) { + // string inputs = 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); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.FlyteURLs.inputs"); + object = msg->mutable_inputs(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // string outputs = 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.FlyteURLs.outputs"); + object = msg->mutable_outputs(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // string deck = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.FlyteURLs.deck"); + object = msg->mutable_deck(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool FlyteURLs::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.FlyteURLs) + 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)) { + // string inputs = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_inputs())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->inputs().data(), static_cast(this->inputs().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.FlyteURLs.inputs")); + } else { + goto handle_unusual; + } + break; + } + + // string outputs = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_outputs())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->outputs().data(), static_cast(this->outputs().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.FlyteURLs.outputs")); + } else { + goto handle_unusual; + } + break; + } + + // string deck = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_deck())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->deck().data(), static_cast(this->deck().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.FlyteURLs.deck")); + } 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.FlyteURLs) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.FlyteURLs) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void FlyteURLs::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.FlyteURLs) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string inputs = 1; + if (this->inputs().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->inputs().data(), static_cast(this->inputs().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.FlyteURLs.inputs"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 1, this->inputs(), output); + } + + // string outputs = 2; + if (this->outputs().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->outputs().data(), static_cast(this->outputs().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.FlyteURLs.outputs"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 2, this->outputs(), output); + } + + // string deck = 3; + if (this->deck().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->deck().data(), static_cast(this->deck().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.FlyteURLs.deck"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 3, this->deck(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.admin.FlyteURLs) +} + +::google::protobuf::uint8* FlyteURLs::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.FlyteURLs) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string inputs = 1; + if (this->inputs().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->inputs().data(), static_cast(this->inputs().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.FlyteURLs.inputs"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 1, this->inputs(), target); + } + + // string outputs = 2; + if (this->outputs().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->outputs().data(), static_cast(this->outputs().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.FlyteURLs.outputs"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 2, this->outputs(), target); + } + + // string deck = 3; + if (this->deck().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->deck().data(), static_cast(this->deck().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.FlyteURLs.deck"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 3, this->deck(), 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.FlyteURLs) + return target; +} + +size_t FlyteURLs::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.FlyteURLs) + 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 inputs = 1; + if (this->inputs().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->inputs()); + } + + // string outputs = 2; + if (this->outputs().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->outputs()); + } + + // string deck = 3; + if (this->deck().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->deck()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void FlyteURLs::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.FlyteURLs) + GOOGLE_DCHECK_NE(&from, this); + const FlyteURLs* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.FlyteURLs) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.FlyteURLs) + MergeFrom(*source); + } +} + +void FlyteURLs::MergeFrom(const FlyteURLs& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.FlyteURLs) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.inputs().size() > 0) { + + inputs_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.inputs_); + } + if (from.outputs().size() > 0) { + + outputs_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.outputs_); + } + if (from.deck().size() > 0) { + + deck_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.deck_); + } +} + +void FlyteURLs::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.FlyteURLs) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void FlyteURLs::CopyFrom(const FlyteURLs& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.FlyteURLs) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool FlyteURLs::IsInitialized() const { + return true; +} + +void FlyteURLs::Swap(FlyteURLs* other) { + if (other == this) return; + InternalSwap(other); +} +void FlyteURLs::InternalSwap(FlyteURLs* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + inputs_.Swap(&other->inputs_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + outputs_.Swap(&other->outputs_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + deck_.Swap(&other->deck_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); +} + +::google::protobuf::Metadata FlyteURLs::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fcommon_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fcommon_2eproto[kIndexInFileMessages]; +} + + // @@protoc_insertion_point(namespace_scope) } // namespace admin } // namespace flyteidl @@ -9617,6 +10090,9 @@ template<> PROTOBUF_NOINLINE ::flyteidl::admin::AuthRole* Arena::CreateMaybeMess template<> PROTOBUF_NOINLINE ::flyteidl::admin::RawOutputDataConfig* Arena::CreateMaybeMessage< ::flyteidl::admin::RawOutputDataConfig >(Arena* arena) { return Arena::CreateInternal< ::flyteidl::admin::RawOutputDataConfig >(arena); } +template<> PROTOBUF_NOINLINE ::flyteidl::admin::FlyteURLs* Arena::CreateMaybeMessage< ::flyteidl::admin::FlyteURLs >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::FlyteURLs >(arena); +} } // namespace protobuf } // namespace google diff --git a/gen/pb-cpp/flyteidl/admin/common.pb.h b/gen/pb-cpp/flyteidl/admin/common.pb.h index 22e490356..c452563bf 100644 --- a/gen/pb-cpp/flyteidl/admin/common.pb.h +++ b/gen/pb-cpp/flyteidl/admin/common.pb.h @@ -48,7 +48,7 @@ struct TableStruct_flyteidl_2fadmin_2fcommon_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[24] + static const ::google::protobuf::internal::ParseTable schema[25] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::google::protobuf::internal::FieldMetadata field_metadata[]; static const ::google::protobuf::internal::SerializationTable serialization_table[]; @@ -69,6 +69,9 @@ extern AuthRoleDefaultTypeInternal _AuthRole_default_instance_; class EmailNotification; class EmailNotificationDefaultTypeInternal; extern EmailNotificationDefaultTypeInternal _EmailNotification_default_instance_; +class FlyteURLs; +class FlyteURLsDefaultTypeInternal; +extern FlyteURLsDefaultTypeInternal _FlyteURLs_default_instance_; class Labels; class LabelsDefaultTypeInternal; extern LabelsDefaultTypeInternal _Labels_default_instance_; @@ -137,6 +140,7 @@ template<> ::flyteidl::admin::Annotations* Arena::CreateMaybeMessage<::flyteidl: template<> ::flyteidl::admin::Annotations_ValuesEntry_DoNotUse* Arena::CreateMaybeMessage<::flyteidl::admin::Annotations_ValuesEntry_DoNotUse>(Arena*); template<> ::flyteidl::admin::AuthRole* Arena::CreateMaybeMessage<::flyteidl::admin::AuthRole>(Arena*); template<> ::flyteidl::admin::EmailNotification* Arena::CreateMaybeMessage<::flyteidl::admin::EmailNotification>(Arena*); +template<> ::flyteidl::admin::FlyteURLs* Arena::CreateMaybeMessage<::flyteidl::admin::FlyteURLs>(Arena*); template<> ::flyteidl::admin::Labels* Arena::CreateMaybeMessage<::flyteidl::admin::Labels>(Arena*); template<> ::flyteidl::admin::Labels_ValuesEntry_DoNotUse* Arena::CreateMaybeMessage<::flyteidl::admin::Labels_ValuesEntry_DoNotUse>(Arena*); template<> ::flyteidl::admin::NamedEntity* Arena::CreateMaybeMessage<::flyteidl::admin::NamedEntity>(Arena*); @@ -3263,6 +3267,156 @@ class RawOutputDataConfig final : mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2fcommon_2eproto; }; +// ------------------------------------------------------------------- + +class FlyteURLs final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.FlyteURLs) */ { + public: + FlyteURLs(); + virtual ~FlyteURLs(); + + FlyteURLs(const FlyteURLs& from); + + inline FlyteURLs& operator=(const FlyteURLs& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + FlyteURLs(FlyteURLs&& from) noexcept + : FlyteURLs() { + *this = ::std::move(from); + } + + inline FlyteURLs& operator=(FlyteURLs&& 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 FlyteURLs& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const FlyteURLs* internal_default_instance() { + return reinterpret_cast( + &_FlyteURLs_default_instance_); + } + static constexpr int kIndexInFileMessages = + 24; + + void Swap(FlyteURLs* other); + friend void swap(FlyteURLs& a, FlyteURLs& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline FlyteURLs* New() const final { + return CreateMaybeMessage(nullptr); + } + + FlyteURLs* 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 FlyteURLs& from); + void MergeFrom(const FlyteURLs& 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(FlyteURLs* 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 inputs = 1; + void clear_inputs(); + static const int kInputsFieldNumber = 1; + const ::std::string& inputs() const; + void set_inputs(const ::std::string& value); + #if LANG_CXX11 + void set_inputs(::std::string&& value); + #endif + void set_inputs(const char* value); + void set_inputs(const char* value, size_t size); + ::std::string* mutable_inputs(); + ::std::string* release_inputs(); + void set_allocated_inputs(::std::string* inputs); + + // string outputs = 2; + void clear_outputs(); + static const int kOutputsFieldNumber = 2; + const ::std::string& outputs() const; + void set_outputs(const ::std::string& value); + #if LANG_CXX11 + void set_outputs(::std::string&& value); + #endif + void set_outputs(const char* value); + void set_outputs(const char* value, size_t size); + ::std::string* mutable_outputs(); + ::std::string* release_outputs(); + void set_allocated_outputs(::std::string* outputs); + + // string deck = 3; + void clear_deck(); + static const int kDeckFieldNumber = 3; + const ::std::string& deck() const; + void set_deck(const ::std::string& value); + #if LANG_CXX11 + void set_deck(::std::string&& value); + #endif + void set_deck(const char* value); + void set_deck(const char* value, size_t size); + ::std::string* mutable_deck(); + ::std::string* release_deck(); + void set_allocated_deck(::std::string* deck); + + // @@protoc_insertion_point(class_scope:flyteidl.admin.FlyteURLs) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr inputs_; + ::google::protobuf::internal::ArenaStringPtr outputs_; + ::google::protobuf::internal::ArenaStringPtr deck_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fadmin_2fcommon_2eproto; +}; // =================================================================== @@ -5584,6 +5738,169 @@ inline void RawOutputDataConfig::set_allocated_output_location_prefix(::std::str // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.RawOutputDataConfig.output_location_prefix) } +// ------------------------------------------------------------------- + +// FlyteURLs + +// string inputs = 1; +inline void FlyteURLs::clear_inputs() { + inputs_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& FlyteURLs::inputs() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.FlyteURLs.inputs) + return inputs_.GetNoArena(); +} +inline void FlyteURLs::set_inputs(const ::std::string& value) { + + inputs_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.FlyteURLs.inputs) +} +#if LANG_CXX11 +inline void FlyteURLs::set_inputs(::std::string&& value) { + + inputs_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.FlyteURLs.inputs) +} +#endif +inline void FlyteURLs::set_inputs(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + inputs_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.FlyteURLs.inputs) +} +inline void FlyteURLs::set_inputs(const char* value, size_t size) { + + inputs_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.FlyteURLs.inputs) +} +inline ::std::string* FlyteURLs::mutable_inputs() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.FlyteURLs.inputs) + return inputs_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* FlyteURLs::release_inputs() { + // @@protoc_insertion_point(field_release:flyteidl.admin.FlyteURLs.inputs) + + return inputs_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void FlyteURLs::set_allocated_inputs(::std::string* inputs) { + if (inputs != nullptr) { + + } else { + + } + inputs_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), inputs); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.FlyteURLs.inputs) +} + +// string outputs = 2; +inline void FlyteURLs::clear_outputs() { + outputs_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& FlyteURLs::outputs() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.FlyteURLs.outputs) + return outputs_.GetNoArena(); +} +inline void FlyteURLs::set_outputs(const ::std::string& value) { + + outputs_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.FlyteURLs.outputs) +} +#if LANG_CXX11 +inline void FlyteURLs::set_outputs(::std::string&& value) { + + outputs_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.FlyteURLs.outputs) +} +#endif +inline void FlyteURLs::set_outputs(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + outputs_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.FlyteURLs.outputs) +} +inline void FlyteURLs::set_outputs(const char* value, size_t size) { + + outputs_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.FlyteURLs.outputs) +} +inline ::std::string* FlyteURLs::mutable_outputs() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.FlyteURLs.outputs) + return outputs_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* FlyteURLs::release_outputs() { + // @@protoc_insertion_point(field_release:flyteidl.admin.FlyteURLs.outputs) + + return outputs_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void FlyteURLs::set_allocated_outputs(::std::string* outputs) { + if (outputs != nullptr) { + + } else { + + } + outputs_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), outputs); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.FlyteURLs.outputs) +} + +// string deck = 3; +inline void FlyteURLs::clear_deck() { + deck_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& FlyteURLs::deck() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.FlyteURLs.deck) + return deck_.GetNoArena(); +} +inline void FlyteURLs::set_deck(const ::std::string& value) { + + deck_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.FlyteURLs.deck) +} +#if LANG_CXX11 +inline void FlyteURLs::set_deck(::std::string&& value) { + + deck_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.FlyteURLs.deck) +} +#endif +inline void FlyteURLs::set_deck(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + deck_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.FlyteURLs.deck) +} +inline void FlyteURLs::set_deck(const char* value, size_t size) { + + deck_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.FlyteURLs.deck) +} +inline ::std::string* FlyteURLs::mutable_deck() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.FlyteURLs.deck) + return deck_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* FlyteURLs::release_deck() { + // @@protoc_insertion_point(field_release:flyteidl.admin.FlyteURLs.deck) + + return deck_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void FlyteURLs::set_allocated_deck(::std::string* deck) { + if (deck != nullptr) { + + } else { + + } + deck_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), deck); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.FlyteURLs.deck) +} + #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ @@ -5633,6 +5950,8 @@ inline void RawOutputDataConfig::set_allocated_output_location_prefix(::std::str // ------------------------------------------------------------------- +// ------------------------------------------------------------------- + // @@protoc_insertion_point(namespace_scope) diff --git a/gen/pb-cpp/flyteidl/admin/node_execution.pb.cc b/gen/pb-cpp/flyteidl/admin/node_execution.pb.cc index e2dd230ba..1a175add0 100644 --- a/gen/pb-cpp/flyteidl/admin/node_execution.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/node_execution.pb.cc @@ -16,6 +16,7 @@ // @@protoc_insertion_point(includes) #include +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_FlyteURLs_flyteidl_2fadmin_2fcommon_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Sort_flyteidl_2fadmin_2fcommon_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_UrlBlob_flyteidl_2fadmin_2fcommon_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fnode_5fexecution_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_NodeExecutionMetaData_flyteidl_2fadmin_2fnode_5fexecution_2eproto; @@ -276,11 +277,12 @@ static void InitDefaultsNodeExecutionGetDataResponse_flyteidl_2fadmin_2fnode_5fe ::flyteidl::admin::NodeExecutionGetDataResponse::InitAsDefaultInstance(); } -::google::protobuf::internal::SCCInfo<3> scc_info_NodeExecutionGetDataResponse_flyteidl_2fadmin_2fnode_5fexecution_2eproto = - {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsNodeExecutionGetDataResponse_flyteidl_2fadmin_2fnode_5fexecution_2eproto}, { +::google::protobuf::internal::SCCInfo<4> scc_info_NodeExecutionGetDataResponse_flyteidl_2fadmin_2fnode_5fexecution_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsNodeExecutionGetDataResponse_flyteidl_2fadmin_2fnode_5fexecution_2eproto}, { &scc_info_UrlBlob_flyteidl_2fadmin_2fcommon_2eproto.base, &scc_info_Literal_flyteidl_2fcore_2fliterals_2eproto.base, - &scc_info_DynamicWorkflowNodeMetadata_flyteidl_2fadmin_2fnode_5fexecution_2eproto.base,}}; + &scc_info_DynamicWorkflowNodeMetadata_flyteidl_2fadmin_2fnode_5fexecution_2eproto.base, + &scc_info_FlyteURLs_flyteidl_2fadmin_2fcommon_2eproto.base,}}; void InitDefaults_flyteidl_2fadmin_2fnode_5fexecution_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_NodeExecutionGetRequest_flyteidl_2fadmin_2fnode_5fexecution_2eproto.base); @@ -411,6 +413,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fnode_5fexecution PROTOBUF_FIELD_OFFSET(::flyteidl::admin::NodeExecutionGetDataResponse, full_inputs_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::NodeExecutionGetDataResponse, full_outputs_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::NodeExecutionGetDataResponse, dynamic_workflow_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::NodeExecutionGetDataResponse, flyte_urls_), }; static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, sizeof(::flyteidl::admin::NodeExecutionGetRequest)}, @@ -506,21 +509,22 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2fnode_5fexecution_2eproto "CompiledWorkflowClosure\022\034\n\024dynamic_job_s" "pec_uri\030\003 \001(\t\"Q\n\033NodeExecutionGetDataReq" "uest\0222\n\002id\030\001 \001(\0132&.flyteidl.core.NodeExe" - "cutionIdentifier\"\241\002\n\034NodeExecutionGetDat" + "cutionIdentifier\"\320\002\n\034NodeExecutionGetDat" "aResponse\022+\n\006inputs\030\001 \001(\0132\027.flyteidl.adm" "in.UrlBlobB\002\030\001\022,\n\007outputs\030\002 \001(\0132\027.flytei" "dl.admin.UrlBlobB\002\030\001\022.\n\013full_inputs\030\003 \001(" "\0132\031.flyteidl.core.LiteralMap\022/\n\014full_out" "puts\030\004 \001(\0132\031.flyteidl.core.LiteralMap\022E\n" "\020dynamic_workflow\030\020 \001(\0132+.flyteidl.admin" - ".DynamicWorkflowNodeMetadataB7Z5github.c" - "om/flyteorg/flyteidl/gen/pb-go/flyteidl/" - "adminb\006proto3" + ".DynamicWorkflowNodeMetadata\022-\n\nflyte_ur" + "ls\030\021 \001(\0132\031.flyteidl.admin.FlyteURLsB7Z5g" + "ithub.com/flyteorg/flyteidl/gen/pb-go/fl" + "yteidl/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2fnode_5fexecution_2eproto = { false, InitDefaults_flyteidl_2fadmin_2fnode_5fexecution_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2fnode_5fexecution_2eproto, - "flyteidl/admin/node_execution.proto", &assign_descriptors_table_flyteidl_2fadmin_2fnode_5fexecution_2eproto, 2653, + "flyteidl/admin/node_execution.proto", &assign_descriptors_table_flyteidl_2fadmin_2fnode_5fexecution_2eproto, 2700, }; void AddDescriptors_flyteidl_2fadmin_2fnode_5fexecution_2eproto() { @@ -5986,6 +5990,8 @@ void NodeExecutionGetDataResponse::InitAsDefaultInstance() { ::flyteidl::core::LiteralMap::internal_default_instance()); ::flyteidl::admin::_NodeExecutionGetDataResponse_default_instance_._instance.get_mutable()->dynamic_workflow_ = const_cast< ::flyteidl::admin::DynamicWorkflowNodeMetadata*>( ::flyteidl::admin::DynamicWorkflowNodeMetadata::internal_default_instance()); + ::flyteidl::admin::_NodeExecutionGetDataResponse_default_instance_._instance.get_mutable()->flyte_urls_ = const_cast< ::flyteidl::admin::FlyteURLs*>( + ::flyteidl::admin::FlyteURLs::internal_default_instance()); } class NodeExecutionGetDataResponse::HasBitSetters { public: @@ -5994,6 +6000,7 @@ class NodeExecutionGetDataResponse::HasBitSetters { static const ::flyteidl::core::LiteralMap& full_inputs(const NodeExecutionGetDataResponse* msg); static const ::flyteidl::core::LiteralMap& full_outputs(const NodeExecutionGetDataResponse* msg); static const ::flyteidl::admin::DynamicWorkflowNodeMetadata& dynamic_workflow(const NodeExecutionGetDataResponse* msg); + static const ::flyteidl::admin::FlyteURLs& flyte_urls(const NodeExecutionGetDataResponse* msg); }; const ::flyteidl::admin::UrlBlob& @@ -6016,6 +6023,10 @@ const ::flyteidl::admin::DynamicWorkflowNodeMetadata& NodeExecutionGetDataResponse::HasBitSetters::dynamic_workflow(const NodeExecutionGetDataResponse* msg) { return *msg->dynamic_workflow_; } +const ::flyteidl::admin::FlyteURLs& +NodeExecutionGetDataResponse::HasBitSetters::flyte_urls(const NodeExecutionGetDataResponse* msg) { + return *msg->flyte_urls_; +} void NodeExecutionGetDataResponse::clear_inputs() { if (GetArenaNoVirtual() == nullptr && inputs_ != nullptr) { delete inputs_; @@ -6040,12 +6051,19 @@ void NodeExecutionGetDataResponse::clear_full_outputs() { } full_outputs_ = nullptr; } +void NodeExecutionGetDataResponse::clear_flyte_urls() { + if (GetArenaNoVirtual() == nullptr && flyte_urls_ != nullptr) { + delete flyte_urls_; + } + flyte_urls_ = nullptr; +} #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int NodeExecutionGetDataResponse::kInputsFieldNumber; const int NodeExecutionGetDataResponse::kOutputsFieldNumber; const int NodeExecutionGetDataResponse::kFullInputsFieldNumber; const int NodeExecutionGetDataResponse::kFullOutputsFieldNumber; const int NodeExecutionGetDataResponse::kDynamicWorkflowFieldNumber; +const int NodeExecutionGetDataResponse::kFlyteUrlsFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 NodeExecutionGetDataResponse::NodeExecutionGetDataResponse() @@ -6082,6 +6100,11 @@ NodeExecutionGetDataResponse::NodeExecutionGetDataResponse(const NodeExecutionGe } else { dynamic_workflow_ = nullptr; } + if (from.has_flyte_urls()) { + flyte_urls_ = new ::flyteidl::admin::FlyteURLs(*from.flyte_urls_); + } else { + flyte_urls_ = nullptr; + } // @@protoc_insertion_point(copy_constructor:flyteidl.admin.NodeExecutionGetDataResponse) } @@ -6089,8 +6112,8 @@ void NodeExecutionGetDataResponse::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_NodeExecutionGetDataResponse_flyteidl_2fadmin_2fnode_5fexecution_2eproto.base); ::memset(&inputs_, 0, static_cast( - reinterpret_cast(&dynamic_workflow_) - - reinterpret_cast(&inputs_)) + sizeof(dynamic_workflow_)); + reinterpret_cast(&flyte_urls_) - + reinterpret_cast(&inputs_)) + sizeof(flyte_urls_)); } NodeExecutionGetDataResponse::~NodeExecutionGetDataResponse() { @@ -6104,6 +6127,7 @@ void NodeExecutionGetDataResponse::SharedDtor() { if (this != internal_default_instance()) delete full_inputs_; if (this != internal_default_instance()) delete full_outputs_; if (this != internal_default_instance()) delete dynamic_workflow_; + if (this != internal_default_instance()) delete flyte_urls_; } void NodeExecutionGetDataResponse::SetCachedSize(int size) const { @@ -6141,6 +6165,10 @@ void NodeExecutionGetDataResponse::Clear() { delete dynamic_workflow_; } dynamic_workflow_ = nullptr; + if (GetArenaNoVirtual() == nullptr && flyte_urls_ != nullptr) { + delete flyte_urls_; + } + flyte_urls_ = nullptr; _internal_metadata_.Clear(); } @@ -6222,6 +6250,19 @@ const char* NodeExecutionGetDataResponse::_InternalParse(const char* begin, cons {parser_till_end, object}, ptr - size, ptr)); break; } + // .flyteidl.admin.FlyteURLs flyte_urls = 17; + case 17: { + if (static_cast<::google::protobuf::uint8>(tag) != 138) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::FlyteURLs::_InternalParse; + object = msg->mutable_flyte_urls(); + 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) { @@ -6307,6 +6348,17 @@ bool NodeExecutionGetDataResponse::MergePartialFromCodedStream( break; } + // .flyteidl.admin.FlyteURLs flyte_urls = 17; + case 17: { + if (static_cast< ::google::protobuf::uint8>(tag) == (138 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_flyte_urls())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -6364,6 +6416,12 @@ void NodeExecutionGetDataResponse::SerializeWithCachedSizes( 16, HasBitSetters::dynamic_workflow(this), output); } + // .flyteidl.admin.FlyteURLs flyte_urls = 17; + if (this->has_flyte_urls()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 17, HasBitSetters::flyte_urls(this), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -6412,6 +6470,13 @@ ::google::protobuf::uint8* NodeExecutionGetDataResponse::InternalSerializeWithCa 16, HasBitSetters::dynamic_workflow(this), target); } + // .flyteidl.admin.FlyteURLs flyte_urls = 17; + if (this->has_flyte_urls()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 17, HasBitSetters::flyte_urls(this), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -6468,6 +6533,13 @@ size_t NodeExecutionGetDataResponse::ByteSizeLong() const { *dynamic_workflow_); } + // .flyteidl.admin.FlyteURLs flyte_urls = 17; + if (this->has_flyte_urls()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *flyte_urls_); + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -6510,6 +6582,9 @@ void NodeExecutionGetDataResponse::MergeFrom(const NodeExecutionGetDataResponse& if (from.has_dynamic_workflow()) { mutable_dynamic_workflow()->::flyteidl::admin::DynamicWorkflowNodeMetadata::MergeFrom(from.dynamic_workflow()); } + if (from.has_flyte_urls()) { + mutable_flyte_urls()->::flyteidl::admin::FlyteURLs::MergeFrom(from.flyte_urls()); + } } void NodeExecutionGetDataResponse::CopyFrom(const ::google::protobuf::Message& from) { @@ -6542,6 +6617,7 @@ void NodeExecutionGetDataResponse::InternalSwap(NodeExecutionGetDataResponse* ot swap(full_inputs_, other->full_inputs_); swap(full_outputs_, other->full_outputs_); swap(dynamic_workflow_, other->dynamic_workflow_); + swap(flyte_urls_, other->flyte_urls_); } ::google::protobuf::Metadata NodeExecutionGetDataResponse::GetMetadata() const { diff --git a/gen/pb-cpp/flyteidl/admin/node_execution.pb.h b/gen/pb-cpp/flyteidl/admin/node_execution.pb.h index ee1b3e7f3..f3646427e 100644 --- a/gen/pb-cpp/flyteidl/admin/node_execution.pb.h +++ b/gen/pb-cpp/flyteidl/admin/node_execution.pb.h @@ -1926,6 +1926,15 @@ class NodeExecutionGetDataResponse final : ::flyteidl::admin::DynamicWorkflowNodeMetadata* mutable_dynamic_workflow(); void set_allocated_dynamic_workflow(::flyteidl::admin::DynamicWorkflowNodeMetadata* dynamic_workflow); + // .flyteidl.admin.FlyteURLs flyte_urls = 17; + bool has_flyte_urls() const; + void clear_flyte_urls(); + static const int kFlyteUrlsFieldNumber = 17; + const ::flyteidl::admin::FlyteURLs& flyte_urls() const; + ::flyteidl::admin::FlyteURLs* release_flyte_urls(); + ::flyteidl::admin::FlyteURLs* mutable_flyte_urls(); + void set_allocated_flyte_urls(::flyteidl::admin::FlyteURLs* flyte_urls); + // @@protoc_insertion_point(class_scope:flyteidl.admin.NodeExecutionGetDataResponse) private: class HasBitSetters; @@ -1936,6 +1945,7 @@ class NodeExecutionGetDataResponse final : ::flyteidl::core::LiteralMap* full_inputs_; ::flyteidl::core::LiteralMap* full_outputs_; ::flyteidl::admin::DynamicWorkflowNodeMetadata* dynamic_workflow_; + ::flyteidl::admin::FlyteURLs* flyte_urls_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2fnode_5fexecution_2eproto; }; @@ -4071,6 +4081,51 @@ inline void NodeExecutionGetDataResponse::set_allocated_dynamic_workflow(::flyte // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.NodeExecutionGetDataResponse.dynamic_workflow) } +// .flyteidl.admin.FlyteURLs flyte_urls = 17; +inline bool NodeExecutionGetDataResponse::has_flyte_urls() const { + return this != internal_default_instance() && flyte_urls_ != nullptr; +} +inline const ::flyteidl::admin::FlyteURLs& NodeExecutionGetDataResponse::flyte_urls() const { + const ::flyteidl::admin::FlyteURLs* p = flyte_urls_; + // @@protoc_insertion_point(field_get:flyteidl.admin.NodeExecutionGetDataResponse.flyte_urls) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_FlyteURLs_default_instance_); +} +inline ::flyteidl::admin::FlyteURLs* NodeExecutionGetDataResponse::release_flyte_urls() { + // @@protoc_insertion_point(field_release:flyteidl.admin.NodeExecutionGetDataResponse.flyte_urls) + + ::flyteidl::admin::FlyteURLs* temp = flyte_urls_; + flyte_urls_ = nullptr; + return temp; +} +inline ::flyteidl::admin::FlyteURLs* NodeExecutionGetDataResponse::mutable_flyte_urls() { + + if (flyte_urls_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::FlyteURLs>(GetArenaNoVirtual()); + flyte_urls_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.NodeExecutionGetDataResponse.flyte_urls) + return flyte_urls_; +} +inline void NodeExecutionGetDataResponse::set_allocated_flyte_urls(::flyteidl::admin::FlyteURLs* flyte_urls) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(flyte_urls_); + } + if (flyte_urls) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + flyte_urls = ::google::protobuf::internal::GetOwnedMessage( + message_arena, flyte_urls, submessage_arena); + } + + } else { + + } + flyte_urls_ = flyte_urls; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.NodeExecutionGetDataResponse.flyte_urls) +} + #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ diff --git a/gen/pb-cpp/flyteidl/admin/task_execution.pb.cc b/gen/pb-cpp/flyteidl/admin/task_execution.pb.cc index 6b552399f..92e0ce3ae 100644 --- a/gen/pb-cpp/flyteidl/admin/task_execution.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/task_execution.pb.cc @@ -16,6 +16,7 @@ // @@protoc_insertion_point(includes) #include +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_FlyteURLs_flyteidl_2fadmin_2fcommon_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Sort_flyteidl_2fadmin_2fcommon_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_UrlBlob_flyteidl_2fadmin_2fcommon_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2ftask_5fexecution_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_Reason_flyteidl_2fadmin_2ftask_5fexecution_2eproto; @@ -194,10 +195,11 @@ static void InitDefaultsTaskExecutionGetDataResponse_flyteidl_2fadmin_2ftask_5fe ::flyteidl::admin::TaskExecutionGetDataResponse::InitAsDefaultInstance(); } -::google::protobuf::internal::SCCInfo<2> scc_info_TaskExecutionGetDataResponse_flyteidl_2fadmin_2ftask_5fexecution_2eproto = - {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTaskExecutionGetDataResponse_flyteidl_2fadmin_2ftask_5fexecution_2eproto}, { +::google::protobuf::internal::SCCInfo<3> scc_info_TaskExecutionGetDataResponse_flyteidl_2fadmin_2ftask_5fexecution_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsTaskExecutionGetDataResponse_flyteidl_2fadmin_2ftask_5fexecution_2eproto}, { &scc_info_UrlBlob_flyteidl_2fadmin_2fcommon_2eproto.base, - &scc_info_Literal_flyteidl_2fcore_2fliterals_2eproto.base,}}; + &scc_info_Literal_flyteidl_2fcore_2fliterals_2eproto.base, + &scc_info_FlyteURLs_flyteidl_2fadmin_2fcommon_2eproto.base,}}; void InitDefaults_flyteidl_2fadmin_2ftask_5fexecution_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_TaskExecutionGetRequest_flyteidl_2fadmin_2ftask_5fexecution_2eproto.base); @@ -290,6 +292,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2ftask_5fexecution PROTOBUF_FIELD_OFFSET(::flyteidl::admin::TaskExecutionGetDataResponse, outputs_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::TaskExecutionGetDataResponse, full_inputs_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::TaskExecutionGetDataResponse, full_outputs_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::TaskExecutionGetDataResponse, flyte_urls_), }; static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, sizeof(::flyteidl::admin::TaskExecutionGetRequest)}, @@ -360,19 +363,20 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2ftask_5fexecution_2eproto "curred_at\030\001 \001(\0132\032.google.protobuf.Timest" "amp\022\017\n\007message\030\002 \001(\t\"Q\n\033TaskExecutionGet" "DataRequest\0222\n\002id\030\001 \001(\0132&.flyteidl.core." - "TaskExecutionIdentifier\"\332\001\n\034TaskExecutio" + "TaskExecutionIdentifier\"\211\002\n\034TaskExecutio" "nGetDataResponse\022+\n\006inputs\030\001 \001(\0132\027.flyte" "idl.admin.UrlBlobB\002\030\001\022,\n\007outputs\030\002 \001(\0132\027" ".flyteidl.admin.UrlBlobB\002\030\001\022.\n\013full_inpu" "ts\030\003 \001(\0132\031.flyteidl.core.LiteralMap\022/\n\014f" "ull_outputs\030\004 \001(\0132\031.flyteidl.core.Litera" - "lMapB7Z5github.com/flyteorg/flyteidl/gen" - "/pb-go/flyteidl/adminb\006proto3" + "lMap\022-\n\nflyte_urls\030\005 \001(\0132\031.flyteidl.admi" + "n.FlyteURLsB7Z5github.com/flyteorg/flyte" + "idl/gen/pb-go/flyteidl/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2ftask_5fexecution_2eproto = { false, InitDefaults_flyteidl_2fadmin_2ftask_5fexecution_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2ftask_5fexecution_2eproto, - "flyteidl/admin/task_execution.proto", &assign_descriptors_table_flyteidl_2fadmin_2ftask_5fexecution_2eproto, 1909, + "flyteidl/admin/task_execution.proto", &assign_descriptors_table_flyteidl_2fadmin_2ftask_5fexecution_2eproto, 1956, }; void AddDescriptors_flyteidl_2fadmin_2ftask_5fexecution_2eproto() { @@ -4057,6 +4061,8 @@ void TaskExecutionGetDataResponse::InitAsDefaultInstance() { ::flyteidl::core::LiteralMap::internal_default_instance()); ::flyteidl::admin::_TaskExecutionGetDataResponse_default_instance_._instance.get_mutable()->full_outputs_ = const_cast< ::flyteidl::core::LiteralMap*>( ::flyteidl::core::LiteralMap::internal_default_instance()); + ::flyteidl::admin::_TaskExecutionGetDataResponse_default_instance_._instance.get_mutable()->flyte_urls_ = const_cast< ::flyteidl::admin::FlyteURLs*>( + ::flyteidl::admin::FlyteURLs::internal_default_instance()); } class TaskExecutionGetDataResponse::HasBitSetters { public: @@ -4064,6 +4070,7 @@ class TaskExecutionGetDataResponse::HasBitSetters { static const ::flyteidl::admin::UrlBlob& outputs(const TaskExecutionGetDataResponse* msg); static const ::flyteidl::core::LiteralMap& full_inputs(const TaskExecutionGetDataResponse* msg); static const ::flyteidl::core::LiteralMap& full_outputs(const TaskExecutionGetDataResponse* msg); + static const ::flyteidl::admin::FlyteURLs& flyte_urls(const TaskExecutionGetDataResponse* msg); }; const ::flyteidl::admin::UrlBlob& @@ -4082,6 +4089,10 @@ const ::flyteidl::core::LiteralMap& TaskExecutionGetDataResponse::HasBitSetters::full_outputs(const TaskExecutionGetDataResponse* msg) { return *msg->full_outputs_; } +const ::flyteidl::admin::FlyteURLs& +TaskExecutionGetDataResponse::HasBitSetters::flyte_urls(const TaskExecutionGetDataResponse* msg) { + return *msg->flyte_urls_; +} void TaskExecutionGetDataResponse::clear_inputs() { if (GetArenaNoVirtual() == nullptr && inputs_ != nullptr) { delete inputs_; @@ -4106,11 +4117,18 @@ void TaskExecutionGetDataResponse::clear_full_outputs() { } full_outputs_ = nullptr; } +void TaskExecutionGetDataResponse::clear_flyte_urls() { + if (GetArenaNoVirtual() == nullptr && flyte_urls_ != nullptr) { + delete flyte_urls_; + } + flyte_urls_ = nullptr; +} #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int TaskExecutionGetDataResponse::kInputsFieldNumber; const int TaskExecutionGetDataResponse::kOutputsFieldNumber; const int TaskExecutionGetDataResponse::kFullInputsFieldNumber; const int TaskExecutionGetDataResponse::kFullOutputsFieldNumber; +const int TaskExecutionGetDataResponse::kFlyteUrlsFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 TaskExecutionGetDataResponse::TaskExecutionGetDataResponse() @@ -4142,6 +4160,11 @@ TaskExecutionGetDataResponse::TaskExecutionGetDataResponse(const TaskExecutionGe } else { full_outputs_ = nullptr; } + if (from.has_flyte_urls()) { + flyte_urls_ = new ::flyteidl::admin::FlyteURLs(*from.flyte_urls_); + } else { + flyte_urls_ = nullptr; + } // @@protoc_insertion_point(copy_constructor:flyteidl.admin.TaskExecutionGetDataResponse) } @@ -4149,8 +4172,8 @@ void TaskExecutionGetDataResponse::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_TaskExecutionGetDataResponse_flyteidl_2fadmin_2ftask_5fexecution_2eproto.base); ::memset(&inputs_, 0, static_cast( - reinterpret_cast(&full_outputs_) - - reinterpret_cast(&inputs_)) + sizeof(full_outputs_)); + reinterpret_cast(&flyte_urls_) - + reinterpret_cast(&inputs_)) + sizeof(flyte_urls_)); } TaskExecutionGetDataResponse::~TaskExecutionGetDataResponse() { @@ -4163,6 +4186,7 @@ void TaskExecutionGetDataResponse::SharedDtor() { if (this != internal_default_instance()) delete outputs_; if (this != internal_default_instance()) delete full_inputs_; if (this != internal_default_instance()) delete full_outputs_; + if (this != internal_default_instance()) delete flyte_urls_; } void TaskExecutionGetDataResponse::SetCachedSize(int size) const { @@ -4196,6 +4220,10 @@ void TaskExecutionGetDataResponse::Clear() { delete full_outputs_; } full_outputs_ = nullptr; + if (GetArenaNoVirtual() == nullptr && flyte_urls_ != nullptr) { + delete flyte_urls_; + } + flyte_urls_ = nullptr; _internal_metadata_.Clear(); } @@ -4264,6 +4292,19 @@ const char* TaskExecutionGetDataResponse::_InternalParse(const char* begin, cons {parser_till_end, object}, ptr - size, ptr)); break; } + // .flyteidl.admin.FlyteURLs flyte_urls = 5; + case 5: { + if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::FlyteURLs::_InternalParse; + object = msg->mutable_flyte_urls(); + 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) { @@ -4338,6 +4379,17 @@ bool TaskExecutionGetDataResponse::MergePartialFromCodedStream( break; } + // .flyteidl.admin.FlyteURLs flyte_urls = 5; + case 5: { + if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_flyte_urls())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -4389,6 +4441,12 @@ void TaskExecutionGetDataResponse::SerializeWithCachedSizes( 4, HasBitSetters::full_outputs(this), output); } + // .flyteidl.admin.FlyteURLs flyte_urls = 5; + if (this->has_flyte_urls()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 5, HasBitSetters::flyte_urls(this), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -4430,6 +4488,13 @@ ::google::protobuf::uint8* TaskExecutionGetDataResponse::InternalSerializeWithCa 4, HasBitSetters::full_outputs(this), target); } + // .flyteidl.admin.FlyteURLs flyte_urls = 5; + if (this->has_flyte_urls()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 5, HasBitSetters::flyte_urls(this), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -4479,6 +4544,13 @@ size_t TaskExecutionGetDataResponse::ByteSizeLong() const { *full_outputs_); } + // .flyteidl.admin.FlyteURLs flyte_urls = 5; + if (this->has_flyte_urls()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *flyte_urls_); + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -4518,6 +4590,9 @@ void TaskExecutionGetDataResponse::MergeFrom(const TaskExecutionGetDataResponse& if (from.has_full_outputs()) { mutable_full_outputs()->::flyteidl::core::LiteralMap::MergeFrom(from.full_outputs()); } + if (from.has_flyte_urls()) { + mutable_flyte_urls()->::flyteidl::admin::FlyteURLs::MergeFrom(from.flyte_urls()); + } } void TaskExecutionGetDataResponse::CopyFrom(const ::google::protobuf::Message& from) { @@ -4549,6 +4624,7 @@ void TaskExecutionGetDataResponse::InternalSwap(TaskExecutionGetDataResponse* ot swap(outputs_, other->outputs_); swap(full_inputs_, other->full_inputs_); swap(full_outputs_, other->full_outputs_); + swap(flyte_urls_, other->flyte_urls_); } ::google::protobuf::Metadata TaskExecutionGetDataResponse::GetMetadata() const { diff --git a/gen/pb-cpp/flyteidl/admin/task_execution.pb.h b/gen/pb-cpp/flyteidl/admin/task_execution.pb.h index 6af0fd081..f792f0bb9 100644 --- a/gen/pb-cpp/flyteidl/admin/task_execution.pb.h +++ b/gen/pb-cpp/flyteidl/admin/task_execution.pb.h @@ -1327,6 +1327,15 @@ class TaskExecutionGetDataResponse final : ::flyteidl::core::LiteralMap* mutable_full_outputs(); void set_allocated_full_outputs(::flyteidl::core::LiteralMap* full_outputs); + // .flyteidl.admin.FlyteURLs flyte_urls = 5; + bool has_flyte_urls() const; + void clear_flyte_urls(); + static const int kFlyteUrlsFieldNumber = 5; + const ::flyteidl::admin::FlyteURLs& flyte_urls() const; + ::flyteidl::admin::FlyteURLs* release_flyte_urls(); + ::flyteidl::admin::FlyteURLs* mutable_flyte_urls(); + void set_allocated_flyte_urls(::flyteidl::admin::FlyteURLs* flyte_urls); + // @@protoc_insertion_point(class_scope:flyteidl.admin.TaskExecutionGetDataResponse) private: class HasBitSetters; @@ -1336,6 +1345,7 @@ class TaskExecutionGetDataResponse final : ::flyteidl::admin::UrlBlob* outputs_; ::flyteidl::core::LiteralMap* full_inputs_; ::flyteidl::core::LiteralMap* full_outputs_; + ::flyteidl::admin::FlyteURLs* flyte_urls_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2ftask_5fexecution_2eproto; }; @@ -2840,6 +2850,51 @@ inline void TaskExecutionGetDataResponse::set_allocated_full_outputs(::flyteidl: // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.TaskExecutionGetDataResponse.full_outputs) } +// .flyteidl.admin.FlyteURLs flyte_urls = 5; +inline bool TaskExecutionGetDataResponse::has_flyte_urls() const { + return this != internal_default_instance() && flyte_urls_ != nullptr; +} +inline const ::flyteidl::admin::FlyteURLs& TaskExecutionGetDataResponse::flyte_urls() const { + const ::flyteidl::admin::FlyteURLs* p = flyte_urls_; + // @@protoc_insertion_point(field_get:flyteidl.admin.TaskExecutionGetDataResponse.flyte_urls) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_FlyteURLs_default_instance_); +} +inline ::flyteidl::admin::FlyteURLs* TaskExecutionGetDataResponse::release_flyte_urls() { + // @@protoc_insertion_point(field_release:flyteidl.admin.TaskExecutionGetDataResponse.flyte_urls) + + ::flyteidl::admin::FlyteURLs* temp = flyte_urls_; + flyte_urls_ = nullptr; + return temp; +} +inline ::flyteidl::admin::FlyteURLs* TaskExecutionGetDataResponse::mutable_flyte_urls() { + + if (flyte_urls_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::FlyteURLs>(GetArenaNoVirtual()); + flyte_urls_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.TaskExecutionGetDataResponse.flyte_urls) + return flyte_urls_; +} +inline void TaskExecutionGetDataResponse::set_allocated_flyte_urls(::flyteidl::admin::FlyteURLs* flyte_urls) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(flyte_urls_); + } + if (flyte_urls) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + flyte_urls = ::google::protobuf::internal::GetOwnedMessage( + message_arena, flyte_urls, submessage_arena); + } + + } else { + + } + flyte_urls_ = flyte_urls; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.TaskExecutionGetDataResponse.flyte_urls) +} + #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ diff --git a/gen/pb-cpp/flyteidl/service/admin.pb.cc b/gen/pb-cpp/flyteidl/service/admin.pb.cc index c1b490d2f..efbf98757 100644 --- a/gen/pb-cpp/flyteidl/service/admin.pb.cc +++ b/gen/pb-cpp/flyteidl/service/admin.pb.cc @@ -52,269 +52,267 @@ const char descriptor_table_protodef_flyteidl_2fservice_2fadmin_2eproto[] = "admin/task_execution.proto\032\034flyteidl/adm" "in/version.proto\032\033flyteidl/admin/common." "proto\032\'flyteidl/admin/description_entity" - ".proto\032\036flyteidl/core/identifier.proto\032\033" - "flyteidl/core/metrics.proto2\204N\n\014AdminSer" - "vice\022m\n\nCreateTask\022!.flyteidl.admin.Task" - "CreateRequest\032\".flyteidl.admin.TaskCreat" - "eResponse\"\030\202\323\344\223\002\022\"\r/api/v1/tasks:\001*\022\210\001\n\007" - "GetTask\022 .flyteidl.admin.ObjectGetReques" - "t\032\024.flyteidl.admin.Task\"E\202\323\344\223\002\?\022=/api/v1" - "/tasks/{id.project}/{id.domain}/{id.name" - "}/{id.version}\022\227\001\n\013ListTaskIds\0220.flyteid" - "l.admin.NamedEntityIdentifierListRequest" - "\032).flyteidl.admin.NamedEntityIdentifierL" - "ist\"+\202\323\344\223\002%\022#/api/v1/task_ids/{project}/" - "{domain}\022\256\001\n\tListTasks\022#.flyteidl.admin." - "ResourceListRequest\032\030.flyteidl.admin.Tas" - "kList\"b\202\323\344\223\002\\\0220/api/v1/tasks/{id.project" - "}/{id.domain}/{id.name}Z(\022&/api/v1/tasks" - "/{id.project}/{id.domain}\022}\n\016CreateWorkf" - "low\022%.flyteidl.admin.WorkflowCreateReque" - "st\032&.flyteidl.admin.WorkflowCreateRespon" - "se\"\034\202\323\344\223\002\026\"\021/api/v1/workflows:\001*\022\224\001\n\013Get" - "Workflow\022 .flyteidl.admin.ObjectGetReque" - "st\032\030.flyteidl.admin.Workflow\"I\202\323\344\223\002C\022A/a" - "pi/v1/workflows/{id.project}/{id.domain}" - "/{id.name}/{id.version}\022\237\001\n\017ListWorkflow" - "Ids\0220.flyteidl.admin.NamedEntityIdentifi" - "erListRequest\032).flyteidl.admin.NamedEnti" - "tyIdentifierList\"/\202\323\344\223\002)\022\'/api/v1/workfl" - "ow_ids/{project}/{domain}\022\276\001\n\rListWorkfl" - "ows\022#.flyteidl.admin.ResourceListRequest" - "\032\034.flyteidl.admin.WorkflowList\"j\202\323\344\223\002d\0224" - "/api/v1/workflows/{id.project}/{id.domai" - "n}/{id.name}Z,\022*/api/v1/workflows/{id.pr" - "oject}/{id.domain}\022\206\001\n\020CreateLaunchPlan\022" - "\'.flyteidl.admin.LaunchPlanCreateRequest" - "\032(.flyteidl.admin.LaunchPlanCreateRespon" - "se\"\037\202\323\344\223\002\031\"\024/api/v1/launch_plans:\001*\022\233\001\n\r" - "GetLaunchPlan\022 .flyteidl.admin.ObjectGet" - "Request\032\032.flyteidl.admin.LaunchPlan\"L\202\323\344" - "\223\002F\022D/api/v1/launch_plans/{id.project}/{" - "id.domain}/{id.name}/{id.version}\022\242\001\n\023Ge" - "tActiveLaunchPlan\022\'.flyteidl.admin.Activ" - "eLaunchPlanRequest\032\032.flyteidl.admin.Laun" - "chPlan\"F\202\323\344\223\002@\022>/api/v1/active_launch_pl" - "ans/{id.project}/{id.domain}/{id.name}\022\234" - "\001\n\025ListActiveLaunchPlans\022+.flyteidl.admi" - "n.ActiveLaunchPlanListRequest\032\036.flyteidl" - ".admin.LaunchPlanList\"6\202\323\344\223\0020\022./api/v1/a" - "ctive_launch_plans/{project}/{domain}\022\244\001" - "\n\021ListLaunchPlanIds\0220.flyteidl.admin.Nam" - "edEntityIdentifierListRequest\032).flyteidl" - ".admin.NamedEntityIdentifierList\"2\202\323\344\223\002," - "\022*/api/v1/launch_plan_ids/{project}/{dom" - "ain}\022\310\001\n\017ListLaunchPlans\022#.flyteidl.admi" - "n.ResourceListRequest\032\036.flyteidl.admin.L" - "aunchPlanList\"p\202\323\344\223\002j\0227/api/v1/launch_pl" - "ans/{id.project}/{id.domain}/{id.name}Z/" - "\022-/api/v1/launch_plans/{id.project}/{id." - "domain}\022\266\001\n\020UpdateLaunchPlan\022\'.flyteidl." - "admin.LaunchPlanUpdateRequest\032(.flyteidl" - ".admin.LaunchPlanUpdateResponse\"O\202\323\344\223\002I\032" - "D/api/v1/launch_plans/{id.project}/{id.d" - "omain}/{id.name}/{id.version}:\001*\022\201\001\n\017Cre" - "ateExecution\022&.flyteidl.admin.ExecutionC" - "reateRequest\032\'.flyteidl.admin.ExecutionC" - "reateResponse\"\035\202\323\344\223\002\027\"\022/api/v1/execution" - "s:\001*\022\216\001\n\021RelaunchExecution\022(.flyteidl.ad" - "min.ExecutionRelaunchRequest\032\'.flyteidl." - "admin.ExecutionCreateResponse\"&\202\323\344\223\002 \"\033/" - "api/v1/executions/relaunch:\001*\022\213\001\n\020Recove" - "rExecution\022\'.flyteidl.admin.ExecutionRec" - "overRequest\032\'.flyteidl.admin.ExecutionCr" - "eateResponse\"%\202\323\344\223\002\037\"\032/api/v1/executions" - "/recover:\001*\022\225\001\n\014GetExecution\022+.flyteidl." - "admin.WorkflowExecutionGetRequest\032\031.flyt" - "eidl.admin.Execution\"=\202\323\344\223\0027\0225/api/v1/ex" - "ecutions/{id.project}/{id.domain}/{id.na" - "me}\022\244\001\n\017UpdateExecution\022&.flyteidl.admin" - ".ExecutionUpdateRequest\032\'.flyteidl.admin" - ".ExecutionUpdateResponse\"@\202\323\344\223\002:\0325/api/v" - "1/executions/{id.project}/{id.domain}/{i" - "d.name}:\001*\022\271\001\n\020GetExecutionData\022/.flytei" - "dl.admin.WorkflowExecutionGetDataRequest" - "\0320.flyteidl.admin.WorkflowExecutionGetDa" - "taResponse\"B\202\323\344\223\002<\022:/api/v1/data/executi" - "ons/{id.project}/{id.domain}/{id.name}\022\211" - "\001\n\016ListExecutions\022#.flyteidl.admin.Resou" - "rceListRequest\032\035.flyteidl.admin.Executio" - "nList\"3\202\323\344\223\002-\022+/api/v1/executions/{id.pr" - "oject}/{id.domain}\022\255\001\n\022TerminateExecutio" - "n\022).flyteidl.admin.ExecutionTerminateReq" - "uest\032*.flyteidl.admin.ExecutionTerminate" - "Response\"@\202\323\344\223\002:*5/api/v1/executions/{id" - ".project}/{id.domain}/{id.name}:\001*\022\322\001\n\020G" - "etNodeExecution\022\'.flyteidl.admin.NodeExe" - "cutionGetRequest\032\035.flyteidl.admin.NodeEx" - "ecution\"v\202\323\344\223\002p\022n/api/v1/node_executions" - "/{id.execution_id.project}/{id.execution" - "_id.domain}/{id.execution_id.name}/{id.n" - "ode_id}\022\336\001\n\022ListNodeExecutions\022(.flyteid" - "l.admin.NodeExecutionListRequest\032!.flyte" - "idl.admin.NodeExecutionList\"{\202\323\344\223\002u\022s/ap" - "i/v1/node_executions/{workflow_execution" - "_id.project}/{workflow_execution_id.doma" - "in}/{workflow_execution_id.name}\022\245\004\n\031Lis" - "tNodeExecutionsForTask\022/.flyteidl.admin." - "NodeExecutionForTaskListRequest\032!.flytei" - "dl.admin.NodeExecutionList\"\263\003\202\323\344\223\002\254\003\022\251\003/" - "api/v1/children/task_executions/{task_ex" - "ecution_id.node_execution_id.execution_i" - "d.project}/{task_execution_id.node_execu" - "tion_id.execution_id.domain}/{task_execu" - "tion_id.node_execution_id.execution_id.n" - "ame}/{task_execution_id.node_execution_i" - "d.node_id}/{task_execution_id.task_id.pr" - "oject}/{task_execution_id.task_id.domain" - "}/{task_execution_id.task_id.name}/{task" - "_execution_id.task_id.version}/{task_exe" - "cution_id.retry_attempt}\022\356\001\n\024GetNodeExec" - "utionData\022+.flyteidl.admin.NodeExecution" - "GetDataRequest\032,.flyteidl.admin.NodeExec" - "utionGetDataResponse\"{\202\323\344\223\002u\022s/api/v1/da" - "ta/node_executions/{id.execution_id.proj" - "ect}/{id.execution_id.domain}/{id.execut" - "ion_id.name}/{id.node_id}\022\177\n\017RegisterPro" - "ject\022&.flyteidl.admin.ProjectRegisterReq" - "uest\032\'.flyteidl.admin.ProjectRegisterRes" - "ponse\"\033\202\323\344\223\002\025\"\020/api/v1/projects:\001*\022q\n\rUp" - "dateProject\022\027.flyteidl.admin.Project\032%.f" - "lyteidl.admin.ProjectUpdateResponse\" \202\323\344" - "\223\002\032\032\025/api/v1/projects/{id}:\001*\022f\n\014ListPro" - "jects\022\".flyteidl.admin.ProjectListReques" - "t\032\030.flyteidl.admin.Projects\"\030\202\323\344\223\002\022\022\020/ap" - "i/v1/projects\022\231\001\n\023CreateWorkflowEvent\022-." - "flyteidl.admin.WorkflowExecutionEventReq" - "uest\032..flyteidl.admin.WorkflowExecutionE" - "ventResponse\"#\202\323\344\223\002\035\"\030/api/v1/events/wor" - "kflows:\001*\022\211\001\n\017CreateNodeEvent\022).flyteidl" - ".admin.NodeExecutionEventRequest\032*.flyte" - "idl.admin.NodeExecutionEventResponse\"\037\202\323" - "\344\223\002\031\"\024/api/v1/events/nodes:\001*\022\211\001\n\017Create" - "TaskEvent\022).flyteidl.admin.TaskExecution" - "EventRequest\032*.flyteidl.admin.TaskExecut" - "ionEventResponse\"\037\202\323\344\223\002\031\"\024/api/v1/events" - "/tasks:\001*\022\200\003\n\020GetTaskExecution\022\'.flyteid" - "l.admin.TaskExecutionGetRequest\032\035.flytei" - "dl.admin.TaskExecution\"\243\002\202\323\344\223\002\234\002\022\231\002/api/" - "v1/task_executions/{id.node_execution_id" - ".execution_id.project}/{id.node_executio" - "n_id.execution_id.domain}/{id.node_execu" - "tion_id.execution_id.name}/{id.node_exec" - "ution_id.node_id}/{id.task_id.project}/{" - "id.task_id.domain}/{id.task_id.name}/{id" - ".task_id.version}/{id.retry_attempt}\022\230\002\n" - "\022ListTaskExecutions\022(.flyteidl.admin.Tas" - "kExecutionListRequest\032!.flyteidl.admin.T" - "askExecutionList\"\264\001\202\323\344\223\002\255\001\022\252\001/api/v1/tas" - "k_executions/{node_execution_id.executio" - "n_id.project}/{node_execution_id.executi" - "on_id.domain}/{node_execution_id.executi" - "on_id.name}/{node_execution_id.node_id}\022" - "\234\003\n\024GetTaskExecutionData\022+.flyteidl.admi" - "n.TaskExecutionGetDataRequest\032,.flyteidl" - ".admin.TaskExecutionGetDataResponse\"\250\002\202\323" - "\344\223\002\241\002\022\236\002/api/v1/data/task_executions/{id" - ".node_execution_id.execution_id.project}" - "/{id.node_execution_id.execution_id.doma" - "in}/{id.node_execution_id.execution_id.n" - "ame}/{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}\022\343\001\n\035UpdateProjectDomainAt" - "tributes\0224.flyteidl.admin.ProjectDomainA" - "ttributesUpdateRequest\0325.flyteidl.admin." - "ProjectDomainAttributesUpdateResponse\"U\202" - "\323\344\223\002O\032J/api/v1/project_domain_attributes" - "/{attributes.project}/{attributes.domain" - "}:\001*\022\301\001\n\032GetProjectDomainAttributes\0221.fl" - "yteidl.admin.ProjectDomainAttributesGetR" - "equest\0322.flyteidl.admin.ProjectDomainAtt" - "ributesGetResponse\"<\202\323\344\223\0026\0224/api/v1/proj" - "ect_domain_attributes/{project}/{domain}" - "\022\315\001\n\035DeleteProjectDomainAttributes\0224.fly" - "teidl.admin.ProjectDomainAttributesDelet" - "eRequest\0325.flyteidl.admin.ProjectDomainA" - "ttributesDeleteResponse\"\?\202\323\344\223\0029*4/api/v1" - "/project_domain_attributes/{project}/{do" - "main}:\001*\022\266\001\n\027UpdateProjectAttributes\022..f" - "lyteidl.admin.ProjectAttributesUpdateReq" - "uest\032/.flyteidl.admin.ProjectAttributesU" - "pdateResponse\":\202\323\344\223\0024\032//api/v1/project_a" - "ttributes/{attributes.project}:\001*\022\237\001\n\024Ge" - "tProjectAttributes\022+.flyteidl.admin.Proj" - "ectAttributesGetRequest\032,.flyteidl.admin" - ".ProjectAttributesGetResponse\",\202\323\344\223\002&\022$/" - "api/v1/project_attributes/{project}\022\253\001\n\027" - "DeleteProjectAttributes\022..flyteidl.admin" - ".ProjectAttributesDeleteRequest\032/.flytei" - "dl.admin.ProjectAttributesDeleteResponse" - "\"/\202\323\344\223\002)*$/api/v1/project_attributes/{pr" - "oject}:\001*\022\344\001\n\030UpdateWorkflowAttributes\022/" - ".flyteidl.admin.WorkflowAttributesUpdate" - "Request\0320.flyteidl.admin.WorkflowAttribu" - "tesUpdateResponse\"e\202\323\344\223\002_\032Z/api/v1/workf" - "low_attributes/{attributes.project}/{att" - "ributes.domain}/{attributes.workflow}:\001*" - "\022\267\001\n\025GetWorkflowAttributes\022,.flyteidl.ad" - "min.WorkflowAttributesGetRequest\032-.flyte" - "idl.admin.WorkflowAttributesGetResponse\"" - "A\202\323\344\223\002;\0229/api/v1/workflow_attributes/{pr" - "oject}/{domain}/{workflow}\022\303\001\n\030DeleteWor" - "kflowAttributes\022/.flyteidl.admin.Workflo" - "wAttributesDeleteRequest\0320.flyteidl.admi" - "n.WorkflowAttributesDeleteResponse\"D\202\323\344\223" - "\002>*9/api/v1/workflow_attributes/{project" - "}/{domain}/{workflow}:\001*\022\240\001\n\027ListMatchab" - "leAttributes\022..flyteidl.admin.ListMatcha" - "bleAttributesRequest\032/.flyteidl.admin.Li" - "stMatchableAttributesResponse\"$\202\323\344\223\002\036\022\034/" - "api/v1/matchable_attributes\022\237\001\n\021ListName" - "dEntities\022&.flyteidl.admin.NamedEntityLi" - "stRequest\032\037.flyteidl.admin.NamedEntityLi" - "st\"A\202\323\344\223\002;\0229/api/v1/named_entities/{reso" - "urce_type}/{project}/{domain}\022\247\001\n\016GetNam" - "edEntity\022%.flyteidl.admin.NamedEntityGet" - "Request\032\033.flyteidl.admin.NamedEntity\"Q\202\323" - "\344\223\002K\022I/api/v1/named_entities/{resource_t" - "ype}/{id.project}/{id.domain}/{id.name}\022" - "\276\001\n\021UpdateNamedEntity\022(.flyteidl.admin.N" - "amedEntityUpdateRequest\032).flyteidl.admin" - ".NamedEntityUpdateResponse\"T\202\323\344\223\002N\032I/api" - "/v1/named_entities/{resource_type}/{id.p" - "roject}/{id.domain}/{id.name}:\001*\022l\n\nGetV" - "ersion\022!.flyteidl.admin.GetVersionReques" - "t\032\".flyteidl.admin.GetVersionResponse\"\027\202" - "\323\344\223\002\021\022\017/api/v1/version\022\304\001\n\024GetDescriptio" - "nEntity\022 .flyteidl.admin.ObjectGetReques" - "t\032!.flyteidl.admin.DescriptionEntity\"g\202\323" - "\344\223\002a\022_/api/v1/description_entities/{id.r" + ".proto2\204N\n\014AdminService\022m\n\nCreateTask\022!." + "flyteidl.admin.TaskCreateRequest\032\".flyte" + "idl.admin.TaskCreateResponse\"\030\202\323\344\223\002\022\"\r/a" + "pi/v1/tasks:\001*\022\210\001\n\007GetTask\022 .flyteidl.ad" + "min.ObjectGetRequest\032\024.flyteidl.admin.Ta" + "sk\"E\202\323\344\223\002\?\022=/api/v1/tasks/{id.project}/{" + "id.domain}/{id.name}/{id.version}\022\227\001\n\013Li" + "stTaskIds\0220.flyteidl.admin.NamedEntityId" + "entifierListRequest\032).flyteidl.admin.Nam" + "edEntityIdentifierList\"+\202\323\344\223\002%\022#/api/v1/" + "task_ids/{project}/{domain}\022\256\001\n\tListTask" + "s\022#.flyteidl.admin.ResourceListRequest\032\030" + ".flyteidl.admin.TaskList\"b\202\323\344\223\002\\\0220/api/v" + "1/tasks/{id.project}/{id.domain}/{id.nam" + "e}Z(\022&/api/v1/tasks/{id.project}/{id.dom" + "ain}\022}\n\016CreateWorkflow\022%.flyteidl.admin." + "WorkflowCreateRequest\032&.flyteidl.admin.W" + "orkflowCreateResponse\"\034\202\323\344\223\002\026\"\021/api/v1/w" + "orkflows:\001*\022\224\001\n\013GetWorkflow\022 .flyteidl.a" + "dmin.ObjectGetRequest\032\030.flyteidl.admin.W" + "orkflow\"I\202\323\344\223\002C\022A/api/v1/workflows/{id.p" + "roject}/{id.domain}/{id.name}/{id.versio" + "n}\022\237\001\n\017ListWorkflowIds\0220.flyteidl.admin." + "NamedEntityIdentifierListRequest\032).flyte" + "idl.admin.NamedEntityIdentifierList\"/\202\323\344" + "\223\002)\022\'/api/v1/workflow_ids/{project}/{dom" + "ain}\022\276\001\n\rListWorkflows\022#.flyteidl.admin." + "ResourceListRequest\032\034.flyteidl.admin.Wor" + "kflowList\"j\202\323\344\223\002d\0224/api/v1/workflows/{id" + ".project}/{id.domain}/{id.name}Z,\022*/api/" + "v1/workflows/{id.project}/{id.domain}\022\206\001" + "\n\020CreateLaunchPlan\022\'.flyteidl.admin.Laun" + "chPlanCreateRequest\032(.flyteidl.admin.Lau" + "nchPlanCreateResponse\"\037\202\323\344\223\002\031\"\024/api/v1/l" + "aunch_plans:\001*\022\233\001\n\rGetLaunchPlan\022 .flyte" + "idl.admin.ObjectGetRequest\032\032.flyteidl.ad" + "min.LaunchPlan\"L\202\323\344\223\002F\022D/api/v1/launch_p" + "lans/{id.project}/{id.domain}/{id.name}/" + "{id.version}\022\242\001\n\023GetActiveLaunchPlan\022\'.f" + "lyteidl.admin.ActiveLaunchPlanRequest\032\032." + "flyteidl.admin.LaunchPlan\"F\202\323\344\223\002@\022>/api/" + "v1/active_launch_plans/{id.project}/{id." + "domain}/{id.name}\022\234\001\n\025ListActiveLaunchPl" + "ans\022+.flyteidl.admin.ActiveLaunchPlanLis" + "tRequest\032\036.flyteidl.admin.LaunchPlanList" + "\"6\202\323\344\223\0020\022./api/v1/active_launch_plans/{p" + "roject}/{domain}\022\244\001\n\021ListLaunchPlanIds\0220" + ".flyteidl.admin.NamedEntityIdentifierLis" + "tRequest\032).flyteidl.admin.NamedEntityIde" + "ntifierList\"2\202\323\344\223\002,\022*/api/v1/launch_plan" + "_ids/{project}/{domain}\022\310\001\n\017ListLaunchPl" + "ans\022#.flyteidl.admin.ResourceListRequest" + "\032\036.flyteidl.admin.LaunchPlanList\"p\202\323\344\223\002j" + "\0227/api/v1/launch_plans/{id.project}/{id." + "domain}/{id.name}Z/\022-/api/v1/launch_plan" + "s/{id.project}/{id.domain}\022\266\001\n\020UpdateLau" + "nchPlan\022\'.flyteidl.admin.LaunchPlanUpdat" + "eRequest\032(.flyteidl.admin.LaunchPlanUpda" + "teResponse\"O\202\323\344\223\002I\032D/api/v1/launch_plans" + "/{id.project}/{id.domain}/{id.name}/{id." + "version}:\001*\022\201\001\n\017CreateExecution\022&.flytei" + "dl.admin.ExecutionCreateRequest\032\'.flytei" + "dl.admin.ExecutionCreateResponse\"\035\202\323\344\223\002\027" + "\"\022/api/v1/executions:\001*\022\216\001\n\021RelaunchExec" + "ution\022(.flyteidl.admin.ExecutionRelaunch" + "Request\032\'.flyteidl.admin.ExecutionCreate" + "Response\"&\202\323\344\223\002 \"\033/api/v1/executions/rel" + "aunch:\001*\022\213\001\n\020RecoverExecution\022\'.flyteidl" + ".admin.ExecutionRecoverRequest\032\'.flyteid" + "l.admin.ExecutionCreateResponse\"%\202\323\344\223\002\037\"" + "\032/api/v1/executions/recover:\001*\022\225\001\n\014GetEx" + "ecution\022+.flyteidl.admin.WorkflowExecuti" + "onGetRequest\032\031.flyteidl.admin.Execution\"" + "=\202\323\344\223\0027\0225/api/v1/executions/{id.project}" + "/{id.domain}/{id.name}\022\244\001\n\017UpdateExecuti" + "on\022&.flyteidl.admin.ExecutionUpdateReque" + "st\032\'.flyteidl.admin.ExecutionUpdateRespo" + "nse\"@\202\323\344\223\002:\0325/api/v1/executions/{id.proj" + "ect}/{id.domain}/{id.name}:\001*\022\271\001\n\020GetExe" + "cutionData\022/.flyteidl.admin.WorkflowExec" + "utionGetDataRequest\0320.flyteidl.admin.Wor" + "kflowExecutionGetDataResponse\"B\202\323\344\223\002<\022:/" + "api/v1/data/executions/{id.project}/{id." + "domain}/{id.name}\022\211\001\n\016ListExecutions\022#.f" + "lyteidl.admin.ResourceListRequest\032\035.flyt" + "eidl.admin.ExecutionList\"3\202\323\344\223\002-\022+/api/v" + "1/executions/{id.project}/{id.domain}\022\255\001" + "\n\022TerminateExecution\022).flyteidl.admin.Ex" + "ecutionTerminateRequest\032*.flyteidl.admin" + ".ExecutionTerminateResponse\"@\202\323\344\223\002:*5/ap" + "i/v1/executions/{id.project}/{id.domain}" + "/{id.name}:\001*\022\322\001\n\020GetNodeExecution\022\'.fly" + "teidl.admin.NodeExecutionGetRequest\032\035.fl" + "yteidl.admin.NodeExecution\"v\202\323\344\223\002p\022n/api" + "/v1/node_executions/{id.execution_id.pro" + "ject}/{id.execution_id.domain}/{id.execu" + "tion_id.name}/{id.node_id}\022\336\001\n\022ListNodeE" + "xecutions\022(.flyteidl.admin.NodeExecution" + "ListRequest\032!.flyteidl.admin.NodeExecuti" + "onList\"{\202\323\344\223\002u\022s/api/v1/node_executions/" + "{workflow_execution_id.project}/{workflo" + "w_execution_id.domain}/{workflow_executi" + "on_id.name}\022\245\004\n\031ListNodeExecutionsForTas" + "k\022/.flyteidl.admin.NodeExecutionForTaskL" + "istRequest\032!.flyteidl.admin.NodeExecutio" + "nList\"\263\003\202\323\344\223\002\254\003\022\251\003/api/v1/children/task_" + "executions/{task_execution_id.node_execu" + "tion_id.execution_id.project}/{task_exec" + "ution_id.node_execution_id.execution_id." + "domain}/{task_execution_id.node_executio" + "n_id.execution_id.name}/{task_execution_" + "id.node_execution_id.node_id}/{task_exec" + "ution_id.task_id.project}/{task_executio" + "n_id.task_id.domain}/{task_execution_id." + "task_id.name}/{task_execution_id.task_id" + ".version}/{task_execution_id.retry_attem" + "pt}\022\356\001\n\024GetNodeExecutionData\022+.flyteidl." + "admin.NodeExecutionGetDataRequest\032,.flyt" + "eidl.admin.NodeExecutionGetDataResponse\"" + "{\202\323\344\223\002u\022s/api/v1/data/node_executions/{i" + "d.execution_id.project}/{id.execution_id" + ".domain}/{id.execution_id.name}/{id.node" + "_id}\022\177\n\017RegisterProject\022&.flyteidl.admin" + ".ProjectRegisterRequest\032\'.flyteidl.admin" + ".ProjectRegisterResponse\"\033\202\323\344\223\002\025\"\020/api/v" + "1/projects:\001*\022q\n\rUpdateProject\022\027.flyteid" + "l.admin.Project\032%.flyteidl.admin.Project" + "UpdateResponse\" \202\323\344\223\002\032\032\025/api/v1/projects" + "/{id}:\001*\022f\n\014ListProjects\022\".flyteidl.admi" + "n.ProjectListRequest\032\030.flyteidl.admin.Pr" + "ojects\"\030\202\323\344\223\002\022\022\020/api/v1/projects\022\231\001\n\023Cre" + "ateWorkflowEvent\022-.flyteidl.admin.Workfl" + "owExecutionEventRequest\032..flyteidl.admin" + ".WorkflowExecutionEventResponse\"#\202\323\344\223\002\035\"" + "\030/api/v1/events/workflows:\001*\022\211\001\n\017CreateN" + "odeEvent\022).flyteidl.admin.NodeExecutionE" + "ventRequest\032*.flyteidl.admin.NodeExecuti" + "onEventResponse\"\037\202\323\344\223\002\031\"\024/api/v1/events/" + "nodes:\001*\022\211\001\n\017CreateTaskEvent\022).flyteidl." + "admin.TaskExecutionEventRequest\032*.flytei" + "dl.admin.TaskExecutionEventResponse\"\037\202\323\344" + "\223\002\031\"\024/api/v1/events/tasks:\001*\022\200\003\n\020GetTask" + "Execution\022\'.flyteidl.admin.TaskExecution" + "GetRequest\032\035.flyteidl.admin.TaskExecutio" + "n\"\243\002\202\323\344\223\002\234\002\022\231\002/api/v1/task_executions/{i" + "d.node_execution_id.execution_id.project" + "}/{id.node_execution_id.execution_id.dom" + "ain}/{id.node_execution_id.execution_id." + "name}/{id.node_execution_id.node_id}/{id" + ".task_id.project}/{id.task_id.domain}/{i" + "d.task_id.name}/{id.task_id.version}/{id" + ".retry_attempt}\022\230\002\n\022ListTaskExecutions\022(" + ".flyteidl.admin.TaskExecutionListRequest" + "\032!.flyteidl.admin.TaskExecutionList\"\264\001\202\323" + "\344\223\002\255\001\022\252\001/api/v1/task_executions/{node_ex" + "ecution_id.execution_id.project}/{node_e" + "xecution_id.execution_id.domain}/{node_e" + "xecution_id.execution_id.name}/{node_exe" + "cution_id.node_id}\022\234\003\n\024GetTaskExecutionD" + "ata\022+.flyteidl.admin.TaskExecutionGetDat" + "aRequest\032,.flyteidl.admin.TaskExecutionG" + "etDataResponse\"\250\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/" + "task_executions/{id.node_execution_id.ex" + "ecution_id.project}/{id.node_execution_i" + "d.execution_id.domain}/{id.node_executio" + "n_id.execution_id.name}/{id.node_executi" + "on_id.node_id}/{id.task_id.project}/{id." + "task_id.domain}/{id.task_id.name}/{id.ta" + "sk_id.version}/{id.retry_attempt}\022\343\001\n\035Up" + "dateProjectDomainAttributes\0224.flyteidl.a" + "dmin.ProjectDomainAttributesUpdateReques" + "t\0325.flyteidl.admin.ProjectDomainAttribut" + "esUpdateResponse\"U\202\323\344\223\002O\032J/api/v1/projec" + "t_domain_attributes/{attributes.project}" + "/{attributes.domain}:\001*\022\301\001\n\032GetProjectDo" + "mainAttributes\0221.flyteidl.admin.ProjectD" + "omainAttributesGetRequest\0322.flyteidl.adm" + "in.ProjectDomainAttributesGetResponse\"<\202" + "\323\344\223\0026\0224/api/v1/project_domain_attributes" + "/{project}/{domain}\022\315\001\n\035DeleteProjectDom" + "ainAttributes\0224.flyteidl.admin.ProjectDo" + "mainAttributesDeleteRequest\0325.flyteidl.a" + "dmin.ProjectDomainAttributesDeleteRespon" + "se\"\?\202\323\344\223\0029*4/api/v1/project_domain_attri" + "butes/{project}/{domain}:\001*\022\266\001\n\027UpdatePr" + "ojectAttributes\022..flyteidl.admin.Project" + "AttributesUpdateRequest\032/.flyteidl.admin" + ".ProjectAttributesUpdateResponse\":\202\323\344\223\0024" + "\032//api/v1/project_attributes/{attributes" + ".project}:\001*\022\237\001\n\024GetProjectAttributes\022+." + "flyteidl.admin.ProjectAttributesGetReque" + "st\032,.flyteidl.admin.ProjectAttributesGet" + "Response\",\202\323\344\223\002&\022$/api/v1/project_attrib" + "utes/{project}\022\253\001\n\027DeleteProjectAttribut" + "es\022..flyteidl.admin.ProjectAttributesDel" + "eteRequest\032/.flyteidl.admin.ProjectAttri" + "butesDeleteResponse\"/\202\323\344\223\002)*$/api/v1/pro" + "ject_attributes/{project}:\001*\022\344\001\n\030UpdateW" + "orkflowAttributes\022/.flyteidl.admin.Workf" + "lowAttributesUpdateRequest\0320.flyteidl.ad" + "min.WorkflowAttributesUpdateResponse\"e\202\323" + "\344\223\002_\032Z/api/v1/workflow_attributes/{attri" + "butes.project}/{attributes.domain}/{attr" + "ibutes.workflow}:\001*\022\267\001\n\025GetWorkflowAttri" + "butes\022,.flyteidl.admin.WorkflowAttribute" + "sGetRequest\032-.flyteidl.admin.WorkflowAtt" + "ributesGetResponse\"A\202\323\344\223\002;\0229/api/v1/work" + "flow_attributes/{project}/{domain}/{work" + "flow}\022\303\001\n\030DeleteWorkflowAttributes\022/.fly" + "teidl.admin.WorkflowAttributesDeleteRequ" + "est\0320.flyteidl.admin.WorkflowAttributesD" + "eleteResponse\"D\202\323\344\223\002>*9/api/v1/workflow_" + "attributes/{project}/{domain}/{workflow}" + ":\001*\022\240\001\n\027ListMatchableAttributes\022..flytei" + "dl.admin.ListMatchableAttributesRequest\032" + "/.flyteidl.admin.ListMatchableAttributes" + "Response\"$\202\323\344\223\002\036\022\034/api/v1/matchable_attr" + "ibutes\022\237\001\n\021ListNamedEntities\022&.flyteidl." + "admin.NamedEntityListRequest\032\037.flyteidl." + "admin.NamedEntityList\"A\202\323\344\223\002;\0229/api/v1/n" + "amed_entities/{resource_type}/{project}/" + "{domain}\022\247\001\n\016GetNamedEntity\022%.flyteidl.a" + "dmin.NamedEntityGetRequest\032\033.flyteidl.ad" + "min.NamedEntity\"Q\202\323\344\223\002K\022I/api/v1/named_e" + "ntities/{resource_type}/{id.project}/{id" + ".domain}/{id.name}\022\276\001\n\021UpdateNamedEntity" + "\022(.flyteidl.admin.NamedEntityUpdateReque" + "st\032).flyteidl.admin.NamedEntityUpdateRes" + "ponse\"T\202\323\344\223\002N\032I/api/v1/named_entities/{r" "esource_type}/{id.project}/{id.domain}/{" - "id.name}/{id.version}\022\222\002\n\027ListDescriptio" - "nEntities\022,.flyteidl.admin.DescriptionEn" - "tityListRequest\032%.flyteidl.admin.Descrip" - "tionEntityList\"\241\001\202\323\344\223\002\232\001\022O/api/v1/descri" - "ption_entities/{resource_type}/{id.proje" - "ct}/{id.domain}/{id.name}ZG\022E/api/v1/des" - "cription_entities/{resource_type}/{id.pr" - "oject}/{id.domain}\022\305\001\n\023GetExecutionMetri" - "cs\0222.flyteidl.admin.WorkflowExecutionGet" - "MetricsRequest\0323.flyteidl.admin.Workflow" - "ExecutionGetMetricsResponse\"E\202\323\344\223\002\?\022=/ap" - "i/v1/metrics/executions/{id.project}/{id" - ".domain}/{id.name}B9Z7github.com/flyteor" - "g/flyteidl/gen/pb-go/flyteidl/serviceb\006p" - "roto3" + "id.name}:\001*\022l\n\nGetVersion\022!.flyteidl.adm" + "in.GetVersionRequest\032\".flyteidl.admin.Ge" + "tVersionResponse\"\027\202\323\344\223\002\021\022\017/api/v1/versio" + "n\022\304\001\n\024GetDescriptionEntity\022 .flyteidl.ad" + "min.ObjectGetRequest\032!.flyteidl.admin.De" + "scriptionEntity\"g\202\323\344\223\002a\022_/api/v1/descrip" + "tion_entities/{id.resource_type}/{id.pro" + "ject}/{id.domain}/{id.name}/{id.version}" + "\022\222\002\n\027ListDescriptionEntities\022,.flyteidl." + "admin.DescriptionEntityListRequest\032%.fly" + "teidl.admin.DescriptionEntityList\"\241\001\202\323\344\223" + "\002\232\001\022O/api/v1/description_entities/{resou" + "rce_type}/{id.project}/{id.domain}/{id.n" + "ame}ZG\022E/api/v1/description_entities/{re" + "source_type}/{id.project}/{id.domain}\022\305\001" + "\n\023GetExecutionMetrics\0222.flyteidl.admin.W" + "orkflowExecutionGetMetricsRequest\0323.flyt" + "eidl.admin.WorkflowExecutionGetMetricsRe" + "sponse\"E\202\323\344\223\002\?\022=/api/v1/metrics/executio" + "ns/{id.project}/{id.domain}/{id.name}B9Z" + "7github.com/flyteorg/flyteidl/gen/pb-go/" + "flyteidl/serviceb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fservice_2fadmin_2eproto = { false, InitDefaults_flyteidl_2fservice_2fadmin_2eproto, descriptor_table_protodef_flyteidl_2fservice_2fadmin_2eproto, - "flyteidl/service/admin.proto", &assign_descriptors_table_flyteidl_2fservice_2fadmin_2eproto, 10725, + "flyteidl/service/admin.proto", &assign_descriptors_table_flyteidl_2fservice_2fadmin_2eproto, 10664, }; void AddDescriptors_flyteidl_2fservice_2fadmin_2eproto() { - static constexpr ::google::protobuf::internal::InitFunc deps[18] = + static constexpr ::google::protobuf::internal::InitFunc deps[16] = { ::AddDescriptors_google_2fapi_2fannotations_2eproto, ::AddDescriptors_flyteidl_2fadmin_2fproject_2eproto, @@ -332,10 +330,8 @@ void AddDescriptors_flyteidl_2fservice_2fadmin_2eproto() { ::AddDescriptors_flyteidl_2fadmin_2fversion_2eproto, ::AddDescriptors_flyteidl_2fadmin_2fcommon_2eproto, ::AddDescriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto, - ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, - ::AddDescriptors_flyteidl_2fcore_2fmetrics_2eproto, }; - ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fservice_2fadmin_2eproto, deps, 18); + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fservice_2fadmin_2eproto, deps, 16); } // Force running AddDescriptors() at dynamic initialization time. diff --git a/gen/pb-cpp/flyteidl/service/admin.pb.h b/gen/pb-cpp/flyteidl/service/admin.pb.h index fff2ff113..ca8c835a9 100644 --- a/gen/pb-cpp/flyteidl/service/admin.pb.h +++ b/gen/pb-cpp/flyteidl/service/admin.pb.h @@ -45,8 +45,6 @@ #include "flyteidl/admin/version.pb.h" #include "flyteidl/admin/common.pb.h" #include "flyteidl/admin/description_entity.pb.h" -#include "flyteidl/core/identifier.pb.h" -#include "flyteidl/core/metrics.pb.h" // @@protoc_insertion_point(includes) #include #define PROTOBUF_INTERNAL_EXPORT_flyteidl_2fservice_2fadmin_2eproto diff --git a/gen/pb-cpp/flyteidl/service/dataproxy.grpc.pb.cc b/gen/pb-cpp/flyteidl/service/dataproxy.grpc.pb.cc index 4d84b70f1..2bff0c5a8 100644 --- a/gen/pb-cpp/flyteidl/service/dataproxy.grpc.pb.cc +++ b/gen/pb-cpp/flyteidl/service/dataproxy.grpc.pb.cc @@ -23,6 +23,7 @@ static const char* DataProxyService_method_names[] = { "/flyteidl.service.DataProxyService/CreateUploadLocation", "/flyteidl.service.DataProxyService/CreateDownloadLocation", "/flyteidl.service.DataProxyService/CreateDownloadLink", + "/flyteidl.service.DataProxyService/GetData", }; std::unique_ptr< DataProxyService::Stub> DataProxyService::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) { @@ -35,6 +36,7 @@ DataProxyService::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& c : channel_(channel), rpcmethod_CreateUploadLocation_(DataProxyService_method_names[0], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_CreateDownloadLocation_(DataProxyService_method_names[1], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_CreateDownloadLink_(DataProxyService_method_names[2], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetData_(DataProxyService_method_names[3], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) {} ::grpc::Status DataProxyService::Stub::CreateUploadLocation(::grpc::ClientContext* context, const ::flyteidl::service::CreateUploadLocationRequest& request, ::flyteidl::service::CreateUploadLocationResponse* response) { @@ -121,6 +123,34 @@ ::grpc::ClientAsyncResponseReader< ::flyteidl::service::CreateDownloadLinkRespon return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::service::CreateDownloadLinkResponse>::Create(channel_.get(), cq, rpcmethod_CreateDownloadLink_, context, request, false); } +::grpc::Status DataProxyService::Stub::GetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::flyteidl::service::GetDataResponse* response) { + return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_GetData_, context, request, response); +} + +void DataProxyService::Stub::experimental_async::GetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetData_, context, request, response, std::move(f)); +} + +void DataProxyService::Stub::experimental_async::GetData(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::GetDataResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetData_, context, request, response, std::move(f)); +} + +void DataProxyService::Stub::experimental_async::GetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetData_, context, request, response, reactor); +} + +void DataProxyService::Stub::experimental_async::GetData(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::GetDataResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetData_, context, request, response, reactor); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::service::GetDataResponse>* DataProxyService::Stub::AsyncGetDataRaw(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::service::GetDataResponse>::Create(channel_.get(), cq, rpcmethod_GetData_, context, request, true); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::service::GetDataResponse>* DataProxyService::Stub::PrepareAsyncGetDataRaw(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::service::GetDataResponse>::Create(channel_.get(), cq, rpcmethod_GetData_, context, request, false); +} + DataProxyService::Service::Service() { AddMethod(new ::grpc::internal::RpcServiceMethod( DataProxyService_method_names[0], @@ -137,6 +167,11 @@ DataProxyService::Service::Service() { ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< DataProxyService::Service, ::flyteidl::service::CreateDownloadLinkRequest, ::flyteidl::service::CreateDownloadLinkResponse>( std::mem_fn(&DataProxyService::Service::CreateDownloadLink), this))); + AddMethod(new ::grpc::internal::RpcServiceMethod( + DataProxyService_method_names[3], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler< DataProxyService::Service, ::flyteidl::service::GetDataRequest, ::flyteidl::service::GetDataResponse>( + std::mem_fn(&DataProxyService::Service::GetData), this))); } DataProxyService::Service::~Service() { @@ -163,6 +198,13 @@ ::grpc::Status DataProxyService::Service::CreateDownloadLink(::grpc::ServerConte return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } +::grpc::Status DataProxyService::Service::GetData(::grpc::ServerContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response) { + (void) context; + (void) request; + (void) response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); +} + } // namespace flyteidl } // namespace service diff --git a/gen/pb-cpp/flyteidl/service/dataproxy.grpc.pb.h b/gen/pb-cpp/flyteidl/service/dataproxy.grpc.pb.h index da74beda7..aaf05b601 100644 --- a/gen/pb-cpp/flyteidl/service/dataproxy.grpc.pb.h +++ b/gen/pb-cpp/flyteidl/service/dataproxy.grpc.pb.h @@ -73,6 +73,13 @@ class DataProxyService final { std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::CreateDownloadLinkResponse>> PrepareAsyncCreateDownloadLink(::grpc::ClientContext* context, const ::flyteidl::service::CreateDownloadLinkRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::CreateDownloadLinkResponse>>(PrepareAsyncCreateDownloadLinkRaw(context, request, cq)); } + virtual ::grpc::Status GetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::flyteidl::service::GetDataResponse* response) = 0; + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::GetDataResponse>> AsyncGetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::GetDataResponse>>(AsyncGetDataRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::GetDataResponse>> PrepareAsyncGetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::GetDataResponse>>(PrepareAsyncGetDataRaw(context, request, cq)); + } class experimental_async_interface { public: virtual ~experimental_async_interface() {} @@ -91,6 +98,10 @@ class DataProxyService final { virtual void CreateDownloadLink(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::CreateDownloadLinkResponse* response, std::function) = 0; virtual void CreateDownloadLink(::grpc::ClientContext* context, const ::flyteidl::service::CreateDownloadLinkRequest* request, ::flyteidl::service::CreateDownloadLinkResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; virtual void CreateDownloadLink(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::CreateDownloadLinkResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + virtual void GetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response, std::function) = 0; + virtual void GetData(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::GetDataResponse* response, std::function) = 0; + virtual void GetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + virtual void GetData(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::GetDataResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; }; virtual class experimental_async_interface* experimental_async() { return nullptr; } private: @@ -100,6 +111,8 @@ class DataProxyService final { virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::CreateDownloadLocationResponse>* PrepareAsyncCreateDownloadLocationRaw(::grpc::ClientContext* context, const ::flyteidl::service::CreateDownloadLocationRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::CreateDownloadLinkResponse>* AsyncCreateDownloadLinkRaw(::grpc::ClientContext* context, const ::flyteidl::service::CreateDownloadLinkRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::CreateDownloadLinkResponse>* PrepareAsyncCreateDownloadLinkRaw(::grpc::ClientContext* context, const ::flyteidl::service::CreateDownloadLinkRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::GetDataResponse>* AsyncGetDataRaw(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::service::GetDataResponse>* PrepareAsyncGetDataRaw(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::grpc::CompletionQueue* cq) = 0; }; class Stub final : public StubInterface { public: @@ -125,6 +138,13 @@ class DataProxyService final { std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::CreateDownloadLinkResponse>> PrepareAsyncCreateDownloadLink(::grpc::ClientContext* context, const ::flyteidl::service::CreateDownloadLinkRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::CreateDownloadLinkResponse>>(PrepareAsyncCreateDownloadLinkRaw(context, request, cq)); } + ::grpc::Status GetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::flyteidl::service::GetDataResponse* response) override; + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::GetDataResponse>> AsyncGetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::GetDataResponse>>(AsyncGetDataRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::GetDataResponse>> PrepareAsyncGetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::service::GetDataResponse>>(PrepareAsyncGetDataRaw(context, request, cq)); + } class experimental_async final : public StubInterface::experimental_async_interface { public: @@ -140,6 +160,10 @@ class DataProxyService final { void CreateDownloadLink(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::CreateDownloadLinkResponse* response, std::function) override; void CreateDownloadLink(::grpc::ClientContext* context, const ::flyteidl::service::CreateDownloadLinkRequest* request, ::flyteidl::service::CreateDownloadLinkResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; void CreateDownloadLink(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::CreateDownloadLinkResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void GetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response, std::function) override; + void GetData(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::GetDataResponse* response, std::function) override; + void GetData(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void GetData(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::service::GetDataResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; private: friend class Stub; explicit experimental_async(Stub* stub): stub_(stub) { } @@ -157,9 +181,12 @@ class DataProxyService final { ::grpc::ClientAsyncResponseReader< ::flyteidl::service::CreateDownloadLocationResponse>* PrepareAsyncCreateDownloadLocationRaw(::grpc::ClientContext* context, const ::flyteidl::service::CreateDownloadLocationRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::service::CreateDownloadLinkResponse>* AsyncCreateDownloadLinkRaw(::grpc::ClientContext* context, const ::flyteidl::service::CreateDownloadLinkRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::service::CreateDownloadLinkResponse>* PrepareAsyncCreateDownloadLinkRaw(::grpc::ClientContext* context, const ::flyteidl::service::CreateDownloadLinkRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::service::GetDataResponse>* AsyncGetDataRaw(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::service::GetDataResponse>* PrepareAsyncGetDataRaw(::grpc::ClientContext* context, const ::flyteidl::service::GetDataRequest& request, ::grpc::CompletionQueue* cq) override; const ::grpc::internal::RpcMethod rpcmethod_CreateUploadLocation_; const ::grpc::internal::RpcMethod rpcmethod_CreateDownloadLocation_; const ::grpc::internal::RpcMethod rpcmethod_CreateDownloadLink_; + const ::grpc::internal::RpcMethod rpcmethod_GetData_; }; static std::unique_ptr NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions()); @@ -173,6 +200,7 @@ class DataProxyService final { virtual ::grpc::Status CreateDownloadLocation(::grpc::ServerContext* context, const ::flyteidl::service::CreateDownloadLocationRequest* request, ::flyteidl::service::CreateDownloadLocationResponse* response); // CreateDownloadLocation creates a signed url to download artifacts. virtual ::grpc::Status CreateDownloadLink(::grpc::ServerContext* context, const ::flyteidl::service::CreateDownloadLinkRequest* request, ::flyteidl::service::CreateDownloadLinkResponse* response); + virtual ::grpc::Status GetData(::grpc::ServerContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response); }; template class WithAsyncMethod_CreateUploadLocation : public BaseClass { @@ -234,7 +262,27 @@ class DataProxyService final { ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag); } }; - typedef WithAsyncMethod_CreateUploadLocation > > AsyncService; + template + class WithAsyncMethod_GetData : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithAsyncMethod_GetData() { + ::grpc::Service::MarkMethodAsync(3); + } + ~WithAsyncMethod_GetData() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetData(::grpc::ServerContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetData(::grpc::ServerContext* context, ::flyteidl::service::GetDataRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::service::GetDataResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag); + } + }; + typedef WithAsyncMethod_CreateUploadLocation > > > AsyncService; template class ExperimentalWithCallbackMethod_CreateUploadLocation : public BaseClass { private: @@ -328,7 +376,38 @@ class DataProxyService final { } virtual void CreateDownloadLink(::grpc::ServerContext* context, const ::flyteidl::service::CreateDownloadLinkRequest* request, ::flyteidl::service::CreateDownloadLinkResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; - typedef ExperimentalWithCallbackMethod_CreateUploadLocation > > ExperimentalCallbackService; + template + class ExperimentalWithCallbackMethod_GetData : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithCallbackMethod_GetData() { + ::grpc::Service::experimental().MarkMethodCallback(3, + new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::service::GetDataRequest, ::flyteidl::service::GetDataResponse>( + [this](::grpc::ServerContext* context, + const ::flyteidl::service::GetDataRequest* request, + ::flyteidl::service::GetDataResponse* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + return this->GetData(context, request, response, controller); + })); + } + void SetMessageAllocatorFor_GetData( + ::grpc::experimental::MessageAllocator< ::flyteidl::service::GetDataRequest, ::flyteidl::service::GetDataResponse>* allocator) { + static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::service::GetDataRequest, ::flyteidl::service::GetDataResponse>*>( + ::grpc::Service::experimental().GetHandler(3)) + ->SetMessageAllocator(allocator); + } + ~ExperimentalWithCallbackMethod_GetData() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetData(::grpc::ServerContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void GetData(::grpc::ServerContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + typedef ExperimentalWithCallbackMethod_CreateUploadLocation > > > ExperimentalCallbackService; template class WithGenericMethod_CreateUploadLocation : public BaseClass { private: @@ -381,6 +460,23 @@ class DataProxyService final { } }; template + class WithGenericMethod_GetData : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithGenericMethod_GetData() { + ::grpc::Service::MarkMethodGeneric(3); + } + ~WithGenericMethod_GetData() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetData(::grpc::ServerContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template class WithRawMethod_CreateUploadLocation : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} @@ -441,6 +537,26 @@ class DataProxyService final { } }; template + class WithRawMethod_GetData : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithRawMethod_GetData() { + ::grpc::Service::MarkMethodRaw(3); + } + ~WithRawMethod_GetData() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetData(::grpc::ServerContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetData(::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(3, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template class ExperimentalWithRawCallbackMethod_CreateUploadLocation : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} @@ -516,6 +632,31 @@ class DataProxyService final { virtual void CreateDownloadLink(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; template + class ExperimentalWithRawCallbackMethod_GetData : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithRawCallbackMethod_GetData() { + ::grpc::Service::experimental().MarkMethodRawCallback(3, + new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( + [this](::grpc::ServerContext* context, + const ::grpc::ByteBuffer* request, + ::grpc::ByteBuffer* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + this->GetData(context, request, response, controller); + })); + } + ~ExperimentalWithRawCallbackMethod_GetData() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetData(::grpc::ServerContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void GetData(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template class WithStreamedUnaryMethod_CreateUploadLocation : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} @@ -575,9 +716,29 @@ class DataProxyService final { // replace default version of method with streamed unary virtual ::grpc::Status StreamedCreateDownloadLink(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::service::CreateDownloadLinkRequest,::flyteidl::service::CreateDownloadLinkResponse>* server_unary_streamer) = 0; }; - typedef WithStreamedUnaryMethod_CreateUploadLocation > > StreamedUnaryService; + template + class WithStreamedUnaryMethod_GetData : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithStreamedUnaryMethod_GetData() { + ::grpc::Service::MarkMethodStreamed(3, + new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::service::GetDataRequest, ::flyteidl::service::GetDataResponse>(std::bind(&WithStreamedUnaryMethod_GetData::StreamedGetData, this, std::placeholders::_1, std::placeholders::_2))); + } + ~WithStreamedUnaryMethod_GetData() override { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status GetData(::grpc::ServerContext* context, const ::flyteidl::service::GetDataRequest* request, ::flyteidl::service::GetDataResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedGetData(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::service::GetDataRequest,::flyteidl::service::GetDataResponse>* server_unary_streamer) = 0; + }; + typedef WithStreamedUnaryMethod_CreateUploadLocation > > > StreamedUnaryService; typedef Service SplitStreamedService; - typedef WithStreamedUnaryMethod_CreateUploadLocation > > StreamedService; + typedef WithStreamedUnaryMethod_CreateUploadLocation > > > StreamedService; }; } // namespace service diff --git a/gen/pb-cpp/flyteidl/service/dataproxy.pb.cc b/gen/pb-cpp/flyteidl/service/dataproxy.pb.cc index 246185385..37c893f57 100644 --- a/gen/pb-cpp/flyteidl/service/dataproxy.pb.cc +++ b/gen/pb-cpp/flyteidl/service/dataproxy.pb.cc @@ -17,6 +17,8 @@ #include extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_NodeExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fliterals_2eproto ::google::protobuf::internal::SCCInfo<9> scc_info_Literal_flyteidl_2fcore_2fliterals_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fservice_2fdataproxy_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_PreSignedURLs_flyteidl_2fservice_2fdataproxy_2eproto; extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fduration_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Duration_google_2fprotobuf_2fduration_2eproto; extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2ftimestamp_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto; namespace flyteidl { @@ -46,6 +48,20 @@ class CreateDownloadLinkResponseDefaultTypeInternal { public: ::google::protobuf::internal::ExplicitlyConstructed _instance; } _CreateDownloadLinkResponse_default_instance_; +class PreSignedURLsDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _PreSignedURLs_default_instance_; +class GetDataRequestDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _GetDataRequest_default_instance_; +class GetDataResponseDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; + const ::flyteidl::core::LiteralMap* literal_map_; + const ::flyteidl::service::PreSignedURLs* pre_signed_urls_; +} _GetDataResponse_default_instance_; } // namespace service } // namespace flyteidl static void InitDefaultsCreateUploadLocationResponse_flyteidl_2fservice_2fdataproxy_2eproto() { @@ -135,10 +151,56 @@ static void InitDefaultsCreateDownloadLinkResponse_flyteidl_2fservice_2fdataprox ::flyteidl::service::CreateDownloadLinkResponse::InitAsDefaultInstance(); } -::google::protobuf::internal::SCCInfo<1> scc_info_CreateDownloadLinkResponse_flyteidl_2fservice_2fdataproxy_2eproto = - {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsCreateDownloadLinkResponse_flyteidl_2fservice_2fdataproxy_2eproto}, { +::google::protobuf::internal::SCCInfo<2> scc_info_CreateDownloadLinkResponse_flyteidl_2fservice_2fdataproxy_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsCreateDownloadLinkResponse_flyteidl_2fservice_2fdataproxy_2eproto}, { + &scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto.base, + &scc_info_PreSignedURLs_flyteidl_2fservice_2fdataproxy_2eproto.base,}}; + +static void InitDefaultsPreSignedURLs_flyteidl_2fservice_2fdataproxy_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::service::_PreSignedURLs_default_instance_; + new (ptr) ::flyteidl::service::PreSignedURLs(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::service::PreSignedURLs::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<1> scc_info_PreSignedURLs_flyteidl_2fservice_2fdataproxy_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsPreSignedURLs_flyteidl_2fservice_2fdataproxy_2eproto}, { &scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto.base,}}; +static void InitDefaultsGetDataRequest_flyteidl_2fservice_2fdataproxy_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::service::_GetDataRequest_default_instance_; + new (ptr) ::flyteidl::service::GetDataRequest(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::service::GetDataRequest::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_GetDataRequest_flyteidl_2fservice_2fdataproxy_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGetDataRequest_flyteidl_2fservice_2fdataproxy_2eproto}, {}}; + +static void InitDefaultsGetDataResponse_flyteidl_2fservice_2fdataproxy_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::service::_GetDataResponse_default_instance_; + new (ptr) ::flyteidl::service::GetDataResponse(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::service::GetDataResponse::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<2> scc_info_GetDataResponse_flyteidl_2fservice_2fdataproxy_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsGetDataResponse_flyteidl_2fservice_2fdataproxy_2eproto}, { + &scc_info_Literal_flyteidl_2fcore_2fliterals_2eproto.base, + &scc_info_PreSignedURLs_flyteidl_2fservice_2fdataproxy_2eproto.base,}}; + void InitDefaults_flyteidl_2fservice_2fdataproxy_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_CreateUploadLocationResponse_flyteidl_2fservice_2fdataproxy_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_CreateUploadLocationRequest_flyteidl_2fservice_2fdataproxy_2eproto.base); @@ -146,9 +208,12 @@ void InitDefaults_flyteidl_2fservice_2fdataproxy_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_CreateDownloadLocationResponse_flyteidl_2fservice_2fdataproxy_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_CreateDownloadLinkRequest_flyteidl_2fservice_2fdataproxy_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_CreateDownloadLinkResponse_flyteidl_2fservice_2fdataproxy_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_PreSignedURLs_flyteidl_2fservice_2fdataproxy_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_GetDataRequest_flyteidl_2fservice_2fdataproxy_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_GetDataResponse_flyteidl_2fservice_2fdataproxy_2eproto.base); } -::google::protobuf::Metadata file_level_metadata_flyteidl_2fservice_2fdataproxy_2eproto[6]; +::google::protobuf::Metadata file_level_metadata_flyteidl_2fservice_2fdataproxy_2eproto[9]; const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_flyteidl_2fservice_2fdataproxy_2eproto[1]; constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_flyteidl_2fservice_2fdataproxy_2eproto = nullptr; @@ -201,6 +266,28 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fservice_2fdataproxy_2epr ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::flyteidl::service::CreateDownloadLinkResponse, signed_url_), PROTOBUF_FIELD_OFFSET(::flyteidl::service::CreateDownloadLinkResponse, expires_at_), + PROTOBUF_FIELD_OFFSET(::flyteidl::service::CreateDownloadLinkResponse, pre_signed_urls_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::PreSignedURLs, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::PreSignedURLs, signed_url_), + PROTOBUF_FIELD_OFFSET(::flyteidl::service::PreSignedURLs, expires_at_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::GetDataRequest, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::GetDataRequest, flyte_url_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::GetDataResponse, _internal_metadata_), + ~0u, // no _extensions_ + PROTOBUF_FIELD_OFFSET(::flyteidl::service::GetDataResponse, _oneof_case_[0]), + ~0u, // no _weak_field_map_ + offsetof(::flyteidl::service::GetDataResponseDefaultTypeInternal, literal_map_), + offsetof(::flyteidl::service::GetDataResponseDefaultTypeInternal, pre_signed_urls_), + PROTOBUF_FIELD_OFFSET(::flyteidl::service::GetDataResponse, data_), }; static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, sizeof(::flyteidl::service::CreateUploadLocationResponse)}, @@ -209,6 +296,9 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 25, -1, sizeof(::flyteidl::service::CreateDownloadLocationResponse)}, { 32, -1, sizeof(::flyteidl::service::CreateDownloadLinkRequest)}, { 41, -1, sizeof(::flyteidl::service::CreateDownloadLinkResponse)}, + { 49, -1, sizeof(::flyteidl::service::PreSignedURLs)}, + { 56, -1, sizeof(::flyteidl::service::GetDataRequest)}, + { 62, -1, sizeof(::flyteidl::service::GetDataResponse)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -218,12 +308,15 @@ static ::google::protobuf::Message const * const file_default_instances[] = { reinterpret_cast(&::flyteidl::service::_CreateDownloadLocationResponse_default_instance_), reinterpret_cast(&::flyteidl::service::_CreateDownloadLinkRequest_default_instance_), reinterpret_cast(&::flyteidl::service::_CreateDownloadLinkResponse_default_instance_), + reinterpret_cast(&::flyteidl::service::_PreSignedURLs_default_instance_), + reinterpret_cast(&::flyteidl::service::_GetDataRequest_default_instance_), + reinterpret_cast(&::flyteidl::service::_GetDataResponse_default_instance_), }; ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_flyteidl_2fservice_2fdataproxy_2eproto = { {}, AddDescriptors_flyteidl_2fservice_2fdataproxy_2eproto, "flyteidl/service/dataproxy.proto", schemas, file_default_instances, TableStruct_flyteidl_2fservice_2fdataproxy_2eproto::offsets, - file_level_metadata_flyteidl_2fservice_2fdataproxy_2eproto, 6, file_level_enum_descriptors_flyteidl_2fservice_2fdataproxy_2eproto, file_level_service_descriptors_flyteidl_2fservice_2fdataproxy_2eproto, + file_level_metadata_flyteidl_2fservice_2fdataproxy_2eproto, 9, file_level_enum_descriptors_flyteidl_2fservice_2fdataproxy_2eproto, file_level_service_descriptors_flyteidl_2fservice_2fdataproxy_2eproto, }; const char descriptor_table_protodef_flyteidl_2fservice_2fdataproxy_2eproto[] = @@ -231,59 +324,71 @@ const char descriptor_table_protodef_flyteidl_2fservice_2fdataproxy_2eproto[] = "eidl.service\032\034google/api/annotations.pro" "to\032\036google/protobuf/duration.proto\032\037goog" "le/protobuf/timestamp.proto\032\036flyteidl/co" - "re/identifier.proto\"v\n\034CreateUploadLocat" - "ionResponse\022\022\n\nsigned_url\030\001 \001(\t\022\022\n\nnativ" - "e_url\030\002 \001(\t\022.\n\nexpires_at\030\003 \001(\0132\032.google" - ".protobuf.Timestamp\"\224\001\n\033CreateUploadLoca" - "tionRequest\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002" - " \001(\t\022\020\n\010filename\030\003 \001(\t\022-\n\nexpires_in\030\004 \001" - "(\0132\031.google.protobuf.Duration\022\023\n\013content" - "_md5\030\005 \001(\014\"f\n\035CreateDownloadLocationRequ" - "est\022\022\n\nnative_url\030\001 \001(\t\022-\n\nexpires_in\030\002 " - "\001(\0132\031.google.protobuf.Duration:\002\030\001\"h\n\036Cr" - "eateDownloadLocationResponse\022\022\n\nsigned_u" - "rl\030\001 \001(\t\022.\n\nexpires_at\030\002 \001(\0132\032.google.pr" - "otobuf.Timestamp:\002\030\001\"\320\001\n\031CreateDownloadL" - "inkRequest\0225\n\rartifact_type\030\001 \001(\0162\036.flyt" - "eidl.service.ArtifactType\022-\n\nexpires_in\030" - "\002 \001(\0132\031.google.protobuf.Duration\022C\n\021node" - "_execution_id\030\003 \001(\0132&.flyteidl.core.Node" - "ExecutionIdentifierH\000B\010\n\006source\"`\n\032Creat" - "eDownloadLinkResponse\022\022\n\nsigned_url\030\001 \003(" - "\t\022.\n\nexpires_at\030\002 \001(\0132\032.google.protobuf." - "Timestamp*C\n\014ArtifactType\022\033\n\027ARTIFACT_TY" - "PE_UNDEFINED\020\000\022\026\n\022ARTIFACT_TYPE_DECK\020\0012\374" - "\003\n\020DataProxyService\022\240\001\n\024CreateUploadLoca" - "tion\022-.flyteidl.service.CreateUploadLoca" - "tionRequest\032..flyteidl.service.CreateUpl" - "oadLocationResponse\")\202\323\344\223\002#\"\036/api/v1/dat" - "aproxy/artifact_urn:\001*\022\246\001\n\026CreateDownloa" - "dLocation\022/.flyteidl.service.CreateDownl" - "oadLocationRequest\0320.flyteidl.service.Cr" - "eateDownloadLocationResponse\")\210\002\001\202\323\344\223\002 \022" - "\036/api/v1/dataproxy/artifact_urn\022\233\001\n\022Crea" - "teDownloadLink\022+.flyteidl.service.Create" - "DownloadLinkRequest\032,.flyteidl.service.C" - "reateDownloadLinkResponse\"*\202\323\344\223\002$\"\037/api/" - "v1/dataproxy/artifact_link:\001*B9Z7github." - "com/flyteorg/flyteidl/gen/pb-go/flyteidl" - "/serviceb\006proto3" + "re/identifier.proto\032\034flyteidl/core/liter" + "als.proto\"v\n\034CreateUploadLocationRespons" + "e\022\022\n\nsigned_url\030\001 \001(\t\022\022\n\nnative_url\030\002 \001(" + "\t\022.\n\nexpires_at\030\003 \001(\0132\032.google.protobuf." + "Timestamp\"\224\001\n\033CreateUploadLocationReques" + "t\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\020\n\010fi" + "lename\030\003 \001(\t\022-\n\nexpires_in\030\004 \001(\0132\031.googl" + "e.protobuf.Duration\022\023\n\013content_md5\030\005 \001(\014" + "\"f\n\035CreateDownloadLocationRequest\022\022\n\nnat" + "ive_url\030\001 \001(\t\022-\n\nexpires_in\030\002 \001(\0132\031.goog" + "le.protobuf.Duration:\002\030\001\"h\n\036CreateDownlo" + "adLocationResponse\022\022\n\nsigned_url\030\001 \001(\t\022." + "\n\nexpires_at\030\002 \001(\0132\032.google.protobuf.Tim" + "estamp:\002\030\001\"\320\001\n\031CreateDownloadLinkRequest" + "\0225\n\rartifact_type\030\001 \001(\0162\036.flyteidl.servi" + "ce.ArtifactType\022-\n\nexpires_in\030\002 \001(\0132\031.go" + "ogle.protobuf.Duration\022C\n\021node_execution" + "_id\030\003 \001(\0132&.flyteidl.core.NodeExecutionI" + "dentifierH\000B\010\n\006source\"\242\001\n\032CreateDownload" + "LinkResponse\022\026\n\nsigned_url\030\001 \003(\tB\002\030\001\0222\n\n" + "expires_at\030\002 \001(\0132\032.google.protobuf.Times" + "tampB\002\030\001\0228\n\017pre_signed_urls\030\003 \001(\0132\037.flyt" + "eidl.service.PreSignedURLs\"S\n\rPreSignedU" + "RLs\022\022\n\nsigned_url\030\001 \003(\t\022.\n\nexpires_at\030\002 " + "\001(\0132\032.google.protobuf.Timestamp\"#\n\016GetDa" + "taRequest\022\021\n\tflyte_url\030\001 \001(\t\"\207\001\n\017GetData" + "Response\0220\n\013literal_map\030\001 \001(\0132\031.flyteidl" + ".core.LiteralMapH\000\022:\n\017pre_signed_urls\030\002 " + "\001(\0132\037.flyteidl.service.PreSignedURLsH\000B\006" + "\n\004data*C\n\014ArtifactType\022\033\n\027ARTIFACT_TYPE_" + "UNDEFINED\020\000\022\026\n\022ARTIFACT_TYPE_DECK\020\0012\342\004\n\020" + "DataProxyService\022\240\001\n\024CreateUploadLocatio" + "n\022-.flyteidl.service.CreateUploadLocatio" + "nRequest\032..flyteidl.service.CreateUpload" + "LocationResponse\")\202\323\344\223\002#\"\036/api/v1/datapr" + "oxy/artifact_urn:\001*\022\246\001\n\026CreateDownloadLo" + "cation\022/.flyteidl.service.CreateDownload" + "LocationRequest\0320.flyteidl.service.Creat" + "eDownloadLocationResponse\")\210\002\001\202\323\344\223\002 \022\036/a" + "pi/v1/dataproxy/artifact_urn\022\233\001\n\022CreateD" + "ownloadLink\022+.flyteidl.service.CreateDow" + "nloadLinkRequest\032,.flyteidl.service.Crea" + "teDownloadLinkResponse\"*\202\323\344\223\002$\"\037/api/v1/" + "dataproxy/artifact_link:\001*\022d\n\007GetData\022 ." + "flyteidl.service.GetDataRequest\032!.flytei" + "dl.service.GetDataResponse\"\024\202\323\344\223\002\016\022\014/api" + "/v1/dataB9Z7github.com/flyteorg/flyteidl" + "/gen/pb-go/flyteidl/serviceb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fservice_2fdataproxy_2eproto = { false, InitDefaults_flyteidl_2fservice_2fdataproxy_2eproto, descriptor_table_protodef_flyteidl_2fservice_2fdataproxy_2eproto, - "flyteidl/service/dataproxy.proto", &assign_descriptors_table_flyteidl_2fservice_2fdataproxy_2eproto, 1616, + "flyteidl/service/dataproxy.proto", &assign_descriptors_table_flyteidl_2fservice_2fdataproxy_2eproto, 2075, }; void AddDescriptors_flyteidl_2fservice_2fdataproxy_2eproto() { - static constexpr ::google::protobuf::internal::InitFunc deps[4] = + static constexpr ::google::protobuf::internal::InitFunc deps[5] = { ::AddDescriptors_google_2fapi_2fannotations_2eproto, ::AddDescriptors_google_2fprotobuf_2fduration_2eproto, ::AddDescriptors_google_2fprotobuf_2ftimestamp_2eproto, ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, + ::AddDescriptors_flyteidl_2fcore_2fliterals_2eproto, }; - ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fservice_2fdataproxy_2eproto, deps, 4); + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fservice_2fdataproxy_2eproto, deps, 5); } // Force running AddDescriptors() at dynamic initialization time. @@ -2529,16 +2634,23 @@ ::google::protobuf::Metadata CreateDownloadLinkRequest::GetMetadata() const { void CreateDownloadLinkResponse::InitAsDefaultInstance() { ::flyteidl::service::_CreateDownloadLinkResponse_default_instance_._instance.get_mutable()->expires_at_ = const_cast< ::google::protobuf::Timestamp*>( ::google::protobuf::Timestamp::internal_default_instance()); + ::flyteidl::service::_CreateDownloadLinkResponse_default_instance_._instance.get_mutable()->pre_signed_urls_ = const_cast< ::flyteidl::service::PreSignedURLs*>( + ::flyteidl::service::PreSignedURLs::internal_default_instance()); } class CreateDownloadLinkResponse::HasBitSetters { public: static const ::google::protobuf::Timestamp& expires_at(const CreateDownloadLinkResponse* msg); + static const ::flyteidl::service::PreSignedURLs& pre_signed_urls(const CreateDownloadLinkResponse* msg); }; const ::google::protobuf::Timestamp& CreateDownloadLinkResponse::HasBitSetters::expires_at(const CreateDownloadLinkResponse* msg) { return *msg->expires_at_; } +const ::flyteidl::service::PreSignedURLs& +CreateDownloadLinkResponse::HasBitSetters::pre_signed_urls(const CreateDownloadLinkResponse* msg) { + return *msg->pre_signed_urls_; +} void CreateDownloadLinkResponse::clear_expires_at() { if (GetArenaNoVirtual() == nullptr && expires_at_ != nullptr) { delete expires_at_; @@ -2548,6 +2660,7 @@ void CreateDownloadLinkResponse::clear_expires_at() { #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int CreateDownloadLinkResponse::kSignedUrlFieldNumber; const int CreateDownloadLinkResponse::kExpiresAtFieldNumber; +const int CreateDownloadLinkResponse::kPreSignedUrlsFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 CreateDownloadLinkResponse::CreateDownloadLinkResponse() @@ -2565,13 +2678,20 @@ CreateDownloadLinkResponse::CreateDownloadLinkResponse(const CreateDownloadLinkR } else { expires_at_ = nullptr; } + if (from.has_pre_signed_urls()) { + pre_signed_urls_ = new ::flyteidl::service::PreSignedURLs(*from.pre_signed_urls_); + } else { + pre_signed_urls_ = nullptr; + } // @@protoc_insertion_point(copy_constructor:flyteidl.service.CreateDownloadLinkResponse) } void CreateDownloadLinkResponse::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_CreateDownloadLinkResponse_flyteidl_2fservice_2fdataproxy_2eproto.base); - expires_at_ = nullptr; + ::memset(&expires_at_, 0, static_cast( + reinterpret_cast(&pre_signed_urls_) - + reinterpret_cast(&expires_at_)) + sizeof(pre_signed_urls_)); } CreateDownloadLinkResponse::~CreateDownloadLinkResponse() { @@ -2581,6 +2701,7 @@ CreateDownloadLinkResponse::~CreateDownloadLinkResponse() { void CreateDownloadLinkResponse::SharedDtor() { if (this != internal_default_instance()) delete expires_at_; + if (this != internal_default_instance()) delete pre_signed_urls_; } void CreateDownloadLinkResponse::SetCachedSize(int size) const { @@ -2603,6 +2724,10 @@ void CreateDownloadLinkResponse::Clear() { delete expires_at_; } expires_at_ = nullptr; + if (GetArenaNoVirtual() == nullptr && pre_signed_urls_ != nullptr) { + delete pre_signed_urls_; + } + pre_signed_urls_ = nullptr; _internal_metadata_.Clear(); } @@ -2619,7 +2744,7 @@ const char* CreateDownloadLinkResponse::_InternalParse(const char* begin, const ptr = ::google::protobuf::io::Parse32(ptr, &tag); GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); switch (tag >> 3) { - // repeated string signed_url = 1; + // repeated string signed_url = 1 [deprecated = true]; case 1: { if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; do { @@ -2638,7 +2763,7 @@ const char* CreateDownloadLinkResponse::_InternalParse(const char* begin, const } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1)); break; } - // .google.protobuf.Timestamp expires_at = 2; + // .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; case 2: { if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; ptr = ::google::protobuf::io::ReadSize(ptr, &size); @@ -2651,6 +2776,19 @@ const char* CreateDownloadLinkResponse::_InternalParse(const char* begin, const {parser_till_end, object}, ptr - size, ptr)); break; } + // .flyteidl.service.PreSignedURLs pre_signed_urls = 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::service::PreSignedURLs::_InternalParse; + object = msg->mutable_pre_signed_urls(); + 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) { @@ -2685,7 +2823,7 @@ bool CreateDownloadLinkResponse::MergePartialFromCodedStream( tag = p.first; if (!p.second) goto handle_unusual; switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { - // repeated string signed_url = 1; + // repeated string signed_url = 1 [deprecated = true]; case 1: { if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { DO_(::google::protobuf::internal::WireFormatLite::ReadString( @@ -2701,7 +2839,7 @@ bool CreateDownloadLinkResponse::MergePartialFromCodedStream( break; } - // .google.protobuf.Timestamp expires_at = 2; + // .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; case 2: { if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( @@ -2712,6 +2850,17 @@ bool CreateDownloadLinkResponse::MergePartialFromCodedStream( break; } + // .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_pre_signed_urls())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -2739,7 +2888,7 @@ void CreateDownloadLinkResponse::SerializeWithCachedSizes( ::google::protobuf::uint32 cached_has_bits = 0; (void) cached_has_bits; - // repeated string signed_url = 1; + // repeated string signed_url = 1 [deprecated = true]; for (int i = 0, n = this->signed_url_size(); i < n; i++) { ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( this->signed_url(i).data(), static_cast(this->signed_url(i).length()), @@ -2749,12 +2898,18 @@ void CreateDownloadLinkResponse::SerializeWithCachedSizes( 1, this->signed_url(i), output); } - // .google.protobuf.Timestamp expires_at = 2; + // .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; if (this->has_expires_at()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( 2, HasBitSetters::expires_at(this), output); } + // .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + if (this->has_pre_signed_urls()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 3, HasBitSetters::pre_signed_urls(this), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -2768,7 +2923,7 @@ ::google::protobuf::uint8* CreateDownloadLinkResponse::InternalSerializeWithCach ::google::protobuf::uint32 cached_has_bits = 0; (void) cached_has_bits; - // repeated string signed_url = 1; + // repeated string signed_url = 1 [deprecated = true]; for (int i = 0, n = this->signed_url_size(); i < n; i++) { ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( this->signed_url(i).data(), static_cast(this->signed_url(i).length()), @@ -2778,13 +2933,20 @@ ::google::protobuf::uint8* CreateDownloadLinkResponse::InternalSerializeWithCach WriteStringToArray(1, this->signed_url(i), target); } - // .google.protobuf.Timestamp expires_at = 2; + // .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; if (this->has_expires_at()) { target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessageToArray( 2, HasBitSetters::expires_at(this), target); } + // .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + if (this->has_pre_signed_urls()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 3, HasBitSetters::pre_signed_urls(this), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -2806,7 +2968,7 @@ size_t CreateDownloadLinkResponse::ByteSizeLong() const { // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; - // repeated string signed_url = 1; + // repeated string signed_url = 1 [deprecated = true]; total_size += 1 * ::google::protobuf::internal::FromIntSize(this->signed_url_size()); for (int i = 0, n = this->signed_url_size(); i < n; i++) { @@ -2814,13 +2976,20 @@ size_t CreateDownloadLinkResponse::ByteSizeLong() const { this->signed_url(i)); } - // .google.protobuf.Timestamp expires_at = 2; + // .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; if (this->has_expires_at()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize( *expires_at_); } + // .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + if (this->has_pre_signed_urls()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *pre_signed_urls_); + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -2852,6 +3021,9 @@ void CreateDownloadLinkResponse::MergeFrom(const CreateDownloadLinkResponse& fro if (from.has_expires_at()) { mutable_expires_at()->::google::protobuf::Timestamp::MergeFrom(from.expires_at()); } + if (from.has_pre_signed_urls()) { + mutable_pre_signed_urls()->::flyteidl::service::PreSignedURLs::MergeFrom(from.pre_signed_urls()); + } } void CreateDownloadLinkResponse::CopyFrom(const ::google::protobuf::Message& from) { @@ -2881,6 +3053,7 @@ void CreateDownloadLinkResponse::InternalSwap(CreateDownloadLinkResponse* other) _internal_metadata_.Swap(&other->_internal_metadata_); signed_url_.InternalSwap(CastToBase(&other->signed_url_)); swap(expires_at_, other->expires_at_); + swap(pre_signed_urls_, other->pre_signed_urls_); } ::google::protobuf::Metadata CreateDownloadLinkResponse::GetMetadata() const { @@ -2889,28 +3062,1115 @@ ::google::protobuf::Metadata CreateDownloadLinkResponse::GetMetadata() const { } -// @@protoc_insertion_point(namespace_scope) -} // namespace service -} // namespace flyteidl -namespace google { -namespace protobuf { -template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateUploadLocationResponse* Arena::CreateMaybeMessage< ::flyteidl::service::CreateUploadLocationResponse >(Arena* arena) { - return Arena::CreateInternal< ::flyteidl::service::CreateUploadLocationResponse >(arena); +// =================================================================== + +void PreSignedURLs::InitAsDefaultInstance() { + ::flyteidl::service::_PreSignedURLs_default_instance_._instance.get_mutable()->expires_at_ = const_cast< ::google::protobuf::Timestamp*>( + ::google::protobuf::Timestamp::internal_default_instance()); } -template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateUploadLocationRequest* Arena::CreateMaybeMessage< ::flyteidl::service::CreateUploadLocationRequest >(Arena* arena) { - return Arena::CreateInternal< ::flyteidl::service::CreateUploadLocationRequest >(arena); +class PreSignedURLs::HasBitSetters { + public: + static const ::google::protobuf::Timestamp& expires_at(const PreSignedURLs* msg); +}; + +const ::google::protobuf::Timestamp& +PreSignedURLs::HasBitSetters::expires_at(const PreSignedURLs* msg) { + return *msg->expires_at_; } -template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateDownloadLocationRequest* Arena::CreateMaybeMessage< ::flyteidl::service::CreateDownloadLocationRequest >(Arena* arena) { - return Arena::CreateInternal< ::flyteidl::service::CreateDownloadLocationRequest >(arena); +void PreSignedURLs::clear_expires_at() { + if (GetArenaNoVirtual() == nullptr && expires_at_ != nullptr) { + delete expires_at_; + } + expires_at_ = nullptr; } -template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateDownloadLocationResponse* Arena::CreateMaybeMessage< ::flyteidl::service::CreateDownloadLocationResponse >(Arena* arena) { - return Arena::CreateInternal< ::flyteidl::service::CreateDownloadLocationResponse >(arena); +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int PreSignedURLs::kSignedUrlFieldNumber; +const int PreSignedURLs::kExpiresAtFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +PreSignedURLs::PreSignedURLs() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.service.PreSignedURLs) } -template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateDownloadLinkRequest* Arena::CreateMaybeMessage< ::flyteidl::service::CreateDownloadLinkRequest >(Arena* arena) { - return Arena::CreateInternal< ::flyteidl::service::CreateDownloadLinkRequest >(arena); +PreSignedURLs::PreSignedURLs(const PreSignedURLs& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr), + signed_url_(from.signed_url_) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + if (from.has_expires_at()) { + expires_at_ = new ::google::protobuf::Timestamp(*from.expires_at_); + } else { + expires_at_ = nullptr; + } + // @@protoc_insertion_point(copy_constructor:flyteidl.service.PreSignedURLs) } -template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateDownloadLinkResponse* Arena::CreateMaybeMessage< ::flyteidl::service::CreateDownloadLinkResponse >(Arena* arena) { - return Arena::CreateInternal< ::flyteidl::service::CreateDownloadLinkResponse >(arena); + +void PreSignedURLs::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_PreSignedURLs_flyteidl_2fservice_2fdataproxy_2eproto.base); + expires_at_ = nullptr; +} + +PreSignedURLs::~PreSignedURLs() { + // @@protoc_insertion_point(destructor:flyteidl.service.PreSignedURLs) + SharedDtor(); +} + +void PreSignedURLs::SharedDtor() { + if (this != internal_default_instance()) delete expires_at_; +} + +void PreSignedURLs::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const PreSignedURLs& PreSignedURLs::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_PreSignedURLs_flyteidl_2fservice_2fdataproxy_2eproto.base); + return *internal_default_instance(); +} + + +void PreSignedURLs::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.service.PreSignedURLs) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + signed_url_.Clear(); + if (GetArenaNoVirtual() == nullptr && expires_at_ != nullptr) { + delete expires_at_; + } + expires_at_ = nullptr; + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* PreSignedURLs::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // repeated string signed_url = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + do { + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.service.PreSignedURLs.signed_url"); + object = msg->add_signed_url(); + 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; + if (ptr >= end) break; + } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1)); + break; + } + // .google.protobuf.Timestamp expires_at = 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); + parser_till_end = ::google::protobuf::Timestamp::_InternalParse; + object = msg->mutable_expires_at(); + 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 PreSignedURLs::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.service.PreSignedURLs) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // repeated string signed_url = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->add_signed_url())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->signed_url(this->signed_url_size() - 1).data(), + static_cast(this->signed_url(this->signed_url_size() - 1).length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.service.PreSignedURLs.signed_url")); + } else { + goto handle_unusual; + } + break; + } + + // .google.protobuf.Timestamp expires_at = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_expires_at())); + } 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.service.PreSignedURLs) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.service.PreSignedURLs) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void PreSignedURLs::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.service.PreSignedURLs) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // repeated string signed_url = 1; + for (int i = 0, n = this->signed_url_size(); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->signed_url(i).data(), static_cast(this->signed_url(i).length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.PreSignedURLs.signed_url"); + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->signed_url(i), output); + } + + // .google.protobuf.Timestamp expires_at = 2; + if (this->has_expires_at()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 2, HasBitSetters::expires_at(this), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.service.PreSignedURLs) +} + +::google::protobuf::uint8* PreSignedURLs::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.service.PreSignedURLs) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // repeated string signed_url = 1; + for (int i = 0, n = this->signed_url_size(); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->signed_url(i).data(), static_cast(this->signed_url(i).length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.PreSignedURLs.signed_url"); + target = ::google::protobuf::internal::WireFormatLite:: + WriteStringToArray(1, this->signed_url(i), target); + } + + // .google.protobuf.Timestamp expires_at = 2; + if (this->has_expires_at()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 2, HasBitSetters::expires_at(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.service.PreSignedURLs) + return target; +} + +size_t PreSignedURLs::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.service.PreSignedURLs) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // repeated string signed_url = 1; + total_size += 1 * + ::google::protobuf::internal::FromIntSize(this->signed_url_size()); + for (int i = 0, n = this->signed_url_size(); i < n; i++) { + total_size += ::google::protobuf::internal::WireFormatLite::StringSize( + this->signed_url(i)); + } + + // .google.protobuf.Timestamp expires_at = 2; + if (this->has_expires_at()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *expires_at_); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void PreSignedURLs::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.service.PreSignedURLs) + GOOGLE_DCHECK_NE(&from, this); + const PreSignedURLs* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.service.PreSignedURLs) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.service.PreSignedURLs) + MergeFrom(*source); + } +} + +void PreSignedURLs::MergeFrom(const PreSignedURLs& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.service.PreSignedURLs) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + signed_url_.MergeFrom(from.signed_url_); + if (from.has_expires_at()) { + mutable_expires_at()->::google::protobuf::Timestamp::MergeFrom(from.expires_at()); + } +} + +void PreSignedURLs::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.service.PreSignedURLs) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void PreSignedURLs::CopyFrom(const PreSignedURLs& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.service.PreSignedURLs) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool PreSignedURLs::IsInitialized() const { + return true; +} + +void PreSignedURLs::Swap(PreSignedURLs* other) { + if (other == this) return; + InternalSwap(other); +} +void PreSignedURLs::InternalSwap(PreSignedURLs* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + signed_url_.InternalSwap(CastToBase(&other->signed_url_)); + swap(expires_at_, other->expires_at_); +} + +::google::protobuf::Metadata PreSignedURLs::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fservice_2fdataproxy_2eproto); + return ::file_level_metadata_flyteidl_2fservice_2fdataproxy_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void GetDataRequest::InitAsDefaultInstance() { +} +class GetDataRequest::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int GetDataRequest::kFlyteUrlFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +GetDataRequest::GetDataRequest() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.service.GetDataRequest) +} +GetDataRequest::GetDataRequest(const GetDataRequest& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + flyte_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.flyte_url().size() > 0) { + flyte_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.flyte_url_); + } + // @@protoc_insertion_point(copy_constructor:flyteidl.service.GetDataRequest) +} + +void GetDataRequest::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_GetDataRequest_flyteidl_2fservice_2fdataproxy_2eproto.base); + flyte_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +GetDataRequest::~GetDataRequest() { + // @@protoc_insertion_point(destructor:flyteidl.service.GetDataRequest) + SharedDtor(); +} + +void GetDataRequest::SharedDtor() { + flyte_url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +void GetDataRequest::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const GetDataRequest& GetDataRequest::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_GetDataRequest_flyteidl_2fservice_2fdataproxy_2eproto.base); + return *internal_default_instance(); +} + + +void GetDataRequest::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.service.GetDataRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + flyte_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* GetDataRequest::_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) { + // string flyte_url = 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); + ctx->extra_parse_data().SetFieldName("flyteidl.service.GetDataRequest.flyte_url"); + object = msg->mutable_flyte_url(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool GetDataRequest::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.service.GetDataRequest) + 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)) { + // string flyte_url = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_flyte_url())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->flyte_url().data(), static_cast(this->flyte_url().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.service.GetDataRequest.flyte_url")); + } 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.service.GetDataRequest) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.service.GetDataRequest) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void GetDataRequest::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.service.GetDataRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string flyte_url = 1; + if (this->flyte_url().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->flyte_url().data(), static_cast(this->flyte_url().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.GetDataRequest.flyte_url"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 1, this->flyte_url(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.service.GetDataRequest) +} + +::google::protobuf::uint8* GetDataRequest::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.service.GetDataRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string flyte_url = 1; + if (this->flyte_url().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->flyte_url().data(), static_cast(this->flyte_url().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.service.GetDataRequest.flyte_url"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 1, this->flyte_url(), 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.service.GetDataRequest) + return target; +} + +size_t GetDataRequest::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.service.GetDataRequest) + 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 flyte_url = 1; + if (this->flyte_url().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->flyte_url()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void GetDataRequest::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.service.GetDataRequest) + GOOGLE_DCHECK_NE(&from, this); + const GetDataRequest* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.service.GetDataRequest) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.service.GetDataRequest) + MergeFrom(*source); + } +} + +void GetDataRequest::MergeFrom(const GetDataRequest& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.service.GetDataRequest) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.flyte_url().size() > 0) { + + flyte_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.flyte_url_); + } +} + +void GetDataRequest::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.service.GetDataRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void GetDataRequest::CopyFrom(const GetDataRequest& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.service.GetDataRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool GetDataRequest::IsInitialized() const { + return true; +} + +void GetDataRequest::Swap(GetDataRequest* other) { + if (other == this) return; + InternalSwap(other); +} +void GetDataRequest::InternalSwap(GetDataRequest* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + flyte_url_.Swap(&other->flyte_url_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); +} + +::google::protobuf::Metadata GetDataRequest::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fservice_2fdataproxy_2eproto); + return ::file_level_metadata_flyteidl_2fservice_2fdataproxy_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void GetDataResponse::InitAsDefaultInstance() { + ::flyteidl::service::_GetDataResponse_default_instance_.literal_map_ = const_cast< ::flyteidl::core::LiteralMap*>( + ::flyteidl::core::LiteralMap::internal_default_instance()); + ::flyteidl::service::_GetDataResponse_default_instance_.pre_signed_urls_ = const_cast< ::flyteidl::service::PreSignedURLs*>( + ::flyteidl::service::PreSignedURLs::internal_default_instance()); +} +class GetDataResponse::HasBitSetters { + public: + static const ::flyteidl::core::LiteralMap& literal_map(const GetDataResponse* msg); + static const ::flyteidl::service::PreSignedURLs& pre_signed_urls(const GetDataResponse* msg); +}; + +const ::flyteidl::core::LiteralMap& +GetDataResponse::HasBitSetters::literal_map(const GetDataResponse* msg) { + return *msg->data_.literal_map_; +} +const ::flyteidl::service::PreSignedURLs& +GetDataResponse::HasBitSetters::pre_signed_urls(const GetDataResponse* msg) { + return *msg->data_.pre_signed_urls_; +} +void GetDataResponse::set_allocated_literal_map(::flyteidl::core::LiteralMap* literal_map) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + clear_data(); + if (literal_map) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + literal_map = ::google::protobuf::internal::GetOwnedMessage( + message_arena, literal_map, submessage_arena); + } + set_has_literal_map(); + data_.literal_map_ = literal_map; + } + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.GetDataResponse.literal_map) +} +void GetDataResponse::clear_literal_map() { + if (has_literal_map()) { + delete data_.literal_map_; + clear_has_data(); + } +} +void GetDataResponse::set_allocated_pre_signed_urls(::flyteidl::service::PreSignedURLs* pre_signed_urls) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + clear_data(); + if (pre_signed_urls) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + pre_signed_urls = ::google::protobuf::internal::GetOwnedMessage( + message_arena, pre_signed_urls, submessage_arena); + } + set_has_pre_signed_urls(); + data_.pre_signed_urls_ = pre_signed_urls; + } + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.GetDataResponse.pre_signed_urls) +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int GetDataResponse::kLiteralMapFieldNumber; +const int GetDataResponse::kPreSignedUrlsFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +GetDataResponse::GetDataResponse() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.service.GetDataResponse) +} +GetDataResponse::GetDataResponse(const GetDataResponse& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + clear_has_data(); + switch (from.data_case()) { + case kLiteralMap: { + mutable_literal_map()->::flyteidl::core::LiteralMap::MergeFrom(from.literal_map()); + break; + } + case kPreSignedUrls: { + mutable_pre_signed_urls()->::flyteidl::service::PreSignedURLs::MergeFrom(from.pre_signed_urls()); + break; + } + case DATA_NOT_SET: { + break; + } + } + // @@protoc_insertion_point(copy_constructor:flyteidl.service.GetDataResponse) +} + +void GetDataResponse::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_GetDataResponse_flyteidl_2fservice_2fdataproxy_2eproto.base); + clear_has_data(); +} + +GetDataResponse::~GetDataResponse() { + // @@protoc_insertion_point(destructor:flyteidl.service.GetDataResponse) + SharedDtor(); +} + +void GetDataResponse::SharedDtor() { + if (has_data()) { + clear_data(); + } +} + +void GetDataResponse::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const GetDataResponse& GetDataResponse::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_GetDataResponse_flyteidl_2fservice_2fdataproxy_2eproto.base); + return *internal_default_instance(); +} + + +void GetDataResponse::clear_data() { +// @@protoc_insertion_point(one_of_clear_start:flyteidl.service.GetDataResponse) + switch (data_case()) { + case kLiteralMap: { + delete data_.literal_map_; + break; + } + case kPreSignedUrls: { + delete data_.pre_signed_urls_; + break; + } + case DATA_NOT_SET: { + break; + } + } + _oneof_case_[0] = DATA_NOT_SET; +} + + +void GetDataResponse::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.service.GetDataResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + clear_data(); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* GetDataResponse::_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.LiteralMap literal_map = 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::LiteralMap::_InternalParse; + object = msg->mutable_literal_map(); + 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; + } + // .flyteidl.service.PreSignedURLs pre_signed_urls = 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); + parser_till_end = ::flyteidl::service::PreSignedURLs::_InternalParse; + object = msg->mutable_pre_signed_urls(); + 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; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool GetDataResponse::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.service.GetDataResponse) + 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.LiteralMap literal_map = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_literal_map())); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_pre_signed_urls())); + } 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.service.GetDataResponse) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.service.GetDataResponse) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void GetDataResponse::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.service.GetDataResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.LiteralMap literal_map = 1; + if (has_literal_map()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, HasBitSetters::literal_map(this), output); + } + + // .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + if (has_pre_signed_urls()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 2, HasBitSetters::pre_signed_urls(this), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.service.GetDataResponse) +} + +::google::protobuf::uint8* GetDataResponse::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.service.GetDataResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.LiteralMap literal_map = 1; + if (has_literal_map()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 1, HasBitSetters::literal_map(this), target); + } + + // .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + if (has_pre_signed_urls()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 2, HasBitSetters::pre_signed_urls(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.service.GetDataResponse) + return target; +} + +size_t GetDataResponse::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.service.GetDataResponse) + 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; + + switch (data_case()) { + // .flyteidl.core.LiteralMap literal_map = 1; + case kLiteralMap: { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *data_.literal_map_); + break; + } + // .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + case kPreSignedUrls: { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *data_.pre_signed_urls_); + break; + } + case DATA_NOT_SET: { + break; + } + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void GetDataResponse::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.service.GetDataResponse) + GOOGLE_DCHECK_NE(&from, this); + const GetDataResponse* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.service.GetDataResponse) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.service.GetDataResponse) + MergeFrom(*source); + } +} + +void GetDataResponse::MergeFrom(const GetDataResponse& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.service.GetDataResponse) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + switch (from.data_case()) { + case kLiteralMap: { + mutable_literal_map()->::flyteidl::core::LiteralMap::MergeFrom(from.literal_map()); + break; + } + case kPreSignedUrls: { + mutable_pre_signed_urls()->::flyteidl::service::PreSignedURLs::MergeFrom(from.pre_signed_urls()); + break; + } + case DATA_NOT_SET: { + break; + } + } +} + +void GetDataResponse::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.service.GetDataResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void GetDataResponse::CopyFrom(const GetDataResponse& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.service.GetDataResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool GetDataResponse::IsInitialized() const { + return true; +} + +void GetDataResponse::Swap(GetDataResponse* other) { + if (other == this) return; + InternalSwap(other); +} +void GetDataResponse::InternalSwap(GetDataResponse* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + swap(data_, other->data_); + swap(_oneof_case_[0], other->_oneof_case_[0]); +} + +::google::protobuf::Metadata GetDataResponse::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fservice_2fdataproxy_2eproto); + return ::file_level_metadata_flyteidl_2fservice_2fdataproxy_2eproto[kIndexInFileMessages]; +} + + +// @@protoc_insertion_point(namespace_scope) +} // namespace service +} // namespace flyteidl +namespace google { +namespace protobuf { +template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateUploadLocationResponse* Arena::CreateMaybeMessage< ::flyteidl::service::CreateUploadLocationResponse >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::CreateUploadLocationResponse >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateUploadLocationRequest* Arena::CreateMaybeMessage< ::flyteidl::service::CreateUploadLocationRequest >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::CreateUploadLocationRequest >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateDownloadLocationRequest* Arena::CreateMaybeMessage< ::flyteidl::service::CreateDownloadLocationRequest >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::CreateDownloadLocationRequest >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateDownloadLocationResponse* Arena::CreateMaybeMessage< ::flyteidl::service::CreateDownloadLocationResponse >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::CreateDownloadLocationResponse >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateDownloadLinkRequest* Arena::CreateMaybeMessage< ::flyteidl::service::CreateDownloadLinkRequest >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::CreateDownloadLinkRequest >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::CreateDownloadLinkResponse* Arena::CreateMaybeMessage< ::flyteidl::service::CreateDownloadLinkResponse >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::CreateDownloadLinkResponse >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::PreSignedURLs* Arena::CreateMaybeMessage< ::flyteidl::service::PreSignedURLs >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::PreSignedURLs >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::GetDataRequest* Arena::CreateMaybeMessage< ::flyteidl::service::GetDataRequest >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::GetDataRequest >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::service::GetDataResponse* Arena::CreateMaybeMessage< ::flyteidl::service::GetDataResponse >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::service::GetDataResponse >(arena); } } // namespace protobuf } // namespace google diff --git a/gen/pb-cpp/flyteidl/service/dataproxy.pb.h b/gen/pb-cpp/flyteidl/service/dataproxy.pb.h index 9a45afda1..c62937f87 100644 --- a/gen/pb-cpp/flyteidl/service/dataproxy.pb.h +++ b/gen/pb-cpp/flyteidl/service/dataproxy.pb.h @@ -36,6 +36,7 @@ #include #include #include "flyteidl/core/identifier.pb.h" +#include "flyteidl/core/literals.pb.h" // @@protoc_insertion_point(includes) #include #define PROTOBUF_INTERNAL_EXPORT_flyteidl_2fservice_2fdataproxy_2eproto @@ -46,7 +47,7 @@ struct TableStruct_flyteidl_2fservice_2fdataproxy_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[6] + static const ::google::protobuf::internal::ParseTable schema[9] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::google::protobuf::internal::FieldMetadata field_metadata[]; static const ::google::protobuf::internal::SerializationTable serialization_table[]; @@ -73,6 +74,15 @@ extern CreateUploadLocationRequestDefaultTypeInternal _CreateUploadLocationReque class CreateUploadLocationResponse; class CreateUploadLocationResponseDefaultTypeInternal; extern CreateUploadLocationResponseDefaultTypeInternal _CreateUploadLocationResponse_default_instance_; +class GetDataRequest; +class GetDataRequestDefaultTypeInternal; +extern GetDataRequestDefaultTypeInternal _GetDataRequest_default_instance_; +class GetDataResponse; +class GetDataResponseDefaultTypeInternal; +extern GetDataResponseDefaultTypeInternal _GetDataResponse_default_instance_; +class PreSignedURLs; +class PreSignedURLsDefaultTypeInternal; +extern PreSignedURLsDefaultTypeInternal _PreSignedURLs_default_instance_; } // namespace service } // namespace flyteidl namespace google { @@ -83,6 +93,9 @@ template<> ::flyteidl::service::CreateDownloadLocationRequest* Arena::CreateMayb template<> ::flyteidl::service::CreateDownloadLocationResponse* Arena::CreateMaybeMessage<::flyteidl::service::CreateDownloadLocationResponse>(Arena*); template<> ::flyteidl::service::CreateUploadLocationRequest* Arena::CreateMaybeMessage<::flyteidl::service::CreateUploadLocationRequest>(Arena*); template<> ::flyteidl::service::CreateUploadLocationResponse* Arena::CreateMaybeMessage<::flyteidl::service::CreateUploadLocationResponse>(Arena*); +template<> ::flyteidl::service::GetDataRequest* Arena::CreateMaybeMessage<::flyteidl::service::GetDataRequest>(Arena*); +template<> ::flyteidl::service::GetDataResponse* Arena::CreateMaybeMessage<::flyteidl::service::GetDataResponse>(Arena*); +template<> ::flyteidl::service::PreSignedURLs* Arena::CreateMaybeMessage<::flyteidl::service::PreSignedURLs>(Arena*); } // namespace protobuf } // namespace google namespace flyteidl { @@ -934,6 +947,154 @@ class CreateDownloadLinkResponse final : // accessors ------------------------------------------------------- + // repeated string signed_url = 1 [deprecated = true]; + PROTOBUF_DEPRECATED int signed_url_size() const; + PROTOBUF_DEPRECATED void clear_signed_url(); + PROTOBUF_DEPRECATED static const int kSignedUrlFieldNumber = 1; + PROTOBUF_DEPRECATED const ::std::string& signed_url(int index) const; + PROTOBUF_DEPRECATED ::std::string* mutable_signed_url(int index); + PROTOBUF_DEPRECATED void set_signed_url(int index, const ::std::string& value); + #if LANG_CXX11 + PROTOBUF_DEPRECATED void set_signed_url(int index, ::std::string&& value); + #endif + PROTOBUF_DEPRECATED void set_signed_url(int index, const char* value); + PROTOBUF_DEPRECATED void set_signed_url(int index, const char* value, size_t size); + PROTOBUF_DEPRECATED ::std::string* add_signed_url(); + PROTOBUF_DEPRECATED void add_signed_url(const ::std::string& value); + #if LANG_CXX11 + PROTOBUF_DEPRECATED void add_signed_url(::std::string&& value); + #endif + PROTOBUF_DEPRECATED void add_signed_url(const char* value); + PROTOBUF_DEPRECATED void add_signed_url(const char* value, size_t size); + PROTOBUF_DEPRECATED const ::google::protobuf::RepeatedPtrField<::std::string>& signed_url() const; + PROTOBUF_DEPRECATED ::google::protobuf::RepeatedPtrField<::std::string>* mutable_signed_url(); + + // .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; + PROTOBUF_DEPRECATED bool has_expires_at() const; + PROTOBUF_DEPRECATED void clear_expires_at(); + PROTOBUF_DEPRECATED static const int kExpiresAtFieldNumber = 2; + PROTOBUF_DEPRECATED const ::google::protobuf::Timestamp& expires_at() const; + PROTOBUF_DEPRECATED ::google::protobuf::Timestamp* release_expires_at(); + PROTOBUF_DEPRECATED ::google::protobuf::Timestamp* mutable_expires_at(); + PROTOBUF_DEPRECATED void set_allocated_expires_at(::google::protobuf::Timestamp* expires_at); + + // .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + bool has_pre_signed_urls() const; + void clear_pre_signed_urls(); + static const int kPreSignedUrlsFieldNumber = 3; + const ::flyteidl::service::PreSignedURLs& pre_signed_urls() const; + ::flyteidl::service::PreSignedURLs* release_pre_signed_urls(); + ::flyteidl::service::PreSignedURLs* mutable_pre_signed_urls(); + void set_allocated_pre_signed_urls(::flyteidl::service::PreSignedURLs* pre_signed_urls); + + // @@protoc_insertion_point(class_scope:flyteidl.service.CreateDownloadLinkResponse) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::RepeatedPtrField<::std::string> signed_url_; + ::google::protobuf::Timestamp* expires_at_; + ::flyteidl::service::PreSignedURLs* pre_signed_urls_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fservice_2fdataproxy_2eproto; +}; +// ------------------------------------------------------------------- + +class PreSignedURLs final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.service.PreSignedURLs) */ { + public: + PreSignedURLs(); + virtual ~PreSignedURLs(); + + PreSignedURLs(const PreSignedURLs& from); + + inline PreSignedURLs& operator=(const PreSignedURLs& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + PreSignedURLs(PreSignedURLs&& from) noexcept + : PreSignedURLs() { + *this = ::std::move(from); + } + + inline PreSignedURLs& operator=(PreSignedURLs&& 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 PreSignedURLs& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const PreSignedURLs* internal_default_instance() { + return reinterpret_cast( + &_PreSignedURLs_default_instance_); + } + static constexpr int kIndexInFileMessages = + 6; + + void Swap(PreSignedURLs* other); + friend void swap(PreSignedURLs& a, PreSignedURLs& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline PreSignedURLs* New() const final { + return CreateMaybeMessage(nullptr); + } + + PreSignedURLs* 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 PreSignedURLs& from); + void MergeFrom(const PreSignedURLs& 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(PreSignedURLs* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + // repeated string signed_url = 1; int signed_url_size() const; void clear_signed_url(); @@ -965,7 +1126,7 @@ class CreateDownloadLinkResponse final : ::google::protobuf::Timestamp* mutable_expires_at(); void set_allocated_expires_at(::google::protobuf::Timestamp* expires_at); - // @@protoc_insertion_point(class_scope:flyteidl.service.CreateDownloadLinkResponse) + // @@protoc_insertion_point(class_scope:flyteidl.service.PreSignedURLs) private: class HasBitSetters; @@ -975,6 +1136,269 @@ class CreateDownloadLinkResponse final : mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fservice_2fdataproxy_2eproto; }; +// ------------------------------------------------------------------- + +class GetDataRequest final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.service.GetDataRequest) */ { + public: + GetDataRequest(); + virtual ~GetDataRequest(); + + GetDataRequest(const GetDataRequest& from); + + inline GetDataRequest& operator=(const GetDataRequest& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + GetDataRequest(GetDataRequest&& from) noexcept + : GetDataRequest() { + *this = ::std::move(from); + } + + inline GetDataRequest& operator=(GetDataRequest&& 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 GetDataRequest& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const GetDataRequest* internal_default_instance() { + return reinterpret_cast( + &_GetDataRequest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 7; + + void Swap(GetDataRequest* other); + friend void swap(GetDataRequest& a, GetDataRequest& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline GetDataRequest* New() const final { + return CreateMaybeMessage(nullptr); + } + + GetDataRequest* 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 GetDataRequest& from); + void MergeFrom(const GetDataRequest& 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(GetDataRequest* 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 flyte_url = 1; + void clear_flyte_url(); + static const int kFlyteUrlFieldNumber = 1; + const ::std::string& flyte_url() const; + void set_flyte_url(const ::std::string& value); + #if LANG_CXX11 + void set_flyte_url(::std::string&& value); + #endif + void set_flyte_url(const char* value); + void set_flyte_url(const char* value, size_t size); + ::std::string* mutable_flyte_url(); + ::std::string* release_flyte_url(); + void set_allocated_flyte_url(::std::string* flyte_url); + + // @@protoc_insertion_point(class_scope:flyteidl.service.GetDataRequest) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr flyte_url_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fservice_2fdataproxy_2eproto; +}; +// ------------------------------------------------------------------- + +class GetDataResponse final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.service.GetDataResponse) */ { + public: + GetDataResponse(); + virtual ~GetDataResponse(); + + GetDataResponse(const GetDataResponse& from); + + inline GetDataResponse& operator=(const GetDataResponse& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + GetDataResponse(GetDataResponse&& from) noexcept + : GetDataResponse() { + *this = ::std::move(from); + } + + inline GetDataResponse& operator=(GetDataResponse&& 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 GetDataResponse& default_instance(); + + enum DataCase { + kLiteralMap = 1, + kPreSignedUrls = 2, + DATA_NOT_SET = 0, + }; + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const GetDataResponse* internal_default_instance() { + return reinterpret_cast( + &_GetDataResponse_default_instance_); + } + static constexpr int kIndexInFileMessages = + 8; + + void Swap(GetDataResponse* other); + friend void swap(GetDataResponse& a, GetDataResponse& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline GetDataResponse* New() const final { + return CreateMaybeMessage(nullptr); + } + + GetDataResponse* 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 GetDataResponse& from); + void MergeFrom(const GetDataResponse& 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(GetDataResponse* 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 ------------------------------------------------------- + + // .flyteidl.core.LiteralMap literal_map = 1; + bool has_literal_map() const; + void clear_literal_map(); + static const int kLiteralMapFieldNumber = 1; + const ::flyteidl::core::LiteralMap& literal_map() const; + ::flyteidl::core::LiteralMap* release_literal_map(); + ::flyteidl::core::LiteralMap* mutable_literal_map(); + void set_allocated_literal_map(::flyteidl::core::LiteralMap* literal_map); + + // .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + bool has_pre_signed_urls() const; + void clear_pre_signed_urls(); + static const int kPreSignedUrlsFieldNumber = 2; + const ::flyteidl::service::PreSignedURLs& pre_signed_urls() const; + ::flyteidl::service::PreSignedURLs* release_pre_signed_urls(); + ::flyteidl::service::PreSignedURLs* mutable_pre_signed_urls(); + void set_allocated_pre_signed_urls(::flyteidl::service::PreSignedURLs* pre_signed_urls); + + void clear_data(); + DataCase data_case() const; + // @@protoc_insertion_point(class_scope:flyteidl.service.GetDataResponse) + private: + class HasBitSetters; + void set_has_literal_map(); + void set_has_pre_signed_urls(); + + inline bool has_data() const; + inline void clear_has_data(); + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + union DataUnion { + DataUnion() {} + ::flyteidl::core::LiteralMap* literal_map_; + ::flyteidl::service::PreSignedURLs* pre_signed_urls_; + } data_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + ::google::protobuf::uint32 _oneof_case_[1]; + + friend struct ::TableStruct_flyteidl_2fservice_2fdataproxy_2eproto; +}; // =================================================================== @@ -1718,7 +2142,7 @@ inline CreateDownloadLinkRequest::SourceCase CreateDownloadLinkRequest::source_c // CreateDownloadLinkResponse -// repeated string signed_url = 1; +// repeated string signed_url = 1 [deprecated = true]; inline int CreateDownloadLinkResponse::signed_url_size() const { return signed_url_.size(); } @@ -1787,7 +2211,7 @@ CreateDownloadLinkResponse::mutable_signed_url() { return &signed_url_; } -// .google.protobuf.Timestamp expires_at = 2; +// .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; inline bool CreateDownloadLinkResponse::has_expires_at() const { return this != internal_default_instance() && expires_at_ != nullptr; } @@ -1833,6 +2257,322 @@ inline void CreateDownloadLinkResponse::set_allocated_expires_at(::google::proto // @@protoc_insertion_point(field_set_allocated:flyteidl.service.CreateDownloadLinkResponse.expires_at) } +// .flyteidl.service.PreSignedURLs pre_signed_urls = 3; +inline bool CreateDownloadLinkResponse::has_pre_signed_urls() const { + return this != internal_default_instance() && pre_signed_urls_ != nullptr; +} +inline void CreateDownloadLinkResponse::clear_pre_signed_urls() { + if (GetArenaNoVirtual() == nullptr && pre_signed_urls_ != nullptr) { + delete pre_signed_urls_; + } + pre_signed_urls_ = nullptr; +} +inline const ::flyteidl::service::PreSignedURLs& CreateDownloadLinkResponse::pre_signed_urls() const { + const ::flyteidl::service::PreSignedURLs* p = pre_signed_urls_; + // @@protoc_insertion_point(field_get:flyteidl.service.CreateDownloadLinkResponse.pre_signed_urls) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::service::_PreSignedURLs_default_instance_); +} +inline ::flyteidl::service::PreSignedURLs* CreateDownloadLinkResponse::release_pre_signed_urls() { + // @@protoc_insertion_point(field_release:flyteidl.service.CreateDownloadLinkResponse.pre_signed_urls) + + ::flyteidl::service::PreSignedURLs* temp = pre_signed_urls_; + pre_signed_urls_ = nullptr; + return temp; +} +inline ::flyteidl::service::PreSignedURLs* CreateDownloadLinkResponse::mutable_pre_signed_urls() { + + if (pre_signed_urls_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::service::PreSignedURLs>(GetArenaNoVirtual()); + pre_signed_urls_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.service.CreateDownloadLinkResponse.pre_signed_urls) + return pre_signed_urls_; +} +inline void CreateDownloadLinkResponse::set_allocated_pre_signed_urls(::flyteidl::service::PreSignedURLs* pre_signed_urls) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete pre_signed_urls_; + } + if (pre_signed_urls) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + pre_signed_urls = ::google::protobuf::internal::GetOwnedMessage( + message_arena, pre_signed_urls, submessage_arena); + } + + } else { + + } + pre_signed_urls_ = pre_signed_urls; + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.CreateDownloadLinkResponse.pre_signed_urls) +} + +// ------------------------------------------------------------------- + +// PreSignedURLs + +// repeated string signed_url = 1; +inline int PreSignedURLs::signed_url_size() const { + return signed_url_.size(); +} +inline void PreSignedURLs::clear_signed_url() { + signed_url_.Clear(); +} +inline const ::std::string& PreSignedURLs::signed_url(int index) const { + // @@protoc_insertion_point(field_get:flyteidl.service.PreSignedURLs.signed_url) + return signed_url_.Get(index); +} +inline ::std::string* PreSignedURLs::mutable_signed_url(int index) { + // @@protoc_insertion_point(field_mutable:flyteidl.service.PreSignedURLs.signed_url) + return signed_url_.Mutable(index); +} +inline void PreSignedURLs::set_signed_url(int index, const ::std::string& value) { + // @@protoc_insertion_point(field_set:flyteidl.service.PreSignedURLs.signed_url) + signed_url_.Mutable(index)->assign(value); +} +#if LANG_CXX11 +inline void PreSignedURLs::set_signed_url(int index, ::std::string&& value) { + // @@protoc_insertion_point(field_set:flyteidl.service.PreSignedURLs.signed_url) + signed_url_.Mutable(index)->assign(std::move(value)); +} +#endif +inline void PreSignedURLs::set_signed_url(int index, const char* value) { + GOOGLE_DCHECK(value != nullptr); + signed_url_.Mutable(index)->assign(value); + // @@protoc_insertion_point(field_set_char:flyteidl.service.PreSignedURLs.signed_url) +} +inline void PreSignedURLs::set_signed_url(int index, const char* value, size_t size) { + signed_url_.Mutable(index)->assign( + reinterpret_cast(value), size); + // @@protoc_insertion_point(field_set_pointer:flyteidl.service.PreSignedURLs.signed_url) +} +inline ::std::string* PreSignedURLs::add_signed_url() { + // @@protoc_insertion_point(field_add_mutable:flyteidl.service.PreSignedURLs.signed_url) + return signed_url_.Add(); +} +inline void PreSignedURLs::add_signed_url(const ::std::string& value) { + signed_url_.Add()->assign(value); + // @@protoc_insertion_point(field_add:flyteidl.service.PreSignedURLs.signed_url) +} +#if LANG_CXX11 +inline void PreSignedURLs::add_signed_url(::std::string&& value) { + signed_url_.Add(std::move(value)); + // @@protoc_insertion_point(field_add:flyteidl.service.PreSignedURLs.signed_url) +} +#endif +inline void PreSignedURLs::add_signed_url(const char* value) { + GOOGLE_DCHECK(value != nullptr); + signed_url_.Add()->assign(value); + // @@protoc_insertion_point(field_add_char:flyteidl.service.PreSignedURLs.signed_url) +} +inline void PreSignedURLs::add_signed_url(const char* value, size_t size) { + signed_url_.Add()->assign(reinterpret_cast(value), size); + // @@protoc_insertion_point(field_add_pointer:flyteidl.service.PreSignedURLs.signed_url) +} +inline const ::google::protobuf::RepeatedPtrField<::std::string>& +PreSignedURLs::signed_url() const { + // @@protoc_insertion_point(field_list:flyteidl.service.PreSignedURLs.signed_url) + return signed_url_; +} +inline ::google::protobuf::RepeatedPtrField<::std::string>* +PreSignedURLs::mutable_signed_url() { + // @@protoc_insertion_point(field_mutable_list:flyteidl.service.PreSignedURLs.signed_url) + return &signed_url_; +} + +// .google.protobuf.Timestamp expires_at = 2; +inline bool PreSignedURLs::has_expires_at() const { + return this != internal_default_instance() && expires_at_ != nullptr; +} +inline const ::google::protobuf::Timestamp& PreSignedURLs::expires_at() const { + const ::google::protobuf::Timestamp* p = expires_at_; + // @@protoc_insertion_point(field_get:flyteidl.service.PreSignedURLs.expires_at) + return p != nullptr ? *p : *reinterpret_cast( + &::google::protobuf::_Timestamp_default_instance_); +} +inline ::google::protobuf::Timestamp* PreSignedURLs::release_expires_at() { + // @@protoc_insertion_point(field_release:flyteidl.service.PreSignedURLs.expires_at) + + ::google::protobuf::Timestamp* temp = expires_at_; + expires_at_ = nullptr; + return temp; +} +inline ::google::protobuf::Timestamp* PreSignedURLs::mutable_expires_at() { + + if (expires_at_ == nullptr) { + auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArenaNoVirtual()); + expires_at_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.service.PreSignedURLs.expires_at) + return expires_at_; +} +inline void PreSignedURLs::set_allocated_expires_at(::google::protobuf::Timestamp* expires_at) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(expires_at_); + } + if (expires_at) { + ::google::protobuf::Arena* submessage_arena = + reinterpret_cast<::google::protobuf::MessageLite*>(expires_at)->GetArena(); + if (message_arena != submessage_arena) { + expires_at = ::google::protobuf::internal::GetOwnedMessage( + message_arena, expires_at, submessage_arena); + } + + } else { + + } + expires_at_ = expires_at; + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.PreSignedURLs.expires_at) +} + +// ------------------------------------------------------------------- + +// GetDataRequest + +// string flyte_url = 1; +inline void GetDataRequest::clear_flyte_url() { + flyte_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& GetDataRequest::flyte_url() const { + // @@protoc_insertion_point(field_get:flyteidl.service.GetDataRequest.flyte_url) + return flyte_url_.GetNoArena(); +} +inline void GetDataRequest::set_flyte_url(const ::std::string& value) { + + flyte_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.service.GetDataRequest.flyte_url) +} +#if LANG_CXX11 +inline void GetDataRequest::set_flyte_url(::std::string&& value) { + + flyte_url_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.service.GetDataRequest.flyte_url) +} +#endif +inline void GetDataRequest::set_flyte_url(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + flyte_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.service.GetDataRequest.flyte_url) +} +inline void GetDataRequest::set_flyte_url(const char* value, size_t size) { + + flyte_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.service.GetDataRequest.flyte_url) +} +inline ::std::string* GetDataRequest::mutable_flyte_url() { + + // @@protoc_insertion_point(field_mutable:flyteidl.service.GetDataRequest.flyte_url) + return flyte_url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* GetDataRequest::release_flyte_url() { + // @@protoc_insertion_point(field_release:flyteidl.service.GetDataRequest.flyte_url) + + return flyte_url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void GetDataRequest::set_allocated_flyte_url(::std::string* flyte_url) { + if (flyte_url != nullptr) { + + } else { + + } + flyte_url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), flyte_url); + // @@protoc_insertion_point(field_set_allocated:flyteidl.service.GetDataRequest.flyte_url) +} + +// ------------------------------------------------------------------- + +// GetDataResponse + +// .flyteidl.core.LiteralMap literal_map = 1; +inline bool GetDataResponse::has_literal_map() const { + return data_case() == kLiteralMap; +} +inline void GetDataResponse::set_has_literal_map() { + _oneof_case_[0] = kLiteralMap; +} +inline ::flyteidl::core::LiteralMap* GetDataResponse::release_literal_map() { + // @@protoc_insertion_point(field_release:flyteidl.service.GetDataResponse.literal_map) + if (has_literal_map()) { + clear_has_data(); + ::flyteidl::core::LiteralMap* temp = data_.literal_map_; + data_.literal_map_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::flyteidl::core::LiteralMap& GetDataResponse::literal_map() const { + // @@protoc_insertion_point(field_get:flyteidl.service.GetDataResponse.literal_map) + return has_literal_map() + ? *data_.literal_map_ + : *reinterpret_cast< ::flyteidl::core::LiteralMap*>(&::flyteidl::core::_LiteralMap_default_instance_); +} +inline ::flyteidl::core::LiteralMap* GetDataResponse::mutable_literal_map() { + if (!has_literal_map()) { + clear_data(); + set_has_literal_map(); + data_.literal_map_ = CreateMaybeMessage< ::flyteidl::core::LiteralMap >( + GetArenaNoVirtual()); + } + // @@protoc_insertion_point(field_mutable:flyteidl.service.GetDataResponse.literal_map) + return data_.literal_map_; +} + +// .flyteidl.service.PreSignedURLs pre_signed_urls = 2; +inline bool GetDataResponse::has_pre_signed_urls() const { + return data_case() == kPreSignedUrls; +} +inline void GetDataResponse::set_has_pre_signed_urls() { + _oneof_case_[0] = kPreSignedUrls; +} +inline void GetDataResponse::clear_pre_signed_urls() { + if (has_pre_signed_urls()) { + delete data_.pre_signed_urls_; + clear_has_data(); + } +} +inline ::flyteidl::service::PreSignedURLs* GetDataResponse::release_pre_signed_urls() { + // @@protoc_insertion_point(field_release:flyteidl.service.GetDataResponse.pre_signed_urls) + if (has_pre_signed_urls()) { + clear_has_data(); + ::flyteidl::service::PreSignedURLs* temp = data_.pre_signed_urls_; + data_.pre_signed_urls_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::flyteidl::service::PreSignedURLs& GetDataResponse::pre_signed_urls() const { + // @@protoc_insertion_point(field_get:flyteidl.service.GetDataResponse.pre_signed_urls) + return has_pre_signed_urls() + ? *data_.pre_signed_urls_ + : *reinterpret_cast< ::flyteidl::service::PreSignedURLs*>(&::flyteidl::service::_PreSignedURLs_default_instance_); +} +inline ::flyteidl::service::PreSignedURLs* GetDataResponse::mutable_pre_signed_urls() { + if (!has_pre_signed_urls()) { + clear_data(); + set_has_pre_signed_urls(); + data_.pre_signed_urls_ = CreateMaybeMessage< ::flyteidl::service::PreSignedURLs >( + GetArenaNoVirtual()); + } + // @@protoc_insertion_point(field_mutable:flyteidl.service.GetDataResponse.pre_signed_urls) + return data_.pre_signed_urls_; +} + +inline bool GetDataResponse::has_data() const { + return data_case() != DATA_NOT_SET; +} +inline void GetDataResponse::clear_has_data() { + _oneof_case_[0] = DATA_NOT_SET; +} +inline GetDataResponse::DataCase GetDataResponse::data_case() const { + return GetDataResponse::DataCase(_oneof_case_[0]); +} #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ @@ -1846,6 +2586,12 @@ inline void CreateDownloadLinkResponse::set_allocated_expires_at(::google::proto // ------------------------------------------------------------------- +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + // @@protoc_insertion_point(namespace_scope) diff --git a/gen/pb-go/flyteidl/admin/common.pb.go b/gen/pb-go/flyteidl/admin/common.pb.go index e450b7661..f6f6484ce 100644 --- a/gen/pb-go/flyteidl/admin/common.pb.go +++ b/gen/pb-go/flyteidl/admin/common.pb.go @@ -1351,6 +1351,62 @@ func (m *RawOutputDataConfig) GetOutputLocationPrefix() string { return "" } +// These URLs are returned as part of node and task execution data requests. +type FlyteURLs struct { + Inputs string `protobuf:"bytes,1,opt,name=inputs,proto3" json:"inputs,omitempty"` + Outputs string `protobuf:"bytes,2,opt,name=outputs,proto3" json:"outputs,omitempty"` + Deck string `protobuf:"bytes,3,opt,name=deck,proto3" json:"deck,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *FlyteURLs) Reset() { *m = FlyteURLs{} } +func (m *FlyteURLs) String() string { return proto.CompactTextString(m) } +func (*FlyteURLs) ProtoMessage() {} +func (*FlyteURLs) Descriptor() ([]byte, []int) { + return fileDescriptor_7c2cf612a185829c, []int{22} +} + +func (m *FlyteURLs) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FlyteURLs.Unmarshal(m, b) +} +func (m *FlyteURLs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FlyteURLs.Marshal(b, m, deterministic) +} +func (m *FlyteURLs) XXX_Merge(src proto.Message) { + xxx_messageInfo_FlyteURLs.Merge(m, src) +} +func (m *FlyteURLs) XXX_Size() int { + return xxx_messageInfo_FlyteURLs.Size(m) +} +func (m *FlyteURLs) XXX_DiscardUnknown() { + xxx_messageInfo_FlyteURLs.DiscardUnknown(m) +} + +var xxx_messageInfo_FlyteURLs proto.InternalMessageInfo + +func (m *FlyteURLs) GetInputs() string { + if m != nil { + return m.Inputs + } + return "" +} + +func (m *FlyteURLs) GetOutputs() string { + if m != nil { + return m.Outputs + } + return "" +} + +func (m *FlyteURLs) GetDeck() string { + if m != nil { + return m.Deck + } + return "" +} + func init() { proto.RegisterEnum("flyteidl.admin.NamedEntityState", NamedEntityState_name, NamedEntityState_value) proto.RegisterEnum("flyteidl.admin.Sort_Direction", Sort_Direction_name, Sort_Direction_value) @@ -1378,80 +1434,84 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "flyteidl.admin.Annotations.ValuesEntry") proto.RegisterType((*AuthRole)(nil), "flyteidl.admin.AuthRole") proto.RegisterType((*RawOutputDataConfig)(nil), "flyteidl.admin.RawOutputDataConfig") + proto.RegisterType((*FlyteURLs)(nil), "flyteidl.admin.FlyteURLs") } func init() { proto.RegisterFile("flyteidl/admin/common.proto", fileDescriptor_7c2cf612a185829c) } var fileDescriptor_7c2cf612a185829c = []byte{ - // 1117 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdd, 0x73, 0xdb, 0x44, - 0x10, 0x8f, 0xfc, 0x95, 0x7a, 0xdd, 0xa6, 0xee, 0x25, 0x0d, 0x4e, 0x32, 0x94, 0x20, 0x86, 0x8f, - 0x76, 0xa8, 0x3d, 0x13, 0x08, 0xa5, 0x99, 0x92, 0xe2, 0xc4, 0x22, 0xf1, 0x90, 0xb8, 0x19, 0xd9, - 0x0d, 0x53, 0x06, 0x46, 0x9c, 0xa5, 0xb3, 0x73, 0x44, 0xd2, 0x89, 0xd3, 0xa9, 0xad, 0x79, 0x61, - 0xe0, 0x8d, 0x37, 0x1e, 0xf8, 0x87, 0x78, 0x62, 0x78, 0xe7, 0x0f, 0x62, 0x74, 0xfa, 0xb0, 0xec, - 0x38, 0x81, 0xa4, 0x9d, 0xe1, 0xcd, 0x7b, 0xfb, 0xdb, 0xbb, 0xdf, 0xfe, 0x6e, 0x77, 0x75, 0x86, - 0xb5, 0x81, 0x3d, 0x12, 0x84, 0x5a, 0x76, 0x03, 0x5b, 0x0e, 0x75, 0x1b, 0x26, 0x73, 0x1c, 0xe6, - 0xd6, 0x3d, 0xce, 0x04, 0x43, 0x0b, 0x89, 0xb3, 0x2e, 0x9d, 0xab, 0x6f, 0xa6, 0x60, 0x93, 0x71, - 0xd2, 0x20, 0x2f, 0x89, 0x19, 0x08, 0x9a, 0xc0, 0x57, 0xef, 0x4c, 0xba, 0xa9, 0x45, 0x5c, 0x41, - 0x07, 0x94, 0xf0, 0xd8, 0xff, 0xd6, 0x90, 0xb1, 0xa1, 0x4d, 0x1a, 0xd2, 0xea, 0x07, 0x83, 0x86, - 0xa0, 0x0e, 0xf1, 0x05, 0x76, 0xbc, 0x08, 0xa0, 0x7e, 0x0b, 0xb7, 0x3b, 0xd8, 0x21, 0x96, 0xe6, - 0x0a, 0x2a, 0x46, 0xed, 0x34, 0x1e, 0xd5, 0x60, 0xde, 0xe3, 0xec, 0x7b, 0x62, 0x8a, 0x9a, 0xb2, - 0xae, 0x7c, 0x50, 0xd6, 0x13, 0x13, 0x2d, 0x43, 0xc9, 0x62, 0x0e, 0xa6, 0x6e, 0x2d, 0x27, 0x1d, - 0xb1, 0x85, 0x10, 0x14, 0x5c, 0xec, 0x90, 0x5a, 0x5e, 0xae, 0xca, 0xdf, 0x2a, 0x83, 0xc5, 0xcc, - 0xf6, 0x87, 0x44, 0x60, 0x0b, 0x0b, 0x8c, 0xd6, 0xa1, 0x62, 0x11, 0xdf, 0xe4, 0xd4, 0x0b, 0x73, - 0x89, 0x0f, 0xc8, 0x2e, 0xa1, 0x4f, 0xa0, 0xe8, 0x0b, 0x2c, 0x88, 0x3c, 0x63, 0x61, 0x63, 0xbd, - 0x3e, 0xa9, 0x4b, 0x3d, 0xb3, 0x6b, 0x37, 0xc4, 0xe9, 0x11, 0x5c, 0xfd, 0x53, 0x81, 0x4a, 0xc6, - 0x87, 0x3e, 0x87, 0x1b, 0x9c, 0xf8, 0x2c, 0xe0, 0x26, 0x31, 0xc4, 0xc8, 0x23, 0xf2, 0xac, 0x85, - 0x8d, 0xb5, 0xf1, 0x7e, 0xa1, 0x70, 0x75, 0x3d, 0xc6, 0xf4, 0x46, 0x1e, 0xd1, 0xaf, 0xf3, 0x8c, - 0x85, 0x36, 0x21, 0x47, 0x2d, 0x49, 0xa3, 0xb2, 0xf1, 0xee, 0x05, 0x34, 0xc6, 0xda, 0xe9, 0x39, - 0x6a, 0xa1, 0xc7, 0x70, 0xcd, 0x89, 0xd3, 0x95, 0x8a, 0x54, 0x36, 0xde, 0xb9, 0x20, 0x38, 0x51, - 0x46, 0x4f, 0x83, 0xd4, 0x5f, 0x14, 0x28, 0x74, 0x19, 0x17, 0xa8, 0x0a, 0xf9, 0x53, 0x32, 0x8a, - 0x45, 0x0a, 0x7f, 0xa2, 0x47, 0x50, 0xb6, 0x28, 0x27, 0xa6, 0x14, 0x2f, 0x12, 0xe8, 0xce, 0xf4, - 0xe6, 0x61, 0x68, 0xbd, 0x95, 0xa0, 0xf4, 0x71, 0x80, 0x7a, 0x0f, 0xca, 0xe9, 0x3a, 0x5a, 0x00, - 0x68, 0x69, 0xdd, 0x5d, 0xad, 0xd3, 0x6a, 0x77, 0xf6, 0xaa, 0x73, 0xe8, 0x06, 0x94, 0x9b, 0xa9, - 0xa9, 0xa8, 0x7f, 0x29, 0xb0, 0x3e, 0x33, 0xc7, 0x03, 0xea, 0x0b, 0x9d, 0xfc, 0x10, 0x10, 0x5f, - 0x5c, 0xa1, 0x54, 0x96, 0xa0, 0x68, 0x53, 0x87, 0x0a, 0xa9, 0xcc, 0x0d, 0x3d, 0x32, 0xc2, 0x55, - 0xc1, 0x4e, 0x89, 0x5b, 0x2b, 0x48, 0x70, 0x64, 0xa0, 0xfb, 0x30, 0xef, 0x33, 0x2e, 0x8c, 0xfe, - 0xa8, 0x56, 0x94, 0x3a, 0x2e, 0xcd, 0x4a, 0x55, 0x2f, 0x85, 0xa0, 0x9d, 0x51, 0x48, 0x66, 0x40, - 0x6d, 0x41, 0xb8, 0x5f, 0x2b, 0x45, 0x64, 0x62, 0x53, 0xfd, 0x39, 0x07, 0xcb, 0x99, 0x5c, 0xb2, - 0x19, 0xbc, 0x7a, 0x95, 0x64, 0x34, 0xc8, 0x9d, 0xa7, 0x41, 0x7e, 0xb6, 0x06, 0x85, 0x99, 0x1a, - 0x14, 0xcf, 0xd1, 0xa0, 0x74, 0x39, 0x0d, 0xe6, 0x27, 0x35, 0x10, 0xb0, 0x72, 0xee, 0x75, 0xa2, - 0x26, 0x5c, 0x0b, 0x6d, 0x41, 0x89, 0x5f, 0x53, 0xd6, 0xf3, 0xff, 0xbd, 0xde, 0xd3, 0xb0, 0x31, - 0xfd, 0x5c, 0x86, 0xbe, 0xfa, 0x1d, 0xdc, 0x9c, 0x12, 0x1e, 0x3d, 0x38, 0x73, 0xd6, 0xda, 0x05, - 0x67, 0xfd, 0xeb, 0x09, 0xbf, 0x29, 0x13, 0x73, 0x6c, 0x8f, 0xbc, 0xc6, 0xab, 0xbd, 0xda, 0x00, - 0x50, 0xff, 0x56, 0xa0, 0x96, 0xf1, 0x3e, 0xf5, 0xac, 0x70, 0x4c, 0xfd, 0xcf, 0xac, 0x5e, 0x7d, - 0x2c, 0xad, 0x4d, 0x54, 0x50, 0x92, 0x95, 0xef, 0x31, 0xd7, 0x27, 0xea, 0x67, 0x50, 0x7d, 0xd2, - 0x0f, 0xab, 0x3e, 0x73, 0x01, 0x77, 0x25, 0x51, 0x45, 0x9e, 0xb5, 0x32, 0x95, 0xdf, 0x94, 0x64, - 0x7f, 0x28, 0xb0, 0x98, 0xa4, 0x9c, 0x6d, 0xcf, 0xcd, 0xcc, 0x16, 0x97, 0xc8, 0x35, 0xed, 0xb0, - 0xdc, 0xcc, 0x0e, 0xcb, 0x67, 0x3b, 0x2c, 0xd3, 0x32, 0x85, 0x89, 0x96, 0xb9, 0xe4, 0xfc, 0x51, - 0xb7, 0xe1, 0x96, 0xe6, 0x60, 0x6a, 0x77, 0x58, 0xc8, 0xc4, 0xc4, 0x72, 0xca, 0xde, 0x85, 0x2a, - 0x27, 0x26, 0xf5, 0x28, 0x71, 0x85, 0x6f, 0x90, 0xd0, 0x2f, 0xab, 0xbe, 0xac, 0xdf, 0x1c, 0xaf, - 0xcb, 0x30, 0x75, 0x07, 0x6e, 0x1f, 0xe1, 0x21, 0xe1, 0xad, 0x40, 0x8c, 0xae, 0xba, 0xc7, 0x36, - 0xdc, 0xea, 0xda, 0xd8, 0x3c, 0xbd, 0x6a, 0xfc, 0xef, 0x39, 0xb8, 0x3e, 0x11, 0xbb, 0x0d, 0x25, - 0xef, 0x04, 0xfb, 0x71, 0xaf, 0x2e, 0x6c, 0xbc, 0x37, 0x75, 0x8f, 0x5f, 0x31, 0x7e, 0x3a, 0xb0, - 0xd9, 0x0b, 0x2d, 0x7d, 0x9e, 0x1c, 0x85, 0x70, 0x3d, 0x8e, 0x42, 0x0f, 0xa1, 0x18, 0x1d, 0x18, - 0xd5, 0xeb, 0xdb, 0xd3, 0x0a, 0x9e, 0x51, 0x6c, 0x7f, 0x4e, 0x8f, 0x22, 0xd0, 0x17, 0x00, 0x5e, - 0xa8, 0x87, 0x61, 0x05, 0x62, 0x14, 0x97, 0xec, 0x99, 0x1a, 0x98, 0xa9, 0xd8, 0xfe, 0x9c, 0x5e, - 0xf6, 0x12, 0x47, 0x48, 0xc1, 0x0f, 0x35, 0x91, 0xd7, 0x3b, 0x83, 0xc2, 0x19, 0xc1, 0x42, 0x0a, - 0x32, 0x62, 0xa7, 0x04, 0x85, 0xb0, 0x47, 0xd5, 0x4d, 0x98, 0x7f, 0xca, 0xed, 0x1d, 0x9b, 0xf5, - 0xc3, 0x6f, 0x72, 0xc0, 0xed, 0xe4, 0x9b, 0x1c, 0x70, 0x3b, 0x2c, 0xab, 0xfe, 0x48, 0x10, 0x5f, - 0xa6, 0x98, 0xd7, 0x23, 0x63, 0x2b, 0x57, 0x53, 0xd4, 0x9f, 0xa0, 0x74, 0x80, 0xfb, 0xc4, 0xf6, - 0xd1, 0x16, 0x94, 0x9e, 0x63, 0x3b, 0x48, 0x47, 0x9e, 0x3a, 0x4d, 0x22, 0xc2, 0xd5, 0x8f, 0x25, - 0x48, 0x73, 0x05, 0x1f, 0xe9, 0x71, 0xc4, 0xea, 0x43, 0xa8, 0x64, 0x96, 0x67, 0x3c, 0x0a, 0x96, - 0xa0, 0x28, 0xa1, 0xc9, 0x60, 0x94, 0xc6, 0x56, 0xee, 0x53, 0x45, 0xfd, 0x55, 0x81, 0x4a, 0xd3, - 0x75, 0x99, 0x90, 0x79, 0xf9, 0xe8, 0xf1, 0x14, 0x8d, 0xf7, 0xa7, 0x69, 0x64, 0xc0, 0xaf, 0x9b, - 0xcb, 0x8f, 0x70, 0xad, 0x19, 0x88, 0x13, 0x9d, 0xd9, 0x04, 0x7d, 0x08, 0x08, 0xfb, 0x7e, 0xe0, - 0xe0, 0xbe, 0x4d, 0x0c, 0x8a, 0x1d, 0x83, 0x33, 0x9b, 0xc4, 0xdb, 0x54, 0x53, 0x4f, 0x1b, 0x3b, - 0x12, 0xfd, 0x08, 0x56, 0x4f, 0x83, 0x3e, 0xe1, 0x2e, 0x11, 0xc4, 0x37, 0x7c, 0xc2, 0x9f, 0x53, - 0x93, 0x18, 0xd8, 0x34, 0x59, 0xe0, 0x26, 0x1f, 0xdd, 0xda, 0x18, 0xd1, 0x8d, 0x00, 0xcd, 0xc8, - 0x2f, 0x2f, 0xe2, 0x4b, 0x58, 0xd4, 0xf1, 0x8b, 0x27, 0x81, 0xf0, 0x02, 0xd1, 0xc2, 0x02, 0xef, - 0x32, 0x77, 0x40, 0x87, 0xe8, 0x63, 0x58, 0x66, 0x72, 0xcd, 0xb0, 0x59, 0x74, 0xf5, 0x86, 0xc7, - 0xc9, 0x80, 0xbe, 0x8c, 0xa9, 0x2c, 0x45, 0xde, 0x83, 0xd8, 0x79, 0x24, 0x7d, 0xf7, 0xbe, 0x81, - 0xea, 0xf4, 0x1b, 0x14, 0xbd, 0x01, 0x8b, 0x9d, 0xe6, 0xa1, 0xd6, 0x32, 0xb4, 0x4e, 0xaf, 0xdd, - 0x7b, 0x66, 0x34, 0x77, 0x7b, 0xed, 0x63, 0xad, 0x3a, 0x87, 0x56, 0xe0, 0xf6, 0xa4, 0x43, 0xdf, - 0xdd, 0x6f, 0x1f, 0x6b, 0xad, 0xaa, 0x82, 0x96, 0xa0, 0xda, 0x7d, 0xd6, 0xed, 0x69, 0x87, 0xc6, - 0x9e, 0xd6, 0xd1, 0xf4, 0x66, 0x4f, 0x6b, 0x55, 0x73, 0x3b, 0x0f, 0xbe, 0xde, 0x1c, 0x52, 0x71, - 0x12, 0xf4, 0xeb, 0x26, 0x73, 0x1a, 0xf2, 0x7a, 0x18, 0x1f, 0x36, 0xd2, 0xd7, 0xfe, 0x90, 0xb8, - 0x0d, 0xaf, 0x7f, 0x7f, 0xc8, 0x1a, 0x93, 0x7f, 0x26, 0xfa, 0x25, 0xf9, 0xac, 0xff, 0xe8, 0x9f, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x5f, 0xa6, 0x64, 0x65, 0x0c, 0x00, 0x00, + // 1157 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xcf, 0x93, 0x13, 0x45, + 0x14, 0xde, 0xc9, 0x26, 0x59, 0xf2, 0x02, 0x4b, 0xe8, 0x5d, 0x30, 0xec, 0x96, 0xb8, 0x8e, 0xe5, + 0x0f, 0x28, 0x49, 0xaa, 0x56, 0x57, 0x84, 0x42, 0x30, 0xbb, 0x19, 0x20, 0xe5, 0x12, 0x70, 0x12, + 0xb0, 0xb0, 0xb4, 0xc6, 0xce, 0x4c, 0x27, 0xb4, 0x99, 0x99, 0x1e, 0xbb, 0x7b, 0x80, 0x78, 0xb1, + 0xf4, 0xe6, 0xcd, 0x83, 0xff, 0x90, 0x27, 0xcb, 0xbb, 0x7f, 0x90, 0xd5, 0x3d, 0x33, 0xc9, 0x24, + 0x1b, 0x50, 0x16, 0xaa, 0xbc, 0xcd, 0xeb, 0xf7, 0xbd, 0xee, 0xef, 0x7d, 0xfd, 0xfa, 0x75, 0x0f, + 0x6c, 0x0f, 0xfd, 0x89, 0x24, 0xd4, 0xf3, 0x9b, 0xd8, 0x0b, 0x68, 0xd8, 0x74, 0x59, 0x10, 0xb0, + 0xb0, 0x11, 0x71, 0x26, 0x19, 0x5a, 0xcf, 0x9c, 0x0d, 0xed, 0xdc, 0x7a, 0x73, 0x0a, 0x76, 0x19, + 0x27, 0x4d, 0xf2, 0x8c, 0xb8, 0xb1, 0xa4, 0x19, 0x7c, 0xeb, 0xc2, 0xbc, 0x9b, 0x7a, 0x24, 0x94, + 0x74, 0x48, 0x09, 0x4f, 0xfd, 0x6f, 0x8d, 0x18, 0x1b, 0xf9, 0xa4, 0xa9, 0xad, 0x41, 0x3c, 0x6c, + 0x4a, 0x1a, 0x10, 0x21, 0x71, 0x10, 0x25, 0x00, 0xf3, 0x5b, 0x38, 0xdb, 0xc5, 0x01, 0xf1, 0xac, + 0x50, 0x52, 0x39, 0xe9, 0x4c, 0xe3, 0x51, 0x1d, 0xd6, 0x22, 0xce, 0xbe, 0x27, 0xae, 0xac, 0x1b, + 0x3b, 0xc6, 0x07, 0x15, 0x3b, 0x33, 0xd1, 0x39, 0x28, 0x7b, 0x2c, 0xc0, 0x34, 0xac, 0x17, 0xb4, + 0x23, 0xb5, 0x10, 0x82, 0x62, 0x88, 0x03, 0x52, 0x5f, 0xd5, 0xa3, 0xfa, 0xdb, 0x64, 0xb0, 0x91, + 0x9b, 0xfe, 0x2e, 0x91, 0xd8, 0xc3, 0x12, 0xa3, 0x1d, 0xa8, 0x7a, 0x44, 0xb8, 0x9c, 0x46, 0x2a, + 0x97, 0x74, 0x81, 0xfc, 0x10, 0xfa, 0x04, 0x4a, 0x42, 0x62, 0x49, 0xf4, 0x1a, 0xeb, 0xbb, 0x3b, + 0x8d, 0x79, 0x5d, 0x1a, 0xb9, 0x59, 0x7b, 0x0a, 0x67, 0x27, 0x70, 0xf3, 0x4f, 0x03, 0xaa, 0x39, + 0x1f, 0xfa, 0x1c, 0x4e, 0x71, 0x22, 0x58, 0xcc, 0x5d, 0xe2, 0xc8, 0x49, 0x44, 0xf4, 0x5a, 0xeb, + 0xbb, 0xdb, 0xb3, 0xf9, 0x94, 0x70, 0x0d, 0x3b, 0xc5, 0xf4, 0x27, 0x11, 0xb1, 0x4f, 0xf2, 0x9c, + 0x85, 0xf6, 0xa0, 0x40, 0x3d, 0x4d, 0xa3, 0xba, 0xfb, 0xee, 0x0b, 0x68, 0xcc, 0xb4, 0xb3, 0x0b, + 0xd4, 0x43, 0x37, 0xe1, 0x44, 0x90, 0xa6, 0xab, 0x15, 0xa9, 0xee, 0xbe, 0xf3, 0x82, 0xe0, 0x4c, + 0x19, 0x7b, 0x1a, 0x64, 0xfe, 0x62, 0x40, 0xb1, 0xc7, 0xb8, 0x44, 0x35, 0x58, 0x1d, 0x93, 0x49, + 0x2a, 0x92, 0xfa, 0x44, 0xd7, 0xa1, 0xe2, 0x51, 0x4e, 0x5c, 0x2d, 0x5e, 0x22, 0xd0, 0x85, 0xc5, + 0xc9, 0x55, 0x68, 0xa3, 0x9d, 0xa1, 0xec, 0x59, 0x80, 0x79, 0x09, 0x2a, 0xd3, 0x71, 0xb4, 0x0e, + 0xd0, 0xb6, 0x7a, 0x07, 0x56, 0xb7, 0xdd, 0xe9, 0xde, 0xae, 0xad, 0xa0, 0x53, 0x50, 0x69, 0x4d, + 0x4d, 0xc3, 0xfc, 0xcb, 0x80, 0x9d, 0xa5, 0x39, 0x1e, 0x52, 0x21, 0x6d, 0xf2, 0x43, 0x4c, 0x84, + 0x3c, 0x46, 0xa9, 0x6c, 0x42, 0xc9, 0xa7, 0x01, 0x95, 0x5a, 0x99, 0x53, 0x76, 0x62, 0xa8, 0x51, + 0xc9, 0xc6, 0x24, 0xac, 0x17, 0x35, 0x38, 0x31, 0xd0, 0x65, 0x58, 0x13, 0x8c, 0x4b, 0x67, 0x30, + 0xa9, 0x97, 0xb4, 0x8e, 0x9b, 0xcb, 0x52, 0xb5, 0xcb, 0x0a, 0xb4, 0x3f, 0x51, 0x64, 0x86, 0xd4, + 0x97, 0x84, 0x8b, 0x7a, 0x39, 0x21, 0x93, 0x9a, 0xe6, 0xcf, 0x05, 0x38, 0x97, 0xcb, 0x25, 0x9f, + 0xc1, 0xab, 0x57, 0x49, 0x4e, 0x83, 0xc2, 0xf3, 0x34, 0x58, 0x5d, 0xae, 0x41, 0x71, 0xa9, 0x06, + 0xa5, 0xe7, 0x68, 0x50, 0x7e, 0x39, 0x0d, 0xd6, 0xe6, 0x35, 0x90, 0x70, 0xfe, 0xb9, 0xdb, 0x89, + 0x5a, 0x70, 0x42, 0xd9, 0x92, 0x12, 0x51, 0x37, 0x76, 0x56, 0xff, 0x7b, 0xbd, 0x4f, 0xc3, 0x66, + 0xf4, 0x0b, 0x39, 0xfa, 0xe6, 0x77, 0x70, 0x7a, 0x41, 0x78, 0x74, 0xe5, 0xc8, 0x5a, 0xdb, 0x2f, + 0x58, 0xeb, 0x5f, 0x57, 0xf8, 0xcd, 0x98, 0xeb, 0x63, 0xb7, 0xc9, 0x6b, 0xdc, 0xda, 0xe3, 0x35, + 0x00, 0xf3, 0x6f, 0x03, 0xea, 0x39, 0xef, 0x83, 0xc8, 0x53, 0x6d, 0xea, 0x7f, 0x66, 0xf5, 0xea, + 0x6d, 0x69, 0x7b, 0xae, 0x82, 0xb2, 0xac, 0x44, 0xc4, 0x42, 0x41, 0xcc, 0xcf, 0xa0, 0x76, 0x6f, + 0xa0, 0xaa, 0x3e, 0xb7, 0x01, 0x17, 0x35, 0x51, 0x43, 0xaf, 0x75, 0x7e, 0x21, 0xbf, 0x05, 0xc9, + 0xfe, 0x30, 0x60, 0x23, 0x4b, 0x39, 0x7f, 0x3c, 0xf7, 0x72, 0x53, 0xbc, 0x44, 0xae, 0xd3, 0x13, + 0x56, 0x58, 0x7a, 0xc2, 0x56, 0xf3, 0x27, 0x2c, 0x77, 0x64, 0x8a, 0x73, 0x47, 0xe6, 0x25, 0xfb, + 0x8f, 0x79, 0x03, 0xce, 0x58, 0x01, 0xa6, 0x7e, 0x97, 0x29, 0x26, 0x2e, 0xd6, 0x5d, 0xf6, 0x22, + 0xd4, 0x38, 0x71, 0x69, 0x44, 0x49, 0x28, 0x85, 0x43, 0x94, 0x5f, 0x57, 0x7d, 0xc5, 0x3e, 0x3d, + 0x1b, 0xd7, 0x61, 0xe6, 0x3e, 0x9c, 0xbd, 0x8f, 0x47, 0x84, 0xb7, 0x63, 0x39, 0x39, 0xee, 0x1c, + 0x37, 0xe0, 0x4c, 0xcf, 0xc7, 0xee, 0xf8, 0xb8, 0xf1, 0xbf, 0x17, 0xe0, 0xe4, 0x5c, 0xec, 0x0d, + 0x28, 0x47, 0x8f, 0xb1, 0x48, 0xcf, 0xea, 0xfa, 0xee, 0x7b, 0x0b, 0xfb, 0xf8, 0x15, 0xe3, 0xe3, + 0xa1, 0xcf, 0x9e, 0x5a, 0xd3, 0xe7, 0xc9, 0x7d, 0x05, 0xb7, 0xd3, 0x28, 0x74, 0x15, 0x4a, 0xc9, + 0x82, 0x49, 0xbd, 0xbe, 0xbd, 0xa8, 0xe0, 0x11, 0xc5, 0xee, 0xac, 0xd8, 0x49, 0x04, 0xba, 0x05, + 0x10, 0x29, 0x3d, 0x1c, 0x2f, 0x96, 0x93, 0xb4, 0x64, 0x8f, 0xd4, 0xc0, 0x52, 0xc5, 0xee, 0xac, + 0xd8, 0x95, 0x28, 0x73, 0x28, 0x0a, 0x42, 0x69, 0xa2, 0xb7, 0x77, 0x09, 0x85, 0x23, 0x82, 0x29, + 0x0a, 0x3a, 0x62, 0xbf, 0x0c, 0x45, 0x75, 0x46, 0xcd, 0x3d, 0x58, 0x7b, 0xc0, 0xfd, 0x7d, 0x9f, + 0x0d, 0xd4, 0x9d, 0x1c, 0x73, 0x3f, 0xbb, 0x93, 0x63, 0xee, 0xab, 0xb2, 0x1a, 0x4c, 0x24, 0x11, + 0x3a, 0xc5, 0x55, 0x3b, 0x31, 0xae, 0x15, 0xea, 0x86, 0xf9, 0x13, 0x94, 0x0f, 0xf1, 0x80, 0xf8, + 0x02, 0x5d, 0x83, 0xf2, 0x13, 0xec, 0xc7, 0xd3, 0x96, 0x67, 0x2e, 0x92, 0x48, 0x70, 0x8d, 0x87, + 0x1a, 0x64, 0x85, 0x92, 0x4f, 0xec, 0x34, 0x62, 0xeb, 0x2a, 0x54, 0x73, 0xc3, 0x4b, 0x1e, 0x05, + 0x9b, 0x50, 0xd2, 0xd0, 0xac, 0x31, 0x6a, 0xe3, 0x5a, 0xe1, 0x53, 0xc3, 0xfc, 0xd5, 0x80, 0x6a, + 0x2b, 0x0c, 0x99, 0xd4, 0x79, 0x09, 0x74, 0x73, 0x81, 0xc6, 0xfb, 0x8b, 0x34, 0x72, 0xe0, 0xd7, + 0xcd, 0xe5, 0x47, 0x38, 0xd1, 0x8a, 0xe5, 0x63, 0x9b, 0xf9, 0x04, 0x7d, 0x08, 0x08, 0x0b, 0x11, + 0x07, 0x78, 0xe0, 0x13, 0x87, 0xe2, 0xc0, 0xe1, 0xcc, 0x27, 0xe9, 0x34, 0xb5, 0xa9, 0xa7, 0x83, + 0x03, 0x8d, 0xbe, 0x0e, 0x5b, 0xe3, 0x78, 0x40, 0x78, 0x48, 0x24, 0x11, 0x8e, 0x20, 0xfc, 0x09, + 0x75, 0x89, 0x83, 0x5d, 0x97, 0xc5, 0x61, 0x76, 0xe9, 0xd6, 0x67, 0x88, 0x5e, 0x02, 0x68, 0x25, + 0x7e, 0xbd, 0x11, 0x5f, 0xc0, 0x86, 0x8d, 0x9f, 0xde, 0x8b, 0x65, 0x14, 0xcb, 0x36, 0x96, 0xf8, + 0x80, 0x85, 0x43, 0x3a, 0x42, 0x1f, 0xc3, 0x39, 0xa6, 0xc7, 0x1c, 0x9f, 0x25, 0x5b, 0xef, 0x44, + 0x9c, 0x0c, 0xe9, 0xb3, 0x94, 0xca, 0x66, 0xe2, 0x3d, 0x4c, 0x9d, 0xf7, 0xb5, 0xcf, 0xfc, 0x12, + 0x2a, 0xb7, 0x94, 0x6a, 0x0f, 0xec, 0x43, 0xa1, 0xee, 0x78, 0x1a, 0x46, 0xb1, 0x14, 0x69, 0x48, + 0x6a, 0xa9, 0xae, 0x92, 0x04, 0x8b, 0xec, 0x55, 0x90, 0x9a, 0xea, 0xb1, 0xec, 0x11, 0x77, 0x9c, + 0x3d, 0x96, 0xd5, 0xf7, 0xa5, 0x6f, 0xa0, 0xb6, 0xf8, 0xac, 0x45, 0x6f, 0xc0, 0x46, 0xb7, 0x75, + 0xd7, 0x6a, 0x3b, 0x56, 0xb7, 0xdf, 0xe9, 0x3f, 0x72, 0x5a, 0x07, 0xfd, 0xce, 0x43, 0xab, 0xb6, + 0x82, 0xce, 0xc3, 0xd9, 0x79, 0x87, 0x7d, 0x70, 0xa7, 0xf3, 0xd0, 0x6a, 0xd7, 0x0c, 0xb4, 0x09, + 0xb5, 0xde, 0xa3, 0x5e, 0xdf, 0xba, 0xeb, 0xdc, 0xb6, 0xba, 0x96, 0xdd, 0xea, 0x5b, 0xed, 0x5a, + 0x61, 0xff, 0xca, 0xd7, 0x7b, 0x23, 0x2a, 0x1f, 0xc7, 0x83, 0x86, 0xcb, 0x82, 0xa6, 0xde, 0x71, + 0xc6, 0x47, 0xcd, 0xe9, 0x0f, 0xc4, 0x88, 0x84, 0xcd, 0x68, 0x70, 0x79, 0xc4, 0x9a, 0xf3, 0xff, + 0x27, 0x83, 0xb2, 0xfe, 0x53, 0xf8, 0xe8, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x25, 0x7f, 0xbf, + 0x38, 0xb8, 0x0c, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/common.pb.validate.go b/gen/pb-go/flyteidl/admin/common.pb.validate.go index 2e1d38dfc..c5e000b5d 100644 --- a/gen/pb-go/flyteidl/admin/common.pb.validate.go +++ b/gen/pb-go/flyteidl/admin/common.pb.validate.go @@ -1734,3 +1734,73 @@ var _ interface { Cause() error ErrorName() string } = RawOutputDataConfigValidationError{} + +// Validate checks the field values on FlyteURLs with the rules defined in the +// proto definition for this message. If any rules are violated, an error is returned. +func (m *FlyteURLs) Validate() error { + if m == nil { + return nil + } + + // no validation rules for Inputs + + // no validation rules for Outputs + + // no validation rules for Deck + + return nil +} + +// FlyteURLsValidationError is the validation error returned by +// FlyteURLs.Validate if the designated constraints aren't met. +type FlyteURLsValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e FlyteURLsValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e FlyteURLsValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e FlyteURLsValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e FlyteURLsValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e FlyteURLsValidationError) ErrorName() string { return "FlyteURLsValidationError" } + +// Error satisfies the builtin error interface +func (e FlyteURLsValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sFlyteURLs.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = FlyteURLsValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = FlyteURLsValidationError{} diff --git a/gen/pb-go/flyteidl/admin/node_execution.pb.go b/gen/pb-go/flyteidl/admin/node_execution.pb.go index beed50cd4..4e69dbc4d 100644 --- a/gen/pb-go/flyteidl/admin/node_execution.pb.go +++ b/gen/pb-go/flyteidl/admin/node_execution.pb.go @@ -865,6 +865,7 @@ type NodeExecutionGetDataResponse struct { FullOutputs *core.LiteralMap `protobuf:"bytes,4,opt,name=full_outputs,json=fullOutputs,proto3" json:"full_outputs,omitempty"` // Optional Workflow closure for a dynamically generated workflow, in the case this node yields a dynamic workflow we return its structure here. DynamicWorkflow *DynamicWorkflowNodeMetadata `protobuf:"bytes,16,opt,name=dynamic_workflow,json=dynamicWorkflow,proto3" json:"dynamic_workflow,omitempty"` + FlyteUrls *FlyteURLs `protobuf:"bytes,17,opt,name=flyte_urls,json=flyteUrls,proto3" json:"flyte_urls,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -932,6 +933,13 @@ func (m *NodeExecutionGetDataResponse) GetDynamicWorkflow() *DynamicWorkflowNode return nil } +func (m *NodeExecutionGetDataResponse) GetFlyteUrls() *FlyteURLs { + if m != nil { + return m.FlyteUrls + } + return nil +} + func init() { proto.RegisterType((*NodeExecutionGetRequest)(nil), "flyteidl.admin.NodeExecutionGetRequest") proto.RegisterType((*NodeExecutionListRequest)(nil), "flyteidl.admin.NodeExecutionListRequest") @@ -952,78 +960,80 @@ func init() { } var fileDescriptor_f73b3eae493fd736 = []byte{ - // 1164 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdd, 0x6e, 0x1b, 0xc5, - 0x17, 0xef, 0x3a, 0x4d, 0x62, 0x1f, 0x27, 0x8e, 0x33, 0x7f, 0xf7, 0x5f, 0xb7, 0xe9, 0x87, 0xd9, - 0xb6, 0x28, 0x80, 0x6a, 0x4b, 0xae, 0xc2, 0x97, 0x10, 0x10, 0x27, 0xfd, 0x08, 0xb4, 0x50, 0x26, - 0x0d, 0x48, 0x08, 0xb1, 0x1a, 0xef, 0x8e, 0x9d, 0xc1, 0xeb, 0x9d, 0xed, 0xcc, 0xac, 0x82, 0x1f, - 0x85, 0x2b, 0x5e, 0x85, 0x27, 0xe0, 0x09, 0xb8, 0x47, 0xe2, 0x01, 0xb8, 0x46, 0x33, 0x3b, 0xbb, - 0xf6, 0x6e, 0xdd, 0x44, 0x2a, 0x17, 0x5c, 0xce, 0x39, 0xbf, 0xf3, 0x39, 0xbf, 0x73, 0x66, 0x17, - 0xee, 0x8c, 0xc2, 0x99, 0xa2, 0x2c, 0x08, 0x7b, 0x24, 0x98, 0xb2, 0xa8, 0x17, 0xf1, 0x80, 0x7a, - 0xf4, 0x67, 0xea, 0x27, 0x8a, 0xf1, 0xa8, 0x1b, 0x0b, 0xae, 0x38, 0x6a, 0x64, 0xa0, 0xae, 0x01, - 0x5d, 0xdf, 0x29, 0x19, 0xf9, 0x7c, 0x3a, 0xcd, 0xc0, 0xd7, 0x6f, 0xe6, 0x4a, 0x9f, 0x0b, 0xda, - 0x2b, 0xf9, 0x5a, 0xb0, 0x35, 0x6a, 0x9f, 0x28, 0x12, 0xf2, 0xb1, 0x55, 0xde, 0x28, 0x29, 0xf9, - 0x34, 0x66, 0x21, 0x15, 0x56, 0x7b, 0xab, 0xa8, 0x65, 0x01, 0x8d, 0x14, 0x1b, 0xb1, 0x5c, 0x5f, - 0xb2, 0x0e, 0x99, 0xa2, 0x82, 0x84, 0xd2, 0x6a, 0x6f, 0x8f, 0x39, 0x1f, 0x87, 0xb4, 0x67, 0x4e, - 0xc3, 0x64, 0xd4, 0x53, 0x6c, 0x4a, 0xa5, 0x22, 0xd3, 0x38, 0x73, 0x5f, 0x06, 0x04, 0x89, 0x20, - 0xf3, 0xcc, 0xdd, 0x6f, 0xe0, 0xea, 0x57, 0x3c, 0xa0, 0x0f, 0xb3, 0x82, 0x1e, 0x53, 0x85, 0xe9, - 0xcb, 0x84, 0x4a, 0x85, 0xde, 0x87, 0x0a, 0x0b, 0xda, 0x4e, 0xc7, 0xd9, 0xad, 0xf7, 0xdf, 0xee, - 0xe6, 0xdd, 0xd2, 0x69, 0x74, 0x0b, 0x36, 0x47, 0x79, 0xce, 0xb8, 0xc2, 0x02, 0xf7, 0x97, 0x0a, - 0xb4, 0x0b, 0xfa, 0xa7, 0x4c, 0xe6, 0x4e, 0x7f, 0x84, 0x2b, 0x67, 0x5c, 0x4c, 0x46, 0x21, 0x3f, - 0x9b, 0xdf, 0x88, 0x97, 0xc7, 0x79, 0xb7, 0x14, 0xe7, 0x3b, 0x8b, 0x5d, 0x16, 0xeb, 0x7f, 0x67, - 0xaf, 0x2a, 0x51, 0x0b, 0x56, 0x43, 0x36, 0x65, 0xaa, 0x5d, 0xe9, 0x38, 0xbb, 0x9b, 0x38, 0x3d, - 0x68, 0xa9, 0xe2, 0x13, 0x1a, 0xb5, 0x57, 0x3a, 0xce, 0x6e, 0x0d, 0xa7, 0x07, 0xd4, 0x86, 0xf5, - 0x11, 0x0b, 0x15, 0x15, 0xb2, 0x7d, 0xd9, 0xc8, 0xb3, 0x23, 0xba, 0x0f, 0xeb, 0x92, 0x0b, 0xe5, - 0x0d, 0x67, 0xed, 0x55, 0x93, 0x57, 0xab, 0x5b, 0x64, 0x4b, 0xf7, 0x98, 0x0b, 0x85, 0xd7, 0x34, - 0x68, 0x30, 0x43, 0xbb, 0xd0, 0x4c, 0x22, 0xf6, 0x32, 0xa1, 0x5e, 0x4c, 0x04, 0x8d, 0x94, 0xae, - 0x67, 0xcd, 0x78, 0x6c, 0xa4, 0xf2, 0xe7, 0x46, 0x7c, 0x14, 0xb8, 0x7f, 0x39, 0x70, 0xbb, 0xd0, - 0x9b, 0x47, 0x5c, 0xbc, 0x20, 0x72, 0xb2, 0xd8, 0x22, 0x0c, 0xdb, 0x8a, 0xc8, 0xc9, 0xb2, 0xf6, - 0x94, 0xaf, 0x41, 0x9b, 0x2e, 0x6b, 0xcd, 0x96, 0x2a, 0x2a, 0xfe, 0x93, 0xb6, 0xb8, 0x7f, 0x3a, - 0xb0, 0x59, 0x28, 0xf6, 0x4d, 0x29, 0x85, 0x76, 0xa0, 0xc6, 0xa2, 0x38, 0x51, 0x5e, 0x22, 0x98, - 0x29, 0xa1, 0x86, 0xab, 0x46, 0x70, 0x22, 0x18, 0xfa, 0x14, 0xd6, 0xfd, 0x90, 0xcb, 0x44, 0x50, - 0x53, 0x47, 0xbd, 0x7f, 0xb7, 0x9c, 0x55, 0xc1, 0xf5, 0x41, 0x8a, 0xc5, 0x99, 0x11, 0xda, 0x87, - 0xea, 0x94, 0x2a, 0x12, 0x10, 0x45, 0x4c, 0xc1, 0xf5, 0xfe, 0xbd, 0x73, 0x1d, 0x3c, 0xa3, 0x8a, - 0x1c, 0x12, 0x45, 0x70, 0x6e, 0xe6, 0xfe, 0xea, 0xc0, 0x95, 0xa5, 0x18, 0x74, 0x1b, 0xea, 0x82, - 0x2a, 0x31, 0xf3, 0xc6, 0x82, 0x27, 0xb1, 0x29, 0xbd, 0x86, 0xc1, 0x88, 0x1e, 0x6b, 0x09, 0xba, - 0x0b, 0x0d, 0x26, 0x33, 0xde, 0xe8, 0x45, 0x65, 0xea, 0xab, 0xe2, 0x0d, 0x26, 0x53, 0xd6, 0x68, - 0xbf, 0xa8, 0x03, 0x1b, 0x32, 0xa6, 0xbe, 0x01, 0x68, 0x3a, 0xa4, 0x17, 0x06, 0x5a, 0xa6, 0xf5, - 0x47, 0x01, 0xba, 0x09, 0xc0, 0xa4, 0x17, 0xcc, 0x22, 0x32, 0x65, 0xbe, 0xa9, 0xa3, 0x8a, 0x6b, - 0x4c, 0x1e, 0xa6, 0x02, 0xf7, 0x25, 0x6c, 0xbf, 0x32, 0x93, 0xe8, 0x11, 0x6c, 0x15, 0x57, 0xa3, - 0x6c, 0x3b, 0x9d, 0x95, 0xdd, 0x7a, 0xff, 0xe6, 0xb9, 0x0d, 0xc0, 0x8d, 0x68, 0xf1, 0x28, 0xe7, - 0x3c, 0xaa, 0x2c, 0xf0, 0xc8, 0xfd, 0x7b, 0x15, 0x5a, 0xcb, 0x3a, 0x8f, 0xee, 0x00, 0xf0, 0x44, - 0x65, 0xd7, 0x69, 0x5a, 0x32, 0xa8, 0xb4, 0x9d, 0x27, 0x97, 0x70, 0x2d, 0x95, 0xeb, 0x5b, 0xdd, - 0x83, 0x55, 0x2a, 0x04, 0x17, 0xc6, 0x67, 0x21, 0x23, 0xc3, 0x96, 0xdc, 0xe9, 0x43, 0x0d, 0x7a, - 0x72, 0x09, 0xa7, 0x68, 0xf4, 0x39, 0xd4, 0xad, 0x6f, 0x73, 0x9f, 0x60, 0x8c, 0xaf, 0x95, 0x8c, - 0x9f, 0xa6, 0x4b, 0xf4, 0x19, 0x89, 0x6d, 0x5c, 0x9b, 0x8f, 0xb9, 0xb1, 0x0f, 0x61, 0x35, 0x3e, - 0x25, 0x32, 0x25, 0x53, 0xa3, 0xef, 0x9e, 0x47, 0xd3, 0xee, 0x73, 0x8d, 0xc4, 0xa9, 0x01, 0xfa, - 0x08, 0x40, 0x2a, 0x22, 0x14, 0x0d, 0x3c, 0xa2, 0x2c, 0x95, 0xae, 0x77, 0xd3, 0x05, 0xdc, 0xcd, - 0x16, 0x70, 0xf7, 0x45, 0xb6, 0xa1, 0x71, 0xcd, 0xa2, 0xf7, 0x15, 0xda, 0x83, 0x6a, 0xb6, 0x98, - 0xed, 0x68, 0x5d, 0x7b, 0xc5, 0xf0, 0xd0, 0x02, 0x70, 0x0e, 0xd5, 0x11, 0x7d, 0x41, 0x89, 0x8d, - 0xb8, 0x76, 0x71, 0x44, 0x8b, 0xde, 0x57, 0xda, 0x34, 0x89, 0x83, 0xcc, 0x74, 0xfd, 0x62, 0x53, - 0x8b, 0xde, 0x57, 0xe8, 0x07, 0xf8, 0x7f, 0xbe, 0xc3, 0x0d, 0x7f, 0xf2, 0xf1, 0xa9, 0x2e, 0x9f, - 0xbf, 0x6c, 0x8b, 0xeb, 0xde, 0x3d, 0xb3, 0xd8, 0x27, 0x0e, 0x6e, 0x9d, 0x2d, 0x91, 0xa3, 0xe7, - 0x80, 0xcc, 0xfa, 0x2b, 0x7a, 0xae, 0x19, 0xcf, 0x9d, 0xb2, 0x67, 0xbd, 0x00, 0x4b, 0x5e, 0x9b, - 0xaa, 0x24, 0x43, 0xd7, 0xa0, 0x1a, 0x50, 0x7f, 0x62, 0xd8, 0x56, 0x4f, 0x37, 0x9a, 0x3e, 0x6b, - 0x96, 0xf5, 0xa0, 0x65, 0x47, 0xc6, 0xfb, 0x89, 0x0f, 0x3d, 0x33, 0x63, 0x1a, 0xb6, 0x61, 0x60, - 0xdb, 0x56, 0xf7, 0x05, 0x1f, 0x1e, 0xc7, 0xd4, 0x3f, 0x11, 0x6c, 0xb0, 0x05, 0x9b, 0x96, 0x5f, - 0x82, 0xca, 0x24, 0x54, 0x83, 0x6d, 0xd8, 0x52, 0x44, 0x8c, 0xa9, 0xca, 0x73, 0x75, 0x03, 0x68, - 0x2d, 0xab, 0x18, 0x3d, 0x85, 0x3a, 0x9d, 0x2f, 0xb8, 0x37, 0x78, 0xf1, 0x16, 0xcd, 0xdd, 0xdf, - 0x1c, 0x68, 0x96, 0xcb, 0x47, 0x87, 0xb0, 0xe1, 0x13, 0xff, 0x94, 0x7a, 0x52, 0x11, 0x95, 0x48, - 0x13, 0xa3, 0xd1, 0x7f, 0xab, 0x14, 0xe3, 0x20, 0xfd, 0x3e, 0x39, 0xd0, 0xc8, 0x63, 0x03, 0xc4, - 0x75, 0x7f, 0x7e, 0x40, 0x9f, 0x41, 0xdd, 0x7e, 0xc2, 0x78, 0x13, 0x3a, 0xb3, 0x13, 0x78, 0x6b, - 0xb9, 0x93, 0x2c, 0x34, 0x06, 0x6b, 0xf2, 0x25, 0x9d, 0xa1, 0x7b, 0xd0, 0xf0, 0x4f, 0xa9, 0x3f, - 0x89, 0x39, 0x8b, 0xd2, 0x29, 0x4f, 0x5f, 0x92, 0xcd, 0xb9, 0xf4, 0x44, 0x30, 0xf7, 0x77, 0x07, - 0x76, 0xec, 0x82, 0x5a, 0xda, 0xb0, 0x77, 0x16, 0x9e, 0x8b, 0xf2, 0x0c, 0x97, 0x5e, 0x88, 0x63, - 0xd8, 0xb6, 0x1f, 0x56, 0x81, 0x97, 0xd1, 0xca, 0x26, 0x5e, 0x7e, 0x68, 0x0e, 0x2c, 0x2e, 0x0b, - 0x99, 0x3d, 0x08, 0x4d, 0xbf, 0xa4, 0x78, 0x2d, 0x3b, 0x56, 0x5e, 0xc3, 0x0e, 0xf7, 0x04, 0x76, - 0xca, 0x5f, 0x53, 0xe6, 0xa5, 0xf8, 0x97, 0x5f, 0x54, 0x7f, 0x54, 0xe0, 0xc6, 0x72, 0xbf, 0x32, - 0xe6, 0x91, 0xa4, 0xe8, 0x01, 0xac, 0x99, 0xe7, 0x50, 0x5a, 0xe7, 0x57, 0xcb, 0x73, 0x72, 0x22, - 0xc2, 0x41, 0xc8, 0x87, 0x7a, 0xdd, 0x61, 0x0b, 0x45, 0x7b, 0xb0, 0x9e, 0x52, 0x59, 0xda, 0x46, - 0x9d, 0x6b, 0x95, 0x61, 0xd1, 0xc7, 0x50, 0x1f, 0x25, 0x61, 0xe8, 0xd9, 0x80, 0x2b, 0x17, 0x6c, - 0x58, 0x0c, 0x1a, 0x7d, 0x94, 0x86, 0xfc, 0x04, 0x36, 0x8c, 0x6d, 0x16, 0xf7, 0xf2, 0x45, 0xc6, - 0x26, 0xd4, 0xd7, 0x36, 0xf2, 0xb7, 0xd0, 0xcc, 0xae, 0x23, 0xbf, 0xe2, 0xa6, 0xf1, 0xf0, 0x5e, - 0x39, 0xf3, 0x73, 0x58, 0x85, 0xb7, 0x82, 0xa2, 0x72, 0xf0, 0xc1, 0xf7, 0x7b, 0x63, 0xa6, 0x4e, - 0x93, 0x61, 0xd7, 0xe7, 0xd3, 0x9e, 0xf1, 0xc4, 0xc5, 0xb8, 0x97, 0x7f, 0x78, 0x8f, 0x69, 0xd4, - 0x8b, 0x87, 0xf7, 0xc7, 0xbc, 0x57, 0xfc, 0x45, 0x18, 0xae, 0x99, 0x3d, 0xf9, 0xe0, 0x9f, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x42, 0xbd, 0xb0, 0xab, 0x70, 0x0c, 0x00, 0x00, + // 1187 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdd, 0x6e, 0x1b, 0x45, + 0x14, 0xee, 0x26, 0x4d, 0x62, 0x1f, 0x27, 0x4e, 0x32, 0xb8, 0xd4, 0x6d, 0xfa, 0x63, 0xb6, 0x2d, + 0x0a, 0xa0, 0xda, 0x92, 0xab, 0x40, 0x41, 0x08, 0x88, 0x93, 0xfe, 0x04, 0x52, 0x28, 0x93, 0x1a, + 0x24, 0x84, 0x58, 0x8d, 0x77, 0xc7, 0xce, 0xe0, 0xf5, 0xce, 0x76, 0x66, 0x56, 0xc1, 0x2f, 0x82, + 0xc4, 0x15, 0xaf, 0xc2, 0x13, 0xf0, 0x1a, 0x48, 0x3c, 0x00, 0xd7, 0x68, 0x66, 0x67, 0xd7, 0xde, + 0xad, 0x9b, 0x48, 0xe5, 0x82, 0xcb, 0x39, 0xe7, 0x3b, 0xbf, 0xf3, 0x9d, 0x33, 0xbb, 0x70, 0x67, + 0x18, 0x4e, 0x15, 0x65, 0x41, 0xd8, 0x21, 0xc1, 0x84, 0x45, 0x9d, 0x88, 0x07, 0xd4, 0xa3, 0xbf, + 0x50, 0x3f, 0x51, 0x8c, 0x47, 0xed, 0x58, 0x70, 0xc5, 0x51, 0x3d, 0x03, 0xb5, 0x0d, 0xe8, 0xfa, + 0x4e, 0xc9, 0xc8, 0xe7, 0x93, 0x49, 0x06, 0xbe, 0x7e, 0x33, 0x57, 0xfa, 0x5c, 0xd0, 0x4e, 0xc9, + 0xd7, 0x9c, 0xad, 0x51, 0xfb, 0x44, 0x91, 0x90, 0x8f, 0xac, 0xf2, 0x46, 0x49, 0xc9, 0x27, 0x31, + 0x0b, 0xa9, 0xb0, 0xda, 0x5b, 0x45, 0x2d, 0x0b, 0x68, 0xa4, 0xd8, 0x90, 0xe5, 0xfa, 0x92, 0x75, + 0xc8, 0x14, 0x15, 0x24, 0x94, 0x56, 0x7b, 0x7b, 0xc4, 0xf9, 0x28, 0xa4, 0x1d, 0x73, 0x1a, 0x24, + 0xc3, 0x8e, 0x62, 0x13, 0x2a, 0x15, 0x99, 0xc4, 0x99, 0xfb, 0x32, 0x20, 0x48, 0x04, 0x99, 0x65, + 0xee, 0x7e, 0x0b, 0x57, 0xbf, 0xe6, 0x01, 0x7d, 0x94, 0x15, 0xf4, 0x84, 0x2a, 0x4c, 0x5f, 0x26, + 0x54, 0x2a, 0xf4, 0x21, 0x2c, 0xb1, 0xa0, 0xe9, 0xb4, 0x9c, 0xdd, 0x5a, 0xf7, 0xdd, 0x76, 0xde, + 0x2d, 0x9d, 0x46, 0xbb, 0x60, 0x73, 0x94, 0xe7, 0x8c, 0x97, 0x58, 0xe0, 0xfe, 0xb6, 0x04, 0xcd, + 0x82, 0xfe, 0x98, 0xc9, 0xdc, 0xe9, 0x4f, 0x70, 0xe5, 0x8c, 0x8b, 0xf1, 0x30, 0xe4, 0x67, 0xb3, + 0x1b, 0xf1, 0xf2, 0x38, 0xef, 0x97, 0xe2, 0x7c, 0x6f, 0xb1, 0x8b, 0x62, 0xbd, 0x75, 0xf6, 0xaa, + 0x12, 0x35, 0x60, 0x25, 0x64, 0x13, 0xa6, 0x9a, 0x4b, 0x2d, 0x67, 0x77, 0x03, 0xa7, 0x07, 0x2d, + 0x55, 0x7c, 0x4c, 0xa3, 0xe6, 0x72, 0xcb, 0xd9, 0xad, 0xe2, 0xf4, 0x80, 0x9a, 0xb0, 0x36, 0x64, + 0xa1, 0xa2, 0x42, 0x36, 0x2f, 0x1b, 0x79, 0x76, 0x44, 0xf7, 0x61, 0x4d, 0x72, 0xa1, 0xbc, 0xc1, + 0xb4, 0xb9, 0x62, 0xf2, 0x6a, 0xb4, 0x8b, 0x6c, 0x69, 0x9f, 0x70, 0xa1, 0xf0, 0xaa, 0x06, 0xf5, + 0xa6, 0x68, 0x17, 0xb6, 0x92, 0x88, 0xbd, 0x4c, 0xa8, 0x17, 0x13, 0x41, 0x23, 0xa5, 0xeb, 0x59, + 0x35, 0x1e, 0xeb, 0xa9, 0xfc, 0xb9, 0x11, 0x1f, 0x05, 0xee, 0xdf, 0x0e, 0xdc, 0x2e, 0xf4, 0xe6, + 0x31, 0x17, 0x2f, 0x88, 0x1c, 0xcf, 0xb7, 0x08, 0xc3, 0xb6, 0x22, 0x72, 0xbc, 0xa8, 0x3d, 0xe5, + 0x6b, 0xd0, 0xa6, 0x8b, 0x5a, 0xb3, 0xa9, 0x8a, 0x8a, 0xff, 0xa5, 0x2d, 0xee, 0x5f, 0x0e, 0x6c, + 0x14, 0x8a, 0x7d, 0x53, 0x4a, 0xa1, 0x1d, 0xa8, 0xb2, 0x28, 0x4e, 0x94, 0x97, 0x08, 0x66, 0x4a, + 0xa8, 0xe2, 0x8a, 0x11, 0xf4, 0x05, 0x43, 0x9f, 0xc1, 0x9a, 0x1f, 0x72, 0x99, 0x08, 0x6a, 0xea, + 0xa8, 0x75, 0xef, 0x96, 0xb3, 0x2a, 0xb8, 0x3e, 0x48, 0xb1, 0x38, 0x33, 0x42, 0xfb, 0x50, 0x99, + 0x50, 0x45, 0x02, 0xa2, 0x88, 0x29, 0xb8, 0xd6, 0xbd, 0x77, 0xae, 0x83, 0x67, 0x54, 0x91, 0x43, + 0xa2, 0x08, 0xce, 0xcd, 0xdc, 0xdf, 0x1d, 0xb8, 0xb2, 0x10, 0x83, 0x6e, 0x43, 0x4d, 0x50, 0x25, + 0xa6, 0xde, 0x48, 0xf0, 0x24, 0x36, 0xa5, 0x57, 0x31, 0x18, 0xd1, 0x13, 0x2d, 0x41, 0x77, 0xa1, + 0xce, 0x64, 0xc6, 0x1b, 0xbd, 0xa8, 0x4c, 0x7d, 0x15, 0xbc, 0xce, 0x64, 0xca, 0x1a, 0xed, 0x17, + 0xb5, 0x60, 0x5d, 0xc6, 0xd4, 0x37, 0x00, 0x4d, 0x87, 0xf4, 0xc2, 0x40, 0xcb, 0xb4, 0xfe, 0x28, + 0x40, 0x37, 0x01, 0x98, 0xf4, 0x82, 0x69, 0x44, 0x26, 0xcc, 0x37, 0x75, 0x54, 0x70, 0x95, 0xc9, + 0xc3, 0x54, 0xe0, 0xbe, 0x84, 0xed, 0x57, 0x66, 0x12, 0x3d, 0x86, 0xcd, 0xe2, 0x6a, 0x94, 0x4d, + 0xa7, 0xb5, 0xbc, 0x5b, 0xeb, 0xde, 0x3c, 0xb7, 0x01, 0xb8, 0x1e, 0xcd, 0x1f, 0xe5, 0x8c, 0x47, + 0x4b, 0x73, 0x3c, 0x72, 0xff, 0x59, 0x81, 0xc6, 0xa2, 0xce, 0xa3, 0x3b, 0x00, 0x3c, 0x51, 0xd9, + 0x75, 0x9a, 0x96, 0xf4, 0x96, 0x9a, 0xce, 0xd3, 0x4b, 0xb8, 0x9a, 0xca, 0xf5, 0xad, 0xee, 0xc1, + 0x0a, 0x15, 0x82, 0x0b, 0xe3, 0xb3, 0x90, 0x91, 0x61, 0x4b, 0xee, 0xf4, 0x91, 0x06, 0x3d, 0xbd, + 0x84, 0x53, 0x34, 0xfa, 0x02, 0x6a, 0xd6, 0xb7, 0xb9, 0x4f, 0x30, 0xc6, 0xd7, 0x4a, 0xc6, 0xc7, + 0xe9, 0x12, 0x7d, 0x46, 0x62, 0x1b, 0xd7, 0xe6, 0x63, 0x6e, 0xec, 0x21, 0xac, 0xc4, 0xa7, 0x44, + 0xa6, 0x64, 0xaa, 0x77, 0xdd, 0xf3, 0x68, 0xda, 0x7e, 0xae, 0x91, 0x38, 0x35, 0x40, 0x1f, 0x03, + 0x48, 0x45, 0x84, 0xa2, 0x81, 0x47, 0x94, 0xa5, 0xd2, 0xf5, 0x76, 0xba, 0x80, 0xdb, 0xd9, 0x02, + 0x6e, 0xbf, 0xc8, 0x36, 0x34, 0xae, 0x5a, 0xf4, 0xbe, 0x42, 0x7b, 0x50, 0xc9, 0x16, 0xb3, 0x1d, + 0xad, 0x6b, 0xaf, 0x18, 0x1e, 0x5a, 0x00, 0xce, 0xa1, 0x3a, 0xa2, 0x2f, 0x28, 0xb1, 0x11, 0x57, + 0x2f, 0x8e, 0x68, 0xd1, 0xfb, 0x4a, 0x9b, 0x26, 0x71, 0x90, 0x99, 0xae, 0x5d, 0x6c, 0x6a, 0xd1, + 0xfb, 0x0a, 0xfd, 0x08, 0x6f, 0xe7, 0x3b, 0xdc, 0xf0, 0x27, 0x1f, 0x9f, 0xca, 0xe2, 0xf9, 0xcb, + 0xb6, 0xb8, 0xee, 0xdd, 0x33, 0x8b, 0x7d, 0xea, 0xe0, 0xc6, 0xd9, 0x02, 0x39, 0x7a, 0x0e, 0xc8, + 0xac, 0xbf, 0xa2, 0xe7, 0xaa, 0xf1, 0xdc, 0x2a, 0x7b, 0xd6, 0x0b, 0xb0, 0xe4, 0x75, 0x4b, 0x95, + 0x64, 0xe8, 0x1a, 0x54, 0x02, 0xea, 0x8f, 0x0d, 0xdb, 0x6a, 0xe9, 0x46, 0xd3, 0x67, 0xcd, 0xb2, + 0x0e, 0x34, 0xec, 0xc8, 0x78, 0x3f, 0xf3, 0x81, 0x67, 0x66, 0x4c, 0xc3, 0xd6, 0x0d, 0x6c, 0xdb, + 0xea, 0xbe, 0xe4, 0x83, 0x93, 0x98, 0xfa, 0x7d, 0xc1, 0x7a, 0x9b, 0xb0, 0x61, 0xf9, 0x25, 0xa8, + 0x4c, 0x42, 0xd5, 0xdb, 0x86, 0x4d, 0x45, 0xc4, 0x88, 0xaa, 0x3c, 0x57, 0x37, 0x80, 0xc6, 0xa2, + 0x8a, 0xd1, 0x31, 0xd4, 0xe8, 0x6c, 0xc1, 0xbd, 0xc1, 0x8b, 0x37, 0x6f, 0xee, 0xfe, 0xe1, 0xc0, + 0x56, 0xb9, 0x7c, 0x74, 0x08, 0xeb, 0x3e, 0xf1, 0x4f, 0xa9, 0x27, 0x15, 0x51, 0x89, 0x34, 0x31, + 0xea, 0xdd, 0x77, 0x4a, 0x31, 0x0e, 0xd2, 0xef, 0x93, 0x03, 0x8d, 0x3c, 0x31, 0x40, 0x5c, 0xf3, + 0x67, 0x07, 0xf4, 0x39, 0xd4, 0xec, 0x27, 0x8c, 0x37, 0xa6, 0x53, 0x3b, 0x81, 0xb7, 0x16, 0x3b, + 0xc9, 0x42, 0x63, 0xb0, 0x26, 0x5f, 0xd1, 0x29, 0xba, 0x07, 0x75, 0xff, 0x94, 0xfa, 0xe3, 0x98, + 0xb3, 0x28, 0x9d, 0xf2, 0xf4, 0x25, 0xd9, 0x98, 0x49, 0xfb, 0x82, 0xb9, 0x7f, 0x3a, 0xb0, 0x63, + 0x17, 0xd4, 0xc2, 0x86, 0xbd, 0x37, 0xf7, 0x5c, 0x94, 0x67, 0xb8, 0xf4, 0x42, 0x9c, 0xc0, 0xb6, + 0xfd, 0xb0, 0x0a, 0xbc, 0x8c, 0x56, 0x36, 0xf1, 0xf2, 0x43, 0x73, 0x60, 0x71, 0x59, 0xc8, 0xec, + 0x41, 0xd8, 0xf2, 0x4b, 0x8a, 0xd7, 0xb2, 0x63, 0xf9, 0x35, 0xec, 0x70, 0xfb, 0xb0, 0x53, 0xfe, + 0x9a, 0x32, 0x2f, 0xc5, 0x7f, 0xfc, 0xa2, 0xfa, 0x75, 0x19, 0x6e, 0x2c, 0xf6, 0x2b, 0x63, 0x1e, + 0x49, 0x8a, 0x1e, 0xc0, 0xaa, 0x79, 0x0e, 0xa5, 0x75, 0x7e, 0xb5, 0x3c, 0x27, 0x7d, 0x11, 0xf6, + 0x42, 0x3e, 0xd0, 0xeb, 0x0e, 0x5b, 0x28, 0xda, 0x83, 0xb5, 0x94, 0xca, 0xd2, 0x36, 0xea, 0x5c, + 0xab, 0x0c, 0x8b, 0x3e, 0x81, 0xda, 0x30, 0x09, 0x43, 0xcf, 0x06, 0x5c, 0xbe, 0x60, 0xc3, 0x62, + 0xd0, 0xe8, 0xa3, 0x34, 0xe4, 0xa7, 0xb0, 0x6e, 0x6c, 0xb3, 0xb8, 0x97, 0x2f, 0x32, 0x36, 0xa1, + 0xbe, 0xb1, 0x91, 0xbf, 0x83, 0xad, 0xec, 0x3a, 0xf2, 0x2b, 0xde, 0x32, 0x1e, 0x3e, 0x28, 0x67, + 0x7e, 0x0e, 0xab, 0xf0, 0x66, 0x50, 0x54, 0xa2, 0x87, 0x00, 0xc6, 0xdc, 0x4b, 0x44, 0x28, 0x9b, + 0xdb, 0xe5, 0x9c, 0x52, 0x8f, 0x8f, 0xf5, 0xb1, 0x8f, 0x8f, 0x25, 0xae, 0x1a, 0x4d, 0x5f, 0x84, + 0xb2, 0xf7, 0xd1, 0x0f, 0x7b, 0x23, 0xa6, 0x4e, 0x93, 0x41, 0xdb, 0xe7, 0x93, 0x8e, 0x91, 0x73, + 0x31, 0xea, 0xe4, 0x9f, 0xec, 0x23, 0x1a, 0x75, 0xe2, 0xc1, 0xfd, 0x11, 0xef, 0x14, 0x7f, 0x2e, + 0x06, 0xab, 0x66, 0xc3, 0x3e, 0xf8, 0x37, 0x00, 0x00, 0xff, 0xff, 0x26, 0xae, 0x74, 0xa3, 0xaa, + 0x0c, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/node_execution.pb.validate.go b/gen/pb-go/flyteidl/admin/node_execution.pb.validate.go index 2f600735e..72b85d59f 100644 --- a/gen/pb-go/flyteidl/admin/node_execution.pb.validate.go +++ b/gen/pb-go/flyteidl/admin/node_execution.pb.validate.go @@ -1118,6 +1118,16 @@ func (m *NodeExecutionGetDataResponse) Validate() error { } } + if v, ok := interface{}(m.GetFlyteUrls()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return NodeExecutionGetDataResponseValidationError{ + field: "FlyteUrls", + reason: "embedded message failed validation", + cause: err, + } + } + } + return nil } diff --git a/gen/pb-go/flyteidl/admin/task_execution.pb.go b/gen/pb-go/flyteidl/admin/task_execution.pb.go index b7178854b..a68b8936c 100644 --- a/gen/pb-go/flyteidl/admin/task_execution.pb.go +++ b/gen/pb-go/flyteidl/admin/task_execution.pb.go @@ -588,10 +588,13 @@ type TaskExecutionGetDataResponse struct { // Full_inputs will only be populated if they are under a configured size threshold. FullInputs *core.LiteralMap `protobuf:"bytes,3,opt,name=full_inputs,json=fullInputs,proto3" json:"full_inputs,omitempty"` // Full_outputs will only be populated if they are under a configured size threshold. - FullOutputs *core.LiteralMap `protobuf:"bytes,4,opt,name=full_outputs,json=fullOutputs,proto3" json:"full_outputs,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FullOutputs *core.LiteralMap `protobuf:"bytes,4,opt,name=full_outputs,json=fullOutputs,proto3" json:"full_outputs,omitempty"` + // flyte tiny url to fetch a core.LiteralMap of task execution's IO + // Deck will be empty for task + FlyteUrls *FlyteURLs `protobuf:"bytes,5,opt,name=flyte_urls,json=flyteUrls,proto3" json:"flyte_urls,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *TaskExecutionGetDataResponse) Reset() { *m = TaskExecutionGetDataResponse{} } @@ -649,6 +652,13 @@ func (m *TaskExecutionGetDataResponse) GetFullOutputs() *core.LiteralMap { return nil } +func (m *TaskExecutionGetDataResponse) GetFlyteUrls() *FlyteURLs { + if m != nil { + return m.FlyteUrls + } + return nil +} + func init() { proto.RegisterType((*TaskExecutionGetRequest)(nil), "flyteidl.admin.TaskExecutionGetRequest") proto.RegisterType((*TaskExecutionListRequest)(nil), "flyteidl.admin.TaskExecutionListRequest") @@ -665,62 +675,63 @@ func init() { } var fileDescriptor_8cde4c3aa101642e = []byte{ - // 902 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x6d, 0x6f, 0x1b, 0x45, - 0x10, 0xee, 0x39, 0xf1, 0xdb, 0x38, 0x2f, 0x64, 0x15, 0x35, 0x87, 0x93, 0x82, 0xe5, 0x00, 0xb2, - 0x90, 0x7a, 0x46, 0xa9, 0x02, 0xe5, 0x45, 0x08, 0x9b, 0x16, 0x1a, 0x29, 0x85, 0xb2, 0x4d, 0xf8, - 0xc0, 0x97, 0xd3, 0xfa, 0x6e, 0xed, 0xae, 0x72, 0x77, 0x7b, 0xdd, 0xdd, 0xab, 0xf0, 0x77, 0x7e, - 0x06, 0x7f, 0x86, 0xdf, 0xc2, 0x1f, 0x41, 0xfb, 0x72, 0x4e, 0xee, 0x12, 0x62, 0x09, 0xbe, 0x58, - 0x9a, 0x9d, 0xe7, 0x99, 0xd9, 0x79, 0x66, 0x66, 0x7d, 0x70, 0x3c, 0x4f, 0x96, 0x8a, 0xb2, 0x38, - 0x19, 0x93, 0x38, 0x65, 0xd9, 0x58, 0x11, 0x79, 0x15, 0xd2, 0xdf, 0x69, 0x54, 0x28, 0xc6, 0xb3, - 0x20, 0x17, 0x5c, 0x71, 0xb4, 0x53, 0x82, 0x02, 0x03, 0xea, 0x1f, 0xd6, 0x48, 0x11, 0x4f, 0xd3, - 0x12, 0xdc, 0x7f, 0xb4, 0x72, 0x46, 0x5c, 0xd0, 0x71, 0x2d, 0x56, 0xff, 0x83, 0xaa, 0x9b, 0xc5, - 0x34, 0x53, 0x6c, 0xce, 0xa8, 0x70, 0xfe, 0xa3, 0xaa, 0x3f, 0x61, 0x8a, 0x0a, 0x92, 0x48, 0xe7, - 0xed, 0xaf, 0xbc, 0xf4, 0x1d, 0xcd, 0x94, 0xfd, 0x75, 0xbe, 0x0f, 0x17, 0x9c, 0x2f, 0x12, 0x3a, - 0x36, 0xd6, 0xac, 0x98, 0x8f, 0x15, 0x4b, 0xa9, 0x54, 0x24, 0xcd, 0xcb, 0xd4, 0x75, 0x40, 0x5c, - 0x08, 0x72, 0xe3, 0x6a, 0x47, 0x75, 0xbf, 0x54, 0xa2, 0x88, 0x5c, 0xf8, 0xe1, 0x2f, 0x70, 0x70, - 0x41, 0xe4, 0xd5, 0xf3, 0xb2, 0x9e, 0x1f, 0xa9, 0xc2, 0xf4, 0x6d, 0x41, 0xa5, 0x42, 0x9f, 0x43, - 0x83, 0xc5, 0xbe, 0x37, 0xf0, 0x46, 0xbd, 0x93, 0x4f, 0x82, 0x95, 0x58, 0xba, 0x80, 0xa0, 0xc2, - 0x39, 0x5b, 0x55, 0x8b, 0x1b, 0x2c, 0x1e, 0xfe, 0xed, 0x81, 0x5f, 0xf1, 0x9f, 0x33, 0xb9, 0x0a, - 0x8a, 0x61, 0x2f, 0xe3, 0x31, 0xbd, 0x6e, 0x46, 0xf8, 0xaf, 0x39, 0x7e, 0xe2, 0x31, 0xbd, 0x2b, - 0xc7, 0x6e, 0x56, 0x75, 0xa0, 0x7d, 0x68, 0x26, 0x2c, 0x65, 0xca, 0x6f, 0x0c, 0xbc, 0xd1, 0x36, - 0xb6, 0x86, 0x3e, 0x55, 0xfc, 0x8a, 0x66, 0xfe, 0xc6, 0xc0, 0x1b, 0x75, 0xb1, 0x35, 0x90, 0x0f, - 0xed, 0x39, 0x4b, 0x14, 0x15, 0xd2, 0xdf, 0x34, 0xe7, 0xa5, 0x89, 0x1e, 0x43, 0x5b, 0x72, 0xa1, - 0xc2, 0xd9, 0xd2, 0x6f, 0x9a, 0xfb, 0xec, 0x07, 0xd5, 0x01, 0x09, 0x5e, 0x73, 0xa1, 0x70, 0x4b, - 0x83, 0xa6, 0xcb, 0xe1, 0x5f, 0x1e, 0x6c, 0x57, 0xaa, 0xfc, 0xaf, 0x7a, 0xa1, 0x43, 0xe8, 0xb2, - 0x2c, 0x2f, 0x54, 0x58, 0x08, 0x66, 0x4a, 0xe8, 0xe2, 0x8e, 0x39, 0xb8, 0x14, 0x0c, 0x7d, 0x0b, - 0xed, 0x28, 0xe1, 0xb2, 0x10, 0xd4, 0xd4, 0xd1, 0x3b, 0xf9, 0xa8, 0x7e, 0xab, 0x4a, 0xe8, 0xef, - 0x2d, 0x16, 0x97, 0x24, 0x13, 0x5c, 0x86, 0x39, 0x11, 0x34, 0x53, 0xa6, 0xe2, 0x0e, 0xee, 0x30, - 0xf9, 0xca, 0xd8, 0xc3, 0xb7, 0xb0, 0x77, 0xab, 0x51, 0xe8, 0x07, 0xd8, 0xad, 0xae, 0x8b, 0xf4, - 0xbd, 0xc1, 0xc6, 0xa8, 0x77, 0xf2, 0xe8, 0xde, 0xcc, 0x78, 0x47, 0xdd, 0x34, 0xe5, 0xb5, 0xfe, - 0x8d, 0x1b, 0xfa, 0x0f, 0xff, 0x6c, 0xc1, 0xfe, 0x5d, 0x37, 0x46, 0xc7, 0x00, 0xbc, 0x50, 0xa5, - 0x0c, 0x5a, 0xc5, 0xee, 0xb4, 0xe1, 0x7b, 0x2f, 0x1e, 0xe0, 0xae, 0x3d, 0xd7, 0x6a, 0x9c, 0x42, - 0x93, 0x0a, 0xc1, 0x85, 0x89, 0x59, 0xb9, 0x91, 0x51, 0x79, 0x15, 0xf4, 0xb9, 0x06, 0xbd, 0x78, - 0x80, 0x2d, 0x1a, 0x7d, 0x07, 0x3d, 0x17, 0x3b, 0x26, 0x8a, 0xf8, 0x5b, 0x86, 0xfc, 0x7e, 0x8d, - 0x7c, 0x6e, 0x77, 0xf2, 0x25, 0xc9, 0x5d, 0x5e, 0x77, 0x9f, 0x67, 0x44, 0x11, 0xf4, 0x14, 0x9a, - 0xf9, 0x1b, 0x22, 0x6d, 0x13, 0x76, 0x4e, 0x86, 0xf7, 0xb5, 0x37, 0x78, 0xa5, 0x91, 0xd8, 0x12, - 0xd0, 0xa7, 0xb0, 0x99, 0xf0, 0x85, 0x9e, 0x36, 0xad, 0xe1, 0xc3, 0x3b, 0x88, 0xe7, 0x7c, 0x81, - 0x0d, 0x06, 0x7d, 0x09, 0x20, 0x15, 0x11, 0x8a, 0xc6, 0x21, 0x51, 0x6e, 0x0a, 0xfb, 0x81, 0xdd, - 0xdf, 0xa0, 0xdc, 0xdf, 0xe0, 0xa2, 0x7c, 0x00, 0x70, 0xd7, 0xa1, 0x27, 0x0a, 0x9d, 0x42, 0xa7, - 0xdc, 0x7b, 0xbf, 0xe5, 0xea, 0xab, 0x13, 0x9f, 0x39, 0x00, 0x5e, 0x41, 0x75, 0xc6, 0x48, 0x50, - 0xe2, 0x32, 0xb6, 0xd7, 0x67, 0x74, 0xe8, 0x89, 0xd2, 0xd4, 0x22, 0x8f, 0x4b, 0x6a, 0x67, 0x3d, - 0xd5, 0xa1, 0x27, 0x0a, 0x3d, 0x85, 0x5e, 0x54, 0x48, 0xc5, 0xd3, 0x90, 0x65, 0x73, 0xee, 0x77, - 0x0d, 0xf7, 0xe0, 0x16, 0xf7, 0xb5, 0x79, 0xa8, 0x30, 0x58, 0xec, 0x59, 0x36, 0xe7, 0xe8, 0x21, - 0xb4, 0x04, 0x25, 0x92, 0x67, 0x3e, 0x98, 0xa9, 0x72, 0x96, 0x1e, 0x73, 0x33, 0xb4, 0x6a, 0x99, - 0x53, 0xbf, 0x67, 0x77, 0x48, 0x1f, 0x5c, 0x2c, 0x73, 0x8a, 0x26, 0xd0, 0x49, 0xa9, 0x22, 0xa6, - 0xf7, 0xef, 0x99, 0x5c, 0x1f, 0x5f, 0xb7, 0xc1, 0xbe, 0xb5, 0x95, 0x06, 0xbe, 0x74, 0x60, 0xbc, - 0xa2, 0xa1, 0x63, 0xd8, 0x36, 0xc0, 0xf0, 0x1d, 0x15, 0x52, 0x6b, 0xbc, 0x37, 0xf0, 0x46, 0x4d, - 0xbc, 0x65, 0x0e, 0x7f, 0xb5, 0x67, 0xe8, 0x33, 0x68, 0xdb, 0xeb, 0x48, 0x1f, 0xd5, 0xbb, 0x6d, - 0x37, 0x06, 0x1b, 0x37, 0x2e, 0x61, 0xd3, 0x5d, 0xd8, 0x76, 0x83, 0x29, 0xa8, 0x2c, 0x12, 0x35, - 0x0c, 0xa1, 0x65, 0x31, 0xe8, 0x6b, 0xe8, 0xf1, 0x28, 0x2a, 0x84, 0xb0, 0xfa, 0x7a, 0x6b, 0xf5, - 0x85, 0x12, 0x3e, 0x51, 0xfa, 0x95, 0x4b, 0xa9, 0x94, 0x64, 0x41, 0xdd, 0xf6, 0x95, 0xe6, 0xf0, - 0x12, 0x0e, 0xeb, 0xef, 0xbd, 0x1e, 0xf0, 0xff, 0xfb, 0xe6, 0xff, 0xd1, 0x80, 0xa3, 0xbb, 0xe3, - 0xca, 0x9c, 0x67, 0x92, 0xa2, 0x27, 0xd0, 0x32, 0x6f, 0x9a, 0x74, 0xc1, 0x0f, 0xea, 0xd2, 0x5c, - 0x8a, 0x64, 0x9a, 0xf0, 0x99, 0xde, 0x3d, 0xec, 0xa0, 0xe8, 0x14, 0xda, 0x56, 0x1e, 0xe9, 0x16, - 0xfe, 0x5e, 0x56, 0x89, 0x45, 0x5f, 0x41, 0x6f, 0x5e, 0x24, 0x49, 0xe8, 0x12, 0x6e, 0xac, 0x59, - 0x77, 0x0c, 0x1a, 0x7d, 0x66, 0x53, 0x7e, 0x03, 0x5b, 0x86, 0x5b, 0xe6, 0xdd, 0x5c, 0x47, 0x36, - 0xa9, 0x7e, 0xb6, 0xe8, 0xe9, 0x17, 0xbf, 0x9d, 0x2e, 0x98, 0x7a, 0x53, 0xcc, 0x82, 0x88, 0xa7, - 0x63, 0xc3, 0xe1, 0x62, 0x31, 0x5e, 0xfd, 0xbd, 0x2f, 0x68, 0x36, 0xce, 0x67, 0x8f, 0x17, 0x7c, - 0x5c, 0xfd, 0xd6, 0x98, 0xb5, 0x4c, 0x43, 0x9f, 0xfc, 0x13, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x85, - 0xa6, 0xe7, 0xb9, 0x08, 0x00, 0x00, + // 925 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xeb, 0x6e, 0x1b, 0x45, + 0x14, 0xee, 0xba, 0x89, 0x2f, 0xc7, 0xb9, 0x90, 0x51, 0xd4, 0x6c, 0x9d, 0x14, 0x2c, 0x07, 0x90, + 0x85, 0xd4, 0x35, 0x4a, 0x15, 0x08, 0x17, 0x21, 0x6c, 0xda, 0xd2, 0x48, 0x29, 0x94, 0x69, 0xcc, + 0x0f, 0xfe, 0xac, 0xc6, 0xbb, 0x63, 0x77, 0x94, 0xdd, 0x9d, 0xed, 0xcc, 0x6c, 0x85, 0xdf, 0x85, + 0x67, 0x41, 0xe2, 0x59, 0x78, 0x11, 0x34, 0x97, 0x75, 0xb2, 0xdb, 0x10, 0x4b, 0xf0, 0x67, 0xa5, + 0x73, 0xce, 0xf7, 0x9d, 0xfb, 0x19, 0x2d, 0x1c, 0xcf, 0x93, 0xa5, 0xa2, 0x2c, 0x4e, 0x46, 0x24, + 0x4e, 0x59, 0x36, 0x52, 0x44, 0x5e, 0x85, 0xf4, 0x77, 0x1a, 0x15, 0x8a, 0xf1, 0x2c, 0xc8, 0x05, + 0x57, 0x1c, 0xed, 0x94, 0xa0, 0xc0, 0x80, 0x7a, 0x87, 0x35, 0x52, 0xc4, 0xd3, 0xb4, 0x04, 0xf7, + 0x1e, 0xad, 0x8c, 0x11, 0x17, 0x74, 0x54, 0xf3, 0xd5, 0xfb, 0xb0, 0x6a, 0x66, 0x31, 0xcd, 0x14, + 0x9b, 0x33, 0x2a, 0x9c, 0xfd, 0xa8, 0x6a, 0x4f, 0x98, 0xa2, 0x82, 0x24, 0xd2, 0x59, 0x7b, 0x2b, + 0x2b, 0x7d, 0x47, 0x33, 0x65, 0xbf, 0xce, 0xf6, 0xd1, 0x82, 0xf3, 0x45, 0x42, 0x47, 0x46, 0x9a, + 0x15, 0xf3, 0x91, 0x62, 0x29, 0x95, 0x8a, 0xa4, 0x79, 0x19, 0xba, 0x0e, 0x88, 0x0b, 0x41, 0x6e, + 0xa4, 0x76, 0x54, 0xb7, 0x4b, 0x25, 0x8a, 0xc8, 0xb9, 0x1f, 0xfc, 0x02, 0x07, 0x97, 0x44, 0x5e, + 0x3d, 0x2b, 0xeb, 0xf9, 0x91, 0x2a, 0x4c, 0xdf, 0x16, 0x54, 0x2a, 0xf4, 0x05, 0x34, 0x58, 0xec, + 0x7b, 0x7d, 0x6f, 0xd8, 0x3d, 0xf9, 0x34, 0x58, 0x35, 0x4b, 0x17, 0x10, 0x54, 0x38, 0xe7, 0xab, + 0x6a, 0x71, 0x83, 0xc5, 0x83, 0xbf, 0x3d, 0xf0, 0x2b, 0xf6, 0x0b, 0x26, 0x57, 0x4e, 0x31, 0xec, + 0x65, 0x3c, 0xa6, 0xd7, 0xc3, 0x08, 0xff, 0x35, 0xc6, 0x4f, 0x3c, 0xa6, 0xb7, 0xc5, 0xd8, 0xcd, + 0xaa, 0x06, 0xb4, 0x0f, 0x9b, 0x09, 0x4b, 0x99, 0xf2, 0x1b, 0x7d, 0x6f, 0xb8, 0x8d, 0xad, 0xa0, + 0xb5, 0x8a, 0x5f, 0xd1, 0xcc, 0xbf, 0xdf, 0xf7, 0x86, 0x1d, 0x6c, 0x05, 0xe4, 0x43, 0x6b, 0xce, + 0x12, 0x45, 0x85, 0xf4, 0x37, 0x8c, 0xbe, 0x14, 0xd1, 0x63, 0x68, 0x49, 0x2e, 0x54, 0x38, 0x5b, + 0xfa, 0x9b, 0x26, 0x9f, 0xfd, 0xa0, 0xba, 0x20, 0xc1, 0x6b, 0x2e, 0x14, 0x6e, 0x6a, 0xd0, 0x64, + 0x39, 0xf8, 0xcb, 0x83, 0xed, 0x4a, 0x95, 0xff, 0xb5, 0x5f, 0xe8, 0x10, 0x3a, 0x2c, 0xcb, 0x0b, + 0x15, 0x16, 0x82, 0x99, 0x12, 0x3a, 0xb8, 0x6d, 0x14, 0x53, 0xc1, 0xd0, 0x77, 0xd0, 0x8a, 0x12, + 0x2e, 0x0b, 0x41, 0x4d, 0x1d, 0xdd, 0x93, 0x8f, 0xeb, 0x59, 0x55, 0x5c, 0xff, 0x60, 0xb1, 0xb8, + 0x24, 0x19, 0xe7, 0x32, 0xcc, 0x89, 0xa0, 0x99, 0x32, 0x15, 0xb7, 0x71, 0x9b, 0xc9, 0x57, 0x46, + 0x1e, 0xbc, 0x85, 0xbd, 0xf7, 0x06, 0x85, 0x9e, 0xc3, 0x6e, 0xf5, 0x5c, 0xa4, 0xef, 0xf5, 0xef, + 0x0f, 0xbb, 0x27, 0x8f, 0xee, 0x8c, 0x8c, 0x77, 0xd4, 0x4d, 0x51, 0x5e, 0xf7, 0xbf, 0x71, 0xa3, + 0xff, 0x83, 0x3f, 0x9a, 0xb0, 0x7f, 0x5b, 0xc6, 0xe8, 0x18, 0x80, 0x17, 0xaa, 0x6c, 0x83, 0xee, + 0x62, 0x67, 0xd2, 0xf0, 0xbd, 0x17, 0xf7, 0x70, 0xc7, 0xea, 0x75, 0x37, 0x4e, 0x61, 0x93, 0x0a, + 0xc1, 0x85, 0xf1, 0x59, 0xc9, 0xc8, 0x74, 0x79, 0xe5, 0xf4, 0x99, 0x06, 0xbd, 0xb8, 0x87, 0x2d, + 0x1a, 0x7d, 0x0f, 0x5d, 0xe7, 0x3b, 0x26, 0x8a, 0xf8, 0x5b, 0x86, 0xfc, 0xb0, 0x46, 0xbe, 0xb0, + 0x37, 0xf9, 0x92, 0xe4, 0x2e, 0xae, 0xcb, 0xe7, 0x29, 0x51, 0x04, 0x9d, 0xc1, 0x66, 0xfe, 0x86, + 0x48, 0x3b, 0x84, 0x9d, 0x93, 0xc1, 0x5d, 0xe3, 0x0d, 0x5e, 0x69, 0x24, 0xb6, 0x04, 0xf4, 0x19, + 0x6c, 0x24, 0x7c, 0xa1, 0xb7, 0x4d, 0xf7, 0xf0, 0xc1, 0x2d, 0xc4, 0x0b, 0xbe, 0xc0, 0x06, 0x83, + 0xbe, 0x02, 0x90, 0x8a, 0x08, 0x45, 0xe3, 0x90, 0x28, 0xb7, 0x85, 0xbd, 0xc0, 0xde, 0x6f, 0x50, + 0xde, 0x6f, 0x70, 0x59, 0x3e, 0x00, 0xb8, 0xe3, 0xd0, 0x63, 0x85, 0x4e, 0xa1, 0x5d, 0xde, 0xbd, + 0xdf, 0x74, 0xf5, 0xd5, 0x89, 0x4f, 0x1d, 0x00, 0xaf, 0xa0, 0x3a, 0x62, 0x24, 0x28, 0x71, 0x11, + 0x5b, 0xeb, 0x23, 0x3a, 0xf4, 0x58, 0x69, 0x6a, 0x91, 0xc7, 0x25, 0xb5, 0xbd, 0x9e, 0xea, 0xd0, + 0x63, 0x85, 0xce, 0xa0, 0x1b, 0x15, 0x52, 0xf1, 0x34, 0x64, 0xd9, 0x9c, 0xfb, 0x1d, 0xc3, 0x3d, + 0x78, 0x8f, 0xfb, 0xda, 0x3c, 0x54, 0x18, 0x2c, 0xf6, 0x3c, 0x9b, 0x73, 0xf4, 0x00, 0x9a, 0x82, + 0x12, 0xc9, 0x33, 0x1f, 0xcc, 0x56, 0x39, 0x49, 0xaf, 0xb9, 0x59, 0x5a, 0xb5, 0xcc, 0xa9, 0xdf, + 0xb5, 0x37, 0xa4, 0x15, 0x97, 0xcb, 0x9c, 0xa2, 0x31, 0xb4, 0x53, 0xaa, 0x88, 0x99, 0xfd, 0x07, + 0x26, 0xd6, 0x27, 0xd7, 0x63, 0xb0, 0x6f, 0x6d, 0x65, 0x80, 0x2f, 0x1d, 0x18, 0xaf, 0x68, 0xe8, + 0x18, 0xb6, 0x0d, 0x30, 0x7c, 0x47, 0x85, 0xd4, 0x3d, 0xde, 0xeb, 0x7b, 0xc3, 0x4d, 0xbc, 0x65, + 0x94, 0xbf, 0x5a, 0x1d, 0xfa, 0x1c, 0x5a, 0x36, 0x1d, 0xe9, 0xa3, 0xfa, 0xb4, 0xed, 0xc5, 0x60, + 0x63, 0xc6, 0x25, 0x6c, 0xb2, 0x0b, 0xdb, 0x6e, 0x31, 0x05, 0x95, 0x45, 0xa2, 0x06, 0x21, 0x34, + 0x2d, 0x06, 0x7d, 0x03, 0x5d, 0x1e, 0x45, 0x85, 0x10, 0xb6, 0xbf, 0xde, 0xda, 0xfe, 0x42, 0x09, + 0x1f, 0x2b, 0xfd, 0xca, 0xa5, 0x54, 0x4a, 0xb2, 0xa0, 0xee, 0xfa, 0x4a, 0x71, 0x30, 0x85, 0xc3, + 0xfa, 0x7b, 0xaf, 0x17, 0xfc, 0xff, 0xbe, 0xf9, 0x7f, 0x36, 0xe0, 0xe8, 0x76, 0xbf, 0x32, 0xe7, + 0x99, 0xa4, 0xe8, 0x09, 0x34, 0xcd, 0x9b, 0x26, 0x9d, 0xf3, 0x83, 0x7a, 0x6b, 0xa6, 0x22, 0x99, + 0x24, 0x7c, 0xa6, 0x6f, 0x0f, 0x3b, 0x28, 0x3a, 0x85, 0x96, 0x6d, 0x8f, 0x74, 0x07, 0x7f, 0x27, + 0xab, 0xc4, 0xa2, 0xaf, 0xa1, 0x3b, 0x2f, 0x92, 0x24, 0x74, 0x01, 0xef, 0xaf, 0x39, 0x77, 0x0c, + 0x1a, 0x7d, 0x6e, 0x43, 0x7e, 0x0b, 0x5b, 0x86, 0x5b, 0xc6, 0xdd, 0x58, 0x47, 0x36, 0xa1, 0x7e, + 0x76, 0x91, 0xcf, 0x00, 0x0c, 0x30, 0x2c, 0x44, 0x22, 0xdd, 0x01, 0x3f, 0xac, 0xe7, 0xfc, 0x5c, + 0x8b, 0x53, 0x7c, 0x21, 0x71, 0xc7, 0x58, 0xa6, 0x22, 0x91, 0x93, 0x2f, 0x7f, 0x3b, 0x5d, 0x30, + 0xf5, 0xa6, 0x98, 0x05, 0x11, 0x4f, 0x47, 0x46, 0xcf, 0xc5, 0x62, 0xb4, 0xfa, 0x31, 0x58, 0xd0, + 0x6c, 0x94, 0xcf, 0x1e, 0x2f, 0xf8, 0xa8, 0xfa, 0x97, 0x32, 0x6b, 0x9a, 0x55, 0x78, 0xf2, 0x4f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xb8, 0xae, 0x02, 0x8d, 0xf3, 0x08, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/task_execution.pb.validate.go b/gen/pb-go/flyteidl/admin/task_execution.pb.validate.go index ab4c1dc11..625e73bac 100644 --- a/gen/pb-go/flyteidl/admin/task_execution.pb.validate.go +++ b/gen/pb-go/flyteidl/admin/task_execution.pb.validate.go @@ -781,6 +781,16 @@ func (m *TaskExecutionGetDataResponse) Validate() error { } } + if v, ok := interface{}(m.GetFlyteUrls()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TaskExecutionGetDataResponseValidationError{ + field: "FlyteUrls", + reason: "embedded message failed validation", + cause: err, + } + } + } + return nil } diff --git a/gen/pb-go/flyteidl/service/admin.pb.go b/gen/pb-go/flyteidl/service/admin.pb.go index 06c565ded..1b35e94e4 100644 --- a/gen/pb-go/flyteidl/service/admin.pb.go +++ b/gen/pb-go/flyteidl/service/admin.pb.go @@ -7,7 +7,6 @@ import ( context "context" fmt "fmt" admin "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin" - _ "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core" proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" @@ -30,143 +29,142 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("flyteidl/service/admin.proto", fileDescriptor_5cfa31da1d67295d) } var fileDescriptor_5cfa31da1d67295d = []byte{ - // 2179 bytes of a gzipped FileDescriptorProto + // 2163 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x9a, 0xdf, 0x6f, 0x1d, 0x47, 0x15, 0xc7, 0x35, 0x36, 0x02, 0x31, 0x4d, 0x62, 0x7b, 0x9a, 0x60, 0x67, 0x63, 0x27, 0xe9, 0xba, 0x8e, 0x7f, 0xdf, 0x75, 0x93, 0xb4, 0x51, 0x42, 0x7f, 0xb9, 0xb5, 0x73, 0x65, 0x48, 0x93, 0x62, 0x52, 0x90, 0x2c, 0xa4, 0xab, 0xf5, 0xdd, 0x89, 0xb3, 0xc9, 0xbd, 0x77, 0x6f, 0x77, 0xc7, 0x2e, 0x96, 0x65, 0xf1, 0x43, 0x08, 0x51, 0x21, 0xf1, 0xc0, 0x0f, 0x41, 0x21, 0xa2, 0x14, 0x8a, 0xf8, 0x59, 0x5e, 0x40, 0x45, 0xbc, 0x54, 0x42, 0x80, 0xc4, 0x0b, 0x2f, 0xf0, 0xce, 0x0b, 0x7d, 0xe6, - 0x6f, 0x40, 0x7b, 0x76, 0x66, 0xef, 0xce, 0xce, 0xce, 0xee, 0xac, 0x49, 0x79, 0xe2, 0xcd, 0xbe, + 0x6f, 0x40, 0x7b, 0x66, 0x66, 0xef, 0xce, 0xee, 0xce, 0xee, 0xac, 0x49, 0x79, 0xe2, 0xcd, 0xbe, 0xe7, 0x3b, 0x33, 0x9f, 0x73, 0xe6, 0xcc, 0x99, 0xd9, 0xdd, 0xc1, 0x93, 0x77, 0x3a, 0xfb, 0x8c, 0xfa, 0x5e, 0xc7, 0x89, 0x68, 0xb8, 0xe7, 0xb7, 0xa9, 0xe3, 0x7a, 0x5d, 0xbf, 0xd7, 0xe8, 0x87, - 0x01, 0x0b, 0xc8, 0xa8, 0xb0, 0x36, 0xb8, 0xd5, 0x9a, 0xdc, 0x09, 0x82, 0x9d, 0x0e, 0x75, 0xdc, - 0xbe, 0xef, 0xb8, 0xbd, 0x5e, 0xc0, 0x5c, 0xe6, 0x07, 0xbd, 0x28, 0xd1, 0x5b, 0x83, 0xde, 0xa0, - 0x17, 0xa7, 0x1f, 0x06, 0xf7, 0x68, 0x9b, 0x71, 0x6b, 0xa3, 0xd8, 0xda, 0xf2, 0x82, 0xae, 0xeb, - 0xf7, 0x5a, 0x2e, 0x63, 0xa1, 0xbf, 0xbd, 0xcb, 0xa8, 0xe8, 0x6d, 0x56, 0xa3, 0x57, 0x84, 0xa7, - 0x73, 0x42, 0xe6, 0x46, 0xf7, 0xb9, 0x69, 0x2a, 0x67, 0x7a, 0x2d, 0x08, 0xef, 0xdf, 0xe9, 0x04, - 0xaf, 0x71, 0xf3, 0x9c, 0xc6, 0xac, 0x8e, 0x71, 0x3e, 0xa7, 0xec, 0xb8, 0xbb, 0xbd, 0xf6, 0xdd, - 0x56, 0xbf, 0xe3, 0xf2, 0x60, 0x59, 0x56, 0x4e, 0x41, 0xf7, 0x68, 0x4f, 0xb8, 0x7e, 0x36, 0x6f, - 0xfb, 0x3c, 0x6d, 0xef, 0xc6, 0x91, 0xd3, 0xb8, 0xda, 0x75, 0x59, 0xfb, 0xae, 0xbb, 0xdd, 0xa1, - 0xad, 0x90, 0x46, 0xc1, 0x6e, 0xd8, 0xa6, 0x5c, 0x38, 0x9d, 0x13, 0xf6, 0x02, 0x8f, 0xb6, 0xf2, - 0xbd, 0x4d, 0x17, 0xc4, 0x43, 0x11, 0xe5, 0xe7, 0x6a, 0x8f, 0x86, 0xd1, 0xc0, 0x7a, 0x26, 0x67, - 0x6d, 0x07, 0xdd, 0xae, 0x96, 0xd6, 0xa3, 0x51, 0x3b, 0xf4, 0xfb, 0x71, 0xe7, 0x2d, 0xda, 0x63, - 0x3e, 0xdb, 0x57, 0xdc, 0x6e, 0x07, 0x21, 0x75, 0x7c, 0x2f, 0xb6, 0xde, 0xf1, 0x69, 0xa8, 0x8c, - 0x02, 0xf6, 0x2e, 0x65, 0xa1, 0xdf, 0xe6, 0x11, 0xbf, 0xf8, 0x95, 0x9b, 0xf8, 0xd8, 0x6a, 0xdc, - 0xff, 0xa7, 0x93, 0xdc, 0x23, 0x5d, 0x8c, 0x5f, 0x0c, 0xa9, 0xcb, 0xe8, 0x6d, 0x37, 0xba, 0x4f, - 0x1e, 0x4b, 0xd3, 0xa9, 0x91, 0xa4, 0x6c, 0xfc, 0x6b, 0x62, 0xdf, 0xa4, 0xaf, 0xee, 0xd2, 0x88, - 0x59, 0x76, 0x99, 0x24, 0xea, 0x07, 0xbd, 0x88, 0xda, 0x13, 0x5f, 0xfe, 0xc7, 0xfb, 0xdf, 0x1a, - 0x22, 0xf6, 0x71, 0x48, 0xe9, 0xbd, 0x27, 0x20, 0x58, 0xd1, 0x35, 0xb4, 0x40, 0xbe, 0x86, 0xf0, - 0x47, 0x9a, 0x94, 0xc1, 0x60, 0xe7, 0xf3, 0x3d, 0xdd, 0xda, 0x8e, 0x53, 0xb1, 0x49, 0x99, 0x18, - 0xeb, 0x64, 0xd1, 0x58, 0xf6, 0x3a, 0xf4, 0xfe, 0x1c, 0x79, 0x46, 0xea, 0xdd, 0x39, 0xf0, 0xbd, - 0x06, 0xcf, 0xe6, 0x43, 0xf8, 0x27, 0x59, 0x02, 0xc9, 0xdf, 0x3d, 0xb7, 0x4b, 0x93, 0xbf, 0xf8, - 0x94, 0x1c, 0x92, 0xef, 0x22, 0xfc, 0xc8, 0x0d, 0x3f, 0x02, 0x96, 0x0d, 0x2f, 0x22, 0x2b, 0xf9, - 0xc1, 0x6e, 0xba, 0x5d, 0xea, 0xad, 0x43, 0xe8, 0x37, 0xd2, 0x20, 0xc7, 0x2d, 0x04, 0xde, 0xbc, - 0x71, 0x0b, 0x7b, 0x11, 0x98, 0x67, 0xc8, 0x74, 0x96, 0xb9, 0xe5, 0x7b, 0x91, 0x73, 0x30, 0x60, - 0xe6, 0xc0, 0xe4, 0x37, 0x08, 0x7f, 0x54, 0x90, 0x45, 0x64, 0x3a, 0x3f, 0xca, 0x26, 0xcf, 0xde, - 0x2c, 0xca, 0x44, 0x51, 0xa4, 0x60, 0xe4, 0x6d, 0x18, 0xf9, 0x73, 0x64, 0xa5, 0x6e, 0xb4, 0xb6, - 0xe6, 0xc8, 0x05, 0xb3, 0x36, 0xe4, 0x10, 0x9f, 0x48, 0x32, 0xe0, 0xb3, 0x7c, 0xa9, 0x93, 0x99, - 0x3c, 0x8f, 0xb0, 0xc8, 0xc9, 0x74, 0xa1, 0x4a, 0xc6, 0x13, 0x6a, 0x12, 0x9c, 0xf8, 0x98, 0x3d, - 0x26, 0x80, 0x44, 0x4d, 0x81, 0xa4, 0xfa, 0x36, 0xc2, 0x8f, 0x34, 0x29, 0x4b, 0x07, 0xaf, 0x4e, - 0xac, 0x09, 0xdd, 0xb8, 0xf6, 0x06, 0x8c, 0xf4, 0x22, 0x59, 0x55, 0x46, 0xaa, 0x9d, 0x60, 0x6f, - 0x22, 0x3c, 0x12, 0x4f, 0x81, 0xe8, 0xfb, 0x03, 0x4f, 0x32, 0x07, 0xd8, 0xe7, 0xc9, 0x6c, 0x9e, - 0x5d, 0x97, 0x68, 0xef, 0x21, 0x7c, 0x3c, 0x4b, 0x68, 0x98, 0x6c, 0x93, 0xba, 0xe8, 0x01, 0xc5, - 0x3d, 0xa0, 0xf0, 0xc8, 0xe5, 0xa3, 0x44, 0x70, 0x6b, 0x89, 0x2c, 0x98, 0xb7, 0x23, 0x5f, 0x45, - 0x78, 0x34, 0x49, 0x95, 0x1b, 0xb0, 0x75, 0xbc, 0xdc, 0x71, 0x7b, 0x64, 0x36, 0x8f, 0x37, 0xb0, - 0xc9, 0xd9, 0x37, 0x57, 0x2d, 0xe4, 0xf9, 0x77, 0x0e, 0x7c, 0x3a, 0x6d, 0x9f, 0x14, 0x6c, 0x99, - 0x9d, 0x0a, 0x52, 0xf0, 0x07, 0x08, 0x1f, 0x6f, 0x52, 0x96, 0xa1, 0xa8, 0x4e, 0x42, 0x4b, 0x3f, - 0xbc, 0x7d, 0x03, 0x06, 0xbc, 0x4e, 0xd6, 0x8a, 0x06, 0xac, 0x9d, 0x89, 0x3f, 0x46, 0xf8, 0xd1, - 0x26, 0x65, 0xab, 0x6d, 0xe6, 0xef, 0x95, 0x46, 0x2a, 0xaf, 0x30, 0x41, 0xbd, 0x0e, 0xa8, 0xcf, - 0x93, 0x67, 0x05, 0xaa, 0x0b, 0x9d, 0xb4, 0x6a, 0x12, 0x93, 0x07, 0x08, 0x9f, 0x8a, 0x13, 0x28, - 0xcf, 0x10, 0x91, 0xc5, 0x2a, 0xcc, 0x6c, 0x72, 0x9e, 0xd5, 0xa3, 0x42, 0x7a, 0x3e, 0x05, 0xb8, - 0x2b, 0xa4, 0x51, 0x8a, 0xab, 0xae, 0x95, 0xb7, 0x11, 0x1e, 0x8b, 0x3b, 0x18, 0x74, 0xf7, 0x81, - 0xaf, 0xe7, 0x8b, 0x80, 0x9a, 0x59, 0x11, 0x19, 0x46, 0xdd, 0x92, 0xfe, 0x2b, 0x2f, 0x3a, 0xd9, - 0xf8, 0x19, 0x2d, 0xea, 0xaa, 0xb8, 0xf5, 0x01, 0xe6, 0x1e, 0xb9, 0x72, 0xc4, 0x8c, 0xdc, 0x72, - 0xc8, 0x72, 0xad, 0xa6, 0xe4, 0x5d, 0x84, 0x47, 0x5f, 0xe9, 0x7b, 0xc6, 0x8b, 0x3b, 0xd1, 0x1a, - 0x2c, 0x6e, 0x21, 0xe4, 0x8b, 0xfb, 0x16, 0x78, 0xb6, 0x61, 0x3d, 0x94, 0xb5, 0x16, 0x17, 0x83, - 0x2f, 0x21, 0x3c, 0x92, 0x14, 0x90, 0x75, 0x71, 0x3e, 0x24, 0xca, 0x4e, 0x97, 0x9a, 0xe4, 0x9a, - 0x34, 0x5b, 0xa9, 0xe3, 0xd4, 0x53, 0x40, 0x3d, 0x6e, 0x13, 0x41, 0x9d, 0x9e, 0x45, 0xa1, 0x20, - 0x7d, 0x03, 0xe1, 0xb1, 0x4d, 0x9a, 0x78, 0x32, 0xa0, 0x98, 0xd3, 0xf6, 0x2e, 0xb4, 0xb5, 0x39, - 0x2e, 0x00, 0xc7, 0x79, 0xfb, 0x8c, 0xca, 0xe1, 0x84, 0xbc, 0xd3, 0x18, 0xe8, 0xeb, 0x08, 0x8f, - 0x6e, 0xd2, 0x76, 0xb0, 0x47, 0xc3, 0x01, 0xcf, 0x6c, 0x09, 0x0f, 0x48, 0x6b, 0xe3, 0xcc, 0x00, - 0xce, 0x39, 0xdb, 0x2a, 0xc4, 0x81, 0x3e, 0x63, 0x9a, 0xef, 0x20, 0x7c, 0xac, 0x49, 0xd9, 0x80, - 0x64, 0x51, 0xb7, 0xa7, 0xa5, 0x92, 0x4c, 0xe5, 0x3e, 0xad, 0xa5, 0xb1, 0x9f, 0x81, 0xf1, 0xaf, - 0x90, 0x27, 0x0b, 0xc6, 0x37, 0x28, 0x82, 0x6f, 0x23, 0x3c, 0x92, 0xa4, 0xa7, 0x49, 0xea, 0xc8, - 0x19, 0x3f, 0x5b, 0xa9, 0xe3, 0x31, 0x7a, 0x1e, 0x18, 0xaf, 0x59, 0x47, 0x63, 0x8c, 0xc3, 0xf7, - 0x07, 0x84, 0x47, 0xb3, 0xe1, 0x5b, 0x73, 0x99, 0x4b, 0x1c, 0x93, 0x10, 0xc6, 0x4a, 0x01, 0xbc, - 0x62, 0xde, 0x80, 0x93, 0xbf, 0x00, 0xe4, 0x4f, 0x93, 0x6b, 0x82, 0xdc, 0x73, 0x99, 0x5b, 0x33, - 0xc4, 0xaf, 0x23, 0x7c, 0x22, 0xae, 0x68, 0xe9, 0x20, 0x86, 0x05, 0x72, 0x4a, 0x1b, 0x5e, 0xa8, - 0x8f, 0x97, 0x00, 0x6d, 0x99, 0x2c, 0xd6, 0x08, 0x2a, 0x79, 0x07, 0x61, 0x72, 0x9b, 0x86, 0x5d, - 0xbf, 0x27, 0xcd, 0xf8, 0xbc, 0x76, 0xa8, 0x54, 0x2c, 0xa8, 0x16, 0x4c, 0xa4, 0xf2, 0xbc, 0x2f, - 0x1c, 0x7d, 0xde, 0xff, 0x9e, 0xcc, 0xfb, 0xcd, 0xc0, 0xa3, 0x25, 0x8b, 0x58, 0x32, 0x67, 0x96, - 0xcd, 0x54, 0xa9, 0xd0, 0xde, 0x03, 0xbc, 0x3e, 0xe9, 0x09, 0x3c, 0xf9, 0x39, 0x3c, 0x61, 0x4c, - 0xff, 0x6d, 0xe5, 0x81, 0x25, 0x4b, 0x96, 0x5e, 0x32, 0x0c, 0x2a, 0x36, 0xf4, 0xee, 0x7b, 0x87, - 0xe4, 0x9f, 0x08, 0x93, 0x78, 0x0a, 0x25, 0x9a, 0x48, 0xad, 0x95, 0x92, 0x3d, 0x9b, 0x19, 0x8f, - 0x55, 0x2a, 0xed, 0x03, 0xf0, 0x6d, 0x97, 0x44, 0x5a, 0xdf, 0xd2, 0xb3, 0xba, 0xc6, 0xc3, 0x62, - 0x7b, 0xea, 0x67, 0xb1, 0x39, 0xc9, 0xf8, 0x9f, 0x7e, 0x08, 0x9f, 0x56, 0x1d, 0xbc, 0x1e, 0x84, - 0xf0, 0x18, 0xee, 0x94, 0xd2, 0x73, 0x55, 0x4d, 0x77, 0x7f, 0x3b, 0x0c, 0xfe, 0xfe, 0x7a, 0x98, - 0xfc, 0x62, 0x58, 0x78, 0xdc, 0xbe, 0xeb, 0x77, 0xbc, 0x90, 0xe6, 0xdf, 0x9c, 0x44, 0xce, 0x81, - 0xfc, 0x43, 0x4b, 0xcc, 0x8d, 0xf4, 0x8b, 0x26, 0x2a, 0xb5, 0x9b, 0xa6, 0x01, 0xab, 0xdd, 0x92, - 0x67, 0x8e, 0x49, 0x3b, 0x91, 0x5a, 0x45, 0x6a, 0xfe, 0xe0, 0x5f, 0xea, 0x83, 0xd0, 0x94, 0xc0, - 0x0a, 0x89, 0x96, 0x4a, 0x08, 0xc4, 0xc1, 0xa4, 0x48, 0x13, 0x52, 0x16, 0xee, 0xb7, 0x5c, 0xc6, - 0x68, 0xb7, 0xcf, 0x0e, 0xc9, 0xbf, 0x11, 0x3e, 0x99, 0x5f, 0xdd, 0x50, 0xd9, 0x17, 0xab, 0x56, - 0x78, 0xb6, 0xaa, 0x2f, 0x99, 0x89, 0x79, 0x4d, 0x52, 0x16, 0x06, 0x54, 0xf4, 0xff, 0xd1, 0xca, - 0xff, 0x02, 0x1e, 0xd9, 0xa4, 0x3b, 0x7e, 0xc4, 0x68, 0xf8, 0x72, 0xd2, 0xa1, 0xba, 0xd9, 0x72, - 0x83, 0xd0, 0x69, 0x37, 0x5b, 0x45, 0xc7, 0x1d, 0x3c, 0x03, 0x0e, 0x9e, 0xb2, 0x47, 0x85, 0x83, - 0x1c, 0x1d, 0x4e, 0x69, 0xaf, 0xe2, 0xe3, 0xc9, 0xde, 0x2c, 0x86, 0x1f, 0xd7, 0x74, 0x6b, 0xcd, - 0x68, 0x0c, 0xb9, 0xad, 0xfd, 0x3c, 0x8c, 0x66, 0x59, 0xa7, 0xf2, 0xa3, 0xc5, 0x8e, 0x43, 0x09, - 0xbf, 0x83, 0x8f, 0xc5, 0x4b, 0x94, 0x37, 0x8f, 0x88, 0xad, 0xe9, 0xb8, 0xf4, 0xed, 0x92, 0x68, - 0x2d, 0xde, 0xf4, 0x11, 0xc5, 0x3b, 0xf2, 0x06, 0xc2, 0x8f, 0xca, 0x2f, 0x85, 0xd6, 0xf7, 0x68, - 0x8f, 0x91, 0xe5, 0xca, 0x4d, 0x1f, 0x74, 0x62, 0xe8, 0x86, 0xa9, 0x9c, 0x07, 0x60, 0x1a, 0x80, - 0xa6, 0xec, 0x89, 0x74, 0x8f, 0x8b, 0xcd, 0x91, 0xfc, 0xc2, 0xe8, 0xf5, 0xf4, 0x80, 0x0e, 0xb9, - 0x09, 0x5c, 0xf3, 0xa5, 0x69, 0x2b, 0x31, 0x2d, 0x98, 0x48, 0x75, 0x6f, 0x0e, 0x38, 0x4f, 0x9c, - 0x83, 0x39, 0x96, 0xb8, 0xce, 0x6a, 0x58, 0xc0, 0x64, 0xc6, 0x52, 0x24, 0xad, 0x60, 0x49, 0xdf, - 0xce, 0x7e, 0x71, 0x18, 0xb6, 0x77, 0xa9, 0x0b, 0x75, 0x7b, 0x97, 0xcc, 0x65, 0xdb, 0xbb, 0x24, - 0xb4, 0x7f, 0x32, 0x04, 0xc3, 0x3f, 0x18, 0x22, 0x6f, 0x0c, 0x49, 0x6f, 0x41, 0x73, 0xeb, 0xdc, - 0xb8, 0xf6, 0xd7, 0x28, 0xf6, 0xc6, 0xd5, 0xbd, 0xa2, 0x9c, 0x17, 0xd6, 0xef, 0xa2, 0x82, 0xad, - 0x56, 0xe8, 0xc2, 0x92, 0xac, 0xd6, 0xe0, 0xef, 0x0d, 0x25, 0x87, 0x11, 0x29, 0x76, 0x05, 0x87, - 0x11, 0xc9, 0x5e, 0xba, 0x3b, 0x2b, 0x4a, 0xfb, 0x77, 0x08, 0x66, 0xe2, 0x1d, 0x44, 0x7e, 0x89, - 0xb4, 0x33, 0x61, 0x3c, 0x0d, 0xa6, 0x73, 0x60, 0x36, 0x01, 0xfa, 0xe8, 0x93, 0x07, 0xc3, 0xb0, - 0x3d, 0x49, 0xfe, 0x14, 0x6f, 0x4f, 0xf9, 0x0c, 0x2d, 0xdd, 0x9e, 0x8a, 0xc5, 0x7c, 0xc9, 0xfc, - 0x3c, 0x49, 0xda, 0xb7, 0x86, 0xc8, 0x0f, 0x87, 0xa4, 0x1d, 0xea, 0xff, 0x99, 0x9b, 0xcf, 0xdc, - 0x7f, 0x21, 0x3c, 0x25, 0x6d, 0x66, 0x6b, 0xd0, 0xe5, 0x6a, 0xfa, 0xd1, 0x8f, 0x5c, 0xd6, 0x6c, - 0x23, 0x79, 0xa1, 0xfc, 0x58, 0xfb, 0x64, 0xcd, 0x56, 0x7c, 0xe6, 0x5e, 0x81, 0x89, 0xbb, 0x65, - 0x7d, 0x22, 0xb7, 0x33, 0xa9, 0x5f, 0x46, 0x9d, 0x03, 0xf9, 0xc3, 0x24, 0x0f, 0x4e, 0xe6, 0x47, - 0x1e, 0x9c, 0xb8, 0x44, 0xfe, 0x11, 0x61, 0xab, 0x49, 0x99, 0xce, 0xc5, 0x27, 0x0c, 0x61, 0x33, - 0x65, 0xf3, 0x62, 0x9d, 0x26, 0xdc, 0xb9, 0xa7, 0xc1, 0xb9, 0xa7, 0x06, 0xef, 0xd8, 0x4b, 0x9c, - 0x53, 0xdf, 0x11, 0xfe, 0x0d, 0xe1, 0xa9, 0x35, 0xda, 0xa1, 0xff, 0xfd, 0x4c, 0x25, 0xbd, 0xd4, - 0x9d, 0x29, 0xd1, 0x8a, 0x3b, 0xf3, 0x1c, 0x38, 0x73, 0x75, 0xe1, 0x48, 0xce, 0xc4, 0x73, 0xf2, - 0x2e, 0xc2, 0xe3, 0x52, 0xe6, 0x65, 0x3c, 0x69, 0x68, 0x98, 0x74, 0xd9, 0xe6, 0x18, 0xeb, 0x39, - 0xfd, 0x35, 0xa0, 0xbf, 0x6c, 0x39, 0x79, 0xfa, 0x8a, 0x04, 0x8b, 0xc1, 0xdf, 0x4c, 0x0e, 0xdc, - 0x2a, 0xf5, 0x62, 0x25, 0x45, 0x26, 0x81, 0x96, 0xcc, 0xc4, 0x9c, 0x77, 0x09, 0x78, 0x2f, 0x90, - 0xc7, 0xcb, 0x78, 0x05, 0x24, 0xf9, 0x15, 0xc2, 0xe3, 0x52, 0xaa, 0xd4, 0x0a, 0xad, 0x9c, 0x1e, - 0x8e, 0xb1, 0x9e, 0xa3, 0xf2, 0xef, 0x59, 0x0b, 0x46, 0xa8, 0x71, 0x3c, 0xdf, 0x47, 0x78, 0x22, - 0x99, 0x1e, 0x71, 0x4a, 0xcc, 0xe0, 0x6a, 0x5f, 0x4f, 0xe9, 0x52, 0x61, 0xc5, 0xbc, 0x01, 0x07, - 0xa6, 0x00, 0xdc, 0xb2, 0xb6, 0x94, 0x0f, 0x70, 0x47, 0xa8, 0x36, 0xd2, 0x6f, 0xa2, 0x23, 0x70, - 0xf3, 0xf7, 0x08, 0x9f, 0xca, 0x7c, 0xef, 0xcc, 0xf8, 0xb8, 0x54, 0x8d, 0x9c, 0x49, 0x9c, 0x65, - 0x43, 0x35, 0xf7, 0x6e, 0x15, 0xbc, 0xfb, 0x38, 0xb9, 0x5a, 0xea, 0x9d, 0xb2, 0x42, 0x07, 0xef, - 0x26, 0x0e, 0xc9, 0x9f, 0x10, 0x9e, 0x48, 0x26, 0xf9, 0x68, 0x13, 0x24, 0x27, 0xd4, 0x8a, 0x79, - 0x03, 0xee, 0xc2, 0x1a, 0xb8, 0xf0, 0xec, 0xc2, 0xd1, 0x5d, 0x88, 0xe3, 0xff, 0x23, 0x84, 0xc7, - 0xe3, 0x83, 0xd4, 0x4b, 0xe2, 0x42, 0x49, 0xd9, 0xa2, 0xd0, 0x08, 0xb5, 0x8b, 0x42, 0xab, 0xe7, - 0x2e, 0x3c, 0x0e, 0x2e, 0x9c, 0x25, 0x93, 0xc2, 0x85, 0xc1, 0xb5, 0x96, 0x81, 0x0f, 0x71, 0x65, - 0x81, 0xaf, 0x55, 0x83, 0x8f, 0x4b, 0x3e, 0x8d, 0xd4, 0x87, 0xdb, 0xcc, 0xb7, 0xa7, 0xec, 0x19, - 0xf2, 0x5c, 0x85, 0x4e, 0x4d, 0x85, 0xf8, 0xa8, 0xe0, 0x25, 0xf7, 0x54, 0xfc, 0x38, 0x84, 0xe2, - 0x86, 0x4d, 0x8b, 0xed, 0xf7, 0xe3, 0x33, 0x84, 0xba, 0x09, 0xfd, 0x0c, 0xe1, 0x13, 0x4d, 0x9a, - 0x01, 0xdc, 0x57, 0x2f, 0x0d, 0x64, 0x8c, 0x99, 0xb4, 0x3d, 0x53, 0x22, 0xb3, 0x3f, 0x05, 0x64, - 0x9f, 0x24, 0x1b, 0xa6, 0x64, 0xd5, 0x2f, 0x8c, 0xdf, 0x43, 0x78, 0x2c, 0x59, 0xe8, 0x59, 0xd8, - 0xb9, 0x12, 0x0a, 0xb9, 0x8e, 0xcc, 0x1b, 0x28, 0xf9, 0xe4, 0xde, 0x06, 0xfa, 0x9b, 0xd6, 0xc3, - 0xa3, 0x8f, 0xf3, 0xb5, 0x83, 0x71, 0x93, 0xb2, 0xcf, 0x24, 0x67, 0x37, 0xf5, 0x8e, 0xcf, 0xc0, - 0xa6, 0xbd, 0xe3, 0x93, 0x95, 0x70, 0xd4, 0x71, 0x40, 0x1d, 0x23, 0x23, 0x02, 0x95, 0x9f, 0x0d, - 0xc9, 0x9f, 0x93, 0x4d, 0x6d, 0x6d, 0x70, 0x7f, 0x89, 0x47, 0xac, 0xfa, 0x8b, 0xb8, 0x82, 0xa6, - 0x74, 0x62, 0xef, 0xc0, 0xb0, 0x2e, 0x69, 0xa5, 0xa7, 0xf1, 0xfc, 0x3d, 0x29, 0x88, 0x13, 0x1c, - 0x4f, 0x6b, 0x86, 0x4a, 0xfe, 0x66, 0xfe, 0xcd, 0xa1, 0x64, 0x91, 0xe7, 0x11, 0xfc, 0xa2, 0x32, - 0xab, 0x70, 0x66, 0x57, 0xd3, 0x8c, 0x91, 0xda, 0x7e, 0x2b, 0x79, 0x2a, 0xfb, 0x3e, 0x22, 0xb7, - 0xca, 0x7d, 0xab, 0xed, 0xd8, 0x56, 0x93, 0xac, 0x3f, 0x94, 0x2e, 0xc9, 0x5f, 0x92, 0x8b, 0x04, - 0xe9, 0xe3, 0xd2, 0x4b, 0xc9, 0xe5, 0x32, 0x72, 0xd1, 0xe4, 0x4b, 0x0e, 0x17, 0x8b, 0xb0, 0x5c, - 0xaa, 0xd5, 0x86, 0x67, 0x9d, 0x72, 0xf7, 0x8b, 0x5f, 0x6f, 0xab, 0xf7, 0x29, 0xe3, 0x85, 0xab, - 0x5b, 0x57, 0x76, 0x7c, 0x76, 0x77, 0x77, 0xbb, 0xd1, 0x0e, 0xba, 0x0e, 0x70, 0x04, 0xe1, 0x8e, - 0x93, 0xde, 0x9c, 0xdb, 0xa1, 0x3d, 0xa7, 0xbf, 0xbd, 0xbc, 0x13, 0x38, 0xf9, 0xab, 0x9c, 0xdb, - 0x1f, 0x86, 0x8b, 0x74, 0x97, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x01, 0x50, 0xd6, 0xe5, + 0x01, 0x0b, 0xc8, 0xa8, 0xb4, 0x36, 0x84, 0xd5, 0x9a, 0xdc, 0x09, 0x82, 0x9d, 0x0e, 0x75, 0xdc, + 0xbe, 0xef, 0xb8, 0xbd, 0x5e, 0xc0, 0x5c, 0xe6, 0x07, 0xbd, 0x88, 0xeb, 0xad, 0x41, 0x6f, 0xd0, + 0x8b, 0xd3, 0x0f, 0x83, 0x7b, 0xb4, 0xcd, 0x84, 0xb5, 0x51, 0x6c, 0x6d, 0x79, 0x41, 0xd7, 0xf5, + 0x7b, 0x2d, 0x97, 0xb1, 0xd0, 0xdf, 0xde, 0x65, 0x54, 0xf6, 0x36, 0xab, 0xd1, 0xe7, 0x84, 0xa7, + 0x33, 0x42, 0xe6, 0x46, 0xf7, 0x85, 0x69, 0x2a, 0x63, 0x7a, 0x2d, 0x08, 0xef, 0xdf, 0xe9, 0x04, + 0xaf, 0x09, 0xf3, 0x9c, 0xc6, 0x9c, 0x1f, 0xe3, 0x7c, 0x46, 0xd9, 0x71, 0x77, 0x7b, 0xed, 0xbb, + 0xad, 0x7e, 0xc7, 0x15, 0xc1, 0xb2, 0xac, 0x8c, 0x82, 0xee, 0xd1, 0x9e, 0x74, 0xfd, 0x6c, 0xd6, + 0xf6, 0x79, 0xda, 0xde, 0x8d, 0x23, 0xa7, 0x71, 0xb5, 0xeb, 0xb2, 0xf6, 0x5d, 0x77, 0xbb, 0x43, + 0x5b, 0x21, 0x8d, 0x82, 0xdd, 0xb0, 0x4d, 0x85, 0x70, 0x3a, 0x23, 0xec, 0x05, 0x1e, 0x6d, 0x65, + 0x7b, 0x9b, 0x2e, 0x88, 0x47, 0x4e, 0x94, 0x9d, 0xab, 0x3d, 0x1a, 0x46, 0x03, 0xeb, 0x99, 0x8c, + 0xb5, 0x1d, 0x74, 0xbb, 0x5a, 0x5a, 0x8f, 0x46, 0xed, 0xd0, 0xef, 0xc7, 0x9d, 0xb7, 0x68, 0x8f, + 0xf9, 0x6c, 0x9f, 0x0b, 0x2f, 0x7e, 0xe5, 0x26, 0x3e, 0xb6, 0x1a, 0x4b, 0x3e, 0xcd, 0xd3, 0x87, + 0x74, 0x31, 0x7e, 0x31, 0xa4, 0x2e, 0xa3, 0xb7, 0xdd, 0xe8, 0x3e, 0x79, 0x2c, 0xc9, 0x88, 0x06, + 0xcf, 0xba, 0xf8, 0x57, 0x6e, 0xdf, 0xa4, 0xaf, 0xee, 0xd2, 0x88, 0x59, 0x76, 0x99, 0x24, 0xea, + 0x07, 0xbd, 0x88, 0xda, 0x13, 0x5f, 0xfe, 0xc7, 0xfb, 0xdf, 0x1a, 0x22, 0xf6, 0x71, 0xc8, 0xca, + 0xbd, 0x27, 0xc0, 0xdf, 0xe8, 0x1a, 0x5a, 0x20, 0x5f, 0x43, 0xf8, 0x23, 0x4d, 0xca, 0x60, 0xb0, + 0xf3, 0xd9, 0x9e, 0x6e, 0x6d, 0xc7, 0xd9, 0xd4, 0xa4, 0x4c, 0x8e, 0x75, 0xb2, 0x68, 0x2c, 0x7b, + 0x1d, 0x7a, 0x7f, 0x8e, 0x3c, 0xa3, 0xf4, 0xee, 0x1c, 0xf8, 0x5e, 0x43, 0x24, 0xe4, 0x21, 0xfc, + 0xc3, 0xb3, 0x98, 0xff, 0xdd, 0x73, 0xbb, 0x94, 0xff, 0x25, 0xa2, 0x7a, 0x48, 0xbe, 0x8b, 0xf0, + 0x23, 0x37, 0xfc, 0x08, 0x58, 0x36, 0xbc, 0x88, 0xac, 0x64, 0x07, 0xbb, 0xe9, 0x76, 0xa9, 0xb7, + 0x0e, 0xd1, 0xdb, 0xf0, 0xe2, 0x28, 0xde, 0xf1, 0x69, 0x18, 0xb7, 0x90, 0x78, 0xf3, 0xc6, 0x2d, + 0xec, 0x45, 0x60, 0x9e, 0x21, 0xd3, 0x69, 0xe6, 0x96, 0xef, 0x45, 0xce, 0xc1, 0x80, 0x59, 0x00, + 0x93, 0xdf, 0x20, 0xfc, 0x51, 0x49, 0x16, 0x91, 0xe9, 0xec, 0x28, 0x9b, 0x22, 0x01, 0xd3, 0x28, + 0x13, 0x45, 0x91, 0x82, 0x91, 0xb7, 0x61, 0xe4, 0xcf, 0x91, 0x95, 0xba, 0xd1, 0xda, 0x9a, 0x23, + 0x17, 0xcc, 0xda, 0x90, 0x43, 0x7c, 0x82, 0x67, 0xc0, 0x67, 0xc5, 0x6a, 0x25, 0x33, 0x59, 0x1e, + 0x69, 0x51, 0x93, 0xe9, 0x42, 0x95, 0x4c, 0x24, 0xd4, 0x24, 0x38, 0xf1, 0x31, 0x7b, 0x4c, 0x02, + 0xc9, 0xb2, 0x00, 0x49, 0xf5, 0x6d, 0x84, 0x1f, 0x69, 0x52, 0x96, 0x0c, 0x5e, 0x9d, 0x58, 0x13, + 0xba, 0x71, 0xed, 0x0d, 0x18, 0xe9, 0x45, 0xb2, 0x9a, 0x1b, 0xa9, 0x76, 0x82, 0xbd, 0x89, 0xf0, + 0x48, 0x3c, 0x05, 0xb2, 0xef, 0x0f, 0x3c, 0xc9, 0x1c, 0x60, 0x9f, 0x27, 0xb3, 0x59, 0x76, 0x5d, + 0xa2, 0xbd, 0x87, 0xf0, 0xf1, 0x34, 0xa1, 0x61, 0xb2, 0x4d, 0xea, 0xa2, 0x07, 0x14, 0xf7, 0x80, + 0xc2, 0x23, 0x97, 0x8f, 0x12, 0xc1, 0xad, 0x25, 0xb2, 0x60, 0xde, 0x8e, 0x7c, 0x15, 0xe1, 0x51, + 0x9e, 0x2a, 0x37, 0xa0, 0xfa, 0xbf, 0xdc, 0x71, 0x7b, 0x64, 0x36, 0x8b, 0x37, 0xb0, 0xa9, 0xd9, + 0x37, 0x57, 0x2d, 0x14, 0xf9, 0x77, 0x0e, 0x7c, 0x3a, 0x6d, 0x9f, 0x94, 0x6c, 0xa9, 0xcd, 0x06, + 0x52, 0xf0, 0x07, 0x08, 0x1f, 0x6f, 0x52, 0x96, 0xa2, 0xa8, 0x4e, 0x42, 0x4b, 0x3f, 0xbc, 0x7d, + 0x03, 0x06, 0xbc, 0x4e, 0xd6, 0x8a, 0x06, 0xac, 0x9d, 0x89, 0x3f, 0x46, 0xf8, 0xd1, 0x26, 0x65, + 0xab, 0x6d, 0xe6, 0xef, 0x95, 0x46, 0x2a, 0xab, 0x30, 0x41, 0xbd, 0x0e, 0xa8, 0xcf, 0x93, 0x67, + 0x25, 0xaa, 0x0b, 0x9d, 0xb4, 0x6a, 0x12, 0x93, 0x07, 0x08, 0x9f, 0x8a, 0x13, 0x28, 0xcb, 0x10, + 0x91, 0xc5, 0x2a, 0xcc, 0x74, 0x72, 0x9e, 0xd5, 0xa3, 0x42, 0x7a, 0x3e, 0x05, 0xb8, 0x2b, 0xa4, + 0x51, 0x8a, 0x9b, 0x5f, 0x2b, 0x6f, 0x23, 0x3c, 0x16, 0x77, 0x30, 0xe8, 0xee, 0x03, 0x5f, 0xcf, + 0x17, 0x01, 0x35, 0xb5, 0x22, 0x52, 0x8c, 0xba, 0x25, 0xfd, 0x57, 0x51, 0x74, 0xd2, 0xf1, 0x33, + 0x5a, 0xd4, 0x55, 0x71, 0xeb, 0x03, 0xcc, 0x3d, 0x72, 0xe5, 0x88, 0x19, 0xb9, 0xe5, 0x90, 0xe5, + 0x5a, 0x4d, 0xc9, 0xbb, 0x08, 0x8f, 0xbe, 0xd2, 0xf7, 0x8c, 0x17, 0x37, 0xd7, 0x1a, 0x2c, 0x6e, + 0x29, 0x14, 0x8b, 0xfb, 0x16, 0x78, 0xb6, 0x61, 0x3d, 0x94, 0xb5, 0x16, 0x17, 0x83, 0x2f, 0x21, + 0x3c, 0xc2, 0x0b, 0xc8, 0xba, 0x3c, 0xe2, 0x91, 0xdc, 0x4e, 0x97, 0x98, 0xd4, 0x9a, 0x34, 0x5b, + 0xa9, 0x13, 0xd4, 0x53, 0x40, 0x3d, 0x6e, 0x13, 0x49, 0x9d, 0x1c, 0x27, 0xa1, 0x20, 0x7d, 0x03, + 0xe1, 0xb1, 0x4d, 0xca, 0x3d, 0x19, 0x50, 0xcc, 0x69, 0x7b, 0x97, 0xda, 0xda, 0x1c, 0x17, 0x80, + 0xe3, 0xbc, 0x7d, 0x26, 0xcf, 0xe1, 0x84, 0xa2, 0xd3, 0x18, 0xe8, 0xeb, 0x08, 0x8f, 0x6e, 0xd2, + 0x76, 0xb0, 0x47, 0xc3, 0x01, 0xcf, 0x6c, 0x09, 0x0f, 0x48, 0x6b, 0xe3, 0xcc, 0x00, 0xce, 0x39, + 0xdb, 0x2a, 0xc4, 0x81, 0x3e, 0x63, 0x9a, 0xef, 0x20, 0x7c, 0xac, 0x49, 0xd9, 0x80, 0x64, 0x51, + 0xb7, 0xa7, 0x25, 0x92, 0x54, 0xe5, 0x3e, 0xad, 0xa5, 0xb1, 0x9f, 0x81, 0xf1, 0xaf, 0x90, 0x27, + 0x0b, 0xc6, 0x37, 0x28, 0x82, 0x6f, 0x23, 0x3c, 0xc2, 0xd3, 0xd3, 0x24, 0x75, 0xd4, 0x8c, 0x9f, + 0xad, 0xd4, 0x89, 0x18, 0x3d, 0x0f, 0x8c, 0xd7, 0xac, 0xa3, 0x31, 0xc6, 0xe1, 0xfb, 0x03, 0xc2, + 0xa3, 0xe9, 0xf0, 0xad, 0xb9, 0xcc, 0x25, 0x8e, 0x49, 0x08, 0x63, 0xa5, 0x04, 0x5e, 0x31, 0x6f, + 0x20, 0xc8, 0x5f, 0x00, 0xf2, 0xa7, 0xc9, 0x35, 0x49, 0xee, 0xb9, 0xcc, 0xad, 0x19, 0xe2, 0xd7, + 0x11, 0x3e, 0x11, 0x57, 0xb4, 0x64, 0x10, 0xc3, 0x02, 0x39, 0xa5, 0x0d, 0x2f, 0xd4, 0xc7, 0x4b, + 0x80, 0xb6, 0x4c, 0x16, 0x6b, 0x04, 0x95, 0xbc, 0x83, 0x30, 0xb9, 0x4d, 0xc3, 0xae, 0xdf, 0x53, + 0x66, 0x7c, 0x5e, 0x3b, 0x54, 0x22, 0x96, 0x54, 0x0b, 0x26, 0x52, 0x75, 0xde, 0x17, 0x8e, 0x3e, + 0xef, 0x7f, 0xe7, 0xf3, 0x7e, 0x33, 0xf0, 0x68, 0xc9, 0x22, 0x56, 0xcc, 0xa9, 0x65, 0x33, 0x55, + 0x2a, 0xb4, 0xf7, 0x00, 0xaf, 0x4f, 0x7a, 0x12, 0x4f, 0x7d, 0x94, 0xe6, 0x8c, 0xc9, 0xbf, 0xad, + 0x2c, 0xb0, 0x62, 0x49, 0xd3, 0x2b, 0x86, 0x41, 0xc5, 0x86, 0xde, 0x7d, 0xef, 0x90, 0xfc, 0x13, + 0x61, 0x12, 0x4f, 0xa1, 0x42, 0x13, 0xe5, 0x6b, 0xa5, 0x62, 0x4f, 0x67, 0xc6, 0x63, 0x95, 0x4a, + 0xfb, 0x00, 0x7c, 0xdb, 0x25, 0x91, 0xd6, 0xb7, 0xe4, 0xac, 0xae, 0xf1, 0xb0, 0xd8, 0x9e, 0xf8, + 0x59, 0x6c, 0xe6, 0x19, 0xff, 0xd3, 0x0f, 0xe1, 0xd3, 0x79, 0x07, 0xaf, 0x07, 0x21, 0x3c, 0x86, + 0x3b, 0xa5, 0xf4, 0x42, 0x55, 0xd3, 0xdd, 0xdf, 0x0e, 0x83, 0xbf, 0xbf, 0x1e, 0x26, 0xbf, 0x18, + 0x96, 0x1e, 0xb7, 0xef, 0xfa, 0x1d, 0x2f, 0xa4, 0xd9, 0x97, 0x1f, 0x91, 0x73, 0xa0, 0xfe, 0xd0, + 0x92, 0x73, 0xa3, 0xfc, 0xa2, 0x89, 0x4a, 0xed, 0xa6, 0x49, 0xc0, 0x6a, 0xb7, 0x14, 0x99, 0x63, + 0xd2, 0x4e, 0xa6, 0x56, 0x91, 0x5a, 0x3c, 0xf8, 0x97, 0xfa, 0x20, 0x35, 0x25, 0xb0, 0x52, 0xa2, + 0xa5, 0x92, 0x02, 0x79, 0x30, 0x29, 0xd2, 0x84, 0x94, 0x85, 0xfb, 0x2d, 0x97, 0x31, 0xda, 0xed, + 0xb3, 0x43, 0xf2, 0x6f, 0x84, 0x4f, 0x66, 0x57, 0x37, 0x54, 0xf6, 0xc5, 0xaa, 0x15, 0x9e, 0xae, + 0xea, 0x4b, 0x66, 0x62, 0x51, 0x93, 0x72, 0x0b, 0x03, 0x2a, 0xfa, 0xff, 0x68, 0xe5, 0x7f, 0x01, + 0x8f, 0x6c, 0xd2, 0x1d, 0x3f, 0x62, 0x34, 0x7c, 0x99, 0x77, 0x98, 0xdf, 0x6c, 0x85, 0x41, 0xea, + 0xb4, 0x9b, 0x6d, 0x4e, 0x27, 0x1c, 0x3c, 0x03, 0x0e, 0x9e, 0xb2, 0x47, 0xa5, 0x83, 0x02, 0x1d, + 0x4e, 0x69, 0xaf, 0xe2, 0xe3, 0x7c, 0x6f, 0x96, 0xc3, 0x8f, 0x6b, 0xba, 0xb5, 0x66, 0x34, 0x86, + 0xcc, 0xd6, 0x7e, 0x1e, 0x46, 0xb3, 0xac, 0x53, 0xd9, 0xd1, 0x62, 0xc7, 0xa1, 0x84, 0xdf, 0xc1, + 0xc7, 0xe2, 0x25, 0x2a, 0x9a, 0x47, 0xc4, 0xd6, 0x74, 0x5c, 0xfa, 0x76, 0x49, 0xb6, 0x96, 0x6f, + 0xfa, 0x48, 0xce, 0x3b, 0xf2, 0x06, 0xc2, 0x8f, 0xaa, 0x2f, 0x85, 0xd6, 0xf7, 0x68, 0x8f, 0x91, + 0xe5, 0xca, 0x4d, 0x1f, 0x74, 0x72, 0xe8, 0x86, 0xa9, 0x5c, 0x04, 0x60, 0x1a, 0x80, 0xa6, 0xec, + 0x89, 0x64, 0x8f, 0x8b, 0xcd, 0x91, 0xfa, 0xc2, 0xe8, 0xf5, 0xe4, 0x80, 0x0e, 0xb9, 0x09, 0x5c, + 0xf3, 0xa5, 0x69, 0xab, 0x30, 0x2d, 0x98, 0x48, 0x75, 0x6f, 0x0e, 0x04, 0x4f, 0x9c, 0x83, 0x19, + 0x96, 0xb8, 0xce, 0x6a, 0x58, 0xc0, 0x64, 0xc6, 0x52, 0x24, 0xad, 0x60, 0x49, 0xde, 0xce, 0x7e, + 0x71, 0x18, 0xb6, 0x77, 0xa5, 0x8b, 0xfc, 0xf6, 0xae, 0x98, 0xcb, 0xb6, 0x77, 0x45, 0x68, 0xff, + 0x64, 0x08, 0x86, 0x7f, 0x30, 0x44, 0xde, 0x18, 0x52, 0xde, 0x82, 0x66, 0xd6, 0xb9, 0x71, 0xed, + 0xaf, 0x51, 0xec, 0x8d, 0xab, 0x7b, 0x45, 0x39, 0x2f, 0xac, 0xdf, 0x45, 0x05, 0x3b, 0x5f, 0xa1, + 0x0b, 0x4b, 0x72, 0xbe, 0x06, 0x7f, 0x6f, 0x88, 0x1f, 0x46, 0x94, 0xd8, 0x15, 0x1c, 0x46, 0x14, + 0x7b, 0xe9, 0xee, 0x9c, 0x53, 0xda, 0xbf, 0x43, 0x30, 0x13, 0xef, 0x20, 0xf2, 0x4b, 0xa4, 0x9d, + 0x09, 0xe3, 0x69, 0x30, 0x9d, 0x03, 0xb3, 0x09, 0xd0, 0x47, 0x9f, 0x3c, 0x18, 0x86, 0xed, 0x49, + 0xf1, 0xa7, 0x78, 0x7b, 0xca, 0x66, 0x68, 0xe9, 0xf6, 0x54, 0x2c, 0x16, 0x4b, 0xe6, 0xe7, 0x3c, + 0x69, 0xdf, 0x1a, 0x22, 0x3f, 0x1c, 0x52, 0x76, 0xa8, 0xff, 0x67, 0x6e, 0x36, 0x73, 0xff, 0x85, + 0xf0, 0x94, 0xb2, 0x99, 0xad, 0x41, 0x97, 0xab, 0xc9, 0x77, 0x3b, 0x72, 0x59, 0xb3, 0x8d, 0x64, + 0x85, 0xea, 0x63, 0xed, 0x93, 0x35, 0x5b, 0x89, 0x99, 0x7b, 0x05, 0x26, 0xee, 0x96, 0xf5, 0x89, + 0xcc, 0xce, 0x94, 0xff, 0xb8, 0xe9, 0x1c, 0xa8, 0xdf, 0x16, 0x45, 0x70, 0x52, 0x3f, 0x8a, 0xe0, + 0xc4, 0x25, 0xf2, 0x8f, 0x08, 0x5b, 0x4d, 0xca, 0x74, 0x2e, 0x3e, 0x61, 0x08, 0x9b, 0x2a, 0x9b, + 0x17, 0xeb, 0x34, 0x11, 0xce, 0x3d, 0x0d, 0xce, 0x3d, 0x35, 0x78, 0xc7, 0x5e, 0xe2, 0x5c, 0xfe, + 0x1d, 0xe1, 0xdf, 0x10, 0x9e, 0x5a, 0xa3, 0x1d, 0xfa, 0xdf, 0xcf, 0x14, 0xef, 0xa5, 0xee, 0x4c, + 0xc9, 0x56, 0xc2, 0x99, 0xe7, 0xc0, 0x99, 0xab, 0x0b, 0x47, 0x72, 0x26, 0x9e, 0x93, 0x77, 0x11, + 0x1e, 0x57, 0x32, 0x2f, 0xe5, 0x49, 0x43, 0xc3, 0xa4, 0xcb, 0x36, 0xc7, 0x58, 0x2f, 0xe8, 0xaf, + 0x01, 0xfd, 0x65, 0xcb, 0xc9, 0xd2, 0x57, 0x24, 0x58, 0x0c, 0xfe, 0x26, 0x3f, 0x70, 0xe7, 0xa9, + 0x17, 0x2b, 0x29, 0x52, 0x09, 0xb4, 0x64, 0x26, 0x16, 0xbc, 0x4b, 0xc0, 0x7b, 0x81, 0x3c, 0x5e, + 0xc6, 0x2b, 0x21, 0xc9, 0xaf, 0x10, 0x1e, 0x57, 0x52, 0xa5, 0x56, 0x68, 0xd5, 0xf4, 0x70, 0x8c, + 0xf5, 0x02, 0x55, 0x7c, 0xcf, 0x5a, 0x30, 0x42, 0x8d, 0xe3, 0xf9, 0x3e, 0xc2, 0x13, 0x7c, 0x7a, + 0xe4, 0x29, 0x31, 0x85, 0xab, 0x7d, 0x3d, 0xa5, 0x4b, 0x85, 0x15, 0xf3, 0x06, 0x02, 0x98, 0x02, + 0x70, 0xcb, 0xda, 0xca, 0x7d, 0x80, 0x3b, 0x42, 0xb5, 0x51, 0x7e, 0x93, 0x1d, 0x81, 0x9b, 0xbf, + 0x47, 0xf8, 0x54, 0xea, 0x7b, 0x67, 0xca, 0xc7, 0xa5, 0x6a, 0xe4, 0x54, 0xe2, 0x2c, 0x1b, 0xaa, + 0x85, 0x77, 0xab, 0xe0, 0xdd, 0xc7, 0xc9, 0xd5, 0x52, 0xef, 0x72, 0x2b, 0x74, 0xf0, 0x6e, 0xe2, + 0x90, 0xfc, 0x09, 0xe1, 0x09, 0x3e, 0xc9, 0x47, 0x9b, 0x20, 0x35, 0xa1, 0x56, 0xcc, 0x1b, 0x08, + 0x17, 0xd6, 0xc0, 0x85, 0x67, 0x17, 0x8e, 0xee, 0x42, 0x1c, 0xff, 0x1f, 0x21, 0x3c, 0x1e, 0x1f, + 0xa4, 0x5e, 0x92, 0x77, 0x42, 0xca, 0x16, 0x85, 0x46, 0xa8, 0x5d, 0x14, 0x5a, 0xbd, 0x70, 0xe1, + 0x71, 0x70, 0xe1, 0x2c, 0x99, 0x94, 0x2e, 0x0c, 0x6e, 0xa6, 0x0c, 0x7c, 0x88, 0x2b, 0x0b, 0x7c, + 0xad, 0x1a, 0x7c, 0x5c, 0xf2, 0x69, 0x94, 0x7f, 0xb8, 0x4d, 0x7d, 0x7b, 0x4a, 0x9f, 0x21, 0xcf, + 0x55, 0xe8, 0xf2, 0xa9, 0x10, 0x1f, 0x15, 0x3c, 0x7e, 0xd5, 0xc4, 0x8f, 0x43, 0x28, 0x2f, 0xc9, + 0xb4, 0xd8, 0x7e, 0x3f, 0x3e, 0x43, 0xe4, 0x37, 0xa1, 0x9f, 0x21, 0x7c, 0xa2, 0x49, 0x53, 0x80, + 0xfb, 0xf9, 0x4b, 0x03, 0x29, 0x63, 0x2a, 0x6d, 0xcf, 0x94, 0xc8, 0xec, 0x4f, 0x01, 0xd9, 0x27, + 0xc9, 0x86, 0x29, 0x59, 0xf5, 0x0b, 0xe3, 0xf7, 0x10, 0x1e, 0xe3, 0x0b, 0x3d, 0x0d, 0x3b, 0x57, + 0x42, 0xa1, 0xd6, 0x91, 0x79, 0x03, 0xa5, 0x98, 0xdc, 0xdb, 0x40, 0x7f, 0xd3, 0x7a, 0x78, 0xf4, + 0x71, 0xbe, 0x76, 0x30, 0x6e, 0x52, 0xf6, 0x19, 0x7e, 0x76, 0xcb, 0xdf, 0xf1, 0x19, 0xd8, 0xb4, + 0x77, 0x7c, 0xd2, 0x12, 0x81, 0x3a, 0x0e, 0xa8, 0x63, 0x64, 0x44, 0xa2, 0x8a, 0xb3, 0x21, 0xf9, + 0x33, 0xdf, 0xd4, 0xd6, 0x06, 0x57, 0x90, 0x44, 0xc4, 0xaa, 0xbf, 0x88, 0xe7, 0xd0, 0x72, 0x9d, + 0xd8, 0x3b, 0x30, 0xac, 0x4b, 0x5a, 0xc9, 0x69, 0x3c, 0x7b, 0xd5, 0x09, 0xe2, 0x04, 0xc7, 0xd3, + 0x9a, 0xa1, 0x52, 0xbf, 0x99, 0x7f, 0x73, 0x88, 0x2f, 0xf2, 0x2c, 0x82, 0x5f, 0x54, 0x66, 0x73, + 0x9c, 0xe9, 0xd5, 0x34, 0x63, 0xa4, 0xb6, 0xdf, 0xe2, 0x4f, 0x65, 0xdf, 0x47, 0xe4, 0x56, 0xb9, + 0x6f, 0xb5, 0x1d, 0xdb, 0x6a, 0x92, 0xf5, 0x87, 0xd2, 0x25, 0xf9, 0x0b, 0xbf, 0x48, 0x90, 0x3c, + 0x2e, 0xbd, 0x44, 0x59, 0xe8, 0xb7, 0x23, 0x72, 0xd1, 0xe4, 0x4b, 0x8e, 0x10, 0xcb, 0xb0, 0x5c, + 0xaa, 0xd5, 0x46, 0x64, 0x5d, 0xee, 0xee, 0x57, 0x97, 0x0b, 0xea, 0x7d, 0xca, 0x78, 0xe1, 0xea, + 0xd6, 0x95, 0x1d, 0x9f, 0xdd, 0xdd, 0xdd, 0x6e, 0xb4, 0x83, 0xae, 0x03, 0x1c, 0x41, 0xb8, 0xe3, + 0x24, 0xb7, 0xe8, 0x76, 0x68, 0xcf, 0xe9, 0x6f, 0x2f, 0xef, 0x04, 0x4e, 0xf6, 0x36, 0xe6, 0xf6, + 0x87, 0xe1, 0x22, 0xdd, 0xa5, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x92, 0x51, 0x02, 0xc6, 0xa8, 0x29, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/service/admin.swagger.json b/gen/pb-go/flyteidl/service/admin.swagger.json index 242f84f47..a6f5cad5e 100644 --- a/gen/pb-go/flyteidl/service/admin.swagger.json +++ b/gen/pb-go/flyteidl/service/admin.swagger.json @@ -4092,6 +4092,21 @@ "default": "MINUTE", "description": "Represents a frequency at which to run a schedule." }, + "adminFlyteURLs": { + "type": "object", + "properties": { + "inputs": { + "type": "string" + }, + "outputs": { + "type": "string" + }, + "deck": { + "type": "string" + } + }, + "description": "These URLs are returned as part of node and task execution data requests." + }, "adminGetVersionResponse": { "type": "object", "properties": { @@ -4607,6 +4622,9 @@ "dynamic_workflow": { "$ref": "#/definitions/flyteidladminDynamicWorkflowNodeMetadata", "description": "Optional Workflow closure for a dynamically generated workflow, in the case this node yields a dynamic workflow we return its structure here." + }, + "flyte_urls": { + "$ref": "#/definitions/adminFlyteURLs" } }, "description": "Response structure for NodeExecutionGetDataRequest which contains inputs and outputs for a node execution." @@ -5144,6 +5162,10 @@ "full_outputs": { "$ref": "#/definitions/coreLiteralMap", "description": "Full_outputs will only be populated if they are under a configured size threshold." + }, + "flyte_urls": { + "$ref": "#/definitions/adminFlyteURLs", + "title": "flyte tiny url to fetch a core.LiteralMap of task execution's IO\nDeck will be empty for task" } }, "description": "Response structure for TaskExecutionGetDataRequest which contains inputs and outputs for a task execution." diff --git a/gen/pb-go/flyteidl/service/dataproxy.pb.go b/gen/pb-go/flyteidl/service/dataproxy.pb.go index 7af285aad..0033cb5fd 100644 --- a/gen/pb-go/flyteidl/service/dataproxy.pb.go +++ b/gen/pb-go/flyteidl/service/dataproxy.pb.go @@ -392,12 +392,14 @@ func (*CreateDownloadLinkRequest) XXX_OneofWrappers() []interface{} { // CreateDownloadLinkResponse defines the response for the generated links type CreateDownloadLinkResponse struct { // SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) - SignedUrl []string `protobuf:"bytes,1,rep,name=signed_url,json=signedUrl,proto3" json:"signed_url,omitempty"` + SignedUrl []string `protobuf:"bytes,1,rep,name=signed_url,json=signedUrl,proto3" json:"signed_url,omitempty"` // Deprecated: Do not use. // ExpiresAt defines when will the signed URL expire. - ExpiresAt *timestamp.Timestamp `protobuf:"bytes,2,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ExpiresAt *timestamp.Timestamp `protobuf:"bytes,2,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` // Deprecated: Do not use. + // New wrapper object containing the signed urls and expiration time + PreSignedUrls *PreSignedURLs `protobuf:"bytes,3,opt,name=pre_signed_urls,json=preSignedUrls,proto3" json:"pre_signed_urls,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *CreateDownloadLinkResponse) Reset() { *m = CreateDownloadLinkResponse{} } @@ -425,6 +427,7 @@ func (m *CreateDownloadLinkResponse) XXX_DiscardUnknown() { var xxx_messageInfo_CreateDownloadLinkResponse proto.InternalMessageInfo +// Deprecated: Do not use. func (m *CreateDownloadLinkResponse) GetSignedUrl() []string { if m != nil { return m.SignedUrl @@ -432,6 +435,7 @@ func (m *CreateDownloadLinkResponse) GetSignedUrl() []string { return nil } +// Deprecated: Do not use. func (m *CreateDownloadLinkResponse) GetExpiresAt() *timestamp.Timestamp { if m != nil { return m.ExpiresAt @@ -439,6 +443,187 @@ func (m *CreateDownloadLinkResponse) GetExpiresAt() *timestamp.Timestamp { return nil } +func (m *CreateDownloadLinkResponse) GetPreSignedUrls() *PreSignedURLs { + if m != nil { + return m.PreSignedUrls + } + return nil +} + +// Wrapper object since the message is shared across this and the GetDataResponse +type PreSignedURLs struct { + // SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) + SignedUrl []string `protobuf:"bytes,1,rep,name=signed_url,json=signedUrl,proto3" json:"signed_url,omitempty"` + // ExpiresAt defines when will the signed URL expire. + ExpiresAt *timestamp.Timestamp `protobuf:"bytes,2,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PreSignedURLs) Reset() { *m = PreSignedURLs{} } +func (m *PreSignedURLs) String() string { return proto.CompactTextString(m) } +func (*PreSignedURLs) ProtoMessage() {} +func (*PreSignedURLs) Descriptor() ([]byte, []int) { + return fileDescriptor_bffb71366d75dab0, []int{6} +} + +func (m *PreSignedURLs) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PreSignedURLs.Unmarshal(m, b) +} +func (m *PreSignedURLs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PreSignedURLs.Marshal(b, m, deterministic) +} +func (m *PreSignedURLs) XXX_Merge(src proto.Message) { + xxx_messageInfo_PreSignedURLs.Merge(m, src) +} +func (m *PreSignedURLs) XXX_Size() int { + return xxx_messageInfo_PreSignedURLs.Size(m) +} +func (m *PreSignedURLs) XXX_DiscardUnknown() { + xxx_messageInfo_PreSignedURLs.DiscardUnknown(m) +} + +var xxx_messageInfo_PreSignedURLs proto.InternalMessageInfo + +func (m *PreSignedURLs) GetSignedUrl() []string { + if m != nil { + return m.SignedUrl + } + return nil +} + +func (m *PreSignedURLs) GetExpiresAt() *timestamp.Timestamp { + if m != nil { + return m.ExpiresAt + } + return nil +} + +// General request artifact to retrieve data from a Flyte artifact url. +type GetDataRequest struct { + // A unique identifier in the form of flyte:// that uniquely, for a given Flyte + // backend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.). + // e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input) + // flyte://v1/proj/development/execid/n2/i (for node execution input) + FlyteUrl string `protobuf:"bytes,1,opt,name=flyte_url,json=flyteUrl,proto3" json:"flyte_url,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetDataRequest) Reset() { *m = GetDataRequest{} } +func (m *GetDataRequest) String() string { return proto.CompactTextString(m) } +func (*GetDataRequest) ProtoMessage() {} +func (*GetDataRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_bffb71366d75dab0, []int{7} +} + +func (m *GetDataRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetDataRequest.Unmarshal(m, b) +} +func (m *GetDataRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetDataRequest.Marshal(b, m, deterministic) +} +func (m *GetDataRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetDataRequest.Merge(m, src) +} +func (m *GetDataRequest) XXX_Size() int { + return xxx_messageInfo_GetDataRequest.Size(m) +} +func (m *GetDataRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetDataRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetDataRequest proto.InternalMessageInfo + +func (m *GetDataRequest) GetFlyteUrl() string { + if m != nil { + return m.FlyteUrl + } + return "" +} + +type GetDataResponse struct { + // Types that are valid to be assigned to Data: + // *GetDataResponse_LiteralMap + // *GetDataResponse_PreSignedUrls + Data isGetDataResponse_Data `protobuf_oneof:"data"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetDataResponse) Reset() { *m = GetDataResponse{} } +func (m *GetDataResponse) String() string { return proto.CompactTextString(m) } +func (*GetDataResponse) ProtoMessage() {} +func (*GetDataResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_bffb71366d75dab0, []int{8} +} + +func (m *GetDataResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetDataResponse.Unmarshal(m, b) +} +func (m *GetDataResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetDataResponse.Marshal(b, m, deterministic) +} +func (m *GetDataResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetDataResponse.Merge(m, src) +} +func (m *GetDataResponse) XXX_Size() int { + return xxx_messageInfo_GetDataResponse.Size(m) +} +func (m *GetDataResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetDataResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetDataResponse proto.InternalMessageInfo + +type isGetDataResponse_Data interface { + isGetDataResponse_Data() +} + +type GetDataResponse_LiteralMap struct { + LiteralMap *core.LiteralMap `protobuf:"bytes,1,opt,name=literal_map,json=literalMap,proto3,oneof"` +} + +type GetDataResponse_PreSignedUrls struct { + PreSignedUrls *PreSignedURLs `protobuf:"bytes,2,opt,name=pre_signed_urls,json=preSignedUrls,proto3,oneof"` +} + +func (*GetDataResponse_LiteralMap) isGetDataResponse_Data() {} + +func (*GetDataResponse_PreSignedUrls) isGetDataResponse_Data() {} + +func (m *GetDataResponse) GetData() isGetDataResponse_Data { + if m != nil { + return m.Data + } + return nil +} + +func (m *GetDataResponse) GetLiteralMap() *core.LiteralMap { + if x, ok := m.GetData().(*GetDataResponse_LiteralMap); ok { + return x.LiteralMap + } + return nil +} + +func (m *GetDataResponse) GetPreSignedUrls() *PreSignedURLs { + if x, ok := m.GetData().(*GetDataResponse_PreSignedUrls); ok { + return x.PreSignedUrls + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*GetDataResponse) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*GetDataResponse_LiteralMap)(nil), + (*GetDataResponse_PreSignedUrls)(nil), + } +} + func init() { proto.RegisterEnum("flyteidl.service.ArtifactType", ArtifactType_name, ArtifactType_value) proto.RegisterType((*CreateUploadLocationResponse)(nil), "flyteidl.service.CreateUploadLocationResponse") @@ -447,56 +632,70 @@ func init() { proto.RegisterType((*CreateDownloadLocationResponse)(nil), "flyteidl.service.CreateDownloadLocationResponse") proto.RegisterType((*CreateDownloadLinkRequest)(nil), "flyteidl.service.CreateDownloadLinkRequest") proto.RegisterType((*CreateDownloadLinkResponse)(nil), "flyteidl.service.CreateDownloadLinkResponse") + proto.RegisterType((*PreSignedURLs)(nil), "flyteidl.service.PreSignedURLs") + proto.RegisterType((*GetDataRequest)(nil), "flyteidl.service.GetDataRequest") + proto.RegisterType((*GetDataResponse)(nil), "flyteidl.service.GetDataResponse") } func init() { proto.RegisterFile("flyteidl/service/dataproxy.proto", fileDescriptor_bffb71366d75dab0) } var fileDescriptor_bffb71366d75dab0 = []byte{ - // 702 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xcf, 0x6e, 0xd3, 0x4a, - 0x14, 0xc6, 0x3b, 0xe9, 0xbd, 0xbd, 0xcd, 0xb4, 0xf7, 0xde, 0x30, 0x42, 0x25, 0x75, 0xdb, 0x34, - 0x32, 0x08, 0x95, 0x40, 0x6d, 0x28, 0xaa, 0xa0, 0xdd, 0xa5, 0x49, 0x2a, 0x22, 0xa0, 0xaa, 0x4c, - 0xba, 0x80, 0x8d, 0x35, 0xb1, 0x4f, 0xc2, 0x50, 0x67, 0xc6, 0x8c, 0xc7, 0xa1, 0x91, 0x10, 0x0b, - 0x56, 0xec, 0x59, 0xb0, 0x60, 0xc3, 0x8a, 0x47, 0xe1, 0x05, 0x78, 0x05, 0x9e, 0x02, 0xb1, 0x40, - 0xb1, 0x9d, 0xa4, 0x49, 0x93, 0x36, 0x20, 0x96, 0x67, 0xbe, 0x2f, 0x39, 0xbf, 0x39, 0x7f, 0xc6, - 0x38, 0xdf, 0xf0, 0x3a, 0x0a, 0x98, 0xeb, 0x99, 0x01, 0xc8, 0x36, 0x73, 0xc0, 0x74, 0xa9, 0xa2, - 0xbe, 0x14, 0x27, 0x1d, 0xc3, 0x97, 0x42, 0x09, 0x92, 0xe9, 0x39, 0x8c, 0xc4, 0xa1, 0xad, 0x36, - 0x85, 0x68, 0x7a, 0x60, 0x52, 0x9f, 0x99, 0x94, 0x73, 0xa1, 0xa8, 0x62, 0x82, 0x07, 0xb1, 0x5f, - 0xcb, 0x25, 0x6a, 0x14, 0xd5, 0xc3, 0x86, 0xe9, 0x86, 0x32, 0x32, 0x24, 0xfa, 0xfa, 0xa8, 0xae, - 0x58, 0x0b, 0x02, 0x45, 0x5b, 0x7e, 0xef, 0x0f, 0xfa, 0x48, 0x8e, 0x90, 0x60, 0x32, 0x17, 0xb8, - 0x62, 0x0d, 0x06, 0x32, 0xd6, 0xf5, 0x0f, 0x08, 0xaf, 0x96, 0x24, 0x50, 0x05, 0x47, 0xbe, 0x27, - 0xa8, 0xfb, 0x48, 0x38, 0xd1, 0xff, 0x5b, 0x10, 0xf8, 0x82, 0x07, 0x40, 0xd6, 0x30, 0x0e, 0x58, - 0x93, 0x83, 0x6b, 0x87, 0xd2, 0xcb, 0xa2, 0x3c, 0xda, 0x48, 0x5b, 0xe9, 0xf8, 0xe4, 0x48, 0x7a, - 0x5d, 0x99, 0x53, 0xc5, 0xda, 0x10, 0xc9, 0xa9, 0x58, 0x8e, 0x4f, 0xba, 0xf2, 0x0e, 0xc6, 0x70, - 0xe2, 0x33, 0x09, 0x81, 0x4d, 0x55, 0x76, 0x36, 0x8f, 0x36, 0x16, 0xb6, 0x34, 0x23, 0x86, 0x36, - 0x7a, 0xd0, 0x46, 0xad, 0x07, 0x6d, 0xa5, 0x13, 0x77, 0x51, 0xe9, 0x5f, 0x10, 0x5e, 0x19, 0x4f, - 0xf6, 0x32, 0x84, 0x40, 0x91, 0x2c, 0xfe, 0xc7, 0x97, 0xe2, 0x05, 0x38, 0x2a, 0xa1, 0xea, 0x85, - 0x64, 0x09, 0xcf, 0xb9, 0xa2, 0x45, 0x19, 0x4f, 0x78, 0x92, 0x88, 0x68, 0x78, 0xbe, 0xc1, 0x3c, - 0xe0, 0xb4, 0x05, 0x11, 0x4a, 0xda, 0xea, 0xc7, 0xe4, 0xfe, 0x00, 0x94, 0xf1, 0xec, 0x5f, 0x11, - 0xe8, 0xf2, 0x19, 0xd0, 0x72, 0x52, 0xfd, 0x3e, 0x67, 0x95, 0x93, 0x75, 0xbc, 0xe0, 0x08, 0xae, - 0x80, 0x2b, 0xbb, 0xe5, 0x6e, 0x67, 0xff, 0xce, 0xa3, 0x8d, 0x45, 0x0b, 0x27, 0x47, 0x8f, 0xdd, - 0x6d, 0xfd, 0x35, 0x5e, 0x8b, 0xef, 0x51, 0x16, 0xaf, 0xf8, 0xb8, 0x9b, 0x0c, 0xd7, 0x10, 0x8d, - 0xd6, 0x70, 0x18, 0x2d, 0x35, 0x3d, 0xda, 0x6e, 0x2a, 0x8b, 0xf4, 0x37, 0x38, 0x37, 0x29, 0xfb, - 0x74, 0x1d, 0x1e, 0x6e, 0x61, 0xea, 0x17, 0x5a, 0x18, 0xe5, 0xff, 0x8e, 0xf0, 0xf2, 0x08, 0x00, - 0xe3, 0xc7, 0xbd, 0xab, 0x97, 0xf0, 0xbf, 0x54, 0x2a, 0xd6, 0xa0, 0x8e, 0xb2, 0x55, 0xc7, 0x87, - 0x28, 0xfd, 0x7f, 0x5b, 0x39, 0x63, 0x74, 0x4f, 0x8c, 0x62, 0x62, 0xab, 0x75, 0x7c, 0xb0, 0x16, - 0xe9, 0xa9, 0xe8, 0xf7, 0x0b, 0x44, 0x6a, 0xf8, 0x12, 0x17, 0x2e, 0xd8, 0x70, 0x02, 0x4e, 0xd8, - 0x15, 0x6d, 0xe6, 0x26, 0x53, 0x7a, 0x7d, 0x80, 0xd0, 0xdd, 0x1c, 0xe3, 0x40, 0xb8, 0x50, 0xe9, - 0xd9, 0xaa, 0xfd, 0x35, 0x7a, 0x30, 0x63, 0xfd, 0xcf, 0x87, 0xa5, 0xbd, 0x79, 0x3c, 0x17, 0x88, - 0x50, 0x3a, 0xa0, 0xb7, 0xb1, 0x36, 0xee, 0xee, 0x13, 0x0a, 0x3f, 0xfb, 0xa7, 0x0a, 0x5f, 0x28, - 0xe1, 0xc5, 0xd3, 0xf5, 0x22, 0x2b, 0xf8, 0x4a, 0xd1, 0xaa, 0x55, 0xf7, 0x8b, 0xa5, 0x9a, 0x5d, - 0x7b, 0x7a, 0x58, 0xb1, 0x8f, 0x0e, 0xca, 0x95, 0xfd, 0xea, 0x41, 0xa5, 0x9c, 0x99, 0x21, 0x4b, - 0x98, 0x0c, 0x8b, 0xe5, 0x4a, 0xe9, 0x61, 0x06, 0x6d, 0xfd, 0x98, 0xc5, 0x99, 0x32, 0x55, 0xf4, - 0xb0, 0xfb, 0x7e, 0x3d, 0x89, 0xdb, 0x40, 0x3e, 0x21, 0x7c, 0x79, 0xdc, 0x56, 0x92, 0xcd, 0xb3, - 0x2d, 0x3b, 0x67, 0x7b, 0x35, 0x63, 0x5a, 0x7b, 0x5c, 0x2b, 0xfd, 0xc6, 0xdb, 0xaf, 0xdf, 0xde, - 0xa7, 0xae, 0xea, 0xb9, 0xe8, 0xa1, 0x6c, 0xdf, 0x19, 0xbc, 0xac, 0x66, 0x7f, 0x80, 0x42, 0xc9, - 0x77, 0x51, 0x81, 0x7c, 0x46, 0x78, 0x69, 0xfc, 0xc8, 0x13, 0x73, 0x52, 0xd6, 0x09, 0xab, 0xa9, - 0xdd, 0x9e, 0xfe, 0x07, 0x43, 0xa0, 0x79, 0x72, 0x01, 0xe8, 0xbb, 0x14, 0x22, 0x1f, 0x11, 0x26, - 0x67, 0xc7, 0x83, 0xdc, 0xbc, 0x30, 0xe7, 0x60, 0x81, 0xb4, 0x5b, 0xd3, 0x99, 0x13, 0xb8, 0x42, - 0x04, 0x77, 0x4d, 0x5f, 0x3f, 0x07, 0xce, 0x63, 0xfc, 0x78, 0x17, 0x15, 0xf6, 0x76, 0x9e, 0xdd, - 0x6b, 0x32, 0xf5, 0x3c, 0xac, 0x1b, 0x8e, 0x68, 0x99, 0x51, 0x16, 0x21, 0x9b, 0x66, 0xff, 0x7b, - 0xd2, 0x04, 0x6e, 0xfa, 0xf5, 0xcd, 0xa6, 0x30, 0x47, 0xbf, 0x7a, 0xf5, 0xb9, 0x68, 0x3a, 0xef, - 0xfe, 0x0c, 0x00, 0x00, 0xff, 0xff, 0xc0, 0xac, 0xd3, 0xb4, 0x10, 0x07, 0x00, 0x00, + // 872 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x6f, 0xe3, 0x44, + 0x14, 0xef, 0xa4, 0xa5, 0xdb, 0xbc, 0xfe, 0x65, 0xb4, 0x2a, 0x59, 0xb7, 0xdb, 0x66, 0x0d, 0x42, + 0xa5, 0x50, 0x1b, 0x8a, 0x56, 0xb0, 0x2b, 0x38, 0xb4, 0x49, 0x76, 0x1b, 0xd1, 0xad, 0x2a, 0x6f, + 0x7a, 0x80, 0x8b, 0x35, 0xb5, 0x27, 0x61, 0x58, 0x67, 0xc6, 0x8c, 0x27, 0xa5, 0x91, 0x10, 0x07, + 0x4e, 0xdc, 0x39, 0x70, 0xe0, 0x82, 0x38, 0xf0, 0x51, 0xe0, 0x03, 0xf0, 0x0d, 0x10, 0x9f, 0x82, + 0x13, 0xf2, 0x78, 0xe2, 0xc4, 0x49, 0xda, 0xcd, 0x22, 0x8e, 0x6f, 0x7e, 0x6f, 0xfc, 0xfb, 0xbd, + 0xdf, 0xbc, 0x37, 0x63, 0xa8, 0xb6, 0xa3, 0xbe, 0xa2, 0x2c, 0x8c, 0xdc, 0x84, 0xca, 0x2b, 0x16, + 0x50, 0x37, 0x24, 0x8a, 0xc4, 0x52, 0x5c, 0xf7, 0x9d, 0x58, 0x0a, 0x25, 0xf0, 0xc6, 0x20, 0xc3, + 0x31, 0x19, 0xd6, 0x76, 0x47, 0x88, 0x4e, 0x44, 0x5d, 0x12, 0x33, 0x97, 0x70, 0x2e, 0x14, 0x51, + 0x4c, 0xf0, 0x24, 0xcb, 0xb7, 0x76, 0x0c, 0xaa, 0xa3, 0xcb, 0x5e, 0xdb, 0x0d, 0x7b, 0x52, 0x27, + 0x18, 0x7c, 0x77, 0x1c, 0x57, 0xac, 0x4b, 0x13, 0x45, 0xba, 0xf1, 0xe0, 0x03, 0xb9, 0xa4, 0x40, + 0x48, 0xea, 0xb2, 0x90, 0x72, 0xc5, 0xda, 0x8c, 0x4a, 0x83, 0x6f, 0x17, 0xf1, 0x88, 0x29, 0x2a, + 0x49, 0x64, 0xe8, 0xed, 0x9f, 0x10, 0x6c, 0xd7, 0x24, 0x25, 0x8a, 0x5e, 0xc4, 0x91, 0x20, 0xe1, + 0xa9, 0x08, 0x34, 0xbb, 0x47, 0x93, 0x58, 0xf0, 0x84, 0xe2, 0xfb, 0x00, 0x09, 0xeb, 0x70, 0x1a, + 0xfa, 0x3d, 0x19, 0x55, 0x50, 0x15, 0xed, 0x95, 0xbd, 0x72, 0xb6, 0x72, 0x21, 0xa3, 0x14, 0xe6, + 0x44, 0xb1, 0x2b, 0xaa, 0xe1, 0x52, 0x06, 0x67, 0x2b, 0x29, 0xfc, 0x08, 0x80, 0x5e, 0xc7, 0x4c, + 0xd2, 0xc4, 0x27, 0xaa, 0x32, 0x5f, 0x45, 0x7b, 0xcb, 0x87, 0x96, 0x93, 0x95, 0xe4, 0x0c, 0x4a, + 0x72, 0x5a, 0x83, 0x92, 0xbc, 0xb2, 0xc9, 0x3e, 0x52, 0xf6, 0xef, 0x08, 0xb6, 0xa6, 0x2b, 0xfb, + 0xba, 0x47, 0x13, 0x85, 0x2b, 0x70, 0x27, 0x96, 0xe2, 0x2b, 0x1a, 0x28, 0xa3, 0x6a, 0x10, 0xe2, + 0x4d, 0x58, 0x0c, 0x45, 0x97, 0x30, 0x6e, 0xf4, 0x98, 0x08, 0x5b, 0xb0, 0xd4, 0x66, 0x11, 0xe5, + 0xa4, 0x4b, 0xb5, 0x94, 0xb2, 0x97, 0xc7, 0xf8, 0xe3, 0xa1, 0x50, 0xc6, 0x2b, 0x0b, 0x5a, 0xe8, + 0xbd, 0x09, 0xa1, 0x75, 0x73, 0x36, 0xb9, 0xce, 0x26, 0xc7, 0xbb, 0xb0, 0x1c, 0x08, 0xae, 0x28, + 0x57, 0x7e, 0x37, 0x7c, 0x58, 0x79, 0xad, 0x8a, 0xf6, 0x56, 0x3c, 0x30, 0x4b, 0xcf, 0xc2, 0x87, + 0xf6, 0xb7, 0x70, 0x3f, 0xab, 0xa3, 0x2e, 0xbe, 0xe1, 0xd3, 0x2a, 0x29, 0x7a, 0x88, 0xc6, 0x3d, + 0x2c, 0x4a, 0x2b, 0xcd, 0x2e, 0xed, 0x71, 0xa9, 0x82, 0xec, 0xef, 0x60, 0xe7, 0x26, 0xf6, 0xd9, + 0x4e, 0xb8, 0x78, 0x84, 0xa5, 0x57, 0x38, 0x42, 0xcd, 0xff, 0x0f, 0x82, 0x7b, 0x63, 0x02, 0x18, + 0x7f, 0x31, 0x28, 0xbd, 0x06, 0xab, 0x44, 0x2a, 0xd6, 0x26, 0x81, 0xf2, 0x55, 0x3f, 0xa6, 0x9a, + 0x7e, 0xed, 0x70, 0xc7, 0x19, 0x9f, 0x22, 0xe7, 0xc8, 0xa4, 0xb5, 0xfa, 0x31, 0xf5, 0x56, 0xc8, + 0x48, 0xf4, 0xdf, 0x0d, 0xc2, 0x2d, 0x78, 0x9d, 0x8b, 0x90, 0xfa, 0xf4, 0x9a, 0x06, 0xbd, 0x14, + 0xf4, 0x59, 0x68, 0xba, 0xf4, 0xed, 0xa1, 0x84, 0x74, 0x6e, 0x9c, 0x33, 0x11, 0xd2, 0xc6, 0x20, + 0xad, 0x99, 0x0f, 0xd9, 0xc9, 0x9c, 0xb7, 0xce, 0x8b, 0xd0, 0xf1, 0x12, 0x2c, 0x26, 0xa2, 0x27, + 0x03, 0x6a, 0xff, 0x81, 0xc0, 0x9a, 0x56, 0xbc, 0x71, 0xfe, 0xc1, 0x98, 0xf3, 0xf3, 0x7b, 0xe5, + 0xe3, 0x52, 0x05, 0x8d, 0xba, 0xff, 0xe9, 0xab, 0xb9, 0x9f, 0x6d, 0xcf, 0x4f, 0x00, 0x3f, 0x85, + 0xf5, 0x58, 0x52, 0x7f, 0xc8, 0x92, 0x98, 0xf2, 0x76, 0x27, 0x1d, 0x3e, 0x97, 0xf4, 0x79, 0xc6, + 0xeb, 0x9d, 0x26, 0xde, 0x6a, 0x9c, 0x87, 0x32, 0x4a, 0x6c, 0x06, 0xab, 0x05, 0x7c, 0xa2, 0x6b, + 0xe6, 0xff, 0xaf, 0xae, 0xb1, 0x0f, 0x60, 0xed, 0x29, 0x55, 0x75, 0xa2, 0xc8, 0xa0, 0x4b, 0xb6, + 0xa0, 0xac, 0xd5, 0x8e, 0x34, 0xe8, 0x92, 0x5e, 0xb8, 0x90, 0x91, 0xfd, 0x2b, 0x82, 0xf5, 0x3c, + 0xdf, 0x18, 0xfb, 0x09, 0x2c, 0x9b, 0x7b, 0xce, 0xef, 0x92, 0x58, 0x6f, 0x49, 0x5b, 0xa2, 0x78, + 0xa2, 0xa7, 0x59, 0xc6, 0x33, 0x12, 0x9f, 0xcc, 0x79, 0x10, 0xe5, 0x11, 0x6e, 0x4e, 0x9a, 0x56, + 0x9a, 0xc9, 0xb4, 0x93, 0xb9, 0x31, 0xdb, 0x8e, 0x17, 0x61, 0x21, 0x7d, 0x20, 0xf6, 0x6b, 0xb0, + 0x32, 0xda, 0xc0, 0x78, 0x0b, 0xde, 0x38, 0xf2, 0x5a, 0xcd, 0x27, 0x47, 0xb5, 0x96, 0xdf, 0xfa, + 0xfc, 0xbc, 0xe1, 0x5f, 0x9c, 0xd5, 0x1b, 0x4f, 0x9a, 0x67, 0x8d, 0xfa, 0xc6, 0x1c, 0xde, 0x04, + 0x5c, 0x04, 0xeb, 0x8d, 0xda, 0x67, 0x1b, 0xe8, 0xf0, 0xaf, 0x05, 0xd8, 0x48, 0xcb, 0x3c, 0x4f, + 0x9f, 0x9b, 0xe7, 0x99, 0x00, 0xfc, 0x0b, 0x82, 0xbb, 0xd3, 0xae, 0x49, 0x7c, 0x30, 0x29, 0xf6, + 0x96, 0xeb, 0xd4, 0x72, 0x66, 0x4d, 0xcf, 0x2c, 0xb6, 0xdf, 0xf9, 0xfe, 0xcf, 0xbf, 0x7f, 0x2c, + 0xbd, 0x69, 0xef, 0xe8, 0x77, 0xed, 0xea, 0x83, 0xe1, 0x43, 0xe8, 0xe6, 0x13, 0xdd, 0x93, 0xfc, + 0x31, 0xda, 0xc7, 0xbf, 0x21, 0xd8, 0x9c, 0x7e, 0x07, 0x61, 0xf7, 0x26, 0xd6, 0x1b, 0xee, 0x4a, + 0xeb, 0xfd, 0xd9, 0x37, 0x14, 0x84, 0x56, 0xf1, 0x4b, 0x84, 0xfe, 0x50, 0x42, 0xf8, 0x67, 0x04, + 0x78, 0x72, 0x5c, 0xf1, 0xbb, 0x2f, 0xe5, 0x1c, 0xde, 0x68, 0xd6, 0x7b, 0xb3, 0x25, 0x1b, 0x71, + 0xfb, 0x5a, 0xdc, 0x5b, 0xf6, 0xee, 0x2d, 0xe2, 0x22, 0xc6, 0x5f, 0xa4, 0x36, 0x86, 0x70, 0xc7, + 0xf4, 0x39, 0xae, 0x4e, 0x92, 0x14, 0x47, 0xc6, 0x7a, 0x70, 0x4b, 0x86, 0xe1, 0xbe, 0xab, 0xb9, + 0xd7, 0xf0, 0xca, 0x28, 0xf7, 0xf1, 0xa3, 0x2f, 0x3e, 0xea, 0x30, 0xf5, 0x65, 0xef, 0xd2, 0x09, + 0x44, 0xd7, 0xd5, 0x1f, 0x11, 0xb2, 0xe3, 0xe6, 0x3f, 0x11, 0x1d, 0xca, 0xdd, 0xf8, 0xf2, 0xa0, + 0x23, 0xdc, 0xf1, 0x5f, 0xa1, 0xcb, 0x45, 0x3d, 0xd7, 0x1f, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, + 0xd7, 0x01, 0x0d, 0xde, 0x25, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -517,6 +716,7 @@ type DataProxyServiceClient interface { CreateDownloadLocation(ctx context.Context, in *CreateDownloadLocationRequest, opts ...grpc.CallOption) (*CreateDownloadLocationResponse, error) // CreateDownloadLocation creates a signed url to download artifacts. CreateDownloadLink(ctx context.Context, in *CreateDownloadLinkRequest, opts ...grpc.CallOption) (*CreateDownloadLinkResponse, error) + GetData(ctx context.Context, in *GetDataRequest, opts ...grpc.CallOption) (*GetDataResponse, error) } type dataProxyServiceClient struct { @@ -555,6 +755,15 @@ func (c *dataProxyServiceClient) CreateDownloadLink(ctx context.Context, in *Cre return out, nil } +func (c *dataProxyServiceClient) GetData(ctx context.Context, in *GetDataRequest, opts ...grpc.CallOption) (*GetDataResponse, error) { + out := new(GetDataResponse) + err := c.cc.Invoke(ctx, "/flyteidl.service.DataProxyService/GetData", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // DataProxyServiceServer is the server API for DataProxyService service. type DataProxyServiceServer interface { // CreateUploadLocation creates a signed url to upload artifacts to for a given project/domain. @@ -563,6 +772,7 @@ type DataProxyServiceServer interface { CreateDownloadLocation(context.Context, *CreateDownloadLocationRequest) (*CreateDownloadLocationResponse, error) // CreateDownloadLocation creates a signed url to download artifacts. CreateDownloadLink(context.Context, *CreateDownloadLinkRequest) (*CreateDownloadLinkResponse, error) + GetData(context.Context, *GetDataRequest) (*GetDataResponse, error) } // UnimplementedDataProxyServiceServer can be embedded to have forward compatible implementations. @@ -578,6 +788,9 @@ func (*UnimplementedDataProxyServiceServer) CreateDownloadLocation(ctx context.C func (*UnimplementedDataProxyServiceServer) CreateDownloadLink(ctx context.Context, req *CreateDownloadLinkRequest) (*CreateDownloadLinkResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateDownloadLink not implemented") } +func (*UnimplementedDataProxyServiceServer) GetData(ctx context.Context, req *GetDataRequest) (*GetDataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetData not implemented") +} func RegisterDataProxyServiceServer(s *grpc.Server, srv DataProxyServiceServer) { s.RegisterService(&_DataProxyService_serviceDesc, srv) @@ -637,6 +850,24 @@ func _DataProxyService_CreateDownloadLink_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } +func _DataProxyService_GetData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDataRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DataProxyServiceServer).GetData(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/flyteidl.service.DataProxyService/GetData", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DataProxyServiceServer).GetData(ctx, req.(*GetDataRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _DataProxyService_serviceDesc = grpc.ServiceDesc{ ServiceName: "flyteidl.service.DataProxyService", HandlerType: (*DataProxyServiceServer)(nil), @@ -653,6 +884,10 @@ var _DataProxyService_serviceDesc = grpc.ServiceDesc{ MethodName: "CreateDownloadLink", Handler: _DataProxyService_CreateDownloadLink_Handler, }, + { + MethodName: "GetData", + Handler: _DataProxyService_GetData_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "flyteidl/service/dataproxy.proto", diff --git a/gen/pb-go/flyteidl/service/dataproxy.pb.gw.go b/gen/pb-go/flyteidl/service/dataproxy.pb.gw.go index 3b819e343..c11d94174 100644 --- a/gen/pb-go/flyteidl/service/dataproxy.pb.gw.go +++ b/gen/pb-go/flyteidl/service/dataproxy.pb.gw.go @@ -82,6 +82,26 @@ func request_DataProxyService_CreateDownloadLink_0(ctx context.Context, marshale } +var ( + filter_DataProxyService_GetData_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_DataProxyService_GetData_0(ctx context.Context, marshaler runtime.Marshaler, client DataProxyServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetDataRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_DataProxyService_GetData_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + // RegisterDataProxyServiceHandlerFromEndpoint is same as RegisterDataProxyServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterDataProxyServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { @@ -180,6 +200,26 @@ func RegisterDataProxyServiceHandlerClient(ctx context.Context, mux *runtime.Ser }) + mux.Handle("GET", pattern_DataProxyService_GetData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_DataProxyService_GetData_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_DataProxyService_GetData_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -189,6 +229,8 @@ var ( pattern_DataProxyService_CreateDownloadLocation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "dataproxy", "artifact_urn"}, "")) pattern_DataProxyService_CreateDownloadLink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "dataproxy", "artifact_link"}, "")) + + pattern_DataProxyService_GetData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "data"}, "")) ) var ( @@ -197,4 +239,6 @@ var ( forward_DataProxyService_CreateDownloadLocation_0 = runtime.ForwardResponseMessage forward_DataProxyService_CreateDownloadLink_0 = runtime.ForwardResponseMessage + + forward_DataProxyService_GetData_0 = runtime.ForwardResponseMessage ) diff --git a/gen/pb-go/flyteidl/service/dataproxy.swagger.json b/gen/pb-go/flyteidl/service/dataproxy.swagger.json index b74476ec1..e0177556d 100644 --- a/gen/pb-go/flyteidl/service/dataproxy.swagger.json +++ b/gen/pb-go/flyteidl/service/dataproxy.swagger.json @@ -15,6 +15,31 @@ "application/json" ], "paths": { + "/api/v1/data": { + "get": { + "operationId": "GetData", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/serviceGetDataResponse" + } + } + }, + "parameters": [ + { + "name": "flyte_url", + "description": "A unique identifier in the form of flyte://\u003csomething\u003e that uniquely, for a given Flyte\nbackend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.).\ne.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input)\n flyte://v1/proj/development/execid/n2/i (for node execution input).", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "DataProxyService" + ] + } + }, "/api/v1/dataproxy/artifact_link": { "post": { "summary": "CreateDownloadLocation creates a signed url to download artifacts.", @@ -102,6 +127,221 @@ } }, "definitions": { + "BlobTypeBlobDimensionality": { + "type": "string", + "enum": [ + "SINGLE", + "MULTIPART" + ], + "default": "SINGLE" + }, + "SchemaColumnSchemaColumnType": { + "type": "string", + "enum": [ + "INTEGER", + "FLOAT", + "STRING", + "BOOLEAN", + "DATETIME", + "DURATION" + ], + "default": "INTEGER" + }, + "SchemaTypeSchemaColumn": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "A unique name -within the schema type- for the column" + }, + "type": { + "$ref": "#/definitions/SchemaColumnSchemaColumnType", + "description": "The column type. This allows a limited set of types currently." + } + } + }, + "StructuredDatasetTypeDatasetColumn": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A unique name within the schema type for the column." + }, + "literal_type": { + "$ref": "#/definitions/coreLiteralType", + "description": "The column type." + } + } + }, + "coreBinary": { + "type": "object", + "properties": { + "value": { + "type": "string", + "format": "byte" + }, + "tag": { + "type": "string" + } + }, + "description": "A simple byte array with a tag to help different parts of the system communicate about what is in the byte array.\nIt's strongly advisable that consumers of this type define a unique tag and validate the tag before parsing the data." + }, + "coreBlob": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/coreBlobMetadata" + }, + "uri": { + "type": "string" + } + }, + "description": "Refers to an offloaded set of files. It encapsulates the type of the store and a unique uri for where the data is.\nThere are no restrictions on how the uri is formatted since it will depend on how to interact with the store." + }, + "coreBlobMetadata": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/coreBlobType" + } + } + }, + "coreBlobType": { + "type": "object", + "properties": { + "format": { + "type": "string", + "title": "Format can be a free form string understood by SDK/UI etc like\ncsv, parquet etc" + }, + "dimensionality": { + "$ref": "#/definitions/BlobTypeBlobDimensionality" + } + }, + "title": "Defines type behavior for blob objects" + }, + "coreEnumType": { + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Predefined set of enum values." + } + }, + "description": "Enables declaring enum types, with predefined string values\nFor len(values) \u003e 0, the first value in the ordered list is regarded as the default value. If you wish\nTo provide no defaults, make the first value as undefined." + }, + "coreError": { + "type": "object", + "properties": { + "failed_node_id": { + "type": "string", + "description": "The node id that threw the error." + }, + "message": { + "type": "string", + "description": "Error message thrown." + } + }, + "description": "Represents an error thrown from a node." + }, + "coreLiteral": { + "type": "object", + "properties": { + "scalar": { + "$ref": "#/definitions/coreScalar", + "description": "A simple value." + }, + "collection": { + "$ref": "#/definitions/coreLiteralCollection", + "description": "A collection of literals to allow nesting." + }, + "map": { + "$ref": "#/definitions/coreLiteralMap", + "description": "A map of strings to literals." + }, + "hash": { + "type": "string", + "title": "A hash representing this literal.\nThis is used for caching purposes. For more details refer to RFC 1893\n(https://github.com/flyteorg/flyte/blob/master/rfc/system/1893-caching-of-offloaded-objects.md)" + } + }, + "description": "A simple value. This supports any level of nesting (e.g. array of array of array of Blobs) as well as simple primitives." + }, + "coreLiteralCollection": { + "type": "object", + "properties": { + "literals": { + "type": "array", + "items": { + "$ref": "#/definitions/coreLiteral" + } + } + }, + "description": "A collection of literals. This is a workaround since oneofs in proto messages cannot contain a repeated field." + }, + "coreLiteralMap": { + "type": "object", + "properties": { + "literals": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/coreLiteral" + } + } + }, + "description": "A map of literals. This is a workaround since oneofs in proto messages cannot contain a repeated field." + }, + "coreLiteralType": { + "type": "object", + "properties": { + "simple": { + "$ref": "#/definitions/coreSimpleType", + "description": "A simple type that can be compared one-to-one with another." + }, + "schema": { + "$ref": "#/definitions/coreSchemaType", + "description": "A complex type that requires matching of inner fields." + }, + "collection_type": { + "$ref": "#/definitions/coreLiteralType", + "description": "Defines the type of the value of a collection. Only homogeneous collections are allowed." + }, + "map_value_type": { + "$ref": "#/definitions/coreLiteralType", + "description": "Defines the type of the value of a map type. The type of the key is always a string." + }, + "blob": { + "$ref": "#/definitions/coreBlobType", + "description": "A blob might have specialized implementation details depending on associated metadata." + }, + "enum_type": { + "$ref": "#/definitions/coreEnumType", + "description": "Defines an enum with pre-defined string values." + }, + "structured_dataset_type": { + "$ref": "#/definitions/coreStructuredDatasetType", + "title": "Generalized schema support" + }, + "union_type": { + "$ref": "#/definitions/coreUnionType", + "description": "Defines an union type with pre-defined LiteralTypes." + }, + "metadata": { + "$ref": "#/definitions/protobufStruct", + "description": "This field contains type metadata that is descriptive of the type, but is NOT considered in type-checking. This might be used by\nconsumers to identify special behavior or display extended information for the type." + }, + "annotation": { + "$ref": "#/definitions/coreTypeAnnotation", + "description": "This field contains arbitrary data that might have special semantic\nmeaning for the client but does not effect internal flyte behavior." + }, + "structure": { + "$ref": "#/definitions/coreTypeStructure", + "description": "Hints to improve type matching." + } + }, + "description": "Defines a strong type to allow type checking between interfaces." + }, "coreNodeExecutionIdentifier": { "type": "object", "properties": { @@ -114,6 +354,203 @@ }, "description": "Encapsulation of fields that identify a Flyte node execution entity." }, + "corePrimitive": { + "type": "object", + "properties": { + "integer": { + "type": "string", + "format": "int64" + }, + "float_value": { + "type": "number", + "format": "double" + }, + "string_value": { + "type": "string" + }, + "boolean": { + "type": "boolean", + "format": "boolean" + }, + "datetime": { + "type": "string", + "format": "date-time" + }, + "duration": { + "type": "string" + } + }, + "title": "Primitive Types" + }, + "coreScalar": { + "type": "object", + "properties": { + "primitive": { + "$ref": "#/definitions/corePrimitive" + }, + "blob": { + "$ref": "#/definitions/coreBlob" + }, + "binary": { + "$ref": "#/definitions/coreBinary" + }, + "schema": { + "$ref": "#/definitions/coreSchema" + }, + "none_type": { + "$ref": "#/definitions/coreVoid" + }, + "error": { + "$ref": "#/definitions/coreError" + }, + "generic": { + "$ref": "#/definitions/protobufStruct" + }, + "structured_dataset": { + "$ref": "#/definitions/coreStructuredDataset" + }, + "union": { + "$ref": "#/definitions/coreUnion" + } + } + }, + "coreSchema": { + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/coreSchemaType" + } + }, + "description": "A strongly typed schema that defines the interface of data retrieved from the underlying storage medium." + }, + "coreSchemaType": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "$ref": "#/definitions/SchemaTypeSchemaColumn" + }, + "description": "A list of ordered columns this schema comprises of." + } + }, + "description": "Defines schema columns and types to strongly type-validate schemas interoperability." + }, + "coreSimpleType": { + "type": "string", + "enum": [ + "NONE", + "INTEGER", + "FLOAT", + "STRING", + "BOOLEAN", + "DATETIME", + "DURATION", + "BINARY", + "ERROR", + "STRUCT" + ], + "default": "NONE", + "description": "Define a set of simple types." + }, + "coreStructuredDataset": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "title": "String location uniquely identifying where the data is.\nShould start with the storage location (e.g. s3://, gs://, bq://, etc.)" + }, + "metadata": { + "$ref": "#/definitions/coreStructuredDatasetMetadata" + } + } + }, + "coreStructuredDatasetMetadata": { + "type": "object", + "properties": { + "structured_dataset_type": { + "$ref": "#/definitions/coreStructuredDatasetType", + "description": "Bundle the type information along with the literal.\nThis is here because StructuredDatasets can often be more defined at run time than at compile time.\nThat is, at compile time you might only declare a task to return a pandas dataframe or a StructuredDataset,\nwithout any column information, but at run time, you might have that column information.\nflytekit python will copy this type information into the literal, from the type information, if not provided by\nthe various plugins (encoders).\nSince this field is run time generated, it's not used for any type checking." + } + } + }, + "coreStructuredDatasetType": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "$ref": "#/definitions/StructuredDatasetTypeDatasetColumn" + }, + "description": "A list of ordered columns this schema comprises of." + }, + "format": { + "type": "string", + "description": "This is the storage format, the format of the bits at rest\nparquet, feather, csv, etc.\nFor two types to be compatible, the format will need to be an exact match." + }, + "external_schema_type": { + "type": "string", + "description": "This is a string representing the type that the bytes in external_schema_bytes are formatted in.\nThis is an optional field that will not be used for type checking." + }, + "external_schema_bytes": { + "type": "string", + "format": "byte", + "description": "The serialized bytes of a third-party schema library like Arrow.\nThis is an optional field that will not be used for type checking." + } + } + }, + "coreTypeAnnotation": { + "type": "object", + "properties": { + "annotations": { + "$ref": "#/definitions/protobufStruct", + "description": "A arbitrary JSON payload to describe a type." + } + }, + "description": "TypeAnnotation encapsulates registration time information about a type. This can be used for various control-plane operations. TypeAnnotation will not be available at runtime when a task runs." + }, + "coreTypeStructure": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "title": "Must exactly match for types to be castable" + } + }, + "description": "Hints to improve type matching\ne.g. allows distinguishing output from custom type transformers\neven if the underlying IDL serialization matches." + }, + "coreUnion": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/coreLiteral" + }, + "type": { + "$ref": "#/definitions/coreLiteralType" + } + }, + "description": "The runtime representation of a tagged union value. See `UnionType` for more details." + }, + "coreUnionType": { + "type": "object", + "properties": { + "variants": { + "type": "array", + "items": { + "$ref": "#/definitions/coreLiteralType" + }, + "description": "Predefined set of variants in union." + } + }, + "description": "Defines a tagged union type, also known as a variant (and formally as the sum type).\n\nA sum type S is defined by a sequence of types (A, B, C, ...), each tagged by a string tag\nA value of type S is constructed from a value of any of the variant types. The specific choice of type is recorded by\nstoring the varaint's tag with the literal value and can be examined in runtime.\n\nType S is typically written as\nS := Apple A | Banana B | Cantaloupe C | ...\n\nNotably, a nullable (optional) type is a sum type between some type X and the singleton type representing a null-value:\nOptional X := X | Null\n\nSee also: https://en.wikipedia.org/wiki/Tagged_union" + }, + "coreVoid": { + "type": "object", + "description": "Used to denote a nil/null/None assignment to a scalar value. The underlying LiteralType for Void is intentionally\nundefined since it can be assigned to a scalar of any LiteralType." + }, "coreWorkflowExecutionIdentifier": { "type": "object", "properties": { @@ -132,6 +569,72 @@ }, "title": "Encapsulation of fields that uniquely identifies a Flyte workflow execution" }, + "protobufListValue": { + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufValue" + }, + "description": "Repeated field of dynamically typed values." + } + }, + "description": "`ListValue` is a wrapper around a repeated field of values.\n\nThe JSON representation for `ListValue` is JSON array." + }, + "protobufNullValue": { + "type": "string", + "enum": [ + "NULL_VALUE" + ], + "default": "NULL_VALUE", + "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." + }, + "protobufStruct": { + "type": "object", + "properties": { + "fields": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/protobufValue" + }, + "description": "Unordered map of dynamically typed values." + } + }, + "description": "`Struct` represents a structured data value, consisting of fields\nwhich map to dynamically typed values. In some languages, `Struct`\nmight be supported by a native representation. For example, in\nscripting languages like JS a struct is represented as an\nobject. The details of that representation are described together\nwith the proto support for the language.\n\nThe JSON representation for `Struct` is JSON object." + }, + "protobufValue": { + "type": "object", + "properties": { + "null_value": { + "$ref": "#/definitions/protobufNullValue", + "description": "Represents a null value." + }, + "number_value": { + "type": "number", + "format": "double", + "description": "Represents a double value." + }, + "string_value": { + "type": "string", + "description": "Represents a string value." + }, + "bool_value": { + "type": "boolean", + "format": "boolean", + "description": "Represents a boolean value." + }, + "struct_value": { + "$ref": "#/definitions/protobufStruct", + "description": "Represents a structured value." + }, + "list_value": { + "$ref": "#/definitions/protobufListValue", + "description": "Represents a repeated `Value`." + } + }, + "description": "`Value` represents a dynamically typed value which can be either\nnull, a number, a string, a boolean, a recursive struct value, or a\nlist of values. A producer of value is expected to set one of that\nvariants, absence of any variant indicates an error.\n\nThe JSON representation for `Value` is JSON value." + }, "serviceArtifactType": { "type": "string", "enum": [ @@ -174,6 +677,10 @@ "type": "string", "format": "date-time", "description": "ExpiresAt defines when will the signed URL expire." + }, + "pre_signed_urls": { + "$ref": "#/definitions/servicePreSignedURLs", + "title": "New wrapper object containing the signed urls and expiration time" } }, "title": "CreateDownloadLinkResponse defines the response for the generated links" @@ -236,6 +743,37 @@ "description": "ExpiresAt defines when will the signed URL expires." } } + }, + "serviceGetDataResponse": { + "type": "object", + "properties": { + "literal_map": { + "$ref": "#/definitions/coreLiteralMap", + "title": "literal map data will be returned" + }, + "pre_signed_urls": { + "$ref": "#/definitions/servicePreSignedURLs", + "title": "Flyte deck html will be returned as a signed url users can download" + } + } + }, + "servicePreSignedURLs": { + "type": "object", + "properties": { + "signed_url": { + "type": "array", + "items": { + "type": "string" + }, + "title": "SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)" + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "ExpiresAt defines when will the signed URL expire." + } + }, + "title": "Wrapper object since the message is shared across this and the GetDataResponse" } } } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/README.md b/gen/pb-go/flyteidl/service/flyteadmin/README.md index d108b0511..c719fbc8b 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/README.md +++ b/gen/pb-go/flyteidl/service/flyteadmin/README.md @@ -114,6 +114,7 @@ Class | Method | HTTP request | Description - [AdminExecutionUpdateResponse](docs/AdminExecutionUpdateResponse.md) - [AdminFixedRate](docs/AdminFixedRate.md) - [AdminFixedRateUnit](docs/AdminFixedRateUnit.md) + - [AdminFlyteUrLs](docs/AdminFlyteUrLs.md) - [AdminGetVersionResponse](docs/AdminGetVersionResponse.md) - [AdminLabels](docs/AdminLabels.md) - [AdminLaunchPlan](docs/AdminLaunchPlan.md) diff --git a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml index 92996d1d6..e9cd32fab 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml +++ b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml @@ -4548,6 +4548,21 @@ definitions: - "HOUR" - "DAY" default: "MINUTE" + adminFlyteURLs: + type: "object" + properties: + inputs: + type: "string" + outputs: + type: "string" + deck: + type: "string" + description: "These URLs are returned as part of node and task execution data\ + \ requests." + example: + outputs: "outputs" + inputs: "inputs" + deck: "deck" adminGetVersionResponse: type: "object" properties: @@ -7614,12 +7629,18 @@ definitions: \ in the case this node yields a dynamic workflow we return its structure\ \ here." $ref: "#/definitions/flyteidladminDynamicWorkflowNodeMetadata" + flyte_urls: + $ref: "#/definitions/adminFlyteURLs" description: "Response structure for NodeExecutionGetDataRequest which contains\ \ inputs and outputs for a node execution." example: outputs: bytes: "bytes" url: "url" + flyte_urls: + outputs: "outputs" + inputs: "inputs" + deck: "deck" full_inputs: literals: {} dynamic_workflow: @@ -15912,12 +15933,20 @@ definitions: description: "Full_outputs will only be populated if they are under a configured\ \ size threshold." $ref: "#/definitions/coreLiteralMap" + flyte_urls: + title: "flyte tiny url to fetch a core.LiteralMap of task execution's IO\n\ + Deck will be empty for task" + $ref: "#/definitions/adminFlyteURLs" description: "Response structure for TaskExecutionGetDataRequest which contains\ \ inputs and outputs for a task execution." example: outputs: bytes: "bytes" url: "url" + flyte_urls: + outputs: "outputs" + inputs: "inputs" + deck: "deck" full_inputs: literals: {} inputs: diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_flyte_ur_ls.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_flyte_ur_ls.go new file mode 100644 index 000000000..6b8a49a66 --- /dev/null +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_flyte_ur_ls.go @@ -0,0 +1,17 @@ +/* + * 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 + +// These URLs are returned as part of node and task execution data requests. +type AdminFlyteUrLs struct { + Inputs string `json:"inputs,omitempty"` + Outputs string `json:"outputs,omitempty"` + Deck string `json:"deck,omitempty"` +} diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_node_execution_get_data_response.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_node_execution_get_data_response.go index afeaa710f..0ab85da7c 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_node_execution_get_data_response.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_node_execution_get_data_response.go @@ -21,4 +21,5 @@ type AdminNodeExecutionGetDataResponse struct { FullOutputs *CoreLiteralMap `json:"full_outputs,omitempty"` // Optional Workflow closure for a dynamically generated workflow, in the case this node yields a dynamic workflow we return its structure here. DynamicWorkflow *FlyteidladminDynamicWorkflowNodeMetadata `json:"dynamic_workflow,omitempty"` + FlyteUrls *AdminFlyteUrLs `json:"flyte_urls,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_execution_get_data_response.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_execution_get_data_response.go index 2c8e19da7..75c3e8423 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_execution_get_data_response.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_execution_get_data_response.go @@ -19,4 +19,5 @@ type AdminTaskExecutionGetDataResponse struct { FullInputs *CoreLiteralMap `json:"full_inputs,omitempty"` // Full_outputs will only be populated if they are under a configured size threshold. FullOutputs *CoreLiteralMap `json:"full_outputs,omitempty"` + FlyteUrls *AdminFlyteUrLs `json:"flyte_urls,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/openapi.go b/gen/pb-go/flyteidl/service/openapi.go index 8d953b0d7..473495afe 100644 --- a/gen/pb-go/flyteidl/service/openapi.go +++ b/gen/pb-go/flyteidl/service/openapi.go @@ -78,7 +78,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x23\x37\x96\x2f\x0c\xff\x3f\x9f\x02\xb7\xe6\x46\xd8\xee\xd1\xe2\x76\xcf\xf4\xdb\xa1\x89\x1b\xef\x43\x4b\xac\xb2\xae\xb5\xb5\x16\x7b\xfc\x0c\x27\x68\x30\x13\x24\xd1\xca\x04\xb2\x01\xa4\x54\x74\x47\x7f\xf7\x27\x70\xb0\x24\x72\x23\x93\x8b\x24\xaa\x9c\x33\x11\x6d\x15\x33\x13\xeb\xc1\xc1\x59\x7f\xe7\x1f\xff\x82\xd0\x07\xf9\x8c\x67\x33\x22\x3e\x9c\xa0\x0f\xdf\x1d\x7d\xfb\xe1\x40\xff\x46\xd9\x94\x7f\x38\x41\xfa\x39\x42\x1f\x14\x55\x09\xd1\xcf\xa7\xc9\x42\x11\x1a\x27\xc7\x92\x88\x27\x1a\x91\x63\x1c\xa7\x94\x1d\x65\x82\x2b\x0e\x1f\x22\xf4\xe1\x89\x08\x49\x39\xd3\xaf\xdb\x3f\x11\xe3\x0a\x49\xa2\x3e\xfc\x0b\x42\xff\x84\xe6\x65\x34\x27\x29\x91\x1f\x4e\xd0\x7f\x9b\x8f\xe6\x4a\x65\xae\x01\xfd\xb7\xd4\xef\xfe\x0f\xbc\x1b\x71\x26\xf3\xd2\xcb\x38\xcb\x12\x1a\x61\x45\x39\x3b\xfe\x9b\xe4\xac\x78\x37\x13\x3c\xce\xa3\x8e\xef\x62\x35\x97\xc5\x1c\x8f\x71\x46\x8f\x9f\xfe\x78\x8c\x23\x45\x9f\xc8\x38\xc1\x39\x8b\xe6\xe3\x2c\xc1\x4c\x1e\xff\x83\xc6\x7a\x8e\x7f\x23\x91\xfa\x27\xfc\x23\xe6\x29\xa6\xcc\xfc\xcd\x70\x4a\xfe\xe9\xdb\x41\xe8\xc3\x8c\xa8\xe0\x9f\x7a\xb6\x79\x9a\x62\xb1\xd0\x2b\xf2\x91\xa8\x68\x8e\xd4\x9c\x20\xd3\x0f\x72\x4b\xc4\xa7\x08\xa3\x13\x41\xa6\x27\xbf\x0a\x32\x1d\xbb\x85\x3e\x32\x0b\x7c\x01\xa3\xb9\x49\x30\xfb\xf5\xc8\x2e\x13\xb4\xcc\x33\x22\x60\x6e\xe7\xb1\x6e\xfd\x13\x51\x03\x68\xb6\x78\x3f\x7c\x5b\x10\x99\x71\x26\x89\x2c\x0d\x0f\xa1\x0f\xdf\x7d\xfb\x6d\xe5\x27\x84\x3e\xc4\x44\x46\x82\x66\xca\xee\xe5\x00\xc9\x3c\x8a\x88\x94\xd3\x3c\x41\xae\xa5\x70\x30\x66\xaa\x7a\x63\x71\xad\x31\x84\x3e\xfc\x6f\x41\xa6\xba\x9d\x7f\x3d\x8e\xc9\x94\x32\xaa\xdb\x95\x86\x7e\x82\xd1\x96\xbe\xfa\xe7\xbf\x34\xfd\xfd\xcf\x60\x46\x19\x16\x38\x25\x8a\x88\x62\xc7\xcd\xff\x55\xe6\xa2\xf7\x48\x77\x5e\xec\x63\x75\xe0\x95\xd9\x5e\xe1\x94\xe8\x3d\xd1\x3b\x65\xbf\x80\xbf\x05\x91\x3c\x17\x11\x41\x13\x92\x70\x36\x93\x48\xf1\xda\x1a\x50\x68\x41\x93\x57\xf5\x89\x20\x7f\xcf\xa9\x20\x7a\xaf\x94\xc8\x49\xe5\xa9\x5a\x64\x30\x48\xa9\x04\x65\xb3\x70\x29\xfe\x79\xd0\x69\x6a\x86\x2a\xd7\x98\x99\xf9\xa0\x75\x62\x23\x36\x70\xaf\x44\x98\xa1\x09\x41\xfa\x2c\xd2\x98\x08\x12\x23\x2c\x11\x46\x32\x9f\x48\xa2\xd0\x33\x55\x73\xca\xf4\xbf\x33\x12\xd1\x29\x8d\xdc\x9a\xed\xcf\xda\xc0\x9f\xcb\x57\xe6\x41\x12\xa1\x07\xfe\x44\x63\x12\xa3\x27\x9c\xe4\x04\x4d\xb9\x28\x2d\xcf\xd1\x88\xdd\xcf\xf5\x3a\xa4\x13\xca\xe0\xe4\xe9\xb5\x74\x14\xf2\x6f\x6e\xb9\xfe\x0d\xe9\xfe\x50\xce\xe8\xdf\x73\x92\x2c\x10\x8d\x09\x53\x74\x4a\x89\xac\xb6\xf6\x6f\x1c\xfa\xc7\x09\x3a\x44\x7a\x9d\x89\x50\xb0\xde\x9c\x29\xf2\x59\x49\x74\x88\x12\xfa\x48\xd0\x57\x17\x54\x2a\x34\xb8\x39\xff\xea\x00\x7d\x65\xce\x0b\x02\xde\xf4\xd5\x2b\xac\xb0\xff\xfb\x7f\x82\xa3\xa7\xf0\xac\x7a\xe8\x3e\x0c\xf4\x69\xbe\x33\x57\x43\xd1\xc2\xff\xfc\x4b\xd8\x8e\xdd\xaf\xe5\xfc\xb6\x60\xb6\x96\xd3\x76\xe5\xaf\xb0\x4c\x65\xd6\x2a\xf5\x0e\x6d\xcb\x59\x75\xbb\x55\xd6\x2a\xdf\x17\x6f\xd5\x53\x78\x69\xfe\xba\x0d\x73\xc5\x0a\xa8\x1e\x53\x66\x0e\x89\x3f\x33\x42\xea\x73\xe2\xa8\x77\x4f\x58\xca\x36\xbc\x36\x98\x59\xc0\x6e\x1d\x17\x0d\x56\x65\x0f\xe7\x9d\xd0\x94\xae\xda\xdf\x73\x16\x6b\x91\xcb\x32\x3b\x96\xa7\x13\x22\xf4\x32\x38\xb6\x07\xb3\x9d\x68\x36\xa8\x72\xc1\x48\xdc\x61\x9a\x7f\xcf\x89\x58\x2c\x99\xe7\x14\x27\xb2\x6d\xa2\x94\x29\xa2\xe5\xdb\xca\xe3\x29\x17\x29\x56\xf6\x85\x3f\xff\xfb\xba\x0b\xa1\xf8\x23\x59\xb5\xff\xe7\x66\x37\x23\x2c\x81\x0c\xd2\x3c\x51\x34\x4b\x08\xca\xf0\x8c\x48\xbb\x22\x79\xa2\xe4\x01\xbc\xa6\x65\x6a\x22\x0e\xfd\x0d\x04\x3d\xb8\x9b\x37\x97\xf0\x0b\x9a\x7a\x01\x92\x91\xcf\x0a\x5a\x1a\x31\xb8\x7b\x61\x89\xc2\x1b\xe5\x05\x96\x72\x33\x9a\x91\x5c\xa8\xf1\x64\x71\xf4\x48\x6a\xfd\xb6\x52\x0e\x66\x08\x2b\x25\xe8\x24\x57\x44\xcf\x5b\xb7\xe1\xee\x4e\x60\x8f\xe6\x82\xee\xc2\x1a\xde\x6e\xc2\x31\x15\x24\x82\xb9\xad\x73\x60\xfc\x57\x7a\xde\x5a\x7f\x59\x98\xd9\x3f\x92\x05\xc8\x23\x0d\x2b\xe0\xb7\x7c\xc4\x46\x0c\x1d\xa2\xb3\xe1\xdd\xe9\xf0\xea\xec\xfc\xea\xd3\x09\xfa\x7e\x81\x62\x32\xc5\x79\xa2\x0e\xd0\x94\x92\x24\x96\x08\x0b\x02\x4d\x92\x58\xcb\x1c\x7a\x30\x84\xc5\x94\xcd\x10\x17\x31\x11\x2f\xb7\x8c\x95\xa7\x84\xe5\x69\xe5\x5e\x81\xdf\x8b\xd1\x57\xbe\xd0\x22\x86\x7f\x54\x7a\xf2\x3f\xb5\x05\x86\x19\xeb\xbe\x83\xd6\x5e\x4d\xa8\x89\xe6\x34\x89\x05\x61\xc7\x0a\xcb\xc7\x31\xf9\x4c\xa2\xdc\xdc\xc9\xff\x28\xff\x30\xd6\x92\x29\x8f\x49\xf9\x97\xd2\x3f\x0a\x51\x68\xed\x4f\xbd\x96\xba\xf6\x97\xa0\xd3\x76\xfb\x0e\x7e\xa1\x71\xe3\xdb\xf0\xcb\x8a\x39\xb8\x77\x96\x0c\xd6\xbd\xd2\x3a\x2a\xf7\x82\x95\xf8\x1a\xdf\x11\x44\x89\xc5\x18\x2b\x45\xd2\x4c\xad\xa9\xaf\x63\x94\x68\xb9\x72\x99\x1c\x79\xc5\x63\x32\x74\xfd\xfd\x8a\x8c\x38\x4b\x62\x34\x59\x58\xae\x35\x25\x82\xb0\x88\xb4\xb7\x70\x8f\xe5\x63\xd1\xc2\x2a\x61\xb4\xd4\x9f\xfc\xc8\x85\xfe\xfc\x3d\x08\xa4\xa5\x81\xbf\x86\x4c\xba\xe9\x89\xfb\xe2\x2c\x04\x1b\xf2\x8f\xde\x9e\xb0\xfd\x4a\x76\xb5\x3e\x70\x81\xe4\x42\x2a\x92\xae\xb4\x43\xbc\x9f\x85\xb0\x17\xc4\xbe\x0e\xb8\x72\x47\xfd\x0e\x4e\x7d\xf9\xc6\xed\x8f\xf7\x1a\x4b\xb6\x2b\x2b\xe2\xbe\xcf\xd3\xf9\x70\x96\x4f\xf5\xce\x6d\x5f\xe0\xc4\x78\x17\xd3\x2c\xc9\x82\xbb\x1e\xe4\x0b\x99\x1b\x5a\xf7\xca\xad\xf6\x18\x06\xb0\x42\xd1\x2c\xdb\xa1\xfd\xf9\xd3\x9f\x86\x16\x1a\x63\x8e\x53\x73\x2a\x03\x63\x15\x8a\xb8\x30\xb2\x60\x6c\xcf\xbb\xd1\x35\x07\xf7\x83\xbb\xe1\xfd\x09\x1a\xa0\x18\x2b\xac\x0f\xb8\x20\x99\x20\x92\x30\x05\x7a\xbc\xfe\x5e\x2d\x50\xca\x63\x92\x18\x8d\xf3\xa3\x96\x7c\xd1\x19\x56\xf8\x14\x2b\x9c\xf0\xd9\x11\x1a\xc0\x3f\xf5\xc7\x54\x22\x9c\x48\x8e\xb0\x23\x2b\x12\xbb\x26\x30\x8b\x1d\x6b\xc1\x28\xe2\x69\x46\x13\x6f\x83\xf7\xc6\x15\xca\x62\xfa\x44\xe3\x1c\x27\x88\x4f\x34\x57\xd1\x1a\xf2\xf0\x89\x30\x95\xe3\x24\x59\x20\x9c\x24\xc8\x76\xeb\x5e\x40\x72\xce\xf3\x24\xd6\xed\xba\x51\x4a\x9a\xd2\x04\x0b\xad\x82\x9b\xd1\x5e\xdb\xb6\xd0\xfd\x9c\xf8\xb1\xc2\xb8\xf4\x6a\xa6\xf8\x91\x48\x44\x15\xca\xb8\x94\x74\x92\x14\x67\xfe\xe1\x1c\xc1\xb8\x4f\x2f\xce\x41\x9f\x8f\x14\xe2\x86\x87\xba\xce\xad\xfd\xc6\xf5\x98\x62\xc6\x08\x74\xcc\xd5\x9c\x08\xdb\xbd\x7d\xf9\xad\x55\xf3\x87\xab\xbb\x9b\xe1\xe9\xf9\xc7\xf3\xe1\x59\x5d\x37\xbf\x1f\xdc\xfd\x58\xff\xf5\xe7\xeb\xdb\x1f\x3f\x5e\x5c\xff\x5c\x7f\x72\x31\x78\xb8\x3a\xfd\x61\x7c\x73\x31\xb8\xaa\x3f\xb4\x64\xd5\x59\xcd\x0f\x47\xb6\xe6\xd9\xea\x6d\x9a\x2f\x65\xd3\x3c\xf8\x72\x8d\x9a\x53\x9a\x80\x0e\xda\xd9\xa0\xe9\x6d\x08\xf6\x4b\x94\x61\x29\x8d\x64\x64\x46\x70\x34\x62\x97\x5c\x68\x06\x36\xe5\x9a\x47\x68\xe9\x49\x89\x3c\x52\x94\xcd\xfc\x47\x27\x68\x94\x7f\xfb\xed\x9f\xa2\x0b\xca\x1e\xe1\x2f\xb2\x8f\x8b\xd3\x5b\x7c\x7b\x8b\xef\xef\xcb\xe2\xab\x45\x9f\xe3\xd0\xd0\xbb\xdb\x90\x21\x2d\x5c\xb0\x2c\x57\x20\x4a\xf0\x5c\xe9\x3f\x75\x97\x40\x1e\x4b\x02\x87\xba\x19\x14\x3f\x11\xe5\x5f\xd4\xa2\xcd\x7b\xb0\x23\xfe\xcc\xc5\xe3\x34\xe1\xcf\x7e\xe0\x9f\x88\xd2\x63\xbf\xb5\xbd\xf4\xa1\x44\x7d\x28\xd1\xdb\x86\x12\xed\x95\x31\xef\xe5\x99\x5f\xd9\xf2\x67\x38\x60\x8b\x27\xab\xd5\x51\xd5\xe2\x87\x0a\xdc\x4c\xaf\xc2\x35\xcb\xce\x9c\x15\x9c\xb3\xf4\xf2\x7b\xe1\x9e\xa5\x41\xbf\x3e\xe7\xfc\x5d\xf8\x5b\x7a\x77\xca\x86\x0b\xf5\x2e\x19\x6c\xc7\xbb\xe3\xd5\x9c\x21\x2f\xcf\xf0\x6b\xb1\x0d\xeb\x04\x33\xac\x11\xbd\xd0\x39\x5c\x61\x45\x7c\x42\x63\x40\x42\x53\x04\x42\x3d\xe4\xa0\x31\xc6\x60\xbb\xa0\x82\x4d\xef\xa6\xee\x61\x02\x9f\x88\x2a\xbd\xfc\x5e\xee\xa6\xd2\xa0\x5f\xff\x6e\xfa\x9d\x46\x07\xf4\xe1\x00\x2f\xb8\x74\x5f\xfa\x8d\xb6\xbf\x0e\xff\xdf\x81\x87\xbf\x77\xe9\xaf\xb5\x46\x5f\x96\x0f\xff\x4b\x75\xda\xbf\x4f\x2f\x7d\xef\x96\xef\xdd\xf2\x6f\xe1\x3f\x79\x7f\x6e\xf9\x97\x55\x4f\x8b\xe3\x35\x76\xb4\x60\xf5\xb5\xe0\x50\xfe\xb3\x83\x93\x06\xfe\x72\x2a\xdf\xba\x41\xe3\xad\x3a\xdc\x59\x31\xbe\x21\x1c\xa1\x5f\x2d\x21\xad\x50\xe7\x6a\xdf\xbd\x07\x75\xae\x3e\xe8\x97\xd7\xe1\xde\x8c\xf9\xbe\xd0\xe5\xf9\x4e\xd8\xc0\xfa\xb7\xe5\x17\x2c\x93\xf7\xb2\xf8\xcb\x67\xe3\xef\xcd\x84\xde\x8f\xec\xfd\x06\x17\x6f\xc7\x5b\x77\xe7\x39\x59\x0d\xd7\x6c\x70\x3b\xad\xca\xb0\xaa\x7e\x4d\x89\xfc\xee\x5d\xde\xb7\xaf\x91\x64\xd5\x5f\xb8\xfd\x85\x6b\x9b\xea\x2f\xdc\x2f\xf8\xc2\xdd\x3b\xf8\x9b\xbd\x89\x00\xed\x83\xc8\x7b\x60\x8c\x3e\x86\x7c\x87\x8b\xd3\xc7\x90\xf7\x31\xe4\xbf\xb3\x18\xf2\x6d\xb4\xa7\x4d\xb1\x28\xdf\x42\x8f\xea\xd5\xa8\x5e\x8d\x0a\x7f\xef\xd5\xa8\x5e\x8d\xea\xd5\xa8\x2f\x1c\x45\xb4\xd7\xa1\xba\x2f\x44\xaf\x43\x75\x5e\xaa\x5e\x87\x5a\xb2\x38\xbd\x0e\xd5\xeb\x50\xbf\x2f\x1d\x8a\x3c\x11\xa6\x24\x24\xa3\x85\x1a\xc5\x87\x8c\xcb\x76\x4d\x28\xe4\x0e\x0d\x5a\x10\xb4\x59\x4e\x0a\x83\xc0\xa5\x5f\xd1\x1c\x4b\xc4\xa3\x28\x17\x95\x33\x50\xd5\x83\x4e\x05\xc1\x8a\x40\x0b\xfa\xc3\xf7\xa0\xff\xd4\xa7\xfb\x5a\x31\xf8\x13\x1e\xd7\xa8\xdd\x1c\x84\xa6\x27\xcb\xe5\x91\x9d\x4d\xfd\xef\x39\xe9\xa6\xfe\xbd\x20\x51\x2b\x2c\x1f\x77\x4c\xd4\xa5\x5c\x8b\x8d\x88\x1a\x5a\x78\x2f\x44\x5d\x9f\xee\xef\x86\xa8\x9b\xa6\xbe\x0f\x44\xfd\x6c\xf3\xf8\x77\x4c\xd8\x35\x78\x80\x8d\x88\xdb\xb7\xf2\x5e\x08\xbc\x79\xda\xbf\x1b\x22\x6f\x9b\xfe\xdb\x12\xba\x4f\x91\xec\x4c\xe2\xf7\x82\xce\x66\x5a\xcd\x00\x0d\x4f\x93\xe2\xea\x1a\x41\x45\x52\xe0\x4a\xb2\xf6\xaf\xbe\x07\x92\xf6\x83\x35\x63\xff\xdd\xd0\x72\x6d\xde\x7b\x42\xc4\xc7\x82\x44\xfc\x09\xea\x85\x75\x23\xe6\x5b\x02\x14\x0c\xfc\x3a\x13\xe4\x89\xf2\x5c\x26\x8b\x43\x91\x33\xe4\x98\x3f\xf2\xcd\x1b\x6b\xf5\x33\x4d\x12\xc4\x99\xd6\xbf\x14\x16\xca\x3d\xd6\xfa\xb7\xe0\x29\x9c\x8a\x04\x4b\x85\x1e\x19\x7f\x66\x68\x8a\x69\x92\x0b\x82\x32\x4e\x99\x3a\x1a\xb1\x73\x86\x6e\xcd\x18\x21\x6f\xe0\x00\xe5\x52\x9f\xa5\x08\x33\xc6\x15\x8a\xe6\x98\xcd\x08\xc2\x6c\x61\x13\x70\x0b\xca\x40\x5c\xa0\x3c\x8b\xb1\x56\x7c\xe7\xa4\x1a\xa5\xe7\xc7\x08\xe6\x3b\x2a\x11\x95\x88\x7c\x56\x82\xa4\x24\x59\xe8\x3e\x34\xed\x2b\x8e\xec\xfa\x98\xa1\xda\x74\x3e\x22\x04\x17\x12\x32\x0e\x26\x8b\xdf\x30\x53\x94\x11\x04\x8a\x92\x34\xa6\xb9\x43\x74\xc1\x25\x98\x6d\x7e\xfc\x8b\x44\x51\x92\x4b\x45\xc4\x01\x9a\xe4\x33\xa9\x35\xc5\x2c\xc1\x6a\xca\x45\xaa\x47\x48\x99\x54\x78\x42\x13\xaa\x16\x07\x28\xc5\xd1\xdc\xb4\x05\x6b\x20\x0f\x46\x2c\xe6\xcf\x4c\x2a\x41\xb0\xef\xdd\x3d\x44\x5f\x87\xcf\x0c\x01\xc8\x6f\x0e\x20\xed\x90\xa6\x5a\xdd\x0d\x86\x5f\xec\xb8\xd9\x13\xdd\x08\x89\xd1\x84\x44\x38\x97\xd6\xc3\xa0\xc4\x02\x91\xcf\x73\x9c\x4b\xd8\x3b\x3d\x3d\x9b\xb3\x11\xf1\x34\x4b\x88\x22\x88\x4e\x91\x12\x94\xc4\x08\xcf\x30\xd5\x4b\x77\x47\x96\x80\xa0\x7b\xa2\xb7\x1b\x68\xa9\xfe\x57\x50\xbf\x53\x2e\x08\x8a\x89\xc2\x34\x59\xea\x75\xb2\xdf\xf6\x5c\xee\x3d\x71\xb9\xf2\x86\xef\x05\x9b\x33\x20\xfe\x3b\xb8\xb4\x99\x35\xdd\x47\x38\xd9\xf2\xfe\xbe\xb5\x83\xea\x69\xfb\x7d\xd1\xb6\xd9\xb5\xfd\x21\xee\x57\x8b\xc1\xee\x5e\xd1\xa2\xa8\x66\xf1\xae\x68\xfa\x35\xc2\x02\x7a\x87\x73\xef\x70\x6e\x5d\x99\xf7\xe9\x70\xde\x1b\x8f\x51\xef\x73\x7e\x21\x9f\x33\x95\xbd\xd3\xb9\x77\x3a\x77\x5d\xa0\xde\xe9\xdc\x3b\x9d\xdf\xaf\xd3\xf9\x25\x71\x9f\x77\x8a\xee\xfc\xae\x44\xeb\x5e\xac\xee\xc5\xea\x1e\xc2\xd9\x4f\x6d\x57\x2c\xcc\x7d\xfd\x21\x26\x09\x51\xa4\xdd\x9e\x45\x44\xaa\xb5\x05\x73\x3d\x53\xa6\xe5\xb8\x99\x20\x52\x6e\xcb\x90\x7c\xc3\xef\x93\x2d\xf9\xe1\xf7\x50\xf3\x3d\x9f\xea\xf9\xd4\x26\x53\xdb\x1f\xd3\x6c\x70\x98\x5f\xcb\x36\xeb\xf9\x6f\x96\xb7\x4b\x7f\x0f\xc6\x0d\x59\xf8\x45\x0d\x85\x6b\xa9\x5d\x71\x7f\xb8\x2d\x9d\x6f\xc9\x8f\x4d\x5f\xef\x93\x19\x9b\xb1\xf7\x9c\xb8\xe7\xc4\x3d\x27\x7e\xdf\x9c\xd8\x9d\xe4\x37\x75\x91\x19\x3f\xdd\x38\x4b\x30\x1b\xd3\x58\x1e\xff\xa3\xd0\xe5\x5f\xca\x43\xa6\x0f\x54\x6c\x52\x4c\x7d\x4a\xa7\xf8\x55\x7f\x92\x14\x06\x73\x8f\x99\xb9\xc2\x89\x66\x6c\xec\x37\x09\x66\xe7\xf1\xbb\xf0\xa3\x35\xce\xfe\x35\x7c\x6a\xdb\xf0\x71\xac\xc0\xd3\x81\x29\x33\x26\xbc\x22\xaf\xb6\x64\xa0\xdc\x8f\x13\xbe\x0d\x57\x0f\x26\x16\x30\x76\xc7\xaf\x83\x45\xd9\xbf\x69\xf7\x7e\x9d\x3e\x97\xb0\xf7\x5c\x74\x9c\x70\xef\xb9\xd8\x5f\xcf\xc5\x5b\xb9\x23\x5f\xf9\x78\xbe\x96\x58\xd7\x3d\x08\xdf\x44\xab\x41\x50\x6b\x9e\x25\x1c\xc7\xcb\x5c\x31\x85\xe0\x15\x82\xa3\xac\x8c\xc4\x2f\x3e\x7b\x0f\xc2\x5a\x31\xda\xdf\x59\x24\x5f\x7d\xe2\xfb\xa2\xa5\xbc\x62\x28\x5f\x33\x89\xaf\xa1\x92\xbc\x0f\xfc\xd4\x62\xbc\x7d\x68\x5f\x6f\x51\x7a\x7b\x8b\x52\x1f\xda\xd7\xab\x80\x7b\xa6\x02\xf6\xa1\x7d\x7d\x68\x5f\xaf\x20\x2f\x9f\x76\xaf\x20\x7f\x11\xa1\x7d\x9d\x44\xed\x17\xc4\xde\xdc\x5e\xe8\xee\x65\x6e\xf7\x5e\x2f\x73\xf7\x32\xf7\x17\x2a\x73\xef\xc7\x0a\xf7\x02\x77\x2f\x70\xf7\x02\x77\x2f\x70\xf7\x02\xf7\xce\x97\xb1\x17\xb8\x5f\xb3\x40\x67\xb3\xd4\xbd\x22\xc9\xe6\xbd\xfa\x72\x7a\x71\xbb\x17\xb7\xf7\x5b\xdc\xde\x9b\x09\xbd\x9f\x32\x8f\xdd\xe6\xd3\x17\x29\xef\x8b\x94\xf7\x45\xca\x5f\xbc\x48\xb9\xfb\xba\x43\xc6\x87\x3d\x5c\x0a\xab\x5c\x1a\xc0\x47\x41\x66\x54\x2a\x60\xff\x5d\xe4\x95\xd5\x89\x1e\xef\x55\x4e\xe9\x53\x3d\xfc\xd3\x5e\x6a\xe9\xa5\x96\xdf\xa9\xd4\xb2\x47\xb1\x60\x7b\x91\xb1\x92\x62\x15\xcd\xf1\x24\x21\x63\x6f\xf4\x91\x5d\xf5\xe0\x0b\x2a\x95\x44\x51\x2e\x15\x4f\xdb\x2f\x97\x4b\xd7\xc3\xc0\x77\x70\xca\xd9\x94\xce\x72\x73\xb7\x18\x70\xce\xe0\x44\x17\x92\xe0\x22\x23\xab\x3c\x55\x0d\xad\xbf\x8b\x6b\xa9\x79\xe8\xaf\x75\x3b\xad\x23\xb8\x17\x46\x3e\x2b\x75\x6b\x59\x6b\x7c\x3b\xbc\xbb\x7e\xb8\x3d\x1d\x9e\xa0\x41\x96\x25\xd4\xd8\xdd\x0d\x29\xd0\xdf\xf4\xa4\x90\xc2\xf2\xb1\xd8\x4b\x61\xc8\xdc\x60\xd8\x82\xa1\x5f\xcb\xc6\xe8\x10\x9d\x5e\x3c\xdc\xdd\x0f\x6f\x5b\x1a\xb4\x84\x02\x79\xab\x24\xcd\x12\xac\x48\x8c\x1e\xf3\x09\x11\x8c\x68\x69\xc7\x22\xdd\x16\xe6\x7f\xd3\xe8\xf0\xbf\x86\xa7\x0f\xf7\xe7\xd7\x57\xe3\xbf\x3e\x0c\x1f\x86\x27\xc8\x51\x9c\x6e\x56\x8f\x4b\x8f\x22\x5e\x30\x9c\x6a\x0d\x44\xff\x50\x64\xca\xfe\x3d\x27\x39\x41\x58\x4a\x3a\x63\x29\x01\x44\xe0\x52\x8b\x6e\xc0\x17\x83\xef\x87\x17\xe5\x96\xe7\x24\x84\xdf\x45\x09\x9e\x90\xc4\xfa\x23\xc0\xc4\xae\x09\x3d\x80\x2a\x36\x8e\x8a\xdc\xac\xea\x5f\x1f\x06\x17\xe7\xf7\xbf\x8c\xaf\x3f\x8e\xef\x86\xb7\x3f\x9d\x9f\x0e\xc7\x56\xaa\x3c\x1d\xe8\x7e\x4b\x3d\x59\xe1\x13\xfd\x3d\xc7\x89\xd6\x4e\xf8\xd4\xe1\xf1\xa2\xe7\x39\x61\x28\x67\x40\x71\x46\xe5\xd1\x7a\x90\xef\x54\x9f\x32\x33\xa3\x9b\x8b\x87\x4f\xe7\x57\xe3\xeb\x9f\x86\xb7\xb7\xe7\x67\xc3\x13\x74\x47\x12\x50\x0a\xdc\xa2\xc3\x2e\x66\x49\x3e\xa3\x0c\xd1\x34\x4b\x88\x5e\x0d\x6c\xb3\x89\xe7\xf8\x89\x72\x61\x8f\xee\x8c\x3e\x11\x66\xd6\x11\xce\x2c\xb4\xef\x84\xef\x71\xb0\x74\xd7\x57\x1f\xcf\x3f\x9d\xa0\x41\x1c\xfb\x39\x48\x68\xa3\x44\x39\x0e\xd6\xf9\xb0\x3c\x6c\xcd\x1c\xa0\x7b\x43\x44\xfc\x89\x08\x41\x63\x52\xa1\xa3\xc1\xdd\xdd\xf9\xa7\xab\xcb\xe1\xd5\x3d\xac\x98\x12\x3c\x91\x68\xce\x9f\xc1\x94\x0d\x33\x04\x0b\xf7\x13\xa6\x09\x74\xe6\x36\x8b\x33\xf4\x3c\xa7\xe0\xfe\x00\x60\x66\xdf\xb3\xd1\xcf\x44\xce\xde\xdc\x3a\x5b\x3a\x78\x75\xb5\xa5\x7a\x92\xea\x6f\x54\x8e\xc5\xb2\x17\x4a\x54\x5e\x7f\x71\x15\xb5\xd6\xbf\xa8\x90\x5b\xbb\xb2\x56\xa3\x97\xf6\x99\x16\x7b\xdd\x59\x57\x2b\xaf\xe1\xeb\x5d\xb3\x44\x09\x1a\xc9\x97\x85\x7a\x12\x39\x53\x34\x25\xc8\x76\x66\x0f\xe7\x0e\xe1\x9f\x2e\x4d\xc3\xef\xe1\x82\xad\x95\x72\xf8\x44\x94\x1d\x7e\xaf\x02\xf6\x2a\xe0\x7e\xa8\x80\xef\x2d\xdb\x3f\x26\x59\xbd\xc3\xca\xc4\xe0\x1d\xe3\xf5\xaa\x05\x69\x18\x7b\xa2\xb5\xa8\x26\xe4\x89\x24\x20\xe5\x29\x81\xb5\xd2\x68\x65\x97\x89\x20\xf8\x51\x0b\x7c\x31\x7f\x0e\x25\x97\x06\xe4\x7e\xb4\x9b\x5b\xb8\x4b\x10\xc7\x9f\xbe\x7b\xbd\xcb\x42\x2f\x77\xfc\x1a\x25\xbc\x6f\x21\x48\x66\x29\x46\x60\x90\x60\xff\xab\xb5\x04\xaf\xb8\x2d\x82\x2f\xde\xc3\x45\x11\x0e\x77\x8f\xb4\xae\xdb\x50\x09\x76\x2c\x34\x25\x0a\xc7\x58\x61\x7d\x68\x66\x44\x1d\xa1\x6b\x06\xcf\xee\xb1\x7c\x3c\x40\xee\xca\xd3\x6c\xa5\xb0\x32\xbc\x42\x6a\xfd\x3b\x31\xe0\xaf\xcf\xc7\xfb\xeb\xbb\xbf\xbe\x9b\x57\xa6\x0f\xf3\x6c\x59\xe1\x5d\x5d\x8c\x6b\xf9\xbc\x76\x77\x7f\x99\x16\xdf\xef\x15\xf6\xba\x4e\xae\x9d\x5e\x68\xa6\x72\x56\x7f\x5b\x99\xff\xeb\x6f\xab\xfe\xb6\xea\x6f\xab\x3d\x58\xe1\x37\x77\x18\x36\x70\xf7\x37\xf5\x18\xae\xd2\x4e\x37\x86\xbc\x2b\xb4\xd1\x75\x40\xef\x7e\xed\x8a\x6d\x57\x7c\x43\xdf\x87\x8f\x30\x98\xe4\x6b\xa4\xb5\xed\xf4\x32\x37\xf9\x22\xbd\x7e\xfa\x82\x37\x7e\x8f\x40\xb8\x53\x04\xc2\xfd\x98\xeb\x8b\xa4\xc0\xbd\x8d\xc5\xf4\xed\xd3\xde\x7a\xa8\xc1\x3e\xb1\xab\x4f\xec\x82\xdf\x7b\xa8\xc1\xdd\x51\xeb\xcb\x4a\xd7\x3c\x26\xe3\x4a\x94\x80\xff\xe7\xb8\xea\xf9\x29\x3d\x09\xdd\x40\xa5\x07\x45\xa6\x1b\xb4\x4e\xe3\x5d\x16\x91\xba\xe2\x31\xe9\x1c\x49\x50\x7a\x79\xcf\x65\x70\x37\x4f\x23\x8b\x97\x06\xfe\xc2\x92\x78\xcb\x96\x7f\x89\x86\x9d\x06\x02\xee\xad\x3c\x2b\x17\xea\x4b\x8d\x2f\x28\x38\xd4\x3b\xf2\x54\x74\x63\xe3\x2e\xa6\x71\xdc\xc2\xcc\x9b\x9f\x7b\x96\xde\xfc\xf8\x65\x30\x83\xba\x73\x74\x30\xab\x84\x6f\xbf\x0f\xbb\x4a\x38\xe2\xd7\xb0\xac\x2c\xdd\xfb\x2f\x8e\xab\x2f\xa3\xe4\x9e\xb7\x77\x5c\xae\x2f\x95\xc3\xf7\x10\x3f\xcb\x6c\x1d\x3d\x86\x4e\x6f\x6a\xd9\x9f\x09\xf7\xa6\x96\x77\x6d\x6a\x31\x2e\xda\x71\x86\x05\x61\xaa\x41\xa4\xae\x5e\x27\xf0\x7a\x88\xb9\xe0\xa4\x0e\x68\x00\x69\x89\x16\xd9\x0b\xd9\x5f\x55\x5f\x96\xed\xc5\x0a\x06\x41\x26\xe4\xf1\x3f\x8a\xbf\xbd\xb0\x5e\xaa\x00\xb1\x24\x3a\xc9\x60\xfd\x4b\x7d\x47\xe7\x36\x50\x69\xfb\x5c\x49\xac\x4a\xa2\x20\x04\x51\xaf\x8c\x67\xba\x31\x6f\xbf\xaf\x14\xc9\xda\xa0\x5f\x37\xb6\xa9\xbe\xf1\xdd\x0e\x90\xdb\x19\x6a\xd2\xfd\x82\x9c\x32\x2d\x8d\xf2\x69\x71\x31\x48\xf4\x4c\x93\x04\x10\x45\x20\xe3\xb1\xed\x06\xf8\xdd\x45\x3c\xb4\xee\xfc\x9b\xc6\x3d\x34\x71\x87\x26\x96\xd0\xc5\x9e\xba\xab\x9c\x69\x47\x6c\x90\xce\x0a\xda\xd0\x0a\x03\xec\x97\xc1\x09\x3e\x11\xf5\x5a\x6c\x60\xd3\xb3\xbf\xf4\xdc\x0b\x32\x25\x82\xb0\x88\xec\xa1\xb7\x7d\x9d\x30\x90\x9f\xcd\x24\x6d\x0c\x88\x87\x12\x08\xa7\xaa\xb8\xd5\xd3\x4a\xa2\x6e\x9f\x49\xde\x67\x92\xf7\x99\xe4\xd5\xa3\xde\x67\x92\xf7\x99\xe4\x8d\x39\x10\x31\x49\x88\x22\xad\x52\xc5\x19\x3c\x7e\x2b\xa9\xc2\xf4\xfe\x65\x08\x16\x66\x2e\xbd\x6c\xf1\xbb\xd1\x2c\xdc\x86\xef\x85\x66\x61\xce\xda\x2a\xf3\x43\xe9\xc7\x86\x10\xeb\x57\x37\x49\x6c\xc2\x34\x4a\x76\x89\x33\x78\xfd\x5d\xb2\x8e\xea\xd0\x7b\x1b\x05\x0a\xb6\xee\xe5\x38\x49\xed\x08\x74\x9b\xb8\xf5\x18\xbe\xdf\x79\xef\x0b\x07\x6d\xa3\xfb\x7d\xe5\xa3\x1b\x27\xa5\xec\x8b\xc5\xe6\x0b\xe2\x91\xbd\xf5\xe6\x8d\x73\x25\x6a\xcc\xf0\xdd\x4e\xb7\x37\x56\xf5\xc6\xaa\xde\x58\xd5\x1b\xab\x7a\x63\x15\xea\x8d\x55\x6b\x1b\xab\xbe\x20\x99\xaa\x37\x5c\xf5\x62\xd5\xee\xa6\xbb\xaf\x5a\xe6\x3e\x59\xeb\x3a\xa3\xa4\x17\x39\x54\x2b\x23\xef\xed\xb4\x7f\x5d\x11\x72\x7f\xe3\x46\xf0\x7e\xf8\x95\x7c\x69\x96\xb4\x4d\x60\xb1\xdb\xd1\x2f\x36\xae\xb8\x2f\x1d\xda\xb8\x56\x7d\xd8\xf3\x92\xc5\xe9\xc3\x9e\xfb\xb0\xe7\xbd\x0b\x7b\xde\xb9\xb2\x92\x71\xb9\x0c\x90\xc8\x94\xce\x5a\x9a\xff\xec\xee\x6c\x48\x34\x02\x52\x30\x28\xc7\x31\xc9\x12\xbe\x00\x4b\xca\x92\xeb\xdc\x75\x71\x53\x93\xa8\xf7\xfd\x46\x77\x23\x7f\x2d\x9d\x63\x5f\x64\xd2\x62\xde\x7b\x21\x85\x1e\xff\xa3\x92\xce\xdf\x09\x2f\x93\x21\xf2\x99\x4a\xb8\x95\x56\x13\xf6\x88\x35\x3f\x09\x4a\x17\xda\x7b\x70\x92\xab\x20\x77\x4f\x6a\xc1\x2a\x23\x42\x2d\x82\x37\x49\x9a\xa9\xc5\x7f\x8e\x18\x55\xde\xc3\x46\x67\x8c\x0b\xc3\xd5\xf4\xc7\x73\xcc\xe2\x84\x08\x7d\xa9\xba\x76\x22\xcc\x18\x57\x20\x6e\xc0\x0c\x62\xf4\x44\xb1\x11\x4e\x06\x37\xe7\x9d\xfd\xcc\xef\xe8\x74\xbd\x76\xb1\xba\x15\x77\xdd\xa7\x84\x4f\xa0\x82\x65\x5e\xd6\xe9\x75\x03\xbd\x67\xb4\xb4\x73\x6f\xc5\x10\x14\x96\x8f\x55\xe0\x90\x72\x16\xfa\x78\x29\x94\xc8\x8a\x77\x4b\x18\xf3\xcb\x5f\xad\xc0\x8d\x94\x9f\x59\x00\x12\x78\x0c\x43\xae\x8e\xc3\xfd\x18\x76\xe8\x7e\x2b\x5a\x76\xbf\xb8\xd2\xdd\xf0\xa3\x20\x4a\x2c\xc6\x58\x29\xcd\x64\x76\x89\x71\x72\x8f\xe5\x63\x67\x8c\x93\xd2\xcb\x7b\xce\x72\x4a\x18\x27\xe5\x81\xbf\x38\xcb\xe9\x48\x9d\x2b\x38\xd3\xfb\xcb\x8f\xef\x7a\xd6\xd6\x98\xf8\xef\x25\x57\xbe\x1b\xef\x59\x65\xa6\x7d\x8f\x79\xf3\xcb\x98\xe9\xde\x8c\xb0\xc2\xcf\xbf\xc4\x93\x5b\xbe\x9d\xfa\x23\xba\x6c\x8d\xbe\xb8\x42\xb8\x15\xa1\x63\xc5\xdc\xde\x49\x41\xdc\xaa\xdc\xb4\xeb\x51\xbd\x8c\x99\x3b\xd8\x8d\x75\x62\x80\xce\xcb\x68\xe5\xfe\x0c\xb9\xa8\xa0\xa2\xf4\xec\x1c\x12\xad\xa9\x0c\x13\xe2\x23\x2e\x8c\xe4\x15\xdb\x33\x6b\xcc\x76\x06\xcc\xf7\x04\x0d\x50\x6c\x6b\xf3\x0b\x92\x09\x22\x09\x53\x46\xd5\x36\xf5\xae\x5c\x79\x7f\xca\xac\x85\xe8\x0c\x2b\x7c\x8a\x15\x4e\xf8\xec\x08\x0d\x7c\x61\x7f\x2a\x11\x4e\x24\x47\xd8\x11\x0e\x89\x5d\x13\x98\xc5\x8e\x3d\x60\x14\xf1\x34\xa3\x89\x47\x6a\xf7\x56\x7c\xca\x62\xfa\x44\xe3\x1c\x27\x1e\x19\x7b\xc4\x86\x4f\x84\xa9\x1c\x54\x38\x9c\x24\xc8\x76\xeb\x5e\x08\xf4\x73\x37\x4a\x49\x53\x9a\x60\x81\x14\xb7\xa3\xbd\xb6\x6d\xa1\xfb\x39\xf1\x63\x75\x28\xe0\x28\xc5\x8f\x44\x22\xaa\x50\xc6\xa5\xa4\x93\xa4\x38\xc6\x0f\xe7\x08\xc6\x7d\x7a\x71\x0e\xa6\xd1\x48\x21\x6e\xf8\xa0\xeb\xdc\xfa\x09\x5c\x8f\x29\x66\x8c\x40\xc7\x5c\xcd\x89\xb0\xdd\xdb\x97\xdf\xda\xca\xf9\xd6\x18\xd1\xed\x16\xd3\x70\x64\x6f\xa7\x74\x76\xd6\x38\xbb\xaa\x9b\xdd\x74\xcd\x76\x45\xf3\x05\xbc\xb4\xdd\xb5\xc1\x0b\x2a\xcb\xea\xe0\xbb\x70\xd9\x96\x46\xfc\x1a\xf8\x68\xbf\x53\x45\xb0\xd7\x02\x5f\x64\xdd\xbe\x54\x15\x70\xcf\xf5\xbf\x1e\xd9\xad\x47\xb1\xef\x03\x30\x76\xb8\x38\x7d\x00\x46\x1f\x80\xf1\xc5\x06\x60\xb4\x6b\x13\x34\xde\x3a\x5d\x6f\xcd\x0a\x52\xde\x28\x20\x7e\x05\x51\x0a\xcb\xc7\xae\x35\xa5\xb4\xa8\x7c\x1e\xbf\x0b\xa9\xbe\x71\xc2\xaf\x21\xdd\xf7\x75\x8a\x76\x5a\xa7\x68\xef\xa6\xdd\x0b\x7e\xbd\xe0\xd7\xcb\x36\x1d\x27\xdc\xcb\x36\xfb\x2b\xdb\xbc\x95\xc2\xf2\x25\x41\xe8\x6a\xe1\xa9\x94\x19\xb3\x34\xc0\xd6\xc0\xd1\x80\x7b\x20\xcf\x12\x8e\xe3\x55\x41\x38\xbf\xa2\x42\xae\x59\x22\x9a\x99\x76\xf5\x07\x7b\x2e\x99\xd5\xe2\x6f\xcc\xc8\x7f\x0f\x31\xb5\xad\x53\x7f\xd3\xb0\x5a\xa0\x5f\x08\x26\x2b\x05\xa5\xbd\x94\x16\x52\xa5\xe9\x4e\x0a\x87\xfc\x6e\xcf\xa9\xda\x6f\xe9\x6b\xa8\x17\x5f\xb0\x83\xa0\x77\x02\xfc\x3e\x0b\x9f\xef\x8d\xd4\xda\xab\x76\x7d\x56\x65\x6f\xd4\xef\x15\xdf\x5e\xf1\xdd\xf9\x32\xee\x93\xe2\xfb\x86\x12\xb5\x49\x13\x79\x91\x32\x86\x9b\xc9\xd6\xbd\x68\xdd\x8b\xd6\xbd\x68\xfd\xc5\x8a\xd6\xfb\xb1\xc2\xbd\x5c\xdd\xcb\xd5\xbd\x5c\xdd\xcb\xd5\xbd\x5c\xbd\xf3\x65\xec\xe5\xea\x8a\x5c\x0d\x7f\xb9\x34\xe9\x75\x85\xec\xce\xc2\x75\x87\x9c\xe8\xf7\x22\x59\xf7\x52\x75\x2f\x55\xef\xb7\x54\xbd\x37\x13\xfa\xf2\x12\x21\xfb\x54\xc2\x3e\x95\xb0\x4f\x25\x7c\x8b\x54\x42\xc7\x4b\x96\x49\x28\x75\xc1\xe2\xa7\x1a\x07\xda\x5b\xd9\xa2\x18\xed\xa6\xe1\x1d\xbb\x5a\x6a\x07\x34\xbf\x49\xa5\xa9\xd2\x6f\xae\xa1\x3d\xaa\x3f\x75\xe0\xa4\x05\xcd\x28\xdc\xf8\x56\x23\x84\xfd\x6c\xdf\x7c\x5f\x60\xe0\xf5\x51\xf7\xf5\xa7\x50\xb0\x6b\x7d\xfd\xa9\x17\x9c\xb7\x3b\x5c\x2b\x66\xee\x68\xd4\xd8\x78\xdf\xe9\xb4\xdf\x1c\x5c\xae\xfd\xa4\xbf\x69\xb8\x5c\xe3\x4d\x52\x4b\xde\x39\xfe\x47\xe3\x45\xf1\x06\x65\xb7\xd6\xbe\x1d\x3e\x11\xf5\xa5\x5c\x0d\x7d\xd9\xad\xbe\x3e\xc4\x8e\xa6\xbb\x11\xeb\x7f\xb7\xb3\xed\x8b\x8c\xf5\x45\xc6\xfa\x22\x63\x7d\x91\xb1\xbe\xc8\x18\xfa\x9d\x17\x19\x5b\x5b\x7c\x34\xe3\xf8\x52\x24\xc8\xbe\xc8\x58\x2f\x44\xee\x6e\xba\xbf\x2f\x21\x72\x0f\x2d\x08\x7b\x51\x4d\xcd\x5b\x10\xde\x1c\xf7\xc3\x8d\xa4\x2b\xf6\x87\x5b\xd0\x1e\xff\xc3\xfe\x5f\x8f\xff\xd1\xe3\x7f\xb4\xcc\xba\x0f\x66\xed\xf1\x3f\x50\x1f\xae\xd9\x87\x6b\xee\x73\xb8\x66\x87\x6d\xec\xf1\x3f\x3a\x8a\x73\x2f\x84\x01\xe2\x64\xae\xb5\x70\x40\x7e\xae\x2b\x1a\x7b\x2b\xa5\xb9\xb1\xfe\x7e\x70\x40\x1a\xa7\xbd\x17\x2a\xc9\x2b\xe2\x80\x34\xd1\x75\x67\x05\xe4\x7d\xe0\x81\xb8\xd1\xf6\x89\x8b\x7d\x88\xf5\xfe\x87\x58\xef\x5d\xe2\xe2\xde\x48\xb2\xbd\xba\xd7\xe7\x2e\xf6\xb9\x8b\xbd\x32\xdc\x2b\xc3\x3b\x5f\xc6\x7d\x52\x86\xdf\x58\xc2\x7e\x41\x5c\x90\xed\x64\xed\x5e\xd4\x36\xef\xf5\xa2\x76\x2f\x6a\x7f\xa1\xa2\xf6\x7e\xac\x70\x2f\x67\xf7\x72\x76\x2f\x67\xf7\x72\x76\x2f\x67\xef\x7c\x19\x7b\x39\xfb\xd5\x70\x42\x9a\x84\xed\x8e\xf9\x36\xef\x49\xd2\xee\xa5\xec\x5e\xca\xde\x6f\x29\x7b\x6f\x26\xd4\x63\x86\xf4\x98\x21\x3d\x66\x48\x8f\x19\xb2\x91\x7c\xf3\x2f\xf6\x58\x7e\x08\x6e\x62\x7f\x65\x7f\xf8\x3e\xe1\x93\xfb\x45\x46\xf4\x7f\xcf\x68\x4a\x98\x04\x69\x94\xaa\x45\x28\xcf\xb4\xac\x7c\x7d\xcd\x3f\xdc\x9d\x5f\x7d\xba\x08\xb3\x69\x3e\x5c\x3e\x5c\xdc\x9f\xdf\x0c\x6e\xfd\xba\xf8\x59\x85\x6b\x61\xbf\x2b\x89\x64\x96\xe4\x6f\x89\xd6\x3d\xe1\xd4\xdc\x29\xac\x72\xb9\xd9\xc8\x6e\x87\x77\xc3\xdb\x9f\x20\x1b\x68\x7c\x76\x7e\x37\xf8\xfe\xa2\x44\x10\xa5\xe7\x83\xd3\xbf\x3e\x9c\xdf\xb6\x3f\x1f\xfe\xd7\xf9\xdd\xfd\x5d\xdb\xd3\xdb\xe1\xc5\x70\x70\xd7\xfe\xf5\xc7\xc1\xf9\xc5\xc3\xed\x70\xe9\x7a\x2c\x1d\xed\x72\x25\x44\xc2\x22\x41\x9c\x3f\x8a\x2c\xd7\x10\xc5\x1a\x22\x2f\x3e\x3a\x76\xd8\xd4\xd7\x09\x7a\xb0\x3a\x3d\xb5\x8d\x1b\x06\x1b\x34\x64\x94\x91\x98\x4a\x3c\x49\x48\x5c\x6b\xc9\xad\x61\x5b\x4b\xb8\x34\xa8\x67\xad\x3d\x7b\x91\x53\xf3\xbc\xc8\xf0\x02\x04\x39\x8a\x8a\xb0\xb8\xa1\x0f\xb3\x0f\xad\x3d\x30\xcd\xbb\xe8\x13\x29\xf5\x14\xe5\x42\x10\xa6\x92\x05\x22\x9f\xa9\x54\xb2\xd6\xa8\xdb\xbe\xb6\x66\xed\x9d\xea\x1b\x9c\x63\x89\x26\x84\xb0\xf2\xf8\x05\x49\x08\x96\x0d\x63\xb6\xbb\xdf\x6d\x59\xfc\x5e\x59\x6b\x8c\xb9\x8c\xa6\x98\x26\xb9\x20\x95\xd3\xc2\xd3\x0c\x0b\x2a\x39\x1b\x7e\xd6\x77\x99\x3e\xc8\xd7\xf0\x39\x17\x9b\x9d\x98\xe1\x5f\x43\x0a\xbe\x2a\xff\xf3\xd3\x7d\xf9\x5f\xa5\x33\x7f\x71\x5f\xfe\xd7\x72\x5a\x0f\x1a\xae\x52\xf6\x21\xfa\x74\x7f\x82\x3e\x41\x88\x93\x40\xf7\x73\x6c\x28\xf6\xe2\xfe\x04\x5d\x10\x29\xe1\x97\xe2\x63\x45\x55\x02\x73\xfb\x9e\x32\x2c\x16\xc8\x4d\xdf\x24\xba\xe2\x68\x8e\x88\x5f\x9a\xea\xe2\xb1\xbf\xe5\x0c\x54\xf7\x62\xf5\x2e\xf8\x8c\x46\x38\xd9\x6e\x11\x07\x57\x25\x3e\x70\x7d\xbb\x74\x29\xc2\xb7\xeb\x6b\x31\xb8\x3a\x83\x24\x52\x37\xd4\x86\x99\x5f\x11\xa9\x89\x24\xe2\x2c\xb6\x5e\x1a\x7d\xfb\x2f\x02\xa1\xfe\x6f\x1c\x12\x71\x73\x49\xd9\x4c\xb7\x88\x8e\xd1\xf5\xed\x88\x5d\x8b\xd8\x18\x42\x89\x96\x86\x0d\xcd\x51\x89\x18\x57\x88\xa6\x19\x17\x0a\x33\xa5\x15\x01\x10\x03\xec\x8a\x18\x0e\x70\xca\xd3\x34\x57\x58\x1f\xb4\xda\xa2\x32\x63\x0e\xb9\x23\xea\x3c\x06\xd7\x4a\xc3\x1a\x1a\x39\xa1\x98\x4b\x26\x74\xfb\x5a\x46\x29\xeb\xd0\x34\xae\xa9\xb2\xae\x09\x2c\x04\x2e\x4b\x13\x1f\xa8\x22\x69\xf5\xfd\x8e\x41\x9e\xff\x6c\x34\x10\x9c\x9a\xa4\x0a\x22\x06\x22\x9a\x53\x45\x22\xa5\x8f\xe0\x46\x34\xf1\x70\xf5\xe3\xd5\xf5\xcf\xa1\x04\xf1\x61\x70\x79\xf6\xe7\x7f\x2f\xfd\x70\x7b\x59\xfb\x61\xfc\xd3\x9f\x6b\xbf\xfc\xff\x96\xd2\x53\xb5\xa7\x9a\x9e\x1f\xcc\xe5\x10\x44\x6a\xb0\x09\xbb\xa9\x22\x9a\xe2\x19\x41\x32\xcf\x34\x05\xc8\xa3\xf2\xfe\x6a\x91\xf2\x82\xe3\x98\xb2\x99\xc9\x00\xbd\xa0\x8a\x08\x9c\x5c\xe2\xec\xa3\xb3\x5f\x6f\xb0\x3a\xff\xf7\xae\x94\xaf\xfb\xe1\x97\xc1\x65\x98\xf1\xfb\xe1\xe6\xf6\xfa\xfe\x7a\xe9\xac\x4b\x2d\xd4\x8f\x91\x7e\x7c\x02\xff\x8b\x8e\x91\x6e\xdd\x4b\xbe\x29\x51\x58\x6b\x04\xe8\x6b\x93\x34\xe7\x13\x69\x28\x4b\xe0\xd4\x64\x82\xa6\x14\xae\x14\x63\xc1\xfb\xc6\x08\xd7\x5e\x7b\xf0\xe7\xc6\x7c\x00\xda\xb2\xbb\x94\x59\x8c\x45\x8c\xfe\x26\xab\xe9\xe3\x60\x38\x36\x3f\x90\x18\x1d\xa2\xb9\x52\x99\x3c\x39\x3e\x7e\x7e\x7e\x3e\xd2\x6f\x1f\x71\x31\x3b\xd6\x7f\x1c\x12\x76\x34\x57\x69\x62\xd2\xe5\xf5\x2a\x9c\xa0\x1b\xc1\xf5\x15\x02\x0a\x3a\x11\x14\x27\xf4\x37\x12\xa3\x89\xe1\x7f\x7c\x8a\x7e\x8d\xb8\x20\x47\xc5\xc6\x58\xa3\x92\xbd\x47\xac\xe1\xe9\x58\xbf\xd4\xc0\x4c\xaa\xfb\x89\x62\x12\xd1\xd8\x8a\x19\x84\x45\x1c\x2c\x8f\xc6\x57\xa1\xdb\x73\x99\x86\x5a\xa3\xc9\x72\x55\x2c\x67\xa0\xac\xe0\x98\x04\xd9\xee\x8a\x97\x09\x4e\x2b\x3e\xe7\x46\x6d\xcd\xb5\x8a\xae\xef\x56\x0c\xb7\xaa\x7b\x35\xd3\x13\x8e\x78\x82\x26\xf9\x74\x4a\x44\xe8\x90\x3e\xd0\xda\x0c\x95\x48\x90\x88\xa7\x29\x48\x0c\xfa\xab\x5c\x1a\xaa\x86\x15\xb3\xa3\x3d\x1a\x31\xd8\x7f\xad\xe6\x00\x05\xc4\x1c\x58\x1d\x23\x24\x46\x98\x2d\x4c\x37\x93\x7c\x1a\xb6\x6f\x60\x28\x70\x8c\xa8\x1a\xb1\x41\x92\x20\x41\x52\xae\x48\x90\x43\x09\xce\xb3\xf2\x82\x03\x8b\x14\x24\x4b\x70\x44\x62\x43\x0f\x09\x8f\x70\x82\xa6\x34\x21\x72\x21\x15\x49\xc3\x06\xbe\x06\x5b\x8d\x5e\x33\x2a\x51\xcc\x9f\x59\xc2\xb1\x9d\x47\xf5\xb3\x6f\xca\xa7\x71\xe8\x20\x02\x86\x42\x70\x01\xff\xf3\x23\x65\xf1\xce\x38\xd4\xc3\xdd\xf0\x36\xfc\xf7\xdd\x2f\x77\xf7\xc3\xcb\xf5\xb8\x8f\xa7\x2c\x18\x1e\xe8\xf0\x27\xe8\xce\x2c\x02\x17\x5a\x22\x12\x2d\x93\xba\xb4\xa4\x54\xfc\xc0\xe3\x0d\xb9\xef\xe5\xe0\xea\x61\x50\xe2\x28\x77\xa7\x3f\x0c\xcf\x1e\x2a\xfa\x80\x9d\x5f\x49\x86\x37\xea\x5f\xf8\xdb\xe9\x0f\xe7\x17\x67\xe3\x06\x85\xf1\xc3\xed\xf0\xf4\xfa\xa7\xe1\x6d\xa1\xdb\x35\x2e\x51\x65\x30\x55\x66\x75\x6f\x98\xd2\x9c\xc7\x68\xb2\x68\x06\x84\xd0\x92\x73\x02\xbe\xd8\x02\x12\xc5\xb4\x7a\x02\xbc\xc9\x61\x73\x14\x5f\xa4\x3c\x26\x07\xf6\x1d\x40\xd2\x30\xc6\x15\x23\x31\x37\x37\xac\x7b\xc7\x2c\x30\x54\x18\x90\x0b\xbf\x70\x27\x68\x80\xa4\x7e\x31\xd7\x87\x5a\xd0\xd9\x0c\x0c\x87\x95\xa1\x9a\xd6\xec\xa7\xb0\xbc\xf0\x9d\xd9\xff\x4c\x70\x38\xe7\xba\x5b\x6b\x71\xf6\x56\x09\xf3\x21\xa0\xae\x94\x5b\x14\x18\x0c\x0e\x0d\x43\x73\x9b\xa5\x17\xa1\x75\xbd\xcc\x79\x34\xf6\x22\x7d\xb8\x80\x6d\x49\x63\xef\xcc\x04\x79\xa2\x3c\x0f\x3e\xb5\xc0\x1e\xa5\x1d\x6f\x6c\xbe\x58\x00\x58\x36\x63\x14\xa9\x34\xe3\xc9\xa3\xb1\x05\xcd\xc2\x9e\xa0\x85\xa9\xe0\x69\x43\x1b\xe5\x63\x72\x7e\x7d\xa7\x04\x56\x64\xb6\x38\xb3\x2c\x63\xf3\xe3\x71\x76\xfd\xf3\xd5\xc5\xf5\xe0\x6c\x3c\x1c\x7c\x2a\x9f\x78\xff\xe4\xee\xfe\x76\x38\xb8\x2c\x3f\x1a\x5f\x5d\xdf\x8f\xdd\x1b\x4b\x49\xbe\xa5\x83\xfa\x3d\x5d\x7e\xf1\x04\x69\x96\x0b\xac\xd1\x01\xde\x05\xfc\x71\x42\xa6\x5c\x18\x3e\x9f\xba\xd0\x05\x2b\xc2\xb8\xb5\xb5\xba\x58\x65\x16\x27\x60\x19\x6b\x6a\xd2\x58\xbd\x95\x20\x38\x85\x7b\x02\x33\x34\x64\xf1\xe1\xf5\xf4\xf0\xce\xfc\x98\x62\xf1\x48\x84\xff\xf4\x59\x50\xa5\x08\x2b\xa9\x74\xd8\x0d\xd9\x2b\x89\x45\x07\x47\xe8\x56\xf3\x7d\xfd\xbe\xbf\xd4\x34\xb1\xc7\x44\x61\x9a\x48\x3b\xd8\xd2\xba\x9e\xa0\x0b\x2c\x66\x85\x1d\xee\x6b\x3e\x9d\x9a\xc6\xbe\x31\xc3\xd0\x77\x58\x69\x16\x0d\xbc\x57\x93\x86\xbb\x17\xa1\x3f\xfb\xb2\x97\x87\xeb\x54\xf5\x90\x6d\x47\x53\x0f\x37\xb0\xe2\x46\x63\x2f\xe9\x86\xf6\x49\x03\xad\xc1\xc4\xcd\xe3\xe5\x97\x4c\x73\xdb\x75\x72\x2a\xbf\xd8\x40\x4e\x26\x97\x4a\xef\xfc\x54\x6b\x9b\x0d\xb4\x44\x3e\x53\x6b\x30\x08\xc7\x5d\x21\xa1\xa2\x19\x30\xaf\xe2\x2c\x23\x58\xc8\xa6\xdd\x2e\x8b\x81\x2d\x7b\x6f\x7a\x0a\xfb\xb0\x9b\xec\xfa\x39\x40\x9c\x81\xc1\xc1\x0b\x11\x15\x8a\xec\x40\x03\xa6\xad\x1a\x05\xdc\x00\xda\xd2\xb5\x45\x36\xba\xa4\x52\x2b\x8d\xe6\xc7\xef\x2d\xe4\xd2\x66\x04\xf1\x71\x70\x7e\x51\x11\x2e\xc6\x67\xc3\x8f\x83\x87\x8b\xe5\x66\xc2\xd2\x77\xd5\x2d\x46\x87\x48\x3f\x2f\xfb\xcd\xe9\xd4\xdc\x19\x0e\x38\xca\xa8\xb4\x84\x81\xd1\xca\x42\xd5\x18\x7b\x75\x4c\xb2\x84\x2f\x52\xc2\xc0\xc4\x53\xba\x09\xf5\x7a\x4e\x31\xb5\x57\x4b\x30\x58\xb0\xe2\x58\xb3\x1b\x5c\x63\x87\x0e\xad\x8a\xc4\xfe\xe6\x2d\x83\x55\x55\x58\xf7\x8d\xf1\x9e\xd9\xff\xdc\x29\xac\x36\x3c\x63\x83\xd3\xfb\xf3\x9f\x86\x65\xfd\xf0\xf4\x87\xf3\x9f\x9a\xa4\x9a\xf1\xa7\xe1\xd5\xf0\x76\x70\xbf\x42\x38\xa9\x34\xd9\x24\x9c\x48\x3d\xe0\xaa\xf7\x94\x4a\x1f\x11\x14\x19\xc8\x2b\x44\x95\x44\x4f\x54\xd2\x09\x05\x80\x30\xeb\x89\x7c\x38\x07\xce\xfa\x84\x13\x1a\x53\xb5\x70\xe2\x8b\xe9\xb7\xbc\x8f\x9a\x93\xda\xf6\x8d\xd9\x21\xf4\x4f\x82\x95\xcf\x6c\x8e\x9b\xf4\x09\x02\xdd\xf6\x09\x94\xb6\xe0\x33\xa6\x05\x69\x36\x23\xc2\x0c\x07\xbc\x2f\xe1\x58\x82\xe7\x7a\x54\xa1\xb0\x52\xac\x9a\x17\x5a\x67\x84\x11\x01\x20\x70\xbe\x13\x23\x48\x09\xc2\xbe\xd2\x32\x57\x96\xd0\x88\xaa\x64\x81\x22\xb0\x61\x81\x39\x33\xc5\x0c\xcf\xac\x70\x00\x6a\x4e\x85\x24\xfe\x6a\x50\xd4\xae\xa7\xd6\xb4\x7f\x4f\xc9\x86\xc7\xec\xe1\xea\x6c\xf8\xf1\xfc\xaa\x4c\x02\x3f\x9c\x7f\x2a\x89\xb0\x97\xc3\xb3\xf3\x87\xd2\x6d\xae\x25\xd9\xe5\x72\x7d\xb5\xd9\x86\xa3\xe8\x5f\x3a\x41\x67\xe6\xd3\x13\xbd\xb8\x0d\x10\x71\x5e\xf9\xad\xac\xc3\xad\x0b\xc9\x73\x7f\x0c\x99\x12\x8d\x7e\x89\xae\x26\x24\xeb\x83\x2c\xd9\x90\x9a\x43\x15\x6a\x7d\x5f\x55\x9d\xca\xd5\x29\xbb\x17\x21\xe8\xf2\xa8\xb0\x2c\x85\x31\x0c\x60\x34\x68\x33\x62\x35\xb8\xb5\x0a\x86\xfd\x13\xb8\xa8\xd3\x5c\x2a\xe3\x4a\x04\xe2\x44\x8f\x7f\x91\x7a\x41\xc1\xd5\x78\x84\xee\x08\x19\x31\x67\x3d\x98\x51\x35\xcf\x27\x47\x11\x4f\x8f\x0b\x7c\xc2\x63\x9c\xd1\x14\x6b\x49\x9a\x88\xc5\xf1\x24\xe1\x93\xe3\x14\x4b\x45\xc4\x71\xf6\x38\x83\x08\x18\xe7\x4e\x3d\xf6\xcd\xce\xf8\xbf\x5e\xfc\xe9\xdb\xc3\x8b\xbf\x7c\xfb\xa1\x6e\x21\x6b\xdb\xff\x21\x8b\x70\x26\xf3\xc4\x46\xcc\x89\x70\x6d\xdc\x91\xcf\xc9\xaa\xfd\xbe\x2a\x6f\xd7\x76\xfa\xeb\xe9\xcd\x43\xc9\x62\x5d\xfe\xe7\xe5\xf0\xf2\xfa\xf6\x97\x12\xa7\xbc\xbf\xbe\x1d\x7c\x2a\x31\xd4\xe1\xcd\x0f\xc3\xcb\xe1\xed\xe0\x62\xec\x1e\x6e\x63\x7b\xfb\x91\xf1\x67\x56\x5e\x1a\xe9\x38\x60\xad\xa7\x13\xf4\x91\x0b\xf4\xa3\xdf\xc9\xc3\x09\x96\x70\xc5\xb8\x3b\x4b\x1e\xa0\x8c\xc7\xc0\x78\x11\xc9\xe6\x24\x25\x02\x27\xd6\x66\x20\x15\x17\x78\x66\x6e\x7a\x19\x09\xac\xa2\x39\x92\x19\x8e\xc8\x01\x8a\x80\x1a\x66\x07\xb0\x29\xa0\x6a\xf1\x59\xd5\xce\x77\x9b\x33\x45\x53\xe2\x54\x70\xfb\xcf\x7b\xb3\x19\x1b\x6c\xce\xf5\xfd\x0f\x65\x61\xef\xe3\xc5\x2f\xf7\xc3\xf1\xdd\xd9\x8f\x4b\xd7\xd3\x7c\x56\x1a\xd9\x1d\x04\x20\x9d\xf2\x24\x4f\x59\xf8\xf7\xe6\x63\x3b\xbf\xba\x1f\x7e\xaa\x8e\xee\x7a\x70\x5f\xa6\x8c\xdb\x72\x80\xdb\x87\xef\xaf\xaf\x2f\x86\x25\x97\xf0\x87\xb3\xc1\xfd\xf0\xfe\xfc\xb2\x44\x3f\x67\x0f\xb7\x06\x8d\x70\xd9\x34\xdd\x08\x1a\x26\xaa\xa7\x15\x4e\x73\xd7\xac\xb0\x13\x27\x1a\xd8\x80\x72\x73\x96\x0f\x03\xb8\x1d\x13\x0e\x06\x56\x9d\x43\x6f\x52\x8d\xcc\x48\x1b\xd9\xa1\x2a\x6f\x13\x6a\x67\xc7\x4b\x37\x7a\x19\x57\xbe\xf7\x43\x30\x50\xa0\x46\xd9\xc6\x49\xc2\x9f\x4d\x28\x6f\x4a\xf5\xad\x6c\x81\xd1\xf4\x2b\xb2\xf0\x10\x1e\x35\x70\xbc\xf2\xb6\x90\x48\x10\x75\xc9\x73\xa6\x36\x27\xb9\xc1\x55\x89\xef\x0c\xaf\x7e\x1a\xff\x34\x28\x53\xe0\xf9\xc5\x72\x56\x13\x36\xd1\x70\x15\x0f\xae\x7e\xf1\x97\x30\x04\x7c\x1f\x78\x0d\xd5\xc8\xae\x51\x42\xb5\xd8\x1b\x61\xad\xbd\x26\x20\xd1\x20\x42\xc1\xe4\x90\xea\xc9\x41\x80\x69\x66\xfc\x49\x86\x3f\x99\x41\x9e\xb8\x3f\x2a\xed\x49\x58\x17\xb0\xa6\xba\x78\x7a\x68\xc7\x6a\xd5\x0c\x11\xf6\x44\x05\x07\x3c\x5b\xf4\x84\x05\xd5\xd2\xb8\x69\x59\xcf\xf5\x04\xfe\x77\xbd\x36\xc1\x30\x5a\x61\x5c\x77\x5c\xa8\x33\x1f\xc8\xbb\x99\x35\xa4\x29\xa0\xb5\x1e\xca\xda\x6c\xe8\xa8\x7f\xdb\xb0\x39\x5b\x06\xfc\x96\x27\xfc\xf7\xe4\x8c\xe2\x44\x33\x80\xdd\xc9\x8b\x83\xab\xbb\xf3\xb2\xfc\x58\x56\x33\x02\xbe\xbc\xb1\xbc\x08\x86\x4a\x33\x72\xa7\x4c\xdc\xfd\xf5\xc2\x68\x17\x00\x7a\x6c\xce\x6d\xa0\x58\x80\x00\xe4\x50\x50\x32\x2c\x64\xe5\x0b\x89\x00\x08\xad\x08\xb8\xd2\x77\x16\x84\x33\x3d\x71\x1a\x8f\x18\xf9\x9c\x11\x26\x21\x38\xc0\xdc\x67\x85\xaf\x5d\x1e\xa1\xf3\x29\xb0\x04\xfd\x3a\x43\x39\xb3\x0e\x30\x7d\xe1\x9a\x41\x1e\x68\x51\xd6\x0e\xc1\x6b\x88\x60\x78\x61\xc4\x05\x4b\x15\x83\x1f\xb1\x9f\xbd\x13\x0d\x1e\x4d\xb9\x66\x40\x7a\x17\x6d\x7b\x27\x08\x33\x49\x0f\x90\x56\x58\xaa\x7b\x0a\xa9\x03\x5a\xa1\xb4\x21\x5c\x9a\xd3\xd8\x3f\x5f\xff\x1a\xa8\xc5\x09\x87\x97\x41\xf3\x5d\x50\xb9\x0a\x5a\x44\xe3\xc4\x78\x4c\xc6\xdd\xef\x84\x88\x0b\x62\xfd\x2c\x6b\x5f\x03\xab\x18\xfb\x3d\x96\x8f\x35\xdf\xc3\x39\x93\x0a\xb3\x88\x9c\x26\x58\x6e\x18\x84\xe4\x6c\x1c\x07\x65\x89\xe3\xf6\xf6\xe1\xe6\xfe\xfc\xfb\x15\x5c\xbe\xfa\x71\x3d\x0c\x28\x4a\x72\xe7\x9e\x9b\x08\x8e\x63\xa4\xd9\xe7\x8c\x1b\x57\xa0\x15\xfc\x0b\xe8\x6f\x93\xd7\xe3\x03\x2a\x4b\xb0\xe3\x45\x3a\x82\xb5\x73\x84\xae\x04\x6a\x17\x02\x45\x7a\x25\x50\x60\xf2\x70\x5b\x0d\x9e\x45\x53\x90\xc4\x5a\xb7\xb2\x04\xab\x29\x17\xa9\xe1\xf2\xa5\x49\x9b\xc6\x97\x37\x4a\x99\x22\x42\xe4\x99\xa2\x0e\xcb\xbd\x2a\xa5\x42\x85\x77\x3e\xbb\x24\x52\xe2\x19\xd9\xc6\x01\xdd\xa4\x3c\xdc\xfd\x14\xfe\x13\x1c\xcc\x5d\x64\xff\xd2\x08\x5d\xe4\xbb\xa3\xa7\x6b\xf6\xd1\x04\xf2\xdc\xf0\x84\x46\x1b\x06\xdc\x7d\x1c\x9c\x5f\x8c\xcf\x2f\xb5\x12\x3f\xb8\x1f\x5e\x94\x44\x09\x78\x36\xf8\x78\x3f\xbc\xb5\x20\xd6\x83\xef\x2f\x86\xe3\xab\xeb\xb3\xe1\xdd\xf8\xf4\xfa\xf2\xe6\x62\xb8\x22\x32\xa7\xb5\xf1\xba\x75\xb5\xfa\xea\x49\xed\x17\xd8\x61\xcd\xcb\x42\x7b\x19\x64\x8d\x61\x9a\x80\x13\x9c\x1b\x67\x38\x46\x8c\xc7\x04\x7e\x96\xce\x3a\xe3\x91\xa3\xd1\xb9\xfa\x2a\x49\x10\xce\x15\x4f\x31\x78\x6d\x92\xc5\x88\xe1\x89\x66\xad\x38\x49\x82\xf0\x2e\x91\x33\xa6\x59\xac\x6e\xcc\x40\xb4\x47\x09\xd1\xec\x3c\x0b\x92\xfd\xac\xdf\x60\x4a\x19\x44\xda\xa6\x58\x3c\x1a\x37\x53\xd1\x65\x71\x28\x24\xc2\x72\xc4\xf4\xb8\x88\x35\x0c\x75\x59\xe1\x93\x4e\x6f\xb5\xae\x4e\x8a\x1f\x89\x5e\x95\x34\x8f\xe6\x28\x13\x7c\x26\x88\x94\xd6\xb6\x1c\x61\x66\x02\x10\xec\xeb\xfa\x1a\x1a\x31\xc6\xf5\x52\x38\x13\x76\x4c\x32\xc2\x62\xc2\x22\x6a\xd2\xfa\xc0\x77\xef\x4d\x9b\x33\x81\xb3\x39\x92\x1c\x9c\xde\xb0\xec\x60\xbf\x32\x1f\xb9\x9b\xcc\xcc\xd8\x3c\x0e\x2d\xd0\x22\xd7\x7c\xe2\x1a\xe4\x44\xb3\xca\xf0\xb1\xbb\x0c\x9d\xdb\xc5\xd8\x01\xd3\x2c\x21\xca\x80\xf5\xc3\x92\xc3\x66\xe8\xb5\x2e\xed\x87\xde\xa6\xa6\x4d\xd0\x17\xb6\x1b\x33\x96\x76\x44\x47\x0d\x96\x6d\x7b\xa4\xd0\x0f\x98\xc5\x89\x6e\xc5\xf9\x30\xca\x67\x11\x52\x51\x06\x9a\x6a\xdc\x69\xdc\xe6\x16\x8d\x70\x2e\xb7\xb9\x46\x2b\xb9\x98\xc6\x2a\x78\x58\x04\x85\x00\x79\xdb\x44\x4c\x58\xdd\x4c\xb3\x48\x9c\x70\xbb\x4a\xe6\xf5\xdc\xd4\x7f\x42\x30\x9a\x96\x6b\x36\x13\x94\x45\x34\xc3\xc9\x46\xba\x5f\x25\x18\xdf\xc6\xb8\x7f\x4d\xa7\x9a\x7c\xbe\xa9\xb9\x6d\x15\x11\x29\x24\x28\xdb\x61\xfa\x2d\x5c\xc3\x92\x64\xb3\x1a\x88\x2c\xa2\x49\xb0\xe0\xb9\xf1\xc7\xc1\xba\x90\xb8\xe1\xa8\x1e\x35\x6d\xb7\x3e\x19\xb8\x1c\x00\xbd\xc1\x66\x9b\xc8\x9f\xb6\xf5\xab\xb4\x62\x7b\x37\xc1\x78\x38\xb9\x69\x6e\xb3\x69\x07\x82\x87\xff\x5c\x46\x3b\x97\x38\xd3\x34\x63\x61\xfb\x71\x31\x47\xab\x24\xd9\xaa\x60\x2e\x7e\x26\xf0\x9d\xfb\xbc\x90\xee\xbb\x51\x2c\xa1\x0d\x80\xaa\x77\x52\x8a\x21\x08\x72\xcc\x2d\x8d\x4f\x73\x2d\xcb\x22\x0c\x51\x08\xe8\x6b\x72\x34\x3b\x42\xae\x08\xc3\x01\x1a\xdc\xdc\x0c\xaf\xce\x0e\x10\x51\xd1\x37\x2e\x66\xd1\x06\x2c\x8d\x98\xe2\x56\x5a\x59\xb8\x02\x1a\x29\x11\x33\x52\x9a\xb3\x8b\x6e\x82\x50\xe5\x19\x95\xca\x86\xcf\x6a\xbe\x12\x94\x3a\xa1\x69\x55\xcc\x36\x14\x92\xab\xf9\x36\xa4\x81\xa5\xcc\x53\xad\xcb\x8e\x29\x4e\xc7\x82\x27\xdb\x30\x85\x33\x98\x0a\xa8\xcb\x3e\x3d\x9f\xe2\x14\xe9\x66\x6d\x28\x88\x77\x39\x7a\x91\x4e\x0b\x46\x9a\x2f\xeb\x7b\x33\xb8\xb7\x9c\xf7\xc1\xc6\xa3\x51\x17\x02\x01\xe9\xfb\x2d\xac\xa2\x30\x1b\x8f\xad\xa5\x7e\x8c\xa3\x48\xab\xdc\x3b\x9e\x54\x50\x3f\xc7\xb9\x04\x6c\x47\x2f\x36\xcd\x55\x74\xee\x86\x99\x69\x0e\x06\xc1\xc0\xfa\xca\x95\x3c\xa2\x45\xfb\x0d\xfd\x4e\x16\xb5\x5e\x5d\x85\x9b\x07\xe9\x4d\x2a\xe6\x12\x96\x04\x76\x52\x9a\x0a\x39\x6a\x4e\x16\x68\x8e\x9f\x48\xa9\x4b\x97\x10\xa3\x1b\x5e\xf0\x5c\x34\x31\xba\x11\x3b\x23\x99\x20\x5a\xd2\xaf\x3a\x50\x3c\x4d\xdf\x96\x29\xb1\xa7\xeb\x9e\xae\xdf\x3d\x5d\x9f\x9a\x42\x49\x03\x5f\x18\x6b\x2b\x01\xce\x34\x36\xce\x38\x4f\xc6\x1d\x6c\x22\xdd\x57\xbc\xe4\x09\xab\x94\x8d\x02\x48\x00\x9e\x83\x7c\x54\xba\x36\xb9\xbe\xeb\x82\x14\x5b\x3b\xbc\x25\xcb\xe0\x5c\x66\x41\xbd\x9c\x6d\xce\x7b\x53\x2b\xcb\x5a\x42\x2f\x2e\xe6\x9c\x1a\xf9\xc6\xbb\xcb\xc2\xfa\xa7\xa5\xc3\xe4\x44\x11\xca\x6a\xd5\xd8\x0c\x3d\xeb\x05\x36\x72\xc7\xdf\x73\xae\xb0\xfc\xe6\x68\xc4\xb4\x10\xf5\x48\x16\xc6\xdc\xaa\xc5\x94\x3f\x68\x59\xfc\x50\x12\x26\x21\xdc\xfb\x0f\xc6\x3d\xa7\x49\xdc\x99\xab\x8d\x6a\x6a\x8a\xc0\x41\xd0\xb5\xef\x05\x42\x74\x6d\xa3\x56\x4a\x2a\x02\xa0\x41\xce\x37\x73\xb1\xcf\xcc\xf0\x67\x44\x41\x8a\xb5\xa2\x0a\x74\xa6\xd8\x54\x99\xab\x0d\x7d\xa5\xe9\xca\x50\x85\xe0\xe0\x27\x89\xf3\xed\x18\xbf\xac\xb7\xb1\x92\x33\x7a\x6d\xe1\xce\xc6\xbc\x1f\x3b\xbb\x51\x24\x78\xad\x74\x1b\x96\xc8\xec\xf4\xc4\xb0\x03\xe7\xbf\x26\xec\xe8\x99\x3e\xd2\x8c\xc4\x14\x43\x04\xbc\xfe\xd7\xb1\x9e\xd7\xbf\x9e\xde\x5e\x5f\x8d\x8b\x4c\x9e\xff\x1c\xb1\x41\x22\xb9\xcf\x52\x40\x8c\x33\x1f\x6e\x9f\x09\xe2\x44\x42\x3b\x17\xb0\xba\x16\x66\xc4\x11\x6b\x1b\x41\xcc\x23\x79\x84\x9f\xe5\x11\x4e\xf1\x6f\x9c\x81\x2b\x7d\x00\x7f\x9e\x26\x3c\x8f\x7f\xc6\x2a\x9a\x1f\xc3\xb9\x56\xc7\xe4\x89\x30\x65\xdc\x54\x7a\xb9\x62\x48\xde\x95\x10\xad\xff\xaf\x7a\xcc\x45\x52\x91\xd4\x9a\x6c\x44\x32\x85\xfe\x1f\x41\x26\x9c\xab\xe6\x4b\x8a\x4f\xa7\x92\xac\x75\x21\x15\x4a\xda\xdd\x35\xfa\xcb\x9f\xbf\xfd\xa3\x26\xa1\x4d\xd6\xf8\xfc\xee\x7a\xac\xbf\xff\xd7\x33\xfb\xbd\x5c\x83\xdd\x5d\x67\x05\x6b\x73\xc4\x63\x02\xe7\x73\x06\xb7\x9f\x00\xe7\x05\xb0\x37\x20\x87\x62\x1f\x9b\xb8\xdb\x59\xa9\xf5\xed\x54\xb6\x8d\x16\x13\x54\xec\x60\x8e\xe8\x10\x31\x8e\x52\x13\x6b\x8a\x19\xfa\xf7\x1f\xbf\x6f\xde\xc0\x5c\xd0\x8d\x3a\xa4\x16\xae\x21\xe8\x52\xd2\xdf\x88\x44\x9a\x6a\x34\x15\xf3\x54\x77\x2d\x88\x9c\xf3\x24\x46\xcf\x04\xd4\x24\x1b\x07\xea\xb5\x72\x41\x46\x2c\x6c\x02\x42\x0e\x11\x4e\x14\x9f\x11\xb8\xab\x9d\xa2\xa6\x88\xd0\xa2\x8a\xc9\xd2\x50\x5c\x90\x03\x03\xf5\x75\xf7\x27\x17\x5b\x0d\xd3\x84\x47\x2e\xa9\xc5\x9a\xe4\xe2\x49\xf3\xcc\xa7\x55\xd3\x2b\x6a\xb7\xe1\x57\x37\xd9\x9a\x6d\x9b\x97\xc6\x26\xa1\x58\x1b\x56\x75\x67\x9a\x07\x43\x23\xce\xc6\x09\x65\x8f\x1b\x6d\xc6\xb5\x13\xe5\x74\x0b\x76\xcd\x74\x8b\xde\xce\x6d\x2c\x20\x6b\x9c\x8f\x8f\x79\x92\x98\xd4\x96\x70\x7b\x40\xee\x32\xeb\x06\xc2\x40\x66\x72\x40\x49\x6c\xfd\x5e\x56\x13\x16\x84\x41\xc0\xdb\x88\x4d\x16\xd6\x67\x2b\x0f\x90\xcc\xa3\xb9\xcb\xcc\x8b\x38\x93\x5a\x8c\xe6\x02\x45\x3c\x4d\x4d\x71\x53\x46\x90\xe2\x3c\x91\x36\xda\x9d\x1d\x2a\x1c\xa9\x11\x2b\xfa\x5b\x71\xf2\x4c\x05\xa4\xed\x52\xf7\xba\xbb\x74\x8a\x4a\x4b\x4b\x05\x6e\x1a\x87\x98\x0d\x60\x04\x33\x9e\xa8\x00\xfd\x81\xd7\xcf\x92\xd9\xb0\x16\xcd\x40\xce\xb9\x50\xe3\xb8\x91\xe7\xac\x24\x9a\x2a\x23\x64\xe4\x30\x81\xa0\x61\xfe\xa4\x85\x7f\xf2\xec\x8d\xaf\xcb\x86\xa0\xa9\x7a\xd9\x08\xba\x1d\xa3\xa5\x23\x5b\x97\x04\x5b\xd6\xca\x20\x78\x44\xe5\x98\xf0\x55\x63\xbc\x83\xaf\x4e\xf5\x47\x4b\x17\xaf\x7a\xee\x9c\x10\xc4\xe3\x02\x6c\xce\xdc\xeb\x36\x23\x64\xd9\x9a\x5a\xe8\x84\x97\xcb\x1c\x5d\x36\x95\x87\xb2\x25\x57\x8f\x05\x4c\xf6\x92\x80\xac\x89\xc5\x84\x2a\x81\x45\x09\x29\xc4\xeb\x83\x92\x60\x01\xf1\x59\x23\x66\x70\xe3\x8c\xa6\x10\xa3\x98\x4a\x48\x10\x81\xbb\x34\x70\x86\xa1\x6e\x4a\x60\xe5\x68\x17\x79\x8e\x26\xfe\x1c\x02\xcb\x0a\xd2\x70\xcc\x4e\x77\xe4\xf1\xb1\xb4\x7e\xc6\xa3\xbc\x10\xe4\x22\x90\x70\x2d\xa6\x0e\xa2\x4c\xd2\xd9\x5c\x21\xca\xac\xdd\x11\x27\x33\x2e\xa8\x9a\xa7\xf2\x00\x4d\x72\xa9\xb5\x50\x13\xac\x66\xe2\x51\x88\x8a\x3a\x71\xa1\x6d\x93\x88\xe3\x4a\x83\x75\x15\x65\x03\xd2\xe8\x76\x28\x87\x95\xbb\x62\x05\xe1\x0c\x3c\xce\x60\xb5\x0d\x0a\x75\x1b\x0d\x3c\x25\x32\x71\x80\xdc\x21\x3b\x41\x15\x90\xb6\x73\x00\xa8\x90\x3b\xf3\x52\xbc\x46\x21\x2e\x64\x92\x41\x05\x71\xb1\xdb\x20\x79\x95\x91\x29\x0d\x7a\x93\x77\x3a\xa5\x99\x6a\x0c\xdc\xaa\xbb\x8a\x6e\x03\xcc\x9f\x6e\x8b\x0d\xc9\x58\x40\xcd\x80\xd4\x36\x62\x77\x84\xb4\x03\xb9\xd5\xf6\xde\x94\xc6\x85\x29\xd8\x44\x8f\xe5\x24\xbf\x8d\x13\xfb\x6c\x78\x77\x7a\x7b\x7e\x63\x20\x27\xae\x6f\x2f\x07\xf7\xe3\x06\xbf\x76\xc3\x5b\x97\x83\xdb\x1f\xcf\x56\xbf\xf6\xc3\x7d\x39\x2b\xbb\xe1\x95\xdb\xbb\xe5\xc9\x1c\x1d\x86\xd8\x90\x14\xd6\xd8\xcf\x09\xca\x16\x6a\xce\x99\x0f\x51\x88\x4b\xbc\xe9\x10\x99\x8c\x60\x05\x21\x44\x42\xaa\x06\xc7\xe1\x3d\xc4\xe5\xac\x96\x30\xcb\x9b\x65\x60\xd8\x76\x2a\x1a\xad\x71\x22\x3f\x25\x7c\x02\x7e\xeb\xbc\x54\xe2\x76\x49\x04\xfa\x96\xf1\x3e\x67\x54\x66\x09\x5e\xd4\x7a\x58\x75\xe5\x5c\xe1\x94\x40\xc4\x71\x81\x1f\xe7\x92\x45\xf4\xce\x40\x02\x93\xbf\xd7\xe9\x14\x32\x99\x14\xc5\x8a\xa0\x09\x51\xcf\x90\x37\xe7\x7e\xf5\xb6\x54\x17\x30\x22\x8f\x46\x0c\xcc\x39\x23\xbd\xc8\x71\x0e\xd1\x7e\xa3\x0f\x07\x68\xf4\x21\x26\x4f\x24\xe1\x99\xde\x79\xfd\x43\xcb\x25\x33\x4c\x31\x4d\xae\xb8\xf2\x96\xb9\x6d\xf6\x53\x90\x88\x66\x20\x99\x8f\x89\x6e\xf7\xf5\x04\x8f\x12\x25\x3b\x76\x06\x63\x40\x38\x8e\xb5\x92\x0d\xac\xcc\x0d\xaf\x08\x01\x62\xc1\xd4\x4b\xb5\x32\xd7\x11\x29\xbc\xf9\xdb\xf4\x18\xb6\x59\x36\x7b\x36\xee\x80\x77\x0c\xbf\x92\x92\xe1\x42\x71\x7c\xc7\x1d\xb5\x8e\x87\x36\x1d\xa3\xd5\x03\x5d\x3d\x80\x7a\x2d\xd6\x10\x98\xfd\x00\xef\xf4\x77\x2b\x05\x4d\x7f\xdb\x46\x61\x49\x76\x10\x19\x6d\x6e\x73\x35\x9d\x9a\xac\x1c\x71\x94\x70\x59\x86\x3a\xe9\x3c\xe8\x53\xfb\xe9\xb2\x71\x0f\x43\x67\xb1\xbe\xd6\xd7\xf2\x47\x37\x2c\x7c\x05\xcb\xcf\xb0\x09\x65\x1d\x1c\xf6\xed\x03\x44\x21\x58\x0e\xe4\xe9\xa4\x48\xfc\x66\x31\x2a\xac\xd8\x23\x56\x84\x1c\x48\xf4\x4c\x12\x88\x52\x8a\x78\x9a\x81\x85\xd6\x0e\xd7\xb6\x44\x62\x13\xf0\x79\x80\x78\xae\x74\x63\x26\xa5\xc2\xd9\xe0\x6c\xbe\x46\x61\xb5\x36\xae\x13\x1b\xbb\xec\x71\x81\x0d\xad\x1b\x56\x48\x19\xfa\x44\x14\xb4\x02\xb8\xeb\xe1\x04\x41\xcc\xab\x46\xc0\x35\xaf\xfd\x16\x27\xca\xce\x64\x8d\x9d\x2f\x70\x2f\xbe\x4f\xf8\x64\xb9\x8e\x07\x8d\xa3\x87\xdb\x73\x67\x50\x2a\xc2\x5f\x02\xf0\xd9\x92\x43\x68\x78\x73\x3b\x3c\x1d\xdc\x0f\xcf\x8e\xd0\x83\x24\x7a\x79\xfc\x74\x21\x3d\xd6\x4b\x94\x66\xe4\x16\x48\x83\x49\x45\x70\x9b\x1e\x4b\x84\x28\x25\xb1\xae\x60\x1c\x65\x94\x8d\xe5\x84\x0d\x18\x17\xd4\xda\x59\x00\x17\xa6\x3a\x4f\x1b\x58\xb5\xea\x04\x42\x98\xcb\xf8\xfd\x04\x19\x99\xf1\xa6\xf5\xc0\xaa\x55\xe4\x53\x0e\xc8\x7a\xe9\xc9\xc0\xd1\x52\x73\x42\x05\xea\x34\x2d\x43\x54\xe3\xee\x73\x0a\x22\x94\x2f\x71\xb6\x3c\x7b\x10\x3f\x97\x88\xd6\x48\x32\x81\xeb\xf5\xa5\xcf\x81\x63\x6b\x63\xc3\x0a\xb7\x9f\x60\xe1\x8f\x30\xbc\xd5\xf3\x4d\x13\xb0\x2f\x9d\x8d\x23\x9c\x58\x65\x10\x36\x0c\x51\x22\x38\x3b\xf0\x0b\x65\xa8\x74\x25\x1e\xa0\x29\xfd\x6c\x1b\x2d\xc2\x93\xdd\xab\x81\xbf\xba\x25\x1c\x6e\x8e\xeb\x67\x6a\x0d\xb1\xe1\x06\xbe\x5f\x1a\x9e\xc5\xa5\xd2\x52\x97\x96\x5c\x05\x89\xb8\xd0\x37\x05\x74\x5b\x18\x91\x57\x89\x0c\x0a\x0b\xbd\x28\x75\xa3\xfa\xb2\xd3\x5f\x94\x90\x88\xb1\x22\x87\x8a\xae\xcc\x5f\xb5\x29\x0e\x90\x0c\x81\x55\x80\xe6\x54\xdc\x3c\x13\x32\xc3\xcc\x45\xd6\xb6\x0c\xd7\x5d\x79\x5b\xb0\x2a\x2d\xc1\x62\xc8\xee\x01\xf9\x0a\x32\x37\x4a\xe3\x90\x19\xac\xe7\xd2\x71\xd8\xe0\x85\x7d\x58\xb6\x67\xec\x63\x29\x5a\x06\x9b\x67\xf1\x3e\x0d\x36\xc1\x52\x21\x3b\xa6\x36\x4d\x32\x90\xf0\x5f\xd6\x86\x56\x52\xcd\xba\x9a\xcf\x34\x09\x95\x95\x10\x02\x86\x6d\xe9\x60\x2f\x0c\xc8\x47\x4a\xc4\xcc\x09\xc2\xa6\x92\xae\x3f\xdb\xb6\xa4\xae\xbb\x25\x42\x66\x02\x31\xd6\xf5\xa6\x8f\xd0\x80\xd5\xe0\x8e\x5c\x58\x4d\x69\xbd\xcc\x9d\x84\x93\x67\xbc\x90\x28\x13\x06\x19\xc4\x04\x5e\xbb\xc9\x43\xbc\x63\xf9\x23\xef\xc9\x56\x2e\xf2\x1d\x81\x2a\xbd\x3a\xe6\xc9\xc9\xbd\xe3\x17\xf0\xc4\x54\x82\x82\xbd\x40\x5e\x34\x57\xa8\x9a\x1d\x58\x9d\x22\xe3\x68\x8e\xd9\x8c\x8c\x9d\x8d\x6c\x13\x6d\x49\xb7\x73\x0a\xcd\x9c\xd9\x56\x9a\x2f\xa7\x1b\xa3\x30\xd9\xf2\x1d\xe6\x55\x6f\xff\xd1\x87\x40\x2a\x3c\x23\xc8\x8c\xa8\x93\x55\xb1\x14\xf0\x63\xb1\x62\x41\x4f\xb0\xad\x0e\xcb\x41\xd0\x6d\xc2\x3b\x44\xae\x5c\xe0\x09\x49\xde\xc6\xf1\x0d\x5d\x5b\xdb\x2a\x38\x5b\x4c\x30\x37\x41\xcf\x60\x8e\xad\xb0\x0c\x6b\x7c\x15\x79\x53\x68\xf7\xb2\x79\x96\x8a\x57\x6f\x31\x51\x57\xea\x61\x93\xa9\xb6\x15\x80\x08\xaf\xbd\xa0\x50\x42\x93\x7d\x24\xbc\xfe\xaa\x26\xc1\xcd\x06\x12\xd4\x6b\x68\x19\xc7\xd6\x05\x1b\x56\x4e\x65\xe3\x1c\xf1\x8e\x45\xcc\xce\xa7\x88\x71\x46\x10\x95\xc5\xcb\xaa\x9c\xcd\xe2\x11\x56\xb4\x88\x6f\x8c\x2f\xbe\xc8\x92\xaf\x9d\xf3\xd2\x96\x96\x22\xf7\xdd\xdb\x06\x5c\x7a\x2e\x23\x5a\x51\xc5\x62\x01\x08\x8d\x86\x0f\x97\x65\xba\x95\xe3\xdc\xb9\xc0\x7d\xef\x00\x38\x83\x40\x4b\xc5\x11\x88\x91\x95\xc1\x21\x03\x63\x69\x5f\xb2\x1f\x59\x94\x91\x11\xf3\x96\x0d\x20\x44\x2a\x51\x8a\x33\x70\xc9\x30\xae\x8a\xaf\x0c\x6a\x8e\xf2\x5b\x78\xe0\x04\x71\x69\x4a\x20\xb5\xac\xc0\x2a\xd3\x8e\xbb\x7e\x8b\x75\x2d\xa3\x13\x3a\x64\xd5\x19\x7d\x22\xcc\xd1\xf4\x81\x3b\x13\x7a\x50\xae\xd3\x64\x71\x88\x21\x4a\x94\xc4\xa1\xe1\x7a\x39\x47\x32\x06\x99\x7d\xb0\x47\x76\x5f\xb2\xfb\xc6\x28\x08\x83\x71\x55\x02\x27\x77\x71\xbd\x21\x95\x5a\xd8\x55\x93\xc8\x8b\x25\xfa\x03\xe3\xea\x0f\x01\x30\xad\x33\x5e\xc0\xa7\xce\x04\x75\x50\xab\xb8\x01\x87\xd6\x12\x0e\xc2\x01\x40\xd2\xca\x95\xdf\xd6\xb5\x5b\xc4\x2d\xbf\xa8\x34\x3a\xac\x27\x31\xb5\x95\x2c\xea\x1d\xae\xa8\x7a\x2d\x54\x0d\x9e\xa6\x2a\x5a\x71\xd2\x4b\x86\x4e\xb9\xca\xc3\xea\xf7\xa2\x93\x67\xb5\x96\xd0\xbd\x0d\xb5\xa5\x9d\x03\x5f\x56\x60\xd8\x36\xdb\x25\x36\x49\xd3\x6b\x93\xcb\x45\x39\xf2\xc8\x56\x31\x68\x01\x69\x3d\x1a\xb1\x8f\x5c\xd8\x2b\x58\x5a\x98\xf8\x09\x8e\x1e\x0f\x09\x8b\x11\xce\xd5\xdc\x80\xa5\x5a\xbf\xc2\xc2\x52\x83\x96\x34\x80\x6c\x3c\x12\x02\x95\x11\x16\xb1\x2b\x58\xf0\xc4\xdd\x28\x46\x2c\x68\x04\x80\xe8\xa1\x4e\x0f\x54\x1a\x6d\x53\x35\x89\xd4\xfa\x55\xdb\x5a\x34\xd5\xd0\xac\x55\xd0\x5c\x7e\xce\x4a\x35\x41\x01\x42\x1f\xe2\x53\xf8\xb4\xbe\x3a\xe7\xce\xda\xe8\xf4\x3b\x4d\xcf\x75\x2f\xc4\x81\xd5\x28\x8c\x49\xca\xce\x40\x4b\x3a\xdf\x3a\x5e\x5b\x02\x7d\x9d\xe6\x02\xa2\x2d\x9b\xda\xfc\x3a\x9a\xd3\xa4\xf0\x5d\x7c\x73\xe0\x87\xa9\x9b\x4c\xc8\x13\x49\x0c\xe4\x78\x24\x20\xb0\xda\x58\x0d\xbf\x45\xff\xc7\xd4\x95\x44\x7f\x1c\xb1\x4f\xc0\x86\x93\x64\x01\x80\x88\xbe\x65\xac\x2a\xcd\x3c\x36\x0e\x40\xd9\x4c\x0e\x54\x1e\x88\xd9\xeb\x39\x7e\x22\x23\xe6\x9a\xf9\x3f\xe8\x11\xfd\x1b\xfa\x63\x9b\x7a\xe7\xe2\xa3\x5f\xd8\xce\xf1\x31\x88\x3e\x0e\x6e\x39\xcb\x28\x2d\xbf\x71\x66\x90\x92\x11\xb2\x01\x18\xc1\xe3\x1a\x53\xf6\xc4\xa3\x5a\x10\x7e\x78\x6a\xb1\x20\x4c\x8d\x19\x8f\xc9\x98\x34\xb8\x34\x97\x30\x09\x2d\x04\x5c\xf1\x98\xac\x74\x48\x7a\x66\xfa\x33\x98\x6e\x64\x3e\xf1\xdb\x01\xf9\xd9\x3e\x19\xd7\x5b\x1f\xca\x94\xd6\x3c\x72\x0f\x1e\xba\xc9\xb8\x37\x75\xa6\xba\x28\xbf\x03\xb8\x10\xec\x00\x9a\x1d\x7a\x09\x56\x2e\x85\xb5\x7a\x1c\xab\x8e\x00\xfd\xb2\x9e\xb9\xbd\xac\x02\x58\x54\x28\x5d\x21\xe8\x8c\x6a\xf9\xbd\xbb\xc3\x16\x38\xe1\x26\xde\x0c\x83\x11\xd9\xc9\x9d\x51\x2c\x85\xc3\xc9\x38\xf4\xf4\x57\x38\x21\x27\x3c\xaf\x0a\xf0\x76\x01\xa8\x0c\x93\x6b\xad\xac\xbe\xd0\x7c\x78\x66\x12\xb8\xc8\x9c\x9a\x94\xe9\xc1\xe9\x05\xd2\xa7\x83\xa7\x06\x57\x08\x16\x2d\x57\x73\x2e\xe8\x6f\xad\x09\x26\xed\x32\x7a\xe1\x69\x2d\xf2\x71\xcc\x38\xcb\xd2\x3a\x10\xab\x11\x29\x54\x49\x2b\x69\xd2\x99\xd0\x24\x07\x08\x4d\xcd\x66\xa7\x79\x62\x70\xf7\x23\x2e\x62\x53\xf8\x5a\x96\xb2\x7f\x20\x8a\xd2\x89\xf7\x58\xf9\x06\xa9\x45\x1a\xb4\xc8\xfe\xc6\x82\xb3\x54\x00\xfd\x6b\x4e\xf2\x1d\x25\x50\xbd\x69\xc8\xe9\x3d\x9e\xc9\x22\x86\xd4\xac\x8d\xe6\xcd\xc5\xfa\xfe\x5d\xcf\x54\x06\x29\x87\xce\xb2\xe8\x11\x7c\x8c\x4a\x6e\xea\x3a\xae\x65\xd1\xb9\x35\xc8\xe5\x3b\x30\xe9\xbc\x46\x3c\x47\x5d\x46\x6a\x60\x3f\x96\xfc\x9e\x7c\x02\x5e\x95\x45\xbc\x90\x9d\xc4\x41\xc0\x57\xa4\x8f\x17\x34\x99\x6c\xc0\xe4\xea\x42\xf5\xd2\xa0\xd6\xc2\x80\xe2\xd9\x5a\x43\x2e\xac\xe2\x10\x35\xff\x2c\x28\x00\x7c\x2d\x8a\x97\x7d\x09\x53\x77\x5d\x84\x3c\x46\x4b\x29\x46\xac\x85\xb8\x0e\xb7\x84\x8b\x66\x1e\xbf\x86\x01\xc2\x36\x54\xee\xba\xee\xb7\x6f\x3b\x11\x86\x25\xed\xeb\x91\xa8\xa3\x7b\xac\x3c\x0c\xbe\x90\xc3\xdb\x18\x10\xbd\x68\xf3\x7a\x27\xc3\x93\xe3\x38\xc2\xd1\xbc\x75\x52\x13\xce\x13\x82\x59\x9b\xf4\xda\xf8\xb8\x7a\x44\x0c\x36\x25\xb0\xee\x24\x01\x80\x56\xb7\x04\xb6\xa8\x5f\x21\xbe\xb3\x18\x80\xb5\x0d\x0f\x37\x48\x1c\x6e\xa0\x8a\x30\x67\xf9\xa1\x6c\x96\x90\xea\x5a\x59\x04\xf4\x03\xdb\x49\x12\xe5\x49\x50\xd5\x2f\x23\x42\x8f\x5a\x2f\xf1\x13\x61\x5a\x67\xb0\xe3\x70\xce\x8c\x67\x97\xcf\xea\x6b\xf9\x1c\xf8\xae\x9d\x3f\x0d\x92\xc6\xe2\x11\x83\x83\xcb\xcb\x87\x55\xd3\xaa\xd4\x6a\x46\x68\x97\xda\xf8\x74\x06\x42\xc4\xda\xc7\xf3\xae\x6c\x26\x5e\xfb\x4c\x9a\xbe\xc7\x10\x63\xb0\xb5\x6b\x2d\x70\xbf\x14\x99\xf6\x66\x63\x1d\x9a\xd2\x2b\x19\x91\x21\x6a\xa3\x0c\xf2\x12\x04\x6d\xb4\xa1\xf9\xbc\xe8\x5d\x52\x54\x2f\x70\xb7\x41\xc7\xa1\x2c\x75\x55\x77\x74\x3c\x83\x75\x72\xd9\xb9\xbd\xb0\x11\xb7\x65\x97\xad\x4f\xcf\x28\xc2\x1c\x6d\x7d\x4e\x25\x30\x24\x97\x43\x4a\xf0\xcf\x46\xc3\xa6\xd2\x58\xc0\x5c\x95\x82\x34\x53\x0b\x5b\xd4\x0a\xee\xc5\x30\x25\xd3\x00\x76\x35\xb9\x87\xab\x77\x64\x5c\x72\x10\x37\x75\x06\x1d\x59\xb3\x42\x63\x93\x6e\xa1\x43\x00\x88\x4a\xc2\x7d\x5b\x34\x88\xa9\x0f\x3a\xc6\x49\xab\x2d\x6b\x07\x4c\x13\xb2\x24\x8b\x24\x7b\x8b\xdd\xa9\x44\x4e\x34\xef\xc2\x49\x52\x99\x17\x86\x6c\x56\xe5\x6b\x84\x4d\x8a\x42\xa6\xdd\x9d\xd5\x09\x9e\x90\xb5\xdc\xd3\x17\xe6\x83\xa5\x54\x04\xaf\x40\xaa\x69\x96\x25\x8b\x6e\xa8\x4d\x61\xe8\x5d\x23\xc6\xd5\xaa\x81\x85\xc8\x58\x4b\xef\xa6\x32\xba\xd4\x66\x43\x94\x24\xca\x05\x55\x8b\xb1\x35\xfa\x75\x67\x5a\x77\xf6\xcb\x53\xfb\x61\x17\x8d\xfa\x04\xb9\xfe\x9c\x91\x11\xee\x29\x41\x4d\x01\x14\x3b\x85\x2e\xdb\xad\xb5\xe4\x46\xec\x9b\x65\x0b\xeb\xc0\x77\xba\x0d\x55\x77\xb1\xe9\xf0\x6c\x61\x85\x31\x9f\x3a\x58\x9b\xee\x0b\x5b\xad\x38\xb1\x86\xb5\xd4\xa1\xe7\x66\x82\x72\x61\x0b\x3b\x74\x09\x6a\x4b\xf1\xe7\x71\x86\x05\x4e\x12\x92\x50\x99\x6e\x6e\xdb\xfd\xd3\x77\x4b\x47\x7b\x6a\x0a\x90\x48\x5b\xce\xe7\x33\x4d\xf3\x14\xb1\x3c\x9d\x58\x29\x17\xcb\xc7\x10\xbb\xd0\x65\x5a\x1b\x08\x1e\x37\xc0\x52\xbe\xb7\x08\xd0\x28\x47\x2c\xc0\x25\xb6\xa6\x0a\x1c\xcd\x29\x79\x02\xd4\x44\xc1\x88\x94\x47\xe8\x8a\x2b\x72\x82\x2e\x71\x76\x0f\x82\x9a\xa9\x08\x38\x33\xd6\x71\x2c\x91\x96\x5a\x73\x46\xd5\xc1\x88\x59\x30\x63\xb7\x2a\xc7\x11\x67\x06\xd0\x32\x82\x85\xf5\x4d\x80\xb9\xd7\x21\x3b\x2a\x97\x97\x46\x65\xcb\x62\x0b\xfc\x3c\x0e\xa2\x57\xc7\x26\x3b\x60\x0d\x3a\xbe\xc5\xcf\x26\x5e\x1b\x2a\xe0\x9b\xaf\x97\x48\xee\x36\x20\xca\x16\x80\x31\x38\xae\x2e\x70\x84\x5b\x30\x01\x5f\xba\xca\x44\xa7\x7e\x4d\x8f\xc8\x11\xfa\x3e\xe1\x13\x79\x80\xa4\xc7\x3c\x76\x05\xfa\xe5\x81\x71\x50\xc1\xbf\x4d\x26\xcf\x37\x6e\xf5\x0b\xbe\x0f\x55\xdb\xa6\xf4\xb3\xc1\x30\x90\x7f\x3a\x39\x3e\x4e\x17\x87\x93\x3c\x7a\x24\x4a\xff\x05\x32\x45\xe3\x0a\x39\x00\x20\xdc\x04\x27\xb4\x6a\x75\xea\x50\x44\x9d\x28\xd2\x82\xd8\x49\x02\xb0\xd7\xfa\x4a\xf7\x75\x31\x1d\x72\x0d\x67\xcd\x45\xff\xec\x94\x45\xde\x76\xbc\x4a\x78\xb9\xaf\xa3\xad\x98\xba\x9f\x21\x4c\xef\x34\xc1\xb3\x8a\xca\xb2\x86\x92\x72\x9d\x52\x4b\x45\x7a\xee\x10\x6f\xa1\x4f\x59\x39\xca\xec\x2b\xe7\x8e\x04\xb7\xa2\x75\xb7\x1c\x8d\xd8\x40\xa2\x67\x62\xca\x79\x42\x4a\x19\x78\x27\x72\x2a\xe7\x3e\xa1\x0c\xec\xa5\xd0\xa8\x41\x33\x35\x49\xef\x56\x71\x74\x9a\x95\xf3\xdf\x58\x0d\x14\x27\x92\x1c\xe8\x86\x01\xd1\xca\x05\x12\xa2\x67\x81\xb3\x8c\x88\x11\xb3\xc8\x94\x80\xbf\xcc\xb9\x0d\x12\x69\x8b\x26\xef\x35\xca\xfd\xd2\x28\x07\x95\xd0\x72\xa8\x70\x9b\x82\xd2\x23\x8b\x42\x7e\xce\x3e\xe5\x55\xce\xd2\xd5\x0c\x60\xbc\xf0\x71\xcc\x89\x0c\x0c\xcf\xc8\xdb\x8f\x12\x3a\x25\xfa\xc6\x1c\x31\xbd\xf4\xa1\x91\xdc\x60\xfa\x3a\x88\x5f\xdd\x69\x24\xb8\x94\x36\x5a\xdc\xb4\xb3\x3c\xe7\x67\x8b\xf2\x61\x06\x98\xd8\x14\xee\xaf\x16\x12\x0b\x9e\xb9\x92\x62\xf6\x61\x73\x3d\xf7\xb6\xa6\x56\x16\x10\x2b\xd6\x62\x8d\x12\x62\xc7\xa7\x17\xe7\xbe\x6e\x4e\xa5\xeb\x7a\x0d\xb1\x10\xcc\xb9\xbd\x8a\x58\x7d\xc6\x41\x3d\xb1\x4a\x13\x4b\x2a\x8a\xad\xde\xac\x72\x8c\xea\x36\x48\x5d\x95\xad\x5f\x75\x67\x55\x68\x66\x55\x28\xf5\x8e\xb6\xa9\x85\x15\x46\x20\xe4\xbc\xb4\x57\x18\x84\x05\xfd\x96\x54\x38\xcd\xc2\x34\x41\x07\x55\x68\xa7\x69\x8e\x5a\x1b\xe3\x7e\x55\x08\xe5\x08\x9b\x08\x8c\xea\xe0\x6a\x5b\xb1\x9e\x97\xe6\xde\x22\x33\xef\x22\xf4\xf6\xf5\xf2\x6e\x93\x45\x11\x69\x26\xad\xbc\xe1\xaa\xfe\xb6\xd8\xaa\x27\xc4\xa3\x50\xb7\x6e\xe8\xb6\x89\x75\x1e\xad\x46\x10\x2c\x6d\x08\x01\xe4\x9f\x55\x72\x53\xd6\x30\x69\xfa\x31\x9b\x0c\xd6\x43\x8f\xfb\x1e\x5c\x35\xb6\x94\x51\xe4\x0e\x22\x15\x82\x3c\x11\x01\xb4\x63\xe3\x54\x58\xf9\xa8\xe2\x44\x10\x1c\x2f\x82\x15\xf1\x4e\x72\xd3\x33\x98\x74\x24\x4d\xb5\xd2\x09\xe2\x34\xe3\x87\x3c\x73\x72\x76\xe9\x2d\x00\xed\xa7\x53\x7d\x63\x05\x2e\x76\xfd\x05\x3b\x24\x9f\xa9\x54\x5a\x2f\x69\x88\x2f\x74\x8d\xc0\x2d\x0d\xa5\x7c\xe6\xc4\xde\x70\xa3\x0f\x83\xef\xaf\x6f\xef\x87\x67\xa3\x0f\x45\x44\xb9\x4b\x99\xf2\x20\x34\x0e\x53\x9c\xb3\x11\xf3\x41\xa0\x1e\x73\x15\xf6\x12\xe1\x38\x2e\x10\xaf\xad\xe2\x63\xe4\x8c\xa5\x1c\x39\x38\x15\x2b\xc3\x3f\x97\x34\xf3\x00\x79\x33\xfb\x7a\xb2\x96\xb8\x7b\x4a\x27\xc7\x64\xff\x2c\x49\xd3\xd8\xd1\x65\x13\xc2\x45\x2a\xa3\x1f\x12\xe5\xf0\xcc\x18\x79\x76\xf2\x3d\xdc\xce\xc7\xd8\x5c\xc2\xeb\x71\x3b\xb7\x21\x1b\x6c\xea\x47\xfa\x99\xc4\xb7\x2d\x52\xd5\x4e\xb2\x30\x3a\x45\xaf\x35\xee\x42\xce\xe8\x3a\x5a\xaa\x9f\xca\x83\xfe\xae\x3b\x5b\xba\x2e\x50\xa0\x0a\x44\x47\x80\x73\x54\x08\xa3\x88\x08\x85\x29\x43\x53\x38\xd8\x2c\x5a\x20\xc0\xe2\x20\xe0\x77\xfd\x0e\xa5\x94\x41\xb6\xfb\xb2\xa5\x7d\x28\xcf\x63\x9d\x52\xfe\xe7\x57\x0f\xf7\x25\x51\xf5\x87\xeb\x87\x72\x1d\xe9\xc1\x2f\x4b\x65\xd5\x4a\x0b\xcb\x02\x5c\x82\x29\x16\x99\x73\x16\xd8\xd2\xaf\x4c\xd3\x44\x3f\x11\xf5\x93\xe6\xcb\x9c\xed\x22\xac\xdc\xca\x59\xe0\x70\x22\xe3\x27\xd3\xf0\x1a\x64\x60\x87\xb2\x24\x77\xc0\x49\x72\xd0\x03\xb2\x3d\x84\x89\xec\x47\xa6\x62\xf2\x40\x37\x07\x2a\xa3\x0b\xd0\xd2\xfa\x12\x67\x7a\xb9\x0c\xbc\xa0\xc3\x24\x0c\x9a\xe3\x53\xf3\x71\x47\x84\xa6\x20\x4c\x58\xb7\x55\x2c\x25\x1a\xdc\x9c\x37\xac\xf5\x45\xd5\x26\xff\x65\x95\x77\x48\xbc\x7b\x60\xd7\x95\x1d\x82\x7c\xaf\xbd\x28\xea\x60\x67\xba\x5d\x3d\x07\xe3\x45\xbd\x29\xbb\x66\xf7\x01\xbd\xb2\x49\x9e\x2d\xe5\x71\xae\x00\xaa\x5c\x2f\xb5\xa9\x58\x86\x35\x51\x64\xc2\x01\xd9\xb8\xfa\x10\x39\xa5\x1e\xb4\x79\x10\x22\xa9\x70\x53\x40\xd2\x3a\x6b\x77\x86\x2e\x53\xcc\xa6\x0b\xbc\xcc\x4f\x86\xa2\x3d\xfa\x00\xe0\x29\xb8\x02\x65\x2e\xd8\xd2\x26\x03\x87\xd3\x0d\xa9\x6d\x3d\x44\x9a\x62\x7c\xce\x9e\x68\xb1\x59\x71\x86\xad\x52\x0c\x12\xbe\x43\x0e\x6f\x2a\x34\x75\x34\x62\x41\x04\x80\x34\x32\xb9\x3e\x23\x0e\xac\x1f\x2a\x40\x32\x00\x7a\x85\xac\x07\x7f\x33\x97\x76\xa0\x9a\x73\xac\xe6\x65\xb8\xfd\x5a\x3f\xf6\x74\xca\x39\x76\x99\x5d\x4e\xbd\xb7\x81\x55\xa1\xf1\x03\xda\x0b\x00\xb6\x6d\xc7\x60\xdf\x03\x8d\x1a\x07\xe5\x9b\x82\x6c\xe0\x98\x13\xc9\xbe\x52\x3e\x77\x8e\x26\xb6\x44\x00\xae\xda\x5b\xb5\xc8\x81\xa9\x6d\x79\xf9\x01\xdf\x01\xdc\xcd\xba\x52\x6d\x70\xac\x56\xda\x50\x9c\xd3\x0c\x28\x21\x0c\xee\x80\x4e\xdb\xb0\x69\x3e\x67\x24\xda\x04\x93\xe3\x06\x0b\x9c\x12\x45\xc4\xb2\xf8\x8e\x72\x71\x55\x88\x5d\x70\x3b\x68\xfb\x35\xbb\x68\x90\xe7\xab\x25\x0a\xbc\xea\x75\xb1\x0a\x63\xc3\xcf\x62\x2d\x38\x21\x3d\x8d\x9f\x2c\xd4\xfe\x9a\xb3\xb0\xfd\x14\xd3\xb0\xe1\x2b\x01\xa4\xca\xb6\x73\x7a\x1d\x6c\x89\xfb\x1a\x4a\x43\x29\xfe\x62\x4f\x40\x25\x56\x8f\xb2\x0d\x4d\x62\x15\x2f\xdd\x09\xef\x76\x21\xe3\x2e\x27\xb1\x72\xa8\x4a\xc1\xe8\x40\x25\x20\xef\x1b\x60\x85\x66\x44\x08\x10\x5a\x9a\x42\xce\x02\x3f\x8a\xc5\x0b\x2b\xac\x8d\x56\xb2\xaa\x16\x5b\xa9\x2c\xd7\x0a\x1e\xb7\xab\x6c\xf9\x5e\xa2\xd9\xb5\x44\xb3\x86\x6d\xcf\x50\x27\x11\x15\xe0\x0e\x5b\x04\xd5\x66\x5c\x97\x27\x08\xc9\x1c\xf6\x8a\xb4\x95\x14\xe1\xea\xa7\xcc\xff\xab\xcc\xc1\x1d\x51\x87\xa4\xda\x94\xa5\x76\x14\xf8\x47\xc0\x3d\x92\x84\xd2\x80\x0d\x54\x80\xd1\x9a\xb8\x32\x63\x82\x3e\xbf\x32\xde\x15\xc8\x16\x5d\xf0\x1c\x3d\x53\xa9\x75\xe1\x11\x83\xc0\x2b\x6f\xaa\x56\x1c\x99\x17\x0f\xe0\x2d\xc8\x2b\x97\xf9\x24\xa5\x0a\xe1\x60\x86\x25\x7b\xd9\x81\x3d\xcf\xfa\x03\x98\x71\x63\xe2\x72\x13\xe6\xc9\x8a\x43\xb3\x81\xf1\xa7\x68\x64\xdb\xdc\xe4\x20\x48\xf4\x65\xb3\x93\x03\x8d\x27\xd4\x30\x1b\xcf\x5c\x9f\x9e\x8c\x9a\xad\x0d\x16\x85\x11\xa0\x32\xa9\x54\x95\xbb\xc5\x62\x2f\xae\x48\x4d\x2e\x36\xa2\x53\x6e\x72\xf1\xfa\x2e\x92\x93\xdb\xca\xf6\x2c\x4b\x56\x73\x9f\xb4\x18\x67\x5d\x12\xa4\xe2\x2e\x12\x39\x94\x94\x6e\x5a\x25\xa5\x7d\x83\x89\x2a\x22\xac\x37\x8f\xd7\x5d\x47\x1d\x2c\x12\x5e\x42\x2a\x0a\xf2\xd7\xca\x20\x1b\xa4\xca\xf9\x19\x57\x90\xa4\x10\x41\x49\xe3\x5a\xe2\xdc\x88\x35\x4b\x20\xcb\x79\xe2\xb6\x31\xef\x3b\x85\x93\x0a\xce\x9f\x9b\x85\xb5\x68\xfd\xec\xa3\x86\x8c\xb2\x6c\x8b\x13\x57\x45\xcc\xc2\xff\xd4\xa2\x80\x80\xe0\xb1\x49\x06\x67\xc3\xa9\xec\x18\x91\xbe\xf2\x5c\xd8\x4b\x77\x87\xaa\x5d\x8d\x3b\x77\x0e\xe0\xf7\x32\xb2\xe5\xc6\x2e\x02\xd5\xa9\xf1\x15\x37\xe2\x26\x45\x17\x01\xa5\x71\x67\xd8\x92\xd5\x74\x6f\xdd\xf8\x01\xb8\x1e\xed\xd0\xb1\x09\xc3\xf0\x88\xc7\x95\x2d\x29\x4d\xd8\x16\xb3\x7e\x81\x49\xaf\x5b\x28\x33\x70\x85\x09\x1b\x3e\x49\x43\xbb\x01\x54\xc8\xb4\x51\x67\x15\x3e\xec\x45\xbb\x9c\xc5\x44\x30\x82\xd5\xfc\xf5\x82\xd6\x4f\xb7\x35\x4e\xbf\x5a\x00\xfb\xe9\x4e\xaa\x24\x57\x82\xc2\xd7\x8c\x07\x5f\x23\xb8\xba\xa8\x99\x59\x53\x1c\x9b\xaa\xd3\x17\x98\x1e\xeb\x50\xe9\x56\x71\xed\xcd\xca\xdc\xcb\x44\xf8\x37\x58\x7d\x6a\xb1\xfd\xfa\xb0\x87\x95\x46\x57\x2c\xc9\x17\x11\x4a\xff\xf2\xd1\xdd\xcb\x6a\x9a\xe6\x41\xc0\x37\x14\x96\x55\x98\x32\xcb\xbd\x96\xc5\x78\x6b\x89\x32\xc5\x4d\x61\xdd\x7b\x9f\x30\xf0\xc5\xe7\x0b\xf4\xd1\xe3\x7d\xf4\x78\x1f\x3d\xbe\x56\xf4\xf8\x32\x33\xa3\xf7\x7c\x41\x8d\xb7\x52\x65\x0e\xb3\x8e\x2b\xb4\xb5\xcd\xa3\xba\x9d\xa5\x2e\x0c\x89\xb1\xbf\xd8\x1f\x1a\xa3\x62\x6a\x9f\x55\x67\x1b\x5a\x0d\xd9\xa2\x6a\x7c\xc7\x22\x4e\x2c\x7c\x96\x8d\x59\x2d\x5b\x79\x96\x19\x24\x47\xec\x07\xfe\x4c\x9e\x88\x38\x40\x58\xa1\x94\x6b\x25\x3d\x88\x42\x01\x82\x2b\x21\x31\x9b\x68\x03\x8c\xae\x70\x4a\x62\x53\x67\x2b\x88\x6c\xb3\x66\x51\xeb\xd0\x6c\x42\x89\x04\xc0\x43\xb3\x0d\x2e\x3a\x61\xc4\x4c\xb4\x99\x89\x70\x82\x3b\x99\xba\x89\x01\x5d\xff\xc1\xbb\x5b\xff\x70\x84\xee\xf5\x3d\x40\x65\x79\xbc\x01\x68\x54\xdb\xd8\x46\x6c\x26\x78\x9e\x79\x4b\x15\x9f\x98\x82\x8b\x06\x70\xba\xee\x6e\x85\xc1\x38\x5f\x6b\x84\x63\xad\xf1\x2e\x27\x9c\x37\x09\x44\xdc\x08\x79\x25\x24\x20\xcd\x25\x7c\x74\x95\x8d\x76\x36\x5e\xd2\x00\x6f\x62\x19\x7e\xf4\x0b\xb9\x70\xcf\x88\x04\xdb\x8b\xb7\x6d\x97\xd2\x5f\xcb\x29\xd6\x8d\xe3\x5c\x66\x79\xf4\xde\x01\x67\x41\x6f\xce\xde\x2e\x3a\xb7\x91\x55\x26\xb7\xce\xf2\xe3\x17\xb3\x49\x76\x0e\xa0\x6c\xe3\x17\x37\xb9\xc8\x38\x48\x3c\xc9\xc2\x65\x9b\x5b\x80\xaa\x8c\x67\xb9\x89\x1e\xa3\x61\x30\x51\x23\x65\x53\xa9\x2e\xb1\x8a\xe6\x9a\xbf\x17\x40\x4d\x3b\x8a\xaa\x2b\xb8\xf2\xcb\xda\x29\x1b\x66\x70\x1a\xf6\xde\x62\xb8\xef\x60\xb7\x36\xf7\xab\x8b\xb0\x76\x37\x76\xaa\xfb\x2b\xd5\x92\x0f\xac\x8f\xee\x13\xfb\x44\x4f\x74\x15\x15\xad\x1a\x7f\x37\xda\x2a\x17\x0a\xda\x79\xbc\xde\x16\xc8\x17\x67\x16\x67\xa8\x78\xd1\xd6\x05\x6c\x71\xb2\x6f\x58\xe8\xdb\x7a\x4f\xa0\x72\x7c\x61\xd7\x4c\x71\xa6\x85\x75\xc5\xf5\x2d\x29\x66\x46\x5e\x34\xf5\x27\x11\x46\xb9\xa0\xee\xec\x57\x52\x59\xdb\xa9\x03\xec\x80\xc7\x61\x21\x98\x08\x07\x35\xb2\x8c\x5b\x1d\x47\x2a\xc7\x3e\xfc\x0f\x68\xc2\x95\xde\x35\x69\xbb\xce\x7d\x2d\x9c\x18\xd5\xb0\xa7\x2b\x09\x7b\x8b\x5d\xc6\x4d\xb0\x6c\x9d\x4e\x1a\x65\xb3\x00\xd3\xad\xd9\x16\xdb\x05\xb2\xbd\xf1\xcb\x6e\xb0\xf3\x8d\x9f\x3a\xd9\x67\x93\x6f\x97\x60\xce\xb4\x7e\xbe\x4a\x80\x2d\x85\x3a\xdb\x70\x53\x2b\x3d\x85\x68\x7b\xd6\x4e\x06\xa0\x99\x14\xdc\xe1\xd8\x4a\x53\xff\xe9\xff\x32\x25\x7e\xcc\xd2\xfc\x27\xe2\x62\xc4\xcc\xef\x07\x1e\x5e\x5f\xbf\x50\xe0\x56\xe2\x94\x14\xc8\x7e\xa2\x8c\x01\x06\x48\x08\x16\xc3\xc9\x60\x94\x7a\x74\x71\x3d\x86\xc7\x7c\x42\x04\x23\x7a\x68\x2e\x67\xda\x33\xb3\x14\x33\x3c\x03\x44\xd4\x03\x88\x3f\x03\x71\xb5\x10\xf9\x0d\x49\x9b\x32\x6d\xc0\xad\x34\xb3\xb4\x29\x97\x45\xb5\x49\xe8\xd3\x88\xb2\x16\x90\xb1\x08\x62\x68\xa6\xfe\x5b\xdb\xff\x66\x12\xfb\xfd\xe0\xee\xc7\xf1\xed\xf0\xee\xfa\xe1\xf6\xb4\x24\xb6\x9f\x5e\x3c\xdc\xdd\x0f\x6f\x1b\x9f\x15\xe9\x8a\x7f\x7d\x18\x3e\xb4\x3c\x72\x0d\x5c\x0c\xbe\x1f\x96\x4a\xb7\xfe\xf5\x61\x70\x71\x7e\xff\xcb\xf8\xfa\xe3\xf8\x6e\x78\xfb\xd3\xf9\xe9\x70\x7c\x77\x33\x3c\x3d\xff\x78\x7e\x3a\xd0\x5f\x86\xef\xde\x5c\x3c\x7c\x3a\xbf\x1a\xbb\xe0\xde\xf0\xd1\xcf\xd7\xb7\x3f\x7e\xbc\xb8\xfe\x79\x1c\x74\x79\x7d\xf5\xf1\xfc\x53\xd3\x2c\x06\x77\x77\xe7\x9f\xae\x2e\x87\x57\xcb\x4b\xc4\x36\xaf\x46\x6b\xf5\xc9\xe0\x22\x0b\x8c\x33\x81\x98\x34\x59\x58\xd2\xa6\xbf\x81\x8b\xe0\xc6\xd0\xe3\xe1\x81\xfb\xcb\x14\x74\x3d\xd4\x2c\xd0\x79\x9f\x0a\xee\x31\x62\xde\x3d\xe8\x2f\x55\x28\xe8\x6d\xb3\x4f\x4b\xa3\x3d\x41\x03\x38\x2b\xa0\x30\x94\x3a\x05\xcc\x09\x3f\x52\xe7\x50\x46\xa6\x58\x7f\x4a\xc1\xb7\x8c\x0e\x51\x75\xc3\xcb\x0d\xda\x39\xc1\x10\xac\x77\x2c\x5e\x76\x1a\x64\x35\xb1\x15\x28\xe5\x04\x39\x0e\x4d\x8c\xda\x6e\x20\x33\x17\x0c\xa7\x34\x32\x3f\x54\x50\x23\x51\x81\x90\x50\x6d\xb1\x44\x60\xe5\x96\xe7\x04\xfd\xf8\x97\x62\x50\xe0\x29\xb0\x06\x82\xbc\x56\x08\xcc\x3e\x10\xb9\x59\xd5\x55\xe4\x59\xea\xc9\x1d\x73\x6b\xc2\x85\x73\x6b\xeb\xc5\x82\x5b\x27\x67\x01\x4a\x52\xc9\xc7\xa3\x8f\xb7\x99\x51\x85\xc6\x4f\xd0\x1d\x20\x34\xc8\x42\x75\xd7\xbb\x98\x25\xf9\x8c\x32\x44\xd3\x2c\x21\x45\xa5\xe1\x09\x99\xe3\x27\xca\x1d\xea\xbe\x29\x4e\x00\xeb\x68\x45\x2b\x74\x88\x5a\x0f\xca\x09\x1a\xc4\xb1\x2c\x33\xb8\x12\xe5\x38\x96\x79\x58\x1e\x76\x08\x6c\xc4\x62\xcf\x36\x2b\x74\x54\x1c\x39\x58\xb1\xdd\x63\x50\xd4\xd9\x61\xf9\xee\xdd\x0a\x4f\x55\x3e\x8e\x1d\x29\x8f\x37\x12\x06\xee\xb1\x7c\x74\xac\x79\x95\x40\xe0\xd0\x40\xb6\xeb\xd1\xc2\x82\x74\xed\xd4\xaf\xec\x18\x0e\xda\x66\x7d\xb6\x82\xd9\xae\xe8\xd2\xcd\x38\xa9\x54\x1c\xea\xdc\x5f\xa9\x62\x51\x63\x67\x3b\xf5\xaa\x34\x4b\x63\x70\x24\xc7\x9e\xfe\xd7\x98\xc7\x0d\x7c\x7a\xed\xbf\x5c\x2a\xb2\x8d\x83\x75\x5b\xd7\xd7\x52\xcb\xd3\xb4\xfe\x96\xa5\x74\xb8\x23\x54\x9a\xee\xc2\x20\xe0\xc5\xd3\x08\xdc\x6a\x98\x32\x5b\x45\x84\x78\xbf\x8f\xab\x9b\xab\xcf\xb1\xaf\x6c\x85\x27\xfc\xa9\xa4\x5c\xa6\x44\x4a\xdc\x82\x59\x11\x98\xc4\xb6\x61\x0c\xfe\x84\xda\x0f\x3b\xd2\x93\x3b\x93\xf7\xfa\xab\x65\x46\x9f\xdb\x50\x33\x76\x13\xd5\x02\x6b\xec\xe2\x59\xd1\xb5\xc9\x6a\xd3\xfc\xe5\xa0\x08\x59\xe1\x22\x88\xe4\x69\x73\xb3\x74\x34\xab\x55\x17\xac\xb1\x38\x4c\xe8\x2a\x5b\x3f\xd2\x25\x68\x7d\x63\x20\x5f\xeb\xbf\xc0\xe5\xf5\x59\x83\xea\x4a\x7e\xc5\xb0\x70\xae\xa9\x11\x0f\x36\xb7\xd0\x96\x7a\x80\xb0\x49\x26\x2c\xa4\x29\x99\x47\x73\xe3\xcd\xd1\x57\xc6\xc1\x88\x3d\x07\x1b\x52\x0a\xb7\x1d\x84\x2d\x01\x08\xe2\x67\x7d\xdc\xe8\x53\x29\x88\x19\x44\x46\x0a\x11\xb5\x01\x21\x18\xc7\x5b\x51\xf5\x66\x05\x81\x07\xfb\xb5\x05\xa9\x6f\x50\xe2\xac\xa1\x0a\x7f\x53\xa1\x33\x3f\xb7\xa0\xbe\xd8\x16\x9a\x72\xd7\x21\x04\x25\xce\x9a\x46\xb0\x83\x0a\x67\xaf\x8a\x4a\xec\x93\x22\x4d\x0e\x6d\x3a\xb1\x30\x05\x7a\xba\x6e\xb5\xff\xcd\xcd\xe8\xdf\x8c\xdf\x21\x6f\xc1\xb5\x08\x5a\xf3\xc0\xc4\xe8\x50\xcb\xac\x2e\xdf\xda\x06\x3c\x48\x74\x68\xc0\xce\xbe\x82\x78\xc6\xc1\xcd\xf9\x57\x07\xe8\xab\x30\xa7\xeb\xab\x8d\x0e\xa0\x1d\xb7\xad\x72\x06\xda\x54\x29\xb0\xbf\x7c\xec\x60\xaf\x2a\x27\xd1\xee\x99\x3d\x88\xa8\xed\x1c\xea\x2f\x4b\xdf\x80\x13\x18\xaa\x76\x19\x3f\xa9\x0f\x2b\xb6\x2e\x20\x23\xe3\x52\xd9\xb0\x76\xf1\x88\x4d\x16\x55\x27\xcf\x81\xf7\xf2\x74\x3e\xa5\x5b\x57\xa2\xd2\xed\xd5\x93\x80\x77\x1c\xee\xba\xfc\x3e\x58\x91\x56\x3c\x30\x91\xcd\x7c\x1a\x70\xb1\xb6\x68\x80\x3e\x4e\xbc\x69\x56\x25\x7b\x99\x5b\xcc\xc6\x4d\x59\x25\xff\xbc\x37\x72\xeb\x10\x5c\x3d\x68\x5a\x11\x1b\x57\xdf\x22\x5c\xf7\x54\xf6\xb2\x54\xb6\x8b\xbc\x82\xf2\xe0\xd6\xbf\x40\x4f\x8d\x1c\x17\x34\xe3\x0c\xae\x5a\x99\xf0\x0c\xbe\x54\xae\x6c\x75\x9d\xcf\x35\x7d\xbe\xc1\x9a\xac\x76\xfa\xde\x99\xc0\x01\xe3\x76\xad\x8f\xb5\x3a\xd4\x81\xb2\xb5\x53\x38\x35\x39\x84\x8a\xa6\xe4\x00\x71\x96\x2c\x82\x60\x07\x7b\x5e\x81\xdc\x4c\x2c\xd0\x9c\x50\xe1\x3a\xb1\x30\x73\x6b\x25\x9d\xaf\x29\x8d\xb7\xd1\xc8\x16\x91\x26\x57\x83\xcb\xe1\xd9\x78\x78\x75\x7f\x7e\xff\x4b\x03\x84\x60\xf9\xb1\x43\x11\x0c\x5e\xb8\xfb\xe5\xee\x7e\x78\x39\xfe\x34\xbc\x1a\xde\x0e\xee\x57\x20\x0c\x2e\xeb\xac\x0d\xbd\x2e\x97\x4d\xea\xdb\x3a\x08\x76\xce\xcc\xdb\xd0\x7b\x1d\x67\x30\xe8\x84\x92\x16\xac\x41\x93\x60\xcf\x62\x22\x50\x4c\x9e\x48\xc2\xb3\xc2\xac\xda\xb8\x60\x01\x08\x61\x43\xfb\xcb\x80\x08\xa1\xcd\xea\x1a\x9f\x20\x53\xa2\x2a\xa8\xd2\xe9\x1b\x04\x91\x0f\x0b\xc2\xbe\x52\x88\x7c\xce\x12\x1a\x51\x15\x24\xe0\x71\x61\xdd\x2b\xc6\x7d\x08\x51\xa0\x2b\x88\x6b\x67\xd1\x28\x3b\xd7\xf9\x43\x4f\x7a\x5d\xdb\xf7\x27\xca\x83\x62\xad\xac\x7b\xb2\x03\xc5\xbe\xc5\x69\x5c\xc3\xec\xda\x60\x74\x2f\x61\x1e\xa8\x67\xc2\xd8\x24\xba\x16\x3c\xaf\xe6\x41\xae\xbe\x0d\x97\xc5\xc9\x94\xce\xf5\xf2\x40\x99\x6e\x94\xfa\xc6\xe1\x2e\xa5\x7a\x80\x3b\xc0\xb7\xb0\x31\xe2\x6b\x06\x2c\xd4\xca\x5c\x30\x13\xdb\x89\x91\x20\x29\x57\x5a\x01\x33\x11\x01\x07\x5a\xa8\xa2\x38\xa1\xbf\x01\x12\x94\x20\x47\x41\x04\x05\x24\xda\xc5\x61\xc4\xa5\x45\x69\x38\x1a\xb1\xb3\xe1\xcd\xed\xf0\x54\x33\xa4\x23\xf4\x20\x01\xe4\xa9\x34\xf5\x33\x4b\xde\x46\x1c\x0b\x23\x19\x28\x93\x8a\xe0\xb6\x60\x30\x22\x04\x17\xdd\xf9\x83\xef\x6f\x08\xdf\x35\x93\x37\x3c\x2b\xd9\xa6\x9c\x01\xe0\xaa\xb5\x98\x6b\x10\x9b\xbf\xf3\xd4\xa7\x5b\xfc\x5c\x5a\x91\x10\xe4\x02\x24\x91\xf2\xaa\xbf\xe0\x6a\x03\x86\x63\xf7\xf9\x95\xfa\xbc\x81\x6f\x97\xcd\xf3\x1e\x42\xec\xa4\x2a\x00\x21\x0d\x66\xa4\x2f\xd6\x51\x99\x67\xab\xa8\x28\xde\x02\x10\xa3\x42\xfa\x13\x32\xc3\x0c\x89\x9c\xb1\x0a\x42\x68\x68\x69\xab\x07\xcd\xac\x7b\x54\xf5\x9a\xe1\x94\xe7\x0c\x94\x06\x08\x63\x6d\x18\x8c\xcc\x08\x53\x2b\x06\xf3\x56\x70\x27\x95\xa1\xee\x2f\xe2\x49\xc3\x40\xdb\x40\x4f\x9a\xfc\x49\x50\x31\x76\xbd\x6b\xd9\x05\xe5\x95\x9c\x4a\xfa\x50\xf9\xfb\xb9\x59\xcb\xc6\xf2\x71\xeb\xee\xee\xb1\x7c\x5c\xdd\x55\x4c\xa2\xc7\x75\x2f\x9b\x6a\x06\x64\x62\x0b\xee\xd6\x8c\x7d\x0b\xfd\xd4\x56\x94\x80\x3a\xcb\xd1\x23\xfa\xe1\xfe\xf2\x02\x4d\xa9\x96\x7b\xf5\xb5\x72\x85\xb5\x8c\xfd\x20\x12\x5f\xc4\xde\xc8\x20\xb9\x48\xfc\xdd\x0b\x1b\xef\x44\xa9\x40\x4a\xd0\x37\x1a\x9e\x11\x67\xec\x15\x16\xd3\xae\x52\x51\x42\x60\x16\xf3\xd4\xcc\xe3\x58\xe6\xd3\x29\xfd\x7c\xa4\xb0\xf8\xa6\x65\x3d\x4c\x54\xc5\xf8\x6f\x7c\x32\xd6\x23\xda\xf2\x22\x6e\x6a\x0e\xd9\x3a\xb0\x7e\xd9\xec\xcc\xce\xcc\xbb\xff\x97\x4f\x20\xa7\x3c\x13\x1c\x70\xf6\xc0\x3b\x67\x23\x15\xec\x2b\x8e\x92\x8e\x90\x4b\x54\x2a\x41\x89\x44\x5c\x08\x62\x53\xd1\x4d\x49\xc4\x0c\x0b\x45\xc1\x5a\xeb\xa0\x48\x4a\x00\xe9\xc5\x16\x85\x95\x8a\xe7\xb8\x00\x23\x9e\x10\x02\x0e\x9e\x8c\x26\xeb\x29\xbd\xa7\x25\xdf\x64\xe5\x04\xda\xc8\x53\x8b\x4e\x09\x06\x99\x95\x22\xd6\xf0\x89\x30\xb5\x13\xfd\x04\x9a\x68\x48\x8e\xef\xe6\x65\x30\x95\x09\xcf\xcf\x8a\xcb\xcd\x57\xc8\x0f\xa2\x9a\x94\xc0\x70\xcf\xdb\x84\x24\xeb\x52\x6f\x73\xf4\x3f\x75\xf6\x1d\xc3\xab\xf5\x75\x59\x11\x1a\x6f\x57\xbb\xa8\x50\x5c\x84\xb5\x3a\x74\xf7\x0d\xe1\x72\x24\x31\x56\x8c\x00\xa6\xc1\x2a\xa7\xd5\x3d\x37\x7d\x6a\xda\xaa\x74\xb9\x72\xcb\x37\xc0\x86\x29\x35\xf3\x89\x40\xea\xe4\x2e\x02\xd1\xd7\x49\x91\x87\x81\x3c\x88\x04\x42\xa8\x97\x5a\xb1\x4c\x75\x64\xcd\xf9\xbc\x64\x87\x3b\xc8\xe8\x66\x30\x5a\x68\x24\x99\x20\x50\xaf\xff\x04\xdd\x24\x44\x4b\x5e\xb9\x96\xbe\xf2\x24\x71\x38\x5a\xcb\xa5\xc3\xb5\xb0\xdf\x5e\x7c\x5e\x81\xee\xb1\x64\x62\x0e\x47\x6e\xf9\xcc\x82\x35\xd8\x3d\xb0\x41\xb0\xbe\x60\x42\x06\x43\x62\x59\x8b\x04\x0e\xbf\x30\x71\xb3\x60\x4a\xc2\xa5\x8b\x8c\xfe\xa6\xd9\xaf\x20\x72\xce\x5b\x93\x09\xc3\xd9\xbe\xcc\x1c\xdc\x52\xbe\xe0\x24\xdc\x7d\xd8\x16\x57\xdd\x41\xae\xa9\xdc\x81\x25\x11\x67\xd9\x14\x7d\x01\x00\x1f\xfd\x61\x51\x4d\xed\xdd\x6a\x87\x06\xb7\x64\x61\x6a\x0b\x11\xc6\x0a\xd7\x45\xa1\xcc\x2c\x8c\xef\xd5\x7f\x5e\x18\x90\x8b\x94\x00\xaa\x64\x51\x2c\x0b\xe9\xbb\x76\x3d\x2e\x6b\x13\x47\x8a\x26\xf4\x80\x9b\x59\x9b\xc5\xfe\x07\x91\xd7\x86\x05\xc9\x12\x36\x9a\xdd\x62\x33\xe5\x46\x75\xac\x9d\x81\x6e\xeb\x02\x03\x89\xb6\x10\x3b\x5e\xca\x13\x56\xa2\x96\xd2\x04\x7a\xb4\xad\xf5\xd1\xb6\x6c\x21\x08\x4f\x7b\x80\x8d\xa7\x04\x24\xc3\x17\xce\xae\xea\x25\x6f\x0d\xd4\xab\xb2\x94\x4a\xbb\xd3\x29\x25\xa9\xf4\x85\x3e\xf7\x67\x5b\x7a\xcb\xf4\x64\x16\x63\x48\xf2\xdc\x26\x62\xa6\x34\x7f\x63\xe9\x87\x36\x49\x8c\x4c\x46\xbf\xc1\x02\xb6\x6b\xe7\xbd\x1c\x19\x16\x84\xa9\x11\xbb\xd5\xa3\x30\x5f\x14\x51\x13\x45\xa1\x7f\x52\x94\xc5\x9c\x22\x6c\xbf\x82\x45\x6f\x0b\x5a\x93\x63\xf3\x12\xa8\x91\x2f\x98\x78\xfe\xbd\x79\xc7\xe0\x00\x58\x1c\x1c\x3d\x55\x3a\x2d\x54\x6e\x2d\xec\x45\x73\x0a\x69\xf8\x31\x91\xf6\xf2\xa0\xca\xe2\x2c\x78\x51\x39\x27\x0e\x91\x18\x3e\xf3\xfc\xab\x89\xb9\x3a\xa5\x9e\x39\x63\x9a\x1c\xb1\xa0\x8f\x25\x00\x96\x46\xb1\xde\x50\xec\x87\x7d\xa6\xb1\x77\x52\xc1\x3f\xcd\x0e\x71\x41\x67\x94\x05\x35\x6e\xec\xf4\x52\x9c\x81\x29\xd6\x9c\x41\x3e\xf5\xf7\xcf\xbd\xcd\x08\x38\x82\x11\xff\xf7\x7f\xfd\xcf\x11\x6d\xf3\x54\xc8\xb1\x5d\x81\x7d\xd8\xc9\xf5\xb6\x25\xdc\xf9\x00\x59\xa3\x05\xb1\x21\xd0\x3f\x65\x29\xcb\xa1\xf8\xd5\x5e\x6e\x9a\x68\xb8\x9a\x1b\xd7\x6c\x99\xdc\xc1\x8f\x21\xf2\xe5\xb7\x6c\xc0\xe2\x0a\xe7\x7d\xe1\xa1\x0d\x02\x64\x5d\xdd\x04\x13\xd8\xa8\xdb\xaf\x5c\x28\x15\x06\x15\x00\xdc\x6d\x13\x48\x38\xc7\xf2\xe5\xa2\x45\x1a\x8b\xd1\x18\x03\x6f\x78\x47\xae\x8a\x1b\x31\x83\x34\x09\x88\x7a\x57\x72\x49\x84\x39\xd0\x1e\x09\xc9\x12\x4f\x08\xdf\x07\x61\x83\x2b\xdc\x5f\x24\xc5\x74\xad\x10\x77\xfd\x7e\x33\xb8\x60\xc9\xfe\x8d\x67\x44\x8c\xe3\xbc\x14\xcf\xbc\xaa\xed\x1b\xfd\xd1\x59\xae\x16\xab\xdb\x97\x09\x8e\x1e\xd7\x01\x74\xd4\xef\xb7\x34\xbb\x5a\x30\x0c\xa2\x4e\xca\xc2\x61\x0b\x5c\x22\xa9\xc0\x25\xda\x30\xc8\x92\xd6\x0e\x17\x0d\x83\x82\xe3\x81\x70\x6f\x6f\x22\x03\xea\x0c\x23\x47\x93\xbc\xb0\x72\x78\x98\xfc\xf8\x68\xc4\x3e\x9a\x3a\x13\xa0\x78\x98\x01\x44\x90\x83\x42\x3e\x67\x5c\x92\x52\x52\x54\x03\xf4\xbd\x4d\x6a\xb4\xc3\x68\x96\x49\x2b\x05\xdf\xb7\x12\x49\xdf\x1c\xf8\xb2\xbe\xe1\xf5\x29\x37\x53\xe0\x56\x52\x4f\x44\x33\xaa\x69\x67\xdc\x78\xd2\xd6\x9f\x7a\xd7\xca\x29\x45\x98\x11\x40\x20\xa9\x64\x71\x80\xfc\xf4\x2a\x04\x91\x90\x27\x02\x16\x5e\x18\x63\x58\xe0\xa0\x6c\x6a\x6a\x61\x27\xab\x0e\x50\x91\x91\x08\x6c\x01\xc5\xd5\x11\x94\xf3\xb6\x9a\x68\xb1\x9c\x91\xb2\x75\xf2\x54\x53\xac\xc4\x1a\x52\xe8\x20\x2c\xf4\xb0\x20\x0a\x91\xcf\x8a\xd8\x3a\x85\xf7\x2e\xbd\xad\x1e\x11\x8f\x9a\x33\x74\xda\x45\xa4\xdd\x53\x45\x6d\x22\x36\xa9\xd9\xe5\xef\xc5\xee\xde\xb7\xf9\x6c\x73\xcc\x62\x9b\xa4\x69\x65\x69\x2d\x53\xc0\xec\x8c\x1d\xc8\x87\xaf\xdb\x54\xc3\x00\x21\xdb\xb4\x69\xa0\xbc\xe1\x22\x73\x7a\x91\x96\xcc\xc1\xe3\xcf\x85\x16\x50\x73\xa6\x68\xa2\x89\xc3\x8e\x41\x6b\xcd\x39\xf3\x18\x75\x10\x6c\xdd\x06\x83\x46\xa5\xa4\x6c\x36\xb6\x2b\xe9\xf2\x0d\xbb\x5d\x0c\x65\x9a\xba\x34\x4d\x99\x1f\xbf\x77\x0d\x2d\xb7\xf3\x1a\xb2\x06\x88\x2a\x97\xe9\x08\x82\x35\xe3\x6e\x32\x16\x5b\xcc\x25\x48\x8e\x69\x6c\x96\x82\x9a\x72\xb8\x30\xd1\x75\x8c\x14\x20\xd6\xd5\xa1\x05\x8a\x2b\x44\xda\xec\x45\x93\x93\x04\xc1\xe3\xaa\x25\x3d\x53\xb6\xa6\x65\x9e\x33\x2f\xa2\xd9\x7a\x47\x3e\xf9\xbc\x92\xe1\x89\x5d\x77\x36\x42\x1e\x27\xc9\x04\x47\x8f\x5e\xd9\xf0\x2a\x37\x17\x0e\x2f\x5e\x0b\xa8\x50\x10\xcb\x10\x97\x1e\x68\x04\xd2\x4d\xe8\xc0\x32\xe0\x32\x76\xd8\x45\xe7\x66\xd5\x2c\x3a\x96\x41\x13\x32\xa3\x37\xe1\xf6\x31\xc9\x12\xbe\x48\x5b\xee\xb3\x6a\x56\xdb\x36\xc1\x23\x6d\x49\x75\x3b\xbd\xca\x2a\x4c\x6f\xed\xcb\xac\x96\x22\xb3\x03\xa8\xa3\x35\xb8\xe4\xa7\x84\x4f\xc0\xca\x67\xb5\x6c\x97\xf6\x11\x64\x1f\x54\xcf\xf3\xba\xc9\x28\xd5\x13\x49\x65\x96\xe0\xc5\xb2\x1e\x4c\x1a\xc4\xcb\xee\x9b\x49\x9b\x5f\x6d\x04\xeb\x1e\x40\xdc\xf8\xf9\x4b\x80\xd7\x5e\x38\x49\xc0\xbc\x6b\xf8\x57\xc5\x98\x64\xf2\xcf\x8e\x8c\xdf\x54\xf1\x11\x53\x78\xe6\x36\xd7\x0a\x97\xfc\x99\x11\x21\xe7\x34\x2b\x15\xca\xdb\x3a\x62\xd9\x52\xb4\xfd\x8f\x89\xcf\x5d\x83\x77\xf2\xec\xd0\x80\x66\x68\xfa\x90\x19\x8e\x0a\xe3\x5f\x94\x60\x29\xe9\x74\x11\x60\x5d\xf8\xe0\x4f\xc8\x28\x2a\x6b\xcb\x41\x6d\xaa\x26\x46\x63\xc6\xb7\x9b\x64\xef\xed\x13\xdd\x1e\xca\xc7\x8f\xc6\x21\xa8\x98\xbe\x4f\xea\xc0\x26\xee\xa6\xb6\x00\x27\xad\x20\xa4\x26\xab\x7d\xb3\xe4\xec\xa5\x78\x34\xed\x66\x84\x42\x98\xb4\xc3\xb6\x8a\x8c\xc7\xa0\x08\xf1\x59\x54\x29\xbb\x0f\x36\x5f\x2b\x4e\xce\xfc\xa9\x89\xd3\xe3\x57\x40\x9a\x7f\xf1\xf1\x01\x92\x5b\xe1\x3e\x75\xa1\x8b\x33\x92\x90\x9d\x04\x01\x6f\x40\x24\x55\x0f\x7b\x40\x1e\x4b\x49\xa3\xc0\x97\x5f\x6d\x5c\xd8\x20\x36\xb9\x05\x3d\xa6\x79\xe8\x3f\x9b\x81\xda\xf0\xe4\xa6\x5d\x04\xfb\x17\xac\x72\x57\xdd\xa5\x09\x86\xce\xb4\x60\x49\xae\xe8\xa6\x44\x57\x45\xa7\x5e\x5e\xd9\x47\x52\x7b\xe3\x28\xde\xda\xb8\x3e\x91\x2e\x11\x07\x2b\x0f\xc0\x46\x1c\xa8\xce\xa7\xbb\xd1\x85\xf5\x13\x2a\x8e\x66\x44\x99\x9a\xe4\xbe\xf0\xfa\x7b\xa2\x89\x9d\xe5\x20\xec\x68\xf5\x9b\x0f\xf9\x7a\xa7\xf6\x8e\x28\xe9\xae\x84\x1a\xb2\x9f\xdd\x9c\x3d\xdc\x82\xfd\x38\x96\x46\x70\xfd\xe2\xe5\x96\xad\xf3\xf6\xed\xc8\x6c\xf6\xfa\xef\x48\xa0\x32\x73\x8c\xed\x17\x3e\x53\xbd\x84\xd1\x84\x4b\xb8\x76\x66\x8d\xde\x9e\xeb\x55\x49\xfb\x4b\x17\xbd\xd6\xa7\xf1\xea\xa8\x0a\xea\xee\xe5\xc1\xf5\xe4\x41\x87\xfb\xb8\x87\x97\x7f\xdb\x31\xd8\xcf\xfb\x67\x0f\x84\xc3\xda\x95\xb8\x3b\x11\xf1\x1d\x91\xc9\x5e\x48\x8a\xb5\xad\x78\x2d\x79\xf1\xd0\x01\xef\x14\x30\x36\xfb\xbb\x45\xfb\x71\x92\x6f\xad\x1b\xe8\xe5\x2e\xd8\xd5\xf4\xb2\x13\xfa\x00\x0c\x4a\x0c\xa9\xba\xb9\x2d\x6a\x01\x87\x37\x08\x19\xab\xf9\x1e\x56\x04\xe3\xd9\xe1\x75\x0a\xc3\xab\x2d\xe7\x4b\x6c\xaf\xcd\xcb\xea\xbc\xb9\x2f\x49\x6a\xeb\x8e\x65\x17\x3a\xca\x0b\x7b\x71\x2c\x35\x06\x1f\xf4\x31\xb1\xdd\x6e\xd1\x06\xb4\x17\xb7\x65\xbb\x3c\x64\x4d\x15\xbf\xb6\xcf\x2c\x77\x69\x67\xe3\x4c\x90\x29\xfd\xbc\x91\x28\x7e\x03\x9f\x5a\xf5\x52\x2f\x73\xa5\x86\x18\xb8\x67\xa0\xe6\x58\x10\xb7\x67\x57\xda\xd6\x19\x1a\xb1\x22\x59\xcf\x66\xea\x3d\x92\x05\xe2\xa2\xf4\xd3\xa6\xb8\x84\xbb\xaf\x77\x66\xf6\x75\xae\x54\x26\x4f\x8e\x8f\x67\x54\xcd\xf3\xc9\x51\xc4\x53\x13\x6e\xce\xc5\xcc\xfc\x71\x4c\xa5\xcc\x89\x3c\xfe\xee\x8f\x7f\x2c\xb6\x78\x82\xa3\xc7\x99\x41\x7a\xa9\xfb\x9d\xca\x5b\x4e\xb0\xdc\x2e\xb2\xc7\x65\x55\xbd\x70\x76\x6d\xd0\x8d\xcb\x67\x2c\xca\xe8\x07\xd1\xa3\xa6\x62\x98\x54\xb8\xa8\x9f\x00\xa9\x72\x7a\x9a\x68\x8e\xb3\x8c\xb0\x76\xb3\x83\xc9\x7d\xdc\x82\xf5\xb8\xec\x49\x3b\x42\xf2\x39\x4b\x30\x2b\x23\x02\x40\x31\x20\x41\x22\xc2\x94\xcd\x56\x2f\x6a\x08\x03\x35\x1a\x54\x1a\xc3\xff\xd7\xcb\xdb\x80\x39\x52\x59\x54\xd3\x72\xc3\xb1\x95\x2d\x5d\xbd\x43\x1c\x2c\x5d\xb5\x9a\x68\xb1\x76\xc4\xad\xda\xb2\xbc\xb9\xbb\x7a\x4d\xe9\xf5\xab\xac\x08\xce\xc6\xe4\xb3\x66\x72\x72\x53\x0c\xa9\x07\x49\x24\x1a\xfc\x7c\x87\xe4\x82\x29\xfc\xf9\x04\x5d\x52\x06\x02\xec\x0f\x3c\x17\x12\x9d\xe1\xc5\x21\x9f\x1e\xa6\x9c\xa9\x39\xba\x84\xff\xb5\x3f\x3d\x13\xf2\x88\x7e\x21\x58\x58\xfe\x60\xab\x91\xf9\xc2\xd6\x9a\x84\x44\xce\x24\x22\x4f\xfa\x84\xfe\xf1\x3f\x50\x6a\x5a\x3e\x41\xdf\x1e\xff\xf1\x3f\xd0\x1f\xe0\xff\xff\xff\xe8\x0f\x2d\x9a\xfe\x7a\x28\x54\x50\xb3\xf6\xb6\xec\xce\x3d\xa8\xac\xd4\x06\x65\xbc\x4f\x05\x2f\x76\xaa\xb1\xe5\x47\x1a\x3d\xf2\xe9\x74\xac\x09\xc3\xe4\x96\x8d\xb1\xa8\x21\x18\x6f\x08\xe9\x49\x6d\xd1\x61\x41\x0d\xd2\xbd\x2b\x6b\x62\x3b\x35\x20\x04\x8e\x5d\xcb\xbc\x28\xba\x0a\x41\x44\xa5\x42\xb6\x54\xc2\x57\x24\xd6\x5c\x75\x9d\xd3\xe1\xac\x7b\x2e\x1f\xd9\x59\x70\x42\xd0\x8e\xb0\x90\xb6\x0f\xfc\x0b\xa3\x58\x4d\xa0\x8f\x5d\xc8\xc6\xe3\x50\x0b\xaf\xfd\x62\x62\x26\x61\x6a\x6f\x15\x2f\x29\x6b\x9d\xaf\x0e\x95\xbc\xe3\x62\x2b\x7d\xeb\x91\xd4\x62\xb6\x3b\x96\xf0\x71\xe5\x5b\xc3\x92\xee\x90\xb4\xcc\x85\x87\xd6\x35\x76\x11\x5b\xe8\x6f\xb5\x15\x93\x0a\x13\x5c\xd6\xed\xd0\xeb\xa9\x9f\xf9\x4f\x56\x0d\x13\x22\xcd\xdc\xdb\x45\x09\x33\x18\xad\x16\x91\x34\x4b\x6c\x18\x71\x03\xfe\xde\xaa\x0d\xbd\xf3\x90\x0b\xd0\x38\x84\x3d\x42\xca\x07\x73\x92\xad\xcd\x69\x6f\xde\xcf\x5c\x44\xe4\x94\x6f\x17\xf6\x9a\x50\x56\x8b\x97\xef\x5e\x1d\xc7\xaf\xde\x85\xad\x83\xe4\x20\x6a\x79\x5c\x28\x0b\xc6\x2d\x60\x0b\x23\x04\xd8\x98\xe5\xd9\x00\xc6\xda\x2e\xe0\x17\x6b\x70\xfd\x5b\x70\x6d\x63\x38\x2e\x18\x9e\xab\xf6\x50\x29\xf2\x20\xb0\xe6\x85\x1b\x22\x56\x9a\xb2\x3d\x07\x48\x60\x88\x83\x54\x73\xcc\x8c\x49\x61\x8a\x23\xca\x66\x07\x01\x58\x21\x00\x07\x84\x1c\xb8\x89\x2e\xee\xb1\x7c\xdc\x6d\x6c\xdf\xd6\x65\x0c\x69\x5c\x94\xd2\xb2\xf0\x22\xc6\x97\x40\x6b\x48\x6d\x0a\xcb\xc7\x36\x7c\x9d\x1a\xb8\xd7\x92\xd1\xf9\xa5\x70\x90\x60\xcb\xc6\xe7\x12\x91\x49\xa8\xc2\x00\x72\xbf\x2b\x60\x6b\xa1\xfe\x5c\x2e\x19\xf6\x58\x1c\x55\x8c\xcb\x25\xe3\x97\x73\x2e\xd4\x78\x43\x74\xd0\x6a\x32\x35\x23\x87\x09\xc0\x7a\xf0\x27\x22\x9e\x28\x79\x2e\x83\x6c\xae\x43\x8b\xc6\x4e\x15\x04\xb2\x01\x0a\x63\x9a\x71\xc8\x5a\x99\xa2\x14\xb3\x85\xe1\x4d\xfa\x3c\x63\xf9\x28\x7d\x39\x4f\x24\x53\x9c\x24\x07\x48\x90\x5c\x9a\x72\xb2\x92\x24\xd3\x43\x57\x10\x21\x46\x09\x9f\xd1\x08\x27\x68\x92\xf0\xe8\x51\x8e\x98\xbe\x9b\xd9\xcc\xf0\x85\x4c\xf0\x88\x48\x19\x08\x33\x45\x9e\xb4\xcd\x5e\x83\x5a\x9e\x8a\x88\x94\x32\x2a\x15\x8d\x9c\x94\x52\x40\x13\x98\xca\xcd\x11\x06\x2b\x2c\xe4\x02\xc2\x70\xb5\x70\x45\x0c\x44\x63\xce\x6c\xe9\x1c\xb8\x21\x2d\xf2\x9a\x8b\xcb\x6e\x3b\x40\x3b\x00\x92\x73\x14\x32\x56\xe5\x03\xb9\xe2\x48\x9d\xda\xcf\xe0\x18\x2f\x23\x81\xdb\xf2\x89\xf2\x04\xe9\x4f\x5a\x09\xdc\x06\xc2\xb8\x7d\xd4\x79\x49\x58\xf0\xc1\xd8\x7b\x86\x6b\x05\x43\x6e\x41\xb3\x5a\x45\xd3\x7a\x15\x41\xca\x80\x6a\x4d\x55\x47\x35\x65\x51\x92\xc7\xbe\x5e\x9f\xbe\x75\x9f\x34\x91\xb8\xe5\xd1\x6b\xaf\xef\xe6\x03\x84\x25\x7a\x26\x49\xa2\xff\x6b\x82\xce\x0f\x3d\x7c\xbe\x66\xc9\xa6\xc4\x01\x74\xe2\xb8\x74\x1b\x45\xed\x1d\x46\xe1\x0d\x56\x73\x93\x4d\x9e\x72\x65\x4a\x25\x1a\x8c\x42\x67\x52\x32\xa0\x76\x93\x84\x4f\xe0\xa4\x03\x7c\xa1\xcb\x46\x0d\x32\xd9\xf2\x28\x22\x24\x26\x31\xfa\x3a\x38\xb8\x1e\xe9\xe0\x9b\x66\x30\xbd\xd2\x8a\xec\x01\x74\x61\xd5\x96\xd5\x0a\x60\x58\xae\xf6\x75\x84\x6e\x2a\xf0\x1c\x61\xb5\x6c\x5c\x05\x6b\x3a\xa8\x6d\xe1\xdb\xc0\x1d\x56\x26\xf1\x72\x3b\xb4\x26\xdc\x61\xa9\xcf\x1d\xc0\x1d\x56\xe6\xd9\x12\x2e\xcf\x67\x2f\x9a\xe6\xab\x27\x75\xc1\xbb\xe7\x5e\x19\x98\x28\x73\x77\x96\x48\xd0\x1d\xc8\x45\x13\x21\xee\x17\x94\x63\xa5\x26\xde\xdb\x42\x39\x56\x06\xb3\xcf\x50\x8e\x95\xa1\xee\x2f\x94\x63\xc3\x40\x3b\x40\x39\x1a\x7f\xfa\x58\x13\x75\x37\xa6\x00\xb9\x24\x93\x7c\x7a\x07\xd9\xd5\x4b\xc7\x78\x6a\x7c\xf5\xe6\x1a\x73\x77\xb4\x45\x36\x86\xd1\xda\xb4\xc3\xb6\x08\xa4\x8a\xdd\x7f\x5d\xda\xf3\x0e\x2f\x2a\x8d\x86\xb6\x9e\xa5\xfb\x20\x34\x30\x83\xe9\x2f\xc2\x99\x4d\xe3\x6e\x2b\x38\xb2\x3f\x09\xab\xeb\xa1\x64\x02\x02\x5d\x89\xd5\x77\xc2\x8f\xba\xac\x60\xf6\xcf\xf9\xb3\xad\x9b\x03\xe4\x67\x88\xb1\x95\xf4\xa0\xd3\xb1\x55\xd6\xda\x56\x8c\x32\x45\x66\x55\x5d\xb6\x38\x2c\x94\xa9\x3f\x7d\xb7\x92\x03\x19\x80\x3d\xa7\x16\x06\xc8\xf9\xde\xaf\x60\x9f\x91\xd8\x16\xee\x97\x5a\x6d\xd1\xd3\x31\x37\xaa\x44\x29\xa6\x4e\x81\xca\xa5\xf1\xe2\x50\x39\x62\x25\x44\xca\x23\xf4\x11\xca\x81\xe2\x34\xd3\x7a\x97\x9f\x1f\xd5\x14\x34\xca\xbf\xfd\xf6\x4f\x04\x7d\x8b\x52\x82\x59\x49\x77\x05\x75\x49\x5f\x79\x80\xe0\xa6\xe6\x64\xc4\x1a\xb7\x02\x0d\x3f\x9b\x0a\x43\x2e\xb4\xee\x9c\x4d\xb9\xd3\x85\xa1\xcc\x1d\x8e\xe6\x48\xe6\x13\x53\xa7\x35\xb0\x5d\x38\x01\xfa\x82\xcf\xc0\x27\x0c\x37\xb1\x1b\xf4\xb2\xd3\xf7\xb2\xee\x76\xeb\xd9\xeb\x7a\x0b\x0f\xe0\xfe\x38\x94\xa4\x84\x16\xd4\xe0\x9f\x32\x1c\x2f\x3c\xf0\xd2\xc0\x82\x1e\x18\x73\xbd\xd6\xcb\xb0\x35\xa2\x6b\x19\x1a\x22\x67\xc1\x21\x95\x27\x58\xd8\x23\x3f\x62\x5a\xc1\x10\xe4\x89\xf2\x5c\x26\x0b\x14\x73\x46\x0e\x80\x12\xf2\x68\x6e\x7c\x98\x5a\x57\xc1\xb6\x5c\xc1\x13\x95\xb9\x56\x64\xa1\x2d\x57\x1d\x41\x2a\x6c\x50\x8e\xe6\x14\xfa\xd1\x6a\x37\x81\xaf\xc2\x84\x34\xd4\x4d\x7b\x0a\x41\x43\x2b\xbc\xbe\x23\x68\x68\x89\xaa\x7a\xd0\xd0\x66\xc6\xb7\xb7\xa0\xa1\x95\x3d\xef\x06\x1a\xda\xb4\xe5\x1b\x80\x86\x96\x9a\xf9\x62\x40\x43\x2b\x2b\xfa\xc5\x80\x86\x56\xe6\xd5\x83\x86\x7e\x21\xa0\xa1\xab\xf9\x48\x23\x2c\x66\xf3\xe1\x5d\x0f\x16\xb3\x51\xb5\x6d\x67\x11\xdb\x62\x10\x81\x20\xfd\xca\xb0\x98\xa5\x09\xf4\x21\x80\xeb\x87\x00\x36\x12\x9f\xed\x5b\x0f\xcf\xc5\x05\x56\x2f\xb2\x8e\xc0\x98\xa5\xfd\xe9\x14\x2c\x08\x22\xef\x0e\x28\xf1\x65\xa5\x60\xf0\x2a\x74\x97\x81\xc3\x55\x94\x16\x4e\x57\x4b\x46\x0e\xd0\xcc\x28\xad\xa1\x8b\xba\xa7\xdc\x0d\x82\x57\x2b\xcb\xeb\xfd\x10\x86\x16\x3b\x90\x6a\x67\x0a\x6d\x28\xb3\xbf\x05\xbd\xba\xfc\xbe\x35\x5d\xb2\x6e\x10\x77\x19\x89\x5a\x6c\xb2\x34\xa5\xbb\x6a\x76\xd5\x45\xe6\xe1\x9a\x40\x91\xad\xa5\x2e\xea\xeb\xc9\x0c\xc7\xc8\xc6\x95\x8c\x4d\xc0\x92\x30\x5f\xce\xa8\x54\xa2\x35\xfc\xa6\x36\xc2\x6d\x5c\x8b\x59\xde\x39\x66\x23\x58\xd5\xd9\x66\x9f\xa5\x24\xe5\x62\x55\xec\x4f\xe3\x97\xb6\x40\xc8\x26\x9f\x92\x6c\x4e\x52\x2d\x04\x8d\xd7\x6d\xa4\xeb\x7e\xfb\xbc\x56\x9b\x5e\x65\x62\xf1\x4a\x44\x10\x38\x0e\xf5\xbb\xb1\x01\x4d\xec\xbc\xdd\xdb\x6e\xb3\x85\x75\x5c\xd3\x81\xe2\x60\x6d\x97\x1b\xaa\xec\x4b\x25\xf7\x30\xd0\x77\x63\x0c\x84\x0f\x41\x59\x1d\xe5\xb0\x24\xbe\x61\x19\x34\x52\xf1\x95\x2d\x9f\xbb\x86\xeb\xbb\xec\xcd\xd6\x9c\x30\xac\x9d\xba\x7e\x40\x44\x0b\xb0\x67\x7d\x79\x20\x92\x45\x12\x71\x18\x4a\xd4\xa5\xc1\xd4\xd7\xab\x44\x25\x4e\x13\xdb\x82\x48\x72\xd1\x1a\x08\xd9\xc5\x00\x1c\xa9\x1c\x27\xa0\xe6\x85\x35\xff\xaa\x9b\x3a\x59\x34\x64\xe6\x75\xf3\x30\x50\xa6\xfe\xfc\xef\x6b\xed\xa6\x56\x49\xec\xba\x41\x9d\x22\x1c\x45\x44\x1a\x9b\xb4\x0d\x94\xc5\x13\xfe\x04\x25\x8a\xb6\xd9\x55\x7d\x94\xf5\xbc\x35\x83\xf7\x68\xb9\x71\x41\xea\x46\x5c\x98\x0b\x9e\xcf\xe6\xce\xf6\xa2\xcf\x8c\x9e\x5a\xd3\x5e\xfe\x54\xb3\x2d\xaf\xbd\x97\xdf\xe7\x34\xd9\xcc\xb2\x75\x57\x2a\xde\xf4\xe9\xfc\x1e\xc9\xb9\x3f\xad\x13\x68\xb6\x71\x63\xeb\x83\xee\xde\xa7\xfd\xd6\xfb\x37\xa0\x9b\x03\x87\x10\x39\xe5\x49\x02\x16\x7a\x49\xd2\xa7\xb0\xe6\x7a\xd8\x3d\x4c\xf8\x9e\xae\x07\xee\xe6\x07\x00\x5f\x17\xb1\xfb\x9d\xe4\xaf\x1b\x23\x1a\x4a\xe4\x46\x5f\x75\xf2\x9b\xd0\x2e\xce\x08\x6b\xb2\x4d\xfd\x5c\xaf\x9b\xf1\xce\x02\xec\x5c\xb4\xd5\xce\x82\xec\xdc\x92\xbc\x72\xa0\xdd\x8a\x79\xec\x6b\xb0\x5d\x85\xd9\xf9\xd8\xb7\xe2\x9a\x71\x81\x36\x46\xf1\x19\xe8\x25\x1e\xb1\x41\x29\xe4\xdf\xd5\x17\x9e\x2c\x8a\x98\x61\xa3\x43\x84\xcc\x0c\x2a\x1e\x58\xc3\x0a\xb8\x9f\xf4\x5f\xa0\xe9\x18\x7c\x55\x13\x82\xe7\xc2\xec\x20\xe0\x99\xc4\x87\x38\x5a\x44\x09\x8d\x02\x9d\x79\x26\x70\x36\x6f\xe2\x78\x6e\xe7\x7b\x60\x98\xb7\x02\x86\x69\x2b\xe3\xb3\x4e\x88\xb3\xa3\x2b\x86\x53\xd2\x03\xd6\x34\x01\xd6\x1c\x78\x48\x06\x56\x14\x24\x7a\xc3\x4c\xff\xfa\xb9\xeb\x51\x6b\xde\x00\xb5\x66\x93\xc3\x57\x40\xd2\x94\x8e\x5d\x8f\xa4\xf3\xa1\x13\x92\x8e\xbf\x04\xf7\x0a\x1c\xa5\xfd\x3c\xbe\x31\xe8\x46\x7d\x60\x6f\x89\x9c\xd3\x20\x2e\xac\x23\x37\x2d\x83\xce\x59\x46\x17\x9d\xd6\xe5\x6d\x81\x6c\xd6\x5b\x99\xb5\x30\x6a\x1a\xef\xae\x3d\x41\xac\x69\xdf\x86\x3d\x39\x37\xbb\xcc\x02\x59\xaf\xe2\x62\x98\x09\xb2\x8e\x82\xb5\x5e\x52\x88\xa7\x87\xf7\x95\x18\x52\x94\xbb\xda\x2c\x39\x64\xe0\x7c\xd0\x44\xa0\x39\x4f\x62\x87\x93\xe0\x57\xcb\x77\xe0\x23\xe7\xfd\x02\xb9\xcd\x80\x12\xd1\xa0\x6d\x15\x35\xab\x96\xa5\x80\xf8\x4d\x84\xe1\xee\x80\xd1\xec\xc2\x8a\xe0\x39\xc9\x26\xf6\x83\x95\xb2\x88\x2c\x9b\xbf\x97\x8c\xb1\xb4\x42\x60\x35\x6f\x1e\xe6\x4a\xbb\xef\x8a\xc1\x2d\x13\x3d\x02\xe3\xa0\x68\x2a\xba\x68\xe8\x0c\x9e\x3e\x51\x67\x88\xc0\x61\x8f\x4b\xbd\x74\x6e\x76\x9d\x3c\x75\x55\x62\xd9\x20\x88\xaa\x56\x5c\x6c\x7b\xfc\x9a\x14\x7f\x1e\x67\x58\xe0\x24\x21\x09\x95\xe9\x8b\x05\xd1\x9e\x96\xdd\xb5\xfa\xac\x0a\x6e\x4c\x44\x2c\x4f\x27\x86\x14\xdd\x40\x6c\x49\x43\xc5\x91\xc8\x59\x88\xbe\xf5\x5c\xab\xd1\x9e\xc3\xbd\x00\x56\xa5\x68\x0e\xf5\x33\xa7\x98\x0a\x46\x64\x6b\xb5\x42\x12\xe5\x82\xaa\xc5\xd8\x16\x7f\xec\x7e\xe0\xee\xec\x97\xa7\xf6\xc3\xe5\x1e\x6e\x97\x78\xee\xfa\xf3\xc5\x26\x33\x22\xa0\x92\x8d\xab\xc9\x12\x14\xb8\xb4\xc0\x02\xc4\x97\xc3\x81\xb0\xe1\xda\xb5\xdd\x16\x70\x8b\x9f\xc7\x41\x06\xd2\x38\xaa\x12\xc7\xaa\xc3\xda\x04\x8d\xb4\x6c\x92\x2f\x0c\x0e\xd4\xe2\x45\x7e\x81\x42\x18\x36\xcd\xc0\x34\xad\x07\x1c\xb8\x82\xc1\x5e\x59\x6c\x4c\x90\x1f\x6e\x95\xaa\x96\x71\x5a\x38\x9a\xa6\xe0\xa3\x25\x83\x1d\x04\x5f\x75\x18\x71\xd0\xc9\x8e\x86\xad\x0f\xba\x10\x79\xa6\xe8\xa4\x8e\xbe\xa2\x76\x57\x18\x73\x90\x40\x5a\xb2\x73\x33\x94\xba\x35\xd5\x32\x4b\x9c\xd8\xce\x4e\xcb\xff\x16\xea\xca\x81\xd8\x18\x10\xa0\x30\xef\xed\x3a\xa5\x4a\xb9\x00\x7b\x63\x80\xd6\xd4\x59\xb6\xcd\x7e\xe5\xc2\x3d\x30\xd4\xdc\x34\x26\xa2\xa3\x11\x1b\x48\xf4\x4c\x10\x23\x16\xe5\xa0\xa1\x9a\xa6\xb7\x6a\x43\x79\xa2\x09\xd1\x3d\xf9\xd8\x14\x2d\x3c\x50\x25\x7d\x85\x2c\xd3\xc7\x14\x27\x92\x1c\xe8\x86\xa1\xb0\xa6\xe2\x10\x34\x89\xd1\xb3\xc0\x59\x46\xc4\x88\xd9\xec\x07\x70\xb8\x70\x9e\x98\xf6\xdb\x42\x43\xed\x1a\x90\x71\x84\xa3\xf9\x2b\xed\x11\x86\xe4\x95\x68\x4e\x62\x97\x5f\x5b\xde\x1e\x37\x6f\x63\xb0\x5e\x63\xb3\xce\xa7\xae\xc2\xd3\x81\xed\x24\x89\x34\x47\xf1\x05\x7f\x33\x22\xf4\xa8\x35\x0d\x3f\x11\x86\xe8\xd4\x8d\xc3\xc6\xee\xa0\x67\xf0\x4c\x69\xd2\x7f\xc2\x34\x31\x09\xeb\xae\x6b\x27\x04\x1a\xf3\xfb\x88\x19\x77\x37\x8b\x4a\x19\x9d\x94\x51\x39\xd7\x9c\x3a\x07\x9f\x24\xa8\x19\x6b\x49\x9e\x71\x2c\xcb\x46\x46\xa3\xbe\xd1\xdf\x4a\xe6\x8d\xc3\x52\xb6\x5a\x14\x20\xcc\x40\xb0\xa4\x2b\x32\xb5\x4c\xce\xec\x43\xef\xeb\xa1\xf7\xcd\x6b\xb3\x8f\xe1\xf7\xfe\xb0\xac\x1b\x82\xdf\xb6\xfd\xbb\x90\x20\x77\x18\x8a\xff\xc6\x31\xeb\x2f\x13\xae\xfe\xb6\xf9\x05\x2f\x91\x5a\xd0\x07\xe0\xbf\xbf\x00\xfc\xf6\x63\xbb\x56\x10\xfe\x0a\x90\xa1\xa6\x5e\x2e\x89\x12\x34\x92\xbb\xe0\x0f\x32\xc3\x1d\xa3\xc7\x40\xdb\xca\x56\x48\x27\xfa\x05\xef\xec\x83\x78\x2c\x5f\xf2\x6d\x22\x08\x7e\x8c\xf9\x73\xcd\x26\x26\x43\x94\x87\x4b\xad\xaf\xeb\xc3\x44\x25\x29\x45\x8c\x50\x89\x18\x91\xd6\xa8\x88\x47\x6c\x4e\x89\xc0\x22\x9a\x43\xf6\x5d\xb1\x31\x26\x8b\xd3\x00\xed\x98\x98\x81\xd0\xab\xb3\xc6\xa6\x77\x58\xf7\xaa\x25\xc7\x43\x95\xd9\x3d\xd7\x23\x49\xcd\x27\x5e\xa6\xb6\x52\x46\x68\xfa\xea\xb4\xfd\xdb\x06\xbc\xfb\xc5\x7e\xd1\xa0\x77\x1f\xb4\x13\x7c\xd1\x31\xf0\xbd\xa0\x86\x3e\xf8\xfd\x85\x82\xdf\x1b\x96\x78\xbd\x00\xf8\x8d\x4c\x6b\xaf\x1f\x9b\xeb\x7a\x7e\x8d\xf8\xdc\x55\xc1\x51\xf9\x64\xfc\xe2\x47\xaf\x71\xce\x5d\x4f\xe0\xcf\x9e\x28\x8c\x44\x2c\x34\x9d\x4d\x48\x1c\x03\xa7\x55\xdc\x16\x0d\x2e\x68\xc7\xa9\xe1\xfa\xee\xc5\x52\x13\x3b\x4e\x38\x9b\x49\x1a\x1b\x10\x90\x0c\x43\xf1\xce\xd0\x48\x00\xc9\xef\xb0\xbf\x49\x42\x84\xb3\xfe\x0b\xf4\xb5\xa4\x5a\xed\x0b\x3c\x02\x02\xc5\x9c\x48\xf6\x95\x32\x4a\x39\x66\x0b\xf4\xc8\xf8\x73\x42\xe2\x19\xec\x50\x75\x30\x87\x88\x92\x03\x44\x95\xff\x4c\x40\xb6\x3c\xcf\xd5\x48\x8f\x1d\x62\xba\x8c\x06\x40\xec\xb7\x41\x79\x6c\xdf\xcc\x37\x47\x08\x9d\x33\x34\xc5\x91\x3a\x40\x32\x9f\x14\xed\xc7\xdc\xd4\x3b\xd6\x5a\x6e\x30\xf1\xa2\x91\x3e\x36\xbb\xa1\xf3\xe6\xb3\xe1\xb8\x83\x26\xd7\x41\x42\xf1\x56\x31\x6c\x4f\x78\x1b\xb4\xc9\xcb\x5c\xda\x60\x07\xc4\x99\x3f\xfa\x16\xf6\xc7\xc3\x05\x43\x91\x5a\x03\xbd\xcb\x78\xdc\x6a\x53\xac\x4c\x65\xdd\xb1\x14\x01\x87\x56\x50\xb2\x0e\x21\x68\xd7\x2c\xb7\x96\x9a\xa4\x12\x04\xa7\xd6\x08\xaf\xaf\x1a\x10\x6b\x4c\xb8\xa1\x1e\x3d\x15\x46\xc2\x5c\x67\x8b\x2f\x28\x7b\xd4\xbb\x5b\x00\x24\x43\xa9\x71\xe8\xb9\x69\xd3\x32\x7d\xe3\x91\x53\xce\x8c\x23\x6e\x2b\xb9\x93\xce\x18\x4e\xd6\xb4\x71\xd4\x56\xae\xee\x3b\x73\x72\x96\x15\x17\xb4\x14\x61\x8c\x6a\xc8\xf4\xb8\x96\x0d\xa9\x32\xdf\x50\xde\xc3\x28\x26\x19\x61\x31\x61\xd1\x02\x48\x84\x01\xa2\x8b\x60\x38\x41\x18\xbe\xc3\xc9\x11\x3a\x33\x79\x2c\x5e\xc2\xb3\xd7\x3a\x5c\xe8\x29\x66\x74\xaa\xf5\x04\x30\x76\xda\x51\x8e\x98\x19\xa6\xf3\x35\x04\xf5\xdb\xfd\x8a\x35\xec\xcc\xf7\x94\xe1\x52\xe2\xd0\x06\xe7\x29\xc9\xd7\x8a\x0d\x0f\xac\x96\x8b\x36\xd4\x70\x85\x57\x01\x79\xaf\xb1\x19\x48\x42\xe5\x7b\xa4\xbb\x43\x70\x65\x7a\x4c\x79\x0c\x0e\x8d\x39\x49\xb2\xa0\x7a\x74\x86\x85\xf2\x78\x22\x06\xfa\x55\xdf\x32\x69\xce\x0c\x36\x8c\x31\x34\x3d\x5b\x78\x4d\xeb\xcb\x2a\x1a\x3f\x1a\xb1\x73\xf5\x95\xd4\x9c\x8f\xb3\x59\xb2\x40\x38\x7e\xa2\xb2\x80\x11\x8f\x38\x93\x79\x4a\x84\xed\x82\x4a\x13\xab\x65\x21\x78\xb1\x23\x4d\x3d\x36\xad\xf2\x3d\xe1\x84\xc6\x0e\xea\x5e\xff\x38\x21\x53\x50\x75\xb0\x90\xce\x20\xda\xe0\xd1\xb6\x9b\x1b\xeb\xb5\x7a\x33\x6e\xf9\x53\xc8\x10\x51\x5a\xf0\x4e\x6c\x4d\x20\xc7\x55\xce\x69\x57\x7d\x09\xd7\x9c\xd4\x26\x85\x96\x0b\x38\x76\x15\xce\x56\x81\x17\x39\x00\xbd\xdc\x44\x30\xe9\x7e\x9c\x2c\x6d\x06\xb7\x16\x07\xa8\x4c\xd0\x8e\xda\xd8\xd9\x43\xae\x49\x28\x08\x17\x52\x61\x45\x23\x2b\xb6\x73\x61\x2f\x0e\x7b\xb1\xb4\x6f\xed\xd9\x96\x40\xcc\x32\xc2\x49\x7d\x87\x97\xa8\xf1\xe6\xfd\xe5\xbc\xd5\x1e\x37\xd3\xf6\xd2\x9c\xa5\x88\x27\xc9\x3a\x20\xe1\x95\x99\x9f\x16\x9f\x2f\x1f\x51\xd1\x8f\xde\x00\xb7\x17\x70\x6a\x8c\xeb\x19\x27\x56\x42\x95\xca\xee\x52\xf8\x92\xb9\xdd\x16\xd6\xb5\x3d\x62\x7c\x6a\x6a\x04\xb7\x39\xa5\x33\xc1\x53\xba\x0e\xa8\xa2\xf1\xd3\xde\x3a\x73\xc3\x0a\xe1\xcd\x19\x25\xf4\x29\xb2\xe4\x65\x7b\x84\x74\x03\xcc\x8c\xbc\xba\xe4\x0c\xa5\x38\xdb\x68\xc1\x57\x19\xdb\x06\x28\x35\x96\x4e\xbb\x7a\x00\xb3\x44\x00\x91\x1d\x16\xf9\x19\x2f\x8a\xcc\xae\x36\xb8\x3c\xb6\x16\x39\x3c\xe8\xd7\xcf\xd9\x94\xaf\x71\x38\x8b\x4c\x2c\x7b\xfa\xb0\xa3\xd9\xe0\xfc\x79\xe3\x8f\xd9\x7d\xb3\xa6\x5d\xce\xe3\x69\x13\x51\xaf\x7d\x32\xdd\x0a\xbe\xa4\xea\x17\x32\x91\x50\xeb\x5b\xe7\x6e\x2d\x1f\xad\xa0\x45\x04\xc3\x59\xbe\x54\x97\x25\x3a\xdc\xf9\x1a\x55\xda\x41\xc6\xc2\xe0\x62\xc1\x6e\x9a\x5b\x7d\x85\x35\xb3\x87\xa4\xd3\x62\x6d\x99\x7a\xba\x1e\xec\x9f\xeb\xd1\x83\xfd\x35\x9f\xd0\x95\x98\xc6\xeb\xe8\x8a\x53\x2d\x09\x19\xf5\xa1\x08\x2c\xb1\x11\xf6\x53\x9a\x10\x79\x84\xce\x1b\xf4\x46\x17\xdf\xee\xfd\xc1\x26\xd2\xcf\x49\x4f\xb9\xa0\x41\xe9\x2d\x27\x23\x21\x0a\x78\xe4\xa1\xed\x4c\x10\x3d\xe6\xc8\xb8\x6e\xb9\xc1\xf8\x83\xe0\x3a\x41\x35\xcf\x32\xc2\xaa\x02\x29\x5a\xf3\x02\x6a\xd1\x05\x8c\x0c\xef\x3f\xe0\x26\xe4\x01\xdb\xea\x82\xc5\xa8\x5a\xb6\x74\x17\x45\x14\xba\xa7\x0f\xb8\x5e\xef\xf5\x17\xf5\xbd\x69\x1c\xe1\x7d\xb9\xf5\xb5\x47\xe7\xa5\xfc\xf5\xfd\xd0\x1f\xe1\x53\x67\x15\xc5\x68\x2a\x08\xf8\x4d\x52\x9f\x12\x6c\xb0\xf4\x38\x87\xfb\xee\xee\xec\xc7\xe3\x87\x73\x44\x54\x84\x12\xfa\x48\x46\x2c\x92\x4f\x07\x5a\x3c\xfe\x7b\x4e\x94\xfe\xb9\xc5\xd0\x42\x53\xc2\x24\x70\x02\xaa\x6a\xd0\x09\xcd\x0b\xe9\x16\x46\xff\xf7\xac\xfc\xfd\x12\x92\xaf\x65\x3f\x01\xed\x3a\x78\x7b\x20\x53\x40\xf0\x36\x4b\x2b\x1b\x28\xc6\xa8\x78\xc3\xa6\x7a\x53\x1b\x44\x3b\xb3\xbf\xe5\x6c\x4d\xa1\xeb\xb4\xf8\x28\x18\x45\x8b\x4c\x97\x66\x18\x20\x2e\xd7\x0b\xa3\x36\xdf\x34\xb6\xbe\x8a\x89\x14\x59\x65\x4e\x65\x2f\x4a\x73\x21\x25\x08\x01\x16\xe2\xe9\xc9\xde\xf5\x36\x91\xd8\x4f\x2c\xf8\xe8\x68\xc4\x2e\x9d\x21\xbf\xf8\x55\xba\x26\x4c\x68\xbe\x47\xfe\x2c\xb7\x02\xcd\xc6\x54\xfa\x1f\x00\xbf\x5d\xe6\x89\x32\x35\x63\xa6\x54\x6b\xe9\x6e\xa0\xe6\x49\x13\x97\x10\x98\x45\xf3\xab\x2d\x4b\xc7\xd0\xe9\x98\x24\xeb\x48\xa2\xe7\xd3\x61\x22\x35\x7d\x47\x8f\x2d\xa7\x73\x93\xaa\x48\xc5\x64\x6c\xad\x37\x53\xe6\xc1\xe8\x38\xc6\x7a\x9c\x98\x9a\x2d\x04\x81\xe9\xb7\x1a\xfc\x6e\xf2\x5b\xf5\x2e\x5a\x49\xdd\x58\x7e\x4d\xd4\xa9\x8f\x28\x83\x5e\x10\x56\x23\x26\x72\x06\xd8\xd2\xde\x11\x84\x51\x01\x13\x1a\x39\xb3\x8c\x35\x92\xcd\x34\x9b\x30\x28\x9c\xe6\x65\xad\x9f\xf1\x5c\x42\x00\x6b\x4a\x94\xbe\xa0\xbe\x86\x4a\x6b\xc6\x13\x7b\x80\x32\x41\x53\xaa\xe8\x13\x91\xdf\x34\x6c\xdd\x29\x56\x38\xe1\xb3\x81\x50\x74\x8a\x23\x75\x8f\xb7\xd2\xc0\xb1\x6d\x66\xd3\xa8\x1e\x37\x0c\x74\x7e\xa6\x17\x7f\x46\x18\x11\x30\x51\xad\x93\x37\x1f\x61\x78\xb2\x11\xe7\x06\xef\x69\x64\x0a\x3b\x48\x6f\xb1\xc0\xb9\xe2\xa9\xd6\x6f\x71\x92\x2c\xa0\x60\x83\x7e\x32\xc7\x72\xee\x36\xda\x44\xa1\x75\xb9\x9b\xec\xe2\x9e\xe2\x68\x4e\xee\xa0\xee\x60\xd3\xe2\x56\x46\xf9\x81\xb0\x3c\xfd\x70\x82\xfe\xbb\x98\xe3\xe9\xe0\xf4\x87\xe1\xf8\xec\xfc\x6e\xf0\xfd\xc5\xf0\x2c\x98\x8f\x7d\x72\x79\x7e\x77\x57\xff\xf5\x87\xf3\xfb\xfa\x8f\x37\xd7\x37\x0f\x17\x83\xfb\xa6\x56\x2e\xae\xaf\x7f\x7c\xb8\x19\x7f\x1c\x9c\x5f\x3c\xdc\x0e\x1b\x3e\x7d\xb8\x6f\x7f\x78\xf7\xe3\xf9\xcd\xcd\xf0\xcc\xad\xca\xff\x04\xa7\x0b\xa2\xd3\x20\x72\xb4\x79\x1a\xd5\x03\x78\x88\xca\x2f\x9e\xa0\x87\x2a\xe2\xb1\x0d\xf1\x32\x69\xb8\xcf\x58\x6a\x1e\x06\x91\x7c\x23\x86\xdc\xe7\x7a\x51\xda\x3e\x35\x5e\xd0\x68\x4e\x50\xc2\xf9\x63\x9e\x59\xd6\x66\xdc\xee\x8c\x1b\xc3\x0f\x91\x41\x6b\x3f\x9c\xdf\x9f\xd4\x91\x97\x7d\x63\x01\xe0\x87\x3b\x03\x30\x2e\xec\xd8\x29\xd8\x52\x1c\x22\x6f\x61\x2a\x0d\x7a\xf0\x3b\xb3\xac\x1f\xd3\x1a\x66\xaa\xd2\x4d\x1c\xdb\xb2\x7a\x6e\x62\x41\xc3\xe5\x7d\x5d\xb6\x9a\x7e\x39\x4c\xa9\x09\x34\x21\x11\xce\x8d\xaf\x58\xdf\x53\x42\x70\x11\x0e\xb8\xa0\x87\xdd\x35\x6a\xe9\xa8\xb1\xc1\xca\x9e\xe9\x89\xcb\x47\x9a\x65\x24\xfe\x50\x97\x5f\xca\xf5\xd7\x6c\xd5\x4f\x3e\x45\xc1\x99\xd4\x7a\x3d\xe8\xfc\x0e\x27\x7d\x6e\xeb\x59\x50\x69\xfc\x61\x85\x87\x10\x70\x28\xf5\x9d\xe0\xf1\xac\x29\x78\xaf\xb1\x42\xcf\x04\x32\xc2\x72\x5b\x28\xc2\xe8\xde\xfa\x6c\x43\x77\xc6\x93\xe1\xca\xbe\x94\x32\xc5\x5a\x99\xf1\x2e\x04\x6e\xfd\xbd\x24\x4d\x8c\x78\x8b\xb4\x9e\x33\xd3\x28\x70\x67\x17\x4a\x00\x23\x6e\xf1\x19\xb9\xdb\xa0\xc1\x42\xbe\x44\xbe\xaa\xdf\x48\x2b\x2e\x0b\xcd\xb6\xbb\x8c\xc7\xa5\x32\x97\xf0\x39\xbb\x0f\xac\x84\xe1\xb8\x72\xad\xee\x79\x8c\x17\x9a\x38\x20\x84\x4b\xe6\x59\xc6\x85\x42\x2d\x6d\x18\xef\x88\x19\x1f\xdc\x39\x76\x1e\x9e\xc7\x41\x23\x5a\xc2\x90\x0d\x10\xda\xdd\xb2\x3b\xed\xba\x16\x8c\x23\x8c\x3b\x02\x45\xd0\x97\x39\x48\x4b\x2a\x75\x89\x42\x9b\x84\xdf\x6d\x02\x37\x33\x7d\xc1\x77\xad\xba\xd3\xd4\xfb\xb5\x6b\xa1\x71\xcb\x13\x32\x55\xe3\x46\xaf\xcf\x12\x03\xa7\x6e\x91\xb5\x25\xc4\xd3\xd9\x7c\x07\x2d\x76\xd7\x12\xbe\xb3\xfe\x52\xad\x1a\x04\x16\x02\xc1\xb9\x32\xf2\x69\xa1\xc3\x20\xb7\x9a\x60\x5e\xb0\x9d\xda\x50\x76\x2f\x04\x6a\x99\xff\x91\xf1\x67\xe6\x2d\xfb\xf2\x68\xc4\x86\x18\xea\x12\x7a\x45\xc4\x45\xb8\x83\x16\xb0\x52\xfe\x2f\xd5\x18\x7b\xd5\x20\x98\x76\x80\xba\x82\xee\x6d\x45\xda\x64\x81\x8a\x3a\x72\xa5\xef\xba\x9c\x1e\x63\xf5\x76\x22\xa0\x99\xb0\x2d\x94\xaa\x48\x66\x2d\xf3\x66\x9e\x85\x03\x15\xdc\xee\xba\xab\x23\xf4\xb3\xb3\xfc\x40\x3c\x51\x51\x82\xd1\x16\xd0\x4e\xf0\xc2\x61\x5a\x35\x2d\xec\x2e\x60\xa2\x76\x1d\x61\xb4\x7c\x81\x3d\x1e\x45\xc3\x2a\x97\x14\x70\xc6\x8c\x45\x76\x8d\x68\xda\x53\xff\xd1\x1d\x59\x1e\x6e\xff\x11\xaa\x6e\x59\x87\x35\x08\x1d\x2c\x59\xfc\x2f\xb3\x59\x26\x91\xc6\xd5\xd3\xb0\x55\x90\xac\x07\x55\x9f\x1f\xf0\x00\x9a\x3c\x1b\x34\xa5\x49\x02\x72\xc0\x11\x1a\x40\x35\x40\xc8\x43\xd1\x57\xa1\x8b\x5a\xa3\x33\xc6\x57\x85\xee\xb7\x10\x53\x14\x10\xd3\x5d\x3b\x31\x49\xa0\xa6\x22\x0d\x71\x37\x14\xb5\x83\x94\x74\xcd\x5b\x70\x1d\xd0\xb3\x7b\x22\xfa\x1a\xca\xfb\x5b\x04\x9d\xd5\x86\x1b\x7c\xf8\xcf\xe6\xa1\x7f\xca\xb1\xc0\x4c\x41\x28\x95\x15\xdd\x05\x09\x22\xba\xc9\x67\x08\x56\x64\xc6\x10\x0c\x3f\x85\x9b\xeb\x5c\xfe\x33\x0a\x79\x47\xf1\x01\xa2\x47\xe4\xe8\xc0\xd6\x48\x97\xf9\xa4\x78\x73\xae\x25\x87\x11\xab\x85\x88\x1c\xa1\x41\x22\xb9\xfd\x82\xb0\x28\x81\xea\x9b\x41\xd4\x97\xa7\x7c\xeb\x56\x9a\x2c\x40\x41\x81\xad\x2c\x9a\xe7\xf6\x41\xf0\x21\xd4\x16\x01\x9f\x78\x02\x27\xbd\xf8\xbd\xa9\x64\x71\x29\x4e\xe2\x05\xd1\xa8\x6b\xd7\xd0\x8b\x6d\x92\xa9\x10\xb4\x6c\x83\xe0\x0d\xd8\x98\x22\x74\x27\x48\x20\x47\x5f\x63\x85\x12\x82\xa5\x42\x7f\xfc\x66\xad\xd8\x10\x37\xc1\x82\xbb\xda\xe3\x5b\xc4\xdf\xbb\x08\xce\xb6\xba\xeb\x50\xc1\x0d\x61\xc4\xc8\x73\x18\xb0\xc3\x21\xc6\xca\xd5\x81\x21\x41\xca\x90\x29\x49\x69\x12\x0b\x21\x08\xd6\xa8\x4c\x2d\x7c\xc4\xa1\x35\x5a\xf7\xa9\x1d\x56\x03\x65\x59\xe5\x89\x1a\xf5\x0c\x10\x45\x8a\x58\xca\x39\x56\x23\x66\x39\xab\x0b\x1b\x09\xa2\xe7\x07\x49\x52\x8e\x5f\xc4\x10\xa2\xcb\xf4\x84\xa1\x1c\xeb\x91\x5f\xa0\x2b\x50\xbf\x7c\x10\x59\xb9\xd6\xbd\x3f\x2c\x5a\x53\x1b\x31\x0f\xd7\x10\xb6\xdd\x28\xed\x34\xd9\x97\x5f\x51\x08\x6e\xe8\xfe\xc2\xd4\xc5\xed\x20\x0c\x93\xa6\x21\xaf\x38\x58\x75\x9b\xfe\x12\xd9\x78\xd7\x1d\x74\x17\x95\x9b\xed\xe3\x70\xcd\x3e\xf3\x06\x73\x7b\xcb\xe6\x06\xb2\xc5\x36\x0a\xb8\x8f\x66\x7c\x2d\x8f\x6f\x69\xe8\xe7\x31\xe4\x52\xac\xe6\x82\x45\x6e\x82\x63\x1d\x60\xe8\xa6\x71\x10\x2a\x1d\x44\x66\x42\x28\xbd\x63\x7c\xf6\xcd\x16\xcf\x6b\xf6\xbe\xa7\x7f\x50\xcc\xdf\x4d\xc5\x07\xc1\xd5\x27\xde\x2e\xec\x0d\xe2\xbf\xe1\x08\x02\x28\xa1\x27\x17\xba\x59\xc7\x93\x70\x28\x9c\x18\x8c\xf9\x8d\xe2\xa1\x2d\x71\x7d\x84\x86\x70\xd1\xb8\x8a\xd7\x78\xea\x1c\x12\xc1\xcb\x23\xa6\x35\x13\x97\x7e\x1e\xb4\x5f\x26\xf1\xa6\x13\x60\xb0\x6c\xb6\xf2\xe5\xa4\xab\x21\xd6\xdb\xb4\x09\x07\xa5\x03\x6d\x00\x2a\x33\x1a\xce\x4e\x50\xcc\xa3\x47\x22\x8e\x05\x89\xa9\x3c\x01\xdf\xba\x6a\x75\xea\xa5\x5a\xdb\xde\x5a\xd2\x68\x0b\x14\x58\x91\x6b\x70\x6a\xfa\xb7\x41\xf4\xae\x8e\xe0\x01\xa2\x53\x50\x27\x5c\xa8\xab\x49\xb2\x71\xd9\xfa\x84\x29\xb1\xc8\x38\x65\xca\x9b\xb2\x2a\x0b\xe1\x34\x0d\x2d\xb4\xb5\x05\x69\x8b\x5d\xc4\xe0\x6c\x38\xed\xfb\x39\x91\xc4\x05\x1c\x98\x49\x29\x6e\x73\xd4\x0c\xbb\xc8\xb0\x9a\x4b\xc8\x08\x2a\xaf\x81\x55\xba\xe0\x53\xbd\x42\x38\x83\x78\x05\x63\xa5\x28\x3e\xf2\x79\x2b\x52\xd1\x24\x19\x31\x46\x48\x2c\x11\x24\xef\x7c\xd5\x98\x78\xa8\x3f\x3d\x40\x38\x8e\xd1\xff\xfe\xfa\xe3\xc5\x2f\xf7\xc3\xf1\xf9\x15\x18\xad\xcf\x2f\x86\xdf\x1c\xf8\x1f\xaf\x1f\xee\xfd\xaf\xc6\xc2\xf2\x44\x04\x4a\xf1\x23\xa8\x78\x4c\x1a\xf9\x0f\xb2\x3b\xc2\x91\xba\x94\x4c\xfd\x44\x12\x17\xe9\x6a\xc5\x14\x8f\x00\x65\xf7\xb0\xb5\x50\xa1\xb1\xf9\xad\xa1\xfc\xde\xfa\x4f\x96\xd3\xa0\x23\x1e\xdf\x85\x13\x03\x53\xc2\x20\x1a\xbb\xc8\xd1\xb3\xba\x6f\x41\x70\x84\xcd\x28\x6b\x8b\xc7\x23\xec\xe9\x25\x85\xf8\x1f\xc9\xe2\x27\xad\x5e\xdf\x60\x2a\x3a\xd3\xde\x90\x3d\x51\xc1\x19\x4c\xcd\x9b\xb5\xfc\x89\xd1\x7a\x3a\x96\xd5\x43\x25\x8d\x2c\x0c\x31\x1a\x59\x6b\xcc\x67\x13\x8e\xcd\x9b\x4f\xd7\xa2\x63\x90\xcf\x4a\xb8\xe4\x5f\x0f\xc2\xe2\x90\x28\xfc\x45\x53\xd0\xe0\x88\xdd\x5f\x9f\x5d\x9f\x20\x92\xe0\x09\x17\x90\x0d\x66\x42\x82\x5c\x13\x76\xc1\x22\x9e\x06\x0d\x95\x12\xbf\x0f\x50\x56\x24\x7e\x87\x46\xb4\x23\xd3\xc6\xaa\xfa\xdd\x5c\xd4\xd3\xa6\x77\xab\x02\xda\xc9\xde\x70\xd1\xe5\xfa\xd7\xaf\xc1\xd2\xf1\x4c\x2b\x72\x15\xce\x6b\xef\xe6\x29\xc1\xa6\x74\xae\x71\x0b\x59\x5b\xbe\x0d\x60\x4d\x92\x52\x39\x28\x7d\x70\xe4\x91\x75\xc1\x17\x6f\x72\x86\x7e\xfc\x8b\x44\x93\x5c\x8d\x58\xb9\x0d\xce\xd0\xe0\xe7\x3b\xf4\x3d\x56\xd1\xfc\x9b\x11\xbb\xd6\x6a\xe6\x8f\x7f\x69\x41\xa8\x58\x1b\x5c\x49\xaf\xc9\x19\x56\xf8\x82\xe3\x98\xb2\x59\x13\xb2\x52\x01\x7f\x3f\xbc\x1f\x9c\xa0\x6b\xab\xc3\xfb\xa4\xf2\x22\xd3\x2a\x68\x08\x18\x32\x4c\xc4\x71\x11\x60\xe5\xac\x8c\x3e\x63\x34\x33\xb8\xb0\x46\xec\xde\x40\x4a\x69\xae\x4a\x15\xca\xb8\x2d\xc1\xa0\xb5\x32\x03\xb6\x65\x4c\xd9\xd6\x92\xa8\x57\x07\xc8\xd8\x6f\x86\x95\xc7\x40\x9e\xa9\x33\xfb\x11\x03\x05\xdd\x67\x7a\x26\x3c\xc2\x09\xc4\xe4\x1d\x06\x36\x3d\xad\xb6\xf3\x1c\xd2\xee\x4c\xad\xd3\x45\x39\x74\xd6\x67\x82\x7a\xa1\x2c\xdc\x28\x30\x00\xc0\x3e\x5a\x6f\x6c\xca\x35\xc7\x31\x50\x32\x60\x7c\x4b\xcc\xea\xe8\x0f\x3d\xb4\x8c\x59\x16\xfd\xd4\xf1\x23\x28\x29\x6e\x53\xbc\x23\x30\xdf\xb3\x05\x84\x6f\x03\x66\x3a\x87\xd0\x8f\x82\x3b\x5b\xa2\xac\xed\xa2\xbf\x13\x83\xcf\x46\xcc\x44\x0a\x96\xf6\x25\x04\x45\x08\x7a\xe7\x0c\x02\x19\x8b\xeb\xd2\x0b\x18\x99\x0d\x6c\xb4\xb2\x7e\x26\xc8\x61\x4c\x14\x11\x29\xd8\x7b\xc2\x35\xd5\x37\xec\x11\xba\x0d\xd5\xeb\x98\x47\x79\xea\x80\x21\x21\x3d\xb1\xa8\x26\x5b\x92\x78\xcc\xc5\xbe\x8a\xe2\x21\xf9\x5d\x11\xc8\xca\xeb\xac\x1f\x1b\x82\x19\x84\x9f\xd6\x25\xf5\x76\xc1\x17\x78\xc7\x76\x51\x6b\xa6\xa1\x71\x56\x6e\xa9\xd4\xda\x6a\x5c\xbb\x15\x75\x4e\xae\x0a\xf0\x3a\x2e\x40\xd8\x22\x9f\x33\x0e\x46\x6e\x93\x53\xc5\xe3\xaf\x24\x3a\xbf\xd1\x12\x90\xd6\x78\xfd\x19\xcc\xa5\x32\xc1\x65\x90\xae\x63\xbe\x36\xe9\x02\x07\xe8\x5b\x53\xeb\x39\x42\x9f\xdd\x1f\x7f\xfe\x8f\xff\xf8\xd3\x9f\xd7\x49\x27\x71\x0a\x39\xb4\x5b\xac\x91\xaf\x86\x51\x16\x89\xc2\x1d\xa8\x73\xaa\x2d\x76\xc1\x1e\xc0\xb6\xe5\xdf\x04\xa4\x2a\x88\x1d\xc2\x33\x7b\xc2\x65\x78\x32\x51\xe9\x68\x16\x91\x04\x92\xa8\x83\x32\x87\xf0\xc2\xae\x95\xe8\xff\xd7\x12\x0c\x98\xb1\x3e\x2a\x9b\xc5\x38\xd1\xc4\x8b\xd7\xba\x11\xf4\xb5\xb5\xff\x29\x70\x20\x7e\xe3\x2e\x38\x9e\xc4\x44\xd8\x3a\xf1\xce\x64\xe7\x0d\x89\xc0\x1c\xc8\xe7\x2c\xe1\xb1\x43\x77\x93\x24\xc3\x20\x40\x68\x66\x70\x34\x62\x43\x57\x36\xdc\xa0\x93\x98\x8f\x8c\xe7\x65\x8a\x23\x03\x6a\x26\xd1\xd7\x9f\x4f\xf4\x6f\x07\x68\x71\x02\x41\xa4\x07\xe8\xb7\x13\x0b\x42\x80\x85\x1a\xeb\x9f\xbe\x71\xb2\xb6\x6d\x02\x06\x4d\x25\xfa\xea\xf8\x09\x0b\x53\xf2\xf2\xd8\x8c\xe8\x2b\xcb\x59\x7d\x59\x9f\x50\x36\x4f\x38\x7f\xb4\x01\xb6\xb5\x0f\x8f\x1d\x9e\x0d\x90\xb7\xf7\x9b\x98\xad\xf7\xf9\x8e\x0a\x1d\xda\xa2\xe7\x47\xd9\x04\x1d\xfd\x4d\x72\x86\x8e\x16\x38\x4d\xec\xaf\xee\xa9\x8d\xff\xc5\x12\xb9\xb2\xf7\x45\xd9\x6d\x63\x29\xfd\x3e\xe1\x13\x98\xd5\xa5\x9b\xa9\x89\xa0\x85\x81\x16\xb7\x4f\x71\x61\xd9\x89\x58\x49\xca\xc0\x32\xa4\x5c\x99\x57\x80\xc7\x35\xcd\xea\xb3\x1f\xd2\x7f\x19\xbf\x30\x2c\x8a\x4b\xe2\x33\xc6\x61\x1f\xbd\xa6\x1b\xfd\x8c\xbe\xb6\x2c\xe8\x1b\x7d\xc7\xd8\x70\x65\xb3\x0c\x4d\x1d\x2c\x7c\x07\xbf\x04\x1d\x50\x86\x4c\x5a\xe6\x92\x2f\x7f\x3b\x3e\x3a\x3a\xf2\x5f\x5f\xe9\xa9\xfc\xbf\x88\x2a\x49\x92\xa9\x69\xc9\xdd\x60\x8b\x11\xbb\x74\xb8\xd1\xce\x78\x5d\x20\x65\x41\xb9\xfa\x88\x27\xe8\xb0\x30\xe8\xc6\x3c\x92\xe8\x5f\xb5\x58\x1b\x2c\x25\xfc\xa8\xf5\xb8\x16\x14\x3b\x03\x54\xf9\x4a\x87\xca\x1a\xc4\xab\xc7\x2a\x04\xc7\xf1\x8a\x2d\x96\x21\x08\x39\xd0\x82\xa6\x9c\x63\x0b\xa0\x23\x84\x7e\x99\x7c\x56\xf0\xa8\x05\x9f\xa8\x31\x94\xbd\xf9\xa6\xac\xb1\xdb\x02\xa6\xc8\x90\x75\xcb\x02\x58\x18\x11\xcb\x19\xcc\x3c\x0f\x42\xf7\x89\xbe\x5c\x58\x88\x64\x2c\xf3\x34\xc5\x62\x71\x5c\x9c\xb6\x3a\x71\x16\x00\x36\xc0\x63\x12\xb7\x00\xe0\xc2\x4d\xec\xd1\xb2\x51\x0c\x56\xbc\x74\x37\x9a\x3f\xbb\x11\x94\x62\x82\x80\x3c\x53\x88\x8c\xb0\x88\xc7\x96\xae\x8b\xec\xd3\xb2\xc4\xe2\xdf\xa9\xcb\x2a\x2e\x22\x46\x16\xc6\x38\xa6\x4c\x66\xb4\x7d\xc3\x7d\xdc\xc2\xbe\xf9\x18\x8a\xfa\x91\xd9\x1a\xee\xd1\xf3\xeb\x3b\xf7\x4d\xf7\x4b\x17\xd6\xa1\x2c\xb2\xe3\x24\x84\x1d\x62\x33\x24\xf0\x73\x71\xfd\x42\x6c\x87\xb1\xce\xe4\x3e\x37\xd7\xfc\xfb\x94\xdf\xd0\x44\xdf\x5a\x40\xe3\x47\x23\x56\xfa\xf9\x00\x91\x84\xa6\x94\xf9\xd8\x3a\xc3\xdc\xf9\xd4\x48\xcf\x8f\x54\xe9\x2d\x93\xf1\xa3\xe6\x60\x0e\x2e\x23\x50\xa9\x06\x6c\xe1\x48\xc7\x3b\xa6\xac\x05\x22\x97\x7a\x5c\x85\x8e\xae\x85\x59\xdd\xc4\xa1\x15\x48\x69\x40\x78\x70\x7e\x47\x4c\xb7\xe6\xce\x52\x11\x2e\x1c\xb4\x17\x34\x77\xe8\xf0\x7c\x03\x0e\x00\x7d\x94\x62\x7e\xbd\xfc\xdb\x20\xa0\x0c\x59\x9e\x6e\x9b\x6c\x62\xc3\x87\xdf\xca\x4c\x77\x23\x88\xbb\xa9\x6c\xe2\x12\x61\x79\xea\x0e\xd4\x1a\x14\x37\xb4\xe2\x4f\x4c\xa2\x04\x1b\x00\x00\xdd\x10\x44\x3e\x1e\x18\x07\x69\x16\xf4\x65\xae\x17\xd3\x8d\x29\x11\x90\x10\xf6\xb5\xf9\xf7\x37\xc8\xde\x0d\xdf\x1e\xd8\xfb\x5c\x48\x07\x60\x6a\xf7\x1c\x4a\x4c\x91\xd8\xd8\xd0\x01\xec\x71\x86\x45\x6c\xac\xe5\xa1\x56\x61\x32\x78\xb5\xfc\xb5\xe0\x39\x7a\xa6\x72\x3e\x62\xf7\xdc\x19\x1c\x11\xe3\x1e\x2e\xf3\x00\x94\xd1\x5a\x7f\x58\x02\x13\x80\x51\x37\x51\x80\x66\xc2\x5b\xe5\x1a\x41\x14\xec\x98\xf1\x98\x6c\x87\x0b\x71\x5f\xf8\x2a\x9c\xff\x5a\x10\x93\x0f\x06\x37\x45\x5b\x3a\x2d\x91\x72\x4d\xdb\x7c\x75\xe3\xe1\x1e\xb2\xed\x40\x45\xc3\x67\xb6\x29\xe4\x8a\xbf\xd5\xa0\x15\xa7\x71\x06\xd9\xc0\xa5\xb5\xf7\x20\x94\xdb\x6e\x42\x54\x4e\x55\x59\xb9\x02\xfe\xea\x33\x73\x8f\x60\xd9\x7d\x80\x31\x46\x33\xc1\xf3\xcc\xa7\xcc\xbb\x74\x3f\xb3\x0d\x56\xa6\x39\x67\x53\x7e\x62\x75\xaa\x0b\xca\x1e\x0d\xc5\xbf\xd4\x1e\x19\x9c\x51\x12\x97\xd0\x71\x5c\x91\x39\x98\xc3\x21\xa2\x2c\x4a\x72\xb8\xf8\xa4\xc2\xd1\xa3\xc1\x4a\x6d\x33\xfa\xea\x6f\xc6\xab\x93\x29\x5b\x24\xa6\x3c\x49\x6c\xb7\xc5\x05\x5a\x54\xe1\x7c\xa2\x18\x61\xf4\x70\x7b\xde\xdc\xf7\x23\xad\x3b\x73\x9a\x6f\xcf\x32\x81\xc0\xff\xfc\x48\xd7\x8a\xbb\xac\xa0\x0d\x91\x12\xa9\x7b\xe3\x52\x1b\x96\x9d\x26\xd2\x4f\x58\x91\x6d\x33\xa1\x0c\xb4\xca\x1a\x91\x7a\x35\xcc\x9a\xa5\xd6\xe3\x2d\x01\x5f\x0a\xb0\x16\x08\x0d\x6a\x47\x9e\x09\x83\xb5\xe0\xe1\x1a\xd8\x0d\xf0\x7e\xb7\xf9\x54\xde\x5d\x31\x9d\xe5\xc3\x4c\x08\x59\x03\x6d\xe0\x4e\xbf\xde\x71\x90\xa5\x57\x97\x8d\xf1\x19\x1b\xf0\xe8\x3a\x96\x62\x9c\x97\xea\x43\x77\x22\x68\x47\x8e\x46\xbc\x96\x3e\x47\xc4\x8f\xc4\x85\xe1\x78\x59\xcc\xf5\x3b\x03\xdf\x16\x2f\x61\x53\x7b\x0b\x6d\x03\xe1\x07\x62\xeb\x96\x61\x13\x5a\xfc\x1a\xa7\x0d\x2c\xba\x79\x27\x8a\x8e\xcf\xec\xc7\x97\xfa\xdb\x66\x56\x74\x09\x59\x7c\x1e\x38\x25\xc5\x4c\x9f\x6c\xd7\x6b\x8b\x11\xd2\x48\x84\x1b\x0d\xe9\x21\xdb\x68\x40\xa6\xc7\x8e\x65\x9b\x6c\x57\xae\x95\x67\x63\x87\xc7\x89\xb1\x33\xa9\x39\x98\x20\x8a\x72\x07\x9a\xa3\x95\x4d\x11\xa6\x34\x42\x82\xc5\xcc\x28\x48\x92\x28\xf9\x4d\xc3\x0e\x17\x39\x0f\x5b\xec\xf0\x06\x25\xe5\x42\xbf\x27\x88\xdf\xcb\x4e\x9a\x1f\x65\x19\xb3\xcd\xdf\xca\xbe\x38\xa3\x15\x9a\xa8\x0c\x91\xb5\x22\x2e\x0c\xc0\x69\xac\xcf\x4a\x3b\x66\xca\x96\xa5\x45\xaf\x70\xea\x11\x01\x5c\x81\x43\x9b\xdf\x65\x06\x37\x21\x00\x37\xd8\x3e\x86\xad\x6b\x88\x86\x43\xb0\x35\xbd\xda\x46\x30\x62\x03\xf7\x8a\xcf\x2a\x06\xdd\x4e\x18\x01\x1c\xe2\x43\x4d\x34\x34\xe8\x57\xb8\x58\x75\x3b\xb9\x96\x49\xac\x9b\xbc\x59\x2d\x83\xaa\xf5\x3b\x7f\x1b\xd9\x82\x07\x1e\x1a\x6d\x69\xb1\x89\xa7\xf5\x0b\x55\x37\x03\xb3\x44\xd5\x42\xc2\x4d\x1d\xaf\xd6\xa5\x1c\x62\x84\x6d\x28\xac\x5d\x6c\x62\x48\x93\x45\x41\xa6\x7a\xc5\x8d\x4e\x5e\xe9\xac\x7e\x5a\xd5\x56\xdc\x98\xe2\x74\x2c\x78\x7b\x35\x8e\x0e\xcb\xe4\x9a\x28\xd9\x77\xe6\x06\x35\x7c\x81\xfe\x9e\xe3\xc4\x5c\x6e\xcc\x92\xa3\x1b\x36\x88\xca\xdf\xfd\x19\x0d\xe0\xf6\x41\x97\xc0\x17\xc1\xc1\x0f\xad\x29\x8e\x68\x9a\x11\x21\x39\xc3\xad\x65\x69\x1e\xff\x22\xc7\x16\xf2\x7f\x8c\xa3\x88\xe7\x75\x78\xff\x35\x66\xd2\xd0\x5a\x38\x29\x8c\x1e\xf3\x09\x11\x8c\x98\xd2\x3b\xf0\x1e\x72\xef\x75\x1a\x2e\xc7\xb9\x9a\x7f\x37\x8e\x12\xda\xb9\x0e\x01\x64\x17\x0d\xf4\x67\xa7\xe6\xab\x65\x13\x28\xb5\x5f\x1a\x3a\x43\xe6\x19\x32\xcf\x8e\xd0\xf7\x38\x7a\x24\x2c\x46\x59\x92\xcf\xa8\x05\x13\x80\x1b\x0a\xd8\x65\x60\x9e\x2d\x4f\xcc\xc8\x16\xa6\x7d\x7d\x0d\x8d\x58\x8a\x1f\x0d\x36\xa0\x15\x22\x23\x9c\x24\x6b\x99\x19\x3c\x3d\xd4\x50\x55\x5c\xe6\xbb\x2f\x73\x64\xce\x87\x32\xe7\x03\x0c\xaa\x80\x20\x99\x33\x84\x01\x98\xe5\x2b\x89\xf2\xcc\x49\x40\x60\xe9\x4b\xc0\xef\x6a\x26\x09\xf5\xab\xa9\xd6\x83\xe6\x64\xc4\x20\x96\xd5\xb5\xb8\xf0\x5c\x25\x74\xf5\xfb\x90\x93\xa6\xc3\x37\x35\xb0\x04\xdb\x79\x11\x6b\x00\x94\x2b\x28\xa1\x63\x9c\xae\x9a\x13\x06\x06\x88\xee\x2d\x83\x46\xd3\x7d\xd3\x4a\x31\xb9\x56\xd0\xf4\x16\x53\xbf\x84\x39\xa3\xb6\xf2\x85\x35\x92\x07\xe1\x72\xce\x93\x54\x7c\x4f\x25\x92\x58\x51\x39\xa5\x8d\x86\x99\x10\x0c\x62\x9b\x55\xc7\xeb\x21\x50\x34\xa0\x4f\x54\xd6\xc2\xc7\xfd\x1f\xa1\x8f\x60\x67\x0a\x64\x6f\xee\xb1\x1c\xda\x58\x82\x9a\x93\x56\x50\xc3\x5d\x04\xcc\xb8\x19\x04\xef\x2f\x35\x1f\xfa\x1c\x8f\x23\x34\x28\xec\xfb\x06\xcd\xc2\x58\xee\x57\xcc\x88\x24\x92\x6c\x42\x7c\x9d\x4c\x61\xe0\x03\x07\x02\x42\x20\xab\x48\xfd\x7b\x01\x7d\xeb\x87\xf9\x0c\x69\x94\xf8\x91\xb0\x65\xf6\x8e\xee\x23\x34\x06\xa9\xa5\x4a\xb7\xb7\x74\x71\x63\xec\xda\x64\x80\xdd\x8f\x5d\x01\x20\x42\xa7\xc7\x7a\xc9\xb5\xa0\x1f\x3d\xda\xe4\x0d\x63\xef\xb4\x10\x24\xcf\x73\x2e\xc3\x73\xe6\xf6\xcf\xe8\x8a\x22\x27\x2e\x49\x03\x92\x5f\xfc\x02\x9b\xa8\x17\xc6\x43\x84\x12\x18\xb5\x3f\xa4\xc6\x96\xeb\xf7\x1b\x39\x16\x0a\xcb\x00\x7e\x22\xd7\x54\xfd\x34\xff\xf8\x17\x79\x0d\x27\x76\x17\xb9\xf0\xcd\x75\xdb\xb6\x8f\x43\xdf\xd0\x02\xef\x23\xac\x8a\xa2\x6f\x38\xf6\xe8\x0d\x19\x8f\x51\x41\x5e\xeb\x57\x78\x7b\xfb\x69\x55\x2a\xc3\x75\x9a\xdb\x2a\xca\xbe\x0c\xdc\xf4\x68\x92\x53\x53\x64\xb5\x24\x72\xd9\x7c\x49\xd0\x7e\xed\xf5\x4f\xa5\xbf\x4f\x9a\x69\xec\x86\xc7\xdb\x10\xd6\xfa\x80\x75\x75\xba\xee\x10\xc5\x2b\x9b\x8a\xc2\x2e\x59\x89\x8c\xb7\xc7\x5f\xc6\xe3\xee\x65\x54\xc1\xe1\x3e\xc9\xa7\x77\x00\x8b\xde\x86\x09\x11\x94\x41\x71\x49\x5e\x7a\x9f\x75\x37\x3e\xe5\xa0\x6d\x53\xac\xff\xb6\xb8\xfe\x31\xfa\xbf\x77\xd7\x57\x87\x29\x16\x72\x8e\x21\xe7\xd6\xb5\x75\xe0\x2a\xcd\x18\x05\xd4\xf9\x95\x28\x1b\xb1\xff\x8f\xbd\x77\x6b\x72\x1b\x39\xd2\x86\xef\xfd\x2b\x2a\x62\x2f\x24\x7d\x1f\x9b\xed\xb1\x63\xdf\xb0\x15\xb1\x17\x3d\xad\x96\x87\xb6\xa6\x25\xf7\x61\xc6\xfb\x2e\x37\xa8\x22\x50\x24\xe1\x06\xab\x20\x14\xd0\x2d\x7a\xed\xff\xfe\x46\x65\x66\x1d\x70\x24\x40\xb2\x25\xd9\x3b\x17\xbb\x1e\x35\x81\x42\x1d\xb3\xb2\xb2\x9e\x7c\x9e\x33\xb6\x56\x13\xbc\xc5\x7c\xcd\x36\x45\x91\xe9\xd7\xe7\xe7\xeb\xa4\xd8\x94\xcb\x69\xa4\xb6\xe7\xbe\x6b\xce\x79\x96\x9c\x2f\x53\xb5\x3c\xcf\x05\xe0\x58\xcf\xbe\x9b\xfe\xe6\x3b\x18\x99\xf3\xc7\xef\xce\xe1\xee\x6a\xba\x56\xff\xf6\xee\x37\xbf\xff\xed\xff\x31\x05\x67\xbb\x62\xa3\xe4\x6b\xba\x22\xed\x2d\xfb\x0c\xfd\xde\x73\x7c\xa5\xf6\x95\xdf\x4f\x7f\x1d\x56\x83\x1e\xdd\xaa\x58\xa4\xfa\xfc\xf1\xbb\x85\x1d\x98\x69\xb6\xfb\x05\xf9\xf9\xd5\x90\x9f\x0f\x49\xf1\x0b\xf2\xf3\xab\x22\x3f\x87\x7b\x38\xce\xc6\xd4\x44\xb3\xcd\xdf\x9d\x8d\xb4\xc1\xed\x7d\x76\xa8\x65\x73\x08\x71\xf9\x47\x6c\x11\x0f\xa2\x81\xfc\x18\x11\x72\x70\x47\x87\x8e\x20\xd6\x58\x3a\xfb\x4e\x67\x7e\x54\x1a\x32\xe0\x2c\x92\x08\xa8\x92\x31\xe8\x96\xf1\xa4\x0d\xcf\x49\x78\xa2\x63\xfa\xef\x39\x49\xbf\x4f\xcd\xf6\x4d\xcd\x3d\x90\xe9\x3b\xc5\xb7\x2d\xfa\x49\x3d\x59\x86\xef\x53\xf0\x62\x0f\x14\xa0\x73\x74\xbf\x38\x79\xa0\x2e\xb6\x5e\x1d\xd5\xd8\x70\x7d\x18\x8c\xee\x02\x49\xf5\xdc\x4d\x98\x93\xcd\xa5\x0f\xda\x8d\xc3\xf2\x14\x80\xba\x29\xd1\x21\x65\x65\x9e\x29\x2d\xf4\x94\xbd\xad\x49\x34\x79\x68\xe0\xcd\xdb\x4b\xf6\xdd\xef\x7e\xff\xdb\xb9\x7c\xd9\xb2\x6f\x83\xbd\x57\xf9\x9a\x90\x8a\xb0\x5b\x6f\xb9\x2e\x44\x7e\x9e\xaf\xa2\x73\xb4\x72\xe7\xe6\xfd\x33\xfa\xe8\x99\x5a\x9d\x39\xd2\xdf\x33\xe2\x3f\x9d\x6e\xe3\x71\x29\xfc\x95\xa9\x87\x7b\x0d\x6d\x34\x1a\x36\x25\x24\xfb\x51\x2b\x47\xef\x8e\x99\x24\xa8\x04\xa1\x56\x2d\xff\x01\x62\xd6\xaf\x1c\xc5\x18\xd7\xf6\x1b\x9e\xf3\xa7\x7b\x69\x9e\x86\xff\xdb\x4e\x91\xe7\x0c\x54\x58\x5b\x12\x1e\x47\xc6\x74\x7c\xfb\x62\xf3\xdb\x3d\x32\x1e\x90\x1a\x32\xf2\x27\x2b\x29\xd4\x0a\x70\x72\xe0\x09\x5b\x1c\x00\x44\x43\xcd\x4e\xeb\xd9\x0d\x72\x91\xe1\x06\x13\xaa\x27\xb7\x74\xf7\x91\x1c\xe2\xfb\xfa\xf9\x39\x38\xc4\x8f\xed\x77\x32\x28\x5f\xa9\xc3\x8f\x05\xeb\xe1\x52\x1a\x83\x5b\x30\xcf\xef\xbd\xa3\x74\x76\x00\x2e\x25\x43\xc1\x62\x64\xf3\x02\x27\x4d\x9c\x15\xea\x0c\x68\x61\x80\x6c\x04\x59\xfd\xbb\x80\x0b\x70\xb7\x3b\x66\x9b\x34\xcf\x0f\xa8\x27\x3a\xe6\x9f\x83\x8a\x92\x4f\xa2\x91\x24\x93\x40\x4f\x89\x94\x22\xa7\x5b\xab\xbd\x3b\xea\xc8\x9b\xdf\x70\x28\xfb\x31\x4f\x81\x20\x67\xc0\xb8\xee\x10\xef\x3c\x30\x02\x53\x06\xde\xe7\x46\x6d\x95\x71\x67\x54\xa9\x83\x1f\xf1\xf4\x02\x9b\x70\xa7\xef\xb5\xe5\x19\xd2\xc0\x7d\xbd\xd6\x98\xa5\x65\x7e\xc2\xa0\x5e\xf8\xd0\x28\x11\x8b\x65\x95\xb6\x7f\x4f\xfd\x1d\xdf\x7a\xff\xbc\x01\x5c\xc1\x16\x2e\x51\x40\xe3\x8e\x58\x94\x93\xbf\x99\x73\x8d\x99\x52\xee\xa4\xe0\x76\x6e\x84\xc1\x20\xdb\x61\x48\xa8\x6a\xbd\xf9\xce\x7c\xe4\x72\x3b\x72\x0c\x1c\x8c\x77\xc8\x00\x70\x89\xc0\x56\x8b\x68\x3d\x6b\x85\xb4\x76\xad\x4b\xab\x28\x17\x2f\x2c\x23\xe7\xb8\xaa\xde\xba\x02\x88\x7c\xb3\x59\x6f\x4f\x68\x04\xf8\x67\xec\x63\x34\x08\xd6\xb7\xe8\x80\xb5\xc8\xf1\x8b\x11\x24\x4c\xc6\xf4\x1d\x7c\x04\x27\x67\xa3\x07\x83\xb5\xd0\xd5\x81\xe3\x42\x6c\x7d\x11\xab\x36\xc0\x3c\x72\xc0\xf9\xfc\x18\x53\xcb\xc6\xe1\xd1\xbd\xf8\xe8\xe5\x33\x77\x99\x98\xb0\x65\x09\xbf\x5f\xbf\xbf\x0b\xf1\x10\x09\xb6\xf6\x2c\xda\x88\xe8\x01\x02\x26\xb8\xe5\xe1\x62\xb0\xd2\xa9\xcb\xdd\x5c\x7a\x71\xad\x42\xd9\xcb\xfd\x9d\xe3\x1b\x77\x9c\xfb\x2a\x67\x71\xa2\xb3\x94\xef\xe0\x1a\x55\x22\x12\xde\x5f\xc1\xba\x14\x12\x63\x0a\xf6\xc5\x8b\x87\x8f\xb4\x19\x95\x0b\xff\xde\xd8\xbe\xe4\xf9\x32\x29\x72\x9e\xef\x98\xef\xcc\xa6\x3d\x60\x5a\x6c\xb9\x2c\x92\x68\x2e\xb7\x82\xcb\x10\xf7\x46\xd7\xc8\xa6\x93\x63\x25\x88\x91\x77\xb5\x12\x51\xe1\x29\xfd\xc0\x79\x77\x3d\xb5\x6f\x0d\x8e\x6b\xbb\x5b\x79\xbd\x4d\xff\x21\x91\x98\x40\x9e\x6c\x01\x55\x49\x73\x88\xb6\xc6\x03\x2f\x6f\x40\x8c\x8d\xb6\x5c\x7b\x18\x84\x7f\xd9\x39\xc5\x96\xa2\x78\x12\x90\xb1\x4e\x29\x76\x6d\x3e\xfe\xd1\x84\xfc\xc7\xc9\x16\xb6\x0b\x3e\x06\x58\x2b\x5c\x60\x21\x5c\xcb\x51\xeb\xc8\x1a\x47\xce\x0b\x4a\xfa\x83\x68\xcf\x0b\x8a\x5b\xbd\x80\x6d\xda\x9c\x1e\xf3\x47\x11\xcf\x65\x95\xb8\x88\x7c\x46\xbf\xe0\x98\x97\x9a\x3a\x8d\xb5\xb1\x7d\x3c\x28\x96\x7f\x05\x64\x0d\x9e\xa6\xd1\xa5\xb5\xf5\x48\x5f\xb5\x4b\xe5\x3f\x83\xaa\xd2\xe0\x4b\x1e\xaf\x46\x45\x52\x32\xa4\x3c\x57\xc1\x53\xb8\x49\xe9\x68\x59\x90\xb3\xcd\x41\x4c\x29\x2e\xd9\x88\x74\xb6\x95\x31\x97\x36\x5f\x79\x55\xa6\xc8\xc3\xd9\x25\xc6\x45\x2c\x4d\x36\xb7\xe2\xeb\xe5\xd8\xb8\xb8\x1a\x0b\xd4\xbb\x1c\xec\x21\x80\xfb\xa2\xad\xb3\xb3\x5e\x48\x8d\x4a\x9a\x56\xb8\x07\x02\xcf\x6b\x51\xc0\x6e\x1e\x97\x29\xa6\xdf\x42\xc4\x1c\x18\x9f\x78\x9a\xb2\xa4\xd0\x73\xe9\x08\xaa\x90\x6e\x1c\x2c\xac\x0d\xa9\xc7\x74\xe4\x82\x4f\x40\xb1\x24\x3a\x0c\x7e\x58\x12\x25\x45\x03\x24\xbd\x0b\xc5\x2e\xb2\x4c\x70\xcc\x16\xc3\x61\x9b\xcb\xf0\xcc\x55\x1f\x04\x4a\xad\x02\x71\xd5\x53\x64\x39\xf5\x60\xde\x41\x91\x76\xf4\x90\x4c\xd9\x05\xb6\x2e\x72\x1a\xfe\x8c\x6a\x4b\x19\xea\x84\x65\x34\xa7\x9a\x42\xdb\x18\xb9\x3f\xb7\x66\x3c\x2f\x92\xa8\x4c\x79\x9e\x02\xeb\xfb\xaa\x4c\x59\xb2\x0a\x24\x39\x61\x0c\x90\x9e\xc8\x0c\x57\xa4\x60\xaf\xb6\x51\x72\xcd\xb7\x22\xc8\x8c\xa6\xf0\x4e\x1a\x60\x28\x90\x73\x19\x2f\xe7\x4d\x59\xaf\xa6\xec\x4d\x5d\x1a\x17\xd6\x44\x40\x6b\x98\x68\x34\x7f\xae\xbe\x41\x52\x1f\x4a\xec\x26\x2b\x73\xa4\x7c\x11\xac\xba\x2e\x91\x79\xae\x1f\x46\x02\x34\x2c\x39\x7e\x3f\x2e\xb7\x35\xa9\xf7\x0e\x84\xc8\x2b\xb0\x0d\xb7\x20\x3a\x2a\x68\x77\x85\x91\x95\x0c\x29\x21\x0f\xa8\xe8\xcf\x81\xd2\x77\xbd\xb2\xdb\x1e\x05\x50\x18\xc7\x91\x55\x0d\xf4\x74\xc6\x57\x34\x98\x39\x21\x1c\x67\x48\xcf\xae\x79\x31\x16\x9b\xe3\xd2\x5d\xc6\x57\xb4\x15\x07\xd5\x59\xcd\xfd\x91\xa6\x9f\x2b\x02\x3c\xcc\xd4\xca\x9c\xf2\x05\xe2\xcc\xd4\x2a\x30\xc1\xb4\xdf\x90\x52\x0f\x90\x9f\x3b\x9b\xb0\x14\x2c\x4d\xe4\x83\xa5\x3a\x30\x13\x74\xc2\xb8\x2f\x1d\x6c\x04\x76\x32\xae\xb9\x0e\xcf\xab\x4d\x2a\xe0\x08\x67\x6c\x58\xc2\x60\xfb\x09\xd9\xd6\x64\x94\x1a\x84\x6d\x70\x5b\x3b\x86\x0f\x4b\x2f\xb2\xd9\x9d\x79\x2c\x9c\x19\xb7\xc1\x00\x63\x19\xc8\xb9\x77\xf6\xef\x87\x4d\x15\xb3\x37\x42\x58\xe7\xfe\xfa\xcd\xd5\xdb\xd9\x75\x55\x0d\xe7\xcf\xf7\x57\xf7\xd5\xbf\xdc\xdc\x5f\x5f\xcf\xae\xff\x10\xfe\xe9\xf6\xfe\xf2\xf2\xea\xea\x4d\xf5\xb9\xb7\x17\xb3\x77\xb5\xe7\xcc\x9f\xaa\x0f\x5d\x7c\xff\xfe\xa6\xa6\xbf\x63\xc5\x73\x82\x3f\xdd\xcd\x7e\xbc\x7a\xb3\x78\x7f\x5f\x91\xf0\x79\xf3\x9f\xd7\x17\x3f\xce\x2e\x17\x2d\xf5\xb9\xb9\xba\x7c\xff\xd3\xd5\xcd\x1e\x05\x1e\xdf\xde\xd6\x2e\x3d\x05\xd8\xea\x60\x3d\xa6\x0b\xb6\xca\x13\x21\xe3\x74\x87\x58\x70\x7b\x0e\xac\x41\x4f\xc3\x9d\x2a\xd9\x0a\x55\x1e\x03\xe9\xbe\xdb\x08\xa6\x1e\x45\x0e\xac\x0c\x58\x1a\xa5\x70\x72\xfd\xd0\xc9\xd9\x57\xe4\xcd\x18\x7a\x6f\xe6\x4a\x91\xef\x5c\x6e\x54\x5f\x75\x3c\xa3\x0f\x7d\x84\x65\x22\xef\xab\x0b\xf8\x11\x79\x99\x15\xc9\xb2\x1b\xa4\x3f\x90\xe9\x66\xfc\x49\x15\xf9\xe7\xda\xc9\x3a\xae\xdb\x0d\x63\x05\xab\x7e\x0c\x4c\x17\x4a\x38\x54\x66\xcc\xbd\x6d\xa1\x8d\x59\xb9\x4c\x93\x88\x25\x71\x3d\xfa\x80\x29\x55\x18\x60\xad\xd3\x54\x66\x22\x07\xc7\xce\xf8\xcb\x59\x2e\xce\x78\x59\x6c\xac\x02\xba\xcb\xac\x43\xda\x48\x11\xe5\xa2\x08\xd4\xfa\x49\x5f\x2a\xf8\x12\x54\x86\x32\x8a\x63\x20\x2f\x99\x06\x94\xe1\x1d\x11\x75\x7c\x13\x4b\x1f\x11\x52\xc4\xe7\x7b\xbb\x86\x6a\x9c\xe8\xba\xb8\x30\xb8\xb0\xf8\xa3\x55\xa9\x32\xed\x36\x96\xda\xa9\x34\xe1\x20\xdb\x5c\x82\xf6\x66\xec\x9b\x63\xe1\x44\xa9\x42\xff\xa9\x74\xfa\xe9\x32\x17\xb0\x89\xd0\xc5\xb9\x3d\xed\x03\xd0\x83\x72\x0f\x20\xe5\xc0\x1c\x6c\x96\x62\xc3\xd3\x15\xc6\xf0\xcc\xd0\xf8\x75\xd5\x9c\xa2\x77\xea\x41\xc8\x1b\x1c\xb0\xaf\x62\x0e\x25\x9e\x13\x7c\x8e\xb9\x8b\x9f\xf8\x80\x9f\xa9\xa3\x9d\x55\x36\xf7\x0a\x45\xfa\xd1\xab\x0e\x7e\xc6\x04\x08\xcf\x20\x6b\xd3\xb6\x56\xab\xe4\xb3\x29\x70\x2e\x45\x2b\x87\x26\xa0\x6b\x2c\xdb\x8f\xb3\xcb\x80\x24\x42\xca\x94\x07\x21\x41\xdf\x0a\xe5\x6f\xf7\xce\xd9\x71\xd1\xe6\xe6\x58\xf4\x84\xbf\x21\x42\x96\x54\x64\xbf\xc2\x3b\x11\xdb\x4f\x90\x64\xf9\x20\xa6\xec\x0d\x11\x41\x98\xbf\x5c\xbe\x9b\x5d\x5d\xdf\x2d\x2e\x6f\xae\xde\x5c\x5d\xdf\xcd\x2e\xde\xdd\x0e\x5d\x7e\xa7\xc8\xd3\xa9\xad\xbe\x7a\xaa\x94\xb3\x10\xe7\xb4\xf2\x7c\xba\xa8\x6b\x94\x5f\x76\x30\x24\xfb\x6b\x9f\xc4\xd9\x22\x4e\x74\x64\xb6\xbf\xdd\x42\xc8\x18\xc8\x87\x0f\x9a\xaa\xed\x45\xd5\x5b\xe1\x9e\x60\xee\x09\x6b\x41\x70\xb7\x7b\xb4\x33\xda\xfd\x0e\x18\x35\x08\xda\xe5\xc2\x2c\xfe\x78\x2e\x83\xdd\x66\xba\x5f\x71\xc2\x14\x77\x5c\xdb\xaa\x45\xd4\xdb\x84\xf5\x4d\xb4\x2e\xb9\xb1\x8f\xf6\x31\x00\xe8\x75\xf4\x0a\x31\xc2\x85\x0c\xc8\x49\xa0\xde\xc9\xcc\x49\x7e\xcb\x65\xcc\x0b\x95\xef\x3a\x9a\x38\xcc\x78\x86\xcb\xa6\x6a\x42\xc3\x2d\x5b\x0a\x11\xdb\x51\xc0\x47\xb9\xac\x4f\x25\xe4\x49\xbe\x7b\xff\xa7\xab\xeb\xdb\xc5\xd5\xf5\x4f\x8b\x0f\x37\x57\x6f\x67\x7f\x71\xb8\xc1\x8c\xeb\x36\xb5\xbe\x2c\x17\xc6\xba\x58\xda\x89\x56\xfb\x82\x12\x7a\xb6\x1c\x92\x4d\x4a\x56\x73\x69\x2d\x4b\xee\x8b\xdf\xe4\xaa\x5c\x6f\xda\x0b\xaa\xd7\xf2\xc3\xc5\xdd\x0f\x07\x55\x13\x48\x81\x50\x67\x0b\x57\x5b\x13\x3f\x99\xac\xc8\xee\x21\xe8\xb2\x56\x3d\xa0\xb6\x82\x47\xdb\x62\xf2\x1d\x16\xed\xa0\xd3\x4b\xd3\x68\xf5\x3a\xff\x2d\x8f\x77\x4d\xa0\xbb\xc0\x6e\x56\xb6\x11\xc0\xf3\xa2\x5c\x63\xa3\xb4\xd7\x2d\x7f\xab\xec\x60\xbf\x39\x4b\xc5\x7a\x2d\x62\x9c\x5e\xf5\x82\x29\x62\x45\x26\x30\xf2\xfb\x7a\x5b\x2f\x92\xa0\xda\x11\x1b\xb3\x43\x47\x0d\x37\xe0\x1f\xdc\x2b\xed\xb6\xe2\xd2\x8a\x36\x47\x4a\xea\x82\xcb\x8e\x6b\xd7\xc7\x26\x9e\x71\x90\x29\x7a\x9f\x33\x97\x2a\x44\x01\x12\x1b\x60\xf7\xeb\xe0\x90\x0b\x27\x12\x8e\x93\x14\xf1\x08\x04\xe5\x02\x95\xe9\x96\x41\x80\x48\xe3\x8d\xb5\x88\xcf\x1f\xdc\xe8\x3d\x3a\x11\x13\x12\x04\x46\x51\xb9\x87\xa0\xda\x18\x0d\x02\x39\xac\x4e\x18\xed\xa8\x01\xa9\x7d\xf9\x27\xea\x7a\x3c\xb5\x56\x03\xb3\xdc\x72\x8d\xb9\x01\x72\xce\xdb\xf8\xf8\x56\xc5\x0f\xf7\x25\x67\xb9\x8a\xcb\xc8\xb2\xb1\x40\xb1\x1e\x0f\x42\x01\x2d\xbb\xc1\xc6\xec\xcc\x0c\x33\x1d\x52\x44\x7c\x06\x48\xef\xb9\xec\xba\x7c\xb1\x36\xa0\x23\xcc\xf5\xc1\xee\x5a\xc7\x8c\x7d\x4b\xef\x77\x2f\x41\xdb\xd9\xc3\x32\x2e\x99\x7d\x1c\x9c\xbd\x0e\x38\x0d\x8d\xcb\x92\xe3\xcd\x6a\x75\x3b\xee\x22\x5f\x70\x56\x75\x1c\xea\x67\x18\x68\xa2\x9a\x4a\x81\x5b\xe4\x86\x6b\xf4\x5c\x8b\x68\x53\xad\x38\xb4\xa6\x4a\x58\x56\xaf\xae\xf3\x04\x8f\x8b\x10\x0c\xba\x5f\x99\xe0\x99\x3a\xd1\x54\xfb\x50\x7c\xca\x29\xe9\x8d\x9b\xf8\xa1\x73\xe4\x0e\x2f\x68\xf7\xc0\x60\xa5\xbc\x94\xd1\x86\x65\x29\xc7\x2c\xe3\x0d\xd7\x38\xa5\x2d\xc8\x80\x2f\x93\x34\x29\x80\x20\x05\xef\xbe\x6a\x3d\x6c\x4e\x34\x3c\x7f\xb0\x9c\xa4\xdc\xb3\xe1\xf4\x4d\xfa\x23\xc1\x9c\x5e\xb0\xfd\x4b\xc2\x39\xfd\x92\x0d\xde\xe8\xbd\x39\xf3\xd3\x92\xa0\x9c\x7e\x38\x8c\xc5\x83\x69\xe9\xdb\x32\x6e\x64\xa9\xc4\x0f\xf5\xd7\x2b\xfd\xdd\xb2\x51\x8f\x87\x32\x10\xd9\xf6\x08\x33\x5f\xa7\xe2\x6e\x5d\x59\xab\x54\xf1\x0e\x39\x58\x5b\x36\x32\x6b\x77\x95\x1d\xab\x72\xd9\xc5\xe5\x8a\xb5\xea\x2f\xbd\x2f\xee\x6f\xd7\xed\xa9\xe2\x82\xa1\x01\xe4\x85\x28\x92\x71\xa1\x8d\xa0\xd1\xbc\x10\x67\xf0\x7a\x7b\xe1\x94\x7a\x36\xb8\xcd\x8d\x89\xe6\xf5\x1d\x1c\x63\x2c\x80\xcc\x9a\xb3\xeb\xcf\x25\x37\xa6\xe1\xfd\xea\x16\x19\x3b\x8e\x99\x64\x45\xd2\x9c\x61\xed\x2b\xb1\xfe\xd5\xbb\xea\xa5\x4a\x38\x07\x06\x67\x6b\xb6\xb5\xe6\xd6\xbc\x3d\x7c\x41\x56\x35\xd3\xb3\x3c\x51\xc0\xab\x41\x4a\xed\x3d\xa4\x77\xad\xdf\x3d\xa2\x27\x3f\x95\xa2\x14\x66\xee\x2f\xcb\x78\xdd\x8c\x6d\x8e\xf0\xce\x7c\x93\x36\xea\x89\x6d\xcb\x68\xc3\x6c\xe1\x2c\x16\x29\xdf\x55\x9a\x06\xfe\x52\xa1\x52\xa0\x91\x3d\x90\xd3\x32\x2a\x75\xa1\xb6\x00\xc2\xf4\xe5\xe6\xa5\x84\x09\xcf\x78\x51\xe4\xc9\xb2\x2c\x5a\x01\x5b\x15\x8e\xab\x03\x2f\xb4\x6e\x3f\x5c\x5d\xce\xde\xce\x6a\xb7\x49\x17\xb7\x7f\x0a\xff\xfd\xf3\xfb\x9b\x3f\xbd\x7d\xf7\xfe\xe7\xf0\x6f\xef\x2e\xee\xaf\x2f\x7f\x58\x7c\x78\x77\x71\x5d\xb9\x73\xba\xb8\xbb\xb8\xbd\xba\xdb\x73\xad\xd4\xfc\x6a\xf7\x40\xf0\x80\x82\xcb\xc2\x42\x2d\x17\xb1\x3d\x5d\xd2\x57\x5f\xb3\x0b\x4b\x48\x56\xa1\xcc\xb3\x57\x83\x70\xf3\x8e\xca\xbc\x74\x83\xf8\x86\x17\x9c\x94\xce\xa7\xec\x82\x59\xc5\x7a\x00\x43\x6b\xe3\x2c\x10\x5b\x93\x19\x1d\x2c\xc2\x78\x0c\x91\x3f\xb9\x79\xb1\x35\xb5\x22\x9e\xb4\x54\x84\xb4\xdc\x36\xf3\x67\x2e\xaf\x1e\x85\x2c\x4a\xe0\x0c\xe6\x69\xca\xac\xc0\x3a\x3d\x10\x64\x35\xdb\x5a\xea\x64\x9b\xa4\x3c\xf7\xba\x58\xef\xa9\x2c\x70\xd8\x6d\x5d\x1d\x89\x4d\x33\x65\xd6\x1e\x1e\xee\x67\x0c\xea\x7d\xf9\x6e\x06\x2e\x50\x54\x58\xd1\x07\xfb\xf1\xb9\x44\x1e\x2e\xfa\xe2\x96\x03\x40\xbf\x50\x14\x4f\xc3\xcf\xd3\xc3\xdd\x13\x51\x1f\xb3\x88\x6d\xe4\xf9\xb9\x40\x40\xae\x92\xf6\x3f\xae\x64\x91\xef\x06\xfb\x35\x77\x90\x91\xaa\xc1\x37\x25\xbc\x4f\x55\x2b\x0b\xc3\x1d\xcc\x96\x7e\x0d\xce\x8e\x05\xa3\x51\x34\xde\x05\xdd\x05\x30\x13\x77\xf8\xdf\xa9\xd9\x84\xbe\xd5\x7e\x08\x49\x43\xa0\x17\x96\xaa\x94\xb1\x26\x64\xd2\x36\x91\xe7\x5b\xfe\xf9\x95\x6d\x29\x26\xe1\x3b\xc6\x7a\x20\x58\x12\xa9\x39\x89\xec\x8c\x91\xeb\xef\xae\xb9\xec\xe9\xaf\xfd\xde\xa2\xb5\xac\x70\xec\xf1\x67\x54\xc4\x58\x3d\x8a\x5d\xdb\xf8\x35\x54\x47\x10\xc7\x45\x0b\x1e\x0a\xc9\x72\x61\x1e\x74\x00\xae\x14\x71\x79\xee\xdf\x00\xd4\xae\x28\xa3\xb5\xdb\xee\xf0\x96\xf7\xa8\x65\xd3\x7a\xbf\xfc\x0c\xb2\x31\xf4\x25\x33\x66\x78\xdb\x6c\x03\x9d\x04\x4c\xa7\x6b\x34\x33\x58\x7f\x55\x4b\xb6\x82\x2c\x0d\x52\x3e\xce\x05\x04\xb6\x61\x28\x2c\xcf\x31\xd0\xf0\x34\xae\xb0\xed\x14\x48\x85\x86\x70\xaf\x34\xc7\x2d\xf1\xa9\xa4\x1b\xbb\xef\x7e\x3d\x6e\x9f\x2d\xf2\x1d\xb3\x9c\xfa\x61\x96\x08\x25\x49\xd1\x9e\x0b\xf5\x2a\x65\xd2\xc6\xcd\x75\x53\x4a\xb3\x15\x9f\x02\xec\x30\xfc\x36\xab\xf6\x51\xfa\xe7\xde\x44\x0a\x1b\x88\xcd\xf1\xf9\x67\x23\x33\xfc\xa9\xc6\x61\x48\x9f\x03\xd8\x2e\x95\x1e\x6e\x68\x4b\x1e\x3d\x3c\xf1\x3c\xc6\x58\x21\xa0\x0f\xa6\xec\x07\xf5\x24\x1e\x45\x3e\x61\x91\xc8\x0b\x4e\xf4\x46\x1a\xae\x5f\x61\x41\x51\x39\x73\x09\x28\x76\xe4\x8a\x92\x20\x1a\x5d\x24\xeb\x8d\x39\x4f\x06\x97\xe7\x2a\x37\xe6\xa8\x40\xee\xb8\x4c\x44\x44\x28\xd3\xd1\x01\xab\x94\x3f\x36\xf9\x9a\x0e\xc9\x84\x67\x33\x97\x8a\x67\x6f\xa7\x2c\x77\x7c\x1f\xdc\x81\x3a\x8c\x8c\x26\x52\x80\x4c\xd8\x5a\xa5\x5c\xae\xa7\xd3\x29\x13\x45\x34\x7d\x35\x6a\xa2\x53\x81\xe1\x7d\x97\x83\xa0\xa6\x4a\x69\x91\xee\x1c\x09\x8a\x4b\x12\x30\xdd\x0c\x39\x22\x3a\xc1\x90\x47\xcb\xf4\xbf\xad\x67\xd4\x7f\xd9\xd0\x79\xfb\x49\x75\x74\x0a\x5a\x47\x39\x20\x45\x33\xa2\x24\x7c\xbe\xfd\xe4\x75\x50\x4a\x65\x07\xcf\xa9\x92\x63\xf3\x04\x7f\x52\x5d\xc2\xca\x07\x71\x93\xb5\x96\x44\x44\x0e\x07\xe5\x56\x75\x45\x2c\x6a\xe9\x6e\x47\x64\xba\xf5\x24\xad\x8d\xcc\x57\x6b\x59\x77\x2d\xcb\xa2\x36\xdc\xa3\x97\xc5\x7e\x76\xfc\xd6\x06\x8d\xcc\x07\xf4\x89\xbb\x63\x5c\x27\x4c\x29\x4a\x77\x70\xe2\x72\xd9\x81\x10\x59\x8e\x83\xc8\x78\x25\xf0\x0f\x79\x2a\xfe\xe6\xc0\x11\xec\x04\x17\x05\xba\x50\x39\x5f\x0b\xb6\x15\x71\x52\x6e\x5b\x8d\x8d\xab\xee\x31\x68\x2f\x95\x96\xdb\x6e\xaa\xb3\x63\x1d\x68\x5f\x49\xfc\xaf\x4b\xf8\xdc\x60\x07\xda\x4b\x88\x5b\x91\x12\xaa\x2f\x86\xc1\xa9\xaf\xcd\x4e\x99\x27\x1a\x48\xf9\x0e\x49\x0b\x73\xc5\x60\xd1\x70\x5b\xb7\xcb\x30\xfc\x5a\x19\xdd\x33\x7b\xbb\x43\xaf\x68\x1c\x55\xb8\xe2\xeb\xde\x14\xea\x18\xb2\xd1\x63\x04\x12\x18\x07\xdd\x6b\x82\xdb\x18\x90\x51\x13\xc8\x05\x0a\xa4\x9b\xf8\x42\xb1\x95\x4d\x34\x7a\x10\x01\x75\x53\x0c\x34\xd5\x4f\xc8\x03\xf2\xa7\xdf\x69\x7b\x67\x4f\xb0\x0a\xef\xb1\x14\xfe\x23\x78\x37\xf0\xf8\x9d\x45\xd3\x60\x0b\xb1\x08\x20\x58\x8a\xb9\x2c\x5a\x0b\xf0\x60\x33\x28\x0b\x5f\xf9\x89\x97\x69\xfb\xe3\x54\x3e\x3c\x8a\x92\x37\x17\x3f\xdf\x32\xec\x6a\x22\x34\xce\xfb\x2a\x1a\x14\xb2\x1f\xcf\x03\xdd\xb5\x38\xc0\x13\xac\x8c\x03\x76\xba\x65\xb4\x36\xdd\x2e\x8a\x68\xe3\x3d\x8f\xaa\x76\x2d\xe9\x99\x51\x3b\xb7\x9e\xa2\x19\xa1\x92\x21\xe6\x2c\x59\x4b\x15\xaa\x0b\x28\x29\xe0\x92\xc6\x18\x20\x15\x16\xcb\x92\x62\x3f\xb0\x67\x24\xab\xd2\xbe\xa9\x56\x28\x04\x6c\x50\x3b\x2b\x77\x6d\x70\xa4\x48\x90\x8b\xc5\xa2\x22\xf1\x4c\x44\xf2\x58\x75\x62\xe1\x6a\x76\xfb\x5c\x56\x3f\xd5\xe8\x24\x8b\xbc\x49\x72\x81\x7c\xa0\xda\x78\x6f\x45\xf2\x68\x16\x6a\x73\x5a\xbb\x09\x0a\x16\xa0\x39\xf7\xe6\x12\xab\x1d\x90\x8a\x3e\x88\x9d\x0e\xb5\xb8\x68\x46\xb1\xae\x09\x99\x98\xf6\xd0\x78\xed\x1f\x0a\xe8\xb8\x45\xa0\x2d\x3e\x6c\x2f\xc3\x8f\xfe\x68\x5e\xee\x81\xf4\x35\x0a\x37\x73\xd0\x67\x72\xf9\x98\x22\x99\x09\xdf\xcf\x34\x86\x1e\xb5\xd3\xa2\x3b\xef\xc3\xb3\x70\xf0\x35\xe7\xdb\xb9\x24\xde\xe1\x60\x93\x33\x06\xa7\x39\x6c\x94\x5e\x8a\x6c\xa7\xbb\x0a\x35\x06\x50\xc3\x59\x9a\xbc\x76\xb9\x7f\x2b\xe5\x38\x97\x24\x98\x0f\x8a\xf7\x14\xc3\x6b\xfd\xe0\x81\x50\x30\x1a\xdc\x4e\xf8\x97\x3f\xc2\x50\xc7\x11\x3b\x1a\x8a\xba\xe1\xe9\x27\x12\xa6\xfb\x2e\x64\x2b\xf2\xca\xe2\xae\x6e\xaf\x2e\x6f\xae\xee\xbe\x18\x3c\xcc\x62\xb3\x46\xe3\xc3\x6c\x3d\xdf\x5c\xbd\xbd\xb8\x7f\x77\xb7\x78\x33\xbb\x79\x0e\x80\x18\xfd\x74\x00\x42\xec\x96\xe8\xcc\x2f\x95\x2c\xc4\xe7\xa3\xf6\xe4\xbc\x94\x0b\x3e\x22\x53\xc1\x49\x06\xf4\xb9\x3b\x58\x68\x93\x8e\xdd\x71\xa5\x13\x37\x1f\xee\x68\x8e\x7d\x7d\xe5\x83\x86\xab\x24\x4d\x21\xcd\xd1\x85\xd7\x29\x29\xc8\x74\x2a\xd8\x1f\x4b\x47\x48\x36\x75\x2e\x97\x15\x3e\x7a\x08\xf9\x6d\xcc\x21\x18\x13\x1c\x33\xd3\x01\x79\x02\xe9\x63\x7d\x8c\xed\xeb\x44\x0a\x5f\x0d\x14\x60\x2d\x25\xeb\xa4\xd9\xa5\x41\x7c\xce\x2c\x56\x72\xbc\x86\xfa\x9a\x76\xc6\x55\xe6\xa7\x75\x3f\xed\x8f\xae\x85\xb8\x88\x13\x89\x8e\x69\x65\x35\xdf\xb6\x4f\xdd\x73\xbf\x04\xa0\xdf\xcd\x48\x72\xb8\x83\x00\x8d\x53\x3f\x90\x34\x10\xa8\x95\xe2\x2f\x27\x1e\x12\x44\xd1\xa8\x55\xad\x9f\x8d\x29\x34\x7d\x9d\xc0\x4d\x05\x27\xe6\x86\x28\x2d\x75\x21\x72\x0a\x9b\x5c\xfc\x7c\x3b\x97\x28\x84\x4f\xbb\x10\xe9\x69\xe0\x27\x10\xc3\xa1\x2a\xdf\xb7\x1e\x4a\x68\xc1\x5e\x62\x8c\x7a\x2b\xb8\xd4\xa8\x3f\x9d\xa6\x22\xf7\x33\x03\xeb\x23\x44\x4c\x1a\x64\x40\x55\xe9\xdf\x27\x09\x62\x05\xab\xd6\xd4\x97\x7e\x25\x11\xde\xfa\x7c\xea\xca\xa2\x05\x80\xe8\x73\xce\x9c\x96\x3c\x85\xa1\xb3\x88\xb0\xb5\xad\x93\xa8\x9a\x35\x30\x68\x2e\xdd\x61\x71\xbf\x4c\xa5\x13\x4e\xa5\x01\xfb\x7a\xb8\x4b\xb0\x8d\x32\x06\xd4\x49\x61\xf8\x6b\x66\x97\xc5\x9f\x02\xfe\xc9\x74\x63\xeb\xae\x53\x13\x5c\x3b\x62\xd7\x41\x85\xb5\xe3\xe0\x9c\x17\x2d\x74\x21\x5e\xd9\xc7\xde\xed\xf4\x6a\xb9\x3d\x0f\x2d\xd7\x85\xc5\xdb\x49\x55\xd8\x04\x7b\x07\x71\x23\xbc\x9e\x79\xc0\x31\x3b\xf4\xd6\x91\xd8\x12\xac\x97\xb2\x38\x52\x0f\xe9\x2e\xc4\x05\x56\x92\x28\xb1\x16\xa1\xa4\x2a\x21\x88\x3d\xc1\xc1\x98\xc9\x77\xb8\xe2\x5e\x75\xce\x39\xb2\xbc\x83\xc0\x0e\xd7\xef\xaf\xaf\x42\xa8\xc2\xec\xfa\xee\xea\x0f\x57\x37\x95\xf4\xdb\x77\xef\x2f\x2a\x29\xb4\xb7\x77\x37\xb5\xcc\xd9\xef\xdf\xbf\x7f\x77\xd5\xc0\x3c\x5c\xdd\xcd\x7e\xac\x14\xfe\xe6\xfe\xe6\xe2\x6e\xf6\xbe\xf2\xdc\xf7\xb3\xeb\x8b\x9b\xff\x0c\xff\x72\x75\x73\xf3\xfe\xa6\xf6\xbd\xfb\xcb\x7e\xf4\x44\xa5\x19\xed\xe1\x1f\x7f\x39\x1b\xf0\x06\xb6\x2e\xe3\xaa\x22\xe1\x11\xab\x78\x20\x08\x6b\xdf\x74\xb4\xd9\xb5\x71\x48\x27\x8e\x0b\xc3\x54\x75\xd4\xac\x3b\xbd\x84\x62\xa5\xeb\x32\x7e\x9c\xd9\x33\xbb\xda\xe2\x14\xa0\xb8\x5e\x07\xd0\x7d\xa5\x16\xb8\xd5\x05\xa4\x20\x61\xd7\x66\x70\x83\xb5\xe6\x9d\xf2\x26\x32\x7e\xf6\x9a\xda\x6f\xec\xab\xa7\xe7\xa9\xd9\x43\xf7\x71\x2a\xf2\x82\xbe\x4a\x07\x1f\xb3\xb9\xc1\x49\x6c\x1d\x05\xfb\x63\xb0\x71\x43\x33\xcc\xcc\x09\xa6\x63\x97\xd6\x5d\x7b\x8e\x43\x3f\xb5\xd4\xd8\xfa\xd3\x47\x9a\x75\xaf\x31\x2b\x8c\xa8\x37\xf0\xc1\x8c\xa9\xf7\x1d\xd7\x0f\x63\xeb\x4d\x1f\x69\xd6\x1b\xdc\xbe\x83\xea\x0d\x01\xef\xa2\x9d\xf5\x62\x84\x11\x0b\x8b\xa9\x56\xcf\xa5\xe4\xba\x47\x02\x49\xc9\x61\x75\x34\x0b\xe0\x79\x8f\x97\x19\x1f\x7e\x91\x01\xb5\x71\xcb\x95\xd7\x28\x93\x6f\xe1\x57\x68\xe1\x32\x17\xfc\x21\x56\x4f\x34\x1e\x75\x64\x28\x1b\x64\xcd\xab\x1d\x64\x6c\xb8\xdd\x22\x40\x88\xda\x7c\x12\x51\x6a\xbe\x78\x80\xc9\x25\x44\xfa\x8b\x3e\x58\xa0\x85\x58\xe7\x0d\x01\xa6\x16\xe9\x47\x67\x2e\xd1\x9b\x6f\xd3\x53\x34\xa3\x6a\x6a\x44\x99\xfe\xd0\x54\xe7\x43\xe3\xe5\xba\x0e\x06\x96\x72\x19\xca\x1c\xc0\x74\xcb\x1c\xce\x4c\xd0\x21\x89\x84\x60\x72\x6e\x0e\x3c\xb9\x88\x12\x2d\x02\xc5\x9b\xd6\x1d\xfb\xd3\x71\xfc\xf8\x05\x2f\x5a\xc3\xae\x83\xe3\xe1\x3c\x2a\x4a\x9e\xb2\x4f\xa5\xc8\x77\x44\x2f\x86\xb1\x4a\xfc\x4b\xc4\x25\x26\x4d\x14\x62\x9b\x41\x12\x6e\x88\xf6\x9f\xcb\x9f\x01\x28\x81\x43\xf0\x42\xb3\x3f\x00\xe4\xc1\x3e\x4c\x9b\xf0\x96\x17\xb0\x17\xff\x19\xbf\xe1\x7e\x9b\xce\x65\x45\x41\x22\x78\xab\x22\x26\x31\x9d\x4b\x4b\xe1\x1e\xab\x48\x4f\xe1\xc4\x37\x55\xf9\xfa\x9c\xe4\x45\xcd\x64\x57\x0f\x4b\xa5\x1e\xce\x85\x3c\x87\x98\x54\x71\xce\xcb\x42\x9d\x03\x5c\x0a\xc7\x5f\x9f\x5b\x15\x42\x2b\xe3\xa8\xcf\x37\xc9\xa3\x80\xff\x37\xdd\x14\xdb\xf4\xdf\x74\xb6\xf9\x7c\xb6\x4e\xf3\x33\xf3\xee\x59\xf8\xee\x99\x7d\xf7\xcc\xbe\x7b\x66\x5e\xc3\xff\x97\xed\xf0\x7a\x47\x7c\xe6\x66\x2f\x9b\xcc\x65\x22\xb5\xc8\x0b\xf0\x7e\x9e\xf2\xa4\xf0\x52\x1d\x3b\xf6\xe2\x7f\xfe\x87\x4d\x73\xfe\x84\xe9\x73\x6f\x78\xc1\x3f\x60\x7c\xf1\x1f\xff\x78\x01\x17\xaa\x98\xdf\x92\xf1\xfc\x53\x29\x8a\xb9\xd4\xc2\x2c\x42\xf6\xff\xcd\x25\xdc\xc0\x6e\x77\x8b\x02\xe3\xae\x18\x83\x8c\x35\xfb\x0f\x2c\x73\x86\x54\x7b\xb1\x36\x25\x75\x20\xeb\x13\x9e\xb6\x08\xd7\x76\x84\xe8\x3f\xa5\x6f\xe8\xf9\x11\xcb\xfa\x53\x5a\x5d\xd5\x56\x2c\x42\x7f\x4a\x61\x03\x4d\x15\xb7\x60\x2d\xe6\x26\x2f\x9c\x93\xa9\x72\x6d\x6b\xa4\x01\x0d\x78\xd6\x6b\xfa\xf6\xb5\x72\x8b\x74\xbf\x36\x72\xdf\x30\x23\x70\x57\xe0\xef\x21\xe0\xf6\x3c\x31\x2b\xe4\x16\x23\xa1\xe0\xb9\x61\xcb\xc1\x27\xa5\xab\x73\x57\x1e\x06\x2e\xf4\x6f\x5f\x9f\x9f\x4f\xd8\x5a\xc3\xff\x2c\x3f\xc1\xff\x00\x7a\xe8\x54\x8c\x95\x8d\xce\x74\x40\xb8\xe6\x28\xef\x1f\x89\x53\xa0\xe8\xbe\x04\x49\x72\x6d\x9a\x7e\x5f\xca\x38\x15\x3e\x1b\xb0\x72\x25\x92\x2a\x2b\x9c\x8d\x81\xb1\xba\x1c\x05\x8c\xf1\x52\x44\xdc\x18\xbe\xc6\xb7\x11\x5c\xaa\x56\x85\x90\x18\x0d\xcb\xbd\x5a\x15\xc7\xc8\x15\xb8\xc5\x00\x85\xe4\x05\x41\xce\x05\xfc\x11\x3e\x02\xac\xc3\x93\xfa\x4f\x6c\xa7\x4a\x22\xd0\x05\x5a\xc8\x58\x44\x29\xb0\x94\x5b\xb2\x0f\x96\x8b\xa2\xcc\x25\xe3\x2c\xe3\x32\xe6\x1a\x66\xe0\x2a\x87\xdb\xce\x9c\xf1\x66\x45\x27\x08\xc7\x55\x65\x01\x14\x36\x88\x2c\x08\x7b\x02\x19\x8e\x83\x3a\x4f\x82\x4a\xe0\x9e\x00\x44\xab\x8d\x17\xa7\x73\x69\xf5\x94\x08\x0b\x87\x91\xb2\x48\x65\x3b\x22\x28\xa9\x77\x7a\x62\x23\x67\xd4\xdd\x13\x8f\x37\xa9\x3f\x3b\x61\x49\xf5\x6a\x0d\xc8\x94\x8b\x40\x11\xd6\xaa\xd6\xbe\x14\x32\x52\xb1\xc8\xf5\x2b\xb3\x0c\x13\x77\xee\x40\xff\x21\xd1\x7e\x30\xc0\x4a\x99\xcd\x8d\xa2\x85\xa6\x78\xa7\x3a\x62\x7a\xa7\x42\xbf\xdb\xe6\xe7\xec\x5f\x2a\xdf\x3a\x0a\xa6\xad\xbe\xf4\x9f\x5f\x14\x11\x13\xe2\x3a\xed\x99\xf3\xf0\x10\x04\x2e\xd9\xd0\xe2\x62\xa1\xe8\xe3\x90\x73\x62\xe5\x37\x93\x02\x14\xbe\x72\xa1\x8b\xb9\xa4\x1d\x78\xc2\x56\x82\x1b\x3f\x6f\xc2\x22\xfd\x88\xc6\x18\xb7\xfb\xe2\x49\x79\x0c\x8e\xd5\x6e\x00\x30\x6c\xa5\x70\x1f\x24\xc6\xc7\x00\x51\xc0\xa3\x02\x01\x06\x5d\x27\x74\xe7\xaa\x40\x67\xb5\x1a\xc4\x03\xfa\xc1\x4a\x01\xd4\x65\x77\x42\x25\x0a\xe8\x89\x1d\x5e\x14\xb3\x7a\x3d\xf0\x07\x63\x78\xb0\x75\x08\x03\x09\x8c\x23\x78\xdc\x84\xa5\xc5\x75\xe6\xef\x70\x43\x3e\x66\x88\xcd\x74\x2d\xaa\x9e\x8e\x80\x0a\x1c\x16\xb7\x30\xaf\xee\x0d\x58\x69\x91\x5b\x9d\x02\x6c\x2b\xf2\xc1\x6d\x92\x3c\x3e\xcb\x78\x5e\xec\xec\xf4\x4d\x93\x25\xd0\x9b\xa7\xc9\x83\x60\x17\x79\xae\x9e\x4e\xdd\x0b\x9d\xa6\xa5\xeb\x84\x7d\x0c\x92\x7d\xec\x29\xbf\x95\x0d\xb2\x1e\xee\x38\x8c\x79\xb2\x2b\xf0\xd1\xfa\x9d\x5c\x14\xf9\x6e\x61\x26\xe2\x36\xeb\xb4\x14\x83\x92\x26\x86\x3b\xb9\xe3\x48\x2d\x6b\x21\x8c\x4e\x52\xcb\xca\xa8\x7e\x3b\xa4\x96\x2d\x7c\x95\x4d\x52\xcb\xd9\xf5\xec\x6e\x76\xf1\x6e\xf6\x7f\x6b\x25\xfe\x7c\x31\xbb\x9b\x5d\xff\x61\xf1\xf6\xfd\xcd\xe2\xe6\xea\xf6\xfd\xfd\xcd\xe5\x55\x3f\x4b\x4d\xb3\xf6\xde\x05\x3f\x63\xe1\x77\x5e\xb3\xbb\x00\xa8\x81\xc9\x06\xe4\x7f\x93\xbe\x1f\xcc\x2a\xb3\x98\x13\xb9\x9e\xc0\x42\x7d\xcd\xae\xf2\x7c\xb6\xe5\x6b\xf1\xa1\x4c\x53\x80\x53\x61\x66\xcf\x65\x2e\xe0\xe0\x39\x61\x1f\x54\x3c\x0b\xde\x83\x74\xc4\xd6\x66\xc0\xf7\x79\x1c\xe7\x42\x6b\xfc\xfc\x84\xbe\x1f\x80\x87\x5c\xaa\x23\x81\xe7\xf8\x23\x4f\x52\x73\x7e\x7b\x0d\x1a\xfb\x6a\xb5\xc2\xf4\x99\x89\x4b\x9c\x62\x9f\x4a\x55\x70\x26\x3e\x47\xc0\xcc\xd4\x3e\x4f\xde\xa9\xf5\x57\x80\x2a\x0f\xb8\x9e\xea\x38\xa4\x80\x8e\xd3\xa2\x7d\x3b\x6f\x37\x04\xd4\xca\x1f\xf1\xd5\xb7\xf8\x66\x7b\x80\xb2\x48\x4f\x90\x29\xfe\x4e\xad\xdb\x55\x35\xc0\xbb\x26\x29\x10\xba\x48\x88\x88\x77\x42\xad\x99\x4e\xe4\xc3\x5c\xfe\xbc\x11\x92\xa9\x32\xc7\x3f\xc1\x31\xdf\xb8\x99\x69\xa9\x37\x02\x64\x36\x27\xec\x49\xb0\x2d\xdf\xa1\xdb\x0c\x67\x02\x27\x05\x00\x53\x06\x76\x11\xf3\x76\x9a\x48\x63\x2d\xb2\xc4\xe6\x25\xd4\x87\xfe\x14\x27\x2e\xcb\x4b\xc6\x8f\xa7\x0d\xed\xdb\x4f\x2b\xf8\x3c\x08\x95\x79\xdc\xa4\x05\x08\x91\xe5\x06\xa5\x41\xa5\x1e\xca\xcc\x33\x18\xbe\xb0\x97\x93\xd0\xdd\x8f\x2a\x89\x59\x5c\x66\x69\x12\x39\xbb\xfb\xa4\xf2\x4e\x9a\x56\x4c\xa0\x19\xbe\xeb\xd4\xd3\xc2\xfa\x1a\xd6\x92\x9d\x13\x20\xe9\x7a\x08\x5b\x9f\x99\xb2\x96\x25\x32\x4a\x4b\xd0\x50\x2a\xb5\xc8\xcf\x8a\x3c\x59\xaf\xc1\x01\xb7\xb9\x7e\xdf\x3e\xa7\xad\xe7\xcc\x3b\x3e\xad\x2d\x4c\x3a\x4f\xd5\x3a\x89\x78\x1a\x82\x9b\x3d\x2a\xc2\x91\x66\xda\x65\x4f\x0a\x93\x90\x07\x61\x2b\xd4\x49\x06\x94\xe5\x02\x78\x5b\x17\x60\xca\x17\x64\xee\x8e\xa9\xf7\x8a\x99\x03\x3a\xd6\x2b\xa4\xb4\xb4\xd7\x0b\x76\x87\xf3\xdf\xb6\x32\x43\x28\xac\x0f\x12\xc4\x4c\x3d\x49\x91\x83\x07\x0b\xb0\x0f\xd3\x52\xa9\xc0\x37\x71\xd2\x43\x0e\x9f\x6c\xa5\xb7\x56\x0e\x88\x8d\x99\xb3\xeb\xe4\x51\xc8\x2f\xcf\x41\x1c\x7c\x20\xe2\xd1\x46\x2c\xac\x5f\x7e\x6a\x93\xe5\x36\x80\x91\xc6\xca\x6a\x00\x84\xa6\xd4\x5d\x6f\xc2\xd1\x09\x6b\xdc\xb4\x5d\x78\x91\xd8\x93\x91\x65\x2a\xb1\x88\x45\xf4\xf0\xc5\x4d\xb3\x07\x59\xd9\x8a\x30\xce\xde\x88\xe8\x81\xdd\xdf\xcc\x30\x1b\x38\x29\x98\x31\x05\x7a\xe3\x35\x4d\x3a\xcf\x6e\x05\x5f\x3f\x03\xb9\xd1\x50\x51\x16\xcf\x2c\xee\xa4\xa8\x4c\x85\x08\x10\x05\xf9\x92\xc6\x48\x52\x2e\x0d\x00\xc1\x78\x61\xa5\x3a\x20\x10\xcf\xf4\x16\x94\x39\xca\x22\x90\xb3\x4a\xf9\x52\xa4\xba\xbd\xc1\x99\x8a\x17\xf6\x9e\xe4\x58\x30\x4f\xa3\x2c\x1b\xc7\xa0\x5b\x47\x9b\xc7\xc0\x8d\xc7\x7a\x47\x0f\xb2\x87\xdf\xe9\x80\x5e\x43\x85\x74\xbf\x70\xae\xe7\x5a\xd4\xf4\xdd\x93\x15\xe9\x87\x60\x42\x3f\x28\x65\x1b\x7b\x69\x4a\xfa\xa0\x62\x82\xe9\x39\x3e\x2f\xe3\x05\x09\x8a\x9e\x78\x5c\x45\x58\x05\xa7\x26\xae\x21\x36\xa0\x0b\xc1\x63\xa6\x56\x14\x4d\xcc\xb2\x34\x01\x22\xd7\x18\x39\xa3\x81\x3d\x43\x57\xd1\xf1\x61\x69\xb6\xb2\x01\xc9\xc7\x07\x0b\xc4\xeb\xbd\x6f\xf4\x97\x5c\xa6\x5d\xd5\x20\x77\xdd\xa7\x3a\x56\x29\xcb\xe5\x23\x1d\x7a\x84\xee\x8f\xa6\xad\x53\xb5\x84\x8e\xea\x06\xc5\xf5\x18\x68\x63\x9d\xf2\x24\x1e\xb3\xbd\xdb\x3e\x79\xef\x5e\xed\xab\xe0\x7b\x1b\xe9\x70\x5f\xb2\xc3\xcc\x88\x66\x3b\xbc\xc1\xaf\xa5\xb1\xef\x3b\x6b\xc3\x05\xa1\x76\x37\x84\xce\x1b\xb7\x24\xf3\xb0\x2a\x9c\x39\xee\x38\x56\x57\xdb\x72\xd4\x40\x37\x89\x51\xf6\xf4\xa5\xe7\x52\xe9\x1f\xe4\x23\xd8\x2d\x70\xe5\x3a\x8a\x8b\x31\x4c\xc1\x76\xe8\x10\xe3\x6b\xfa\xd3\x0f\x62\x25\xf9\x62\xd0\x88\xd6\xfb\xdd\xae\xe2\x63\xba\xfc\x39\x56\x54\x59\x28\x1f\xf2\x87\xf6\xcc\x80\x3f\x33\x4c\xeb\x02\xb3\x31\x8b\x3b\xe0\x02\xd6\x07\xb3\x4b\x73\x04\x08\x75\x14\x0c\x36\xcb\x85\xbd\x3c\xda\x89\xc2\x25\xf7\xa7\x56\x39\x09\xee\x46\x5c\xab\xab\xec\x26\x96\xc0\xc0\x31\x52\xc1\x4d\x06\xf9\x7b\x91\xda\x66\x4a\x02\x36\x05\x53\x95\xe6\x92\x0a\xb7\xfa\xb7\xee\x7a\xa5\x92\xef\x36\xa1\xa8\x16\x66\x4f\x08\xad\xd2\x47\xba\x47\x0b\x88\xe7\x41\x39\xcb\x54\xf0\xd2\x1c\x10\xcc\x71\x18\x2e\x78\xc9\xbc\x03\x1c\xbc\x26\x02\x9b\x8b\x75\xa2\x0b\x11\xa6\x08\x86\xef\x9f\x4c\xaf\xaf\x72\x82\xee\xeb\xfa\x4e\xbd\xbe\x7d\xae\xb0\x59\xb5\x23\xea\xb3\xcb\x44\x3c\x73\xef\xf5\x4f\x86\x5a\x16\xb7\x37\x12\x95\x5d\x00\xe7\x00\x1e\x01\x34\xf2\x3d\x69\x47\x19\xef\x06\x89\x98\x78\xb8\x47\xb5\x99\x21\x5a\x97\x3c\xe7\xb2\x10\x42\xcf\x25\xdd\x3e\x22\x6f\x59\x48\xcd\x51\x43\xc3\x39\x07\x37\x52\xba\x40\x1a\x20\x78\x65\xc5\x93\xb4\xcc\x3b\xcf\x9c\x38\x2b\x0f\xe2\x1e\xe8\xeb\xa5\x4b\x28\x96\xb5\x0d\x9a\xcb\x62\x0d\x56\x91\xa3\xce\xa8\xdf\x1d\x56\x93\x3c\x3b\x9a\x60\x4d\xee\xf0\xf1\x76\x01\xc7\x8e\xc4\xd6\xdf\xe9\x45\xa6\x46\x58\xbc\x3f\xfd\x4e\x7f\x50\x1d\x29\xc1\xfa\x53\x23\x30\xd6\x73\x87\xfe\xa9\x8b\x44\x9f\xeb\x07\xb8\x7e\xda\x77\x1e\xdf\x1f\x64\xff\xed\x6f\xf6\x5f\x52\x75\xda\x2e\x98\xb5\x1b\x2e\xe3\xd4\x9c\x53\x79\x51\xdb\x81\x3c\xd8\xd7\xf8\xc5\x85\x35\x8e\xdd\x99\x5d\x90\x28\xb1\x88\x1a\x59\x76\xfb\xfa\xa9\x96\x9e\xd7\x0b\xa8\xab\x7d\xa5\x9a\x34\xd7\x96\xac\xe1\x77\x76\x12\x7a\x74\x0b\xb6\x7b\x0a\xae\x92\xf5\x37\x70\xc8\xfa\xb1\x69\x29\x23\x5a\x8a\xb4\x7f\x39\xe4\xf7\x91\x8b\x11\x92\x6c\x8c\x31\x0b\x79\x7a\xe7\x92\x74\x60\xf1\xe6\x15\xae\xdc\x90\x8b\x4a\xb3\xef\x5c\xe6\xe5\x77\xff\x6e\x99\x88\x76\x6c\x05\x7d\x0d\x74\x5f\x2a\x8a\xca\x1c\xae\x45\x29\x74\xc3\x04\xee\x4d\x63\xe8\xd4\x2f\x70\x47\x76\x60\x16\x74\x9f\xda\xbc\x07\x17\xab\xab\x34\xea\x0e\x42\x34\xa8\x68\xeb\xf6\x42\x92\x5e\xc9\x75\xc1\x74\x21\xb2\x56\xab\x54\x71\xba\xaa\xa2\xcd\x47\xb8\x5d\x5e\x32\x7a\xa0\xaf\x3b\xc2\x46\x5f\x04\xc7\xe9\x3f\xde\xbe\xbf\x66\x19\xdf\x01\x2e\xac\x50\xa4\xb6\x0d\x64\x8c\xf5\xf5\xbb\x6f\x04\xaa\x8d\xaf\x2e\x36\xec\x53\x0b\x30\x6d\x8f\xdd\x72\xa7\xa6\x5f\xb3\x43\x30\x67\x68\x4a\x9a\xa5\x9c\xab\xf4\x2c\x4b\xb9\x0c\xa0\xbf\x7a\xca\x6a\x9f\x0f\xef\x7a\xdd\xad\x0f\xa1\x69\xa0\x02\x10\x4e\xa1\xb9\x90\x97\xad\xe0\xd0\xaa\x0e\xf5\x51\xd7\xbb\x9d\x36\xa2\x17\xf4\xf6\x23\xd2\xe9\xf3\xc8\x2c\x13\x64\x16\xb0\x57\xd6\x0e\xf5\xc0\x35\x00\x12\x47\x0c\x54\xbf\x68\xf6\x5c\x5a\x4d\x54\xf5\xa4\x59\x8c\xdc\x0b\x65\xa2\x37\x10\x9f\xc4\x0b\x01\x00\x07\x91\x7d\x41\xe4\x42\xce\xa5\x36\x03\x0a\x31\x4d\xf1\x28\x28\xb0\x51\xb9\x8c\x9b\xbd\x79\xe7\xee\xf7\x71\x90\x48\x88\xab\xa3\xeb\x03\xc7\xec\x98\x03\x4c\xab\x8a\xf3\x7e\x8e\xfb\x1f\x79\xd6\x97\x35\x76\x74\x89\xfb\x46\xc9\x31\xcf\xd4\xbd\x4e\xd0\x97\x05\x6d\x9e\x4a\xea\x58\xd8\x7b\xf7\xf2\x48\xf3\xd3\x4a\x7a\xbd\x9f\x5f\x7f\xf0\x21\x6c\x58\x26\xe0\x08\xdb\x13\x90\xc0\x39\x6c\x8d\xf3\x97\xcd\x2a\x07\xe5\x13\x60\xaf\xc2\x48\xda\x94\xdd\x0a\xc1\x3e\x42\x4f\x99\x8f\x7d\x24\x65\x2d\x80\x0b\x16\x3c\x69\x15\x3e\x81\xa7\x67\x72\xa5\x8e\x33\x06\xf9\xba\x01\x47\x3b\xaa\x57\xda\xeb\x79\x2c\xe0\x0d\x52\x19\xe5\xf3\xe6\xdf\xb7\xb6\x6b\x0f\xbc\xed\x83\x3f\x93\x53\x56\x9e\xad\xa9\xd9\x9f\x61\x88\x0f\x13\xfe\xaf\x4c\x12\xd3\xca\x09\xb2\x16\x3f\x48\xf5\x24\xd1\x17\xa0\x2f\xb1\x97\x66\xfd\xc1\x06\x86\x01\x54\x74\x0b\x4a\xb4\x86\xaf\x80\x46\xf9\xc2\xfd\x9b\xdd\xe2\x5d\x11\xd6\x19\x74\x42\x34\x38\x3f\xa4\xf0\x01\xd6\xfc\xe5\xc5\x84\x7d\x3f\x61\x97\x13\x36\x9d\x4e\x5f\x4d\x98\xe0\xd1\xc6\xd6\x08\x5f\x41\xe4\x58\xc1\xd7\xa6\x6c\x52\x4e\x58\x05\x1f\x00\xd9\x1b\xb3\x59\x59\xb6\x30\xee\x9f\x0a\x22\x0f\xb6\x09\x98\xc3\x48\x09\x17\x74\xaf\x1e\x6d\x54\xe2\x2b\x05\x10\x4d\x11\xa9\xdc\x82\x3c\x75\xa1\x72\x0b\x58\x7b\xe4\x39\x4f\x24\xa4\x76\xf3\x26\x5c\x97\xbe\x1c\x90\x3b\x8b\xcf\x7c\x0b\xed\x4f\xa4\xe3\xb7\x34\xdd\x74\xe7\xea\x5f\xec\x32\x0a\x48\x3f\xe5\x49\x51\x98\xdd\x59\xcf\xe5\x2d\x7b\xfd\x1f\xec\x22\xcb\x52\xc1\x2e\xd8\xdf\xd9\xf7\x5c\x72\xc9\xd9\xf7\xec\xef\xec\x92\xcb\x82\xa7\xaa\xcc\x04\xbb\x64\x7f\x37\xdd\x66\xca\xbb\x56\x66\x3b\xdc\x4d\x18\x67\xb2\x4c\x71\xd7\x7f\x69\xc1\x60\xaf\x5c\xbb\xb8\x1f\x9d\xa5\x28\x9e\x84\x90\x4c\xab\x2d\x6d\x85\x7f\x71\x77\x12\x3a\x91\xeb\x54\x14\x34\x1f\xaa\xb0\x3d\xfc\xc0\x19\xb4\xf4\xf5\x5c\xba\x58\xde\x5f\x4c\x8d\xff\xc2\xfe\xce\xae\xcb\x34\x35\x55\x32\x86\xc6\x4c\xa4\xd7\xcc\xa6\x51\x08\x39\x7d\x4a\x1e\x92\x4c\xc4\x09\x87\x44\x0a\xf3\xaf\xf3\x3b\x18\xed\x45\xe9\x39\xf3\xc2\x35\xed\xb4\x57\x8e\x31\x3d\xcf\x92\x94\xed\x24\x78\xec\xe0\xf7\x9c\xfc\xaa\xaf\x8e\xf7\x88\x3c\x53\x28\xad\x07\x72\x58\x51\x37\x27\x94\xfa\x39\xc8\x04\xd4\x36\x5b\x5b\x56\xcb\x56\x10\x6e\xea\xc7\x1a\x59\x50\x8e\x3a\xf9\x19\x72\x80\x8c\xcf\x50\x93\xdb\x10\x21\xa9\xa4\xb9\x83\x2f\xe9\xa9\x7e\x06\xdd\x0a\x39\xf1\x91\x9f\xaa\xd2\x59\x95\x2e\x56\xc9\x20\x8d\xb1\x5a\x65\xef\x29\x76\x81\x09\x6a\x66\x99\x26\xe9\xb9\x59\xaa\xe7\xd7\x4a\x9a\x63\xab\x4e\xd6\x48\x4f\x04\x30\x22\x0d\x84\xac\xd6\x29\xb8\xab\xba\xac\xc1\x12\x00\xff\xc0\x54\x09\xa1\x6d\x85\xb1\x02\x66\x08\xd2\xdd\x5c\x9a\x37\x68\x47\x02\x98\x7b\xe2\x58\x6c\xf1\x6b\x56\xcd\x9c\xbe\x45\x06\x39\x28\xbc\x65\x82\xf5\xe5\xd0\x1e\x31\xe1\x28\x65\xeb\x88\xa8\xf8\x75\xc0\xe0\x46\xa5\x59\x7a\x0f\xbc\xf7\x5c\x8a\x54\xc9\xb5\x99\x15\x5d\x46\x40\x6d\x79\x72\x0c\xb0\x24\xac\x02\x16\xd6\x59\x03\xb3\x59\xd2\x23\x34\x24\x66\x9f\x4c\x62\x7f\xbe\xd7\xe5\xd2\xf8\x11\x2e\x22\xeb\x76\x43\x6a\x5c\x57\x42\xf1\x71\xf7\xcb\xf7\x5a\xe4\x40\xb3\x8c\x08\x07\x17\xed\xc7\x8d\xd3\x93\x6d\x60\x8b\x86\x2d\xaa\x5e\x60\x6c\x7b\x28\x84\x6e\x13\x1a\xa9\xd5\x03\xe6\xe3\xd7\xc4\xc8\x3e\xa7\x1c\x7c\xab\xf6\x3b\x3c\x67\x4a\xa3\x3f\x8d\xd5\x77\xb7\xbd\x77\x0a\xf8\xe0\x27\x94\x7b\x59\xa8\x95\xcd\xa4\x1c\xbe\xa7\x37\x04\x77\x86\xa1\x54\x42\x92\xed\x50\x98\xa6\x39\x71\x3a\xf3\xc1\xe5\x82\x6e\x24\x86\x55\xb6\xde\x61\xef\xe5\x5b\x7c\xfd\x83\x4a\x93\xa8\x1f\xf4\x66\xb7\xab\x8d\x7a\x6a\x41\x11\x2d\x05\xa0\x40\x29\xfe\x43\x95\x42\x0f\xbd\x10\x51\xe1\x6f\xdc\x9a\x8d\xfb\x5f\x0d\xb4\xd9\x7f\x06\xc7\x88\xb2\xeb\x36\x10\x7d\x74\x77\x78\xb0\xb7\x02\xc1\x26\xf0\xca\x63\xac\x15\x72\xe9\xe0\x6e\x3b\xe2\x14\x82\xae\xf4\x3c\x18\xe8\xa7\x8d\x4a\xcd\x59\x4c\xc6\x44\x56\x3a\x97\x99\xc8\x23\x05\x00\x15\xcc\x83\x57\x2c\xda\x24\x69\xec\xc5\x5b\x5e\x02\xa2\x17\x70\x77\xaf\x48\xa1\x4e\xb8\x3b\x66\x5b\x7c\xcf\xae\x6b\xa7\x9d\x55\xa9\x3e\x2e\x02\x75\x3a\x88\x5e\xdf\xb4\xff\x99\xa0\x64\xd8\x15\x44\x2f\x54\xbb\x2d\x34\x9d\x5e\xa9\xcf\xa8\x08\x2f\xe8\x48\xaf\xac\x0e\xa6\x3d\x38\x15\xb5\x71\xa5\x69\x56\xef\x4a\x20\x9d\x45\x14\x15\x02\x48\xb4\x80\xea\x6c\x05\x47\x5f\xcc\x53\x40\xd2\xa0\xce\xa5\xbf\x1f\x7d\xa1\x43\xbf\xac\x75\x9c\x91\x53\xd5\x82\x00\x27\xec\x45\xa5\xa1\x2f\x80\x94\x54\x2a\xf8\x1e\xdd\x61\x55\xba\x06\xa6\xeb\x84\x25\xc5\x5c\x26\x1a\x67\x66\x2e\x52\xf1\x68\x6a\x17\x06\x8b\x09\xeb\x62\xcf\xce\xb6\xd9\x80\x23\xe7\x36\xfd\xd8\x89\x9b\xc3\x22\xcc\x43\x72\x4b\x0e\x81\xe9\x58\x68\xe3\x37\x82\x2c\x87\xf8\x6c\x16\x40\x02\x77\x21\x08\xff\x88\x85\xb4\xf5\x03\x54\x08\xea\xa7\xce\xe5\x6c\x05\x39\xa0\x90\x79\x1a\xc7\x78\x0a\xb5\x42\x0d\x8e\x69\x2c\xa1\xe0\xb0\xa2\x33\xb9\x1d\x08\x12\x58\xc4\x95\x24\x1e\x45\xbe\x2b\x20\xa8\x0b\xfd\x2a\x05\x2f\x36\x2c\x29\x26\x40\x11\x67\x2d\xe5\x5c\xf2\x98\xf4\xa9\xa9\x38\xd3\x35\x30\xef\x7b\xc6\x99\x7e\x5f\xaa\xc7\x3e\xc7\xf6\x58\xd4\x17\xae\xea\x2c\xe5\x72\x81\x3b\xc8\x57\xc0\x7d\x05\xda\x97\x5d\x57\x9d\xe5\x72\xe1\x68\x6d\x4e\x52\x4f\x67\xef\x6f\x2a\x8a\xb4\xc6\x8f\xb5\x1f\x9a\xe0\x64\xf0\xb4\xd6\xf6\x78\xe2\xe2\x34\x84\x2e\xc8\x99\xbd\x81\x1d\x6e\x05\x3c\x24\x8c\xd7\x90\x08\x76\xb6\xee\xc3\x84\xd9\x19\xf0\xad\xe2\x93\x86\x8c\x7c\x6d\x0f\xa9\x0f\xfb\x78\x68\x4c\xc3\x43\x3c\x08\x1e\xb3\xa7\x5a\xcf\x0b\x91\xe9\x8c\xa3\x34\xa1\x32\xb6\xb5\xc1\x75\x1f\x26\x4f\x08\x8c\xc3\xb9\x30\x4f\xbb\xb6\x69\x78\x0e\x53\x2d\xd8\xca\x53\xc6\xa8\xc1\x4e\x0d\x8d\x94\xf8\xdc\x6b\xa8\xd7\x94\xcd\x24\xb3\xee\xde\x84\xbd\xc0\x89\xa5\x5f\x50\x08\x92\x04\x72\xe9\xee\x3c\xa6\xd5\x43\xd9\xaa\x75\x28\x06\xe6\x0c\xf8\xe5\x86\x37\x41\xbd\xd4\x86\xcf\xda\x2f\xdf\x27\x90\xb3\x70\x48\x5a\x3a\xde\x22\x2e\xb1\x00\xda\x24\xf1\xd8\xbd\x43\xa7\x5d\xf9\x68\xb6\x6f\xb0\xbd\xef\x62\xdf\xdb\x17\x4d\x17\x65\x25\xed\xa7\xf6\x77\xa6\xf2\xb9\xb4\xa5\x51\x48\x52\xa3\x96\x52\xbd\xa8\x00\x42\x4d\x3e\x7f\x30\x53\x01\xc4\x60\xe5\xb3\x40\x95\xcd\xf3\xaf\xd6\xad\x00\x80\x22\x96\xc2\x4b\x7b\x4f\xd9\x85\xff\x9a\x71\x3c\xcc\x04\xdf\xe2\x36\x5f\xe7\x68\x4c\x53\xd3\x29\x49\x61\x29\x21\x83\xf4\x06\x5d\x02\xb1\xe9\xaa\x34\xc6\x28\x60\x7f\x9d\x4b\xd3\x79\x6c\x95\x00\xee\x97\xfa\x65\x2e\x7f\x54\xda\x66\xd3\x6b\xdf\x1f\x16\x43\x4a\xdd\xf6\xc2\xa9\x88\xd1\x1f\xde\xc0\xa6\x4d\x31\xff\x9a\xac\x3c\xe4\xb5\x10\x25\xc6\x4e\x95\xb9\x6f\x54\xc4\xe5\x5c\xfe\xd5\x74\x0f\x8a\x3a\x3b\x45\x74\xb5\xc2\x25\x6c\x65\xf8\xd9\xcb\x8f\x58\xe8\xcb\x7f\x7f\xf5\xf1\x15\xe2\xd0\x4b\x0d\xc2\x8d\x93\xea\x06\xe2\x88\xc0\xcb\x34\x85\x9b\x68\xdb\x02\x47\x46\xe1\x3f\xc1\xfb\x60\x39\x74\xa8\x5b\xc8\xaa\x8b\x31\x64\xa1\xf7\xcd\x60\x1f\x7c\xbe\x60\x11\x2f\xa2\xcd\x99\xf5\xe5\xc8\x8c\xd9\xdd\x8f\x86\x0f\x15\xdc\x8c\xa7\xd5\xce\x85\x6d\x0e\x9c\xf9\xd6\xb1\xf3\x55\xe6\x8b\x69\x02\x00\x6b\xee\xea\xc2\x30\x8e\x3c\x14\x27\xa7\xd7\x24\xf7\x7e\x9e\x7b\xdc\xca\xb2\xf9\x13\x27\x45\xc9\x25\xdf\x8a\x98\xbd\x80\x8c\xa9\x17\x76\xf0\xe7\x32\x5b\x4e\xd3\xdd\xaa\x20\x8a\x27\xd3\x29\x53\x10\x30\xda\xb3\xcb\x2d\xe2\xe6\x31\x69\x4f\x67\x77\x1e\xb4\xda\x7d\x1d\xd7\x37\xee\x4b\xc3\x1d\x16\x8c\x71\xb9\xde\xb9\xad\x42\x84\xaa\x4c\xea\x5c\x3f\x4c\xd8\x32\xe7\x12\xb4\x27\xe2\xd0\xa9\xf2\xab\x13\x0e\xcf\xc8\x9f\x64\x53\x28\x24\x4f\x77\x80\x1d\x9f\xcc\x25\x92\x4d\x01\x2b\xf1\x2e\x4a\x93\x88\xad\x73\x9e\x6d\x6a\x7e\x90\x78\x14\xb2\xb8\x22\x76\x05\x0b\x52\x3f\xf6\x6a\xd9\xb1\x35\x1c\xc5\xb9\x37\xab\x7a\x3b\xdc\xd3\x50\xf8\x08\x2b\x26\xaa\xd0\x89\xda\x82\x5a\xdd\x04\x9f\x90\x14\x1a\xf0\x71\xb1\x3f\x97\x4b\x95\x5a\x42\xb3\xd9\x1b\xa6\x72\xd0\x12\x28\x14\xfd\x29\x89\xbb\x76\xb1\x44\xc6\xe2\xf3\x51\xac\x02\xfd\x1b\x92\x75\xef\xcc\x67\x02\xca\xfa\x7a\x63\x61\x15\xe5\xc2\x6c\x16\x85\x3d\xc1\x35\x9e\xd2\x75\x84\xdd\x45\x5a\x6c\x00\xf6\x86\x80\x6b\xdf\xa9\x5b\xbe\x63\xd1\x86\xcb\x75\x70\x84\x06\x14\x92\xc8\x54\x8e\x9a\x7b\x8f\x40\xdf\xa5\x72\x9b\xb5\x49\xb9\x88\x84\xfa\x76\x01\x6f\x04\x5b\x2a\x9b\x70\xc8\xd7\xeb\x5c\xac\x21\x91\x7e\x2e\x2b\xd9\xd4\x40\x5d\x66\xe9\xfe\xf1\x3b\x7d\xc9\xa8\xa7\x61\x74\xe8\x3a\xb5\x14\xf9\xce\xa5\xf2\x91\x60\xa5\xeb\xba\x46\xb7\x4e\x58\x22\xa6\x13\xf6\x1b\x0f\x30\x15\x91\x92\x2e\x17\xb0\x23\x11\xac\x16\x9a\xde\x63\x8b\x5a\xa8\x1f\xda\xeb\x0e\xbf\x35\x64\x2f\x5b\x27\x4d\x6f\x32\x65\xc1\x8b\x72\x84\xad\x24\x69\xe3\x4b\xf3\xf2\x2d\xbe\xdb\x8b\xc1\xe6\x99\x31\x6f\x96\x76\xc7\x3c\x6f\x2c\xbc\xf9\xb6\xa7\xe5\x6d\xeb\xeb\xbd\x81\xce\x54\x75\x07\x3a\x4f\xe1\x52\x5a\x6e\x85\xfd\xb1\xce\xb4\x83\x2f\xa0\xa7\x4d\x63\x43\x99\x16\x8c\x4a\x30\x73\x5d\x3f\x6e\xb5\x58\x80\x2c\x57\x71\x19\x89\xd8\xac\x5c\xf0\xdb\x11\xb9\xe1\x68\x0b\x2a\x46\xb2\x6d\x43\xa8\x70\xaf\x80\xc0\xf5\x97\x3a\x1b\x0f\xa2\xbb\x75\xdd\x7f\xdf\x71\x2e\xb6\x9e\x49\x5b\xa7\x87\xeb\x13\xfb\x29\x1f\xb9\x4f\xb9\xcf\x57\x49\x6a\x55\x9e\xac\x13\xc9\x0b\x95\xb3\x97\x2e\x39\xf1\x95\x53\xb6\x81\x5e\x3c\x85\x99\xa8\x74\x11\x9a\x89\xf6\xb3\x17\xe0\x99\x45\xbc\x18\xc7\x9d\x35\x96\xe1\x19\x26\xa9\x79\x4a\x17\x7c\x9b\x85\xb4\x8f\x4e\x37\x98\x7a\x26\xc5\x4e\x60\xb6\x62\x10\xe3\x4b\xb4\xcf\xc1\x9a\x4b\x8a\x8c\xe3\xb8\xa9\x3c\xe4\x2d\xee\xdc\x9b\xb3\xb2\x58\x1c\x48\x65\x82\x2f\x8f\x0b\x90\xd0\x75\xf9\x8f\x3c\xeb\x27\x87\xe0\x74\x34\xc6\x24\x14\x27\xa6\x6c\x3d\x95\xea\xfc\xec\x57\x06\x18\x49\x56\x59\xbf\xe2\xbd\x79\x67\x2f\x34\xfc\xb9\xa5\x72\x10\x80\x81\x40\x96\x3c\x0d\x5e\x05\x1e\x41\x9d\x59\x33\xbb\xb8\x65\x94\xb8\x4c\x55\x19\x33\x32\x6a\x74\x5d\x9c\x4f\x71\x77\x04\xda\xca\xe9\xb4\x8b\xc3\x6b\xa4\x62\xa9\xb3\x3f\xf0\x5e\xfb\x0a\x84\xdf\x3a\x2c\x70\xef\xd2\xa7\x9e\x7d\xb6\xa1\xa7\x9e\x86\xb1\x77\xe6\x78\xd4\xd8\xbb\x68\x2d\x70\x68\x8d\x0b\xe4\xc1\xb9\x29\x89\x53\x58\x6f\x61\xa0\xbb\x85\xe5\xb3\x72\x81\xa8\x1f\x8e\xfe\x9c\xcd\xb4\xed\xff\x54\xc6\x73\x21\x8b\x05\x7c\x71\xdc\xc7\xe0\x23\x1f\xe0\xf5\x8a\xc3\x34\x28\x60\xf9\x5f\x77\x0a\xe3\xd0\x96\x30\xe3\xbf\xd9\x2d\xc5\x5e\xb4\x55\xb5\x37\xbb\xe3\xcb\x04\xb0\x31\xc1\x9d\x9d\x1b\xb8\x8e\xe1\xa2\x06\x1d\xd0\x7b\x41\x83\x2a\xa6\x7d\x50\x83\x7c\xed\xe1\x4a\x15\x4a\xa1\x30\x14\x65\x78\x1a\x53\x6b\xff\x16\x90\x68\x5f\x57\xfe\x0d\x84\x87\x66\xfc\x52\xf6\x37\x91\x2b\x9f\xb6\x80\x41\x95\xb0\xe0\x5e\x7f\xfd\x70\xfd\x4f\xf4\xc7\x51\x79\x32\x94\x5e\x83\xbf\x10\x27\x09\x9e\x7c\x97\x3b\x7b\x1c\xe9\xa2\x53\x17\xd1\xa2\x83\x67\x7f\x50\x55\x82\x83\x67\xc8\x9b\x9f\xd4\x36\x33\xbb\x40\xcf\xe1\x5c\x4d\xac\x7f\x5b\x9e\x11\x0e\x8d\x20\xaf\xf5\x4b\x86\x29\x34\xe2\xbf\xfe\xf2\xdf\xd3\x2e\x65\x67\xa8\xfa\x58\x58\x8f\xab\xfc\xdb\x3c\x11\x32\x86\x4b\x43\x1e\x37\x25\x60\x64\x25\x8a\x5c\x31\xcf\x66\x1a\x9e\x24\xbb\xaf\x7d\xab\xd5\x0b\x9c\x44\x5f\xe0\xe6\xd9\x1b\x59\xb7\x7c\x2b\xf7\x52\x5d\xae\x84\x5e\xc4\x3b\xc9\xb7\x4d\x2d\xec\x67\xad\xe3\x2e\x11\x69\x0c\x55\xa4\xaf\xef\xbb\x3d\x89\x45\xf4\x30\xd6\x27\x38\x98\xc0\x5a\x44\x0f\xec\x87\xbb\x1f\xdf\xa1\x5e\x61\xa2\xe7\xf2\x9a\x17\xc9\xa3\xb8\xcf\x53\x17\xb6\x26\x46\x92\x3c\xb5\x6b\xa4\x4a\xa8\x1a\x90\x77\x58\xf6\x55\xeb\x38\x84\x7c\xd7\xdb\xdd\xd9\xb2\x8c\x1e\x44\x71\x9e\x73\x19\xab\x2d\x36\xe3\x5c\x97\xab\x55\xf2\x79\x5a\xf0\xbc\x83\xfc\x1a\xe3\x08\x5f\xd1\xcf\xf5\x92\x26\x85\xf7\x79\xd1\xd5\x7d\x82\xec\x44\x12\xca\xad\x38\xb7\x70\x04\xce\xf9\x56\x00\x7b\x19\xab\x12\xc7\x43\x29\x98\xf0\x07\xfa\x6a\x5a\x13\xd2\x5b\x91\x7a\xeb\xc7\xc0\xb9\xff\x18\xd4\xaa\xaa\x20\x6c\x2b\xe5\x35\xcb\xb6\xfc\x01\xcf\x87\xeb\x5c\x68\x3d\x61\x5a\x41\x8d\xe7\xd2\x62\xa6\x6d\x5e\x0f\xe0\x33\x80\xff\x30\xdd\xb1\x48\x65\x09\x48\xbc\xb9\x76\x6d\xd4\x13\xc4\x93\xc3\xf4\x36\x50\xe5\x2c\x65\x91\xa4\x8c\xaf\x0a\x0a\x36\x03\xd9\xb3\x15\x77\xd1\xd3\xb9\x84\x2b\xc3\x08\x9a\x0f\x57\xf9\xee\x9a\xc0\x35\x42\xb3\x15\x8f\x92\x34\x29\x88\x82\x06\x92\x61\xb8\x69\xaf\xd9\x0f\x4c\x5f\xe6\x7c\xc7\x53\x7f\xb0\xe2\x69\xe9\x33\xfa\xce\xb4\xa8\x53\x9c\xfd\x2a\xfc\xdf\xca\x39\xb7\x6f\xd7\x3d\xe2\xc0\x7b\xcc\xe6\xd3\x3c\xd2\x3a\xc5\x51\xbf\x8f\x27\xb1\xc5\x89\x56\x5c\x5d\xcf\x3c\xeb\xb6\x1f\x88\x9d\x77\x1c\xaa\xa7\x56\x27\xa6\xf9\x85\x11\xbd\xd7\xee\x84\x7d\xa1\x70\x41\x17\x07\xee\x90\xea\xdb\x68\xf7\x07\xa5\xd2\x63\x23\xde\x3c\xb5\x06\x75\x01\xd2\x89\xc7\x1c\xd7\x70\x02\xb8\xc0\xd1\xec\x8d\xbb\x7b\x75\xa4\xb2\x55\xc1\x15\x82\x05\x51\x15\xc0\x50\x40\x25\x7a\x10\xc3\x3a\x6b\xb9\x7c\x1f\x89\x7c\x86\x32\x10\xb5\x63\x5d\xe7\x66\x08\x3e\xc8\x65\xe7\xbe\x8e\x40\xbc\x57\xab\xe1\xa8\x60\x18\x0a\x1d\xd6\x3e\xe5\x02\x63\x21\x41\xa7\xeb\xc7\xe0\xdb\xb6\x3f\x51\x5e\xd9\xec\x4f\xe4\x25\xcf\x65\xe0\x11\x23\xab\x8e\x85\x96\xbb\x5e\x6b\x8b\x97\x55\xa6\xe1\xd1\xf1\xb2\x63\x58\x98\x7b\x2f\x54\xde\x84\x7a\x4a\x80\x09\x88\xd4\x76\x99\x48\x9b\xaa\x4c\x41\x64\x70\xe5\x2f\x2c\xc9\x9d\x0b\xf8\x5b\x97\x1c\x59\xf6\x6b\x7d\xef\xdc\x88\x90\x2f\x30\x34\x59\xfb\x8e\xbb\xe1\xf9\xe9\xb4\x84\xd1\x1d\x28\xd5\x7a\x0b\x12\xcd\x78\xfa\xc4\x77\x1a\x34\x47\x85\xb1\x8a\x2b\x0c\x9c\x56\xeb\x3f\x09\xb6\x77\x4b\xa0\x48\x02\xde\x25\x49\x11\x53\x5b\x12\xe4\x6f\x10\xa9\x55\x57\xf5\xbc\x38\x2f\x74\x7b\xe7\x7c\x9d\xbb\x90\xbc\xf7\x2e\x04\x2f\x23\xff\x39\xae\x3f\x7a\x82\xac\x47\xc6\x7a\x83\x6d\x12\x3d\x32\x82\x8b\x40\x02\x0f\x98\x63\xf3\xed\x09\xdb\xf2\x44\xd2\x32\x40\x05\xab\x58\x2c\xcb\xf5\xba\x33\x04\xf9\xed\xdf\x65\x54\xd7\xc9\xbf\x7c\xac\xb9\x97\xd9\xe9\x14\xd1\xd8\x99\xfd\x12\x86\x87\xcd\xb9\xea\xcb\x04\x60\xbf\x62\xb4\xbb\xf5\xca\xa9\x31\x89\x4e\x13\xed\x9e\x0d\x89\x76\x5b\x8c\x0f\xa4\x5a\xd1\x71\xd5\xe2\x30\x7e\x09\x83\x7f\x99\x30\xf8\xa0\x49\x81\xf4\x1e\x8b\xa4\xea\xa0\xf7\xd4\xf0\x40\x96\x30\x47\x27\x09\xb5\x22\x35\x70\x2d\x64\xac\xd9\x92\x47\xcf\x40\x1b\x06\xbb\xe3\xf1\xf1\xb6\x3d\xe0\x92\x5b\xb5\x15\x0c\x3e\xa5\x51\xfb\x80\x51\x36\xdb\x04\x50\x8b\xa6\x81\x1e\x91\x41\x78\x0f\xd8\x4e\x11\x19\x12\x7b\xa7\xfa\xa5\x14\x4f\xcc\xec\x56\x93\x10\xc6\x15\x0c\x0f\x88\xe2\xbc\x32\xde\x61\x05\xf3\xed\x52\xf7\x73\xb1\xe6\x79\x0c\x99\x06\xb4\x24\x53\x1e\x3d\x98\xff\x86\xfa\xd1\x17\x09\x6a\x66\xf9\xb9\x11\xfe\xe8\x4b\x4b\x64\x94\x03\x29\x13\xa1\xda\x7c\xfd\xf0\x75\xcd\x78\x94\x2b\x8d\x41\x19\xa7\x25\x09\x99\xae\xe0\xc0\x3e\x26\x71\xc9\x53\xfc\x62\x67\x24\x9b\xeb\xa3\xf8\xc6\x2f\x02\xd9\x17\xf1\x39\x4b\xb9\xac\xae\x49\x6c\x2e\x70\xd5\x24\x3d\x33\xdf\x51\xae\x1d\x53\x95\xd1\xd4\x91\xb3\x40\x71\xd5\x2f\x2b\xf4\x8e\x73\xc1\xe3\x5d\x48\x4c\x95\x48\xd2\xdd\xe7\xf1\x36\x91\x66\xe8\xad\xaa\x97\xb3\xaf\x96\xe0\x17\x01\x97\x20\x7e\x91\xa6\xb5\xa5\xaf\x99\x14\xc6\xa5\xe2\x79\x92\xee\xc0\x8b\xce\x72\x71\x16\x7c\x27\x58\xdf\x94\xef\x01\x54\xc5\x44\xa2\x50\x6a\xb1\x2a\x53\xf4\xb5\xe1\x34\xea\x1a\x40\xeb\xf0\x7e\x36\x31\xdb\x6c\x41\x94\xf3\xc1\x87\x51\xc8\xe9\x14\xd8\xf9\xe6\x39\x70\xd0\xfd\x8d\x27\x4c\xcb\x01\xda\xbb\x51\x4f\x36\xc1\xe7\x89\x7b\x04\x67\xd7\x5e\x72\xb2\x98\x7d\xbf\xd7\x65\xcf\x3b\x76\x55\x62\xa7\xc7\x95\x8b\x1a\xfa\x4d\xc4\x6e\x25\x26\x12\x9a\x43\x1a\x88\x3e\x0e\x5a\x6a\xcc\x13\x32\x63\x08\xd6\xda\x1e\xeb\xab\x61\x50\xe6\x5a\x97\x68\x25\xd9\xbc\xfc\xf5\xaf\x7f\x2b\xd8\xaf\x21\x71\x8a\xbc\x6f\xbc\x6d\x01\xca\x34\x2c\x1d\x0c\x94\xfb\x80\x40\x3e\xb5\xc6\x88\xb0\x36\xc0\xa3\xcd\x52\x06\xc8\x20\x8f\x36\x4c\x97\x4b\xc4\xc3\x71\x0a\xd8\x73\xe9\x18\x49\xdf\x29\x80\xb6\xe1\x3e\x66\x6b\xff\xbf\x24\x3c\x8d\xac\xe0\x73\x99\x29\x24\xcd\x05\x20\xe1\x52\xb0\x2d\xcf\x1f\x40\xe4\x8d\x94\xbc\x19\x2f\xd8\xcb\x44\x4c\xab\xc1\xea\x57\x95\xfa\xd0\xf5\x00\x92\x61\xb2\xbc\x94\xd2\xaa\x56\x30\xe3\x86\xf9\xc8\xf1\x64\x2e\x97\x65\x78\xd2\xaa\x84\x9e\xfd\xd4\x82\xf0\x33\x18\x59\x05\x0c\x09\x54\x29\xae\x03\x85\x71\x36\x20\x06\x3d\x97\xcf\x14\x84\xee\x0a\x6f\x7d\x20\x8f\xc3\x86\xae\x02\x94\x36\x34\x37\x14\x56\x84\xe1\xc0\x69\x0f\x5b\xfa\x07\x50\x57\x9c\xb0\x1f\x92\x47\x31\x61\xb7\x19\xcf\x1f\x26\xec\x0d\x5e\x26\xfd\x51\x2d\xf7\x46\xac\x4e\x11\xb5\x75\x07\xab\x63\x19\xef\x31\xfe\x39\x09\x98\x99\x83\x0b\xcc\x66\x7c\xd1\xe2\xdb\x0a\xe0\xb5\x8f\x1e\x84\xec\x34\x96\x16\x95\xdc\x49\xdf\x7d\xaa\x73\x77\x37\xa8\xba\xf3\x14\x5e\xdf\xb7\xbd\x87\x45\x39\xab\x6d\x38\x3f\xe3\xd9\xa0\xf6\x34\x8f\x1e\xce\xc0\x57\x55\xb9\xcb\xab\xd6\x74\xb9\x86\xb3\x02\xd1\xcf\xe8\xa3\xd5\x32\x91\x87\xba\xe2\xf6\xc3\x8b\x4c\xa9\xb4\xd5\x23\x3f\x69\x07\x36\xe2\xf3\x43\x3b\x6f\x86\x19\x5c\x3a\xf4\x53\x6d\x2f\xfa\x58\xaf\x8f\x0c\x63\x18\x18\xa8\x58\x60\x36\xc5\x25\x5c\x91\xfa\xee\x08\x25\xfd\x8c\xad\x41\xcc\x39\xba\xa6\x56\x01\x96\xdb\x33\x43\xc4\x5d\xd0\x3b\xc4\x3a\x37\xa2\xd0\xba\xf9\x9d\x8e\x83\x02\x94\xbb\x48\xda\x78\x57\xc6\x2e\x2e\x94\x4e\x6f\x5c\x2d\x61\xcd\xed\x96\x6e\xb3\x7e\xf6\xb1\xce\xda\x14\xe7\x45\x94\x72\x3d\x10\x47\xdc\x6a\x77\x66\x54\xd0\x25\x94\x33\xdc\x66\xfe\x00\xb7\x00\xdb\x81\x2e\xd4\x5c\x5e\x38\xd6\x55\xef\x7c\xbb\x03\x03\x9a\x59\x3c\x2a\x35\x86\x06\x53\x89\x3c\x45\xef\x84\xe9\x32\xda\x40\xb2\x54\xd5\x4e\x85\x76\xab\xb9\x62\x27\x73\x69\xdc\x57\x54\xfe\xe2\x00\x77\x79\x02\x91\x98\xe4\x6f\xc2\xf9\xc7\x84\xc9\x0f\x5d\xe2\x25\x37\x43\xa3\x64\xeb\xf1\xc1\xe6\xad\xe1\x4e\xe7\x37\xf7\x32\x33\x9e\xc3\x74\xee\xdd\x9e\x04\xf5\xfc\xed\x76\x4b\xe7\x11\x1d\x36\x2c\x3c\x3e\xd5\x2c\x6d\x9a\xac\x44\xb4\x8b\x1a\x34\x54\x15\x90\xd9\xe9\x6e\x41\x0e\xbb\x04\xe8\xa3\x2b\x6a\x8f\x9d\xfc\xdc\xa0\xd7\x60\x5d\xc8\x9c\x7f\x4e\xbc\x70\x07\x63\xce\xbf\x7a\x1c\x77\x0f\x88\xe6\x17\x68\xed\xbf\x64\x4c\xb1\x9f\x2c\xe7\x57\xe1\xff\x5a\xfb\x65\xd1\xab\x10\xc3\x20\xaf\xb9\x15\x33\xfb\x6d\xd1\x03\x24\x71\xfd\x90\xd7\x64\x09\x18\xb6\x14\x88\x84\x21\x76\x04\x11\x23\x52\x82\xe8\x55\xdb\x5f\x97\xa9\xd2\x65\xde\xbf\xf8\x6f\xaa\xb5\xb6\x5f\x6f\x21\xcc\x85\xc9\xb6\x5d\x0a\xe0\xfe\x18\x0a\x8e\xc3\xc7\x16\x7f\x55\xcb\x05\x20\x41\x8f\x5b\xe1\x6d\xc5\x59\x09\x2e\x87\x27\xa0\xaa\xfa\x13\xd7\x6d\x26\x80\xb7\xcd\x87\x36\xfc\xf9\xa5\x36\xc3\x5c\x60\x79\x2e\x2d\x8d\x3d\xe6\x9d\xe7\xb9\x00\xbe\xed\x5c\x80\xb2\x1c\xcb\x78\xee\xe0\x58\xf6\x84\x1d\x44\xd0\x3c\x64\x2f\xcc\x15\x85\x94\x6f\x8a\xdb\x2d\x85\x90\xae\xb7\xc7\x1c\x4d\xcd\x69\xb3\xde\xfb\x84\xc5\x7d\x12\x2c\xc2\x34\xaf\x0e\x15\xcc\xc6\x7b\x41\x4c\x11\xfc\x96\xb5\x08\x7d\xa8\x9a\x6b\x51\x59\x9a\x95\xfb\xfd\x6f\x2a\x1f\xa9\xf5\x04\x5b\xa3\xb8\xab\x84\x9f\x07\x21\x22\x4e\x71\xdb\xf8\x81\x17\x1b\x0c\x8c\x6e\x55\x21\xd0\x66\x22\xd7\x16\xce\x17\xbc\xb3\x5b\xa6\x6a\x09\x92\x6e\xe6\x97\xae\xe3\x73\x44\x4b\x7b\x50\xd7\x35\x07\x6c\x88\x65\x30\xd6\x04\xf2\xd5\x73\xa1\x81\xb6\xa8\x79\xc7\x3f\x34\x7b\x62\x5c\xf0\xb6\x59\x5d\x63\xf4\xdf\x34\x82\xb7\x4d\x9d\x0b\xb3\xac\x01\x4a\x7f\x75\x40\x7e\xdf\x55\x98\xf3\x6d\x9c\x03\xa2\xfc\x26\x10\x0d\xb2\xfe\xd6\xda\x6b\x95\xc3\xe7\xf2\x02\x7f\x09\x36\x01\xee\xf5\x9c\x1c\x5a\x9d\x44\x62\xdd\xfa\xc3\x24\x70\x76\x11\xe2\xa3\xe9\x54\x34\xf1\xe7\x55\x08\x2e\x4d\x20\xe7\x5a\x16\x49\x6e\x4e\x23\x1a\x9c\x2d\x5d\x2e\xcf\x3c\xbd\x8f\xca\xc1\x3d\x03\xf6\xa7\x8c\x43\x68\x0c\x58\xbf\xce\x5a\xb6\x61\xbc\xd7\xf1\xba\x2c\x96\x06\x93\xa7\x64\xfc\xe1\x54\x8d\xfc\x12\xae\xed\xae\x1c\x73\x38\x82\xa8\xac\xe5\x36\xc0\xcd\xae\xcf\x5e\x80\x72\x14\xe4\x87\xdf\xe0\x71\xfc\x6b\x6f\xe0\x21\x96\x64\xe8\xd6\x0d\xc7\xef\xb9\xfc\xff\xed\xde\xd0\x9d\xf2\x30\x62\xa6\x9b\x9e\x31\x5b\x54\x67\x2a\x46\xa5\x6e\x36\x24\x19\x38\x81\xdd\x95\x6a\x4c\xf9\xb6\x52\xb9\x0b\x90\x04\x3a\x29\x8a\x92\xf9\xe1\xd7\xc7\x44\x07\xa4\xf9\xf0\xb5\x5b\x21\xd8\xeb\x5c\xac\x5e\x7f\xcc\xc5\x6a\x61\x47\x7a\x0a\x0d\x9a\x9a\x16\x35\xa9\xf3\x07\x4e\x0e\x9d\x29\xd9\x4e\x21\xba\x87\xe2\xb7\xd6\x24\x2c\x27\x68\x53\xb2\x62\x5e\x4e\x13\xa2\x08\x65\x14\x09\x11\xd7\x39\xfd\x1b\x35\xfb\xe2\xdb\x5c\x17\x8e\x76\x00\x50\xb5\x43\x86\xf2\x5f\x7f\x7b\xab\xf4\xd9\x90\xed\xed\xae\x1a\x4f\xb1\xc6\x9e\x4b\xb7\xe1\x75\x27\xa6\x7c\xd9\xdc\x19\x18\x40\x9d\xf1\x27\x49\x6c\x50\xa3\xae\x32\x86\x6d\x6b\xb5\xe8\x52\xb0\xad\x35\x10\xc4\x7e\x95\x49\x7b\x73\x94\x38\xcd\xc6\x49\x20\x77\xce\xd3\x34\x54\x26\xf1\xf1\xdf\xb9\xf4\x51\x42\xe3\xb5\xa6\xa9\xbd\x12\xaa\xf8\x1b\xc4\xfd\x15\x03\x5d\x81\x98\x58\xea\x22\x22\xfd\x24\x34\xc1\x19\x46\xe3\x7c\xcc\x6c\xdf\x6a\x3e\xd5\x21\xf2\x1b\x63\x6d\xd8\x83\xdb\xc1\xcf\x2e\x1e\xc4\x6e\x74\x5d\xdb\x6f\xce\xbd\x94\xef\x06\x16\xb3\xb5\xb2\x11\xcf\x73\x9b\x83\x44\x5f\x65\xe6\xac\xb4\xe2\x51\xe5\xda\xac\xa3\x9e\x1b\x11\x3d\x64\x2a\x91\xa3\x6d\x51\x50\x1f\xe3\x48\x15\x66\x3f\xf3\xa5\xb9\xd3\xe1\xa0\xcd\xb1\xe2\x4f\x62\x43\x34\x80\xd3\x2c\xb0\xde\x53\x1a\x72\xe6\xb4\x8a\xbb\xa7\xdd\xa9\xe3\x17\xc2\xef\x0d\xcf\x10\x8b\xed\xbf\xa4\x40\xab\xd1\xf4\x28\x2b\xb7\x58\xbc\x91\x9b\x3a\xb0\xb3\x39\xab\x10\x81\xb6\x76\x29\x84\x20\x7f\x89\x0c\xfd\x12\x19\xfa\x27\x8f\x0c\x7d\xc9\xb0\x10\x20\x0b\x9f\x33\x26\xd4\x4e\x36\xf0\xcb\xf6\xfa\x6d\x6d\xaf\xc8\x29\x8a\x99\x71\x63\xba\x96\xaa\x7a\xe3\x5f\x3f\xae\x73\x05\x0b\x6a\xa2\x47\xf4\xf3\x17\x74\x0f\x5a\x6c\xd5\x38\xbb\x3b\x78\xbf\xea\x47\x4f\x78\x07\xc4\x1f\x06\x82\x44\xfa\xc6\xf2\x0d\x83\xc0\x45\x38\x75\x8c\xe1\x19\x7c\xfd\xd2\xcd\x55\xf2\x4d\x5d\x22\x0f\x71\x30\x8c\x65\x74\xd7\xca\xd7\xd6\x22\x4a\x81\x06\xbc\xc7\x32\x06\x1c\xd6\xbc\x78\xa1\x5d\xaf\x57\x2d\xa0\x45\xb8\xbf\x4b\x74\xf1\x53\x4d\x21\xf1\x30\x89\xc5\x67\x43\x42\xd9\xaa\x62\x35\x83\x37\x7a\x01\x3c\x37\x55\x88\x8d\x5a\xd9\x39\x07\x9b\x9c\xd5\xc4\x32\xf5\x1e\xb3\x5f\x7d\x74\xfd\xf5\x11\xfd\xe8\xa7\x9c\x67\x99\xc8\x2d\x6e\xa4\x01\xed\x01\x81\x29\xf8\x0a\x28\xc4\x6d\x04\xca\xd4\xd6\xbc\x11\x63\x4a\x6a\x45\xc3\x63\xd0\x75\xd3\xf6\x91\xbb\x2e\xd3\xb4\x73\xe4\xf6\xeb\xd6\x5c\xdf\xbf\x7b\xb7\xf8\xe9\xe2\xdd\xfd\x95\x6d\x7e\xab\x0e\x4c\xf0\x58\x67\x9f\xb8\x9a\x50\x9f\x78\xa5\x39\xf3\x59\x61\xa5\x72\x95\x6f\x35\x1e\x46\xca\x34\xad\x6a\x04\xcd\xe5\x47\x2a\x07\x60\xd9\xa8\x7f\x68\xfa\x8d\xf5\x76\x5c\xf5\xfb\xf0\xd8\x47\x53\xf8\x47\x7c\xf7\x8c\xf9\x46\xbc\x06\x25\x3b\x52\xc8\x6a\xef\x57\xca\xf9\x38\x62\x39\x20\x08\xb8\x6b\x39\x9c\x5a\x05\xed\xb0\xe5\x71\x2f\x81\x7f\x59\xc4\x56\xbc\xec\x24\xab\x03\xfb\xee\x63\xf5\x3e\xc1\xd9\xf2\x18\x83\x6b\x50\xee\x04\xb5\xab\x40\x91\xd7\xcb\x3b\xcd\x25\x9e\x55\x4d\x9d\x0a\xd5\x5d\x27\x36\x23\x34\x55\xca\xe5\xba\xe4\x6b\xa1\x27\xcc\x7e\x7c\x2e\xb7\xc9\x7a\x83\x6c\x12\x65\xe6\x71\xc9\x9c\x49\x20\x1d\xa9\x4d\xa1\x1a\x2e\x39\x91\x73\x49\x6d\x92\x6b\x5f\x3c\x62\x64\xff\x78\xeb\x9a\x43\x60\x74\x2c\x88\xe4\xb7\xe4\x5c\xe2\xe0\x22\xcb\x85\x8d\x58\x81\xff\xce\x8b\xfa\xd4\xe5\x10\x63\x46\x89\x6a\x63\xd3\xd7\x10\x3b\x9b\x4b\x97\x88\x8a\x1e\x3e\xb5\x21\x90\x69\xc0\x2a\xed\xb7\x27\x76\x30\xec\x9a\xa0\xba\xb5\xcf\xfa\xa3\xf7\x00\xb3\xe0\x16\x23\xb4\x76\x9b\x66\x6c\xe0\xa9\x8e\x07\x86\xa3\x8b\x9d\x00\xb2\x8f\xdb\x6b\x63\xdb\x85\xcf\x74\x42\x90\x54\xb9\x4c\x47\x54\x09\x9f\xef\xad\x14\x9a\xe4\xfe\x4a\x0d\x38\x32\xde\xd4\x96\x96\x99\xa6\x7d\x9f\x5d\x2a\xd5\x31\x2e\x27\x0c\xfc\x56\x2a\x45\x2f\xec\xeb\x8c\x32\x2a\x0e\x99\x2f\x03\x52\xf2\xea\x5d\x64\xad\x4f\x5f\x85\xd2\x44\x1f\x54\x1d\xef\x3f\x0d\xae\x91\xf3\x10\x68\xb3\x1b\x65\x61\x69\x9f\xab\x18\xd8\x0e\x33\x49\x71\x3f\x2b\x5a\x9b\xa0\x79\x31\x8b\x07\x15\x65\xcd\xfc\x9f\xb8\x49\x34\xf1\x23\x37\x81\x4a\x46\x65\xae\x8d\xb9\x24\x7b\x47\x56\x5b\xe5\x8c\xcf\xa5\x55\x3f\xb0\xe6\xf8\xc2\x82\xa8\x72\xf7\x57\x4c\x73\xcc\x90\x3d\x1c\x3c\xd6\x82\x29\x29\xac\x35\x9c\x4b\xab\x74\x3c\x61\x7c\xa9\xad\x80\x30\x97\x3b\xa7\xea\x9b\x38\xc9\x36\x2e\x19\xa0\xd3\xf6\xdb\xbc\x9a\x1b\x50\xd9\xe7\x7f\x65\xfe\xef\x1f\xbf\xfa\x7f\x01\x00\x00\xff\xff\x4c\xbc\xab\x57\xc2\x97\x04\x00") +var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x23\x37\x96\x2f\x0c\xff\x3f\x9f\x02\xb7\xe6\x46\xd8\xee\xd1\xe2\x76\xcf\xf4\xdb\xa1\x89\x1b\xef\x43\x4b\xac\xb2\xae\xb5\xb5\x16\x7b\xfc\x0c\x27\x68\x30\x13\x24\xd1\xca\x04\xb2\x01\xa4\x54\x74\x47\x7f\xf7\x27\x70\xb0\x24\x72\x23\x93\x8b\x24\xaa\x9c\x33\x11\x6d\x15\x33\x13\xeb\xc1\xc1\x59\x7f\xe7\x1f\xff\x82\xd0\x07\xf9\x8c\x67\x33\x22\x3e\x9c\xa0\x0f\xdf\x1d\x7d\xfb\xe1\x40\xff\x46\xd9\x94\x7f\x38\x41\xfa\x39\x42\x1f\x14\x55\x09\xd1\xcf\xa7\xc9\x42\x11\x1a\x27\xc7\x92\x88\x27\x1a\x91\x63\x1c\xa7\x94\x1d\x65\x82\x2b\x0e\x1f\x22\xf4\xe1\x89\x08\x49\x39\xd3\xaf\xdb\x3f\x11\xe3\x0a\x49\xa2\x3e\xfc\x0b\x42\xff\x84\xe6\x65\x34\x27\x29\x91\x1f\x4e\xd0\x7f\x9b\x8f\xe6\x4a\x65\xae\x01\xfd\xb7\xd4\xef\xfe\x0f\xbc\x1b\x71\x26\xf3\xd2\xcb\x38\xcb\x12\x1a\x61\x45\x39\x3b\xfe\x9b\xe4\xac\x78\x37\x13\x3c\xce\xa3\x8e\xef\x62\x35\x97\xc5\x1c\x8f\x71\x46\x8f\x9f\xfe\x78\x8c\x23\x45\x9f\xc8\x38\xc1\x39\x8b\xe6\xe3\x2c\xc1\x4c\x1e\xff\x83\xc6\x7a\x8e\x7f\x23\x91\xfa\x27\xfc\x23\xe6\x29\xa6\xcc\xfc\xcd\x70\x4a\xfe\xe9\xdb\x41\xe8\xc3\x8c\xa8\xe0\x9f\x7a\xb6\x79\x9a\x62\xb1\xd0\x2b\xf2\x91\xa8\x68\x8e\xd4\x9c\x20\xd3\x0f\x72\x4b\xc4\xa7\x08\xa3\x13\x41\xa6\x27\xbf\x0a\x32\x1d\xbb\x85\x3e\x32\x0b\x7c\x01\xa3\xb9\x49\x30\xfb\xf5\xc8\x2e\x13\xb4\xcc\x33\x22\x60\x6e\xe7\xb1\x6e\xfd\x13\x51\x03\x68\xb6\x78\x3f\x7c\x5b\x10\x99\x71\x26\x89\x2c\x0d\x0f\xa1\x0f\xdf\x7d\xfb\x6d\xe5\x27\x84\x3e\xc4\x44\x46\x82\x66\xca\xee\xe5\x00\xc9\x3c\x8a\x88\x94\xd3\x3c\x41\xae\xa5\x70\x30\x66\xaa\x7a\x63\x71\xad\x31\x84\x3e\xfc\x6f\x41\xa6\xba\x9d\x7f\x3d\x8e\xc9\x94\x32\xaa\xdb\x95\x86\x7e\x82\xd1\x96\xbe\xfa\xe7\xbf\x34\xfd\xfd\xcf\x60\x46\x19\x16\x38\x25\x8a\x88\x62\xc7\xcd\xff\x55\xe6\xa2\xf7\x48\x77\x5e\xec\x63\x75\xe0\x95\xd9\x5e\xe1\x94\xe8\x3d\xd1\x3b\x65\xbf\x80\xbf\x05\x91\x3c\x17\x11\x41\x13\x92\x70\x36\x93\x48\xf1\xda\x1a\x50\x68\x41\x93\x57\xf5\x89\x20\x7f\xcf\xa9\x20\x7a\xaf\x94\xc8\x49\xe5\xa9\x5a\x64\x30\x48\xa9\x04\x65\xb3\x70\x29\xfe\x79\xd0\x69\x6a\x86\x2a\xd7\x98\x99\xf9\xa0\x75\x62\x23\x36\x70\xaf\x44\x98\xa1\x09\x41\xfa\x2c\xd2\x98\x08\x12\x23\x2c\x11\x46\x32\x9f\x48\xa2\xd0\x33\x55\x73\xca\xf4\xbf\x33\x12\xd1\x29\x8d\xdc\x9a\xed\xcf\xda\xc0\x9f\xcb\x57\xe6\x41\x12\xa1\x07\xfe\x44\x63\x12\xa3\x27\x9c\xe4\x04\x4d\xb9\x28\x2d\xcf\xd1\x88\xdd\xcf\xf5\x3a\xa4\x13\xca\xe0\xe4\xe9\xb5\x74\x14\xf2\x6f\x6e\xb9\xfe\x0d\xe9\xfe\x50\xce\xe8\xdf\x73\x92\x2c\x10\x8d\x09\x53\x74\x4a\x89\xac\xb6\xf6\x6f\x1c\xfa\xc7\x09\x3a\x44\x7a\x9d\x89\x50\xb0\xde\x9c\x29\xf2\x59\x49\x74\x88\x12\xfa\x48\xd0\x57\x17\x54\x2a\x34\xb8\x39\xff\xea\x00\x7d\x65\xce\x0b\x02\xde\xf4\xd5\x2b\xac\xb0\xff\xfb\x7f\x82\xa3\xa7\xf0\xac\x7a\xe8\x3e\x0c\xf4\x69\xbe\x33\x57\x43\xd1\xc2\xff\xfc\x4b\xd8\x8e\xdd\xaf\xe5\xfc\xb6\x60\xb6\x96\xd3\x76\xe5\xaf\xb0\x4c\x65\xd6\x2a\xf5\x0e\x6d\xcb\x59\x75\xbb\x55\xd6\x2a\xdf\x17\x6f\xd5\x53\x78\x69\xfe\xba\x0d\x73\xc5\x0a\xa8\x1e\x53\x66\x0e\x89\x3f\x33\x42\xea\x73\xe2\xa8\x77\x4f\x58\xca\x36\xbc\x36\x98\x59\xc0\x6e\x1d\x17\x0d\x56\x65\x0f\xe7\x9d\xd0\x94\xae\xda\xdf\x73\x16\x6b\x91\xcb\x32\x3b\x96\xa7\x13\x22\xf4\x32\x38\xb6\x07\xb3\x9d\x68\x36\xa8\x72\xc1\x48\xdc\x61\x9a\x7f\xcf\x89\x58\x2c\x99\xe7\x14\x27\xb2\x6d\xa2\x94\x29\xa2\xe5\xdb\xca\xe3\x29\x17\x29\x56\xf6\x85\x3f\xff\xfb\xba\x0b\xa1\xf8\x23\x59\xb5\xff\xe7\x66\x37\x23\x2c\x81\x0c\xd2\x3c\x51\x34\x4b\x08\xca\xf0\x8c\x48\xbb\x22\x79\xa2\xe4\x01\xbc\xa6\x65\x6a\x22\x0e\xfd\x0d\x04\x3d\xb8\x9b\x37\x97\xf0\x0b\x9a\x7a\x01\x92\x91\xcf\x0a\x5a\x1a\x31\xb8\x7b\x61\x89\xc2\x1b\xe5\x05\x96\x72\x33\x9a\x91\x5c\xa8\xf1\x64\x71\xf4\x48\x6a\xfd\xb6\x52\x0e\x66\x08\x2b\x25\xe8\x24\x57\x44\xcf\x5b\xb7\xe1\xee\x4e\x60\x8f\xe6\x82\xee\xc2\x1a\xde\x6e\xc2\x31\x15\x24\x82\xb9\xad\x73\x60\xfc\x57\x7a\xde\x5a\x7f\x59\x98\xd9\x3f\x92\x05\xc8\x23\x0d\x2b\xe0\xb7\x7c\xc4\x46\x0c\x1d\xa2\xb3\xe1\xdd\xe9\xf0\xea\xec\xfc\xea\xd3\x09\xfa\x7e\x81\x62\x32\xc5\x79\xa2\x0e\xd0\x94\x92\x24\x96\x08\x0b\x02\x4d\x92\x58\xcb\x1c\x7a\x30\x84\xc5\x94\xcd\x10\x17\x31\x11\x2f\xb7\x8c\x95\xa7\x84\xe5\x69\xe5\x5e\x81\xdf\x8b\xd1\x57\xbe\xd0\x22\x86\x7f\x54\x7a\xf2\x3f\xb5\x05\x86\x19\xeb\xbe\x83\xd6\x5e\x4d\xa8\x89\xe6\x34\x89\x05\x61\xc7\x0a\xcb\xc7\x31\xf9\x4c\xa2\xdc\xdc\xc9\xff\x28\xff\x30\xd6\x92\x29\x8f\x49\xf9\x97\xd2\x3f\x0a\x51\x68\xed\x4f\xbd\x96\xba\xf6\x97\xa0\xd3\x76\xfb\x0e\x7e\xa1\x71\xe3\xdb\xf0\xcb\x8a\x39\xb8\x77\x96\x0c\xd6\xbd\xd2\x3a\x2a\xf7\x82\x95\xf8\x1a\xdf\x11\x44\x89\xc5\x18\x2b\x45\xd2\x4c\xad\xa9\xaf\x63\x94\x68\xb9\x72\x99\x1c\x79\xc5\x63\x32\x74\xfd\xfd\x8a\x8c\x38\x4b\x62\x34\x59\x58\xae\x35\x25\x82\xb0\x88\xb4\xb7\x70\x8f\xe5\x63\xd1\xc2\x2a\x61\xb4\xd4\x9f\xfc\xc8\x85\xfe\xfc\x3d\x08\xa4\xa5\x81\xbf\x86\x4c\xba\xe9\x89\xfb\xe2\x2c\x04\x1b\xf2\x8f\xde\x9e\xb0\xfd\x4a\x76\xb5\x3e\x70\x81\xe4\x42\x2a\x92\xae\xb4\x43\xbc\x9f\x85\xb0\x17\xc4\xbe\x0e\xb8\x72\x47\xfd\x0e\x4e\x7d\xf9\xc6\xed\x8f\xf7\x1a\x4b\xb6\x2b\x2b\xe2\xbe\xcf\xd3\xf9\x70\x96\x4f\xf5\xce\x6d\x5f\xe0\xc4\x78\x17\xd3\x2c\xc9\x82\xbb\x1e\xe4\x0b\x99\x1b\x5a\xf7\xca\xad\xf6\x18\x06\xb0\x42\xd1\x2c\xdb\xa1\xfd\xf9\xd3\x9f\x86\x16\x1a\x63\x8e\x53\x73\x2a\x03\x63\x15\x8a\xb8\x30\xb2\x60\x6c\xcf\xbb\xd1\x35\x07\xf7\x83\xbb\xe1\xfd\x09\x1a\xa0\x18\x2b\xac\x0f\xb8\x20\x99\x20\x92\x30\x05\x7a\xbc\xfe\x5e\x2d\x50\xca\x63\x92\x18\x8d\xf3\xa3\x96\x7c\xd1\x19\x56\xf8\x14\x2b\x9c\xf0\xd9\x11\x1a\xc0\x3f\xf5\xc7\x54\x22\x9c\x48\x8e\xb0\x23\x2b\x12\xbb\x26\x30\x8b\x1d\x6b\xc1\x28\xe2\x69\x46\x13\x6f\x83\xf7\xc6\x15\xca\x62\xfa\x44\xe3\x1c\x27\x88\x4f\x34\x57\xd1\x1a\xf2\xf0\x89\x30\x95\xe3\x24\x59\x20\x9c\x24\xc8\x76\xeb\x5e\x40\x72\xce\xf3\x24\xd6\xed\xba\x51\x4a\x9a\xd2\x04\x0b\xad\x82\x9b\xd1\x5e\xdb\xb6\xd0\xfd\x9c\xf8\xb1\xc2\xb8\xf4\x6a\xa6\xf8\x91\x48\x44\x15\xca\xb8\x94\x74\x92\x14\x67\xfe\xe1\x1c\xc1\xb8\x4f\x2f\xce\x41\x9f\x8f\x14\xe2\x86\x87\xba\xce\xad\xfd\xc6\xf5\x98\x62\xc6\x08\x74\xcc\xd5\x9c\x08\xdb\xbd\x7d\xf9\xad\x55\xf3\x87\xab\xbb\x9b\xe1\xe9\xf9\xc7\xf3\xe1\x59\x5d\x37\xbf\x1f\xdc\xfd\x58\xff\xf5\xe7\xeb\xdb\x1f\x3f\x5e\x5c\xff\x5c\x7f\x72\x31\x78\xb8\x3a\xfd\x61\x7c\x73\x31\xb8\xaa\x3f\xb4\x64\xd5\x59\xcd\x0f\x47\xb6\xe6\xd9\xea\x6d\x9a\x2f\x65\xd3\x3c\xf8\x72\x8d\x9a\x53\x9a\x80\x0e\xda\xd9\xa0\xe9\x6d\x08\xf6\x4b\x94\x61\x29\x8d\x64\x64\x46\x70\x34\x62\x97\x5c\x68\x06\x36\xe5\x9a\x47\x68\xe9\x49\x89\x3c\x52\x94\xcd\xfc\x47\x27\x68\x94\x7f\xfb\xed\x9f\xa2\x0b\xca\x1e\xe1\x2f\xb2\x8f\x8b\xd3\x5b\x7c\x7b\x8b\xef\xef\xcb\xe2\xab\x45\x9f\xe3\xd0\xd0\xbb\xdb\x90\x21\x2d\x5c\xb0\x2c\x57\x20\x4a\xf0\x5c\xe9\x3f\x75\x97\x40\x1e\x4b\x02\x87\xba\x19\x14\x3f\x11\xe5\x5f\xd4\xa2\xcd\x7b\xb0\x23\xfe\xcc\xc5\xe3\x34\xe1\xcf\x7e\xe0\x9f\x88\xd2\x63\xbf\xb5\xbd\xf4\xa1\x44\x7d\x28\xd1\xdb\x86\x12\xed\x95\x31\xef\xe5\x99\x5f\xd9\xf2\x67\x38\x60\x8b\x27\xab\xd5\x51\xd5\xe2\x87\x0a\xdc\x4c\xaf\xc2\x35\xcb\xce\x9c\x15\x9c\xb3\xf4\xf2\x7b\xe1\x9e\xa5\x41\xbf\x3e\xe7\xfc\x5d\xf8\x5b\x7a\x77\xca\x86\x0b\xf5\x2e\x19\x6c\xc7\xbb\xe3\xd5\x9c\x21\x2f\xcf\xf0\x6b\xb1\x0d\xeb\x04\x33\xac\x11\xbd\xd0\x39\x5c\x61\x45\x7c\x42\x63\x40\x42\x53\x04\x42\x3d\xe4\xa0\x31\xc6\x60\xbb\xa0\x82\x4d\xef\xa6\xee\x61\x02\x9f\x88\x2a\xbd\xfc\x5e\xee\xa6\xd2\xa0\x5f\xff\x6e\xfa\x9d\x46\x07\xf4\xe1\x00\x2f\xb8\x74\x5f\xfa\x8d\xb6\xbf\x0e\xff\xdf\x81\x87\xbf\x77\xe9\xaf\xb5\x46\x5f\x96\x0f\xff\x4b\x75\xda\xbf\x4f\x2f\x7d\xef\x96\xef\xdd\xf2\x6f\xe1\x3f\x79\x7f\x6e\xf9\x97\x55\x4f\x8b\xe3\x35\x76\xb4\x60\xf5\xb5\xe0\x50\xfe\xb3\x83\x93\x06\xfe\x72\x2a\xdf\xba\x41\xe3\xad\x3a\xdc\x59\x31\xbe\x21\x1c\xa1\x5f\x2d\x21\xad\x50\xe7\x6a\xdf\xbd\x07\x75\xae\x3e\xe8\x97\xd7\xe1\xde\x8c\xf9\xbe\xd0\xe5\xf9\x4e\xd8\xc0\xfa\xb7\xe5\x17\x2c\x93\xf7\xb2\xf8\xcb\x67\xe3\xef\xcd\x84\xde\x8f\xec\xfd\x06\x17\x6f\xc7\x5b\x77\xe7\x39\x59\x0d\xd7\x6c\x70\x3b\xad\xca\xb0\xaa\x7e\x4d\x89\xfc\xee\x5d\xde\xb7\xaf\x91\x64\xd5\x5f\xb8\xfd\x85\x6b\x9b\xea\x2f\xdc\x2f\xf8\xc2\xdd\x3b\xf8\x9b\xbd\x89\x00\xed\x83\xc8\x7b\x60\x8c\x3e\x86\x7c\x87\x8b\xd3\xc7\x90\xf7\x31\xe4\xbf\xb3\x18\xf2\x6d\xb4\xa7\x4d\xb1\x28\xdf\x42\x8f\xea\xd5\xa8\x5e\x8d\x0a\x7f\xef\xd5\xa8\x5e\x8d\xea\xd5\xa8\x2f\x1c\x45\xb4\xd7\xa1\xba\x2f\x44\xaf\x43\x75\x5e\xaa\x5e\x87\x5a\xb2\x38\xbd\x0e\xd5\xeb\x50\xbf\x2f\x1d\x8a\x3c\x11\xa6\x24\x24\xa3\x85\x1a\xc5\x87\x8c\xcb\x76\x4d\x28\xe4\x0e\x0d\x5a\x10\xb4\x59\x4e\x0a\x83\xc0\xa5\x5f\xd1\x1c\x4b\xc4\xa3\x28\x17\x95\x33\x50\xd5\x83\x4e\x05\xc1\x8a\x40\x0b\xfa\xc3\xf7\xa0\xff\xd4\xa7\xfb\x5a\x31\xf8\x13\x1e\xd7\xa8\xdd\x1c\x84\xa6\x27\xcb\xe5\x91\x9d\x4d\xfd\xef\x39\xe9\xa6\xfe\xbd\x20\x51\x2b\x2c\x1f\x77\x4c\xd4\xa5\x5c\x8b\x8d\x88\x1a\x5a\x78\x2f\x44\x5d\x9f\xee\xef\x86\xa8\x9b\xa6\xbe\x0f\x44\xfd\x6c\xf3\xf8\x77\x4c\xd8\x35\x78\x80\x8d\x88\xdb\xb7\xf2\x5e\x08\xbc\x79\xda\xbf\x1b\x22\x6f\x9b\xfe\xdb\x12\xba\x4f\x91\xec\x4c\xe2\xf7\x82\xce\x66\x5a\xcd\x00\x0d\x4f\x93\xe2\xea\x1a\x41\x45\x52\xe0\x4a\xb2\xf6\xaf\xbe\x07\x92\xf6\x83\x35\x63\xff\xdd\xd0\x72\x6d\xde\x7b\x42\xc4\xc7\x82\x44\xfc\x09\xea\x85\x75\x23\xe6\x5b\x02\x14\x0c\xfc\x3a\x13\xe4\x89\xf2\x5c\x26\x8b\x43\x91\x33\xe4\x98\x3f\xf2\xcd\x1b\x6b\xf5\x33\x4d\x12\xc4\x99\xd6\xbf\x14\x16\xca\x3d\xd6\xfa\xb7\xe0\x29\x9c\x8a\x04\x4b\x85\x1e\x19\x7f\x66\x68\x8a\x69\x92\x0b\x82\x32\x4e\x99\x3a\x1a\xb1\x73\x86\x6e\xcd\x18\x21\x6f\xe0\x00\xe5\x52\x9f\xa5\x08\x33\xc6\x15\x8a\xe6\x98\xcd\x08\xc2\x6c\x61\x13\x70\x0b\xca\x40\x5c\xa0\x3c\x8b\xb1\x56\x7c\xe7\xa4\x1a\xa5\xe7\xc7\x08\xe6\x3b\x2a\x11\x95\x88\x7c\x56\x82\xa4\x24\x59\xe8\x3e\x34\xed\x2b\x8e\xec\xfa\x98\xa1\xda\x74\x3e\x22\x04\x17\x12\x32\x0e\x26\x8b\xdf\x30\x53\x94\x11\x04\x8a\x92\x34\xa6\xb9\x43\x74\xc1\x25\x98\x6d\x7e\xfc\x8b\x44\x51\x92\x4b\x45\xc4\x01\x9a\xe4\x33\xa9\x35\xc5\x2c\xc1\x6a\xca\x45\xaa\x47\x48\x99\x54\x78\x42\x13\xaa\x16\x07\x28\xc5\xd1\xdc\xb4\x05\x6b\x20\x0f\x46\x2c\xe6\xcf\x4c\x2a\x41\xb0\xef\xdd\x3d\x44\x5f\x87\xcf\x0c\x01\xc8\x6f\x0e\x20\xed\x90\xa6\x5a\xdd\x0d\x86\x5f\xec\xb8\xd9\x13\xdd\x08\x89\xd1\x84\x44\x38\x97\xd6\xc3\xa0\xc4\x02\x91\xcf\x73\x9c\x4b\xd8\x3b\x3d\x3d\x9b\xb3\x11\xf1\x34\x4b\x88\x22\x88\x4e\x91\x12\x94\xc4\x08\xcf\x30\xd5\x4b\x77\x47\x96\x80\xa0\x7b\xa2\xb7\x1b\x68\xa9\xfe\x57\x50\xbf\x53\x2e\x08\x8a\x89\xc2\x34\x59\xea\x75\xb2\xdf\xf6\x5c\xee\x3d\x71\xb9\xf2\x86\xef\x05\x9b\x33\x20\xfe\x3b\xb8\xb4\x99\x35\xdd\x47\x38\xd9\xf2\xfe\xbe\xb5\x83\xea\x69\xfb\x7d\xd1\xb6\xd9\xb5\xfd\x21\xee\x57\x8b\xc1\xee\x5e\xd1\xa2\xa8\x66\xf1\xae\x68\xfa\x35\xc2\x02\x7a\x87\x73\xef\x70\x6e\x5d\x99\xf7\xe9\x70\xde\x1b\x8f\x51\xef\x73\x7e\x21\x9f\x33\x95\xbd\xd3\xb9\x77\x3a\x77\x5d\xa0\xde\xe9\xdc\x3b\x9d\xdf\xaf\xd3\xf9\x25\x71\x9f\x77\x8a\xee\xfc\xae\x44\xeb\x5e\xac\xee\xc5\xea\x1e\xc2\xd9\x4f\x6d\x57\x2c\xcc\x7d\xfd\x21\x26\x09\x51\xa4\xdd\x9e\x45\x44\xaa\xb5\x05\x73\x3d\x53\xa6\xe5\xb8\x99\x20\x52\x6e\xcb\x90\x7c\xc3\xef\x93\x2d\xf9\xe1\xf7\x50\xf3\x3d\x9f\xea\xf9\xd4\x26\x53\xdb\x1f\xd3\x6c\x70\x98\x5f\xcb\x36\xeb\xf9\x6f\x96\xb7\x4b\x7f\x0f\xc6\x0d\x59\xf8\x45\x0d\x85\x6b\xa9\x5d\x71\x7f\xb8\x2d\x9d\x6f\xc9\x8f\x4d\x5f\xef\x93\x19\x9b\xb1\xf7\x9c\xb8\xe7\xc4\x3d\x27\x7e\xdf\x9c\xd8\x9d\xe4\x37\x75\x91\x19\x3f\xdd\x38\x4b\x30\x1b\xd3\x58\x1e\xff\xa3\xd0\xe5\x5f\xca\x43\xa6\x0f\x54\x6c\x52\x4c\x7d\x4a\xa7\xf8\x55\x7f\x92\x14\x06\x73\x8f\x99\xb9\xc2\x89\x66\x6c\xec\x37\x09\x66\xe7\xf1\xbb\xf0\xa3\x35\xce\xfe\x35\x7c\x6a\xdb\xf0\x71\xac\xc0\xd3\x81\x29\x33\x26\xbc\x22\xaf\xb6\x64\xa0\xdc\x8f\x13\xbe\x0d\x57\x0f\x26\x16\x30\x76\xc7\xaf\x83\x45\xd9\xbf\x69\xf7\x7e\x9d\x3e\x97\xb0\xf7\x5c\x74\x9c\x70\xef\xb9\xd8\x5f\xcf\xc5\x5b\xb9\x23\x5f\xf9\x78\xbe\x96\x58\xd7\x3d\x08\xdf\x44\xab\x41\x50\x6b\x9e\x25\x1c\xc7\xcb\x5c\x31\x85\xe0\x15\x82\xa3\xac\x8c\xc4\x2f\x3e\x7b\x0f\xc2\x5a\x31\xda\xdf\x59\x24\x5f\x7d\xe2\xfb\xa2\xa5\xbc\x62\x28\x5f\x33\x89\xaf\xa1\x92\xbc\x0f\xfc\xd4\x62\xbc\x7d\x68\x5f\x6f\x51\x7a\x7b\x8b\x52\x1f\xda\xd7\xab\x80\x7b\xa6\x02\xf6\xa1\x7d\x7d\x68\x5f\xaf\x20\x2f\x9f\x76\xaf\x20\x7f\x11\xa1\x7d\x9d\x44\xed\x17\xc4\xde\xdc\x5e\xe8\xee\x65\x6e\xf7\x5e\x2f\x73\xf7\x32\xf7\x17\x2a\x73\xef\xc7\x0a\xf7\x02\x77\x2f\x70\xf7\x02\x77\x2f\x70\xf7\x02\xf7\xce\x97\xb1\x17\xb8\x5f\xb3\x40\x67\xb3\xd4\xbd\x22\xc9\xe6\xbd\xfa\x72\x7a\x71\xbb\x17\xb7\xf7\x5b\xdc\xde\x9b\x09\xbd\x9f\x32\x8f\xdd\xe6\xd3\x17\x29\xef\x8b\x94\xf7\x45\xca\x5f\xbc\x48\xb9\xfb\xba\x43\xc6\x87\x3d\x5c\x0a\xab\x5c\x1a\xc0\x47\x41\x66\x54\x2a\x60\xff\x5d\xe4\x95\xd5\x89\x1e\xef\x55\x4e\xe9\x53\x3d\xfc\xd3\x5e\x6a\xe9\xa5\x96\xdf\xa9\xd4\xb2\x47\xb1\x60\x7b\x91\xb1\x92\x62\x15\xcd\xf1\x24\x21\x63\x6f\xf4\x91\x5d\xf5\xe0\x0b\x2a\x95\x44\x51\x2e\x15\x4f\xdb\x2f\x97\x4b\xd7\xc3\xc0\x77\x70\xca\xd9\x94\xce\x72\x73\xb7\x18\x70\xce\xe0\x44\x17\x92\xe0\x22\x23\xab\x3c\x55\x0d\xad\xbf\x8b\x6b\xa9\x79\xe8\xaf\x75\x3b\xad\x23\xb8\x17\x46\x3e\x2b\x75\x6b\x59\x6b\x7c\x3b\xbc\xbb\x7e\xb8\x3d\x1d\x9e\xa0\x41\x96\x25\xd4\xd8\xdd\x0d\x29\xd0\xdf\xf4\xa4\x90\xc2\xf2\xb1\xd8\x4b\x61\xc8\xdc\x60\xd8\x82\xa1\x5f\xcb\xc6\xe8\x10\x9d\x5e\x3c\xdc\xdd\x0f\x6f\x5b\x1a\xb4\x84\x02\x79\xab\x24\xcd\x12\xac\x48\x8c\x1e\xf3\x09\x11\x8c\x68\x69\xc7\x22\xdd\x16\xe6\x7f\xd3\xe8\xf0\xbf\x86\xa7\x0f\xf7\xe7\xd7\x57\xe3\xbf\x3e\x0c\x1f\x86\x27\xc8\x51\x9c\x6e\x56\x8f\x4b\x8f\x22\x5e\x30\x9c\x6a\x0d\x44\xff\x50\x64\xca\xfe\x3d\x27\x39\x41\x58\x4a\x3a\x63\x29\x01\x44\xe0\x52\x8b\x6e\xc0\x17\x83\xef\x87\x17\xe5\x96\xe7\x24\x84\xdf\x45\x09\x9e\x90\xc4\xfa\x23\xc0\xc4\xae\x09\x3d\x80\x2a\x36\x8e\x8a\xdc\xac\xea\x5f\x1f\x06\x17\xe7\xf7\xbf\x8c\xaf\x3f\x8e\xef\x86\xb7\x3f\x9d\x9f\x0e\xc7\x56\xaa\x3c\x1d\xe8\x7e\x4b\x3d\x59\xe1\x13\xfd\x3d\xc7\x89\xd6\x4e\xf8\xd4\xe1\xf1\xa2\xe7\x39\x61\x28\x67\x40\x71\x46\xe5\xd1\x7a\x90\xef\x54\x9f\x32\x33\xa3\x9b\x8b\x87\x4f\xe7\x57\xe3\xeb\x9f\x86\xb7\xb7\xe7\x67\xc3\x13\x74\x47\x12\x50\x0a\xdc\xa2\xc3\x2e\x66\x49\x3e\xa3\x0c\xd1\x34\x4b\x88\x5e\x0d\x6c\xb3\x89\xe7\xf8\x89\x72\x61\x8f\xee\x8c\x3e\x11\x66\xd6\x11\xce\x2c\xb4\xef\x84\xef\x71\xb0\x74\xd7\x57\x1f\xcf\x3f\x9d\xa0\x41\x1c\xfb\x39\x48\x68\xa3\x44\x39\x0e\xd6\xf9\xb0\x3c\x6c\xcd\x1c\xa0\x7b\x43\x44\xfc\x89\x08\x41\x63\x52\xa1\xa3\xc1\xdd\xdd\xf9\xa7\xab\xcb\xe1\xd5\x3d\xac\x98\x12\x3c\x91\x68\xce\x9f\xc1\x94\x0d\x33\x04\x0b\xf7\x13\xa6\x09\x74\xe6\x36\x8b\x33\xf4\x3c\xa7\xe0\xfe\x00\x60\x66\xdf\xb3\xd1\xcf\x44\xce\xde\xdc\x3a\x5b\x3a\x78\x75\xb5\xa5\x7a\x92\xea\x6f\x54\x8e\xc5\xb2\x17\x4a\x54\x5e\x7f\x71\x15\xb5\xd6\xbf\xa8\x90\x5b\xbb\xb2\x56\xa3\x97\xf6\x99\x16\x7b\xdd\x59\x57\x2b\xaf\xe1\xeb\x5d\xb3\x44\x09\x1a\xc9\x97\x85\x7a\x12\x39\x53\x34\x25\xc8\x76\x66\x0f\xe7\x0e\xe1\x9f\x2e\x4d\xc3\xef\xe1\x82\xad\x95\x72\xf8\x44\x94\x1d\x7e\xaf\x02\xf6\x2a\xe0\x7e\xa8\x80\xef\x2d\xdb\x3f\x26\x59\xbd\xc3\xca\xc4\xe0\x1d\xe3\xf5\xaa\x05\x69\x18\x7b\xa2\xb5\xa8\x26\xe4\x89\x24\x20\xe5\x29\x81\xb5\xd2\x68\x65\x97\x89\x20\xf8\x51\x0b\x7c\x31\x7f\x0e\x25\x97\x06\xe4\x7e\xb4\x9b\x5b\xb8\x4b\x10\xc7\x9f\xbe\x7b\xbd\xcb\x42\x2f\x77\xfc\x1a\x25\xbc\x6f\x21\x48\x66\x29\x46\x60\x90\x60\xff\xab\xb5\x04\xaf\xb8\x2d\x82\x2f\xde\xc3\x45\x11\x0e\x77\x8f\xb4\xae\xdb\x50\x09\x76\x2c\x34\x25\x0a\xc7\x58\x61\x7d\x68\x66\x44\x1d\xa1\x6b\x06\xcf\xee\xb1\x7c\x3c\x40\xee\xca\xd3\x6c\xa5\xb0\x32\xbc\x42\x6a\xfd\x3b\x31\xe0\xaf\xcf\xc7\xfb\xeb\xbb\xbf\xbe\x9b\x57\xa6\x0f\xf3\x6c\x59\xe1\x5d\x5d\x8c\x6b\xf9\xbc\x76\x77\x7f\x99\x16\xdf\xef\x15\xf6\xba\x4e\xae\x9d\x5e\x68\xa6\x72\x56\x7f\x5b\x99\xff\xeb\x6f\xab\xfe\xb6\xea\x6f\xab\x3d\x58\xe1\x37\x77\x18\x36\x70\xf7\x37\xf5\x18\xae\xd2\x4e\x37\x86\xbc\x2b\xb4\xd1\x75\x40\xef\x7e\xed\x8a\x6d\x57\x7c\x43\xdf\x87\x8f\x30\x98\xe4\x6b\xa4\xb5\xed\xf4\x32\x37\xf9\x22\xbd\x7e\xfa\x82\x37\x7e\x8f\x40\xb8\x53\x04\xc2\xfd\x98\xeb\x8b\xa4\xc0\xbd\x8d\xc5\xf4\xed\xd3\xde\x7a\xa8\xc1\x3e\xb1\xab\x4f\xec\x82\xdf\x7b\xa8\xc1\xdd\x51\xeb\xcb\x4a\xd7\x3c\x26\xe3\x4a\x94\x80\xff\xe7\xb8\xea\xf9\x29\x3d\x09\xdd\x40\xa5\x07\x45\xa6\x1b\xb4\x4e\xe3\x5d\x16\x91\xba\xe2\x31\xe9\x1c\x49\x50\x7a\x79\xcf\x65\x70\x37\x4f\x23\x8b\x97\x06\xfe\xc2\x92\x78\xcb\x96\x7f\x89\x86\x9d\x06\x02\xee\xad\x3c\x2b\x17\xea\x4b\x8d\x2f\x28\x38\xd4\x3b\xf2\x54\x74\x63\xe3\x2e\xa6\x71\xdc\xc2\xcc\x9b\x9f\x7b\x96\xde\xfc\xf8\x65\x30\x83\xba\x73\x74\x30\xab\x84\x6f\xbf\x0f\xbb\x4a\x38\xe2\xd7\xb0\xac\x2c\xdd\xfb\x2f\x8e\xab\x2f\xa3\xe4\x9e\xb7\x77\x5c\xae\x2f\x95\xc3\xf7\x10\x3f\xcb\x6c\x1d\x3d\x86\x4e\x6f\x6a\xd9\x9f\x09\xf7\xa6\x96\x77\x6d\x6a\x31\x2e\xda\x71\x86\x05\x61\xaa\x41\xa4\xae\x5e\x27\xf0\x7a\x88\xb9\xe0\xa4\x0e\x68\x00\x69\x89\x16\xd9\x0b\xd9\x5f\x55\x5f\x96\xed\xc5\x0a\x06\x41\x26\xe4\xf1\x3f\x8a\xbf\xbd\xb0\x5e\xaa\x00\xb1\x24\x3a\xc9\x60\xfd\x4b\x7d\x47\xe7\x36\x50\x69\xfb\x5c\x49\xac\x4a\xa2\x20\x04\x51\xaf\x8c\x67\xba\x31\x6f\xbf\xaf\x14\xc9\xda\xa0\x5f\x37\xb6\xa9\xbe\xf1\xdd\x0e\x90\xdb\x19\x6a\xd2\xfd\x82\x9c\x32\x2d\x8d\xf2\x69\x71\x31\x48\xf4\x4c\x93\x04\x10\x45\x20\xe3\xb1\xed\x06\xf8\xdd\x45\x3c\xb4\xee\xfc\x9b\xc6\x3d\x34\x71\x87\x26\x96\xd0\xc5\x9e\xba\xab\x9c\x69\x47\x6c\x90\xce\x0a\xda\xd0\x0a\x03\xec\x97\xc1\x09\x3e\x11\xf5\x5a\x6c\x60\xd3\xb3\xbf\xf4\xdc\x0b\x32\x25\x82\xb0\x88\xec\xa1\xb7\x7d\x9d\x30\x90\x9f\xcd\x24\x6d\x0c\x88\x87\x12\x08\xa7\xaa\xb8\xd5\xd3\x4a\xa2\x6e\x9f\x49\xde\x67\x92\xf7\x99\xe4\xd5\xa3\xde\x67\x92\xf7\x99\xe4\x8d\x39\x10\x31\x49\x88\x22\xad\x52\xc5\x19\x3c\x7e\x2b\xa9\xc2\xf4\xfe\x65\x08\x16\x66\x2e\xbd\x6c\xf1\xbb\xd1\x2c\xdc\x86\xef\x85\x66\x61\xce\xda\x2a\xf3\x43\xe9\xc7\x86\x10\xeb\x57\x37\x49\x6c\xc2\x34\x4a\x76\x89\x33\x78\xfd\x5d\xb2\x8e\xea\xd0\x7b\x1b\x05\x0a\xb6\xee\xe5\x38\x49\xed\x08\x74\x9b\xb8\xf5\x18\xbe\xdf\x79\xef\x0b\x07\x6d\xa3\xfb\x7d\xe5\xa3\x1b\x27\xa5\xec\x8b\xc5\xe6\x0b\xe2\x91\xbd\xf5\xe6\x8d\x73\x25\x6a\xcc\xf0\xdd\x4e\xb7\x37\x56\xf5\xc6\xaa\xde\x58\xd5\x1b\xab\x7a\x63\x15\xea\x8d\x55\x6b\x1b\xab\xbe\x20\x99\xaa\x37\x5c\xf5\x62\xd5\xee\xa6\xbb\xaf\x5a\xe6\x3e\x59\xeb\x3a\xa3\xa4\x17\x39\x54\x2b\x23\xef\xed\xb4\x7f\x5d\x11\x72\x7f\xe3\x46\xf0\x7e\xf8\x95\x7c\x69\x96\xb4\x4d\x60\xb1\xdb\xd1\x2f\x36\xae\xb8\x2f\x1d\xda\xb8\x56\x7d\xd8\xf3\x92\xc5\xe9\xc3\x9e\xfb\xb0\xe7\xbd\x0b\x7b\xde\xb9\xb2\x92\x71\xb9\x0c\x90\xc8\x94\xce\x5a\x9a\xff\xec\xee\x6c\x48\x34\x02\x52\x30\x28\xc7\x31\xc9\x12\xbe\x00\x4b\xca\x92\xeb\xdc\x75\x71\x53\x93\xa8\xf7\xfd\x46\x77\x23\x7f\x2d\x9d\x63\x5f\x64\xd2\x62\xde\x7b\x21\x85\x1e\xff\xa3\x92\xce\xdf\x09\x2f\x93\x21\xf2\x99\x4a\xb8\x95\x56\x13\xf6\x88\x35\x3f\x09\x4a\x17\xda\x7b\x70\x92\xab\x20\x77\x4f\x6a\xc1\x2a\x23\x42\x2d\x82\x37\x49\x9a\xa9\xc5\x7f\x8e\x18\x55\xde\xc3\x46\x67\x8c\x0b\xc3\xd5\xf4\xc7\x73\xcc\xe2\x84\x08\x7d\xa9\xba\x76\x22\xcc\x18\x57\x20\x6e\xc0\x0c\x62\xf4\x44\xb1\x11\x4e\x06\x37\xe7\x9d\xfd\xcc\xef\xe8\x74\xbd\x76\xb1\xba\x15\x77\xdd\xa7\x84\x4f\xa0\x82\x65\x5e\xd6\xe9\x75\x03\xbd\x67\xb4\xb4\x73\x6f\xc5\x10\x14\x96\x8f\x55\xe0\x90\x72\x16\xfa\x78\x29\x94\xc8\x8a\x77\x4b\x18\xf3\xcb\x5f\xad\xc0\x8d\x94\x9f\x59\x00\x12\x78\x0c\x43\xae\x8e\xc3\xfd\x18\x76\xe8\x7e\x2b\x5a\x76\xbf\xb8\xd2\xdd\xf0\xa3\x20\x4a\x2c\xc6\x58\x29\xcd\x64\x76\x89\x71\x72\x8f\xe5\x63\x67\x8c\x93\xd2\xcb\x7b\xce\x72\x4a\x18\x27\xe5\x81\xbf\x38\xcb\xe9\x48\x9d\x2b\x38\xd3\xfb\xcb\x8f\xef\x7a\xd6\xd6\x98\xf8\xef\x25\x57\xbe\x1b\xef\x59\x65\xa6\x7d\x8f\x79\xf3\xcb\x98\xe9\xde\x8c\xb0\xc2\xcf\xbf\xc4\x93\x5b\xbe\x9d\xfa\x23\xba\x6c\x8d\xbe\xb8\x42\xb8\x15\xa1\x63\xc5\xdc\xde\x49\x41\xdc\xaa\xdc\xb4\xeb\x51\xbd\x8c\x99\x3b\xd8\x8d\x75\x62\x80\xce\xcb\x68\xe5\xfe\x0c\xb9\xa8\xa0\xa2\xf4\xec\x1c\x12\xad\xa9\x0c\x13\xe2\x23\x2e\x8c\xe4\x15\xdb\x33\x6b\xcc\x76\x06\xcc\xf7\x04\x0d\x50\x6c\x6b\xf3\x0b\x92\x09\x22\x09\x53\x46\xd5\x36\xf5\xae\x5c\x79\x7f\xca\xac\x85\xe8\x0c\x2b\x7c\x8a\x15\x4e\xf8\xec\x08\x0d\x7c\x61\x7f\x2a\x11\x4e\x24\x47\xd8\x11\x0e\x89\x5d\x13\x98\xc5\x8e\x3d\x60\x14\xf1\x34\xa3\x89\x47\x6a\xf7\x56\x7c\xca\x62\xfa\x44\xe3\x1c\x27\x1e\x19\x7b\xc4\x86\x4f\x84\xa9\x1c\x54\x38\x9c\x24\xc8\x76\xeb\x5e\x08\xf4\x73\x37\x4a\x49\x53\x9a\x60\x81\x14\xb7\xa3\xbd\xb6\x6d\xa1\xfb\x39\xf1\x63\x75\x28\xe0\x28\xc5\x8f\x44\x22\xaa\x50\xc6\xa5\xa4\x93\xa4\x38\xc6\x0f\xe7\x08\xc6\x7d\x7a\x71\x0e\xa6\xd1\x48\x21\x6e\xf8\xa0\xeb\xdc\xfa\x09\x5c\x8f\x29\x66\x8c\x40\xc7\x5c\xcd\x89\xb0\xdd\xdb\x97\xdf\xda\xca\xf9\xd6\x18\xd1\xed\x16\xd3\x70\x64\x6f\xa7\x74\x76\xd6\x38\xbb\xaa\x9b\xdd\x74\xcd\x76\x45\xf3\x05\xbc\xb4\xdd\xb5\xc1\x0b\x2a\xcb\xea\xe0\xbb\x70\xd9\x96\x46\xfc\x1a\xf8\x68\xbf\x53\x45\xb0\xd7\x02\x5f\x64\xdd\xbe\x54\x15\x70\xcf\xf5\xbf\x1e\xd9\xad\x47\xb1\xef\x03\x30\x76\xb8\x38\x7d\x00\x46\x1f\x80\xf1\xc5\x06\x60\xb4\x6b\x13\x34\xde\x3a\x5d\x6f\xcd\x0a\x52\xde\x28\x20\x7e\x05\x51\x0a\xcb\xc7\xae\x35\xa5\xb4\xa8\x7c\x1e\xbf\x0b\xa9\xbe\x71\xc2\xaf\x21\xdd\xf7\x75\x8a\x76\x5a\xa7\x68\xef\xa6\xdd\x0b\x7e\xbd\xe0\xd7\xcb\x36\x1d\x27\xdc\xcb\x36\xfb\x2b\xdb\xbc\x95\xc2\xf2\x25\x41\xe8\x6a\xe1\xa9\x94\x19\xb3\x34\xc0\xd6\xc0\xd1\x80\x7b\x20\xcf\x12\x8e\xe3\x55\x41\x38\xbf\xa2\x42\xae\x59\x22\x9a\x99\x76\xf5\x07\x7b\x2e\x99\xd5\xe2\x6f\xcc\xc8\x7f\x0f\x31\xb5\xad\x53\x7f\xd3\xb0\x5a\xa0\x5f\x08\x26\x2b\x05\xa5\xbd\x94\x16\x52\xa5\xe9\x4e\x0a\x87\xfc\x6e\xcf\xa9\xda\x6f\xe9\x6b\xa8\x17\x5f\xb0\x83\xa0\x77\x02\xfc\x3e\x0b\x9f\xef\x8d\xd4\xda\xab\x76\x7d\x56\x65\x6f\xd4\xef\x15\xdf\x5e\xf1\xdd\xf9\x32\xee\x93\xe2\xfb\x86\x12\xb5\x49\x13\x79\x91\x32\x86\x9b\xc9\xd6\xbd\x68\xdd\x8b\xd6\xbd\x68\xfd\xc5\x8a\xd6\xfb\xb1\xc2\xbd\x5c\xdd\xcb\xd5\xbd\x5c\xdd\xcb\xd5\xbd\x5c\xbd\xf3\x65\xec\xe5\xea\x8a\x5c\x0d\x7f\xb9\x34\xe9\x75\x85\xec\xce\xc2\x75\x87\x9c\xe8\xf7\x22\x59\xf7\x52\x75\x2f\x55\xef\xb7\x54\xbd\x37\x13\xfa\xf2\x12\x21\xfb\x54\xc2\x3e\x95\xb0\x4f\x25\x7c\x8b\x54\x42\xc7\x4b\x96\x49\x28\x75\xc1\xe2\xa7\x1a\x07\xda\x5b\xd9\xa2\x18\xed\xa6\xe1\x1d\xbb\x5a\x6a\x07\x34\xbf\x49\xa5\xa9\xd2\x6f\xae\xa1\x3d\xaa\x3f\x75\xe0\xa4\x05\xcd\x28\xdc\xf8\x56\x23\x84\xfd\x6c\xdf\x7c\x5f\x60\xe0\xf5\x51\xf7\xf5\xa7\x50\xb0\x6b\x7d\xfd\xa9\x17\x9c\xb7\x3b\x5c\x2b\x66\xee\x68\xd4\xd8\x78\xdf\xe9\xb4\xdf\x1c\x5c\xae\xfd\xa4\xbf\x69\xb8\x5c\xe3\x4d\x52\x4b\xde\x39\xfe\x47\xe3\x45\xf1\x06\x65\xb7\xd6\xbe\x1d\x3e\x11\xf5\xa5\x5c\x0d\x7d\xd9\xad\xbe\x3e\xc4\x8e\xa6\xbb\x11\xeb\x7f\xb7\xb3\xed\x8b\x8c\xf5\x45\xc6\xfa\x22\x63\x7d\x91\xb1\xbe\xc8\x18\xfa\x9d\x17\x19\x5b\x5b\x7c\x34\xe3\xf8\x52\x24\xc8\xbe\xc8\x58\x2f\x44\xee\x6e\xba\xbf\x2f\x21\x72\x0f\x2d\x08\x7b\x51\x4d\xcd\x5b\x10\xde\x1c\xf7\xc3\x8d\xa4\x2b\xf6\x87\x5b\xd0\x1e\xff\xc3\xfe\x5f\x8f\xff\xd1\xe3\x7f\xb4\xcc\xba\x0f\x66\xed\xf1\x3f\x50\x1f\xae\xd9\x87\x6b\xee\x73\xb8\x66\x87\x6d\xec\xf1\x3f\x3a\x8a\x73\x2f\x84\x01\xe2\x64\xae\xb5\x70\x40\x7e\xae\x2b\x1a\x7b\x2b\xa5\xb9\xb1\xfe\x7e\x70\x40\x1a\xa7\xbd\x17\x2a\xc9\x2b\xe2\x80\x34\xd1\x75\x67\x05\xe4\x7d\xe0\x81\xb8\xd1\xf6\x89\x8b\x7d\x88\xf5\xfe\x87\x58\xef\x5d\xe2\xe2\xde\x48\xb2\xbd\xba\xd7\xe7\x2e\xf6\xb9\x8b\xbd\x32\xdc\x2b\xc3\x3b\x5f\xc6\x7d\x52\x86\xdf\x58\xc2\x7e\x41\x5c\x90\xed\x64\xed\x5e\xd4\x36\xef\xf5\xa2\x76\x2f\x6a\x7f\xa1\xa2\xf6\x7e\xac\x70\x2f\x67\xf7\x72\x76\x2f\x67\xf7\x72\x76\x2f\x67\xef\x7c\x19\x7b\x39\xfb\xd5\x70\x42\x9a\x84\xed\x8e\xf9\x36\xef\x49\xd2\xee\xa5\xec\x5e\xca\xde\x6f\x29\x7b\x6f\x26\xd4\x63\x86\xf4\x98\x21\x3d\x66\x48\x8f\x19\xb2\x91\x7c\xf3\x2f\xf6\x58\x7e\x08\x6e\x62\x7f\x65\x7f\xf8\x3e\xe1\x93\xfb\x45\x46\xf4\x7f\xcf\x68\x4a\x98\x04\x69\x94\xaa\x45\x28\xcf\xb4\xac\x7c\x7d\xcd\x3f\xdc\x9d\x5f\x7d\xba\x08\xb3\x69\x3e\x5c\x3e\x5c\xdc\x9f\xdf\x0c\x6e\xfd\xba\xf8\x59\x85\x6b\x61\xbf\x2b\x89\x64\x96\xe4\x6f\x89\xd6\x3d\xe1\xd4\xdc\x29\xac\x72\xb9\xd9\xc8\x6e\x87\x77\xc3\xdb\x9f\x20\x1b\x68\x7c\x76\x7e\x37\xf8\xfe\xa2\x44\x10\xa5\xe7\x83\xd3\xbf\x3e\x9c\xdf\xb6\x3f\x1f\xfe\xd7\xf9\xdd\xfd\x5d\xdb\xd3\xdb\xe1\xc5\x70\x70\xd7\xfe\xf5\xc7\xc1\xf9\xc5\xc3\xed\x70\xe9\x7a\x2c\x1d\xed\x72\x25\x44\xc2\x22\x41\x9c\x3f\x8a\x2c\xd7\x10\xc5\x1a\x22\x2f\x3e\x3a\x76\xd8\xd4\xd7\x09\x7a\xb0\x3a\x3d\xb5\x8d\x1b\x06\x1b\x34\x64\x94\x91\x98\x4a\x3c\x49\x48\x5c\x6b\xc9\xad\x61\x5b\x4b\xb8\x34\xa8\x67\xad\x3d\x7b\x91\x53\xf3\xbc\xc8\xf0\x02\x04\x39\x8a\x8a\xb0\xb8\xa1\x0f\xb3\x0f\xad\x3d\x30\xcd\xbb\xe8\x13\x29\xf5\x14\xe5\x42\x10\xa6\x92\x05\x22\x9f\xa9\x54\xb2\xd6\xa8\xdb\xbe\xb6\x66\xed\x9d\xea\x1b\x9c\x63\x89\x26\x84\xb0\xf2\xf8\x05\x49\x08\x96\x0d\x63\xb6\xbb\xdf\x6d\x59\xfc\x5e\x59\x6b\x8c\xb9\x8c\xa6\x98\x26\xb9\x20\x95\xd3\xc2\xd3\x0c\x0b\x2a\x39\x1b\x7e\xd6\x77\x99\x3e\xc8\xd7\xf0\x39\x17\x9b\x9d\x98\xe1\x5f\x43\x0a\xbe\x2a\xff\xf3\xd3\x7d\xf9\x5f\xa5\x33\x7f\x71\x5f\xfe\xd7\x72\x5a\x0f\x1a\xae\x52\xf6\x21\xfa\x74\x7f\x82\x3e\x41\x88\x93\x40\xf7\x73\x6c\x28\xf6\xe2\xfe\x04\x5d\x10\x29\xe1\x97\xe2\x63\x45\x55\x02\x73\xfb\x9e\x32\x2c\x16\xc8\x4d\xdf\x24\xba\xe2\x68\x8e\x88\x5f\x9a\xea\xe2\xb1\xbf\xe5\x0c\x54\xf7\x62\xf5\x2e\xf8\x8c\x46\x38\xd9\x6e\x11\x07\x57\x25\x3e\x70\x7d\xbb\x74\x29\xc2\xb7\xeb\x6b\x31\xb8\x3a\x83\x24\x52\x37\xd4\x86\x99\x5f\x11\xa9\x89\x24\xe2\x2c\xb6\x5e\x1a\x7d\xfb\x2f\x02\xa1\xfe\x6f\x1c\x12\x71\x73\x49\xd9\x4c\xb7\x88\x8e\xd1\xf5\xed\x88\x5d\x8b\xd8\x18\x42\x89\x96\x86\x0d\xcd\x51\x89\x18\x57\x88\xa6\x19\x17\x0a\x33\xa5\x15\x01\x10\x03\xec\x8a\x18\x0e\x70\xca\xd3\x34\x57\x58\x1f\xb4\xda\xa2\x32\x63\x0e\xb9\x23\xea\x3c\x06\xd7\x4a\xc3\x1a\x1a\x39\xa1\x98\x4b\x26\x74\xfb\x5a\x46\x29\xeb\xd0\x34\xae\xa9\xb2\xae\x09\x2c\x04\x2e\x4b\x13\x1f\xa8\x22\x69\xf5\xfd\x8e\x41\x9e\xff\x6c\x34\x10\x9c\x9a\xa4\x0a\x22\x06\x22\x9a\x53\x45\x22\xa5\x8f\xe0\x46\x34\xf1\x70\xf5\xe3\xd5\xf5\xcf\xa1\x04\xf1\x61\x70\x79\xf6\xe7\x7f\x2f\xfd\x70\x7b\x59\xfb\x61\xfc\xd3\x9f\x6b\xbf\xfc\xff\x96\xd2\x53\xb5\xa7\x9a\x9e\x1f\xcc\xe5\x10\x44\x6a\xb0\x09\xbb\xa9\x22\x9a\xe2\x19\x41\x32\xcf\x34\x05\xc8\xa3\xf2\xfe\x6a\x91\xf2\x82\xe3\x98\xb2\x99\xc9\x00\xbd\xa0\x8a\x08\x9c\x5c\xe2\xec\xa3\xb3\x5f\x6f\xb0\x3a\xff\xf7\xae\x94\xaf\xfb\xe1\x97\xc1\x65\x98\xf1\xfb\xe1\xe6\xf6\xfa\xfe\x7a\xe9\xac\x4b\x2d\xd4\x8f\x91\x7e\x7c\x02\xff\x8b\x8e\x91\x6e\xdd\x4b\xbe\x29\x51\x58\x6b\x04\xe8\x6b\x93\x34\xe7\x13\x69\x28\x4b\xe0\xd4\x64\x82\xa6\x14\xae\x14\x63\xc1\xfb\xc6\x08\xd7\x5e\x7b\xf0\xe7\xc6\x7c\x00\xda\xb2\xbb\x94\x59\x8c\x45\x8c\xfe\x26\xab\xe9\xe3\x60\x38\x36\x3f\x90\x18\x1d\xa2\xb9\x52\x99\x3c\x39\x3e\x7e\x7e\x7e\x3e\xd2\x6f\x1f\x71\x31\x3b\xd6\x7f\x1c\x12\x76\x34\x57\x69\x62\xd2\xe5\xf5\x2a\x9c\xa0\x1b\xc1\xf5\x15\x02\x0a\x3a\x11\x14\x27\xf4\x37\x12\xa3\x89\xe1\x7f\x7c\x8a\x7e\x8d\xb8\x20\x47\xc5\xc6\x58\xa3\x92\xbd\x47\xac\xe1\xe9\x58\xbf\xd4\xc0\x4c\xaa\xfb\x89\x62\x12\xd1\xd8\x8a\x19\x84\x45\x1c\x2c\x8f\xc6\x57\xa1\xdb\x73\x99\x86\x5a\xa3\xc9\x72\x55\x2c\x67\xa0\xac\xe0\x98\x04\xd9\xee\x8a\x97\x09\x4e\x2b\x3e\xe7\x46\x6d\xcd\xb5\x8a\xae\xef\x56\x0c\xb7\xaa\x7b\x35\xd3\x13\x8e\x78\x82\x26\xf9\x74\x4a\x44\xe8\x90\x3e\xd0\xda\x0c\x95\x48\x90\x88\xa7\x29\x48\x0c\xfa\xab\x5c\x1a\xaa\x86\x15\xb3\xa3\x3d\x1a\x31\xd8\x7f\xad\xe6\x00\x05\xc4\x1c\x58\x1d\x23\x24\x46\x98\x2d\x4c\x37\x93\x7c\x1a\xb6\x6f\x60\x28\x70\x8c\xa8\x1a\xb1\x41\x92\x20\x41\x52\xae\x48\x90\x43\x09\xce\xb3\xf2\x82\x03\x8b\x14\x24\x4b\x70\x44\x62\x43\x0f\x09\x8f\x70\x82\xa6\x34\x21\x72\x21\x15\x49\xc3\x06\xbe\x06\x5b\x8d\x5e\x33\x2a\x51\xcc\x9f\x59\xc2\xb1\x9d\x47\xf5\xb3\x6f\xca\xa7\x71\xe8\x20\x02\x86\x42\x70\x01\xff\xf3\x23\x65\xf1\xce\x38\xd4\xc3\xdd\xf0\x36\xfc\xf7\xdd\x2f\x77\xf7\xc3\xcb\xf5\xb8\x8f\xa7\x2c\x18\x1e\xe8\xf0\x27\xe8\xce\x2c\x02\x17\x5a\x22\x12\x2d\x93\xba\xb4\xa4\x54\xfc\xc0\xe3\x0d\xb9\xef\xe5\xe0\xea\x61\x50\xe2\x28\x77\xa7\x3f\x0c\xcf\x1e\x2a\xfa\x80\x9d\x5f\x49\x86\x37\xea\x5f\xf8\xdb\xe9\x0f\xe7\x17\x67\xe3\x06\x85\xf1\xc3\xed\xf0\xf4\xfa\xa7\xe1\x6d\xa1\xdb\x35\x2e\x51\x65\x30\x55\x66\x75\x6f\x98\xd2\x9c\xc7\x68\xb2\x68\x06\x84\xd0\x92\x73\x02\xbe\xd8\x02\x12\xc5\xb4\x7a\x02\xbc\xc9\x61\x73\x14\x5f\xa4\x3c\x26\x07\xf6\x1d\x40\xd2\x30\xc6\x15\x23\x31\x37\x37\xac\x7b\xc7\x2c\x30\x54\x18\x90\x0b\xbf\x70\x27\x68\x80\xa4\x7e\x31\xd7\x87\x5a\xd0\xd9\x0c\x0c\x87\x95\xa1\x9a\xd6\xec\xa7\xb0\xbc\xf0\x9d\xd9\xff\x4c\x70\x38\xe7\xba\x5b\x6b\x71\xf6\x56\x09\xf3\x21\xa0\xae\x94\x5b\x14\x18\x0c\x0e\x0d\x43\x73\x9b\xa5\x17\xa1\x75\xbd\xcc\x79\x34\xf6\x22\x7d\xb8\x80\x6d\x49\x63\xef\xcc\x04\x79\xa2\x3c\x0f\x3e\xb5\xc0\x1e\xa5\x1d\x6f\x6c\xbe\x58\x00\x58\x36\x63\x14\xa9\x34\xe3\xc9\xa3\xb1\x05\xcd\xc2\x9e\xa0\x85\xa9\xe0\x69\x43\x1b\xe5\x63\x72\x7e\x7d\xa7\x04\x56\x64\xb6\x38\xb3\x2c\x63\xf3\xe3\x71\x76\xfd\xf3\xd5\xc5\xf5\xe0\x6c\x3c\x1c\x7c\x2a\x9f\x78\xff\xe4\xee\xfe\x76\x38\xb8\x2c\x3f\x1a\x5f\x5d\xdf\x8f\xdd\x1b\x4b\x49\xbe\xa5\x83\xfa\x3d\x5d\x7e\xf1\x04\x69\x96\x0b\xac\xd1\x01\xde\x05\xfc\x71\x42\xa6\x5c\x18\x3e\x9f\xba\xd0\x05\x2b\xc2\xb8\xb5\xb5\xba\x58\x65\x16\x27\x60\x19\x6b\x6a\xd2\x58\xbd\x95\x20\x38\x85\x7b\x02\x33\x34\x64\xf1\xe1\xf5\xf4\xf0\xce\xfc\x98\x62\xf1\x48\x84\xff\xf4\x59\x50\xa5\x08\x2b\xa9\x74\xd8\x0d\xd9\x2b\x89\x45\x07\x47\xe8\x56\xf3\x7d\xfd\xbe\xbf\xd4\x34\xb1\xc7\x44\x61\x9a\x48\x3b\xd8\xd2\xba\x9e\xa0\x0b\x2c\x66\x85\x1d\xee\x6b\x3e\x9d\x9a\xc6\xbe\x31\xc3\xd0\x77\x58\x69\x16\x0d\xbc\x57\x93\x86\xbb\x17\xa1\x3f\xfb\xb2\x97\x87\xeb\x54\xf5\x90\x6d\x47\x53\x0f\x37\xb0\xe2\x46\x63\x2f\xe9\x86\xf6\x49\x03\xad\xc1\xc4\xcd\xe3\xe5\x97\x4c\x73\xdb\x75\x72\x2a\xbf\xd8\x40\x4e\x26\x97\x4a\xef\xfc\x54\x6b\x9b\x0d\xb4\x44\x3e\x53\x6b\x30\x08\xc7\x5d\x21\xa1\xa2\x19\x30\xaf\xe2\x2c\x23\x58\xc8\xa6\xdd\x2e\x8b\x81\x2d\x7b\x6f\x7a\x0a\xfb\xb0\x9b\xec\xfa\x39\x40\x9c\x81\xc1\xc1\x0b\x11\x15\x8a\xec\x40\x03\xa6\xad\x1a\x05\xdc\x00\xda\xd2\xb5\x45\x36\xba\xa4\x52\x2b\x8d\xe6\xc7\xef\x2d\xe4\xd2\x66\x04\xf1\x71\x70\x7e\x51\x11\x2e\xc6\x67\xc3\x8f\x83\x87\x8b\xe5\x66\xc2\xd2\x77\xd5\x2d\x46\x87\x48\x3f\x2f\xfb\xcd\xe9\xd4\xdc\x19\x0e\x38\xca\xa8\xb4\x84\x81\xd1\xca\x42\xd5\x18\x7b\x75\x4c\xb2\x84\x2f\x52\xc2\xc0\xc4\x53\xba\x09\xf5\x7a\x4e\x31\xb5\x57\x4b\x30\x58\xb0\xe2\x58\xb3\x1b\x5c\x63\x87\x0e\xad\x8a\xc4\xfe\xe6\x2d\x83\x55\x55\x58\xf7\x8d\xf1\x9e\xd9\xff\xdc\x29\xac\x36\x3c\x63\x83\xd3\xfb\xf3\x9f\x86\x65\xfd\xf0\xf4\x87\xf3\x9f\x9a\xa4\x9a\xf1\xa7\xe1\xd5\xf0\x76\x70\xbf\x42\x38\xa9\x34\xd9\x24\x9c\x48\x3d\xe0\xaa\xf7\x94\x4a\x1f\x11\x14\x19\xc8\x2b\x44\x95\x44\x4f\x54\xd2\x09\x05\x80\x30\xeb\x89\x7c\x38\x07\xce\xfa\x84\x13\x1a\x53\xb5\x70\xe2\x8b\xe9\xb7\xbc\x8f\x9a\x93\xda\xf6\x8d\xd9\x21\xf4\x4f\x82\x95\xcf\x6c\x8e\x9b\xf4\x09\x02\xdd\xf6\x09\x94\xb6\xe0\x33\xa6\x05\x69\x36\x23\xc2\x0c\x07\xbc\x2f\xe1\x58\x82\xe7\x7a\x54\xa1\xb0\x52\xac\x9a\x17\x5a\x67\x84\x11\x01\x20\x70\xbe\x13\x23\x48\x09\xc2\xbe\xd2\x32\x57\x96\xd0\x88\xaa\x64\x81\x22\xb0\x61\x81\x39\x33\xc5\x0c\xcf\xac\x70\x00\x6a\x4e\x85\x24\xfe\x6a\x50\xd4\xae\xa7\xd6\xb4\x7f\x4f\xc9\x86\xc7\xec\xe1\xea\x6c\xf8\xf1\xfc\xaa\x4c\x02\x3f\x9c\x7f\x2a\x89\xb0\x97\xc3\xb3\xf3\x87\xd2\x6d\xae\x25\xd9\xe5\x72\x7d\xb5\xd9\x86\xa3\xe8\x5f\x3a\x41\x67\xe6\xd3\x13\xbd\xb8\x0d\x10\x71\x5e\xf9\xad\xac\xc3\xad\x0b\xc9\x73\x7f\x0c\x99\x12\x8d\x7e\x89\xae\x26\x24\xeb\x83\x2c\xd9\x90\x9a\x43\x15\x6a\x7d\x5f\x55\x9d\xca\xd5\x29\xbb\x17\x21\xe8\xf2\xa8\xb0\x2c\x85\x31\x0c\x60\x34\x68\x33\x62\x35\xb8\xb5\x0a\x86\xfd\x13\xb8\xa8\xd3\x5c\x2a\xe3\x4a\x04\xe2\x44\x8f\x7f\x91\x7a\x41\xc1\xd5\x78\x84\xee\x08\x19\x31\x67\x3d\x98\x51\x35\xcf\x27\x47\x11\x4f\x8f\x0b\x7c\xc2\x63\x9c\xd1\x14\x6b\x49\x9a\x88\xc5\xf1\x24\xe1\x93\xe3\x14\x4b\x45\xc4\x71\xf6\x38\x83\x08\x18\xe7\x4e\x3d\xf6\xcd\xce\xf8\xbf\x5e\xfc\xe9\xdb\xc3\x8b\xbf\x7c\xfb\xa1\x6e\x21\x6b\xdb\xff\x21\x8b\x70\x26\xf3\xc4\x46\xcc\x89\x70\x6d\xdc\x91\xcf\xc9\xaa\xfd\xbe\x2a\x6f\xd7\x76\xfa\xeb\xe9\xcd\x43\xc9\x62\x5d\xfe\xe7\xe5\xf0\xf2\xfa\xf6\x97\x12\xa7\xbc\xbf\xbe\x1d\x7c\x2a\x31\xd4\xe1\xcd\x0f\xc3\xcb\xe1\xed\xe0\x62\xec\x1e\x6e\x63\x7b\xfb\x91\xf1\x67\x56\x5e\x1a\xe9\x38\x60\xad\xa7\x13\xf4\x91\x0b\xf4\xa3\xdf\xc9\xc3\x09\x96\x70\xc5\xb8\x3b\x4b\x1e\xa0\x8c\xc7\xc0\x78\x11\xc9\xe6\x24\x25\x02\x27\xd6\x66\x20\x15\x17\x78\x66\x6e\x7a\x19\x09\xac\xa2\x39\x92\x19\x8e\xc8\x01\x8a\x80\x1a\x66\x07\xb0\x29\xa0\x6a\xf1\x59\xd5\xce\x77\x9b\x33\x45\x53\xe2\x54\x70\xfb\xcf\x7b\xb3\x19\x1b\x6c\xce\xf5\xfd\x0f\x65\x61\xef\xe3\xc5\x2f\xf7\xc3\xf1\xdd\xd9\x8f\x4b\xd7\xd3\x7c\x56\x1a\xd9\x1d\x04\x20\x9d\xf2\x24\x4f\x59\xf8\xf7\xe6\x63\x3b\xbf\xba\x1f\x7e\xaa\x8e\xee\x7a\x70\x5f\xa6\x8c\xdb\x72\x80\xdb\x87\xef\xaf\xaf\x2f\x86\x25\x97\xf0\x87\xb3\xc1\xfd\xf0\xfe\xfc\xb2\x44\x3f\x67\x0f\xb7\x06\x8d\x70\xd9\x34\xdd\x08\x1a\x26\xaa\xa7\x15\x4e\x73\xd7\xac\xb0\x13\x27\x1a\xd8\x80\x72\x73\x96\x0f\x03\xb8\x1d\x13\x0e\x06\x56\x9d\x43\x6f\x52\x8d\xcc\x48\x1b\xd9\xa1\x2a\x6f\x13\x6a\x67\xc7\x4b\x37\x7a\x19\x57\xbe\xf7\x43\x30\x50\xa0\x46\xd9\xc6\x49\xc2\x9f\x4d\x28\x6f\x4a\xf5\xad\x6c\x81\xd1\xf4\x2b\xb2\xf0\x10\x1e\x35\x70\xbc\xf2\xb6\x90\x48\x10\x75\xc9\x73\xa6\x36\x27\xb9\xc1\x55\x89\xef\x0c\xaf\x7e\x1a\xff\x34\x28\x53\xe0\xf9\xc5\x72\x56\x13\x36\xd1\x70\x15\x0f\xae\x7e\xf1\x97\x30\x04\x7c\x1f\x78\x0d\xd5\xc8\xae\x51\x42\xb5\xd8\x1b\x61\xad\xbd\x26\x20\xd1\x20\x42\xc1\xe4\x90\xea\xc9\x41\x80\x69\x66\xfc\x49\x86\x3f\x99\x41\x9e\xb8\x3f\x2a\xed\x49\x58\x17\xb0\xa6\xba\x78\x7a\x68\xc7\x6a\xd5\x0c\x11\xf6\x44\x05\x07\x3c\x5b\xf4\x84\x05\xd5\xd2\xb8\x69\x59\xcf\xf5\x04\xfe\x77\xbd\x36\xc1\x30\x5a\x61\x5c\x77\x5c\xa8\x33\x1f\xc8\xbb\x99\x35\xa4\x29\xa0\xb5\x1e\xca\xda\x6c\xe8\xa8\x7f\xdb\xb0\x39\x5b\x06\xfc\x96\x27\xfc\xf7\xe4\x8c\xe2\x44\x33\x80\xdd\xc9\x8b\x83\xab\xbb\xf3\xb2\xfc\x58\x56\x33\x02\xbe\xbc\xb1\xbc\x08\x86\x4a\x33\x72\xa7\x4c\xdc\xfd\xf5\xc2\x68\x17\x00\x7a\x6c\xce\x6d\xa0\x58\x80\x00\xe4\x50\x50\x32\x2c\x64\xe5\x0b\x89\x00\x08\xad\x08\xb8\xd2\x77\x16\x84\x33\x3d\x71\x1a\x8f\x18\xf9\x9c\x11\x26\x21\x38\xc0\xdc\x67\x85\xaf\x5d\x1e\xa1\xf3\x29\xb0\x04\xfd\x3a\x43\x39\xb3\x0e\x30\x7d\xe1\x9a\x41\x1e\x68\x51\xd6\x0e\xc1\x6b\x88\x60\x78\x61\xc4\x05\x4b\x15\x83\x1f\xb1\x9f\xbd\x13\x0d\x1e\x4d\xb9\x66\x40\x7a\x17\x6d\x7b\x27\x08\x33\x49\x0f\x90\x56\x58\xaa\x7b\x0a\xa9\x03\x5a\xa1\xb4\x21\x5c\x9a\xd3\xd8\x3f\x5f\xff\x1a\xa8\xc5\x09\x87\x97\x41\xf3\x5d\x50\xb9\x0a\x5a\x44\xe3\xc4\x78\x4c\xc6\xdd\xef\x84\x88\x0b\x62\xfd\x2c\x6b\x5f\x03\xab\x18\xfb\x3d\x96\x8f\x35\xdf\xc3\x39\x93\x0a\xb3\x88\x9c\x26\x58\x6e\x18\x84\xe4\x6c\x1c\x07\x65\x89\xe3\xf6\xf6\xe1\xe6\xfe\xfc\xfb\x15\x5c\xbe\xfa\x71\x3d\x0c\x28\x4a\x72\xe7\x9e\x9b\x08\x8e\x63\xa4\xd9\xe7\x8c\x1b\x57\xa0\x15\xfc\x0b\xe8\x6f\x93\xd7\xe3\x03\x2a\x4b\xb0\xe3\x45\x3a\x82\xb5\x73\x84\xae\x04\x6a\x17\x02\x45\x7a\x25\x50\x60\xf2\x70\x5b\x0d\x9e\x45\x53\x90\xc4\x5a\xb7\xb2\x04\xab\x29\x17\xa9\xe1\xf2\xa5\x49\x9b\xc6\x97\x37\x4a\x99\x22\x42\xe4\x99\xa2\x0e\xcb\xbd\x2a\xa5\x42\x85\x77\x3e\xbb\x24\x52\xe2\x19\xd9\xc6\x01\xdd\xa4\x3c\xdc\xfd\x14\xfe\x13\x1c\xcc\x5d\x64\xff\xd2\x08\x5d\xe4\xbb\xa3\xa7\x6b\xf6\xd1\x04\xf2\xdc\xf0\x84\x46\x1b\x06\xdc\x7d\x1c\x9c\x5f\x8c\xcf\x2f\xb5\x12\x3f\xb8\x1f\x5e\x94\x44\x09\x78\x36\xf8\x78\x3f\xbc\xb5\x20\xd6\x83\xef\x2f\x86\xe3\xab\xeb\xb3\xe1\xdd\xf8\xf4\xfa\xf2\xe6\x62\xb8\x22\x32\xa7\xb5\xf1\xba\x75\xb5\xfa\xea\x49\xed\x17\xd8\x61\xcd\xcb\x42\x7b\x19\x64\x8d\x61\x9a\x80\x13\x9c\x1b\x67\x38\x46\x8c\xc7\x04\x7e\x96\xce\x3a\xe3\x91\xa3\xd1\xb9\xfa\x2a\x49\x10\xce\x15\x4f\x31\x78\x6d\x92\xc5\x88\xe1\x89\x66\xad\x38\x49\x82\xf0\x2e\x91\x33\xa6\x59\xac\x6e\xcc\x40\xb4\x47\x09\xd1\xec\x3c\x0b\x92\xfd\xac\xdf\x60\x4a\x19\x44\xda\xa6\x58\x3c\x1a\x37\x53\xd1\x65\x71\x28\x24\xc2\x72\xc4\xf4\xb8\x88\x35\x0c\x75\x59\xe1\x93\x4e\x6f\xb5\xae\x4e\x8a\x1f\x89\x5e\x95\x34\x8f\xe6\x28\x13\x7c\x26\x88\x94\xd6\xb6\x1c\x61\x66\x02\x10\xec\xeb\xfa\x1a\x1a\x31\xc6\xf5\x52\x38\x13\x76\x4c\x32\xc2\x62\xc2\x22\x6a\xd2\xfa\xc0\x77\xef\x4d\x9b\x33\x81\xb3\x39\x92\x1c\x9c\xde\xb0\xec\x60\xbf\x32\x1f\xb9\x9b\xcc\xcc\xd8\x3c\x0e\x2d\xd0\x22\xd7\x7c\xe2\x1a\xe4\x44\xb3\xca\xf0\xb1\xbb\x0c\x9d\xdb\xc5\xd8\x01\xd3\x2c\x21\xca\x80\xf5\xc3\x92\xc3\x66\xe8\xb5\x2e\xed\x87\xde\xa6\xa6\x4d\xd0\x17\xb6\x1b\x33\x96\x76\x44\x47\x0d\x96\x6d\x7b\xa4\xd0\x0f\x98\xc5\x89\x6e\xc5\xf9\x30\xca\x67\x11\x52\x51\x06\x9a\x6a\xdc\x69\xdc\xe6\x16\x8d\x70\x2e\xb7\xb9\x46\x2b\xb9\x98\xc6\x2a\x78\x58\x04\x85\x00\x79\xdb\x44\x4c\x58\xdd\x4c\xb3\x48\x9c\x70\xbb\x4a\xe6\xf5\xdc\xd4\x7f\x42\x30\x9a\x96\x6b\x36\x13\x94\x45\x34\xc3\xc9\x46\xba\x5f\x25\x18\xdf\xc6\xb8\x7f\x4d\xa7\x9a\x7c\xbe\xa9\xb9\x6d\x15\x11\x29\x24\x28\xdb\x61\xfa\x2d\x5c\xc3\x92\x64\xb3\x1a\x88\x2c\xa2\x49\xb0\xe0\xb9\xf1\xc7\xc1\xba\x90\xb8\xe1\xa8\x1e\x35\x6d\xb7\x3e\x19\xb8\x1c\x00\xbd\xc1\x66\x9b\xc8\x9f\xb6\xf5\xab\xb4\x62\x7b\x37\xc1\x78\x38\xb9\x69\x6e\xb3\x69\x07\x82\x87\xff\x5c\x46\x3b\x97\x38\xd3\x34\x63\x61\xfb\x71\x31\x47\xab\x24\xd9\xaa\x60\x2e\x7e\x26\xf0\x9d\xfb\xbc\x90\xee\xbb\x51\x2c\xa1\x0d\x80\xaa\x77\x52\x8a\x21\x08\x72\xcc\x2d\x8d\x4f\x73\x2d\xcb\x22\x0c\x51\x08\xe8\x6b\x72\x34\x3b\x42\xae\x08\xc3\x01\x1a\xdc\xdc\x0c\xaf\xce\x0e\x10\x51\xd1\x37\x2e\x66\xd1\x06\x2c\x8d\x98\xe2\x56\x5a\x59\xb8\x02\x1a\x29\x11\x33\x52\x9a\xb3\x8b\x6e\x82\x50\xe5\x19\x95\xca\x86\xcf\x6a\xbe\x12\x94\x3a\xa1\x69\x55\xcc\x36\x14\x92\xab\xf9\x36\xa4\x81\xa5\xcc\x53\xad\xcb\x8e\x29\x4e\xc7\x82\x27\xdb\x30\x85\x33\x98\x0a\xa8\xcb\x3e\x3d\x9f\xe2\x14\xe9\x66\x6d\x28\x88\x77\x39\x7a\x91\x4e\x0b\x46\x9a\x2f\xeb\x7b\x33\xb8\xb7\x9c\xf7\xc1\xc6\xa3\x51\x17\x02\x01\xe9\xfb\x2d\xac\xa2\x30\x1b\x8f\xad\xa5\x7e\x8c\xa3\x48\xab\xdc\x3b\x9e\x54\x50\x3f\xc7\xb9\x04\x6c\x47\x2f\x36\xcd\x55\x74\xee\x86\x99\x69\x0e\x06\xc1\xc0\xfa\xca\x95\x3c\xa2\x45\xfb\x0d\xfd\x4e\x16\xb5\x5e\x5d\x85\x9b\x07\xe9\x4d\x2a\xe6\x12\x96\x04\x76\x52\x9a\x0a\x39\x6a\x4e\x16\x68\x8e\x9f\x48\xa9\x4b\x97\x10\xa3\x1b\x5e\xf0\x5c\x34\x31\xba\x11\x3b\x23\x99\x20\x5a\xd2\xaf\x3a\x50\x3c\x4d\xdf\x96\x29\xb1\xa7\xeb\x9e\xae\xdf\x3d\x5d\x9f\x9a\x42\x49\x03\x5f\x18\x6b\x2b\x01\xce\x34\x36\xce\x38\x4f\xc6\x1d\x6c\x22\xdd\x57\xbc\xe4\x09\xab\x94\x8d\x02\x48\x00\x9e\x83\x7c\x54\xba\x36\xb9\xbe\xeb\x82\x14\x5b\x3b\xbc\x25\xcb\xe0\x5c\x66\x41\xbd\x9c\x6d\xce\x7b\x53\x2b\xcb\x5a\x42\x2f\x2e\xe6\x9c\x1a\xf9\xc6\xbb\xcb\xc2\xfa\xa7\xa5\xc3\xe4\x44\x11\xca\x6a\xd5\xd8\x0c\x3d\xeb\x05\x36\x72\xc7\xdf\x73\xae\xb0\xfc\xe6\x68\xc4\xb4\x10\xf5\x48\x16\xc6\xdc\xaa\xc5\x94\x3f\x68\x59\xfc\x50\x12\x26\x21\xdc\xfb\x0f\xc6\x3d\xa7\x49\xdc\x99\xab\x8d\x6a\x6a\x8a\xc0\x41\xd0\xb5\xef\x05\x42\x74\x6d\xa3\x56\x4a\x2a\x02\xa0\x41\xce\x37\x73\xb1\xcf\xcc\xf0\x67\x44\x41\x8a\xb5\xa2\x0a\x74\xa6\xd8\x54\x99\xab\x0d\x7d\xa5\xe9\xca\x50\x85\xe0\xe0\x27\x89\xf3\xed\x18\xbf\xac\xb7\xb1\x92\x33\x7a\x6d\xe1\xce\xc6\xbc\x1f\x3b\xbb\x51\x24\x78\xad\x74\x1b\x96\xc8\xec\xf4\xc4\xb0\x03\xe7\xbf\x26\xec\xe8\x99\x3e\xd2\x8c\xc4\x14\x43\x04\xbc\xfe\xd7\xb1\x9e\xd7\xbf\x9e\xde\x5e\x5f\x8d\x8b\x4c\x9e\xff\x1c\xb1\x41\x22\xb9\xcf\x52\x40\x8c\x33\x1f\x6e\x9f\x09\xe2\x44\x42\x3b\x17\xb0\xba\x16\x66\xc4\x11\x6b\x1b\x41\xcc\x23\x79\x84\x9f\xe5\x11\x4e\xf1\x6f\x9c\x81\x2b\x7d\x00\x7f\x9e\x26\x3c\x8f\x7f\xc6\x2a\x9a\x1f\xc3\xb9\x56\xc7\xe4\x89\x30\x65\xdc\x54\x7a\xb9\x62\x48\xde\x95\x10\xad\xff\xaf\x7a\xcc\x45\x52\x91\xd4\x9a\x6c\x44\x32\x85\xfe\x1f\x41\x26\x9c\xab\xe6\x4b\x8a\x4f\xa7\x92\xac\x75\x21\x15\x4a\xda\xdd\x35\xfa\xcb\x9f\xbf\xfd\xa3\x26\xa1\x4d\xd6\xf8\xfc\xee\x7a\xac\xbf\xff\xd7\x33\xfb\xbd\x5c\x83\xdd\x5d\x67\x05\x6b\x73\xc4\x63\x02\xe7\x73\x06\xb7\x9f\x00\xe7\x05\xb0\x37\x20\x87\x62\x1f\x9b\xb8\xdb\x59\xa9\xf5\xed\x54\xb6\x8d\x16\x13\x54\xec\x60\x8e\xe8\x10\x31\x8e\x52\x13\x6b\x8a\x19\xfa\xf7\x1f\xbf\x6f\xde\xc0\x5c\xd0\x8d\x3a\xa4\x16\xae\x21\xe8\x52\xd2\xdf\x88\x44\x9a\x6a\x34\x15\xf3\x54\x77\x2d\x88\x9c\xf3\x24\x46\xcf\x04\xd4\x24\x1b\x07\xea\xb5\x72\x41\x46\x2c\x6c\x02\x42\x0e\x11\x4e\x14\x9f\x11\xb8\xab\x9d\xa2\xa6\x88\xd0\xa2\x8a\xc9\xd2\x50\x5c\x90\x03\x03\xf5\x75\xf7\x27\x17\x5b\x0d\xd3\x84\x47\x2e\xa9\xc5\x9a\xe4\xe2\x49\xf3\xcc\xa7\x55\xd3\x2b\x6a\xb7\xe1\x57\x37\xd9\x9a\x6d\x9b\x97\xc6\x26\xa1\x58\x1b\x56\x75\x67\x9a\x07\x43\x23\xce\xc6\x09\x65\x8f\x1b\x6d\xc6\xb5\x13\xe5\x74\x0b\x76\xcd\x74\x8b\xde\xce\x6d\x2c\x20\x6b\x9c\x8f\x8f\x79\x92\x98\xd4\x96\x70\x7b\x40\xee\x32\xeb\x06\xc2\x40\x66\x72\x40\x49\x6c\xfd\x5e\x56\x13\x16\x84\x41\xc0\xdb\x88\x4d\x16\xd6\x67\x2b\x0f\x90\xcc\xa3\xb9\xcb\xcc\x8b\x38\x93\x5a\x8c\xe6\x02\x45\x3c\x4d\x4d\x71\x53\x46\x90\xe2\x3c\x91\x36\xda\x9d\x1d\x2a\x1c\xa9\x11\x2b\xfa\x5b\x71\xf2\x4c\x05\xa4\xed\x52\xf7\xba\xbb\x74\x8a\x4a\x4b\x4b\x05\x6e\x1a\x87\x98\x0d\x60\x04\x33\x9e\xa8\x00\xfd\x81\xd7\xcf\x92\xd9\xb0\x16\xcd\x40\xce\xb9\x50\xe3\xb8\x91\xe7\xac\x24\x9a\x2a\x23\x64\xe4\x30\x81\xa0\x61\xfe\xa4\x85\x7f\xf2\xec\x8d\xaf\xcb\x86\xa0\xa9\x7a\xd9\x08\xba\x1d\xa3\xa5\x23\x5b\x97\x04\x5b\xd6\xca\x20\x78\x44\xe5\x98\xf0\x55\x63\xbc\x83\xaf\x4e\xf5\x47\x4b\x17\xaf\x7a\xee\x9c\x10\xc4\xe3\x02\x6c\xce\xdc\xeb\x36\x23\x64\xd9\x9a\x5a\xe8\x84\x97\xcb\x1c\x5d\x36\x95\x87\xb2\x25\x57\x8f\x05\x4c\xf6\x92\x80\xac\x89\xc5\x84\x2a\x81\x45\x09\x29\xc4\xeb\x83\x92\x60\x01\xf1\x59\x23\x66\x70\xe3\x8c\xa6\x10\xa3\x98\x4a\x48\x10\x81\xbb\x34\x70\x86\xa1\x6e\x4a\x60\xe5\x68\x17\x79\x8e\x26\xfe\x1c\x02\xcb\x0a\xd2\x70\xcc\x4e\x77\xe4\xf1\xb1\xb4\x7e\xc6\xa3\xbc\x10\xe4\x22\x90\x70\x2d\xa6\x0e\xa2\x4c\xd2\xd9\x5c\x21\xca\xac\xdd\x11\x27\x33\x2e\xa8\x9a\xa7\xf2\x00\x4d\x72\xa9\xb5\x50\x13\xac\x66\xe2\x51\x88\x8a\x3a\x71\xa1\x6d\x93\x88\xe3\x4a\x83\x75\x15\x65\x03\xd2\xe8\x76\x28\x87\x95\xbb\x62\x05\xe1\x0c\x3c\xce\x60\xb5\x0d\x0a\x75\x1b\x0d\x3c\x25\x32\x71\x80\xdc\x21\x3b\x41\x15\x90\xb6\x73\x00\xa8\x90\x3b\xf3\x52\xbc\x46\x21\x2e\x64\x92\x41\x05\x71\xb1\xdb\x20\x79\x95\x91\x29\x0d\x7a\x93\x77\x3a\xa5\x99\x6a\x0c\xdc\xaa\xbb\x8a\x6e\x03\xcc\x9f\x6e\x8b\x0d\xc9\x58\x40\xcd\x80\xd4\x36\x62\x77\x84\xb4\x03\xb9\xd5\xf6\xde\x94\xc6\x85\x29\xd8\x44\x8f\xe5\x24\xbf\x8d\x13\xfb\x6c\x78\x77\x7a\x7b\x7e\x63\x20\x27\xae\x6f\x2f\x07\xf7\xe3\x06\xbf\x76\xc3\x5b\x97\x83\xdb\x1f\xcf\x56\xbf\xf6\xc3\x7d\x39\x2b\xbb\xe1\x95\xdb\xbb\xe5\xc9\x1c\x1d\x86\xd8\x90\x14\xd6\xd8\xcf\x09\xca\x16\x6a\xce\x99\x0f\x51\x88\x4b\xbc\xe9\x10\x99\x8c\x60\x05\x21\x44\x42\xaa\x06\xc7\xe1\x3d\xc4\xe5\xac\x96\x30\xcb\x9b\x65\x60\xd8\x76\x2a\x1a\xad\x71\x22\x3f\x25\x7c\x02\x7e\xeb\xbc\x54\xe2\x76\x49\x04\xfa\x96\xf1\x3e\x67\x54\x66\x09\x5e\xd4\x7a\x58\x75\xe5\x5c\xe1\x94\x40\xc4\x71\x81\x1f\xe7\x92\x45\xf4\xce\x40\x02\x93\xbf\xd7\xe9\x14\x32\x99\x14\xc5\x8a\xa0\x09\x51\xcf\x90\x37\xe7\x7e\xf5\xb6\x54\x17\x30\x22\x8f\x46\x0c\xcc\x39\x23\xbd\xc8\x71\x0e\xd1\x7e\xa3\x0f\x07\x68\xf4\x21\x26\x4f\x24\xe1\x99\xde\x79\xfd\x43\xcb\x25\x33\x4c\x31\x4d\xae\xb8\xf2\x96\xb9\x6d\xf6\x53\x90\x88\x66\x20\x99\x8f\x89\x6e\xf7\xf5\x04\x8f\x12\x25\x3b\x76\x06\x63\x40\x38\x8e\xb5\x92\x0d\xac\xcc\x0d\xaf\x08\x01\x62\xc1\xd4\x4b\xb5\x32\xd7\x11\x29\xbc\xf9\xdb\xf4\x18\xb6\x59\x36\x7b\x36\xee\x80\x77\x0c\xbf\x92\x92\xe1\x42\x71\x7c\xc7\x1d\xb5\x8e\x87\x36\x1d\xa3\xd5\x03\x5d\x3d\x80\x7a\x2d\xd6\x10\x98\xfd\x00\xef\xf4\x77\x2b\x05\x4d\x7f\xdb\x46\x61\x49\x76\x10\x19\x6d\x6e\x73\x35\x9d\x9a\xac\x1c\x71\x94\x70\x59\x86\x3a\xe9\x3c\xe8\x53\xfb\xe9\xb2\x71\x0f\x43\x67\xb1\xbe\xd6\xd7\xf2\x47\x37\x2c\x7c\x05\xcb\xcf\xb0\x09\x65\x1d\x1c\xf6\xed\x03\x44\x21\x58\x0e\xe4\xe9\xa4\x48\xfc\x66\x31\x2a\xac\xd8\x23\x56\x84\x1c\x48\xf4\x4c\x12\x88\x52\x8a\x78\x9a\x81\x85\xd6\x0e\xd7\xb6\x44\x62\x13\xf0\x79\x80\x78\xae\x74\x63\x26\xa5\xc2\xd9\xe0\x6c\xbe\x46\x61\xb5\x36\xae\x13\x1b\xbb\xec\x71\x81\x0d\xad\x1b\x56\x48\x19\xfa\x44\x14\xb4\x02\xb8\xeb\xe1\x04\x41\xcc\xab\x46\xc0\x35\xaf\xfd\x16\x27\xca\xce\x64\x8d\x9d\x2f\x70\x2f\xbe\x4f\xf8\x64\xb9\x8e\x07\x8d\xa3\x87\xdb\x73\x67\x50\x2a\xc2\x5f\x02\xf0\xd9\x92\x43\x68\x78\x73\x3b\x3c\x1d\xdc\x0f\xcf\x8e\xd0\x83\x24\x7a\x79\xfc\x74\x21\x3d\xd6\x4b\x94\x66\xe4\x16\x48\x83\x49\x45\x70\x9b\x1e\x4b\x84\x28\x25\xb1\xae\x60\x1c\x65\x94\x8d\xe5\x84\x0d\x18\x17\xd4\xda\x59\x00\x17\xa6\x3a\x4f\x1b\x58\xb5\xea\x04\x42\x98\xcb\xf8\xfd\x04\x19\x99\xf1\xa6\xf5\xc0\xaa\x55\xe4\x53\x0e\xc8\x7a\xe9\xc9\xc0\xd1\x52\x73\x42\x05\xea\x34\x2d\x43\x54\xe3\xee\x73\x0a\x22\x94\x2f\x71\xb6\x3c\x7b\x10\x3f\x97\x88\xd6\x48\x32\x81\xeb\xf5\xa5\xcf\x81\x63\x6b\x63\xc3\x0a\xb7\x9f\x60\xe1\x8f\x30\xbc\xd5\xf3\x4d\x13\xb0\x2f\x9d\x8d\x23\x9c\x58\x65\x10\x36\x0c\x51\x22\x38\x3b\xf0\x0b\x65\xa8\x74\x25\x1e\xa0\x29\xfd\x6c\x1b\x2d\xc2\x93\xdd\xab\x81\xbf\xba\x25\x1c\x6e\x8e\xeb\x67\x6a\x0d\xb1\xe1\x06\xbe\x5f\x1a\x9e\xc5\xa5\xd2\x52\x97\x96\x5c\x05\x89\xb8\xd0\x37\x05\x74\x5b\x18\x91\x57\x89\x0c\x0a\x0b\xbd\x28\x75\xa3\xfa\xb2\xd3\x5f\x94\x90\x88\xb1\x22\x87\x8a\xae\xcc\x5f\xb5\x29\x0e\x90\x0c\x81\x55\x80\xe6\x54\xdc\x3c\x13\x32\xc3\xcc\x45\xd6\xb6\x0c\xd7\x5d\x79\x5b\xb0\x2a\x2d\xc1\x62\xc8\xee\x01\xf9\x0a\x32\x37\x4a\xe3\x90\x19\xac\xe7\xd2\x71\xd8\xe0\x85\x7d\x58\xb6\x67\xec\x63\x29\x5a\x06\x9b\x67\xf1\x3e\x0d\x36\xc1\x52\x21\x3b\xa6\x36\x4d\x32\x90\xf0\x5f\xd6\x86\x56\x52\xcd\xba\x9a\xcf\x34\x09\x95\x95\x10\x02\x86\x6d\xe9\x60\x2f\x0c\xc8\x47\x4a\xc4\xcc\x09\xc2\xa6\x92\xae\x3f\xdb\xb6\xa4\xae\xbb\x25\x42\x66\x02\x31\xd6\xf5\xa6\x8f\xd0\x80\xd5\xe0\x8e\x5c\x58\x4d\x69\xbd\xcc\x9d\x84\x93\x67\xbc\x90\x28\x13\x06\x19\xc4\x04\x5e\xbb\xc9\x43\xbc\x63\xf9\x23\xef\xc9\x56\x2e\xf2\x1d\x81\x2a\xbd\x3a\xe6\xc9\xc9\xbd\xe3\x17\xf0\xc4\x54\x82\x82\xbd\x40\x5e\x34\x57\xa8\x9a\x1d\x58\x9d\x22\xe3\x68\x8e\xd9\x8c\x8c\x9d\x8d\x6c\x13\x6d\x49\xb7\x73\x0a\xcd\x9c\xd9\x56\x9a\x2f\xa7\x1b\xa3\x30\xd9\xf2\x1d\xe6\x55\x6f\xff\xd1\x87\x40\x2a\x3c\x23\xc8\x8c\xa8\x93\x55\xb1\x14\xf0\x63\xb1\x62\x41\x4f\xb0\xad\x0e\xcb\x41\xd0\x6d\xc2\x3b\x44\xae\x5c\xe0\x09\x49\xde\xc6\xf1\x0d\x5d\x5b\xdb\x2a\x38\x5b\x4c\x30\x37\x41\xcf\x60\x8e\xad\xb0\x0c\x6b\x7c\x15\x79\x53\x68\xf7\xb2\x79\x96\x8a\x57\x6f\x31\x51\x57\xea\x61\x93\xa9\xb6\x15\x80\x08\xaf\xbd\xa0\x50\x42\x93\x7d\x24\xbc\xfe\xaa\x26\xc1\xcd\x06\x12\xd4\x6b\x68\x19\xc7\xd6\x05\x1b\x56\x4e\x65\xe3\x1c\xf1\x8e\x45\xcc\xce\xa7\x88\x71\x46\x10\x95\xc5\xcb\xaa\x9c\xcd\xe2\x11\x56\xb4\x88\x6f\x8c\x2f\xbe\xc8\x92\xaf\x9d\xf3\xd2\x96\x96\x22\xf7\xdd\xdb\x06\x5c\x7a\x2e\x23\x5a\x51\xc5\x62\x01\x08\x8d\x86\x0f\x97\x65\xba\x95\xe3\xdc\xb9\xc0\x7d\xef\x00\x38\x83\x40\x4b\xc5\x11\x88\x91\x95\xc1\x21\x03\x63\x69\x5f\xb2\x1f\x59\x94\x91\x11\xf3\x96\x0d\x20\x44\x2a\x51\x8a\x33\x70\xc9\x30\xae\x8a\xaf\x0c\x6a\x8e\xf2\x5b\x78\xe0\x04\x71\x69\x4a\x20\xb5\xac\xc0\x2a\xd3\x8e\xbb\x7e\x8b\x75\x2d\xa3\x13\x3a\x64\xd5\x19\x7d\x22\xcc\xd1\xf4\x81\x3b\x13\x7a\x50\xae\xd3\x64\x71\x88\x21\x4a\x94\xc4\xa1\xe1\x7a\x39\x47\x32\x06\x99\x7d\xb0\x47\x76\x5f\xb2\xfb\xc6\x28\x08\x83\x71\x55\x02\x27\x77\x71\xbd\x21\x95\x5a\xd8\x55\x93\xc8\x8b\x25\xfa\x03\xe3\xea\x0f\x01\x30\xad\x33\x5e\xc0\xa7\xce\x04\x75\x50\xab\xb8\x01\x87\xd6\x12\x0e\xc2\x01\x40\xd2\xca\x95\xdf\xd6\xb5\x5b\xc4\x2d\xbf\xa8\x34\x3a\xac\x27\x31\xb5\x95\x2c\xea\x1d\xae\xa8\x7a\x2d\x54\x0d\x9e\xa6\x2a\x5a\x71\xd2\x4b\x86\x4e\xb9\xca\xc3\xea\xf7\xa2\x93\x67\xb5\x96\xd0\xbd\x0d\xb5\xa5\x9d\x03\x5f\x56\x60\xd8\x36\xdb\x25\x36\x49\xd3\x6b\x93\xcb\x45\x39\xf2\xc8\x56\x31\x68\x01\x69\x3d\x1a\xb1\x8f\x5c\xd8\x2b\x58\x5a\x98\xf8\x09\x8e\x1e\x0f\x09\x8b\x11\xce\xd5\xdc\x80\xa5\x5a\xbf\xc2\xc2\x52\x83\x96\x34\x80\x6c\x3c\x12\x02\x95\x11\x16\xb1\x2b\x58\xf0\xc4\xdd\x28\x46\x2c\x68\x04\x80\xe8\xa1\x4e\x0f\x54\x1a\x6d\x53\x35\x89\xd4\xfa\x55\xdb\x5a\x34\xd5\xd0\xac\x55\xd0\x5c\x7e\xce\x4a\x35\x41\x01\x42\x1f\xe2\x53\xf8\xb4\xbe\x3a\xe7\xce\xda\xe8\xf4\x3b\x4d\xcf\x75\x2f\xc4\x81\xd5\x28\x8c\x49\xca\xce\x40\x4b\x3a\xdf\x3a\x5e\x5b\x02\x7d\x9d\xe6\x02\xa2\x2d\x9b\xda\xfc\x3a\x9a\xd3\xa4\xf0\x5d\x7c\x73\xe0\x87\xa9\x9b\x4c\xc8\x13\x49\x0c\xe4\x78\x24\x20\xb0\xda\x58\x0d\xbf\x45\xff\xc7\xd4\x95\x44\x7f\x1c\xb1\x4f\xc0\x86\x93\x64\x01\x80\x88\xbe\x65\xac\x2a\xcd\x3c\x36\x0e\x40\xd9\x4c\x0e\x54\x1e\x88\xd9\xeb\x39\x7e\x22\x23\xe6\x9a\xf9\x3f\xe8\x11\xfd\x1b\xfa\x63\x9b\x7a\xe7\xe2\xa3\x5f\xd8\xce\xf1\x31\x88\x3e\x0e\x6e\x39\xcb\x28\x2d\xbf\x71\x66\x90\x92\x11\xb2\x01\x18\xc1\xe3\x1a\x53\xf6\xc4\xa3\x5a\x10\x7e\x78\x6a\xb1\x20\x4c\x8d\x19\x8f\xc9\x98\x34\xb8\x34\x97\x30\x09\x2d\x04\x5c\xf1\x98\xac\x74\x48\x7a\x66\xfa\x33\x98\x6e\x64\x3e\xf1\xdb\x01\xf9\xd9\x3e\x19\xd7\x5b\x1f\xca\x94\xd6\x3c\x72\x0f\x1e\xba\xc9\xb8\x37\x75\xa6\xba\x28\xbf\x03\xb8\x10\xec\x00\x9a\x1d\x7a\x09\x56\x2e\x85\xb5\x7a\x1c\xab\x8e\x00\xfd\xb2\x9e\xb9\xbd\xac\x02\x58\x54\x28\x5d\x21\xe8\x8c\x6a\xf9\xbd\xbb\xc3\x16\x38\xe1\x26\xde\x0c\x83\x11\xd9\xc9\x9d\x51\x2c\x85\xc3\xc9\x38\xf4\xf4\x57\x38\x21\x27\x3c\xaf\x0a\xf0\x76\x01\xa8\x0c\x93\x6b\xad\xac\xbe\xd0\x7c\x78\x66\x12\xb8\xc8\x9c\x9a\x94\xe9\xc1\xe9\x05\xd2\xa7\x83\xa7\x06\x57\x08\x16\x2d\x57\x73\x2e\xe8\x6f\xad\x09\x26\xed\x32\x7a\xe1\x69\x2d\xf2\x71\xcc\x38\xcb\xd2\x3a\x10\xab\x11\x29\x54\x49\x2b\x69\xd2\x99\xd0\x24\x07\x08\x4d\xcd\x66\xa7\x79\x62\x70\xf7\x23\x2e\x62\x53\xf8\x5a\x96\xb2\x7f\x20\x8a\xd2\x89\xf7\x58\xf9\x06\xa9\x45\x1a\xb4\xc8\xfe\xc6\x82\xb3\x54\x00\xfd\x6b\x4e\xf2\x1d\x25\x50\xbd\x69\xc8\xe9\x3d\x9e\xc9\x22\x86\xd4\xac\x8d\xe6\xcd\xc5\xfa\xfe\x5d\xcf\x54\x06\x29\x87\xce\xb2\xe8\x11\x7c\x8c\x4a\x6e\xea\x3a\xae\x65\xd1\xb9\x35\xc8\xe5\x3b\x30\xe9\xbc\x46\x3c\x47\x5d\x46\x6a\x60\x3f\x96\xfc\x9e\x7c\x02\x5e\x95\x45\xbc\x90\x9d\xc4\x41\xc0\x57\xa4\x8f\x17\x34\x99\x6c\xc0\xe4\xea\x42\xf5\xd2\xa0\xd6\xc2\x80\xe2\xd9\x5a\x43\x2e\xac\xe2\x10\x35\xff\x2c\x28\x00\x7c\x2d\x8a\x97\x7d\x09\x53\x77\x5d\x84\x3c\x46\x4b\x29\x46\xac\x85\xb8\x0e\xb7\x84\x8b\x66\x1e\xbf\x86\x01\xc2\x36\x54\xee\xba\xee\xb7\x6f\x3b\x11\x86\x25\xed\xeb\x91\xa8\xa3\x7b\xac\x3c\x0c\xbe\x90\xc3\xdb\x18\x10\xbd\x68\xf3\x7a\x27\xc3\x93\xe3\x38\xc2\xd1\xbc\x75\x52\x13\xce\x13\x82\x59\x9b\xf4\xda\xf8\xb8\x7a\x44\x0c\x36\x25\xb0\xee\x24\x01\x80\x56\xb7\x04\xb6\xa8\x5f\x21\xbe\xb3\x18\x80\xb5\x0d\x0f\x37\x48\x1c\x6e\xa0\x8a\x30\x67\xf9\xa1\x6c\x96\x90\xea\x5a\x59\x04\xf4\x03\xdb\x49\x12\xe5\x49\x50\xd5\x2f\x23\x42\x8f\x5a\x2f\xf1\x13\x61\x5a\x67\xb0\xe3\x70\xce\x8c\x67\x97\xcf\xea\x6b\xf9\x1c\xf8\xae\x9d\x3f\x0d\x92\xc6\xe2\x11\x83\x83\xcb\xcb\x87\x55\xd3\xaa\xd4\x6a\x46\x68\x97\xda\xf8\x74\x06\x42\xc4\xda\xc7\xf3\xae\x6c\x26\x5e\xfb\x4c\x9a\xbe\xc7\x10\x63\xb0\xb5\x6b\x2d\x70\xbf\x14\x99\xf6\x66\x63\x1d\x9a\xd2\x2b\x19\x91\x21\x6a\xa3\x0c\xf2\x12\x04\x6d\xb4\xa1\xf9\xbc\xe8\x5d\x52\x54\x2f\x70\xb7\x41\xc7\xa1\x2c\x75\x55\x77\x74\x3c\x83\x75\x72\xd9\xb9\xbd\xb0\x11\xb7\x65\x97\xad\x4f\xcf\x28\xc2\x1c\x6d\x7d\x4e\x25\x30\x24\x97\x43\x4a\xf0\xcf\x46\xc3\xa6\xd2\x58\xc0\x5c\x95\x82\x34\x53\x0b\x5b\xd4\x0a\xee\xc5\x30\x25\xd3\x00\x76\x35\xb9\x87\xab\x77\x64\x5c\x72\x10\x37\x75\x06\x1d\x59\xb3\x42\x63\x93\x6e\xa1\x43\x00\x88\x4a\xc2\x7d\x5b\x34\x88\xa9\x0f\x3a\xc6\x49\xab\x2d\x6b\x07\x4c\x13\xb2\x24\x8b\x24\x7b\x8b\xdd\xa9\x44\x4e\x34\xef\xc2\x49\x52\x99\x17\x86\x6c\x56\xe5\x6b\x84\x4d\x8a\x42\xa6\xdd\x9d\xd5\x09\x9e\x90\xb5\xdc\xd3\x17\xe6\x83\xa5\x54\x04\xaf\x40\xaa\x69\x96\x25\x8b\x6e\xa8\x4d\x61\xe8\x5d\x23\xc6\xd5\xaa\x81\x85\xc8\x58\x4b\xef\xa6\x32\xba\xd4\x66\x43\x94\x24\xca\x05\x55\x8b\xb1\x35\xfa\x75\x67\x5a\x77\xf6\xcb\x53\xfb\x61\x17\x8d\xfa\x04\xb9\xfe\x9c\x91\x11\xee\x29\x41\x4d\x01\x14\x3b\x85\x2e\xdb\xad\xb5\xe4\x46\xec\x9b\x65\x0b\xeb\xc0\x77\xba\x0d\x55\x77\xb1\xe9\xf0\x6c\x61\x85\x31\x9f\x3a\x58\x9b\xee\x0b\x5b\xad\x38\xb1\x86\xb5\xd4\xa1\xe7\x66\x82\x72\x61\x0b\x3b\x74\x09\x6a\x4b\xf1\xe7\x71\x86\x05\x4e\x12\x92\x50\x99\x6e\x6e\xdb\xfd\xd3\x77\x4b\x47\x7b\x6a\x0a\x90\x48\x5b\xce\xe7\x33\x4d\xf3\x14\xb1\x3c\x9d\x58\x29\x17\xcb\xc7\x10\xbb\xd0\x65\x5a\x1b\x08\x1e\x37\xc0\x52\xbe\xb7\x08\xd0\x28\x47\x2c\xc0\x25\xb6\xa6\x0a\x1c\xcd\x29\x79\x02\xd4\x44\xc1\x88\x94\x47\xe8\x8a\x2b\x72\x82\x2e\x71\x76\x0f\x82\x9a\xa9\x08\x38\x33\xd6\x71\x2c\x91\x96\x5a\x73\x46\xd5\xc1\x88\x59\x30\x63\xb7\x2a\xc7\x11\x67\x06\xd0\x32\x82\x85\xf5\x4d\x80\xb9\xd7\x21\x3b\x2a\x97\x97\x46\x65\xcb\x62\x0b\xfc\x3c\x0e\xa2\x57\xc7\x26\x3b\x60\x0d\x3a\xbe\xc5\xcf\x26\x5e\x1b\x2a\xe0\x9b\xaf\x97\x48\xee\x36\x20\xca\x16\x80\x31\x38\xae\x2e\x70\x84\x5b\x30\x01\x5f\xba\xca\x44\xa7\x7e\x4d\x8f\xc8\x11\xfa\x3e\xe1\x13\x79\x80\xa4\xc7\x3c\x76\x05\xfa\xe5\x81\x71\x50\xc1\xbf\x4d\x26\xcf\x37\x6e\xf5\x0b\xbe\x0f\x55\xdb\xa6\xf4\xb3\xc1\x30\x90\x7f\x3a\x39\x3e\x4e\x17\x87\x93\x3c\x7a\x24\x4a\xff\x05\x32\x45\xe3\x0a\x39\x00\x20\xdc\x04\x27\xb4\x6a\x75\xea\x50\x44\x9d\x28\xd2\x82\xd8\x49\x02\xb0\xd7\xfa\x4a\xf7\x75\x31\x1d\x72\x0d\x67\xcd\x45\xff\xec\x94\x45\xde\x76\xbc\x4a\x78\xb9\xaf\xa3\xad\x98\xba\x9f\x21\x4c\xef\x34\xc1\xb3\x8a\xca\xb2\x86\x92\x72\x9d\x52\x4b\x45\x7a\xee\x10\x6f\xa1\x4f\x59\x39\xca\xec\x2b\xe7\x8e\x04\xb7\xa2\x75\xb7\x1c\x8d\xd8\x40\xa2\x67\x62\xca\x79\x42\x4a\x19\x78\x27\x72\x2a\xe7\x3e\xa1\x0c\xec\xa5\xd0\xa8\x41\x33\x35\x49\xef\x56\x71\x74\x9a\x95\xf3\xdf\x58\x0d\x14\x27\x92\x1c\xe8\x86\x01\xd1\xca\x05\x12\xa2\x67\x81\xb3\x8c\x88\x11\xb3\xc8\x94\x80\xbf\xcc\xb9\x0d\x12\x69\x8b\x26\xef\x35\xca\xfd\xd2\x28\x07\x95\xd0\x72\xa8\x70\x9b\x82\xd2\x23\x8b\x42\x7e\xce\x3e\xe5\x55\xce\xd2\xd5\x0c\x60\xbc\xf0\x71\xcc\x89\x0c\x0c\xcf\xc8\xdb\x8f\x12\x3a\x25\xfa\xc6\x1c\x31\xbd\xf4\xa1\x91\xdc\x60\xfa\x3a\x88\x5f\xdd\x69\x24\xb8\x94\x36\x5a\xdc\xb4\xb3\x3c\xe7\x67\x8b\xf2\x61\x06\x98\xd8\x14\xee\xaf\x16\x12\x0b\x9e\xb9\x92\x62\xf6\x61\x73\x3d\xf7\xb6\xa6\x56\x16\x10\x2b\xd6\x62\x8d\x12\x62\xc7\xa7\x17\xe7\xbe\x6e\x4e\xa5\xeb\x7a\x0d\xb1\x10\xcc\xb9\xbd\x8a\x58\x7d\xc6\x41\x3d\xb1\x4a\x13\x4b\x2a\x8a\xad\xde\xac\x72\x8c\xea\x36\x48\x5d\x95\xad\x5f\x75\x67\x55\x68\x66\x55\x28\xf5\x8e\xb6\xa9\x85\x15\x46\x20\xe4\xbc\xb4\x57\x18\x84\x05\xfd\x96\x54\x38\xcd\xc2\x34\x41\x07\x55\x68\xa7\x69\x8e\x5a\x1b\xe3\x7e\x55\x08\xe5\x08\x9b\x08\x8c\xea\xe0\x6a\x5b\xb1\x9e\x97\xe6\xde\x22\x33\xef\x22\xf4\xf6\xf5\xf2\x6e\x93\x45\x11\x69\x26\xad\xbc\xe1\xaa\xfe\xb6\xd8\xaa\x27\xc4\xa3\x50\xb7\x6e\xe8\xb6\x89\x75\x1e\xad\x46\x10\x2c\x6d\x08\x01\xe4\x9f\x55\x72\x53\xd6\x30\x69\xfa\x31\x9b\x0c\xd6\x43\x8f\xfb\x1e\x5c\x35\xb6\x94\x51\xe4\x0e\x22\x15\x82\x3c\x11\x01\xb4\x63\xe3\x54\x58\xf9\xa8\xe2\x44\x10\x1c\x2f\x82\x15\xf1\x4e\x72\xd3\x33\x98\x74\x24\x4d\xb5\xd2\x09\xe2\x34\xe3\x87\x3c\x73\x72\x76\xe9\x2d\x00\xed\xa7\x53\x7d\x63\x05\x2e\x76\xfd\x05\x3b\x24\x9f\xa9\x54\x5a\x2f\x69\x88\x2f\x74\x8d\xc0\x2d\x0d\xa5\x7c\xe6\xc4\xde\x70\xa3\x0f\x83\xef\xaf\x6f\xef\x87\x67\xa3\x0f\x45\x44\xb9\x4b\x99\xf2\x20\x34\x0e\x53\x9c\xb3\x11\xf3\x41\xa0\x1e\x73\x15\xf6\x12\xe1\x38\x2e\x10\xaf\xad\xe2\x63\xe4\x8c\xa5\x1c\x39\x38\x15\x2b\xc3\x3f\x97\x34\xf3\x00\x79\x33\xfb\x7a\xb2\x96\xb8\x7b\x4a\x27\xc7\x64\xff\x2c\x49\xd3\xd8\xd1\x65\x13\xc2\x45\x2a\xa3\x1f\x12\xe5\xf0\xcc\x18\x79\x76\xf2\x3d\xdc\xce\xc7\xd8\x5c\xc2\xeb\x71\x3b\xb7\x21\x1b\x6c\xea\x47\xfa\x99\xc4\xb7\x2d\x52\xd5\x4e\xb2\x30\x3a\x45\xaf\x35\xee\x42\xce\xe8\x3a\x5a\xaa\x9f\xca\x83\xfe\xae\x3b\x5b\xba\x2e\x50\xa0\x0a\x44\x47\x80\x73\x54\x08\xa3\x88\x08\x85\x29\x43\x53\x38\xd8\x2c\x5a\x20\xc0\xe2\x20\xe0\x77\xfd\x0e\xa5\x94\x41\xb6\xfb\xb2\xa5\x7d\x28\xcf\x63\x9d\x52\xfe\xe7\x57\x0f\xf7\x25\x51\xf5\x87\xeb\x87\x72\x1d\xe9\xc1\x2f\x4b\x65\xd5\x4a\x0b\xcb\x02\x5c\x82\x29\x16\x99\x73\x16\xd8\xd2\xaf\x4c\xe3\x44\x93\x85\x22\x0f\xb7\x17\x5b\xc9\x77\xcd\x0e\x9e\x56\x58\xe2\x50\xba\x6a\xce\xe2\xef\xf2\x69\x4c\xa2\x55\xc0\x89\xdd\xe9\xc8\x44\xee\xe8\x75\xb0\x16\x30\x0b\xaa\x84\x25\xca\xb0\xb0\xbe\x93\xd8\x04\xed\x94\x8b\x11\x19\xcd\x6b\x19\xea\xc1\x27\xa2\x7e\xd2\x57\x1f\x67\xbb\x88\xdc\xb7\xa2\x2c\xf8\xf4\xc8\xf8\xc9\x34\xbc\xc6\x49\xb3\x43\x59\x92\x9e\xe1\x84\x65\xe8\x01\xd9\x1e\x42\xac\x80\x23\x53\x94\x7a\xa0\x9b\x83\x15\x71\x31\x70\x5a\x25\xe5\x4c\x53\xa4\x41\x70\x74\xb0\x8f\x41\x73\x7c\x6a\x3e\xee\x08\x82\x15\x44\x62\xeb\xb6\x8a\xa5\x44\x83\x9b\xf3\x86\xb5\xbe\xa8\xba\x3d\xbe\xac\x0a\x1a\x89\xf7\xc0\xec\xba\x78\x46\x90\x52\xb7\x17\x75\x33\xec\x4c\xb7\x2b\x99\x61\x1c\xd5\x37\x65\xef\xf7\x3e\x00\x84\x36\xa9\x0c\xa5\x54\xd9\x15\x58\xa0\xeb\x65\x8f\x15\xcb\xb0\x26\x50\x4f\x38\x20\x9b\xba\x10\x82\xd3\xd4\xe3\x62\x0f\x42\xb0\x1a\x6e\x6a\x74\x5a\x7f\xf8\xce\x00\x7c\x8a\xd9\x74\x41\xf0\xf9\xc9\x50\xb4\x07\x78\x00\xc8\x0a\x57\x03\xce\xc5\xb3\xda\x7c\xeb\x70\xba\x21\xb5\xad\x07\xfa\x53\x8c\xcf\x99\x6c\x2d\xfc\x2d\xce\xb0\xb5\x3b\x80\x12\xe5\xc0\xd9\x9b\x6a\x79\x1d\x8d\x58\x10\x64\x21\x8d\xda\xa3\xcf\x88\xab\x87\x00\x45\x36\x19\x60\xe9\x42\x62\x89\x17\x7e\x4a\x3b\x50\x4d\xeb\x56\xf3\x72\x45\x83\x5a\x3f\xf6\x74\xca\x39\x76\xc9\x73\xce\x82\x62\x63\xd7\x42\xfb\x12\xb4\x17\x60\x98\xdb\x8e\xc1\x84\x0a\x46\x0b\x1c\x54\xc8\x0a\x12\xae\x63\x4e\x24\xfb\x4a\xf9\xf4\x44\x9a\xd8\x2a\x0c\xb8\x6a\xd2\xd6\x52\x1d\xa6\xb6\xe5\xe5\x07\x7c\x07\x88\x42\xeb\x2a\x0e\xc1\xb1\x5a\x69\xa6\x72\x7e\x49\xa0\x84\x30\x7e\x06\x3a\x6d\x83\xff\xf9\x9c\x91\x68\x13\xd8\x93\x1b\x2c\x70\x4a\x14\x11\xcb\x42\x68\xca\xf5\x6b\x41\xc4\x71\x3b\x68\xfb\x35\xbb\x68\xc0\xfd\xab\x55\x20\xbc\x76\x7b\xb1\x0a\xc6\xc4\xcf\x62\x2d\xc4\x26\x3d\x8d\x9f\x6c\x35\x83\x35\x67\x61\xfb\x29\xa6\x61\x23\x84\x02\xd4\x9a\x6d\xe7\xf4\x3a\xf0\x1d\xf7\x35\x20\x8c\x52\x88\xcb\x9e\xe0\x76\xac\x1e\x65\x1b\x60\xc7\x2a\x5e\xba\x13\xde\xed\xa2\xf2\x5d\xda\x67\xe5\x50\x95\xe2\xfd\x81\x4a\x40\xa5\x32\xd8\x15\xcd\xa0\x1b\x20\xb4\x34\x45\xf5\x05\xae\x2a\x0b\xc9\x56\x18\x74\xad\x64\x55\xad\x67\x53\x59\xae\x15\x3c\x6e\x57\x80\x04\xbd\x44\xb3\x6b\x89\x66\x15\x29\x97\x22\x42\x35\x75\x12\x51\xc1\x46\xb1\x75\x66\x6d\x52\x7b\x79\x82\x90\x2f\x63\xaf\x48\x5b\xac\x12\xae\x7e\xca\xfc\xbf\xca\x1c\xdc\x11\x75\x48\xaa\x4d\x89\x80\x47\x81\x0b\x0a\x3c\x50\x49\x28\x0d\xd8\x58\x10\x18\xad\x09\xdd\x33\x56\xfe\xf3\x2b\xe3\xc0\x82\x84\xdc\x05\xcf\xd1\x33\x95\x73\xa4\xf8\x88\x41\x6c\x9b\xf7\x06\x28\x8e\xcc\x8b\x07\xf0\x16\xa4\xee\xcb\x7c\x92\x52\x85\x70\x30\xc3\x92\x49\xf2\xc0\x9e\x67\xfd\x01\xcc\xb8\x31\x37\xbc\x09\x56\x66\xc5\xa1\xd9\xc0\xbe\x56\x34\xb2\x6d\xfa\x77\x10\x87\xfb\xb2\x09\xe0\x81\xc6\x13\x6a\x98\x8d\x67\xae\xcf\x00\x47\xcd\xd6\x06\x0b\x74\x09\x68\xa4\x54\xaa\xca\xdd\x62\x0d\x3d\x2b\xb2\xbf\x8b\x8d\xe8\x94\xfe\x5d\xbc\xbe\x8b\xfc\xef\xb6\xca\x48\xcb\xf2\x01\xdd\x27\x2d\xf6\x6f\x97\x67\xaa\xb8\x0b\xf6\x0e\x25\xa5\x9b\x56\x49\x69\xdf\x90\xb8\x8a\x20\xf6\xcd\x43\xa2\xd7\x51\x07\x8b\x9c\xa2\x90\x8a\x82\x14\xc1\x32\x8e\x09\xa9\x72\x7e\xc6\x15\xe4\x81\x44\x50\x35\xba\x96\x9b\x38\x62\xcd\x12\xc8\x72\x9e\xb8\x6d\x5a\xc1\x4e\x11\xbb\x82\xf3\xe7\x66\x61\x2d\x5a\x3f\xfb\xc0\x2c\xa3\x2c\xdb\xfa\xcf\x55\x11\xb3\x70\xf1\xb5\x28\x20\x20\x78\x6c\x92\x24\xdb\x70\x2a\x3b\x06\xfd\xaf\x3c\x17\xf6\xd2\xdd\xa1\x6a\x57\xe3\xce\x9d\x73\x24\xbc\x8c\x6c\xb9\xb1\x0b\xf2\x75\x6a\x7c\xc5\x53\xbb\x49\x5d\x4b\x00\xc2\xdc\x19\x7c\x67\x35\xa3\x5e\x37\x7e\x00\xde\x5d\x3b\x74\x6c\x22\x5d\x3c\xa8\x74\x65\x4b\x4a\x13\xb6\xf5\xc2\x5f\x60\xd2\xeb\xd6\x22\x0d\xbc\x8d\xc2\x46\xa8\xd2\xd0\x6e\x00\x45\x48\x6d\x60\x5f\x85\x0f\x7b\xd1\x2e\x67\x31\x11\x8c\x60\x35\x7f\xbd\xbc\x80\xd3\x6d\x8d\xd3\xaf\x96\x23\x70\xba\x93\x42\xd4\x95\xb8\xfb\x35\x43\xee\xd7\x88\x5f\x2f\xca\x92\xd6\x14\xc7\x06\xa3\x61\x00\x9b\xb2\x0e\x95\x6e\x95\x3a\xd0\xac\xcc\xbd\x4c\x12\x45\x83\xd5\xa7\x96\x3e\xa1\x0f\x7b\x58\xcc\x75\xc5\x92\x7c\x11\xd9\x0a\x2f\x1f\x40\xbf\xac\x6c\x6c\x1e\xc4\xd4\x43\xed\x5e\x85\x29\xb3\xdc\x6b\x59\x18\xbd\x96\x28\x53\xdc\x14\x39\xbf\xf7\x39\x19\x5f\x7c\x4a\x46\x1f\xa0\xdf\x07\xe8\xf7\x01\xfa\x6b\x05\xe8\x2f\x33\x33\x7a\xcf\x17\x94\xd1\x2b\x15\x3f\x31\xeb\xb8\x42\x5b\xdb\x3c\x70\xde\x59\xea\xc2\xa8\x23\xfb\x8b\xfd\xa1\x31\xf0\xa8\xf6\x59\x75\xb6\xa1\xd5\x90\x2d\xaa\xc6\x77\x2c\xe2\xc4\x22\x94\xd9\xb0\xe0\xb2\x95\x67\x99\x41\x72\xc4\x7e\xe0\xcf\xe4\x89\x88\x03\x84\x15\x4a\xb9\x56\xd2\x83\x28\x14\x20\xb8\x12\xd8\xb5\x89\x36\xc0\xe8\x0a\xa7\x24\x36\xa5\xcc\x82\xe0\x41\x6b\x16\xb5\x0e\xcd\x26\x20\x4e\xc0\x94\x34\xdb\xe0\xa2\x13\x46\xcc\x04\xf4\x99\x20\x32\xb8\x93\xa9\x9b\x18\xd0\xf5\x1f\xbc\xbb\xf5\x0f\x47\xe8\x5e\xdf\x03\x54\x96\xc7\x1b\xe0\x72\xb5\x8d\x6d\xc4\x66\x82\xe7\x99\xb7\x54\xf1\x89\xa9\x69\x69\x62\x8c\xea\xee\x56\x18\x8c\xf3\xb5\x46\x38\xd6\x1a\xef\x72\xc2\x79\x93\x58\xcf\x8d\xc0\x6d\x42\x02\xd2\x5c\xc2\x07\xb0\xd9\x80\x72\xe3\x25\x0d\x20\x3d\x96\x41\x74\xbf\x90\x0b\xf7\x8c\x48\xb0\xbd\x78\xdb\x76\x29\xc3\xb8\x9c\xc5\xde\x38\xce\x65\x96\x47\xef\x1d\x70\x16\xf4\xe6\x04\xf9\xa2\x73\x1b\x59\x65\xd2\x17\x2d\x3f\x7e\x31\x9b\x64\xe7\x18\xd5\x36\x7e\x71\x93\x8b\x8c\x83\xc4\x93\x2c\x5c\x42\xbf\xc5\x00\xcb\x78\x96\x9b\xe8\x31\x1a\x06\x13\x35\x52\x36\x95\xea\x12\xab\x68\xae\xf9\x7b\x81\x85\xb5\xa3\xa8\xba\x82\x2b\xbf\xac\x9d\xb2\x61\x06\xa7\x61\xef\x2d\x86\xfb\x0e\x76\x6b\x73\xbf\xba\x20\x76\x77\x63\xa7\xba\xbf\x52\xb9\xfe\xc0\xfa\xe8\x3e\xb1\x4f\xf4\x44\x57\x51\xd1\xaa\xf1\x77\xa3\xad\x72\x2d\xa6\x9d\xc7\xeb\x6d\x01\x2e\x72\x66\xa1\x9c\x8a\x17\x6d\xe9\xc5\x16\x27\xfb\x86\xb5\xd4\xad\xf7\x04\x8a\xf3\x17\x76\xcd\x14\x67\x5a\x58\x57\x5c\xdf\x92\x62\x66\xe4\x45\x13\x8d\x8a\x30\xca\x05\x75\x67\xbf\x92\x2d\xdc\x4e\x1d\x60\x07\x3c\x0e\x6b\xed\x44\x38\x28\x43\x66\xdc\xea\x38\x52\x39\xf6\xe1\x7f\x40\x13\xae\xba\xb1\xc9\x8c\x76\xee\x6b\xe1\xc4\xa8\x86\x3d\x5d\x49\xd8\x5b\xec\x32\x6e\x42\xbe\xeb\x74\xd2\x28\x9b\x05\xb0\x79\xcd\xb6\xd8\x2e\xa8\xf8\x8d\x5f\x76\x43\xf6\x6f\xfc\xd4\xc9\x3e\x9b\x7c\xbb\x04\xd6\x67\xe3\x08\xe8\x52\x34\xb9\x0d\x37\xb5\xd2\x53\x08\x68\x68\xed\x64\x80\x4b\x4a\xc1\x1d\x8e\xad\x34\xf5\x9f\xfe\x2f\x53\x45\xc9\x2c\xcd\x7f\x22\x2e\x46\xcc\xfc\x7e\xe0\x2b\x18\xe8\x17\x0a\x68\x50\x9c\x92\x02\x3c\x51\x94\x61\xd6\x00\x6c\xc2\xc2\x64\x19\x18\x58\x0f\xe0\xae\xc7\xf0\x98\x4f\x88\x60\x44\x0f\xcd\xa5\xa5\x7b\x66\x96\x62\x86\x67\x00\x3a\x7b\x00\xf1\x67\x20\xae\x16\x22\xbf\x21\x69\x53\x09\x0f\xb8\x95\x66\x96\x36\xab\xb5\x28\xe8\x09\x7d\x1a\x51\xd6\x62\x5e\x16\x41\x0c\xcd\xd4\x7f\x6b\xfb\xdf\x4c\x62\xbf\x1f\xdc\xfd\x38\xbe\x1d\xde\x5d\x3f\xdc\x9e\x96\xc4\xf6\xd3\x8b\x87\xbb\xfb\xe1\x6d\xe3\xb3\x22\x23\xf4\xaf\x0f\xc3\x87\x96\x47\xae\x81\x8b\xc1\xf7\xc3\x52\x75\xdc\xbf\x3e\x0c\x2e\xce\xef\x7f\x19\x5f\x7f\x1c\xdf\x0d\x6f\x7f\x3a\x3f\x1d\x8e\xef\x6e\x86\xa7\xe7\x1f\xcf\x4f\x07\xfa\xcb\xf0\xdd\x9b\x8b\x87\x4f\xe7\x57\x63\x17\xdc\x1b\x3e\xfa\xf9\xfa\xf6\xc7\x8f\x17\xd7\x3f\x8f\x83\x2e\xaf\xaf\x3e\x9e\x7f\x6a\x9a\xc5\xe0\xee\xee\xfc\xd3\xd5\xe5\xf0\x6a\x79\x15\xde\xe6\xd5\x68\x2d\xf0\x19\x5c\x64\x81\x71\x26\x10\x93\x26\x0b\x4b\xda\xf4\x37\x70\x11\xdc\x18\x7a\x3c\x3c\x70\x7f\x99\x9a\xb9\x87\x9a\x05\x3a\xef\x53\xc1\x3d\x46\xcc\xbb\x07\xfd\xa5\x0a\x35\xd3\x6d\x82\x6f\x69\xb4\x27\x68\x00\x67\x05\x14\x86\x52\xa7\x90\x3f\xe0\x47\xea\x1c\xca\x40\x87\x09\x4d\x29\xf8\x96\xd1\x21\xaa\x6e\x78\xb9\x41\x3b\x27\x18\x82\xf5\x8e\xc5\xcb\x4e\x83\xac\xe6\x0e\x03\xa5\x9c\x20\xc7\xa1\x89\x51\xdb\x0d\x2a\xe9\x82\xe1\x94\x46\xd5\x44\x07\x00\xe6\x44\x05\x08\x45\xb5\xc5\x12\x81\x95\x5b\x9e\x13\xf4\xe3\x5f\x8a\x41\x81\xa7\xc0\x1a\x08\xf2\x5a\xad\x35\xfb\x40\xe4\x66\x55\x57\x91\x67\xa9\x27\x77\xcc\xad\x09\x17\xce\xad\x2d\xc9\x0b\x6e\x9d\x9c\x05\x40\x54\x25\x1f\x8f\x3e\xde\x66\x46\x15\x1a\x3f\x41\x77\x00\x82\x21\x0b\xd5\x5d\xef\x62\x96\xe4\x33\xca\x10\x4d\xb3\x84\x14\xc5\x9c\x27\x64\x8e\x9f\x28\x77\x85\x0d\x4c\xfd\x07\x58\x47\x2b\x5a\xa1\x43\xd4\x7a\x50\x4e\xd0\x20\x8e\x65\x99\xc1\x95\x28\xc7\xb1\xcc\xc3\xf2\xb0\x43\xec\x28\x16\x7b\xb6\x59\xa1\xa3\xe2\xc8\xc1\x8a\xed\x1e\xe6\xa3\xce\x0e\xcb\x77\xef\x16\xd7\xbf\x5e\xc1\xb1\x23\xe5\xf1\x46\xc2\xc0\x3d\x96\x8f\x8e\x35\xaf\x12\x08\x1c\xe0\xca\x76\x3d\x5a\xe4\x95\xae\x9d\xfa\x95\x1d\xc3\x41\xdb\xac\xcf\x56\xbc\xe0\x15\x5d\xba\x19\x27\x95\xa2\x4e\x9d\xfb\x2b\x15\x85\x6a\xec\x6c\xa7\x5e\x95\x66\x69\x0c\x8e\xe4\xd8\xd3\xff\x1a\xf3\xb8\x81\x4f\xaf\xfd\x97\x4b\x45\xb6\x71\xb0\x6e\xeb\xfa\x5a\x6a\xa9\xb0\xd6\xdf\xb2\x94\x0e\x77\x04\xfc\xd3\x5d\x18\x04\x48\x7e\x1a\x81\x5b\x0d\x53\x66\x0b\xb5\x10\xef\xf7\x71\xa5\x89\xf5\x39\xf6\xc5\xc3\xf0\x84\x3f\x95\x94\xcb\x94\x48\x89\x5b\x60\x41\x02\x93\xd8\x36\x8c\xc1\x9f\x50\xfb\x61\x47\x7a\x72\x67\xf2\x5e\x7f\xb5\xcc\xe8\x73\x1b\x6a\xc6\x6e\xa2\x5a\x60\x8d\x5d\x3c\x2b\xba\x36\x59\x6d\x9a\xbf\x1c\x14\x21\x2b\x5c\x04\x91\x3c\x6d\x6e\x96\x8e\x66\xb5\xea\x82\x35\xd6\xdf\x09\x5d\x65\xeb\x47\xba\x04\xad\x6f\x8c\x95\x6c\xfd\x17\xb8\xbc\x3e\x6b\x50\x5d\xc9\xaf\x18\xd6\x26\x36\x65\xf8\xc1\xe6\x16\xda\x52\x0f\x10\x36\xc9\x84\x85\x34\x25\xf3\x68\x6e\xbc\x39\xfa\xca\x38\x18\xb1\xe7\x60\x43\x4a\xe1\xb6\x83\xb0\x25\xc0\x99\xfc\xac\x8f\x1b\x7d\x2a\x05\x31\x83\xc8\x48\x21\xa2\x36\x20\x04\xe3\x78\x2b\x0a\x0b\xad\x20\xf0\x60\xbf\xb6\x20\xf5\x0d\xaa\xc8\x55\xd6\xb7\xad\x96\x9c\x9f\x5b\x50\xc2\x6d\x0b\x4d\xb9\xeb\x10\x82\x2a\x72\x4d\x23\xd8\x41\x11\xb9\x57\x05\x7e\xf6\x49\x91\x26\x87\x36\x9d\x58\x24\x08\x3d\x5d\xb7\xda\xff\xe6\x66\xf4\x6f\xc6\xef\x90\xb7\x40\x87\x04\xad\x79\xec\x67\x74\xa8\x65\x56\x97\xd2\x6e\x03\x1e\x24\x3a\x34\x78\x72\x5f\x41\x3c\xe3\xe0\xe6\xfc\xab\x03\xf4\x55\x98\xd3\xf5\xd5\x46\x07\xd0\x8e\xdb\x16\x92\x03\x6d\xaa\x14\xd8\x5f\x3e\x76\xb0\x57\x95\x93\x68\xf7\xcc\x1e\x44\xd4\x76\x0e\xf5\x97\xa5\x6f\xc0\x09\x0c\x85\xd1\x8c\x9f\xd4\x87\x15\x5b\x17\x90\x91\x71\xa9\x6c\x58\xbb\x78\xc4\x26\x8b\xaa\x93\xe7\xc0\x7b\x79\x3a\x9f\xd2\xad\x8b\x7d\xe9\xf6\xea\x49\xc0\x3b\x0e\x77\x5d\x7e\x1f\xac\x48\x2b\x1e\x98\xc8\x66\x3e\x0d\xb8\x58\x5b\x34\x40\x1f\x27\xde\x34\xab\x92\xbd\xcc\x2d\x66\xe3\xa6\xac\x92\x7f\xde\x1b\xb9\x75\x08\xae\x1e\x34\xad\x88\x8d\xab\x6f\x11\xae\x7b\x2a\x7b\x59\x2a\xdb\x45\x5e\x41\x79\x70\xeb\x5f\xa0\xa7\x46\x8e\x0b\x9a\x71\x06\x57\xad\x4c\x78\x06\x5f\xaa\x08\xb7\xba\x94\xea\x9a\x3e\xdf\x60\x4d\x56\x3b\x7d\xef\x4c\xe0\x80\x71\xbb\xd6\xc7\x5a\x1d\xea\x40\xd9\xf2\x34\x9c\x9a\x1c\x42\x45\x53\x72\x80\x38\x4b\x16\x41\xb0\x83\x3d\xaf\x40\x6e\x26\x16\x68\x4e\xa8\x70\x9d\x58\x24\xbf\xb5\x92\xce\xd7\x94\xc6\xdb\x68\x64\x8b\x48\x93\xab\xc1\xe5\xf0\x6c\x3c\xbc\xba\x3f\xbf\xff\xa5\x01\xa5\xb1\xfc\xd8\x01\x35\x06\x2f\xdc\xfd\x72\x77\x3f\xbc\x1c\x7f\x1a\x5e\x0d\x6f\x07\xf7\x2b\x40\x1c\x97\x75\xd6\x06\x10\x98\xcb\x26\xf5\x6d\x1d\x90\x40\x67\xe6\x6d\xe8\xbd\x0e\xe5\x18\x74\x42\x49\x0b\x9c\xa3\x49\xb0\x67\x31\x11\x28\x26\x4f\x24\xe1\x59\x61\x56\x6d\x5c\xb0\x00\xe7\xb1\xa1\xfd\x65\x58\x8f\xd0\x66\x75\x8d\x4f\x90\xa9\x02\x16\x14\x42\xf5\x0d\x82\xc8\x87\x05\x61\x5f\x29\x44\x3e\x67\x09\x8d\xa8\x0a\x12\xf0\xb8\xb0\xee\x15\xe3\x3e\x84\x28\xd0\x15\xc4\xb5\xb3\x68\x94\x9d\xeb\xfc\xa1\x27\xbd\xae\xed\xfb\x13\xe5\x71\xc7\x56\x96\x96\xd9\x81\x62\xdf\xe2\x34\xae\xc1\xa2\x6d\x30\xba\x97\x30\x0f\xd4\x33\x61\x6c\x12\x5d\x0b\x64\x5a\xf3\x20\x57\xdf\x86\xcb\xe2\x64\x4a\xe7\x7a\x79\xa0\x4c\x37\x4a\x7d\xe3\x70\x97\x52\xc9\xc5\x1d\xe0\x5b\xd8\x18\xf1\x35\x03\x16\x6a\x95\x44\x98\x89\xed\xc4\x48\x90\x94\x2b\xad\x80\x99\x88\x80\x03\x2d\x54\x51\x9c\xd0\xdf\x00\x09\x4a\x90\xa3\x20\x82\xc2\xe1\x67\x15\xee\x03\x8b\xd2\x70\x34\x62\x67\xc3\x9b\xdb\xe1\xa9\x66\x48\x47\xe8\x41\x02\xc8\x53\x69\xea\x67\x96\xbc\x8d\x38\x16\x46\x32\x50\x26\x15\xc1\x6d\xc1\x60\x44\x08\x2e\xba\xf3\x07\xdf\xdf\x10\xbe\x6b\x26\x6f\x78\x56\xb2\x4d\x39\x03\xc0\x55\x6b\xbd\xdc\x20\x36\x7f\xe7\xa9\x4f\xb7\xf8\xb9\xb4\x22\x21\xc8\x05\x48\x22\xe5\x55\x7f\xc1\xd5\x06\x98\xcc\xee\xf3\x2b\xf5\x79\x03\xdf\x2e\x9b\xe7\x3d\x84\xd8\x49\x55\x60\x6e\x1a\x58\x4e\x5f\x0f\xa5\x32\xcf\x56\x51\x51\xbc\x05\x20\x46\x85\xf4\x27\x64\x86\x19\x12\x39\x63\x15\x10\xd6\xd0\xd2\x56\x0f\x9a\x59\xf7\xa8\xea\x35\xc3\x29\xcf\x19\x28\x0d\x10\xc6\xda\x30\x18\x99\x11\xa6\x56\x0c\xe6\xad\xe0\x4e\x2a\x43\xdd\x5f\xc4\x93\x86\x81\xb6\x81\x9e\x34\xf9\x93\xa0\x28\xef\x7a\xd7\xb2\x0b\xca\x2b\x39\x95\xf4\xa1\xf2\xf7\x73\xb3\x96\x8d\xe5\xe3\xd6\xdd\xdd\x63\xf9\xb8\xba\xab\x98\x44\x8f\xeb\x5e\x36\xd5\x0c\xc8\xc4\xd6\x34\xae\x19\xfb\x16\xfa\xa9\x2d\xda\x01\xa5\xac\xa3\x47\xf4\xc3\xfd\xe5\x05\x9a\x52\x2d\xf7\xea\x6b\xe5\x0a\x6b\x19\xfb\x41\x24\xce\x2e\x6c\x6d\xab\xb9\x48\xfc\xdd\x0b\x1b\xef\x44\xa9\x40\x4a\xd0\x37\x1a\x9e\x11\x67\xec\x15\x16\xd3\xae\x52\xb4\x43\x60\x16\xf3\xd4\xcc\xe3\x58\xe6\xd3\x29\xfd\x7c\xa4\xb0\xf8\xa6\x65\x3d\x4c\x54\xc5\xf8\x6f\x7c\x32\xd6\x23\xda\xf2\x22\x6e\x6a\x0e\xd9\x52\xbb\x7e\xd9\xec\xcc\xce\xcc\xbb\xff\x97\x4f\x20\xa7\x3c\x13\x1c\x70\xf6\xc0\x3b\x67\x23\x15\xec\x2b\x8e\x92\x8e\x90\x4b\x54\x2a\x41\x89\x44\x5c\x08\x62\x53\xd1\x4d\xd5\xc9\x0c\x0b\x45\xc1\x5a\xeb\xa0\x48\x4a\x18\xf4\xc5\x16\x85\xc5\xa0\xe7\xb8\xc0\x7b\x9e\x10\x02\x0e\x9e\x8c\x26\xeb\x29\xbd\xa7\x25\xdf\x64\xe5\x04\xda\xc8\x53\x8b\x4e\x09\x06\x99\x95\x22\xd6\xf0\x89\x30\xb5\x13\xfd\x04\x9a\x68\x48\x8e\xef\xe6\x65\x30\xc5\x1f\xcf\xcf\x8a\xcb\xcd\x85\xf4\x86\x51\x4d\x4a\x60\xb8\xe7\x6d\x42\x92\x75\xa9\xb7\x39\xfa\x9f\x3a\xfb\x8e\xe1\xd5\xfa\xba\xac\x08\x8d\xb7\xab\x5d\x14\x81\x2e\xc2\x5a\x1d\x80\xfe\x86\x70\x39\x92\x18\x2b\x46\x00\xd3\x60\x95\xd3\xea\x9e\x9b\x3e\x35\x6d\x55\xba\x5c\xb9\xe5\x1b\x60\xc3\x94\x9a\xf9\x44\x20\x75\x72\x17\x81\xe8\xeb\xa4\xc8\xc3\x40\x1e\x44\x02\x21\xd4\x4b\xad\x58\xa6\x00\xb5\xe6\x7c\x5e\xb2\xc3\x1d\x64\x74\x33\x18\x2d\x34\x92\x4c\x90\x48\x5f\x65\x27\xe8\x26\x21\x5a\xf2\xca\xb5\xf4\x95\x27\x89\xc3\xd1\x5a\x2e\x1d\xae\x85\xfd\xf6\xe2\xf3\x0a\x74\x8f\x25\x13\x73\x38\x72\xcb\x67\x16\xac\xc1\xee\x81\x0d\x82\xf5\x05\x13\x32\x18\x12\xcb\x5a\x24\x70\xf8\x85\x89\x9b\x05\x53\x12\x2e\x5d\x64\xf4\x37\xcd\x7e\x05\x91\x73\xde\x9a\x4c\x18\xce\xf6\x65\xe6\xe0\x96\xf2\x05\x27\xe1\xee\xc3\xb6\xb8\xea\x0e\x72\x4d\xe5\x0e\x2c\x89\x38\xcb\xa6\xe8\x6b\x2c\xf8\xe8\x0f\x8b\x6a\x6a\xef\x56\x3b\x34\xb8\x25\x0b\x53\x5b\x88\x30\x56\xb8\x2e\x0a\x65\x66\x61\x7c\xaf\xfe\xf3\xc2\x80\x5c\xa4\x04\x50\x25\x8b\x7a\x64\x48\xdf\xb5\x6d\x5b\xac\xe7\x39\xce\xc5\x5a\xd0\x0f\x05\x36\xf8\x3a\x9c\xdb\x26\xa3\x14\xc3\xd2\x8b\xd0\xcc\x2e\x6d\xc9\x06\x10\xa3\x6d\xa8\x91\x2c\xe1\xad\x59\xb2\x31\xcb\xd8\xa8\xe2\xb5\x33\xe5\x6d\xdd\x6a\x20\x25\x17\xa2\xcc\x4b\x79\xd7\x4a\x14\x58\x9a\x40\x8f\xe0\xb5\x3e\x82\x97\xad\xdf\xe1\x69\x0f\xf0\xf6\x94\x80\x04\xfb\xc2\x81\x56\x15\x1c\xac\xd1\x7b\x55\xe6\x53\x69\x77\x3a\xa5\x39\x95\xbe\xd0\xbc\xe4\x6c\x4b\x0f\x9c\x9e\xcc\x62\x0c\x89\xa3\xdb\x44\xe1\x94\xe6\x6f\xbc\x07\xd0\x26\x89\x91\x41\x09\x30\xf8\xc2\x76\xed\xbc\xe7\x24\xc3\x82\x30\x35\x62\xb7\x7a\x14\xe6\x8b\x22\x12\xc3\xc5\xe1\x38\xcc\x77\xa8\x66\x3a\x45\xd8\x7e\x05\x8b\xde\x16\x08\x27\xc7\xe6\x25\x50\x4d\x5f\x30\x99\xfd\x7b\xf3\x8e\xc1\x16\xb0\xd8\x3a\x7a\xaa\x74\x5a\xa8\xf1\x5a\x80\x8c\xe6\x14\x52\xfb\x63\x22\xed\x85\x44\x95\xc5\x6e\xf0\xe2\x77\x4e\x1c\xca\x31\x7c\xe6\xf9\x57\x13\xc3\x76\x86\x02\xe6\x0c\x74\x72\xc4\x82\x3e\x96\x80\x62\x1a\x65\x7d\x43\x55\x02\xf6\x99\xc6\xde\xf1\x05\xff\x34\x3b\xc4\x05\x9d\x51\x16\x94\x26\xb2\xd3\x4b\x71\x06\xe6\x5d\x73\x06\xf9\xd4\xdf\x69\xf7\x36\xcb\xe0\x08\x46\xfc\xdf\xff\xf5\x3f\x47\xb4\xcd\xfb\x21\xc7\x76\x05\xf6\x61\x27\xd7\xdb\x96\x70\xe7\x03\xb4\x8e\x16\x14\x88\x40\xa7\x95\xa5\xcc\x89\xe2\x57\x7b\xb9\x69\xa2\xe1\x6a\x6e\xdc\xbd\x65\x72\x07\xdf\x88\xc8\x97\xa3\xf5\x07\x2c\xae\x08\x08\x28\xbc\xbe\x41\xd0\xad\xab\xc5\x60\x82\x25\x75\xfb\x95\x0b\xa5\xc2\xa0\x02\xd0\xbc\x6d\x82\x13\xe7\x58\xbe\x5c\x04\x4a\x63\x0d\x21\x63\x34\x0e\xef\xc8\x55\xb1\x28\x66\x90\x26\xa9\x51\xef\x4a\x2e\x89\x30\x07\xda\xa3\x2b\x59\xe2\x09\x21\x01\x21\x14\x71\x85\x4b\x8d\xa4\x98\xae\x15\x36\xaf\xdf\x6f\x06\x2c\x2c\xd9\xd4\xf1\x8c\x88\x71\x9c\x97\x62\xa4\x57\xb5\x7d\xa3\x3f\x3a\xcb\xd5\x62\x75\xfb\x32\xc1\xf5\x1a\x2a\xcb\x40\x22\xf5\xfb\x2d\xcd\xae\x16\x0c\x83\x48\x96\xb2\x70\xd8\x02\xc1\x48\x2a\x10\x8c\x36\xb4\xb2\x64\x09\x80\x8b\x86\x41\x9d\xf8\x40\x61\xb0\x37\x91\x01\x8a\x86\x91\xa3\x49\x5e\x58\x4e\x3c\xf4\x7e\x7c\x34\x62\x1f\x4d\xed\x0a\x50\x66\xcc\x00\x22\xc8\x6b\x21\x9f\x33\x2e\x49\x29\xd1\xaa\x01\x4e\xdf\x26\x4a\xda\x61\x34\xcb\xa4\x95\x3a\xfd\x5b\x89\xa4\x6f\x0e\xa6\x59\xdf\xf0\xfa\x94\x9b\x29\x70\x2b\xa9\x27\xa2\x19\xd5\xb4\x33\x6e\x3c\x69\xeb\x4f\xbd\x6b\x35\x96\x22\x74\x09\x60\x95\x54\xb2\x38\x40\x7e\x7a\x15\x82\x48\xc8\x13\x01\xab\x31\x8c\x31\x2c\x9a\x50\x36\x5f\xb5\xb0\x93\x55\x07\xa8\xc8\x72\x04\xb6\x80\xe2\xea\x08\xca\xb9\x60\x4d\xb4\x58\xce\x72\xd9\x3a\x21\xab\x29\xfe\x62\x0d\x29\x74\x10\x16\x8f\x58\x10\x85\xc8\x67\x45\x6c\x79\xc9\x7b\x97\x32\x57\x8f\xb2\x47\xcd\x59\x3f\xed\x22\xd2\xee\xa9\xa2\x36\x11\x9b\x28\xed\x72\x02\x63\x77\xef\xdb\x1c\xb9\x39\x66\xb1\x4d\xfc\xb4\xb2\xb4\x96\x29\x60\x76\xc6\xb6\xe4\x43\xe2\x6d\xfa\x62\x80\xba\x6d\xda\x34\xf0\xe0\x70\x91\x39\xbd\x48\x4b\xe6\x10\x45\xc0\x85\x16\x50\x73\xa6\x68\xa2\x89\xc3\x8e\x41\x6b\xcd\x39\xf3\xb8\x77\x10\xc0\xdd\x06\xad\x46\xa5\xa4\x6c\x36\xb6\x2b\xe9\x72\x18\xbb\x5d\x0c\x65\x9a\xba\x34\x4d\x99\x1f\xbf\x77\x0d\x2d\xb7\x1d\x1b\xb2\x06\xd8\x2b\x97\x3d\x09\x82\x35\xe3\x6e\x32\x16\xaf\xcc\x25\x5d\x8e\x69\x6c\x96\x82\x9a\x2a\xc6\x30\xd1\x75\xcc\xcb\x20\xd6\xd5\xe1\x0a\x8a\x2b\x44\xda\x8c\x48\x93\xe7\x04\x01\xe9\xaa\x25\xe5\x53\xb6\xa6\x7a\x9e\x33\x2f\xa2\xd9\x1a\x4a\x3e\xa1\xbd\x92\x35\x8a\x5d\x77\x36\xea\x1e\x27\xc9\x04\x47\x8f\x5e\xd9\xf0\x2a\x37\x17\x0e\x83\x5e\x0b\xa8\x50\x64\xcb\x10\x97\x1e\x68\x04\xd2\x4d\xe8\x14\x33\x80\x35\x76\xd8\x45\xe7\x66\xd5\x2c\xe2\x96\x41\x28\x32\xa3\x37\x21\xfc\x31\xc9\x12\xbe\x48\x5b\xee\xb3\x6a\xa6\xdc\x36\x01\x29\x6d\x89\x7a\x3b\xbd\xca\x2a\x4c\x6f\xed\xcb\xac\x96\x76\xb3\x03\xf8\xa4\x35\xb8\xe4\xa7\x84\x4f\xc0\x72\x68\xb5\x6c\x97\x4a\x12\x64\x34\x54\xcf\xf3\xba\x09\x2e\xd5\x13\x49\x65\x96\xe0\xc5\xb2\x1e\x4c\x6a\xc5\xcb\xee\x9b\x49\xc5\x5f\x6d\x04\xeb\x1e\x94\xdc\xf8\xf9\x4b\x00\xe2\x5e\x38\x49\xc0\xbc\x6b\xf8\x57\xc5\x98\x64\x72\xda\x8e\x8c\x2f\x56\xf1\x11\x53\x78\xe6\x36\xd7\x0a\x97\xfc\x99\x11\x21\xe7\x34\x2b\x15\xdf\xdb\x3a\x0a\xda\x52\xb4\xfd\x8f\x89\xf9\x5d\x83\x77\xf2\xec\xd0\x00\x71\x68\xfa\x90\x19\x8e\x0a\xe3\x5f\x94\x60\x29\xe9\x74\x11\xe0\x67\xf8\x80\x52\xc8\x52\x2a\x6b\xcb\x41\xbd\xab\x26\x46\x63\xc6\xb7\x9b\x04\xf2\xed\x93\xe7\x1e\xca\xc7\x8f\xc6\x21\x50\x99\xbe\x4f\xea\x60\x29\xee\xa6\xb6\xa0\x29\xad\xc0\xa6\x26\x53\x7e\xb3\x84\xef\xa5\x18\x37\xed\x66\x84\x42\x98\xb4\xc3\xb6\x8a\x8c\xc7\xb5\x08\x31\x5f\x54\x29\x63\x10\x36\x5f\x2b\x4e\xce\xfc\xa9\x89\xd3\x63\x62\x00\x74\x40\xf1\xf1\x01\x92\x5b\x61\x49\x75\xa1\x8b\x33\x92\x90\x9d\x04\x16\x6f\x40\x24\x55\xaf\x7d\x40\x1e\x4b\x49\xa3\xc0\xac\x5f\x6d\x5c\xd8\x20\xde\xb9\x05\x91\xa6\x79\xe8\x3f\x9b\x81\xda\x90\xe7\xa6\x5d\x04\xfb\x17\xac\x72\x57\xdd\xa5\x09\xda\xce\xb4\x60\x49\xae\xe8\xa6\x44\x57\x45\xa7\x5e\x5e\xd9\x47\x52\x7b\xe3\xc8\xe0\xda\xb8\x3e\x91\x2e\x51\x0c\x2b\x0f\xc0\x46\x1c\xa8\xce\xa7\xbb\xd1\x85\xf5\x13\x2a\x8e\x66\x44\x99\x52\xf2\xbe\x5e\xfe\x7b\xa2\x89\x9d\xe5\x35\xec\x68\xf5\x9b\x0f\xf9\x7a\xa7\xf6\x8e\x28\xe9\xae\x84\x1a\x5a\xa0\xdd\x9c\x3d\xdc\x82\xfd\x38\x96\x46\x70\xfd\xe2\xe5\x96\xad\xb1\x00\xec\xc8\x6c\x46\xfc\xef\x48\xa0\x32\x73\x8c\xed\x17\x3e\xfb\xbd\x84\xfb\x84\x4b\x58\x79\x66\x8d\xde\x9e\xeb\x55\x49\xfb\x4b\x17\xbd\xd6\xa7\xf1\xea\xa8\x0a\xea\xee\xe5\xc1\xf5\xe4\x41\x87\x25\xb9\x87\x97\x7f\xdb\x31\xd8\xcf\xfb\x67\x0f\x84\xc3\xda\x95\xb8\x3b\x11\xf1\x1d\x91\xc9\x5e\x48\x8a\xb5\xad\x78\x2d\x79\xf1\xd0\x81\xf9\x14\xd0\x38\xfb\xbb\x45\xfb\x71\x92\x6f\xad\x1b\xe8\xe5\x2e\xd8\xd5\xf4\xb2\x13\xfa\x00\x5c\x4b\x0c\xe9\xbf\xb9\x2d\x94\x01\x87\x37\x08\x19\xab\xf9\x1e\x56\x04\xe3\xd9\xe1\x75\x0a\xc3\xab\x2d\xe7\x4b\x6c\xaf\xcd\xf5\xea\xbc\xb9\x2f\x49\x6a\xeb\x8e\x65\x17\x3a\xca\x0b\x7b\x71\x2c\x35\x06\x1f\xf4\x31\xb1\xdd\x6e\xd1\x06\x04\x19\xb7\x65\xbb\x3c\x64\x4d\x55\xc4\xb6\xcf\x56\x77\xa9\x6c\xe3\x4c\x90\x29\xfd\xbc\x91\x28\x7e\x03\x9f\x5a\xf5\x52\x2f\x73\xa5\x2e\x19\xb8\x67\xa0\x8e\x59\x10\xb7\x67\x57\xda\xd6\x2e\x1a\xb1\x22\x01\xd0\x66\xff\x3d\x92\x05\xe2\xa2\xf4\xd3\xa6\x58\x87\xbb\xaf\xa1\x66\xf6\x75\xae\x54\x26\x4f\x8e\x8f\x67\x54\xcd\xf3\xc9\x51\xc4\x53\x13\x6e\xce\xc5\xcc\xfc\x71\x4c\xa5\xcc\x89\x3c\xfe\xee\x8f\x7f\x2c\xb6\x78\x82\xa3\xc7\x99\x41\x8f\xa9\xfb\x9d\xca\x5b\x4e\xb0\xdc\x2e\xb2\xc7\x65\x6a\xbd\x70\xc6\x6e\xd0\x8d\xcb\x91\x2c\x4a\xf3\x07\xd1\xa3\xa6\x0a\x99\x54\xb8\xa8\xc9\x00\xe9\x77\x7a\x9a\x68\x8e\xb3\x8c\xb0\x76\xb3\x83\xc9\xa7\xdc\x82\xf5\xb8\x8c\x4c\x3b\x42\xf2\x39\x4b\x30\x2b\xa3\x0c\x40\x81\x21\x41\x22\xc2\x94\xcd\x80\x2f\xea\x12\x03\x35\x1a\xa4\x1b\xc3\xff\xd7\xcb\xb8\x83\x39\x52\x59\x54\xe8\x72\xc3\xb1\xd5\x32\x5d\x0d\x45\x1c\x2c\x5d\xb5\x42\x69\xb1\x76\xc4\xad\xda\xb2\x5c\xbc\xbb\x7a\x9d\xea\xf5\x2b\xb7\x08\xce\xc6\xe4\xb3\x66\x72\x72\x53\x5c\xaa\x07\x49\x24\x1a\xfc\x7c\x87\xe4\x82\x29\xfc\xf9\x04\x5d\x52\x06\x02\xec\x0f\x3c\x17\x12\x9d\xe1\xc5\x21\x9f\x1e\xa6\x9c\xa9\x39\xba\x84\xff\xb5\x3f\x3d\x13\xf2\x88\x7e\x21\x58\x58\xfe\x60\x2b\x9c\xf9\x62\xd9\x9a\x84\x44\xce\x24\x22\x4f\xfa\x84\xfe\xf1\x3f\x50\x6a\x5a\x3e\x41\xdf\x1e\xff\xf1\x3f\xd0\x1f\xe0\xff\xff\xff\xe8\x0f\x2d\x9a\xfe\x7a\xc8\x56\x50\x07\xf7\xb6\xec\xce\x3d\xa8\xac\xd4\x06\xa5\xc1\x4f\x05\x2f\x76\xaa\xb1\xe5\x47\x1a\x3d\xf2\xe9\x74\xac\x09\xc3\xe4\xab\x8d\xb1\xa8\xa1\x22\x6f\x08\x13\x4a\x6d\x21\x63\x41\x0d\x7a\xbe\x2b\x95\x62\x3b\x35\xc0\x06\x8e\x5d\xcb\xbc\x28\xe4\x0a\x41\x44\xa5\xe2\xb8\x54\xc2\x57\x24\xd6\x5c\x75\x9d\xd3\xe1\xac\x7b\x2e\xc7\xd9\x59\x70\x42\x20\x90\xb0\x38\xb7\x0f\xfc\x0b\xa3\x58\x4d\xa0\x8f\x5d\xc8\xc6\xe3\x50\x0b\xaf\xfd\x62\x62\x26\x61\x6a\x6f\x15\x2f\x29\x6b\x9d\xaf\x0e\x95\xbc\xe3\x62\x2b\x7d\xeb\x91\xd4\x62\xb6\x3b\x96\x05\x72\x25\x61\xc3\x32\xf1\x90\x08\xcd\x85\x87\xeb\x35\x76\x11\x5b\x3c\x70\xb5\x15\x93\x0a\x13\x5c\xd6\xed\xd0\xeb\xa9\x9f\xf9\x4f\x56\x0d\x13\x22\xcd\xdc\xdb\x45\x59\x34\x18\xad\x16\x91\x34\x4b\x6c\x18\x71\x03\xa6\xdf\xaa\x0d\xbd\xf3\x30\x0e\xd0\x38\x84\x3d\x42\xca\x07\x73\x92\xad\xcd\x93\x6f\xde\xcf\x5c\x44\xe4\x94\x6f\x17\xf6\x9a\x50\x56\x8b\x97\xef\x5e\x71\xc7\xaf\xde\x85\xad\xad\xe4\x60\x6f\x79\x5c\x28\x0b\xc6\x2d\x60\x8b\x2d\x04\x78\x9b\xe5\xd9\x00\x6e\xdb\x2e\x20\x1d\x6b\x25\x00\xb6\xe0\xda\xc6\x70\x5c\x30\x3c\x57\x41\xa2\x52\x38\x42\x60\xcd\x0b\x37\x44\xc1\x34\xa5\x80\x0e\x90\xc0\x10\x07\xa9\xe6\x98\x19\x93\xc2\x14\x47\x94\xcd\x0e\x02\x00\x44\x00\x23\x08\x39\x70\x13\x5d\xdc\x63\xf9\xb8\xdb\xd8\xbe\xad\x4b\x23\xd2\xb8\x28\xcf\x65\x21\x4b\x8c\x2f\x81\xd6\xd0\xdf\x14\x96\x8f\x6d\x98\x3d\x35\xc0\xb0\x25\xa3\xf3\x4b\xe1\x60\xc6\x96\x8d\xcf\x25\x37\x93\x50\x85\x81\x6a\x00\xae\x28\xae\x85\x0f\x74\xb9\x64\xd8\xe3\x7b\x54\x71\x33\x97\x8c\x5f\xce\xb9\x50\xe3\x0d\x11\x47\xab\x09\xda\x8c\x1c\x26\x00\x15\xc2\x9f\x88\x78\xa2\xe4\xb9\x0c\xdc\xb9\x0e\x2d\x1a\x3b\x55\x10\xc8\x06\xc8\x8e\x69\xc6\x21\x6b\x65\x8a\x52\xcc\x16\x86\x37\xe9\xf3\x8c\xe5\xa3\xf4\x25\x42\x91\x4c\x71\x92\x1c\x20\x41\x72\x69\x4a\xd4\x4a\x92\x4c\x0f\x5d\x91\x85\x18\x25\x7c\x46\x23\x9c\xa0\x49\xc2\xa3\x47\x39\x62\xfa\x6e\x66\x33\xc3\x17\x32\xc1\x23\x22\x65\x20\xcc\x14\x79\xd2\x36\x7b\x0d\xea\x83\x2a\x22\x52\xca\xa8\x54\x34\x72\x52\x4a\x01\x77\x60\xaa\x41\x47\x18\xac\xb0\x90\x0b\x08\xc3\xd5\xc2\x15\x31\xb0\x8f\x39\xb3\xe5\x78\xe0\x86\xb4\x68\x6e\x2e\x2e\xbb\xed\x00\xed\x00\x9c\xce\x51\xc8\x58\x95\x0f\xe4\x8a\x23\x75\x6a\x3f\x83\x63\xbc\x8c\x04\x6e\xcb\x27\xca\x13\xa4\x3f\x69\x25\xc0\x1c\x08\xe3\xf6\x51\xe7\x25\x61\xc1\x07\x63\xef\x19\x56\x16\x0c\xb9\x05\x21\x6b\x15\x4d\xeb\x55\x04\x29\x03\x2a\x40\x55\x1d\xd5\x94\x45\x49\x1e\xfb\x1a\x80\xfa\xd6\x7d\xd2\x44\xe2\x96\x47\xaf\xbd\xbe\x9b\x0f\x10\x96\xe8\x99\x24\x89\xfe\xaf\x09\x3a\x3f\xf4\x90\xfc\x9a\x25\x9b\xb2\x09\xd0\x89\xe3\xd2\x6d\x14\xb5\x77\xb8\x87\x37\x58\xcd\x4d\x36\x79\xca\x95\x29\xbf\x68\x70\x0f\x9d\x49\xc9\x00\xe5\x4d\x12\x3e\x81\x93\x0e\x90\x88\x2e\x1b\x35\xc8\x64\xcb\xa3\x88\x90\x98\xc4\xe8\xeb\xe0\xe0\x7a\xa4\x83\x6f\x9a\x01\xfa\x4a\x2b\xb2\x07\x70\x88\x55\x5b\x56\x2b\x28\x62\xb9\x82\xd8\x11\xba\xa9\x40\x7e\x84\x15\xb8\x71\x15\x00\xea\xa0\xb6\x85\x6f\x03\xa1\x58\x99\xc4\xcb\xed\xd0\x9a\x10\x8a\xa5\x3e\x77\x00\xa1\x58\x99\x67\x4b\xb8\x3c\x9f\xbd\x68\x9a\xaf\x9e\xd4\x05\xef\x9e\x7b\x65\xa0\xa7\xcc\xdd\x59\x22\x41\x77\x20\x17\x4d\x84\xb8\x5f\xf0\x90\x95\x3a\x7b\x6f\x0b\x0f\x59\x19\xcc\x3e\xc3\x43\x56\x86\xba\xbf\xf0\x90\x0d\x03\xed\x00\x0f\x69\xfc\xe9\x63\x4d\xd4\xdd\x98\x02\xe4\x92\x4c\xf2\xe9\x1d\x64\x57\x2f\x1d\xe3\xa9\xf1\xd5\x9b\x6b\xcc\xdd\xd1\x16\x2d\x19\x46\x6b\xd3\x0e\xdb\x22\x90\x2a\x76\xff\x75\x69\xcf\x3b\xbc\xa8\x34\x1a\xda\x7a\x96\xee\x83\xd0\xc0\x0c\xa6\xbf\x08\x67\x36\x8d\xbb\xad\x88\xc9\xfe\x24\xac\xae\x87\xbc\x09\xa8\x76\x25\x56\xdf\x09\x93\xea\xb2\x52\x07\x60\xce\x9f\x6d\x2d\x1e\x20\x3f\x43\x8c\xad\xa4\x07\x9d\x8e\xad\xb2\xd6\xb6\x62\x94\x29\x32\xab\xea\xb2\xc5\x61\xa1\x4c\xfd\xe9\xbb\x95\x1c\xc8\x80\xf6\x39\xb5\x30\x40\xe3\xf7\x7e\x05\xfb\x8c\xc4\x28\x9a\x6b\x6d\x48\x6a\xb5\x45\x4f\xc7\xdc\xa8\x12\xa5\x98\x3a\x05\x2a\x97\xc6\x8b\x43\xe5\x88\x95\x50\x2e\x8f\xd0\x47\x28\x31\x8a\xd3\x4c\xeb\x5d\x7e\x7e\x54\x53\xd0\x28\xff\xf6\xdb\x3f\x11\xf4\x2d\x4a\x09\x66\x25\xdd\x15\xd4\x25\x7d\xe5\x01\x2a\x9c\x9a\x93\x11\x6b\xdc\x0a\x34\xfc\x6c\xaa\x16\xb9\xd0\xba\x73\x36\xe5\x4e\x17\x86\xd2\x79\x38\x9a\x23\x99\x4f\x4c\xed\xd7\xc0\x76\xe1\x04\xe8\x0b\x3e\x03\x9f\x30\xdc\xc4\x6e\xd0\xcb\x4e\xdf\xcb\xba\xdb\xad\x67\xaf\xeb\x2d\x3c\x80\xfb\xe3\x50\x92\x12\x5a\x50\x83\x7f\xca\x70\xbc\xf0\xc0\x4b\x03\x35\x7a\x60\xcc\xf5\x5a\x2f\xc3\xd6\x88\xae\x65\x68\x88\x9c\x05\x87\x54\x9e\x60\x61\x8f\xfc\x88\x69\x05\x43\x90\x27\xca\x73\x99\x2c\x50\xcc\x19\x39\x00\x4a\xc8\xa3\xb9\xf1\x61\x6a\x5d\x05\xdb\x12\x08\x4f\x54\xe6\x5a\x91\x85\xb6\x5c\xc5\x05\xa9\xb0\x41\x39\x9a\x53\xe8\x47\xab\xdd\x04\xbe\x0a\x13\xd2\x50\x37\xed\x29\x04\x22\xad\xf0\xfa\x8e\x40\xa4\x25\xaa\xea\x81\x48\x9b\x19\xdf\xde\x02\x91\x56\xf6\xbc\x1b\x10\x69\xd3\x96\x6f\x00\x44\x5a\x6a\xe6\x8b\x01\x22\xad\xac\xe8\x17\x03\x44\x5a\x99\x57\x0f\x44\xfa\xe5\x01\x91\x6e\x09\xb5\xd9\xcc\x8b\x0d\x94\x91\xa2\x6c\xb1\x36\x91\x7d\x25\xd1\xf9\xb5\x26\xb0\xe8\xb1\x1c\x3f\xe6\xaf\xab\xed\xe1\x3d\x9b\x99\xd0\x7a\xf0\x9e\x8d\x2a\x7a\x3b\xab\xdb\x16\x4b\x09\x14\x82\x57\x86\xf7\x2c\x4d\xa0\x0f\x65\x5c\x3f\x94\xb1\x91\xf8\x6c\xdf\x7a\x78\x2e\xbe\xb1\x7a\x21\x77\x04\xf8\x2c\xed\x4f\xa7\xa0\x47\x10\xdd\x77\x40\x89\x2f\x2b\xcd\xdf\x97\x0e\xf9\x4a\x59\x3e\x5c\x45\x69\xa1\x86\xb5\x84\xe7\x80\xd9\x8c\xf2\x1d\xba\xda\x7b\xca\xdd\x20\x08\xb7\xb2\xbc\xde\x9f\x62\x68\xb1\x03\xa9\x76\xa6\x50\xa7\x95\xee\x26\x27\xd5\xe5\x29\xae\xe9\x5a\x76\x83\xb8\xcb\x48\xd4\x62\x5b\xa6\x29\xdd\x55\xb3\xab\x2e\x32\x0f\x3b\x05\x0a\x79\x2d\x05\x53\x5f\x4f\x66\x38\x46\xc6\xaf\x64\x9e\x02\x26\x86\xf9\x72\x46\xa5\x12\xad\x61\x44\xb5\x11\x6e\xe3\x22\xcd\xf2\xce\xb1\x27\xc1\xaa\xce\x36\xfb\x2c\x25\x29\x17\xab\x62\x98\x1a\xbf\xb4\xc5\x53\x36\xf9\x94\x64\x73\x92\x6a\x49\x66\xbc\x6e\x23\x5d\xf7\xdb\xe7\xe7\xda\x34\x31\x13\x53\x58\x22\x82\xc0\x01\xaa\xdf\x8d\x0d\xf8\x63\xe7\xed\xde\x76\x9b\x2d\x3c\xe5\x9a\x8e\x20\x07\xcf\xbb\xdc\xe0\x66\x5f\x2a\xb9\xb9\x81\xbe\x1b\x63\x39\x7c\x28\xcd\xea\x68\x8d\x25\x71\x1a\xcb\x20\x9e\x8a\xaf\x6c\x69\xe1\x35\x5c\xf8\x65\xaf\xbc\xe6\x84\x61\x5d\xd9\xf5\x03\x3b\x5a\x00\x4a\xeb\xcb\x03\x11\x39\x92\x88\xc3\x50\x33\x28\x0d\xa6\xbe\x5e\x25\x2a\x71\x1a\xe5\x16\x44\x92\x8b\xd6\x80\xce\x2e\x86\xec\x48\xe5\x38\x01\x4d\x22\xac\x87\x58\xdd\xd4\xc9\xa2\x21\xc3\xb0\x9b\xa7\x84\x32\xf5\xe7\x7f\x5f\x6b\x37\xb5\x6a\x65\xd7\x0d\x6a\x38\xe1\x28\x22\xd2\xd8\xd6\x6d\xc0\x2f\x9e\xf0\x27\x28\xdf\xb4\xcd\xae\xea\xa3\xac\xe7\xad\x19\xbc\x47\xfd\x8d\x0b\x52\x37\xe2\xc2\x5c\xf0\x7c\x36\x77\x36\x24\x7d\x66\xf4\xd4\x9a\xf6\xf2\xa7\x9a\x8d\x7c\xed\xbd\xfc\x3e\xa7\xc9\x66\x16\xba\xbb\x52\x61\xab\x4f\xe7\xf7\x48\xce\xfd\x69\x9d\x40\xb3\x8d\x1b\x5b\x1f\x74\xf7\x3e\xed\xb7\xde\x4f\x03\xdd\x1c\x38\xa4\xcb\x29\x4f\x12\xf0\x34\x48\x92\x3e\x85\xf5\xe8\xc3\xee\x61\xc2\xf7\x74\x3d\x90\x3a\x3f\x00\xf8\xba\xc8\x41\xe8\x24\x7f\xdd\x18\xd1\x50\x22\x37\xfa\x6a\xb0\x82\x09\x51\xe3\x8c\xb0\x26\x1b\xdb\xcf\xf5\x9a\x22\xef\x2c\x50\xd0\x45\x8d\xed\x2c\x58\xd0\x2d\xc9\x2b\x07\x0c\xae\x98\xc7\xbe\x06\x0d\x56\x98\x9d\x8f\xe1\x2b\xae\x19\x17\x30\x64\x14\x9f\x81\x5e\xe2\x11\x1b\x94\x52\x17\x5c\xed\xe5\xc9\xa2\x88\x7d\x36\x3a\x44\xc8\xcc\xa0\x72\x83\x35\xac\x80\x1b\x4d\xff\x05\x9a\x8e\xc1\x89\x35\xa1\x84\x2e\x5c\x10\x02\xb7\x49\x7c\x88\xa3\x45\x94\xd0\x28\xd0\x99\x67\x02\x67\xf3\x26\x8e\xe7\x76\xbe\x07\xb8\x79\x2b\x80\x9b\xb6\x12\x47\xeb\x84\x6a\x3b\xba\x62\x38\x25\x3d\xf0\x4e\x13\xf0\xce\x81\x87\x96\x60\x45\xb1\xa6\x37\x44\x2c\xa8\x9f\xbb\x1e\x7d\xe7\x0d\xd0\x77\x36\x39\x7c\x05\xb4\x4e\xe9\xd8\xf5\x88\x40\x1f\x3a\x21\x02\xf9\x4b\x70\xaf\x40\x5e\xda\xcf\xe3\x1b\x83\x87\xd4\x07\xf6\x96\x08\x40\x0d\xe2\xc2\x3a\x72\xd3\x32\x08\xa0\x65\x74\xd1\x69\x5d\xde\x16\x90\x67\xbd\x95\x59\x0b\x6b\xa7\xf1\xee\xda\x13\xe4\x9d\xf6\x6d\xd8\x93\x73\xb3\xcb\x6c\x96\xf5\xaa\x51\x86\x19\x2d\xeb\x28\x58\xeb\x25\xb7\x78\x7a\x78\x5f\x09\x2e\x45\xd9\xae\xcd\x92\x5c\x06\xce\x07\x4d\x04\x9a\xf3\x24\x76\x78\x0f\x7e\xb5\x7c\x07\x3e\x03\xc0\x2f\x90\xdb\x0c\x28\x9f\x0d\xda\x56\x51\x7b\x6b\x59\x2a\x8b\xdf\x44\x18\xee\x0e\x18\xcd\x2e\xac\x08\x9e\x93\x6c\x62\x3f\x58\x29\x8b\xc8\xb2\xf9\x7b\xc9\x18\x4b\x2b\x04\x56\xf3\xe6\x61\xae\xb4\xfb\xae\x18\xdc\x32\xd1\x23\x30\x0e\x8a\xa6\xe2\x91\x86\xce\xe0\xe9\x13\x75\x86\x08\x1c\xf6\xb8\xd4\x4b\xe7\x66\xd7\xc9\x53\x57\x25\x96\x0d\x82\xc1\x6a\x45\xd2\xb6\xc7\xe1\x49\xf1\xe7\x71\x86\x05\x4e\x12\x92\x50\x99\xbe\x58\x30\xf0\x69\xd9\x5d\xab\xcf\xaa\xe0\xc6\x44\xc4\xf2\x74\x62\x48\xd1\x0d\xc4\x96\x66\x54\x1c\x89\x9c\x85\x28\x62\xcf\xb5\xfa\xf5\x39\xdc\x0b\x60\x55\x8a\xe6\x50\x07\x74\x8a\xa9\x60\x44\xb6\x56\x5d\x24\x51\x2e\xa8\x5a\x8c\x6d\x11\xcb\xee\x07\xee\xce\x7e\x79\x6a\x3f\x5c\xee\xe1\x76\x09\xf4\xae\x3f\x5f\x34\x33\x23\x02\x2a\xf2\xb8\xda\x32\x41\xa1\x4e\x0b\x90\x40\x7c\x59\x1f\x08\x7f\xae\x5d\xdb\x6d\x81\xc3\xf8\x79\x1c\x64\x52\x8d\xa3\x2a\x71\xac\x3a\xac\x4d\x10\x4f\xcb\x26\xf9\xc2\x20\x47\x2d\x5e\xe4\x17\x28\xe8\x61\xd3\x25\x4c\xd3\x7a\xc0\x81\x2b\x18\xec\x95\xc5\xc6\x04\x79\xee\x56\xa9\x6a\x19\xa7\x85\xd5\x69\x0a\x3e\x5a\x32\xd8\x41\xf0\x55\x87\x11\x07\x9d\xec\x68\xd8\xfa\xa0\x0b\x91\x67\x8a\x4e\xea\x28\x32\x6a\x77\x05\x3e\x07\x09\xa4\x57\x3b\x37\x43\xa9\x5b\x53\xf5\xb3\xc4\x89\xed\xec\xb4\xfc\x6f\x21\xbb\x1c\x18\x8f\x01\x33\x0a\xf3\xf7\xae\x53\xaa\x94\x4b\x14\x30\x06\x68\x4d\x9d\x65\xdb\xec\x57\x2e\xdc\x03\x43\xed\x50\x63\x22\x3a\x1a\xb1\x81\x44\xcf\x04\x31\x62\xd1\x1a\x1a\xaa\x82\x7a\xab\x36\x94\x59\x9a\x10\xdd\x93\x8f\x4d\xd1\xc2\x03\x55\xd2\x57\xfa\x32\x7d\x4c\x71\x22\xc9\x81\x6e\x18\x0a\x84\x2a\x0e\xc1\x9f\x18\x3d\x0b\x9c\x65\x44\x8c\x98\xcd\xe2\x00\x87\x0b\xe7\x89\x69\xbf\x2d\xc4\xd5\xae\x01\x19\x47\x38\x9a\xbf\xd2\x1e\x61\x48\xc2\x89\xe6\x24\x76\x79\xc2\xe5\xed\x71\xf3\x36\x06\xeb\x35\x36\xeb\x7c\xea\x2a\x55\x1d\xd8\x4e\x92\x48\x73\x14\x5f\xb8\x38\x23\x42\x8f\x5a\xd3\xf0\x13\x61\x88\x4e\xdd\x38\x6c\xec\x0e\x7a\x06\xcf\x94\x26\xfd\x27\x4c\x13\x93\x78\xef\xba\x76\x42\xa0\x31\xbf\x8f\x98\x71\x77\xb3\xa8\x94\x99\x4a\x19\x95\x73\xcd\xa9\x73\xf0\x49\x82\x9a\xb1\x96\xe4\x19\xc7\xb2\x6c\x64\x34\xea\x1b\xfd\xad\x64\xde\x38\x2c\x65\xdd\x45\x01\x52\x0e\x04\x4b\xba\x62\x59\xcb\xe4\xcc\x3e\x85\xa0\x9e\x42\xd0\xbc\x36\xfb\x98\x46\xe0\x0f\xcb\xba\xa9\x04\x6d\xdb\xbf\x0b\x09\x72\x87\x29\x05\x6f\x1c\x7b\xff\x32\x61\xf7\x6f\x9b\x27\xf1\x12\x29\x12\x7d\x22\xc1\x1b\x26\x12\x74\xb6\x88\x96\x63\xa0\xdb\x8f\xed\x5a\x41\xf8\x2b\xc0\x92\x9a\x7a\xb9\x24\x4a\xd0\x48\xee\x82\x3f\xc8\x0c\x77\x8c\x1e\x03\x6d\x2b\x5b\x21\x9d\xe8\x17\xbc\xb3\x0f\xe2\xb1\x7c\xe9\xba\x89\x20\xf8\x31\xe6\xcf\x35\x9b\x98\x0c\xd1\x2a\x2e\xb5\xbe\xae\x0f\x13\x95\xa4\x14\x31\x42\x25\x62\x44\x5a\xa3\x22\x1e\xb1\x39\x25\x02\x8b\x68\x0e\x59\x84\xc5\xc6\x98\x6c\x54\x03\x18\x64\x62\x06\x42\xaf\xce\x1a\x9b\xde\x61\xdd\xab\x96\x1c\x0f\xb9\x66\xf7\x5c\x8f\x24\x35\x9f\x78\x99\xda\x4a\x19\xa1\xe9\xab\xd3\xf6\x6f\x1b\xf0\xee\x17\xfb\x45\x83\xde\x7d\xd0\x4e\xf0\x45\xc7\xc0\xf7\x82\x1a\xfa\xe0\xf7\x17\x0a\x7e\x6f\x58\xe2\xf5\x02\xe0\x37\x32\xad\xbd\x7e\x6c\xae\xeb\xf9\x35\xe2\x73\x57\x05\x47\xe5\x93\xf1\x8b\x1f\xbd\xc6\x39\x77\x3d\x81\x3f\x7b\xa2\x30\x12\xb1\xd0\x74\x36\x21\x71\x0c\x9c\x56\x71\x5b\xfc\xb8\xa0\x1d\xa7\x86\xeb\xbb\x17\x4b\x4d\xec\x38\xe1\x6c\x26\x69\x6c\xc0\x4c\x32\x0c\x45\x48\x43\x23\x01\x24\xf1\xc3\xfe\x26\x09\x11\xce\xfa\x2f\xd0\xd7\x92\x6a\xb5\x2f\xf0\x08\x08\x14\x73\x22\xd9\x57\xca\x28\xe5\x98\x2d\xd0\x23\xe3\xcf\x09\x89\x67\xb0\x43\xd5\xc1\x1c\x22\x4a\x0e\x10\x55\xfe\x33\x01\x59\xff\x3c\x57\x23\x3d\x76\x88\xe9\x32\x1a\x00\xb1\xdf\x06\x65\xbe\x7d\x33\xdf\x1c\x21\x74\xce\xd0\x14\x47\xea\x00\xc9\x7c\x52\xb4\x1f\x73\x53\xb7\x59\x6b\xb9\xc1\xc4\x8b\x46\xfa\xd8\xec\x86\xce\x9b\xcf\x86\xe3\x0e\x9a\x5c\x07\x09\xc5\x5b\xc5\xb0\x3d\xe1\x6d\x50\x33\x2f\x73\x69\x83\x1d\x10\x67\xfe\xe8\x5b\xf8\x22\x0f\x7b\x0c\xc5\x76\x0d\x84\x30\xe3\x71\xab\x4d\xb1\x32\x95\x75\xc7\x52\x04\x1c\x5a\x41\xc9\x3a\x84\xa0\x5d\xb3\xdc\x5a\x6a\x92\x4a\x10\x9c\x5a\x23\xbc\xbe\x6a\x40\xac\x31\xe1\x86\x7a\xf4\x54\x18\x09\x73\x9d\x2d\xbe\xa0\xec\x51\xef\x6e\x01\xf4\x0c\x25\xd3\xa1\xe7\xa6\x4d\xcb\xf4\x8d\x47\x4e\x39\x33\x8e\xb8\xad\xe4\x4e\x3a\x63\x38\x59\xd3\xc6\x51\x5b\xb9\xba\xef\xcc\xc9\x59\x56\x5c\xd0\x52\x84\x31\xaa\x21\xd3\xe3\x5a\x36\xa4\xca\x7c\x43\x79\x0f\xa3\x98\x64\x84\xc5\x84\x45\x0b\x20\x11\x06\xc8\x34\x82\xe1\x04\x61\xf8\x0e\x27\x47\xe8\xcc\xe4\xb1\x78\x09\xcf\x5e\xeb\x70\xa1\xa7\x98\xd1\xa9\xd6\x13\xc0\xd8\x69\x47\x39\x62\x66\x98\xce\xd7\x10\xd4\xa1\xf7\x2b\xd6\xb0\x33\xdf\x53\x86\x4b\x89\x43\x1b\x9c\xa7\x24\x5f\x2b\x36\x3c\xb0\x5a\x2e\xda\xd0\xcf\x15\x5e\x05\x48\xbe\xc6\x66\x20\x09\x15\xfc\x91\xee\x0e\xc1\x95\xe9\xb1\xf1\x31\x38\x34\xe6\x24\xc9\x82\x2a\xd8\x19\x16\xca\xe3\xa2\x18\x08\x5b\x7d\xcb\xa4\x39\x33\x18\x37\xc6\xd0\xf4\x6c\x61\x42\xad\x2f\xab\x68\xfc\x68\xc4\xce\xd5\x57\x52\x73\x3e\xce\x66\xc9\x02\xe1\xf8\x89\xca\x02\x0e\x3d\xe2\x4c\xe6\x29\x11\xb6\x0b\x2a\x4d\xac\x96\x85\x12\xc6\x8e\x34\xf5\xd8\xb4\xca\xf7\x84\x13\x1a\x3b\xc8\x7e\xfd\xe3\x84\x4c\x41\xd5\xc1\x42\x3a\x83\x68\x83\x47\xdb\x6e\x6e\xac\xd7\xea\xcd\xb8\xe5\x4f\x21\x43\x44\x69\xc1\x3b\xb1\x35\x81\x1c\x57\x39\xa7\x5d\xf5\x25\x5c\x73\x52\x9b\x14\x5a\x2e\xe0\xd8\x55\x38\x5b\x05\xc2\xe4\x80\x00\x73\x13\xc1\xa4\xfb\x71\xb2\xb4\x19\xdc\x5a\x1c\xa0\x32\x41\x3b\x6a\x63\x67\x0f\xb9\x26\xa1\x20\x5c\x48\x85\x15\x8d\xac\xd8\xce\x85\xbd\x38\xec\xc5\xd2\xbe\xb5\x67\x5b\x02\x4a\xcb\x08\x27\xf5\x1d\x5e\xa2\xc6\x9b\xf7\x97\xf3\x56\x7b\xdc\x4c\xdb\x4b\x73\x96\x22\x9e\x24\xeb\x80\x9d\x57\x66\x7e\x5a\x7c\xbe\x7c\x44\x45\x3f\x7a\x03\xdc\x5e\xc0\xa9\x31\xae\x67\x9c\x58\x09\x55\x2a\xbb\x4b\xe1\x4b\xe6\x76\x5b\x58\xd7\xf6\x88\xf1\xa9\xa9\x75\xdc\xe6\x94\xce\x04\x4f\xe9\x3a\xe0\x90\xc6\x4f\x7b\xeb\xcc\x0d\x2b\x84\x37\x67\x94\xd0\xa7\xc8\x92\x97\xed\x11\xd2\x0d\x30\x33\xf2\xea\x92\x33\x94\xe2\x6c\xa3\x05\x5f\x65\x6c\x1b\xa0\xd4\x58\x3a\xed\xea\x01\x5c\x14\x01\x64\x79\x58\xe4\x67\xbc\x28\x32\xbb\xda\x60\xff\xd8\x5a\xe4\xf0\xa0\x5f\x3f\x67\x53\xbe\xc6\xe1\x2c\x32\xb1\xec\xe9\xc3\x8e\x66\x83\xf3\xe7\x8d\x3f\x66\xf7\xcd\x9a\x76\x39\x8f\xa7\x4d\x44\xbd\xf6\xc9\x74\x2b\xf8\x92\xaa\x5f\xc8\x44\x42\xad\x6f\x9d\xbb\xb5\x7c\xb4\x82\x16\x11\x0c\x67\xf9\x52\x5d\x96\xe8\x70\xe7\x6b\x54\x69\x07\x19\x0b\x83\x8b\x05\xbb\x69\x6e\xf5\x15\xd6\xcc\x1e\x92\x4e\x8b\xb5\x65\xea\xe9\x7a\xf0\x85\xae\x47\x0f\x5a\xd8\x7c\x42\x57\x62\x33\xaf\xa3\x2b\x4e\xb5\x24\x64\xd4\x87\x22\xb0\xc4\x46\xd8\x4f\x69\x42\xe4\x11\x3a\x6f\xd0\x1b\x5d\x7c\xbb\xf7\x07\x9b\x48\x3f\x27\x3d\xe5\x82\x06\x25\xc4\x9c\x8c\x84\x28\xe0\xaa\x87\xb6\x33\x41\xf4\x98\x23\xe3\xba\xe5\x06\xab\x10\x82\xeb\x04\xd5\x3c\xcb\x08\xab\x0a\xa4\x68\xcd\x0b\xa8\x45\x17\x30\x32\xbc\xff\x80\x9b\x90\x07\x6c\xab\x24\x16\xa3\x6a\xd9\xd2\x5d\x14\x83\xe8\x9e\x3e\xe0\x7a\xbd\xd7\x5f\xd4\xf7\xa6\x71\x84\xf7\xe5\xd6\xd7\x1e\x9d\x97\xf2\xd7\xf7\x43\x7f\x84\x4f\x9d\x55\x14\xa3\xa9\x20\xe0\x37\x49\x7d\x4a\xb0\xc1\x04\xe4\x1c\xee\xbb\xbb\xb3\x1f\x8f\x1f\xce\x11\x51\x11\x4a\xe8\x23\x19\xb1\x48\x3e\x1d\x68\xf1\xf8\xef\x39\x51\xfa\xe7\x16\x43\x0b\x4d\x09\x93\xc0\x09\xa8\xaa\x41\x27\x34\x2f\xa4\x5b\x18\xfd\xdf\xb3\xf2\xf7\x4b\x48\xbe\x96\xfd\x04\xb4\xeb\x60\xfa\x81\x4c\x01\x89\xdc\x2c\xad\x6c\xa0\x18\xa3\xe2\x0d\x9b\xea\x66\x6d\x10\xed\xcc\xfe\x96\xb3\x35\x85\xae\xd3\xe2\xa3\x60\x14\x2d\x32\x5d\x9a\x61\x80\xea\x5c\x2f\x8c\xda\x7c\xd3\xd8\xfa\x2a\x26\x52\x64\x95\x39\x95\xbd\x28\x31\x86\x94\x20\x04\x58\x88\xa7\x27\x7b\xd7\xdb\x44\x62\x3f\xb1\xe0\xa3\xa3\x11\xbb\x74\x86\xfc\xe2\x57\xe9\x9a\x30\xa1\xf9\x1e\xc1\xb4\xdc\x0a\x34\x1b\x53\xe9\x7f\x00\x1c\x7a\x99\x27\xca\xd4\xbe\x99\x52\xad\xa5\xbb\x81\x9a\x27\x4d\x5c\x42\x60\x16\xcd\xaf\xb6\x2c\x81\x43\xa7\x63\x92\xac\x23\x89\x9e\x4f\x87\x89\xd4\xf4\x1d\x3d\xb6\x9c\xce\x4d\xaa\x3b\x15\x93\xb1\x35\xeb\x4c\xb9\x0a\xa3\xe3\x18\xeb\x71\x62\x6a\xcf\x10\x04\xa6\xdf\x6a\xf0\xbb\xc9\x6f\xd5\xbb\x68\x25\x75\x63\xf9\x35\x51\xa7\x3e\xa2\x0c\x7a\x41\x58\x8d\x98\xc8\x19\x60\x64\x7b\x47\x10\x46\x05\xdc\x69\xe4\xcc\x32\xd6\x48\x36\xd3\x6c\xc2\xa0\x89\x9a\x97\xb5\x7e\xc6\x73\x09\x01\xac\x29\x51\xfa\x82\xfa\x1a\x2a\xc6\x19\x4f\xec\x01\xca\x04\x4d\xa9\xa2\x4f\x44\x7e\xd3\xb0\x75\xa7\x58\xe1\x84\xcf\x06\x42\xd1\x29\x8e\xd4\x3d\xde\x4a\x03\xc7\xb6\x99\x4d\xa3\x7a\xdc\x30\xd0\xf9\x99\x5e\xfc\x19\x61\x44\xc0\x44\xb5\x4e\xde\x7c\x84\xe1\xc9\x46\x9c\x1b\xbc\xa7\x91\x29\x50\x21\xbd\xc5\x02\xe7\x8a\xa7\x5a\xbf\xc5\x49\xb2\x80\xc2\x13\xfa\xc9\x1c\xcb\xb9\xdb\x68\x13\x85\xd6\xe5\x6e\xb2\x8b\x7b\x8a\xa3\x39\xb9\x83\xfa\x89\x4d\x8b\x5b\x19\xe5\x07\xc2\xf2\xf4\xc3\x09\xfa\xef\x62\x8e\xa7\x83\xd3\x1f\x86\xe3\xb3\xf3\xbb\xc1\xf7\x17\xc3\xb3\x60\x3e\xf6\xc9\xe5\xf9\xdd\x5d\xfd\xd7\x1f\xce\xef\xeb\x3f\xde\x5c\xdf\x3c\x5c\x0c\xee\x9b\x5a\xb9\xb8\xbe\xfe\xf1\xe1\x66\xfc\x71\x70\x7e\xf1\x70\x3b\x6c\xf8\xf4\xe1\xbe\xfd\xe1\xdd\x8f\xe7\x37\x37\xc3\x33\xb7\x2a\xff\x13\x9c\x2e\x88\x4e\x83\xc8\xd1\xe6\x69\x54\x0f\xe0\x21\x2a\xbf\x78\x82\x1e\xaa\xc8\xcd\x36\xc4\xcb\xa4\xe1\x3e\x63\xa9\x79\x18\x44\xf2\x8d\x18\x72\x9f\xeb\x45\x69\xfb\xd4\x78\x41\xa3\x39\x41\x09\xe7\x8f\x79\x66\x59\x9b\x71\xbb\x33\x6e\x0c\x3f\x44\x06\xad\xfd\x70\x7e\x7f\x52\x47\x90\xf6\x8d\x05\x80\x1f\xee\x0c\xc0\xb8\xb0\x63\xa7\x60\x4b\x71\xc8\xc2\x85\xa9\x34\xe8\xc1\xef\xcc\xb2\x7e\x4c\x6b\x98\xa9\x4a\x37\x71\x6c\xcb\x03\xba\x89\x05\x0d\x97\xf7\x75\xd9\x6a\xfa\xe5\x30\x25\x33\xd0\x84\x44\x38\x37\xbe\x62\x7d\x4f\x09\xc1\x45\x38\xe0\x82\x1e\x76\xd7\xa8\xa5\xa3\xc6\x06\x2b\x7b\xa6\x27\x2e\x1f\x69\x96\x91\xf8\x43\x5d\x7e\x29\xd7\x91\xb3\xd5\x4b\xf9\x14\x05\x67\x52\xeb\xf5\xa0\xf3\x3b\xbc\xf7\xb9\xad\xcb\x41\xa5\xf1\x87\x15\x1e\x42\xc0\xa1\xd4\x77\x82\xc7\xe5\xa6\xe0\xbd\xc6\x0a\x3d\x13\xc8\x08\xcb\x6d\xc1\x0b\xa3\x7b\xeb\xb3\x0d\xdd\x19\x4f\x86\x2b\x5f\x53\xca\x14\x6b\x65\xc6\xbb\x10\xb8\xf5\xf7\x92\x34\x31\xe2\x2d\xd2\x7a\xce\x4c\xa3\xc0\x9d\x5d\x28\x01\x8c\xb8\xc5\x67\xe4\x6e\x83\x06\x0b\xf9\x12\xf9\xaa\x7e\x23\xad\xb8\x2c\x34\xdb\xee\x32\x1e\x97\xca\x5c\xc2\xe7\xec\x3e\xb0\x12\x86\xe3\xca\xb5\xba\xe7\x31\x5e\x68\xe2\x80\x10\x2e\x99\x67\x19\x17\x0a\xb5\xb4\x61\xbc\x23\x66\x7c\x70\xe7\xd8\x79\x78\x1e\x07\x8d\x68\x09\x43\x36\x40\x81\x77\xcb\xee\xb4\xeb\x5a\x30\x8e\x30\xee\x08\x14\x41\x5f\xae\x21\x2d\xa9\xd4\x25\x0a\x6d\x12\x7e\xb7\x09\xdc\xcc\xf4\x05\xdf\xb5\x7a\x50\x53\xef\xd7\xae\x85\xc6\x2d\x4f\xc8\x54\x8d\x1b\xbd\x3e\x4b\x0c\x9c\xba\x45\xd6\x96\x10\x4f\x67\xf3\x1d\xb4\xd8\x5d\x4b\xf8\xce\xfa\x4b\xb5\x6a\x10\x58\x08\x04\xe7\xca\xc8\xa7\x85\x0e\x83\xdc\x6a\x82\x79\xc1\x76\x6a\x43\xd9\xbd\x10\xa8\x65\xfe\x47\xc6\x9f\x99\xb7\xec\xcb\xa3\x11\x1b\x62\xa8\xaf\xe8\x15\x11\x17\xe1\x0e\x5a\xc0\x4a\xf9\xbf\x54\x2b\xed\x55\x83\x60\xda\x01\xea\x0a\xba\xb7\x95\x75\x93\x05\x2a\xea\xe1\x95\xbe\xeb\x72\x7a\x8c\xd5\xdb\x89\x80\x66\xc2\xb6\xe0\xab\x22\x99\xb5\xcc\x9b\x79\x16\x0e\x54\x70\xbb\xeb\xae\x8e\xd0\xcf\xce\xf2\x03\xf1\x44\x45\x29\x49\x5b\x08\x3c\xc1\x0b\x87\x69\xd5\xb4\xb0\xbb\x80\x89\xda\x75\x84\xd1\xf2\x05\xf6\x78\x14\x0d\xab\x5c\x52\xc0\x19\x33\x16\xd9\x35\xa2\x69\x4f\xfd\x47\x77\x64\x79\xb8\xfd\x47\xa8\x1e\x66\x1d\xd6\x20\x74\xb0\x64\xf1\xbf\xcc\x66\x99\x44\x1a\x57\x17\xc4\x56\x73\xb2\x1e\x54\x7d\x7e\xc0\x03\x68\xf2\x6c\xd0\x94\x26\x09\xc8\x01\x47\x68\x00\x55\x0d\x21\x0f\x45\x5f\x85\x2e\x6a\x8d\xce\x18\x5f\x15\xba\xdf\x42\x4c\x51\x40\x4c\x77\xed\xc4\x24\x81\x9a\x8a\x34\xc4\xdd\x50\xd4\x0e\x52\xd2\x35\x6f\xc1\x75\x40\xcf\xee\x89\xe8\x6b\x28\xef\x6f\x11\x74\x56\x1b\x6e\xf0\xe1\x3f\x9b\x87\xfe\x29\xc7\x02\x33\x05\xa1\x54\x56\x74\x17\x24\x88\xe8\x26\x9f\x21\x58\x91\x19\x43\x30\xfc\x14\x6e\xae\x73\xf9\xcf\x28\xe4\x1d\xc5\x07\x88\x1e\x91\xa3\x03\x5b\xeb\x5d\xe6\x93\xe2\xcd\xb9\x96\x1c\x46\xac\x16\x22\x72\x84\x06\x89\xe4\xf6\x0b\xc2\xa2\x04\xaa\x88\x06\x51\x5f\x9e\xf2\xad\x5b\x69\xb2\x00\x05\x05\xb6\xb2\x68\x9e\xdb\x07\xc1\x87\x50\x23\x05\x7c\xe2\x09\x9c\xf4\xe2\xf7\xa6\xd2\xcb\xa5\x38\x89\x17\x44\xa3\xae\x5d\x43\x2f\xb6\x49\xa6\xd2\xd1\xb2\x0d\x82\x37\x60\x63\x8a\xd0\x9d\x20\x81\x1c\x7d\x8d\x15\x4a\x08\x96\x0a\xfd\xf1\x9b\xb5\x62\x43\xdc\x04\x0b\xee\x6a\x8f\x6f\x11\x7f\xef\x22\x38\xdb\xea\xc7\x43\x25\x3a\x84\x11\x23\xcf\x61\xc0\x0e\x87\x18\x2b\x57\xcf\x86\x04\x29\x43\xa6\xb4\xa6\x49\x2c\x84\x20\x58\xa3\x32\xb5\xf0\x11\x87\xd6\x68\xdd\xa7\x76\x58\x0d\x94\x65\x95\x27\x6a\xd4\x33\x40\x14\x29\x62\x29\xe7\x58\x8d\x98\xe5\xac\x2e\x6c\x24\x88\x9e\x1f\x24\x49\x39\x7e\x11\x43\x88\x2e\xd3\x13\x86\xb2\xb2\x47\x7e\x81\xae\x40\xfd\xf2\x41\x64\xe5\x9a\xfd\xfe\xb0\x68\x4d\x6d\xc4\x3c\x5c\x43\xd8\x76\xa3\xb4\xd3\x64\x5f\x7e\x45\x21\xb8\xa1\xfb\x0b\x53\xdf\xb7\x83\x30\x4c\x9a\x86\xbc\xe2\x60\xd5\x6d\xfa\x4b\x64\xe3\x5d\x77\xd0\x5d\x54\x6e\xb6\x8f\xc3\x35\xfb\xcc\x1b\xcc\xed\x2d\x9b\x1b\xc8\x16\xdb\x28\xe0\x3e\x9a\xf1\xb5\x3c\xbe\xa5\xa1\x9f\xc7\x90\x4b\xb1\x9a\x0b\x16\xb9\x09\x8e\x75\x80\xa1\x9b\xc6\x41\xa8\x74\x10\x99\x09\xa1\xf4\x8e\xf1\xd9\x37\x5b\x3c\xaf\xd9\xfb\x9e\xfe\x41\x31\x7f\x37\x15\x1f\x04\x57\x9f\x78\xbb\xb0\x37\x88\xff\x86\x23\x08\xa0\x84\x9e\x5c\xe8\x66\x1d\x4f\xc2\xa1\x70\x62\x30\xe6\x37\x8a\x87\xb6\x54\xf7\x11\x1a\xc2\x45\xe3\x2a\x77\xe3\xa9\x73\x48\x04\x2f\x8f\x98\xd6\x4c\x5c\xfa\x79\xd0\x7e\x99\xc4\x9b\x4e\x80\xc1\xb2\xd9\xca\x97\x93\xae\x86\x58\x6f\xd3\x26\x1c\x94\x0e\xb4\x01\xa8\xcc\x68\x38\x3b\x41\x31\x8f\x1e\x89\x38\x16\x24\xa6\xf2\x04\x7c\xeb\xaa\xd5\xa9\x97\x6a\x6d\x7b\x6b\x49\xa3\x2d\x50\x60\x45\xae\xc1\xa9\xe9\xdf\x06\xd1\xbb\x7a\x88\x07\x88\x4e\x41\x9d\x70\xa1\xae\x26\xc9\xc6\x65\xeb\x13\xa6\xc4\x22\xe3\x94\x29\x6f\xca\xaa\x2c\x84\xd3\x34\xb4\xd0\xd6\x16\xa4\x2d\x76\x11\x83\xb3\xe1\xb4\xef\xe7\x44\x12\x17\x70\x60\x26\xa5\xb8\xcd\x51\x33\xec\x22\xc3\x6a\x2e\x21\x23\xa8\xbc\x06\x56\xe9\x82\x4f\xf5\x0a\xe1\x0c\xe2\x15\x8c\x95\xa2\xf8\xc8\xe7\xad\x48\x45\x93\x64\xc4\x18\x21\xb1\x44\x90\xbc\xf3\x55\x63\xe2\xa1\xfe\xf4\x00\xe1\x38\x46\xff\xfb\xeb\x8f\x17\xbf\xdc\x0f\xc7\xe7\x57\x60\xb4\x3e\xbf\x18\x7e\x73\xe0\x7f\xbc\x7e\xb8\xf7\xbf\x1a\x0b\xcb\x13\x11\x28\xc5\x8f\xa0\xe2\x31\x69\xe4\x3f\xc8\xee\x08\x47\xea\x52\x32\xf5\x13\x49\x5c\xa4\xab\x15\x53\x3c\x02\x94\xdd\xc3\xd6\x82\x8b\xc6\xe6\xb7\x86\xf2\x7b\xeb\x3f\x59\x4e\x83\x8e\x78\x7c\x17\x4e\x0c\x4c\x09\x83\x68\xec\x22\x47\xcf\xea\xbe\x05\xc1\x11\x36\xa3\xac\x2d\x1e\x8f\xb0\xa7\x97\x14\xe2\x7f\x24\x8b\x9f\xb4\x7a\x7d\x83\xa9\xe8\x4c\x7b\x43\xf6\x44\x05\x67\x30\x35\x6f\xd6\xf2\x27\x46\xeb\xe9\x58\x56\x0f\x95\x34\xb2\x30\xc4\x68\x64\xad\x31\x9f\x4d\x38\x36\x6f\x3e\x5d\x8b\x8e\x41\x3e\x2b\xe1\x92\x7f\x3d\x08\x8b\x43\xa2\xf0\x17\x4d\x41\x83\x23\x76\x7f\x7d\x76\x7d\x82\x48\x82\x27\x5c\x40\x36\x98\x09\x09\x72\x4d\xd8\x05\x8b\x78\x1a\x34\x54\x4a\xfc\x3e\x40\x59\x91\xf8\x1d\x1a\xd1\x8e\x4c\x1b\xab\xea\x90\x73\x51\x4f\x9b\xde\xad\x0a\x68\x27\x7b\xc3\x45\x97\xeb\x5f\xbf\x06\x4b\xc7\x33\xad\xc8\x55\x38\xaf\xbd\x9b\xa7\x04\x9b\x12\xc0\xc6\x2d\x64\x6d\xf9\x36\x80\x35\x49\x4a\xe5\xa0\xf4\xc1\x91\x47\xd6\x05\x5f\xbc\xc9\x19\xfa\xf1\x2f\x12\x4d\x72\x35\x62\xe5\x36\x38\x43\x83\x9f\xef\xd0\xf7\x58\x45\xf3\x6f\x46\xec\x5a\xab\x99\x3f\xfe\xa5\x05\xa1\x62\x6d\x70\x25\xbd\x26\x67\x58\xe1\x0b\x8e\x63\xca\x66\x4d\xc8\x4a\x05\xfc\xfd\xf0\x7e\x70\x82\xae\xad\x0e\xef\x93\xca\x8b\x4c\xab\xa0\x21\x60\xc8\x30\x11\xc7\x45\x80\x95\xb3\x32\xfa\x8c\xd1\xcc\xe0\xc2\x1a\xb1\x7b\x03\x29\xa5\xb9\x2a\x55\x28\xe3\xb6\x04\x83\xd6\xca\x0c\xd8\x96\x31\x65\x5b\x4b\xa2\x5e\x1d\x20\x63\xbf\x19\x56\x1e\x03\x79\xa6\xce\xec\x47\x0c\x14\x74\x9f\xe9\x99\xf0\x08\x27\x10\x93\x77\x18\xd8\xf4\xb4\xda\xce\x73\x48\xbb\x33\x35\x5b\x17\xe5\xd0\x59\x9f\x09\xea\x85\xb2\x70\xa3\xc0\x00\x00\xfb\x68\xbd\xb1\x29\xd7\x1c\xc7\x40\xc9\x80\xf1\x2d\x31\xab\xa3\x3f\xf4\xd0\x32\x66\x59\xf4\x53\xc7\x8f\xa0\x34\xba\x4d\xf1\x8e\xc0\x7c\xcf\x16\x10\xbe\x0d\x98\xe9\x1c\x42\x3f\x0a\xee\x6c\x89\xb2\xb6\x8b\xfe\x4e\x0c\x3e\x1b\x31\x13\x29\x58\xda\x97\x10\x14\x21\xe8\x9d\x33\x08\x64\x2c\xae\x4b\x2f\x60\x64\x36\xb0\xd1\xca\xfa\x99\x20\x87\x31\x51\x44\xa4\x60\xef\x09\xd7\x54\xdf\xb0\x47\xe8\x36\x54\xaf\x63\x1e\xe5\xa9\x03\x86\x84\xf4\xc4\xa2\x2a\x6e\x49\xe2\x31\x17\xfb\x2a\x8a\x87\xe4\x77\x45\x20\x2b\xaf\xb3\x7e\x6c\x08\x66\x10\x7e\x5a\x97\xd4\xdb\x05\x5f\xe0\x1d\xdb\x45\xad\x99\x86\xc6\x59\xb9\xa5\x52\x6b\xab\x71\xed\x56\xd4\x39\xb9\x2a\xc0\xeb\xb8\x00\x61\x8b\x7c\xce\x38\x18\xb9\x4d\x4e\x15\x8f\xbf\x92\xe8\xfc\x46\x4b\x40\x5a\xe3\xf5\x67\x30\x97\xca\x04\x97\x41\xba\x8e\xf9\xda\xa4\x0b\x1c\xa0\x6f\x4d\xcd\xea\x08\x7d\x76\x7f\xfc\xf9\x3f\xfe\xe3\x4f\x7f\x5e\x27\x9d\xc4\x29\xe4\xd0\x6e\xb1\x46\xbe\x1a\x46\x59\x24\x0a\x77\xa0\xce\xa9\xb6\xd8\x05\x7b\x00\xdb\x96\x7f\x13\x90\xaa\x20\x76\x08\xcf\xec\x09\x97\xe1\xc9\x44\xa5\xa3\x59\x44\x12\x48\xa2\x0e\xca\x1c\xc2\x0b\xbb\x56\xa2\xff\x5f\x4b\x30\x60\xc6\xfa\xa8\x6c\x16\xe3\x44\x13\x2f\x5e\xeb\x46\xd0\xd7\xd6\xfe\xa7\xc0\x81\xf8\x8d\xbb\xe0\x78\x12\x13\x61\xeb\xdd\x3b\x93\x9d\x37\x24\x02\x73\x20\x9f\xb3\x84\xc7\x0e\xdd\x4d\x92\x0c\x83\x00\xa1\x99\xc1\xd1\x88\x0d\x5d\xf9\x73\x83\x4e\x62\x3e\x32\x9e\x97\x29\x8e\x0c\xa8\x99\x44\x5f\x7f\x3e\xd1\xbf\x1d\xa0\xc5\x09\x04\x91\x1e\xa0\xdf\x4e\x2c\x08\x01\x16\x6a\xac\x7f\xfa\xc6\xc9\xda\xb6\x09\x18\x34\x95\xe8\xab\xe3\x27\x2c\x4c\xc9\xcb\x63\x33\xa2\xaf\x2c\x67\xf5\x65\x7d\x42\xd9\x3c\xe1\xfc\xd1\x06\xd8\xd6\x3e\x3c\x76\x78\x36\x40\xde\xde\x6f\x62\xb6\xde\xe7\x3b\x2a\x74\x68\x8b\xb7\x1f\x65\x13\x74\xf4\x37\xc9\x19\x3a\x5a\xe0\x34\xb1\xbf\xba\xa7\x36\xfe\x17\x4b\xe4\xca\xf7\x17\xe5\xc3\x8d\xa5\xf4\xfb\x84\x4f\x60\x56\x97\x6e\xa6\x26\x82\x16\x06\x5a\xdc\x3e\xc5\x85\x65\x27\x62\x25\x29\x03\xcb\x90\x72\x65\x5e\x01\x1e\xd7\x34\xab\xcf\x7e\x48\xff\x65\xfc\xc2\xb0\x28\x2e\x89\xcf\x18\x87\x7d\xf4\x9a\x6e\xf4\x33\xfa\xda\xb2\xa0\x6f\xf4\x1d\x63\xc3\x95\xcd\x32\x34\x75\xb0\xf0\x1d\xfc\x12\x74\x40\x19\x32\x69\x99\x4b\xbe\xfc\xed\xf8\xe8\xe8\xc8\x7f\x7d\xa5\xa7\xf2\xff\x22\xaa\x24\x49\xa6\xa6\x25\x77\x83\x2d\x46\xec\xd2\xe1\x46\x3b\xe3\x75\x81\x94\x05\x65\xf7\x23\x9e\xa0\xc3\xc2\xa0\x1b\xf3\x48\xa2\x7f\xd5\x62\x6d\xb0\x94\xf0\xa3\xd6\xe3\x5a\x50\xec\x0c\x50\xe5\x2b\x1d\x2a\x6b\x10\xaf\x1e\xab\x10\x1c\xc7\x2b\xb6\x58\x86\x20\xe4\x40\x0b\x9a\x72\x8e\x2d\x80\x8e\x10\xfa\x65\xf2\x59\xc1\xa3\x16\x7c\xa2\xc6\x50\xf6\xe6\x9b\xb2\xc6\x6e\x0b\x98\x22\x43\xd6\x2d\x0b\x60\x61\x44\x2c\x67\x30\xf3\x3c\x08\xdd\x27\xfa\x72\x61\x21\x92\xb1\xcc\xd3\x14\x8b\xc5\x71\x71\xda\xea\xc4\x59\x00\xd8\x00\x8f\x49\xdc\x02\x80\x0b\x37\xb1\x47\xcb\x46\x31\x58\xf1\xd2\xdd\x68\xfe\xec\x46\x50\x8a\x09\x02\xf2\x4c\x21\x32\xc2\x22\x1e\x5b\xba\x2e\xb2\x4f\xcb\x12\x8b\x7f\xa7\x2e\xab\xb8\x88\x18\x59\x18\xe3\x98\x32\x99\xd1\xf6\x0d\xf7\x71\x0b\xfb\xe6\x63\x28\xea\x47\x66\x6b\xb8\x47\xcf\xaf\xef\xdc\x37\xdd\x2f\x5d\x58\x87\xb2\xc8\x8e\x93\x10\x76\x88\xcd\x90\xc0\xcf\xc5\xf5\x0b\xb1\x1d\xc6\x3a\x93\xfb\xdc\x5c\xf3\xef\x53\x7e\x43\x13\x7d\x6b\x01\x8d\x1f\x8d\x58\xe9\xe7\x03\x44\x12\x9a\x52\xe6\x63\xeb\x0c\x73\xe7\x53\x23\x3d\x3f\x52\xa5\xb7\x4c\xc6\x8f\x9a\x83\x39\xb8\x8c\x40\xa5\x1a\xb0\x85\x23\x1d\xef\x98\xb2\x16\x88\x5c\xea\x71\x15\x3a\xba\x16\x66\x75\x13\x87\x56\x20\xa5\x01\xe1\xc1\xf9\x1d\x31\xdd\x9a\x3b\x4b\x45\xb8\x70\xd0\x5e\xd0\xdc\xa1\xc3\xf3\x0d\x38\x00\xf4\x51\x8a\xf9\xf5\xf2\x6f\x83\x80\x32\x64\x79\xba\x6d\xb2\x89\x0d\x1f\x7e\x2b\x33\xdd\x8d\x20\xee\xa6\xb2\x89\x4b\x84\xe5\xa9\x3b\x50\x6b\x50\xdc\xd0\x8a\x3f\x31\x89\x12\x6c\x00\x00\x74\x43\x10\xf9\x78\x60\x1c\xa4\x59\xd0\x97\xb9\x5e\x4c\x37\xa6\x44\x40\x42\xd8\xd7\xe6\xdf\xdf\x20\x7b\x37\x7c\x7b\x60\xef\x73\x21\x1d\x80\xa9\xdd\x73\x28\x31\x45\x62\x63\x43\x07\xb0\xc7\x19\x16\xb1\xb1\x96\x87\x5a\x85\xc9\xe0\xd5\xf2\xd7\x82\xe7\xe8\x99\xca\xf9\x88\xdd\x73\x67\x70\x44\x8c\x7b\xb8\xcc\x03\x50\x46\x6b\xfd\x61\x09\x4c\x00\x46\xdd\x44\x01\x9a\x09\x6f\x95\x6b\x04\x51\xb0\x63\xc6\x63\xb2\x1d\x2e\xc4\x7d\xe1\xab\x70\xfe\x6b\x41\x4c\x3e\x18\xdc\x14\x6d\xe9\xb4\x44\xca\x35\x6d\xf3\xd5\x8d\x87\x7b\xc8\xb6\x03\x15\x0d\x9f\xd9\xa6\x90\x2b\xfe\x56\x83\x56\x9c\xc6\x19\x64\x03\x97\xd6\xde\x83\x50\x6e\xbb\x09\x51\x39\x55\x65\xe5\x0a\xf8\xab\xcf\xcc\x3d\x82\x65\xf7\x01\xc6\x18\xcd\x04\xcf\x33\x9f\x32\xef\xd2\xfd\xcc\x36\x58\x99\xe6\x9c\x4d\xf9\x89\xd5\xa9\x2e\x28\x7b\x34\x14\xff\x52\x7b\x64\x70\x46\x49\x5c\x42\xc7\x71\x45\xe6\x60\x0e\x87\x88\xb2\x28\xc9\xe1\xe2\x93\x0a\x47\x8f\x06\x2b\xb5\xcd\xe8\xab\xbf\x19\xaf\x4e\xa6\x6c\x91\x98\xf2\x24\xb1\xdd\x16\x17\x68\x51\x85\xf3\x89\x62\x84\xd1\xc3\xed\x79\x73\xdf\x8f\xb4\xee\xcc\x69\xbe\x3d\xcb\x04\x02\xff\xf3\x23\x5d\x2b\xee\xb2\x82\x36\x44\x4a\xa4\xee\x8d\x4b\x6d\x58\x76\x9a\x48\x3f\x61\x45\xb6\xcd\x84\x32\xd0\x2a\x6b\x44\xea\xd5\x30\x6b\x96\x5a\x8f\xb7\x04\x7c\x29\xc0\x5a\x20\x34\xa8\x1d\x79\x26\x0c\xd6\x82\x87\x6b\x60\x37\xc0\xfb\xdd\xe6\x53\x79\x77\xc5\x74\x96\x0f\x33\x21\x64\x0d\xb4\x81\x3b\xfd\x7a\xc7\x41\x96\x5e\x5d\x36\xc6\x67\x6c\xc0\xa3\xeb\x58\x8a\x71\x5e\xaa\x0f\xdd\x89\xa0\x1d\x39\x1a\xf1\x5a\xfa\x1c\x11\x3f\x12\x17\x86\xe3\x65\x31\xd7\xef\x0c\x7c\x5b\xbc\x84\x4d\xed\x2d\xb4\x0d\x84\x1f\x88\xad\x5b\x86\x4d\x68\xf1\x6b\x9c\x36\xb0\xe8\xe6\x9d\x28\x3a\x3e\xb3\x1f\x5f\xea\x6f\x9b\x59\xd1\x25\x64\xf1\x79\xe0\x94\x14\x33\x7d\xb2\x5d\xaf\x2d\x46\x48\x23\x11\x6e\x34\xa4\x87\x6c\xa3\x01\x99\x1e\x3b\x96\x6d\xb2\x5d\xb9\x56\x9e\x8d\x1d\x1e\x27\xc6\xce\xa4\xe6\x60\x82\x28\xca\x1d\x68\x8e\x56\x36\x45\x98\xd2\x08\x09\x16\x33\xa3\x20\x49\xa2\xe4\x37\x0d\x3b\x5c\xe4\x3c\x6c\xb1\xc3\x1b\x94\x94\x0b\xfd\x9e\x20\x7e\x2f\x3b\x69\x7e\x94\x65\xcc\x36\x7f\x2b\xfb\xe2\x8c\x56\x68\xa2\x32\x44\xd6\x8a\xb8\x30\x00\xa7\xb1\x3e\x2b\xed\x98\x29\x5b\x96\x16\xbd\xc2\xa9\x47\x04\x70\x05\x0e\x6d\x7e\x97\x19\xdc\x84\x00\xdc\x60\xfb\x18\xb6\xae\x21\x1a\x0e\xc1\xd6\xf4\x6a\x1b\xc1\x88\x0d\xdc\x2b\x3e\xab\x18\x74\x3b\x61\x04\x70\x88\x0f\x35\xd1\xd0\xa0\x5f\xe1\x62\xd5\xed\xe4\x5a\x26\xb1\x6e\xf2\x66\xb5\x0c\xaa\xd6\xef\xfc\x6d\x64\x0b\x1e\x78\x68\xb4\xa5\xc5\x26\x9e\xd6\x2f\x54\xdd\x0c\xcc\x12\x55\x0b\x09\x37\x75\xbc\x5a\x97\x72\x88\x11\xb6\xa1\xb0\x76\xb1\x89\x21\x4d\x16\x05\x99\xea\x15\x37\x3a\x79\xa5\xb3\xfa\x69\x55\x5b\x71\x63\x8a\xd3\xb1\xe0\xed\xd5\x38\x3a\x2c\x93\x6b\xa2\x64\xdf\x99\x1b\xd4\xf0\x05\xfa\x7b\x8e\x13\x73\xb9\x31\x4b\x8e\x6e\xd8\x20\x2a\x7f\xf7\x67\x34\x80\xdb\x07\x5d\x02\x5f\x04\x07\x3f\xb4\xa6\x38\xa2\x69\x46\x84\xe4\x0c\xb7\x96\xa5\x79\xfc\x8b\x1c\x5b\xc8\xff\x31\x8e\x22\x9e\xd7\xe1\xfd\xd7\x98\x49\x43\x6b\xe1\xa4\x30\x7a\xcc\x27\x44\x30\x62\x4a\xef\xc0\x7b\xc8\xbd\xd7\x69\xb8\x1c\xe7\x6a\xfe\xdd\x38\x4a\x68\xe7\x3a\x04\x90\x5d\x34\xd0\x9f\x9d\x9a\xaf\x96\x4d\xa0\xd4\x7e\x69\xe8\x0c\x99\x67\xc8\x3c\x3b\x42\xdf\xe3\xe8\x91\xb0\x18\x65\x49\x3e\xa3\x16\x4c\x00\x6e\x28\x60\x97\x81\x79\xb6\x3c\x31\x23\x5b\x98\xf6\xf5\x35\x34\x62\x29\x7e\x34\xd8\x80\x56\x88\x8c\x70\x92\xac\x65\x66\xf0\xf4\x50\x43\x55\x71\x99\xef\xbe\xcc\x91\x39\x1f\xca\x9c\x0f\x30\xa8\x02\x82\x64\xce\x10\x06\x60\x96\xaf\x24\xca\x33\x27\x01\x81\xa5\x2f\x01\xbf\xab\x99\x24\xd4\xaf\xa6\x5a\x0f\x9a\x93\x11\x83\x58\x56\xd7\xe2\xc2\x73\x95\xd0\xd5\xef\x43\x4e\x9a\x0e\xdf\xd4\xc0\x12\x6c\xe7\x45\xac\x01\x50\xae\xa0\x84\x8e\x71\xba\x6a\x4e\x18\x18\x20\xba\xb7\x0c\x1a\x4d\xf7\x4d\x2b\xc5\xe4\x5a\x41\xd3\x5b\x4c\xfd\x12\xe6\x8c\xda\xca\x17\xd6\x48\x1e\x84\xcb\x39\x4f\x52\xf1\x3d\x95\x48\x62\x45\xe5\x94\x36\x1a\x66\x42\x30\x88\x6d\x56\x1d\xaf\x87\x40\xd1\x80\x3e\x51\x59\x0b\x1f\xf7\x7f\x84\x3e\x82\x9d\x29\x90\xbd\xb9\xc7\x72\x68\x63\x09\x6a\x4e\x5a\x41\x0d\x77\x11\x30\xe3\x66\x10\xbc\xbf\xd4\x7c\xe8\x73\x3c\x8e\xd0\xa0\xb0\xef\x1b\x34\x0b\x63\xb9\x5f\x31\x23\x92\x48\xb2\x09\xf1\x75\x32\x85\x81\x0f\x1c\x08\x08\x81\xac\x22\xf5\xef\x05\xf4\xad\x1f\xe6\x33\xa4\x51\xe2\x47\xc2\x96\xd9\x3b\xba\x8f\xd0\x18\xa4\x96\x2a\xdd\xde\xd2\xc5\x8d\xb1\x6b\x93\x01\x76\x3f\x76\x05\x80\x08\x9d\x1e\xeb\x25\xd7\x82\x7e\xf4\x68\x93\x37\x8c\xbd\xd3\x42\x90\x3c\xcf\xb9\x0c\xcf\x99\xdb\x3f\xa3\x2b\x8a\x9c\xb8\x24\x0d\x48\x7e\xf1\x0b\x6c\xa2\x5e\x18\x0f\x11\x4a\x60\xd4\xfe\x90\x1a\x5b\xae\xdf\x6f\xe4\x58\x28\x2c\x03\xf8\x89\x5c\x53\xf5\xd3\xfc\xe3\x5f\xe4\x35\x9c\xd8\x5d\xe4\xc2\x37\xd7\x6d\xdb\x3e\x0e\x7d\x43\x0b\xbc\x8f\xb0\x2a\x8a\xbe\xe1\xd8\xa3\x37\x64\x3c\x46\x05\x79\xad\x5f\xe1\xed\xed\xa7\x55\xa9\x0c\xd7\x69\x6e\xab\x28\xfb\x32\x70\xd3\xa3\xff\x8f\xbd\x77\x6b\x6e\x23\x39\xd2\x86\xef\xfd\x2b\x2a\x62\x2f\x24\x7d\x1f\x08\x7a\xec\xd8\x37\x6c\x45\xec\x05\x87\xa2\x3c\xb0\x35\xa4\x4c\x52\x33\xde\x77\xb1\x01\x15\xba\x0b\x40\x9b\x8d\xaa\x56\x57\x37\x29\x78\xed\xff\xfe\x46\x65\x66\x1d\xfa\x88\x6e\x00\x94\x64\xef\x5c\xec\x7a\x44\x00\xd5\xd5\x75\xc8\xca\xca\x7c\xf2\x79\x96\x65\x82\x22\xab\x15\x97\x8b\xea\x25\xe1\xf6\x4b\xc7\x7f\xa2\xdd\x79\xd2\xbe\xc6\xde\xab\xf8\x98\x85\x35\x9e\xb0\xae\xb9\xae\x07\xa0\x78\x75\x9b\x28\x6c\xcf\x48\x64\xaa\x1b\x7f\x19\x2f\x86\xcb\xa8\x42\xc2\x7d\x59\xae\xee\x80\x16\xbd\x8b\x13\x22\x90\x41\xb1\x45\x5e\x66\x9e\xcd\x63\x5c\xc9\x41\xd7\xa4\x50\xfe\xd6\x1f\xff\x9c\xfd\xf1\xee\xe6\xfa\x6c\xcb\x73\xbd\xe1\x50\x73\x6b\xdb\x9a\x58\xa5\x19\xbc\x80\xda\xbc\x52\x22\xe7\xf2\x8c\xad\xd5\x04\xb3\x98\xaf\xd9\xa6\x28\x32\xfd\xfa\xfc\x7c\x9d\x14\x9b\x72\x39\x8d\xd4\xf6\xdc\x0f\xcd\x39\xcf\x92\xf3\x65\xaa\x96\xe7\xb9\x00\x1c\xeb\xd9\x77\xd3\xdf\x7c\x07\x33\x73\xfe\xf8\xdd\x39\xe4\xae\xa6\x6b\xf5\x6f\xef\x7e\xf3\xfb\xdf\xfe\x1f\xd3\x70\xb6\x2b\x36\x4a\xbe\xa6\x14\x69\x6f\xdb\x67\xe8\xf7\x9e\xe3\x4f\x6a\x4f\xf9\xfd\xf4\xd7\x61\x37\xe8\xab\x5b\x15\x8b\x54\x9f\x3f\x7e\xb7\xb0\x13\x33\xcd\x76\xbf\x20\x3f\xbf\x1a\xf2\xf3\x21\x29\x7e\x41\x7e\x7e\x55\xe4\xe7\x70\x0f\xc7\xd9\x98\x9a\x68\xb6\xf9\xbb\xb3\x91\x36\xb8\xbd\xcf\x0e\xb5\x1c\x0e\x21\x2e\xff\x88\x23\xe2\x41\x34\x90\x1f\x23\x42\x0e\xee\xea\xd0\x11\xc4\x1a\x4b\x67\xdf\xe9\xcc\x8f\x2a\x43\x06\x9c\x45\x12\x01\x55\x32\x06\xdd\x32\x9e\xb4\xe1\x39\x09\x4f\x74\xcc\xf8\x3d\x27\xe9\xf7\xa9\xd9\xbe\xe9\x75\x0f\x64\xfa\x4e\xf1\xd7\x16\xfd\xa4\x9e\x2c\xc3\xf7\x29\x78\xb1\x07\x0a\xd0\x39\xba\x5f\x5c\x3c\xd0\x17\xdb\xaf\x8e\x6e\x6c\xb8\x3e\x0c\x46\x77\x81\xa4\x7a\x2e\x13\xe6\x64\x73\xe9\x81\xf6\xe0\xb0\x3c\x05\xa0\x6e\x4a\x74\x48\x59\x99\x67\x4a\x0b\x3d\x65\x6f\x6b\x12\x4d\x1e\x1a\x78\xfb\xf6\x92\x7d\xf7\xbb\xdf\xff\x76\x2e\x5f\xb6\x9c\xdb\x60\xef\x55\xbe\x26\xa4\x22\x9c\xd6\x5b\xae\x0b\x91\x9f\xe7\xab\xe8\x1c\xad\xdc\xb9\xf9\xfd\x19\x3d\xf4\x4c\xad\xce\x1c\xe9\xef\x19\xf1\x9f\x4e\xb7\xf1\xb8\x12\xfe\xca\xd2\xc3\xb3\x86\x0e\x1a\x0d\x87\x12\x92\xfd\xa8\x95\xa3\x77\xc7\x4a\x12\x54\x82\x50\xab\x96\xff\x00\x31\xeb\x57\x8e\x62\x8c\x6b\xfb\x0c\xcf\xf9\xd3\xbd\x35\x4f\xc3\xff\x6d\x97\xc8\x73\x06\x2a\xac\x2d\x09\xaf\x23\x63\x06\xbe\x7d\xb3\xf9\xe3\x1e\x19\x0f\x48\x0d\x19\xf9\x93\x95\x14\x6a\x05\x38\x39\xf0\x84\x2d\x0e\x00\xa2\xa1\xe6\xa4\xf5\xec\x06\xb9\xc8\xf0\x80\x09\xd5\x93\x5b\x86\xfb\x48\x0e\xf1\x7d\xe3\xfc\x1c\x1c\xe2\xc7\x8e\x3b\x19\x94\xaf\x34\xe0\xc7\x82\xf5\x70\x2b\x8d\xc1\x2d\x98\xef\xef\xcd\x51\x3a\x3b\x00\x49\xc9\x50\xb0\x18\xd9\xbc\xc0\x49\x13\x67\x85\x3a\x03\x5a\x18\x20\x1b\x41\x56\xff\x2e\xe0\x02\xe4\x76\xc7\x1c\x93\xe6\xfb\x03\xfa\x89\x8e\xf9\xe7\xa0\xa3\xe4\x93\x68\x24\xc9\x24\xd0\x53\x22\xa5\xc8\x29\x6b\xb5\xf7\x44\x1d\x99\xf9\x0d\xa7\xb2\x1f\xf3\x14\x08\x72\x06\x8c\xeb\x0e\xf1\xce\x03\x23\x30\x65\xe0\x7d\x6e\xd4\x56\x19\x77\x46\x95\x3a\xf8\x10\x6f\x2f\x70\x08\x77\xfa\x5e\x5b\x9e\x21\x0d\xdc\xd7\x7b\x1b\xb3\xb5\xcc\x47\x18\xd4\x0b\xbf\x34\x4a\xc4\x62\x59\xa5\xed\xdf\xd3\x7f\xc7\xb7\xde\xbf\x6e\x00\x57\xb0\x85\x24\x0a\x68\xdc\x11\x8b\x72\xf2\x37\x73\xaf\x31\x4b\xca\xdd\x14\xdc\xc9\x8d\x30\x18\x64\x3b\x0c\x09\x55\xad\x37\xdf\x59\x8f\x5c\x6e\x47\xce\x81\x83\xf1\x0e\x99\x00\x2e\x11\xd8\x6a\x11\xad\x67\xad\x90\xd6\xae\x7d\x69\x15\xe5\xe2\x85\x65\xe4\x1c\xd7\xd5\x3b\xd7\x00\x91\x6f\x36\xfb\xed\x09\x8d\x00\xff\x8c\x63\x8c\x06\xc1\xfa\x16\x1d\xb0\x16\x39\x7e\x33\x82\x84\xc9\x98\xb1\x83\x87\xe0\xe2\x6c\x8c\x60\xb0\x17\xba\x06\x70\x5c\x88\xad\x2f\x62\xd5\x06\x98\x47\x0e\x38\x5f\x1f\x63\x7a\xd9\xb8\x3c\xba\x1f\x3e\x7a\xf9\xcc\x5d\x26\x26\x6c\x59\xc2\xe7\xd7\x37\xf7\x21\x1e\x22\xc1\xb7\x3d\x8b\x36\x22\x7a\x80\x80\x09\x1e\x79\xb8\x19\xac\x74\xea\x72\x37\x97\x5e\x5c\xab\x50\x36\xb9\xbf\x73\x7c\xe3\x8e\x73\x5f\xe5\x2c\x4e\x74\x96\xf2\x1d\xa4\x51\x25\x22\xe1\x7d\x0a\xd6\x95\x90\x18\x53\xb0\x2f\x5e\x3c\x7c\xa6\xcd\xac\x5c\xf8\xdf\x8d\x1d\x4b\x9e\x2f\x93\x22\xe7\xf9\x8e\xf9\xc1\x6c\xda\x03\xa6\xc5\x96\xcb\x22\x89\xe6\x72\x2b\xb8\x0c\x71\x6f\x94\x46\x36\x83\x1c\x2b\x41\x8c\xbc\xab\x95\x88\x0a\x4f\xe9\x07\xce\xbb\x1b\xa9\x7d\x7b\x70\xdc\xbb\xbb\x9d\xd7\xfb\xea\x3f\x24\x12\x0b\xc8\x93\x2d\xa0\x2a\x69\x0d\xd1\xd1\x78\x60\xf2\x06\xc4\xd8\xe8\xc8\xb5\x97\x41\xf8\x97\x5d\x53\x6c\x29\x8a\x27\x01\x15\xeb\x54\x62\xd7\xe6\xe3\x1f\x4d\xc8\x7f\x9c\x6c\x61\xbb\xe0\x63\x80\xb5\xc2\x0d\x16\xc2\xb5\x1c\xb5\x8e\xac\x71\xe4\xbc\xa0\xa2\x3f\x88\xf6\xbc\xa0\xb8\xd5\x0b\x38\xa6\xcd\xed\x31\x7f\x14\xf1\x5c\x56\x89\x8b\xc8\x67\xf4\x1b\x8e\x79\xa9\xa9\xd3\x58\x1b\x3b\xc6\x83\x62\xf9\x57\x40\xd6\xe0\x69\x1a\x5d\x59\x5b\x8f\xf4\x55\xbb\x54\xfe\x33\xa8\x2a\x0d\x4e\xf2\x78\x35\x2a\x92\x92\x21\xe5\xb9\x0a\x9e\xc2\x2d\x4a\x47\xcb\x82\x9c\x6d\x0e\x62\x4a\x71\xc9\x46\xa4\xb3\xad\x8d\xb9\xb4\xf5\xca\xab\x32\x45\x1e\xce\x2e\x31\x2e\x62\x69\xb2\xb5\x15\x5f\xaf\xc6\xc6\xc5\xd5\x58\xa0\xde\xe5\x60\x0f\x01\xdc\x17\x6d\x9d\x5d\xf5\x42\x6a\x54\xd2\xb4\xc2\x3d\x10\x78\x5e\x8b\x02\x4e\xf3\xb8\x4c\xb1\xfc\x16\x22\xe6\xc0\xf8\xc4\xd3\x94\x25\x85\x9e\x4b\x47\x50\x85\x74\xe3\x60\x61\x6d\x48\x3d\xa6\x2b\x17\x3c\x02\x9a\x25\xd1\x61\xf0\xc3\x92\x28\x29\x1a\x20\xe9\x5d\x28\x76\x91\x65\x82\x63\xb5\x18\x4e\xdb\x5c\x86\x77\xae\xfa\x24\x50\x69\x15\x88\xab\x9e\xa2\xca\xa9\x07\xf3\x0e\x8a\xb4\xa3\xa7\x64\xca\x2e\xf0\xed\x22\xa7\xe1\xcf\xa8\xb7\x54\xa1\x4e\x58\x46\x73\xab\x29\xb4\x8d\x91\xfb\x7b\x6b\xc6\xf3\x22\x89\xca\x94\xe7\x29\xb0\xbe\xaf\xca\x94\x25\xab\x40\x92\x13\xe6\x00\xe9\x89\xcc\x74\x45\x0a\xce\x6a\x1b\x25\xd7\x7c\x2b\x82\xca\x68\x0a\xef\xa4\x01\x86\x02\x39\x97\x31\x39\x6f\xda\x7a\x35\x65\x6f\xea\xd2\xb8\xb0\x27\x02\x5a\xc3\x44\xa3\xf9\x73\xfd\x0d\x8a\xfa\x50\x62\x37\x59\x99\x2b\xe5\x8b\x60\xd7\x75\x89\xcc\x73\xfd\x30\x12\xa0\x61\xc9\xf1\xfb\x71\xb9\xad\x45\xbd\xf7\x20\x44\x5e\x81\x6d\xb8\x0d\xd1\xd1\x41\x7b\x2a\x8c\xec\x64\x48\x09\x79\x40\x47\x7f\x0e\x94\xbe\xeb\x9d\xdd\xf6\x28\x80\xc2\x3c\x8e\xec\x6a\xa0\xa7\x33\xbe\xa3\xc1\xca\x09\xe1\x38\x43\x46\x76\xcd\x8b\xb1\xd8\x1c\x57\xee\x32\xbe\xa3\xad\x38\xa8\xce\x6e\xee\x8f\x34\xfd\x5c\x11\xe0\x61\xa6\x57\xe6\x96\x2f\x10\x67\xa6\x56\x81\x09\xa6\xf3\x86\x94\x7a\x80\xfc\xdc\xd9\x84\xa5\x60\x69\x22\x1f\x2c\xd5\x81\x59\xa0\x13\xc6\x7d\xeb\x60\x23\x70\x90\x71\xcf\x75\x78\x5e\x6d\x52\x01\x47\x38\x63\xc3\x0a\x06\xdb\x6f\xc8\xb6\x27\xa3\xd4\x20\xec\x0b\xb7\xbd\xc7\xf0\x69\xe9\x45\x36\xbb\x3b\x8f\x85\x33\xe3\x31\x18\x60\x2c\x03\x39\xf7\xce\xf1\x7d\xbf\xa9\x62\xf6\x46\x08\xeb\x7c\xb8\x7e\x73\xf5\x76\x76\x5d\x55\xc3\xf9\xf3\x87\xab\x0f\xd5\xbf\xdc\x7e\xb8\xbe\x9e\x5d\xff\x21\xfc\xd3\xdd\x87\xcb\xcb\xab\xab\x37\xd5\xef\xbd\xbd\x98\xbd\xab\x7d\xcf\xfc\xa9\xfa\xa5\x8b\xef\x6f\x6e\x6b\xfa\x3b\x56\x3c\x27\xf8\xd3\xfd\xec\xc7\xab\x37\x8b\x9b\x0f\x15\x09\x9f\x37\xff\x79\x7d\xf1\xe3\xec\x72\xd1\xd2\x9f\xdb\xab\xcb\x9b\x9f\xae\x6e\xf7\x28\xf0\xf8\xf7\x6d\x1d\xd2\x53\x80\xad\x0e\xd6\x63\xba\x60\xab\x3c\x11\x32\x4e\x77\x88\x05\xb7\xf7\xc0\x1a\xf4\x34\x3c\xa9\x92\xad\x50\xe5\x31\x90\xee\xfb\x8d\x60\xea\x51\xe4\xc0\xca\x80\xad\x51\x09\x27\xd7\x0f\x9d\x9c\x7d\x45\xde\x8c\xa1\xf7\x56\xae\x14\xf9\xce\xd5\x46\xf5\x75\xc7\x33\xfa\xd0\x43\x58\x26\xf2\xbe\xbe\x80\x1f\x91\x97\x59\x91\x2c\xbb\x41\xfa\x03\x99\x6e\xc6\xdf\x54\x91\x7f\xae\x9d\xac\xe3\xba\xdd\x30\x56\xb0\xea\xc7\xc0\x74\xa1\x85\x43\x65\xc6\xdc\xaf\x2d\xb4\x31\x2b\x97\x69\x12\xb1\x24\xae\x47\x1f\xb0\xa4\x0a\x03\xac\x75\x9a\xca\x4c\xe4\xe0\xd8\x19\x7f\x39\xcb\xc5\x19\x2f\x8b\x8d\x55\x40\x77\x95\x75\x48\x1b\x29\xa2\x5c\x14\x81\x5a\x3f\xe9\x4b\x05\x4f\x82\xce\x50\x45\x71\x0c\xe4\x25\xd3\x80\x32\xbc\x23\xa2\x8e\xbf\xc4\xd6\x47\x84\x14\xf1\xfb\xbd\x43\x43\x3d\x4e\x74\x5d\x5c\x18\x5c\x58\xfc\xd0\xaa\x54\x99\xf7\x36\x96\xda\xa9\x34\xe1\x24\xdb\x5a\x82\xf6\xd7\xd8\xb7\xc6\xc2\x85\x52\x85\xfe\x53\xeb\xf4\xd1\x65\x2e\xe0\x10\xa1\xc4\xb9\xbd\xed\x03\xd0\x83\x6a\x0f\xa0\xe4\xc0\x5c\x6c\x96\x62\xc3\xd3\x15\xc6\xf0\xcc\xd4\xf8\x7d\xd5\x5c\xa2\xf7\xea\x41\xc8\x5b\x9c\xb0\xaf\x62\x0e\x25\xde\x13\x7c\x8d\xb9\x8b\x9f\xf8\x80\x9f\xe9\xa3\x5d\x55\xb6\xf6\x0a\x45\xfa\xd1\xab\x0e\x3e\xc6\x02\x08\xcf\x20\x6b\xcb\xb6\x56\xab\xe4\xb3\x69\x70\x2e\x45\x2b\x87\x26\xa0\x6b\x2c\xdb\x8f\xb3\xcb\x80\x24\x42\xca\x94\x07\x21\x41\xdf\x0a\xe5\x6f\xf7\xae\xd9\x71\xd1\xe6\xe6\x5c\xf4\x84\xbf\x21\x42\x96\x54\x64\xbf\xc2\x9c\x88\x1d\x27\x28\xb2\x7c\x10\x53\xf6\x86\x88\x20\xcc\x5f\x2e\xdf\xcd\xae\xae\xef\x17\x97\xb7\x57\x6f\xae\xae\xef\x67\x17\xef\xee\x86\x6e\xbf\x53\xd4\xe9\xd4\x76\x5f\xbd\x54\xca\x59\x88\x73\xda\x79\xbe\x5c\xd4\xbd\x94\xdf\x76\x30\x25\xfb\x7b\x9f\xc4\xd9\x22\x4e\x74\x64\x8e\xbf\xdd\x42\xc8\x18\xc8\x87\x0f\x5a\xaa\xed\x4d\xd5\xdf\xc2\x7d\x83\xb9\x6f\x58\x0b\x82\xa7\xdd\xa3\x5d\xd1\xee\x73\xc0\xa8\x41\xd0\x2e\x17\x66\xf3\xc7\x73\x19\x9c\x36\xd3\xfd\x8a\x13\xa6\xb9\xe3\xde\xad\xda\x44\xfd\x9d\xb0\xbf\x89\xd6\x25\x37\xf6\xd1\x7e\x0d\x00\x7a\x1d\xa3\x42\x8c\x70\x21\x03\x72\x12\xa8\x77\x32\x73\x93\xdf\x72\x19\xf3\x42\xe5\xbb\x8e\x57\x1c\x66\x3c\xc3\x6d\x53\x35\xa1\xe1\x91\x2d\x85\x88\xed\x2c\xe0\x57\xb9\xac\x2f\x25\xe4\x49\xbe\xbf\xf9\xd3\xd5\xf5\xdd\xe2\xea\xfa\xa7\xc5\xfb\xdb\xab\xb7\xb3\xbf\x38\xdc\x60\xc6\x75\x9b\x5a\x5f\x96\x0b\x63\x5d\x2c\xed\x44\xab\x7d\x41\x09\x3d\xdb\x0e\xc9\x26\x25\xab\xb9\xb4\x96\x25\xf7\xcd\x6f\x72\x55\xae\x37\xed\x0d\xd5\x7b\xf9\xfe\xe2\xfe\x87\x83\xba\x09\xa4\x40\xa8\xb3\x85\xbb\xad\x89\x9f\x4c\x56\x64\xf7\x10\x74\x59\xeb\x1e\x50\x5b\xc1\x57\xdb\x62\xf2\x1d\x16\xed\xa0\xdb\x4b\xd3\x68\xf5\x3a\xff\x2d\x5f\xef\x5a\x40\xf7\x81\xdd\xac\x1c\x23\x80\xe7\x45\xb9\xc6\x46\x6b\xaf\x5b\xfe\x56\x39\xc1\x7e\x73\x96\x8a\xf5\x5a\xc4\xb8\xbc\xea\x0d\x53\xc4\x8a\x4c\x60\xe4\xcf\xf5\xb6\x51\x24\x41\xb5\x23\x0e\x66\x87\x8e\x1a\x6e\xc0\xdf\xbb\x9f\xb4\xdb\x8a\x4b\x2b\xda\x1c\x29\xa9\x0b\x2e\x3b\xd2\xae\x8f\x4d\x3c\xe3\x20\x53\x74\x93\x33\x57\x2a\x44\x01\x12\x1b\x60\xf7\xfb\xe0\x90\x84\x13\x09\xc7\x49\x8a\x78\x04\x82\x72\x81\xca\x74\xcb\x24\x40\xa4\xf1\xd6\x5a\xc4\xe7\x0f\x6e\xf4\x5e\x9d\x88\x09\x09\x02\xa3\xa8\xdc\x43\x50\x6d\x8c\x06\x81\x1c\x56\x27\x8c\x76\xd4\x84\xd4\x9e\xfc\x13\x0d\x3d\xde\x5a\xab\x81\x59\x6e\xb9\xc6\xdc\x04\x39\xe7\x6d\x7c\x7c\xab\xe2\x87\xfb\x96\xb3\x5c\xc5\x65\x64\xd9\x58\xa0\x59\x8f\x07\xa1\x80\x96\x3d\x60\x63\x76\x66\xa6\x99\x2e\x29\x22\x3e\x03\xa4\xf7\x5c\x76\x25\x5f\xac\x0d\xe8\x08\x73\xbd\xb7\xa7\xd6\x31\x73\xdf\x32\xfa\xdd\x5b\xd0\x0e\xf6\xb0\x8a\x4b\x66\xbf\x0e\xce\x5e\x07\x9c\x86\xe6\x65\xc9\x31\xb3\x5a\x3d\x8e\xbb\xc8\x17\x9c\x55\x1d\x87\xfa\x19\x06\x9a\xa8\x96\x52\xe0\x11\xb9\xe1\x1a\x3d\xd7\x22\xda\x54\x3b\x0e\x6f\x53\x25\x2c\xab\x77\xd7\x79\x82\xc7\x45\x08\x06\xe5\x57\x26\x78\xa7\x4e\x34\xf5\x3e\x14\x9f\x72\x4a\x7a\xe3\x16\x7e\xe8\x1c\xb9\xcb\x0b\xda\x3d\x30\x58\x29\x2f\x65\xb4\x61\x59\xca\xb1\xca\x78\xc3\x35\x2e\x69\x0b\x32\xe0\xcb\x24\x4d\x0a\x20\x48\xc1\xdc\x57\x6d\x84\xcd\x8d\x86\xe7\x0f\x96\x93\x94\x7b\x36\x9c\xbe\x45\x7f\x24\x98\xd3\x0b\xb6\x7f\x49\x38\xa7\xdf\xb2\xc1\x2f\x7a\x33\x67\x7e\x59\x12\x94\xd3\x4f\x87\xb1\x78\xb0\x2c\xfd\xbb\x8c\x9b\x59\x6a\xf1\x7d\xfd\xe7\x95\xf1\x6e\x39\xa8\xc7\x43\x19\x88\x6c\x7b\x84\x99\xaf\x53\x71\xb7\xee\xac\x55\xaa\x78\x87\x1c\xac\x6d\x1b\x99\xb5\xbb\xda\x8e\x55\xb9\xec\xe2\x72\xc5\x5e\xf5\xb7\xde\x17\xf7\xb7\xfb\xf6\x54\x71\xc1\xd0\x00\xf2\x42\x14\xc9\xb8\xd0\x46\xf0\xd2\xbc\x10\x67\xf0\xf3\xf6\xc6\xa9\xf4\x6c\xf0\x3b\x37\x16\x9a\xd7\x77\x70\x8c\xb1\x00\x32\x6b\xae\xae\x3f\x97\xdc\x98\x86\x9b\xd5\x1d\x32\x76\x1c\xb3\xc8\x8a\xa4\xb9\xc2\xda\x77\x62\xfd\xa9\xf7\xd5\xa4\x4a\xb8\x06\x06\x57\x6b\xb6\xbd\xcd\x9d\xf9\xf5\xf0\x0d\x59\xd5\x4c\xcf\xf2\x44\x01\xaf\x06\x29\xb5\xf7\x90\xde\xb5\x3e\xf7\x88\x91\xfc\x54\x8a\x52\x98\xb5\xbf\x2c\xe3\x75\x33\xb6\x39\xc2\x3b\xf3\xaf\xb4\x51\x4f\x6c\x5b\x46\x1b\x66\x1b\x67\xb1\x48\xf9\xae\xf2\x6a\xe0\x2f\x15\x2a\x05\x1a\xd9\x03\x39\x2d\xa3\x52\x17\x6a\x0b\x20\x4c\xdf\x6e\x5e\x4a\x58\xf0\x8c\x17\x45\x9e\x2c\xcb\xa2\x15\xb0\x55\xe1\xb8\x3a\x30\xa1\x75\xf7\xfe\xea\x72\xf6\x76\x56\xcb\x26\x5d\xdc\xfd\x29\xfc\xf7\xcf\x37\xb7\x7f\x7a\xfb\xee\xe6\xe7\xf0\x6f\xef\x2e\x3e\x5c\x5f\xfe\xb0\x78\xff\xee\xe2\xba\x92\x73\xba\xb8\xbf\xb8\xbb\xba\xdf\x93\x56\x6a\x3e\xb5\x7b\x22\x78\x40\xc1\x65\x61\xa1\x96\x8b\xd8\xde\x2e\xe9\xa9\xaf\xd9\x85\x25\x24\xab\x50\xe6\xd9\xd4\x20\x64\xde\x51\x99\x97\x32\x88\x6f\x78\xc1\x49\xe9\x7c\xca\x2e\x98\x55\xac\x07\x30\xb4\x36\xce\x02\xb1\x35\x99\xd9\xc1\x26\x8c\xc7\x10\xf9\x9b\x9b\x17\x5b\x53\x2b\xe2\x49\x4b\x45\x48\xcb\x6d\x2b\x7f\xe6\xf2\xea\x51\xc8\xa2\x04\xce\x60\x9e\xa6\xcc\x0a\xac\xd3\x17\x82\xaa\x66\xdb\x4b\x9d\x6c\x93\x94\xe7\x5e\x17\xeb\x86\xda\x02\x87\xdd\xf6\xd5\x91\xd8\x34\x4b\x66\xed\xe5\xe1\xc3\x8c\x41\xbf\x2f\xdf\xcd\xc0\x05\x8a\x0a\x2b\xfa\x60\x1f\x3e\x97\xc8\xc3\x45\x4f\xdc\x72\x00\xe8\x17\x8a\xe2\x69\xf8\x78\xfa\x72\xf7\x42\xd4\xc7\x6c\x62\x1b\x79\x7e\x2e\x10\x90\xeb\xa4\xfd\x8f\x2b\x59\xe4\xbb\xc1\x7e\xcd\x3d\x54\xa4\x6a\xf0\x4d\x09\xef\x53\xd5\xca\xc2\x70\x07\xb3\xad\x5f\x83\xb3\x63\xc1\x68\x14\x8d\x77\x41\x77\x01\xcc\xc4\x1d\xfe\x77\x6a\x0e\xa1\x6f\x75\x1c\x42\xd2\x10\x18\x85\xa5\x2a\x65\xac\x09\x99\xb4\x4d\xe4\xf9\x96\x7f\x7e\x65\xdf\x14\x8b\xf0\x1d\x63\x3d\x10\x2c\x89\xd4\xdc\x44\x76\xc6\xc8\xf5\x0f\xd7\x5c\xf6\x8c\xd7\x7e\x6f\xd1\x5a\x56\xb8\xf6\xf8\x3b\x2a\x62\xac\x1e\xc5\xae\x6d\xfe\x1a\xaa\x23\x88\xe3\xa2\x0d\x0f\x8d\x64\xb9\x30\x5f\x74\x00\xae\x14\x71\x79\xee\xdf\x00\xd4\xae\x28\xa3\xb5\xdb\xee\x30\xcb\x7b\xd4\xb6\x69\xcd\x2f\x3f\x83\x6c\x0c\x3d\xc9\xcc\x19\x66\x9b\x6d\xa0\x93\x80\xe9\x94\x46\x33\x93\xf5\x57\xb5\x64\x2b\xa8\xd2\x20\xe5\xe3\x5c\x40\x60\x1b\xa6\xc2\xf2\x1c\x03\x0d\x4f\x23\x85\x6d\x97\x40\x2a\x34\x84\x7b\xa5\xb9\x6e\x89\x4f\x25\x65\xec\xbe\xfb\xf5\xb8\x73\xb6\xc8\x77\xcc\x72\xea\x87\x55\x22\x54\x24\x45\x67\x2e\xf4\xab\x94\x49\x1b\x37\xd7\x6d\x29\xcd\x51\x7c\x0a\xb0\xc3\xf0\x6c\x56\xed\xa1\xf4\xcf\xbd\x85\x14\x36\x10\x9b\xe3\xf7\x9f\x8d\xcc\xf0\xa7\x1a\x87\x21\x3d\x0e\x60\xbb\xd4\x7a\x78\xa0\x2d\x79\xf4\xf0\xc4\xf3\x18\x63\x85\x80\x3e\x98\xb2\x1f\xd4\x93\x78\x14\xf9\x84\x45\x22\x2f\x38\xd1\x1b\x69\x48\xbf\xc2\x86\xa2\x76\xe6\x12\x50\xec\xc8\x15\x25\x41\x34\xba\x48\xd6\x1b\x73\x9f\x0c\x92\xe7\x2a\x37\xe6\xa8\x40\xee\xb8\x4c\x44\x44\x28\xd3\x31\x00\xab\x94\x3f\x36\xf9\x9a\x0e\xa9\x84\x67\x33\x57\x8a\x67\xb3\x53\x96\x3b\xbe\x0f\xee\x40\x03\x46\x46\x13\x29\x40\x26\x6c\xad\x52\x2e\xd7\xd3\xe9\x94\x89\x22\x9a\xbe\x1a\xb5\xd0\xa9\xc1\x30\xdf\xe5\x20\xa8\xa9\x52\x5a\xa4\x3b\x47\x82\xe2\x8a\x04\xcc\x30\x43\x8d\x88\x4e\x30\xe4\xd1\xb2\xfc\xef\xea\x15\xf5\x5f\x36\x74\xde\x7e\x53\x1d\x5d\x82\xd6\xd1\x0e\x48\xd1\x8c\x68\x09\xbf\xdf\x7e\xf3\x3a\xa8\xa4\xb2\x83\xe7\x54\xc9\xb1\x75\x82\x3f\xa9\x2e\x61\xe5\x83\xb8\xc9\x5a\x5b\x22\x22\x87\x83\x6a\xab\xba\x22\x16\xb5\x72\xb7\x23\x2a\xdd\x7a\x8a\xd6\x46\xd6\xab\xb5\xec\xbb\x96\x6d\x51\x9b\xee\xd1\xdb\x62\x3f\x3b\x7e\xeb\x0b\x8d\xac\x07\xf4\x85\xbb\x63\x5c\x27\x2c\x29\x4a\x77\x70\xe3\x72\xd5\x81\x10\x59\x8e\x83\xc8\x78\x25\xf0\x0f\x75\x2a\x3e\x73\xe0\x08\x76\x82\x44\x81\x2e\x54\xce\xd7\x82\x6d\x45\x9c\x94\xdb\x56\x63\xe3\xba\x7b\x0c\xda\x4b\xa5\xe5\xb6\x9b\xea\xec\x58\x07\xda\x77\x12\xff\xeb\x12\x1e\x37\xd8\x81\xf6\x12\xe2\x56\xa4\x84\xfa\x8b\x61\x70\x1a\x6b\x73\x52\xe6\x89\x06\x52\xbe\x43\xca\xc2\x5c\x33\xd8\x34\x64\xeb\x76\x19\x86\x5f\x2b\xb3\x7b\x66\xb3\x3b\xf4\x13\x8d\xb3\x0a\x29\xbe\xee\x43\xa1\x8e\x21\x1b\x3d\x47\x20\x81\x71\x50\x5e\x13\xdc\xc6\x80\x8c\x9a\x40\x2e\xd0\x20\x65\xe2\x0b\xc5\x56\xb6\xd0\xe8\x41\x04\xd4\x4d\x31\xd0\x54\x3f\x21\x0f\xc8\x9f\x7e\xa7\x6d\xce\x9e\x60\x15\xde\x63\x29\xfc\x43\x30\x37\xf0\xf8\x9d\x45\xd3\xe0\x1b\x62\x13\x40\xb0\x14\x73\x59\xb4\x36\xe0\xc1\x66\xd0\x16\xfe\xe4\x27\x5e\xa6\xed\x5f\xa7\xf6\xe1\xab\x28\x79\x73\xf1\xf3\x1d\xc3\xa1\x26\x42\xe3\xbc\xaf\xa3\x41\x23\xfb\xf1\x3c\x30\x5c\x8b\x03\x3c\xc1\xca\x3c\xe0\xa0\x5b\x46\x6b\x33\xec\xa2\x88\x36\xde\xf3\xa8\x6a\xd7\x92\x9e\x19\xbd\xe7\xd6\x53\x34\x23\x54\x32\xc4\x9c\x25\x6b\xa9\x42\x75\x01\x25\x05\x24\x69\x8c\x01\x52\x61\xb3\x2c\x29\xf6\x03\x7b\x46\xb2\x2a\xed\x5b\x6a\x85\x42\xc0\x06\xbd\x67\x25\xd7\x06\x57\x8a\x04\xb9\x58\x2c\x2a\x12\xef\x44\x24\x8f\x55\x27\x16\xae\x56\xb7\xcf\x65\xf5\x51\x8d\x41\xb2\xc8\x9b\x24\x17\xc8\x07\xaa\x8d\xf7\x56\x24\x8f\x66\xa3\x36\x97\xb5\x5b\xa0\x60\x01\x9a\x6b\x6f\x2e\xb1\xdb\x01\xa9\xe8\x83\xd8\xe9\x50\x8b\x8b\x56\x14\xeb\x5a\x90\x89\x79\x1f\x9a\xaf\xfd\x53\x01\x03\xb7\x08\xb4\xc5\x87\x9d\x65\xf8\xd0\x1f\xcd\x8f\x7b\x20\x7d\x8d\xc6\xcd\x1a\xf4\x95\x5c\x3e\xa6\x48\x66\xc2\x8f\x33\xcd\xa1\x47\xed\xb4\xe8\xce\xfb\xf0\x2c\x5c\x7c\xcd\xfd\x76\x2e\x89\x77\x38\x38\xe4\x8c\xc1\x69\x4e\x1b\x95\x97\x22\xdb\xe9\xae\x42\x8d\x01\xd4\x70\x96\x26\xaf\x5d\xee\xdf\x4a\x39\xce\x25\x09\xe6\x83\xe2\x3d\xc5\xf0\x5a\x1f\x78\x20\x14\x8c\x26\xb7\x13\xfe\xe5\xaf\x30\x34\x70\xc4\x8e\x86\xa2\x6e\x78\xfb\x89\x84\x19\xbe\x0b\xd9\x8a\xbc\xb2\xb8\xab\xbb\xab\xcb\xdb\xab\xfb\x2f\x06\x0f\xb3\xd8\xac\xd1\xf8\x30\xdb\xcf\x37\x57\x6f\x2f\x3e\xbc\xbb\x5f\xbc\x99\xdd\x3e\x07\x40\x8c\x3e\x3a\x00\x21\x76\x47\x74\xe6\x97\x4a\x16\xe2\xf3\x51\x67\x72\x5e\xca\x05\x1f\x51\xa9\xe0\x24\x03\xfa\xdc\x1d\x6c\xb4\x49\xc7\xee\xb8\xd2\x89\x9b\x0f\x4f\x34\xc7\xbe\xbe\xf2\x41\xc3\x55\x92\xa6\x50\xe6\xe8\xc2\xeb\x54\x14\x64\x06\x15\xec\x8f\xa5\x23\x24\x9b\x3a\x97\xcb\x0a\x1f\x3d\x84\xfc\x36\xe6\x12\x8c\x05\x8e\x99\x19\x80\x3c\x81\xf2\xb1\x3e\xc6\xf6\x75\x22\x85\xef\x06\x0a\xb0\x96\x92\x75\xd2\xec\xd2\x24\x3e\x67\x15\x2b\x39\x5e\x43\x7d\x4d\xbb\xe2\x2a\xeb\xd3\xba\x9f\xf6\x43\xf7\x86\xb8\x89\x13\x89\x8e\x69\x65\x37\xdf\xb5\x2f\xdd\x73\xbf\x05\x60\xdc\xcd\x4c\x72\xc8\x41\x80\xc6\xa9\x9f\x48\x9a\x08\xd4\x4a\xf1\xc9\x89\x87\x04\x51\x34\x6a\x55\x1b\x67\x63\x0a\xcd\x58\x27\x90\xa9\xe0\xc4\xdc\x10\xa5\xa5\x2e\x44\x4e\x61\x93\x8b\x9f\xef\xe6\x12\x85\xf0\xe9\x14\x22\x3d\x0d\x7c\x04\x62\x38\x54\xe5\xf9\xd6\x43\x09\x2d\xd8\x4b\x8c\x51\x6f\x05\x97\x1a\xf5\xa7\xd3\x54\xe4\x7e\x65\x60\x7f\x84\x88\x49\x83\x0c\xa8\x2a\xfd\xef\x49\x82\x58\xc1\xae\x35\xfd\xa5\x4f\x49\x84\xb7\xbe\x9e\xba\xaa\x68\x01\x20\xfa\x9c\x2b\xa7\xa5\x4e\x61\xe8\x2a\x22\x6c\x6d\xeb\x22\xaa\x56\x0d\x0c\x5a\x4b\xf7\xd8\xdc\x2f\x4b\xe9\x84\x4b\x69\xc0\xb9\x1e\x9e\x12\x6c\xa3\x8c\x01\x75\x52\x18\x3e\xcd\xec\xaa\xf8\x53\xc0\x3f\x99\x61\x6c\x3d\x75\x6a\x82\x6b\x47\x9c\x3a\xa8\xb0\x76\x1c\x9c\xf3\xa2\x85\x2e\xc4\x2b\xfb\xd8\xdc\x4e\xaf\x96\xdb\xf3\xd0\x72\x5d\x58\xbc\x9d\x54\x85\x2d\xb0\x77\x10\x37\xc2\xeb\x99\x2f\x38\x66\x87\xde\x3e\x12\x5b\x82\xf5\x52\x16\x47\xea\x21\xdd\x87\xb8\xc0\x4a\x11\x25\xf6\x22\x94\x54\x25\x04\xb1\x27\x38\x18\xb3\xf8\x0e\x57\xdc\xab\xae\x39\x47\x96\x77\x10\xd8\xe1\xfa\xe6\xfa\x2a\x84\x2a\xcc\xae\xef\xaf\xfe\x70\x75\x5b\x29\xbf\x7d\x77\x73\x51\x29\xa1\xbd\xbb\xbf\xad\x55\xce\x7e\x7f\x73\xf3\xee\xaa\x81\x79\xb8\xba\x9f\xfd\x58\x69\xfc\xcd\x87\xdb\x8b\xfb\xd9\x4d\xe5\x7b\xdf\xcf\xae\x2f\x6e\xff\x33\xfc\xcb\xd5\xed\xed\xcd\x6d\xed\x79\x1f\x2e\xfb\xd1\x13\x95\xd7\x68\x0f\xff\xf8\xe4\x6c\xc0\x1b\xd8\xba\x8d\xab\x8a\x84\x47\xec\xe2\x81\x20\xac\x7d\xcb\xd1\x56\xd7\xc6\x21\x9d\x38\x6e\x0c\xd3\xd5\x51\xab\xee\xf4\x12\x8a\x95\xa1\xcb\xf8\x71\x66\xcf\x9c\x6a\x8b\x53\x80\xe2\x7a\x1d\x40\xf7\x94\x5a\xe0\x56\x17\x50\x82\x84\x43\x9b\x41\x06\x6b\xcd\x3b\xe5\x4d\x64\xfc\xec\x3d\xb5\xcf\xd8\xd7\x4f\xcf\x53\xb3\x87\xee\xe3\x54\xe4\x05\x7d\x9d\x0e\x1e\x66\x6b\x83\x93\xd8\x3a\x0a\xf6\xc3\xe0\xe0\x86\xd7\x30\x2b\x27\x58\x8e\x5d\x5a\x77\xed\x35\x0e\xfd\xd4\x52\x63\xfb\x4f\x0f\x69\xf6\xbd\xc6\xac\x30\xa2\xdf\xc0\x07\x33\xa6\xdf\xf7\x5c\x3f\x8c\xed\x37\x3d\xa4\xd9\x6f\x70\xfb\x0e\xea\x37\x04\xbc\x8b\x76\xd6\x8b\x11\x46\x2c\x6c\xa6\xda\x3d\x57\x92\xeb\xbe\x12\x48\x4a\x0e\xeb\xa3\xd9\x00\xcf\x7b\xbd\xcc\xf8\xf0\x44\x06\xf4\xc6\x6d\x57\x5e\xa3\x4c\xbe\x83\x4f\xe1\x0d\x97\xb9\xe0\x0f\xb1\x7a\xa2\xf9\xa8\x23\x43\xd9\x20\x6b\x5e\x1d\x20\x63\xc3\xed\x11\x01\x42\xd4\xe6\x91\x88\x52\xf3\xcd\x03\x4c\x2e\x21\xd2\x5f\xf4\xc1\x02\x2d\xc4\x3a\x6f\x08\x30\xb5\x48\x3f\x3b\x73\x89\xde\x7c\x9b\x9e\xa2\x99\x55\xd3\x23\xaa\xf4\x87\x57\x75\x3e\x34\x26\xd7\x75\x30\xb1\x54\xcb\x50\xe6\x00\xa6\x5b\xe6\x70\x67\x82\x01\x49\x24\x04\x93\x73\x73\xe1\xc9\x45\x94\x68\x11\x28\xde\xb4\x9e\xd8\x9f\x8e\xe3\xc7\x2f\x78\xd1\x1a\x76\x1d\x1c\x0f\xe7\x51\x51\xf2\x94\x7d\x2a\x45\xbe\x23\x7a\x31\x8c\x55\xe2\x5f\x22\x2e\xb1\x68\xa2\x10\xdb\x0c\x8a\x70\x43\xb4\xff\x5c\xfe\x0c\x40\x09\x9c\x82\x17\x9a\xfd\x01\x20\x0f\xf6\xcb\x74\x08\x6f\x79\x01\x67\xf1\x9f\xf1\x19\xee\xb3\xe9\x5c\x56\x14\x24\x82\x5f\x55\xc4\x24\xa6\x73\x69\x29\xdc\x63\x15\xe9\x29\xdc\xf8\xa6\x2a\x5f\x9f\x93\xbc\xa8\x59\xec\xea\x61\xa9\xd4\xc3\xb9\x90\xe7\x10\x93\x2a\xce\x79\x59\xa8\x73\x80\x4b\xe1\xfc\xeb\x73\xab\x42\x68\x65\x1c\xf5\xf9\x26\x79\x14\xf0\xff\xa6\x9b\x62\x9b\xfe\x9b\xce\x36\x9f\xcf\xd6\x69\x7e\x66\x7e\x7b\x16\xfe\xf6\xcc\xfe\xf6\xcc\xfe\xf6\xcc\xfc\x0c\xff\x5f\xb6\xc3\xf4\x8e\xf8\xcc\xcd\x59\x36\x99\xcb\x44\x6a\x91\x17\xe0\xfd\x3c\xe5\x49\xe1\xa5\x3a\x76\xec\xc5\xff\xfc\x0f\x9b\xe6\xfc\x09\xcb\xe7\xde\xf0\x82\xbf\xc7\xf8\xe2\x3f\xfe\xf1\x02\x12\xaa\x58\xdf\x92\xf1\xfc\x53\x29\x8a\xb9\xd4\xc2\x6c\x42\xf6\xff\xcd\x25\x64\x60\xb7\xbb\x45\x81\x71\x57\x8c\x41\xc6\x9a\xfd\x07\xb6\x39\x43\xaa\xbd\x58\x9b\x96\x3a\x90\xf5\x09\x4f\x5b\x84\x6b\x3b\x42\xf4\x9f\xd2\x37\xf4\xfd\x11\xdb\xfa\x53\x5a\xdd\xd5\x56\x2c\x42\x7f\x4a\xe1\x00\x4d\x15\xb7\x60\x2d\xe6\x16\x2f\xdc\x93\xa9\x73\x6d\x7b\xa4\x01\x0d\x78\xd6\x34\x7d\xfb\x5e\xb9\x43\xba\x5f\x1b\xb9\x6f\x98\x11\xc8\x15\xf8\x3c\x04\x64\xcf\x13\xb3\x43\xee\x30\x12\x0a\x9e\x1b\xbe\x39\xf8\xa4\x94\x3a\x77\xed\x61\xe0\x42\xff\xf6\xf5\xf9\xf9\x84\xad\x35\xfc\xcf\xf2\x13\xfc\x0f\xa0\x87\x4e\xc5\x58\xd9\x18\x4c\x07\x84\x6b\xce\xf2\xfe\x99\x38\x05\x8a\xee\x4b\x90\x24\xd7\x96\xe9\xf7\xa5\x8c\x53\xe1\xab\x01\x2b\x29\x91\x54\x59\xe1\x6c\x0c\x8c\xd5\xe5\x28\x60\x8e\x97\x22\xe2\xc6\xf0\x35\x9e\x8d\xe0\x52\xb5\x2a\x84\xc4\x68\x58\xee\xd5\xaa\x38\x46\xae\xc0\x2d\x06\x28\x24\x2f\x08\x72\x2e\xe0\x8f\xf0\x10\x60\x1d\x9e\xd4\x3f\x62\x3b\x55\x12\x81\x2e\xd0\x42\xc6\x22\x4a\x81\xa5\xdc\x92\x7d\xb0\x5c\x14\x65\x2e\x19\x67\x19\x97\x31\xd7\xb0\x02\x57\x39\x64\x3b\x73\xc6\x9b\x1d\x9d\x20\x1c\x57\x95\x05\x50\xd8\x20\xb2\x20\x1c\x09\x64\x38\x0e\xfa\x3c\x09\x3a\x81\x67\x02\x10\xad\x36\x7e\x38\x9d\x4b\xab\xa7\x44\x58\x38\x8c\x94\x45\x2a\xdb\x11\x41\x49\x7d\xd0\x13\x1b\x39\xa3\xe1\x9e\x78\xbc\x49\xfd\xbb\x13\x96\x54\x53\x6b\x40\xa6\x5c\x04\x8a\xb0\x56\xb5\xf6\xa5\x90\x91\x8a\x45\xae\x5f\x99\x6d\x98\xb8\x7b\x07\xfa\x0f\x89\xf6\x93\x01\x56\xca\x1c\x6e\x14\x2d\x34\xcd\x3b\xd5\x11\x33\x3a\x15\xfa\xdd\x36\x3f\x67\xff\x56\xf9\xd6\x51\x30\x6d\xfd\xa5\xff\xfc\xa2\x88\x98\x10\xd7\x69\xef\x9c\x87\x87\x20\x70\xcb\x86\x16\x17\x1b\x45\x1f\x87\x9c\x13\x2b\xbf\x99\x14\xa0\xf0\x95\x0b\x5d\xcc\x25\x9d\xc0\x13\xb6\x12\xdc\xf8\x79\x13\x16\xe9\x47\x34\xc6\x78\xdc\x17\x4f\xca\x63\x70\xac\x76\x03\x80\x61\x2b\x8d\xfb\x20\x31\x7e\x0d\x10\x05\x3c\x2a\x10\x60\xd0\x75\x43\x77\xae\x0a\x0c\x56\xab\x41\x3c\x60\x1c\xac\x14\x40\x5d\x76\x27\x54\xa2\x80\x91\xd8\x61\xa2\x98\xd5\xfb\x81\x1f\x18\xc3\x83\x6f\x87\x30\x90\xc0\x38\x82\xc7\x4d\x58\x5a\xdc\x67\x3e\x87\x1b\xf2\x31\x43\x6c\xa6\x6b\x53\xf5\x0c\x04\x74\xe0\xb0\xb8\x85\xf9\xe9\xde\x80\x95\x16\xb9\xd5\x29\xc0\x77\x45\x3e\xb8\x4d\x92\xc7\x67\x19\xcf\x8b\x9d\x5d\xbe\x69\xb2\x04\x7a\xf3\x34\x79\x10\xec\x22\xcf\xd5\xd3\xa9\x47\xa1\xd3\xb4\x74\xdd\xb0\x8f\x41\xb2\x8f\xbd\xe5\xb7\xb2\x41\xd6\xc3\x1d\x87\x31\x4f\x76\x05\x3e\x5a\x9f\x93\x8b\x22\xdf\x2d\xcc\x42\xdc\x66\x9d\x96\x62\x50\xd1\xc4\x70\x27\x77\x1c\xa9\x65\x2d\x84\xd1\x49\x6a\x59\x99\xd5\x6f\x87\xd4\xb2\x85\xaf\xb2\x49\x6a\x39\xbb\x9e\xdd\xcf\x2e\xde\xcd\xfe\x6f\xad\xc5\x9f\x2f\x66\xf7\xb3\xeb\x3f\x2c\xde\xde\xdc\x2e\x6e\xaf\xee\x6e\x3e\xdc\x5e\x5e\xf5\xb3\xd4\x34\x7b\xef\x5d\xf0\x33\x16\x3e\xe7\x35\xbb\x0f\x80\x1a\x58\x6c\x40\xfe\x37\xe9\xfb\xc1\xaa\x32\x9b\x39\x91\xeb\x09\x6c\xd4\xd7\xec\x2a\xcf\x67\x5b\xbe\x16\xef\xcb\x34\x05\x38\x15\x56\xf6\x5c\xe6\x02\x2e\x9e\x13\xf6\x5e\xc5\xb3\xe0\x77\x50\x8e\xd8\xfa\x1a\xf0\x7c\x1e\xc7\xb9\xd0\x1a\x1f\x3f\xa1\xe7\x07\xe0\x21\x57\xea\x48\xe0\x39\xfe\xc8\x93\xd4\xdc\xdf\x5e\x83\xc6\xbe\x5a\xad\xb0\x7c\x66\xe2\x0a\xa7\xd8\xa7\x52\x15\x9c\x89\xcf\x11\x30\x33\xb5\xaf\x93\x77\x6a\xfd\x15\xa0\xca\x03\xd2\x53\x1d\x97\x14\xd0\x71\x5a\xb4\x1f\xe7\xed\x86\x80\xde\xf2\x47\xfc\xe9\x5b\xfc\x65\x7b\x80\xb2\x48\x4f\x50\x29\xfe\x4e\xad\xdb\x55\x35\xc0\xbb\x26\x29\x10\x4a\x24\x44\xc4\x3b\xa1\xd6\x4c\x27\xf2\x61\x2e\x7f\xde\x08\xc9\x54\x99\xe3\x9f\xe0\x9a\x6f\xdc\xcc\xb4\xd4\x1b\x01\x32\x9b\x13\xf6\x24\xd8\x96\xef\xd0\x6d\x86\x3b\x81\x93\x02\x80\x25\x03\xa7\x88\xf9\x75\x9a\x48\x63\x2d\xb2\xc4\xd6\x25\xd4\xa7\xfe\x14\x37\x2e\xcb\x4b\xc6\x8f\xa7\x0d\xed\x3b\x4f\x2b\xf8\x3c\x08\x95\x79\xdc\xa4\x05\x08\x91\xe5\x06\xa5\x41\xa5\x1e\xca\xcc\x33\x18\xbe\xb0\xc9\x49\x18\xee\x47\x95\xc4\x2c\x2e\xb3\x34\x89\x9c\xdd\x7d\x52\x79\x27\x4d\x2b\x16\xd0\x0c\x3f\x75\xea\x65\x61\x7d\x2f\xd6\x52\x9d\x13\x20\xe9\x7a\x08\x5b\x9f\x99\xb2\x96\x25\x32\x4a\x4b\xd0\x50\x2a\xb5\xc8\xcf\x8a\x3c\x59\xaf\xc1\x01\xb7\xb5\x7e\xdf\x3e\xa7\xad\xe7\xcc\x3b\xbe\xac\x2d\x2c\x3a\x4f\xd5\x3a\x89\x78\x1a\x82\x9b\x3d\x2a\xc2\x91\x66\xda\x6d\x4f\x0a\x93\x50\x07\x61\x3b\xd4\x49\x06\x94\xe5\x02\x78\x5b\x17\x60\xca\x17\x64\xee\x8e\xe9\xf7\x8a\x99\x0b\x3a\xf6\x2b\xa4\xb4\xb4\xe9\x05\x7b\xc2\xf9\x67\x5b\x99\x21\x14\xd6\x07\x09\x62\xa6\x9e\xa4\xc8\xc1\x83\x05\xd8\x87\x79\x53\xa9\xc0\x37\x71\xd2\x43\x0e\x9f\x6c\xa5\xb7\x56\x0e\x88\x8d\x95\xb3\xeb\xe4\x51\xc8\x2f\xcf\x41\x1c\x3c\x20\xe2\xd1\x46\x2c\xac\x5f\x7e\x6a\x93\xe5\x0e\x80\x91\xc6\xca\x6a\x00\x84\xa6\xd4\xa5\x37\xe1\xea\x84\x3d\x6e\xda\x2e\x4c\x24\xf6\x54\x64\x99\x4e\x2c\x62\x11\x3d\x7c\x71\xd3\xec\x41\x56\xb6\x23\x8c\xb3\x37\x22\x7a\x60\x1f\x6e\x67\x58\x0d\x9c\x14\xcc\x98\x02\xbd\xf1\x9a\x26\x9d\x77\xb7\x82\xaf\x9f\x81\xdc\x68\xa8\x28\x8b\x67\x16\x77\x52\x54\xa6\x43\x04\x88\x82\x7a\x49\x63\x24\xa9\x96\x06\x80\x60\xbc\xb0\x52\x1d\x10\x88\x67\x7a\x0b\xca\x1c\x65\x11\xc8\x59\xa5\x7c\x29\x52\xdd\xfe\xc2\x99\x8a\x17\x36\x4f\x72\x2c\x98\xa7\xd1\x96\x8d\x63\x50\xd6\xd1\xd6\x31\x70\xe3\xb1\xde\xd3\x17\xd9\xc3\xef\x74\x40\xaf\xa1\x42\xba\x5f\xb8\xd7\x73\x2d\x6a\xfa\xee\xc9\x8a\xf4\x43\xb0\xa0\x1f\x94\xb2\x8d\xbd\x34\x2d\xbd\x57\x31\xc1\xf4\x1c\x9f\x97\xf1\x82\x04\x45\x4f\x3c\xae\x22\xec\x82\x53\x13\xd7\x10\x1b\xd0\x85\xe0\x31\x53\x2b\x8a\x26\x66\x59\x9a\x00\x91\x6b\x8c\x9c\xd1\xc0\x9e\xa1\xab\xe8\xf8\xb0\x35\xdb\xd9\x80\xe4\xe3\xbd\x05\xe2\xf5\xe6\x1b\x7d\x92\xcb\xbc\x57\x35\xc8\x5d\xf7\xa9\x8e\x55\xca\x72\xf5\x48\x87\x5e\xa1\xfb\xa3\x69\xeb\x54\x2d\x61\xa0\xba\x41\x71\x3d\x06\xda\x58\xa7\x3c\x89\xc7\x1c\xef\x76\x4c\x6e\xdc\x4f\xfb\x3a\x78\x63\x23\x1d\xee\x49\x76\x9a\x19\xd1\x6c\x87\x19\xfc\x5a\x19\xfb\xbe\xbb\x36\x24\x08\xb5\xcb\x10\x3a\x6f\xdc\x92\xcc\xc3\xae\x70\xe6\xb8\xe3\x5a\x5d\x7d\x97\xa3\x26\xba\x49\x8c\xb2\x67\x2c\x3d\x97\x4a\xff\x24\x1f\xc1\x6e\x81\x3b\xd7\x51\x5c\x8c\x61\x0a\xb6\x53\x87\x18\x5f\x33\x9e\x7e\x12\x2b\xc5\x17\x83\x66\xb4\x3e\xee\x76\x17\x1f\x33\xe4\xcf\xb1\xa3\xca\x42\xf9\x90\x3f\xbc\xcf\x0c\xf8\x33\xc3\xb2\x2e\x30\x1b\xb3\xb8\x03\x2e\x60\x7d\x30\xbb\x35\x47\x80\x50\x47\xc1\x60\xb3\x5c\xd8\xe4\xd1\x4e\x14\xae\xb8\x3f\xb5\xca\x49\x90\x1b\x71\x6f\x5d\x65\x37\xb1\x04\x06\x8e\x91\x0a\x32\x19\xe4\xef\x45\x6a\x9b\x29\x09\xd8\x14\x2c\x55\x9a\x4b\x6a\xdc\xea\xdf\xba\xf4\x4a\xa5\xde\x6d\x42\x51\x2d\xac\x9e\x10\x5a\xa5\x8f\x94\x47\x0b\x88\xe7\x41\x39\xcb\x74\xf0\xd2\x5c\x10\xcc\x75\x18\x12\xbc\x64\xde\x01\x0e\x5e\x13\x81\xcd\xc5\x3a\xd1\x85\x08\x4b\x04\xc3\xdf\x9f\x4c\xaf\xaf\x72\x83\xee\x1b\xfa\x4e\xbd\xbe\x7d\xae\xb0\xd9\xb5\x23\xfa\xb3\xcb\x44\x3c\x73\xbf\xeb\x5f\x0c\xb5\x2a\x6e\x6f\x24\x2a\xa7\x00\xae\x01\xbc\x02\x68\xe4\x7b\xd2\x8e\x32\xde\x4d\x12\x31\xf1\x70\x8f\x6a\x33\x53\xb4\x2e\x79\xce\x65\x21\x84\x9e\x4b\xca\x3e\x22\x6f\x59\x48\xcd\x51\x43\xc3\x39\x07\x37\x52\xba\x40\x1a\x20\xf8\xc9\x8a\x27\x69\x99\x77\xde\x39\x71\x55\x1e\xc4\x3d\xd0\x37\x4a\x97\xd0\x2c\x6b\x9b\x34\x57\xc5\x1a\xec\x22\x47\x9d\x51\xcf\x1d\x56\x8b\x3c\x3b\x5e\xc1\x9a\xdc\xe1\xf3\xed\x02\x8e\x1d\x85\xad\xbf\xd3\x8b\x4c\x8d\xb0\x78\x7f\xfa\x9d\x7e\xaf\x3a\x4a\x82\xf5\xa7\x46\x60\xac\x27\x87\xfe\xa9\x8b\x44\x9f\xeb\x07\x48\x3f\xed\xbb\x8f\xef\x0f\xb2\xff\xf6\x37\xfb\x93\x54\x9d\xb6\x0b\x56\xed\x86\xcb\x38\x35\xf7\x54\x5e\xd4\x4e\x20\x0f\xf6\x35\x7e\x71\x61\x8d\x63\x77\x65\x17\x14\x4a\x2c\xa2\x46\x95\xdd\xbe\x71\xaa\x95\xe7\xf5\x02\xea\x6a\x4f\xa9\x16\xcd\xb5\x15\x6b\xf8\x93\x9d\x84\x1e\xdd\x86\xed\x5e\x82\xab\x64\xfd\x0d\x5c\xb2\x7e\x6c\x5a\xca\x88\xb6\x22\x9d\x5f\x0e\xf9\x7d\xe4\x66\x84\x22\x1b\x63\xcc\x42\x9e\xde\xb9\x24\x1d\x58\xcc\xbc\x42\xca\x0d\xb9\xa8\x34\xfb\xce\x55\x5e\x7e\xf7\xef\x96\x89\x68\xc7\x56\x30\xd6\x40\xf7\xa5\xa2\xa8\xcc\x21\x2d\x4a\xa1\x1b\x26\xf0\x6c\x1a\x43\xa7\x7e\x81\x27\xb2\x03\xb3\xa0\xfb\xd4\xe6\x3d\xb8\x58\x5d\xe5\xa5\xee\x21\x44\x83\x8a\xb6\xee\x2c\x24\xe9\x95\x5c\x17\x4c\x17\x22\x6b\xb5\x4a\x15\xa7\xab\x2a\xda\x7c\x84\xdb\xe5\x25\xa3\x07\xfa\xba\x23\x6c\xf4\x45\x70\x9d\xfe\xe3\xdd\xcd\x35\xcb\xf8\x0e\x70\x61\x85\x22\xb5\x6d\x20\x63\xac\xef\xdf\x7d\x33\x50\x7d\xf9\xea\x66\xc3\x31\xb5\x00\xd3\xf6\xd8\x2d\x77\x6a\xfa\x35\x3b\x04\x6b\x86\x96\xa4\xd9\xca\xb9\x4a\xcf\xb2\x94\xcb\x00\xfa\xab\xa7\xac\xf6\xf8\x30\xd7\xeb\xb2\x3e\x84\xa6\x81\x0e\x40\x38\x85\xd6\x42\x5e\xb6\x82\x43\xab\x3a\xd4\x47\xa5\x77\x3b\x6d\x44\x2f\xe8\xed\x47\xa4\xd3\xe7\x91\xd9\x26\xc8\x2c\x60\x53\xd6\x0e\xf5\xc0\x35\x00\x12\x47\x4c\x54\xbf\x68\xf6\x5c\x5a\x4d\x54\xf5\xa4\x59\x8c\xdc\x0b\x65\xa2\x37\x10\x9f\xc4\x84\x00\x80\x83\xc8\xbe\x20\x72\x21\xe7\x52\x9b\x09\x85\x98\xa6\x78\x14\x14\xd8\xa8\x24\xe3\x66\x6f\xde\xb9\xfc\x3e\x4e\x12\x09\x71\x75\x0c\x7d\xe0\x98\x1d\x73\x81\x69\x55\x71\xde\xcf\x71\xff\x23\xcf\xfa\xaa\xc6\x8e\x6e\x71\xdf\x2c\x39\xe6\x99\xba\xd7\x09\xfa\xb2\xa0\xcd\x53\x29\x1d\x0b\x47\xef\x83\x3c\xd2\xfc\xb4\x92\x5e\xef\xe7\xd7\x1f\x7c\x09\x1b\x56\x09\x38\xc2\xf6\x04\x24\x70\x0e\x5b\xe3\xfc\x65\xb3\xcb\x41\xf9\x04\xd8\xab\x30\x92\x36\x65\x77\x42\xb0\x8f\x30\x52\xe6\x61\x1f\x49\x59\x0b\xe0\x82\x05\x4f\x5a\x85\x4f\xe0\xdb\x33\xb9\x52\xc7\x19\x83\x7c\xdd\x80\xa3\x1d\x35\x2a\xed\xfd\x3c\x16\xf0\x06\xa5\x8c\xf2\x79\xeb\xef\x5b\xdf\x6b\x0f\xbc\xed\xbd\xbf\x93\x53\x55\x9e\xed\xa9\x39\x9f\x61\x8a\x0f\x13\xfe\xaf\x2c\x12\xf3\x96\x13\x64\x2d\x7e\x90\xea\x49\xa2\x2f\x40\x4f\x62\x2f\xcd\xfe\x83\x03\x0c\x03\xa8\xe8\x16\x94\x68\x0d\x5f\x01\x8d\xf2\x85\xfb\x37\xbb\xc3\x5c\x11\xf6\x19\x74\x42\x34\x38\x3f\xa4\xf0\x01\xd6\xfc\xe5\xc5\x84\x7d\x3f\x61\x97\x13\x36\x9d\x4e\x5f\x4d\x98\xe0\xd1\xc6\xf6\x08\x7f\x82\xc8\xb1\x82\xaf\x4d\xdb\xa4\x9c\xb0\x0a\x1e\x00\xb2\x37\xe6\xb0\xb2\x6c\x61\xdc\x7f\x2b\x88\x3c\xd8\x57\xc0\x1a\x46\x2a\xb8\xa0\xbc\x7a\xb4\x51\x89\xef\x14\x40\x34\x45\xa4\x72\x0b\xf2\xd4\x85\xca\x2d\x60\xed\x91\xe7\x3c\x91\x50\xda\xcd\x9b\x70\x5d\x7a\x72\x40\xee\x2c\x3e\xf3\x2d\xbc\x7f\x22\x1d\xbf\xa5\x19\xa6\x7b\xd7\xff\x62\x97\x51\x40\xfa\x29\x4f\x8a\xc2\x9c\xce\x7a\x2e\xef\xd8\xeb\xff\x60\x17\x59\x96\x0a\x76\xc1\xfe\xce\xbe\xe7\x92\x4b\xce\xbe\x67\x7f\x67\x97\x5c\x16\x3c\x55\x65\x26\xd8\x25\xfb\xbb\x19\x36\xd3\xde\xb5\x32\xc7\xe1\x6e\xc2\x38\x93\x65\x8a\xa7\xfe\x4b\x0b\x06\x7b\xe5\xde\x8b\xfb\xd9\x59\x8a\xe2\x49\x08\xc9\xb4\xda\xd2\x51\xf8\x17\x97\x93\xd0\x89\x5c\xa7\xa2\xa0\xf5\x50\x85\xed\xe1\x03\xce\xe0\x4d\x5f\xcf\xa5\x8b\xe5\xfd\xc5\xf4\xf8\x2f\xec\xef\xec\xba\x4c\x53\xd3\x25\x63\x68\xcc\x42\x7a\xcd\x6c\x19\x85\x90\xd3\xa7\xe4\x21\xc9\x44\x9c\x70\x28\xa4\x30\xff\x3a\xbf\x87\xd9\x5e\x94\x9e\x33\x2f\xdc\xd3\x4e\x7b\xe5\x18\xd3\xf3\x2c\x45\xd9\x4e\x82\xc7\x4e\x7e\xcf\xcd\xaf\xfa\xd3\xf1\x1e\x91\x67\x0a\xa5\xfd\x40\x0e\x2b\xea\xe6\x84\x52\x3f\x07\x99\x80\xda\x61\x6b\xdb\x6a\x39\x0a\xc2\x43\xfd\x58\x23\x0b\xca\x51\x27\xbf\x43\x0e\x90\xf1\x19\x6a\x72\x1b\x22\x24\x95\x32\x77\xf0\x25\x3d\xd5\xcf\xa0\xac\x90\x13\x1f\xf9\xa9\x2a\x9d\x55\x19\x62\x95\x0c\xd2\x18\xab\x75\xf6\x03\xc5\x2e\xb0\x40\xcd\x6c\xd3\x24\x3d\x37\x5b\xf5\xfc\x5a\x49\x73\x6d\xd5\xc9\x1a\xe9\x89\x00\x46\xa4\x81\x90\xd5\x3a\x05\xf7\x55\x97\x35\xd8\x02\xe0\x1f\x98\x2e\x21\xb4\xad\x30\x56\xc0\x4c\x41\xba\x9b\x4b\xf3\x0b\x3a\x91\x00\xe6\x9e\x38\x16\x5b\x7c\x9a\x55\x33\xa7\x67\x91\x41\x0e\x1a\x6f\x59\x60\x7d\x35\xb4\x47\x2c\x38\x2a\xd9\x3a\x22\x2a\x7e\x1d\x30\xb8\x51\x6b\x96\xde\x03\xf3\x9e\x4b\x91\x2a\xb9\x36\xab\xa2\xcb\x08\xa8\x2d\x4f\x8e\x01\x96\x84\x5d\xc0\xc6\x3a\x7b\x60\x0e\x4b\xfa\x0a\x4d\x89\x39\x27\x93\xd8\xdf\xef\x75\xb9\x34\x7e\x84\x8b\xc8\xba\xd3\x90\x5e\xae\xab\xa0\xf8\xb8\xfc\xf2\x07\x2d\x72\xa0\x59\x46\x84\x83\x8b\xf6\xe3\xc1\xe9\xc9\x36\xf0\x8d\x86\x6d\xaa\x5e\x60\x6c\x7b\x28\x84\xb2\x09\x8d\xd2\xea\x01\xeb\xf1\x6b\x62\x64\x9f\x53\x0e\xbe\x55\xfb\x1d\xbe\x67\x5a\xa3\x3f\x8d\xd5\x77\xb7\xa3\x77\x0a\xf8\xe0\x27\x94\x7b\x59\xa8\x95\xad\xa4\x1c\x7e\xa6\x37\x04\x77\x86\xa1\x54\x42\x92\xed\x50\x98\xa6\xb9\x70\x3a\xeb\xc1\xe5\x82\x32\x12\xc3\x3a\x5b\x1f\xb0\x1b\xf9\x16\x7f\xfe\x5e\xa5\x49\xd4\x0f\x7a\xb3\xc7\xd5\x46\x3d\xb5\xa0\x88\x96\x02\x50\xa0\x14\xff\xa1\x4e\xa1\x87\x5e\x88\xa8\xf0\x19\xb7\xe6\xcb\xfd\xaf\x06\xda\xec\xbf\x83\x63\x44\xd9\x0d\x1b\x88\x3e\xba\x1c\x1e\x9c\xad\x40\xb0\x09\xbc\xf2\x18\x6b\x85\x5a\x3a\xc8\x6d\x47\x9c\x42\xd0\x95\x91\x07\x03\xfd\xb4\x51\xa9\xb9\x8b\xc9\x98\xc8\x4a\xe7\x32\x13\x79\xa4\x00\xa0\x82\x75\xf0\x8a\x45\x9b\x24\x8d\xbd\x78\xcb\x4b\x40\xf4\x02\xee\xee\x15\x29\xd4\x09\x97\x63\xb6\xcd\xf7\x9c\xba\x76\xd9\x59\x95\xea\xe3\x22\x50\xa7\x83\xe8\xf5\x2d\xfb\x9f\x09\x4a\x86\x43\x41\xf4\x42\xb5\x6c\xa1\x19\xf4\x4a\x7f\x46\x45\x78\x41\x47\x7a\x65\x75\x30\xed\xc5\xa9\xa8\xcd\x2b\x2d\xb3\xfa\x50\x02\xe9\x2c\xa2\xa8\x10\x40\xa2\x05\x74\x67\x2b\x38\xfa\x62\x9e\x02\x92\x26\x75\x2e\x7d\x7e\xf4\x85\x0e\xfd\xb2\xd6\x79\x46\x4e\x55\x0b\x02\x9c\xb0\x17\x95\x17\x7d\x01\xa4\xa4\x52\xc1\xf3\x28\x87\x55\x19\x1a\x58\xae\x13\x96\x14\x73\x99\x68\x5c\x99\xb9\x48\xc5\xa3\xe9\x5d\x18\x2c\x26\xac\x8b\xbd\x3b\xdb\xd7\x06\x1c\x39\xb7\xe5\xc7\x4e\xdc\x1c\x36\x61\x1e\x92\x5b\x72\x08\x4c\xc7\x42\x1b\xbf\x11\x64\x39\xc4\x67\xb3\x01\x12\xc8\x85\x20\xfc\x23\x16\xd2\xf6\x0f\x50\x21\xa8\x9f\x3a\x97\xb3\x15\xd4\x80\x42\xe5\x69\x1c\xe3\x2d\xd4\x0a\x35\x38\xa6\xb1\x84\x82\xc3\x8a\xee\xe4\x76\x22\x48\x60\x11\x77\x92\x78\x14\xf9\xae\x80\xa0\x2e\x8c\xab\x14\xbc\xd8\xb0\xa4\x98\x00\x45\x9c\xb5\x94\x73\xc9\x63\xd2\xa7\xa6\xe6\xcc\xd0\xc0\xba\xef\x99\x67\xfa\x7c\xa9\x1e\xfb\x1c\xdb\x63\x51\x5f\xb8\xab\xb3\x94\xcb\x05\x9e\x20\x5f\x01\xf7\x15\x68\x5f\x76\xa5\x3a\xcb\xe5\xc2\xd1\xda\x9c\xa4\x9f\xce\xde\xdf\x56\x14\x69\x8d\x1f\x6b\x1f\x34\xc1\xc5\xe0\x69\xad\xed\xf5\xc4\xc5\x69\x08\x5d\x90\x33\x9b\x81\x1d\x6e\x05\x3c\x24\x8c\xd7\x90\x08\x76\xb5\xee\xc3\x84\xd9\x15\xf0\xad\xe2\x93\x86\xcc\x7c\xed\x0c\xa9\x4f\xfb\x78\x68\x4c\xc3\x43\x3c\x08\x1e\xb3\xa7\x5b\xcf\x0b\x91\xe9\x8c\xa3\x34\xa1\x32\xf6\x6d\x83\x74\x1f\x16\x4f\x08\x8c\xc3\xb9\x30\x4f\xbb\xb6\x69\x78\x0f\x53\x2d\xd8\xca\x53\xc6\xa8\xc1\x4e\x0d\x8d\x94\xf8\xda\x6b\xe8\xd7\x94\xcd\x24\xb3\xee\xde\x84\xbd\xc0\x85\xa5\x5f\x50\x08\x92\x04\x72\x29\x77\x1e\xd3\xee\xa1\x6a\xd5\x3a\x14\x03\x6b\x06\xfc\x76\xc3\x4c\x50\x2f\xb5\xe1\xb3\x8e\xcb\xf7\x09\xd4\x2c\x1c\x52\x96\x8e\x59\xc4\x25\x36\x40\x87\x24\x5e\xbb\x77\xe8\xb4\x2b\x1f\xcd\xf6\x2f\x6c\xf3\x5d\xec\x7b\xfb\x43\x33\x44\x59\x49\xe7\xa9\xfd\x9c\xa9\x7c\x2e\x6d\x6b\x14\x92\xd4\xa8\xa5\x54\x6f\x2a\x80\x50\x93\xcf\x1f\xac\x54\x00\x31\x58\xf9\x2c\x50\x65\xf3\xfc\xab\x75\x2b\x00\xa0\x88\xa5\xf0\xd2\xde\x53\x76\xe1\x9f\x66\x1c\x0f\xb3\xc0\xb7\x78\xcc\xd7\x39\x1a\xd3\xd4\x0c\x4a\x52\x58\x4a\xc8\xa0\xbc\x41\x97\x40\x6c\xba\x2a\x8d\x31\x0a\xd8\x5f\xe7\xd2\x0c\x1e\x5b\x25\x80\xfb\xa5\x71\x99\xcb\x1f\x95\xb6\xd5\xf4\xda\x8f\x87\xc5\x90\xd2\xb0\xbd\x70\x2a\x62\xf4\x87\x37\x70\x68\x53\xcc\xbf\x26\x2b\x0f\x75\x2d\x44\x89\xb1\x53\x65\xee\x5f\x2a\xe2\x72\x2e\xff\x6a\x86\x07\x45\x9d\x9d\x22\xba\x5a\xe1\x16\xb6\x32\xfc\xec\xe5\x47\x6c\xf4\xe5\xbf\xbf\xfa\xf8\x0a\x71\xe8\xa5\x06\xe1\xc6\x49\xf5\x00\x71\x44\xe0\x65\x9a\x42\x26\xda\xbe\x81\x23\xa3\xf0\x8f\xe0\x7d\xb0\x1c\xba\xd4\x2d\x64\xd5\xc5\x18\xb2\xd1\xfb\x56\xb0\x0f\x3e\x5f\xb0\x88\x17\xd1\xe6\xcc\xfa\x72\x64\xc6\xec\xe9\x47\xd3\x87\x0a\x6e\xc6\xd3\x6a\xe7\xc2\x36\x17\xce\x7c\xeb\xd8\xf9\x2a\xeb\xc5\xbc\x02\x00\x6b\xee\xeb\xc2\x30\x8e\x3c\x14\x17\xa7\xd7\x24\xf7\x7e\x9e\xfb\xba\x95\x65\xf3\x37\x4e\x8a\x92\x4b\xbe\x15\x31\x7b\x01\x15\x53\x2f\xec\xe4\xcf\x65\xb6\x9c\xa6\xbb\x55\x41\x14\x4f\x66\x50\xa6\x20\x60\xb4\xe7\x94\x5b\xc4\xcd\x6b\xd2\x9e\xc1\xee\xbc\x68\xb5\xfb\x3a\x6e\x6c\xdc\x93\x86\x3b\x2c\x18\xe3\x72\xa3\x73\x57\x85\x08\x55\x99\xd4\xb9\x7e\x98\xb0\x65\xce\x25\x68\x4f\xc4\xa1\x53\xe5\x77\x27\x5c\x9e\x91\x3f\xc9\x96\x50\x48\x9e\xee\x00\x3b\x3e\x99\x4b\x24\x9b\x02\x56\xe2\x5d\x94\x26\x11\x5b\xe7\x3c\xdb\xd4\xfc\x20\xf1\x28\x64\x71\x45\xec\x0a\x16\xa4\x7e\x6c\x6a\xd9\xb1\x35\x1c\xc5\xb9\x37\xab\x7a\x3b\xdc\xd3\x50\xf8\x08\x2b\x16\xaa\xd0\x8d\xda\x82\x5a\xdd\x02\x9f\x90\x14\x1a\xf0\x71\xb1\x3f\x97\x4b\x95\x5a\x42\xb3\xd9\x1b\xa6\x72\xd0\x12\x28\x14\xfd\x29\x89\xbb\x4e\xb1\x44\xc6\xe2\xf3\x51\xac\x02\xfd\x07\x92\x75\xef\xcc\x63\x02\xca\xfa\xfa\xcb\xc2\x2e\xca\x85\x39\x2c\x0a\x7b\x83\x6b\x7c\x4b\xd7\x11\x76\x17\x69\xb1\x01\xd8\x1b\x02\xae\xfd\xa0\x6e\xf9\x8e\x45\x1b\x2e\xd7\xc1\x15\x1a\x50\x48\x22\x53\x39\x6a\xee\x3d\x02\x7d\x97\xca\x6d\xd5\x26\xd5\x22\x12\xea\xdb\x05\xbc\x11\x6c\xa9\x6c\xc1\x21\x5f\xaf\x73\xb1\x86\x42\xfa\xb9\xac\x54\x53\x03\x75\x99\xa5\xfb\xc7\xe7\xf4\x15\xa3\x9e\x86\xd1\xa1\xeb\xd6\x52\xe4\x3b\x57\xca\x47\x82\x95\x6e\xe8\x1a\xc3\x3a\x61\x89\x98\x4e\xd8\x6f\x3c\xc0\x54\x44\x4a\xba\x5a\xc0\x8e\x42\xb0\x5a\x68\x7a\x8f\x2d\x6a\xa1\x7e\x68\xef\x3b\x7c\xd6\x90\xbd\x6c\x5d\x34\xbd\xc5\x94\x05\x2f\xca\x11\xb6\x92\xa4\x8d\x2f\xcd\x8f\xef\xf0\xb7\xbd\x18\x6c\x9e\x19\xf3\x66\x69\x77\xcc\xf7\x8d\x85\x37\xcf\xf6\xb4\xbc\x6d\x63\xbd\x37\xd0\x99\xaa\xee\x40\xe7\x29\x5c\x4a\xcb\xad\xb0\x3f\xd6\x99\x76\xf0\x05\xf4\xbc\xd3\xd8\x50\xa6\x05\xa3\x12\xcc\x5c\xd7\xaf\x5b\x2d\x16\x20\xcb\x55\x5c\x46\x22\x36\x3b\x17\xfc\x76\x44\x6e\x38\xda\x82\x8a\x91\x6c\x3b\x10\x2a\xdc\x2b\x20\x70\xfd\xa5\xee\xc6\x83\xe8\x6e\xdd\xf0\x7f\xe8\xb8\x17\x5b\xcf\xa4\x6d\xd0\xc3\xfd\x89\xe3\x94\x8f\x3c\xa7\xdc\xe3\xab\x24\xb5\x2a\x4f\xd6\x89\xe4\x85\xca\xd9\x4b\x57\x9c\xf8\xca\x29\xdb\xc0\x28\x9e\xc2\x4c\x54\x86\x08\xcd\x44\xfb\xdd\x0b\xf0\xcc\x22\x5e\x8c\xe3\xce\x1a\xcb\xf0\x0c\x8b\xd4\x7c\x4b\x17\x7c\x9b\x85\xb4\x8f\x4e\x37\x98\x46\x26\xc5\x41\x60\xb6\x63\x10\xe3\x4b\xb4\xaf\xc1\x9a\x4b\x8a\x8c\xe3\xbc\xa9\x3c\xe4\x2d\xee\x3c\x9b\xb3\xb2\x58\x1c\x48\x65\x82\x3f\x1e\x17\x20\xa1\x74\xf9\x8f\x3c\xeb\x27\x87\xe0\x74\x35\xc6\x22\x14\x27\xa6\x6c\x3d\x95\xea\xfa\xec\x57\x06\x18\x49\x56\x59\x4f\xf1\xde\xbe\xb3\x09\x0d\x7f\x6f\xa9\x5c\x04\x60\x22\x90\x25\x4f\x83\x57\x81\x57\x50\x67\xd6\xcc\x29\x6e\x19\x25\x2e\x53\x55\xc6\x8c\x8c\x1a\xa5\x8b\xf3\x29\x9e\x8e\x40\x5b\x39\x9d\x76\x71\x78\x8d\x54\x2c\x75\xf6\x07\x7e\xd7\xbe\x03\xe1\xb3\x0e\x0b\xdc\xbb\xf5\x69\x64\x9f\x6d\xea\x69\xa4\x61\xee\x9d\x39\x1e\x35\xf7\x2e\x5a\x0b\x1c\x5a\xe3\x02\x79\x70\x6f\x4a\xe2\x14\xf6\x5b\x18\xe8\x6e\x61\xf9\xac\x24\x10\xf5\xc3\xd1\x8f\xb3\x95\xb6\xfd\x8f\xca\x78\x2e\x64\xb1\x80\x27\x8e\x7b\x18\x3c\xe4\x3d\xfc\xbc\xe2\x30\x0d\x0a\x58\xfe\xd7\xbd\xc2\x38\xb4\x25\xcc\xf8\x6f\x76\x47\xb1\x17\x6d\x55\xed\xcd\xe9\xf8\x32\x01\x6c\x4c\x90\xb3\x73\x13\xd7\x31\x5d\xf4\x42\x07\x8c\x5e\xf0\x42\x15\xd3\x3e\xe8\x85\x7c\xef\x21\xa5\x0a\xad\x50\x18\x8a\x2a\x3c\x8d\xa9\xb5\x7f\x0b\x48\xb4\xaf\x2b\xff\x06\xc2\x43\x33\x7f\x29\xfb\x9b\xc8\x95\x2f\x5b\xc0\xa0\x4a\xd8\x70\xaf\xbf\x7e\xb8\xfe\x27\xfa\xe3\xa8\x3c\x19\x4a\xaf\xc1\x5f\x88\x93\x04\x6f\xbe\xcb\x9d\xbd\x8e\x74\xd1\xa9\x8b\x68\xd1\xc1\xb3\x3f\xa8\x2b\xc1\xc5\x33\xe4\xcd\x4f\x6a\x87\x99\xdd\xa0\xe7\x70\xaf\x26\xd6\xbf\x2d\xcf\x08\x87\x46\x90\xd7\x7a\x92\x61\x0a\x2f\xf1\x5f\x7f\xf9\xef\x69\x97\xb2\x33\x74\x7d\x2c\xac\xc7\x75\xfe\x6d\x9e\x08\x19\x43\xd2\x90\xc7\x4d\x09\x18\x59\x89\x22\x57\xcc\xb3\x59\x86\x27\xa9\xee\x6b\x3f\x6a\xf5\x02\x17\xd1\x17\xc8\x3c\x7b\x23\xeb\xb6\x6f\x25\x2f\xd5\xe5\x4a\xe8\x45\xbc\x93\x7c\xdb\xd4\xc2\x7e\xd6\x3e\xee\x12\x91\xc6\xd0\x45\x7a\xfa\xbe\xec\x49\x2c\xa2\x87\xb1\x3e\xc1\xc1\x04\xd6\x22\x7a\x60\x3f\xdc\xff\xf8\x0e\xf5\x0a\x13\x3d\x97\xd7\xbc\x48\x1e\xc5\x87\x3c\x75\x61\x6b\x62\x24\xc9\x53\xbb\x47\xaa\x84\xaa\x01\x79\x87\x65\x5f\xb5\x8e\x43\xc8\x77\xbd\xdd\x9d\x2d\xcb\xe8\x41\x14\xe7\x39\x97\xb1\xda\xe2\x6b\x9c\xeb\x72\xb5\x4a\x3e\x4f\x0b\x9e\x77\x90\x5f\x63\x1c\xe1\x2b\xfa\xb9\x5e\xd2\xa4\xf0\x3e\x2f\xba\xba\x4f\x50\x9d\x48\x42\xb9\x15\xe7\x16\xae\xc0\x39\xdf\x0a\x60\x2f\x63\x55\xe2\x78\x68\x05\x0b\xfe\x40\x5f\x4d\x6b\x42\x7a\x2b\x52\x6f\xfd\x18\x38\xf7\x1f\x83\x5e\x55\x15\x84\x6d\xa7\xbc\x66\xd9\x96\x3f\xe0\xfd\x70\x9d\x0b\xad\x27\x4c\x2b\xe8\xf1\x5c\x5a\xcc\xb4\xad\xeb\x01\x7c\x06\xf0\x1f\xa6\x3b\x16\xa9\x2c\x01\x89\x37\xf7\x5e\x1b\xf5\x04\xf1\xe4\xb0\xbc\x0d\x54\x39\x4b\x59\x24\x29\xe3\xab\x82\x82\xcd\x40\xf6\x6c\xc5\x5d\xf4\x74\x2e\x21\x65\x18\xc1\xeb\x43\x2a\xdf\xa5\x09\xdc\x4b\x68\xb6\xe2\x51\x92\x26\x05\x51\xd0\x40\x31\x0c\x37\xef\x6b\xce\x03\x33\x96\x39\xdf\xf1\xd4\x5f\xac\x78\x5a\xfa\x8a\xbe\x33\x2d\xea\x14\x67\xbf\x0a\xff\xb7\x72\xcf\xed\x3b\x75\x8f\xb8\xf0\x1e\x73\xf8\x34\xaf\xb4\x4e\x71\xd4\x9f\xe3\x49\x6c\x71\xa2\x15\x57\xd7\x33\xcf\xba\xe3\x07\x62\xe7\x1d\x97\xea\xa9\xd5\x89\x69\x3e\x61\xc4\xe8\xb5\x3b\x61\x5f\x28\x5c\xd0\xc5\x81\x3b\xa4\xfb\x36\xda\xfd\x5e\xa9\xf4\xd8\x88\x37\x4f\xad\x41\x5d\x80\x74\xe2\x31\xd7\x35\x5c\x00\x2e\x70\x34\x7b\xe3\x72\xaf\x8e\x54\xb6\x2a\xb8\x42\xb0\x20\xea\x02\x18\x0a\xe8\x44\x0f\x62\x58\x67\x2d\xc9\xf7\x91\xc8\x67\x68\x03\x51\x3b\xd6\x75\x6e\x86\xe0\x83\x5a\x76\xee\xfb\x08\xc4\x7b\xb5\x1e\x8e\x0a\x86\xa1\xd0\x61\xed\x51\x2e\x30\x16\x12\x74\xba\x71\x0c\x9e\x6d\xc7\x13\xe5\x95\xcd\xf9\x44\x5e\xf2\x5c\x06\x1e\x31\xb2\xea\x58\x68\xb9\x1b\xb5\xb6\x78\x59\x65\x19\x1e\x1d\x2f\x3b\x86\x85\xb9\x37\xa1\xf2\x26\xd4\x53\x02\x4c\x40\xa4\xb6\xcb\x44\xda\x52\x65\x0a\x22\x83\x2b\x7f\x61\x49\xee\x5c\xc0\xdf\xba\xe4\xc8\xb2\x5f\x1b\x7b\xe7\x46\x84\x7c\x81\xa1\xc9\xda\x77\xdd\x0d\xef\x4f\xa7\x25\x8c\xee\x40\xa9\xd6\xdf\x20\xd1\x8c\xa7\x4f\x7c\xa7\x41\x73\x54\x18\xab\xb8\xc2\xc0\x69\xb5\xff\x93\xe0\x78\xb7\x04\x8a\x24\xe0\x5d\x92\x14\x31\xbd\x4b\x82\xfc\x0d\x22\xb5\xea\xaa\x9e\x17\xe7\x85\x6e\x1f\x9c\xaf\x93\x0b\xc9\x7b\x73\x21\x98\x8c\xfc\xe7\x48\x7f\xf4\x04\x59\x8f\x8c\xf5\x06\xc7\x24\x7a\x64\x04\x17\x81\x02\x1e\x30\xc7\xe6\xd9\x13\xb6\xe5\x89\xa4\x6d\x80\x0a\x56\xb1\x58\x96\xeb\x75\x67\x08\xf2\xdb\xcf\x65\x54\xf7\xc9\xbf\x7c\xac\xb9\x97\xd9\xe9\x14\xd1\xd8\x99\x7d\x12\x86\x87\xcd\xbd\xea\xcb\x04\x60\xbf\x62\xb4\xbb\x35\xe5\xd4\x58\x44\xa7\x89\x76\xcf\x86\x44\xbb\x2d\xc6\x07\x4a\xad\xe8\xba\x6a\x71\x18\xbf\x84\xc1\xbf\x4c\x18\x7c\xd0\xa2\x40\x7a\x8f\x45\x52\x75\xd0\x7b\x7a\x78\x20\x4b\x98\xa3\x93\x84\x5e\x91\x1a\xb8\x16\x32\xd6\x6c\xc9\xa3\x67\xa0\x0d\x83\xd3\xf1\xf8\x78\xdb\x1e\x70\xc9\x9d\xda\x0a\x06\x8f\xd2\xa8\x7d\xc0\xa8\x9a\x6d\x02\xa8\x45\xf3\x82\x1e\x91\x41\x78\x0f\x38\x4e\x11\x19\x12\x7b\xa7\xfa\xa5\x14\x4f\xcc\x9c\x56\x93\x10\xc6\x15\x4c\x0f\x88\xe2\xbc\x32\xde\x61\x05\xf3\xed\x4a\xf7\x73\xb1\xe6\x79\x0c\x95\x06\xb4\x25\x53\x1e\x3d\x98\xff\x86\xfe\xd1\x13\x09\x6a\x66\xf9\xb9\x11\xfe\xe8\x5b\x4b\x64\x94\x03\x29\x13\xa1\xda\x7c\xff\xf0\xe7\x9a\xf1\x28\x57\x1a\x83\x32\x4e\x4b\x12\x2a\x5d\xc1\x81\x7d\x4c\xe2\x92\xa7\xf8\xc4\xce\x48\x36\xd7\x47\xf1\x8d\x5f\x04\xb2\x2f\xe2\x73\x96\x72\x59\xdd\x93\xf8\xba\xc0\x55\x93\xf4\xac\x7c\x47\xb9\x76\x4c\x57\x46\x53\x47\xce\x02\xc5\x55\xbf\xad\xd0\x3b\xce\x05\x8f\x77\x21\x31\x55\x22\x49\x77\x9f\xc7\xdb\x44\x9a\xa9\xb7\xaa\x5e\xce\xbe\x5a\x82\x5f\x04\x5c\x82\xf8\x45\x9a\xd6\xb6\xbe\x66\x52\x18\x97\x8a\xe7\x49\xba\x03\x2f\x3a\xcb\xc5\x59\xf0\x9c\x60\x7f\x53\xbd\x07\x50\x15\x13\x89\x42\xa9\xc5\xaa\x4c\xd1\xd7\x86\xdb\xa8\x7b\x01\xda\x87\x1f\x66\x13\x73\xcc\x16\x44\x39\x1f\x3c\x18\x85\x9c\x4e\x81\x9d\x6f\xde\x03\x07\xe5\x6f\x3c\x61\x5a\x0e\xd0\xde\x8d\x7a\xb2\x05\x3e\x4f\xdc\x23\x38\xbb\xce\x92\x93\xc5\xec\xfb\xbd\x2e\x7b\xdf\xb1\xbb\x12\x07\x3d\xae\x24\x6a\xe8\x33\x11\xbb\x9d\x98\x48\x78\x1d\xd2\x40\xf4\x71\xd0\x52\x63\x9d\x90\x99\x43\xb0\xd6\xf6\x5a\x5f\x0d\x83\x32\xf7\x76\x89\x56\x92\xcd\xcb\x5f\xff\xfa\xb7\x82\xfd\x1a\x0a\xa7\xc8\xfb\xc6\x6c\x0b\x50\xa6\x61\xeb\x60\xa0\xdc\x03\x04\xf2\xa9\x35\x66\x84\xb5\x01\x1e\x6d\x95\x32\x40\x06\x79\xb4\x61\xba\x5c\x22\x1e\x8e\x53\xc0\x9e\x4b\xc7\x48\xfa\x4e\x01\xb4\x0d\xcf\x31\xdb\xfb\xff\x25\xe1\x69\x64\x05\x9f\xcb\x4c\x21\x69\x2e\x00\x09\x97\x82\x6d\x79\xfe\x00\x22\x6f\xa4\xe4\xcd\x78\xc1\x5e\x26\x62\x5a\x0d\x56\xbf\xaa\xf4\x87\xd2\x03\x48\x86\xc9\xf2\x52\x4a\xab\x5a\xc1\x8c\x1b\xe6\x23\xc7\x93\xb9\x5c\x96\xe1\x4d\xab\x12\x7a\xf6\x4b\x0b\xc2\xcf\x60\x64\x15\x30\x24\x50\xa7\xb8\x0e\x14\xc6\xd9\x80\x18\xf4\x5c\x3e\x53\x10\xba\x2b\xbc\xf5\x9e\x3c\x0e\x1b\xba\x0a\x50\xda\xf0\xba\xa1\xb0\x22\x4c\x07\x2e\x7b\x38\xd2\xdf\x83\xba\xe2\x84\xfd\x90\x3c\x8a\x09\xbb\xcb\x78\xfe\x30\x61\x6f\x30\x99\xf4\x47\xb5\xdc\x1b\xb1\x3a\x45\xd4\xd6\x5d\xac\x8e\x65\xbc\xc7\xf8\xe7\x24\x60\x66\x0e\x12\x98\xcd\xf8\xa2\xc5\xb7\x15\xc0\x6b\x1f\x3d\x08\xd9\x69\x2c\x2d\x2a\xb9\x93\xbe\xfb\x54\xf7\xee\x6e\x50\x75\xe7\x2d\xbc\x7e\x6e\x7b\x0f\x8b\x6a\x56\xdb\x70\x7e\xc6\xb3\x41\xed\x69\x1e\x3d\x9c\x81\xaf\xaa\x72\x57\x57\xad\x29\xb9\x86\xab\x02\xd1\xcf\xe8\xa3\xd5\x2a\x91\x87\xba\xe2\xf6\xc1\x8b\x4c\xa9\xb4\xd5\x23\x3f\xe9\x00\x36\xe2\xf3\x43\x07\x6f\x86\x15\x5c\x3a\xf4\x53\xed\x28\xfa\x58\xaf\x8f\x0c\x63\x18\x18\xa8\x58\x60\x35\xc5\x25\xa4\x48\xfd\x70\x84\x92\x7e\xc6\xd6\x20\xe6\x1c\x5d\x53\xab\x00\xcb\xed\x9d\x21\xe2\x2e\xe8\x1d\x62\x9d\x1b\x51\x68\xdd\x7c\x4e\xc7\x45\x01\xda\x5d\x24\x6d\xbc\x2b\x63\x37\x17\x4a\xa7\x37\x52\x4b\xd8\x73\x7b\xa4\xdb\xaa\x9f\x7d\xac\xb3\xb6\xc4\x79\x11\xa5\x5c\x0f\xc4\x11\xb7\xda\x9d\x19\x35\x74\x09\xed\x0c\xb7\x99\x3f\x40\x16\x60\x3b\xd0\x85\x9a\xcb\x0b\xc7\xba\xea\x9d\x6f\x77\x61\x40\x33\x8b\x57\xa5\xc6\xd4\x60\x29\x91\xa7\xe8\x9d\x30\x5d\x46\x1b\x28\x96\xaa\xda\xa9\xd0\x6e\x35\x77\xec\x64\x2e\x8d\xfb\x8a\xca\x5f\x1c\xe0\x2e\x4f\x20\x12\x93\xfc\x4d\x38\xff\x98\x30\xf9\xa1\x4b\xbc\xe4\x66\x6a\x94\x6c\xbd\x3e\xd8\xba\x35\x3c\xe9\xfc\xe1\x5e\x66\xc6\x73\x98\xce\xbd\xdb\x93\xa0\x9e\xbf\x3d\x6e\xe9\x3e\xa2\xc3\x17\x0b\xaf\x4f\x35\x4b\x9b\x26\x2b\x11\xed\xa2\x06\x0d\x55\x05\x64\x76\xba\x2c\xc8\x61\x49\x80\x3e\xba\xa2\xf6\xd8\xc9\xcf\x0d\x7a\x0d\xd6\x85\xcc\xf9\xe7\xc4\x0b\x77\x30\xe6\xfc\xab\xc7\x71\xf7\x80\x68\x7e\x81\xd6\xfe\x4b\xc6\x14\xfb\xc9\x72\x7e\x15\xfe\xaf\xb5\x5f\x16\xbd\x0a\x31\x0c\xf2\x9a\x5b\x31\xb3\xdf\x16\x3d\x40\x12\xd7\x2f\x79\x4d\x96\x80\x61\x5b\x81\x48\x18\x62\x47\x10\x31\xa2\x24\x88\x7e\x6a\xc7\xeb\x32\x55\xba\xcc\xfb\x37\xff\x6d\xb5\xd7\xf6\xe9\x2d\x84\xb9\xb0\xd8\xb6\x4b\x01\xdc\x1f\x43\xc1\x71\xf8\xb5\xc5\x5f\xd5\x72\x01\x48\xd0\xe3\x76\x78\x5b\x73\x56\x82\xcb\xe1\x09\xa8\xab\xfe\xc6\x75\x97\x09\xe0\x6d\xf3\xa1\x0d\x7f\x7f\xa9\xad\x30\x17\x58\x9e\x4b\x4b\x63\x8f\x75\xe7\x79\x2e\x80\x6f\x3b\x17\xa0\x2c\xc7\x32\x9e\x3b\x38\x96\xbd\x61\x07\x11\x34\x0f\xd9\x0b\x6b\x45\xa1\xe4\x9b\xe2\x76\x4b\x21\xa4\x1b\xed\x31\x57\x53\x73\xdb\xac\x8f\x3e\x61\x71\x9f\x04\x8b\xb0\xcc\xab\x43\x05\xb3\xf1\xbb\x20\xa6\x08\x7e\xcb\x5a\x84\x3e\x54\xcd\xb5\xa8\x6c\xcd\x4a\x7e\xff\x9b\xaa\x47\x6a\xbd\xc1\xd6\x28\xee\x2a\xe1\xe7\x41\x88\x88\x53\x64\x1b\xdf\xf3\x62\x83\x81\xd1\xad\x2a\x04\xda\x4c\xe4\xda\xc2\xf5\x82\x39\xbb\x65\xaa\x96\x20\xe9\x66\x3e\xe9\xba\x3e\x47\xb4\xb5\x07\x0d\x5d\x73\xc2\x86\x58\x06\x63\x4d\xa0\x5e\x3d\x17\x1a\x68\x8b\x9a\x39\xfe\xa1\xd5\x13\xe3\x82\xb7\xcd\xee\x1a\xa3\xff\xa6\x11\xbc\x6d\xea\x5c\x98\x6d\x0d\x50\xfa\xab\x03\xea\xfb\xae\xc2\x9a\x6f\xe3\x1c\x10\xe5\x37\x81\x68\x90\xf5\xb7\xf6\xbe\x56\x39\x7c\x2e\x2f\xf0\x93\xe0\x10\xe0\x5e\xcf\xc9\xa1\xd5\x49\x24\xd6\xed\x3f\x2c\x02\x67\x17\x21\x3e\x9a\x6e\x45\x13\x7f\x5f\x85\xe0\xd2\x04\x6a\xae\x65\x91\xe4\xe6\x36\xa2\xc1\xd9\xd2\xe5\xf2\xcc\xd3\xfb\xa8\x1c\xdc\x33\x60\x7f\xca\x38\x84\xc6\x80\xf5\xeb\xac\xe5\x18\xc6\xbc\x8e\xd7\x65\xb1\x34\x98\x3c\x25\xe3\x0f\xb7\x6a\xe4\x97\x70\xef\xee\xda\x31\x97\x23\x88\xca\x5a\x6e\x03\x3c\xec\xfa\xec\x05\x28\x47\x41\x7d\xf8\x2d\x5e\xc7\xbf\xf6\x01\x1e\x62\x49\x86\x1e\xdd\x70\xfd\x9e\xcb\xff\xdf\x9e\x0d\xdd\x25\x0f\x23\x56\xba\x19\x19\x73\x44\x75\x96\x62\x54\xfa\x66\x43\x92\x81\x13\xd8\xdd\xa9\xc6\x92\x6f\x6b\x95\xbb\x00\x49\xa0\x93\xa2\xa8\x98\x1f\x3e\x7d\x4c\x74\x40\x9a\x0f\x4f\xbb\x13\x82\xbd\xce\xc5\xea\xf5\xc7\x5c\xac\x16\x76\xa6\xa7\xf0\x42\x53\xf3\x46\x4d\xea\xfc\x81\x8b\x43\x67\x4a\xb6\x53\x88\xee\xa1\xf8\xad\xbd\x12\xb6\x13\xbc\x53\xb2\x62\x5e\x4e\x13\xa2\x08\x65\x14\x09\x11\xd7\x39\xfd\x1b\x3d\xfb\xe2\xc7\x5c\x17\x8e\x76\x00\x50\xb5\x43\x86\xf2\x5f\xff\x78\xab\x8c\xd9\x90\xe3\xed\xbe\x1a\x4f\xb1\xc6\x9e\x4b\x77\xe0\x75\x17\xa6\x7c\xd9\xda\x19\x98\x40\x9d\xf1\x27\x49\x6c\x50\xa3\x52\x19\xc3\x8e\xb5\x5a\x74\x29\x38\xd6\x1a\x08\x62\xbf\xcb\xa4\xcd\x1c\x25\x4e\xb3\x71\x12\xc8\x9d\xf3\x34\x0d\x95\x49\x7c\xfc\x77\x2e\x7d\x94\xd0\x78\xad\x69\x6a\x53\x42\x15\x7f\x83\xb8\xbf\x62\xa0\x2b\x10\x13\x4b\x5d\x44\xa4\x9f\x84\x26\x38\xc3\x68\x9c\x8f\x99\xed\xdb\xcd\xa7\xba\x44\x7e\x63\xac\x0d\x7b\x70\x3b\xf8\xd8\xc5\x83\xd8\x8d\xee\x6b\x7b\xe6\xdc\x4b\xf9\x6e\x60\x33\x5b\x2b\x1b\xf1\x3c\xb7\x35\x48\xf4\x54\x66\xee\x4a\x2b\x1e\x55\xd2\x66\x1d\xfd\xdc\x88\xe8\x21\x53\x89\x1c\x6d\x8b\x82\xfe\x18\x47\xaa\x30\xe7\x99\x6f\xcd\xdd\x0e\x07\x1d\x8e\x15\x7f\x12\x5f\x44\x03\x38\xcd\x02\xeb\x3d\xa5\x21\x67\x4e\xab\xb8\x7b\xd9\x9d\x3a\x7e\x21\xfc\xd9\xf0\x0c\xb1\xd8\xfe\x24\x05\x5a\x8d\xa6\x47\x59\xc9\x62\xf1\x46\x6d\xea\xc0\xc1\xe6\xac\x42\x04\xda\x3a\xa4\x10\x82\xfc\x25\x32\xf4\x4b\x64\xe8\x9f\x3c\x32\xf4\x25\xc3\x42\x80\x2c\x7c\xce\x98\x50\x3b\xd9\xc0\x2f\xc7\xeb\xb7\x75\xbc\x22\xa7\x28\x56\xc6\x8d\x19\x5a\xea\xea\xad\xff\xf9\x71\x83\x2b\x58\xd0\x13\x3d\x62\x9c\xbf\xa0\x7b\xd0\x62\xab\xc6\xd9\xdd\xc1\xe7\x55\x3f\x7a\xc2\x3b\x20\xfe\x32\x10\x14\xd2\x37\xb6\x6f\x18\x04\x2e\xc2\xa5\x63\x0c\xcf\xe0\xf4\x4b\x37\x57\xc9\x37\x95\x44\x1e\xe2\x60\x18\xcb\xe8\xd2\xca\xd7\xd6\x22\x4a\x81\x06\xbc\xc7\x32\x06\x1c\xd6\xbc\x78\xa1\xdd\xa8\x57\x2d\xa0\x45\xb8\xbf\x4b\x74\xf1\x53\x4d\x21\xf1\x30\x89\xc5\x67\x43\x42\xd9\xae\x62\x37\x83\x5f\xf4\x02\x78\x6e\xab\x10\x1b\xb5\xb2\x6b\x0e\x0e\x39\xab\x89\x65\xfa\x3d\xe6\xbc\xfa\xe8\xc6\xeb\x23\xfa\xd1\x4f\x39\xcf\x32\x91\x5b\xdc\x48\x03\xda\x03\x02\x53\xf0\x14\x50\x88\xdb\x08\x94\xa9\xad\x79\x23\xc6\x94\xd4\x9a\x86\xaf\xc1\xd0\x4d\xdb\x67\xee\xba\x4c\xd3\xce\x99\xdb\xaf\x5b\x73\xfd\xe1\xdd\xbb\xc5\x4f\x17\xef\x3e\x5c\xd9\xd7\x6f\xd5\x81\x09\xbe\xd6\x39\x26\xae\x27\x34\x26\x5e\x69\xce\x3c\x56\x58\xa9\x5c\xe5\xdf\x1a\x2f\x23\x65\x9a\x56\x35\x82\xe6\xf2\x23\xb5\x03\xb0\x6c\xd4\x3f\x34\xe3\xc6\x7a\x07\xae\xfa\x7c\xf8\xda\x47\xd3\xf8\x47\xfc\xed\x19\xf3\x2f\xf1\x1a\x94\xec\x48\x21\xab\x7d\x5c\xa9\xe6\xe3\x88\xed\x80\x20\xe0\xae\xed\x70\x6a\x15\xb4\xc3\xb6\xc7\x07\x09\xfc\xcb\x22\xb6\xe2\x65\x27\xd9\x1d\x38\x76\x1f\xab\xf9\x04\x67\xcb\x63\x0c\xae\x41\xbb\x13\xd4\xae\x02\x45\x5e\x2f\xef\x34\x97\x78\x57\x35\x7d\x2a\x54\x77\x9f\xd8\x8c\xd0\x54\x29\x97\xeb\x92\xaf\x85\x9e\x30\xfb\xf0\xb9\xdc\x26\xeb\x0d\xb2\x49\x94\x99\xc7\x25\x73\x26\x81\x74\xa4\xb6\x84\x6a\xb8\xe4\x44\xce\x25\xbd\x93\x5c\xfb\xe6\x11\x23\xfb\xc7\x3b\xf7\x3a\x04\x46\xc7\x86\x48\x7e\x4b\xce\x25\x4e\x2e\xb2\x5c\xd8\x88\x15\xf8\xef\xbc\xa8\x2f\x5d\x0e\x31\x66\x94\xa8\x36\x36\x7d\x0d\xb1\xb3\xb9\x74\x85\xa8\xe8\xe1\xd3\x3b\x04\x32\x0d\xd8\xa5\xfd\xf6\xc4\x4e\x86\xdd\x13\xd4\xb7\xf6\x55\x7f\xf4\x19\x60\x36\xdc\x62\x84\xd6\x6e\xd3\x8c\x0d\xbc\xd5\xf1\xc0\x70\x74\xb1\x13\x40\xf5\x71\x7b\x6f\xec\x7b\xe1\x77\x3a\x21\x48\xaa\x5c\xa6\x23\xba\x84\xdf\xef\xed\x14\x9a\xe4\xfe\x4e\x0d\xb8\x32\xde\xd6\xb6\x96\x59\xa6\x7d\x8f\x5d\x2a\xd5\x31\x2f\x27\x0c\xfc\x56\x3a\x45\x3f\xd8\x37\x18\x65\x54\x1c\xb2\x5e\x06\x94\xe4\xd5\x87\xc8\x5a\x9f\xbe\x0e\xa5\x89\x3e\xa8\x3b\xde\x7f\x1a\xdc\x23\xe7\x21\xd0\x61\x37\xca\xc2\xd2\x39\x57\x31\xb0\x1d\x66\x92\xe2\x7e\x56\xb4\x36\x41\xf3\x62\x36\x0f\x2a\xca\x9a\xf5\x3f\x71\x8b\x68\xe2\x67\x6e\x02\x9d\x8c\xca\x5c\x1b\x73\x49\xf6\x8e\xac\xb6\xca\x19\x9f\x4b\xab\x7e\x60\xcd\xf1\x85\x05\x51\xe5\xee\xaf\x58\xe6\x98\x21\x7b\x38\x78\xac\x05\x53\x52\x58\x6b\x38\x97\x56\xe9\x78\xc2\xf8\x52\x5b\x01\x61\x2e\x77\x4e\xd5\x37\x71\x92\x6d\x5c\x32\x40\xa7\xed\xb7\x79\x35\x37\xa0\x72\xce\xff\xca\xfc\xdf\x3f\x7e\xf5\xff\x02\x00\x00\xff\xff\x0e\x57\x6c\x47\x41\x9a\x04\x00") func adminSwaggerJsonBytes() ([]byte, error) { return bindataRead( @@ -93,7 +93,7 @@ func adminSwaggerJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "admin.swagger.json", size: 300994, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} + info := bindataFileInfo{name: "admin.swagger.json", size: 301633, 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/Common.java b/gen/pb-java/flyteidl/admin/Common.java index b379a2a39..0b4f88df6 100644 --- a/gen/pb-java/flyteidl/admin/Common.java +++ b/gen/pb-java/flyteidl/admin/Common.java @@ -20743,6 +20743,837 @@ public flyteidl.admin.Common.RawOutputDataConfig getDefaultInstanceForType() { } + public interface FlyteURLsOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.FlyteURLs) + com.google.protobuf.MessageOrBuilder { + + /** + * string inputs = 1; + */ + java.lang.String getInputs(); + /** + * string inputs = 1; + */ + com.google.protobuf.ByteString + getInputsBytes(); + + /** + * string outputs = 2; + */ + java.lang.String getOutputs(); + /** + * string outputs = 2; + */ + com.google.protobuf.ByteString + getOutputsBytes(); + + /** + * string deck = 3; + */ + java.lang.String getDeck(); + /** + * string deck = 3; + */ + com.google.protobuf.ByteString + getDeckBytes(); + } + /** + *
+   * These URLs are returned as part of node and task execution data requests.
+   * 
+ * + * Protobuf type {@code flyteidl.admin.FlyteURLs} + */ + public static final class FlyteURLs extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.FlyteURLs) + FlyteURLsOrBuilder { + private static final long serialVersionUID = 0L; + // Use FlyteURLs.newBuilder() to construct. + private FlyteURLs(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private FlyteURLs() { + inputs_ = ""; + outputs_ = ""; + deck_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private FlyteURLs( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + inputs_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + outputs_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + deck_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.Common.internal_static_flyteidl_admin_FlyteURLs_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.Common.internal_static_flyteidl_admin_FlyteURLs_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.Common.FlyteURLs.class, flyteidl.admin.Common.FlyteURLs.Builder.class); + } + + public static final int INPUTS_FIELD_NUMBER = 1; + private volatile java.lang.Object inputs_; + /** + * string inputs = 1; + */ + public java.lang.String getInputs() { + java.lang.Object ref = inputs_; + 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(); + inputs_ = s; + return s; + } + } + /** + * string inputs = 1; + */ + public com.google.protobuf.ByteString + getInputsBytes() { + java.lang.Object ref = inputs_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + inputs_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int OUTPUTS_FIELD_NUMBER = 2; + private volatile java.lang.Object outputs_; + /** + * string outputs = 2; + */ + public java.lang.String getOutputs() { + java.lang.Object ref = outputs_; + 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(); + outputs_ = s; + return s; + } + } + /** + * string outputs = 2; + */ + public com.google.protobuf.ByteString + getOutputsBytes() { + java.lang.Object ref = outputs_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + outputs_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DECK_FIELD_NUMBER = 3; + private volatile java.lang.Object deck_; + /** + * string deck = 3; + */ + public java.lang.String getDeck() { + java.lang.Object ref = deck_; + 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(); + deck_ = s; + return s; + } + } + /** + * string deck = 3; + */ + public com.google.protobuf.ByteString + getDeckBytes() { + java.lang.Object ref = deck_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + deck_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getInputsBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, inputs_); + } + if (!getOutputsBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, outputs_); + } + if (!getDeckBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, deck_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getInputsBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, inputs_); + } + if (!getOutputsBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, outputs_); + } + if (!getDeckBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, deck_); + } + 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.Common.FlyteURLs)) { + return super.equals(obj); + } + flyteidl.admin.Common.FlyteURLs other = (flyteidl.admin.Common.FlyteURLs) obj; + + if (!getInputs() + .equals(other.getInputs())) return false; + if (!getOutputs() + .equals(other.getOutputs())) return false; + if (!getDeck() + .equals(other.getDeck())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + INPUTS_FIELD_NUMBER; + hash = (53 * hash) + getInputs().hashCode(); + hash = (37 * hash) + OUTPUTS_FIELD_NUMBER; + hash = (53 * hash) + getOutputs().hashCode(); + hash = (37 * hash) + DECK_FIELD_NUMBER; + hash = (53 * hash) + getDeck().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.Common.FlyteURLs parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.Common.FlyteURLs parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.Common.FlyteURLs parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.Common.FlyteURLs 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.Common.FlyteURLs parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.Common.FlyteURLs parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.Common.FlyteURLs parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.Common.FlyteURLs 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.Common.FlyteURLs parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.Common.FlyteURLs 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.Common.FlyteURLs parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.Common.FlyteURLs 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.Common.FlyteURLs 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; + } + /** + *
+     * These URLs are returned as part of node and task execution data requests.
+     * 
+ * + * Protobuf type {@code flyteidl.admin.FlyteURLs} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.FlyteURLs) + flyteidl.admin.Common.FlyteURLsOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.Common.internal_static_flyteidl_admin_FlyteURLs_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.Common.internal_static_flyteidl_admin_FlyteURLs_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.Common.FlyteURLs.class, flyteidl.admin.Common.FlyteURLs.Builder.class); + } + + // Construct using flyteidl.admin.Common.FlyteURLs.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(); + inputs_ = ""; + + outputs_ = ""; + + deck_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.Common.internal_static_flyteidl_admin_FlyteURLs_descriptor; + } + + @java.lang.Override + public flyteidl.admin.Common.FlyteURLs getDefaultInstanceForType() { + return flyteidl.admin.Common.FlyteURLs.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.Common.FlyteURLs build() { + flyteidl.admin.Common.FlyteURLs result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.Common.FlyteURLs buildPartial() { + flyteidl.admin.Common.FlyteURLs result = new flyteidl.admin.Common.FlyteURLs(this); + result.inputs_ = inputs_; + result.outputs_ = outputs_; + result.deck_ = deck_; + 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.Common.FlyteURLs) { + return mergeFrom((flyteidl.admin.Common.FlyteURLs)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.Common.FlyteURLs other) { + if (other == flyteidl.admin.Common.FlyteURLs.getDefaultInstance()) return this; + if (!other.getInputs().isEmpty()) { + inputs_ = other.inputs_; + onChanged(); + } + if (!other.getOutputs().isEmpty()) { + outputs_ = other.outputs_; + onChanged(); + } + if (!other.getDeck().isEmpty()) { + deck_ = other.deck_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.admin.Common.FlyteURLs parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.Common.FlyteURLs) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object inputs_ = ""; + /** + * string inputs = 1; + */ + public java.lang.String getInputs() { + java.lang.Object ref = inputs_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + inputs_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string inputs = 1; + */ + public com.google.protobuf.ByteString + getInputsBytes() { + java.lang.Object ref = inputs_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + inputs_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string inputs = 1; + */ + public Builder setInputs( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + inputs_ = value; + onChanged(); + return this; + } + /** + * string inputs = 1; + */ + public Builder clearInputs() { + + inputs_ = getDefaultInstance().getInputs(); + onChanged(); + return this; + } + /** + * string inputs = 1; + */ + public Builder setInputsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + inputs_ = value; + onChanged(); + return this; + } + + private java.lang.Object outputs_ = ""; + /** + * string outputs = 2; + */ + public java.lang.String getOutputs() { + java.lang.Object ref = outputs_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + outputs_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string outputs = 2; + */ + public com.google.protobuf.ByteString + getOutputsBytes() { + java.lang.Object ref = outputs_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + outputs_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string outputs = 2; + */ + public Builder setOutputs( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + outputs_ = value; + onChanged(); + return this; + } + /** + * string outputs = 2; + */ + public Builder clearOutputs() { + + outputs_ = getDefaultInstance().getOutputs(); + onChanged(); + return this; + } + /** + * string outputs = 2; + */ + public Builder setOutputsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + outputs_ = value; + onChanged(); + return this; + } + + private java.lang.Object deck_ = ""; + /** + * string deck = 3; + */ + public java.lang.String getDeck() { + java.lang.Object ref = deck_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + deck_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string deck = 3; + */ + public com.google.protobuf.ByteString + getDeckBytes() { + java.lang.Object ref = deck_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + deck_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string deck = 3; + */ + public Builder setDeck( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + deck_ = value; + onChanged(); + return this; + } + /** + * string deck = 3; + */ + public Builder clearDeck() { + + deck_ = getDefaultInstance().getDeck(); + onChanged(); + return this; + } + /** + * string deck = 3; + */ + public Builder setDeckBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + deck_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.admin.FlyteURLs) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.FlyteURLs) + private static final flyteidl.admin.Common.FlyteURLs DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.Common.FlyteURLs(); + } + + public static flyteidl.admin.Common.FlyteURLs getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public FlyteURLs parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new FlyteURLs(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.Common.FlyteURLs getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + private static final com.google.protobuf.Descriptors.Descriptor internal_static_flyteidl_admin_NamedEntityIdentifier_descriptor; private static final @@ -20863,6 +21694,11 @@ public flyteidl.admin.Common.RawOutputDataConfig getDefaultInstanceForType() { private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_flyteidl_admin_RawOutputDataConfig_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_FlyteURLs_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_FlyteURLs_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { @@ -20934,11 +21770,12 @@ public flyteidl.admin.Common.RawOutputDataConfig getDefaultInstanceForType() { "\n\010AuthRole\022\032\n\022assumable_iam_role\030\001 \001(\t\022\"" + "\n\032kubernetes_service_account\030\002 \001(\t:\002\030\001\"5" + "\n\023RawOutputDataConfig\022\036\n\026output_location" + - "_prefix\030\001 \001(\t*\\\n\020NamedEntityState\022\027\n\023NAM" + - "ED_ENTITY_ACTIVE\020\000\022\031\n\025NAMED_ENTITY_ARCHI" + - "VED\020\001\022\024\n\020SYSTEM_GENERATED\020\002B7Z5github.co" + - "m/flyteorg/flyteidl/gen/pb-go/flyteidl/a" + - "dminb\006proto3" + "_prefix\030\001 \001(\t\":\n\tFlyteURLs\022\016\n\006inputs\030\001 \001" + + "(\t\022\017\n\007outputs\030\002 \001(\t\022\014\n\004deck\030\003 \001(\t*\\\n\020Nam" + + "edEntityState\022\027\n\023NAMED_ENTITY_ACTIVE\020\000\022\031" + + "\n\025NAMED_ENTITY_ARCHIVED\020\001\022\024\n\020SYSTEM_GENE" + + "RATED\020\002B7Z5github.com/flyteorg/flyteidl/" + + "gen/pb-go/flyteidl/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -21099,6 +21936,12 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_RawOutputDataConfig_descriptor, new java.lang.String[] { "OutputLocationPrefix", }); + internal_static_flyteidl_admin_FlyteURLs_descriptor = + getDescriptor().getMessageTypes().get(22); + internal_static_flyteidl_admin_FlyteURLs_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_FlyteURLs_descriptor, + new java.lang.String[] { "Inputs", "Outputs", "Deck", }); flyteidl.core.Execution.getDescriptor(); flyteidl.core.IdentifierOuterClass.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); diff --git a/gen/pb-java/flyteidl/admin/NodeExecutionOuterClass.java b/gen/pb-java/flyteidl/admin/NodeExecutionOuterClass.java index 7d55aaccc..7fde07694 100644 --- a/gen/pb-java/flyteidl/admin/NodeExecutionOuterClass.java +++ b/gen/pb-java/flyteidl/admin/NodeExecutionOuterClass.java @@ -13842,6 +13842,19 @@ public interface NodeExecutionGetDataResponseOrBuilder extends * .flyteidl.admin.DynamicWorkflowNodeMetadata dynamic_workflow = 16; */ flyteidl.admin.NodeExecutionOuterClass.DynamicWorkflowNodeMetadataOrBuilder getDynamicWorkflowOrBuilder(); + + /** + * .flyteidl.admin.FlyteURLs flyte_urls = 17; + */ + boolean hasFlyteUrls(); + /** + * .flyteidl.admin.FlyteURLs flyte_urls = 17; + */ + flyteidl.admin.Common.FlyteURLs getFlyteUrls(); + /** + * .flyteidl.admin.FlyteURLs flyte_urls = 17; + */ + flyteidl.admin.Common.FlyteURLsOrBuilder getFlyteUrlsOrBuilder(); } /** *
@@ -13951,6 +13964,19 @@ private NodeExecutionGetDataResponse(
 
               break;
             }
+            case 138: {
+              flyteidl.admin.Common.FlyteURLs.Builder subBuilder = null;
+              if (flyteUrls_ != null) {
+                subBuilder = flyteUrls_.toBuilder();
+              }
+              flyteUrls_ = input.readMessage(flyteidl.admin.Common.FlyteURLs.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(flyteUrls_);
+                flyteUrls_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -14154,6 +14180,27 @@ public flyteidl.admin.NodeExecutionOuterClass.DynamicWorkflowNodeMetadataOrBuild
       return getDynamicWorkflow();
     }
 
+    public static final int FLYTE_URLS_FIELD_NUMBER = 17;
+    private flyteidl.admin.Common.FlyteURLs flyteUrls_;
+    /**
+     * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+     */
+    public boolean hasFlyteUrls() {
+      return flyteUrls_ != null;
+    }
+    /**
+     * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+     */
+    public flyteidl.admin.Common.FlyteURLs getFlyteUrls() {
+      return flyteUrls_ == null ? flyteidl.admin.Common.FlyteURLs.getDefaultInstance() : flyteUrls_;
+    }
+    /**
+     * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+     */
+    public flyteidl.admin.Common.FlyteURLsOrBuilder getFlyteUrlsOrBuilder() {
+      return getFlyteUrls();
+    }
+
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
     public final boolean isInitialized() {
@@ -14183,6 +14230,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
       if (dynamicWorkflow_ != null) {
         output.writeMessage(16, getDynamicWorkflow());
       }
+      if (flyteUrls_ != null) {
+        output.writeMessage(17, getFlyteUrls());
+      }
       unknownFields.writeTo(output);
     }
 
@@ -14212,6 +14262,10 @@ public int getSerializedSize() {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(16, getDynamicWorkflow());
       }
+      if (flyteUrls_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(17, getFlyteUrls());
+      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -14252,6 +14306,11 @@ public boolean equals(final java.lang.Object obj) {
         if (!getDynamicWorkflow()
             .equals(other.getDynamicWorkflow())) return false;
       }
+      if (hasFlyteUrls() != other.hasFlyteUrls()) return false;
+      if (hasFlyteUrls()) {
+        if (!getFlyteUrls()
+            .equals(other.getFlyteUrls())) return false;
+      }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -14283,6 +14342,10 @@ public int hashCode() {
         hash = (37 * hash) + DYNAMIC_WORKFLOW_FIELD_NUMBER;
         hash = (53 * hash) + getDynamicWorkflow().hashCode();
       }
+      if (hasFlyteUrls()) {
+        hash = (37 * hash) + FLYTE_URLS_FIELD_NUMBER;
+        hash = (53 * hash) + getFlyteUrls().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -14450,6 +14513,12 @@ public Builder clear() {
           dynamicWorkflow_ = null;
           dynamicWorkflowBuilder_ = null;
         }
+        if (flyteUrlsBuilder_ == null) {
+          flyteUrls_ = null;
+        } else {
+          flyteUrls_ = null;
+          flyteUrlsBuilder_ = null;
+        }
         return this;
       }
 
@@ -14501,6 +14570,11 @@ public flyteidl.admin.NodeExecutionOuterClass.NodeExecutionGetDataResponse build
         } else {
           result.dynamicWorkflow_ = dynamicWorkflowBuilder_.build();
         }
+        if (flyteUrlsBuilder_ == null) {
+          result.flyteUrls_ = flyteUrls_;
+        } else {
+          result.flyteUrls_ = flyteUrlsBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -14564,6 +14638,9 @@ public Builder mergeFrom(flyteidl.admin.NodeExecutionOuterClass.NodeExecutionGet
         if (other.hasDynamicWorkflow()) {
           mergeDynamicWorkflow(other.getDynamicWorkflow());
         }
+        if (other.hasFlyteUrls()) {
+          mergeFlyteUrls(other.getFlyteUrls());
+        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -15375,6 +15452,123 @@ public flyteidl.admin.NodeExecutionOuterClass.DynamicWorkflowNodeMetadataOrBuild
         }
         return dynamicWorkflowBuilder_;
       }
+
+      private flyteidl.admin.Common.FlyteURLs flyteUrls_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          flyteidl.admin.Common.FlyteURLs, flyteidl.admin.Common.FlyteURLs.Builder, flyteidl.admin.Common.FlyteURLsOrBuilder> flyteUrlsBuilder_;
+      /**
+       * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+       */
+      public boolean hasFlyteUrls() {
+        return flyteUrlsBuilder_ != null || flyteUrls_ != null;
+      }
+      /**
+       * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+       */
+      public flyteidl.admin.Common.FlyteURLs getFlyteUrls() {
+        if (flyteUrlsBuilder_ == null) {
+          return flyteUrls_ == null ? flyteidl.admin.Common.FlyteURLs.getDefaultInstance() : flyteUrls_;
+        } else {
+          return flyteUrlsBuilder_.getMessage();
+        }
+      }
+      /**
+       * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+       */
+      public Builder setFlyteUrls(flyteidl.admin.Common.FlyteURLs value) {
+        if (flyteUrlsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          flyteUrls_ = value;
+          onChanged();
+        } else {
+          flyteUrlsBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+       */
+      public Builder setFlyteUrls(
+          flyteidl.admin.Common.FlyteURLs.Builder builderForValue) {
+        if (flyteUrlsBuilder_ == null) {
+          flyteUrls_ = builderForValue.build();
+          onChanged();
+        } else {
+          flyteUrlsBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+       */
+      public Builder mergeFlyteUrls(flyteidl.admin.Common.FlyteURLs value) {
+        if (flyteUrlsBuilder_ == null) {
+          if (flyteUrls_ != null) {
+            flyteUrls_ =
+              flyteidl.admin.Common.FlyteURLs.newBuilder(flyteUrls_).mergeFrom(value).buildPartial();
+          } else {
+            flyteUrls_ = value;
+          }
+          onChanged();
+        } else {
+          flyteUrlsBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+       */
+      public Builder clearFlyteUrls() {
+        if (flyteUrlsBuilder_ == null) {
+          flyteUrls_ = null;
+          onChanged();
+        } else {
+          flyteUrls_ = null;
+          flyteUrlsBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+       */
+      public flyteidl.admin.Common.FlyteURLs.Builder getFlyteUrlsBuilder() {
+        
+        onChanged();
+        return getFlyteUrlsFieldBuilder().getBuilder();
+      }
+      /**
+       * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+       */
+      public flyteidl.admin.Common.FlyteURLsOrBuilder getFlyteUrlsOrBuilder() {
+        if (flyteUrlsBuilder_ != null) {
+          return flyteUrlsBuilder_.getMessageOrBuilder();
+        } else {
+          return flyteUrls_ == null ?
+              flyteidl.admin.Common.FlyteURLs.getDefaultInstance() : flyteUrls_;
+        }
+      }
+      /**
+       * .flyteidl.admin.FlyteURLs flyte_urls = 17;
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          flyteidl.admin.Common.FlyteURLs, flyteidl.admin.Common.FlyteURLs.Builder, flyteidl.admin.Common.FlyteURLsOrBuilder> 
+          getFlyteUrlsFieldBuilder() {
+        if (flyteUrlsBuilder_ == null) {
+          flyteUrlsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              flyteidl.admin.Common.FlyteURLs, flyteidl.admin.Common.FlyteURLs.Builder, flyteidl.admin.Common.FlyteURLsOrBuilder>(
+                  getFlyteUrls(),
+                  getParentForChildren(),
+                  isClean());
+          flyteUrls_ = null;
+        }
+        return flyteUrlsBuilder_;
+      }
       @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
@@ -15554,16 +15748,17 @@ public flyteidl.admin.NodeExecutionOuterClass.NodeExecutionGetDataResponse getDe
       "CompiledWorkflowClosure\022\034\n\024dynamic_job_s" +
       "pec_uri\030\003 \001(\t\"Q\n\033NodeExecutionGetDataReq" +
       "uest\0222\n\002id\030\001 \001(\0132&.flyteidl.core.NodeExe" +
-      "cutionIdentifier\"\241\002\n\034NodeExecutionGetDat" +
+      "cutionIdentifier\"\320\002\n\034NodeExecutionGetDat" +
       "aResponse\022+\n\006inputs\030\001 \001(\0132\027.flyteidl.adm" +
       "in.UrlBlobB\002\030\001\022,\n\007outputs\030\002 \001(\0132\027.flytei" +
       "dl.admin.UrlBlobB\002\030\001\022.\n\013full_inputs\030\003 \001(" +
       "\0132\031.flyteidl.core.LiteralMap\022/\n\014full_out" +
       "puts\030\004 \001(\0132\031.flyteidl.core.LiteralMap\022E\n" +
       "\020dynamic_workflow\030\020 \001(\0132+.flyteidl.admin" +
-      ".DynamicWorkflowNodeMetadataB7Z5github.c" +
-      "om/flyteorg/flyteidl/gen/pb-go/flyteidl/" +
-      "adminb\006proto3"
+      ".DynamicWorkflowNodeMetadata\022-\n\nflyte_ur" +
+      "ls\030\021 \001(\0132\031.flyteidl.admin.FlyteURLsB7Z5g" +
+      "ithub.com/flyteorg/flyteidl/gen/pb-go/fl" +
+      "yteidl/adminb\006proto3"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
         new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
@@ -15656,7 +15851,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors(
     internal_static_flyteidl_admin_NodeExecutionGetDataResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_flyteidl_admin_NodeExecutionGetDataResponse_descriptor,
-        new java.lang.String[] { "Inputs", "Outputs", "FullInputs", "FullOutputs", "DynamicWorkflow", });
+        new java.lang.String[] { "Inputs", "Outputs", "FullInputs", "FullOutputs", "DynamicWorkflow", "FlyteUrls", });
     flyteidl.admin.Common.getDescriptor();
     flyteidl.core.Execution.getDescriptor();
     flyteidl.core.Catalog.getDescriptor();
diff --git a/gen/pb-java/flyteidl/admin/TaskExecutionOuterClass.java b/gen/pb-java/flyteidl/admin/TaskExecutionOuterClass.java
index df8c99c25..7094d57d6 100644
--- a/gen/pb-java/flyteidl/admin/TaskExecutionOuterClass.java
+++ b/gen/pb-java/flyteidl/admin/TaskExecutionOuterClass.java
@@ -10299,6 +10299,34 @@ public interface TaskExecutionGetDataResponseOrBuilder extends
      * .flyteidl.core.LiteralMap full_outputs = 4;
      */
     flyteidl.core.Literals.LiteralMapOrBuilder getFullOutputsOrBuilder();
+
+    /**
+     * 
+     * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+     * Deck will be empty for task
+     * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + boolean hasFlyteUrls(); + /** + *
+     * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+     * Deck will be empty for task
+     * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + flyteidl.admin.Common.FlyteURLs getFlyteUrls(); + /** + *
+     * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+     * Deck will be empty for task
+     * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + flyteidl.admin.Common.FlyteURLsOrBuilder getFlyteUrlsOrBuilder(); } /** *
@@ -10395,6 +10423,19 @@ private TaskExecutionGetDataResponse(
 
               break;
             }
+            case 42: {
+              flyteidl.admin.Common.FlyteURLs.Builder subBuilder = null;
+              if (flyteUrls_ != null) {
+                subBuilder = flyteUrls_.toBuilder();
+              }
+              flyteUrls_ = input.readMessage(flyteidl.admin.Common.FlyteURLs.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(flyteUrls_);
+                flyteUrls_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -10565,6 +10606,42 @@ public flyteidl.core.Literals.LiteralMapOrBuilder getFullOutputsOrBuilder() {
       return getFullOutputs();
     }
 
+    public static final int FLYTE_URLS_FIELD_NUMBER = 5;
+    private flyteidl.admin.Common.FlyteURLs flyteUrls_;
+    /**
+     * 
+     * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+     * Deck will be empty for task
+     * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + public boolean hasFlyteUrls() { + return flyteUrls_ != null; + } + /** + *
+     * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+     * Deck will be empty for task
+     * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + public flyteidl.admin.Common.FlyteURLs getFlyteUrls() { + return flyteUrls_ == null ? flyteidl.admin.Common.FlyteURLs.getDefaultInstance() : flyteUrls_; + } + /** + *
+     * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+     * Deck will be empty for task
+     * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + public flyteidl.admin.Common.FlyteURLsOrBuilder getFlyteUrlsOrBuilder() { + return getFlyteUrls(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -10591,6 +10668,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (fullOutputs_ != null) { output.writeMessage(4, getFullOutputs()); } + if (flyteUrls_ != null) { + output.writeMessage(5, getFlyteUrls()); + } unknownFields.writeTo(output); } @@ -10616,6 +10696,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(4, getFullOutputs()); } + if (flyteUrls_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, getFlyteUrls()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -10651,6 +10735,11 @@ public boolean equals(final java.lang.Object obj) { if (!getFullOutputs() .equals(other.getFullOutputs())) return false; } + if (hasFlyteUrls() != other.hasFlyteUrls()) return false; + if (hasFlyteUrls()) { + if (!getFlyteUrls() + .equals(other.getFlyteUrls())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -10678,6 +10767,10 @@ public int hashCode() { hash = (37 * hash) + FULL_OUTPUTS_FIELD_NUMBER; hash = (53 * hash) + getFullOutputs().hashCode(); } + if (hasFlyteUrls()) { + hash = (37 * hash) + FLYTE_URLS_FIELD_NUMBER; + hash = (53 * hash) + getFlyteUrls().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -10839,6 +10932,12 @@ public Builder clear() { fullOutputs_ = null; fullOutputsBuilder_ = null; } + if (flyteUrlsBuilder_ == null) { + flyteUrls_ = null; + } else { + flyteUrls_ = null; + flyteUrlsBuilder_ = null; + } return this; } @@ -10885,6 +10984,11 @@ public flyteidl.admin.TaskExecutionOuterClass.TaskExecutionGetDataResponse build } else { result.fullOutputs_ = fullOutputsBuilder_.build(); } + if (flyteUrlsBuilder_ == null) { + result.flyteUrls_ = flyteUrls_; + } else { + result.flyteUrls_ = flyteUrlsBuilder_.build(); + } onBuilt(); return result; } @@ -10945,6 +11049,9 @@ public Builder mergeFrom(flyteidl.admin.TaskExecutionOuterClass.TaskExecutionGet if (other.hasFullOutputs()) { mergeFullOutputs(other.getFullOutputs()); } + if (other.hasFlyteUrls()) { + mergeFlyteUrls(other.getFlyteUrls()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -11603,6 +11710,168 @@ public flyteidl.core.Literals.LiteralMapOrBuilder getFullOutputsOrBuilder() { } return fullOutputsBuilder_; } + + private flyteidl.admin.Common.FlyteURLs flyteUrls_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.FlyteURLs, flyteidl.admin.Common.FlyteURLs.Builder, flyteidl.admin.Common.FlyteURLsOrBuilder> flyteUrlsBuilder_; + /** + *
+       * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+       * Deck will be empty for task
+       * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + public boolean hasFlyteUrls() { + return flyteUrlsBuilder_ != null || flyteUrls_ != null; + } + /** + *
+       * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+       * Deck will be empty for task
+       * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + public flyteidl.admin.Common.FlyteURLs getFlyteUrls() { + if (flyteUrlsBuilder_ == null) { + return flyteUrls_ == null ? flyteidl.admin.Common.FlyteURLs.getDefaultInstance() : flyteUrls_; + } else { + return flyteUrlsBuilder_.getMessage(); + } + } + /** + *
+       * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+       * Deck will be empty for task
+       * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + public Builder setFlyteUrls(flyteidl.admin.Common.FlyteURLs value) { + if (flyteUrlsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + flyteUrls_ = value; + onChanged(); + } else { + flyteUrlsBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+       * Deck will be empty for task
+       * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + public Builder setFlyteUrls( + flyteidl.admin.Common.FlyteURLs.Builder builderForValue) { + if (flyteUrlsBuilder_ == null) { + flyteUrls_ = builderForValue.build(); + onChanged(); + } else { + flyteUrlsBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+       * Deck will be empty for task
+       * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + public Builder mergeFlyteUrls(flyteidl.admin.Common.FlyteURLs value) { + if (flyteUrlsBuilder_ == null) { + if (flyteUrls_ != null) { + flyteUrls_ = + flyteidl.admin.Common.FlyteURLs.newBuilder(flyteUrls_).mergeFrom(value).buildPartial(); + } else { + flyteUrls_ = value; + } + onChanged(); + } else { + flyteUrlsBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+       * Deck will be empty for task
+       * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + public Builder clearFlyteUrls() { + if (flyteUrlsBuilder_ == null) { + flyteUrls_ = null; + onChanged(); + } else { + flyteUrls_ = null; + flyteUrlsBuilder_ = null; + } + + return this; + } + /** + *
+       * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+       * Deck will be empty for task
+       * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + public flyteidl.admin.Common.FlyteURLs.Builder getFlyteUrlsBuilder() { + + onChanged(); + return getFlyteUrlsFieldBuilder().getBuilder(); + } + /** + *
+       * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+       * Deck will be empty for task
+       * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + public flyteidl.admin.Common.FlyteURLsOrBuilder getFlyteUrlsOrBuilder() { + if (flyteUrlsBuilder_ != null) { + return flyteUrlsBuilder_.getMessageOrBuilder(); + } else { + return flyteUrls_ == null ? + flyteidl.admin.Common.FlyteURLs.getDefaultInstance() : flyteUrls_; + } + } + /** + *
+       * flyte tiny url to fetch a core.LiteralMap of task execution's IO
+       * Deck will be empty for task
+       * 
+ * + * .flyteidl.admin.FlyteURLs flyte_urls = 5; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.FlyteURLs, flyteidl.admin.Common.FlyteURLs.Builder, flyteidl.admin.Common.FlyteURLsOrBuilder> + getFlyteUrlsFieldBuilder() { + if (flyteUrlsBuilder_ == null) { + flyteUrlsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.FlyteURLs, flyteidl.admin.Common.FlyteURLs.Builder, flyteidl.admin.Common.FlyteURLsOrBuilder>( + getFlyteUrls(), + getParentForChildren(), + isClean()); + flyteUrls_ = null; + } + return flyteUrlsBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -11745,14 +12014,15 @@ public flyteidl.admin.TaskExecutionOuterClass.TaskExecutionGetDataResponse getDe "curred_at\030\001 \001(\0132\032.google.protobuf.Timest" + "amp\022\017\n\007message\030\002 \001(\t\"Q\n\033TaskExecutionGet" + "DataRequest\0222\n\002id\030\001 \001(\0132&.flyteidl.core." + - "TaskExecutionIdentifier\"\332\001\n\034TaskExecutio" + + "TaskExecutionIdentifier\"\211\002\n\034TaskExecutio" + "nGetDataResponse\022+\n\006inputs\030\001 \001(\0132\027.flyte" + "idl.admin.UrlBlobB\002\030\001\022,\n\007outputs\030\002 \001(\0132\027" + ".flyteidl.admin.UrlBlobB\002\030\001\022.\n\013full_inpu" + "ts\030\003 \001(\0132\031.flyteidl.core.LiteralMap\022/\n\014f" + "ull_outputs\030\004 \001(\0132\031.flyteidl.core.Litera" + - "lMapB7Z5github.com/flyteorg/flyteidl/gen" + - "/pb-go/flyteidl/adminb\006proto3" + "lMap\022-\n\nflyte_urls\030\005 \001(\0132\031.flyteidl.admi" + + "n.FlyteURLsB7Z5github.com/flyteorg/flyte" + + "idl/gen/pb-go/flyteidl/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -11821,7 +12091,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_TaskExecutionGetDataResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_TaskExecutionGetDataResponse_descriptor, - new java.lang.String[] { "Inputs", "Outputs", "FullInputs", "FullOutputs", }); + new java.lang.String[] { "Inputs", "Outputs", "FullInputs", "FullOutputs", "FlyteUrls", }); flyteidl.admin.Common.getDescriptor(); flyteidl.core.Execution.getDescriptor(); flyteidl.core.IdentifierOuterClass.getDescriptor(); diff --git a/gen/pb-java/flyteidl/service/Admin.java b/gen/pb-java/flyteidl/service/Admin.java index c81822aed..193fc74e2 100644 --- a/gen/pb-java/flyteidl/service/Admin.java +++ b/gen/pb-java/flyteidl/service/Admin.java @@ -38,260 +38,258 @@ public static void registerAllExtensions( "admin/task_execution.proto\032\034flyteidl/adm" + "in/version.proto\032\033flyteidl/admin/common." + "proto\032\'flyteidl/admin/description_entity" + - ".proto\032\036flyteidl/core/identifier.proto\032\033" + - "flyteidl/core/metrics.proto2\204N\n\014AdminSer" + - "vice\022m\n\nCreateTask\022!.flyteidl.admin.Task" + - "CreateRequest\032\".flyteidl.admin.TaskCreat" + - "eResponse\"\030\202\323\344\223\002\022\"\r/api/v1/tasks:\001*\022\210\001\n\007" + - "GetTask\022 .flyteidl.admin.ObjectGetReques" + - "t\032\024.flyteidl.admin.Task\"E\202\323\344\223\002?\022=/api/v1" + - "/tasks/{id.project}/{id.domain}/{id.name" + - "}/{id.version}\022\227\001\n\013ListTaskIds\0220.flyteid" + - "l.admin.NamedEntityIdentifierListRequest" + - "\032).flyteidl.admin.NamedEntityIdentifierL" + - "ist\"+\202\323\344\223\002%\022#/api/v1/task_ids/{project}/" + - "{domain}\022\256\001\n\tListTasks\022#.flyteidl.admin." + - "ResourceListRequest\032\030.flyteidl.admin.Tas" + - "kList\"b\202\323\344\223\002\\\0220/api/v1/tasks/{id.project" + - "}/{id.domain}/{id.name}Z(\022&/api/v1/tasks" + - "/{id.project}/{id.domain}\022}\n\016CreateWorkf" + - "low\022%.flyteidl.admin.WorkflowCreateReque" + - "st\032&.flyteidl.admin.WorkflowCreateRespon" + - "se\"\034\202\323\344\223\002\026\"\021/api/v1/workflows:\001*\022\224\001\n\013Get" + - "Workflow\022 .flyteidl.admin.ObjectGetReque" + - "st\032\030.flyteidl.admin.Workflow\"I\202\323\344\223\002C\022A/a" + - "pi/v1/workflows/{id.project}/{id.domain}" + - "/{id.name}/{id.version}\022\237\001\n\017ListWorkflow" + - "Ids\0220.flyteidl.admin.NamedEntityIdentifi" + - "erListRequest\032).flyteidl.admin.NamedEnti" + - "tyIdentifierList\"/\202\323\344\223\002)\022\'/api/v1/workfl" + - "ow_ids/{project}/{domain}\022\276\001\n\rListWorkfl" + - "ows\022#.flyteidl.admin.ResourceListRequest" + - "\032\034.flyteidl.admin.WorkflowList\"j\202\323\344\223\002d\0224" + - "/api/v1/workflows/{id.project}/{id.domai" + - "n}/{id.name}Z,\022*/api/v1/workflows/{id.pr" + - "oject}/{id.domain}\022\206\001\n\020CreateLaunchPlan\022" + - "\'.flyteidl.admin.LaunchPlanCreateRequest" + - "\032(.flyteidl.admin.LaunchPlanCreateRespon" + - "se\"\037\202\323\344\223\002\031\"\024/api/v1/launch_plans:\001*\022\233\001\n\r" + - "GetLaunchPlan\022 .flyteidl.admin.ObjectGet" + - "Request\032\032.flyteidl.admin.LaunchPlan\"L\202\323\344" + - "\223\002F\022D/api/v1/launch_plans/{id.project}/{" + - "id.domain}/{id.name}/{id.version}\022\242\001\n\023Ge" + - "tActiveLaunchPlan\022\'.flyteidl.admin.Activ" + - "eLaunchPlanRequest\032\032.flyteidl.admin.Laun" + - "chPlan\"F\202\323\344\223\002@\022>/api/v1/active_launch_pl" + - "ans/{id.project}/{id.domain}/{id.name}\022\234" + - "\001\n\025ListActiveLaunchPlans\022+.flyteidl.admi" + - "n.ActiveLaunchPlanListRequest\032\036.flyteidl" + - ".admin.LaunchPlanList\"6\202\323\344\223\0020\022./api/v1/a" + - "ctive_launch_plans/{project}/{domain}\022\244\001" + - "\n\021ListLaunchPlanIds\0220.flyteidl.admin.Nam" + - "edEntityIdentifierListRequest\032).flyteidl" + - ".admin.NamedEntityIdentifierList\"2\202\323\344\223\002," + - "\022*/api/v1/launch_plan_ids/{project}/{dom" + - "ain}\022\310\001\n\017ListLaunchPlans\022#.flyteidl.admi" + - "n.ResourceListRequest\032\036.flyteidl.admin.L" + - "aunchPlanList\"p\202\323\344\223\002j\0227/api/v1/launch_pl" + - "ans/{id.project}/{id.domain}/{id.name}Z/" + - "\022-/api/v1/launch_plans/{id.project}/{id." + - "domain}\022\266\001\n\020UpdateLaunchPlan\022\'.flyteidl." + - "admin.LaunchPlanUpdateRequest\032(.flyteidl" + - ".admin.LaunchPlanUpdateResponse\"O\202\323\344\223\002I\032" + - "D/api/v1/launch_plans/{id.project}/{id.d" + - "omain}/{id.name}/{id.version}:\001*\022\201\001\n\017Cre" + - "ateExecution\022&.flyteidl.admin.ExecutionC" + - "reateRequest\032\'.flyteidl.admin.ExecutionC" + - "reateResponse\"\035\202\323\344\223\002\027\"\022/api/v1/execution" + - "s:\001*\022\216\001\n\021RelaunchExecution\022(.flyteidl.ad" + - "min.ExecutionRelaunchRequest\032\'.flyteidl." + - "admin.ExecutionCreateResponse\"&\202\323\344\223\002 \"\033/" + - "api/v1/executions/relaunch:\001*\022\213\001\n\020Recove" + - "rExecution\022\'.flyteidl.admin.ExecutionRec" + - "overRequest\032\'.flyteidl.admin.ExecutionCr" + - "eateResponse\"%\202\323\344\223\002\037\"\032/api/v1/executions" + - "/recover:\001*\022\225\001\n\014GetExecution\022+.flyteidl." + - "admin.WorkflowExecutionGetRequest\032\031.flyt" + - "eidl.admin.Execution\"=\202\323\344\223\0027\0225/api/v1/ex" + - "ecutions/{id.project}/{id.domain}/{id.na" + - "me}\022\244\001\n\017UpdateExecution\022&.flyteidl.admin" + - ".ExecutionUpdateRequest\032\'.flyteidl.admin" + - ".ExecutionUpdateResponse\"@\202\323\344\223\002:\0325/api/v" + - "1/executions/{id.project}/{id.domain}/{i" + - "d.name}:\001*\022\271\001\n\020GetExecutionData\022/.flytei" + - "dl.admin.WorkflowExecutionGetDataRequest" + - "\0320.flyteidl.admin.WorkflowExecutionGetDa" + - "taResponse\"B\202\323\344\223\002<\022:/api/v1/data/executi" + - "ons/{id.project}/{id.domain}/{id.name}\022\211" + - "\001\n\016ListExecutions\022#.flyteidl.admin.Resou" + - "rceListRequest\032\035.flyteidl.admin.Executio" + - "nList\"3\202\323\344\223\002-\022+/api/v1/executions/{id.pr" + - "oject}/{id.domain}\022\255\001\n\022TerminateExecutio" + - "n\022).flyteidl.admin.ExecutionTerminateReq" + - "uest\032*.flyteidl.admin.ExecutionTerminate" + - "Response\"@\202\323\344\223\002:*5/api/v1/executions/{id" + - ".project}/{id.domain}/{id.name}:\001*\022\322\001\n\020G" + - "etNodeExecution\022\'.flyteidl.admin.NodeExe" + - "cutionGetRequest\032\035.flyteidl.admin.NodeEx" + - "ecution\"v\202\323\344\223\002p\022n/api/v1/node_executions" + - "/{id.execution_id.project}/{id.execution" + - "_id.domain}/{id.execution_id.name}/{id.n" + - "ode_id}\022\336\001\n\022ListNodeExecutions\022(.flyteid" + - "l.admin.NodeExecutionListRequest\032!.flyte" + - "idl.admin.NodeExecutionList\"{\202\323\344\223\002u\022s/ap" + - "i/v1/node_executions/{workflow_execution" + - "_id.project}/{workflow_execution_id.doma" + - "in}/{workflow_execution_id.name}\022\245\004\n\031Lis" + - "tNodeExecutionsForTask\022/.flyteidl.admin." + - "NodeExecutionForTaskListRequest\032!.flytei" + - "dl.admin.NodeExecutionList\"\263\003\202\323\344\223\002\254\003\022\251\003/" + - "api/v1/children/task_executions/{task_ex" + - "ecution_id.node_execution_id.execution_i" + - "d.project}/{task_execution_id.node_execu" + - "tion_id.execution_id.domain}/{task_execu" + - "tion_id.node_execution_id.execution_id.n" + - "ame}/{task_execution_id.node_execution_i" + - "d.node_id}/{task_execution_id.task_id.pr" + - "oject}/{task_execution_id.task_id.domain" + - "}/{task_execution_id.task_id.name}/{task" + - "_execution_id.task_id.version}/{task_exe" + - "cution_id.retry_attempt}\022\356\001\n\024GetNodeExec" + - "utionData\022+.flyteidl.admin.NodeExecution" + - "GetDataRequest\032,.flyteidl.admin.NodeExec" + - "utionGetDataResponse\"{\202\323\344\223\002u\022s/api/v1/da" + - "ta/node_executions/{id.execution_id.proj" + - "ect}/{id.execution_id.domain}/{id.execut" + - "ion_id.name}/{id.node_id}\022\177\n\017RegisterPro" + - "ject\022&.flyteidl.admin.ProjectRegisterReq" + - "uest\032\'.flyteidl.admin.ProjectRegisterRes" + - "ponse\"\033\202\323\344\223\002\025\"\020/api/v1/projects:\001*\022q\n\rUp" + - "dateProject\022\027.flyteidl.admin.Project\032%.f" + - "lyteidl.admin.ProjectUpdateResponse\" \202\323\344" + - "\223\002\032\032\025/api/v1/projects/{id}:\001*\022f\n\014ListPro" + - "jects\022\".flyteidl.admin.ProjectListReques" + - "t\032\030.flyteidl.admin.Projects\"\030\202\323\344\223\002\022\022\020/ap" + - "i/v1/projects\022\231\001\n\023CreateWorkflowEvent\022-." + - "flyteidl.admin.WorkflowExecutionEventReq" + - "uest\032..flyteidl.admin.WorkflowExecutionE" + - "ventResponse\"#\202\323\344\223\002\035\"\030/api/v1/events/wor" + - "kflows:\001*\022\211\001\n\017CreateNodeEvent\022).flyteidl" + - ".admin.NodeExecutionEventRequest\032*.flyte" + - "idl.admin.NodeExecutionEventResponse\"\037\202\323" + - "\344\223\002\031\"\024/api/v1/events/nodes:\001*\022\211\001\n\017Create" + - "TaskEvent\022).flyteidl.admin.TaskExecution" + - "EventRequest\032*.flyteidl.admin.TaskExecut" + - "ionEventResponse\"\037\202\323\344\223\002\031\"\024/api/v1/events" + - "/tasks:\001*\022\200\003\n\020GetTaskExecution\022\'.flyteid" + - "l.admin.TaskExecutionGetRequest\032\035.flytei" + - "dl.admin.TaskExecution\"\243\002\202\323\344\223\002\234\002\022\231\002/api/" + - "v1/task_executions/{id.node_execution_id" + - ".execution_id.project}/{id.node_executio" + - "n_id.execution_id.domain}/{id.node_execu" + - "tion_id.execution_id.name}/{id.node_exec" + - "ution_id.node_id}/{id.task_id.project}/{" + - "id.task_id.domain}/{id.task_id.name}/{id" + - ".task_id.version}/{id.retry_attempt}\022\230\002\n" + - "\022ListTaskExecutions\022(.flyteidl.admin.Tas" + - "kExecutionListRequest\032!.flyteidl.admin.T" + - "askExecutionList\"\264\001\202\323\344\223\002\255\001\022\252\001/api/v1/tas" + - "k_executions/{node_execution_id.executio" + - "n_id.project}/{node_execution_id.executi" + - "on_id.domain}/{node_execution_id.executi" + - "on_id.name}/{node_execution_id.node_id}\022" + - "\234\003\n\024GetTaskExecutionData\022+.flyteidl.admi" + - "n.TaskExecutionGetDataRequest\032,.flyteidl" + - ".admin.TaskExecutionGetDataResponse\"\250\002\202\323" + - "\344\223\002\241\002\022\236\002/api/v1/data/task_executions/{id" + - ".node_execution_id.execution_id.project}" + - "/{id.node_execution_id.execution_id.doma" + - "in}/{id.node_execution_id.execution_id.n" + - "ame}/{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}\022\343\001\n\035UpdateProjectDomainAt" + - "tributes\0224.flyteidl.admin.ProjectDomainA" + - "ttributesUpdateRequest\0325.flyteidl.admin." + - "ProjectDomainAttributesUpdateResponse\"U\202" + - "\323\344\223\002O\032J/api/v1/project_domain_attributes" + - "/{attributes.project}/{attributes.domain" + - "}:\001*\022\301\001\n\032GetProjectDomainAttributes\0221.fl" + - "yteidl.admin.ProjectDomainAttributesGetR" + - "equest\0322.flyteidl.admin.ProjectDomainAtt" + - "ributesGetResponse\"<\202\323\344\223\0026\0224/api/v1/proj" + - "ect_domain_attributes/{project}/{domain}" + - "\022\315\001\n\035DeleteProjectDomainAttributes\0224.fly" + - "teidl.admin.ProjectDomainAttributesDelet" + - "eRequest\0325.flyteidl.admin.ProjectDomainA" + - "ttributesDeleteResponse\"?\202\323\344\223\0029*4/api/v1" + - "/project_domain_attributes/{project}/{do" + - "main}:\001*\022\266\001\n\027UpdateProjectAttributes\022..f" + - "lyteidl.admin.ProjectAttributesUpdateReq" + - "uest\032/.flyteidl.admin.ProjectAttributesU" + - "pdateResponse\":\202\323\344\223\0024\032//api/v1/project_a" + - "ttributes/{attributes.project}:\001*\022\237\001\n\024Ge" + - "tProjectAttributes\022+.flyteidl.admin.Proj" + - "ectAttributesGetRequest\032,.flyteidl.admin" + - ".ProjectAttributesGetResponse\",\202\323\344\223\002&\022$/" + - "api/v1/project_attributes/{project}\022\253\001\n\027" + - "DeleteProjectAttributes\022..flyteidl.admin" + - ".ProjectAttributesDeleteRequest\032/.flytei" + - "dl.admin.ProjectAttributesDeleteResponse" + - "\"/\202\323\344\223\002)*$/api/v1/project_attributes/{pr" + - "oject}:\001*\022\344\001\n\030UpdateWorkflowAttributes\022/" + - ".flyteidl.admin.WorkflowAttributesUpdate" + - "Request\0320.flyteidl.admin.WorkflowAttribu" + - "tesUpdateResponse\"e\202\323\344\223\002_\032Z/api/v1/workf" + - "low_attributes/{attributes.project}/{att" + - "ributes.domain}/{attributes.workflow}:\001*" + - "\022\267\001\n\025GetWorkflowAttributes\022,.flyteidl.ad" + - "min.WorkflowAttributesGetRequest\032-.flyte" + - "idl.admin.WorkflowAttributesGetResponse\"" + - "A\202\323\344\223\002;\0229/api/v1/workflow_attributes/{pr" + - "oject}/{domain}/{workflow}\022\303\001\n\030DeleteWor" + - "kflowAttributes\022/.flyteidl.admin.Workflo" + - "wAttributesDeleteRequest\0320.flyteidl.admi" + - "n.WorkflowAttributesDeleteResponse\"D\202\323\344\223" + - "\002>*9/api/v1/workflow_attributes/{project" + - "}/{domain}/{workflow}:\001*\022\240\001\n\027ListMatchab" + - "leAttributes\022..flyteidl.admin.ListMatcha" + - "bleAttributesRequest\032/.flyteidl.admin.Li" + - "stMatchableAttributesResponse\"$\202\323\344\223\002\036\022\034/" + - "api/v1/matchable_attributes\022\237\001\n\021ListName" + - "dEntities\022&.flyteidl.admin.NamedEntityLi" + - "stRequest\032\037.flyteidl.admin.NamedEntityLi" + - "st\"A\202\323\344\223\002;\0229/api/v1/named_entities/{reso" + - "urce_type}/{project}/{domain}\022\247\001\n\016GetNam" + - "edEntity\022%.flyteidl.admin.NamedEntityGet" + - "Request\032\033.flyteidl.admin.NamedEntity\"Q\202\323" + - "\344\223\002K\022I/api/v1/named_entities/{resource_t" + - "ype}/{id.project}/{id.domain}/{id.name}\022" + - "\276\001\n\021UpdateNamedEntity\022(.flyteidl.admin.N" + - "amedEntityUpdateRequest\032).flyteidl.admin" + - ".NamedEntityUpdateResponse\"T\202\323\344\223\002N\032I/api" + - "/v1/named_entities/{resource_type}/{id.p" + - "roject}/{id.domain}/{id.name}:\001*\022l\n\nGetV" + - "ersion\022!.flyteidl.admin.GetVersionReques" + - "t\032\".flyteidl.admin.GetVersionResponse\"\027\202" + - "\323\344\223\002\021\022\017/api/v1/version\022\304\001\n\024GetDescriptio" + - "nEntity\022 .flyteidl.admin.ObjectGetReques" + - "t\032!.flyteidl.admin.DescriptionEntity\"g\202\323" + - "\344\223\002a\022_/api/v1/description_entities/{id.r" + + ".proto2\204N\n\014AdminService\022m\n\nCreateTask\022!." + + "flyteidl.admin.TaskCreateRequest\032\".flyte" + + "idl.admin.TaskCreateResponse\"\030\202\323\344\223\002\022\"\r/a" + + "pi/v1/tasks:\001*\022\210\001\n\007GetTask\022 .flyteidl.ad" + + "min.ObjectGetRequest\032\024.flyteidl.admin.Ta" + + "sk\"E\202\323\344\223\002?\022=/api/v1/tasks/{id.project}/{" + + "id.domain}/{id.name}/{id.version}\022\227\001\n\013Li" + + "stTaskIds\0220.flyteidl.admin.NamedEntityId" + + "entifierListRequest\032).flyteidl.admin.Nam" + + "edEntityIdentifierList\"+\202\323\344\223\002%\022#/api/v1/" + + "task_ids/{project}/{domain}\022\256\001\n\tListTask" + + "s\022#.flyteidl.admin.ResourceListRequest\032\030" + + ".flyteidl.admin.TaskList\"b\202\323\344\223\002\\\0220/api/v" + + "1/tasks/{id.project}/{id.domain}/{id.nam" + + "e}Z(\022&/api/v1/tasks/{id.project}/{id.dom" + + "ain}\022}\n\016CreateWorkflow\022%.flyteidl.admin." + + "WorkflowCreateRequest\032&.flyteidl.admin.W" + + "orkflowCreateResponse\"\034\202\323\344\223\002\026\"\021/api/v1/w" + + "orkflows:\001*\022\224\001\n\013GetWorkflow\022 .flyteidl.a" + + "dmin.ObjectGetRequest\032\030.flyteidl.admin.W" + + "orkflow\"I\202\323\344\223\002C\022A/api/v1/workflows/{id.p" + + "roject}/{id.domain}/{id.name}/{id.versio" + + "n}\022\237\001\n\017ListWorkflowIds\0220.flyteidl.admin." + + "NamedEntityIdentifierListRequest\032).flyte" + + "idl.admin.NamedEntityIdentifierList\"/\202\323\344" + + "\223\002)\022\'/api/v1/workflow_ids/{project}/{dom" + + "ain}\022\276\001\n\rListWorkflows\022#.flyteidl.admin." + + "ResourceListRequest\032\034.flyteidl.admin.Wor" + + "kflowList\"j\202\323\344\223\002d\0224/api/v1/workflows/{id" + + ".project}/{id.domain}/{id.name}Z,\022*/api/" + + "v1/workflows/{id.project}/{id.domain}\022\206\001" + + "\n\020CreateLaunchPlan\022\'.flyteidl.admin.Laun" + + "chPlanCreateRequest\032(.flyteidl.admin.Lau" + + "nchPlanCreateResponse\"\037\202\323\344\223\002\031\"\024/api/v1/l" + + "aunch_plans:\001*\022\233\001\n\rGetLaunchPlan\022 .flyte" + + "idl.admin.ObjectGetRequest\032\032.flyteidl.ad" + + "min.LaunchPlan\"L\202\323\344\223\002F\022D/api/v1/launch_p" + + "lans/{id.project}/{id.domain}/{id.name}/" + + "{id.version}\022\242\001\n\023GetActiveLaunchPlan\022\'.f" + + "lyteidl.admin.ActiveLaunchPlanRequest\032\032." + + "flyteidl.admin.LaunchPlan\"F\202\323\344\223\002@\022>/api/" + + "v1/active_launch_plans/{id.project}/{id." + + "domain}/{id.name}\022\234\001\n\025ListActiveLaunchPl" + + "ans\022+.flyteidl.admin.ActiveLaunchPlanLis" + + "tRequest\032\036.flyteidl.admin.LaunchPlanList" + + "\"6\202\323\344\223\0020\022./api/v1/active_launch_plans/{p" + + "roject}/{domain}\022\244\001\n\021ListLaunchPlanIds\0220" + + ".flyteidl.admin.NamedEntityIdentifierLis" + + "tRequest\032).flyteidl.admin.NamedEntityIde" + + "ntifierList\"2\202\323\344\223\002,\022*/api/v1/launch_plan" + + "_ids/{project}/{domain}\022\310\001\n\017ListLaunchPl" + + "ans\022#.flyteidl.admin.ResourceListRequest" + + "\032\036.flyteidl.admin.LaunchPlanList\"p\202\323\344\223\002j" + + "\0227/api/v1/launch_plans/{id.project}/{id." + + "domain}/{id.name}Z/\022-/api/v1/launch_plan" + + "s/{id.project}/{id.domain}\022\266\001\n\020UpdateLau" + + "nchPlan\022\'.flyteidl.admin.LaunchPlanUpdat" + + "eRequest\032(.flyteidl.admin.LaunchPlanUpda" + + "teResponse\"O\202\323\344\223\002I\032D/api/v1/launch_plans" + + "/{id.project}/{id.domain}/{id.name}/{id." + + "version}:\001*\022\201\001\n\017CreateExecution\022&.flytei" + + "dl.admin.ExecutionCreateRequest\032\'.flytei" + + "dl.admin.ExecutionCreateResponse\"\035\202\323\344\223\002\027" + + "\"\022/api/v1/executions:\001*\022\216\001\n\021RelaunchExec" + + "ution\022(.flyteidl.admin.ExecutionRelaunch" + + "Request\032\'.flyteidl.admin.ExecutionCreate" + + "Response\"&\202\323\344\223\002 \"\033/api/v1/executions/rel" + + "aunch:\001*\022\213\001\n\020RecoverExecution\022\'.flyteidl" + + ".admin.ExecutionRecoverRequest\032\'.flyteid" + + "l.admin.ExecutionCreateResponse\"%\202\323\344\223\002\037\"" + + "\032/api/v1/executions/recover:\001*\022\225\001\n\014GetEx" + + "ecution\022+.flyteidl.admin.WorkflowExecuti" + + "onGetRequest\032\031.flyteidl.admin.Execution\"" + + "=\202\323\344\223\0027\0225/api/v1/executions/{id.project}" + + "/{id.domain}/{id.name}\022\244\001\n\017UpdateExecuti" + + "on\022&.flyteidl.admin.ExecutionUpdateReque" + + "st\032\'.flyteidl.admin.ExecutionUpdateRespo" + + "nse\"@\202\323\344\223\002:\0325/api/v1/executions/{id.proj" + + "ect}/{id.domain}/{id.name}:\001*\022\271\001\n\020GetExe" + + "cutionData\022/.flyteidl.admin.WorkflowExec" + + "utionGetDataRequest\0320.flyteidl.admin.Wor" + + "kflowExecutionGetDataResponse\"B\202\323\344\223\002<\022:/" + + "api/v1/data/executions/{id.project}/{id." + + "domain}/{id.name}\022\211\001\n\016ListExecutions\022#.f" + + "lyteidl.admin.ResourceListRequest\032\035.flyt" + + "eidl.admin.ExecutionList\"3\202\323\344\223\002-\022+/api/v" + + "1/executions/{id.project}/{id.domain}\022\255\001" + + "\n\022TerminateExecution\022).flyteidl.admin.Ex" + + "ecutionTerminateRequest\032*.flyteidl.admin" + + ".ExecutionTerminateResponse\"@\202\323\344\223\002:*5/ap" + + "i/v1/executions/{id.project}/{id.domain}" + + "/{id.name}:\001*\022\322\001\n\020GetNodeExecution\022\'.fly" + + "teidl.admin.NodeExecutionGetRequest\032\035.fl" + + "yteidl.admin.NodeExecution\"v\202\323\344\223\002p\022n/api" + + "/v1/node_executions/{id.execution_id.pro" + + "ject}/{id.execution_id.domain}/{id.execu" + + "tion_id.name}/{id.node_id}\022\336\001\n\022ListNodeE" + + "xecutions\022(.flyteidl.admin.NodeExecution" + + "ListRequest\032!.flyteidl.admin.NodeExecuti" + + "onList\"{\202\323\344\223\002u\022s/api/v1/node_executions/" + + "{workflow_execution_id.project}/{workflo" + + "w_execution_id.domain}/{workflow_executi" + + "on_id.name}\022\245\004\n\031ListNodeExecutionsForTas" + + "k\022/.flyteidl.admin.NodeExecutionForTaskL" + + "istRequest\032!.flyteidl.admin.NodeExecutio" + + "nList\"\263\003\202\323\344\223\002\254\003\022\251\003/api/v1/children/task_" + + "executions/{task_execution_id.node_execu" + + "tion_id.execution_id.project}/{task_exec" + + "ution_id.node_execution_id.execution_id." + + "domain}/{task_execution_id.node_executio" + + "n_id.execution_id.name}/{task_execution_" + + "id.node_execution_id.node_id}/{task_exec" + + "ution_id.task_id.project}/{task_executio" + + "n_id.task_id.domain}/{task_execution_id." + + "task_id.name}/{task_execution_id.task_id" + + ".version}/{task_execution_id.retry_attem" + + "pt}\022\356\001\n\024GetNodeExecutionData\022+.flyteidl." + + "admin.NodeExecutionGetDataRequest\032,.flyt" + + "eidl.admin.NodeExecutionGetDataResponse\"" + + "{\202\323\344\223\002u\022s/api/v1/data/node_executions/{i" + + "d.execution_id.project}/{id.execution_id" + + ".domain}/{id.execution_id.name}/{id.node" + + "_id}\022\177\n\017RegisterProject\022&.flyteidl.admin" + + ".ProjectRegisterRequest\032\'.flyteidl.admin" + + ".ProjectRegisterResponse\"\033\202\323\344\223\002\025\"\020/api/v" + + "1/projects:\001*\022q\n\rUpdateProject\022\027.flyteid" + + "l.admin.Project\032%.flyteidl.admin.Project" + + "UpdateResponse\" \202\323\344\223\002\032\032\025/api/v1/projects" + + "/{id}:\001*\022f\n\014ListProjects\022\".flyteidl.admi" + + "n.ProjectListRequest\032\030.flyteidl.admin.Pr" + + "ojects\"\030\202\323\344\223\002\022\022\020/api/v1/projects\022\231\001\n\023Cre" + + "ateWorkflowEvent\022-.flyteidl.admin.Workfl" + + "owExecutionEventRequest\032..flyteidl.admin" + + ".WorkflowExecutionEventResponse\"#\202\323\344\223\002\035\"" + + "\030/api/v1/events/workflows:\001*\022\211\001\n\017CreateN" + + "odeEvent\022).flyteidl.admin.NodeExecutionE" + + "ventRequest\032*.flyteidl.admin.NodeExecuti" + + "onEventResponse\"\037\202\323\344\223\002\031\"\024/api/v1/events/" + + "nodes:\001*\022\211\001\n\017CreateTaskEvent\022).flyteidl." + + "admin.TaskExecutionEventRequest\032*.flytei" + + "dl.admin.TaskExecutionEventResponse\"\037\202\323\344" + + "\223\002\031\"\024/api/v1/events/tasks:\001*\022\200\003\n\020GetTask" + + "Execution\022\'.flyteidl.admin.TaskExecution" + + "GetRequest\032\035.flyteidl.admin.TaskExecutio" + + "n\"\243\002\202\323\344\223\002\234\002\022\231\002/api/v1/task_executions/{i" + + "d.node_execution_id.execution_id.project" + + "}/{id.node_execution_id.execution_id.dom" + + "ain}/{id.node_execution_id.execution_id." + + "name}/{id.node_execution_id.node_id}/{id" + + ".task_id.project}/{id.task_id.domain}/{i" + + "d.task_id.name}/{id.task_id.version}/{id" + + ".retry_attempt}\022\230\002\n\022ListTaskExecutions\022(" + + ".flyteidl.admin.TaskExecutionListRequest" + + "\032!.flyteidl.admin.TaskExecutionList\"\264\001\202\323" + + "\344\223\002\255\001\022\252\001/api/v1/task_executions/{node_ex" + + "ecution_id.execution_id.project}/{node_e" + + "xecution_id.execution_id.domain}/{node_e" + + "xecution_id.execution_id.name}/{node_exe" + + "cution_id.node_id}\022\234\003\n\024GetTaskExecutionD" + + "ata\022+.flyteidl.admin.TaskExecutionGetDat" + + "aRequest\032,.flyteidl.admin.TaskExecutionG" + + "etDataResponse\"\250\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/" + + "task_executions/{id.node_execution_id.ex" + + "ecution_id.project}/{id.node_execution_i" + + "d.execution_id.domain}/{id.node_executio" + + "n_id.execution_id.name}/{id.node_executi" + + "on_id.node_id}/{id.task_id.project}/{id." + + "task_id.domain}/{id.task_id.name}/{id.ta" + + "sk_id.version}/{id.retry_attempt}\022\343\001\n\035Up" + + "dateProjectDomainAttributes\0224.flyteidl.a" + + "dmin.ProjectDomainAttributesUpdateReques" + + "t\0325.flyteidl.admin.ProjectDomainAttribut" + + "esUpdateResponse\"U\202\323\344\223\002O\032J/api/v1/projec" + + "t_domain_attributes/{attributes.project}" + + "/{attributes.domain}:\001*\022\301\001\n\032GetProjectDo" + + "mainAttributes\0221.flyteidl.admin.ProjectD" + + "omainAttributesGetRequest\0322.flyteidl.adm" + + "in.ProjectDomainAttributesGetResponse\"<\202" + + "\323\344\223\0026\0224/api/v1/project_domain_attributes" + + "/{project}/{domain}\022\315\001\n\035DeleteProjectDom" + + "ainAttributes\0224.flyteidl.admin.ProjectDo" + + "mainAttributesDeleteRequest\0325.flyteidl.a" + + "dmin.ProjectDomainAttributesDeleteRespon" + + "se\"?\202\323\344\223\0029*4/api/v1/project_domain_attri" + + "butes/{project}/{domain}:\001*\022\266\001\n\027UpdatePr" + + "ojectAttributes\022..flyteidl.admin.Project" + + "AttributesUpdateRequest\032/.flyteidl.admin" + + ".ProjectAttributesUpdateResponse\":\202\323\344\223\0024" + + "\032//api/v1/project_attributes/{attributes" + + ".project}:\001*\022\237\001\n\024GetProjectAttributes\022+." + + "flyteidl.admin.ProjectAttributesGetReque" + + "st\032,.flyteidl.admin.ProjectAttributesGet" + + "Response\",\202\323\344\223\002&\022$/api/v1/project_attrib" + + "utes/{project}\022\253\001\n\027DeleteProjectAttribut" + + "es\022..flyteidl.admin.ProjectAttributesDel" + + "eteRequest\032/.flyteidl.admin.ProjectAttri" + + "butesDeleteResponse\"/\202\323\344\223\002)*$/api/v1/pro" + + "ject_attributes/{project}:\001*\022\344\001\n\030UpdateW" + + "orkflowAttributes\022/.flyteidl.admin.Workf" + + "lowAttributesUpdateRequest\0320.flyteidl.ad" + + "min.WorkflowAttributesUpdateResponse\"e\202\323" + + "\344\223\002_\032Z/api/v1/workflow_attributes/{attri" + + "butes.project}/{attributes.domain}/{attr" + + "ibutes.workflow}:\001*\022\267\001\n\025GetWorkflowAttri" + + "butes\022,.flyteidl.admin.WorkflowAttribute" + + "sGetRequest\032-.flyteidl.admin.WorkflowAtt" + + "ributesGetResponse\"A\202\323\344\223\002;\0229/api/v1/work" + + "flow_attributes/{project}/{domain}/{work" + + "flow}\022\303\001\n\030DeleteWorkflowAttributes\022/.fly" + + "teidl.admin.WorkflowAttributesDeleteRequ" + + "est\0320.flyteidl.admin.WorkflowAttributesD" + + "eleteResponse\"D\202\323\344\223\002>*9/api/v1/workflow_" + + "attributes/{project}/{domain}/{workflow}" + + ":\001*\022\240\001\n\027ListMatchableAttributes\022..flytei" + + "dl.admin.ListMatchableAttributesRequest\032" + + "/.flyteidl.admin.ListMatchableAttributes" + + "Response\"$\202\323\344\223\002\036\022\034/api/v1/matchable_attr" + + "ibutes\022\237\001\n\021ListNamedEntities\022&.flyteidl." + + "admin.NamedEntityListRequest\032\037.flyteidl." + + "admin.NamedEntityList\"A\202\323\344\223\002;\0229/api/v1/n" + + "amed_entities/{resource_type}/{project}/" + + "{domain}\022\247\001\n\016GetNamedEntity\022%.flyteidl.a" + + "dmin.NamedEntityGetRequest\032\033.flyteidl.ad" + + "min.NamedEntity\"Q\202\323\344\223\002K\022I/api/v1/named_e" + + "ntities/{resource_type}/{id.project}/{id" + + ".domain}/{id.name}\022\276\001\n\021UpdateNamedEntity" + + "\022(.flyteidl.admin.NamedEntityUpdateReque" + + "st\032).flyteidl.admin.NamedEntityUpdateRes" + + "ponse\"T\202\323\344\223\002N\032I/api/v1/named_entities/{r" + "esource_type}/{id.project}/{id.domain}/{" + - "id.name}/{id.version}\022\222\002\n\027ListDescriptio" + - "nEntities\022,.flyteidl.admin.DescriptionEn" + - "tityListRequest\032%.flyteidl.admin.Descrip" + - "tionEntityList\"\241\001\202\323\344\223\002\232\001\022O/api/v1/descri" + - "ption_entities/{resource_type}/{id.proje" + - "ct}/{id.domain}/{id.name}ZG\022E/api/v1/des" + - "cription_entities/{resource_type}/{id.pr" + - "oject}/{id.domain}\022\305\001\n\023GetExecutionMetri" + - "cs\0222.flyteidl.admin.WorkflowExecutionGet" + - "MetricsRequest\0323.flyteidl.admin.Workflow" + - "ExecutionGetMetricsResponse\"E\202\323\344\223\002?\022=/ap" + - "i/v1/metrics/executions/{id.project}/{id" + - ".domain}/{id.name}B9Z7github.com/flyteor" + - "g/flyteidl/gen/pb-go/flyteidl/serviceb\006p" + - "roto3" + "id.name}:\001*\022l\n\nGetVersion\022!.flyteidl.adm" + + "in.GetVersionRequest\032\".flyteidl.admin.Ge" + + "tVersionResponse\"\027\202\323\344\223\002\021\022\017/api/v1/versio" + + "n\022\304\001\n\024GetDescriptionEntity\022 .flyteidl.ad" + + "min.ObjectGetRequest\032!.flyteidl.admin.De" + + "scriptionEntity\"g\202\323\344\223\002a\022_/api/v1/descrip" + + "tion_entities/{id.resource_type}/{id.pro" + + "ject}/{id.domain}/{id.name}/{id.version}" + + "\022\222\002\n\027ListDescriptionEntities\022,.flyteidl." + + "admin.DescriptionEntityListRequest\032%.fly" + + "teidl.admin.DescriptionEntityList\"\241\001\202\323\344\223" + + "\002\232\001\022O/api/v1/description_entities/{resou" + + "rce_type}/{id.project}/{id.domain}/{id.n" + + "ame}ZG\022E/api/v1/description_entities/{re" + + "source_type}/{id.project}/{id.domain}\022\305\001" + + "\n\023GetExecutionMetrics\0222.flyteidl.admin.W" + + "orkflowExecutionGetMetricsRequest\0323.flyt" + + "eidl.admin.WorkflowExecutionGetMetricsRe" + + "sponse\"E\202\323\344\223\002?\022=/api/v1/metrics/executio" + + "ns/{id.project}/{id.domain}/{id.name}B9Z" + + "7github.com/flyteorg/flyteidl/gen/pb-go/" + + "flyteidl/serviceb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -320,8 +318,6 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.admin.VersionOuterClass.getDescriptor(), flyteidl.admin.Common.getDescriptor(), flyteidl.admin.DescriptionEntityOuterClass.getDescriptor(), - flyteidl.core.IdentifierOuterClass.getDescriptor(), - flyteidl.core.Metrics.getDescriptor(), }, assigner); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); @@ -344,8 +340,6 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.admin.VersionOuterClass.getDescriptor(); flyteidl.admin.Common.getDescriptor(); flyteidl.admin.DescriptionEntityOuterClass.getDescriptor(); - flyteidl.core.IdentifierOuterClass.getDescriptor(); - flyteidl.core.Metrics.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) diff --git a/gen/pb-java/flyteidl/service/Dataproxy.java b/gen/pb-java/flyteidl/service/Dataproxy.java index d083391d3..a97f26777 100644 --- a/gen/pb-java/flyteidl/service/Dataproxy.java +++ b/gen/pb-java/flyteidl/service/Dataproxy.java @@ -5411,34 +5411,34 @@ public interface CreateDownloadLinkResponseOrBuilder extends * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) *
* - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - java.util.List + @java.lang.Deprecated java.util.List getSignedUrlList(); /** *
      * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
      * 
* - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - int getSignedUrlCount(); + @java.lang.Deprecated int getSignedUrlCount(); /** *
      * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
      * 
* - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - java.lang.String getSignedUrl(int index); + @java.lang.Deprecated java.lang.String getSignedUrl(int index); /** *
      * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
      * 
* - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - com.google.protobuf.ByteString + @java.lang.Deprecated com.google.protobuf.ByteString getSignedUrlBytes(int index); /** @@ -5446,25 +5446,50 @@ public interface CreateDownloadLinkResponseOrBuilder extends * ExpiresAt defines when will the signed URL expire. *
* - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - boolean hasExpiresAt(); + @java.lang.Deprecated boolean hasExpiresAt(); /** *
      * ExpiresAt defines when will the signed URL expire.
      * 
* - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - com.google.protobuf.Timestamp getExpiresAt(); + @java.lang.Deprecated com.google.protobuf.Timestamp getExpiresAt(); /** *
      * ExpiresAt defines when will the signed URL expire.
      * 
* - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - com.google.protobuf.TimestampOrBuilder getExpiresAtOrBuilder(); + @java.lang.Deprecated com.google.protobuf.TimestampOrBuilder getExpiresAtOrBuilder(); + + /** + *
+     * New wrapper object containing the signed urls and expiration time
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + boolean hasPreSignedUrls(); + /** + *
+     * New wrapper object containing the signed urls and expiration time
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + flyteidl.service.Dataproxy.PreSignedURLs getPreSignedUrls(); + /** + *
+     * New wrapper object containing the signed urls and expiration time
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + flyteidl.service.Dataproxy.PreSignedURLsOrBuilder getPreSignedUrlsOrBuilder(); } /** *
@@ -5532,6 +5557,19 @@ private CreateDownloadLinkResponse(
 
               break;
             }
+            case 26: {
+              flyteidl.service.Dataproxy.PreSignedURLs.Builder subBuilder = null;
+              if (preSignedUrls_ != null) {
+                subBuilder = preSignedUrls_.toBuilder();
+              }
+              preSignedUrls_ = input.readMessage(flyteidl.service.Dataproxy.PreSignedURLs.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(preSignedUrls_);
+                preSignedUrls_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -5575,9 +5613,9 @@ private CreateDownloadLinkResponse(
      * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
      * 
* - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public com.google.protobuf.ProtocolStringList + @java.lang.Deprecated public com.google.protobuf.ProtocolStringList getSignedUrlList() { return signedUrl_; } @@ -5586,9 +5624,9 @@ private CreateDownloadLinkResponse( * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public int getSignedUrlCount() { + @java.lang.Deprecated public int getSignedUrlCount() { return signedUrl_.size(); } /** @@ -5596,9 +5634,9 @@ public int getSignedUrlCount() { * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public java.lang.String getSignedUrl(int index) { + @java.lang.Deprecated public java.lang.String getSignedUrl(int index) { return signedUrl_.get(index); } /** @@ -5606,9 +5644,9 @@ public java.lang.String getSignedUrl(int index) { * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public com.google.protobuf.ByteString + @java.lang.Deprecated public com.google.protobuf.ByteString getSignedUrlBytes(int index) { return signedUrl_.getByteString(index); } @@ -5620,9 +5658,9 @@ public java.lang.String getSignedUrl(int index) { * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - public boolean hasExpiresAt() { + @java.lang.Deprecated public boolean hasExpiresAt() { return expiresAt_ != null; } /** @@ -5630,9 +5668,9 @@ public boolean hasExpiresAt() { * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - public com.google.protobuf.Timestamp getExpiresAt() { + @java.lang.Deprecated public com.google.protobuf.Timestamp getExpiresAt() { return expiresAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expiresAt_; } /** @@ -5640,12 +5678,45 @@ public com.google.protobuf.Timestamp getExpiresAt() { * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - public com.google.protobuf.TimestampOrBuilder getExpiresAtOrBuilder() { + @java.lang.Deprecated public com.google.protobuf.TimestampOrBuilder getExpiresAtOrBuilder() { return getExpiresAt(); } + public static final int PRE_SIGNED_URLS_FIELD_NUMBER = 3; + private flyteidl.service.Dataproxy.PreSignedURLs preSignedUrls_; + /** + *
+     * New wrapper object containing the signed urls and expiration time
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + public boolean hasPreSignedUrls() { + return preSignedUrls_ != null; + } + /** + *
+     * New wrapper object containing the signed urls and expiration time
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + public flyteidl.service.Dataproxy.PreSignedURLs getPreSignedUrls() { + return preSignedUrls_ == null ? flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance() : preSignedUrls_; + } + /** + *
+     * New wrapper object containing the signed urls and expiration time
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + public flyteidl.service.Dataproxy.PreSignedURLsOrBuilder getPreSignedUrlsOrBuilder() { + return getPreSignedUrls(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -5666,6 +5737,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (expiresAt_ != null) { output.writeMessage(2, getExpiresAt()); } + if (preSignedUrls_ != null) { + output.writeMessage(3, getPreSignedUrls()); + } unknownFields.writeTo(output); } @@ -5687,6 +5761,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(2, getExpiresAt()); } + if (preSignedUrls_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getPreSignedUrls()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -5709,6 +5787,11 @@ public boolean equals(final java.lang.Object obj) { if (!getExpiresAt() .equals(other.getExpiresAt())) return false; } + if (hasPreSignedUrls() != other.hasPreSignedUrls()) return false; + if (hasPreSignedUrls()) { + if (!getPreSignedUrls() + .equals(other.getPreSignedUrls())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -5728,6 +5811,10 @@ public int hashCode() { hash = (37 * hash) + EXPIRES_AT_FIELD_NUMBER; hash = (53 * hash) + getExpiresAt().hashCode(); } + if (hasPreSignedUrls()) { + hash = (37 * hash) + PRE_SIGNED_URLS_FIELD_NUMBER; + hash = (53 * hash) + getPreSignedUrls().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -5873,6 +5960,12 @@ public Builder clear() { expiresAt_ = null; expiresAtBuilder_ = null; } + if (preSignedUrlsBuilder_ == null) { + preSignedUrls_ = null; + } else { + preSignedUrls_ = null; + preSignedUrlsBuilder_ = null; + } return this; } @@ -5911,6 +6004,11 @@ public flyteidl.service.Dataproxy.CreateDownloadLinkResponse buildPartial() { } else { result.expiresAt_ = expiresAtBuilder_.build(); } + if (preSignedUrlsBuilder_ == null) { + result.preSignedUrls_ = preSignedUrls_; + } else { + result.preSignedUrls_ = preSignedUrlsBuilder_.build(); + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -5973,6 +6071,9 @@ public Builder mergeFrom(flyteidl.service.Dataproxy.CreateDownloadLinkResponse o if (other.hasExpiresAt()) { mergeExpiresAt(other.getExpiresAt()); } + if (other.hasPreSignedUrls()) { + mergePreSignedUrls(other.getPreSignedUrls()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -6015,9 +6116,9 @@ private void ensureSignedUrlIsMutable() { * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public com.google.protobuf.ProtocolStringList + @java.lang.Deprecated public com.google.protobuf.ProtocolStringList getSignedUrlList() { return signedUrl_.getUnmodifiableView(); } @@ -6026,9 +6127,9 @@ private void ensureSignedUrlIsMutable() { * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public int getSignedUrlCount() { + @java.lang.Deprecated public int getSignedUrlCount() { return signedUrl_.size(); } /** @@ -6036,9 +6137,9 @@ public int getSignedUrlCount() { * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public java.lang.String getSignedUrl(int index) { + @java.lang.Deprecated public java.lang.String getSignedUrl(int index) { return signedUrl_.get(index); } /** @@ -6046,9 +6147,9 @@ public java.lang.String getSignedUrl(int index) { * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public com.google.protobuf.ByteString + @java.lang.Deprecated public com.google.protobuf.ByteString getSignedUrlBytes(int index) { return signedUrl_.getByteString(index); } @@ -6057,9 +6158,9 @@ public java.lang.String getSignedUrl(int index) { * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public Builder setSignedUrl( + @java.lang.Deprecated public Builder setSignedUrl( int index, java.lang.String value) { if (value == null) { throw new NullPointerException(); @@ -6074,9 +6175,9 @@ public Builder setSignedUrl( * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public Builder addSignedUrl( + @java.lang.Deprecated public Builder addSignedUrl( java.lang.String value) { if (value == null) { throw new NullPointerException(); @@ -6091,9 +6192,9 @@ public Builder addSignedUrl( * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public Builder addAllSignedUrl( + @java.lang.Deprecated public Builder addAllSignedUrl( java.lang.Iterable values) { ensureSignedUrlIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( @@ -6106,9 +6207,9 @@ public Builder addAllSignedUrl( * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public Builder clearSignedUrl() { + @java.lang.Deprecated public Builder clearSignedUrl() { signedUrl_ = com.google.protobuf.LazyStringArrayList.EMPTY; bitField0_ = (bitField0_ & ~0x00000001); onChanged(); @@ -6119,9 +6220,9 @@ public Builder clearSignedUrl() { * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) * * - * repeated string signed_url = 1; + * repeated string signed_url = 1 [deprecated = true]; */ - public Builder addSignedUrlBytes( + @java.lang.Deprecated public Builder addSignedUrlBytes( com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); @@ -6141,9 +6242,9 @@ public Builder addSignedUrlBytes( * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - public boolean hasExpiresAt() { + @java.lang.Deprecated public boolean hasExpiresAt() { return expiresAtBuilder_ != null || expiresAt_ != null; } /** @@ -6151,9 +6252,9 @@ public boolean hasExpiresAt() { * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - public com.google.protobuf.Timestamp getExpiresAt() { + @java.lang.Deprecated public com.google.protobuf.Timestamp getExpiresAt() { if (expiresAtBuilder_ == null) { return expiresAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expiresAt_; } else { @@ -6165,9 +6266,9 @@ public com.google.protobuf.Timestamp getExpiresAt() { * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - public Builder setExpiresAt(com.google.protobuf.Timestamp value) { + @java.lang.Deprecated public Builder setExpiresAt(com.google.protobuf.Timestamp value) { if (expiresAtBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -6185,9 +6286,9 @@ public Builder setExpiresAt(com.google.protobuf.Timestamp value) { * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - public Builder setExpiresAt( + @java.lang.Deprecated public Builder setExpiresAt( com.google.protobuf.Timestamp.Builder builderForValue) { if (expiresAtBuilder_ == null) { expiresAt_ = builderForValue.build(); @@ -6203,9 +6304,9 @@ public Builder setExpiresAt( * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - public Builder mergeExpiresAt(com.google.protobuf.Timestamp value) { + @java.lang.Deprecated public Builder mergeExpiresAt(com.google.protobuf.Timestamp value) { if (expiresAtBuilder_ == null) { if (expiresAt_ != null) { expiresAt_ = @@ -6225,9 +6326,9 @@ public Builder mergeExpiresAt(com.google.protobuf.Timestamp value) { * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - public Builder clearExpiresAt() { + @java.lang.Deprecated public Builder clearExpiresAt() { if (expiresAtBuilder_ == null) { expiresAt_ = null; onChanged(); @@ -6243,9 +6344,9 @@ public Builder clearExpiresAt() { * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - public com.google.protobuf.Timestamp.Builder getExpiresAtBuilder() { + @java.lang.Deprecated public com.google.protobuf.Timestamp.Builder getExpiresAtBuilder() { onChanged(); return getExpiresAtFieldBuilder().getBuilder(); @@ -6255,9 +6356,9 @@ public com.google.protobuf.Timestamp.Builder getExpiresAtBuilder() { * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ - public com.google.protobuf.TimestampOrBuilder getExpiresAtOrBuilder() { + @java.lang.Deprecated public com.google.protobuf.TimestampOrBuilder getExpiresAtOrBuilder() { if (expiresAtBuilder_ != null) { return expiresAtBuilder_.getMessageOrBuilder(); } else { @@ -6270,7 +6371,7 @@ public com.google.protobuf.TimestampOrBuilder getExpiresAtOrBuilder() { * ExpiresAt defines when will the signed URL expire. * * - * .google.protobuf.Timestamp expires_at = 2; + * .google.protobuf.Timestamp expires_at = 2 [deprecated = true]; */ private com.google.protobuf.SingleFieldBuilderV3< com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> @@ -6285,6 +6386,159 @@ public com.google.protobuf.TimestampOrBuilder getExpiresAtOrBuilder() { } return expiresAtBuilder_; } + + private flyteidl.service.Dataproxy.PreSignedURLs preSignedUrls_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.service.Dataproxy.PreSignedURLs, flyteidl.service.Dataproxy.PreSignedURLs.Builder, flyteidl.service.Dataproxy.PreSignedURLsOrBuilder> preSignedUrlsBuilder_; + /** + *
+       * New wrapper object containing the signed urls and expiration time
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + public boolean hasPreSignedUrls() { + return preSignedUrlsBuilder_ != null || preSignedUrls_ != null; + } + /** + *
+       * New wrapper object containing the signed urls and expiration time
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + public flyteidl.service.Dataproxy.PreSignedURLs getPreSignedUrls() { + if (preSignedUrlsBuilder_ == null) { + return preSignedUrls_ == null ? flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance() : preSignedUrls_; + } else { + return preSignedUrlsBuilder_.getMessage(); + } + } + /** + *
+       * New wrapper object containing the signed urls and expiration time
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + public Builder setPreSignedUrls(flyteidl.service.Dataproxy.PreSignedURLs value) { + if (preSignedUrlsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + preSignedUrls_ = value; + onChanged(); + } else { + preSignedUrlsBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * New wrapper object containing the signed urls and expiration time
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + public Builder setPreSignedUrls( + flyteidl.service.Dataproxy.PreSignedURLs.Builder builderForValue) { + if (preSignedUrlsBuilder_ == null) { + preSignedUrls_ = builderForValue.build(); + onChanged(); + } else { + preSignedUrlsBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * New wrapper object containing the signed urls and expiration time
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + public Builder mergePreSignedUrls(flyteidl.service.Dataproxy.PreSignedURLs value) { + if (preSignedUrlsBuilder_ == null) { + if (preSignedUrls_ != null) { + preSignedUrls_ = + flyteidl.service.Dataproxy.PreSignedURLs.newBuilder(preSignedUrls_).mergeFrom(value).buildPartial(); + } else { + preSignedUrls_ = value; + } + onChanged(); + } else { + preSignedUrlsBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * New wrapper object containing the signed urls and expiration time
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + public Builder clearPreSignedUrls() { + if (preSignedUrlsBuilder_ == null) { + preSignedUrls_ = null; + onChanged(); + } else { + preSignedUrls_ = null; + preSignedUrlsBuilder_ = null; + } + + return this; + } + /** + *
+       * New wrapper object containing the signed urls and expiration time
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + public flyteidl.service.Dataproxy.PreSignedURLs.Builder getPreSignedUrlsBuilder() { + + onChanged(); + return getPreSignedUrlsFieldBuilder().getBuilder(); + } + /** + *
+       * New wrapper object containing the signed urls and expiration time
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + public flyteidl.service.Dataproxy.PreSignedURLsOrBuilder getPreSignedUrlsOrBuilder() { + if (preSignedUrlsBuilder_ != null) { + return preSignedUrlsBuilder_.getMessageOrBuilder(); + } else { + return preSignedUrls_ == null ? + flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance() : preSignedUrls_; + } + } + /** + *
+       * New wrapper object containing the signed urls and expiration time
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.service.Dataproxy.PreSignedURLs, flyteidl.service.Dataproxy.PreSignedURLs.Builder, flyteidl.service.Dataproxy.PreSignedURLsOrBuilder> + getPreSignedUrlsFieldBuilder() { + if (preSignedUrlsBuilder_ == null) { + preSignedUrlsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.service.Dataproxy.PreSignedURLs, flyteidl.service.Dataproxy.PreSignedURLs.Builder, flyteidl.service.Dataproxy.PreSignedURLsOrBuilder>( + getPreSignedUrls(), + getParentForChildren(), + isClean()); + preSignedUrls_ = null; + } + return preSignedUrlsBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -6338,93 +6592,2709 @@ public flyteidl.service.Dataproxy.CreateDownloadLinkResponse getDefaultInstanceF } - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_flyteidl_service_CreateUploadLocationResponse_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_flyteidl_service_CreateUploadLocationResponse_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_flyteidl_service_CreateUploadLocationRequest_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_flyteidl_service_CreateUploadLocationRequest_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_flyteidl_service_CreateDownloadLocationRequest_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_flyteidl_service_CreateDownloadLocationRequest_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_flyteidl_service_CreateDownloadLocationResponse_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_flyteidl_service_CreateDownloadLocationResponse_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_flyteidl_service_CreateDownloadLinkRequest_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_flyteidl_service_CreateDownloadLinkRequest_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_flyteidl_service_CreateDownloadLinkResponse_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_flyteidl_service_CreateDownloadLinkResponse_fieldAccessorTable; + public interface PreSignedURLsOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.service.PreSignedURLs) + com.google.protobuf.MessageOrBuilder { - public static com.google.protobuf.Descriptors.FileDescriptor - getDescriptor() { - return descriptor; - } - private static com.google.protobuf.Descriptors.FileDescriptor - descriptor; - static { - java.lang.String[] descriptorData = { - "\n flyteidl/service/dataproxy.proto\022\020flyt" + - "eidl.service\032\034google/api/annotations.pro" + - "to\032\036google/protobuf/duration.proto\032\037goog" + - "le/protobuf/timestamp.proto\032\036flyteidl/co" + - "re/identifier.proto\"v\n\034CreateUploadLocat" + - "ionResponse\022\022\n\nsigned_url\030\001 \001(\t\022\022\n\nnativ" + - "e_url\030\002 \001(\t\022.\n\nexpires_at\030\003 \001(\0132\032.google" + - ".protobuf.Timestamp\"\224\001\n\033CreateUploadLoca" + - "tionRequest\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002" + - " \001(\t\022\020\n\010filename\030\003 \001(\t\022-\n\nexpires_in\030\004 \001" + - "(\0132\031.google.protobuf.Duration\022\023\n\013content" + - "_md5\030\005 \001(\014\"f\n\035CreateDownloadLocationRequ" + - "est\022\022\n\nnative_url\030\001 \001(\t\022-\n\nexpires_in\030\002 " + - "\001(\0132\031.google.protobuf.Duration:\002\030\001\"h\n\036Cr" + - "eateDownloadLocationResponse\022\022\n\nsigned_u" + - "rl\030\001 \001(\t\022.\n\nexpires_at\030\002 \001(\0132\032.google.pr" + - "otobuf.Timestamp:\002\030\001\"\320\001\n\031CreateDownloadL" + - "inkRequest\0225\n\rartifact_type\030\001 \001(\0162\036.flyt" + - "eidl.service.ArtifactType\022-\n\nexpires_in\030" + - "\002 \001(\0132\031.google.protobuf.Duration\022C\n\021node" + - "_execution_id\030\003 \001(\0132&.flyteidl.core.Node" + - "ExecutionIdentifierH\000B\010\n\006source\"`\n\032Creat" + - "eDownloadLinkResponse\022\022\n\nsigned_url\030\001 \003(" + - "\t\022.\n\nexpires_at\030\002 \001(\0132\032.google.protobuf." + - "Timestamp*C\n\014ArtifactType\022\033\n\027ARTIFACT_TY" + - "PE_UNDEFINED\020\000\022\026\n\022ARTIFACT_TYPE_DECK\020\0012\374" + - "\003\n\020DataProxyService\022\240\001\n\024CreateUploadLoca" + - "tion\022-.flyteidl.service.CreateUploadLoca" + - "tionRequest\032..flyteidl.service.CreateUpl" + - "oadLocationResponse\")\202\323\344\223\002#\"\036/api/v1/dat" + - "aproxy/artifact_urn:\001*\022\246\001\n\026CreateDownloa" + - "dLocation\022/.flyteidl.service.CreateDownl" + - "oadLocationRequest\0320.flyteidl.service.Cr" + - "eateDownloadLocationResponse\")\210\002\001\202\323\344\223\002 \022" + - "\036/api/v1/dataproxy/artifact_urn\022\233\001\n\022Crea" + - "teDownloadLink\022+.flyteidl.service.Create" + - "DownloadLinkRequest\032,.flyteidl.service.C" + - "reateDownloadLinkResponse\"*\202\323\344\223\002$\"\037/api/" + - "v1/dataproxy/artifact_link:\001*B9Z7github." + - "com/flyteorg/flyteidl/gen/pb-go/flyteidl" + - "/serviceb\006proto3" - }; - com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = - new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { - public com.google.protobuf.ExtensionRegistry assignDescriptors( - com.google.protobuf.Descriptors.FileDescriptor root) { - descriptor = root; - return null; + /** + *
+     * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+     * 
+ * + * repeated string signed_url = 1; + */ + java.util.List + getSignedUrlList(); + /** + *
+     * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+     * 
+ * + * repeated string signed_url = 1; + */ + int getSignedUrlCount(); + /** + *
+     * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+     * 
+ * + * repeated string signed_url = 1; + */ + java.lang.String getSignedUrl(int index); + /** + *
+     * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+     * 
+ * + * repeated string signed_url = 1; + */ + com.google.protobuf.ByteString + getSignedUrlBytes(int index); + + /** + *
+     * ExpiresAt defines when will the signed URL expire.
+     * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + boolean hasExpiresAt(); + /** + *
+     * ExpiresAt defines when will the signed URL expire.
+     * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + com.google.protobuf.Timestamp getExpiresAt(); + /** + *
+     * ExpiresAt defines when will the signed URL expire.
+     * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + com.google.protobuf.TimestampOrBuilder getExpiresAtOrBuilder(); + } + /** + *
+   * Wrapper object since the message is shared across this and the GetDataResponse
+   * 
+ * + * Protobuf type {@code flyteidl.service.PreSignedURLs} + */ + public static final class PreSignedURLs extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.service.PreSignedURLs) + PreSignedURLsOrBuilder { + private static final long serialVersionUID = 0L; + // Use PreSignedURLs.newBuilder() to construct. + private PreSignedURLs(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private PreSignedURLs() { + signedUrl_ = com.google.protobuf.LazyStringArrayList.EMPTY; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private PreSignedURLs( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + signedUrl_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + signedUrl_.add(s); + break; + } + case 18: { + com.google.protobuf.Timestamp.Builder subBuilder = null; + if (expiresAt_ != null) { + subBuilder = expiresAt_.toBuilder(); + } + expiresAt_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(expiresAt_); + expiresAt_ = 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 { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + signedUrl_ = signedUrl_.getUnmodifiableView(); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_PreSignedURLs_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_PreSignedURLs_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.Dataproxy.PreSignedURLs.class, flyteidl.service.Dataproxy.PreSignedURLs.Builder.class); + } + + private int bitField0_; + public static final int SIGNED_URL_FIELD_NUMBER = 1; + private com.google.protobuf.LazyStringList signedUrl_; + /** + *
+     * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+     * 
+ * + * repeated string signed_url = 1; + */ + public com.google.protobuf.ProtocolStringList + getSignedUrlList() { + return signedUrl_; + } + /** + *
+     * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+     * 
+ * + * repeated string signed_url = 1; + */ + public int getSignedUrlCount() { + return signedUrl_.size(); + } + /** + *
+     * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+     * 
+ * + * repeated string signed_url = 1; + */ + public java.lang.String getSignedUrl(int index) { + return signedUrl_.get(index); + } + /** + *
+     * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+     * 
+ * + * repeated string signed_url = 1; + */ + public com.google.protobuf.ByteString + getSignedUrlBytes(int index) { + return signedUrl_.getByteString(index); + } + + public static final int EXPIRES_AT_FIELD_NUMBER = 2; + private com.google.protobuf.Timestamp expiresAt_; + /** + *
+     * ExpiresAt defines when will the signed URL expire.
+     * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + public boolean hasExpiresAt() { + return expiresAt_ != null; + } + /** + *
+     * ExpiresAt defines when will the signed URL expire.
+     * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + public com.google.protobuf.Timestamp getExpiresAt() { + return expiresAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expiresAt_; + } + /** + *
+     * ExpiresAt defines when will the signed URL expire.
+     * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + public com.google.protobuf.TimestampOrBuilder getExpiresAtOrBuilder() { + return getExpiresAt(); + } + + 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 { + for (int i = 0; i < signedUrl_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, signedUrl_.getRaw(i)); + } + if (expiresAt_ != null) { + output.writeMessage(2, getExpiresAt()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + { + int dataSize = 0; + for (int i = 0; i < signedUrl_.size(); i++) { + dataSize += computeStringSizeNoTag(signedUrl_.getRaw(i)); + } + size += dataSize; + size += 1 * getSignedUrlList().size(); + } + if (expiresAt_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getExpiresAt()); + } + 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.service.Dataproxy.PreSignedURLs)) { + return super.equals(obj); + } + flyteidl.service.Dataproxy.PreSignedURLs other = (flyteidl.service.Dataproxy.PreSignedURLs) obj; + + if (!getSignedUrlList() + .equals(other.getSignedUrlList())) return false; + if (hasExpiresAt() != other.hasExpiresAt()) return false; + if (hasExpiresAt()) { + if (!getExpiresAt() + .equals(other.getExpiresAt())) 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 (getSignedUrlCount() > 0) { + hash = (37 * hash) + SIGNED_URL_FIELD_NUMBER; + hash = (53 * hash) + getSignedUrlList().hashCode(); + } + if (hasExpiresAt()) { + hash = (37 * hash) + EXPIRES_AT_FIELD_NUMBER; + hash = (53 * hash) + getExpiresAt().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.service.Dataproxy.PreSignedURLs parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.Dataproxy.PreSignedURLs parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.Dataproxy.PreSignedURLs parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.Dataproxy.PreSignedURLs parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.Dataproxy.PreSignedURLs parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.Dataproxy.PreSignedURLs parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.Dataproxy.PreSignedURLs parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.Dataproxy.PreSignedURLs 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.service.Dataproxy.PreSignedURLs parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.service.Dataproxy.PreSignedURLs 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.service.Dataproxy.PreSignedURLs parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.Dataproxy.PreSignedURLs 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.service.Dataproxy.PreSignedURLs 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; + } + /** + *
+     * Wrapper object since the message is shared across this and the GetDataResponse
+     * 
+ * + * Protobuf type {@code flyteidl.service.PreSignedURLs} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.service.PreSignedURLs) + flyteidl.service.Dataproxy.PreSignedURLsOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_PreSignedURLs_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_PreSignedURLs_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.Dataproxy.PreSignedURLs.class, flyteidl.service.Dataproxy.PreSignedURLs.Builder.class); + } + + // Construct using flyteidl.service.Dataproxy.PreSignedURLs.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(); + signedUrl_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + if (expiresAtBuilder_ == null) { + expiresAt_ = null; + } else { + expiresAt_ = null; + expiresAtBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_PreSignedURLs_descriptor; + } + + @java.lang.Override + public flyteidl.service.Dataproxy.PreSignedURLs getDefaultInstanceForType() { + return flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.service.Dataproxy.PreSignedURLs build() { + flyteidl.service.Dataproxy.PreSignedURLs result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.service.Dataproxy.PreSignedURLs buildPartial() { + flyteidl.service.Dataproxy.PreSignedURLs result = new flyteidl.service.Dataproxy.PreSignedURLs(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((bitField0_ & 0x00000001) != 0)) { + signedUrl_ = signedUrl_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.signedUrl_ = signedUrl_; + if (expiresAtBuilder_ == null) { + result.expiresAt_ = expiresAt_; + } else { + result.expiresAt_ = expiresAtBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + 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.service.Dataproxy.PreSignedURLs) { + return mergeFrom((flyteidl.service.Dataproxy.PreSignedURLs)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.service.Dataproxy.PreSignedURLs other) { + if (other == flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance()) return this; + if (!other.signedUrl_.isEmpty()) { + if (signedUrl_.isEmpty()) { + signedUrl_ = other.signedUrl_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureSignedUrlIsMutable(); + signedUrl_.addAll(other.signedUrl_); + } + onChanged(); + } + if (other.hasExpiresAt()) { + mergeExpiresAt(other.getExpiresAt()); + } + 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.service.Dataproxy.PreSignedURLs parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.service.Dataproxy.PreSignedURLs) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private com.google.protobuf.LazyStringList signedUrl_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureSignedUrlIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + signedUrl_ = new com.google.protobuf.LazyStringArrayList(signedUrl_); + bitField0_ |= 0x00000001; + } + } + /** + *
+       * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+       * 
+ * + * repeated string signed_url = 1; + */ + public com.google.protobuf.ProtocolStringList + getSignedUrlList() { + return signedUrl_.getUnmodifiableView(); + } + /** + *
+       * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+       * 
+ * + * repeated string signed_url = 1; + */ + public int getSignedUrlCount() { + return signedUrl_.size(); + } + /** + *
+       * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+       * 
+ * + * repeated string signed_url = 1; + */ + public java.lang.String getSignedUrl(int index) { + return signedUrl_.get(index); + } + /** + *
+       * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+       * 
+ * + * repeated string signed_url = 1; + */ + public com.google.protobuf.ByteString + getSignedUrlBytes(int index) { + return signedUrl_.getByteString(index); + } + /** + *
+       * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+       * 
+ * + * repeated string signed_url = 1; + */ + public Builder setSignedUrl( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureSignedUrlIsMutable(); + signedUrl_.set(index, value); + onChanged(); + return this; + } + /** + *
+       * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+       * 
+ * + * repeated string signed_url = 1; + */ + public Builder addSignedUrl( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureSignedUrlIsMutable(); + signedUrl_.add(value); + onChanged(); + return this; + } + /** + *
+       * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+       * 
+ * + * repeated string signed_url = 1; + */ + public Builder addAllSignedUrl( + java.lang.Iterable values) { + ensureSignedUrlIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, signedUrl_); + onChanged(); + return this; + } + /** + *
+       * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+       * 
+ * + * repeated string signed_url = 1; + */ + public Builder clearSignedUrl() { + signedUrl_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + *
+       * SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...)
+       * 
+ * + * repeated string signed_url = 1; + */ + public Builder addSignedUrlBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureSignedUrlIsMutable(); + signedUrl_.add(value); + onChanged(); + return this; + } + + private com.google.protobuf.Timestamp expiresAt_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> expiresAtBuilder_; + /** + *
+       * ExpiresAt defines when will the signed URL expire.
+       * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + public boolean hasExpiresAt() { + return expiresAtBuilder_ != null || expiresAt_ != null; + } + /** + *
+       * ExpiresAt defines when will the signed URL expire.
+       * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + public com.google.protobuf.Timestamp getExpiresAt() { + if (expiresAtBuilder_ == null) { + return expiresAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expiresAt_; + } else { + return expiresAtBuilder_.getMessage(); + } + } + /** + *
+       * ExpiresAt defines when will the signed URL expire.
+       * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + public Builder setExpiresAt(com.google.protobuf.Timestamp value) { + if (expiresAtBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + expiresAt_ = value; + onChanged(); + } else { + expiresAtBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * ExpiresAt defines when will the signed URL expire.
+       * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + public Builder setExpiresAt( + com.google.protobuf.Timestamp.Builder builderForValue) { + if (expiresAtBuilder_ == null) { + expiresAt_ = builderForValue.build(); + onChanged(); + } else { + expiresAtBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * ExpiresAt defines when will the signed URL expire.
+       * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + public Builder mergeExpiresAt(com.google.protobuf.Timestamp value) { + if (expiresAtBuilder_ == null) { + if (expiresAt_ != null) { + expiresAt_ = + com.google.protobuf.Timestamp.newBuilder(expiresAt_).mergeFrom(value).buildPartial(); + } else { + expiresAt_ = value; + } + onChanged(); + } else { + expiresAtBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * ExpiresAt defines when will the signed URL expire.
+       * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + public Builder clearExpiresAt() { + if (expiresAtBuilder_ == null) { + expiresAt_ = null; + onChanged(); + } else { + expiresAt_ = null; + expiresAtBuilder_ = null; + } + + return this; + } + /** + *
+       * ExpiresAt defines when will the signed URL expire.
+       * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + public com.google.protobuf.Timestamp.Builder getExpiresAtBuilder() { + + onChanged(); + return getExpiresAtFieldBuilder().getBuilder(); + } + /** + *
+       * ExpiresAt defines when will the signed URL expire.
+       * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + public com.google.protobuf.TimestampOrBuilder getExpiresAtOrBuilder() { + if (expiresAtBuilder_ != null) { + return expiresAtBuilder_.getMessageOrBuilder(); + } else { + return expiresAt_ == null ? + com.google.protobuf.Timestamp.getDefaultInstance() : expiresAt_; + } + } + /** + *
+       * ExpiresAt defines when will the signed URL expire.
+       * 
+ * + * .google.protobuf.Timestamp expires_at = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> + getExpiresAtFieldBuilder() { + if (expiresAtBuilder_ == null) { + expiresAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>( + getExpiresAt(), + getParentForChildren(), + isClean()); + expiresAt_ = null; + } + return expiresAtBuilder_; + } + @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.service.PreSignedURLs) + } + + // @@protoc_insertion_point(class_scope:flyteidl.service.PreSignedURLs) + private static final flyteidl.service.Dataproxy.PreSignedURLs DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.service.Dataproxy.PreSignedURLs(); + } + + public static flyteidl.service.Dataproxy.PreSignedURLs getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PreSignedURLs parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PreSignedURLs(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.service.Dataproxy.PreSignedURLs getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetDataRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.service.GetDataRequest) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * A unique identifier in the form of flyte://<something> that uniquely, for a given Flyte
+     * backend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.).
+     * e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input)
+     *      flyte://v1/proj/development/execid/n2/i (for node execution input)
+     * 
+ * + * string flyte_url = 1; + */ + java.lang.String getFlyteUrl(); + /** + *
+     * A unique identifier in the form of flyte://<something> that uniquely, for a given Flyte
+     * backend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.).
+     * e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input)
+     *      flyte://v1/proj/development/execid/n2/i (for node execution input)
+     * 
+ * + * string flyte_url = 1; + */ + com.google.protobuf.ByteString + getFlyteUrlBytes(); + } + /** + *
+   * General request artifact to retrieve data from a Flyte artifact url.
+   * 
+ * + * Protobuf type {@code flyteidl.service.GetDataRequest} + */ + public static final class GetDataRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.service.GetDataRequest) + GetDataRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetDataRequest.newBuilder() to construct. + private GetDataRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetDataRequest() { + flyteUrl_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private GetDataRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + flyteUrl_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_GetDataRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_GetDataRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.Dataproxy.GetDataRequest.class, flyteidl.service.Dataproxy.GetDataRequest.Builder.class); + } + + public static final int FLYTE_URL_FIELD_NUMBER = 1; + private volatile java.lang.Object flyteUrl_; + /** + *
+     * A unique identifier in the form of flyte://<something> that uniquely, for a given Flyte
+     * backend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.).
+     * e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input)
+     *      flyte://v1/proj/development/execid/n2/i (for node execution input)
+     * 
+ * + * string flyte_url = 1; + */ + public java.lang.String getFlyteUrl() { + java.lang.Object ref = flyteUrl_; + 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(); + flyteUrl_ = s; + return s; + } + } + /** + *
+     * A unique identifier in the form of flyte://<something> that uniquely, for a given Flyte
+     * backend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.).
+     * e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input)
+     *      flyte://v1/proj/development/execid/n2/i (for node execution input)
+     * 
+ * + * string flyte_url = 1; + */ + public com.google.protobuf.ByteString + getFlyteUrlBytes() { + java.lang.Object ref = flyteUrl_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + flyteUrl_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getFlyteUrlBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, flyteUrl_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getFlyteUrlBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, flyteUrl_); + } + 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.service.Dataproxy.GetDataRequest)) { + return super.equals(obj); + } + flyteidl.service.Dataproxy.GetDataRequest other = (flyteidl.service.Dataproxy.GetDataRequest) obj; + + if (!getFlyteUrl() + .equals(other.getFlyteUrl())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + FLYTE_URL_FIELD_NUMBER; + hash = (53 * hash) + getFlyteUrl().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.service.Dataproxy.GetDataRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.Dataproxy.GetDataRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.Dataproxy.GetDataRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.Dataproxy.GetDataRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.Dataproxy.GetDataRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.Dataproxy.GetDataRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.Dataproxy.GetDataRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.Dataproxy.GetDataRequest 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.service.Dataproxy.GetDataRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.service.Dataproxy.GetDataRequest 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.service.Dataproxy.GetDataRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.Dataproxy.GetDataRequest 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.service.Dataproxy.GetDataRequest 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; + } + /** + *
+     * General request artifact to retrieve data from a Flyte artifact url.
+     * 
+ * + * Protobuf type {@code flyteidl.service.GetDataRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.service.GetDataRequest) + flyteidl.service.Dataproxy.GetDataRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_GetDataRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_GetDataRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.Dataproxy.GetDataRequest.class, flyteidl.service.Dataproxy.GetDataRequest.Builder.class); + } + + // Construct using flyteidl.service.Dataproxy.GetDataRequest.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(); + flyteUrl_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_GetDataRequest_descriptor; + } + + @java.lang.Override + public flyteidl.service.Dataproxy.GetDataRequest getDefaultInstanceForType() { + return flyteidl.service.Dataproxy.GetDataRequest.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.service.Dataproxy.GetDataRequest build() { + flyteidl.service.Dataproxy.GetDataRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.service.Dataproxy.GetDataRequest buildPartial() { + flyteidl.service.Dataproxy.GetDataRequest result = new flyteidl.service.Dataproxy.GetDataRequest(this); + result.flyteUrl_ = flyteUrl_; + 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.service.Dataproxy.GetDataRequest) { + return mergeFrom((flyteidl.service.Dataproxy.GetDataRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.service.Dataproxy.GetDataRequest other) { + if (other == flyteidl.service.Dataproxy.GetDataRequest.getDefaultInstance()) return this; + if (!other.getFlyteUrl().isEmpty()) { + flyteUrl_ = other.flyteUrl_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.service.Dataproxy.GetDataRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.service.Dataproxy.GetDataRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object flyteUrl_ = ""; + /** + *
+       * A unique identifier in the form of flyte://<something> that uniquely, for a given Flyte
+       * backend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.).
+       * e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input)
+       *      flyte://v1/proj/development/execid/n2/i (for node execution input)
+       * 
+ * + * string flyte_url = 1; + */ + public java.lang.String getFlyteUrl() { + java.lang.Object ref = flyteUrl_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + flyteUrl_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * A unique identifier in the form of flyte://<something> that uniquely, for a given Flyte
+       * backend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.).
+       * e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input)
+       *      flyte://v1/proj/development/execid/n2/i (for node execution input)
+       * 
+ * + * string flyte_url = 1; + */ + public com.google.protobuf.ByteString + getFlyteUrlBytes() { + java.lang.Object ref = flyteUrl_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + flyteUrl_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * A unique identifier in the form of flyte://<something> that uniquely, for a given Flyte
+       * backend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.).
+       * e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input)
+       *      flyte://v1/proj/development/execid/n2/i (for node execution input)
+       * 
+ * + * string flyte_url = 1; + */ + public Builder setFlyteUrl( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + flyteUrl_ = value; + onChanged(); + return this; + } + /** + *
+       * A unique identifier in the form of flyte://<something> that uniquely, for a given Flyte
+       * backend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.).
+       * e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input)
+       *      flyte://v1/proj/development/execid/n2/i (for node execution input)
+       * 
+ * + * string flyte_url = 1; + */ + public Builder clearFlyteUrl() { + + flyteUrl_ = getDefaultInstance().getFlyteUrl(); + onChanged(); + return this; + } + /** + *
+       * A unique identifier in the form of flyte://<something> that uniquely, for a given Flyte
+       * backend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.).
+       * e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input)
+       *      flyte://v1/proj/development/execid/n2/i (for node execution input)
+       * 
+ * + * string flyte_url = 1; + */ + public Builder setFlyteUrlBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + flyteUrl_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.service.GetDataRequest) + } + + // @@protoc_insertion_point(class_scope:flyteidl.service.GetDataRequest) + private static final flyteidl.service.Dataproxy.GetDataRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.service.Dataproxy.GetDataRequest(); + } + + public static flyteidl.service.Dataproxy.GetDataRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetDataRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GetDataRequest(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.service.Dataproxy.GetDataRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface GetDataResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.service.GetDataResponse) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * literal map data will be returned
+     * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + boolean hasLiteralMap(); + /** + *
+     * literal map data will be returned
+     * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + flyteidl.core.Literals.LiteralMap getLiteralMap(); + /** + *
+     * literal map data will be returned
+     * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + flyteidl.core.Literals.LiteralMapOrBuilder getLiteralMapOrBuilder(); + + /** + *
+     * Flyte deck html will be returned as a signed url users can download
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + boolean hasPreSignedUrls(); + /** + *
+     * Flyte deck html will be returned as a signed url users can download
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + flyteidl.service.Dataproxy.PreSignedURLs getPreSignedUrls(); + /** + *
+     * Flyte deck html will be returned as a signed url users can download
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + flyteidl.service.Dataproxy.PreSignedURLsOrBuilder getPreSignedUrlsOrBuilder(); + + public flyteidl.service.Dataproxy.GetDataResponse.DataCase getDataCase(); + } + /** + * Protobuf type {@code flyteidl.service.GetDataResponse} + */ + public static final class GetDataResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.service.GetDataResponse) + GetDataResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use GetDataResponse.newBuilder() to construct. + private GetDataResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private GetDataResponse() { + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private GetDataResponse( + 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.Literals.LiteralMap.Builder subBuilder = null; + if (dataCase_ == 1) { + subBuilder = ((flyteidl.core.Literals.LiteralMap) data_).toBuilder(); + } + data_ = + input.readMessage(flyteidl.core.Literals.LiteralMap.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom((flyteidl.core.Literals.LiteralMap) data_); + data_ = subBuilder.buildPartial(); + } + dataCase_ = 1; + break; + } + case 18: { + flyteidl.service.Dataproxy.PreSignedURLs.Builder subBuilder = null; + if (dataCase_ == 2) { + subBuilder = ((flyteidl.service.Dataproxy.PreSignedURLs) data_).toBuilder(); + } + data_ = + input.readMessage(flyteidl.service.Dataproxy.PreSignedURLs.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom((flyteidl.service.Dataproxy.PreSignedURLs) data_); + data_ = subBuilder.buildPartial(); + } + dataCase_ = 2; + 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.service.Dataproxy.internal_static_flyteidl_service_GetDataResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_GetDataResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.Dataproxy.GetDataResponse.class, flyteidl.service.Dataproxy.GetDataResponse.Builder.class); + } + + private int dataCase_ = 0; + private java.lang.Object data_; + public enum DataCase + implements com.google.protobuf.Internal.EnumLite { + LITERAL_MAP(1), + PRE_SIGNED_URLS(2), + DATA_NOT_SET(0); + private final int value; + private DataCase(int value) { + this.value = value; + } + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static DataCase valueOf(int value) { + return forNumber(value); + } + + public static DataCase forNumber(int value) { + switch (value) { + case 1: return LITERAL_MAP; + case 2: return PRE_SIGNED_URLS; + case 0: return DATA_NOT_SET; + default: return null; + } + } + public int getNumber() { + return this.value; + } + }; + + public DataCase + getDataCase() { + return DataCase.forNumber( + dataCase_); + } + + public static final int LITERAL_MAP_FIELD_NUMBER = 1; + /** + *
+     * literal map data will be returned
+     * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + public boolean hasLiteralMap() { + return dataCase_ == 1; + } + /** + *
+     * literal map data will be returned
+     * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + public flyteidl.core.Literals.LiteralMap getLiteralMap() { + if (dataCase_ == 1) { + return (flyteidl.core.Literals.LiteralMap) data_; + } + return flyteidl.core.Literals.LiteralMap.getDefaultInstance(); + } + /** + *
+     * literal map data will be returned
+     * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + public flyteidl.core.Literals.LiteralMapOrBuilder getLiteralMapOrBuilder() { + if (dataCase_ == 1) { + return (flyteidl.core.Literals.LiteralMap) data_; + } + return flyteidl.core.Literals.LiteralMap.getDefaultInstance(); + } + + public static final int PRE_SIGNED_URLS_FIELD_NUMBER = 2; + /** + *
+     * Flyte deck html will be returned as a signed url users can download
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + public boolean hasPreSignedUrls() { + return dataCase_ == 2; + } + /** + *
+     * Flyte deck html will be returned as a signed url users can download
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + public flyteidl.service.Dataproxy.PreSignedURLs getPreSignedUrls() { + if (dataCase_ == 2) { + return (flyteidl.service.Dataproxy.PreSignedURLs) data_; + } + return flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance(); + } + /** + *
+     * Flyte deck html will be returned as a signed url users can download
+     * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + public flyteidl.service.Dataproxy.PreSignedURLsOrBuilder getPreSignedUrlsOrBuilder() { + if (dataCase_ == 2) { + return (flyteidl.service.Dataproxy.PreSignedURLs) data_; + } + return flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance(); + } + + 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 (dataCase_ == 1) { + output.writeMessage(1, (flyteidl.core.Literals.LiteralMap) data_); + } + if (dataCase_ == 2) { + output.writeMessage(2, (flyteidl.service.Dataproxy.PreSignedURLs) data_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (dataCase_ == 1) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, (flyteidl.core.Literals.LiteralMap) data_); + } + if (dataCase_ == 2) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, (flyteidl.service.Dataproxy.PreSignedURLs) data_); + } + 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.service.Dataproxy.GetDataResponse)) { + return super.equals(obj); + } + flyteidl.service.Dataproxy.GetDataResponse other = (flyteidl.service.Dataproxy.GetDataResponse) obj; + + if (!getDataCase().equals(other.getDataCase())) return false; + switch (dataCase_) { + case 1: + if (!getLiteralMap() + .equals(other.getLiteralMap())) return false; + break; + case 2: + if (!getPreSignedUrls() + .equals(other.getPreSignedUrls())) return false; + break; + case 0: + default: + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + switch (dataCase_) { + case 1: + hash = (37 * hash) + LITERAL_MAP_FIELD_NUMBER; + hash = (53 * hash) + getLiteralMap().hashCode(); + break; + case 2: + hash = (37 * hash) + PRE_SIGNED_URLS_FIELD_NUMBER; + hash = (53 * hash) + getPreSignedUrls().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.service.Dataproxy.GetDataResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.Dataproxy.GetDataResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.Dataproxy.GetDataResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.Dataproxy.GetDataResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.Dataproxy.GetDataResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.service.Dataproxy.GetDataResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.service.Dataproxy.GetDataResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.Dataproxy.GetDataResponse 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.service.Dataproxy.GetDataResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.service.Dataproxy.GetDataResponse 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.service.Dataproxy.GetDataResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.service.Dataproxy.GetDataResponse 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.service.Dataproxy.GetDataResponse 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; + } + /** + * Protobuf type {@code flyteidl.service.GetDataResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.service.GetDataResponse) + flyteidl.service.Dataproxy.GetDataResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_GetDataResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_GetDataResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.service.Dataproxy.GetDataResponse.class, flyteidl.service.Dataproxy.GetDataResponse.Builder.class); + } + + // Construct using flyteidl.service.Dataproxy.GetDataResponse.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(); + dataCase_ = 0; + data_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.service.Dataproxy.internal_static_flyteidl_service_GetDataResponse_descriptor; + } + + @java.lang.Override + public flyteidl.service.Dataproxy.GetDataResponse getDefaultInstanceForType() { + return flyteidl.service.Dataproxy.GetDataResponse.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.service.Dataproxy.GetDataResponse build() { + flyteidl.service.Dataproxy.GetDataResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.service.Dataproxy.GetDataResponse buildPartial() { + flyteidl.service.Dataproxy.GetDataResponse result = new flyteidl.service.Dataproxy.GetDataResponse(this); + if (dataCase_ == 1) { + if (literalMapBuilder_ == null) { + result.data_ = data_; + } else { + result.data_ = literalMapBuilder_.build(); + } + } + if (dataCase_ == 2) { + if (preSignedUrlsBuilder_ == null) { + result.data_ = data_; + } else { + result.data_ = preSignedUrlsBuilder_.build(); + } + } + result.dataCase_ = dataCase_; + 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.service.Dataproxy.GetDataResponse) { + return mergeFrom((flyteidl.service.Dataproxy.GetDataResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.service.Dataproxy.GetDataResponse other) { + if (other == flyteidl.service.Dataproxy.GetDataResponse.getDefaultInstance()) return this; + switch (other.getDataCase()) { + case LITERAL_MAP: { + mergeLiteralMap(other.getLiteralMap()); + break; + } + case PRE_SIGNED_URLS: { + mergePreSignedUrls(other.getPreSignedUrls()); + break; + } + case DATA_NOT_SET: { + break; + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.service.Dataproxy.GetDataResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.service.Dataproxy.GetDataResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int dataCase_ = 0; + private java.lang.Object data_; + public DataCase + getDataCase() { + return DataCase.forNumber( + dataCase_); + } + + public Builder clearData() { + dataCase_ = 0; + data_ = null; + onChanged(); + return this; + } + + + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Literals.LiteralMap, flyteidl.core.Literals.LiteralMap.Builder, flyteidl.core.Literals.LiteralMapOrBuilder> literalMapBuilder_; + /** + *
+       * literal map data will be returned
+       * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + public boolean hasLiteralMap() { + return dataCase_ == 1; + } + /** + *
+       * literal map data will be returned
+       * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + public flyteidl.core.Literals.LiteralMap getLiteralMap() { + if (literalMapBuilder_ == null) { + if (dataCase_ == 1) { + return (flyteidl.core.Literals.LiteralMap) data_; + } + return flyteidl.core.Literals.LiteralMap.getDefaultInstance(); + } else { + if (dataCase_ == 1) { + return literalMapBuilder_.getMessage(); + } + return flyteidl.core.Literals.LiteralMap.getDefaultInstance(); + } + } + /** + *
+       * literal map data will be returned
+       * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + public Builder setLiteralMap(flyteidl.core.Literals.LiteralMap value) { + if (literalMapBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + data_ = value; + onChanged(); + } else { + literalMapBuilder_.setMessage(value); + } + dataCase_ = 1; + return this; + } + /** + *
+       * literal map data will be returned
+       * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + public Builder setLiteralMap( + flyteidl.core.Literals.LiteralMap.Builder builderForValue) { + if (literalMapBuilder_ == null) { + data_ = builderForValue.build(); + onChanged(); + } else { + literalMapBuilder_.setMessage(builderForValue.build()); + } + dataCase_ = 1; + return this; + } + /** + *
+       * literal map data will be returned
+       * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + public Builder mergeLiteralMap(flyteidl.core.Literals.LiteralMap value) { + if (literalMapBuilder_ == null) { + if (dataCase_ == 1 && + data_ != flyteidl.core.Literals.LiteralMap.getDefaultInstance()) { + data_ = flyteidl.core.Literals.LiteralMap.newBuilder((flyteidl.core.Literals.LiteralMap) data_) + .mergeFrom(value).buildPartial(); + } else { + data_ = value; + } + onChanged(); + } else { + if (dataCase_ == 1) { + literalMapBuilder_.mergeFrom(value); + } + literalMapBuilder_.setMessage(value); + } + dataCase_ = 1; + return this; + } + /** + *
+       * literal map data will be returned
+       * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + public Builder clearLiteralMap() { + if (literalMapBuilder_ == null) { + if (dataCase_ == 1) { + dataCase_ = 0; + data_ = null; + onChanged(); + } + } else { + if (dataCase_ == 1) { + dataCase_ = 0; + data_ = null; + } + literalMapBuilder_.clear(); + } + return this; + } + /** + *
+       * literal map data will be returned
+       * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + public flyteidl.core.Literals.LiteralMap.Builder getLiteralMapBuilder() { + return getLiteralMapFieldBuilder().getBuilder(); + } + /** + *
+       * literal map data will be returned
+       * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + public flyteidl.core.Literals.LiteralMapOrBuilder getLiteralMapOrBuilder() { + if ((dataCase_ == 1) && (literalMapBuilder_ != null)) { + return literalMapBuilder_.getMessageOrBuilder(); + } else { + if (dataCase_ == 1) { + return (flyteidl.core.Literals.LiteralMap) data_; + } + return flyteidl.core.Literals.LiteralMap.getDefaultInstance(); + } + } + /** + *
+       * literal map data will be returned
+       * 
+ * + * .flyteidl.core.LiteralMap literal_map = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Literals.LiteralMap, flyteidl.core.Literals.LiteralMap.Builder, flyteidl.core.Literals.LiteralMapOrBuilder> + getLiteralMapFieldBuilder() { + if (literalMapBuilder_ == null) { + if (!(dataCase_ == 1)) { + data_ = flyteidl.core.Literals.LiteralMap.getDefaultInstance(); + } + literalMapBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Literals.LiteralMap, flyteidl.core.Literals.LiteralMap.Builder, flyteidl.core.Literals.LiteralMapOrBuilder>( + (flyteidl.core.Literals.LiteralMap) data_, + getParentForChildren(), + isClean()); + data_ = null; + } + dataCase_ = 1; + onChanged();; + return literalMapBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.service.Dataproxy.PreSignedURLs, flyteidl.service.Dataproxy.PreSignedURLs.Builder, flyteidl.service.Dataproxy.PreSignedURLsOrBuilder> preSignedUrlsBuilder_; + /** + *
+       * Flyte deck html will be returned as a signed url users can download
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + public boolean hasPreSignedUrls() { + return dataCase_ == 2; + } + /** + *
+       * Flyte deck html will be returned as a signed url users can download
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + public flyteidl.service.Dataproxy.PreSignedURLs getPreSignedUrls() { + if (preSignedUrlsBuilder_ == null) { + if (dataCase_ == 2) { + return (flyteidl.service.Dataproxy.PreSignedURLs) data_; + } + return flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance(); + } else { + if (dataCase_ == 2) { + return preSignedUrlsBuilder_.getMessage(); + } + return flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance(); + } + } + /** + *
+       * Flyte deck html will be returned as a signed url users can download
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + public Builder setPreSignedUrls(flyteidl.service.Dataproxy.PreSignedURLs value) { + if (preSignedUrlsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + data_ = value; + onChanged(); + } else { + preSignedUrlsBuilder_.setMessage(value); + } + dataCase_ = 2; + return this; + } + /** + *
+       * Flyte deck html will be returned as a signed url users can download
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + public Builder setPreSignedUrls( + flyteidl.service.Dataproxy.PreSignedURLs.Builder builderForValue) { + if (preSignedUrlsBuilder_ == null) { + data_ = builderForValue.build(); + onChanged(); + } else { + preSignedUrlsBuilder_.setMessage(builderForValue.build()); + } + dataCase_ = 2; + return this; + } + /** + *
+       * Flyte deck html will be returned as a signed url users can download
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + public Builder mergePreSignedUrls(flyteidl.service.Dataproxy.PreSignedURLs value) { + if (preSignedUrlsBuilder_ == null) { + if (dataCase_ == 2 && + data_ != flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance()) { + data_ = flyteidl.service.Dataproxy.PreSignedURLs.newBuilder((flyteidl.service.Dataproxy.PreSignedURLs) data_) + .mergeFrom(value).buildPartial(); + } else { + data_ = value; + } + onChanged(); + } else { + if (dataCase_ == 2) { + preSignedUrlsBuilder_.mergeFrom(value); + } + preSignedUrlsBuilder_.setMessage(value); + } + dataCase_ = 2; + return this; + } + /** + *
+       * Flyte deck html will be returned as a signed url users can download
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + public Builder clearPreSignedUrls() { + if (preSignedUrlsBuilder_ == null) { + if (dataCase_ == 2) { + dataCase_ = 0; + data_ = null; + onChanged(); + } + } else { + if (dataCase_ == 2) { + dataCase_ = 0; + data_ = null; + } + preSignedUrlsBuilder_.clear(); + } + return this; + } + /** + *
+       * Flyte deck html will be returned as a signed url users can download
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + public flyteidl.service.Dataproxy.PreSignedURLs.Builder getPreSignedUrlsBuilder() { + return getPreSignedUrlsFieldBuilder().getBuilder(); + } + /** + *
+       * Flyte deck html will be returned as a signed url users can download
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + public flyteidl.service.Dataproxy.PreSignedURLsOrBuilder getPreSignedUrlsOrBuilder() { + if ((dataCase_ == 2) && (preSignedUrlsBuilder_ != null)) { + return preSignedUrlsBuilder_.getMessageOrBuilder(); + } else { + if (dataCase_ == 2) { + return (flyteidl.service.Dataproxy.PreSignedURLs) data_; + } + return flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance(); + } + } + /** + *
+       * Flyte deck html will be returned as a signed url users can download
+       * 
+ * + * .flyteidl.service.PreSignedURLs pre_signed_urls = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.service.Dataproxy.PreSignedURLs, flyteidl.service.Dataproxy.PreSignedURLs.Builder, flyteidl.service.Dataproxy.PreSignedURLsOrBuilder> + getPreSignedUrlsFieldBuilder() { + if (preSignedUrlsBuilder_ == null) { + if (!(dataCase_ == 2)) { + data_ = flyteidl.service.Dataproxy.PreSignedURLs.getDefaultInstance(); + } + preSignedUrlsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.service.Dataproxy.PreSignedURLs, flyteidl.service.Dataproxy.PreSignedURLs.Builder, flyteidl.service.Dataproxy.PreSignedURLsOrBuilder>( + (flyteidl.service.Dataproxy.PreSignedURLs) data_, + getParentForChildren(), + isClean()); + data_ = null; + } + dataCase_ = 2; + onChanged();; + return preSignedUrlsBuilder_; + } + @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.service.GetDataResponse) + } + + // @@protoc_insertion_point(class_scope:flyteidl.service.GetDataResponse) + private static final flyteidl.service.Dataproxy.GetDataResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.service.Dataproxy.GetDataResponse(); + } + + public static flyteidl.service.Dataproxy.GetDataResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public GetDataResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GetDataResponse(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.service.Dataproxy.GetDataResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_CreateUploadLocationResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_CreateUploadLocationResponse_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_CreateUploadLocationRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_CreateUploadLocationRequest_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_CreateDownloadLocationRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_CreateDownloadLocationRequest_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_CreateDownloadLocationResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_CreateDownloadLocationResponse_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_CreateDownloadLinkRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_CreateDownloadLinkRequest_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_CreateDownloadLinkResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_CreateDownloadLinkResponse_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_PreSignedURLs_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_PreSignedURLs_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_GetDataRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_GetDataRequest_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_service_GetDataResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_service_GetDataResponse_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n flyteidl/service/dataproxy.proto\022\020flyt" + + "eidl.service\032\034google/api/annotations.pro" + + "to\032\036google/protobuf/duration.proto\032\037goog" + + "le/protobuf/timestamp.proto\032\036flyteidl/co" + + "re/identifier.proto\032\034flyteidl/core/liter" + + "als.proto\"v\n\034CreateUploadLocationRespons" + + "e\022\022\n\nsigned_url\030\001 \001(\t\022\022\n\nnative_url\030\002 \001(" + + "\t\022.\n\nexpires_at\030\003 \001(\0132\032.google.protobuf." + + "Timestamp\"\224\001\n\033CreateUploadLocationReques" + + "t\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\020\n\010fi" + + "lename\030\003 \001(\t\022-\n\nexpires_in\030\004 \001(\0132\031.googl" + + "e.protobuf.Duration\022\023\n\013content_md5\030\005 \001(\014" + + "\"f\n\035CreateDownloadLocationRequest\022\022\n\nnat" + + "ive_url\030\001 \001(\t\022-\n\nexpires_in\030\002 \001(\0132\031.goog" + + "le.protobuf.Duration:\002\030\001\"h\n\036CreateDownlo" + + "adLocationResponse\022\022\n\nsigned_url\030\001 \001(\t\022." + + "\n\nexpires_at\030\002 \001(\0132\032.google.protobuf.Tim" + + "estamp:\002\030\001\"\320\001\n\031CreateDownloadLinkRequest" + + "\0225\n\rartifact_type\030\001 \001(\0162\036.flyteidl.servi" + + "ce.ArtifactType\022-\n\nexpires_in\030\002 \001(\0132\031.go" + + "ogle.protobuf.Duration\022C\n\021node_execution" + + "_id\030\003 \001(\0132&.flyteidl.core.NodeExecutionI" + + "dentifierH\000B\010\n\006source\"\242\001\n\032CreateDownload" + + "LinkResponse\022\026\n\nsigned_url\030\001 \003(\tB\002\030\001\0222\n\n" + + "expires_at\030\002 \001(\0132\032.google.protobuf.Times" + + "tampB\002\030\001\0228\n\017pre_signed_urls\030\003 \001(\0132\037.flyt" + + "eidl.service.PreSignedURLs\"S\n\rPreSignedU" + + "RLs\022\022\n\nsigned_url\030\001 \003(\t\022.\n\nexpires_at\030\002 " + + "\001(\0132\032.google.protobuf.Timestamp\"#\n\016GetDa" + + "taRequest\022\021\n\tflyte_url\030\001 \001(\t\"\207\001\n\017GetData" + + "Response\0220\n\013literal_map\030\001 \001(\0132\031.flyteidl" + + ".core.LiteralMapH\000\022:\n\017pre_signed_urls\030\002 " + + "\001(\0132\037.flyteidl.service.PreSignedURLsH\000B\006" + + "\n\004data*C\n\014ArtifactType\022\033\n\027ARTIFACT_TYPE_" + + "UNDEFINED\020\000\022\026\n\022ARTIFACT_TYPE_DECK\020\0012\342\004\n\020" + + "DataProxyService\022\240\001\n\024CreateUploadLocatio" + + "n\022-.flyteidl.service.CreateUploadLocatio" + + "nRequest\032..flyteidl.service.CreateUpload" + + "LocationResponse\")\202\323\344\223\002#\"\036/api/v1/datapr" + + "oxy/artifact_urn:\001*\022\246\001\n\026CreateDownloadLo" + + "cation\022/.flyteidl.service.CreateDownload" + + "LocationRequest\0320.flyteidl.service.Creat" + + "eDownloadLocationResponse\")\210\002\001\202\323\344\223\002 \022\036/a" + + "pi/v1/dataproxy/artifact_urn\022\233\001\n\022CreateD" + + "ownloadLink\022+.flyteidl.service.CreateDow" + + "nloadLinkRequest\032,.flyteidl.service.Crea" + + "teDownloadLinkResponse\"*\202\323\344\223\002$\"\037/api/v1/" + + "dataproxy/artifact_link:\001*\022d\n\007GetData\022 ." + + "flyteidl.service.GetDataRequest\032!.flytei" + + "dl.service.GetDataResponse\"\024\202\323\344\223\002\016\022\014/api" + + "/v1/dataB9Z7github.com/flyteorg/flyteidl" + + "/gen/pb-go/flyteidl/serviceb\006proto3" + }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = + new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors( + com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + return null; } }; com.google.protobuf.Descriptors.FileDescriptor @@ -6434,6 +9304,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.DurationProto.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), flyteidl.core.IdentifierOuterClass.getDescriptor(), + flyteidl.core.Literals.getDescriptor(), }, assigner); internal_static_flyteidl_service_CreateUploadLocationResponse_descriptor = getDescriptor().getMessageTypes().get(0); @@ -6470,7 +9341,25 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_service_CreateDownloadLinkResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_service_CreateDownloadLinkResponse_descriptor, + new java.lang.String[] { "SignedUrl", "ExpiresAt", "PreSignedUrls", }); + internal_static_flyteidl_service_PreSignedURLs_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_flyteidl_service_PreSignedURLs_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_service_PreSignedURLs_descriptor, new java.lang.String[] { "SignedUrl", "ExpiresAt", }); + internal_static_flyteidl_service_GetDataRequest_descriptor = + getDescriptor().getMessageTypes().get(7); + internal_static_flyteidl_service_GetDataRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_service_GetDataRequest_descriptor, + new java.lang.String[] { "FlyteUrl", }); + internal_static_flyteidl_service_GetDataResponse_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_flyteidl_service_GetDataResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_service_GetDataResponse_descriptor, + new java.lang.String[] { "LiteralMap", "PreSignedUrls", "Data", }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); registry.add(com.google.api.AnnotationsProto.http); @@ -6480,6 +9369,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.DurationProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); flyteidl.core.IdentifierOuterClass.getDescriptor(); + flyteidl.core.Literals.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) diff --git a/gen/pb-js/flyteidl.d.ts b/gen/pb-js/flyteidl.d.ts index e85f7b1e3..58fedaa1f 100644 --- a/gen/pb-js/flyteidl.d.ts +++ b/gen/pb-js/flyteidl.d.ts @@ -8886,6 +8886,70 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a FlyteURLs. */ + interface IFlyteURLs { + + /** FlyteURLs inputs */ + inputs?: (string|null); + + /** FlyteURLs outputs */ + outputs?: (string|null); + + /** FlyteURLs deck */ + deck?: (string|null); + } + + /** Represents a FlyteURLs. */ + class FlyteURLs implements IFlyteURLs { + + /** + * Constructs a new FlyteURLs. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.admin.IFlyteURLs); + + /** FlyteURLs inputs. */ + public inputs: string; + + /** FlyteURLs outputs. */ + public outputs: string; + + /** FlyteURLs deck. */ + public deck: string; + + /** + * Creates a new FlyteURLs instance using the specified properties. + * @param [properties] Properties to set + * @returns FlyteURLs instance + */ + public static create(properties?: flyteidl.admin.IFlyteURLs): flyteidl.admin.FlyteURLs; + + /** + * Encodes the specified FlyteURLs message. Does not implicitly {@link flyteidl.admin.FlyteURLs.verify|verify} messages. + * @param message FlyteURLs message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.admin.IFlyteURLs, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FlyteURLs message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FlyteURLs + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.FlyteURLs; + + /** + * Verifies a FlyteURLs message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + /** Properties of a DescriptionEntity. */ interface IDescriptionEntity { @@ -13809,6 +13873,9 @@ export namespace flyteidl { /** NodeExecutionGetDataResponse dynamicWorkflow */ dynamicWorkflow?: (flyteidl.admin.IDynamicWorkflowNodeMetadata|null); + + /** NodeExecutionGetDataResponse flyteUrls */ + flyteUrls?: (flyteidl.admin.IFlyteURLs|null); } /** Represents a NodeExecutionGetDataResponse. */ @@ -13835,6 +13902,9 @@ export namespace flyteidl { /** NodeExecutionGetDataResponse dynamicWorkflow. */ public dynamicWorkflow?: (flyteidl.admin.IDynamicWorkflowNodeMetadata|null); + /** NodeExecutionGetDataResponse flyteUrls. */ + public flyteUrls?: (flyteidl.admin.IFlyteURLs|null); + /** * Creates a new NodeExecutionGetDataResponse instance using the specified properties. * @param [properties] Properties to set @@ -16339,6 +16409,9 @@ export namespace flyteidl { /** TaskExecutionGetDataResponse fullOutputs */ fullOutputs?: (flyteidl.core.ILiteralMap|null); + + /** TaskExecutionGetDataResponse flyteUrls */ + flyteUrls?: (flyteidl.admin.IFlyteURLs|null); } /** Represents a TaskExecutionGetDataResponse. */ @@ -16362,6 +16435,9 @@ export namespace flyteidl { /** TaskExecutionGetDataResponse fullOutputs. */ public fullOutputs?: (flyteidl.core.ILiteralMap|null); + /** TaskExecutionGetDataResponse flyteUrls. */ + public flyteUrls?: (flyteidl.admin.IFlyteURLs|null); + /** * Creates a new TaskExecutionGetDataResponse instance using the specified properties. * @param [properties] Properties to set @@ -19300,6 +19376,9 @@ export namespace flyteidl { /** CreateDownloadLinkResponse expiresAt */ expiresAt?: (google.protobuf.ITimestamp|null); + + /** CreateDownloadLinkResponse preSignedUrls */ + preSignedUrls?: (flyteidl.service.IPreSignedURLs|null); } /** Represents a CreateDownloadLinkResponse. */ @@ -19317,6 +19396,9 @@ export namespace flyteidl { /** CreateDownloadLinkResponse expiresAt. */ public expiresAt?: (google.protobuf.ITimestamp|null); + /** CreateDownloadLinkResponse preSignedUrls. */ + public preSignedUrls?: (flyteidl.service.IPreSignedURLs|null); + /** * Creates a new CreateDownloadLinkResponse instance using the specified properties. * @param [properties] Properties to set @@ -19350,6 +19432,177 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a PreSignedURLs. */ + interface IPreSignedURLs { + + /** PreSignedURLs signedUrl */ + signedUrl?: (string[]|null); + + /** PreSignedURLs expiresAt */ + expiresAt?: (google.protobuf.ITimestamp|null); + } + + /** Represents a PreSignedURLs. */ + class PreSignedURLs implements IPreSignedURLs { + + /** + * Constructs a new PreSignedURLs. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.service.IPreSignedURLs); + + /** PreSignedURLs signedUrl. */ + public signedUrl: string[]; + + /** PreSignedURLs expiresAt. */ + public expiresAt?: (google.protobuf.ITimestamp|null); + + /** + * Creates a new PreSignedURLs instance using the specified properties. + * @param [properties] Properties to set + * @returns PreSignedURLs instance + */ + public static create(properties?: flyteidl.service.IPreSignedURLs): flyteidl.service.PreSignedURLs; + + /** + * Encodes the specified PreSignedURLs message. Does not implicitly {@link flyteidl.service.PreSignedURLs.verify|verify} messages. + * @param message PreSignedURLs message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.service.IPreSignedURLs, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PreSignedURLs message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PreSignedURLs + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.service.PreSignedURLs; + + /** + * Verifies a PreSignedURLs message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + + /** Properties of a GetDataRequest. */ + interface IGetDataRequest { + + /** GetDataRequest flyteUrl */ + flyteUrl?: (string|null); + } + + /** Represents a GetDataRequest. */ + class GetDataRequest implements IGetDataRequest { + + /** + * Constructs a new GetDataRequest. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.service.IGetDataRequest); + + /** GetDataRequest flyteUrl. */ + public flyteUrl: string; + + /** + * Creates a new GetDataRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns GetDataRequest instance + */ + public static create(properties?: flyteidl.service.IGetDataRequest): flyteidl.service.GetDataRequest; + + /** + * Encodes the specified GetDataRequest message. Does not implicitly {@link flyteidl.service.GetDataRequest.verify|verify} messages. + * @param message GetDataRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.service.IGetDataRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GetDataRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GetDataRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.service.GetDataRequest; + + /** + * Verifies a GetDataRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + + /** Properties of a GetDataResponse. */ + interface IGetDataResponse { + + /** GetDataResponse literalMap */ + literalMap?: (flyteidl.core.ILiteralMap|null); + + /** GetDataResponse preSignedUrls */ + preSignedUrls?: (flyteidl.service.IPreSignedURLs|null); + } + + /** Represents a GetDataResponse. */ + class GetDataResponse implements IGetDataResponse { + + /** + * Constructs a new GetDataResponse. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.service.IGetDataResponse); + + /** GetDataResponse literalMap. */ + public literalMap?: (flyteidl.core.ILiteralMap|null); + + /** GetDataResponse preSignedUrls. */ + public preSignedUrls?: (flyteidl.service.IPreSignedURLs|null); + + /** GetDataResponse data. */ + public data?: ("literalMap"|"preSignedUrls"); + + /** + * Creates a new GetDataResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns GetDataResponse instance + */ + public static create(properties?: flyteidl.service.IGetDataResponse): flyteidl.service.GetDataResponse; + + /** + * Encodes the specified GetDataResponse message. Does not implicitly {@link flyteidl.service.GetDataResponse.verify|verify} messages. + * @param message GetDataResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.service.IGetDataResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GetDataResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GetDataResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.service.GetDataResponse; + + /** + * Verifies a GetDataResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + /** Represents a DataProxyService */ class DataProxyService extends $protobuf.rpc.Service { @@ -19411,6 +19664,20 @@ export namespace flyteidl { * @returns Promise */ public createDownloadLink(request: flyteidl.service.ICreateDownloadLinkRequest): Promise; + + /** + * Calls GetData. + * @param request GetDataRequest message or plain object + * @param callback Node-style callback called with the error, if any, and GetDataResponse + */ + public getData(request: flyteidl.service.IGetDataRequest, callback: flyteidl.service.DataProxyService.GetDataCallback): void; + + /** + * Calls GetData. + * @param request GetDataRequest message or plain object + * @returns Promise + */ + public getData(request: flyteidl.service.IGetDataRequest): Promise; } namespace DataProxyService { @@ -19435,6 +19702,13 @@ export namespace flyteidl { * @param [response] CreateDownloadLinkResponse */ type CreateDownloadLinkCallback = (error: (Error|null), response?: flyteidl.service.CreateDownloadLinkResponse) => void; + + /** + * Callback as used by {@link flyteidl.service.DataProxyService#getData}. + * @param error Error, if any + * @param [response] GetDataResponse + */ + type GetDataCallback = (error: (Error|null), response?: flyteidl.service.GetDataResponse) => void; } /** Represents an ExternalPluginService */ diff --git a/gen/pb-js/flyteidl.js b/gen/pb-js/flyteidl.js index 4e4792dc8..a4583e660 100644 --- a/gen/pb-js/flyteidl.js +++ b/gen/pb-js/flyteidl.js @@ -21530,6 +21530,150 @@ return RawOutputDataConfig; })(); + admin.FlyteURLs = (function() { + + /** + * Properties of a FlyteURLs. + * @memberof flyteidl.admin + * @interface IFlyteURLs + * @property {string|null} [inputs] FlyteURLs inputs + * @property {string|null} [outputs] FlyteURLs outputs + * @property {string|null} [deck] FlyteURLs deck + */ + + /** + * Constructs a new FlyteURLs. + * @memberof flyteidl.admin + * @classdesc Represents a FlyteURLs. + * @implements IFlyteURLs + * @constructor + * @param {flyteidl.admin.IFlyteURLs=} [properties] Properties to set + */ + function FlyteURLs(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FlyteURLs inputs. + * @member {string} inputs + * @memberof flyteidl.admin.FlyteURLs + * @instance + */ + FlyteURLs.prototype.inputs = ""; + + /** + * FlyteURLs outputs. + * @member {string} outputs + * @memberof flyteidl.admin.FlyteURLs + * @instance + */ + FlyteURLs.prototype.outputs = ""; + + /** + * FlyteURLs deck. + * @member {string} deck + * @memberof flyteidl.admin.FlyteURLs + * @instance + */ + FlyteURLs.prototype.deck = ""; + + /** + * Creates a new FlyteURLs instance using the specified properties. + * @function create + * @memberof flyteidl.admin.FlyteURLs + * @static + * @param {flyteidl.admin.IFlyteURLs=} [properties] Properties to set + * @returns {flyteidl.admin.FlyteURLs} FlyteURLs instance + */ + FlyteURLs.create = function create(properties) { + return new FlyteURLs(properties); + }; + + /** + * Encodes the specified FlyteURLs message. Does not implicitly {@link flyteidl.admin.FlyteURLs.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.FlyteURLs + * @static + * @param {flyteidl.admin.IFlyteURLs} message FlyteURLs message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FlyteURLs.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.inputs != null && message.hasOwnProperty("inputs")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.inputs); + if (message.outputs != null && message.hasOwnProperty("outputs")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.outputs); + if (message.deck != null && message.hasOwnProperty("deck")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.deck); + return writer; + }; + + /** + * Decodes a FlyteURLs message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.FlyteURLs + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.FlyteURLs} FlyteURLs + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FlyteURLs.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.FlyteURLs(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.inputs = reader.string(); + break; + case 2: + message.outputs = reader.string(); + break; + case 3: + message.deck = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a FlyteURLs message. + * @function verify + * @memberof flyteidl.admin.FlyteURLs + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FlyteURLs.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.inputs != null && message.hasOwnProperty("inputs")) + if (!$util.isString(message.inputs)) + return "inputs: string expected"; + if (message.outputs != null && message.hasOwnProperty("outputs")) + if (!$util.isString(message.outputs)) + return "outputs: string expected"; + if (message.deck != null && message.hasOwnProperty("deck")) + if (!$util.isString(message.deck)) + return "deck: string expected"; + return null; + }; + + return FlyteURLs; + })(); + admin.DescriptionEntity = (function() { /** @@ -33240,6 +33384,7 @@ * @property {flyteidl.core.ILiteralMap|null} [fullInputs] NodeExecutionGetDataResponse fullInputs * @property {flyteidl.core.ILiteralMap|null} [fullOutputs] NodeExecutionGetDataResponse fullOutputs * @property {flyteidl.admin.IDynamicWorkflowNodeMetadata|null} [dynamicWorkflow] NodeExecutionGetDataResponse dynamicWorkflow + * @property {flyteidl.admin.IFlyteURLs|null} [flyteUrls] NodeExecutionGetDataResponse flyteUrls */ /** @@ -33297,6 +33442,14 @@ */ NodeExecutionGetDataResponse.prototype.dynamicWorkflow = null; + /** + * NodeExecutionGetDataResponse flyteUrls. + * @member {flyteidl.admin.IFlyteURLs|null|undefined} flyteUrls + * @memberof flyteidl.admin.NodeExecutionGetDataResponse + * @instance + */ + NodeExecutionGetDataResponse.prototype.flyteUrls = null; + /** * Creates a new NodeExecutionGetDataResponse instance using the specified properties. * @function create @@ -33331,6 +33484,8 @@ $root.flyteidl.core.LiteralMap.encode(message.fullOutputs, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); if (message.dynamicWorkflow != null && message.hasOwnProperty("dynamicWorkflow")) $root.flyteidl.admin.DynamicWorkflowNodeMetadata.encode(message.dynamicWorkflow, writer.uint32(/* id 16, wireType 2 =*/130).fork()).ldelim(); + if (message.flyteUrls != null && message.hasOwnProperty("flyteUrls")) + $root.flyteidl.admin.FlyteURLs.encode(message.flyteUrls, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim(); return writer; }; @@ -33367,6 +33522,9 @@ case 16: message.dynamicWorkflow = $root.flyteidl.admin.DynamicWorkflowNodeMetadata.decode(reader, reader.uint32()); break; + case 17: + message.flyteUrls = $root.flyteidl.admin.FlyteURLs.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -33411,6 +33569,11 @@ if (error) return "dynamicWorkflow." + error; } + if (message.flyteUrls != null && message.hasOwnProperty("flyteUrls")) { + var error = $root.flyteidl.admin.FlyteURLs.verify(message.flyteUrls); + if (error) + return "flyteUrls." + error; + } return null; }; @@ -39085,6 +39248,7 @@ * @property {flyteidl.admin.IUrlBlob|null} [outputs] TaskExecutionGetDataResponse outputs * @property {flyteidl.core.ILiteralMap|null} [fullInputs] TaskExecutionGetDataResponse fullInputs * @property {flyteidl.core.ILiteralMap|null} [fullOutputs] TaskExecutionGetDataResponse fullOutputs + * @property {flyteidl.admin.IFlyteURLs|null} [flyteUrls] TaskExecutionGetDataResponse flyteUrls */ /** @@ -39134,6 +39298,14 @@ */ TaskExecutionGetDataResponse.prototype.fullOutputs = null; + /** + * TaskExecutionGetDataResponse flyteUrls. + * @member {flyteidl.admin.IFlyteURLs|null|undefined} flyteUrls + * @memberof flyteidl.admin.TaskExecutionGetDataResponse + * @instance + */ + TaskExecutionGetDataResponse.prototype.flyteUrls = null; + /** * Creates a new TaskExecutionGetDataResponse instance using the specified properties. * @function create @@ -39166,6 +39338,8 @@ $root.flyteidl.core.LiteralMap.encode(message.fullInputs, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.fullOutputs != null && message.hasOwnProperty("fullOutputs")) $root.flyteidl.core.LiteralMap.encode(message.fullOutputs, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.flyteUrls != null && message.hasOwnProperty("flyteUrls")) + $root.flyteidl.admin.FlyteURLs.encode(message.flyteUrls, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; @@ -39199,6 +39373,9 @@ case 4: message.fullOutputs = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); break; + case 5: + message.flyteUrls = $root.flyteidl.admin.FlyteURLs.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -39238,6 +39415,11 @@ if (error) return "fullOutputs." + error; } + if (message.flyteUrls != null && message.hasOwnProperty("flyteUrls")) { + var error = $root.flyteidl.admin.FlyteURLs.verify(message.flyteUrls); + if (error) + return "flyteUrls." + error; + } return null; }; @@ -45052,6 +45234,7 @@ * @interface ICreateDownloadLinkResponse * @property {Array.|null} [signedUrl] CreateDownloadLinkResponse signedUrl * @property {google.protobuf.ITimestamp|null} [expiresAt] CreateDownloadLinkResponse expiresAt + * @property {flyteidl.service.IPreSignedURLs|null} [preSignedUrls] CreateDownloadLinkResponse preSignedUrls */ /** @@ -45086,6 +45269,14 @@ */ CreateDownloadLinkResponse.prototype.expiresAt = null; + /** + * CreateDownloadLinkResponse preSignedUrls. + * @member {flyteidl.service.IPreSignedURLs|null|undefined} preSignedUrls + * @memberof flyteidl.service.CreateDownloadLinkResponse + * @instance + */ + CreateDownloadLinkResponse.prototype.preSignedUrls = null; + /** * Creates a new CreateDownloadLinkResponse instance using the specified properties. * @function create @@ -45115,6 +45306,8 @@ writer.uint32(/* id 1, wireType 2 =*/10).string(message.signedUrl[i]); if (message.expiresAt != null && message.hasOwnProperty("expiresAt")) $root.google.protobuf.Timestamp.encode(message.expiresAt, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.preSignedUrls != null && message.hasOwnProperty("preSignedUrls")) + $root.flyteidl.service.PreSignedURLs.encode(message.preSignedUrls, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -45144,6 +45337,9 @@ case 2: message.expiresAt = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; + case 3: + message.preSignedUrls = $root.flyteidl.service.PreSignedURLs.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -45175,12 +45371,418 @@ if (error) return "expiresAt." + error; } + if (message.preSignedUrls != null && message.hasOwnProperty("preSignedUrls")) { + var error = $root.flyteidl.service.PreSignedURLs.verify(message.preSignedUrls); + if (error) + return "preSignedUrls." + error; + } return null; }; return CreateDownloadLinkResponse; })(); + service.PreSignedURLs = (function() { + + /** + * Properties of a PreSignedURLs. + * @memberof flyteidl.service + * @interface IPreSignedURLs + * @property {Array.|null} [signedUrl] PreSignedURLs signedUrl + * @property {google.protobuf.ITimestamp|null} [expiresAt] PreSignedURLs expiresAt + */ + + /** + * Constructs a new PreSignedURLs. + * @memberof flyteidl.service + * @classdesc Represents a PreSignedURLs. + * @implements IPreSignedURLs + * @constructor + * @param {flyteidl.service.IPreSignedURLs=} [properties] Properties to set + */ + function PreSignedURLs(properties) { + this.signedUrl = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PreSignedURLs signedUrl. + * @member {Array.} signedUrl + * @memberof flyteidl.service.PreSignedURLs + * @instance + */ + PreSignedURLs.prototype.signedUrl = $util.emptyArray; + + /** + * PreSignedURLs expiresAt. + * @member {google.protobuf.ITimestamp|null|undefined} expiresAt + * @memberof flyteidl.service.PreSignedURLs + * @instance + */ + PreSignedURLs.prototype.expiresAt = null; + + /** + * Creates a new PreSignedURLs instance using the specified properties. + * @function create + * @memberof flyteidl.service.PreSignedURLs + * @static + * @param {flyteidl.service.IPreSignedURLs=} [properties] Properties to set + * @returns {flyteidl.service.PreSignedURLs} PreSignedURLs instance + */ + PreSignedURLs.create = function create(properties) { + return new PreSignedURLs(properties); + }; + + /** + * Encodes the specified PreSignedURLs message. Does not implicitly {@link flyteidl.service.PreSignedURLs.verify|verify} messages. + * @function encode + * @memberof flyteidl.service.PreSignedURLs + * @static + * @param {flyteidl.service.IPreSignedURLs} message PreSignedURLs message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PreSignedURLs.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.signedUrl != null && message.signedUrl.length) + for (var i = 0; i < message.signedUrl.length; ++i) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.signedUrl[i]); + if (message.expiresAt != null && message.hasOwnProperty("expiresAt")) + $root.google.protobuf.Timestamp.encode(message.expiresAt, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Decodes a PreSignedURLs message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.service.PreSignedURLs + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.service.PreSignedURLs} PreSignedURLs + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PreSignedURLs.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.service.PreSignedURLs(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.signedUrl && message.signedUrl.length)) + message.signedUrl = []; + message.signedUrl.push(reader.string()); + break; + case 2: + message.expiresAt = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a PreSignedURLs message. + * @function verify + * @memberof flyteidl.service.PreSignedURLs + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PreSignedURLs.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.signedUrl != null && message.hasOwnProperty("signedUrl")) { + if (!Array.isArray(message.signedUrl)) + return "signedUrl: array expected"; + for (var i = 0; i < message.signedUrl.length; ++i) + if (!$util.isString(message.signedUrl[i])) + return "signedUrl: string[] expected"; + } + if (message.expiresAt != null && message.hasOwnProperty("expiresAt")) { + var error = $root.google.protobuf.Timestamp.verify(message.expiresAt); + if (error) + return "expiresAt." + error; + } + return null; + }; + + return PreSignedURLs; + })(); + + service.GetDataRequest = (function() { + + /** + * Properties of a GetDataRequest. + * @memberof flyteidl.service + * @interface IGetDataRequest + * @property {string|null} [flyteUrl] GetDataRequest flyteUrl + */ + + /** + * Constructs a new GetDataRequest. + * @memberof flyteidl.service + * @classdesc Represents a GetDataRequest. + * @implements IGetDataRequest + * @constructor + * @param {flyteidl.service.IGetDataRequest=} [properties] Properties to set + */ + function GetDataRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GetDataRequest flyteUrl. + * @member {string} flyteUrl + * @memberof flyteidl.service.GetDataRequest + * @instance + */ + GetDataRequest.prototype.flyteUrl = ""; + + /** + * Creates a new GetDataRequest instance using the specified properties. + * @function create + * @memberof flyteidl.service.GetDataRequest + * @static + * @param {flyteidl.service.IGetDataRequest=} [properties] Properties to set + * @returns {flyteidl.service.GetDataRequest} GetDataRequest instance + */ + GetDataRequest.create = function create(properties) { + return new GetDataRequest(properties); + }; + + /** + * Encodes the specified GetDataRequest message. Does not implicitly {@link flyteidl.service.GetDataRequest.verify|verify} messages. + * @function encode + * @memberof flyteidl.service.GetDataRequest + * @static + * @param {flyteidl.service.IGetDataRequest} message GetDataRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GetDataRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.flyteUrl != null && message.hasOwnProperty("flyteUrl")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.flyteUrl); + return writer; + }; + + /** + * Decodes a GetDataRequest message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.service.GetDataRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.service.GetDataRequest} GetDataRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GetDataRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.service.GetDataRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.flyteUrl = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a GetDataRequest message. + * @function verify + * @memberof flyteidl.service.GetDataRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GetDataRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.flyteUrl != null && message.hasOwnProperty("flyteUrl")) + if (!$util.isString(message.flyteUrl)) + return "flyteUrl: string expected"; + return null; + }; + + return GetDataRequest; + })(); + + service.GetDataResponse = (function() { + + /** + * Properties of a GetDataResponse. + * @memberof flyteidl.service + * @interface IGetDataResponse + * @property {flyteidl.core.ILiteralMap|null} [literalMap] GetDataResponse literalMap + * @property {flyteidl.service.IPreSignedURLs|null} [preSignedUrls] GetDataResponse preSignedUrls + */ + + /** + * Constructs a new GetDataResponse. + * @memberof flyteidl.service + * @classdesc Represents a GetDataResponse. + * @implements IGetDataResponse + * @constructor + * @param {flyteidl.service.IGetDataResponse=} [properties] Properties to set + */ + function GetDataResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GetDataResponse literalMap. + * @member {flyteidl.core.ILiteralMap|null|undefined} literalMap + * @memberof flyteidl.service.GetDataResponse + * @instance + */ + GetDataResponse.prototype.literalMap = null; + + /** + * GetDataResponse preSignedUrls. + * @member {flyteidl.service.IPreSignedURLs|null|undefined} preSignedUrls + * @memberof flyteidl.service.GetDataResponse + * @instance + */ + GetDataResponse.prototype.preSignedUrls = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * GetDataResponse data. + * @member {"literalMap"|"preSignedUrls"|undefined} data + * @memberof flyteidl.service.GetDataResponse + * @instance + */ + Object.defineProperty(GetDataResponse.prototype, "data", { + get: $util.oneOfGetter($oneOfFields = ["literalMap", "preSignedUrls"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new GetDataResponse instance using the specified properties. + * @function create + * @memberof flyteidl.service.GetDataResponse + * @static + * @param {flyteidl.service.IGetDataResponse=} [properties] Properties to set + * @returns {flyteidl.service.GetDataResponse} GetDataResponse instance + */ + GetDataResponse.create = function create(properties) { + return new GetDataResponse(properties); + }; + + /** + * Encodes the specified GetDataResponse message. Does not implicitly {@link flyteidl.service.GetDataResponse.verify|verify} messages. + * @function encode + * @memberof flyteidl.service.GetDataResponse + * @static + * @param {flyteidl.service.IGetDataResponse} message GetDataResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GetDataResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.literalMap != null && message.hasOwnProperty("literalMap")) + $root.flyteidl.core.LiteralMap.encode(message.literalMap, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.preSignedUrls != null && message.hasOwnProperty("preSignedUrls")) + $root.flyteidl.service.PreSignedURLs.encode(message.preSignedUrls, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Decodes a GetDataResponse message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.service.GetDataResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.service.GetDataResponse} GetDataResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GetDataResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.service.GetDataResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.literalMap = $root.flyteidl.core.LiteralMap.decode(reader, reader.uint32()); + break; + case 2: + message.preSignedUrls = $root.flyteidl.service.PreSignedURLs.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a GetDataResponse message. + * @function verify + * @memberof flyteidl.service.GetDataResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GetDataResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.literalMap != null && message.hasOwnProperty("literalMap")) { + properties.data = 1; + { + var error = $root.flyteidl.core.LiteralMap.verify(message.literalMap); + if (error) + return "literalMap." + error; + } + } + if (message.preSignedUrls != null && message.hasOwnProperty("preSignedUrls")) { + if (properties.data === 1) + return "data: multiple values"; + properties.data = 1; + { + var error = $root.flyteidl.service.PreSignedURLs.verify(message.preSignedUrls); + if (error) + return "preSignedUrls." + error; + } + } + return null; + }; + + return GetDataResponse; + })(); + service.DataProxyService = (function() { /** @@ -45312,6 +45914,39 @@ * @variation 2 */ + /** + * Callback as used by {@link flyteidl.service.DataProxyService#getData}. + * @memberof flyteidl.service.DataProxyService + * @typedef GetDataCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {flyteidl.service.GetDataResponse} [response] GetDataResponse + */ + + /** + * Calls GetData. + * @function getData + * @memberof flyteidl.service.DataProxyService + * @instance + * @param {flyteidl.service.IGetDataRequest} request GetDataRequest message or plain object + * @param {flyteidl.service.DataProxyService.GetDataCallback} callback Node-style callback called with the error, if any, and GetDataResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(DataProxyService.prototype.getData = function getData(request, callback) { + return this.rpcCall(getData, $root.flyteidl.service.GetDataRequest, $root.flyteidl.service.GetDataResponse, request, callback); + }, "name", { value: "GetData" }); + + /** + * Calls GetData. + * @function getData + * @memberof flyteidl.service.DataProxyService + * @instance + * @param {flyteidl.service.IGetDataRequest} request GetDataRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + return DataProxyService; })(); diff --git a/gen/pb_python/flyteidl/admin/common_pb2.py b/gen/pb_python/flyteidl/admin/common_pb2.py index 508d6aa09..0f0aff146 100644 --- a/gen/pb_python/flyteidl/admin/common_pb2.py +++ b/gen/pb_python/flyteidl/admin/common_pb2.py @@ -19,6 +19,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +<<<<<<< HEAD <<<<<<< HEAD DESCRIPTOR = _descriptor.FileDescriptor( name='flyteidl/admin/common.proto', @@ -31,6 +32,9 @@ ======= DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lyteidl/admin/common.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"]\n\x15NamedEntityIdentifier\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\"o\n\x13NamedEntityMetadata\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x36\n\x05state\x18\x02 \x01(\x0e\x32 .flyteidl.admin.NamedEntityStateR\x05state\"\xc7\x01\n\x0bNamedEntity\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x82\x01\n\x04Sort\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12<\n\tdirection\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.Sort.DirectionR\tdirection\"*\n\tDirection\x12\x0e\n\nDESCENDING\x10\x00\x12\r\n\tASCENDING\x10\x01\"\xc9\x01\n NamedEntityIdentifierListRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x03 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x06 \x01(\tR\x07\x66ilters\"\x81\x02\n\x16NamedEntityListRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x03 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x04 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x05 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x06 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x07 \x01(\tR\x07\x66ilters\"t\n\x19NamedEntityIdentifierList\x12\x41\n\x08\x65ntities\x18\x01 \x03(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"`\n\x0fNamedEntityList\x12\x37\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x1b.flyteidl.admin.NamedEntityR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x90\x01\n\x15NamedEntityGetRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\"\xd4\x01\n\x18NamedEntityUpdateRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x1b\n\x19NamedEntityUpdateResponse\"=\n\x10ObjectGetRequest\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\"\xc1\x01\n\x13ResourceListRequest\x12\x35\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\">\n\x11\x45mailNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\"B\n\x15PagerDutyNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\">\n\x11SlackNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\"\x94\x02\n\x0cNotification\x12>\n\x06phases\x18\x01 \x03(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x06phases\x12\x39\n\x05\x65mail\x18\x02 \x01(\x0b\x32!.flyteidl.admin.EmailNotificationH\x00R\x05\x65mail\x12\x46\n\npager_duty\x18\x03 \x01(\x0b\x32%.flyteidl.admin.PagerDutyNotificationH\x00R\tpagerDuty\x12\x39\n\x05slack\x18\x04 \x01(\x0b\x32!.flyteidl.admin.SlackNotificationH\x00R\x05slackB\x06\n\x04type\"5\n\x07UrlBlob\x12\x10\n\x03url\x18\x01 \x01(\tR\x03url\x12\x14\n\x05\x62ytes\x18\x02 \x01(\x03R\x05\x62ytes:\x02\x18\x01\"\x7f\n\x06Labels\x12:\n\x06values\x18\x01 \x03(\x0b\x32\".flyteidl.admin.Labels.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x89\x01\n\x0b\x41nnotations\x12?\n\x06values\x18\x01 \x03(\x0b\x32\'.flyteidl.admin.Annotations.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"z\n\x08\x41uthRole\x12,\n\x12\x61ssumable_iam_role\x18\x01 \x01(\tR\x10\x61ssumableIamRole\x12<\n\x1akubernetes_service_account\x18\x02 \x01(\tR\x18kubernetesServiceAccount:\x02\x18\x01\"K\n\x13RawOutputDataConfig\x12\x34\n\x16output_location_prefix\x18\x01 \x01(\tR\x14outputLocationPrefix*\\\n\x10NamedEntityState\x12\x17\n\x13NAMED_ENTITY_ACTIVE\x10\x00\x12\x19\n\x15NAMED_ENTITY_ARCHIVED\x10\x01\x12\x14\n\x10SYSTEM_GENERATED\x10\x02\x42\xb1\x01\n\x12\x63om.flyteidl.adminB\x0b\x43ommonProtoP\x01Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') >>>>>>> bdb76306 (Create service for runtime metrics (#367)) +======= +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lyteidl/admin/common.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"]\n\x15NamedEntityIdentifier\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\"o\n\x13NamedEntityMetadata\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x36\n\x05state\x18\x02 \x01(\x0e\x32 .flyteidl.admin.NamedEntityStateR\x05state\"\xc7\x01\n\x0bNamedEntity\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x82\x01\n\x04Sort\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12<\n\tdirection\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.Sort.DirectionR\tdirection\"*\n\tDirection\x12\x0e\n\nDESCENDING\x10\x00\x12\r\n\tASCENDING\x10\x01\"\xc9\x01\n NamedEntityIdentifierListRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x03 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x06 \x01(\tR\x07\x66ilters\"\x81\x02\n\x16NamedEntityListRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x03 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x04 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x05 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x06 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x07 \x01(\tR\x07\x66ilters\"t\n\x19NamedEntityIdentifierList\x12\x41\n\x08\x65ntities\x18\x01 \x03(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"`\n\x0fNamedEntityList\x12\x37\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x1b.flyteidl.admin.NamedEntityR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x90\x01\n\x15NamedEntityGetRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\"\xd4\x01\n\x18NamedEntityUpdateRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x1b\n\x19NamedEntityUpdateResponse\"=\n\x10ObjectGetRequest\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\"\xc1\x01\n\x13ResourceListRequest\x12\x35\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\">\n\x11\x45mailNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\"B\n\x15PagerDutyNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\">\n\x11SlackNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\"\x94\x02\n\x0cNotification\x12>\n\x06phases\x18\x01 \x03(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x06phases\x12\x39\n\x05\x65mail\x18\x02 \x01(\x0b\x32!.flyteidl.admin.EmailNotificationH\x00R\x05\x65mail\x12\x46\n\npager_duty\x18\x03 \x01(\x0b\x32%.flyteidl.admin.PagerDutyNotificationH\x00R\tpagerDuty\x12\x39\n\x05slack\x18\x04 \x01(\x0b\x32!.flyteidl.admin.SlackNotificationH\x00R\x05slackB\x06\n\x04type\"5\n\x07UrlBlob\x12\x10\n\x03url\x18\x01 \x01(\tR\x03url\x12\x14\n\x05\x62ytes\x18\x02 \x01(\x03R\x05\x62ytes:\x02\x18\x01\"\x7f\n\x06Labels\x12:\n\x06values\x18\x01 \x03(\x0b\x32\".flyteidl.admin.Labels.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x89\x01\n\x0b\x41nnotations\x12?\n\x06values\x18\x01 \x03(\x0b\x32\'.flyteidl.admin.Annotations.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"z\n\x08\x41uthRole\x12,\n\x12\x61ssumable_iam_role\x18\x01 \x01(\tR\x10\x61ssumableIamRole\x12<\n\x1akubernetes_service_account\x18\x02 \x01(\tR\x18kubernetesServiceAccount:\x02\x18\x01\"K\n\x13RawOutputDataConfig\x12\x34\n\x16output_location_prefix\x18\x01 \x01(\tR\x14outputLocationPrefix\"Q\n\tFlyteURLs\x12\x16\n\x06inputs\x18\x01 \x01(\tR\x06inputs\x12\x18\n\x07outputs\x18\x02 \x01(\tR\x07outputs\x12\x12\n\x04\x64\x65\x63k\x18\x03 \x01(\tR\x04\x64\x65\x63k*\\\n\x10NamedEntityState\x12\x17\n\x13NAMED_ENTITY_ACTIVE\x10\x00\x12\x19\n\x15NAMED_ENTITY_ARCHIVED\x10\x01\x12\x14\n\x10SYSTEM_GENERATED\x10\x02\x42\xb1\x01\n\x12\x63om.flyteidl.adminB\x0b\x43ommonProtoP\x01Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') +>>>>>>> 513ff822 (Data addresses #minor (#391)) _NAMEDENTITYSTATE = _descriptor.EnumDescriptor( name='NamedEntityState', @@ -1305,6 +1309,7 @@ _ANNOTATIONS_VALUESENTRY._serialized_options = b'8\001' _AUTHROLE._options = None _AUTHROLE._serialized_options = b'\030\001' +<<<<<<< HEAD _NAMEDENTITYSTATE._serialized_start=3016 _NAMEDENTITYSTATE._serialized_end=3108 _NAMEDENTITYIDENTIFIER._serialized_start=143 @@ -1358,4 +1363,60 @@ _RAWOUTPUTDATACONFIG._serialized_start=2939 _RAWOUTPUTDATACONFIG._serialized_end=3014 >>>>>>> bdb76306 (Create service for runtime metrics (#367)) +======= + _globals['_NAMEDENTITYSTATE']._serialized_start=3099 + _globals['_NAMEDENTITYSTATE']._serialized_end=3191 + _globals['_NAMEDENTITYIDENTIFIER']._serialized_start=143 + _globals['_NAMEDENTITYIDENTIFIER']._serialized_end=236 + _globals['_NAMEDENTITYMETADATA']._serialized_start=238 + _globals['_NAMEDENTITYMETADATA']._serialized_end=349 + _globals['_NAMEDENTITY']._serialized_start=352 + _globals['_NAMEDENTITY']._serialized_end=551 + _globals['_SORT']._serialized_start=554 + _globals['_SORT']._serialized_end=684 + _globals['_SORT_DIRECTION']._serialized_start=642 + _globals['_SORT_DIRECTION']._serialized_end=684 + _globals['_NAMEDENTITYIDENTIFIERLISTREQUEST']._serialized_start=687 + _globals['_NAMEDENTITYIDENTIFIERLISTREQUEST']._serialized_end=888 + _globals['_NAMEDENTITYLISTREQUEST']._serialized_start=891 + _globals['_NAMEDENTITYLISTREQUEST']._serialized_end=1148 + _globals['_NAMEDENTITYIDENTIFIERLIST']._serialized_start=1150 + _globals['_NAMEDENTITYIDENTIFIERLIST']._serialized_end=1266 + _globals['_NAMEDENTITYLIST']._serialized_start=1268 + _globals['_NAMEDENTITYLIST']._serialized_end=1364 + _globals['_NAMEDENTITYGETREQUEST']._serialized_start=1367 + _globals['_NAMEDENTITYGETREQUEST']._serialized_end=1511 + _globals['_NAMEDENTITYUPDATEREQUEST']._serialized_start=1514 + _globals['_NAMEDENTITYUPDATEREQUEST']._serialized_end=1726 + _globals['_NAMEDENTITYUPDATERESPONSE']._serialized_start=1728 + _globals['_NAMEDENTITYUPDATERESPONSE']._serialized_end=1755 + _globals['_OBJECTGETREQUEST']._serialized_start=1757 + _globals['_OBJECTGETREQUEST']._serialized_end=1818 + _globals['_RESOURCELISTREQUEST']._serialized_start=1821 + _globals['_RESOURCELISTREQUEST']._serialized_end=2014 + _globals['_EMAILNOTIFICATION']._serialized_start=2016 + _globals['_EMAILNOTIFICATION']._serialized_end=2078 + _globals['_PAGERDUTYNOTIFICATION']._serialized_start=2080 + _globals['_PAGERDUTYNOTIFICATION']._serialized_end=2146 + _globals['_SLACKNOTIFICATION']._serialized_start=2148 + _globals['_SLACKNOTIFICATION']._serialized_end=2210 + _globals['_NOTIFICATION']._serialized_start=2213 + _globals['_NOTIFICATION']._serialized_end=2489 + _globals['_URLBLOB']._serialized_start=2491 + _globals['_URLBLOB']._serialized_end=2544 + _globals['_LABELS']._serialized_start=2546 + _globals['_LABELS']._serialized_end=2673 + _globals['_LABELS_VALUESENTRY']._serialized_start=2616 + _globals['_LABELS_VALUESENTRY']._serialized_end=2673 + _globals['_ANNOTATIONS']._serialized_start=2676 + _globals['_ANNOTATIONS']._serialized_end=2813 + _globals['_ANNOTATIONS_VALUESENTRY']._serialized_start=2616 + _globals['_ANNOTATIONS_VALUESENTRY']._serialized_end=2673 + _globals['_AUTHROLE']._serialized_start=2815 + _globals['_AUTHROLE']._serialized_end=2937 + _globals['_RAWOUTPUTDATACONFIG']._serialized_start=2939 + _globals['_RAWOUTPUTDATACONFIG']._serialized_end=3014 + _globals['_FLYTEURLS']._serialized_start=3016 + _globals['_FLYTEURLS']._serialized_end=3097 +>>>>>>> 513ff822 (Data addresses #minor (#391)) # @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/admin/common_pb2.pyi b/gen/pb_python/flyteidl/admin/common_pb2.pyi index e85d0f17d..3611ed4cc 100644 --- a/gen/pb_python/flyteidl/admin/common_pb2.pyi +++ b/gen/pb_python/flyteidl/admin/common_pb2.pyi @@ -182,6 +182,7 @@ class RawOutputDataConfig(_message.Message): output_location_prefix: str def __init__(self, output_location_prefix: _Optional[str] = ...) -> None: ... +<<<<<<< HEAD class ResourceListRequest(_message.Message): __slots__ = ["filters", "id", "limit", "sort_by", "token"] FILTERS_FIELD_NUMBER: _ClassVar[int] @@ -224,3 +225,14 @@ class UrlBlob(_message.Message): class NamedEntityState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = [] +======= +class FlyteURLs(_message.Message): + __slots__ = ["inputs", "outputs", "deck"] + INPUTS_FIELD_NUMBER: _ClassVar[int] + OUTPUTS_FIELD_NUMBER: _ClassVar[int] + DECK_FIELD_NUMBER: _ClassVar[int] + inputs: str + outputs: str + deck: str + def __init__(self, inputs: _Optional[str] = ..., outputs: _Optional[str] = ..., deck: _Optional[str] = ...) -> None: ... +>>>>>>> 513ff822 (Data addresses #minor (#391)) diff --git a/gen/pb_python/flyteidl/admin/node_execution_pb2.py b/gen/pb_python/flyteidl/admin/node_execution_pb2.py index 4f36f3d3a..c5f9fa3ac 100644 --- a/gen/pb_python/flyteidl/admin/node_execution_pb2.py +++ b/gen/pb_python/flyteidl/admin/node_execution_pb2.py @@ -23,6 +23,7 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +<<<<<<< HEAD DESCRIPTOR = _descriptor.FileDescriptor( name='flyteidl/admin/node_execution.proto', package='flyteidl.admin', @@ -31,8 +32,12 @@ serialized_pb=_b('\n#flyteidl/admin/node_execution.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1b\x66lyteidl/core/catalog.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\"M\n\x17NodeExecutionGetRequest\x12\x32\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifier\"\xd5\x01\n\x18NodeExecutionListRequest\x12I\n\x15workflow_execution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\r\n\x05limit\x18\x02 \x01(\r\x12\r\n\x05token\x18\x03 \x01(\t\x12\x0f\n\x07\x66ilters\x18\x04 \x01(\t\x12%\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.Sort\x12\x18\n\x10unique_parent_id\x18\x06 \x01(\t\"\xba\x01\n\x1fNodeExecutionForTaskListRequest\x12\x41\n\x11task_execution_id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifier\x12\r\n\x05limit\x18\x02 \x01(\r\x12\r\n\x05token\x18\x03 \x01(\t\x12\x0f\n\x07\x66ilters\x18\x04 \x01(\t\x12%\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.Sort\"\xc6\x01\n\rNodeExecution\x12\x32\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifier\x12\x11\n\tinput_uri\x18\x02 \x01(\t\x12\x35\n\x07\x63losure\x18\x03 \x01(\x0b\x32$.flyteidl.admin.NodeExecutionClosure\x12\x37\n\x08metadata\x18\x04 \x01(\x0b\x32%.flyteidl.admin.NodeExecutionMetaData\"n\n\x15NodeExecutionMetaData\x12\x13\n\x0bretry_group\x18\x01 \x01(\t\x12\x16\n\x0eis_parent_node\x18\x02 \x01(\x08\x12\x14\n\x0cspec_node_id\x18\x03 \x01(\t\x12\x12\n\nis_dynamic\x18\x04 \x01(\x08\"Z\n\x11NodeExecutionList\x12\x36\n\x0fnode_executions\x18\x01 \x03(\x0b\x32\x1d.flyteidl.admin.NodeExecution\x12\r\n\x05token\x18\x02 \x01(\t\"\xe2\x04\n\x14NodeExecutionClosure\x12\x18\n\noutput_uri\x18\x01 \x01(\tB\x02\x18\x01H\x00\x12.\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00\x12\x34\n\x0boutput_data\x18\n \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00\x12\x31\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.NodeExecution.Phase\x12.\n\nstarted_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x46\n\x16workflow_node_metadata\x18\x08 \x01(\x0b\x32$.flyteidl.admin.WorkflowNodeMetadataH\x01\x12>\n\x12task_node_metadata\x18\t \x01(\x0b\x32 .flyteidl.admin.TaskNodeMetadataH\x01\x12\x10\n\x08\x64\x65\x63k_uri\x18\x0b \x01(\t\x12\x1c\n\x14\x64ynamic_job_spec_uri\x18\x0c \x01(\tB\x0f\n\routput_resultB\x11\n\x0ftarget_metadata\"W\n\x14WorkflowNodeMetadata\x12?\n\x0b\x65xecutionId\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"\x98\x01\n\x10TaskNodeMetadata\x12\x37\n\x0c\x63\x61\x63he_status\x18\x01 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatus\x12\x33\n\x0b\x63\x61talog_key\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.CatalogMetadata\x12\x16\n\x0e\x63heckpoint_uri\x18\x04 \x01(\t\"\xa5\x01\n\x1b\x44ynamicWorkflowNodeMetadata\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12\x41\n\x11\x63ompiled_workflow\x18\x02 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosure\x12\x1c\n\x14\x64ynamic_job_spec_uri\x18\x03 \x01(\t\"Q\n\x1bNodeExecutionGetDataRequest\x12\x32\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifier\"\xa1\x02\n\x1cNodeExecutionGetDataResponse\x12+\n\x06inputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01\x12,\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01\x12.\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\x12/\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\x12\x45\n\x10\x64ynamic_workflow\x18\x10 \x01(\x0b\x32+.flyteidl.admin.DynamicWorkflowNodeMetadataB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , dependencies=[flyteidl_dot_admin_dot_common__pb2.DESCRIPTOR,flyteidl_dot_core_dot_execution__pb2.DESCRIPTOR,flyteidl_dot_core_dot_catalog__pb2.DESCRIPTOR,flyteidl_dot_core_dot_compiler__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_literals__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,]) +======= +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#flyteidl/admin/node_execution.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1b\x66lyteidl/core/catalog.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\"Q\n\x17NodeExecutionGetRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\"\x99\x02\n\x18NodeExecutionListRequest\x12^\n\x15workflow_execution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x13workflowExecutionId\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12(\n\x10unique_parent_id\x18\x06 \x01(\tR\x0euniqueParentId\"\xea\x01\n\x1fNodeExecutionForTaskListRequest\x12R\n\x11task_execution_id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x0ftaskExecutionId\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\"\xe7\x01\n\rNodeExecution\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\x12\x1b\n\tinput_uri\x18\x02 \x01(\tR\x08inputUri\x12>\n\x07\x63losure\x18\x03 \x01(\x0b\x32$.flyteidl.admin.NodeExecutionClosureR\x07\x63losure\x12\x41\n\x08metadata\x18\x04 \x01(\x0b\x32%.flyteidl.admin.NodeExecutionMetaDataR\x08metadata\"\x9f\x01\n\x15NodeExecutionMetaData\x12\x1f\n\x0bretry_group\x18\x01 \x01(\tR\nretryGroup\x12$\n\x0eis_parent_node\x18\x02 \x01(\x08R\x0cisParentNode\x12 \n\x0cspec_node_id\x18\x03 \x01(\tR\nspecNodeId\x12\x1d\n\nis_dynamic\x18\x04 \x01(\x08R\tisDynamic\"q\n\x11NodeExecutionList\x12\x46\n\x0fnode_executions\x18\x01 \x03(\x0b\x32\x1d.flyteidl.admin.NodeExecutionR\x0enodeExecutions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\xf6\x05\n\x14NodeExecutionClosure\x12#\n\noutput_uri\x18\x01 \x01(\tB\x02\x18\x01H\x00R\toutputUri\x12\x35\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12@\n\x0boutput_data\x18\n \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\noutputData\x12\x38\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.NodeExecution.PhaseR\x05phase\x12\x39\n\nstarted_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x35\n\x08\x64uration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x39\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\\\n\x16workflow_node_metadata\x18\x08 \x01(\x0b\x32$.flyteidl.admin.WorkflowNodeMetadataH\x01R\x14workflowNodeMetadata\x12P\n\x12task_node_metadata\x18\t \x01(\x0b\x32 .flyteidl.admin.TaskNodeMetadataH\x01R\x10taskNodeMetadata\x12\x19\n\x08\x64\x65\x63k_uri\x18\x0b \x01(\tR\x07\x64\x65\x63kUri\x12/\n\x14\x64ynamic_job_spec_uri\x18\x0c \x01(\tR\x11\x64ynamicJobSpecUriB\x0f\n\routput_resultB\x11\n\x0ftarget_metadata\"d\n\x14WorkflowNodeMetadata\x12L\n\x0b\x65xecutionId\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x0b\x65xecutionId\"\xc0\x01\n\x10TaskNodeMetadata\x12\x44\n\x0c\x63\x61\x63he_status\x18\x01 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatusR\x0b\x63\x61\x63heStatus\x12?\n\x0b\x63\x61talog_key\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.CatalogMetadataR\ncatalogKey\x12%\n\x0e\x63heckpoint_uri\x18\x04 \x01(\tR\rcheckpointUri\"\xce\x01\n\x1b\x44ynamicWorkflowNodeMetadata\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12S\n\x11\x63ompiled_workflow\x18\x02 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosureR\x10\x63ompiledWorkflow\x12/\n\x14\x64ynamic_job_spec_uri\x18\x03 \x01(\tR\x11\x64ynamicJobSpecUri\"U\n\x1bNodeExecutionGetDataRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\"\x96\x03\n\x1cNodeExecutionGetDataResponse\x12\x33\n\x06inputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x06inputs\x12\x35\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x07outputs\x12:\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\nfullInputs\x12<\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ullOutputs\x12V\n\x10\x64ynamic_workflow\x18\x10 \x01(\x0b\x32+.flyteidl.admin.DynamicWorkflowNodeMetadataR\x0f\x64ynamicWorkflow\x12\x38\n\nflyte_urls\x18\x11 \x01(\x0b\x32\x19.flyteidl.admin.FlyteURLsR\tflyteUrlsB\xb8\x01\n\x12\x63om.flyteidl.adminB\x12NodeExecutionProtoP\x01Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') +>>>>>>> 513ff822 (Data addresses #minor (#391)) +<<<<<<< HEAD _NODEEXECUTIONGETREQUEST = _descriptor.Descriptor( @@ -805,4 +810,40 @@ _NODEEXECUTIONCLOSURE.fields_by_name['output_data']._options = None _NODEEXECUTIONGETDATARESPONSE.fields_by_name['inputs']._options = None _NODEEXECUTIONGETDATARESPONSE.fields_by_name['outputs']._options = None +======= + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\022com.flyteidl.adminB\022NodeExecutionProtoP\001Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin\242\002\003FAX\252\002\016Flyteidl.Admin\312\002\016Flyteidl\\Admin\342\002\032Flyteidl\\Admin\\GPBMetadata\352\002\017Flyteidl::Admin' + _NODEEXECUTIONCLOSURE.fields_by_name['output_uri']._options = None + _NODEEXECUTIONCLOSURE.fields_by_name['output_uri']._serialized_options = b'\030\001' + _NODEEXECUTIONCLOSURE.fields_by_name['output_data']._options = None + _NODEEXECUTIONCLOSURE.fields_by_name['output_data']._serialized_options = b'\030\001' + _NODEEXECUTIONGETDATARESPONSE.fields_by_name['inputs']._options = None + _NODEEXECUTIONGETDATARESPONSE.fields_by_name['inputs']._serialized_options = b'\030\001' + _NODEEXECUTIONGETDATARESPONSE.fields_by_name['outputs']._options = None + _NODEEXECUTIONGETDATARESPONSE.fields_by_name['outputs']._serialized_options = b'\030\001' + _globals['_NODEEXECUTIONGETREQUEST']._serialized_start=301 + _globals['_NODEEXECUTIONGETREQUEST']._serialized_end=382 + _globals['_NODEEXECUTIONLISTREQUEST']._serialized_start=385 + _globals['_NODEEXECUTIONLISTREQUEST']._serialized_end=666 + _globals['_NODEEXECUTIONFORTASKLISTREQUEST']._serialized_start=669 + _globals['_NODEEXECUTIONFORTASKLISTREQUEST']._serialized_end=903 + _globals['_NODEEXECUTION']._serialized_start=906 + _globals['_NODEEXECUTION']._serialized_end=1137 + _globals['_NODEEXECUTIONMETADATA']._serialized_start=1140 + _globals['_NODEEXECUTIONMETADATA']._serialized_end=1299 + _globals['_NODEEXECUTIONLIST']._serialized_start=1301 + _globals['_NODEEXECUTIONLIST']._serialized_end=1414 + _globals['_NODEEXECUTIONCLOSURE']._serialized_start=1417 + _globals['_NODEEXECUTIONCLOSURE']._serialized_end=2175 + _globals['_WORKFLOWNODEMETADATA']._serialized_start=2177 + _globals['_WORKFLOWNODEMETADATA']._serialized_end=2277 + _globals['_TASKNODEMETADATA']._serialized_start=2280 + _globals['_TASKNODEMETADATA']._serialized_end=2472 + _globals['_DYNAMICWORKFLOWNODEMETADATA']._serialized_start=2475 + _globals['_DYNAMICWORKFLOWNODEMETADATA']._serialized_end=2681 + _globals['_NODEEXECUTIONGETDATAREQUEST']._serialized_start=2683 + _globals['_NODEEXECUTIONGETDATAREQUEST']._serialized_end=2768 + _globals['_NODEEXECUTIONGETDATARESPONSE']._serialized_start=2771 + _globals['_NODEEXECUTIONGETDATARESPONSE']._serialized_end=3177 +>>>>>>> 513ff822 (Data addresses #minor (#391)) # @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/admin/node_execution_pb2.pyi b/gen/pb_python/flyteidl/admin/node_execution_pb2.pyi new file mode 100644 index 000000000..6bb94b11d --- /dev/null +++ b/gen/pb_python/flyteidl/admin/node_execution_pb2.pyi @@ -0,0 +1,158 @@ +from flyteidl.admin import common_pb2 as _common_pb2 +from flyteidl.core import execution_pb2 as _execution_pb2 +from flyteidl.core import catalog_pb2 as _catalog_pb2 +from flyteidl.core import compiler_pb2 as _compiler_pb2 +from flyteidl.core import identifier_pb2 as _identifier_pb2 +from flyteidl.core import literals_pb2 as _literals_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class NodeExecutionGetRequest(_message.Message): + __slots__ = ["id"] + ID_FIELD_NUMBER: _ClassVar[int] + id: _identifier_pb2.NodeExecutionIdentifier + def __init__(self, id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ...) -> None: ... + +class NodeExecutionListRequest(_message.Message): + __slots__ = ["workflow_execution_id", "limit", "token", "filters", "sort_by", "unique_parent_id"] + WORKFLOW_EXECUTION_ID_FIELD_NUMBER: _ClassVar[int] + LIMIT_FIELD_NUMBER: _ClassVar[int] + TOKEN_FIELD_NUMBER: _ClassVar[int] + FILTERS_FIELD_NUMBER: _ClassVar[int] + SORT_BY_FIELD_NUMBER: _ClassVar[int] + UNIQUE_PARENT_ID_FIELD_NUMBER: _ClassVar[int] + workflow_execution_id: _identifier_pb2.WorkflowExecutionIdentifier + limit: int + token: str + filters: str + sort_by: _common_pb2.Sort + unique_parent_id: str + def __init__(self, workflow_execution_id: _Optional[_Union[_identifier_pb2.WorkflowExecutionIdentifier, _Mapping]] = ..., limit: _Optional[int] = ..., token: _Optional[str] = ..., filters: _Optional[str] = ..., sort_by: _Optional[_Union[_common_pb2.Sort, _Mapping]] = ..., unique_parent_id: _Optional[str] = ...) -> None: ... + +class NodeExecutionForTaskListRequest(_message.Message): + __slots__ = ["task_execution_id", "limit", "token", "filters", "sort_by"] + TASK_EXECUTION_ID_FIELD_NUMBER: _ClassVar[int] + LIMIT_FIELD_NUMBER: _ClassVar[int] + TOKEN_FIELD_NUMBER: _ClassVar[int] + FILTERS_FIELD_NUMBER: _ClassVar[int] + SORT_BY_FIELD_NUMBER: _ClassVar[int] + task_execution_id: _identifier_pb2.TaskExecutionIdentifier + limit: int + token: str + filters: str + sort_by: _common_pb2.Sort + def __init__(self, task_execution_id: _Optional[_Union[_identifier_pb2.TaskExecutionIdentifier, _Mapping]] = ..., limit: _Optional[int] = ..., token: _Optional[str] = ..., filters: _Optional[str] = ..., sort_by: _Optional[_Union[_common_pb2.Sort, _Mapping]] = ...) -> None: ... + +class NodeExecution(_message.Message): + __slots__ = ["id", "input_uri", "closure", "metadata"] + ID_FIELD_NUMBER: _ClassVar[int] + INPUT_URI_FIELD_NUMBER: _ClassVar[int] + CLOSURE_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + id: _identifier_pb2.NodeExecutionIdentifier + input_uri: str + closure: NodeExecutionClosure + metadata: NodeExecutionMetaData + def __init__(self, id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ..., input_uri: _Optional[str] = ..., closure: _Optional[_Union[NodeExecutionClosure, _Mapping]] = ..., metadata: _Optional[_Union[NodeExecutionMetaData, _Mapping]] = ...) -> None: ... + +class NodeExecutionMetaData(_message.Message): + __slots__ = ["retry_group", "is_parent_node", "spec_node_id", "is_dynamic"] + RETRY_GROUP_FIELD_NUMBER: _ClassVar[int] + IS_PARENT_NODE_FIELD_NUMBER: _ClassVar[int] + SPEC_NODE_ID_FIELD_NUMBER: _ClassVar[int] + IS_DYNAMIC_FIELD_NUMBER: _ClassVar[int] + retry_group: str + is_parent_node: bool + spec_node_id: str + is_dynamic: bool + def __init__(self, retry_group: _Optional[str] = ..., is_parent_node: bool = ..., spec_node_id: _Optional[str] = ..., is_dynamic: bool = ...) -> None: ... + +class NodeExecutionList(_message.Message): + __slots__ = ["node_executions", "token"] + NODE_EXECUTIONS_FIELD_NUMBER: _ClassVar[int] + TOKEN_FIELD_NUMBER: _ClassVar[int] + node_executions: _containers.RepeatedCompositeFieldContainer[NodeExecution] + token: str + def __init__(self, node_executions: _Optional[_Iterable[_Union[NodeExecution, _Mapping]]] = ..., token: _Optional[str] = ...) -> None: ... + +class NodeExecutionClosure(_message.Message): + __slots__ = ["output_uri", "error", "output_data", "phase", "started_at", "duration", "created_at", "updated_at", "workflow_node_metadata", "task_node_metadata", "deck_uri", "dynamic_job_spec_uri"] + OUTPUT_URI_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] + PHASE_FIELD_NUMBER: _ClassVar[int] + STARTED_AT_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + UPDATED_AT_FIELD_NUMBER: _ClassVar[int] + WORKFLOW_NODE_METADATA_FIELD_NUMBER: _ClassVar[int] + TASK_NODE_METADATA_FIELD_NUMBER: _ClassVar[int] + DECK_URI_FIELD_NUMBER: _ClassVar[int] + DYNAMIC_JOB_SPEC_URI_FIELD_NUMBER: _ClassVar[int] + output_uri: str + error: _execution_pb2.ExecutionError + output_data: _literals_pb2.LiteralMap + phase: _execution_pb2.NodeExecution.Phase + started_at: _timestamp_pb2.Timestamp + duration: _duration_pb2.Duration + created_at: _timestamp_pb2.Timestamp + updated_at: _timestamp_pb2.Timestamp + workflow_node_metadata: WorkflowNodeMetadata + task_node_metadata: TaskNodeMetadata + deck_uri: str + dynamic_job_spec_uri: str + def __init__(self, output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., phase: _Optional[_Union[_execution_pb2.NodeExecution.Phase, str]] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., workflow_node_metadata: _Optional[_Union[WorkflowNodeMetadata, _Mapping]] = ..., task_node_metadata: _Optional[_Union[TaskNodeMetadata, _Mapping]] = ..., deck_uri: _Optional[str] = ..., dynamic_job_spec_uri: _Optional[str] = ...) -> None: ... + +class WorkflowNodeMetadata(_message.Message): + __slots__ = ["executionId"] + EXECUTIONID_FIELD_NUMBER: _ClassVar[int] + executionId: _identifier_pb2.WorkflowExecutionIdentifier + def __init__(self, executionId: _Optional[_Union[_identifier_pb2.WorkflowExecutionIdentifier, _Mapping]] = ...) -> None: ... + +class TaskNodeMetadata(_message.Message): + __slots__ = ["cache_status", "catalog_key", "checkpoint_uri"] + CACHE_STATUS_FIELD_NUMBER: _ClassVar[int] + CATALOG_KEY_FIELD_NUMBER: _ClassVar[int] + CHECKPOINT_URI_FIELD_NUMBER: _ClassVar[int] + cache_status: _catalog_pb2.CatalogCacheStatus + catalog_key: _catalog_pb2.CatalogMetadata + checkpoint_uri: str + def __init__(self, cache_status: _Optional[_Union[_catalog_pb2.CatalogCacheStatus, str]] = ..., catalog_key: _Optional[_Union[_catalog_pb2.CatalogMetadata, _Mapping]] = ..., checkpoint_uri: _Optional[str] = ...) -> None: ... + +class DynamicWorkflowNodeMetadata(_message.Message): + __slots__ = ["id", "compiled_workflow", "dynamic_job_spec_uri"] + ID_FIELD_NUMBER: _ClassVar[int] + COMPILED_WORKFLOW_FIELD_NUMBER: _ClassVar[int] + DYNAMIC_JOB_SPEC_URI_FIELD_NUMBER: _ClassVar[int] + id: _identifier_pb2.Identifier + compiled_workflow: _compiler_pb2.CompiledWorkflowClosure + dynamic_job_spec_uri: str + def __init__(self, id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., compiled_workflow: _Optional[_Union[_compiler_pb2.CompiledWorkflowClosure, _Mapping]] = ..., dynamic_job_spec_uri: _Optional[str] = ...) -> None: ... + +class NodeExecutionGetDataRequest(_message.Message): + __slots__ = ["id"] + ID_FIELD_NUMBER: _ClassVar[int] + id: _identifier_pb2.NodeExecutionIdentifier + def __init__(self, id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ...) -> None: ... + +class NodeExecutionGetDataResponse(_message.Message): + __slots__ = ["inputs", "outputs", "full_inputs", "full_outputs", "dynamic_workflow", "flyte_urls"] + INPUTS_FIELD_NUMBER: _ClassVar[int] + OUTPUTS_FIELD_NUMBER: _ClassVar[int] + FULL_INPUTS_FIELD_NUMBER: _ClassVar[int] + FULL_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + DYNAMIC_WORKFLOW_FIELD_NUMBER: _ClassVar[int] + FLYTE_URLS_FIELD_NUMBER: _ClassVar[int] + inputs: _common_pb2.UrlBlob + outputs: _common_pb2.UrlBlob + full_inputs: _literals_pb2.LiteralMap + full_outputs: _literals_pb2.LiteralMap + dynamic_workflow: DynamicWorkflowNodeMetadata + flyte_urls: _common_pb2.FlyteURLs + def __init__(self, inputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., outputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., full_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., dynamic_workflow: _Optional[_Union[DynamicWorkflowNodeMetadata, _Mapping]] = ..., flyte_urls: _Optional[_Union[_common_pb2.FlyteURLs, _Mapping]] = ...) -> None: ... diff --git a/gen/pb_python/flyteidl/admin/task_execution_pb2.py b/gen/pb_python/flyteidl/admin/task_execution_pb2.py index 5643f4236..94b83a3b2 100644 --- a/gen/pb_python/flyteidl/admin/task_execution_pb2.py +++ b/gen/pb_python/flyteidl/admin/task_execution_pb2.py @@ -23,6 +23,7 @@ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 +<<<<<<< HEAD <<<<<<< HEAD DESCRIPTOR = _descriptor.FileDescriptor( name='flyteidl/admin/task_execution.proto', @@ -35,6 +36,9 @@ ======= DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#flyteidl/admin/task_execution.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1a\x66lyteidl/event/event.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\"Q\n\x17TaskExecutionGetRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"\xe3\x01\n\x18TaskExecutionListRequest\x12R\n\x11node_execution_id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x0fnodeExecutionId\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\"\xc1\x01\n\rTaskExecution\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\x12\x1b\n\tinput_uri\x18\x02 \x01(\tR\x08inputUri\x12>\n\x07\x63losure\x18\x03 \x01(\x0b\x32$.flyteidl.admin.TaskExecutionClosureR\x07\x63losure\x12\x1b\n\tis_parent\x18\x04 \x01(\x08R\x08isParent\"q\n\x11TaskExecutionList\x12\x46\n\x0ftask_executions\x18\x01 \x03(\x0b\x32\x1d.flyteidl.admin.TaskExecutionR\x0etaskExecutions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x9c\x06\n\x14TaskExecutionClosure\x12#\n\noutput_uri\x18\x01 \x01(\tB\x02\x18\x01H\x00R\toutputUri\x12\x35\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12@\n\x0boutput_data\x18\x0c \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\noutputData\x12\x38\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12*\n\x04logs\x18\x04 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\x12\x39\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x35\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x38\n\x0b\x63ustom_info\x18\t \x01(\x0b\x32\x17.google.protobuf.StructR\ncustomInfo\x12\x16\n\x06reason\x18\n \x01(\tR\x06reason\x12\x1b\n\ttask_type\x18\x0b \x01(\tR\x08taskType\x12\x41\n\x08metadata\x18\x10 \x01(\x0b\x32%.flyteidl.event.TaskExecutionMetadataR\x08metadata\x12#\n\revent_version\x18\x11 \x01(\x05R\x0c\x65ventVersion\x12\x30\n\x07reasons\x18\x12 \x03(\x0b\x32\x16.flyteidl.admin.ReasonR\x07reasonsB\x0f\n\routput_result\"_\n\x06Reason\x12;\n\x0boccurred_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"U\n\x1bTaskExecutionGetDataRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"\x84\x02\n\x1cTaskExecutionGetDataResponse\x12\x33\n\x06inputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x06inputs\x12\x35\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x07outputs\x12:\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\nfullInputs\x12<\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ullOutputsB\xb8\x01\n\x12\x63om.flyteidl.adminB\x12TaskExecutionProtoP\x01Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') >>>>>>> 0f18851e (Add Reasons field to TaskExecutionClosure to track time-series of reasons (#382)) +======= +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#flyteidl/admin/task_execution.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1a\x66lyteidl/event/event.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\"Q\n\x17TaskExecutionGetRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"\xe3\x01\n\x18TaskExecutionListRequest\x12R\n\x11node_execution_id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x0fnodeExecutionId\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\"\xc1\x01\n\rTaskExecution\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\x12\x1b\n\tinput_uri\x18\x02 \x01(\tR\x08inputUri\x12>\n\x07\x63losure\x18\x03 \x01(\x0b\x32$.flyteidl.admin.TaskExecutionClosureR\x07\x63losure\x12\x1b\n\tis_parent\x18\x04 \x01(\x08R\x08isParent\"q\n\x11TaskExecutionList\x12\x46\n\x0ftask_executions\x18\x01 \x03(\x0b\x32\x1d.flyteidl.admin.TaskExecutionR\x0etaskExecutions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x9c\x06\n\x14TaskExecutionClosure\x12#\n\noutput_uri\x18\x01 \x01(\tB\x02\x18\x01H\x00R\toutputUri\x12\x35\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12@\n\x0boutput_data\x18\x0c \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\noutputData\x12\x38\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12*\n\x04logs\x18\x04 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\x12\x39\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x35\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x38\n\x0b\x63ustom_info\x18\t \x01(\x0b\x32\x17.google.protobuf.StructR\ncustomInfo\x12\x16\n\x06reason\x18\n \x01(\tR\x06reason\x12\x1b\n\ttask_type\x18\x0b \x01(\tR\x08taskType\x12\x41\n\x08metadata\x18\x10 \x01(\x0b\x32%.flyteidl.event.TaskExecutionMetadataR\x08metadata\x12#\n\revent_version\x18\x11 \x01(\x05R\x0c\x65ventVersion\x12\x30\n\x07reasons\x18\x12 \x03(\x0b\x32\x16.flyteidl.admin.ReasonR\x07reasonsB\x0f\n\routput_result\"_\n\x06Reason\x12;\n\x0boccurred_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"U\n\x1bTaskExecutionGetDataRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"\xbe\x02\n\x1cTaskExecutionGetDataResponse\x12\x33\n\x06inputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x06inputs\x12\x35\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x07outputs\x12:\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\nfullInputs\x12<\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ullOutputs\x12\x38\n\nflyte_urls\x18\x05 \x01(\x0b\x32\x19.flyteidl.admin.FlyteURLsR\tflyteUrlsB\xb8\x01\n\x12\x63om.flyteidl.adminB\x12TaskExecutionProtoP\x01Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') +>>>>>>> 513ff822 (Data addresses #minor (#391)) <<<<<<< HEAD @@ -532,6 +536,7 @@ _TASKEXECUTIONGETDATARESPONSE.fields_by_name['inputs']._serialized_options = b'\030\001' _TASKEXECUTIONGETDATARESPONSE.fields_by_name['outputs']._options = None _TASKEXECUTIONGETDATARESPONSE.fields_by_name['outputs']._serialized_options = b'\030\001' +<<<<<<< HEAD _TASKEXECUTIONGETREQUEST._serialized_start=300 _TASKEXECUTIONGETREQUEST._serialized_end=381 _TASKEXECUTIONLISTREQUEST._serialized_start=384 @@ -549,4 +554,22 @@ _TASKEXECUTIONGETDATARESPONSE._serialized_start=1908 _TASKEXECUTIONGETDATARESPONSE._serialized_end=2168 >>>>>>> 0f18851e (Add Reasons field to TaskExecutionClosure to track time-series of reasons (#382)) +======= + _globals['_TASKEXECUTIONGETREQUEST']._serialized_start=300 + _globals['_TASKEXECUTIONGETREQUEST']._serialized_end=381 + _globals['_TASKEXECUTIONLISTREQUEST']._serialized_start=384 + _globals['_TASKEXECUTIONLISTREQUEST']._serialized_end=611 + _globals['_TASKEXECUTION']._serialized_start=614 + _globals['_TASKEXECUTION']._serialized_end=807 + _globals['_TASKEXECUTIONLIST']._serialized_start=809 + _globals['_TASKEXECUTIONLIST']._serialized_end=922 + _globals['_TASKEXECUTIONCLOSURE']._serialized_start=925 + _globals['_TASKEXECUTIONCLOSURE']._serialized_end=1721 + _globals['_REASON']._serialized_start=1723 + _globals['_REASON']._serialized_end=1818 + _globals['_TASKEXECUTIONGETDATAREQUEST']._serialized_start=1820 + _globals['_TASKEXECUTIONGETDATAREQUEST']._serialized_end=1905 + _globals['_TASKEXECUTIONGETDATARESPONSE']._serialized_start=1908 + _globals['_TASKEXECUTIONGETDATARESPONSE']._serialized_end=2226 +>>>>>>> 513ff822 (Data addresses #minor (#391)) # @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/admin/task_execution_pb2.pyi b/gen/pb_python/flyteidl/admin/task_execution_pb2.pyi index e164ef306..08d260a28 100644 --- a/gen/pb_python/flyteidl/admin/task_execution_pb2.pyi +++ b/gen/pb_python/flyteidl/admin/task_execution_pb2.pyi @@ -99,6 +99,7 @@ class TaskExecutionList(_message.Message): token: str def __init__(self, task_executions: _Optional[_Iterable[_Union[TaskExecution, _Mapping]]] = ..., token: _Optional[str] = ...) -> None: ... +<<<<<<< HEAD class TaskExecutionListRequest(_message.Message): __slots__ = ["filters", "limit", "node_execution_id", "sort_by", "token"] FILTERS_FIELD_NUMBER: _ClassVar[int] @@ -112,3 +113,66 @@ class TaskExecutionListRequest(_message.Message): sort_by: _common_pb2.Sort token: str def __init__(self, node_execution_id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ..., limit: _Optional[int] = ..., token: _Optional[str] = ..., filters: _Optional[str] = ..., sort_by: _Optional[_Union[_common_pb2.Sort, _Mapping]] = ...) -> None: ... +======= +class TaskExecutionClosure(_message.Message): + __slots__ = ["output_uri", "error", "output_data", "phase", "logs", "started_at", "duration", "created_at", "updated_at", "custom_info", "reason", "task_type", "metadata", "event_version", "reasons"] + OUTPUT_URI_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + OUTPUT_DATA_FIELD_NUMBER: _ClassVar[int] + PHASE_FIELD_NUMBER: _ClassVar[int] + LOGS_FIELD_NUMBER: _ClassVar[int] + STARTED_AT_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + UPDATED_AT_FIELD_NUMBER: _ClassVar[int] + CUSTOM_INFO_FIELD_NUMBER: _ClassVar[int] + REASON_FIELD_NUMBER: _ClassVar[int] + TASK_TYPE_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + EVENT_VERSION_FIELD_NUMBER: _ClassVar[int] + REASONS_FIELD_NUMBER: _ClassVar[int] + output_uri: str + error: _execution_pb2.ExecutionError + output_data: _literals_pb2.LiteralMap + phase: _execution_pb2.TaskExecution.Phase + logs: _containers.RepeatedCompositeFieldContainer[_execution_pb2.TaskLog] + started_at: _timestamp_pb2.Timestamp + duration: _duration_pb2.Duration + created_at: _timestamp_pb2.Timestamp + updated_at: _timestamp_pb2.Timestamp + custom_info: _struct_pb2.Struct + reason: str + task_type: str + metadata: _event_pb2.TaskExecutionMetadata + event_version: int + reasons: _containers.RepeatedCompositeFieldContainer[Reason] + def __init__(self, output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., phase: _Optional[_Union[_execution_pb2.TaskExecution.Phase, str]] = ..., logs: _Optional[_Iterable[_Union[_execution_pb2.TaskLog, _Mapping]]] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., custom_info: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., reason: _Optional[str] = ..., task_type: _Optional[str] = ..., metadata: _Optional[_Union[_event_pb2.TaskExecutionMetadata, _Mapping]] = ..., event_version: _Optional[int] = ..., reasons: _Optional[_Iterable[_Union[Reason, _Mapping]]] = ...) -> None: ... + +class Reason(_message.Message): + __slots__ = ["occurred_at", "message"] + OCCURRED_AT_FIELD_NUMBER: _ClassVar[int] + MESSAGE_FIELD_NUMBER: _ClassVar[int] + occurred_at: _timestamp_pb2.Timestamp + message: str + def __init__(self, occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., message: _Optional[str] = ...) -> None: ... + +class TaskExecutionGetDataRequest(_message.Message): + __slots__ = ["id"] + ID_FIELD_NUMBER: _ClassVar[int] + id: _identifier_pb2.TaskExecutionIdentifier + def __init__(self, id: _Optional[_Union[_identifier_pb2.TaskExecutionIdentifier, _Mapping]] = ...) -> None: ... + +class TaskExecutionGetDataResponse(_message.Message): + __slots__ = ["inputs", "outputs", "full_inputs", "full_outputs", "flyte_urls"] + INPUTS_FIELD_NUMBER: _ClassVar[int] + OUTPUTS_FIELD_NUMBER: _ClassVar[int] + FULL_INPUTS_FIELD_NUMBER: _ClassVar[int] + FULL_OUTPUTS_FIELD_NUMBER: _ClassVar[int] + FLYTE_URLS_FIELD_NUMBER: _ClassVar[int] + inputs: _common_pb2.UrlBlob + outputs: _common_pb2.UrlBlob + full_inputs: _literals_pb2.LiteralMap + full_outputs: _literals_pb2.LiteralMap + flyte_urls: _common_pb2.FlyteURLs + def __init__(self, inputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., outputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., full_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., flyte_urls: _Optional[_Union[_common_pb2.FlyteURLs, _Mapping]] = ...) -> None: ... +>>>>>>> 513ff822 (Data addresses #minor (#391)) diff --git a/gen/pb_python/flyteidl/service/admin_pb2.py b/gen/pb_python/flyteidl/service/admin_pb2.py index 43dc65d8f..fd112a767 100644 --- a/gen/pb_python/flyteidl/service/admin_pb2.py +++ b/gen/pb_python/flyteidl/service/admin_pb2.py @@ -29,10 +29,9 @@ from flyteidl.admin import version_pb2 as flyteidl_dot_admin_dot_version__pb2 from flyteidl.admin import common_pb2 as flyteidl_dot_admin_dot_common__pb2 from flyteidl.admin import description_entity_pb2 as flyteidl_dot_admin_dot_description__entity__pb2 -from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 -from flyteidl.core import metrics_pb2 as flyteidl_dot_core_dot_metrics__pb2 +<<<<<<< HEAD <<<<<<< HEAD DESCRIPTOR = _descriptor.FileDescriptor( name='flyteidl/service/admin.proto', @@ -45,6 +44,9 @@ ======= DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(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\'flyteidl/admin/project_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\'flyteidl/admin/description_entity.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1b\x66lyteidl/core/metrics.proto2\x84N\n\x0c\x41\x64minService\x12m\n\nCreateTask\x12!.flyteidl.admin.TaskCreateRequest\x1a\".flyteidl.admin.TaskCreateResponse\"\x18\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/api/v1/tasks\x12\x88\x01\n\x07GetTask\x12 .flyteidl.admin.ObjectGetRequest\x1a\x14.flyteidl.admin.Task\"E\x82\xd3\xe4\x93\x02?\x12=/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x97\x01\n\x0bListTaskIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"+\x82\xd3\xe4\x93\x02%\x12#/api/v1/task_ids/{project}/{domain}\x12\xae\x01\n\tListTasks\x12#.flyteidl.admin.ResourceListRequest\x1a\x18.flyteidl.admin.TaskList\"b\x82\xd3\xe4\x93\x02\\Z(\x12&/api/v1/tasks/{id.project}/{id.domain}\x12\x30/api/v1/tasks/{id.project}/{id.domain}/{id.name}\x12}\n\x0e\x43reateWorkflow\x12%.flyteidl.admin.WorkflowCreateRequest\x1a&.flyteidl.admin.WorkflowCreateResponse\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/v1/workflows\x12\x94\x01\n\x0bGetWorkflow\x12 .flyteidl.admin.ObjectGetRequest\x1a\x18.flyteidl.admin.Workflow\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x9f\x01\n\x0fListWorkflowIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"/\x82\xd3\xe4\x93\x02)\x12\'/api/v1/workflow_ids/{project}/{domain}\x12\xbe\x01\n\rListWorkflows\x12#.flyteidl.admin.ResourceListRequest\x1a\x1c.flyteidl.admin.WorkflowList\"j\x82\xd3\xe4\x93\x02\x64Z,\x12*/api/v1/workflows/{id.project}/{id.domain}\x12\x34/api/v1/workflows/{id.project}/{id.domain}/{id.name}\x12\x86\x01\n\x10\x43reateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanCreateRequest\x1a(.flyteidl.admin.LaunchPlanCreateResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/launch_plans\x12\x9b\x01\n\rGetLaunchPlan\x12 .flyteidl.admin.ObjectGetRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"L\x82\xd3\xe4\x93\x02\x46\x12\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xa2\x01\n\x13GetActiveLaunchPlan\x12\'.flyteidl.admin.ActiveLaunchPlanRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"F\x82\xd3\xe4\x93\x02@\x12>/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x12\x9c\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"6\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x12\xa4\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"2\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x12\xc8\x01\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"p\x82\xd3\xe4\x93\x02jZ/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}\x12\xb6\x01\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"O\x82\xd3\xe4\x93\x02I:\x01*\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x81\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v1/executions\x12\x8e\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/v1/executions/relaunch\x12\x8b\x01\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"%\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/api/v1/executions/recover\x12\x95\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xa4\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"@\x82\xd3\xe4\x93\x02::\x01*\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xb9\x01\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"B\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x12\x89\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"3\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x12\xad\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"@\x82\xd3\xe4\x93\x02::\x01**5/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xd2\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"v\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}\x12\xde\x01\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x12\xa5\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb3\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}\x12\xee\x01\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"{\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}\x12\x7f\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"\x1b\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/api/v1/projects\x12q\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\x1a\x15/api/v1/projects/{id}\x12\x66\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x12\x99\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/api/v1/events/workflows\x12\x89\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/nodes\x12\x89\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/tasks\x12\x80\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xa3\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}\x12\x98\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xb4\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}\x12\x9c\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xa8\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}\x12\xe3\x01\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"U\x82\xd3\xe4\x93\x02O:\x01*\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}\x12\xc1\x01\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x12\xcd\x01\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"?\x82\xd3\xe4\x93\x02\x39:\x01**4/api/v1/project_domain_attributes/{project}/{domain}\x12\xb6\x01\n\x17UpdateProjectAttributes\x12..flyteidl.admin.ProjectAttributesUpdateRequest\x1a/.flyteidl.admin.ProjectAttributesUpdateResponse\":\x82\xd3\xe4\x93\x02\x34:\x01*\x1a//api/v1/project_attributes/{attributes.project}\x12\x9f\x01\n\x14GetProjectAttributes\x12+.flyteidl.admin.ProjectAttributesGetRequest\x1a,.flyteidl.admin.ProjectAttributesGetResponse\",\x82\xd3\xe4\x93\x02&\x12$/api/v1/project_attributes/{project}\x12\xab\x01\n\x17\x44\x65leteProjectAttributes\x12..flyteidl.admin.ProjectAttributesDeleteRequest\x1a/.flyteidl.admin.ProjectAttributesDeleteResponse\"/\x82\xd3\xe4\x93\x02):\x01**$/api/v1/project_attributes/{project}\x12\xe4\x01\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"e\x82\xd3\xe4\x93\x02_:\x01*\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}\x12\xb7\x01\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xc3\x01\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"D\x82\xd3\xe4\x93\x02>:\x01**9/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xa0\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/matchable_attributes\x12\x9f\x01\n\x11ListNamedEntities\x12&.flyteidl.admin.NamedEntityListRequest\x1a\x1f.flyteidl.admin.NamedEntityList\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/named_entities/{resource_type}/{project}/{domain}\x12\xa7\x01\n\x0eGetNamedEntity\x12%.flyteidl.admin.NamedEntityGetRequest\x1a\x1b.flyteidl.admin.NamedEntity\"Q\x82\xd3\xe4\x93\x02K\x12I/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}\x12\xbe\x01\n\x11UpdateNamedEntity\x12(.flyteidl.admin.NamedEntityUpdateRequest\x1a).flyteidl.admin.NamedEntityUpdateResponse\"T\x82\xd3\xe4\x93\x02N:\x01*\x1aI/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}\x12l\n\nGetVersion\x12!.flyteidl.admin.GetVersionRequest\x1a\".flyteidl.admin.GetVersionResponse\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/v1/version\x12\xc4\x01\n\x14GetDescriptionEntity\x12 .flyteidl.admin.ObjectGetRequest\x1a!.flyteidl.admin.DescriptionEntity\"g\x82\xd3\xe4\x93\x02\x61\x12_/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x92\x02\n\x17ListDescriptionEntities\x12,.flyteidl.admin.DescriptionEntityListRequest\x1a%.flyteidl.admin.DescriptionEntityList\"\xa1\x01\x82\xd3\xe4\x93\x02\x9a\x01ZG\x12\x45/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}\x12O/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}\x12\xc5\x01\n\x13GetExecutionMetrics\x12\x32.flyteidl.admin.WorkflowExecutionGetMetricsRequest\x1a\x33.flyteidl.admin.WorkflowExecutionGetMetricsResponse\"E\x82\xd3\xe4\x93\x02?\x12=/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}B\xbc\x01\n\x14\x63om.flyteidl.serviceB\nAdminProtoP\x01Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service\xa2\x02\x03\x46SX\xaa\x02\x10\x46lyteidl.Service\xca\x02\x10\x46lyteidl\\Service\xe2\x02\x1c\x46lyteidl\\Service\\GPBMetadata\xea\x02\x11\x46lyteidl::Serviceb\x06proto3') >>>>>>> bdb76306 (Create service for runtime metrics (#367)) +======= +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(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\'flyteidl/admin/project_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\'flyteidl/admin/description_entity.proto2\x84N\n\x0c\x41\x64minService\x12m\n\nCreateTask\x12!.flyteidl.admin.TaskCreateRequest\x1a\".flyteidl.admin.TaskCreateResponse\"\x18\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/api/v1/tasks\x12\x88\x01\n\x07GetTask\x12 .flyteidl.admin.ObjectGetRequest\x1a\x14.flyteidl.admin.Task\"E\x82\xd3\xe4\x93\x02?\x12=/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x97\x01\n\x0bListTaskIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"+\x82\xd3\xe4\x93\x02%\x12#/api/v1/task_ids/{project}/{domain}\x12\xae\x01\n\tListTasks\x12#.flyteidl.admin.ResourceListRequest\x1a\x18.flyteidl.admin.TaskList\"b\x82\xd3\xe4\x93\x02\\Z(\x12&/api/v1/tasks/{id.project}/{id.domain}\x12\x30/api/v1/tasks/{id.project}/{id.domain}/{id.name}\x12}\n\x0e\x43reateWorkflow\x12%.flyteidl.admin.WorkflowCreateRequest\x1a&.flyteidl.admin.WorkflowCreateResponse\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/v1/workflows\x12\x94\x01\n\x0bGetWorkflow\x12 .flyteidl.admin.ObjectGetRequest\x1a\x18.flyteidl.admin.Workflow\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x9f\x01\n\x0fListWorkflowIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"/\x82\xd3\xe4\x93\x02)\x12\'/api/v1/workflow_ids/{project}/{domain}\x12\xbe\x01\n\rListWorkflows\x12#.flyteidl.admin.ResourceListRequest\x1a\x1c.flyteidl.admin.WorkflowList\"j\x82\xd3\xe4\x93\x02\x64Z,\x12*/api/v1/workflows/{id.project}/{id.domain}\x12\x34/api/v1/workflows/{id.project}/{id.domain}/{id.name}\x12\x86\x01\n\x10\x43reateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanCreateRequest\x1a(.flyteidl.admin.LaunchPlanCreateResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/launch_plans\x12\x9b\x01\n\rGetLaunchPlan\x12 .flyteidl.admin.ObjectGetRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"L\x82\xd3\xe4\x93\x02\x46\x12\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xa2\x01\n\x13GetActiveLaunchPlan\x12\'.flyteidl.admin.ActiveLaunchPlanRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"F\x82\xd3\xe4\x93\x02@\x12>/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x12\x9c\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"6\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x12\xa4\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"2\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x12\xc8\x01\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"p\x82\xd3\xe4\x93\x02jZ/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}\x12\xb6\x01\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"O\x82\xd3\xe4\x93\x02I:\x01*\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x81\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v1/executions\x12\x8e\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/v1/executions/relaunch\x12\x8b\x01\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"%\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/api/v1/executions/recover\x12\x95\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xa4\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"@\x82\xd3\xe4\x93\x02::\x01*\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xb9\x01\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"B\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x12\x89\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"3\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x12\xad\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"@\x82\xd3\xe4\x93\x02::\x01**5/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xd2\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"v\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}\x12\xde\x01\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x12\xa5\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb3\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}\x12\xee\x01\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"{\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}\x12\x7f\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"\x1b\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/api/v1/projects\x12q\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\x1a\x15/api/v1/projects/{id}\x12\x66\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x12\x99\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/api/v1/events/workflows\x12\x89\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/nodes\x12\x89\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/tasks\x12\x80\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xa3\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}\x12\x98\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xb4\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}\x12\x9c\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xa8\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}\x12\xe3\x01\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"U\x82\xd3\xe4\x93\x02O:\x01*\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}\x12\xc1\x01\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x12\xcd\x01\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"?\x82\xd3\xe4\x93\x02\x39:\x01**4/api/v1/project_domain_attributes/{project}/{domain}\x12\xb6\x01\n\x17UpdateProjectAttributes\x12..flyteidl.admin.ProjectAttributesUpdateRequest\x1a/.flyteidl.admin.ProjectAttributesUpdateResponse\":\x82\xd3\xe4\x93\x02\x34:\x01*\x1a//api/v1/project_attributes/{attributes.project}\x12\x9f\x01\n\x14GetProjectAttributes\x12+.flyteidl.admin.ProjectAttributesGetRequest\x1a,.flyteidl.admin.ProjectAttributesGetResponse\",\x82\xd3\xe4\x93\x02&\x12$/api/v1/project_attributes/{project}\x12\xab\x01\n\x17\x44\x65leteProjectAttributes\x12..flyteidl.admin.ProjectAttributesDeleteRequest\x1a/.flyteidl.admin.ProjectAttributesDeleteResponse\"/\x82\xd3\xe4\x93\x02):\x01**$/api/v1/project_attributes/{project}\x12\xe4\x01\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"e\x82\xd3\xe4\x93\x02_:\x01*\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}\x12\xb7\x01\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xc3\x01\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"D\x82\xd3\xe4\x93\x02>:\x01**9/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xa0\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/matchable_attributes\x12\x9f\x01\n\x11ListNamedEntities\x12&.flyteidl.admin.NamedEntityListRequest\x1a\x1f.flyteidl.admin.NamedEntityList\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/named_entities/{resource_type}/{project}/{domain}\x12\xa7\x01\n\x0eGetNamedEntity\x12%.flyteidl.admin.NamedEntityGetRequest\x1a\x1b.flyteidl.admin.NamedEntity\"Q\x82\xd3\xe4\x93\x02K\x12I/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}\x12\xbe\x01\n\x11UpdateNamedEntity\x12(.flyteidl.admin.NamedEntityUpdateRequest\x1a).flyteidl.admin.NamedEntityUpdateResponse\"T\x82\xd3\xe4\x93\x02N:\x01*\x1aI/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}\x12l\n\nGetVersion\x12!.flyteidl.admin.GetVersionRequest\x1a\".flyteidl.admin.GetVersionResponse\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/v1/version\x12\xc4\x01\n\x14GetDescriptionEntity\x12 .flyteidl.admin.ObjectGetRequest\x1a!.flyteidl.admin.DescriptionEntity\"g\x82\xd3\xe4\x93\x02\x61\x12_/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x92\x02\n\x17ListDescriptionEntities\x12,.flyteidl.admin.DescriptionEntityListRequest\x1a%.flyteidl.admin.DescriptionEntityList\"\xa1\x01\x82\xd3\xe4\x93\x02\x9a\x01ZG\x12\x45/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}\x12O/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}\x12\xc5\x01\n\x13GetExecutionMetrics\x12\x32.flyteidl.admin.WorkflowExecutionGetMetricsRequest\x1a\x33.flyteidl.admin.WorkflowExecutionGetMetricsResponse\"E\x82\xd3\xe4\x93\x02?\x12=/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}B\xbc\x01\n\x14\x63om.flyteidl.serviceB\nAdminProtoP\x01Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service\xa2\x02\x03\x46SX\xaa\x02\x10\x46lyteidl.Service\xca\x02\x10\x46lyteidl\\Service\xe2\x02\x1c\x46lyteidl\\Service\\GPBMetadata\xea\x02\x11\x46lyteidl::Serviceb\x06proto3') +>>>>>>> 513ff822 (Data addresses #minor (#391)) <<<<<<< HEAD @@ -645,7 +647,12 @@ _ADMINSERVICE.methods_by_name['ListDescriptionEntities']._serialized_options = b'\202\323\344\223\002\232\001ZG\022E/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}\022O/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}' _ADMINSERVICE.methods_by_name['GetExecutionMetrics']._options = None _ADMINSERVICE.methods_by_name['GetExecutionMetrics']._serialized_options = b'\202\323\344\223\002?\022=/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}' +<<<<<<< HEAD _ADMINSERVICE._serialized_start=670 _ADMINSERVICE._serialized_end=10658 >>>>>>> bdb76306 (Create service for runtime metrics (#367)) +======= + _globals['_ADMINSERVICE']._serialized_start=609 + _globals['_ADMINSERVICE']._serialized_end=10597 +>>>>>>> 513ff822 (Data addresses #minor (#391)) # @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/service/admin_pb2.pyi b/gen/pb_python/flyteidl/service/admin_pb2.pyi index 42eb8c5e2..a9028cea2 100644 --- a/gen/pb_python/flyteidl/service/admin_pb2.pyi +++ b/gen/pb_python/flyteidl/service/admin_pb2.pyi @@ -14,8 +14,6 @@ from flyteidl.admin import task_execution_pb2 as _task_execution_pb2 from flyteidl.admin import version_pb2 as _version_pb2 from flyteidl.admin import common_pb2 as _common_pb2 from flyteidl.admin import description_entity_pb2 as _description_entity_pb2 -from flyteidl.core import identifier_pb2 as _identifier_pb2 -from flyteidl.core import metrics_pb2 as _metrics_pb2 from google.protobuf import descriptor as _descriptor from typing import ClassVar as _ClassVar diff --git a/gen/pb_python/flyteidl/service/dataproxy_pb2.py b/gen/pb_python/flyteidl/service/dataproxy_pb2.py index 8e70dd20d..46c172b17 100644 --- a/gen/pb_python/flyteidl/service/dataproxy_pb2.py +++ b/gen/pb_python/flyteidl/service/dataproxy_pb2.py @@ -18,8 +18,10 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 +from flyteidl.core import literals_pb2 as flyteidl_dot_core_dot_literals__pb2 +<<<<<<< HEAD DESCRIPTOR = _descriptor.FileDescriptor( name='flyteidl/service/dataproxy.proto', package='flyteidl.service', @@ -28,6 +30,9 @@ serialized_pb=_b('\n flyteidl/service/dataproxy.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x66lyteidl/core/identifier.proto\"v\n\x1c\x43reateUploadLocationResponse\x12\x12\n\nsigned_url\x18\x01 \x01(\t\x12\x12\n\nnative_url\x18\x02 \x01(\t\x12.\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x94\x01\n\x1b\x43reateUploadLocationRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x64omain\x18\x02 \x01(\t\x12\x10\n\x08\x66ilename\x18\x03 \x01(\t\x12-\n\nexpires_in\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0b\x63ontent_md5\x18\x05 \x01(\x0c\"f\n\x1d\x43reateDownloadLocationRequest\x12\x12\n\nnative_url\x18\x01 \x01(\t\x12-\n\nexpires_in\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration:\x02\x18\x01\"h\n\x1e\x43reateDownloadLocationResponse\x12\x12\n\nsigned_url\x18\x01 \x01(\t\x12.\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp:\x02\x18\x01\"\xd0\x01\n\x19\x43reateDownloadLinkRequest\x12\x35\n\rartifact_type\x18\x01 \x01(\x0e\x32\x1e.flyteidl.service.ArtifactType\x12-\n\nexpires_in\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x43\n\x11node_execution_id\x18\x03 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierH\x00\x42\x08\n\x06source\"`\n\x1a\x43reateDownloadLinkResponse\x12\x12\n\nsigned_url\x18\x01 \x03(\t\x12.\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp*C\n\x0c\x41rtifactType\x12\x1b\n\x17\x41RTIFACT_TYPE_UNDEFINED\x10\x00\x12\x16\n\x12\x41RTIFACT_TYPE_DECK\x10\x01\x32\xfc\x03\n\x10\x44\x61taProxyService\x12\xa0\x01\n\x14\x43reateUploadLocation\x12-.flyteidl.service.CreateUploadLocationRequest\x1a..flyteidl.service.CreateUploadLocationResponse\")\x82\xd3\xe4\x93\x02#\"\x1e/api/v1/dataproxy/artifact_urn:\x01*\x12\xa6\x01\n\x16\x43reateDownloadLocation\x12/.flyteidl.service.CreateDownloadLocationRequest\x1a\x30.flyteidl.service.CreateDownloadLocationResponse\")\x88\x02\x01\x82\xd3\xe4\x93\x02 \x12\x1e/api/v1/dataproxy/artifact_urn\x12\x9b\x01\n\x12\x43reateDownloadLink\x12+.flyteidl.service.CreateDownloadLinkRequest\x1a,.flyteidl.service.CreateDownloadLinkResponse\"*\x82\xd3\xe4\x93\x02$\"\x1f/api/v1/dataproxy/artifact_link:\x01*B9Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/serviceb\x06proto3') , dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,]) +======= +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n flyteidl/service/dataproxy.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\"\x97\x01\n\x1c\x43reateUploadLocationResponse\x12\x1d\n\nsigned_url\x18\x01 \x01(\tR\tsignedUrl\x12\x1d\n\nnative_url\x18\x02 \x01(\tR\tnativeUrl\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\"\xc6\x01\n\x1b\x43reateUploadLocationRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x1a\n\x08\x66ilename\x18\x03 \x01(\tR\x08\x66ilename\x12\x38\n\nexpires_in\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12\x1f\n\x0b\x63ontent_md5\x18\x05 \x01(\x0cR\ncontentMd5\"|\n\x1d\x43reateDownloadLocationRequest\x12\x1d\n\nnative_url\x18\x01 \x01(\tR\tnativeUrl\x12\x38\n\nexpires_in\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn:\x02\x18\x01\"~\n\x1e\x43reateDownloadLocationResponse\x12\x1d\n\nsigned_url\x18\x01 \x01(\tR\tsignedUrl\x12\x39\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt:\x02\x18\x01\"\xfa\x01\n\x19\x43reateDownloadLinkRequest\x12\x43\n\rartifact_type\x18\x01 \x01(\x0e\x32\x1e.flyteidl.service.ArtifactTypeR\x0c\x61rtifactType\x12\x38\n\nexpires_in\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12T\n\x11node_execution_id\x18\x03 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierH\x00R\x0fnodeExecutionIdB\x08\n\x06source\"\xc7\x01\n\x1a\x43reateDownloadLinkResponse\x12!\n\nsigned_url\x18\x01 \x03(\tB\x02\x18\x01R\tsignedUrl\x12=\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x02\x18\x01R\texpiresAt\x12G\n\x0fpre_signed_urls\x18\x03 \x01(\x0b\x32\x1f.flyteidl.service.PreSignedURLsR\rpreSignedUrls\"i\n\rPreSignedURLs\x12\x1d\n\nsigned_url\x18\x01 \x03(\tR\tsignedUrl\x12\x39\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\"-\n\x0eGetDataRequest\x12\x1b\n\tflyte_url\x18\x01 \x01(\tR\x08\x66lyteUrl\"\xa2\x01\n\x0fGetDataResponse\x12<\n\x0bliteral_map\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\nliteralMap\x12I\n\x0fpre_signed_urls\x18\x02 \x01(\x0b\x32\x1f.flyteidl.service.PreSignedURLsH\x00R\rpreSignedUrlsB\x06\n\x04\x64\x61ta*C\n\x0c\x41rtifactType\x12\x1b\n\x17\x41RTIFACT_TYPE_UNDEFINED\x10\x00\x12\x16\n\x12\x41RTIFACT_TYPE_DECK\x10\x01\x32\xe2\x04\n\x10\x44\x61taProxyService\x12\xa0\x01\n\x14\x43reateUploadLocation\x12-.flyteidl.service.CreateUploadLocationRequest\x1a..flyteidl.service.CreateUploadLocationResponse\")\x82\xd3\xe4\x93\x02#:\x01*\"\x1e/api/v1/dataproxy/artifact_urn\x12\xa6\x01\n\x16\x43reateDownloadLocation\x12/.flyteidl.service.CreateDownloadLocationRequest\x1a\x30.flyteidl.service.CreateDownloadLocationResponse\")\x88\x02\x01\x82\xd3\xe4\x93\x02 \x12\x1e/api/v1/dataproxy/artifact_urn\x12\x9b\x01\n\x12\x43reateDownloadLink\x12+.flyteidl.service.CreateDownloadLinkRequest\x1a,.flyteidl.service.CreateDownloadLinkResponse\"*\x82\xd3\xe4\x93\x02$:\x01*\"\x1f/api/v1/dataproxy/artifact_link\x12\x64\n\x07GetData\x12 .flyteidl.service.GetDataRequest\x1a!.flyteidl.service.GetDataResponse\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\x0c/api/v1/dataB\xc0\x01\n\x14\x63om.flyteidl.serviceB\x0e\x44\x61taproxyProtoP\x01Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service\xa2\x02\x03\x46SX\xaa\x02\x10\x46lyteidl.Service\xca\x02\x10\x46lyteidl\\Service\xe2\x02\x1c\x46lyteidl\\Service\\GPBMetadata\xea\x02\x11\x46lyteidl::Serviceb\x06proto3') +>>>>>>> 513ff822 (Data addresses #minor (#391)) _ARTIFACTTYPE = _descriptor.EnumDescriptor( name='ArtifactType', @@ -430,4 +435,47 @@ DESCRIPTOR.services_by_name['DataProxyService'] = _DATAPROXYSERVICE +<<<<<<< HEAD +======= + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\024com.flyteidl.serviceB\016DataproxyProtoP\001Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service\242\002\003FSX\252\002\020Flyteidl.Service\312\002\020Flyteidl\\Service\342\002\034Flyteidl\\Service\\GPBMetadata\352\002\021Flyteidl::Service' + _CREATEDOWNLOADLOCATIONREQUEST._options = None + _CREATEDOWNLOADLOCATIONREQUEST._serialized_options = b'\030\001' + _CREATEDOWNLOADLOCATIONRESPONSE._options = None + _CREATEDOWNLOADLOCATIONRESPONSE._serialized_options = b'\030\001' + _CREATEDOWNLOADLINKRESPONSE.fields_by_name['signed_url']._options = None + _CREATEDOWNLOADLINKRESPONSE.fields_by_name['signed_url']._serialized_options = b'\030\001' + _CREATEDOWNLOADLINKRESPONSE.fields_by_name['expires_at']._options = None + _CREATEDOWNLOADLINKRESPONSE.fields_by_name['expires_at']._serialized_options = b'\030\001' + _DATAPROXYSERVICE.methods_by_name['CreateUploadLocation']._options = None + _DATAPROXYSERVICE.methods_by_name['CreateUploadLocation']._serialized_options = b'\202\323\344\223\002#:\001*\"\036/api/v1/dataproxy/artifact_urn' + _DATAPROXYSERVICE.methods_by_name['CreateDownloadLocation']._options = None + _DATAPROXYSERVICE.methods_by_name['CreateDownloadLocation']._serialized_options = b'\210\002\001\202\323\344\223\002 \022\036/api/v1/dataproxy/artifact_urn' + _DATAPROXYSERVICE.methods_by_name['CreateDownloadLink']._options = None + _DATAPROXYSERVICE.methods_by_name['CreateDownloadLink']._serialized_options = b'\202\323\344\223\002$:\001*\"\037/api/v1/dataproxy/artifact_link' + _DATAPROXYSERVICE.methods_by_name['GetData']._options = None + _DATAPROXYSERVICE.methods_by_name['GetData']._serialized_options = b'\202\323\344\223\002\016\022\014/api/v1/data' + _globals['_ARTIFACTTYPE']._serialized_start=1594 + _globals['_ARTIFACTTYPE']._serialized_end=1661 + _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_start=212 + _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_end=363 + _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_start=366 + _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_end=564 + _globals['_CREATEDOWNLOADLOCATIONREQUEST']._serialized_start=566 + _globals['_CREATEDOWNLOADLOCATIONREQUEST']._serialized_end=690 + _globals['_CREATEDOWNLOADLOCATIONRESPONSE']._serialized_start=692 + _globals['_CREATEDOWNLOADLOCATIONRESPONSE']._serialized_end=818 + _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_start=821 + _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_end=1071 + _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_start=1074 + _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_end=1273 + _globals['_PRESIGNEDURLS']._serialized_start=1275 + _globals['_PRESIGNEDURLS']._serialized_end=1380 + _globals['_GETDATAREQUEST']._serialized_start=1382 + _globals['_GETDATAREQUEST']._serialized_end=1427 + _globals['_GETDATARESPONSE']._serialized_start=1430 + _globals['_GETDATARESPONSE']._serialized_end=1592 + _globals['_DATAPROXYSERVICE']._serialized_start=1664 + _globals['_DATAPROXYSERVICE']._serialized_end=2274 +>>>>>>> 513ff822 (Data addresses #minor (#391)) # @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/service/dataproxy_pb2.pyi b/gen/pb_python/flyteidl/service/dataproxy_pb2.pyi new file mode 100644 index 000000000..869524be0 --- /dev/null +++ b/gen/pb_python/flyteidl/service/dataproxy_pb2.pyi @@ -0,0 +1,101 @@ +from google.api import annotations_pb2 as _annotations_pb2 +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from flyteidl.core import identifier_pb2 as _identifier_pb2 +from flyteidl.core import literals_pb2 as _literals_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class ArtifactType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ARTIFACT_TYPE_UNDEFINED: _ClassVar[ArtifactType] + ARTIFACT_TYPE_DECK: _ClassVar[ArtifactType] +ARTIFACT_TYPE_UNDEFINED: ArtifactType +ARTIFACT_TYPE_DECK: ArtifactType + +class CreateUploadLocationResponse(_message.Message): + __slots__ = ["signed_url", "native_url", "expires_at"] + SIGNED_URL_FIELD_NUMBER: _ClassVar[int] + NATIVE_URL_FIELD_NUMBER: _ClassVar[int] + EXPIRES_AT_FIELD_NUMBER: _ClassVar[int] + signed_url: str + native_url: str + expires_at: _timestamp_pb2.Timestamp + def __init__(self, signed_url: _Optional[str] = ..., native_url: _Optional[str] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class CreateUploadLocationRequest(_message.Message): + __slots__ = ["project", "domain", "filename", "expires_in", "content_md5"] + PROJECT_FIELD_NUMBER: _ClassVar[int] + DOMAIN_FIELD_NUMBER: _ClassVar[int] + FILENAME_FIELD_NUMBER: _ClassVar[int] + EXPIRES_IN_FIELD_NUMBER: _ClassVar[int] + CONTENT_MD5_FIELD_NUMBER: _ClassVar[int] + project: str + domain: str + filename: str + expires_in: _duration_pb2.Duration + content_md5: bytes + def __init__(self, project: _Optional[str] = ..., domain: _Optional[str] = ..., filename: _Optional[str] = ..., expires_in: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., content_md5: _Optional[bytes] = ...) -> None: ... + +class CreateDownloadLocationRequest(_message.Message): + __slots__ = ["native_url", "expires_in"] + NATIVE_URL_FIELD_NUMBER: _ClassVar[int] + EXPIRES_IN_FIELD_NUMBER: _ClassVar[int] + native_url: str + expires_in: _duration_pb2.Duration + def __init__(self, native_url: _Optional[str] = ..., expires_in: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ... + +class CreateDownloadLocationResponse(_message.Message): + __slots__ = ["signed_url", "expires_at"] + SIGNED_URL_FIELD_NUMBER: _ClassVar[int] + EXPIRES_AT_FIELD_NUMBER: _ClassVar[int] + signed_url: str + expires_at: _timestamp_pb2.Timestamp + def __init__(self, signed_url: _Optional[str] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class CreateDownloadLinkRequest(_message.Message): + __slots__ = ["artifact_type", "expires_in", "node_execution_id"] + ARTIFACT_TYPE_FIELD_NUMBER: _ClassVar[int] + EXPIRES_IN_FIELD_NUMBER: _ClassVar[int] + NODE_EXECUTION_ID_FIELD_NUMBER: _ClassVar[int] + artifact_type: ArtifactType + expires_in: _duration_pb2.Duration + node_execution_id: _identifier_pb2.NodeExecutionIdentifier + def __init__(self, artifact_type: _Optional[_Union[ArtifactType, str]] = ..., expires_in: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., node_execution_id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ...) -> None: ... + +class CreateDownloadLinkResponse(_message.Message): + __slots__ = ["signed_url", "expires_at", "pre_signed_urls"] + SIGNED_URL_FIELD_NUMBER: _ClassVar[int] + EXPIRES_AT_FIELD_NUMBER: _ClassVar[int] + PRE_SIGNED_URLS_FIELD_NUMBER: _ClassVar[int] + signed_url: _containers.RepeatedScalarFieldContainer[str] + expires_at: _timestamp_pb2.Timestamp + pre_signed_urls: PreSignedURLs + def __init__(self, signed_url: _Optional[_Iterable[str]] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., pre_signed_urls: _Optional[_Union[PreSignedURLs, _Mapping]] = ...) -> None: ... + +class PreSignedURLs(_message.Message): + __slots__ = ["signed_url", "expires_at"] + SIGNED_URL_FIELD_NUMBER: _ClassVar[int] + EXPIRES_AT_FIELD_NUMBER: _ClassVar[int] + signed_url: _containers.RepeatedScalarFieldContainer[str] + expires_at: _timestamp_pb2.Timestamp + def __init__(self, signed_url: _Optional[_Iterable[str]] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class GetDataRequest(_message.Message): + __slots__ = ["flyte_url"] + FLYTE_URL_FIELD_NUMBER: _ClassVar[int] + flyte_url: str + def __init__(self, flyte_url: _Optional[str] = ...) -> None: ... + +class GetDataResponse(_message.Message): + __slots__ = ["literal_map", "pre_signed_urls"] + LITERAL_MAP_FIELD_NUMBER: _ClassVar[int] + PRE_SIGNED_URLS_FIELD_NUMBER: _ClassVar[int] + literal_map: _literals_pb2.LiteralMap + pre_signed_urls: PreSignedURLs + def __init__(self, literal_map: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., pre_signed_urls: _Optional[_Union[PreSignedURLs, _Mapping]] = ...) -> None: ... diff --git a/gen/pb_python/flyteidl/service/dataproxy_pb2_grpc.py b/gen/pb_python/flyteidl/service/dataproxy_pb2_grpc.py index f58e6b701..41f504589 100644 --- a/gen/pb_python/flyteidl/service/dataproxy_pb2_grpc.py +++ b/gen/pb_python/flyteidl/service/dataproxy_pb2_grpc.py @@ -14,6 +14,7 @@ def __init__(self, channel): Args: channel: A grpc.Channel. """ +<<<<<<< HEAD self.CreateUploadLocation = channel.unary_unary( '/flyteidl.service.DataProxyService/CreateUploadLocation', request_serializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateUploadLocationRequest.SerializeToString, @@ -29,6 +30,35 @@ def __init__(self, channel): request_serializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLinkRequest.SerializeToString, response_deserializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLinkResponse.FromString, ) +======= + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.CreateUploadLocation = channel.unary_unary( + '/flyteidl.service.DataProxyService/CreateUploadLocation', + request_serializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateUploadLocationRequest.SerializeToString, + response_deserializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateUploadLocationResponse.FromString, + ) + self.CreateDownloadLocation = channel.unary_unary( + '/flyteidl.service.DataProxyService/CreateDownloadLocation', + request_serializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLocationRequest.SerializeToString, + response_deserializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLocationResponse.FromString, + ) + self.CreateDownloadLink = channel.unary_unary( + '/flyteidl.service.DataProxyService/CreateDownloadLink', + request_serializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLinkRequest.SerializeToString, + response_deserializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLinkResponse.FromString, + ) + self.GetData = channel.unary_unary( + '/flyteidl.service.DataProxyService/GetData', + request_serializer=flyteidl_dot_service_dot_dataproxy__pb2.GetDataRequest.SerializeToString, + response_deserializer=flyteidl_dot_service_dot_dataproxy__pb2.GetDataResponse.FromString, + ) +>>>>>>> 513ff822 (Data addresses #minor (#391)) class DataProxyServiceServicer(object): @@ -56,8 +86,15 @@ def CreateDownloadLink(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetData(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_DataProxyServiceServicer_to_server(servicer, server): +<<<<<<< HEAD rpc_method_handlers = { 'CreateUploadLocation': grpc.unary_unary_rpc_method_handler( servicer.CreateUploadLocation, @@ -78,3 +115,104 @@ def add_DataProxyServiceServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'flyteidl.service.DataProxyService', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) +======= + rpc_method_handlers = { + 'CreateUploadLocation': grpc.unary_unary_rpc_method_handler( + servicer.CreateUploadLocation, + request_deserializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateUploadLocationRequest.FromString, + response_serializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateUploadLocationResponse.SerializeToString, + ), + 'CreateDownloadLocation': grpc.unary_unary_rpc_method_handler( + servicer.CreateDownloadLocation, + request_deserializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLocationRequest.FromString, + response_serializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLocationResponse.SerializeToString, + ), + 'CreateDownloadLink': grpc.unary_unary_rpc_method_handler( + servicer.CreateDownloadLink, + request_deserializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLinkRequest.FromString, + response_serializer=flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLinkResponse.SerializeToString, + ), + 'GetData': grpc.unary_unary_rpc_method_handler( + servicer.GetData, + request_deserializer=flyteidl_dot_service_dot_dataproxy__pb2.GetDataRequest.FromString, + response_serializer=flyteidl_dot_service_dot_dataproxy__pb2.GetDataResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'flyteidl.service.DataProxyService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class DataProxyService(object): + """DataProxyService defines an RPC Service that allows access to user-data in a controlled manner. + """ + + @staticmethod + def CreateUploadLocation(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.service.DataProxyService/CreateUploadLocation', + flyteidl_dot_service_dot_dataproxy__pb2.CreateUploadLocationRequest.SerializeToString, + flyteidl_dot_service_dot_dataproxy__pb2.CreateUploadLocationResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def CreateDownloadLocation(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.service.DataProxyService/CreateDownloadLocation', + flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLocationRequest.SerializeToString, + flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLocationResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def CreateDownloadLink(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.service.DataProxyService/CreateDownloadLink', + flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLinkRequest.SerializeToString, + flyteidl_dot_service_dot_dataproxy__pb2.CreateDownloadLinkResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetData(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.service.DataProxyService/GetData', + flyteidl_dot_service_dot_dataproxy__pb2.GetDataRequest.SerializeToString, + flyteidl_dot_service_dot_dataproxy__pb2.GetDataResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) +>>>>>>> 513ff822 (Data addresses #minor (#391)) diff --git a/gen/pb_python/flyteidl/service/flyteadmin/README.md b/gen/pb_python/flyteidl/service/flyteadmin/README.md index 2e98e2925..2b51921f6 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/README.md +++ b/gen/pb_python/flyteidl/service/flyteadmin/README.md @@ -163,6 +163,7 @@ Class | Method | HTTP request | Description - [AdminExecutionUpdateResponse](docs/AdminExecutionUpdateResponse.md) - [AdminFixedRate](docs/AdminFixedRate.md) - [AdminFixedRateUnit](docs/AdminFixedRateUnit.md) + - [AdminFlyteURLs](docs/AdminFlyteURLs.md) - [AdminGetVersionResponse](docs/AdminGetVersionResponse.md) - [AdminLabels](docs/AdminLabels.md) - [AdminLaunchPlan](docs/AdminLaunchPlan.md) diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py index 37e126b53..c2aea7e87 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py @@ -54,6 +54,7 @@ from flyteadmin.models.admin_execution_update_response import AdminExecutionUpdateResponse from flyteadmin.models.admin_fixed_rate import AdminFixedRate from flyteadmin.models.admin_fixed_rate_unit import AdminFixedRateUnit +from flyteadmin.models.admin_flyte_ur_ls import AdminFlyteURLs from flyteadmin.models.admin_get_version_response import AdminGetVersionResponse from flyteadmin.models.admin_labels import AdminLabels from flyteadmin.models.admin_launch_plan import AdminLaunchPlan 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 f1bf924e4..51cc35d0f 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py @@ -47,6 +47,7 @@ from flyteadmin.models.admin_execution_update_response import AdminExecutionUpdateResponse from flyteadmin.models.admin_fixed_rate import AdminFixedRate from flyteadmin.models.admin_fixed_rate_unit import AdminFixedRateUnit +from flyteadmin.models.admin_flyte_ur_ls import AdminFlyteURLs from flyteadmin.models.admin_get_version_response import AdminGetVersionResponse from flyteadmin.models.admin_labels import AdminLabels from flyteadmin.models.admin_launch_plan import AdminLaunchPlan diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_flyte_ur_ls.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_flyte_ur_ls.py new file mode 100644 index 000000000..f99e18dc4 --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_flyte_ur_ls.py @@ -0,0 +1,167 @@ +# 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 + + +class AdminFlyteURLs(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 = { + 'inputs': 'str', + 'outputs': 'str', + 'deck': 'str' + } + + attribute_map = { + 'inputs': 'inputs', + 'outputs': 'outputs', + 'deck': 'deck' + } + + def __init__(self, inputs=None, outputs=None, deck=None): # noqa: E501 + """AdminFlyteURLs - a model defined in Swagger""" # noqa: E501 + + self._inputs = None + self._outputs = None + self._deck = None + self.discriminator = None + + if inputs is not None: + self.inputs = inputs + if outputs is not None: + self.outputs = outputs + if deck is not None: + self.deck = deck + + @property + def inputs(self): + """Gets the inputs of this AdminFlyteURLs. # noqa: E501 + + + :return: The inputs of this AdminFlyteURLs. # noqa: E501 + :rtype: str + """ + return self._inputs + + @inputs.setter + def inputs(self, inputs): + """Sets the inputs of this AdminFlyteURLs. + + + :param inputs: The inputs of this AdminFlyteURLs. # noqa: E501 + :type: str + """ + + self._inputs = inputs + + @property + def outputs(self): + """Gets the outputs of this AdminFlyteURLs. # noqa: E501 + + + :return: The outputs of this AdminFlyteURLs. # noqa: E501 + :rtype: str + """ + return self._outputs + + @outputs.setter + def outputs(self, outputs): + """Sets the outputs of this AdminFlyteURLs. + + + :param outputs: The outputs of this AdminFlyteURLs. # noqa: E501 + :type: str + """ + + self._outputs = outputs + + @property + def deck(self): + """Gets the deck of this AdminFlyteURLs. # noqa: E501 + + + :return: The deck of this AdminFlyteURLs. # noqa: E501 + :rtype: str + """ + return self._deck + + @deck.setter + def deck(self, deck): + """Sets the deck of this AdminFlyteURLs. + + + :param deck: The deck of this AdminFlyteURLs. # noqa: E501 + :type: str + """ + + self._deck = deck + + 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(AdminFlyteURLs, 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, AdminFlyteURLs): + 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/admin_node_execution_get_data_response.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_node_execution_get_data_response.py index 3f6a52845..846033296 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_node_execution_get_data_response.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_node_execution_get_data_response.py @@ -16,6 +16,7 @@ import six +from flyteadmin.models.admin_flyte_ur_ls import AdminFlyteURLs # noqa: F401,E501 from flyteadmin.models.admin_url_blob import AdminUrlBlob # noqa: F401,E501 from flyteadmin.models.core_literal_map import CoreLiteralMap # noqa: F401,E501 from flyteadmin.models.flyteidladmin_dynamic_workflow_node_metadata import FlyteidladminDynamicWorkflowNodeMetadata # noqa: F401,E501 @@ -39,7 +40,8 @@ class AdminNodeExecutionGetDataResponse(object): 'outputs': 'AdminUrlBlob', 'full_inputs': 'CoreLiteralMap', 'full_outputs': 'CoreLiteralMap', - 'dynamic_workflow': 'FlyteidladminDynamicWorkflowNodeMetadata' + 'dynamic_workflow': 'FlyteidladminDynamicWorkflowNodeMetadata', + 'flyte_urls': 'AdminFlyteURLs' } attribute_map = { @@ -47,10 +49,11 @@ class AdminNodeExecutionGetDataResponse(object): 'outputs': 'outputs', 'full_inputs': 'full_inputs', 'full_outputs': 'full_outputs', - 'dynamic_workflow': 'dynamic_workflow' + 'dynamic_workflow': 'dynamic_workflow', + 'flyte_urls': 'flyte_urls' } - def __init__(self, inputs=None, outputs=None, full_inputs=None, full_outputs=None, dynamic_workflow=None): # noqa: E501 + def __init__(self, inputs=None, outputs=None, full_inputs=None, full_outputs=None, dynamic_workflow=None, flyte_urls=None): # noqa: E501 """AdminNodeExecutionGetDataResponse - a model defined in Swagger""" # noqa: E501 self._inputs = None @@ -58,6 +61,7 @@ def __init__(self, inputs=None, outputs=None, full_inputs=None, full_outputs=Non self._full_inputs = None self._full_outputs = None self._dynamic_workflow = None + self._flyte_urls = None self.discriminator = None if inputs is not None: @@ -70,6 +74,8 @@ def __init__(self, inputs=None, outputs=None, full_inputs=None, full_outputs=Non self.full_outputs = full_outputs if dynamic_workflow is not None: self.dynamic_workflow = dynamic_workflow + if flyte_urls is not None: + self.flyte_urls = flyte_urls @property def inputs(self): @@ -186,6 +192,27 @@ def dynamic_workflow(self, dynamic_workflow): self._dynamic_workflow = dynamic_workflow + @property + def flyte_urls(self): + """Gets the flyte_urls of this AdminNodeExecutionGetDataResponse. # noqa: E501 + + + :return: The flyte_urls of this AdminNodeExecutionGetDataResponse. # noqa: E501 + :rtype: AdminFlyteURLs + """ + return self._flyte_urls + + @flyte_urls.setter + def flyte_urls(self, flyte_urls): + """Sets the flyte_urls of this AdminNodeExecutionGetDataResponse. + + + :param flyte_urls: The flyte_urls of this AdminNodeExecutionGetDataResponse. # noqa: E501 + :type: AdminFlyteURLs + """ + + self._flyte_urls = flyte_urls + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_execution_get_data_response.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_execution_get_data_response.py index cfb7c545a..fb095426c 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_execution_get_data_response.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_execution_get_data_response.py @@ -16,6 +16,7 @@ import six +from flyteadmin.models.admin_flyte_ur_ls import AdminFlyteURLs # noqa: F401,E501 from flyteadmin.models.admin_url_blob import AdminUrlBlob # noqa: F401,E501 from flyteadmin.models.core_literal_map import CoreLiteralMap # noqa: F401,E501 @@ -37,23 +38,26 @@ class AdminTaskExecutionGetDataResponse(object): 'inputs': 'AdminUrlBlob', 'outputs': 'AdminUrlBlob', 'full_inputs': 'CoreLiteralMap', - 'full_outputs': 'CoreLiteralMap' + 'full_outputs': 'CoreLiteralMap', + 'flyte_urls': 'AdminFlyteURLs' } attribute_map = { 'inputs': 'inputs', 'outputs': 'outputs', 'full_inputs': 'full_inputs', - 'full_outputs': 'full_outputs' + 'full_outputs': 'full_outputs', + 'flyte_urls': 'flyte_urls' } - def __init__(self, inputs=None, outputs=None, full_inputs=None, full_outputs=None): # noqa: E501 + def __init__(self, inputs=None, outputs=None, full_inputs=None, full_outputs=None, flyte_urls=None): # noqa: E501 """AdminTaskExecutionGetDataResponse - a model defined in Swagger""" # noqa: E501 self._inputs = None self._outputs = None self._full_inputs = None self._full_outputs = None + self._flyte_urls = None self.discriminator = None if inputs is not None: @@ -64,6 +68,8 @@ def __init__(self, inputs=None, outputs=None, full_inputs=None, full_outputs=Non self.full_inputs = full_inputs if full_outputs is not None: self.full_outputs = full_outputs + if flyte_urls is not None: + self.flyte_urls = flyte_urls @property def inputs(self): @@ -157,6 +163,27 @@ def full_outputs(self, full_outputs): self._full_outputs = full_outputs + @property + def flyte_urls(self): + """Gets the flyte_urls of this AdminTaskExecutionGetDataResponse. # noqa: E501 + + + :return: The flyte_urls of this AdminTaskExecutionGetDataResponse. # noqa: E501 + :rtype: AdminFlyteURLs + """ + return self._flyte_urls + + @flyte_urls.setter + def flyte_urls(self, flyte_urls): + """Sets the flyte_urls of this AdminTaskExecutionGetDataResponse. + + + :param flyte_urls: The flyte_urls of this AdminTaskExecutionGetDataResponse. # noqa: E501 + :type: AdminFlyteURLs + """ + + self._flyte_urls = flyte_urls + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_flyte_ur_ls.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_flyte_ur_ls.py new file mode 100644 index 000000000..581bc3833 --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_flyte_ur_ls.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_flyte_ur_ls import AdminFlyteURLs # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestAdminFlyteURLs(unittest.TestCase): + """AdminFlyteURLs unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAdminFlyteURLs(self): + """Test AdminFlyteURLs""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.admin_flyte_ur_ls.AdminFlyteURLs() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/gen/pb_rust/flyteidl.admin.rs b/gen/pb_rust/flyteidl.admin.rs new file mode 100644 index 000000000..41718ba4c --- /dev/null +++ b/gen/pb_rust/flyteidl.admin.rs @@ -0,0 +1,2821 @@ +// @generated +/// Encapsulates specifications for routing an execution onto a specific cluster. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ClusterAssignment { + #[prost(string, tag="3")] + pub cluster_pool_name: ::prost::alloc::string::String, +} +/// Encapsulation of fields that identifies a Flyte resource. +/// A Flyte resource can be a task, workflow or launch plan. +/// A resource can internally have multiple versions and is uniquely identified +/// by project, domain, and name. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NamedEntityIdentifier { + /// Name of the project the resource belongs to. + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Name of the domain the resource belongs to. + /// A domain can be considered as a subset within a specific project. + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// User provided value for the resource. + /// The combination of project + domain + name uniquely identifies the resource. + /// +optional - in certain contexts - like 'List API', 'Launch plans' + #[prost(string, tag="3")] + pub name: ::prost::alloc::string::String, +} +/// Additional metadata around a named entity. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NamedEntityMetadata { + /// Common description across all versions of the entity + /// +optional + #[prost(string, tag="1")] + pub description: ::prost::alloc::string::String, + /// Shared state across all version of the entity + /// At this point in time, only workflow entities can have their state archived. + #[prost(enumeration="NamedEntityState", tag="2")] + pub state: i32, +} +/// Encapsulates information common to a NamedEntity, a Flyte resource such as a task, +/// workflow or launch plan. A NamedEntity is exclusively identified by its resource type +/// and identifier. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NamedEntity { + /// Resource type of the named entity. One of Task, Workflow or LaunchPlan. + #[prost(enumeration="super::core::ResourceType", tag="1")] + pub resource_type: i32, + #[prost(message, optional, tag="2")] + pub id: ::core::option::Option, + /// Additional metadata around a named entity. + #[prost(message, optional, tag="3")] + pub metadata: ::core::option::Option, +} +/// Specifies sort ordering in a list request. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Sort { + /// Indicates an attribute to sort the response values. + /// +required + #[prost(string, tag="1")] + pub key: ::prost::alloc::string::String, + /// Indicates the direction to apply sort key for response values. + /// +optional + #[prost(enumeration="sort::Direction", tag="2")] + pub direction: i32, +} +/// Nested message and enum types in `Sort`. +pub mod sort { + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum Direction { + /// By default, fields are sorted in descending order. + Descending = 0, + Ascending = 1, + } + impl Direction { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Direction::Descending => "DESCENDING", + Direction::Ascending => "ASCENDING", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DESCENDING" => Some(Self::Descending), + "ASCENDING" => Some(Self::Ascending), + _ => None, + } + } + } +} +/// Represents a request structure to list NamedEntityIdentifiers. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NamedEntityIdentifierListRequest { + /// Name of the project that contains the identifiers. + /// +required + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Name of the domain the identifiers belongs to within the project. + /// +required + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// Indicates the number of resources to be returned. + /// +required + #[prost(uint32, tag="3")] + pub limit: u32, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. + /// +optional + #[prost(string, tag="4")] + pub token: ::prost::alloc::string::String, + /// Specifies how listed entities should be sorted in the response. + /// +optional + #[prost(message, optional, tag="5")] + pub sort_by: ::core::option::Option, + /// Indicates a list of filters passed as string. + /// +optional + #[prost(string, tag="6")] + pub filters: ::prost::alloc::string::String, +} +/// Represents a request structure to list NamedEntity objects +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NamedEntityListRequest { + /// Resource type of the metadata to query. One of Task, Workflow or LaunchPlan. + /// +required + #[prost(enumeration="super::core::ResourceType", tag="1")] + pub resource_type: i32, + /// Name of the project that contains the identifiers. + /// +required + #[prost(string, tag="2")] + pub project: ::prost::alloc::string::String, + /// Name of the domain the identifiers belongs to within the project. + #[prost(string, tag="3")] + pub domain: ::prost::alloc::string::String, + /// Indicates the number of resources to be returned. + #[prost(uint32, tag="4")] + pub limit: u32, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. + /// +optional + #[prost(string, tag="5")] + pub token: ::prost::alloc::string::String, + /// Specifies how listed entities should be sorted in the response. + /// +optional + #[prost(message, optional, tag="6")] + pub sort_by: ::core::option::Option, + /// Indicates a list of filters passed as string. + /// +optional + #[prost(string, tag="7")] + pub filters: ::prost::alloc::string::String, +} +/// Represents a list of NamedEntityIdentifiers. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NamedEntityIdentifierList { + /// A list of identifiers. + #[prost(message, repeated, tag="1")] + pub entities: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// Represents a list of NamedEntityIdentifiers. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NamedEntityList { + /// A list of NamedEntity objects + #[prost(message, repeated, tag="1")] + pub entities: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// A request to retrieve the metadata associated with a NamedEntityIdentifier +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NamedEntityGetRequest { + /// Resource type of the metadata to get. One of Task, Workflow or LaunchPlan. + /// +required + #[prost(enumeration="super::core::ResourceType", tag="1")] + pub resource_type: i32, + /// The identifier for the named entity for which to fetch metadata. + /// +required + #[prost(message, optional, tag="2")] + pub id: ::core::option::Option, +} +/// Request to set the referenced named entity state to the configured value. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NamedEntityUpdateRequest { + /// Resource type of the metadata to update + /// +required + #[prost(enumeration="super::core::ResourceType", tag="1")] + pub resource_type: i32, + /// Identifier of the metadata to update + /// +required + #[prost(message, optional, tag="2")] + pub id: ::core::option::Option, + /// Metadata object to set as the new value + /// +required + #[prost(message, optional, tag="3")] + pub metadata: ::core::option::Option, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NamedEntityUpdateResponse { +} +/// Shared request structure to fetch a single resource. +/// Resources include: Task, Workflow, LaunchPlan +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ObjectGetRequest { + /// Indicates a unique version of resource. + /// +required + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// Shared request structure to retrieve a list of resources. +/// Resources include: Task, Workflow, LaunchPlan +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ResourceListRequest { + /// id represents the unique identifier of the resource. + /// +required + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// Indicates the number of resources to be returned. + /// +required + #[prost(uint32, tag="2")] + pub limit: u32, + /// In the case of multiple pages of results, this server-provided token can be used to fetch the next page + /// in a query. + /// +optional + #[prost(string, tag="3")] + pub token: ::prost::alloc::string::String, + /// Indicates a list of filters passed as string. + /// More info on constructing filters : + /// +optional + #[prost(string, tag="4")] + pub filters: ::prost::alloc::string::String, + /// Sort ordering. + /// +optional + #[prost(message, optional, tag="5")] + pub sort_by: ::core::option::Option, +} +/// Defines an email notification specification. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EmailNotification { + /// The list of email addresses recipients for this notification. + /// +required + #[prost(string, repeated, tag="1")] + pub recipients_email: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +/// Defines a pager duty notification specification. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PagerDutyNotification { + /// Currently, PagerDuty notifications leverage email to trigger a notification. + /// +required + #[prost(string, repeated, tag="1")] + pub recipients_email: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +/// Defines a slack notification specification. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SlackNotification { + /// Currently, Slack notifications leverage email to trigger a notification. + /// +required + #[prost(string, repeated, tag="1")] + pub recipients_email: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +/// Represents a structure for notifications based on execution status. +/// The notification content is configured within flyte admin but can be templatized. +/// Future iterations could expose configuring notifications with custom content. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Notification { + /// A list of phases to which users can associate the notifications to. + /// +required + #[prost(enumeration="super::core::workflow_execution::Phase", repeated, tag="1")] + pub phases: ::prost::alloc::vec::Vec, + /// The type of notification to trigger. + /// +required + #[prost(oneof="notification::Type", tags="2, 3, 4")] + pub r#type: ::core::option::Option, +} +/// Nested message and enum types in `Notification`. +pub mod notification { + /// The type of notification to trigger. + /// +required + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Type { + #[prost(message, tag="2")] + Email(super::EmailNotification), + #[prost(message, tag="3")] + PagerDuty(super::PagerDutyNotification), + #[prost(message, tag="4")] + Slack(super::SlackNotification), + } +} +/// Represents a string url and associated metadata used throughout the platform. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct UrlBlob { + /// Actual url value. + #[prost(string, tag="1")] + pub url: ::prost::alloc::string::String, + /// Represents the size of the file accessible at the above url. + #[prost(int64, tag="2")] + pub bytes: i64, +} +/// Label values to be applied to an execution resource. +/// In the future a mode (e.g. OVERRIDE, APPEND, etc) can be defined +/// to specify how to merge labels defined at registration and execution time. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Labels { + /// Map of custom labels to be applied to the execution resource. + #[prost(map="string, string", tag="1")] + pub values: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +/// Annotation values to be applied to an execution resource. +/// In the future a mode (e.g. OVERRIDE, APPEND, etc) can be defined +/// to specify how to merge annotations defined at registration and execution time. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Annotations { + /// Map of custom annotations to be applied to the execution resource. + #[prost(map="string, string", tag="1")] + pub values: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +/// Defines permissions associated with executions created by this launch plan spec. +/// Use either of these roles when they have permissions required by your workflow execution. +/// Deprecated. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AuthRole { + /// Defines an optional iam role which will be used for tasks run in executions created with this launch plan. + #[prost(string, tag="1")] + pub assumable_iam_role: ::prost::alloc::string::String, + /// Defines an optional kubernetes service account which will be used for tasks run in executions created with this launch plan. + #[prost(string, tag="2")] + pub kubernetes_service_account: ::prost::alloc::string::String, +} +/// Encapsulates user settings pertaining to offloaded data (i.e. Blobs, Schema, query data, etc.). +/// See for more background information. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RawOutputDataConfig { + /// Prefix for where offloaded data from user workflows will be written + /// e.g. s3://bucket/key or s3://bucket/ + #[prost(string, tag="1")] + pub output_location_prefix: ::prost::alloc::string::String, +} +/// These URLs are returned as part of node and task execution data requests. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct FlyteUrLs { + #[prost(string, tag="1")] + pub inputs: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub outputs: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub deck: ::prost::alloc::string::String, +} +/// The status of the named entity is used to control its visibility in the UI. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum NamedEntityState { + /// By default, all named entities are considered active and under development. + NamedEntityActive = 0, + /// Archived named entities are no longer visible in the UI. + NamedEntityArchived = 1, + /// System generated entities that aren't explicitly created or managed by a user. + SystemGenerated = 2, +} +impl NamedEntityState { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + NamedEntityState::NamedEntityActive => "NAMED_ENTITY_ACTIVE", + NamedEntityState::NamedEntityArchived => "NAMED_ENTITY_ARCHIVED", + NamedEntityState::SystemGenerated => "SYSTEM_GENERATED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NAMED_ENTITY_ACTIVE" => Some(Self::NamedEntityActive), + "NAMED_ENTITY_ARCHIVED" => Some(Self::NamedEntityArchived), + "SYSTEM_GENERATED" => Some(Self::SystemGenerated), + _ => None, + } + } +} +/// DescriptionEntity contains detailed description for the task/workflow. +/// Documentation could provide insight into the algorithms, business use case, etc. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DescriptionEntity { + /// id represents the unique identifier of the description entity. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// One-liner overview of the entity. + #[prost(string, tag="2")] + pub short_description: ::prost::alloc::string::String, + /// Full user description with formatting preserved. + #[prost(message, optional, tag="3")] + pub long_description: ::core::option::Option, + /// Optional link to source code used to define this entity. + #[prost(message, optional, tag="4")] + pub source_code: ::core::option::Option, + /// User-specified tags. These are arbitrary and can be used for searching + /// filtering and discovering tasks. + #[prost(string, repeated, tag="5")] + pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +/// Full user description with formatting preserved. This can be rendered +/// by clients, such as the console or command line tools with in-tact +/// formatting. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Description { + /// Format of the long description + #[prost(enumeration="DescriptionFormat", tag="3")] + pub format: i32, + /// Optional link to an icon for the entity + #[prost(string, tag="4")] + pub icon_link: ::prost::alloc::string::String, + #[prost(oneof="description::Content", tags="1, 2")] + pub content: ::core::option::Option, +} +/// Nested message and enum types in `Description`. +pub mod description { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Content { + /// long description - no more than 4KB + #[prost(string, tag="1")] + Value(::prost::alloc::string::String), + /// if the description sizes exceed some threshold we can offload the entire + /// description proto altogether to an external data store, like S3 rather than store inline in the db + #[prost(string, tag="2")] + Uri(::prost::alloc::string::String), + } +} +/// Link to source code used to define this entity +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SourceCode { + #[prost(string, tag="1")] + pub link: ::prost::alloc::string::String, +} +/// Represents a list of DescriptionEntities returned from the admin. +/// See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DescriptionEntityList { + /// A list of DescriptionEntities returned based on the request. + #[prost(message, repeated, tag="1")] + pub description_entities: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// Represents a request structure to retrieve a list of DescriptionEntities. +/// See :ref:`ref_flyteidl.admin.DescriptionEntity` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DescriptionEntityListRequest { + /// Identifies the specific type of resource that this identifier corresponds to. + #[prost(enumeration="super::core::ResourceType", tag="1")] + pub resource_type: i32, + /// The identifier for the description entity. + /// +required + #[prost(message, optional, tag="2")] + pub id: ::core::option::Option, + /// Indicates the number of resources to be returned. + /// +required + #[prost(uint32, tag="3")] + pub limit: u32, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. + /// +optional + #[prost(string, tag="4")] + pub token: ::prost::alloc::string::String, + /// Indicates a list of filters passed as string. + /// More info on constructing filters : + /// +optional + #[prost(string, tag="5")] + pub filters: ::prost::alloc::string::String, + /// Sort ordering for returned list. + /// +optional + #[prost(message, optional, tag="6")] + pub sort_by: ::core::option::Option, +} +/// The format of the long description +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum DescriptionFormat { + Unknown = 0, + Markdown = 1, + Html = 2, + /// python default documentation - comments is rst + Rst = 3, +} +impl DescriptionFormat { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + DescriptionFormat::Unknown => "DESCRIPTION_FORMAT_UNKNOWN", + DescriptionFormat::Markdown => "DESCRIPTION_FORMAT_MARKDOWN", + DescriptionFormat::Html => "DESCRIPTION_FORMAT_HTML", + DescriptionFormat::Rst => "DESCRIPTION_FORMAT_RST", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DESCRIPTION_FORMAT_UNKNOWN" => Some(Self::Unknown), + "DESCRIPTION_FORMAT_MARKDOWN" => Some(Self::Markdown), + "DESCRIPTION_FORMAT_HTML" => Some(Self::Html), + "DESCRIPTION_FORMAT_RST" => Some(Self::Rst), + _ => None, + } + } +} +/// Indicates that a sent event was not used to update execution state due to +/// the referenced execution already being terminated (and therefore ineligible +/// for further state transitions). +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EventErrorAlreadyInTerminalState { + /// +required + #[prost(string, tag="1")] + pub current_phase: ::prost::alloc::string::String, +} +/// Indicates an event was rejected because it came from a different cluster than +/// is on record as running the execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EventErrorIncompatibleCluster { + /// The cluster which has been recorded as processing the execution. + /// +required + #[prost(string, tag="1")] + pub cluster: ::prost::alloc::string::String, +} +/// Indicates why a sent event was not used to update execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EventFailureReason { + /// +required + #[prost(oneof="event_failure_reason::Reason", tags="1, 2")] + pub reason: ::core::option::Option, +} +/// Nested message and enum types in `EventFailureReason`. +pub mod event_failure_reason { + /// +required + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Reason { + #[prost(message, tag="1")] + AlreadyInTerminalState(super::EventErrorAlreadyInTerminalState), + #[prost(message, tag="2")] + IncompatibleCluster(super::EventErrorIncompatibleCluster), + } +} +/// Request to send a notification that a workflow execution event has occurred. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowExecutionEventRequest { + /// Unique ID for this request that can be traced between services + #[prost(string, tag="1")] + pub request_id: ::prost::alloc::string::String, + /// Details about the event that occurred. + #[prost(message, optional, tag="2")] + pub event: ::core::option::Option, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowExecutionEventResponse { +} +/// Request to send a notification that a node execution event has occurred. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NodeExecutionEventRequest { + /// Unique ID for this request that can be traced between services + #[prost(string, tag="1")] + pub request_id: ::prost::alloc::string::String, + /// Details about the event that occurred. + #[prost(message, optional, tag="2")] + pub event: ::core::option::Option, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NodeExecutionEventResponse { +} +/// Request to send a notification that a task execution event has occurred. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskExecutionEventRequest { + /// Unique ID for this request that can be traced between services + #[prost(string, tag="1")] + pub request_id: ::prost::alloc::string::String, + /// Details about the event that occurred. + #[prost(message, optional, tag="2")] + pub event: ::core::option::Option, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskExecutionEventResponse { +} +/// Request to launch an execution with the given project, domain and optionally-assigned name. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionCreateRequest { + /// Name of the project the execution belongs to. + /// +required + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Name of the domain the execution belongs to. + /// A domain can be considered as a subset within a specific project. + /// +required + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// User provided value for the resource. + /// If none is provided the system will generate a unique string. + /// +optional + #[prost(string, tag="3")] + pub name: ::prost::alloc::string::String, + /// Additional fields necessary to launch the execution. + /// +optional + #[prost(message, optional, tag="4")] + pub spec: ::core::option::Option, + /// The inputs required to start the execution. All required inputs must be + /// included in this map. If not required and not provided, defaults apply. + /// +optional + #[prost(message, optional, tag="5")] + pub inputs: ::core::option::Option, +} +/// Request to relaunch the referenced execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionRelaunchRequest { + /// Identifier of the workflow execution to relaunch. + /// +required + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// User provided value for the relaunched execution. + /// If none is provided the system will generate a unique string. + /// +optional + #[prost(string, tag="3")] + pub name: ::prost::alloc::string::String, + /// Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + /// If enabled, all calculations are performed even if cached results would be available, overwriting the stored + /// data once execution finishes successfully. + #[prost(bool, tag="4")] + pub overwrite_cache: bool, +} +/// Request to recover the referenced execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionRecoverRequest { + /// Identifier of the workflow execution to recover. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// User provided value for the recovered execution. + /// If none is provided the system will generate a unique string. + /// +optional + #[prost(string, tag="2")] + pub name: ::prost::alloc::string::String, + /// Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution. + #[prost(message, optional, tag="3")] + pub metadata: ::core::option::Option, +} +/// 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. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionCreateResponse { + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// A message used to fetch a single workflow execution entity. +/// See :ref:`ref_flyteidl.admin.Execution` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowExecutionGetRequest { + /// Uniquely identifies an individual workflow execution. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// A workflow execution represents an instantiated workflow, including all inputs and additional +/// metadata as well as computed results included state, outputs, and duration-based attributes. +/// Used as a response object used in Get and List execution requests. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Execution { + /// Unique identifier of the workflow execution. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// User-provided configuration and inputs for launching the execution. + #[prost(message, optional, tag="2")] + pub spec: ::core::option::Option, + /// Execution results. + #[prost(message, optional, tag="3")] + pub closure: ::core::option::Option, +} +/// Used as a response for request to list executions. +/// See :ref:`ref_flyteidl.admin.Execution` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionList { + #[prost(message, repeated, tag="1")] + pub executions: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// Input/output data can represented by actual values or a link to where values are stored +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LiteralMapBlob { + #[prost(oneof="literal_map_blob::Data", tags="1, 2")] + pub data: ::core::option::Option, +} +/// Nested message and enum types in `LiteralMapBlob`. +pub mod literal_map_blob { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Data { + /// Data in LiteralMap format + #[prost(message, tag="1")] + Values(super::super::core::LiteralMap), + /// In the event that the map is too large, we return a uri to the data + #[prost(string, tag="2")] + Uri(::prost::alloc::string::String), + } +} +/// Specifies metadata around an aborted workflow execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AbortMetadata { + /// In the case of a user-specified abort, this will pass along the user-supplied cause. + #[prost(string, tag="1")] + pub cause: ::prost::alloc::string::String, + /// Identifies the entity (if any) responsible for terminating the execution + #[prost(string, tag="2")] + pub principal: ::prost::alloc::string::String, +} +/// Encapsulates the results of the Execution +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionClosure { + /// Inputs computed and passed for execution. + /// computed_inputs depends on inputs in ExecutionSpec, fixed and default inputs in launch plan + #[deprecated] + #[prost(message, optional, tag="3")] + pub computed_inputs: ::core::option::Option, + /// Most recent recorded phase for the execution. + #[prost(enumeration="super::core::workflow_execution::Phase", tag="4")] + pub phase: i32, + /// Reported time at which the execution began running. + #[prost(message, optional, tag="5")] + pub started_at: ::core::option::Option<::prost_types::Timestamp>, + /// The amount of time the execution spent running. + #[prost(message, optional, tag="6")] + pub duration: ::core::option::Option<::prost_types::Duration>, + /// Reported time at which the execution was created. + #[prost(message, optional, tag="7")] + pub created_at: ::core::option::Option<::prost_types::Timestamp>, + /// Reported time at which the execution was last updated. + #[prost(message, optional, tag="8")] + pub updated_at: ::core::option::Option<::prost_types::Timestamp>, + /// The notification settings to use after merging the CreateExecutionRequest and the launch plan + /// notification settings. An execution launched with notifications will always prefer that definition + /// to notifications defined statically in a launch plan. + #[prost(message, repeated, tag="9")] + pub notifications: ::prost::alloc::vec::Vec, + /// Identifies the workflow definition for this execution. + #[prost(message, optional, tag="11")] + pub workflow_id: ::core::option::Option, + /// Provides the details of the last stage change + #[prost(message, optional, tag="14")] + pub state_change_details: ::core::option::Option, + /// A result produced by a terminated execution. + /// A pending (non-terminal) execution will not have any output result. + #[prost(oneof="execution_closure::OutputResult", tags="1, 2, 10, 12, 13")] + pub output_result: ::core::option::Option, +} +/// Nested message and enum types in `ExecutionClosure`. +pub mod execution_closure { + /// A result produced by a terminated execution. + /// A pending (non-terminal) execution will not have any output result. + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum OutputResult { + /// Output URI in the case of a successful execution. + /// DEPRECATED. Use GetExecutionData to fetch output data instead. + #[prost(message, tag="1")] + Outputs(super::LiteralMapBlob), + /// Error information in the case of a failed execution. + #[prost(message, tag="2")] + Error(super::super::core::ExecutionError), + /// In the case of a user-specified abort, this will pass along the user-supplied cause. + #[prost(string, tag="10")] + AbortCause(::prost::alloc::string::String), + /// In the case of a user-specified abort, this will pass along the user and their supplied cause. + #[prost(message, tag="12")] + AbortMetadata(super::AbortMetadata), + /// Raw output data produced by this execution. + /// DEPRECATED. Use GetExecutionData to fetch output data instead. + #[prost(message, tag="13")] + OutputData(super::super::core::LiteralMap), + } +} +/// Represents system, rather than user-facing, metadata about an execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SystemMetadata { + /// Which execution cluster this execution ran on. + #[prost(string, tag="1")] + pub execution_cluster: ::prost::alloc::string::String, +} +/// Represents attributes about an execution which are not required to launch the execution but are useful to record. +/// These attributes are assigned at launch time and do not change. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionMetadata { + #[prost(enumeration="execution_metadata::ExecutionMode", tag="1")] + pub mode: i32, + /// Identifier of the entity that triggered this execution. + /// For systems using back-end authentication any value set here will be discarded in favor of the + /// authenticated user context. + #[prost(string, tag="2")] + pub principal: ::prost::alloc::string::String, + /// Indicates the nestedness of this execution. + /// If a user launches a workflow execution, the default nesting is 0. + /// If this execution further launches a workflow (child workflow), the nesting level is incremented by 0 => 1 + /// Generally, if workflow at nesting level k launches a workflow then the child workflow will have + /// nesting = k + 1. + #[prost(uint32, tag="3")] + pub nesting: u32, + /// For scheduled executions, the requested time for execution for this specific schedule invocation. + #[prost(message, optional, tag="4")] + pub scheduled_at: ::core::option::Option<::prost_types::Timestamp>, + /// Which subworkflow node (if any) launched this execution + #[prost(message, optional, tag="5")] + pub parent_node_execution: ::core::option::Option, + /// Optional, a reference workflow execution related to this execution. + /// In the case of a relaunch, this references the original workflow execution. + #[prost(message, optional, tag="16")] + pub reference_execution: ::core::option::Option, + /// Optional, platform-specific metadata about the execution. + /// In this the future this may be gated behind an ACL or some sort of authorization. + #[prost(message, optional, tag="17")] + pub system_metadata: ::core::option::Option, +} +/// Nested message and enum types in `ExecutionMetadata`. +pub mod execution_metadata { + /// The method by which this execution was launched. + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum ExecutionMode { + /// The default execution mode, MANUAL implies that an execution was launched by an individual. + Manual = 0, + /// A schedule triggered this execution launch. + Scheduled = 1, + /// A system process was responsible for launching this execution rather an individual. + System = 2, + /// This execution was launched with identical inputs as a previous execution. + Relaunch = 3, + /// This execution was triggered by another execution. + ChildWorkflow = 4, + /// This execution was recovered from another execution. + Recovered = 5, + } + impl ExecutionMode { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + ExecutionMode::Manual => "MANUAL", + ExecutionMode::Scheduled => "SCHEDULED", + ExecutionMode::System => "SYSTEM", + ExecutionMode::Relaunch => "RELAUNCH", + ExecutionMode::ChildWorkflow => "CHILD_WORKFLOW", + ExecutionMode::Recovered => "RECOVERED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MANUAL" => Some(Self::Manual), + "SCHEDULED" => Some(Self::Scheduled), + "SYSTEM" => Some(Self::System), + "RELAUNCH" => Some(Self::Relaunch), + "CHILD_WORKFLOW" => Some(Self::ChildWorkflow), + "RECOVERED" => Some(Self::Recovered), + _ => None, + } + } + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NotificationList { + #[prost(message, repeated, tag="1")] + pub notifications: ::prost::alloc::vec::Vec, +} +/// An ExecutionSpec encompasses all data used to launch this execution. The Spec does not change over the lifetime +/// of an execution as it progresses across phase changes. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionSpec { + /// Launch plan to be executed + #[prost(message, optional, tag="1")] + pub launch_plan: ::core::option::Option, + /// Input values to be passed for the execution + #[deprecated] + #[prost(message, optional, tag="2")] + pub inputs: ::core::option::Option, + /// Metadata for the execution + #[prost(message, optional, tag="3")] + pub metadata: ::core::option::Option, + /// Labels to apply to the execution resource. + #[prost(message, optional, tag="7")] + pub labels: ::core::option::Option, + /// Annotations to apply to the execution resource. + #[prost(message, optional, tag="8")] + pub annotations: ::core::option::Option, + /// Optional: security context override to apply this execution. + #[prost(message, optional, tag="10")] + pub security_context: ::core::option::Option, + /// Optional: auth override to apply this execution. + #[deprecated] + #[prost(message, optional, tag="16")] + pub auth_role: ::core::option::Option, + /// Indicates the runtime priority of the execution. + #[prost(message, optional, tag="17")] + pub quality_of_service: ::core::option::Option, + /// Controls the maximum number of task nodes that can be run in parallel for the entire workflow. + /// This is useful to achieve fairness. Note: MapTasks are regarded as one unit, + /// and parallelism/concurrency of MapTasks is independent from this. + #[prost(int32, tag="18")] + pub max_parallelism: i32, + /// User setting to configure where to store offloaded data (i.e. Blobs, structured datasets, query data, etc.). + /// This should be a prefix like s3://my-bucket/my-data + #[prost(message, optional, tag="19")] + pub raw_output_data_config: ::core::option::Option, + /// Controls how to select an available cluster on which this execution should run. + #[prost(message, optional, tag="20")] + pub cluster_assignment: ::core::option::Option, + /// Allows for the interruptible flag of a workflow to be overwritten for a single execution. + /// Omitting this field uses the workflow's value as a default. + /// As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper + /// around the bool field. + #[prost(message, optional, tag="21")] + pub interruptible: ::core::option::Option, + /// Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + /// If enabled, all calculations are performed even if cached results would be available, overwriting the stored + /// data once execution finishes successfully. + #[prost(bool, tag="22")] + pub overwrite_cache: bool, + #[prost(oneof="execution_spec::NotificationOverrides", tags="5, 6")] + pub notification_overrides: ::core::option::Option, +} +/// Nested message and enum types in `ExecutionSpec`. +pub mod execution_spec { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum NotificationOverrides { + /// List of notifications based on Execution status transitions + /// When this list is not empty it is used rather than any notifications defined in the referenced launch plan. + /// When this list is empty, the notifications defined for the launch plan will be applied. + #[prost(message, tag="5")] + Notifications(super::NotificationList), + /// This should be set to true if all notifications are intended to be disabled for this execution. + #[prost(bool, tag="6")] + DisableAll(bool), + } +} +/// Request to terminate an in-progress execution. This action is irreversible. +/// If an execution is already terminated, this request will simply be a no-op. +/// This request will fail if it references a non-existent execution. +/// If the request succeeds the phase "ABORTED" will be recorded for the termination +/// with the optional cause added to the output_result. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionTerminateRequest { + /// Uniquely identifies the individual workflow execution to be terminated. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// Optional reason for aborting. + #[prost(string, tag="2")] + pub cause: ::prost::alloc::string::String, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionTerminateResponse { +} +/// Request structure to fetch inputs, output and other data produced by an execution. +/// By default this data is not returned inline in :ref:`ref_flyteidl.admin.WorkflowExecutionGetRequest` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowExecutionGetDataRequest { + /// The identifier of the execution for which to fetch inputs and outputs. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// Response structure for WorkflowExecutionGetDataRequest which contains inputs and outputs for an execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowExecutionGetDataResponse { + /// Signed url to fetch a core.LiteralMap of execution outputs. + /// Deprecated: Please use full_outputs instead. + #[deprecated] + #[prost(message, optional, tag="1")] + pub outputs: ::core::option::Option, + /// Signed url to fetch a core.LiteralMap of execution inputs. + /// Deprecated: Please use full_inputs instead. + #[deprecated] + #[prost(message, optional, tag="2")] + pub inputs: ::core::option::Option, + /// Full_inputs will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="3")] + pub full_inputs: ::core::option::Option, + /// Full_outputs will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="4")] + pub full_outputs: ::core::option::Option, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionUpdateRequest { + /// Identifier of the execution to update + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// State to set as the new value active/archive + #[prost(enumeration="ExecutionState", tag="2")] + pub state: i32, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionStateChangeDetails { + /// The state of the execution is used to control its visibility in the UI/CLI. + #[prost(enumeration="ExecutionState", tag="1")] + pub state: i32, + /// This timestamp represents when the state changed. + #[prost(message, optional, tag="2")] + pub occurred_at: ::core::option::Option<::prost_types::Timestamp>, + /// Identifies the entity (if any) responsible for causing the state change of the execution + #[prost(string, tag="3")] + pub principal: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionUpdateResponse { +} +/// WorkflowExecutionGetMetricsRequest represents a request to retrieve metrics for the specified workflow execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowExecutionGetMetricsRequest { + /// id defines the workflow execution to query for. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// depth defines the number of Flyte entity levels to traverse when breaking down execution details. + #[prost(int32, tag="2")] + pub depth: i32, +} +/// WorkflowExecutionGetMetricsResponse represents the response containing metrics for the specified workflow execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowExecutionGetMetricsResponse { + /// Span defines the top-level breakdown of the workflows execution. More precise information is nested in a + /// hierarchical structure using Flyte entity references. + #[prost(message, optional, tag="1")] + pub span: ::core::option::Option, +} +/// The state of the execution is used to control its visibility in the UI/CLI. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum ExecutionState { + /// By default, all executions are considered active. + ExecutionActive = 0, + /// Archived executions are no longer visible in the UI. + ExecutionArchived = 1, +} +impl ExecutionState { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + ExecutionState::ExecutionActive => "EXECUTION_ACTIVE", + ExecutionState::ExecutionArchived => "EXECUTION_ARCHIVED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EXECUTION_ACTIVE" => Some(Self::ExecutionActive), + "EXECUTION_ARCHIVED" => Some(Self::ExecutionArchived), + _ => None, + } + } +} +/// Option for schedules run at a certain frequency e.g. every 2 minutes. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct FixedRate { + #[prost(uint32, tag="1")] + pub value: u32, + #[prost(enumeration="FixedRateUnit", tag="2")] + pub unit: i32, +} +/// Options for schedules to run according to a cron expression. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CronSchedule { + /// Standard/default cron implementation as described by + /// Also supports nonstandard predefined scheduling definitions + /// as described by + /// except @reboot + #[prost(string, tag="1")] + pub schedule: ::prost::alloc::string::String, + /// ISO 8601 duration as described by + #[prost(string, tag="2")] + pub offset: ::prost::alloc::string::String, +} +/// Defines complete set of information required to trigger an execution on a schedule. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Schedule { + /// Name of the input variable that the kickoff time will be supplied to when the workflow is kicked off. + #[prost(string, tag="3")] + pub kickoff_time_input_arg: ::prost::alloc::string::String, + #[prost(oneof="schedule::ScheduleExpression", tags="1, 2, 4")] + pub schedule_expression: ::core::option::Option, +} +/// Nested message and enum types in `Schedule`. +pub mod schedule { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum ScheduleExpression { + /// Uses AWS syntax: Minutes Hours Day-of-month Month Day-of-week Year + /// e.g. for a schedule that runs every 15 minutes: 0/15 * * * ? * + #[prost(string, tag="1")] + CronExpression(::prost::alloc::string::String), + #[prost(message, tag="2")] + Rate(super::FixedRate), + #[prost(message, tag="4")] + CronSchedule(super::CronSchedule), + } +} +/// Represents a frequency at which to run a schedule. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum FixedRateUnit { + Minute = 0, + Hour = 1, + Day = 2, +} +impl FixedRateUnit { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + FixedRateUnit::Minute => "MINUTE", + FixedRateUnit::Hour => "HOUR", + FixedRateUnit::Day => "DAY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MINUTE" => Some(Self::Minute), + "HOUR" => Some(Self::Hour), + "DAY" => Some(Self::Day), + _ => None, + } + } +} +/// Request to register a launch plan. The included LaunchPlanSpec may have a complete or incomplete set of inputs required +/// to launch a workflow execution. By default all launch plans are registered in state INACTIVE. If you wish to +/// set the state to ACTIVE, you must submit a LaunchPlanUpdateRequest, after you have successfully created a launch plan. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LaunchPlanCreateRequest { + /// Uniquely identifies a launch plan entity. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// User-provided launch plan details, including reference workflow, inputs and other metadata. + #[prost(message, optional, tag="2")] + pub spec: ::core::option::Option, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LaunchPlanCreateResponse { +} +/// A LaunchPlan provides the capability to templatize workflow executions. +/// Launch plans simplify associating one or more schedules, inputs and notifications with your workflows. +/// Launch plans can be shared and used to trigger executions with predefined inputs even when a workflow +/// definition doesn't necessarily have a default value for said input. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LaunchPlan { + /// Uniquely identifies a launch plan entity. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// User-provided launch plan details, including reference workflow, inputs and other metadata. + #[prost(message, optional, tag="2")] + pub spec: ::core::option::Option, + /// Values computed by the flyte platform after launch plan registration. + #[prost(message, optional, tag="3")] + pub closure: ::core::option::Option, +} +/// Response object for list launch plan requests. +/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LaunchPlanList { + #[prost(message, repeated, tag="1")] + pub launch_plans: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// Defines permissions associated with executions created by this launch plan spec. +/// Use either of these roles when they have permissions required by your workflow execution. +/// Deprecated. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Auth { + /// Defines an optional iam role which will be used for tasks run in executions created with this launch plan. + #[prost(string, tag="1")] + pub assumable_iam_role: ::prost::alloc::string::String, + /// Defines an optional kubernetes service account which will be used for tasks run in executions created with this launch plan. + #[prost(string, tag="2")] + pub kubernetes_service_account: ::prost::alloc::string::String, +} +/// User-provided launch plan definition and configuration values. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LaunchPlanSpec { + /// Reference to the Workflow template that the launch plan references + #[prost(message, optional, tag="1")] + pub workflow_id: ::core::option::Option, + /// Metadata for the Launch Plan + #[prost(message, optional, tag="2")] + pub entity_metadata: ::core::option::Option, + /// Input values to be passed for the execution. + /// These can be overriden when an execution is created with this launch plan. + #[prost(message, optional, tag="3")] + pub default_inputs: ::core::option::Option, + /// Fixed, non-overridable inputs for the Launch Plan. + /// These can not be overriden when an execution is created with this launch plan. + #[prost(message, optional, tag="4")] + pub fixed_inputs: ::core::option::Option, + /// String to indicate the role to use to execute the workflow underneath + #[deprecated] + #[prost(string, tag="5")] + pub role: ::prost::alloc::string::String, + /// Custom labels to be applied to the execution resource. + #[prost(message, optional, tag="6")] + pub labels: ::core::option::Option, + /// Custom annotations to be applied to the execution resource. + #[prost(message, optional, tag="7")] + pub annotations: ::core::option::Option, + /// Indicates the permission associated with workflow executions triggered with this launch plan. + #[deprecated] + #[prost(message, optional, tag="8")] + pub auth: ::core::option::Option, + #[deprecated] + #[prost(message, optional, tag="9")] + pub auth_role: ::core::option::Option, + /// Indicates security context for permissions triggered with this launch plan + #[prost(message, optional, tag="10")] + pub security_context: ::core::option::Option, + /// Indicates the runtime priority of the execution. + #[prost(message, optional, tag="16")] + pub quality_of_service: ::core::option::Option, + /// Encapsulates user settings pertaining to offloaded data (i.e. Blobs, Schema, query data, etc.). + #[prost(message, optional, tag="17")] + pub raw_output_data_config: ::core::option::Option, + /// Controls the maximum number of tasknodes that can be run in parallel for the entire workflow. + /// This is useful to achieve fairness. Note: MapTasks are regarded as one unit, + /// and parallelism/concurrency of MapTasks is independent from this. + #[prost(int32, tag="18")] + pub max_parallelism: i32, + /// Allows for the interruptible flag of a workflow to be overwritten for a single execution. + /// Omitting this field uses the workflow's value as a default. + /// As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper + /// around the bool field. + #[prost(message, optional, tag="19")] + pub interruptible: ::core::option::Option, + /// Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + /// If enabled, all calculations are performed even if cached results would be available, overwriting the stored + /// data once execution finishes successfully. + #[prost(bool, tag="20")] + pub overwrite_cache: bool, +} +/// Values computed by the flyte platform after launch plan registration. +/// These include expected_inputs required to be present in a CreateExecutionRequest +/// to launch the reference workflow as well timestamp values associated with the launch plan. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LaunchPlanClosure { + /// Indicate the Launch plan state. + #[prost(enumeration="LaunchPlanState", tag="1")] + pub state: i32, + /// Indicates the set of inputs expected when creating an execution with the Launch plan + #[prost(message, optional, tag="2")] + pub expected_inputs: ::core::option::Option, + /// Indicates the set of outputs expected to be produced by creating an execution with the Launch plan + #[prost(message, optional, tag="3")] + pub expected_outputs: ::core::option::Option, + /// Time at which the launch plan was created. + #[prost(message, optional, tag="4")] + pub created_at: ::core::option::Option<::prost_types::Timestamp>, + /// Time at which the launch plan was last updated. + #[prost(message, optional, tag="5")] + pub updated_at: ::core::option::Option<::prost_types::Timestamp>, +} +/// Additional launch plan attributes included in the LaunchPlanSpec not strictly required to launch +/// the reference workflow. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LaunchPlanMetadata { + /// Schedule to execute the Launch Plan + #[prost(message, optional, tag="1")] + pub schedule: ::core::option::Option, + /// List of notifications based on Execution status transitions + #[prost(message, repeated, tag="2")] + pub notifications: ::prost::alloc::vec::Vec, +} +/// Request to set the referenced launch plan state to the configured value. +/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LaunchPlanUpdateRequest { + /// Identifier of launch plan for which to change state. + /// +required. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// Desired state to apply to the launch plan. + /// +required. + #[prost(enumeration="LaunchPlanState", tag="2")] + pub state: i32, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LaunchPlanUpdateResponse { +} +/// Represents a request struct for finding an active launch plan for a given NamedEntityIdentifier +/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ActiveLaunchPlanRequest { + /// +required. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// Represents a request structure to list active launch plans within a project/domain. +/// See :ref:`ref_flyteidl.admin.LaunchPlan` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ActiveLaunchPlanListRequest { + /// Name of the project that contains the identifiers. + /// +required. + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Name of the domain the identifiers belongs to within the project. + /// +required. + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// Indicates the number of resources to be returned. + /// +required. + #[prost(uint32, tag="3")] + pub limit: u32, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. + /// +optional + #[prost(string, tag="4")] + pub token: ::prost::alloc::string::String, + /// Sort ordering. + /// +optional + #[prost(message, optional, tag="5")] + pub sort_by: ::core::option::Option, +} +/// By default any launch plan regardless of state can be used to launch a workflow execution. +/// However, at most one version of a launch plan +/// (e.g. a NamedEntityIdentifier set of shared project, domain and name values) can be +/// active at a time in regards to *schedules*. That is, at most one schedule in a NamedEntityIdentifier +/// group will be observed and trigger executions at a defined cadence. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum LaunchPlanState { + Inactive = 0, + Active = 1, +} +impl LaunchPlanState { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + LaunchPlanState::Inactive => "INACTIVE", + LaunchPlanState::Active => "ACTIVE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "INACTIVE" => Some(Self::Inactive), + "ACTIVE" => Some(Self::Active), + _ => None, + } + } +} +/// Defines a set of overridable task resource attributes set during task registration. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskResourceSpec { + #[prost(string, tag="1")] + pub cpu: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub gpu: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub memory: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub storage: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub ephemeral_storage: ::prost::alloc::string::String, +} +/// Defines task resource defaults and limits that will be applied at task registration. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskResourceAttributes { + #[prost(message, optional, tag="1")] + pub defaults: ::core::option::Option, + #[prost(message, optional, tag="2")] + pub limits: ::core::option::Option, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ClusterResourceAttributes { + /// Custom resource attributes which will be applied in cluster resource creation (e.g. quotas). + /// Map keys are the *case-sensitive* names of variables in templatized resource files. + /// Map values should be the custom values which get substituted during resource creation. + #[prost(map="string, string", tag="1")] + pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionQueueAttributes { + /// Tags used for assigning execution queues for tasks defined within this project. + #[prost(string, repeated, tag="1")] + pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecutionClusterLabel { + /// Label value to determine where the execution will be run + #[prost(string, tag="1")] + pub value: ::prost::alloc::string::String, +} +/// This MatchableAttribute configures selecting alternate plugin implementations for a given task type. +/// In addition to an override implementation a selection of fallbacks can be provided or other modes +/// for handling cases where the desired plugin override is not enabled in a given Flyte deployment. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PluginOverride { + /// A predefined yet extensible Task type identifier. + #[prost(string, tag="1")] + pub task_type: ::prost::alloc::string::String, + /// A set of plugin ids which should handle tasks of this type instead of the default registered plugin. The list will be tried in order until a plugin is found with that id. + #[prost(string, repeated, tag="2")] + pub plugin_id: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// Defines the behavior when no plugin from the plugin_id list is not found. + #[prost(enumeration="plugin_override::MissingPluginBehavior", tag="4")] + pub missing_plugin_behavior: i32, +} +/// Nested message and enum types in `PluginOverride`. +pub mod plugin_override { + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum MissingPluginBehavior { + /// By default, if this plugin is not enabled for a Flyte deployment then execution will fail. + Fail = 0, + /// Uses the system-configured default implementation. + UseDefault = 1, + } + impl MissingPluginBehavior { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + MissingPluginBehavior::Fail => "FAIL", + MissingPluginBehavior::UseDefault => "USE_DEFAULT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FAIL" => Some(Self::Fail), + "USE_DEFAULT" => Some(Self::UseDefault), + _ => None, + } + } + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PluginOverrides { + #[prost(message, repeated, tag="1")] + pub overrides: ::prost::alloc::vec::Vec, +} +/// Adds defaults for customizable workflow-execution specifications and overrides. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowExecutionConfig { + /// Can be used to control the number of parallel nodes to run within the workflow. This is useful to achieve fairness. + #[prost(int32, tag="1")] + pub max_parallelism: i32, + /// Indicates security context permissions for executions triggered with this matchable attribute. + #[prost(message, optional, tag="2")] + pub security_context: ::core::option::Option, + /// Encapsulates user settings pertaining to offloaded data (i.e. Blobs, Schema, query data, etc.). + #[prost(message, optional, tag="3")] + pub raw_output_data_config: ::core::option::Option, + /// Custom labels to be applied to a triggered execution resource. + #[prost(message, optional, tag="4")] + pub labels: ::core::option::Option, + /// Custom annotations to be applied to a triggered execution resource. + #[prost(message, optional, tag="5")] + pub annotations: ::core::option::Option, + /// Allows for the interruptible flag of a workflow to be overwritten for a single execution. + /// Omitting this field uses the workflow's value as a default. + /// As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper + /// around the bool field. + #[prost(message, optional, tag="6")] + pub interruptible: ::core::option::Option, + /// Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + /// If enabled, all calculations are performed even if cached results would be available, overwriting the stored + /// data once execution finishes successfully. + #[prost(bool, tag="7")] + pub overwrite_cache: bool, +} +/// Generic container for encapsulating all types of the above attributes messages. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MatchingAttributes { + #[prost(oneof="matching_attributes::Target", tags="1, 2, 3, 4, 5, 6, 7, 8")] + pub target: ::core::option::Option, +} +/// Nested message and enum types in `MatchingAttributes`. +pub mod matching_attributes { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Target { + #[prost(message, tag="1")] + TaskResourceAttributes(super::TaskResourceAttributes), + #[prost(message, tag="2")] + ClusterResourceAttributes(super::ClusterResourceAttributes), + #[prost(message, tag="3")] + ExecutionQueueAttributes(super::ExecutionQueueAttributes), + #[prost(message, tag="4")] + ExecutionClusterLabel(super::ExecutionClusterLabel), + #[prost(message, tag="5")] + QualityOfService(super::super::core::QualityOfService), + #[prost(message, tag="6")] + PluginOverrides(super::PluginOverrides), + #[prost(message, tag="7")] + WorkflowExecutionConfig(super::WorkflowExecutionConfig), + #[prost(message, tag="8")] + ClusterAssignment(super::ClusterAssignment), + } +} +/// Represents a custom set of attributes applied for either a domain; a domain and project; or +/// domain, project and workflow name. +/// These are used to override system level defaults for kubernetes cluster resource management, +/// default execution values, and more all across different levels of specificity. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MatchableAttributesConfiguration { + #[prost(message, optional, tag="1")] + pub attributes: ::core::option::Option, + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub project: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub workflow: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub launch_plan: ::prost::alloc::string::String, +} +/// Request all matching resource attributes for a resource type. +/// See :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ListMatchableAttributesRequest { + /// +required + #[prost(enumeration="MatchableResource", tag="1")] + pub resource_type: i32, +} +/// Response for a request for all matching resource attributes for a resource type. +/// See :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ListMatchableAttributesResponse { + #[prost(message, repeated, tag="1")] + pub configurations: ::prost::alloc::vec::Vec, +} +/// Defines a resource that can be configured by customizable Project-, ProjectDomain- or WorkflowAttributes +/// based on matching tags. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum MatchableResource { + /// Applies to customizable task resource requests and limits. + TaskResource = 0, + /// Applies to configuring templated kubernetes cluster resources. + ClusterResource = 1, + /// Configures task and dynamic task execution queue assignment. + ExecutionQueue = 2, + /// Configures the K8s cluster label to be used for execution to be run + ExecutionClusterLabel = 3, + /// Configures default quality of service when undefined in an execution spec. + QualityOfServiceSpecification = 4, + /// Selects configurable plugin implementation behavior for a given task type. + PluginOverride = 5, + /// Adds defaults for customizable workflow-execution specifications and overrides. + WorkflowExecutionConfig = 6, + /// Controls how to select an available cluster on which this execution should run. + ClusterAssignment = 7, +} +impl MatchableResource { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + MatchableResource::TaskResource => "TASK_RESOURCE", + MatchableResource::ClusterResource => "CLUSTER_RESOURCE", + MatchableResource::ExecutionQueue => "EXECUTION_QUEUE", + MatchableResource::ExecutionClusterLabel => "EXECUTION_CLUSTER_LABEL", + MatchableResource::QualityOfServiceSpecification => "QUALITY_OF_SERVICE_SPECIFICATION", + MatchableResource::PluginOverride => "PLUGIN_OVERRIDE", + MatchableResource::WorkflowExecutionConfig => "WORKFLOW_EXECUTION_CONFIG", + MatchableResource::ClusterAssignment => "CLUSTER_ASSIGNMENT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "TASK_RESOURCE" => Some(Self::TaskResource), + "CLUSTER_RESOURCE" => Some(Self::ClusterResource), + "EXECUTION_QUEUE" => Some(Self::ExecutionQueue), + "EXECUTION_CLUSTER_LABEL" => Some(Self::ExecutionClusterLabel), + "QUALITY_OF_SERVICE_SPECIFICATION" => Some(Self::QualityOfServiceSpecification), + "PLUGIN_OVERRIDE" => Some(Self::PluginOverride), + "WORKFLOW_EXECUTION_CONFIG" => Some(Self::WorkflowExecutionConfig), + "CLUSTER_ASSIGNMENT" => Some(Self::ClusterAssignment), + _ => None, + } + } +} +/// A message used to fetch a single node execution entity. +/// See :ref:`ref_flyteidl.admin.NodeExecution` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NodeExecutionGetRequest { + /// Uniquely identifies an individual node execution. + /// +required + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// Represents a request structure to retrieve a list of node execution entities. +/// See :ref:`ref_flyteidl.admin.NodeExecution` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NodeExecutionListRequest { + /// Indicates the workflow execution to filter by. + /// +required + #[prost(message, optional, tag="1")] + pub workflow_execution_id: ::core::option::Option, + /// Indicates the number of resources to be returned. + /// +required + #[prost(uint32, tag="2")] + pub limit: u32, + // In the case of multiple pages of results, the, server-provided token can be used to fetch the next page + // in a query. + // +optional + + #[prost(string, tag="3")] + pub token: ::prost::alloc::string::String, + /// Indicates a list of filters passed as string. + /// More info on constructing filters : + /// +optional + #[prost(string, tag="4")] + pub filters: ::prost::alloc::string::String, + /// Sort ordering. + /// +optional + #[prost(message, optional, tag="5")] + pub sort_by: ::core::option::Option, + /// Unique identifier of the parent node in the execution + /// +optional + #[prost(string, tag="6")] + pub unique_parent_id: ::prost::alloc::string::String, +} +/// Represents a request structure to retrieve a list of node execution entities launched by a specific task. +/// This can arise when a task yields a subworkflow. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NodeExecutionForTaskListRequest { + /// Indicates the node execution to filter by. + /// +required + #[prost(message, optional, tag="1")] + pub task_execution_id: ::core::option::Option, + /// Indicates the number of resources to be returned. + /// +required + #[prost(uint32, tag="2")] + pub limit: u32, + /// In the case of multiple pages of results, the, server-provided token can be used to fetch the next page + /// in a query. + /// +optional + #[prost(string, tag="3")] + pub token: ::prost::alloc::string::String, + /// Indicates a list of filters passed as string. + /// More info on constructing filters : + /// +optional + #[prost(string, tag="4")] + pub filters: ::prost::alloc::string::String, + /// Sort ordering. + /// +optional + #[prost(message, optional, tag="5")] + pub sort_by: ::core::option::Option, +} +/// Encapsulates all details for a single node execution entity. +/// A node represents a component in the overall workflow graph. A node launch a task, multiple tasks, an entire nested +/// sub-workflow, or even a separate child-workflow execution. +/// The same task can be called repeatedly in a single workflow but each node is unique. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NodeExecution { + /// Uniquely identifies an individual node execution. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// Path to remote data store where input blob is stored. + #[prost(string, tag="2")] + pub input_uri: ::prost::alloc::string::String, + /// Computed results associated with this node execution. + #[prost(message, optional, tag="3")] + pub closure: ::core::option::Option, + /// Metadata for Node Execution + #[prost(message, optional, tag="4")] + pub metadata: ::core::option::Option, +} +/// Represents additional attributes related to a Node Execution +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NodeExecutionMetaData { + /// Node executions are grouped depending on retries of the parent + /// Retry group is unique within the context of a parent node. + #[prost(string, tag="1")] + pub retry_group: ::prost::alloc::string::String, + /// Boolean flag indicating if the node has child nodes under it + /// This can be true when a node contains a dynamic workflow which then produces + /// child nodes. + #[prost(bool, tag="2")] + pub is_parent_node: bool, + /// Node id of the node in the original workflow + /// This maps to value of WorkflowTemplate.nodes\[X\].id + #[prost(string, tag="3")] + pub spec_node_id: ::prost::alloc::string::String, + /// Boolean flag indicating if the node has contains a dynamic workflow which then produces child nodes. + /// This is to distinguish between subworkflows and dynamic workflows which can both have is_parent_node as true. + #[prost(bool, tag="4")] + pub is_dynamic: bool, +} +/// Request structure to retrieve a list of node execution entities. +/// See :ref:`ref_flyteidl.admin.NodeExecution` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NodeExecutionList { + #[prost(message, repeated, tag="1")] + pub node_executions: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// Container for node execution details and results. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NodeExecutionClosure { + /// The last recorded phase for this node execution. + #[prost(enumeration="super::core::node_execution::Phase", tag="3")] + pub phase: i32, + /// Time at which the node execution began running. + #[prost(message, optional, tag="4")] + pub started_at: ::core::option::Option<::prost_types::Timestamp>, + /// The amount of time the node execution spent running. + #[prost(message, optional, tag="5")] + pub duration: ::core::option::Option<::prost_types::Duration>, + /// Time at which the node execution was created. + #[prost(message, optional, tag="6")] + pub created_at: ::core::option::Option<::prost_types::Timestamp>, + /// Time at which the node execution was last updated. + #[prost(message, optional, tag="7")] + pub updated_at: ::core::option::Option<::prost_types::Timestamp>, + /// String location uniquely identifying where the deck HTML file is. + /// NativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar) + #[prost(string, tag="11")] + pub deck_uri: ::prost::alloc::string::String, + /// dynamic_job_spec_uri is the location of the DynamicJobSpec proto message for a DynamicWorkflow. This is required + /// to correctly recover partially completed executions where the subworkflow has already been compiled. + #[prost(string, tag="12")] + pub dynamic_job_spec_uri: ::prost::alloc::string::String, + /// Only a node in a terminal state will have a non-empty output_result. + #[prost(oneof="node_execution_closure::OutputResult", tags="1, 2, 10")] + pub output_result: ::core::option::Option, + /// Store metadata for what the node launched. + /// for ex: if this is a workflow node, we store information for the launched workflow. + #[prost(oneof="node_execution_closure::TargetMetadata", tags="8, 9")] + pub target_metadata: ::core::option::Option, +} +/// Nested message and enum types in `NodeExecutionClosure`. +pub mod node_execution_closure { + /// Only a node in a terminal state will have a non-empty output_result. + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum OutputResult { + /// Links to a remotely stored, serialized core.LiteralMap of node execution outputs. + /// DEPRECATED. Use GetNodeExecutionData to fetch output data instead. + #[prost(string, tag="1")] + OutputUri(::prost::alloc::string::String), + /// Error information for the Node + #[prost(message, tag="2")] + Error(super::super::core::ExecutionError), + /// Raw output data produced by this node execution. + /// DEPRECATED. Use GetNodeExecutionData to fetch output data instead. + #[prost(message, tag="10")] + OutputData(super::super::core::LiteralMap), + } + /// Store metadata for what the node launched. + /// for ex: if this is a workflow node, we store information for the launched workflow. + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum TargetMetadata { + #[prost(message, tag="8")] + WorkflowNodeMetadata(super::WorkflowNodeMetadata), + #[prost(message, tag="9")] + TaskNodeMetadata(super::TaskNodeMetadata), + } +} +/// Metadata for a WorkflowNode +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowNodeMetadata { + /// The identifier for a workflow execution launched by a node. + #[prost(message, optional, tag="1")] + pub execution_id: ::core::option::Option, +} +/// Metadata for the case in which the node is a TaskNode +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskNodeMetadata { + /// Captures the status of caching for this execution. + #[prost(enumeration="super::core::CatalogCacheStatus", tag="1")] + pub cache_status: i32, + /// This structure carries the catalog artifact information + #[prost(message, optional, tag="2")] + pub catalog_key: ::core::option::Option, + /// The latest checkpoint location + #[prost(string, tag="4")] + pub checkpoint_uri: ::prost::alloc::string::String, +} +/// For dynamic workflow nodes we capture information about the dynamic workflow definition that gets generated. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DynamicWorkflowNodeMetadata { + /// id represents the unique identifier of the workflow. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// Represents the compiled representation of the embedded dynamic workflow. + #[prost(message, optional, tag="2")] + pub compiled_workflow: ::core::option::Option, + /// dynamic_job_spec_uri is the location of the DynamicJobSpec proto message for this DynamicWorkflow. This is + /// required to correctly recover partially completed executions where the subworkflow has already been compiled. + #[prost(string, tag="3")] + pub dynamic_job_spec_uri: ::prost::alloc::string::String, +} +/// Request structure to fetch inputs and output for a node execution. +/// By default, these are not returned in :ref:`ref_flyteidl.admin.NodeExecutionGetRequest` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NodeExecutionGetDataRequest { + /// The identifier of the node execution for which to fetch inputs and outputs. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// Response structure for NodeExecutionGetDataRequest which contains inputs and outputs for a node execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NodeExecutionGetDataResponse { + /// Signed url to fetch a core.LiteralMap of node execution inputs. + /// Deprecated: Please use full_inputs instead. + #[deprecated] + #[prost(message, optional, tag="1")] + pub inputs: ::core::option::Option, + /// Signed url to fetch a core.LiteralMap of node execution outputs. + /// Deprecated: Please use full_outputs instead. + #[deprecated] + #[prost(message, optional, tag="2")] + pub outputs: ::core::option::Option, + /// Full_inputs will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="3")] + pub full_inputs: ::core::option::Option, + /// Full_outputs will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="4")] + pub full_outputs: ::core::option::Option, + /// Optional Workflow closure for a dynamically generated workflow, in the case this node yields a dynamic workflow we return its structure here. + #[prost(message, optional, tag="16")] + pub dynamic_workflow: ::core::option::Option, + #[prost(message, optional, tag="17")] + pub flyte_urls: ::core::option::Option, +} +/// Represents the Email object that is sent to a publisher/subscriber +/// to forward the notification. +/// Note: This is internal to Admin and doesn't need to be exposed to other components. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EmailMessage { + /// The list of email addresses to receive an email with the content populated in the other fields. + /// Currently, each email recipient will receive its own email. + /// This populates the TO field. + #[prost(string, repeated, tag="1")] + pub recipients_email: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// The email of the sender. + /// This populates the FROM field. + #[prost(string, tag="2")] + pub sender_email: ::prost::alloc::string::String, + /// The content of the subject line. + /// This populates the SUBJECT field. + #[prost(string, tag="3")] + pub subject_line: ::prost::alloc::string::String, + /// The content of the email body. + /// This populates the BODY field. + #[prost(string, tag="4")] + pub body: ::prost::alloc::string::String, +} +/// Namespace within a project commonly used to differentiate between different service instances. +/// e.g. "production", "development", etc. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Domain { + /// Globally unique domain name. + #[prost(string, tag="1")] + pub id: ::prost::alloc::string::String, + /// Display name. + #[prost(string, tag="2")] + pub name: ::prost::alloc::string::String, +} +/// Top-level namespace used to classify different entities like workflows and executions. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Project { + /// Globally unique project name. + #[prost(string, tag="1")] + pub id: ::prost::alloc::string::String, + /// Display name. + #[prost(string, tag="2")] + pub name: ::prost::alloc::string::String, + #[prost(message, repeated, tag="3")] + pub domains: ::prost::alloc::vec::Vec, + #[prost(string, tag="4")] + pub description: ::prost::alloc::string::String, + /// Leverage Labels from flyteidl.admin.common.proto to + /// tag projects with ownership information. + #[prost(message, optional, tag="5")] + pub labels: ::core::option::Option, + #[prost(enumeration="project::ProjectState", tag="6")] + pub state: i32, +} +/// Nested message and enum types in `Project`. +pub mod project { + /// The state of the project is used to control its visibility in the UI and validity. + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum ProjectState { + /// By default, all projects are considered active. + Active = 0, + /// Archived projects are no longer visible in the UI and no longer valid. + Archived = 1, + /// System generated projects that aren't explicitly created or managed by a user. + SystemGenerated = 2, + } + impl ProjectState { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + ProjectState::Active => "ACTIVE", + ProjectState::Archived => "ARCHIVED", + ProjectState::SystemGenerated => "SYSTEM_GENERATED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ACTIVE" => Some(Self::Active), + "ARCHIVED" => Some(Self::Archived), + "SYSTEM_GENERATED" => Some(Self::SystemGenerated), + _ => None, + } + } + } +} +/// Represents a list of projects. +/// See :ref:`ref_flyteidl.admin.Project` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Projects { + #[prost(message, repeated, tag="1")] + pub projects: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// Request to retrieve a list of projects matching specified filters. +/// See :ref:`ref_flyteidl.admin.Project` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectListRequest { + /// Indicates the number of projects to be returned. + /// +required + #[prost(uint32, tag="1")] + pub limit: u32, + /// In the case of multiple pages of results, this server-provided token can be used to fetch the next page + /// in a query. + /// +optional + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, + /// Indicates a list of filters passed as string. + /// More info on constructing filters : + /// +optional + #[prost(string, tag="3")] + pub filters: ::prost::alloc::string::String, + /// Sort ordering. + /// +optional + #[prost(message, optional, tag="4")] + pub sort_by: ::core::option::Option, +} +/// Adds a new user-project within the Flyte deployment. +/// See :ref:`ref_flyteidl.admin.Project` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectRegisterRequest { + /// +required + #[prost(message, optional, tag="1")] + pub project: ::core::option::Option, +} +/// Purposefully empty, may be updated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectRegisterResponse { +} +/// Purposefully empty, may be updated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectUpdateResponse { +} +/// Defines a set of custom matching attributes at the project level. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectAttributes { + /// Unique project id for which this set of attributes will be applied. + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + #[prost(message, optional, tag="2")] + pub matching_attributes: ::core::option::Option, +} +/// Sets custom attributes for a project +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectAttributesUpdateRequest { + /// +required + #[prost(message, optional, tag="1")] + pub attributes: ::core::option::Option, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectAttributesUpdateResponse { +} +/// Request to get an individual project level attribute override. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectAttributesGetRequest { + /// Unique project id which this set of attributes references. + /// +required + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Which type of matchable attributes to return. + /// +required + #[prost(enumeration="MatchableResource", tag="2")] + pub resource_type: i32, +} +/// Response to get an individual project level attribute override. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectAttributesGetResponse { + #[prost(message, optional, tag="1")] + pub attributes: ::core::option::Option, +} +/// Request to delete a set matchable project level attribute override. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectAttributesDeleteRequest { + /// Unique project id which this set of attributes references. + /// +required + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Which type of matchable attributes to delete. + /// +required + #[prost(enumeration="MatchableResource", tag="2")] + pub resource_type: i32, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectAttributesDeleteResponse { +} +/// Defines a set of custom matching attributes which defines resource defaults for a project and domain. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectDomainAttributes { + /// Unique project id for which this set of attributes will be applied. + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Unique domain id for which this set of attributes will be applied. + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + #[prost(message, optional, tag="3")] + pub matching_attributes: ::core::option::Option, +} +/// Sets custom attributes for a project-domain combination. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectDomainAttributesUpdateRequest { + /// +required + #[prost(message, optional, tag="1")] + pub attributes: ::core::option::Option, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectDomainAttributesUpdateResponse { +} +/// Request to get an individual project domain attribute override. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectDomainAttributesGetRequest { + /// Unique project id which this set of attributes references. + /// +required + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Unique domain id which this set of attributes references. + /// +required + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// Which type of matchable attributes to return. + /// +required + #[prost(enumeration="MatchableResource", tag="3")] + pub resource_type: i32, +} +/// Response to get an individual project domain attribute override. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectDomainAttributesGetResponse { + #[prost(message, optional, tag="1")] + pub attributes: ::core::option::Option, +} +/// Request to delete a set matchable project domain attribute override. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectDomainAttributesDeleteRequest { + /// Unique project id which this set of attributes references. + /// +required + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Unique domain id which this set of attributes references. + /// +required + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// Which type of matchable attributes to delete. + /// +required + #[prost(enumeration="MatchableResource", tag="3")] + pub resource_type: i32, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ProjectDomainAttributesDeleteResponse { +} +/// SignalGetOrCreateRequest represents a request structure to retrive or create a signal. +/// See :ref:`ref_flyteidl.admin.Signal` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SignalGetOrCreateRequest { + /// A unique identifier for the requested signal. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// A type denoting the required value type for this signal. + #[prost(message, optional, tag="2")] + pub r#type: ::core::option::Option, +} +/// SignalListRequest represents a request structure to retrieve a collection of signals. +/// See :ref:`ref_flyteidl.admin.Signal` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SignalListRequest { + /// Indicates the workflow execution to filter by. + /// +required + #[prost(message, optional, tag="1")] + pub workflow_execution_id: ::core::option::Option, + /// Indicates the number of resources to be returned. + /// +required + #[prost(uint32, tag="2")] + pub limit: u32, + /// In the case of multiple pages of results, the, server-provided token can be used to fetch the next page + /// in a query. + /// +optional + #[prost(string, tag="3")] + pub token: ::prost::alloc::string::String, + /// Indicates a list of filters passed as string. + /// +optional + #[prost(string, tag="4")] + pub filters: ::prost::alloc::string::String, + /// Sort ordering. + /// +optional + #[prost(message, optional, tag="5")] + pub sort_by: ::core::option::Option, +} +/// SignalList represents collection of signals along with the token of the last result. +/// See :ref:`ref_flyteidl.admin.Signal` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SignalList { + /// A list of signals matching the input filters. + #[prost(message, repeated, tag="1")] + pub signals: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// SignalSetRequest represents a request structure to set the value on a signal. Setting a signal +/// effetively satisfies the signal condition within a Flyte workflow. +/// See :ref:`ref_flyteidl.admin.Signal` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SignalSetRequest { + /// A unique identifier for the requested signal. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// The value of this signal, must match the defining signal type. + #[prost(message, optional, tag="2")] + pub value: ::core::option::Option, +} +/// SignalSetResponse represents a response structure if signal setting succeeds. +/// +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SignalSetResponse { +} +/// Signal encapsulates a unique identifier, associated metadata, and a value for a single Flyte +/// signal. Signals may exist either without a set value (representing a signal request) or with a +/// populated value (indicating the signal has been given). +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Signal { + /// A unique identifier for the requested signal. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// A type denoting the required value type for this signal. + #[prost(message, optional, tag="2")] + pub r#type: ::core::option::Option, + /// The value of the signal. This is only available if the signal has been "set" and must match + /// the defined the type. + #[prost(message, optional, tag="3")] + pub value: ::core::option::Option, +} +/// Represents a request structure to create a revision of a task. +/// See :ref:`ref_flyteidl.admin.Task` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskCreateRequest { + /// id represents the unique identifier of the task. + /// +required + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// Represents the specification for task. + /// +required + #[prost(message, optional, tag="2")] + pub spec: ::core::option::Option, +} +/// Represents a response structure if task creation succeeds. +/// +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskCreateResponse { +} +/// Flyte workflows are composed of many ordered tasks. That is small, reusable, self-contained logical blocks +/// arranged to process workflow inputs and produce a deterministic set of outputs. +/// Tasks can come in many varieties tuned for specialized behavior. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Task { + /// id represents the unique identifier of the task. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// closure encapsulates all the fields that maps to a compiled version of the task. + #[prost(message, optional, tag="2")] + pub closure: ::core::option::Option, + /// One-liner overview of the entity. + #[prost(string, tag="3")] + pub short_description: ::prost::alloc::string::String, +} +/// Represents a list of tasks returned from the admin. +/// See :ref:`ref_flyteidl.admin.Task` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskList { + /// A list of tasks returned based on the request. + #[prost(message, repeated, tag="1")] + pub tasks: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// Represents a structure that encapsulates the user-configured specification of the task. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskSpec { + /// Template of the task that encapsulates all the metadata of the task. + #[prost(message, optional, tag="1")] + pub template: ::core::option::Option, + /// Represents the specification for description entity. + #[prost(message, optional, tag="2")] + pub description: ::core::option::Option, +} +/// Compute task attributes which include values derived from the TaskSpec, as well as plugin-specific data +/// and task metadata. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskClosure { + /// Represents the compiled representation of the task from the specification provided. + #[prost(message, optional, tag="1")] + pub compiled_task: ::core::option::Option, + /// Time at which the task was created. + #[prost(message, optional, tag="2")] + pub created_at: ::core::option::Option<::prost_types::Timestamp>, +} +/// A message used to fetch a single task execution entity. +/// See :ref:`ref_flyteidl.admin.TaskExecution` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskExecutionGetRequest { + /// Unique identifier for the task execution. + /// +required + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// Represents a request structure to retrieve a list of task execution entities yielded by a specific node execution. +/// See :ref:`ref_flyteidl.admin.TaskExecution` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskExecutionListRequest { + /// Indicates the node execution to filter by. + /// +required + #[prost(message, optional, tag="1")] + pub node_execution_id: ::core::option::Option, + /// Indicates the number of resources to be returned. + /// +required + #[prost(uint32, tag="2")] + pub limit: u32, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. + /// +optional + #[prost(string, tag="3")] + pub token: ::prost::alloc::string::String, + /// Indicates a list of filters passed as string. + /// More info on constructing filters : + /// +optional + #[prost(string, tag="4")] + pub filters: ::prost::alloc::string::String, + /// Sort ordering for returned list. + /// +optional + #[prost(message, optional, tag="5")] + pub sort_by: ::core::option::Option, +} +/// Encapsulates all details for a single task execution entity. +/// A task execution represents an instantiated task, including all inputs and additional +/// metadata as well as computed results included state, outputs, and duration-based attributes. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskExecution { + /// Unique identifier for the task execution. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// Path to remote data store where input blob is stored. + #[prost(string, tag="2")] + pub input_uri: ::prost::alloc::string::String, + /// Task execution details and results. + #[prost(message, optional, tag="3")] + pub closure: ::core::option::Option, + /// Whether this task spawned nodes. + #[prost(bool, tag="4")] + pub is_parent: bool, +} +/// Response structure for a query to list of task execution entities. +/// See :ref:`ref_flyteidl.admin.TaskExecution` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskExecutionList { + #[prost(message, repeated, tag="1")] + pub task_executions: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// Container for task execution details and results. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskExecutionClosure { + /// The last recorded phase for this task execution. + #[prost(enumeration="super::core::task_execution::Phase", tag="3")] + pub phase: i32, + /// Detailed log information output by the task execution. + #[prost(message, repeated, tag="4")] + pub logs: ::prost::alloc::vec::Vec, + /// Time at which the task execution began running. + #[prost(message, optional, tag="5")] + pub started_at: ::core::option::Option<::prost_types::Timestamp>, + /// The amount of time the task execution spent running. + #[prost(message, optional, tag="6")] + pub duration: ::core::option::Option<::prost_types::Duration>, + /// Time at which the task execution was created. + #[prost(message, optional, tag="7")] + pub created_at: ::core::option::Option<::prost_types::Timestamp>, + /// Time at which the task execution was last updated. + #[prost(message, optional, tag="8")] + pub updated_at: ::core::option::Option<::prost_types::Timestamp>, + /// Custom data specific to the task plugin. + #[prost(message, optional, tag="9")] + pub custom_info: ::core::option::Option<::prost_types::Struct>, + /// If there is an explanation for the most recent phase transition, the reason will capture it. + #[prost(string, tag="10")] + pub reason: ::prost::alloc::string::String, + /// A predefined yet extensible Task type identifier. + #[prost(string, tag="11")] + pub task_type: ::prost::alloc::string::String, + /// Metadata around how a task was executed. + #[prost(message, optional, tag="16")] + pub metadata: ::core::option::Option, + /// The event version is used to indicate versioned changes in how data is maintained using this + /// proto message. For example, event_verison > 0 means that maps tasks logs use the + /// TaskExecutionMetadata ExternalResourceInfo fields for each subtask rather than the TaskLog + /// in this message. + #[prost(int32, tag="17")] + pub event_version: i32, + /// A time-series of the phase transition or update explanations. This, when compared to storing a singular reason + /// as previously done, is much more valuable in visualizing and understanding historical evaluations. + #[prost(message, repeated, tag="18")] + pub reasons: ::prost::alloc::vec::Vec, + #[prost(oneof="task_execution_closure::OutputResult", tags="1, 2, 12")] + pub output_result: ::core::option::Option, +} +/// Nested message and enum types in `TaskExecutionClosure`. +pub mod task_execution_closure { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum OutputResult { + /// Path to remote data store where output blob is stored if the execution succeeded (and produced outputs). + /// DEPRECATED. Use GetTaskExecutionData to fetch output data instead. + #[prost(string, tag="1")] + OutputUri(::prost::alloc::string::String), + /// Error information for the task execution. Populated if the execution failed. + #[prost(message, tag="2")] + Error(super::super::core::ExecutionError), + /// Raw output data produced by this task execution. + /// DEPRECATED. Use GetTaskExecutionData to fetch output data instead. + #[prost(message, tag="12")] + OutputData(super::super::core::LiteralMap), + } +} +/// Reason is a single message annotated with a timestamp to indicate the instant the reason occurred. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Reason { + /// occurred_at is the timestamp indicating the instant that this reason happened. + #[prost(message, optional, tag="1")] + pub occurred_at: ::core::option::Option<::prost_types::Timestamp>, + /// message is the explanation for the most recent phase transition or status update. + #[prost(string, tag="2")] + pub message: ::prost::alloc::string::String, +} +/// Request structure to fetch inputs and output for a task execution. +/// By default this data is not returned inline in :ref:`ref_flyteidl.admin.TaskExecutionGetRequest` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskExecutionGetDataRequest { + /// The identifier of the task execution for which to fetch inputs and outputs. + /// +required + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// Response structure for TaskExecutionGetDataRequest which contains inputs and outputs for a task execution. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskExecutionGetDataResponse { + /// Signed url to fetch a core.LiteralMap of task execution inputs. + /// Deprecated: Please use full_inputs instead. + #[deprecated] + #[prost(message, optional, tag="1")] + pub inputs: ::core::option::Option, + /// Signed url to fetch a core.LiteralMap of task execution outputs. + /// Deprecated: Please use full_outputs instead. + #[deprecated] + #[prost(message, optional, tag="2")] + pub outputs: ::core::option::Option, + /// Full_inputs will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="3")] + pub full_inputs: ::core::option::Option, + /// Full_outputs will only be populated if they are under a configured size threshold. + #[prost(message, optional, tag="4")] + pub full_outputs: ::core::option::Option, + /// flyte tiny url to fetch a core.LiteralMap of task execution's IO + /// Deck will be empty for task + #[prost(message, optional, tag="5")] + pub flyte_urls: ::core::option::Option, +} +/// Response for the GetVersion API +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetVersionResponse { + /// The control plane version information. FlyteAdmin and related components + /// form the control plane of Flyte + #[prost(message, optional, tag="1")] + pub control_plane_version: ::core::option::Option, +} +/// Provides Version information for a component +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Version { + /// Specifies the GIT sha of the build + #[prost(string, tag="1")] + pub build: ::prost::alloc::string::String, + /// Version for the build, should follow a semver + #[prost(string, tag="2")] + pub version: ::prost::alloc::string::String, + /// Build timestamp + #[prost(string, tag="3")] + pub build_time: ::prost::alloc::string::String, +} +/// Empty request for GetVersion +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetVersionRequest { +} +/// Represents a request structure to create a revision of a workflow. +/// See :ref:`ref_flyteidl.admin.Workflow` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowCreateRequest { + /// id represents the unique identifier of the workflow. + /// +required + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// Represents the specification for workflow. + /// +required + #[prost(message, optional, tag="2")] + pub spec: ::core::option::Option, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowCreateResponse { +} +/// Represents the workflow structure stored in the Admin +/// A workflow is created by ordering tasks and associating outputs to inputs +/// in order to produce a directed-acyclic execution graph. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Workflow { + /// id represents the unique identifier of the workflow. + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// closure encapsulates all the fields that maps to a compiled version of the workflow. + #[prost(message, optional, tag="2")] + pub closure: ::core::option::Option, + /// One-liner overview of the entity. + #[prost(string, tag="3")] + pub short_description: ::prost::alloc::string::String, +} +/// Represents a list of workflows returned from the admin. +/// See :ref:`ref_flyteidl.admin.Workflow` for more details +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowList { + /// A list of workflows returned based on the request. + #[prost(message, repeated, tag="1")] + pub workflows: ::prost::alloc::vec::Vec, + /// In the case of multiple pages of results, the server-provided token can be used to fetch the next page + /// in a query. If there are no more results, this value will be empty. + #[prost(string, tag="2")] + pub token: ::prost::alloc::string::String, +} +/// Represents a structure that encapsulates the specification of the workflow. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowSpec { + /// Template of the task that encapsulates all the metadata of the workflow. + #[prost(message, optional, tag="1")] + pub template: ::core::option::Option, + /// Workflows that are embedded into other workflows need to be passed alongside the parent workflow to the + /// propeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out + /// to Admin to see other registered workflows). In fact, subworkflows do not even need to be registered. + #[prost(message, repeated, tag="2")] + pub sub_workflows: ::prost::alloc::vec::Vec, + /// Represents the specification for description entity. + #[prost(message, optional, tag="3")] + pub description: ::core::option::Option, +} +/// A container holding the compiled workflow produced from the WorkflowSpec and additional metadata. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowClosure { + /// Represents the compiled representation of the workflow from the specification provided. + #[prost(message, optional, tag="1")] + pub compiled_workflow: ::core::option::Option, + /// Time at which the workflow was created. + #[prost(message, optional, tag="2")] + pub created_at: ::core::option::Option<::prost_types::Timestamp>, +} +/// The workflow id is already used and the structure is different +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowErrorExistsDifferentStructure { + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// The workflow id is already used with an identical sctructure +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowErrorExistsIdenticalStructure { + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, +} +/// When a CreateWorkflowRequest failes due to matching id +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CreateWorkflowFailureReason { + #[prost(oneof="create_workflow_failure_reason::Reason", tags="1, 2")] + pub reason: ::core::option::Option, +} +/// Nested message and enum types in `CreateWorkflowFailureReason`. +pub mod create_workflow_failure_reason { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Reason { + #[prost(message, tag="1")] + ExistsDifferentStructure(super::WorkflowErrorExistsDifferentStructure), + #[prost(message, tag="2")] + ExistsIdenticalStructure(super::WorkflowErrorExistsIdenticalStructure), + } +} +/// Defines a set of custom matching attributes which defines resource defaults for a project, domain and workflow. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowAttributes { + /// Unique project id for which this set of attributes will be applied. + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Unique domain id for which this set of attributes will be applied. + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// Workflow name for which this set of attributes will be applied. + #[prost(string, tag="3")] + pub workflow: ::prost::alloc::string::String, + #[prost(message, optional, tag="4")] + pub matching_attributes: ::core::option::Option, +} +/// Sets custom attributes for a project, domain and workflow combination. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowAttributesUpdateRequest { + #[prost(message, optional, tag="1")] + pub attributes: ::core::option::Option, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowAttributesUpdateResponse { +} +/// Request to get an individual workflow attribute override. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowAttributesGetRequest { + /// Unique project id which this set of attributes references. + /// +required + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Unique domain id which this set of attributes references. + /// +required + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// Workflow name which this set of attributes references. + /// +required + #[prost(string, tag="3")] + pub workflow: ::prost::alloc::string::String, + /// Which type of matchable attributes to return. + /// +required + #[prost(enumeration="MatchableResource", tag="4")] + pub resource_type: i32, +} +/// Response to get an individual workflow attribute override. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowAttributesGetResponse { + #[prost(message, optional, tag="1")] + pub attributes: ::core::option::Option, +} +/// Request to delete a set matchable workflow attribute override. +/// For more info on matchable attributes, see :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowAttributesDeleteRequest { + /// Unique project id which this set of attributes references. + /// +required + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Unique domain id which this set of attributes references. + /// +required + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// Workflow name which this set of attributes references. + /// +required + #[prost(string, tag="3")] + pub workflow: ::prost::alloc::string::String, + /// Which type of matchable attributes to delete. + /// +required + #[prost(enumeration="MatchableResource", tag="4")] + pub resource_type: i32, +} +/// Purposefully empty, may be populated in the future. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkflowAttributesDeleteResponse { +} +// @@protoc_insertion_point(module) diff --git a/gen/pb_rust/flyteidl.service.rs b/gen/pb_rust/flyteidl.service.rs new file mode 100644 index 000000000..0fee4ddf5 --- /dev/null +++ b/gen/pb_rust/flyteidl.service.rs @@ -0,0 +1,385 @@ +// @generated +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct OAuth2MetadataRequest { +} +/// OAuth2MetadataResponse defines an RFC-Compliant response for /.well-known/oauth-authorization-server metadata +/// as defined in +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct OAuth2MetadataResponse { + /// Defines the issuer string in all JWT tokens this server issues. The issuer can be admin itself or an external + /// issuer. + #[prost(string, tag="1")] + pub issuer: ::prost::alloc::string::String, + /// URL of the authorization server's authorization endpoint \[RFC6749\]. This is REQUIRED unless no grant types are + /// supported that use the authorization endpoint. + #[prost(string, tag="2")] + pub authorization_endpoint: ::prost::alloc::string::String, + /// URL of the authorization server's token endpoint \[RFC6749\]. + #[prost(string, tag="3")] + pub token_endpoint: ::prost::alloc::string::String, + /// Array containing a list of the OAuth 2.0 response_type values that this authorization server supports. + #[prost(string, repeated, tag="4")] + pub response_types_supported: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// JSON array containing a list of the OAuth 2.0 \[RFC6749\] scope values that this authorization server supports. + #[prost(string, repeated, tag="5")] + pub scopes_supported: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// JSON array containing a list of client authentication methods supported by this token endpoint. + #[prost(string, repeated, tag="6")] + pub token_endpoint_auth_methods_supported: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// URL of the authorization server's JWK Set \[JWK\] document. The referenced document contains the signing key(s) the + /// client uses to validate signatures from the authorization server. + #[prost(string, tag="7")] + pub jwks_uri: ::prost::alloc::string::String, + /// JSON array containing a list of Proof Key for Code Exchange (PKCE) \[RFC7636\] code challenge methods supported by + /// this authorization server. + #[prost(string, repeated, tag="8")] + pub code_challenge_methods_supported: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// JSON array containing a list of the OAuth 2.0 grant type values that this authorization server supports. + #[prost(string, repeated, tag="9")] + pub grant_types_supported: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// URL of the authorization server's device authorization endpoint, as defined in Section 3.1 of \[RFC8628\] + #[prost(string, tag="10")] + pub device_authorization_endpoint: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PublicClientAuthConfigRequest { +} +/// FlyteClientResponse encapsulates public information that flyte clients (CLIs... etc.) can use to authenticate users. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PublicClientAuthConfigResponse { + /// client_id to use when initiating OAuth2 authorization requests. + #[prost(string, tag="1")] + pub client_id: ::prost::alloc::string::String, + /// redirect uri to use when initiating OAuth2 authorization requests. + #[prost(string, tag="2")] + pub redirect_uri: ::prost::alloc::string::String, + /// scopes to request when initiating OAuth2 authorization requests. + #[prost(string, repeated, tag="3")] + pub scopes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// Authorization Header to use when passing Access Tokens to the server. If not provided, the client should use the + /// default http `Authorization` header. + #[prost(string, tag="4")] + pub authorization_metadata_key: ::prost::alloc::string::String, + /// ServiceHttpEndpoint points to the http endpoint for the backend. If empty, clients can assume the endpoint used + /// to configure the gRPC connection can be used for the http one respecting the insecure flag to choose between + /// SSL or no SSL connections. + #[prost(string, tag="5")] + pub service_http_endpoint: ::prost::alloc::string::String, + /// audience to use when initiating OAuth2 authorization requests. + #[prost(string, tag="6")] + pub audience: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CreateUploadLocationResponse { + /// SignedUrl specifies the url to use to upload content to (e.g. ) + #[prost(string, tag="1")] + pub signed_url: ::prost::alloc::string::String, + /// NativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar) + #[prost(string, tag="2")] + pub native_url: ::prost::alloc::string::String, + /// ExpiresAt defines when will the signed URL expires. + #[prost(message, optional, tag="3")] + pub expires_at: ::core::option::Option<::prost_types::Timestamp>, +} +/// CreateUploadLocationRequest specified request for the CreateUploadLocation API. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CreateUploadLocationRequest { + /// Project to create the upload location for + /// +required + #[prost(string, tag="1")] + pub project: ::prost::alloc::string::String, + /// Domain to create the upload location for. + /// +required + #[prost(string, tag="2")] + pub domain: ::prost::alloc::string::String, + /// Filename specifies a desired suffix for the generated location. E.g. `file.py` or `pre/fix/file.zip`. + /// +optional. By default, the service will generate a consistent name based on the provided parameters. + #[prost(string, tag="3")] + pub filename: ::prost::alloc::string::String, + /// ExpiresIn defines a requested expiration duration for the generated url. The request will be rejected if this + /// exceeds the platform allowed max. + /// +optional. The default value comes from a global config. + #[prost(message, optional, tag="4")] + pub expires_in: ::core::option::Option<::prost_types::Duration>, + /// ContentMD5 restricts the upload location to the specific MD5 provided. The ContentMD5 will also appear in the + /// generated path. + /// +required + #[prost(bytes="vec", tag="5")] + pub content_md5: ::prost::alloc::vec::Vec, +} +/// CreateDownloadLocationRequest specified request for the CreateDownloadLocation API. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CreateDownloadLocationRequest { + /// NativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar) + #[prost(string, tag="1")] + pub native_url: ::prost::alloc::string::String, + /// ExpiresIn defines a requested expiration duration for the generated url. The request will be rejected if this + /// exceeds the platform allowed max. + /// +optional. The default value comes from a global config. + #[prost(message, optional, tag="2")] + pub expires_in: ::core::option::Option<::prost_types::Duration>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CreateDownloadLocationResponse { + /// SignedUrl specifies the url to use to download content from (e.g. ) + #[prost(string, tag="1")] + pub signed_url: ::prost::alloc::string::String, + /// ExpiresAt defines when will the signed URL expires. + #[prost(message, optional, tag="2")] + pub expires_at: ::core::option::Option<::prost_types::Timestamp>, +} +/// CreateDownloadLinkRequest defines the request parameters to create a download link (signed url) +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CreateDownloadLinkRequest { + /// ArtifactType of the artifact requested. + #[prost(enumeration="ArtifactType", tag="1")] + pub artifact_type: i32, + /// ExpiresIn defines a requested expiration duration for the generated url. The request will be rejected if this + /// exceeds the platform allowed max. + /// +optional. The default value comes from a global config. + #[prost(message, optional, tag="2")] + pub expires_in: ::core::option::Option<::prost_types::Duration>, + #[prost(oneof="create_download_link_request::Source", tags="3")] + pub source: ::core::option::Option, +} +/// Nested message and enum types in `CreateDownloadLinkRequest`. +pub mod create_download_link_request { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Source { + /// NodeId is the unique identifier for the node execution. For a task node, this will retrieve the output of the + /// most recent attempt of the task. + #[prost(message, tag="3")] + NodeExecutionId(super::super::core::NodeExecutionIdentifier), + } +} +/// CreateDownloadLinkResponse defines the response for the generated links +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CreateDownloadLinkResponse { + /// SignedUrl specifies the url to use to download content from (e.g. ) + #[deprecated] + #[prost(string, repeated, tag="1")] + pub signed_url: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// ExpiresAt defines when will the signed URL expire. + #[deprecated] + #[prost(message, optional, tag="2")] + pub expires_at: ::core::option::Option<::prost_types::Timestamp>, + /// New wrapper object containing the signed urls and expiration time + #[prost(message, optional, tag="3")] + pub pre_signed_urls: ::core::option::Option, +} +/// Wrapper object since the message is shared across this and the GetDataResponse +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PreSignedUrLs { + /// SignedUrl specifies the url to use to download content from (e.g. ) + #[prost(string, repeated, tag="1")] + pub signed_url: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// ExpiresAt defines when will the signed URL expire. + #[prost(message, optional, tag="2")] + pub expires_at: ::core::option::Option<::prost_types::Timestamp>, +} +/// General request artifact to retrieve data from a Flyte artifact url. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetDataRequest { + /// A unique identifier in the form of flyte:// that uniquely, for a given Flyte + /// backend, identifies a Flyte artifact (\[i\]nput, \[o\]utput, flyte \[d\]eck, etc.). + /// e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input) + /// flyte://v1/proj/development/execid/n2/i (for node execution input) + #[prost(string, tag="1")] + pub flyte_url: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetDataResponse { + #[prost(oneof="get_data_response::Data", tags="1, 2")] + pub data: ::core::option::Option, +} +/// Nested message and enum types in `GetDataResponse`. +pub mod get_data_response { + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Data { + /// literal map data will be returned + #[prost(message, tag="1")] + LiteralMap(super::super::core::LiteralMap), + /// Flyte deck html will be returned as a signed url users can download + #[prost(message, tag="2")] + PreSignedUrls(super::PreSignedUrLs), + } +} +/// ArtifactType +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum ArtifactType { + /// ARTIFACT_TYPE_UNDEFINED is the default, often invalid, value for the enum. + Undefined = 0, + /// ARTIFACT_TYPE_DECK refers to the deck html file optionally generated after a task, a workflow or a launch plan + /// finishes executing. + Deck = 1, +} +impl ArtifactType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + ArtifactType::Undefined => "ARTIFACT_TYPE_UNDEFINED", + ArtifactType::Deck => "ARTIFACT_TYPE_DECK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ARTIFACT_TYPE_UNDEFINED" => Some(Self::Undefined), + "ARTIFACT_TYPE_DECK" => Some(Self::Deck), + _ => None, + } + } +} +/// Represents a request structure to create task. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskCreateRequest { + /// The inputs required to start the execution. All required inputs must be + /// included in this map. If not required and not provided, defaults apply. + /// +optional + #[prost(message, optional, tag="1")] + pub inputs: ::core::option::Option, + /// Template of the task that encapsulates all the metadata of the task. + #[prost(message, optional, tag="2")] + pub template: ::core::option::Option, + /// Prefix for where task output data will be written. (e.g. s3://my-bucket/randomstring) + #[prost(string, tag="3")] + pub output_prefix: ::prost::alloc::string::String, +} +/// Represents a create response structure. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskCreateResponse { + #[prost(string, tag="1")] + pub job_id: ::prost::alloc::string::String, +} +/// A message used to fetch a job state from backend plugin server. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskGetRequest { + /// A predefined yet extensible Task type identifier. + #[prost(string, tag="1")] + pub task_type: ::prost::alloc::string::String, + /// The unique id identifying the job. + #[prost(string, tag="2")] + pub job_id: ::prost::alloc::string::String, +} +/// Response to get an individual task state. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskGetResponse { + /// The state of the execution is used to control its visibility in the UI/CLI. + #[prost(enumeration="State", tag="1")] + pub state: i32, + /// The outputs of the execution. It's typically used by sql task. Flyteplugins service will create a + /// Structured dataset pointing to the query result table. + /// +optional + #[prost(message, optional, tag="2")] + pub outputs: ::core::option::Option, +} +/// A message used to delete a task. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskDeleteRequest { + /// A predefined yet extensible Task type identifier. + #[prost(string, tag="1")] + pub task_type: ::prost::alloc::string::String, + /// The unique id identifying the job. + #[prost(string, tag="2")] + pub job_id: ::prost::alloc::string::String, +} +/// Response to delete a task. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TaskDeleteResponse { +} +/// The state of the execution is used to control its visibility in the UI/CLI. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum State { + RetryableFailure = 0, + PermanentFailure = 1, + Pending = 2, + Running = 3, + Succeeded = 4, +} +impl State { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + State::RetryableFailure => "RETRYABLE_FAILURE", + State::PermanentFailure => "PERMANENT_FAILURE", + State::Pending => "PENDING", + State::Running => "RUNNING", + State::Succeeded => "SUCCEEDED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "RETRYABLE_FAILURE" => Some(Self::RetryableFailure), + "PERMANENT_FAILURE" => Some(Self::PermanentFailure), + "PENDING" => Some(Self::Pending), + "RUNNING" => Some(Self::Running), + "SUCCEEDED" => Some(Self::Succeeded), + _ => None, + } + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct UserInfoRequest { +} +/// See the OpenID Connect spec at for more information. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct UserInfoResponse { + /// Locally unique and never reassigned identifier within the Issuer for the End-User, which is intended to be consumed + /// by the Client. + #[prost(string, tag="1")] + pub subject: ::prost::alloc::string::String, + /// Full name + #[prost(string, tag="2")] + pub name: ::prost::alloc::string::String, + /// Shorthand name by which the End-User wishes to be referred to + #[prost(string, tag="3")] + pub preferred_username: ::prost::alloc::string::String, + /// Given name(s) or first name(s) + #[prost(string, tag="4")] + pub given_name: ::prost::alloc::string::String, + /// Surname(s) or last name(s) + #[prost(string, tag="5")] + pub family_name: ::prost::alloc::string::String, + /// Preferred e-mail address + #[prost(string, tag="6")] + pub email: ::prost::alloc::string::String, + /// Profile picture URL + #[prost(string, tag="7")] + pub picture: ::prost::alloc::string::String, + /// Additional claims + #[prost(message, optional, tag="8")] + pub additional_claims: ::core::option::Option<::prost_types::Struct>, +} +// @@protoc_insertion_point(module) diff --git a/go.mod b/go.mod index 3e67d32e6..33f85552c 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/antihax/optional v1.0.0 github.com/flyteorg/flytestdlib v1.0.0 github.com/go-test/deep v1.0.7 + github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b github.com/golang/protobuf v1.4.3 github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 @@ -18,6 +19,7 @@ require ( github.com/stretchr/testify v1.7.0 golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f golang.org/x/oauth2 v0.0.0-20210126194326-f9ce19ea3013 + google.golang.org/api v0.38.0 google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506 google.golang.org/grpc v1.35.0 k8s.io/apimachinery v0.20.2 @@ -74,7 +76,6 @@ require ( golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 // indirect golang.org/x/tools v0.1.10 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect - google.golang.org/api v0.38.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.25.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 484761370..b2eab61f1 100644 --- a/go.sum +++ b/go.sum @@ -205,6 +205,7 @@ github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= diff --git a/protos/flyteidl/admin/common.proto b/protos/flyteidl/admin/common.proto index a71648916..1d6b2cd30 100644 --- a/protos/flyteidl/admin/common.proto +++ b/protos/flyteidl/admin/common.proto @@ -301,3 +301,10 @@ message RawOutputDataConfig { // e.g. s3://bucket/key or s3://bucket/ string output_location_prefix = 1; } + +// These URLs are returned as part of node and task execution data requests. +message FlyteURLs { + string inputs = 1; + string outputs = 2; + string deck = 3; +} diff --git a/protos/flyteidl/admin/node_execution.proto b/protos/flyteidl/admin/node_execution.proto index 8132598c8..fe71699a8 100644 --- a/protos/flyteidl/admin/node_execution.proto +++ b/protos/flyteidl/admin/node_execution.proto @@ -227,4 +227,7 @@ 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; + + FlyteURLs flyte_urls = 17; + } diff --git a/protos/flyteidl/admin/task_execution.proto b/protos/flyteidl/admin/task_execution.proto index 46f01e847..6706a1283 100644 --- a/protos/flyteidl/admin/task_execution.proto +++ b/protos/flyteidl/admin/task_execution.proto @@ -161,4 +161,8 @@ message TaskExecutionGetDataResponse { // Full_outputs will only be populated if they are under a configured size threshold. core.LiteralMap full_outputs = 4; + + // flyte tiny url to fetch a core.LiteralMap of task execution's IO + // Deck will be empty for task + FlyteURLs flyte_urls = 5; } diff --git a/protos/flyteidl/service/admin.proto b/protos/flyteidl/service/admin.proto index 90fcf4efd..a99a9818b 100644 --- a/protos/flyteidl/service/admin.proto +++ b/protos/flyteidl/service/admin.proto @@ -19,8 +19,6 @@ import "flyteidl/admin/task_execution.proto"; import "flyteidl/admin/version.proto"; import "flyteidl/admin/common.proto"; import "flyteidl/admin/description_entity.proto"; -import "flyteidl/core/identifier.proto"; -import "flyteidl/core/metrics.proto"; // import "protoc-gen-swagger/options/annotations.proto"; // The following defines an RPC service that is also served over HTTP via grpc-gateway. diff --git a/protos/flyteidl/service/dataproxy.proto b/protos/flyteidl/service/dataproxy.proto index 3b6bab473..1c9dc27bb 100644 --- a/protos/flyteidl/service/dataproxy.proto +++ b/protos/flyteidl/service/dataproxy.proto @@ -8,6 +8,8 @@ import "google/api/annotations.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; import "flyteidl/core/identifier.proto"; +import "flyteidl/core/literals.proto"; + message CreateUploadLocationResponse { // SignedUrl specifies the url to use to upload content to (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) @@ -95,6 +97,18 @@ message CreateDownloadLinkRequest { // CreateDownloadLinkResponse defines the response for the generated links message CreateDownloadLinkResponse { + // SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) + repeated string signed_url = 1 [deprecated = true]; + + // ExpiresAt defines when will the signed URL expire. + google.protobuf.Timestamp expires_at = 2 [deprecated = true]; + + // New wrapper object containing the signed urls and expiration time + PreSignedURLs pre_signed_urls = 3; +} + +// Wrapper object since the message is shared across this and the GetDataResponse +message PreSignedURLs { // SignedUrl specifies the url to use to download content from (e.g. https://my-bucket.s3.amazonaws.com/randomstring/suffix.tar?X-...) repeated string signed_url = 1; @@ -102,6 +116,25 @@ message CreateDownloadLinkResponse { google.protobuf.Timestamp expires_at = 2; } +// General request artifact to retrieve data from a Flyte artifact url. +message GetDataRequest { + // A unique identifier in the form of flyte:// that uniquely, for a given Flyte + // backend, identifies a Flyte artifact ([i]nput, [o]utput, flyte [d]eck, etc.). + // e.g. flyte://v1/proj/development/execid/n2/0/i (for 0th task execution attempt input) + // flyte://v1/proj/development/execid/n2/i (for node execution input) + string flyte_url = 1; +} + +message GetDataResponse { + oneof data { + // literal map data will be returned + core.LiteralMap literal_map = 1; + + // Flyte deck html will be returned as a signed url users can download + PreSignedURLs pre_signed_urls = 2; + } +} + // DataProxyService defines an RPC Service that allows access to user-data in a controlled manner. service DataProxyService { // CreateUploadLocation creates a signed url to upload artifacts to for a given project/domain. @@ -136,4 +169,11 @@ service DataProxyService { // description: "Creates a read-only http location that is accessible for tasks at runtime." // }; } + + rpc GetData (GetDataRequest) returns (GetDataResponse) { + // Takes an address like flyte://v1/proj/development/execid/n2/0/i and return the actual data + option (google.api.http) = { + get: "/api/v1/data" + }; + } }