diff --git a/gen/pb-cpp/flyteidl/admin/workflow.pb.cc b/gen/pb-cpp/flyteidl/admin/workflow.pb.cc index d150591899..69fbf3a79f 100644 --- a/gen/pb-cpp/flyteidl/admin/workflow.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/workflow.pb.cc @@ -21,7 +21,7 @@ extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto ::google::pr extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_Workflow_flyteidl_2fadmin_2fworkflow_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fcompiler_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_CompiledWorkflowClosure_flyteidl_2fcore_2fcompiler_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Identifier_flyteidl_2fcore_2fidentifier_2eproto; -extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<5> scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<6> scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto; extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2ftimestamp_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto; namespace flyteidl { namespace admin { diff --git a/gen/pb-cpp/flyteidl/core/compiler.pb.cc b/gen/pb-cpp/flyteidl/core/compiler.pb.cc index 1458d2c071..d08e8e367e 100644 --- a/gen/pb-cpp/flyteidl/core/compiler.pb.cc +++ b/gen/pb-cpp/flyteidl/core/compiler.pb.cc @@ -23,7 +23,7 @@ extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fcompiler_2eproto ::google::pro extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fcompiler_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_CompiledWorkflow_flyteidl_2fcore_2fcompiler_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fcompiler_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_ConnectionSet_flyteidl_2fcore_2fcompiler_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2ftasks_2eproto ::google::protobuf::internal::SCCInfo<5> scc_info_TaskTemplate_flyteidl_2fcore_2ftasks_2eproto; -extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<5> scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<6> scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto; namespace flyteidl { namespace core { class ConnectionSet_IdListDefaultTypeInternal { diff --git a/gen/pb-cpp/flyteidl/core/dynamic_job.pb.cc b/gen/pb-cpp/flyteidl/core/dynamic_job.pb.cc index b8314d7e55..436ac14057 100644 --- a/gen/pb-cpp/flyteidl/core/dynamic_job.pb.cc +++ b/gen/pb-cpp/flyteidl/core/dynamic_job.pb.cc @@ -18,7 +18,7 @@ extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fliterals_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_Binding_flyteidl_2fcore_2fliterals_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2ftasks_2eproto ::google::protobuf::internal::SCCInfo<5> scc_info_TaskTemplate_flyteidl_2fcore_2ftasks_2eproto; -extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<5> scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<6> scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<7> scc_info_BranchNode_flyteidl_2fcore_2fworkflow_2eproto; namespace flyteidl { namespace core { diff --git a/gen/pb-cpp/flyteidl/core/workflow.pb.cc b/gen/pb-cpp/flyteidl/core/workflow.pb.cc index 4dabc78c90..1129b0b01f 100644 --- a/gen/pb-cpp/flyteidl/core/workflow.pb.cc +++ b/gen/pb-cpp/flyteidl/core/workflow.pb.cc @@ -24,6 +24,7 @@ extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fliterals_2eproto ::google::pro extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2ftypes_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Error_flyteidl_2fcore_2ftypes_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Alias_flyteidl_2fcore_2fworkflow_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_WorkflowMetadataDefaults_flyteidl_2fcore_2fworkflow_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_WorkflowMetadata_flyteidl_2fcore_2fworkflow_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TaskNode_flyteidl_2fcore_2fworkflow_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_WorkflowNode_flyteidl_2fcore_2fworkflow_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_NodeMetadata_flyteidl_2fcore_2fworkflow_2eproto; @@ -72,6 +73,10 @@ class NodeDefaultTypeInternal { const ::flyteidl::core::WorkflowNode* workflow_node_; const ::flyteidl::core::BranchNode* branch_node_; } _Node_default_instance_; +class WorkflowMetadataDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed<WorkflowMetadata> _instance; +} _WorkflowMetadata_default_instance_; class WorkflowMetadataDefaultsDefaultTypeInternal { public: ::google::protobuf::internal::ExplicitlyConstructed<WorkflowMetadataDefaults> _instance; @@ -181,6 +186,20 @@ static void InitDefaultsAlias_flyteidl_2fcore_2fworkflow_2eproto() { ::google::protobuf::internal::SCCInfo<0> scc_info_Alias_flyteidl_2fcore_2fworkflow_2eproto = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsAlias_flyteidl_2fcore_2fworkflow_2eproto}, {}}; +static void InitDefaultsWorkflowMetadata_flyteidl_2fcore_2fworkflow_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::core::_WorkflowMetadata_default_instance_; + new (ptr) ::flyteidl::core::WorkflowMetadata(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::core::WorkflowMetadata::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_WorkflowMetadata_flyteidl_2fcore_2fworkflow_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsWorkflowMetadata_flyteidl_2fcore_2fworkflow_2eproto}, {}}; + static void InitDefaultsWorkflowMetadataDefaults_flyteidl_2fcore_2fworkflow_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -206,13 +225,14 @@ static void InitDefaultsWorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto() { ::flyteidl::core::WorkflowTemplate::InitAsDefaultInstance(); } -::google::protobuf::internal::SCCInfo<5> scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto = - {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 5, InitDefaultsWorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto}, { +::google::protobuf::internal::SCCInfo<6> scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 6, InitDefaultsWorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto}, { &scc_info_Identifier_flyteidl_2fcore_2fidentifier_2eproto.base, - &scc_info_WorkflowMetadataDefaults_flyteidl_2fcore_2fworkflow_2eproto.base, + &scc_info_WorkflowMetadata_flyteidl_2fcore_2fworkflow_2eproto.base, &scc_info_TypedInterface_flyteidl_2fcore_2finterface_2eproto.base, &scc_info_BranchNode_flyteidl_2fcore_2fworkflow_2eproto.base, - &scc_info_Binding_flyteidl_2fcore_2fliterals_2eproto.base,}}; + &scc_info_Binding_flyteidl_2fcore_2fliterals_2eproto.base, + &scc_info_WorkflowMetadataDefaults_flyteidl_2fcore_2fworkflow_2eproto.base,}}; void InitDefaults_flyteidl_2fcore_2fworkflow_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_BranchNode_flyteidl_2fcore_2fworkflow_2eproto.base); @@ -220,11 +240,12 @@ void InitDefaults_flyteidl_2fcore_2fworkflow_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_WorkflowNode_flyteidl_2fcore_2fworkflow_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_NodeMetadata_flyteidl_2fcore_2fworkflow_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_Alias_flyteidl_2fcore_2fworkflow_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_WorkflowMetadata_flyteidl_2fcore_2fworkflow_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_WorkflowMetadataDefaults_flyteidl_2fcore_2fworkflow_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto.base); } -::google::protobuf::Metadata file_level_metadata_flyteidl_2fcore_2fworkflow_2eproto[10]; +::google::protobuf::Metadata file_level_metadata_flyteidl_2fcore_2fworkflow_2eproto[11]; constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_flyteidl_2fcore_2fworkflow_2eproto = nullptr; constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_flyteidl_2fcore_2fworkflow_2eproto = nullptr; @@ -299,6 +320,11 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fcore_2fworkflow_2eproto: offsetof(::flyteidl::core::NodeDefaultTypeInternal, branch_node_), PROTOBUF_FIELD_OFFSET(::flyteidl::core::Node, target_), ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::core::WorkflowMetadata, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::core::WorkflowMetadataDefaults, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ @@ -310,11 +336,12 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fcore_2fworkflow_2eproto: ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::flyteidl::core::WorkflowTemplate, id_), - PROTOBUF_FIELD_OFFSET(::flyteidl::core::WorkflowTemplate, metadata_defaults_), + PROTOBUF_FIELD_OFFSET(::flyteidl::core::WorkflowTemplate, metadata_), PROTOBUF_FIELD_OFFSET(::flyteidl::core::WorkflowTemplate, interface_), PROTOBUF_FIELD_OFFSET(::flyteidl::core::WorkflowTemplate, nodes_), PROTOBUF_FIELD_OFFSET(::flyteidl::core::WorkflowTemplate, outputs_), PROTOBUF_FIELD_OFFSET(::flyteidl::core::WorkflowTemplate, failure_node_), + PROTOBUF_FIELD_OFFSET(::flyteidl::core::WorkflowTemplate, metadata_defaults_), }; static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, sizeof(::flyteidl::core::IfBlock)}, @@ -325,8 +352,9 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 38, -1, sizeof(::flyteidl::core::NodeMetadata)}, { 48, -1, sizeof(::flyteidl::core::Alias)}, { 55, -1, sizeof(::flyteidl::core::Node)}, - { 69, -1, sizeof(::flyteidl::core::WorkflowMetadataDefaults)}, - { 75, -1, sizeof(::flyteidl::core::WorkflowTemplate)}, + { 69, -1, sizeof(::flyteidl::core::WorkflowMetadata)}, + { 74, -1, sizeof(::flyteidl::core::WorkflowMetadataDefaults)}, + { 80, -1, sizeof(::flyteidl::core::WorkflowTemplate)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -338,6 +366,7 @@ static ::google::protobuf::Message const * const file_default_instances[] = { reinterpret_cast<const ::google::protobuf::Message*>(&::flyteidl::core::_NodeMetadata_default_instance_), reinterpret_cast<const ::google::protobuf::Message*>(&::flyteidl::core::_Alias_default_instance_), reinterpret_cast<const ::google::protobuf::Message*>(&::flyteidl::core::_Node_default_instance_), + reinterpret_cast<const ::google::protobuf::Message*>(&::flyteidl::core::_WorkflowMetadata_default_instance_), reinterpret_cast<const ::google::protobuf::Message*>(&::flyteidl::core::_WorkflowMetadataDefaults_default_instance_), reinterpret_cast<const ::google::protobuf::Message*>(&::flyteidl::core::_WorkflowTemplate_default_instance_), }; @@ -345,7 +374,7 @@ static ::google::protobuf::Message const * const file_default_instances[] = { ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_flyteidl_2fcore_2fworkflow_2eproto = { {}, AddDescriptors_flyteidl_2fcore_2fworkflow_2eproto, "flyteidl/core/workflow.proto", schemas, file_default_instances, TableStruct_flyteidl_2fcore_2fworkflow_2eproto::offsets, - file_level_metadata_flyteidl_2fcore_2fworkflow_2eproto, 10, file_level_enum_descriptors_flyteidl_2fcore_2fworkflow_2eproto, file_level_service_descriptors_flyteidl_2fcore_2fworkflow_2eproto, + file_level_metadata_flyteidl_2fcore_2fworkflow_2eproto, 11, file_level_enum_descriptors_flyteidl_2fcore_2fworkflow_2eproto, file_level_service_descriptors_flyteidl_2fcore_2fworkflow_2eproto, }; const char descriptor_table_protodef_flyteidl_2fcore_2fworkflow_2eproto[] = @@ -382,22 +411,24 @@ const char descriptor_table_protodef_flyteidl_2fcore_2fworkflow_2eproto[] = "flyteidl.core.TaskNodeH\000\0224\n\rworkflow_nod" "e\030\007 \001(\0132\033.flyteidl.core.WorkflowNodeH\000\0220" "\n\013branch_node\030\010 \001(\0132\031.flyteidl.core.Bran" - "chNodeH\000B\010\n\006target\"1\n\030WorkflowMetadataDe" - "faults\022\025\n\rinterruptible\030\001 \001(\010\"\247\002\n\020Workfl" - "owTemplate\022%\n\002id\030\001 \001(\0132\031.flyteidl.core.I" - "dentifier\022B\n\021metadata_defaults\030\002 \001(\0132\'.f" - "lyteidl.core.WorkflowMetadataDefaults\0220\n" - "\tinterface\030\003 \001(\0132\035.flyteidl.core.TypedIn" - "terface\022\"\n\005nodes\030\004 \003(\0132\023.flyteidl.core.N" - "ode\022\'\n\007outputs\030\005 \003(\0132\026.flyteidl.core.Bin" - "ding\022)\n\014failure_node\030\006 \001(\0132\023.flyteidl.co" - "re.NodeB2Z0github.com/lyft/flyteidl/gen/" - "pb-go/flyteidl/coreb\006proto3" + "chNodeH\000B\010\n\006target\"\022\n\020WorkflowMetadata\"1" + "\n\030WorkflowMetadataDefaults\022\025\n\rinterrupti" + "ble\030\001 \001(\010\"\332\002\n\020WorkflowTemplate\022%\n\002id\030\001 \001" + "(\0132\031.flyteidl.core.Identifier\0221\n\010metadat" + "a\030\002 \001(\0132\037.flyteidl.core.WorkflowMetadata" + "\0220\n\tinterface\030\003 \001(\0132\035.flyteidl.core.Type" + "dInterface\022\"\n\005nodes\030\004 \003(\0132\023.flyteidl.cor" + "e.Node\022\'\n\007outputs\030\005 \003(\0132\026.flyteidl.core." + "Binding\022)\n\014failure_node\030\006 \001(\0132\023.flyteidl" + ".core.Node\022B\n\021metadata_defaults\030\007 \001(\0132\'." + "flyteidl.core.WorkflowMetadataDefaultsB2" + "Z0github.com/lyft/flyteidl/gen/pb-go/fly" + "teidl/coreb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fcore_2fworkflow_2eproto = { false, InitDefaults_flyteidl_2fcore_2fworkflow_2eproto, descriptor_table_protodef_flyteidl_2fcore_2fworkflow_2eproto, - "flyteidl/core/workflow.proto", &assign_descriptors_table_flyteidl_2fcore_2fworkflow_2eproto, 1747, + "flyteidl/core/workflow.proto", &assign_descriptors_table_flyteidl_2fcore_2fworkflow_2eproto, 1818, }; void AddDescriptors_flyteidl_2fcore_2fworkflow_2eproto() { @@ -4090,6 +4121,215 @@ ::google::protobuf::Metadata Node::GetMetadata() const { } +// =================================================================== + +void WorkflowMetadata::InitAsDefaultInstance() { +} +class WorkflowMetadata::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +WorkflowMetadata::WorkflowMetadata() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.core.WorkflowMetadata) +} +WorkflowMetadata::WorkflowMetadata(const WorkflowMetadata& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + // @@protoc_insertion_point(copy_constructor:flyteidl.core.WorkflowMetadata) +} + +void WorkflowMetadata::SharedCtor() { +} + +WorkflowMetadata::~WorkflowMetadata() { + // @@protoc_insertion_point(destructor:flyteidl.core.WorkflowMetadata) + SharedDtor(); +} + +void WorkflowMetadata::SharedDtor() { +} + +void WorkflowMetadata::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const WorkflowMetadata& WorkflowMetadata::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_WorkflowMetadata_flyteidl_2fcore_2fworkflow_2eproto.base); + return *internal_default_instance(); +} + + +void WorkflowMetadata::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.core.WorkflowMetadata) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* WorkflowMetadata::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast<WorkflowMetadata*>(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) { + default: { + 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; +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool WorkflowMetadata::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.core.WorkflowMetadata) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.core.WorkflowMetadata) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.core.WorkflowMetadata) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void WorkflowMetadata::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.core.WorkflowMetadata) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.core.WorkflowMetadata) +} + +::google::protobuf::uint8* WorkflowMetadata::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.core.WorkflowMetadata) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + 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.core.WorkflowMetadata) + return target; +} + +size_t WorkflowMetadata::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.core.WorkflowMetadata) + 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; + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void WorkflowMetadata::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.core.WorkflowMetadata) + GOOGLE_DCHECK_NE(&from, this); + const WorkflowMetadata* source = + ::google::protobuf::DynamicCastToGenerated<WorkflowMetadata>( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.core.WorkflowMetadata) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.core.WorkflowMetadata) + MergeFrom(*source); + } +} + +void WorkflowMetadata::MergeFrom(const WorkflowMetadata& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.core.WorkflowMetadata) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + +} + +void WorkflowMetadata::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.core.WorkflowMetadata) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void WorkflowMetadata::CopyFrom(const WorkflowMetadata& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.core.WorkflowMetadata) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool WorkflowMetadata::IsInitialized() const { + return true; +} + +void WorkflowMetadata::Swap(WorkflowMetadata* other) { + if (other == this) return; + InternalSwap(other); +} +void WorkflowMetadata::InternalSwap(WorkflowMetadata* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); +} + +::google::protobuf::Metadata WorkflowMetadata::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fcore_2fworkflow_2eproto); + return ::file_level_metadata_flyteidl_2fcore_2fworkflow_2eproto[kIndexInFileMessages]; +} + + // =================================================================== void WorkflowMetadataDefaults::InitAsDefaultInstance() { @@ -4353,28 +4593,31 @@ ::google::protobuf::Metadata WorkflowMetadataDefaults::GetMetadata() const { void WorkflowTemplate::InitAsDefaultInstance() { ::flyteidl::core::_WorkflowTemplate_default_instance_._instance.get_mutable()->id_ = const_cast< ::flyteidl::core::Identifier*>( ::flyteidl::core::Identifier::internal_default_instance()); - ::flyteidl::core::_WorkflowTemplate_default_instance_._instance.get_mutable()->metadata_defaults_ = const_cast< ::flyteidl::core::WorkflowMetadataDefaults*>( - ::flyteidl::core::WorkflowMetadataDefaults::internal_default_instance()); + ::flyteidl::core::_WorkflowTemplate_default_instance_._instance.get_mutable()->metadata_ = const_cast< ::flyteidl::core::WorkflowMetadata*>( + ::flyteidl::core::WorkflowMetadata::internal_default_instance()); ::flyteidl::core::_WorkflowTemplate_default_instance_._instance.get_mutable()->interface_ = const_cast< ::flyteidl::core::TypedInterface*>( ::flyteidl::core::TypedInterface::internal_default_instance()); ::flyteidl::core::_WorkflowTemplate_default_instance_._instance.get_mutable()->failure_node_ = const_cast< ::flyteidl::core::Node*>( ::flyteidl::core::Node::internal_default_instance()); + ::flyteidl::core::_WorkflowTemplate_default_instance_._instance.get_mutable()->metadata_defaults_ = const_cast< ::flyteidl::core::WorkflowMetadataDefaults*>( + ::flyteidl::core::WorkflowMetadataDefaults::internal_default_instance()); } class WorkflowTemplate::HasBitSetters { public: static const ::flyteidl::core::Identifier& id(const WorkflowTemplate* msg); - static const ::flyteidl::core::WorkflowMetadataDefaults& metadata_defaults(const WorkflowTemplate* msg); + static const ::flyteidl::core::WorkflowMetadata& metadata(const WorkflowTemplate* msg); static const ::flyteidl::core::TypedInterface& interface(const WorkflowTemplate* msg); static const ::flyteidl::core::Node& failure_node(const WorkflowTemplate* msg); + static const ::flyteidl::core::WorkflowMetadataDefaults& metadata_defaults(const WorkflowTemplate* msg); }; const ::flyteidl::core::Identifier& WorkflowTemplate::HasBitSetters::id(const WorkflowTemplate* msg) { return *msg->id_; } -const ::flyteidl::core::WorkflowMetadataDefaults& -WorkflowTemplate::HasBitSetters::metadata_defaults(const WorkflowTemplate* msg) { - return *msg->metadata_defaults_; +const ::flyteidl::core::WorkflowMetadata& +WorkflowTemplate::HasBitSetters::metadata(const WorkflowTemplate* msg) { + return *msg->metadata_; } const ::flyteidl::core::TypedInterface& WorkflowTemplate::HasBitSetters::interface(const WorkflowTemplate* msg) { @@ -4384,6 +4627,10 @@ const ::flyteidl::core::Node& WorkflowTemplate::HasBitSetters::failure_node(const WorkflowTemplate* msg) { return *msg->failure_node_; } +const ::flyteidl::core::WorkflowMetadataDefaults& +WorkflowTemplate::HasBitSetters::metadata_defaults(const WorkflowTemplate* msg) { + return *msg->metadata_defaults_; +} void WorkflowTemplate::clear_id() { if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { delete id_; @@ -4401,11 +4648,12 @@ void WorkflowTemplate::clear_outputs() { } #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int WorkflowTemplate::kIdFieldNumber; -const int WorkflowTemplate::kMetadataDefaultsFieldNumber; +const int WorkflowTemplate::kMetadataFieldNumber; const int WorkflowTemplate::kInterfaceFieldNumber; const int WorkflowTemplate::kNodesFieldNumber; const int WorkflowTemplate::kOutputsFieldNumber; const int WorkflowTemplate::kFailureNodeFieldNumber; +const int WorkflowTemplate::kMetadataDefaultsFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 WorkflowTemplate::WorkflowTemplate() @@ -4424,10 +4672,10 @@ WorkflowTemplate::WorkflowTemplate(const WorkflowTemplate& from) } else { id_ = nullptr; } - if (from.has_metadata_defaults()) { - metadata_defaults_ = new ::flyteidl::core::WorkflowMetadataDefaults(*from.metadata_defaults_); + if (from.has_metadata()) { + metadata_ = new ::flyteidl::core::WorkflowMetadata(*from.metadata_); } else { - metadata_defaults_ = nullptr; + metadata_ = nullptr; } if (from.has_interface()) { interface_ = new ::flyteidl::core::TypedInterface(*from.interface_); @@ -4439,6 +4687,11 @@ WorkflowTemplate::WorkflowTemplate(const WorkflowTemplate& from) } else { failure_node_ = nullptr; } + if (from.has_metadata_defaults()) { + metadata_defaults_ = new ::flyteidl::core::WorkflowMetadataDefaults(*from.metadata_defaults_); + } else { + metadata_defaults_ = nullptr; + } // @@protoc_insertion_point(copy_constructor:flyteidl.core.WorkflowTemplate) } @@ -4446,8 +4699,8 @@ void WorkflowTemplate::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto.base); ::memset(&id_, 0, static_cast<size_t>( - reinterpret_cast<char*>(&failure_node_) - - reinterpret_cast<char*>(&id_)) + sizeof(failure_node_)); + reinterpret_cast<char*>(&metadata_defaults_) - + reinterpret_cast<char*>(&id_)) + sizeof(metadata_defaults_)); } WorkflowTemplate::~WorkflowTemplate() { @@ -4457,9 +4710,10 @@ WorkflowTemplate::~WorkflowTemplate() { void WorkflowTemplate::SharedDtor() { if (this != internal_default_instance()) delete id_; - if (this != internal_default_instance()) delete metadata_defaults_; + if (this != internal_default_instance()) delete metadata_; if (this != internal_default_instance()) delete interface_; if (this != internal_default_instance()) delete failure_node_; + if (this != internal_default_instance()) delete metadata_defaults_; } void WorkflowTemplate::SetCachedSize(int size) const { @@ -4483,10 +4737,10 @@ void WorkflowTemplate::Clear() { delete id_; } id_ = nullptr; - if (GetArenaNoVirtual() == nullptr && metadata_defaults_ != nullptr) { - delete metadata_defaults_; + if (GetArenaNoVirtual() == nullptr && metadata_ != nullptr) { + delete metadata_; } - metadata_defaults_ = nullptr; + metadata_ = nullptr; if (GetArenaNoVirtual() == nullptr && interface_ != nullptr) { delete interface_; } @@ -4495,6 +4749,10 @@ void WorkflowTemplate::Clear() { delete failure_node_; } failure_node_ = nullptr; + if (GetArenaNoVirtual() == nullptr && metadata_defaults_ != nullptr) { + delete metadata_defaults_; + } + metadata_defaults_ = nullptr; _internal_metadata_.Clear(); } @@ -4524,13 +4782,13 @@ const char* WorkflowTemplate::_InternalParse(const char* begin, const char* end, {parser_till_end, object}, ptr - size, ptr)); break; } - // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2; + // .flyteidl.core.WorkflowMetadata metadata = 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::core::WorkflowMetadataDefaults::_InternalParse; - object = msg->mutable_metadata_defaults(); + parser_till_end = ::flyteidl::core::WorkflowMetadata::_InternalParse; + object = msg->mutable_metadata(); if (size > end - ptr) goto len_delim_till_end; ptr += size; GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( @@ -4595,6 +4853,19 @@ const char* WorkflowTemplate::_InternalParse(const char* begin, const char* end, {parser_till_end, object}, ptr - size, ptr)); break; } + // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7; + case 7: { + if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::core::WorkflowMetadataDefaults::_InternalParse; + object = msg->mutable_metadata_defaults(); + 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) { @@ -4636,11 +4907,11 @@ bool WorkflowTemplate::MergePartialFromCodedStream( break; } - // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2; + // .flyteidl.core.WorkflowMetadata metadata = 2; case 2: { if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( - input, mutable_metadata_defaults())); + input, mutable_metadata())); } else { goto handle_unusual; } @@ -4691,6 +4962,17 @@ bool WorkflowTemplate::MergePartialFromCodedStream( break; } + // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7; + case 7: { + if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_metadata_defaults())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -4724,10 +5006,10 @@ void WorkflowTemplate::SerializeWithCachedSizes( 1, HasBitSetters::id(this), output); } - // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2; - if (this->has_metadata_defaults()) { + // .flyteidl.core.WorkflowMetadata metadata = 2; + if (this->has_metadata()) { ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( - 2, HasBitSetters::metadata_defaults(this), output); + 2, HasBitSetters::metadata(this), output); } // .flyteidl.core.TypedInterface interface = 3; @@ -4760,6 +5042,12 @@ void WorkflowTemplate::SerializeWithCachedSizes( 6, HasBitSetters::failure_node(this), output); } + // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7; + if (this->has_metadata_defaults()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 7, HasBitSetters::metadata_defaults(this), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -4780,11 +5068,11 @@ ::google::protobuf::uint8* WorkflowTemplate::InternalSerializeWithCachedSizesToA 1, HasBitSetters::id(this), target); } - // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2; - if (this->has_metadata_defaults()) { + // .flyteidl.core.WorkflowMetadata metadata = 2; + if (this->has_metadata()) { target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessageToArray( - 2, HasBitSetters::metadata_defaults(this), target); + 2, HasBitSetters::metadata(this), target); } // .flyteidl.core.TypedInterface interface = 3; @@ -4817,6 +5105,13 @@ ::google::protobuf::uint8* WorkflowTemplate::InternalSerializeWithCachedSizesToA 6, HasBitSetters::failure_node(this), target); } + // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7; + if (this->has_metadata_defaults()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 7, HasBitSetters::metadata_defaults(this), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -4867,11 +5162,11 @@ size_t WorkflowTemplate::ByteSizeLong() const { *id_); } - // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2; - if (this->has_metadata_defaults()) { + // .flyteidl.core.WorkflowMetadata metadata = 2; + if (this->has_metadata()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize( - *metadata_defaults_); + *metadata_); } // .flyteidl.core.TypedInterface interface = 3; @@ -4888,6 +5183,13 @@ size_t WorkflowTemplate::ByteSizeLong() const { *failure_node_); } + // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7; + if (this->has_metadata_defaults()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *metadata_defaults_); + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -4920,8 +5222,8 @@ void WorkflowTemplate::MergeFrom(const WorkflowTemplate& from) { if (from.has_id()) { mutable_id()->::flyteidl::core::Identifier::MergeFrom(from.id()); } - if (from.has_metadata_defaults()) { - mutable_metadata_defaults()->::flyteidl::core::WorkflowMetadataDefaults::MergeFrom(from.metadata_defaults()); + if (from.has_metadata()) { + mutable_metadata()->::flyteidl::core::WorkflowMetadata::MergeFrom(from.metadata()); } if (from.has_interface()) { mutable_interface()->::flyteidl::core::TypedInterface::MergeFrom(from.interface()); @@ -4929,6 +5231,9 @@ void WorkflowTemplate::MergeFrom(const WorkflowTemplate& from) { if (from.has_failure_node()) { mutable_failure_node()->::flyteidl::core::Node::MergeFrom(from.failure_node()); } + if (from.has_metadata_defaults()) { + mutable_metadata_defaults()->::flyteidl::core::WorkflowMetadataDefaults::MergeFrom(from.metadata_defaults()); + } } void WorkflowTemplate::CopyFrom(const ::google::protobuf::Message& from) { @@ -4959,9 +5264,10 @@ void WorkflowTemplate::InternalSwap(WorkflowTemplate* other) { CastToBase(&nodes_)->InternalSwap(CastToBase(&other->nodes_)); CastToBase(&outputs_)->InternalSwap(CastToBase(&other->outputs_)); swap(id_, other->id_); - swap(metadata_defaults_, other->metadata_defaults_); + swap(metadata_, other->metadata_); swap(interface_, other->interface_); swap(failure_node_, other->failure_node_); + swap(metadata_defaults_, other->metadata_defaults_); } ::google::protobuf::Metadata WorkflowTemplate::GetMetadata() const { @@ -4999,6 +5305,9 @@ template<> PROTOBUF_NOINLINE ::flyteidl::core::Alias* Arena::CreateMaybeMessage< template<> PROTOBUF_NOINLINE ::flyteidl::core::Node* Arena::CreateMaybeMessage< ::flyteidl::core::Node >(Arena* arena) { return Arena::CreateInternal< ::flyteidl::core::Node >(arena); } +template<> PROTOBUF_NOINLINE ::flyteidl::core::WorkflowMetadata* Arena::CreateMaybeMessage< ::flyteidl::core::WorkflowMetadata >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::core::WorkflowMetadata >(arena); +} template<> PROTOBUF_NOINLINE ::flyteidl::core::WorkflowMetadataDefaults* Arena::CreateMaybeMessage< ::flyteidl::core::WorkflowMetadataDefaults >(Arena* arena) { return Arena::CreateInternal< ::flyteidl::core::WorkflowMetadataDefaults >(arena); } diff --git a/gen/pb-cpp/flyteidl/core/workflow.pb.h b/gen/pb-cpp/flyteidl/core/workflow.pb.h index 30ca6f0754..f2caf68bab 100644 --- a/gen/pb-cpp/flyteidl/core/workflow.pb.h +++ b/gen/pb-cpp/flyteidl/core/workflow.pb.h @@ -47,7 +47,7 @@ struct TableStruct_flyteidl_2fcore_2fworkflow_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[10] + static const ::google::protobuf::internal::ParseTable schema[11] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::google::protobuf::internal::FieldMetadata field_metadata[]; static const ::google::protobuf::internal::SerializationTable serialization_table[]; @@ -77,6 +77,9 @@ extern NodeMetadataDefaultTypeInternal _NodeMetadata_default_instance_; class TaskNode; class TaskNodeDefaultTypeInternal; extern TaskNodeDefaultTypeInternal _TaskNode_default_instance_; +class WorkflowMetadata; +class WorkflowMetadataDefaultTypeInternal; +extern WorkflowMetadataDefaultTypeInternal _WorkflowMetadata_default_instance_; class WorkflowMetadataDefaults; class WorkflowMetadataDefaultsDefaultTypeInternal; extern WorkflowMetadataDefaultsDefaultTypeInternal _WorkflowMetadataDefaults_default_instance_; @@ -97,6 +100,7 @@ template<> ::flyteidl::core::IfElseBlock* Arena::CreateMaybeMessage<::flyteidl:: template<> ::flyteidl::core::Node* Arena::CreateMaybeMessage<::flyteidl::core::Node>(Arena*); template<> ::flyteidl::core::NodeMetadata* Arena::CreateMaybeMessage<::flyteidl::core::NodeMetadata>(Arena*); template<> ::flyteidl::core::TaskNode* Arena::CreateMaybeMessage<::flyteidl::core::TaskNode>(Arena*); +template<> ::flyteidl::core::WorkflowMetadata* Arena::CreateMaybeMessage<::flyteidl::core::WorkflowMetadata>(Arena*); template<> ::flyteidl::core::WorkflowMetadataDefaults* Arena::CreateMaybeMessage<::flyteidl::core::WorkflowMetadataDefaults>(Arena*); template<> ::flyteidl::core::WorkflowNode* Arena::CreateMaybeMessage<::flyteidl::core::WorkflowNode>(Arena*); template<> ::flyteidl::core::WorkflowTemplate* Arena::CreateMaybeMessage<::flyteidl::core::WorkflowTemplate>(Arena*); @@ -1317,6 +1321,111 @@ class Node final : }; // ------------------------------------------------------------------- +class WorkflowMetadata final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.core.WorkflowMetadata) */ { + public: + WorkflowMetadata(); + virtual ~WorkflowMetadata(); + + WorkflowMetadata(const WorkflowMetadata& from); + + inline WorkflowMetadata& operator=(const WorkflowMetadata& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + WorkflowMetadata(WorkflowMetadata&& from) noexcept + : WorkflowMetadata() { + *this = ::std::move(from); + } + + inline WorkflowMetadata& operator=(WorkflowMetadata&& 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 WorkflowMetadata& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const WorkflowMetadata* internal_default_instance() { + return reinterpret_cast<const WorkflowMetadata*>( + &_WorkflowMetadata_default_instance_); + } + static constexpr int kIndexInFileMessages = + 8; + + void Swap(WorkflowMetadata* other); + friend void swap(WorkflowMetadata& a, WorkflowMetadata& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline WorkflowMetadata* New() const final { + return CreateMaybeMessage<WorkflowMetadata>(nullptr); + } + + WorkflowMetadata* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage<WorkflowMetadata>(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const WorkflowMetadata& from); + void MergeFrom(const WorkflowMetadata& 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(WorkflowMetadata* 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 ------------------------------------------------------- + + // @@protoc_insertion_point(class_scope:flyteidl.core.WorkflowMetadata) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fcore_2fworkflow_2eproto; +}; +// ------------------------------------------------------------------- + class WorkflowMetadataDefaults final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.core.WorkflowMetadataDefaults) */ { public: @@ -1355,7 +1464,7 @@ class WorkflowMetadataDefaults final : &_WorkflowMetadataDefaults_default_instance_); } static constexpr int kIndexInFileMessages = - 8; + 9; void Swap(WorkflowMetadataDefaults* other); friend void swap(WorkflowMetadataDefaults& a, WorkflowMetadataDefaults& b) { @@ -1467,7 +1576,7 @@ class WorkflowTemplate final : &_WorkflowTemplate_default_instance_); } static constexpr int kIndexInFileMessages = - 9; + 10; void Swap(WorkflowTemplate* other); friend void swap(WorkflowTemplate& a, WorkflowTemplate& b) { @@ -1557,14 +1666,14 @@ class WorkflowTemplate final : ::flyteidl::core::Identifier* mutable_id(); void set_allocated_id(::flyteidl::core::Identifier* id); - // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2; - bool has_metadata_defaults() const; - void clear_metadata_defaults(); - static const int kMetadataDefaultsFieldNumber = 2; - const ::flyteidl::core::WorkflowMetadataDefaults& metadata_defaults() const; - ::flyteidl::core::WorkflowMetadataDefaults* release_metadata_defaults(); - ::flyteidl::core::WorkflowMetadataDefaults* mutable_metadata_defaults(); - void set_allocated_metadata_defaults(::flyteidl::core::WorkflowMetadataDefaults* metadata_defaults); + // .flyteidl.core.WorkflowMetadata metadata = 2; + bool has_metadata() const; + void clear_metadata(); + static const int kMetadataFieldNumber = 2; + const ::flyteidl::core::WorkflowMetadata& metadata() const; + ::flyteidl::core::WorkflowMetadata* release_metadata(); + ::flyteidl::core::WorkflowMetadata* mutable_metadata(); + void set_allocated_metadata(::flyteidl::core::WorkflowMetadata* metadata); // .flyteidl.core.TypedInterface interface = 3; bool has_interface() const; @@ -1584,6 +1693,15 @@ class WorkflowTemplate final : ::flyteidl::core::Node* mutable_failure_node(); void set_allocated_failure_node(::flyteidl::core::Node* failure_node); + // .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7; + bool has_metadata_defaults() const; + void clear_metadata_defaults(); + static const int kMetadataDefaultsFieldNumber = 7; + const ::flyteidl::core::WorkflowMetadataDefaults& metadata_defaults() const; + ::flyteidl::core::WorkflowMetadataDefaults* release_metadata_defaults(); + ::flyteidl::core::WorkflowMetadataDefaults* mutable_metadata_defaults(); + void set_allocated_metadata_defaults(::flyteidl::core::WorkflowMetadataDefaults* metadata_defaults); + // @@protoc_insertion_point(class_scope:flyteidl.core.WorkflowTemplate) private: class HasBitSetters; @@ -1592,9 +1710,10 @@ class WorkflowTemplate final : ::google::protobuf::RepeatedPtrField< ::flyteidl::core::Node > nodes_; ::google::protobuf::RepeatedPtrField< ::flyteidl::core::Binding > outputs_; ::flyteidl::core::Identifier* id_; - ::flyteidl::core::WorkflowMetadataDefaults* metadata_defaults_; + ::flyteidl::core::WorkflowMetadata* metadata_; ::flyteidl::core::TypedInterface* interface_; ::flyteidl::core::Node* failure_node_; + ::flyteidl::core::WorkflowMetadataDefaults* metadata_defaults_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fcore_2fworkflow_2eproto; }; @@ -2725,6 +2844,10 @@ inline Node::TargetCase Node::target_case() const { } // ------------------------------------------------------------------- +// WorkflowMetadata + +// ------------------------------------------------------------------- + // WorkflowMetadataDefaults // bool interruptible = 1; @@ -2790,55 +2913,55 @@ inline void WorkflowTemplate::set_allocated_id(::flyteidl::core::Identifier* id) // @@protoc_insertion_point(field_set_allocated:flyteidl.core.WorkflowTemplate.id) } -// .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2; -inline bool WorkflowTemplate::has_metadata_defaults() const { - return this != internal_default_instance() && metadata_defaults_ != nullptr; +// .flyteidl.core.WorkflowMetadata metadata = 2; +inline bool WorkflowTemplate::has_metadata() const { + return this != internal_default_instance() && metadata_ != nullptr; } -inline void WorkflowTemplate::clear_metadata_defaults() { - if (GetArenaNoVirtual() == nullptr && metadata_defaults_ != nullptr) { - delete metadata_defaults_; +inline void WorkflowTemplate::clear_metadata() { + if (GetArenaNoVirtual() == nullptr && metadata_ != nullptr) { + delete metadata_; } - metadata_defaults_ = nullptr; + metadata_ = nullptr; } -inline const ::flyteidl::core::WorkflowMetadataDefaults& WorkflowTemplate::metadata_defaults() const { - const ::flyteidl::core::WorkflowMetadataDefaults* p = metadata_defaults_; - // @@protoc_insertion_point(field_get:flyteidl.core.WorkflowTemplate.metadata_defaults) - return p != nullptr ? *p : *reinterpret_cast<const ::flyteidl::core::WorkflowMetadataDefaults*>( - &::flyteidl::core::_WorkflowMetadataDefaults_default_instance_); +inline const ::flyteidl::core::WorkflowMetadata& WorkflowTemplate::metadata() const { + const ::flyteidl::core::WorkflowMetadata* p = metadata_; + // @@protoc_insertion_point(field_get:flyteidl.core.WorkflowTemplate.metadata) + return p != nullptr ? *p : *reinterpret_cast<const ::flyteidl::core::WorkflowMetadata*>( + &::flyteidl::core::_WorkflowMetadata_default_instance_); } -inline ::flyteidl::core::WorkflowMetadataDefaults* WorkflowTemplate::release_metadata_defaults() { - // @@protoc_insertion_point(field_release:flyteidl.core.WorkflowTemplate.metadata_defaults) +inline ::flyteidl::core::WorkflowMetadata* WorkflowTemplate::release_metadata() { + // @@protoc_insertion_point(field_release:flyteidl.core.WorkflowTemplate.metadata) - ::flyteidl::core::WorkflowMetadataDefaults* temp = metadata_defaults_; - metadata_defaults_ = nullptr; + ::flyteidl::core::WorkflowMetadata* temp = metadata_; + metadata_ = nullptr; return temp; } -inline ::flyteidl::core::WorkflowMetadataDefaults* WorkflowTemplate::mutable_metadata_defaults() { +inline ::flyteidl::core::WorkflowMetadata* WorkflowTemplate::mutable_metadata() { - if (metadata_defaults_ == nullptr) { - auto* p = CreateMaybeMessage<::flyteidl::core::WorkflowMetadataDefaults>(GetArenaNoVirtual()); - metadata_defaults_ = p; + if (metadata_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::core::WorkflowMetadata>(GetArenaNoVirtual()); + metadata_ = p; } - // @@protoc_insertion_point(field_mutable:flyteidl.core.WorkflowTemplate.metadata_defaults) - return metadata_defaults_; + // @@protoc_insertion_point(field_mutable:flyteidl.core.WorkflowTemplate.metadata) + return metadata_; } -inline void WorkflowTemplate::set_allocated_metadata_defaults(::flyteidl::core::WorkflowMetadataDefaults* metadata_defaults) { +inline void WorkflowTemplate::set_allocated_metadata(::flyteidl::core::WorkflowMetadata* metadata) { ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); if (message_arena == nullptr) { - delete metadata_defaults_; + delete metadata_; } - if (metadata_defaults) { + if (metadata) { ::google::protobuf::Arena* submessage_arena = nullptr; if (message_arena != submessage_arena) { - metadata_defaults = ::google::protobuf::internal::GetOwnedMessage( - message_arena, metadata_defaults, submessage_arena); + metadata = ::google::protobuf::internal::GetOwnedMessage( + message_arena, metadata, submessage_arena); } } else { } - metadata_defaults_ = metadata_defaults; - // @@protoc_insertion_point(field_set_allocated:flyteidl.core.WorkflowTemplate.metadata_defaults) + metadata_ = metadata; + // @@protoc_insertion_point(field_set_allocated:flyteidl.core.WorkflowTemplate.metadata) } // .flyteidl.core.TypedInterface interface = 3; @@ -2994,6 +3117,57 @@ inline void WorkflowTemplate::set_allocated_failure_node(::flyteidl::core::Node* // @@protoc_insertion_point(field_set_allocated:flyteidl.core.WorkflowTemplate.failure_node) } +// .flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7; +inline bool WorkflowTemplate::has_metadata_defaults() const { + return this != internal_default_instance() && metadata_defaults_ != nullptr; +} +inline void WorkflowTemplate::clear_metadata_defaults() { + if (GetArenaNoVirtual() == nullptr && metadata_defaults_ != nullptr) { + delete metadata_defaults_; + } + metadata_defaults_ = nullptr; +} +inline const ::flyteidl::core::WorkflowMetadataDefaults& WorkflowTemplate::metadata_defaults() const { + const ::flyteidl::core::WorkflowMetadataDefaults* p = metadata_defaults_; + // @@protoc_insertion_point(field_get:flyteidl.core.WorkflowTemplate.metadata_defaults) + return p != nullptr ? *p : *reinterpret_cast<const ::flyteidl::core::WorkflowMetadataDefaults*>( + &::flyteidl::core::_WorkflowMetadataDefaults_default_instance_); +} +inline ::flyteidl::core::WorkflowMetadataDefaults* WorkflowTemplate::release_metadata_defaults() { + // @@protoc_insertion_point(field_release:flyteidl.core.WorkflowTemplate.metadata_defaults) + + ::flyteidl::core::WorkflowMetadataDefaults* temp = metadata_defaults_; + metadata_defaults_ = nullptr; + return temp; +} +inline ::flyteidl::core::WorkflowMetadataDefaults* WorkflowTemplate::mutable_metadata_defaults() { + + if (metadata_defaults_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::core::WorkflowMetadataDefaults>(GetArenaNoVirtual()); + metadata_defaults_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.core.WorkflowTemplate.metadata_defaults) + return metadata_defaults_; +} +inline void WorkflowTemplate::set_allocated_metadata_defaults(::flyteidl::core::WorkflowMetadataDefaults* metadata_defaults) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete metadata_defaults_; + } + if (metadata_defaults) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + metadata_defaults = ::google::protobuf::internal::GetOwnedMessage( + message_arena, metadata_defaults, submessage_arena); + } + + } else { + + } + metadata_defaults_ = metadata_defaults; + // @@protoc_insertion_point(field_set_allocated:flyteidl.core.WorkflowTemplate.metadata_defaults) +} + #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ @@ -3015,6 +3189,8 @@ inline void WorkflowTemplate::set_allocated_failure_node(::flyteidl::core::Node* // ------------------------------------------------------------------- +// ------------------------------------------------------------------- + // @@protoc_insertion_point(namespace_scope) diff --git a/gen/pb-cpp/flyteidl/core/workflow_closure.pb.cc b/gen/pb-cpp/flyteidl/core/workflow_closure.pb.cc index 640861104c..a1c855aae0 100644 --- a/gen/pb-cpp/flyteidl/core/workflow_closure.pb.cc +++ b/gen/pb-cpp/flyteidl/core/workflow_closure.pb.cc @@ -17,7 +17,7 @@ #include <google/protobuf/port_def.inc> extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2ftasks_2eproto ::google::protobuf::internal::SCCInfo<5> scc_info_TaskTemplate_flyteidl_2fcore_2ftasks_2eproto; -extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<5> scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<6> scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto; namespace flyteidl { namespace core { class WorkflowClosureDefaultTypeInternal { diff --git a/gen/pb-go/flyteidl/core/workflow.pb.go b/gen/pb-go/flyteidl/core/workflow.pb.go index a13387d61f..582195a467 100644 --- a/gen/pb-go/flyteidl/core/workflow.pb.go +++ b/gen/pb-go/flyteidl/core/workflow.pb.go @@ -655,6 +655,39 @@ func (*Node) XXX_OneofWrappers() []interface{} { } } +// Metadata for the entire workflow. +// To be used in the future. +type WorkflowMetadata struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WorkflowMetadata) Reset() { *m = WorkflowMetadata{} } +func (m *WorkflowMetadata) String() string { return proto.CompactTextString(m) } +func (*WorkflowMetadata) ProtoMessage() {} +func (*WorkflowMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_fccede37486c456e, []int{8} +} + +func (m *WorkflowMetadata) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WorkflowMetadata.Unmarshal(m, b) +} +func (m *WorkflowMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WorkflowMetadata.Marshal(b, m, deterministic) +} +func (m *WorkflowMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkflowMetadata.Merge(m, src) +} +func (m *WorkflowMetadata) XXX_Size() int { + return xxx_messageInfo_WorkflowMetadata.Size(m) +} +func (m *WorkflowMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_WorkflowMetadata.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkflowMetadata proto.InternalMessageInfo + // Default Workflow Metadata for the entire workflow. type WorkflowMetadataDefaults struct { // Identify whether workflow is interruptible. @@ -670,7 +703,7 @@ func (m *WorkflowMetadataDefaults) Reset() { *m = WorkflowMetadataDefaul func (m *WorkflowMetadataDefaults) String() string { return proto.CompactTextString(m) } func (*WorkflowMetadataDefaults) ProtoMessage() {} func (*WorkflowMetadataDefaults) Descriptor() ([]byte, []int) { - return fileDescriptor_fccede37486c456e, []int{8} + return fileDescriptor_fccede37486c456e, []int{9} } func (m *WorkflowMetadataDefaults) XXX_Unmarshal(b []byte) error { @@ -704,7 +737,7 @@ type WorkflowTemplate struct { // A globally unique identifier for the workflow. Id *Identifier `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Extra metadata about the workflow. - MetadataDefaults *WorkflowMetadataDefaults `protobuf:"bytes,2,opt,name=metadata_defaults,json=metadataDefaults,proto3" json:"metadata_defaults,omitempty"` + Metadata *WorkflowMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` // Defines a strongly typed interface for the Workflow. This can include some optional parameters. Interface *TypedInterface `protobuf:"bytes,3,opt,name=interface,proto3" json:"interface,omitempty"` // A list of nodes. In addition, "globals" is a special reserved node id that can be used to consume workflow inputs. @@ -720,17 +753,19 @@ type WorkflowTemplate struct { //+optional A catch-all node. This node is executed whenever the execution engine determines the workflow has failed. // The interface of this node must match the Workflow interface with an additional input named "error" of type // pb.lyft.flyte.core.Error. - FailureNode *Node `protobuf:"bytes,6,opt,name=failure_node,json=failureNode,proto3" json:"failure_node,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FailureNode *Node `protobuf:"bytes,6,opt,name=failure_node,json=failureNode,proto3" json:"failure_node,omitempty"` + // workflow defaults + MetadataDefaults *WorkflowMetadataDefaults `protobuf:"bytes,7,opt,name=metadata_defaults,json=metadataDefaults,proto3" json:"metadata_defaults,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *WorkflowTemplate) Reset() { *m = WorkflowTemplate{} } func (m *WorkflowTemplate) String() string { return proto.CompactTextString(m) } func (*WorkflowTemplate) ProtoMessage() {} func (*WorkflowTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_fccede37486c456e, []int{9} + return fileDescriptor_fccede37486c456e, []int{10} } func (m *WorkflowTemplate) XXX_Unmarshal(b []byte) error { @@ -758,9 +793,9 @@ func (m *WorkflowTemplate) GetId() *Identifier { return nil } -func (m *WorkflowTemplate) GetMetadataDefaults() *WorkflowMetadataDefaults { +func (m *WorkflowTemplate) GetMetadata() *WorkflowMetadata { if m != nil { - return m.MetadataDefaults + return m.Metadata } return nil } @@ -793,6 +828,13 @@ func (m *WorkflowTemplate) GetFailureNode() *Node { return nil } +func (m *WorkflowTemplate) GetMetadataDefaults() *WorkflowMetadataDefaults { + if m != nil { + return m.MetadataDefaults + } + return nil +} + func init() { proto.RegisterType((*IfBlock)(nil), "flyteidl.core.IfBlock") proto.RegisterType((*IfElseBlock)(nil), "flyteidl.core.IfElseBlock") @@ -802,6 +844,7 @@ func init() { proto.RegisterType((*NodeMetadata)(nil), "flyteidl.core.NodeMetadata") proto.RegisterType((*Alias)(nil), "flyteidl.core.Alias") proto.RegisterType((*Node)(nil), "flyteidl.core.Node") + proto.RegisterType((*WorkflowMetadata)(nil), "flyteidl.core.WorkflowMetadata") proto.RegisterType((*WorkflowMetadataDefaults)(nil), "flyteidl.core.WorkflowMetadataDefaults") proto.RegisterType((*WorkflowTemplate)(nil), "flyteidl.core.WorkflowTemplate") } @@ -809,62 +852,62 @@ func init() { func init() { proto.RegisterFile("flyteidl/core/workflow.proto", fileDescriptor_fccede37486c456e) } var fileDescriptor_fccede37486c456e = []byte{ - // 897 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xdd, 0x6e, 0x23, 0x35, - 0x14, 0xce, 0x7f, 0x32, 0x27, 0x49, 0xe9, 0x7a, 0x17, 0x48, 0xcb, 0xee, 0x2a, 0x8a, 0x10, 0x74, - 0x57, 0x90, 0x54, 0x5d, 0xa9, 0x5c, 0x2c, 0x5a, 0xd1, 0xd1, 0x56, 0x4a, 0x2e, 0xe0, 0xc2, 0x54, - 0x5a, 0x89, 0x9b, 0xc8, 0xc9, 0x9c, 0x49, 0xac, 0x3a, 0xe3, 0x91, 0xc7, 0xb3, 0x25, 0xe2, 0x7d, - 0xb8, 0xe2, 0x59, 0xb8, 0xe2, 0x15, 0x78, 0x0f, 0x34, 0x1e, 0x7b, 0xd2, 0x0c, 0x69, 0xe1, 0x6e, - 0x3c, 0xe7, 0x3b, 0xc7, 0x9f, 0xbf, 0xf3, 0x1d, 0x1b, 0x9e, 0x87, 0x62, 0xab, 0x91, 0x07, 0x62, - 0xb2, 0x94, 0x0a, 0x27, 0x77, 0x52, 0xdd, 0x86, 0x42, 0xde, 0x8d, 0x63, 0x25, 0xb5, 0x24, 0x7d, - 0x17, 0x1d, 0x67, 0xd1, 0xd3, 0x17, 0xfb, 0xe0, 0xa5, 0x8c, 0x02, 0xae, 0xb9, 0x8c, 0x72, 0xf4, - 0xe9, 0xcb, 0xfd, 0x30, 0x0f, 0x30, 0xd2, 0x3c, 0xe4, 0xa8, 0x6c, 0xbc, 0x94, 0xce, 0x23, 0x8d, - 0x2a, 0x64, 0x4b, 0xb4, 0xe1, 0x12, 0x15, 0xc1, 0x35, 0x2a, 0x26, 0x12, 0x1b, 0x3d, 0xd9, 0x8f, - 0xea, 0x6d, 0x8c, 0x2e, 0xf4, 0x72, 0x25, 0xe5, 0x4a, 0xe0, 0xc4, 0xac, 0x16, 0x69, 0x38, 0x09, - 0x52, 0xc5, 0x76, 0xbc, 0x46, 0xbf, 0x41, 0x7b, 0x16, 0xfa, 0x42, 0x2e, 0x6f, 0xc9, 0x3b, 0xf0, - 0x0a, 0xd6, 0x83, 0xea, 0xb0, 0x7a, 0xd6, 0xbd, 0x18, 0x8e, 0xf7, 0x0e, 0x39, 0xf6, 0xa5, 0x14, - 0xc8, 0xa2, 0xeb, 0x5f, 0x63, 0x85, 0x49, 0xc2, 0x65, 0x44, 0x77, 0x29, 0xe4, 0x1c, 0x3c, 0xbd, - 0xc6, 0x68, 0x1e, 0xc9, 0x00, 0x07, 0x35, 0x93, 0xff, 0xb4, 0x94, 0xff, 0x93, 0x0c, 0x90, 0x76, - 0x32, 0x54, 0xf6, 0x35, 0xfa, 0xab, 0x0a, 0xdd, 0x59, 0x78, 0x2d, 0x12, 0xcc, 0x19, 0xbc, 0x86, - 0xc6, 0x92, 0x25, 0x68, 0x37, 0xff, 0xac, 0x94, 0x6c, 0x79, 0x52, 0x83, 0x21, 0xdf, 0x40, 0x53, - 0xea, 0x35, 0xaa, 0x41, 0x6d, 0x58, 0x7f, 0x04, 0x9c, 0x83, 0xc8, 0x05, 0x78, 0x28, 0x12, 0xcc, - 0xb9, 0xd5, 0x1f, 0xe4, 0x36, 0xad, 0xd0, 0x4e, 0x86, 0xcb, 0xbe, 0xb3, 0x1d, 0x50, 0x29, 0xa9, - 0x06, 0x0d, 0x83, 0x7f, 0x56, 0xc2, 0x5f, 0x67, 0xb1, 0x69, 0x85, 0xe6, 0x20, 0xdf, 0x83, 0x76, - 0x80, 0x21, 0x4b, 0x85, 0x1e, 0x5d, 0x01, 0xf8, 0x8a, 0x45, 0xcb, 0xb5, 0x29, 0xf3, 0x06, 0xda, - 0x3c, 0x9c, 0x67, 0x55, 0xed, 0xb9, 0x4e, 0xff, 0x45, 0xb5, 0x50, 0x80, 0xb6, 0xb8, 0x59, 0x8c, - 0x3e, 0x40, 0xe7, 0x86, 0x25, 0xb7, 0xa6, 0xc0, 0x3b, 0xe8, 0x29, 0x0c, 0x51, 0x61, 0xb4, 0xc4, - 0x39, 0x0f, 0x6c, 0x95, 0x93, 0x72, 0x95, 0xc2, 0x51, 0xd3, 0x0a, 0xed, 0x16, 0x09, 0xb3, 0xc0, - 0xef, 0x82, 0x57, 0x2c, 0x47, 0xbf, 0x57, 0xa1, 0xf7, 0xc1, 0x1a, 0xd9, 0x54, 0xf7, 0xe1, 0x48, - 0xb0, 0x34, 0x5a, 0xae, 0x63, 0xc1, 0xa2, 0xb9, 0xc2, 0xf0, 0xff, 0xd4, 0xef, 0xef, 0x52, 0x28, - 0x86, 0xe4, 0x1a, 0x8e, 0x93, 0x74, 0x31, 0x77, 0x03, 0x62, 0xaa, 0xd4, 0xfe, 0xbb, 0xca, 0x51, - 0x92, 0x2e, 0x1c, 0x17, 0x8a, 0xe1, 0x3e, 0xd1, 0x3f, 0xab, 0xd0, 0xcb, 0x08, 0xfe, 0x88, 0x9a, - 0x05, 0x4c, 0x33, 0x42, 0xa0, 0x11, 0xb1, 0x4d, 0x2e, 0xa2, 0x47, 0xcd, 0x77, 0xa6, 0xad, 0xe6, - 0x1b, 0x94, 0xa9, 0xb6, 0x4d, 0x3a, 0x19, 0xe7, 0x7e, 0x1f, 0x3b, 0xbf, 0x8f, 0xdf, 0x5b, 0xbf, - 0x53, 0x87, 0x24, 0x97, 0xd0, 0x56, 0xa8, 0x15, 0xc7, 0x64, 0xd0, 0x34, 0x49, 0xcf, 0x4b, 0x24, - 0x29, 0x6a, 0xb5, 0xfd, 0x59, 0x2b, 0xa6, 0x71, 0xb5, 0xa5, 0x0e, 0x4c, 0xbe, 0x82, 0xbe, 0x19, - 0x4b, 0x95, 0xc6, 0x9a, 0x2f, 0x04, 0x0e, 0x5a, 0xc3, 0xea, 0x59, 0x27, 0x53, 0x63, 0xef, 0xb7, - 0xff, 0x29, 0x3c, 0xdd, 0xfb, 0x31, 0xff, 0xc8, 0x44, 0x8a, 0xa3, 0x09, 0x34, 0xaf, 0x04, 0x67, - 0x09, 0x39, 0x86, 0xfa, 0x47, 0xa6, 0xec, 0x39, 0xb2, 0x4f, 0xf2, 0x0c, 0x9a, 0x2c, 0x0b, 0x19, - 0xd1, 0x3c, 0x9a, 0x2f, 0x46, 0x7f, 0xd4, 0xa1, 0x61, 0x5a, 0x74, 0x04, 0x35, 0xdb, 0x76, 0x8f, - 0xd6, 0x78, 0x40, 0xbe, 0x83, 0xce, 0xc6, 0xaa, 0x62, 0x65, 0xfe, 0xe2, 0x80, 0x97, 0x9d, 0x70, - 0xb4, 0x00, 0x93, 0x31, 0xb4, 0x78, 0x14, 0xa7, 0x3a, 0x19, 0xd4, 0x0f, 0x0e, 0x8d, 0xcf, 0xa3, - 0x80, 0x47, 0x2b, 0x6a, 0x51, 0xe4, 0x35, 0x3c, 0x49, 0xe3, 0x44, 0x2b, 0x64, 0x1b, 0x33, 0x39, - 0x73, 0x1e, 0x24, 0x83, 0xc6, 0xb0, 0x7e, 0xe6, 0xd1, 0x4f, 0x5c, 0x20, 0xdb, 0x6a, 0x16, 0x24, - 0xe4, 0x2d, 0x1c, 0xc9, 0x54, 0xc7, 0xa9, 0x9e, 0x1b, 0xf6, 0x46, 0xdc, 0xfa, 0x81, 0xb1, 0x31, - 0x1a, 0xd0, 0x7e, 0x8e, 0xbd, 0xca, 0xa1, 0xe4, 0x12, 0x3c, 0xcd, 0x92, 0xdb, 0x7c, 0x3c, 0x5b, - 0xe6, 0x48, 0x9f, 0x97, 0xf2, 0xdc, 0x38, 0x64, 0x23, 0xaa, 0xdd, 0x68, 0xf8, 0xd0, 0x2f, 0x4c, - 0x67, 0x72, 0xdb, 0x07, 0xe5, 0xb8, 0x6f, 0xf8, 0x69, 0x85, 0xf6, 0xee, 0xee, 0x0f, 0xc0, 0xf7, - 0xd0, 0x5d, 0x98, 0x69, 0xcd, 0x2b, 0x74, 0x0e, 0xfa, 0x76, 0x37, 0xcf, 0xd3, 0x0a, 0x85, 0x45, - 0xb1, 0xf2, 0x3b, 0xd0, 0xd2, 0x4c, 0xad, 0x50, 0x8f, 0x7e, 0x80, 0x81, 0xdb, 0xc7, 0x49, 0xff, - 0x3e, 0xbf, 0x10, 0x12, 0xf2, 0x65, 0xd9, 0x3a, 0x59, 0x33, 0x3b, 0x25, 0xe3, 0x8c, 0xfe, 0xae, - 0xc1, 0xb1, 0x2b, 0x71, 0x83, 0x9b, 0x58, 0x30, 0x8d, 0xe4, 0x55, 0xd1, 0xfc, 0xc7, 0xa6, 0xc9, - 0xf8, 0xe2, 0x06, 0x9e, 0xb8, 0x56, 0xcf, 0xed, 0x5d, 0x94, 0x58, 0x83, 0x7c, 0xfd, 0x80, 0x22, - 0x65, 0xa6, 0xf4, 0x78, 0x53, 0xe6, 0xfe, 0x16, 0xbc, 0xe2, 0x35, 0xb2, 0x57, 0xe7, 0x8b, 0x72, - 0x6f, 0xb6, 0x31, 0x06, 0x33, 0x07, 0xa2, 0x3b, 0x3c, 0x79, 0x05, 0xcd, 0x4c, 0xd5, 0xdc, 0x35, - 0x0f, 0xbc, 0x07, 0x39, 0x82, 0x9c, 0x43, 0x3b, 0x37, 0x85, 0x73, 0xce, 0x43, 0xee, 0x74, 0x30, - 0x72, 0x09, 0xbd, 0x90, 0x71, 0x91, 0x2a, 0xbc, 0x6f, 0x9c, 0x83, 0x7b, 0x74, 0x2d, 0xd0, 0xf4, - 0xec, 0xe2, 0x97, 0xf3, 0x15, 0xd7, 0xeb, 0x74, 0x31, 0x5e, 0xca, 0xcd, 0x44, 0x6c, 0x43, 0x3d, - 0x29, 0x1e, 0xd0, 0x15, 0x46, 0x93, 0x78, 0xf1, 0xed, 0x4a, 0x4e, 0xf6, 0xde, 0xd4, 0x45, 0xcb, - 0x5c, 0x28, 0x6f, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x52, 0x60, 0xca, 0xa7, 0x14, 0x08, 0x00, - 0x00, + // 911 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xcf, 0x6f, 0xdb, 0x36, + 0x14, 0x8e, 0x7f, 0x5b, 0xcf, 0x76, 0x96, 0xb2, 0xdd, 0xe6, 0x64, 0x6d, 0x67, 0x08, 0xc3, 0x96, + 0x16, 0x9b, 0x1d, 0xa4, 0x40, 0x76, 0xc8, 0x50, 0x2c, 0x42, 0x03, 0xd8, 0x87, 0xed, 0xc0, 0x05, + 0x28, 0xb0, 0x8b, 0x41, 0x4b, 0x4f, 0x36, 0x11, 0x5a, 0x14, 0x28, 0xaa, 0x99, 0xb1, 0xff, 0x66, + 0x87, 0x9d, 0xf6, 0xb7, 0xec, 0xb4, 0x3f, 0x68, 0x10, 0x45, 0xc9, 0xb1, 0xea, 0xb4, 0xbd, 0x91, + 0x7c, 0xdf, 0x7b, 0x7c, 0xfc, 0xf8, 0x7d, 0x24, 0x3c, 0x0d, 0xc5, 0x46, 0x23, 0x0f, 0xc4, 0xc4, + 0x97, 0x0a, 0x27, 0x77, 0x52, 0xdd, 0x86, 0x42, 0xde, 0x8d, 0x63, 0x25, 0xb5, 0x24, 0x83, 0x22, + 0x3a, 0xce, 0xa2, 0x27, 0xcf, 0x76, 0xc1, 0xbe, 0x8c, 0x02, 0xae, 0xb9, 0x8c, 0x72, 0xf4, 0xc9, + 0xf3, 0xdd, 0x30, 0x0f, 0x30, 0xd2, 0x3c, 0xe4, 0xa8, 0x6c, 0xbc, 0x92, 0xce, 0x23, 0x8d, 0x2a, + 0x64, 0x3e, 0xda, 0x70, 0xa5, 0x15, 0xc1, 0x35, 0x2a, 0x26, 0x12, 0x1b, 0x3d, 0xde, 0x8d, 0xea, + 0x4d, 0x8c, 0x45, 0xe8, 0xf9, 0x52, 0xca, 0xa5, 0xc0, 0x89, 0x99, 0x2d, 0xd2, 0x70, 0x12, 0xa4, + 0x8a, 0x6d, 0xfb, 0x72, 0xff, 0x84, 0xce, 0x2c, 0xf4, 0x84, 0xf4, 0x6f, 0xc9, 0x6b, 0x70, 0xca, + 0xae, 0x87, 0xb5, 0x51, 0xed, 0xb4, 0x77, 0x3e, 0x1a, 0xef, 0x1c, 0x72, 0xec, 0x49, 0x29, 0x90, + 0x45, 0xd7, 0x7f, 0xc4, 0x0a, 0x93, 0x84, 0xcb, 0x88, 0x6e, 0x53, 0xc8, 0x19, 0x38, 0x7a, 0x85, + 0xd1, 0x3c, 0x92, 0x01, 0x0e, 0xeb, 0x26, 0xff, 0x71, 0x25, 0xff, 0x57, 0x19, 0x20, 0xed, 0x66, + 0xa8, 0x6c, 0xe4, 0xfe, 0x57, 0x83, 0xde, 0x2c, 0xbc, 0x16, 0x09, 0xe6, 0x1d, 0xbc, 0x84, 0xa6, + 0xcf, 0x12, 0xb4, 0x9b, 0x7f, 0x51, 0x49, 0xb6, 0x7d, 0x52, 0x83, 0x21, 0xdf, 0x43, 0x4b, 0xea, + 0x15, 0xaa, 0x61, 0x7d, 0xd4, 0xf8, 0x00, 0x38, 0x07, 0x91, 0x73, 0x70, 0x50, 0x24, 0x98, 0xf7, + 0xd6, 0x78, 0xb0, 0xb7, 0xe9, 0x01, 0xed, 0x66, 0xb8, 0x6c, 0x9c, 0xed, 0x80, 0x4a, 0x49, 0x35, + 0x6c, 0x1a, 0xfc, 0x93, 0x0a, 0xfe, 0x3a, 0x8b, 0x4d, 0x0f, 0x68, 0x0e, 0xf2, 0x1c, 0xe8, 0x04, + 0x18, 0xb2, 0x54, 0x68, 0xf7, 0x0a, 0xc0, 0x53, 0x2c, 0xf2, 0x57, 0xa6, 0xcc, 0x2b, 0xe8, 0xf0, + 0x70, 0x9e, 0x55, 0xb5, 0xe7, 0x3a, 0x79, 0xaf, 0xd5, 0x92, 0x01, 0xda, 0xe6, 0x66, 0xe2, 0xbe, + 0x85, 0xee, 0x0d, 0x4b, 0x6e, 0x4d, 0x81, 0xd7, 0xd0, 0x57, 0x18, 0xa2, 0xc2, 0xc8, 0xc7, 0x39, + 0x0f, 0x6c, 0x95, 0xe3, 0x6a, 0x95, 0x52, 0x51, 0xd3, 0x03, 0xda, 0x2b, 0x13, 0x66, 0x81, 0xd7, + 0x03, 0xa7, 0x9c, 0xba, 0x7f, 0xd7, 0xa0, 0xff, 0xd6, 0x0a, 0xd9, 0x54, 0xf7, 0xe0, 0x50, 0xb0, + 0x34, 0xf2, 0x57, 0xb1, 0x60, 0xd1, 0x5c, 0x61, 0xf8, 0x29, 0xf5, 0x07, 0xdb, 0x14, 0x8a, 0x21, + 0xb9, 0x86, 0xa3, 0x24, 0x5d, 0xcc, 0x0b, 0x83, 0x98, 0x2a, 0xf5, 0x8f, 0x57, 0x39, 0x4c, 0xd2, + 0x45, 0xd1, 0x0b, 0xc5, 0x70, 0xb7, 0xd1, 0x7f, 0x6b, 0xd0, 0xcf, 0x1a, 0xfc, 0x05, 0x35, 0x0b, + 0x98, 0x66, 0x84, 0x40, 0x33, 0x62, 0xeb, 0x9c, 0x44, 0x87, 0x9a, 0x71, 0xc6, 0xad, 0xe6, 0x6b, + 0x94, 0xa9, 0xb6, 0x97, 0x74, 0x3c, 0xce, 0xf5, 0x3e, 0x2e, 0xf4, 0x3e, 0x7e, 0x63, 0xf5, 0x4e, + 0x0b, 0x24, 0xb9, 0x80, 0x8e, 0x42, 0xad, 0x38, 0x26, 0xc3, 0x96, 0x49, 0x7a, 0x5a, 0x69, 0x92, + 0xa2, 0x56, 0x9b, 0xdf, 0xb4, 0x62, 0x1a, 0x97, 0x1b, 0x5a, 0x80, 0xc9, 0xb7, 0x30, 0x30, 0xb6, + 0x54, 0x69, 0xac, 0xf9, 0x42, 0xe0, 0xb0, 0x3d, 0xaa, 0x9d, 0x76, 0x33, 0x36, 0x76, 0x96, 0xbd, + 0xcf, 0xe1, 0xf1, 0xce, 0xc2, 0xfc, 0x1d, 0x13, 0x29, 0xba, 0x13, 0x68, 0x5d, 0x09, 0xce, 0x12, + 0x72, 0x04, 0x8d, 0x77, 0x4c, 0xd9, 0x73, 0x64, 0x43, 0xf2, 0x04, 0x5a, 0x2c, 0x0b, 0x19, 0xd2, + 0x1c, 0x9a, 0x4f, 0xdc, 0x7f, 0x1a, 0xd0, 0x34, 0x57, 0x74, 0x08, 0x75, 0x7b, 0xed, 0x0e, 0xad, + 0xf3, 0x80, 0xfc, 0x08, 0xdd, 0xb5, 0x65, 0xc5, 0xd2, 0xfc, 0xd5, 0x1e, 0x2d, 0x17, 0xc4, 0xd1, + 0x12, 0x4c, 0xc6, 0xd0, 0xe6, 0x51, 0x9c, 0xea, 0x64, 0xd8, 0xd8, 0x6b, 0x1a, 0x8f, 0x47, 0x01, + 0x8f, 0x96, 0xd4, 0xa2, 0xc8, 0x4b, 0x78, 0x94, 0xc6, 0x89, 0x56, 0xc8, 0xd6, 0xc6, 0x39, 0x73, + 0x1e, 0x24, 0xc3, 0xe6, 0xa8, 0x71, 0xea, 0xd0, 0xcf, 0x8a, 0x40, 0xb6, 0xd5, 0x2c, 0x48, 0xc8, + 0x25, 0x1c, 0xca, 0x54, 0xc7, 0xa9, 0x9e, 0x9b, 0xee, 0x0d, 0xb9, 0x8d, 0x3d, 0xb6, 0x31, 0x1c, + 0xd0, 0x41, 0x8e, 0xbd, 0xca, 0xa1, 0xe4, 0x02, 0x1c, 0xcd, 0x92, 0xdb, 0xdc, 0x9e, 0x6d, 0x73, + 0xa4, 0x2f, 0x2b, 0x79, 0x85, 0x1d, 0x32, 0x8b, 0xea, 0xc2, 0x1a, 0x1e, 0x0c, 0x4a, 0xd1, 0x99, + 0xdc, 0xce, 0x5e, 0x3a, 0xee, 0x0b, 0x7e, 0x7a, 0x40, 0xfb, 0x77, 0xf7, 0x0d, 0xf0, 0x13, 0xf4, + 0x16, 0xc6, 0xad, 0x79, 0x85, 0xee, 0x5e, 0xdd, 0x6e, 0xfd, 0x3c, 0x3d, 0xa0, 0xb0, 0x28, 0x67, + 0x5e, 0x17, 0xda, 0x9a, 0xa9, 0x25, 0x6a, 0x97, 0xc0, 0x51, 0xb1, 0x4f, 0x41, 0xbd, 0xfb, 0x33, + 0x0c, 0xab, 0x6b, 0x6f, 0xf2, 0x47, 0x22, 0x21, 0xdf, 0x54, 0xe5, 0x94, 0x5d, 0x70, 0xb7, 0x22, + 0x26, 0xf7, 0xaf, 0xc6, 0xb6, 0xec, 0x0d, 0xae, 0x63, 0xc1, 0x34, 0x92, 0x17, 0xa5, 0x20, 0x3e, + 0xe4, 0x30, 0xa3, 0x95, 0xcb, 0xf7, 0xb4, 0xf2, 0xf5, 0x03, 0xe4, 0xec, 0xd1, 0xcb, 0x25, 0x38, + 0xe5, 0x47, 0x64, 0x5f, 0xcd, 0x67, 0xd5, 0x6b, 0xd9, 0xc4, 0x18, 0xcc, 0x0a, 0x10, 0xdd, 0xe2, + 0xc9, 0x0b, 0x68, 0x65, 0x84, 0xe6, 0x82, 0x79, 0xe0, 0x2b, 0xc8, 0x11, 0xe4, 0x0c, 0x3a, 0xb9, + 0x1e, 0x0a, 0xd1, 0x3c, 0x24, 0xcc, 0x02, 0x46, 0x2e, 0xa0, 0x1f, 0x32, 0x2e, 0x52, 0x85, 0xf7, + 0x35, 0xb3, 0x77, 0x8f, 0x9e, 0x05, 0x9a, 0xcb, 0xbe, 0x81, 0x47, 0xc5, 0xe9, 0xe6, 0xf6, 0xb9, + 0x4e, 0xac, 0x68, 0xbe, 0xfb, 0x08, 0x2f, 0xc5, 0xc5, 0xd1, 0xa3, 0x75, 0x65, 0xc5, 0x3b, 0xff, + 0xfd, 0x6c, 0xc9, 0xf5, 0x2a, 0x5d, 0x8c, 0x7d, 0xb9, 0x9e, 0x88, 0x4d, 0xa8, 0x27, 0xe5, 0x8f, + 0xbc, 0xc4, 0x68, 0x12, 0x2f, 0x7e, 0x58, 0xca, 0xc9, 0xce, 0x27, 0xbd, 0x68, 0x9b, 0x17, 0xea, + 0xd5, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xda, 0x5f, 0xda, 0xc1, 0x65, 0x08, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/core/workflow.pb.validate.go b/gen/pb-go/flyteidl/core/workflow.pb.validate.go index 9d92725a08..264d6817b4 100644 --- a/gen/pb-go/flyteidl/core/workflow.pb.validate.go +++ b/gen/pb-go/flyteidl/core/workflow.pb.validate.go @@ -793,6 +793,71 @@ var _ interface { ErrorName() string } = NodeValidationError{} +// Validate checks the field values on WorkflowMetadata with the rules defined +// in the proto definition for this message. If any rules are violated, an +// error is returned. +func (m *WorkflowMetadata) Validate() error { + if m == nil { + return nil + } + + return nil +} + +// WorkflowMetadataValidationError is the validation error returned by +// WorkflowMetadata.Validate if the designated constraints aren't met. +type WorkflowMetadataValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WorkflowMetadataValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WorkflowMetadataValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WorkflowMetadataValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WorkflowMetadataValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WorkflowMetadataValidationError) ErrorName() string { return "WorkflowMetadataValidationError" } + +// Error satisfies the builtin error interface +func (e WorkflowMetadataValidationError) 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 %sWorkflowMetadata.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WorkflowMetadataValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WorkflowMetadataValidationError{} + // Validate checks the field values on WorkflowMetadataDefaults with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. @@ -880,10 +945,10 @@ func (m *WorkflowTemplate) Validate() error { } } - if v, ok := interface{}(m.GetMetadataDefaults()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetMetadata()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return WorkflowTemplateValidationError{ - field: "MetadataDefaults", + field: "Metadata", reason: "embedded message failed validation", cause: err, } @@ -940,6 +1005,16 @@ func (m *WorkflowTemplate) Validate() error { } } + if v, ok := interface{}(m.GetMetadataDefaults()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WorkflowTemplateValidationError{ + field: "MetadataDefaults", + reason: "embedded message failed validation", + cause: err, + } + } + } + return nil } diff --git a/gen/pb-go/flyteidl/service/admin.swagger.json b/gen/pb-go/flyteidl/service/admin.swagger.json index 8901f1288e..2545dc5625 100644 --- a/gen/pb-go/flyteidl/service/admin.swagger.json +++ b/gen/pb-go/flyteidl/service/admin.swagger.json @@ -5094,6 +5094,10 @@ ], "default": "UNDEFINED" }, + "coreWorkflowMetadata": { + "type": "object", + "description": "Metadata for the entire workflow.\nTo be used in the future." + }, "coreWorkflowMetadataDefaults": { "type": "object", "properties": { @@ -5126,8 +5130,8 @@ "$ref": "#/definitions/coreIdentifier", "description": "A globally unique identifier for the workflow." }, - "metadata_defaults": { - "$ref": "#/definitions/coreWorkflowMetadataDefaults", + "metadata": { + "$ref": "#/definitions/coreWorkflowMetadata", "description": "Extra metadata about the workflow." }, "interface": { @@ -5151,6 +5155,10 @@ "failure_node": { "$ref": "#/definitions/coreNode", "description": "+optional A catch-all node. This node is executed whenever the execution engine determines the workflow has failed.\nThe interface of this node must match the Workflow interface with an additional input named \"error\" of type\npb.lyft.flyte.core.Error." + }, + "metadata_defaults": { + "$ref": "#/definitions/coreWorkflowMetadataDefaults", + "title": "workflow defaults" } }, "description": "Flyte Workflow Structure that encapsulates task, branch and subworkflow nodes to form a statically analyzable,\ndirected acyclic graph." diff --git a/gen/pb-go/flyteidl/service/flyteadmin/README.md b/gen/pb-go/flyteidl/service/flyteadmin/README.md index 6798ccc602..74afd0d0eb 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/README.md +++ b/gen/pb-go/flyteidl/service/flyteadmin/README.md @@ -226,6 +226,7 @@ Class | Method | HTTP request | Description - [CoreVoid](docs/CoreVoid.md) - [CoreWorkflowExecutionIdentifier](docs/CoreWorkflowExecutionIdentifier.md) - [CoreWorkflowExecutionPhase](docs/CoreWorkflowExecutionPhase.md) + - [CoreWorkflowMetadata](docs/CoreWorkflowMetadata.md) - [CoreWorkflowMetadataDefaults](docs/CoreWorkflowMetadataDefaults.md) - [CoreWorkflowNode](docs/CoreWorkflowNode.md) - [CoreWorkflowTemplate](docs/CoreWorkflowTemplate.md) diff --git a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml index fbb23ee4b8..bf68385e56 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml +++ b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml @@ -6034,6 +6034,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -6854,6 +6855,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -7906,6 +7908,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -8839,6 +8842,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -9659,6 +9663,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -10711,6 +10716,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -11600,6 +11606,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -12420,6 +12427,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -13472,6 +13480,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -14302,6 +14311,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -15122,6 +15132,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -16174,6 +16185,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -17522,6 +17534,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -18369,6 +18382,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -19189,6 +19203,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -20241,6 +20256,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: @@ -22530,6 +22546,9 @@ definitions: - "ABORTED" - "TIMED_OUT" default: "UNDEFINED" + coreWorkflowMetadata: + type: "object" + description: "Metadata for the entire workflow.\nTo be used in the future." coreWorkflowMetadataDefaults: type: "object" properties: @@ -22572,9 +22591,9 @@ definitions: id: description: "A globally unique identifier for the workflow." $ref: "#/definitions/coreIdentifier" - metadata_defaults: + metadata: description: "Extra metadata about the workflow." - $ref: "#/definitions/coreWorkflowMetadataDefaults" + $ref: "#/definitions/coreWorkflowMetadata" interface: description: "Defines a strongly typed interface for the Workflow. This can\ \ include some optional parameters." @@ -22604,6 +22623,9 @@ definitions: \ this node must match the Workflow interface with an additional input named\ \ \"error\" of type\npb.lyft.flyte.core.Error." $ref: "#/definitions/coreNode" + metadata_defaults: + title: "workflow defaults" + $ref: "#/definitions/coreWorkflowMetadataDefaults" description: "Flyte Workflow Structure that encapsulates task, branch and subworkflow\ \ nodes to form a statically analyzable,\ndirected acyclic graph." example: @@ -22710,6 +22732,7 @@ definitions: - null map: bindings: {} + metadata: {} failure_node: branch_node: if_else: diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_core_workflow_metadata.go b/gen/pb-go/flyteidl/service/flyteadmin/model_core_workflow_metadata.go new file mode 100644 index 0000000000..31902b9d6d --- /dev/null +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_core_workflow_metadata.go @@ -0,0 +1,14 @@ +/* + * 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 + +// Metadata for the entire workflow. To be used in the future. +type CoreWorkflowMetadata struct { +} diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_core_workflow_template.go b/gen/pb-go/flyteidl/service/flyteadmin/model_core_workflow_template.go index ffb9162b32..0bc839b1f1 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_core_workflow_template.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_core_workflow_template.go @@ -14,7 +14,7 @@ type CoreWorkflowTemplate struct { // A globally unique identifier for the workflow. Id *CoreIdentifier `json:"id,omitempty"` // Extra metadata about the workflow. - MetadataDefaults *CoreWorkflowMetadataDefaults `json:"metadata_defaults,omitempty"` + Metadata *CoreWorkflowMetadata `json:"metadata,omitempty"` // Defines a strongly typed interface for the Workflow. This can include some optional parameters. Interface_ *CoreTypedInterface `json:"interface,omitempty"` // A list of nodes. In addition, \"globals\" is a special reserved node id that can be used to consume workflow inputs. @@ -23,4 +23,5 @@ type CoreWorkflowTemplate struct { Outputs []CoreBinding `json:"outputs,omitempty"` // +optional A catch-all node. This node is executed whenever the execution engine determines the workflow has failed. The interface of this node must match the Workflow interface with an additional input named \"error\" of type pb.lyft.flyte.core.Error. FailureNode *CoreNode `json:"failure_node,omitempty"` + MetadataDefaults *CoreWorkflowMetadataDefaults `json:"metadata_defaults,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/openapi.go b/gen/pb-go/flyteidl/service/openapi.go index 818adcf8fa..2c6de9579c 100644 --- a/gen/pb-go/flyteidl/service/openapi.go +++ b/gen/pb-go/flyteidl/service/openapi.go @@ -77,7 +77,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\xfb\x73\x23\xb9\x91\x27\xfe\xfb\xfc\x15\xf8\xea\x2e\x62\xa6\x6d\x4a\x3d\xb6\xd7\x1b\xbe\xde\xd8\xf8\x06\x47\x62\xf7\xc8\xa3\x96\x64\x3d\xa6\xcf\xb1\x74\xc8\x60\x15\x48\xc2\x2a\xa2\x68\x00\x25\x35\xed\x98\xff\xfd\x02\x89\x47\x01\xf5\x62\x15\x49\x49\x94\xa6\xf6\xe2\x3c\x6a\x92\x85\x4a\x00\x89\x44\x3e\x3e\x99\xf9\xef\x6f\x10\x3a\x10\x8f\x78\x36\x23\xfc\xe0\x03\x3a\xf8\xfd\xd1\xf7\x07\x03\xf5\x19\x65\xd3\xf4\xe0\x03\x52\xdf\x23\x74\x20\xa9\x4c\x88\xfa\x7e\x9a\xac\x24\xa1\x71\xf2\x5e\x10\xfe\x40\x23\xf2\x1e\xc7\x0b\xca\x8e\x96\x3c\x95\x29\x3c\x88\xd0\xc1\x03\xe1\x82\xa6\x4c\xfd\xdc\xfc\x89\x58\x2a\x91\x20\xf2\xe0\x1b\x84\x7e\x81\xe1\x45\x34\x27\x0b\x22\x0e\x3e\xa0\xff\xd1\x0f\xcd\xa5\x5c\xda\x01\xd4\xdf\x42\xfd\xf6\x6f\xf0\xdb\x28\x65\x22\x0b\x7e\x8c\x97\xcb\x84\x46\x58\xd2\x94\xbd\xff\x87\x48\x59\xfe\xdb\x25\x4f\xe3\x2c\x6a\xf9\x5b\x2c\xe7\x22\x9f\xe3\x7b\xbc\xa4\xef\x1f\x7e\xf7\x1e\x47\x92\x3e\x90\xbb\x04\x67\x2c\x9a\xdf\x2d\x13\xcc\xc4\xfb\x7f\xd3\x58\xcd\xf1\x1f\x24\x92\xbf\xc0\x3f\xe2\x74\x81\x29\xd3\x7f\x33\xbc\x20\xbf\xb8\x71\x10\x3a\x98\x11\xe9\xfd\x13\xa1\x83\x98\x88\x88\xd3\xa5\x34\xab\x72\x45\x24\xa7\xe4\x81\x20\x39\x27\x48\xbf\x0e\xe9\xd7\x21\xf5\x3a\x64\x57\x4d\x2c\x49\x44\xa7\x94\xc4\x68\xb2\x42\x94\x2d\x33\x89\x38\xf9\x67\x46\x84\x44\x53\x9a\x48\xc2\xc5\x91\x59\x32\x78\x4b\xba\x24\x1c\xe6\x79\x1a\xab\xb7\x7c\x22\x72\x08\x63\x9f\xc1\xd0\x97\x09\x66\xfe\xaf\x39\x11\xcb\x94\x09\x22\x02\x52\x11\x3a\xf8\xfd\xf7\xdf\x17\x3e\x2a\xcf\x60\x88\x44\x16\x45\x44\x88\x69\x96\x20\x3b\x92\x4f\x0c\x3c\x04\x9b\x8c\x4b\x83\x21\x74\xf0\xbf\x39\x99\xaa\x71\xfe\xd7\xfb\x98\x4c\x29\xa3\x6a\x5c\xa1\x79\xc9\xa3\x36\x78\xea\x97\x6f\xaa\xfe\xfe\xc5\x9b\xd1\x12\x73\xbc\x20\x6a\x59\xdc\xee\xeb\xff\x2b\xcc\x45\xed\x97\x7a\x79\xbe\xa7\x45\xc2\x0b\xb3\x3d\xc7\x0b\x82\xd2\x29\x6c\x97\x79\x02\xfe\xe6\x44\xa4\x19\x8f\x08\x9a\x90\x24\x65\x33\x81\x64\x5a\x5a\x03\x0a\x23\x28\x56\x2b\x7e\xa3\xb6\x92\x72\xa2\xf6\x4a\xf2\x8c\x14\xbe\x95\xab\x25\x10\x29\x24\xa7\x6c\xe6\x2f\xc5\x2f\x83\x56\x53\xd3\x1c\xda\x61\x66\xfa\x81\xda\x89\x8d\xd9\xd0\xfe\x24\xc2\x0c\x4d\x08\x52\xe7\x92\xc6\x84\x93\x18\x61\x81\x30\x12\xd9\x44\x10\x89\x1e\xa9\x9c\x53\xa6\xfe\xad\xd9\x37\xb2\x6b\xb6\x3f\x6b\x03\x7f\x36\xaf\xcc\xad\x20\x5c\x11\xfe\x40\x63\x12\xa3\x07\x9c\x64\x04\x4d\x53\x1e\x2c\xcf\xd1\x98\xdd\xcc\xd5\x3a\x2c\x26\x94\xc1\xc9\x53\x6b\x69\x39\xe4\xb7\x76\xb9\x7e\x8b\xd4\xfb\x50\xc6\xe8\x3f\x33\x92\xac\x10\x8d\x09\x93\xea\x5c\x8b\xe2\x68\xbf\x4d\xe1\xfd\x38\x41\x87\x48\xad\x33\xe1\x12\xd6\x3b\x65\x92\x7c\x95\x02\x1d\xa2\x84\xde\x13\xf4\xed\x19\x15\x12\x0d\x2f\x4f\xbf\x1d\xa0\x6f\xcf\x72\xc1\x21\xbe\x7d\x86\x15\x76\x7f\xff\xcd\x3b\x7a\x12\xcf\x8a\x87\xee\x60\xa8\x4e\xf3\xb5\xbe\x26\xf2\x11\xfe\xf6\x8d\x3f\x8e\xd9\xaf\x66\xd9\x9b\x0b\x5e\x23\x75\xbb\xc8\xda\x8f\x44\x46\xf3\x35\x82\x56\x6c\x29\x69\xd5\x76\x14\x45\xad\x78\x5d\xb2\x56\x4d\xe1\xa9\xe5\xed\x36\xc2\x16\x4b\x38\x05\x98\x32\x7d\x68\xdc\x19\x0a\x77\x06\xbd\x9c\x58\xd9\x46\xde\x7a\xb3\xf1\x44\xae\x95\xa4\xde\x4a\xec\xc9\x5c\x13\xba\xa0\xeb\xf6\xf1\x94\xc5\x4a\xed\x32\x42\x8e\x65\x8b\x09\xe1\x6a\xea\x56\xdc\xc1\x0c\x27\x4a\xfc\xc9\x8c\x33\x12\xd7\x4c\xed\x9f\x19\xe1\xab\x86\xb9\x4d\x71\x22\xea\x26\x47\x99\x24\x4a\xaf\x2d\x7c\x3d\x4d\xf9\x02\x4b\xf3\x83\xff\xfc\x8f\xae\x93\x97\xe9\x3d\x59\xb7\xcf\xa7\x7a\xd7\x22\x2c\x60\xbb\x17\x59\x22\xe9\x32\x21\x68\x89\x67\x44\x98\x55\xc8\x12\x29\x06\xf0\x33\xa5\x4b\x13\x7e\xe8\x6e\x1b\x78\x83\xbd\x65\x33\x01\x9f\xa0\xa9\x13\x64\x8c\x7c\x95\x30\xd2\x98\xc1\x3d\x0b\x4b\xe4\xdf\x1e\x4f\xb0\x94\x9b\xf1\x89\x48\xb9\xbc\x9b\xac\x8e\xee\x49\xe9\xbd\xb5\xdc\x82\x19\xc2\x52\x72\x3a\xc9\x24\x51\xf3\x56\x63\xd8\x7b\x12\x44\x9f\xbe\x8c\x85\xba\x7c\x2f\x4e\x2e\xbe\xbb\xc7\x92\xa7\x33\xcc\xde\x7d\x40\xc3\x38\x46\x9a\x50\xf5\x1b\x1a\xeb\x2b\x79\x4e\x38\x39\x42\x37\x73\x2a\x90\x98\xa7\x59\x12\x23\x46\x1e\x08\x57\x6b\x4b\x16\x4b\xb9\xda\xbb\xd5\x8a\x29\x27\x11\x2c\x4c\x97\x13\xe6\x9e\x52\x8b\xa6\x8c\x9e\x95\x5e\xba\x7b\xb2\x02\xc5\xa5\xbc\x7c\xcf\xc0\x2f\x85\x6f\x09\xcb\x16\x85\xbb\x02\x3e\x3f\x19\x5d\x1f\x8f\xce\x4f\x4e\xcf\x3f\x15\x9e\x50\x6a\x84\xfb\x2a\xf8\xe6\x6f\xa5\xb5\x99\xe2\x2c\x81\x53\xed\x8d\xf6\x6c\x8a\x4b\x34\xa7\x49\xcc\x09\x7b\x2f\xb1\xb8\xbf\x23\x5f\x49\x94\xe9\x7b\xf6\xdf\xe1\x07\x77\x4a\xfb\x4c\x63\x12\x7e\x12\xfc\x23\x57\x77\x3a\x3f\xea\xac\xd2\xce\x4f\x82\x0d\xdb\xee\x39\xf8\x84\xc6\x95\xbf\x86\x4f\xd6\xcc\xc1\xfe\xa6\x81\x58\xfb\x93\x5a\xaa\xec\x0f\x8c\x02\x57\xf9\x1b\x4e\x24\x5f\xdd\x61\x29\xd5\x29\xdf\x40\x67\x84\x2d\x45\x6a\xb6\x28\xdf\x4f\xa3\x3e\x6a\x45\x11\x64\xb7\xd3\x1c\x15\x05\xf9\x2f\xd7\xe9\x8b\xe7\x69\x4c\x46\x6e\xd8\x8f\x29\xbf\xc1\xe2\xfe\x35\xe8\x8c\x01\xe1\xcf\xa1\x36\x6e\x7a\x80\xde\x9c\x51\xbf\xa1\x38\xe8\x5d\x00\xdb\xaf\x64\x5b\x87\x41\xca\x91\x58\x09\x49\x16\x6b\x5d\x07\xaf\x67\x21\x8c\xbc\xdf\x57\x82\x0b\x57\xce\xaf\xe0\xd4\x87\x17\x68\x7f\xbc\x3b\x2c\xd9\xae\x1c\x7f\xfb\x3e\x4f\x1b\x82\x69\x9e\xea\xb5\xdd\x3e\x1b\x70\x30\x7c\xb2\xf7\xd3\x0c\x54\xbb\x5d\x13\xf9\x44\x5e\x83\xda\xbd\xb2\xab\x7d\x07\x04\xac\x31\xf9\x42\xd7\xb1\x3b\x7f\xea\x51\xdf\xb9\xa2\x3d\x66\x52\xd9\xbc\xc6\xb7\x44\x38\x8a\x52\xae\x55\xc1\xb8\x41\xbc\x3d\x9f\xd1\x77\x7b\x7e\x7d\x39\x3a\x3e\xfd\x78\x3a\x3a\x29\x5b\x7d\x37\xc3\xeb\x9f\xca\x9f\x7e\xb9\xb8\xfa\xe9\xe3\xd9\xc5\x97\xf2\x37\x67\xc3\xdb\xf3\xe3\x1f\xef\x2e\xcf\x86\xe7\xad\xed\x44\x9f\x80\x8e\xbb\xd9\x3b\xc0\x76\xe9\x00\x1b\xbc\x5d\x0f\x98\x89\x1e\xb4\xf7\x7e\xa1\x84\x0a\xa9\x16\xc8\x3c\x89\x96\x58\x08\x7d\xff\x6a\x0a\x8e\xc6\xec\x73\xca\x09\xa2\x6c\x9a\xa2\x14\x82\x43\x42\xf2\x2c\x92\x94\xcd\xdc\x43\x1f\xd0\x38\xfb\xfe\xfb\x3f\x44\x67\x94\xdd\xc3\x5f\x64\x1f\x17\xa7\x77\x0f\x6e\xb2\x5a\xbd\x7b\xd0\xff\xee\x75\xb8\x07\x63\x2c\xf1\x7b\xdf\x2b\xf8\x34\x78\x12\x1d\xb9\xc4\x2c\x46\x69\x26\xd5\x9f\xea\xbd\x68\xca\xd3\x85\x3a\x37\xe4\x2b\x15\x20\x25\x1e\x53\x7e\x3f\x4d\xd2\xc7\x76\xde\xaa\x4f\x44\x3a\x7f\xcf\x09\x96\xf8\x35\x38\xa9\xbe\x98\x19\x3a\xc2\x3f\x11\xa9\x68\xbf\x32\x6f\xe9\xa1\x25\x3d\xb4\xe4\x65\xa1\x25\x7b\xe5\x29\x7a\x7a\xd9\x17\xba\x95\xb4\x00\xac\x89\x7a\xd4\x06\x35\x6a\x62\x16\x5e\x48\xe2\x29\x85\x66\x18\x08\x58\x23\x30\x03\x27\xf9\x6b\x11\x9a\x01\xd1\xcf\x2f\x30\x7f\x15\x3e\xfc\xde\x45\xbf\xe1\x42\xbd\x4a\xb9\xda\xf2\xca\x78\x36\x07\xfb\xd3\xcb\xf9\x52\xf8\xbb\x4b\xbc\xbb\x43\x80\xbb\x75\x44\x7b\x4d\x08\xbb\x32\x66\x5d\x15\xa4\x2e\x47\xa5\x2b\xc3\xd0\x5b\xc5\x9d\xbb\x5e\x49\xed\x23\xce\x9f\x88\xbc\xc1\xe2\xfe\xd5\x5d\x49\x01\xd1\xcf\x7f\x25\xfd\x4a\x03\xcd\x7d\x64\xf9\x09\x97\xee\xad\x5f\x64\xfb\x1b\x3b\xfe\x15\x04\x8b\xfb\xe8\x70\xa7\x35\x7a\x5b\xe1\xe0\xb7\x1a\xff\x7d\x9d\x01\xdf\x3e\xc2\xbb\xbf\x11\xde\x27\xb5\x83\xc8\x03\x61\x52\x80\xc7\xcb\x57\xa7\x0f\x96\xa9\x68\x56\xff\x8f\x39\xc1\x92\x20\x5c\x70\x35\x21\x18\x10\x71\x12\xa5\x3c\x56\x6a\x3f\x46\xcb\x39\x16\x04\x49\x8e\x99\xa0\xeb\x54\x7f\x3d\x2a\xf8\x76\xd4\x38\xaf\x41\xeb\x0f\x1c\x51\x40\xf5\x73\xe9\xfc\x93\x34\x2e\x1d\x0d\x7d\x6a\xaa\xbe\x69\x16\x2f\x3b\x9b\x3a\xe4\xa1\xb5\x99\xf9\x13\x72\xb3\x12\x65\x1b\x72\x73\x68\xa5\xee\x84\x9b\xc1\x2c\x7c\x2d\xdc\x1c\xd8\xb0\xbf\x2e\x6e\xae\x9a\xfa\x3e\x70\xb3\x0d\x80\x6e\xc8\xd1\xe5\xf8\xe9\x4e\xb8\xda\x05\x2d\x5f\x0b\x67\x97\xa2\xac\xbf\x2e\xee\xae\x9b\xfe\xcb\x72\xb8\xf3\xbd\xee\x8a\xb7\xd7\x33\xae\x5b\x80\xd7\xc0\xb4\x8e\x58\x4d\xfb\xaf\x86\x5b\x4b\xf3\xde\x13\x36\x7d\xcf\x89\xce\xa9\xea\xc4\xaf\x57\xe6\xa1\xce\x1c\x6b\x1f\xec\x79\xf6\x35\xf1\xac\xdd\xb5\xfd\xe1\xda\x3a\x04\x57\xf7\x3c\xc3\x06\x58\x96\x40\x0b\x2c\xa3\xb9\xfa\x52\x87\x84\x5a\x16\xa3\xc8\x13\x0b\x5f\x15\x77\x3f\x47\x36\xe1\xdb\x76\xfe\xf6\x4e\xdf\x5f\x61\xd1\x9f\xbd\x41\x28\xf7\x59\x11\x3b\xcc\x8a\xa0\xa2\xcf\x8a\xe8\xb3\x22\xda\x2e\x50\x9f\x15\xd1\x67\x45\x78\xdf\xbd\x8e\xac\x88\xa7\x4f\x88\xd8\x4d\xd6\xc3\xab\x52\xa2\x7b\x05\xba\x57\xa0\xfb\xd4\x06\x37\xb5\x5d\x09\x30\xfb\xf4\x41\x4c\x12\x22\x49\xa3\xf8\xb9\x21\x7c\xa1\x6c\x83\xa0\xc0\x6f\x45\xd0\x20\xaf\x1d\xe4\x38\x08\xdc\x1b\x4d\x72\xc9\x8d\xfd\x3a\xa5\x93\x23\xbf\xcf\xc4\xea\xc5\x55\x2f\xae\x36\x99\xda\xfe\x78\x65\xbd\xc3\xfc\xa2\x6e\x59\xaf\x5c\xf0\x1d\x8d\x77\x53\x31\xd8\xa9\x8d\x7e\xbd\xe0\x7c\x29\x82\x92\xad\x9b\x39\x69\xf3\xe2\xbb\xa7\xf1\xab\xf0\xd3\x2a\x39\x12\x8f\x98\xa4\x72\xe5\x50\x6a\xbc\x2f\x1c\xdc\x17\x0e\x6e\x3f\xd7\xde\x43\xb8\x43\x0f\x61\x5f\x38\xb8\xf7\x81\xf5\x3e\xb0\x57\xee\x03\xf3\x5b\x1d\x6c\x84\xd8\x61\x31\xe2\x64\x46\x85\x24\x1c\xe1\x1a\x6d\x65\x3d\x84\xe7\xb5\xf6\x88\x69\x0d\x88\xf0\x5f\x7b\xf0\x1f\x2d\xc8\xbf\x32\xd7\x0b\x9c\x81\x09\x8e\x5d\x43\x08\xd0\x29\x16\x78\x85\xe6\xf8\x81\xa0\x29\xa6\x89\xb6\x18\x8c\xd8\x68\x98\x61\x13\x41\xff\xa7\x1b\x41\x38\x24\x87\x93\x29\xe1\x84\x45\x5a\x0c\x6a\xad\x20\xc2\x09\x22\xa0\xad\xe9\xdf\xcc\x95\xfd\x96\x70\x82\xe3\x15\x9a\x10\xc2\x1c\xdb\x54\x5c\xa1\x35\x34\xef\x44\x9b\x7b\x71\xfb\xa5\xcc\x3d\xfb\x62\xbd\x3c\x09\xac\xa4\x5a\x24\x6c\x6f\xb5\x88\xdf\xbf\x2e\x51\xd1\xa3\x4b\x7a\x6f\xd3\xcb\x7b\x9b\x7a\x74\x49\x6f\x3b\xee\x81\xed\xd8\xa3\x4b\x7a\x74\x49\x6f\x59\xb7\x5e\xad\xde\xb2\xf6\xbf\x7b\x7d\x96\xf5\x8e\xf1\x25\xcf\xa5\x61\xf7\x0a\xb6\xfd\x5d\xaf\x60\xf7\x0a\xf6\x1b\x55\xb0\xf7\x63\x85\x7b\xed\xba\xd7\xae\x7b\xed\xba\xd7\xae\x7b\xed\xba\xd7\xae\xcd\x53\xbb\xd4\xae\xe1\x2f\x5b\x26\x73\x6b\x28\x77\xf7\x28\xd7\x27\x22\x5f\x6b\x88\xab\x57\xa9\x7b\x95\x7a\xbf\x55\xea\xbd\x99\xd0\xdb\x2b\x7b\xd7\x17\x8e\x2b\xdd\x8f\x6f\xa1\x70\x9c\x7d\xfa\x60\x99\x35\x5f\x7f\xb7\xcb\xd8\xe6\x11\x08\x89\x65\x06\x96\x46\x8b\xab\x10\x0d\x25\x5a\xa4\x4a\xef\x66\x24\xf8\x8d\xe5\x79\x0d\x22\x98\xd1\x07\xc2\x90\xc5\xcb\x0e\x8c\x64\x1b\x80\xf1\xfb\x8b\x15\x70\x26\x81\x01\x4b\x84\x91\xa4\x0b\x72\x84\x4e\xa7\x9a\x81\x22\x9c\x24\x48\x10\x29\x0a\xc8\x13\xa5\x90\x99\x87\x58\x9c\xd3\x6a\xdf\x4d\x73\x20\x82\xfe\xd9\xc0\x9e\xbf\x2c\x91\xfa\x34\xda\xc1\x1f\x69\x92\x28\x1a\x0c\xd3\x82\xf0\x59\x10\x9e\xd8\x27\x83\xd7\xda\x1f\x2f\x70\xac\xac\x09\x8f\x84\x3c\xd3\xc2\xff\x3d\x88\x79\x2a\x1c\x94\x22\x78\x5e\x3f\x7d\x84\x8c\xdd\xa7\x0b\x3c\xb5\x22\x63\x8e\x63\x25\xf6\xa3\x39\x89\xb3\x84\x20\x2c\x44\x1a\x51\x2c\x49\x8c\xa8\xbe\x16\x10\x95\xd6\x4a\xb4\x3f\xb2\xaf\x8e\xa9\xc0\x93\x84\xc4\x66\x8d\x49\x8e\xec\x68\xa4\x9c\x0a\x34\x21\x6a\x89\xd5\xcd\x13\xae\xfe\x5c\x5f\x4a\x15\xd4\x78\xa4\x90\x32\x25\x84\x69\x42\x1a\x94\x2a\xcd\x9c\xaf\x55\xaf\xd2\xd4\xf7\x79\x28\xbd\x96\xd5\x6b\x59\x9d\x26\xf4\xa6\xb4\xac\x3d\x42\xa3\x59\x81\xf4\xa2\x68\x34\x88\x59\x29\xc9\x7f\xe7\x9c\x52\x62\x33\x7b\xdd\xf9\xfd\x3e\xdb\x21\x87\x6e\xc4\xe3\x94\x4d\xe9\x2c\xe3\xc6\x01\x3f\x51\x27\x76\x6d\x60\xac\x62\x9c\x57\x71\xe3\x54\x93\xfe\x5c\x17\x4f\x17\x1b\x02\x1d\x22\xa5\x5d\xdf\x5d\x8d\xae\x2f\x6e\xaf\x8e\x47\x1f\xd0\x70\xb9\x4c\xa8\x76\xec\x47\x99\x90\xe9\x82\xfe\x4b\x4d\x43\x17\x75\x75\x92\xdb\xa8\x21\x02\x14\x0e\x88\x24\x88\xa3\x31\x43\x87\xe8\xf8\xec\xf6\xfa\x66\x74\x55\x33\xa0\x61\x02\x68\x65\x42\x16\xcb\x04\xb4\x92\xfb\x6c\x42\x38\x23\x92\x08\x14\x25\x19\xc0\x9a\x5d\x7c\x41\x0f\x3a\xfa\xbf\xa3\xe3\xdb\x9b\xd3\x8b\xf3\xbb\xbf\xdc\x8e\x6e\x47\x1f\x90\xe5\x26\x35\xac\xa2\x4b\x51\x11\xaf\x18\x5e\x28\xf3\x27\xac\x3e\xfb\xcf\x8c\x64\xa0\x04\xd1\x19\x5b\x10\x26\x8b\x23\x5a\x82\xcf\x86\x3f\x8c\xce\xc2\x91\xe7\x04\xfd\xf4\xa7\x9c\xa8\x04\x4f\x48\x62\x02\x1e\xe0\xcf\x57\x02\x3b\x7f\x91\x89\x84\x64\x25\x31\xf9\xdc\xb6\x54\xb0\xa1\x65\xeb\xa8\xb8\x43\xe5\x5f\x14\x96\xbb\xe9\x07\xc1\xea\xb5\x36\xb6\x42\x0a\x9f\x4d\xd2\xa9\x03\x12\xdf\x01\x42\x9a\x12\xf1\xfe\xdf\xc1\x41\xf9\xe5\xc9\x2a\x52\x20\x2f\x8d\xce\x48\xbe\x75\xcd\xe4\xf2\x07\x5e\x83\xbc\xf3\xc9\x7d\x49\xd9\xb6\x23\x7d\x62\xbf\x5c\x16\xdd\xb5\xb5\xde\xea\xe8\xad\x8e\xea\x95\xe9\xe1\x12\x35\x2b\xbc\xab\x6b\x67\x13\x2f\xdf\x94\x92\x24\x16\x25\x37\x4d\x70\x6d\xac\x75\xc9\xbc\xde\x1b\xe3\x79\x9d\x32\x5d\x74\xe3\x2b\xe7\x3f\x37\x0e\x75\xb5\x5b\x0b\x22\x31\xf4\xe6\x93\x29\xca\x80\xf4\xfe\x16\x2a\x2f\x73\x7f\x0b\xf5\xb7\x50\xed\xca\xf4\xb7\xd0\x2b\x76\x5e\x55\x48\xee\x17\xf5\x5e\xad\xb3\xe9\xb6\x2a\x0c\x53\xe1\xda\x2a\xdb\x72\x02\x89\x39\xe6\xba\x05\x48\x94\x2e\x16\x29\xf3\x22\xaf\xab\x25\x19\x20\x17\x6c\x03\x37\x05\x90\xb1\xce\xf3\x95\xbf\x86\xbe\x0e\x9f\x97\xb7\x2e\xcf\x81\x0a\xef\xed\xc0\x35\x0b\xd4\x57\xd0\xe9\x2b\xe8\xf4\x38\xed\xbe\x82\x4e\x33\xb7\xf4\x48\xe4\x1e\x89\xec\x7f\xf7\x3a\x90\xc8\x61\xd7\x69\x0d\x46\xae\x6a\xd3\xfe\x4b\xf9\x1b\xdf\xa5\x5f\x6a\xd2\x6d\x3c\xfd\xba\x83\xf5\xf6\x98\xe5\xb0\xa9\xe7\x3a\x97\xbf\xdf\x06\x72\xcf\x15\xbe\x69\xb2\x92\x84\xc6\x49\xb9\x7f\xe5\x33\x60\x6a\x7e\x2d\xfd\xf8\xfb\xee\xfb\x9b\x2c\xd4\x5b\x2d\x01\xfb\xac\x9d\xf5\x9f\x57\x78\xdb\x32\xd9\x77\x35\x22\xbc\xfa\x7b\x27\xc8\xab\xbf\xde\x36\xc1\x3b\x94\xdd\x9b\x26\x76\x07\xb2\xf1\x75\x98\xf1\x3e\xc5\xcf\x61\xc8\x37\xee\xfe\x9b\x93\xeb\x4d\xbc\xdc\x4b\xf7\x96\xcb\xf5\x56\x65\x7c\x6f\xe8\xef\xd2\xd0\x1f\xbc\x5d\x4b\xbf\x4f\xc8\x6e\x58\x9c\xde\x0d\xb2\xc9\x6a\xf5\x6e\x10\xff\xbb\xd7\xe1\x06\x31\x77\xf5\x9d\xbe\xea\x3d\xf4\xf6\xfb\x7f\xe7\x7f\x7b\x8a\xb4\xf7\x61\x45\x2c\xac\x03\x62\xc5\xe2\x82\x49\x9c\xab\x1f\xf9\xe0\x15\x48\x16\x43\xc3\xa1\x55\x4a\xf2\xa8\xee\x5a\x60\xcb\xa5\x7e\xf4\x04\x9e\x7c\x5d\x30\xf0\x1a\xd2\x9f\x17\xf0\x52\xe6\x84\x75\xaa\x13\xc4\xd2\x9d\x3e\x4d\x35\xcc\xf9\x71\x4e\xe1\x9a\x84\x3a\x27\x70\x95\x78\x1b\x6e\x13\xc8\x30\x20\xbd\xeb\x74\x8e\xe7\x56\xa7\x4a\xec\xde\x6e\xe2\x86\x47\x5f\xef\xbc\x5f\x1c\x22\xb0\x86\xef\x5f\x14\x2e\xd0\x20\x33\x77\x83\x14\x78\x3e\xf9\xf8\x89\xc8\xb7\x27\x1c\x3f\x11\xf9\x5c\x92\x71\x53\x71\xd8\x28\x12\xf2\xb2\xec\x7b\x22\x0d\x36\x13\x7d\xaf\x6b\x8e\x7d\xc2\x53\x9f\xf0\xf4\x6b\x4f\x78\xb2\x4f\xb7\xe9\x56\x79\x02\x3f\x79\xc6\xab\x4a\xbf\xf0\xed\xdd\x56\x7a\x5e\xfd\x85\xd5\x5f\x58\xdd\xe6\xb8\xaf\x2a\xba\xe5\xe7\x7d\x50\xd1\x3b\xe5\xa0\xeb\xe8\x5d\xde\xde\xc6\xb2\xff\xda\x08\xdd\xa5\x7d\xd9\xeb\x11\x42\xa2\xab\x9c\xd9\x2a\x8f\x69\x5d\x53\xaa\xab\xbc\x13\x55\x45\xec\xa8\xb8\xe4\xf6\xd7\x97\x25\x51\xb6\xef\xab\x6e\x29\x7f\x2e\x61\xbf\x2f\x22\x22\x9f\xf7\x8b\x0a\x05\xa5\xe3\x16\x21\x5f\x21\x92\xe0\xae\x11\x04\xb6\xe6\xb7\x41\xa6\x77\xf3\x4f\x0b\x40\xb1\xf0\x3b\x03\x1d\x83\xaf\x81\xe4\x22\x1d\xf6\x43\xff\x85\xf6\xb3\x7c\x64\xfb\x89\x2d\x9f\x09\x1f\x72\x22\xf9\xea\x0e\x4b\x65\x47\xc8\xed\xd1\x69\xa1\xd5\xb0\x06\x9d\x76\x83\xc5\xfd\xab\x44\xa7\x85\x84\x3f\xf1\x99\x6d\xcd\x93\x6f\x0e\xd7\xd0\xf6\x84\xf5\x18\x87\x0d\x96\xee\xad\xe2\x1d\x9a\x44\xe8\xde\x50\x58\x90\xe2\x6f\xf1\xe4\x86\x77\x52\x7f\x44\x9b\xd6\xe8\xcd\x95\x76\x2b\xa8\x1a\x6b\xe6\xf6\x4a\x4a\xbc\x15\xb5\xa5\x5d\x53\xf5\x34\x10\x28\x6f\x37\xfa\x32\xc0\x6f\xb4\x0c\x70\x3b\xe3\xa6\xb5\x65\xd3\xd6\xac\x69\x67\xd3\xd4\x1b\x34\x5b\x20\xa9\x43\x3b\x63\x53\x24\x75\xa0\xc7\xbf\x0a\x6f\x4d\x40\xf1\x73\x20\xa9\x7f\xa5\xa6\x47\x6f\x77\x3c\xc9\xba\xbd\x55\xa3\x63\xcf\x2d\x8e\x1e\x03\xbe\x4b\x0c\x78\x0f\x01\xef\x21\xe0\x6d\x17\xa8\x87\x80\xf7\x10\x70\xef\xbb\xd7\x01\x01\x37\xf6\xe2\xb6\xe8\xc5\x2a\x95\x3d\x57\x68\x83\x8a\x29\x9b\xab\xef\xa7\xf1\xab\xd0\xdb\xbd\x42\x46\xce\xb2\xe6\xcf\xa1\xbf\xf7\x15\x7b\xfa\x8a\x3d\xbd\x12\xf7\x6b\x52\xe2\x7a\x3d\x65\x93\xd5\xea\xf5\x14\xff\xbb\xd7\xa3\xa7\x04\x80\xae\xb5\xb8\xa2\x63\x4e\xb0\xd4\xfd\xac\x78\x0e\x31\x2a\x68\x26\x4d\x6a\x87\x1e\x40\x29\x1e\xaf\x41\xeb\x50\x74\x6a\x8a\x5b\x00\x8c\xfc\x17\x1e\xfc\x47\x0b\xc2\xaf\xcc\x25\x02\x9c\x3e\xc1\xb1\xeb\x22\x06\x9a\xc3\x02\xaf\xd0\x1c\x3f\x10\x34\xc5\x34\xd1\xfe\x1b\x23\x1c\x1a\xe6\xd6\x44\xd0\xff\xe9\x46\x10\x0e\xc9\xc9\xd1\x9a\x4a\xd8\xe9\xbb\x3f\xc2\x09\x22\xba\xe8\x26\xfc\x06\x5a\x9c\x99\x86\x72\x13\x42\x98\x07\xfd\x6b\x4b\xf3\x4e\x74\xb6\x17\x47\x69\xf9\x7c\xf3\xe2\x00\xad\xfa\xb6\xc0\xbb\x33\x46\xb6\xb1\x40\xc4\xef\x5f\x8b\x28\x78\x0e\x7b\xe3\x0d\xc7\x04\x7a\xbf\xff\xaf\xb3\x46\xf7\xde\xe8\xaa\xbd\x05\xb8\x43\x0b\x10\x72\x3a\xde\xa8\x09\xd8\xfb\xf1\x1b\x16\xa7\xb7\x8f\x37\x59\xad\xde\x3e\xf6\xbf\x7b\x45\xf6\xf1\x8e\x1b\xd0\x3d\xa1\x1e\xdd\xab\xd1\xbd\x1a\xdd\xab\xd1\x6f\x56\x8d\xde\x8f\x15\xee\x75\xe8\x5e\x87\xee\x75\xe8\x5e\x87\xee\x75\xe8\x5e\x87\x36\x4f\xed\x44\x87\x86\xbf\x6c\x66\xed\x6e\xd2\x68\xdb\x45\xa4\x4c\x1e\xed\x6b\x51\x9e\x7b\xc5\xb9\x57\x9c\xf7\x5b\x71\xde\x9b\x09\xbd\xbd\xe4\xb9\x3e\xfd\xac\x74\x0b\xbe\xd9\xf4\x33\x57\x65\x7f\x83\x0a\xc2\xc1\x67\x76\xa0\xe7\xae\x2b\x3c\xb0\x92\x11\xb3\x18\x59\x22\x3a\x55\x19\xfe\x62\x1e\x7a\x5d\x55\xc9\xca\x54\xf7\xb5\x85\x91\xb7\x6b\x7d\x6d\xe1\x27\x9c\xb7\x3d\x67\x6b\x66\x6e\x79\x54\x7b\xaf\x5e\xe9\xb4\x5f\x1c\xe6\x53\x7f\xd2\x5f\x14\xf4\x53\x79\x73\x94\x32\x11\xf2\x1e\x4d\xcf\x5f\x52\x79\x9b\xab\xe1\x13\x91\x6f\xe5\x5e\xe8\xcb\x2a\xf7\x55\x2a\x37\xee\xbe\xd4\x49\xc2\xbf\xae\x29\xf6\x95\xa3\xfb\xca\xd1\x7d\xe5\x68\xf7\xd6\xe7\xa8\x1c\xbd\xcd\x8d\xac\x5f\xff\x56\x2e\xe5\xbe\x7a\x74\x7f\x2f\xf7\xf7\x72\xe5\x14\xf7\xd0\xe0\xda\x8b\xda\xd8\xce\xe0\xda\x55\xce\xb7\x1f\xca\x72\xc2\x78\xa7\xa9\xdf\x76\x25\xfb\xf4\x6f\xf3\x7f\x7d\xfa\x77\x9b\xc9\xf5\xe9\xdf\x3d\x70\xa9\x4f\xff\xee\xa1\x39\x3d\x34\xe7\x0d\x40\x73\xac\x66\xb1\x8b\x14\xf0\x0a\x2d\x65\x7d\x1a\xf8\x97\xb2\xca\xbc\xb7\x1a\x88\xa5\xb5\x4f\x07\xef\xd3\xc1\xb7\xe5\x9d\xbd\x30\x56\x9e\x24\x2d\xbc\x42\x0c\x6c\x6b\xa1\xbc\x8e\xf4\x70\x4b\x6d\x9f\xdb\xd2\x43\xf4\xf6\x1f\xa2\xb7\x77\xb9\x2d\x7b\xa3\xcf\xf6\x56\xe2\x0e\xad\xc4\x3e\xbd\xa5\x4f\x6f\xe9\x6d\xe8\xd6\xab\xd5\xdb\xd0\xfe\x77\xaf\xcc\x86\x7e\xda\x34\xf1\xa7\xd0\xab\x7b\xb5\x5a\xff\xae\x57\xab\x7b\xb5\xfa\x8d\xaa\xd5\xfb\xb1\xc2\xbd\x4e\xdd\xeb\xd4\xbd\x4e\xdd\xeb\xd4\xbd\x4e\xdd\xeb\xd4\xe6\xa9\x9d\xe9\xd4\xbb\x4d\x1b\xef\x18\xc5\xf2\x52\x11\x5e\x93\x32\xdd\x2b\xd2\xbd\x22\xbd\xdf\x8a\xf4\xde\x4c\xa8\x4f\x21\xef\x53\xc8\x4b\xdf\xec\x6f\x0a\xf9\x37\x86\x11\x0e\x3c\xd9\xef\x2e\x89\x83\x1f\x92\x74\x72\xb3\x5a\x12\xf5\xdf\x13\xba\x20\x4c\x80\xc6\x42\xe5\xca\xbf\x38\x6b\x16\xb8\xbc\xb4\x07\xd7\xa7\xe7\x9f\xce\xfc\xe4\x8a\x83\xcf\xb7\x67\x37\xa7\x97\xc3\xab\x1b\x4b\xa1\x9b\x95\xbf\x16\xe6\xb9\xe0\xee\x3f\x4e\x17\x4b\xcc\xa9\x48\xd9\xe8\xeb\x92\x13\xa1\x48\xbb\x80\xdb\x36\xe5\x9b\x51\x37\xfa\x8b\x4f\xd9\x79\xf8\xcf\x4f\x37\xe1\xbf\x82\x59\x9c\xdd\x84\xff\x1a\x35\xce\xc6\x1b\xb8\x78\x82\x0e\xd1\xa7\x9b\x0f\xe8\x13\x44\xfd\x39\xba\x99\x63\x06\xa9\x3b\x67\x37\x1f\xd0\x19\x11\x02\x3e\xc9\x1f\x96\x54\x26\x30\xb7\x1f\x28\xc3\x7c\x85\xec\xf4\x75\x96\x0e\x06\x77\xa0\x5d\x9a\xe2\xe2\xb1\x7f\x64\x0c\x14\xd6\x7c\xf5\xce\xd2\x19\x8d\x70\xb2\xdd\x22\x0e\xcf\xfd\xf3\x72\x70\x71\xd5\xb8\x14\xfe\xaf\xcb\x6b\x31\x3c\x3f\x81\xec\x24\x4b\x6a\xc5\xcc\xcf\x89\x90\x24\x56\x17\x60\xac\x99\x57\xd9\x1a\x64\xe5\x5d\x8c\xff\x48\x29\x23\x31\xca\x84\x52\xd7\x86\xe7\x27\xe8\x3d\xba\xb8\x1a\xb3\x0b\x1e\x6b\x7f\x01\x51\x37\x8a\xb6\x55\xa8\x40\x2c\x95\x88\x2e\x96\x29\x97\x98\x49\x75\x99\x2a\x41\x96\x9a\x15\x11\x08\x73\x82\x8e\xd3\xc5\x22\x93\x58\xd2\x07\x52\x5a\x54\xa6\x8d\x80\x6b\x22\x4f\x63\xf0\x40\x56\xac\x61\x3a\x09\x14\x9d\x83\x25\x57\xe3\x4b\x5a\xd0\xfe\x0e\x68\x5c\x52\x07\xed\x10\x98\x73\x1c\x8a\xc1\x03\x2a\xc9\xa2\xf8\xfb\x66\xf9\xff\x4d\xf1\xaf\x50\xb7\x76\x3d\x6f\x47\x9c\xa7\x1c\xfe\xe7\x27\xca\xe2\xcd\xb8\xe2\xf6\xfc\xa7\xf3\x8b\x2f\xe7\x3e\x67\xdc\x5e\x8f\xae\xfc\x7f\x5f\xff\xf5\xfa\x66\xf4\xb9\x91\x5b\x8a\xa3\xe4\x6c\x00\xe4\xc1\x3d\xf3\x01\x5d\xeb\x36\xa6\x29\x47\x4a\x73\x38\xa8\x9e\xd4\x67\x22\x71\x8c\x25\xce\x3f\x48\x63\xb2\xd9\xdc\x3e\x0f\xcf\x6f\x87\x67\xc1\x54\x8e\x7f\x1c\x9d\xdc\x9e\x05\x37\x87\x9d\x9f\xf7\xc9\xd5\x48\xdf\x0b\xfe\x67\xc7\x3f\x9e\x9e\x9d\xdc\xb9\x9b\xa4\x69\x35\x0a\xef\x2d\x1e\x9f\x9b\x39\x41\x0b\x22\xe7\x69\x8c\x26\x2b\x3f\x6d\x24\x4f\xdf\x7b\xc4\x02\x25\xe0\xfd\x23\xf1\xd1\x58\x8b\x1a\x3d\xea\x07\x75\x8a\x90\x79\x99\xf7\xc4\x22\x8d\xc9\xc0\xfc\x46\x9d\x13\x9d\xe5\xa8\x6e\x73\x30\x8a\xaa\x06\x56\x6f\xc7\x0c\x51\x16\xd3\x07\x1a\x67\x38\xd1\xd9\x88\x6e\x8d\x3e\xa0\x21\x52\xc6\x49\x9c\x25\x04\x49\x4e\x67\x33\xd0\x63\x0b\xa4\xea\xd1\xcc\xa3\xb0\x92\xf0\x9c\xeb\x58\xab\xec\x1f\x78\xad\x31\x80\xe8\x24\xd1\x5a\xa2\x7e\x10\xb2\x2f\xc3\x11\x39\x96\x73\xc2\xab\x48\xb3\xfb\xf2\x41\xbb\x2d\x6a\xa6\x05\xd9\x70\x39\x8c\x0d\x22\x2a\x42\xab\xdf\x4b\x4e\x1e\x68\x9a\x79\x8f\x9a\x44\xd1\x60\x73\x2b\x87\xcf\x17\x00\x96\x2d\x05\x1a\xf3\x61\x42\x6e\xbe\xb2\xae\x4e\xfb\xc7\x88\x49\x5e\x79\x35\xb7\x95\x39\x46\xf1\x0b\x84\x4e\xb5\x7d\x58\x7a\xf7\x79\x51\x93\x2f\xdb\xcf\x46\xfb\x53\x2f\x39\x3a\xa8\x34\x1c\x41\xbb\xaf\x93\x7a\x15\x0a\x5c\x2e\x01\x7e\x06\xbb\x60\x91\x09\x09\x65\x27\xb4\x0b\x0a\xdd\xff\x49\xa0\x7f\x66\x18\x20\x86\x47\xe8\x9a\x90\x31\x9b\x4b\xb9\x14\x1f\xde\xbf\x9f\x51\x39\xcf\x26\x47\x51\xba\x78\x9f\x67\xe3\xbe\xc7\x4b\xba\xc0\x8a\x5f\x08\x5f\xbd\x9f\x24\xe9\xe4\xfd\x02\x0b\x49\xf8\xfb\xe5\xfd\x0c\xbc\x0d\x56\x87\x7d\xef\x86\x9d\xa5\xff\xeb\xec\x0f\xdf\x1f\x9e\xfd\xe9\xfb\x83\xb2\x48\xad\x3b\x9d\x23\x16\xe1\xa5\xc8\x12\xe3\x95\xe4\xfe\xda\x00\x52\x16\x56\x62\xdd\x7e\x9f\x87\xdb\xb5\x9d\x40\x3e\xbe\xbc\x0d\x54\x9c\xf0\x9f\x9f\x47\x9f\x2f\xae\xfe\x1a\x08\xb4\x9b\x8b\xab\xe1\xa7\x66\x55\xa7\x24\xb1\x0b\xcb\xf0\x13\x4b\x1f\x59\x38\x7b\x51\x9c\x74\xc6\x24\x5d\x10\x2b\xb0\xcd\x3f\x6f\xf4\x4c\x37\x98\xf9\xc5\xcd\x8f\xe1\xc5\xf3\xf1\xec\xaf\x37\xa3\xbb\xeb\x93\x9f\x1a\x67\xa2\x1f\x0b\x28\xbb\x06\x97\xca\x71\x9a\x64\x0b\xe6\xff\xbd\x39\x6d\xa7\xe7\x37\xa3\x4f\x45\xea\x2e\x86\x37\xe1\xb2\x5f\x85\x9e\xba\x83\x1f\x2e\x2e\xce\x46\xc3\x60\x2f\x4f\x86\x37\xa3\x9b\xd3\xcf\x81\x92\x7a\x72\x7b\x35\xbc\x39\xbd\x38\x6f\x9c\xa6\xa5\xa0\x62\xa2\x6a\x5a\xfe\x34\x77\x2d\x67\x5a\x1d\xf3\xa1\x89\x82\xe9\x83\x72\xe8\xe5\x0e\x69\x07\x17\xe8\x00\x87\xce\x3f\x10\x69\x4a\x2b\x65\x8d\x0c\xb7\x09\xd5\xcb\xba\xc6\x8d\x6e\x12\x79\x37\x8e\x04\xa0\xcb\xf8\xc1\x71\x92\xa4\x8f\x3a\x16\xb1\xa0\x4a\x7b\x35\x89\x9c\xea\x27\x02\x45\x19\xe7\x84\xc9\x64\x75\x54\x21\x4e\xc2\x6d\x49\xb9\x3c\x71\xde\xea\x8d\x18\xae\xd2\xf5\x5b\x76\xfa\x56\xb2\x4a\xd1\xd1\x6b\xc9\x82\x82\xed\xe9\xec\x33\x11\x02\xcf\xc8\x47\x1b\x0c\xdb\x91\x90\xba\xfe\xd9\xff\xe7\x9f\xaf\xd7\xf0\xb3\x1d\x22\xa0\x10\x7c\x9b\xc3\x49\xca\xa5\x95\x2a\xdb\xf0\x72\x84\x33\xd1\x89\x99\x9b\x63\x79\x18\x65\x82\xf0\x43\xe3\x3c\x21\x31\xc2\x8a\x50\x13\xc8\x83\xb2\x4a\x4b\x2c\x14\x13\xa5\xa0\xd3\x10\xf3\xf3\x4c\x17\x5a\x42\x40\x4d\xcd\xed\xba\xe4\x94\x45\x74\x89\x93\x8d\x8e\x5e\xc1\xbb\x63\x70\xfb\xdf\xd1\x29\xc2\x6c\xf5\xae\xa4\x78\x49\xc2\x17\x10\xd4\x36\x64\x3a\x25\x66\x1d\x5b\xeb\xdd\x61\x2c\x95\x38\x74\x47\x6c\xb0\x37\x3a\xda\x52\x37\xdd\xc2\x28\xe6\xed\xda\x90\xc4\xc9\x65\xf5\x98\x55\x0b\xe6\x9b\x55\x4d\x5b\xfd\x19\x2f\xd5\x16\xeb\x92\x0b\x08\xe7\x73\x34\xb1\x6a\x53\x2d\x4b\xfd\x2b\x58\x32\xcf\x2f\xd8\x5e\xc5\xc8\x97\xd0\x04\x9d\xca\x2f\x09\x94\x76\x0f\x46\x60\x58\x72\x9a\xc9\x8c\x2b\x65\x4a\xa9\xfd\xe8\x3b\x72\x34\x3b\x42\x17\x3f\x8f\xae\xae\x4e\x4f\x46\x03\x34\xbc\xbc\x1c\x9d\x9f\x0c\x10\x91\xd1\x3b\x6b\x6f\x83\xd4\x24\xf1\x98\xc9\xd4\xb8\xff\x56\x68\x9e\x3e\xaa\x77\x2d\x08\x9f\x91\x60\xce\xe6\xc7\x08\x92\x43\x66\x54\x48\x1d\x29\x01\xf5\xc7\xab\x31\x42\x17\x45\x3d\x48\x73\x48\x26\xe7\xdb\xb0\x06\x16\x22\x5b\xe0\x49\x42\xee\x28\x5e\xdc\xf1\x34\x59\x77\x86\x2b\x8f\x54\xae\x3a\xde\x09\xed\x6a\xbb\xc3\x51\x94\x66\x4c\xb6\x1e\x6d\xdd\x3e\x9e\xc0\x32\x09\xb4\x54\x07\x0a\x1c\x35\xe5\xaa\x1c\x6e\xb9\x04\x8a\xc0\x79\x04\xf6\x03\x88\x8c\x24\x87\x77\xc0\x96\x54\xad\xe5\xb1\x2e\xf7\x62\xd5\x4a\xaf\x20\xc7\x36\x0b\x5c\x35\xca\xcb\x9e\xbf\x63\x7d\xf0\xaa\xea\x9c\x68\x03\xb9\x50\xb6\x0e\x30\x34\x85\xfa\x3c\x7a\x81\x15\x67\xea\x03\xf1\xcf\x2c\x95\x58\xbc\x3b\x1a\x33\x75\xba\xef\xc9\x4a\x7b\x89\xd4\xf9\xf9\x8d\x92\xe9\x87\x82\x30\x41\x25\x7d\x20\xbf\xd1\xfa\xad\x92\x00\x0f\x98\x53\xc5\x7b\x42\xbd\xc1\x94\x05\x0a\x4b\xb0\x4c\x69\x02\x61\x62\x35\xa8\x39\xbe\x26\x7e\x3e\xf1\xeb\xb6\xd8\xef\x34\xf9\x33\x22\x21\xf6\x23\xa9\xcc\x14\x0f\xc4\xba\xee\x50\x89\xf4\xb5\xaa\x05\x70\xc5\x89\x8e\x5b\x6d\xe5\xc2\xda\xe4\x4c\x75\x55\x0e\x8b\xe7\x85\x8a\x65\x82\x57\x25\x33\x73\xdd\x39\x53\xc6\x94\x58\xe2\x88\xe4\x71\x33\x1b\x62\x8c\xd2\xc5\x22\x65\xc9\xca\x61\x65\x62\x3a\x85\x6c\x36\xa9\xce\x20\x9a\x10\xf9\x48\x08\xcb\x3f\x45\x46\x16\x20\xca\x84\xc4\x4c\x17\x75\x02\x6e\x19\xab\xb5\x8a\x33\x50\xd9\xc6\x07\x03\x34\x3e\x88\xc9\x03\x49\xd2\xe5\x82\x30\xa9\x3e\x20\xb2\xf2\x84\x8e\x16\x98\x26\xe7\xa9\xba\x7f\x23\x5c\xa7\xef\xb5\xdd\x16\x4e\x22\xba\xa4\x84\x49\x71\x47\xd4\xb8\x4f\xea\x66\x5c\xa7\x1f\x5b\x40\x0e\x50\x82\x70\x1c\x73\x22\x04\xd4\x32\xb1\x44\x1a\x6d\x5e\x7b\x67\xdd\x02\xb4\xe3\x61\xe7\xdf\xdb\x2d\x1b\x57\xdb\x09\x51\xca\x5d\x86\xaa\x7b\x71\x5e\x7d\xa2\x91\x6b\x4d\x2d\x9b\xbc\x46\x82\x0d\x09\x3a\x84\x41\xd1\x0b\x54\x3c\x36\x4a\xb8\xb7\xa3\x33\x5c\x99\x6b\xf5\x5c\x23\x69\xc2\xc7\x8e\xd9\x82\x66\xf9\x5d\x6d\x5c\x5f\x45\x6f\x1b\x59\x4b\x71\x94\xa4\x22\xe3\x2d\x8d\xb0\x90\xe8\x63\xf3\x68\x13\xdd\x23\x5f\xb5\xc9\x12\x29\x3a\x69\x4f\x15\x0b\x8f\x38\x59\x72\x22\x80\x27\xc1\x6f\xa8\x0e\xb7\x34\xd7\xb0\xf9\xf5\x00\x51\x16\x25\x59\xac\xd6\x00\x27\xb9\x5f\x90\xc5\x28\xbf\xda\xc6\x6c\x61\x0c\x0f\x84\x05\x7a\x24\x49\xa2\xfe\x1b\xa5\x8b\x25\x88\x6d\x43\xae\x19\x49\x19\x88\x12\x4b\x32\x40\x69\x26\xd5\x60\x03\x5d\xfb\xcd\x6c\xc1\xe1\x04\x03\x80\x2d\xaf\xe8\x3a\x66\xb7\xc2\x22\x01\x1c\xee\x48\xf3\xba\x16\x60\x94\xa1\x4f\x44\xc2\x28\x00\x04\xf5\x27\xa8\x6b\xdc\x55\x8a\xa0\xe2\xda\x6f\x71\xa2\xcc\x4c\x3a\xec\xfc\x19\x95\x84\xe3\xe4\x33\x5e\xfe\x90\xa4\x93\xc6\x7d\x1f\xa2\x85\xd6\xb3\xcd\x5b\x10\x2d\x5a\x58\x1e\x60\x66\x1d\x8f\x12\xce\x83\x50\xd8\x9a\xe3\x1f\x46\x4d\x9a\xd9\x13\x62\x16\x94\x69\xb8\x28\xc4\x9f\x8a\x74\x9a\xcc\xed\x75\x34\x82\x85\x78\xf7\x7a\xec\x50\x4d\xef\xa2\x6c\x7b\xaf\x63\x82\xd0\x66\x7f\xea\xc9\xc0\x01\x91\x73\x42\x39\x6a\x35\x2d\x7b\x7e\xef\xf4\x99\x6f\xcf\x34\x39\x6f\xd7\x99\xde\x5a\x88\x38\x01\xa1\x08\x33\xc0\xd5\xa0\x20\xe3\xd1\x98\x15\x88\x40\x31\x59\x12\x16\x0b\x04\xec\x65\x4f\x43\x20\xfb\x07\x68\x4a\xbf\x9a\x41\x6d\xc4\x27\xff\xa9\x67\x3e\xd4\x38\x15\xe6\xb8\xcc\x76\x1d\xee\xc7\x4b\x78\xbe\xd1\x6a\x4e\x85\xb2\x10\x23\xa5\x58\x71\x12\xa5\x5c\x89\x44\x78\xad\xf3\xf3\xad\xbd\x1b\x25\xe6\x6a\x51\xf0\x3a\xb3\x2c\xa0\x23\x07\x72\xc7\x58\x92\x43\x65\x89\xae\x89\x70\x2c\x53\xf5\x1a\x44\x17\xca\xb6\x70\x41\x37\xdf\x92\x9f\x90\x19\x66\x88\x67\x8c\x51\x36\xab\xa1\xd6\x8a\xf6\x2d\x0e\xb3\xd2\xac\xf0\x42\xd9\xa1\xa0\x47\x28\x82\x42\x3a\xc4\x12\x96\xb3\x91\x0e\x63\x4a\x3e\xd7\xaa\xc9\x86\x65\x7b\xc4\xce\xb2\xad\x21\x36\x83\x42\xda\x7b\x43\x6c\x82\x85\x44\x86\xa6\x1a\x8a\x7d\x6d\x76\x07\xa1\xfe\xa6\x62\x68\xbe\xe1\xd0\x45\x39\xf7\x49\x44\x82\x48\x49\x4d\xd1\xae\x4c\x10\x84\xa7\xca\x2e\x5e\x10\x3e\xb3\x0a\x9f\x2e\x57\xe1\x8e\xb6\xa9\x5b\x61\xe5\xa8\x2f\x4b\xc6\xac\x72\xe8\x23\x34\x64\xa5\xa8\xaf\x75\x72\x04\xeb\xa5\xa5\x36\x4e\x1e\xf1\x4a\xa0\x25\x14\x17\xd1\x81\xe8\x7c\xf2\xe0\x85\x0a\x1f\xb2\x2e\x27\xa5\x50\xd1\x08\x27\xc9\x0a\x81\xa1\xe7\x51\x56\xb3\x59\x5e\xc5\xbe\xf6\xc2\xae\xa5\xee\x5f\xf0\xac\x56\xd5\xef\x73\x26\x50\xa5\xa4\x2b\x29\xb3\x39\x30\xc2\x8f\x33\x1a\x84\x21\xe8\x96\xc6\xba\x18\x85\x5e\xd9\x3a\x85\x0f\x5c\x20\x67\x78\x42\x92\xad\xbd\xb1\x1b\xf9\x9e\xe1\xd5\x06\xfb\xa9\xcc\x6f\xa2\xbd\xcb\x04\x3d\xce\x09\x2f\x8a\x36\xeb\xc4\xe1\x59\x3b\x5f\x73\x3e\xcf\xa0\xda\xca\x16\x13\xb5\x60\xe6\xcd\xe5\x77\x1d\xd0\xd9\xbf\x48\x72\xa4\x73\xf5\x2d\x52\x74\xdf\x6c\x43\x83\x07\x49\xae\x24\x01\xed\x02\x94\xbc\x13\x6f\x90\xe3\x99\x96\x09\x78\xa7\x53\xc4\x52\x46\x10\x15\xf9\x8f\x21\x9e\xa8\xb1\x25\xc0\x4c\x33\xc2\x08\x87\x1a\x56\x36\xfc\xe8\x92\x85\x5c\x1a\xc7\x33\x1b\xe5\x43\x67\x4c\xa2\x29\x25\x49\x2c\x10\x23\xca\xa6\xc1\x7c\xa5\x4e\x88\x11\x68\x6d\x74\xa3\x5d\x69\xab\x15\xd7\x87\x51\x23\x2d\x40\x17\x12\x8a\x94\x26\x56\xa0\x0b\x0d\x93\x24\xff\x91\x79\xc8\x40\x39\xc6\xcc\x59\xc1\xc0\x7f\x54\x28\xeb\xee\x08\xc1\xb6\xc9\xfc\x29\x75\xc7\xa8\x0f\xec\x1e\x0e\xac\x2e\x2b\x74\x3a\x4e\x17\xdb\xdf\xde\x5b\xf9\x3a\x86\xe8\x26\x75\x19\xa9\x19\xcc\xe8\x03\x61\x95\xf5\xb0\x2d\x53\x24\x81\x1b\xb2\x59\xea\x98\xfa\x60\x7b\xe0\xa7\x6a\xbf\x52\x6a\x93\xb3\x92\xe7\x4a\x57\xff\xca\x8d\xec\x64\xe5\xa2\x12\xbe\xa9\x72\xaa\x45\x8b\x2e\x6b\x8c\x05\xfa\x0d\x4b\xe5\x6f\x50\x6e\xa3\x59\x73\x58\x97\x8f\x33\xae\x89\x41\x80\x1b\x57\x6f\x83\x13\x6a\x98\x04\x61\x77\x56\xe3\xf5\x2b\xbf\x2d\x42\x33\x8f\xba\x3c\xa9\xf6\x36\x2a\x47\x4e\xeb\x12\x6f\x74\xee\xe8\xce\x7c\x00\xcf\x51\xd1\x13\x69\x36\xe0\x04\xc2\x26\x2c\x45\x8b\x94\x93\x42\xfe\xaa\x16\xde\xf6\x5e\x37\x79\x83\xed\xb9\xb4\xc2\x1d\xa6\x73\xf2\xf2\x63\x1e\xb8\xc1\x9a\xdd\x5f\xbb\xc0\x0c\x2c\x42\xb4\x69\x03\x07\xac\x41\xac\x56\x9b\xe4\x9b\xc4\xf9\xeb\x74\x52\xe7\x88\xf6\x0b\xf5\xd5\xe1\x34\x8f\xc6\xec\x63\xca\xcd\xdd\x29\x0c\xe8\x7a\x82\xa3\xfb\x43\xc2\x62\x84\x33\x39\xd7\x78\x49\xe3\x3b\x5e\x99\x9d\x55\x7a\x01\xb0\x80\xdd\xe2\x98\x8a\x08\x73\x23\xf4\xa7\xf8\x21\xb5\x54\x8c\x99\x37\x08\xc0\xba\x21\x75\x04\xd2\xdb\xeb\x14\x08\x02\xa9\x7a\x75\x6b\x51\x95\xc4\x5d\x4a\xe1\x6e\x3e\x33\x7e\x22\xe8\x18\xde\x47\x62\x46\x84\x18\x1f\x68\xaa\x0b\x2b\x74\x6a\xfd\x51\xd6\xbe\x11\x7e\x39\x4c\xf7\x4b\x7d\xc6\xac\x47\xc6\xcc\x42\xa9\x29\xdf\x5b\xd9\x19\xa0\x47\xa7\x19\x07\xb0\x68\xd5\x98\xdf\x45\x73\x9a\xe4\x3e\xea\x77\x03\x73\x1e\xf5\x90\x09\x79\x20\x89\x1a\x98\xb2\x88\x93\x05\x61\x26\x7c\xfc\x3d\xfa\x6f\x9d\xdc\x8c\x7e\x37\x66\x9f\x40\xac\x26\xc9\x6a\x80\xe8\x34\x1f\x19\xcb\xc2\x30\xf7\x95\x04\xa8\x2d\xd3\x92\x25\x20\x44\xef\xf7\x1c\x3f\x90\x31\xb3\xc3\xfc\x37\xba\x47\xbf\x45\xbf\xab\x73\xe4\x18\xa4\xf0\x53\xdb\xf9\xc0\xc5\xf6\x5d\x9e\x64\x18\x18\xf5\x11\x24\x87\x75\x03\x84\x4d\x51\x9c\xa9\xe6\x14\x5c\x07\x6f\xa6\xec\x21\x2d\x47\xaf\xfc\x93\x8b\x39\x61\xf2\x8e\xa5\x31\xb9\x23\x15\xa1\xab\x06\x41\xa1\x2e\xf5\xf3\x34\x26\x6b\x03\x4f\x4e\x41\xfe\x02\xae\x0b\x91\x4d\xdc\x76\xa8\xf7\xe6\x46\x77\xc8\x60\xd5\x04\xbb\xaa\x9e\x9b\x90\xbb\x69\xac\xec\xc2\x68\x57\x03\x90\xe8\x86\x80\xea\x78\x8d\x6e\xb7\x03\x78\x9a\xe2\x29\x2c\x7a\x88\xd5\x8f\xd5\xcc\xcd\x9d\xe3\xd5\x2b\x85\x1c\x10\x4e\x67\x54\x69\xdb\xcd\xf1\xb8\xf5\xaa\x65\x1e\x41\xf2\x9a\xac\x4c\xd2\xac\x08\xa1\x87\xcd\xd1\x57\xa2\x0c\x34\xe8\x2a\xd5\x1e\x4d\xd4\xf3\x1c\x6e\xdd\x69\x06\x1d\x7b\xb4\xa7\x54\x57\x18\x11\x61\x4b\x17\x6e\x9b\x03\x69\xf0\x8d\x1d\x90\x1a\xe8\x71\x0c\x5e\x13\x14\xcd\x31\x9b\x35\x2b\x50\x7f\xc9\x48\xb6\x23\xb4\x88\xc9\x60\x7b\xa1\x38\x34\x9e\x89\xbc\xbf\x91\x5e\x1b\x25\x8b\x0a\x2d\x95\x4c\x24\x1a\x8b\xfb\xdc\x93\xe4\x10\xa8\xda\x7e\x2c\x1a\xb2\x2d\xbc\x0e\x57\x86\xef\x76\xe0\x77\x78\x8e\x40\x75\x59\x31\xa8\x38\x78\xc0\x7f\x26\x67\xe3\x59\xcd\x7a\x27\xbc\x0a\x17\xee\xae\x4d\xfc\x0e\x26\xa4\x25\xca\x50\x68\xa4\x4a\x39\xaa\x57\xcd\x1d\xd7\xa1\x03\xa1\x33\x4b\xe8\x77\xdf\x41\xfc\x66\x6b\xbf\xa5\xe7\x8f\xcb\x41\x65\x1a\x55\xa8\x67\x43\xe2\xa7\xf5\x31\x84\x11\xb1\x10\xd7\xe8\x05\xc4\xea\xf0\xa6\x1e\x45\x1b\x44\x1f\xcb\x16\x40\x35\x6d\xf6\xeb\xb6\xa4\x34\xc6\x01\x5a\x7a\xf5\xc1\x94\x6d\x3a\xb6\x67\x06\x66\x13\xfa\xc3\x35\x76\x20\xf5\x22\x82\xe0\x1a\xcf\x04\x92\x1c\x03\x6c\x2d\x65\x62\xcc\xbe\x68\xf5\x8d\x0a\x6d\x28\x99\x3c\x49\xb0\xc3\x10\x85\x7f\x83\xf0\x34\x29\x55\x72\x8e\xb5\x72\x5f\xed\x7b\x77\x95\x0d\xdc\x49\xf0\xbd\xef\x55\x2f\x83\x17\x19\x9d\xb5\x72\x48\xbb\xd0\x3e\xd6\xb1\xd4\x81\xb6\xda\x49\x4a\x05\x60\x40\x71\x52\x6b\x2c\x4d\xd2\x34\x21\x98\xd5\xe9\x93\x95\x5f\x97\xdc\x24\xd4\x87\xef\x29\x73\x47\xa9\x24\x3c\x23\x4a\x99\xc6\x49\x52\x98\x17\x86\x02\x44\x92\x30\x6d\x55\x1b\x8b\x48\x11\x1a\xaf\x89\x04\x0c\xfc\x93\x3f\x21\x49\x27\x88\x85\x7e\xa0\x91\x8b\xe0\x27\x79\x8d\x9b\x56\x40\x65\x3f\xf2\x5f\x09\xeb\x5e\x47\x98\x0f\x06\x6f\xf4\x89\x86\x80\xea\x0e\x24\xae\x13\xe7\xc3\x42\xcc\x1c\x11\x08\xb4\x63\x40\xaa\xa9\xfd\x83\xf3\x6e\x5d\x1e\x4e\xde\x07\xbb\x04\x29\x95\xf0\x70\x9c\x12\xe1\xa9\x58\x28\x7d\x20\x86\x7f\xe9\x94\x28\x35\x6c\xcc\x94\x46\xea\xab\x83\x58\xa8\x83\xb6\xe4\xe9\xcc\xc0\xe3\x70\xc4\x53\x21\x4c\x18\x5c\x8f\x23\x8e\x1a\x6f\x92\x1b\x03\xc8\xdf\x45\x80\xe3\xf9\x10\x71\xe5\x72\x77\x79\xba\x66\x8d\xe6\x31\x21\x2e\xf9\xa0\xf6\xdc\x6f\x0b\x96\xb1\x26\x08\xe2\x04\x0b\x63\xf4\x01\xa6\xa4\x10\x4d\xef\xa0\x27\x38\x9a\x35\xb6\xec\xd0\x6e\xb6\xcf\x42\x26\x81\x48\x57\x9a\x52\x16\x3b\xe7\x04\x4a\x88\x4c\x12\x13\xcb\x08\xb8\x86\xe6\xed\x14\xf2\x15\x71\xf6\x8d\x7e\x33\xc8\x49\x41\x17\xea\xac\x40\xe6\x24\x4b\x0f\xd3\x25\xd8\x0d\xc5\x5f\x4d\x31\x4d\x94\xc0\xa2\x61\x37\x07\xa5\x5c\x1d\x42\x45\x24\xc2\x64\x95\x87\xd7\x0e\x02\x1e\x61\x12\xeb\x6d\xd4\x9c\x3b\x3e\x18\xfe\x70\x71\x75\x33\x3a\x19\x1f\xe4\x71\x3b\x8b\xf1\xb0\x62\xdd\xa5\x92\xa4\x6c\xcc\x9c\xf7\xdd\x95\x3a\x84\xbd\x44\x38\x8e\xf3\xcc\x09\x8d\xfc\xba\xd3\x5e\xc4\xb6\xa7\x62\xad\x03\xbe\x3c\xcc\x47\xfa\x95\xc4\x57\x58\x6e\xe5\xb6\x6f\x0c\x8b\xb6\x72\x4f\x55\xb2\x78\xc6\x68\xc9\x45\xd2\x20\x64\xdd\x54\x6e\xd5\x73\xed\x39\x58\x9f\x04\xd8\x2b\xeb\xe7\x10\x88\x67\x4c\x59\x96\xd8\x55\xa0\x9c\x02\x0f\xb0\x68\x35\x40\x80\x83\x56\x5c\xbb\x42\xbf\x47\x0b\xca\x00\xb3\xd8\xb4\xb6\xb7\xe1\x44\xba\xa4\xe6\x9f\x9e\xdf\x86\x95\x3a\x7e\xbc\xb8\xbd\x0a\x13\x25\xff\xda\x9c\x64\x1f\x8e\xd0\x64\xce\xe7\x73\xf4\x70\x21\xa9\x5e\x0a\xb7\x34\x55\x13\x3d\x2b\x5e\xd4\x6f\x2b\xcd\x29\x71\x3a\xc3\xae\x33\x9c\x3c\x54\xc0\x5e\x24\x37\x99\x99\x6e\x97\xd7\xa4\x4d\xab\xcb\xd0\x5e\x7b\xd2\x0b\xba\x32\xf2\xb7\x79\x0c\x3b\x9f\x00\xd8\xae\xd5\xd7\x6f\x67\xe4\x77\x3e\xaa\x85\x1f\x77\xd0\xde\x50\xfe\xb4\xf5\x00\x08\xe3\xfd\x5b\xe2\x09\x4d\x20\xae\x91\x7a\x89\x38\x15\x9a\x85\x38\x1a\x33\xbf\x54\xae\xbe\x33\x15\x0f\xd8\x64\x2c\xca\x66\x28\x65\x04\xa5\x5c\xc7\xb0\x9c\x38\x1c\xf8\x28\xf0\x22\x8a\x49\xce\xd1\x2a\xcd\xb8\x7b\x63\xe9\x3d\x86\xfb\xc4\x1c\xdb\x38\xb7\xd5\x33\x4d\x14\xc6\xcf\xfe\x82\xf1\x96\x9c\xe4\xc6\x16\xbc\x98\x3c\x10\x86\x1e\x95\x61\x95\x3b\xe5\xc7\xcc\xc3\x17\x29\x95\x94\x7d\x2b\x1d\x88\x80\x26\xa6\x79\x14\x76\x11\x88\xdc\xd5\x22\x30\x35\x23\x37\x33\xf0\x0e\x80\xe2\x80\x7c\xdf\x8c\xf9\xe0\xc9\x3a\xef\x81\x0e\xd9\x00\x0f\xf8\xbe\x0c\x0d\x66\xad\x64\x59\xf2\x75\x49\xa2\x4d\xd0\xbd\x97\xb6\x18\x62\x93\x37\xc3\x0f\x21\x99\x74\x70\xb3\x75\x32\xb5\xbe\x95\x22\xb5\x6b\xe8\xec\x84\xb1\x57\x84\xfe\x6c\x92\xd2\x3a\xd2\x69\x51\xf6\x53\x9e\x2e\xda\x91\xf8\x3c\xb8\xd2\x9b\x12\x42\x33\x70\x0f\xec\x09\xa0\x74\x3d\x95\x75\x48\xd2\x75\x52\xef\x67\x7d\x2f\x3a\xd0\x38\x24\x84\x12\x34\x4d\x56\x92\xa8\xd1\xa5\x22\xd5\x80\x38\xfd\x77\xfa\x77\x96\x0b\x1f\x58\x7c\x45\xe1\x14\x04\x81\x89\x09\x41\x46\x1b\xd2\xa0\xca\x6a\x34\x28\x5c\x9f\x55\x1e\x51\x2f\xa8\x68\x72\x62\xd4\xe2\x09\x89\x17\x2e\x03\xb2\x98\xf6\x5a\x58\xae\x35\xd2\x68\x57\xe8\xbe\x27\x40\x80\x56\xd9\xba\x01\x2a\xd5\x44\xdf\x77\x93\xfa\x55\xb8\xa1\x1b\x09\x0b\x72\xbf\x7c\x82\x62\x22\x31\x4d\x84\x9f\xef\x54\xde\xca\xe0\xe6\xd3\xc5\x8c\xac\xe3\x75\x43\x2b\xd9\xeb\x20\xe9\xef\x3c\xf2\xef\x78\x70\xb2\x2c\xf0\xca\x43\x05\xa9\x53\x90\x10\x09\x97\x33\x65\xee\x5f\xa1\xa8\xb5\xcc\xec\xb3\x68\x55\x64\xfe\x08\xfd\xb0\x72\xd7\x22\x4e\x12\x9f\x12\xed\xbc\xcb\xfb\x16\xaa\xa3\x00\x97\x18\x3a\x3d\x1f\x1e\xdf\x9c\xfe\x3c\x02\xc4\xcb\x2a\xcd\xd0\x23\x15\xca\x42\x18\x33\xf0\x07\x2a\x81\x0a\xbf\x93\x29\xd2\x3f\x1c\xc0\xaf\x00\x07\x27\xb2\xc9\x82\x2a\x7b\x2a\x9f\xe4\x2d\x48\x84\x2b\x8b\x8a\xd2\xe7\x58\x3d\x00\xd7\xb6\xc5\x5b\x55\x41\x9b\xd7\x9c\x8f\x0d\xcc\xe0\x7c\x90\x6d\x21\x55\x5e\xb8\xe2\x69\x41\x55\x9e\x9a\xed\x9b\x35\x95\xc7\xab\x47\x55\x55\x1f\xca\x30\xb5\x10\xf2\x3f\xa9\x90\x85\xcb\xa4\x3e\xa1\x30\xdf\x82\x5d\x40\xaa\xac\xb6\xdd\x41\x0e\x5e\xdb\x47\xaa\xb5\x9d\x6b\x57\x95\xae\x52\x05\xbb\xac\xd5\x6f\xf6\x2d\xb1\x23\x0f\xdb\x6d\x1e\x04\xea\x62\x6e\xe5\xd0\x64\x9f\x15\x3c\x04\x42\x08\xe9\x25\x45\xd1\xcd\x52\x09\xd1\xd7\x48\x26\xab\x0a\xe8\xc3\x98\x55\xeb\x0d\xcd\x3c\xb6\x6d\x20\x75\xa7\x09\x20\x6e\x47\xae\xdc\x2c\x8c\x47\xe4\x8b\x83\x4c\x69\x63\xd4\x15\x4b\x26\x85\x73\x65\xfd\xaf\x35\x56\x00\xa8\x0b\x9b\xe4\x58\x56\x9c\xca\x96\x61\xce\xb5\xe7\xc2\x5c\x99\x4f\x63\x41\x6d\x19\x0f\x86\x1c\xc8\xdd\x67\x6e\x82\x13\x73\x00\x1e\xf2\xf4\x81\x70\x4e\x63\x65\x61\xf9\x29\xf3\xad\x56\xae\x45\x79\x9a\x1a\x19\xa6\x1b\x72\xc8\x14\xc2\x26\xce\xe6\x55\xe3\xd9\x34\xae\x82\x74\x73\xea\x4e\xc6\x62\xc2\x19\xc1\x72\xfe\x7c\xf1\xc5\xe3\x6d\x5d\x86\xcf\x16\x6b\x3c\xde\x49\x0d\x27\x9f\xdc\xb0\x9e\xd1\x5a\x3a\xb3\x42\x29\xf8\x66\x58\x6a\x5e\x3c\xa8\x64\x44\x55\xb8\xba\x3c\x7c\xaf\xb1\xb3\xc2\x42\x42\x1d\xc1\xd7\xb5\x16\x84\x73\x3f\x29\xf3\x20\x2c\x2c\x61\xfa\xa4\x34\x8b\x74\x59\x13\x79\x69\x53\x69\x51\xeb\xd8\x41\xd9\x3b\xfd\x89\xf9\xa0\xa6\x3c\x62\xe1\xb1\xe2\x6c\x7d\xc3\x80\xad\x8a\x76\x35\xe6\x71\x42\x04\xa8\x7c\x5a\xd7\x2f\x68\x75\x4d\x36\xc7\x98\xfd\x98\x3e\x92\x07\xc2\x07\x08\x4b\xb4\x48\xd5\x4d\xce\x88\xdf\x40\x00\x87\x09\x96\xda\xa5\x8d\xd1\x39\x5e\x90\x78\x04\xf7\x81\x87\xdd\x32\x96\x8f\xf1\x2a\x56\xe5\xb0\x40\x5e\x86\xde\x06\xeb\x02\x1f\x33\x1c\x49\xfa\x40\x74\x6c\x07\x00\x83\xd4\x4e\x0c\xf8\xff\x37\xce\xe7\xf9\x9b\x23\x74\xa3\x2e\x2e\x2a\x42\x7a\x3d\x2c\x6c\x1d\x6d\x63\x36\xe3\x69\xb6\x74\x9a\x69\x3a\x01\x95\x58\xfb\x3e\x2b\x7c\x9e\x40\x8c\x75\x78\x46\x38\x56\xd7\x62\x33\xe3\x04\xb6\xd3\x9e\xb9\x02\x42\x7c\x9d\xcf\x40\xea\xb6\x70\x61\x25\x03\x1d\x00\x36\xaa\x4f\x7a\xdf\x9d\xef\xb4\x54\x94\x4c\x80\x52\xe6\x4c\xd6\x00\x6c\xb1\xa1\xa8\xf0\xcc\x7c\x6b\x12\x57\xa3\x84\xf2\xd7\xea\x22\x9f\x5a\x70\x90\xea\xaa\xb9\x35\x7b\xdf\x3e\xdd\xaa\x40\xe5\x65\xc6\x97\x29\xc0\x6c\x93\x95\x85\x26\x2d\x30\x04\xcf\x97\xe9\x32\xd3\x88\x63\xea\x07\x99\x2a\x09\xa2\x42\x7e\xc6\x32\x9a\x2b\x7d\x20\x87\xd0\xee\x22\x0d\x2c\x10\xa4\x4f\x6b\x7f\x54\xcc\xe0\xd8\x7f\x7b\x8d\x6d\xdd\xda\xb4\xd4\x99\x64\x16\x3f\x00\xff\x4a\x92\xbc\x8d\x69\x45\x21\xb7\xea\xb5\x0e\x6a\xc7\xec\x3c\xd0\xba\x85\x7e\x78\xa2\x14\x68\xca\x50\xfe\x43\x64\x3c\xc8\x95\x47\x3a\xe3\x74\x23\x35\xd0\x78\x20\xc8\x03\x61\x32\x37\x28\x16\x78\x89\xa8\x92\xdb\xea\xe6\xe1\x33\x32\x40\x8f\xb6\x5f\x22\xc2\x28\xe3\xd4\x9e\x30\xb0\x02\x1a\xb6\x2f\x54\xc3\xdf\xeb\x88\x80\xc6\x44\x45\xd8\x2b\x9b\x64\xca\x9a\x47\x32\xc3\x2e\x6e\x0b\x3b\x9c\x50\x76\xaf\x5e\xa6\xd3\xb9\xad\xb7\x97\x2b\xf9\x96\x72\x0b\x2a\x0d\xf6\x74\x2d\xe7\x6d\xb1\xcb\xf5\x95\x0b\xd7\x1d\x05\xca\x66\x1e\x1c\xbe\xda\x08\x6a\x93\x96\x5d\xf9\x64\xbb\xac\xf2\xca\x47\xad\x3e\xb1\xc9\xb3\x0d\x08\xe2\x8d\x6b\x5a\x06\xb8\x09\x83\x13\x30\x1a\x89\x9f\xa8\x60\x54\x69\xc8\xaf\xa1\xba\x5c\xbf\xd1\x50\xfe\xcb\xfd\xa5\x8b\xe1\xe8\xa5\xf9\x2f\x94\xf2\x31\xd3\x9f\x0f\x5c\xde\xbc\xfa\x41\x9e\xe2\x52\x93\x14\xea\xf8\xc9\x16\xc1\xdc\x4c\xaf\xbc\x19\x5e\xff\x74\x77\x35\xba\xbe\xb8\xbd\x3a\x0e\x94\xcb\xe3\xb3\xdb\xeb\x9b\xd1\x55\xe5\x77\xa3\xff\x3b\x3a\xbe\xbd\x39\xbd\x38\xbf\xfb\xcb\xed\xe8\xb6\xe6\x2b\x3b\xc0\xd9\xf0\x87\xd1\x59\xa3\x92\x5a\x4d\x43\x5d\x59\x51\x5c\x68\xcb\x94\x67\xef\xdb\x4b\x75\xb2\x32\x5b\x44\xff\x05\xc6\xeb\xa5\x5e\xd7\xc3\x81\xfd\x4b\x17\x8a\x3c\x54\x47\xd9\xba\x2f\xf2\x53\x30\x66\xce\xbf\xe4\xe4\xb6\xc4\x33\x61\x1b\x4e\x04\xd4\x7e\x40\xc3\xa5\x69\x2a\x91\x86\x2f\x95\x58\xdc\xe7\x94\x5a\xb7\x22\xec\x2d\x94\xd1\x16\xa6\xc5\x42\x61\x99\xc3\x01\xcd\x9c\x80\x04\xe3\x5e\x89\x51\x5e\xc2\xb5\x54\xeb\xd3\x0c\x5a\xd8\x1f\xe8\x49\xa3\x17\x47\x68\xba\x20\x6b\x66\xc5\xf0\x82\x46\xfa\x83\x42\xe2\x88\x49\x29\x59\x10\x26\x8b\x23\x06\xdb\x1a\x8e\x3c\x27\xe8\xa7\x3f\xe5\x44\x81\x51\x6c\x8c\xcc\xac\x54\xfa\xc9\x76\xbb\xcd\xaa\x2a\x79\x54\xc8\xa6\xad\x52\x75\xc4\xfd\x9d\xeb\x0b\xb6\x91\xb0\xbc\xc1\xe2\xbe\xa2\xda\x6c\xa5\xfc\x31\xf3\xdf\xf2\x8d\xf5\x25\x6e\xab\xfd\x67\x76\x5d\xef\x60\x03\x37\x7b\x67\x6d\x9e\xd4\x9a\x57\xda\x19\x27\x85\x82\x2b\xad\xdf\x17\x14\x6c\x69\x2f\x95\x21\xc7\x93\x46\x90\x4f\x8b\x29\x33\x99\xfc\xc4\x95\x90\xb1\x35\x0d\x75\xa1\x7a\x93\xfd\x83\x27\xe9\x43\x90\x5e\xb6\xd0\x85\xdf\x2b\x35\x31\xcf\xde\xdb\x86\x03\xc3\xa6\x74\xad\xb5\x31\xbb\xf9\x50\xb7\xbf\x72\x0f\xda\xda\x73\xc5\xc9\xac\x83\x50\x6d\xe0\x87\xf5\x46\x77\x8e\xd8\x36\x2a\xd8\x09\xec\xe9\x04\xbc\xec\x79\x69\x41\x5d\xc1\x16\x0c\x35\xdf\xe8\x1e\xe4\x01\x67\xad\x9a\xb9\x4b\xf3\xbd\xbd\x47\xd1\x7b\xed\x09\x78\xef\xdd\x13\xab\x65\xd0\xb4\xbc\x79\xa3\xbd\xb5\xd9\xcb\x92\x3a\x95\xbd\x43\x37\x57\xdd\xda\x92\xf0\x0c\x4d\x3e\x2b\x27\xf1\xd4\xf5\x74\xf6\xad\xa1\x7d\x7b\xf1\x97\xd7\xca\x32\x74\x9b\xc2\x3a\xa0\x16\x05\xc0\x8c\x8f\x80\xa1\xf1\xc8\x1c\x7a\x35\xb6\x01\xbd\x2f\x09\xd7\xe5\x5f\x20\x1a\xef\x22\xbe\xc6\x5b\xb7\x4e\x36\xe6\x47\x66\xeb\x12\x25\x6a\xbc\x32\xb6\x77\xc7\x51\xc8\x66\x41\xb8\x06\x2d\x3c\x74\x25\xa0\xf3\xa2\x2e\xa2\x86\x79\xfb\x48\x7c\xd5\xac\x02\x6b\xca\x2e\x66\xe5\xa6\xac\x63\xbc\xd7\xc6\x6e\x2d\x62\xde\xc3\xaa\x15\x31\x98\x85\x1a\x4d\xac\xe7\xb2\xa7\xe5\xb2\x5d\xc0\x3d\x42\xe2\xba\xdf\x66\xc7\x5a\x21\xf2\x86\xb1\x29\x75\x4a\xc3\xb5\x72\x3a\xac\x7d\xd3\x9c\x0a\xde\x38\xe5\x9d\x45\x1c\x76\xa1\xfa\xd6\x41\x11\x7c\xf5\xce\x4c\xdc\xd5\x29\x97\xa9\xc1\xa0\x3e\x99\xe2\x5c\xe3\xb9\x2c\x95\x1b\x68\x4b\xd2\x8e\x74\xee\x35\xe0\x07\x03\x7e\x32\x21\x0b\xd3\x30\x96\x91\x47\x7d\xda\xf6\x23\xf8\x51\xc1\x87\x2f\x1c\xfd\x08\x0a\xd5\xec\xac\x9e\xfc\xdd\x7a\xf7\x78\xb5\xe5\xbd\xbb\x1a\xef\x85\x8e\xb4\xbe\x09\x66\x75\xe5\xf3\xfa\xba\x5d\xdd\x4a\x69\x07\x8b\xb8\xbe\x8c\x36\x34\xdb\xc0\xa2\xa6\x86\x36\xe4\xf4\xc7\xfb\x52\x49\xbb\x8c\x8a\x0f\x89\x7b\xe1\x32\xda\x05\x62\xf6\xa7\x96\xf6\xda\x75\xdb\xdf\xb4\x87\x0a\x42\x5b\xd4\xd0\x76\xa8\x3c\x28\x99\xd5\x4d\xe4\x43\x26\x04\x8d\x13\x90\x48\xd6\x71\xad\x0e\x55\x1b\x7f\x4b\x11\x0e\x14\xb8\xcc\x0a\x73\x31\x50\x79\x70\x13\x87\xad\x48\xea\x85\xe2\xe8\x81\x30\xb9\x13\x7d\x01\x86\xa8\x40\x2d\xb6\x33\xfa\x75\x2d\x9c\xd3\x93\x5c\x4c\xb8\xb2\x89\x5e\xb4\x40\x72\xac\x6e\x29\xdb\x08\xc9\xb4\x3f\xaa\x73\x74\xaa\xa9\xb5\xdb\x22\xf8\x69\x79\x5d\xd6\x40\x13\xcc\x6a\x43\x51\xad\x42\xd8\x33\x8d\xa0\xbf\x66\xa7\x44\x9a\xe0\x66\x66\x31\x24\xbc\x7b\xb5\xcb\x75\xfb\xeb\xe2\x9e\xeb\x77\xce\xb1\x28\xbe\x72\xed\x96\x6f\x80\xbf\x0f\x86\xf9\x44\xe4\x09\x96\x78\x27\x05\x65\x3b\xc0\x21\x81\x90\x5b\x9e\xac\x6d\xcf\x72\xad\x0b\x8f\x65\x3c\xc9\x0d\x1b\x8c\xd4\x85\x76\xe4\x45\xc1\x01\xa5\x1c\xac\xa8\x26\xa6\x46\x0e\x74\x6f\x28\xf3\x94\xa4\x1a\x6a\x36\x42\xd3\x0b\xc9\xb3\x08\x52\x93\xd5\x89\xab\xde\x59\x53\x93\x01\x64\xa7\x71\xd6\x8b\x20\xd3\xc6\xa6\xe4\x41\x70\xbd\xf2\x5e\xaf\xe7\x9f\x6d\x7d\x00\x61\xf1\xc2\x27\x73\x05\x04\xd2\x3b\x98\x40\x9f\xd0\xb1\xa9\x81\x6f\xca\x74\x38\x0e\x84\x7c\x2b\xc9\x29\x81\x44\xe0\xc4\x65\x0f\x84\x92\xce\xf8\x7c\xd6\x32\x96\xba\x56\x4f\x5a\x9a\xfd\x9e\x55\x9a\x7b\x1d\xf2\xbc\x02\x2f\xdc\xe4\xd5\x78\xc4\x70\x5c\x1a\x7b\x1a\xec\xaa\x85\x1e\xa8\xce\x4f\xc6\xdb\x0d\x8d\x72\x7c\xde\x6e\xe7\x55\xd5\xa4\x6a\x74\x8d\x12\x18\x99\x20\x5c\x67\x95\x3b\x24\x70\x45\x69\xad\xda\x20\x48\x65\xc7\xc0\xa6\xa0\x64\xa9\x73\x61\xb5\xa6\xa1\x3d\x2b\xe8\x3b\x68\xdc\x8f\x25\x39\xb2\x89\x1f\xef\xd0\x7f\x43\xa9\xac\xff\xaa\x2b\x99\x3a\x23\xfc\x2e\xce\x82\x88\xe2\x3a\xa2\x2e\xd5\x43\x27\x99\x5c\x55\x27\xd0\x04\x06\x4f\x82\xa3\xfb\x2e\x49\x45\xea\xf7\x35\xc3\xae\x3f\x81\x9e\x8b\x2d\xbc\x08\x6a\x52\x76\x48\x21\x65\xc7\x04\x60\xfc\xf7\xeb\x60\x09\x83\x4a\x6a\x9e\xb7\xc0\xc4\x8d\x86\x8a\xe6\x23\xf4\x51\x57\xc3\x80\x4b\x4d\xbf\x22\x4a\xb3\x24\x1e\x33\xf2\x55\x99\xfb\x01\x74\xa2\xa2\x82\x81\x81\xf0\x98\x37\x55\x4b\x82\x42\xb1\xba\xad\x6e\x98\x17\xcf\xaf\x2a\xef\x69\x79\xca\xd5\x4c\xb6\x95\x2e\xbf\x27\x7d\x3b\x8f\x6d\x8f\xfa\x01\x72\x93\x2c\xb0\x45\x42\x1e\x08\xc7\x33\x62\xfa\x7a\x7a\xd5\x2a\xf0\x06\x6d\x3c\x2f\x4b\xd1\xdf\xd7\xdd\x8b\xb6\x14\x54\x7e\x5a\x36\x36\x9d\x7c\xd7\xea\x45\xed\x9d\xea\xed\x65\xda\x4d\xba\x3c\xd4\xa5\xc1\x99\x6b\xb0\x6b\x95\x9e\x28\xc1\x42\xd0\xe9\xca\xeb\x9c\x6b\xb5\x09\x1d\xd7\x75\x45\x51\xc2\xe2\x39\x95\xba\x46\x00\x46\xdb\x0d\xd2\x69\x7b\xd0\x81\xb1\x9f\x6d\x04\x9c\xc6\x3e\x8a\x1f\xaa\x42\x96\x50\x8f\x2d\x0b\x57\x6e\x8b\x45\x30\x94\x99\x88\xfc\xee\x08\xb3\x20\xbf\xcd\x20\x53\x8d\x28\xda\xb5\xf2\xa1\xb8\xf7\x27\x24\x21\x7b\xd2\xd0\xa9\xcc\x08\x8d\x6b\x9d\xe7\x77\x3e\xdb\xfe\x6f\x47\xcf\x06\x71\xa9\x1a\xdc\xed\x0e\xf6\xfb\x85\xa3\x1b\x35\xd4\x7d\x22\x6d\xbc\x3b\x6b\x79\x71\xa3\x73\x55\x27\x1c\xb7\x58\xec\x9d\x85\x34\x9f\x78\x42\x75\x7b\x7d\x4d\xa4\xb0\x8a\xab\xc7\xe9\xda\x67\x62\xce\xe9\xa1\x85\x60\xe5\x80\xa6\x0e\x1b\xbe\x27\xc1\x36\x43\xdd\x95\xa9\x49\xf2\x74\xe2\x70\xfd\x76\x75\xe1\xb7\x9c\xde\x0d\x3c\xa2\x66\x8c\x5d\xdc\xfe\x4f\xab\x9a\x95\x16\xa6\xa5\x71\x71\x5d\x2e\x77\xd1\x3d\x51\x8c\xa7\xec\x8e\x7c\x55\x36\xa7\xd8\x14\x47\x71\x2b\x88\x40\xc3\x2f\xd7\x48\xac\x98\xc4\x5f\x3f\xa0\xf1\xc1\x67\x5d\xd3\x13\xfd\x98\x66\x5c\xa0\x13\xbc\x3a\x4c\xa7\x87\x8b\x94\xc9\x39\xfa\x0c\xff\x6b\x3e\x7a\x24\xe4\x1e\xfd\x95\x60\x3e\x3e\x18\x33\x48\x56\x35\x8d\xc3\x5c\xdd\x8d\x39\x86\xb0\x9a\x30\xe5\x42\x7f\xf7\x47\x5b\x2f\x54\xbd\xe6\xfb\xf7\xbf\xfb\x23\xfa\x0d\xfc\xbf\xff\x1f\xfd\x66\x7c\x50\x73\x2f\x75\xcb\x81\xcc\x0b\xba\x56\x8e\x76\x4f\xa3\xfb\x74\x3a\xbd\x93\x74\x41\x74\xb1\x80\x3b\xcc\x6b\x5b\x0b\x75\x44\x84\x52\x53\xc3\x40\x57\x61\xcb\xd3\xb4\xcc\x4b\x75\xf8\xd1\x2a\x61\xae\x23\xb5\xce\x9a\x62\x61\xee\x3e\x15\xf0\x14\x89\x51\x3a\x9d\x76\xf1\x01\xda\xac\x90\x72\x85\xa4\x3c\x90\xed\x57\xe4\x70\x46\x9d\xef\x8a\x48\xd7\x55\x3c\x2d\xfb\x48\xde\x98\x55\x0c\x13\x7c\x52\x8b\xf8\x3a\xe5\x5b\x89\xf0\x7b\x52\xf2\x97\x75\x72\x80\xdb\xe2\x02\x7e\x61\x17\x88\x90\xa5\xdc\xc1\xaa\x75\x40\xc3\x64\xf2\x8f\xd9\xcd\xc5\xc9\xc5\x77\xf7\x58\xf2\x74\x86\xd9\xbb\x0f\x68\x18\xc7\xa6\xc9\x06\x32\x4e\x3f\xc5\x3c\x73\xc2\xc9\x11\xf2\x2b\xe6\x33\xb5\x70\x95\x1e\x6d\x5f\x1f\xa6\x9c\x44\x55\x86\x6b\xf5\x61\x57\xcb\x77\xe2\x1e\xa9\x81\x1e\x05\x15\x14\xdc\x0b\xf2\x6c\x67\x98\xeb\x3d\x59\x99\x6e\x72\xc5\xf9\x6e\xd2\x37\xe4\x7a\x49\x22\x65\xfd\xc2\xd0\x29\x8f\x09\x2c\x8f\xee\x51\x4c\x85\xb4\xc1\xd7\xaa\x43\x75\x83\xc5\xfd\x6e\x1d\x24\x5b\xe7\xb2\xd3\x38\xcf\xfd\xd4\xab\x58\x6e\x16\x69\x84\x9f\xc4\xe2\xbe\x0e\x3a\xd1\xb9\x58\xac\x5a\x0a\x8b\x2a\x6a\xa2\xcf\x8c\xec\xa5\xb8\x98\x72\xfe\xa0\x50\x79\xe8\xef\x05\x5e\xea\x96\x02\x20\x18\x69\x42\x62\xbf\xf0\x42\x15\xfd\xeb\x36\x5a\x43\xc8\x3d\xff\x06\x07\xd8\xbc\x52\xf7\x62\x88\x29\x61\xb6\xd2\x0c\xa0\x04\x2d\x16\xf7\xc2\x15\x54\x40\x62\x81\x93\x64\x80\x38\xc9\xa0\x27\xc4\x00\x09\x92\x4c\x0f\x6d\xd6\x4e\x8c\x92\x74\x46\x23\x9c\xa0\x49\x92\x46\xf7\x62\xcc\x94\xe4\x63\x33\x2d\xb0\x97\x3c\x8d\x88\x10\xde\x55\x91\x87\x0d\x97\x3c\x8d\xb3\x48\xd7\x7c\xd5\x35\xd7\xa9\x90\x34\x2a\x14\xfa\x54\x27\x19\x5a\x20\x45\x18\x14\x63\x28\xe5\xb0\xd0\xcd\xfc\x38\x25\xe0\xbc\x91\x99\x6d\xcb\x01\x59\x09\x38\xa1\xff\x02\x78\xc0\x1c\x3f\xd0\x94\xd7\x71\xef\x0e\x80\x60\x76\x7b\xee\x64\x78\x1a\xd6\xf0\xf3\xb1\x79\x0c\xce\x50\x13\xc7\x5c\x85\xec\xec\xb8\xc1\xb1\xb9\x4b\x1e\xb0\x4c\x91\xd7\x45\xb5\x09\x1a\xfa\x27\x36\x1c\xb8\x67\x78\x21\x20\xb9\x06\x25\xb4\x8e\xa7\x8f\x75\xa9\x51\x93\x13\xe9\x39\x8e\x60\x74\x5b\x8c\xd1\x64\x77\x2b\xd1\xf6\xa0\x98\xc4\x2e\x8f\x5a\x7b\x25\xfe\x06\xae\xfe\x27\x16\x68\x99\x64\x33\xca\x0e\x5d\x6e\x4b\x8c\x25\x1e\x33\x28\x04\xa2\x5e\x52\x28\x26\x59\xe6\xa8\x3d\xae\xf9\xb9\x1b\xe1\xd8\xb1\xf4\xa7\x5d\xe4\x2e\x4c\x1e\xf2\xad\x6d\x81\xb6\x31\x74\x9c\x57\x85\x99\x4d\x93\x5f\xf5\xed\x03\xcd\x0b\xda\x78\x2f\xaa\xdd\xdb\x8d\xad\xeb\x02\x55\x25\xfc\x05\x9d\x6a\x26\x03\xda\x20\xc4\x66\xfa\x57\xd4\x51\xf4\x22\x88\xd6\xa6\x8d\xbc\xc4\x52\xf7\x20\x20\x8b\x54\xea\x32\x0e\xba\xa2\x82\x29\xb4\x60\x0a\x35\x4c\x92\x74\x02\xf7\x0a\x14\x5b\x80\x79\x07\x95\xab\xcc\xbc\x49\x8c\xbe\xf3\xae\x09\x07\x33\x79\x57\x17\x29\xde\x1d\xac\xb6\x98\xa9\x55\x0b\xae\x0d\xb3\xaf\x8f\xd0\x65\xee\x26\x29\xce\x6a\x8a\x95\xe4\xae\x6b\xc4\xd9\x0d\x8a\x1b\xec\xfe\x0e\xa0\xb8\x85\x69\xd4\x14\x66\x48\x77\xd1\x32\xb1\x79\x52\x67\x69\x7b\xfb\x47\x03\xef\xb4\xfe\x11\x6c\x8e\x65\xb3\x55\xd5\x16\xed\x17\xcc\xb8\x90\xbd\xff\xb2\x30\xe3\x02\x31\xfb\x0c\x33\x2e\x90\xba\xbf\x30\xe3\x0a\x42\x5b\xc0\x8c\xb5\x9b\xf8\x4e\x31\x75\x3b\xa1\xb0\xe4\xa9\x4c\x27\xd9\xf4\x1a\x6e\x93\x36\x95\x04\xb5\x70\xb6\x7a\x8e\xc9\xee\x00\x6a\xb5\x0e\xd4\x4d\x11\xf3\xd1\xc8\x85\x29\xb7\x44\x23\x07\x22\xad\x47\x23\x3b\x34\x72\x79\x5d\xf6\x11\x8d\x5c\xd8\xf3\x76\x68\xe4\xaa\x2d\xdf\xc0\xf7\x1e\x0c\xf3\x66\xd0\xc8\x85\x15\xdd\x67\x34\x72\x81\xd4\xdd\xa1\x91\xab\x77\xb6\x1b\x1a\xb9\xf2\xfa\xaf\xe7\x9f\x6d\xb1\x62\x50\xac\xe6\x99\xd1\xc8\xc1\x04\x7a\x34\xf2\x96\xe5\xe5\x43\x16\x34\x14\x40\xb5\x54\x03\x70\x2d\xca\xba\x06\x3c\x32\xa8\xb4\x3b\xe0\xa8\xa7\x8d\x09\x82\x17\xaa\xad\xd6\x3d\x0c\xd6\x41\x98\xfa\x7d\xea\xfa\xb3\x18\x51\xaf\x05\x63\x5f\x56\x61\xdb\x84\xf7\xc2\x22\x3b\xef\x15\x6c\x5c\x1d\xcb\x55\x54\x9d\xda\x82\x01\x4d\xa9\xb7\x4d\xeb\x6d\xd5\x77\x65\xd3\x85\xd4\x76\x33\xec\x37\xfe\x7f\x6b\x17\x64\xdb\xa2\xfc\xd1\x32\xdb\x04\xd5\x39\xdb\xec\xb1\x05\x59\xa4\x7c\x5d\xd8\xac\xc6\x9c\x4d\x39\x9e\xad\x43\x92\xb6\x5d\xbd\x6d\x57\xcd\xd6\xbe\xeb\xe6\xdf\xb8\xb1\x4f\x35\x1a\x5c\xb6\x6b\x81\xef\x01\x07\x9d\xb4\x32\xc6\xe2\x72\xf9\x37\x8c\xa2\xd4\x00\xe6\xcb\x2f\x04\xf7\xaa\x20\xfc\xd0\x43\xc0\x87\x7e\xcd\x32\x05\xc1\xba\x5b\x05\x6d\x8b\x65\xcf\x78\x6d\x6c\xba\x85\x8c\x1d\xea\xaa\xa9\x4a\xfb\xf3\x13\xfd\x8b\x9c\x36\x59\x55\xe0\xa8\xda\x99\xd4\xba\x97\x6c\x17\xc7\x30\xfd\x97\xdb\xe8\x29\x4d\x08\xc2\x51\x44\x04\x34\x23\x46\x06\xbb\xa0\xab\xc3\x65\x3c\xd9\x66\x57\x29\x9b\xc1\xbc\x95\x32\xe9\x55\xaf\x77\xcc\xa3\xef\x8c\x39\x4f\xb3\xd9\xdc\x5a\x59\xb6\xc1\x59\xd5\x5e\x7e\x29\x57\x43\x7d\x65\x01\x81\x42\xcb\x93\x22\x13\x74\x8f\x98\xda\x25\x79\xe6\xa8\x69\xd5\x3c\x3a\x70\x47\x80\x79\xc9\x8f\xbf\xf5\x63\x6b\xad\x04\x32\x5c\xc6\x6c\x18\xa0\x63\x6c\x7f\xac\xc9\x2a\x8f\xb2\xeb\xab\xdd\x67\x32\xe8\xe8\x69\xac\x17\x68\xa1\xa1\xfe\x02\x35\x04\x1e\x32\xf1\x54\x1b\x33\x05\x80\x00\x89\x0f\x71\xb4\x8a\x12\x1a\x79\x2a\xe9\x8c\xe3\xe5\xbc\x89\x13\x7b\xb8\xfa\x4b\xc1\xd5\x5b\x56\x46\x6e\x22\xed\x8b\x5f\x5b\xf8\x55\xc3\xe8\xcb\xec\xd8\x23\xe8\x3b\xb0\xe4\x76\xf4\xec\x9c\x13\x5f\x13\xa0\xbf\x9e\xf3\x5e\x18\x3c\x5d\x26\xec\x25\x61\xfc\x15\xf7\xc5\x66\xab\xfb\xb2\xe0\xfd\x56\xd3\xa8\x85\xc8\xb5\xc0\xed\x07\x8d\x6c\xdc\xbd\xbf\x06\xc5\x5f\xbf\x4a\x7b\xc2\x83\xbb\xc4\x47\xd5\x49\x9b\xf5\x18\xa9\x2e\xaa\x62\x37\xb8\x94\xdb\xa8\xd7\x05\x99\x72\x64\x6f\x08\x9b\x1a\x7a\x05\xb7\xe7\x69\x02\xad\x74\x83\xd5\x72\x2f\x70\xc8\x0b\xb7\x40\x76\x33\xa0\x6f\x22\xa8\xae\x79\x91\x84\x26\x70\x94\xdb\xc4\xb7\x01\x90\x5a\x63\x0f\x75\x04\x49\xf9\x8b\xba\x1d\x50\x6a\x4b\xfb\xa6\x1b\x58\xaa\xa9\x0f\x66\x71\xbf\x37\x08\xeb\x95\x0a\x52\xf4\x41\x61\x17\x14\xae\x5e\x9b\x7d\x0c\x0c\x97\x3b\xcb\xb5\x0c\x0e\xd7\x6d\xff\x2e\x38\x69\x87\x41\xe2\x17\x0e\xbd\x36\x46\x5d\x3d\x06\x7b\xd9\x58\x76\x53\x18\x7b\x3d\x9b\x55\xc6\xe5\xea\xf7\xb4\x53\x78\x98\x35\x87\x86\xed\x5b\xb6\x8d\xe1\x39\xdc\xfd\x93\xc6\xf1\x9c\x9f\xd1\x7b\xa2\x65\x2c\x2f\x4f\x0c\xe8\xe3\x79\x4f\x1a\xcf\xab\x58\xe8\xf5\x31\xbd\x40\x41\x78\xd6\x40\x8c\x7d\xf3\x73\x04\x63\xd6\x29\x55\xd9\xe4\xee\xc9\xcf\x51\xe5\x9c\xdb\x1e\xa7\x2f\x6e\x6f\xf5\xe5\xc7\x15\xd3\x4c\x48\xac\x3b\x8f\xcb\x14\xa5\xd0\x53\x2c\x67\x01\x46\x34\xb3\xe6\xdd\xa3\x31\x34\xe4\xa0\xb1\x06\x64\x2e\x31\xd4\x28\x71\x77\xa8\x46\xe9\x8d\x19\xec\x6f\x92\x10\x6e\x75\x76\x8e\xbe\x13\x14\xba\x7a\xe7\x7a\x3c\x47\x71\x4a\x04\xfb\x56\xea\x9e\x10\x98\xad\xd0\x3d\x4b\x1f\x13\x12\xcf\x60\x87\x8a\xc4\x1c\x22\x4a\x06\x88\x4a\xf7\x18\x27\x38\x9a\x2b\x71\x39\x56\xb4\x83\x5b\x5b\x5f\xf6\xc4\x3c\xcb\x4d\xc6\xb4\x67\x32\x88\x77\x47\x08\x9d\x32\x34\xc5\xca\x28\x16\xd9\x24\x1f\x3f\x4e\xa1\xd1\xba\xba\xfd\xfd\x89\xe7\x83\x3c\x59\x20\xae\x32\xf0\x56\xa3\xbd\x2a\x06\x18\x26\x14\x6f\xe5\x18\x7f\xc0\x25\x1c\x7a\x07\x69\xf8\x39\x13\x52\xf7\x2e\x83\x0e\xb6\x86\x5e\x03\x6a\x76\xe9\xba\x50\xdd\x46\xa7\xbe\xb2\x34\xae\xed\xf2\x5c\x98\x4a\x57\x5a\xf2\x28\x86\x29\xaa\x63\x4c\x22\x18\x57\x2f\x77\x9c\x3e\x32\x21\x39\xc1\x0b\x20\x44\x98\x16\x8c\x53\x1d\xaf\xd0\xce\x06\xca\xf5\x0d\xdc\x65\x8b\xcf\x28\xbb\x57\xbb\x9b\x27\x28\xa7\x90\xfd\xa9\xde\x5c\xb1\x69\x3f\x50\x86\xf9\x56\x5d\x9e\x74\x05\xf5\x8d\x4c\xf9\xc9\xaa\x2e\x83\x5b\xe2\x75\xe9\xda\x5d\x0c\x77\x41\x17\xea\x5e\x54\xaf\x43\x20\xea\x74\x39\x34\x8c\x24\x86\xa6\xeb\x73\x92\x2c\xbd\xe2\x46\x4b\xcc\xa5\xeb\x29\x20\x56\x42\x92\x05\x74\x66\xca\x98\x6e\xcd\xae\x6d\x81\x47\x93\xe6\x67\xfc\x42\xf9\xe0\x47\x63\x76\x2a\xbf\x15\xea\x7c\xa5\x6c\x96\xac\x10\x8e\x1f\xa8\xc8\x93\xc5\xa3\x94\x89\x6c\x41\xb8\x79\x05\x15\xba\x94\xbf\x6e\x8d\x8c\xb0\xe5\x15\x45\x9b\x52\xbc\x6c\xa5\x3d\x73\x37\xcc\xd0\x84\x4c\xd5\xa5\xbb\xc4\x5c\x58\x1f\x44\x85\xff\xc0\x6c\x6e\xac\xd6\xea\xc5\xce\xe4\xcf\xfe\xb1\x43\x8b\xfc\x84\x62\xa3\xd3\xbe\x2f\x9e\x4f\xb3\xea\x0d\x67\x73\x52\x9a\x14\x6a\xbe\x98\xcc\x2a\x9c\x94\xda\x04\x14\x4d\x3d\xdb\xad\x40\x77\xdb\x57\xef\xb1\x0a\x8d\x26\xae\x93\xb7\xa8\x30\x41\x43\xb5\x76\x01\xf8\x67\xd3\x74\xcc\x14\x12\x4b\x1a\x19\xdd\x29\xaf\x07\xab\x9f\xae\xdf\xda\xb6\x85\x3a\xeb\xb6\x57\x44\x38\x29\xef\x70\xfd\x5a\x5e\xeb\xdf\x37\xcb\x3e\x73\xdc\xf4\xd8\x8d\x30\x88\x28\x4d\x92\x2e\xf9\xe0\x85\x99\x1f\xe7\x8f\x37\x53\x94\xbf\x47\x6d\x80\xdd\x0b\x38\x35\x3a\x87\x1d\x27\x46\xb3\x10\xd2\xec\x92\xff\x23\x2d\x43\x57\x88\x65\x8b\x09\xe1\x63\x96\x4e\xa1\x4c\x40\x52\x67\x36\x2e\x79\xba\xa0\x5d\x12\x93\x2e\x60\x9b\xaf\x6c\xb0\x67\x8d\x37\xcb\x86\x84\xd4\x29\x32\xec\x65\xde\xa8\xbb\xc3\x31\xad\x67\x34\x9c\xa1\x05\x5e\x6e\xb4\xe0\xa5\x0e\xc9\xa5\x95\x5e\x68\xd3\xd5\xac\x1e\x64\x43\x13\x48\xbe\x87\x45\x7e\xc4\xab\x1c\x2c\xd2\xe5\x38\x5d\x6b\x5d\x84\x88\xbc\xc3\xac\xe1\x32\xef\xc4\xb8\x60\x99\xde\x2f\xbd\x0a\x6d\x4e\xd0\x71\x15\x1b\x76\x3e\x4b\x76\xce\x4f\xa9\x64\xfb\xc7\xde\xd7\xaf\xbb\xdc\x86\xe1\x61\xf0\x46\x44\x40\x4e\xf3\x52\x7d\x0e\x38\x67\xe7\x6b\x54\x18\x07\x69\x5b\xce\xfa\xca\x2f\xab\x47\x7d\x86\x35\x33\x6c\xdd\x6a\xb1\xb6\xc4\x9f\x75\xeb\x8e\x60\xdf\x58\xd1\x0c\xc1\x3b\xef\x5d\x3a\xae\xac\xb7\x21\xa6\x4a\x77\xd1\x6a\x65\x3a\x9d\x26\x29\x56\x96\x9a\x89\x5d\x4f\x69\x42\xc4\x11\x3a\xad\xb0\x27\xfc\x86\x45\x3a\xbd\x15\x22\x21\x56\xdf\xc9\x38\x35\xa8\x0c\xc2\x89\xd3\x6a\x10\x35\xc5\x72\x73\x97\x03\x27\x8a\x66\x60\x60\xd0\xe4\xe7\xca\xc4\x9b\xeb\x01\xa8\x30\x8d\xd9\xa5\x22\x09\x6c\x3b\x2a\xb5\x2f\x22\x26\x4b\xc2\x62\xf7\x40\xaa\xdb\xff\xe1\x48\xf7\x66\xcc\xa9\xaa\xd9\xd2\x5d\x74\xc3\x6a\x1f\xa3\xb7\x6f\x2d\xf4\x40\xfd\xc6\xff\x6f\x91\xc2\x9b\x70\xf4\xce\xd4\x39\xbd\xbc\xbb\x73\xff\x23\x3c\x6a\x9d\x49\x18\x4d\x39\x01\x7f\xe3\xc2\xe1\x02\x59\x4c\xb8\x90\x69\x0a\x37\xd4\xf5\xc9\x4f\xef\x6f\x4f\x11\x91\x11\xd4\x0f\x1d\xb3\x48\x3c\x0c\x94\x42\xfb\xcf\x8c\x48\xf5\x71\x5d\xf1\x98\x05\x61\x02\x24\x01\x6d\x5b\x47\xda\x2e\x8c\xfa\xef\x49\xf8\x7c\x03\xcb\x7b\x6d\x5a\x75\xa1\x25\xe0\x5d\x5b\x18\x03\xd8\x14\xb2\xb1\x83\xfe\x74\xc1\x7e\xa4\x69\x42\x30\x1b\x55\x55\xed\xda\x20\x1a\xcc\xfe\x91\xb1\x8e\x6a\xd2\x71\xfe\x90\x47\x45\x8d\x16\xb6\x58\x62\x4e\x45\xb7\xe1\xed\x33\x95\xa3\xaf\x13\x22\x79\x5b\xf3\x89\x5e\x29\x94\x17\x38\x43\x92\x13\x02\x22\xc4\xf1\x93\xb9\xeb\xe1\x96\xf7\x56\xc3\x7b\xe8\x68\xcc\x3e\x5b\xff\x67\xfe\xa9\xc8\xbb\xb2\x2e\x26\x50\x74\x25\x03\x9b\x29\x1c\x05\x86\x8d\xa9\x70\x1f\x40\x2e\xbe\xc8\x12\xa9\x4b\xfa\x4c\x29\xc3\x89\x23\x54\x7f\x53\x25\x25\x38\x66\xd1\x1c\xfa\x46\x6d\x13\xa1\x9d\xde\x91\xa4\x8b\xee\x78\x3a\x1d\x25\x42\xf1\x77\x74\x5f\x73\x3a\x7f\x6b\x4b\x81\x75\xd8\xa0\x7c\x32\xa0\xb9\xd9\x02\x31\xda\x2a\xd1\x7e\xba\x44\x12\x9d\xcd\x0f\x4e\xb6\x22\x38\x40\x83\x29\xd5\x2e\x1a\xdd\xda\xb4\x41\x93\x3c\x4d\x90\x75\xcb\x4d\xe0\x2d\x08\xcb\x31\xe3\x19\x83\x8c\x6a\xe7\x3f\xc7\x48\x10\x4e\xb5\x23\x3b\x4a\x99\xd6\x01\x8c\xf3\x64\xa6\xc4\x84\xd2\xfc\x00\x99\x91\x32\xb0\xa8\xd2\x4c\x28\x19\x82\x17\x44\xaa\x0b\xea\x3b\xa8\x55\xa7\x23\x18\x03\xb4\xe4\x74\x21\xe9\x03\x71\x65\x10\xfc\x9d\xab\x64\xe6\x6d\xa2\x5b\x4b\xc2\xb1\x6c\x5b\x55\xa1\xea\xed\x17\x76\x84\xca\x03\x9b\x90\xa9\xbc\xab\xf4\xbb\x34\x98\x18\x6a\x44\x16\xd7\xa0\xc8\xe8\x6c\xbe\x83\x11\xdb\x9f\xfa\xdf\x1b\xbf\x98\x3a\xea\xde\x8d\xcf\xd3\x54\x6a\x7e\xcb\x65\x12\xb2\xab\x09\xea\x82\x79\xa9\xae\xc4\xa4\x36\x95\xc2\xae\xaa\x33\x7c\xcf\xd2\x47\xe6\x6c\x6b\xa5\x36\x8c\x70\x34\xf7\x05\x8b\x89\x53\xe8\x53\xbd\xf6\x3c\x07\xd5\x86\xf6\x24\x8f\xc3\x6f\x8c\x09\x95\xff\x92\x15\xca\x2b\x4a\x05\xcf\xb5\xb9\xde\xb4\xdd\x69\xcf\xae\x9e\xb0\x29\xa2\x22\xc9\xd2\xd8\xc6\xa6\x77\xa2\x03\x79\x80\x7b\x55\xbd\xea\x08\x7d\xb1\x9a\x1c\x84\x81\x5c\x64\x02\xb2\x0a\xa8\x40\x09\x5e\xd9\x0e\xc3\x55\x0b\xbb\x0b\x80\xff\xae\x63\x33\xcd\x0b\xec\x90\x9b\x15\xab\x1c\x5c\xa8\x8c\x69\x0b\xab\x65\xec\xd8\x5c\xd8\xe6\xa1\x6b\xd2\x8c\x49\xf8\x08\x55\x55\x74\xef\x6a\xf0\x56\xa5\x2c\x59\xfd\x7f\x7a\xb3\x00\xd8\xaf\x8e\x50\x66\xbc\x01\x9e\x0f\x53\x9d\x1f\xf0\xc1\xb1\x54\xaa\x4b\x71\x4a\x93\x04\x62\x2c\x47\x68\x08\x75\xc1\xa0\xe2\x93\xee\x56\xae\x83\x77\x74\xc6\xd2\x75\x21\x86\x1a\x66\x8a\x3c\x66\xba\xae\x67\x26\x01\xdc\xe4\xa2\x0a\x3b\xe2\xa8\x1d\x40\xf0\x94\x6c\xc1\xe5\x34\xb2\xf6\xc0\xbb\x0e\x97\xf1\x4b\x84\xeb\x4a\xe4\xfa\xa6\x71\x35\xe9\x9f\x32\xcc\x31\x93\x10\x84\x32\x55\x4f\xb9\x09\xf4\x2a\x0e\x44\xe4\x2b\x44\x6b\x99\x36\xec\xe0\x23\x7f\x73\xad\xd3\x7d\x46\x1f\x08\x43\x34\x1e\x20\x7a\x44\x8e\x06\xa6\x6a\xac\xc8\x26\xf9\x2f\xe7\x58\x20\x3c\x66\x25\x20\xd9\x11\x1a\x26\x22\x35\x4f\x10\x16\x25\x50\x87\xcf\x8b\x97\x39\xce\x37\x6e\xa2\xc9\x0a\xd0\xa6\xb0\x95\xf9\xf0\xa9\xf9\xc2\x7b\x70\xcc\xb0\xd0\x5e\xe9\x04\x4e\x7a\xfe\x79\x55\x7d\xc8\x20\x52\xf1\x84\x79\xc6\xa5\x6b\xe8\xc9\x36\x49\x17\x94\x6b\xda\x20\xf8\x05\x6c\x4c\x0e\xf0\x1b\x33\xc7\xce\xe8\x3b\x2c\x13\x82\x85\x44\xbf\x7b\xd7\x29\x38\x63\xe7\x97\x0b\x57\x73\x7a\x73\x18\x8a\x0d\x7d\xd7\x95\xb7\x85\x32\x44\x08\x43\x43\x5f\x07\x4c\x19\xa8\x6d\x96\x29\x7a\xa0\x22\x83\xca\x86\x1e\xac\x4a\xd7\xa6\xa3\x52\xd8\x32\x2b\xda\x4f\x59\x23\x46\x6c\x85\x53\xe3\xbf\x34\x64\x55\x30\xd6\x40\x2f\x39\xd5\xca\x2e\x20\x9b\xf3\x20\xf4\x5c\x69\xb9\x46\xb0\xda\xb8\x8d\x57\x02\x6b\x98\x24\x61\xe0\x57\x29\x38\x31\x61\x6a\xc2\x50\x97\xf1\x08\xf9\xcd\x2f\x45\x1e\x2b\x0c\x4b\x0a\xe7\xed\xbd\x51\x3a\x1d\x33\x87\x4e\xf5\xc7\xae\x54\x76\xaa\xcc\xc5\x67\xd4\x81\x2b\x5e\x7f\xa6\x0b\x64\xb6\xd0\x85\xeb\xab\x63\x37\xb8\x57\x4a\x26\x7a\x83\x6a\xbc\xeb\x17\xb4\xd7\x94\xab\xcd\x5d\xb8\x65\x1f\xd3\x0a\xeb\xb9\x66\x73\x3d\xd5\x62\x8b\x4d\xcd\x83\xd6\xcf\xe5\xc0\x0d\x48\x3f\x8d\x01\x51\xb6\x5e\x08\xe6\x08\x2d\x2b\x3a\xc0\x6e\xa5\xb1\x87\x31\xf1\x02\xf0\x00\x25\xb2\x72\xcf\xfc\xb2\xae\x1e\xd6\xeb\x9e\xfe\x20\x9f\xbf\x9d\x8a\x8b\x42\x97\x27\x5e\xaf\xeb\x0d\xe3\x7f\xe0\x88\xb0\x68\xa5\xdf\x64\xeb\xfa\xe5\x7a\x1c\x28\x7b\x5e\x06\x27\x06\xdb\xbc\x52\x3b\x34\xb5\x6e\x8f\xd0\x08\xee\x19\x5b\xfa\x16\x4f\xad\x7f\xc1\xfb\xf1\x98\x29\xc3\x44\x5d\xf1\x42\x13\x6d\xc7\x0f\x59\xbc\xea\x04\x68\xe8\xfe\x56\xae\x99\xc5\xfa\xe2\x00\x75\xc6\x84\xcd\x1c\x80\x31\x20\xd3\x1a\x8d\x66\x1f\x50\x9c\x46\xf7\x84\xbf\xe7\x24\xa6\xe2\x03\xb8\xca\x65\xad\x8f\x6e\xa1\x8c\xed\xad\x15\x8d\x4d\xab\xa6\xeb\xf7\x1b\xf4\x91\xbe\xb7\x88\xd2\x10\xa6\x60\x4d\x58\x54\xa1\x86\x1a\x9a\xd2\x17\x88\x30\xc9\x57\xcb\x94\x32\x69\x51\x12\x51\x61\x21\xac\xa1\xa1\x74\xb6\x3a\x2c\x0e\xdf\x45\x48\x6d\xc3\x69\xdf\xcc\x89\x20\x36\x7e\xa0\x27\x25\x53\xa4\xab\x42\x6b\x71\xb1\xc4\x72\x2e\x00\x17\x19\xae\x81\xb1\xb9\xe0\x51\xb5\x42\x78\x09\xe1\x07\xed\xa4\xc8\x1f\x72\x80\x3f\x21\x69\x92\x8c\x19\x23\x24\x16\x08\xea\x14\x7d\x5b\x89\xbf\x55\x8f\x0e\x10\x8e\x63\xf4\xbf\xbf\xfb\x78\xf6\xd7\x9b\xd1\xdd\xe9\xf9\xe5\xed\xcd\xdd\xc7\xd3\xb3\xd1\xbb\x81\xfb\xf0\xe2\xf6\xc6\x7d\xaa\x1d\x2c\x0f\x84\xa3\x05\xbe\x07\x0b\x8f\x09\xad\xfe\x01\x2c\xce\xa7\xd4\xa6\x3b\xa9\x6f\x04\xb1\x50\x13\xa3\xa6\xb8\x84\x17\xb3\x87\x6b\x52\x12\x3b\xd8\xbe\x57\xee\x91\x66\x1e\xb4\xcc\xe3\x5e\x61\xd5\xc0\x05\x61\x52\xc9\x18\x83\x59\xcb\x4d\xdf\x9c\xe1\x08\x9b\x51\x56\x17\x10\x27\xec\xe1\x29\x75\xf8\x9f\xc8\xea\x67\x65\x5d\x5f\x62\xca\x5b\xf3\xde\x88\x3d\x50\x9e\x32\x98\x9a\xf3\x6a\xe5\x9d\x25\x08\x4c\xb8\x70\xa8\x84\xd6\x85\x21\xe4\xb2\xac\x05\x5d\xb0\x29\xad\x85\x57\xbd\xd8\x74\x87\xda\x4d\x4c\xbe\x4a\x8e\x4d\x23\x4b\x61\xc4\x0d\x7e\xc0\x34\x01\xc0\x8c\xbd\x68\x72\x1e\xd4\x0d\x0b\x3e\x20\x92\xe0\x49\xca\x01\x46\xab\x23\x7c\x76\x08\xb3\x60\x50\x02\xdd\x0d\x54\x07\xdc\x48\xf9\xd3\x35\x92\x09\xee\xa1\xcb\x94\xb7\xb9\xc9\xd5\xcf\x60\x15\xd2\xa5\x32\xc9\x0a\x42\xd4\x5c\xb3\x53\x82\x75\x25\x64\x01\x92\x46\x64\x4b\x35\x0f\x03\x06\x49\x92\xa0\xe8\x96\x3a\x03\xe2\xc8\x38\xc7\xf3\x5f\xa6\x0c\xfd\xf4\x27\x81\x26\x99\x1c\xb3\x70\x8c\x94\x41\xdf\x98\x1f\xb0\x8c\xe6\x55\x86\x5d\xfd\x55\x7b\xb9\x65\xef\x0b\x37\xcd\xbb\x65\x38\x52\x30\x1a\x65\x92\xcc\x8a\x29\x6a\x5d\xaa\xa5\x9c\x03\xa8\x07\x5a\xf0\x42\x53\x8c\x14\x99\x66\xaa\x06\xc3\xbf\x4c\xe3\x6f\x05\x3a\xbd\x54\x32\x57\xe9\xd8\x10\x8e\xa6\x42\x7b\xd2\x20\x3a\x05\x08\x3d\xfd\xb4\x46\x08\x0d\xd0\xf7\x68\x9c\x7d\xff\xfd\x1f\x22\xf4\xd5\xfe\xf1\x9f\x7f\xfc\xe3\x1f\xfe\x73\x93\x1e\x2f\x30\x6e\xbe\x46\x26\x83\xb6\x28\x84\xfd\x1d\x18\x15\x2a\x3a\x77\x8f\x04\x43\x81\xe0\x3b\x68\x11\xde\x2d\xdd\xab\xa2\x62\xae\x51\x2b\xad\x37\x82\x13\x1d\xad\x87\xb2\xd3\x75\xf0\x24\x22\x44\x47\x55\xab\xb2\xf4\xb4\x19\x07\x8a\xce\x3c\x76\x2a\xcd\xea\x03\xa5\x99\xa6\xd5\x8c\x62\x8d\x05\x0f\x5d\x15\xac\x7d\x58\x1e\x7b\x2b\xf6\x8f\x37\x53\x36\xf5\xdc\x23\x58\xf6\xbc\x01\x0c\x9a\xf1\x34\x5b\x3a\x08\xa2\x05\x63\xe8\x6d\x18\xb3\xcf\xea\x9e\x3f\x65\xd3\xf4\x83\x61\xd8\x33\xca\xee\xe1\xaf\x1a\x1f\xf7\xf6\x7b\xe4\x0a\x51\x7b\x9f\x5b\xfb\x40\xaf\xf8\xa1\xe9\x46\xa0\xa8\x16\x12\x47\xf7\x3a\x3d\xb0\xa9\x90\x79\xd7\x52\xec\x39\x84\x21\x53\x92\xd2\x2c\x1d\xf4\x47\x16\x7e\xa1\xa4\x07\x8a\x11\x46\xb7\x57\xa7\xd5\xef\xbe\xa7\x65\xdd\xbc\xfa\x16\x08\x19\x04\xfe\xe7\x27\xda\x29\x8a\x56\x48\x67\x25\x01\xab\xbb\xac\x98\xba\x04\xad\x42\x66\xef\x56\x09\xa1\x9d\x4b\x4f\xf8\xba\x1e\xc0\x55\x9a\xf8\xc3\x51\x19\xa6\x23\x38\xd6\xb5\xef\xb7\x92\x45\x19\x9c\xfa\x11\xc8\xf0\xe0\xba\x57\x40\xdc\xd0\x24\x7d\xfb\x6a\x27\x7e\x63\x30\x5b\xf2\xc4\xb4\x55\xd2\xb4\x4d\x08\xa4\xa6\xd4\xd3\xb0\x75\x7d\x13\x9f\x04\x53\x4e\xa1\x8e\x82\x31\x1b\xda\x9f\x38\x5c\x04\x13\x54\x77\xaf\x01\xcf\xae\xc8\x26\x3a\xfe\x03\x5d\xc7\xbd\x4a\xd7\x66\x72\x35\x93\xd8\xb2\xff\xf2\xad\x20\xdc\x99\x4f\x06\xd1\x69\x35\x3d\x3b\x8f\x9a\x37\x9b\x4a\x55\x5b\xbc\xfc\xda\x4e\xb1\x50\xf4\xaa\xea\xc5\xeb\x8e\xe6\xc8\x61\xde\xcc\x40\x7e\x9d\x2d\xed\x35\x4f\x56\xb9\x8f\x56\xad\xb8\xb6\x25\x0b\x2f\x0b\x0e\xeb\x54\x63\x3b\xb6\xd3\xa4\xb4\x0b\x6a\xe7\xde\x51\x39\x27\x0c\xf4\x84\xf6\x23\x03\x40\xa6\xbb\x1a\x84\x73\x10\x88\x35\x5d\x3d\xc5\x36\x63\xd4\xe4\x64\x1b\x5f\xbd\xe7\xa4\xb0\x3d\x25\xf2\xe7\x95\x99\x84\x25\x15\x53\x5a\x4a\xa2\x2e\x22\x6a\xb6\x59\xf5\x4e\xbd\x29\xec\x36\x37\xb1\xaa\x0b\xb6\x1c\xa1\x8f\x94\x0b\xe9\x4d\x49\xa9\xad\x06\x10\x53\x57\xed\x5a\xce\x49\x6d\x2e\xc7\x2e\x6c\x1b\x3b\x83\xb6\x06\x9f\x0b\xac\x1d\xa1\x61\x5e\x0e\x43\x43\x82\x88\x68\x31\x23\x92\x08\xb2\x09\xf3\xb5\xd2\x58\xc1\x0e\x00\x06\x42\x20\x2e\x85\xfa\x3c\xcf\x2b\x73\x64\x3e\x02\x76\x05\xdf\x93\xba\x1e\x19\x5d\xfb\xab\xac\x6d\xab\x32\x74\x0a\x69\xaa\x75\xd2\x4d\x08\x6c\x7f\xec\x72\x14\x16\x9d\xbe\x57\x4b\x6e\x1a\x96\xe9\x90\xd9\x14\xf8\xd0\xe0\xb8\x1e\xe7\xca\x6e\xca\x99\xd2\xee\x9f\xd0\x6d\x14\x33\x62\x43\x63\x10\x71\x74\x0b\x7c\x34\x66\xa7\x53\xc4\x52\x1f\xe6\x05\x54\xbb\x43\xaa\x5d\x6a\x6e\xbf\x91\xb9\x1b\xf4\x32\x80\x81\x6f\x87\x2a\x9f\xe6\xc0\x19\xb1\xc5\x71\xde\xae\x15\xa3\x3b\xb9\x35\xd7\x58\xd7\x24\xba\xda\xb3\xd4\x29\xf6\x3a\x23\x8c\x70\x1a\x41\x82\x86\xbe\x76\x97\x98\x56\x99\x94\xa6\x30\xc1\xbe\xa6\x1a\xed\x3a\xc7\xc8\x4c\x77\xc3\xfc\xa2\x44\x3f\xad\x31\xf2\x09\x14\x7a\xd3\x79\x45\xbb\xc8\xc6\xc9\x4b\x44\xb4\xcb\xc4\xd1\xcc\x23\x74\x25\x76\x4d\x57\x37\x1e\x09\x96\xd8\x74\xfc\xd4\xde\x21\x01\x49\x51\x1a\xc8\x97\x4e\x5d\xf2\x94\xf6\x2d\xe9\x3c\x4b\x65\x6b\x96\xfe\xf8\x21\x49\x27\xe2\x9d\xdf\x3f\xce\xbc\x23\xc7\xf3\xd5\xb3\xe0\x6e\x72\x75\xec\x52\x3c\xe5\x7d\x68\xcf\x8c\x7f\x1f\x76\x59\xf8\x6a\xa6\xca\x43\x6b\x1a\xce\x80\x79\x9a\x31\x9b\xeb\x90\x32\x92\x4e\x01\xdf\x08\x9d\x6d\xac\x55\x08\x30\x68\x96\x4a\x0f\xba\xc0\xc9\x52\x07\xce\x40\x43\xad\x5f\xee\x2d\xf3\x7d\xd6\xad\xf3\x53\xe4\xfb\x6c\xbb\xee\xe6\xe0\xbc\xd0\x82\x6f\x9b\xc5\xa1\x8f\x52\x07\x31\x0b\xbf\x5f\x6b\x8c\x3b\x39\x00\xd6\xb7\x5f\xb1\x49\x23\x75\xc1\x53\x4c\x0e\x65\x7a\x08\x90\x2f\x00\x12\xe9\x0c\xbc\xba\xba\x14\xd1\x9c\x2c\x3a\x24\x39\x5d\xc3\xef\x5b\xd0\xa9\x7b\x62\x7f\xf5\x08\x35\x77\xaf\x40\xb6\x5a\xab\x6e\x95\x0d\x8d\x97\xc0\x3e\x5b\x7b\x73\x74\x74\x71\xf8\x5b\xd9\xec\x01\x33\xd9\x25\x85\xec\x28\x93\xd3\x38\x05\xa3\xc7\xd2\x70\x84\x2e\x58\xb2\x42\xf3\x74\x91\xaa\x6b\x3b\xcd\x84\xf7\xa5\x86\x0b\xc1\x65\xd3\x50\xab\x76\xa9\x21\xde\x2f\x37\x1b\x75\xb4\xd4\x57\x5a\x77\xf4\x7f\xb4\x3e\x45\xd4\x9b\xc9\x24\x4c\xb1\x5b\x43\xbf\xcb\x8d\x6a\xe6\x1b\x48\xe8\x59\xd0\xd9\xdc\x54\xfe\xf0\x5b\xe2\x02\xeb\x2f\x5c\x21\x44\xdb\x9b\x4b\xa7\x94\x01\x43\xb1\xaa\x92\xe7\xb5\xee\xed\x2e\x19\x7e\x1d\x7a\x94\x79\x08\x60\x87\x9d\x83\x45\x76\x38\x5a\x8b\x4f\x73\x0f\x3e\xe4\x65\x67\x56\x4b\x32\x40\x93\x0c\xbe\x3f\xbf\xb8\xf1\x7d\x43\x94\xc1\xd7\x87\xd1\x9c\x44\xf7\x6a\x5f\x90\x16\x8a\x7a\xb9\x6c\xfd\xa0\xc9\x6a\xcc\xf2\xe2\x06\x32\xb5\x8e\x8e\x95\xcb\x1e\x71\x19\x54\x29\x47\x31\x15\xcb\x04\xaf\x10\xf9\x2a\x09\xd3\xb5\x5e\x2a\x1a\x45\x2a\x66\xd9\xcc\x6c\x81\xea\x0b\x46\x0a\x58\x3d\x0c\xfe\x65\x27\xe1\x8a\xcc\x01\x96\x7a\x8a\xa3\x4a\xb5\x63\xeb\x7c\x9e\x6d\xe2\x27\x75\x75\x44\xbc\xd2\x8a\x7a\x47\x7d\x57\xa9\x83\xf2\xb0\x02\x26\x67\x6c\xea\x99\x8d\x0f\xc0\x83\x32\xb6\x55\xd8\xd4\xbf\x75\x15\x27\xc2\x1f\x48\x3c\x66\x21\x58\xca\x5c\x65\xf9\x2e\xa3\x3c\xbf\xbc\x4e\x74\x76\x4f\x62\x55\xeb\xec\x72\x2c\x1b\x43\x3b\x10\x20\xce\x91\xe1\xae\x30\x5f\x43\xbe\x7b\x75\x1d\xb7\x27\x48\xcc\x6e\xed\xfc\xc8\x13\xda\x4d\x36\xaa\x29\x37\x41\x74\xaa\x64\xb2\xd2\x0d\xe5\x0d\x63\x3a\x28\x88\xc6\x89\x3a\xec\xab\xc1\x87\xe4\xa8\x07\xb3\xe7\x55\x63\x8c\x99\x8d\x58\x4e\xb3\x24\xd1\xd8\xff\xda\xae\x8f\x1a\x1a\x66\x23\x80\x2f\x87\xbf\x71\x76\x2d\xf2\x2a\x00\x78\x3d\x12\x97\xb1\x92\x1d\x2c\x5a\xe5\x55\x25\x81\x79\x09\x13\x99\xee\xc9\x2f\x3d\xec\xf3\x8c\x48\xa4\xf4\x8e\x38\x4b\x34\x70\x98\x67\xcc\xe0\xcc\x70\x92\x20\x2a\xc5\x98\x39\x58\x9c\xae\xca\x03\x57\x41\x64\x72\x41\x62\xa3\x0b\xc2\x2b\x60\x58\x53\x23\x0a\x2e\x08\x1a\x51\x19\x90\x04\x9e\xca\x95\x9f\x32\xb7\x5c\x12\xcc\x41\x5d\xb4\x4d\x0a\x7c\x6d\xb0\xb8\x0d\xa6\xb9\x30\x94\xee\xa9\xef\x16\xb2\x0b\xee\xd5\xa5\x9b\x3a\x6f\xca\x11\x1a\xea\xd9\x29\x55\xd0\xd6\xaf\xd1\xd4\x9a\x30\xb5\x89\x27\x28\x7d\x4b\x0a\x57\x6c\xd1\x69\xd4\x4b\xcc\x25\x8d\xb2\x04\xf3\x64\xa5\xa4\xcb\x34\x4b\x10\x9d\x7a\xa5\x78\x60\x13\x34\x2a\x0a\x4a\xaa\xa6\x70\x47\x58\xd4\xb3\xc0\xd0\xd6\xde\x30\xb8\x35\x3c\x13\xcf\x89\xa8\x33\xbd\xb4\x77\x4a\x8d\xf5\xee\x08\x9d\x14\x0b\x2f\xc1\xb1\xf0\xd0\xd4\x54\x68\x09\xe8\xe8\x35\x49\xa3\x50\x6b\x0e\x0a\x38\xd1\xa9\x52\x76\xbf\xf5\x0e\x5e\x5d\x85\x3f\x2c\xee\x3b\x7a\x28\x6f\xb0\xb8\x5f\xeb\xa5\x3c\xf5\xae\xca\x5c\x00\xde\x40\xe1\xb8\xc0\x6f\xe9\x4e\xc4\x9a\x6a\xf6\x1d\x89\xf4\x91\xe8\x1b\x10\xfa\xc5\xab\xcc\x56\x24\x76\xd1\x50\xf9\x07\xf6\xb1\x23\xa9\x5e\x56\x6e\x77\x42\x3d\xce\xf1\xfd\xd1\xb5\x2b\xbb\xde\xb8\xfc\x12\xe4\xc7\x22\x45\x97\x52\xec\x89\x8e\x60\x14\x8a\x7e\x02\x0d\x26\x91\x16\x72\x19\xdd\x61\x9b\x10\x94\x50\x76\xaf\x4f\x05\x86\x9d\x1f\x20\x9c\x8f\x0e\x87\x4f\x53\xaf\x99\xb9\x46\xb3\x71\xd1\xe8\xdd\x84\x84\xdb\x21\x46\x2a\x37\xd7\xcd\xbb\xe2\xf9\xf5\x8c\x58\x35\x8f\xf6\xdb\xd2\x18\xb6\x73\x4a\xac\x8d\xd5\xe9\x0b\x26\x6c\x64\xb8\x5a\xb7\xbe\x97\x85\x4e\xe5\x75\x5a\xe0\x01\x61\xd9\xe2\xe0\x03\xfa\x9f\x7c\x65\x6e\xcf\x4f\x46\x1f\x4f\xcf\x47\x27\x1e\x03\x1f\xfc\xe5\x76\x74\x1b\x7e\x72\x75\x7b\x7e\x7e\x7a\xfe\xc9\xff\xe8\xfa\xf6\xf8\x78\x34\x3a\x09\x7f\xf7\x71\x78\x7a\x56\xf8\x9d\xfa\x28\xfc\xd1\xf0\x87\x8b\xab\x9b\xf0\xa3\xeb\x9f\x4e\x2f\x2f\xc3\x8f\x6e\x4e\x3f\x8f\x4e\xee\x2e\x6e\x6f\xec\x5a\xff\xcd\x5b\x61\x40\xcb\x42\x74\xd7\xd1\x5f\xb9\x44\xbb\x28\xac\xd1\x35\xfe\xec\x21\xe5\xa7\x9c\x12\x16\x27\xab\xbc\x2d\x8c\x3a\x74\x85\x20\xa5\x2f\xd2\xe9\x82\xa4\xd9\x36\x98\x01\x65\xfa\xa6\x0f\xca\xa4\x4e\x90\x19\xcd\x60\x72\x0a\x6d\xd5\xbc\xb7\x72\x22\x79\xd9\x0d\xd6\x88\xb2\x90\x7c\x75\x2d\x39\x96\x64\xb6\x6a\x89\x7f\x33\x2f\x41\x4b\xc2\x9b\x68\x81\x0b\x97\x67\x4b\x49\x27\x65\x47\x93\x5d\x07\x93\x98\x52\x5b\xf9\xcf\x7c\xdd\xdd\xb2\xd3\xf8\x50\x5a\x29\xae\xcf\xab\x05\x9d\x4d\x54\xdf\x32\x1b\x14\x3c\xd3\xed\x77\xe0\xd2\x3d\x52\xcd\x7a\xc7\xb6\xb8\x85\x32\x99\x25\x66\x35\xc0\xff\x8e\x05\xf8\xf2\x6c\x5c\x9e\x97\xc1\x34\x37\x95\xb5\x22\x72\x34\xf1\x26\x96\xb5\x49\xc8\x67\x71\xde\x33\xcc\x24\xea\x7b\xd5\x38\x2a\x36\xa1\x50\xe2\xec\xc9\x6f\x99\x46\x9e\x37\x98\x44\x50\xfd\x74\x46\xa4\xe9\x84\xa7\xaf\x65\x48\x33\xae\x0d\xd5\xed\xb8\x22\xa2\x53\x3d\xf3\x72\x6e\xae\x40\xa0\x95\x47\xdd\x15\x8d\x42\x31\x34\xaf\x50\x9c\xee\x4d\x01\x09\xb0\x30\x6c\xee\x8b\x33\x9a\x85\x96\x03\x0f\x24\x46\x87\x7e\x01\xca\xf8\x10\xd0\x65\x63\x56\x67\x61\x56\x14\x6f\xf4\x39\xe0\xd2\xd6\xe6\xd8\x66\xef\x2b\x56\xbf\xfe\x08\xda\xc5\x6e\x07\xaa\x40\xf6\xe7\x47\xa8\xde\x95\x69\xf6\x65\x82\xb5\x0b\x09\xce\x96\x2b\x3a\x52\x07\xf1\x72\x77\x61\x37\x8f\x6b\x2b\x6f\x2b\x76\x89\x29\xda\xcf\x0a\x3a\xcb\x1c\x83\xff\x4d\xd7\xda\x0c\x08\xf7\x4a\x8d\xd6\x19\x2d\x2e\x41\x7d\x3b\xd1\xde\xca\x82\x1c\x68\x44\x80\xab\x1a\xee\x67\xf5\xba\x0a\x05\xdd\x18\xdf\xed\x86\xcb\x05\xc7\x56\xee\x81\xc0\x4a\x70\xa6\x74\xfa\x65\x82\x35\x90\x68\x8e\x85\x66\x69\xeb\xa4\xc4\x13\x9a\x50\x09\xbd\xab\xb5\x79\x5f\x58\xe1\x94\xa3\x05\xe6\xf7\xca\xa2\x25\xc9\x54\x8d\x5e\x08\xee\x57\x32\xfd\x96\x81\xb4\xbc\xb0\xcd\x73\x86\xd2\xf2\x23\xdb\xd6\x37\x90\xb3\xa5\x09\xa3\xe5\xdb\xa1\x4b\x2f\xcb\xd4\x2b\xd2\xd3\x6d\x67\xcd\x88\x97\xc5\xc7\x83\xf5\xae\xb8\xa8\xbb\xfb\x6c\x4d\x4e\x41\x07\x31\x5f\xcc\x38\xa8\x3c\x59\xd3\x24\xc5\x35\x65\x76\xec\xd8\x3a\x81\xa0\x6e\xec\x38\xcd\x94\x38\xab\x1c\x5c\x53\xd5\x3c\x7a\x93\x01\x66\xcf\xed\xae\x14\x3a\x5f\x00\x62\x49\xa0\x63\xd3\x46\x0b\x9a\x37\x7c\xaa\x1e\x3c\xe3\xb8\x0a\xdd\xd1\xbe\xc0\x61\x9e\x6d\x63\x99\x07\xdd\xac\x96\xa4\xa2\xac\x5b\x80\x5d\xde\xd0\x98\xbb\xbe\x1c\x1d\x9f\x7e\x3c\x2d\x58\x52\xc3\xeb\x9f\xfc\x7f\x7f\xb9\xb8\xfa\xe9\xe3\xd9\xc5\x17\xff\xb3\xb3\xe1\xed\xf9\xf1\x8f\x77\x97\x67\xc3\xf3\x35\xf6\x56\xf9\x15\x65\x77\x47\x9e\x18\x90\xe3\xa8\xd5\xdd\x60\xa0\xbf\x60\xea\x56\x9c\xaf\xab\x8a\xe4\xbe\x4d\x5b\x09\x3d\x99\x4b\xd3\x11\x69\xff\x18\x31\xc9\x57\x5d\x92\x3e\x51\x4c\x04\xdc\x43\xc6\x7b\x19\x26\x1c\x12\x01\xbe\x60\x3b\xfa\x39\x08\x36\xeb\x5d\x37\x21\x1a\xb3\x8e\xea\x62\x49\x68\x6d\x0b\x90\xea\x5e\xee\x7b\xb2\x0e\x3e\x06\x10\x56\x61\x92\x66\x2c\xb6\x95\xd5\x16\x94\xbd\x5f\xe0\xaf\xef\xec\x4c\xf3\x4e\x6b\x90\xcf\xaa\xcb\xd9\x27\x4a\xeb\x58\x21\x9e\xb1\xe6\xe5\x1a\xb3\x86\xf5\x5a\x7f\x33\xe8\x3e\x83\xf4\x5f\xa0\xe2\xe4\xfa\xa8\xf6\x18\x3f\x90\x55\xd5\xfe\x95\x12\xa9\xb4\x57\xda\xe8\xc0\x30\xc8\x92\x13\x28\x24\xea\xfc\xd1\x89\x8e\x33\xb8\x7f\x43\xbc\x33\xc8\x2f\xad\xba\x93\x42\x5b\x7c\xab\x73\x53\xe9\x05\x78\x82\x54\x38\xf3\x26\xb5\x69\xda\x27\x60\xd3\x4e\x4d\x7c\x37\x46\x8f\x73\xa2\x77\xeb\x1f\xe9\x04\x4d\x21\x1c\x6e\xca\xc7\x70\x12\x81\x7b\x43\xed\x85\x4d\x2f\x02\x58\x6d\xc9\xd1\x60\x79\x20\x21\x02\x9c\x6d\x50\x8a\x91\xfc\x33\x33\xd8\xb9\xdf\x7d\xdf\x2d\x65\x4b\xf2\x15\x12\x66\x99\xfd\x70\xbc\x41\xa3\x18\x9f\x1d\xd0\x95\x31\x5a\x55\xf2\xed\x4a\x17\x21\x7c\xde\x5a\xaf\x85\x97\x9a\x7f\xae\x45\x2c\xdc\xd8\x34\x18\xfd\xfb\x27\xcb\x8f\xf8\xb9\x90\x16\x61\x5e\x07\x81\x48\x33\xba\xf0\x50\xf7\xca\x32\x7a\xc4\x3c\xd6\x8e\x01\xf0\x11\x1d\xa1\x1f\xd3\x47\xf2\x40\xf8\x00\x45\x84\x4b\x6c\xe0\xca\xea\xac\x25\x09\x1c\x28\x33\xce\x98\x41\x6c\x5e\x63\xbf\x19\x94\xde\x91\x74\x36\x57\xca\xa3\x31\x42\x4d\xb9\x4e\x41\x24\x40\x0d\xc9\xd7\x25\x89\x34\x28\xa3\x2e\x12\x3d\x4d\xf0\x43\x19\x7f\xbd\x09\xb4\xd6\xab\x48\x6a\xdb\x25\x99\x9c\x95\x46\xa7\x94\x2d\x6c\xa9\xa5\xe6\x72\x25\xe7\x29\x1b\xa0\x59\x9a\x60\x36\x3b\x3a\x3a\x42\x44\x46\x47\xef\x3a\x31\xba\x19\xd0\x7b\x5d\x1e\x51\x4b\x52\x41\x92\x95\xb5\xf0\x72\xe4\x83\x5a\x65\x40\x5a\x08\xaa\xcd\x9b\x0a\xee\xbf\x2e\x22\x74\x9f\xd7\x4d\x56\xad\x95\x76\x86\xfa\xd4\x8c\x53\xec\x73\xb2\x6e\x24\xfd\xfb\x6a\x4d\xbb\x03\x74\x0d\x2a\x39\xd0\x38\xc9\x21\x6c\x35\x19\x54\x29\xeb\x8a\xcb\xfa\x39\xad\xab\x52\xb3\x51\xca\x41\xe5\x48\x06\x20\xbe\x11\x52\xa9\xcc\xd1\x15\x1c\xe7\x40\x7d\x5b\xa5\x37\x25\xd9\xa2\x5c\x6a\x71\x57\x5a\x54\x4e\xa4\xfe\xeb\x18\x5e\xd7\xbe\xae\x81\x2b\xc6\x93\x72\x8d\xa6\x32\xf4\x9a\x9e\xdf\x30\x26\x48\x4b\x4e\x05\x24\x5a\x6c\x02\x78\x72\xc3\xe8\xa1\xc1\x3d\xab\x6c\x18\x5d\x1e\xcd\x34\xa2\x01\x0c\x97\xeb\x27\xa3\x1f\x11\x5a\xd5\x01\x9f\x6e\xbd\x64\xc8\x41\xa2\x1b\x59\x3d\xe7\x17\xe7\x23\xdf\x94\x39\x3d\xbf\x19\x7d\x1a\x5d\x05\x31\xa8\xb3\x8b\xe1\x4d\x10\x6f\xba\xb9\x2a\x84\xa9\x7e\xb8\xb8\x38\x1b\x0d\xcf\xfd\x8f\x4e\x86\x37\xa3\x9b\xd3\xcf\xc1\xe0\x27\xb7\x57\xc3\x9b\xd3\x8b\xe0\x77\x3f\x9c\x9e\x0f\xaf\xfe\xea\x7f\x32\xba\xba\xba\xb8\x2a\xbc\xef\xf6\xb8\x39\x92\x15\x4c\xa3\x7a\x27\x72\x65\xd9\xc3\xcb\x56\x29\x85\x37\x58\xdc\xef\x38\xfa\x0a\x68\x83\x0d\x3b\xfc\xd6\x08\xa5\x98\xdc\x6d\x16\x98\xad\x0b\x2e\x57\xbe\x47\xe9\x83\xab\x3b\x2c\x25\x59\x2c\xb7\x2b\xf4\xd0\xfe\xe0\x74\x8b\xf9\x82\x49\xd3\x22\xe6\x1b\xec\xea\xfe\xc4\x7c\x2b\xc2\xb9\x26\xe6\xdb\xc4\xee\x0d\x81\x5b\x35\xcf\xb3\x74\xab\xce\x52\x5d\x7a\x52\xf8\x3c\xb9\x3e\xd4\x5b\xf9\x9c\x41\xe6\xdf\x55\x77\x39\xa8\x66\x64\x33\xcb\xcf\xfa\x51\xdd\xe4\xa0\x26\x2a\x2c\x93\x1d\xf8\x9f\xce\xd2\x59\x35\x0a\xd6\x75\x84\xa4\xc2\xcb\x83\x07\x6f\x76\x3a\x43\x82\xb2\xfb\x31\xfb\xa2\x0c\xb2\x34\xe3\xfa\x23\x99\x72\x00\x54\x4f\x93\x4c\xcc\x09\x94\x8f\x1a\xa0\x47\x02\x6d\xed\xc1\xab\x1d\xd6\xd7\x85\x22\xa1\x09\xbd\x27\xf0\x74\x42\x99\xe2\xf6\x25\xb5\x1a\x50\x71\xeb\x77\x61\x20\xc5\x54\x38\x3b\xf1\x09\x43\x0d\xb9\xa7\xeb\x71\x4e\x00\xb7\xea\x55\xe7\xb2\x85\x3d\xb5\xe4\x81\x1c\xa9\x34\xbd\xcf\x96\xa6\x2d\x1b\x16\xf7\xdf\x5a\x14\x18\x2c\xf7\x43\x4a\x63\x14\x67\xcb\xc4\xeb\x8a\xf8\x98\xf2\xda\xa8\xbd\xd6\xd4\x3b\x44\xed\x0b\xf6\x67\xd3\xc4\x2a\xcc\x00\xcf\xea\x68\x88\xdf\x3f\x31\x82\xc1\xab\xd9\x91\x09\xc2\x0f\x25\xa7\xb3\x19\xe8\x3d\xd6\xa9\xb0\xff\x10\x07\xcb\x9b\xab\xbb\xed\xed\x67\xdf\xd5\x9a\xe8\x8a\xa6\xae\xd4\x80\xe2\xa9\xe5\x32\x59\x59\xe0\xa1\x5e\x40\x7b\xec\x97\x19\xd7\x85\x88\xa6\xc8\x11\x54\x1b\x62\x5c\x72\xa2\xde\x12\xdf\xe9\x32\x28\xdb\x97\x67\x39\x9d\x2a\x4d\xc6\xf4\xf4\xcd\x0b\xc9\xe4\xc5\x36\xf4\x66\x43\x16\x84\x79\xb7\x4d\x0b\xd0\x19\xb9\x4c\x37\xf4\x7b\x64\xb6\xd5\x21\x16\xda\xb4\x87\x86\xe7\xab\xbc\x0f\x22\x34\x54\x83\x7c\x5e\xd7\x23\xcf\x64\x18\x1a\x1f\x9d\xae\xb4\x57\xdc\xaf\x7a\x39\x0a\x40\xc8\xb0\x23\x52\x51\x82\x6d\x0b\xeb\x77\xe1\xf5\x4d\x15\xae\x66\x93\x61\x96\xa4\x13\x9c\x24\xab\x0a\xc0\xbf\x7f\x29\x74\xf3\x8f\xd9\xbe\x4d\xe1\x95\x62\x81\x33\x10\x89\x4d\x1b\x12\xa9\x83\xee\x02\x3b\xcd\x88\xd8\x7e\xc1\x32\x99\xea\x64\x66\x70\xf8\xa9\xc9\x9d\x16\xaa\xdf\x1f\x69\x78\xec\x69\x5c\x59\x87\x23\x67\x68\xbb\xf2\x75\xc2\xb3\xc2\x44\xef\x94\xd0\xb1\xe4\xc4\x3a\x67\x56\x44\x3a\x9f\x4c\x62\xe1\xbb\xab\x65\x58\xf0\xdc\x77\x4a\x5b\xb7\x93\x75\x77\xeb\xf6\xc4\x5e\x49\xd5\x94\x11\x26\x75\x61\x49\x96\x8e\x99\x19\xdc\xa6\x87\xb9\x0a\x2b\xc6\xcf\xae\x17\x66\x60\x54\x5c\x38\xb4\x9c\x88\x34\x79\x30\xbd\x46\xdd\x9a\xc8\x14\xe0\xdb\x8a\xc0\x63\x25\x6d\x95\x6e\xa1\x2c\x4c\x57\x12\x73\x4e\xc6\xac\x90\x23\xe5\x75\x39\xb6\x1c\xeb\x3f\xbf\xb3\xbc\x91\x40\x1d\x69\x5a\xfa\xda\xbc\x91\x75\x50\xb7\x29\x8e\xba\xe0\xb7\x57\x4b\x12\x9f\xba\xe7\x9a\x99\x21\xb0\xcc\x63\x2f\x72\x11\x1c\x72\xcd\x03\x5a\x9e\x0a\x9d\x7c\x23\x5c\xa3\x52\xb7\x49\xae\x66\x8f\xab\x05\xae\xb6\x68\x86\x6d\x3d\x78\xe1\x8a\x81\x43\x30\x35\xf0\xa8\x16\x7a\xf7\x38\x55\x27\x4a\x85\xd4\xe1\x1b\x78\x64\x8a\x69\x92\xf1\xda\x1b\x5c\xb3\xe5\xce\xb3\xda\x8e\x61\x58\x54\xb5\x6b\xce\xed\xe9\x1d\x23\xe7\xf2\x74\x3d\x81\x92\x6c\x46\x99\x08\xb9\xbe\xbe\x36\x66\xa9\x4e\xf0\x9a\x0d\xcf\x4b\x0b\xb7\x97\xc5\x43\x7d\xd8\x0b\x1d\xb8\xab\x0b\x04\x19\x9d\xca\xa3\x7d\xcc\x6e\xe0\x2a\xd5\x49\x5b\xee\x98\x41\x01\x27\x5d\x8f\x03\x8a\x24\x57\xcd\x37\x90\xe7\x21\xa7\x6e\x85\x97\xa8\x4a\xaf\x5a\x8f\xcb\xfa\x8c\x97\x4d\x99\x2f\x5b\x8f\xb8\x6e\x1b\x9c\xf3\xac\x78\x0c\x8b\x55\x77\x2b\x56\xcf\x61\xcb\x9e\x25\x46\xd4\x25\x0f\xd7\x41\x0c\x4d\x06\x7b\x29\x89\x32\xd0\x1b\xfd\x47\xbb\xa3\x4c\xf3\xe0\x88\x69\xf4\xa7\x07\x9c\x68\x5c\xa0\x0f\x65\xdc\x22\x89\xd3\x6d\x4c\xa1\x11\x73\xd5\x76\x6c\x09\xb3\xca\x91\xb1\xcf\x88\xb2\xfa\xb9\xb4\x44\x5d\x41\x56\x85\xf6\xf6\x32\xf5\xda\x60\xb5\xd2\x98\x1d\xb8\xea\xe7\x10\x1a\x1c\x2c\x71\x4a\x5b\x61\xa8\xcb\xc5\xdd\x40\x69\x89\x09\x4b\x25\x41\x18\x31\x9a\xbc\x67\x59\x92\xbc\x3f\x87\x2e\x24\x42\xd0\x99\x2e\x72\x0c\x0e\x8d\xa0\x6b\x34\x40\x53\x3d\xa8\xa9\x77\x04\xe0\x8a\x54\x24\xe9\x1e\xec\x52\x49\x4c\xb5\x05\xc9\x6a\xcc\xd4\x13\x5a\xc5\x72\x2d\x40\x6d\x2b\x41\x78\x9b\x4d\x9b\x31\xef\x52\xa6\x2b\x5b\xf9\x83\x57\x30\x58\x53\xa6\xc9\x56\x11\xb3\xbe\x04\xe1\xde\x94\x20\x4c\xb9\x75\x0c\x75\x28\x46\x58\x7f\xa8\x36\xae\x06\xe8\x14\x31\xe7\x71\x6e\xc1\x8f\x2f\xe9\x6d\x7e\xca\xbc\xa3\xad\x93\x8c\xec\x4a\x59\x2b\xe1\x44\x3f\xb5\x15\x82\x6d\x97\x39\x30\x8d\x4e\x18\x1b\x88\xb0\xce\x4b\xbf\xd1\x55\x40\x84\x01\xd9\x68\x7e\x85\xe2\xf0\x32\x54\xea\x75\x01\x01\x8b\xe3\x31\x6d\x1a\x32\xec\x60\xcd\x60\x5c\x2a\x46\x37\x39\xb7\x19\x03\x58\x0e\xf9\xaa\x33\x9b\x93\x95\x3f\x2a\xe4\xc0\xc1\x88\x1d\x83\x95\x60\x2f\xba\x34\x45\xbb\x25\xee\x80\xa9\xd9\x72\xaf\x66\x41\xfd\x6e\x6e\xeb\xc0\xd1\x30\xf0\x65\x82\xd9\x9d\xbe\x98\x5f\xc0\x85\xe3\x41\xd1\xeb\xaa\xe4\x78\xed\xe0\x76\x43\xa7\x93\x4e\x57\x41\x82\x88\xdf\x1f\x6a\x50\xac\xa4\x69\x6f\x53\xd7\x28\xdb\x18\x92\xa6\x54\xf2\xd7\xaa\x58\xff\x7a\x37\x14\x2e\x18\x9d\xae\x56\xf8\x1a\x3f\x54\xa9\x81\xe3\x9e\xf9\xa2\xda\xec\x7c\x81\xc1\x8b\xdb\x6e\xbd\x14\x77\x71\x59\x56\xad\xa1\xb2\x56\xda\x6d\xe4\x1b\x59\x43\xe7\xd3\xfa\x47\x6a\xed\x80\xb2\x9f\xe4\x4b\xd8\x78\x28\x82\x4e\x7e\x51\x92\xc5\x04\x89\x54\x29\x27\xd6\x4c\xa9\xce\x3d\x28\xc4\xbc\x9f\xb4\xd6\x42\x98\x5a\xda\x1a\x3c\xa2\xab\xad\xa0\x53\x86\xac\xb9\x31\x40\xe3\x03\xcd\x6a\x62\x7c\x10\x76\x69\xb6\xa5\x5c\xc2\xe2\xfb\x45\x2f\xa2\xf6\xbf\x7b\x57\x0a\xf3\x6c\xdd\xe2\xba\xd4\x98\xe4\x2f\x59\x43\xc5\x43\xd6\xe8\x10\xdd\x44\x0f\x60\x34\x2c\xad\x38\xae\x6c\x81\x15\x48\xb3\xe4\x59\x24\xbd\x3e\x90\xb6\x1e\xc5\x0f\xf6\x41\xb5\x44\xcb\x2c\x31\x7d\xae\x6d\xfd\x87\x94\x8f\x99\x1d\x2d\x2f\x0b\x37\x4c\x92\xd2\x50\xe5\x52\x2c\x1e\xaf\x42\x61\x26\x8b\x79\x05\x2c\xb5\xfa\x11\xa0\x82\x4a\x82\x61\xcc\x74\x06\x94\x4b\xbe\x3b\x42\xc3\x42\x7f\xcc\xb0\xea\x88\x5f\x74\x24\x49\x6c\xc5\x0d\x5d\xc7\xc2\x2b\xb3\x20\x32\xa8\x69\x3f\xcd\x94\x7c\x72\x6f\x97\xe9\x98\x41\x01\x1a\xdd\xea\xdc\xae\xcb\x98\x7d\x4e\x85\xed\xd9\x25\xf2\xf5\xb0\x4a\x84\x59\xb6\x6f\x1d\xf4\xd7\x7c\x70\xa2\x84\x88\x7a\x4a\xd9\x69\x85\xc4\x4f\x88\x11\x41\x24\x7b\x80\x56\x69\xe6\x69\x34\x11\x66\x63\xf6\x0f\xb5\x3c\xb6\xaa\x4a\xea\x3a\xca\xc2\x21\xb6\x89\xb2\xe8\xbb\xbf\xeb\x41\xbf\xfb\xe3\xbb\xbf\xbf\xd3\x35\xab\x32\x91\x29\x91\x3b\x08\xef\x14\x4b\xa8\xda\x52\xca\x66\x63\x66\x67\xe0\xca\xe4\xe7\xaf\x68\xcc\xbf\x36\x9e\xcf\x5d\x57\x1b\xce\xdd\x27\x43\x14\x61\x19\xcd\x0f\xb1\xe1\x3d\xbf\xd2\x0c\x15\x79\x2d\xeb\xc7\x39\x61\xd0\xca\x29\xac\x7f\xad\xc1\xe7\x28\x56\x92\x6d\xe1\x52\x17\x03\x7e\xd1\x4d\x3d\x8c\x9a\x58\xc8\xd9\xb4\x6f\x02\xe6\xcc\xb3\x06\xbf\xe4\x92\xc1\xfe\xdc\x62\xa9\x73\x9f\x87\xf1\xf3\x28\xfb\x2b\x46\x63\x8d\x3d\x1c\x1f\xd8\xed\x1f\xb3\xe5\xe4\x28\x59\x4d\xe5\x11\x20\x21\x8f\xd4\xb2\x1c\x8d\x8a\xbd\x3f\xd6\x29\x0d\xda\x2c\x72\xe4\x5c\x87\x7e\x53\xe2\xec\x2c\xa2\x7d\xe1\x03\xd7\x58\x9e\x85\xdd\x61\xdd\x71\x80\x2a\x32\xea\x5e\xc1\x92\x46\x70\x57\x63\x86\x93\x15\x24\x10\x0c\xc6\x2c\xa6\x9c\x44\xd0\xb6\x2e\x5a\x45\x09\x8d\x4c\x11\x8e\x50\x17\x21\x0f\x84\xc9\x00\xe7\x34\x52\x9f\x3c\x97\x3a\x52\x87\xb0\xaa\xd6\xf6\x6e\x6b\x54\x11\x57\x30\x29\xb4\x34\x8b\xfc\x6f\xd2\x86\x79\xc7\xb4\x6b\xf7\x7a\x90\x84\xb1\xf5\x11\xa4\x9c\xce\x28\x83\x9e\xee\xdf\x81\xcb\x2c\x49\x08\x7f\xe7\x7a\x7f\xc0\x2a\x56\x93\x31\xef\x54\x53\xbd\xa2\x02\x47\xf5\xdd\x16\x45\x19\xe7\x24\xbe\x2b\x03\x83\xba\xa6\xa8\x35\xc3\x26\x94\x6a\x4b\x17\x44\x48\xbc\x58\xfa\x3d\xb0\x5d\x32\x85\x59\x99\x44\x2f\x02\xb2\x84\x0d\x10\x05\xec\x8f\x0b\x71\x8e\x99\x09\x6e\xea\x7d\x4b\x79\x45\xee\x75\x71\x96\x70\x4e\x5b\xf4\x47\x69\xb8\xfe\xbb\x76\x57\x29\x3a\x59\xae\xce\x6c\xfc\x39\x0d\x9a\x85\x7b\x4d\x7b\x29\x9c\x67\x38\xa7\x15\x6d\x7f\xc7\x2c\x47\x97\x1c\x27\x69\x16\x23\xe3\x62\x32\x0e\x1b\x7e\x84\x28\x39\x1a\x20\xf1\x87\x0f\xef\xdf\x1f\x1d\xed\xa8\x24\x7b\xd8\xd3\xa7\x9a\xc3\x75\xd7\x9d\x2a\xf4\xd6\x9a\xa3\x15\x94\x60\xba\xeb\x16\x00\xb5\xe8\x72\xe0\x16\xdf\x32\x0e\xc1\x0f\xc5\x57\x2e\x31\x27\x4c\xde\x01\x5e\xb4\xdb\x0b\xe1\x45\x97\xf0\x78\x00\x75\x6c\x15\x81\xcd\x4b\xb8\x99\x5c\x31\x2c\xee\xd1\x77\x14\xbc\xaf\xef\x8c\x31\x0c\x6d\xab\x1b\x2a\x2b\x95\x25\x70\x13\x35\xcf\x24\x8a\xeb\xb0\xbc\x6d\xc8\x0f\x9e\xdd\xfa\x02\xd9\x06\x02\xdc\xe8\x87\x3a\x71\x65\x42\x21\xee\x7a\xca\x50\x94\x2e\x26\x4a\x88\x2b\x56\x77\x8e\x01\x40\xf2\x0e\x2d\x9c\xce\x61\x81\x2c\x7c\x48\x27\xda\x17\xc0\xb4\xce\x13\xea\x83\x7d\x34\x8b\x16\xee\xa6\xba\x36\x3e\x9a\x9d\x9f\x00\xad\x5c\x7d\xd4\x87\xc5\x19\xe4\x85\x6b\xef\x69\x74\x4f\xd4\x3d\x37\xcd\x0b\x6c\xf8\xd2\xcd\xdd\x6f\x0e\xfd\x64\x7a\x82\xeb\x58\x3e\x31\xf3\xbe\xa3\xba\x3c\x21\xb1\xbd\x38\x3d\x1c\xc6\xb7\xa2\x7a\x71\x9e\x1a\x5a\x5d\xbd\x16\x30\xbe\x03\x50\x9a\x14\x3f\xa7\x5a\x68\x65\x0c\x24\xf2\xef\x9d\x3c\x14\x24\x4a\x99\x03\x5d\xee\xe4\xa2\xaf\x80\x5d\x57\x93\x0b\xdf\x95\x72\x03\xd7\x69\x1d\x5b\x2a\x3f\xb9\xe2\x63\x7b\x1b\x6b\xfb\x14\x62\x5e\x00\xed\x50\xef\x1e\x40\xc3\x78\x73\x0c\xa0\xcf\x19\x8a\xc9\x24\x9b\xcd\x6a\xef\xe4\x24\xdd\x45\x67\xdc\xe6\x55\x3d\x4b\x1b\xec\x71\x37\xc3\xa4\x09\xb8\xbc\x86\x43\xdf\x90\xf2\xd5\x88\x24\xda\x85\xfa\x74\x6a\xdf\xa4\x6d\xae\x29\x4d\xc8\xf3\x68\x4c\x3b\x52\xff\x4e\xdb\xa8\x7f\xd6\x68\x87\xe8\x9f\x9e\x87\xb3\xf3\x7e\x45\x7a\xa1\x46\x53\xdd\xa9\x27\x9f\x14\x52\xe5\x40\xa0\x70\x58\x35\x58\x4a\xc9\xa6\x58\x40\x2e\xef\xee\x31\x56\x20\xdb\xd7\x01\xab\xb7\xce\x65\xbf\x4e\x17\x04\xc1\xab\xc4\x40\x67\x36\x98\xf0\xe5\x00\x9c\x7c\x6a\x82\x68\x91\x25\x92\x2e\x13\x23\xfc\x8d\x17\x2b\x9a\x63\x36\xf3\x8a\xb8\xa3\xef\x18\x79\x44\x4a\xd6\x0e\x7c\xaf\x87\xb7\x3d\x03\x44\x64\xf4\x4e\xe9\x36\x41\xd4\x84\x93\x28\xe5\x31\xe0\xde\x67\x98\xc7\x10\x4d\x33\x0c\x9f\xe0\xe8\x1e\x8a\xe3\xc0\x75\xa4\xdf\x68\x03\x78\x06\x1a\xae\xbd\x85\xf9\x68\x94\x45\xba\xcd\xb5\xcd\xbd\x77\xf4\xe9\xc7\x05\xc2\x11\x4f\x85\x76\xfc\xd8\x9a\x28\x1a\xda\x00\xea\xd7\x03\x8d\x33\x9c\xe8\x37\x76\x71\xbd\x5c\x1a\x86\xb0\x51\x78\xcf\xe7\x04\x52\x32\xc8\x42\xfe\x98\x72\x03\xf3\x86\x15\xbf\x34\xc9\xce\x3f\xd2\x07\x32\x40\xd7\x4b\xcc\xef\x07\xe8\x64\xc5\xf0\x82\x46\x7f\x4e\x27\x55\xfe\x94\x52\x58\x7b\x6b\x95\x78\xf7\x85\x45\xab\x0f\xfa\x97\x52\xd0\x1e\xd5\xe5\xe7\xbe\x4e\x6f\x4a\x0d\xe2\xe0\xad\x5f\xea\x6b\x42\x60\xbd\x63\x64\xa7\x17\x60\xa5\xa1\x6c\xdd\x1c\x38\x5e\x50\x16\xd8\x6a\x7b\xe5\x6c\x2d\x6e\x6a\x15\xc2\x27\x10\xc6\xad\xac\xdb\x5d\x68\x8e\x97\x58\x59\x39\xca\xa0\x5c\xa4\x92\xe8\x7b\x5f\xc8\x94\x13\x75\x4e\xb8\x55\x27\xa1\x03\x0a\x15\xfa\x9b\xba\xea\x80\x51\x92\x8a\x8c\xb7\x14\x1b\xe5\x0d\x3b\x36\x8f\x37\x6a\x27\xe9\x62\x09\xc1\x0e\x4e\x44\x96\x48\x51\x61\xaf\x95\xdc\xd6\x3b\xc9\x27\x28\x93\xfb\x99\x48\x7c\x52\xf2\x6b\x39\xde\x0e\xf0\x2b\x90\x44\x33\x6a\xe0\xe9\xba\x2b\x76\xe4\xc7\x2f\xd4\xd9\xb6\xfd\x65\x4c\x0d\x7d\xca\x66\x49\x5d\xd9\xe9\x31\x33\x25\xf8\x3d\xd9\x87\xf3\x5c\x10\xab\x90\xd9\x6c\xbd\xc7\xa0\xfc\xb8\xab\xdf\x6f\x80\x28\xd8\x18\xec\x4e\x2f\x82\xbb\x7c\x00\xb5\x73\x34\x30\x87\x41\xe9\xa4\x31\x13\xd9\xe4\x30\x87\x8b\xa4\x1c\xa4\x2b\xe4\xbe\x2f\xb1\x12\xa7\x28\x9a\xd3\x24\x3e\x2c\x03\xd9\x8c\x96\x03\x95\xfb\x5d\x9d\xa8\x09\x81\x52\x30\xb0\xe3\xba\x4b\x96\x0e\x4e\xba\xb9\xbb\x71\x26\x99\x44\xc4\x55\x42\xa7\xc2\x38\x8f\x0a\x9a\x44\x20\x2f\x02\xdf\xc0\x4b\x7b\x04\xd7\xcb\x8b\xba\x54\xaf\xb7\x2f\x27\x82\x35\x6b\x23\x27\x6e\x42\x2f\x9c\x3d\x35\x98\x39\xc9\x51\xb7\x54\xe2\x4e\xbb\xd0\x9e\x10\xb9\xf7\xc5\x65\x1b\xdb\x04\x1d\xb1\xc4\x8f\xcc\x60\x32\x3a\x55\xbe\x6c\x27\x1f\xaa\x4b\x14\x28\xf9\x50\xf8\xc6\x97\x14\xea\x3a\x82\x98\x3a\x75\x89\x73\x03\x2f\x81\x17\xba\xa2\xe4\xd9\x10\xb9\xf9\x33\x66\x39\x58\x28\x6f\xe3\x18\x15\x05\xb7\xc1\xe0\xc4\x10\x68\x25\x03\x0b\x20\x18\xe8\xec\x31\x63\xa4\x1c\x4e\x30\x54\x69\x95\x92\xd3\x49\x26\x4b\xd5\x32\x82\xd3\x5c\x19\xe4\xd8\x85\x75\x70\xfa\xf4\x5d\x07\xaa\xaf\x8d\xbc\x6b\x43\x8e\x0c\x2a\x4e\xdd\xab\x1e\xf4\xfc\x15\x17\xba\x65\xa9\x78\x25\x7d\xda\x73\x78\x29\x13\xce\x94\xb3\x01\x8b\x3a\xf6\x8a\x31\x07\xb8\x05\x58\xc2\xbc\x58\xb5\xc3\x74\x78\x09\x03\x4a\x44\xe1\x19\x41\x0b\x12\xd3\xac\x98\x04\xb5\x3e\x7a\xb6\x57\x66\x67\x1b\xce\x52\x06\xb8\x33\x44\xcf\xc1\x58\x78\x54\xb7\xb6\x46\x7c\x81\xd3\xa3\xba\x5e\x80\x07\xc3\xc4\xf2\x5b\xe1\xa2\x71\xe1\x8a\x59\x17\xd3\x19\x15\xf2\xe7\x42\xa1\xd9\x0d\x72\x6d\x92\xec\xe9\xa0\x76\x96\x54\x4d\xa6\xf7\x44\x23\xa4\xec\x2a\xe8\xd2\x09\x4c\xa6\xdd\x15\x80\x11\xb1\x59\x48\x8a\xee\x2e\x02\xfc\xef\x6e\xbd\xfe\x6e\xfa\x88\x72\xbc\x5c\x12\x8e\x4c\x2f\xd1\x62\x77\x50\x9d\xd2\x03\x6f\x19\x33\xad\x30\xfd\xf9\xfa\xe2\x3c\x97\xdc\xb9\x1d\x55\x18\x1a\x7e\x06\x4b\x77\x54\xbd\x73\xe7\x59\x92\xd4\xee\x5c\x8b\x42\x4e\xb7\x67\x67\x77\x3f\x0f\xcf\x6e\x47\xcd\x85\x92\xf2\x9f\xd5\xae\x89\xa3\xc4\xac\x89\xbe\xc6\x24\x5c\x5d\xd9\x82\x18\x07\x16\x28\x23\x66\xd6\x1a\xe0\x90\x25\x49\x98\x95\x31\x66\x7f\x37\xe3\x00\xde\x2c\x63\x5a\xcd\x1c\x33\xd4\xb8\x70\xe1\xfb\xe1\x67\x7f\x57\x83\xff\x5d\x3f\x7b\x88\xf2\x49\x7c\x40\xe7\xee\xad\x35\xeb\x6a\x9c\xae\x5b\x1c\x07\x9d\x1c\xf2\x5c\x79\x67\x9b\x1d\x8f\x5b\x66\x6b\x98\x99\x74\xb1\x9d\x9c\x0e\xbd\x76\x7f\x0f\x4d\x18\x97\x1b\x1b\x6b\x39\x0f\xe3\x0e\x74\xb6\x90\xee\x33\xed\x12\x6a\xc6\x4c\xe3\x09\xa0\xbb\x68\x5a\x4f\x13\x3a\x65\x1a\x48\x98\x60\x36\xcb\xf0\x8c\x88\x01\xb2\x2f\x1f\x33\xd7\xcb\xd2\xd4\x9e\x70\x3d\x12\x30\x54\x84\x0e\x59\x48\xbb\x3a\xc9\x57\xbc\x58\x42\x08\x86\x8d\x99\x99\x13\x9b\xe5\xc3\x6b\x2f\xe8\x9f\xaf\xdd\x74\x14\xa7\xb9\x81\x4c\xc2\x13\x1b\x33\xbd\xb9\x3a\xdb\xcd\xea\x76\xe0\x00\x82\xe6\xb5\x01\xeb\x62\x4e\x6c\x8e\x25\xc8\xf4\x19\x68\x99\xba\x7c\xae\x0d\x31\x2a\x49\xef\xd5\xcf\xd0\x0e\x67\x4d\xd2\x7a\x79\x62\x37\xc3\x9e\x09\x43\x5b\x35\xd7\x6f\x7d\x07\xa8\x03\x57\x5d\xb2\xbc\x99\x6d\x73\x31\xb6\x46\x9a\xe7\x0c\xc5\x8a\x47\x18\x15\x91\xdf\x10\xbc\xde\x41\x79\xf6\xd6\x24\xe9\xdf\x37\x12\xd5\xa1\xaa\x7b\xeb\xd7\x9a\x54\xdd\xa6\xd7\x2a\x0b\xa7\xf9\xa5\x3b\x30\x91\x02\xa2\xcc\x03\xeb\x16\x23\x8b\x6a\x0a\xe8\x6f\x1d\x13\x2b\x2e\x91\x95\x3e\x4d\x04\x25\x54\x6c\x44\x4e\xae\x3f\xb5\xa6\xc8\x69\x08\xe6\xb2\xeb\x24\x61\xcd\x3d\x17\x08\xd8\x1a\x31\x69\xb0\x59\xc6\x2d\x43\xa8\x16\x2f\xea\xf0\x0c\xe0\x10\x29\xfe\x1f\x38\x26\x1a\xe4\x3b\x37\xd0\xa5\x9f\x33\x2e\x94\xb8\x34\xf2\xce\x48\x6d\x65\xe6\x8c\x99\x45\xeb\x5b\x71\x3c\xb4\xdd\x68\xb8\xfb\x54\xc7\x19\x97\x1a\x7c\x0b\x1a\xab\xcc\xdb\x18\x61\x39\x66\x90\xd7\xcc\xc0\x84\x9c\x08\xc8\x5e\x32\xd9\xbb\xe6\x0b\xaf\x52\x11\x66\xae\xfc\xf4\x1a\x99\x57\x50\x03\x82\x7b\xfe\x1b\xf5\xff\x7f\xf9\xe6\xff\x05\x00\x00\xff\xff\x9c\x68\x56\x18\xc8\xe7\x02\x00") +var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\xfb\x73\x23\xb9\x91\x27\xfe\xfb\xfc\x15\xf8\xea\x2e\x62\xa6\x6d\x4a\x3d\xb6\xd7\x1b\xbe\xde\xd8\xf8\x06\x47\x62\xf7\xc8\xa3\x96\x64\x3d\xa6\xcf\xb1\x74\xc8\x60\x15\x48\xc2\x2a\xa2\x68\x00\x25\x35\xed\x98\xff\xfd\x02\x89\x47\x01\xf5\x62\x15\x49\x49\x94\xa6\xf6\xe2\x3c\x6a\x92\x85\x4a\x00\x89\x44\x3e\x3e\x99\xf9\xef\x6f\x10\x3a\x10\x8f\x78\x36\x23\xfc\xe0\x03\x3a\xf8\xfd\xd1\xf7\x07\x03\xf5\x19\x65\xd3\xf4\xe0\x03\x52\xdf\x23\x74\x20\xa9\x4c\x88\xfa\x7e\x9a\xac\x24\xa1\x71\xf2\x5e\x10\xfe\x40\x23\xf2\x1e\xc7\x0b\xca\x8e\x96\x3c\x95\x29\x3c\x88\xd0\xc1\x03\xe1\x82\xa6\x4c\xfd\xdc\xfc\x89\x58\x2a\x91\x20\xf2\xe0\x1b\x84\x7e\x81\xe1\x45\x34\x27\x0b\x22\x0e\x3e\xa0\xff\xd1\x0f\xcd\xa5\x5c\xda\x01\xd4\xdf\x42\xfd\xf6\x6f\xf0\xdb\x28\x65\x22\x0b\x7e\x8c\x97\xcb\x84\x46\x58\xd2\x94\xbd\xff\x87\x48\x59\xfe\xdb\x25\x4f\xe3\x2c\x6a\xf9\x5b\x2c\xe7\x22\x9f\xe3\x7b\xbc\xa4\xef\x1f\x7e\xf7\x1e\x47\x92\x3e\x90\xbb\x04\x67\x2c\x9a\xdf\x2d\x13\xcc\xc4\xfb\x7f\xd3\x58\xcd\xf1\x1f\x24\x92\xbf\xc0\x3f\xe2\x74\x81\x29\xd3\x7f\x33\xbc\x20\xbf\xb8\x71\x10\x3a\x98\x11\xe9\xfd\x13\xa1\x83\x98\x88\x88\xd3\xa5\x34\xab\x72\x45\x24\xa7\xe4\x81\x20\x39\x27\x48\xbf\x0e\xe9\xd7\x21\xf5\x3a\x64\x57\x4d\x2c\x49\x44\xa7\x94\xc4\x68\xb2\x42\x94\x2d\x33\x89\x38\xf9\x67\x46\x84\x44\x53\x9a\x48\xc2\xc5\x91\x59\x32\x78\x4b\xba\x24\x1c\xe6\x79\x1a\xab\xb7\x7c\x22\x72\x08\x63\x9f\xc1\xd0\x97\x09\x66\xfe\xaf\x39\x11\xcb\x94\x09\x22\x02\x52\x11\x3a\xf8\xfd\xf7\xdf\x17\x3e\x2a\xcf\x60\x88\x44\x16\x45\x44\x88\x69\x96\x20\x3b\x92\x4f\x0c\x3c\x04\x9b\x8c\x4b\x83\x21\x74\xf0\xbf\x39\x99\xaa\x71\xfe\xd7\xfb\x98\x4c\x29\xa3\x6a\x5c\xa1\x79\xc9\xa3\x36\x78\xea\x97\x6f\xaa\xfe\xfe\xc5\x9b\xd1\x12\x73\xbc\x20\x6a\x59\xdc\xee\xeb\xff\x2b\xcc\x45\xed\x97\x7a\x79\xbe\xa7\x45\xc2\x0b\xb3\x3d\xc7\x0b\x82\xd2\x29\x6c\x97\x79\x02\xfe\xe6\x44\xa4\x19\x8f\x08\x9a\x90\x24\x65\x33\x81\x64\x5a\x5a\x03\x0a\x23\x28\x56\x2b\x7e\xa3\xb6\x92\x72\xa2\xf6\x4a\xf2\x8c\x14\xbe\x95\xab\x25\x10\x29\x24\xa7\x6c\xe6\x2f\xc5\x2f\x83\x56\x53\xd3\x1c\xda\x61\x66\xfa\x81\xda\x89\x8d\xd9\xd0\xfe\x24\xc2\x0c\x4d\x08\x52\xe7\x92\xc6\x84\x93\x18\x61\x81\x30\x12\xd9\x44\x10\x89\x1e\xa9\x9c\x53\xa6\xfe\xad\xd9\x37\xb2\x6b\xb6\x3f\x6b\x03\x7f\x36\xaf\xcc\xad\x20\x5c\x11\xfe\x40\x63\x12\xa3\x07\x9c\x64\x04\x4d\x53\x1e\x2c\xcf\xd1\x98\xdd\xcc\xd5\x3a\x2c\x26\x94\xc1\xc9\x53\x6b\x69\x39\xe4\xb7\x76\xb9\x7e\x8b\xd4\xfb\x50\xc6\xe8\x3f\x33\x92\xac\x10\x8d\x09\x93\xea\x5c\x8b\xe2\x68\xbf\x4d\xe1\xfd\x38\x41\x87\x48\xad\x33\xe1\x12\xd6\x3b\x65\x92\x7c\x95\x02\x1d\xa2\x84\xde\x13\xf4\xed\x19\x15\x12\x0d\x2f\x4f\xbf\x1d\xa0\x6f\xcf\x72\xc1\x21\xbe\x7d\x86\x15\x76\x7f\xff\xcd\x3b\x7a\x12\xcf\x8a\x87\xee\x60\xa8\x4e\xf3\xb5\xbe\x26\xf2\x11\xfe\xf6\x8d\x3f\x8e\xd9\xaf\x66\xd9\x9b\x0b\x5e\x23\x75\xbb\xc8\xda\x8f\x44\x46\xf3\x35\x82\x56\x6c\x29\x69\xd5\x76\x14\x45\xad\x78\x5d\xb2\x56\x4d\xe1\xa9\xe5\xed\x36\xc2\x16\x4b\x38\x05\x98\x32\x7d\x68\xdc\x19\x0a\x77\x06\xbd\x9c\x58\xd9\x46\xde\x7a\xb3\xf1\x44\xae\x95\xa4\xde\x4a\xec\xc9\x5c\x13\xba\xa0\xeb\xf6\xf1\x94\xc5\x4a\xed\x32\x42\x8e\x65\x8b\x09\xe1\x6a\xea\x56\xdc\xc1\x0c\x27\x4a\xfc\xc9\x8c\x33\x12\xd7\x4c\xed\x9f\x19\xe1\xab\x86\xb9\x4d\x71\x22\xea\x26\x47\x99\x24\x4a\xaf\x2d\x7c\x3d\x4d\xf9\x02\x4b\xf3\x83\xff\xfc\x8f\xae\x93\x97\xe9\x3d\x59\xb7\xcf\xa7\x7a\xd7\x22\x2c\x60\xbb\x17\x59\x22\xe9\x32\x21\x68\x89\x67\x44\x98\x55\xc8\x12\x29\x06\xf0\x33\xa5\x4b\x13\x7e\xe8\x6e\x1b\x78\x83\xbd\x65\x33\x01\x9f\xa0\xa9\x13\x64\x8c\x7c\x95\x30\xd2\x98\xc1\x3d\x0b\x4b\xe4\xdf\x1e\x4f\xb0\x94\x9b\xf1\x89\x48\xb9\xbc\x9b\xac\x8e\xee\x49\xe9\xbd\xb5\xdc\x82\x19\xc2\x52\x72\x3a\xc9\x24\x51\xf3\x56\x63\xd8\x7b\x12\x44\x9f\xbe\x8c\x85\xba\x7c\x2f\x4e\x2e\xbe\xbb\xc7\x92\xa7\x33\xcc\xde\x7d\x40\xc3\x38\x46\x9a\x50\xf5\x1b\x1a\xeb\x2b\x79\x4e\x38\x39\x42\x37\x73\x2a\x90\x98\xa7\x59\x12\x23\x46\x1e\x08\x57\x6b\x4b\x16\x4b\xb9\xda\xbb\xd5\x8a\x29\x27\x11\x2c\x4c\x97\x13\xe6\x9e\x52\x8b\xa6\x8c\x9e\x95\x5e\xba\x7b\xb2\x02\xc5\xa5\xbc\x7c\xcf\xc0\x2f\x85\x6f\x09\xcb\x16\x85\xbb\x02\x3e\x3f\x19\x5d\x1f\x8f\xce\x4f\x4e\xcf\x3f\x15\x9e\x50\x6a\x84\xfb\x2a\xf8\xe6\x6f\xa5\xb5\x99\xe2\x2c\x81\x53\xed\x8d\xf6\x6c\x8a\x4b\x34\xa7\x49\xcc\x09\x7b\x2f\xb1\xb8\xbf\x23\x5f\x49\x94\xe9\x7b\xf6\xdf\xe1\x07\x77\x4a\xfb\x4c\x63\x12\x7e\x12\xfc\x23\x57\x77\x3a\x3f\xea\xac\xd2\xce\x4f\x82\x0d\xdb\xee\x39\xf8\x84\xc6\x95\xbf\x86\x4f\xd6\xcc\xc1\xfe\xa6\x81\x58\xfb\x93\x5a\xaa\xec\x0f\x8c\x02\x57\xf9\x1b\x4e\x24\x5f\xdd\x61\x29\xd5\x29\xdf\x40\x67\x84\x2d\x45\x6a\xb6\x28\xdf\x4f\xa3\x3e\x6a\x45\x11\x64\xb7\xd3\x1c\x15\x05\xf9\x2f\xd7\xe9\x8b\xe7\x69\x4c\x46\x6e\xd8\x8f\x29\xbf\xc1\xe2\xfe\x35\xe8\x8c\x01\xe1\xcf\xa1\x36\x6e\x7a\x80\xde\x9c\x51\xbf\xa1\x38\xe8\x5d\x00\xdb\xaf\x64\x5b\x87\x41\xca\x91\x58\x09\x49\x16\x6b\x5d\x07\xaf\x67\x21\x8c\xbc\xdf\x57\x82\x0b\x57\xce\xaf\xe0\xd4\x87\x17\x68\x7f\xbc\x3b\x2c\xd9\xae\x1c\x7f\xfb\x3e\x4f\x1b\x82\x69\x9e\xea\xb5\xdd\x3e\x1b\x70\x30\x7c\xb2\xf7\xd3\x0c\x54\xbb\x5d\x13\xf9\x44\x5e\x83\xda\xbd\xb2\xab\x7d\x07\x04\xac\x31\xf9\x42\xd7\xb1\x3b\x7f\xea\x51\xdf\xb9\xa2\x3d\x66\x52\xd9\xbc\xc6\xb7\x44\x38\x8a\x52\xae\x55\xc1\xb8\x41\xbc\x3d\x9f\xd1\x77\x7b\x7e\x7d\x39\x3a\x3e\xfd\x78\x3a\x3a\x29\x5b\x7d\x37\xc3\xeb\x9f\xca\x9f\x7e\xb9\xb8\xfa\xe9\xe3\xd9\xc5\x97\xf2\x37\x67\xc3\xdb\xf3\xe3\x1f\xef\x2e\xcf\x86\xe7\xad\xed\x44\x9f\x80\x8e\xbb\xd9\x3b\xc0\x76\xe9\x00\x1b\xbc\x5d\x0f\x98\x89\x1e\xb4\xf7\x7e\xa1\x84\x0a\xa9\x16\xc8\x3c\x89\x96\x58\x08\x7d\xff\x6a\x0a\x8e\xc6\xec\x73\xca\x09\xa2\x6c\x9a\xa2\x14\x82\x43\x42\xf2\x2c\x92\x94\xcd\xdc\x43\x1f\xd0\x38\xfb\xfe\xfb\x3f\x44\x67\x94\xdd\xc3\x5f\x64\x1f\x17\xa7\x77\x0f\x6e\xb2\x5a\xbd\x7b\xd0\xff\xee\x75\xb8\x07\x63\x2c\xf1\x7b\xdf\x2b\xf8\x34\x78\x12\x1d\xb9\xc4\x2c\x46\x69\x26\xd5\x9f\xea\xbd\x68\xca\xd3\x85\x3a\x37\xe4\x2b\x15\x20\x25\x1e\x53\x7e\x3f\x4d\xd2\xc7\x76\xde\xaa\x4f\x44\x3a\x7f\xcf\x09\x96\xf8\x35\x38\xa9\xbe\x98\x19\x3a\xc2\x3f\x11\xa9\x68\xbf\x32\x6f\xe9\xa1\x25\x3d\xb4\xe4\x65\xa1\x25\x7b\xe5\x29\x7a\x7a\xd9\x17\xba\x95\xb4\x00\xac\x89\x7a\xd4\x06\x35\x6a\x62\x16\x5e\x48\xe2\x29\x85\x66\x18\x08\x58\x23\x30\x03\x27\xf9\x6b\x11\x9a\x01\xd1\xcf\x2f\x30\x7f\x15\x3e\xfc\xde\x45\xbf\xe1\x42\xbd\x4a\xb9\xda\xf2\xca\x78\x36\x07\xfb\xd3\xcb\xf9\x52\xf8\xbb\x4b\xbc\xbb\x43\x80\xbb\x75\x44\x7b\x4d\x08\xbb\x32\x66\x5d\x15\xa4\x2e\x47\xa5\x2b\xc3\xd0\x5b\xc5\x9d\xbb\x5e\x49\xed\x23\xce\x9f\x88\xbc\xc1\xe2\xfe\xd5\x5d\x49\x01\xd1\xcf\x7f\x25\xfd\x4a\x03\xcd\x7d\x64\xf9\x09\x97\xee\xad\x5f\x64\xfb\x1b\x3b\xfe\x15\x04\x8b\xfb\xe8\x70\xa7\x35\x7a\x5b\xe1\xe0\xb7\x1a\xff\x7d\x9d\x01\xdf\x3e\xc2\xbb\xbf\x11\xde\x27\xb5\x83\xc8\x03\x61\x52\x80\xc7\xcb\x57\xa7\x0f\x96\xa9\x68\x56\xff\x8f\x39\xc1\x92\x20\x5c\x70\x35\x21\x18\x10\x71\x12\xa5\x3c\x56\x6a\x3f\x46\xcb\x39\x16\x04\x49\x8e\x99\xa0\xeb\x54\x7f\x3d\x2a\xf8\x76\xd4\x38\xaf\x41\xeb\x0f\x1c\x51\x40\xf5\x73\xe9\xfc\x93\x34\x2e\x1d\x0d\x7d\x6a\xaa\xbe\x69\x16\x2f\x3b\x9b\x3a\xe4\xa1\xb5\x99\xf9\x13\x72\xb3\x12\x65\x1b\x72\x73\x68\xa5\xee\x84\x9b\xc1\x2c\x7c\x2d\xdc\x1c\xd8\xb0\xbf\x2e\x6e\xae\x9a\xfa\x3e\x70\xb3\x0d\x80\x6e\xc8\xd1\xe5\xf8\xe9\x4e\xb8\xda\x05\x2d\x5f\x0b\x67\x97\xa2\xac\xbf\x2e\xee\xae\x9b\xfe\xcb\x72\xb8\xf3\xbd\xee\x8a\xb7\xd7\x33\xae\x5b\x80\xd7\xc0\xb4\x8e\x58\x4d\xfb\xaf\x86\x5b\x4b\xf3\xde\x13\x36\x7d\xcf\x89\xce\xa9\xea\xc4\xaf\x57\xe6\xa1\xce\x1c\x6b\x1f\xec\x79\xf6\x35\xf1\xac\xdd\xb5\xfd\xe1\xda\x3a\x04\x57\xf7\x3c\xc3\x06\x58\x96\x40\x0b\x2c\xa3\xb9\xfa\x52\x87\x84\x5a\x16\xa3\xc8\x13\x0b\x5f\x15\x77\x3f\x47\x36\xe1\xdb\x76\xfe\xf6\x4e\xdf\x5f\x61\xd1\x9f\xbd\x41\x28\xf7\x59\x11\x3b\xcc\x8a\xa0\xa2\xcf\x8a\xe8\xb3\x22\xda\x2e\x50\x9f\x15\xd1\x67\x45\x78\xdf\xbd\x8e\xac\x88\xa7\x4f\x88\xd8\x4d\xd6\xc3\xab\x52\xa2\x7b\x05\xba\x57\xa0\xfb\xd4\x06\x37\xb5\x5d\x09\x30\xfb\xf4\x41\x4c\x12\x22\x49\xa3\xf8\xb9\x21\x7c\xa1\x6c\x83\xa0\xc0\x6f\x45\xd0\x20\xaf\x1d\xe4\x38\x08\xdc\x1b\x4d\x72\xc9\x8d\xfd\x3a\xa5\x93\x23\xbf\xcf\xc4\xea\xc5\x55\x2f\xae\x36\x99\xda\xfe\x78\x65\xbd\xc3\xfc\xa2\x6e\x59\xaf\x5c\xf0\x1d\x8d\x77\x53\x31\xd8\xa9\x8d\x7e\xbd\xe0\x7c\x29\x82\x92\xad\x9b\x39\x69\xf3\xe2\xbb\xa7\xf1\xab\xf0\xd3\x2a\x39\x12\x8f\x98\xa4\x72\xe5\x50\x6a\xbc\x2f\x1c\xdc\x17\x0e\x6e\x3f\xd7\xde\x43\xb8\x43\x0f\x61\x5f\x38\xb8\xf7\x81\xf5\x3e\xb0\x57\xee\x03\xf3\x5b\x1d\x6c\x84\xd8\x61\x31\xe2\x64\x46\x85\x24\x1c\xe1\x1a\x6d\x65\x3d\x84\xe7\xb5\xf6\x88\x69\x0d\x88\xf0\x5f\x7b\xf0\x1f\x2d\xc8\xbf\x32\xd7\x0b\x9c\x81\x09\x8e\x5d\x43\x08\xd0\x29\x16\x78\x85\xe6\xf8\x81\xa0\x29\xa6\x89\xb6\x18\x8c\xd8\x68\x98\x61\x13\x41\xff\xa7\x1b\x41\x38\x24\x87\x93\x29\xe1\x84\x45\x5a\x0c\x6a\xad\x20\xc2\x09\x22\xa0\xad\xe9\xdf\xcc\x95\xfd\x96\x70\x82\xe3\x15\x9a\x10\xc2\x1c\xdb\x54\x5c\xa1\x35\x34\xef\x44\x9b\x7b\x71\xfb\xa5\xcc\x3d\xfb\x62\xbd\x3c\x09\xac\xa4\x5a\x24\x6c\x6f\xb5\x88\xdf\xbf\x2e\x51\xd1\xa3\x4b\x7a\x6f\xd3\xcb\x7b\x9b\x7a\x74\x49\x6f\x3b\xee\x81\xed\xd8\xa3\x4b\x7a\x74\x49\x6f\x59\xb7\x5e\xad\xde\xb2\xf6\xbf\x7b\x7d\x96\xf5\x8e\xf1\x25\xcf\xa5\x61\xf7\x0a\xb6\xfd\x5d\xaf\x60\xf7\x0a\xf6\x1b\x55\xb0\xf7\x63\x85\x7b\xed\xba\xd7\xae\x7b\xed\xba\xd7\xae\x7b\xed\xba\xd7\xae\xcd\x53\xbb\xd4\xae\xe1\x2f\x5b\x26\x73\x6b\x28\x77\xf7\x28\xd7\x27\x22\x5f\x6b\x88\xab\x57\xa9\x7b\x95\x7a\xbf\x55\xea\xbd\x99\xd0\xdb\x2b\x7b\xd7\x17\x8e\x2b\xdd\x8f\x6f\xa1\x70\x9c\x7d\xfa\x60\x99\x35\x5f\x7f\xb7\xcb\xd8\xe6\x11\x08\x89\x65\x06\x96\x46\x8b\xab\x10\x0d\x25\x5a\xa4\x4a\xef\x66\x24\xf8\x8d\xe5\x79\x0d\x22\x98\xd1\x07\xc2\x90\xc5\xcb\x0e\x8c\x64\x1b\x80\xf1\xfb\x8b\x15\x70\x26\x81\x01\x4b\x84\x91\xa4\x0b\x72\x84\x4e\xa7\x9a\x81\x22\x9c\x24\x48\x10\x29\x0a\xc8\x13\xa5\x90\x99\x87\x58\x9c\xd3\x6a\xdf\x4d\x73\x20\x82\xfe\xd9\xc0\x9e\xbf\x2c\x91\xfa\x34\xda\xc1\x1f\x69\x92\x28\x1a\x0c\xd3\x82\xf0\x59\x10\x9e\xd8\x27\x83\xd7\xda\x1f\x2f\x70\xac\xac\x09\x8f\x84\x3c\xd3\xc2\xff\x3d\x88\x79\x2a\x1c\x94\x22\x78\x5e\x3f\x7d\x84\x8c\xdd\xa7\x0b\x3c\xb5\x22\x63\x8e\x63\x25\xf6\xa3\x39\x89\xb3\x84\x20\x2c\x44\x1a\x51\x2c\x49\x8c\xa8\xbe\x16\x10\x95\xd6\x4a\xb4\x3f\xb2\xaf\x8e\xa9\xc0\x93\x84\xc4\x66\x8d\x49\x8e\xec\x68\xa4\x9c\x0a\x34\x21\x6a\x89\xd5\xcd\x13\xae\xfe\x5c\x5f\x4a\x15\xd4\x78\xa4\x90\x32\x25\x84\x69\x42\x1a\x94\x2a\xcd\x9c\xaf\x55\xaf\xd2\xd4\xf7\x79\x28\xbd\x96\xd5\x6b\x59\x9d\x26\xf4\xa6\xb4\xac\x3d\x42\xa3\x59\x81\xf4\xa2\x68\x34\x88\x59\x29\xc9\x7f\xe7\x9c\x52\x62\x33\x7b\xdd\xf9\xfd\x3e\xdb\x21\x87\x6e\xc4\xe3\x94\x4d\xe9\x2c\xe3\xc6\x01\x3f\x51\x27\x76\x6d\x60\xac\x62\x9c\x57\x71\xe3\x54\x93\xfe\x5c\x17\x4f\x17\x1b\x02\x1d\x22\xa5\x5d\xdf\x5d\x8d\xae\x2f\x6e\xaf\x8e\x47\x1f\xd0\x70\xb9\x4c\xa8\x76\xec\x47\x99\x90\xe9\x82\xfe\x4b\x4d\x43\x17\x75\x75\x92\xdb\xa8\x21\x02\x14\x0e\x88\x24\x88\xa3\x31\x43\x87\xe8\xf8\xec\xf6\xfa\x66\x74\x55\x33\xa0\x61\x02\x68\x65\x42\x16\xcb\x04\xb4\x92\xfb\x6c\x42\x38\x23\x92\x08\x14\x25\x19\xc0\x9a\x5d\x7c\x41\x0f\x3a\xfa\xbf\xa3\xe3\xdb\x9b\xd3\x8b\xf3\xbb\xbf\xdc\x8e\x6e\x47\x1f\x90\xe5\x26\x35\xac\xa2\x4b\x51\x11\xaf\x18\x5e\x28\xf3\x27\xac\x3e\xfb\xcf\x8c\x64\xa0\x04\xd1\x19\x5b\x10\x26\x8b\x23\x5a\x82\xcf\x86\x3f\x8c\xce\xc2\x91\xe7\x04\xfd\xf4\xa7\x9c\xa8\x04\x4f\x48\x62\x02\x1e\xe0\xcf\x57\x02\x3b\x7f\x91\x89\x84\x64\x25\x31\xf9\xdc\xb6\x54\xb0\xa1\x65\xeb\xa8\xb8\x43\xe5\x5f\x14\x96\xbb\xe9\x07\xc1\xea\xb5\x36\xb6\x42\x0a\x9f\x4d\xd2\xa9\x03\x12\xdf\x01\x42\x9a\x12\xf1\xfe\xdf\xc1\x41\xf9\xe5\xc9\x2a\x52\x20\x2f\x8d\xce\x48\xbe\x75\xcd\xe4\xf2\x07\x5e\x83\xbc\xf3\xc9\x7d\x49\xd9\xb6\x23\x7d\x62\xbf\x5c\x16\xdd\xb5\xb5\xde\xea\xe8\xad\x8e\xea\x95\xe9\xe1\x12\x35\x2b\xbc\xab\x6b\x67\x13\x2f\xdf\x94\x92\x24\x16\x25\x37\x4d\x70\x6d\xac\x75\xc9\xbc\xde\x1b\xe3\x79\x9d\x32\x5d\x74\xe3\x2b\xe7\x3f\x37\x0e\x75\xb5\x5b\x0b\x22\x31\xf4\xe6\x93\x29\xca\x80\xf4\xfe\x16\x2a\x2f\x73\x7f\x0b\xf5\xb7\x50\xed\xca\xf4\xb7\xd0\x2b\x76\x5e\x55\x48\xee\x17\xf5\x5e\xad\xb3\xe9\xb6\x2a\x0c\x53\xe1\xda\x2a\xdb\x72\x02\x89\x39\xe6\xba\x05\x48\x94\x2e\x16\x29\xf3\x22\xaf\xab\x25\x19\x20\x17\x6c\x03\x37\x05\x90\xb1\xce\xf3\x95\xbf\x86\xbe\x0e\x9f\x97\xb7\x2e\xcf\x81\x0a\xef\xed\xc0\x35\x0b\xd4\x57\xd0\xe9\x2b\xe8\xf4\x38\xed\xbe\x82\x4e\x33\xb7\xf4\x48\xe4\x1e\x89\xec\x7f\xf7\x3a\x90\xc8\x61\xd7\x69\x0d\x46\xae\x6a\xd3\xfe\x4b\xf9\x1b\xdf\xa5\x5f\x6a\xd2\x6d\x3c\xfd\xba\x83\xf5\xf6\x98\xe5\xb0\xa9\xe7\x3a\x97\xbf\xdf\x06\x72\xcf\x15\xbe\x69\xb2\x92\x84\xc6\x49\xb9\x7f\xe5\x33\x60\x6a\x7e\x2d\xfd\xf8\xfb\xee\xfb\x9b\x2c\xd4\x5b\x2d\x01\xfb\xac\x9d\xf5\x9f\x57\x78\xdb\x32\xd9\x77\x35\x22\xbc\xfa\x7b\x27\xc8\xab\xbf\xde\x36\xc1\x3b\x94\xdd\x9b\x26\x76\x07\xb2\xf1\x75\x98\xf1\x3e\xc5\xcf\x61\xc8\x37\xee\xfe\x9b\x93\xeb\x4d\xbc\xdc\x4b\xf7\x96\xcb\xf5\x56\x65\x7c\x6f\xe8\xef\xd2\xd0\x1f\xbc\x5d\x4b\xbf\x4f\xc8\x6e\x58\x9c\xde\x0d\xb2\xc9\x6a\xf5\x6e\x10\xff\xbb\xd7\xe1\x06\x31\x77\xf5\x9d\xbe\xea\x3d\xf4\xf6\xfb\x7f\xe7\x7f\x7b\x8a\xb4\xf7\x61\x45\x2c\xac\x03\x62\xc5\xe2\x82\x49\x9c\xab\x1f\xf9\xe0\x15\x48\x16\x43\xc3\xa1\x55\x4a\xf2\xa8\xee\x5a\x60\xcb\xa5\x7e\xf4\x04\x9e\x7c\x5d\x30\xf0\x1a\xd2\x9f\x17\xf0\x52\xe6\x84\x75\xaa\x13\xc4\xd2\x9d\x3e\x4d\x35\xcc\xf9\x71\x4e\xe1\x9a\x84\x3a\x27\x70\x95\x78\x1b\x6e\x13\xc8\x30\x20\xbd\xeb\x74\x8e\xe7\x56\xa7\x4a\xec\xde\x6e\xe2\x86\x47\x5f\xef\xbc\x5f\x1c\x22\xb0\x86\xef\x5f\x14\x2e\xd0\x20\x33\x77\x83\x14\x78\x3e\xf9\xf8\x89\xc8\xb7\x27\x1c\x3f\x11\xf9\x5c\x92\x71\x53\x71\xd8\x28\x12\xf2\xb2\xec\x7b\x22\x0d\x36\x13\x7d\xaf\x6b\x8e\x7d\xc2\x53\x9f\xf0\xf4\x6b\x4f\x78\xb2\x4f\xb7\xe9\x56\x79\x02\x3f\x79\xc6\xab\x4a\xbf\xf0\xed\xdd\x56\x7a\x5e\xfd\x85\xd5\x5f\x58\xdd\xe6\xb8\xaf\x2a\xba\xe5\xe7\x7d\x50\xd1\x3b\xe5\xa0\xeb\xe8\x5d\xde\xde\xc6\xb2\xff\xda\x08\xdd\xa5\x7d\xd9\xeb\x11\x42\xa2\xab\x9c\xd9\x2a\x8f\x69\x5d\x53\xaa\xab\xbc\x13\x55\x45\xec\xa8\xb8\xe4\xf6\xd7\x97\x25\x51\xb6\xef\xab\x6e\x29\x7f\x2e\x61\xbf\x2f\x22\x22\x9f\xf7\x8b\x0a\x05\xa5\xe3\x16\x21\x5f\x21\x92\xe0\xae\x11\x04\xb6\xe6\xb7\x41\xa6\x77\xf3\x4f\x0b\x40\xb1\xf0\x3b\x03\x1d\x83\xaf\x81\xe4\x22\x1d\xf6\x43\xff\x85\xf6\xb3\x7c\x64\xfb\x89\x2d\x9f\x09\x1f\x72\x22\xf9\xea\x0e\x4b\x65\x47\xc8\xed\xd1\x69\xa1\xd5\xb0\x06\x9d\x76\x83\xc5\xfd\xab\x44\xa7\x85\x84\x3f\xf1\x99\x6d\xcd\x93\x6f\x0e\xd7\xd0\xf6\x84\xf5\x18\x87\x0d\x96\xee\xad\xe2\x1d\x9a\x44\xe8\xde\x50\x58\x90\xe2\x6f\xf1\xe4\x86\x77\x52\x7f\x44\x9b\xd6\xe8\xcd\x95\x76\x2b\xa8\x1a\x6b\xe6\xf6\x4a\x4a\xbc\x15\xb5\xa5\x5d\x53\xf5\x34\x10\x28\x6f\x37\xfa\x32\xc0\x6f\xb4\x0c\x70\x3b\xe3\xa6\xb5\x65\xd3\xd6\xac\x69\x67\xd3\xd4\x1b\x34\x5b\x20\xa9\x43\x3b\x63\x53\x24\x75\xa0\xc7\xbf\x0a\x6f\x4d\x40\xf1\x73\x20\xa9\x7f\xa5\xa6\x47\x6f\x77\x3c\xc9\xba\xbd\x55\xa3\x63\xcf\x2d\x8e\x1e\x03\xbe\x4b\x0c\x78\x0f\x01\xef\x21\xe0\x6d\x17\xa8\x87\x80\xf7\x10\x70\xef\xbb\xd7\x01\x01\x37\xf6\xe2\xb6\xe8\xc5\x2a\x95\x3d\x57\x68\x83\x8a\x29\x9b\xab\xef\xa7\xf1\xab\xd0\xdb\xbd\x42\x46\xce\xb2\xe6\xcf\xa1\xbf\xf7\x15\x7b\xfa\x8a\x3d\xbd\x12\xf7\x6b\x52\xe2\x7a\x3d\x65\x93\xd5\xea\xf5\x14\xff\xbb\xd7\xa3\xa7\x04\x80\xae\xb5\xb8\xa2\x63\x4e\xb0\xd4\xfd\xac\x78\x0e\x31\x2a\x68\x26\x4d\x6a\x87\x1e\x40\x29\x1e\xaf\x41\xeb\x50\x74\x6a\x8a\x5b\x00\x8c\xfc\x17\x1e\xfc\x47\x0b\xc2\xaf\xcc\x25\x02\x9c\x3e\xc1\xb1\xeb\x22\x06\x9a\xc3\x02\xaf\xd0\x1c\x3f\x10\x34\xc5\x34\xd1\xfe\x1b\x23\x1c\x1a\xe6\xd6\x44\xd0\xff\xe9\x46\x10\x0e\xc9\xc9\xd1\x9a\x4a\xd8\xe9\xbb\x3f\xc2\x09\x22\xba\xe8\x26\xfc\x06\x5a\x9c\x99\x86\x72\x13\x42\x98\x07\xfd\x6b\x4b\xf3\x4e\x74\xb6\x17\x47\x69\xf9\x7c\xf3\xe2\x00\xad\xfa\xb6\xc0\xbb\x33\x46\xb6\xb1\x40\xc4\xef\x5f\x8b\x28\x78\x0e\x7b\xe3\x0d\xc7\x04\x7a\xbf\xff\xaf\xb3\x46\xf7\xde\xe8\xaa\xbd\x05\xb8\x43\x0b\x10\x72\x3a\xde\xa8\x09\xd8\xfb\xf1\x1b\x16\xa7\xb7\x8f\x37\x59\xad\xde\x3e\xf6\xbf\x7b\x45\xf6\xf1\x8e\x1b\xd0\x3d\xa1\x1e\xdd\xab\xd1\xbd\x1a\xdd\xab\xd1\x6f\x56\x8d\xde\x8f\x15\xee\x75\xe8\x5e\x87\xee\x75\xe8\x5e\x87\xee\x75\xe8\x5e\x87\x36\x4f\xed\x44\x87\x86\xbf\x6c\x66\xed\x6e\xd2\x68\xdb\x45\xa4\x4c\x1e\xed\x6b\x51\x9e\x7b\xc5\xb9\x57\x9c\xf7\x5b\x71\xde\x9b\x09\xbd\xbd\xe4\xb9\x3e\xfd\xac\x74\x0b\xbe\xd9\xf4\x33\x57\x65\x7f\x83\x0a\xc2\xc1\x67\x76\xa0\xe7\xae\x2b\x3c\xb0\x92\x11\xb3\x18\x59\x22\x3a\x55\x19\xfe\x62\x1e\x7a\x5d\x55\xc9\xca\x54\xf7\xb5\x85\x91\xb7\x6b\x7d\x6d\xe1\x27\x9c\xb7\x3d\x67\x6b\x66\x6e\x79\x54\x7b\xaf\x5e\xe9\xb4\x5f\x1c\xe6\x53\x7f\xd2\x5f\x14\xf4\x53\x79\x73\x94\x32\x11\xf2\x1e\x4d\xcf\x5f\x52\x79\x9b\xab\xe1\x13\x91\x6f\xe5\x5e\xe8\xcb\x2a\xf7\x55\x2a\x37\xee\xbe\xd4\x49\xc2\xbf\xae\x29\xf6\x95\xa3\xfb\xca\xd1\x7d\xe5\x68\xf7\xd6\xe7\xa8\x1c\xbd\xcd\x8d\xac\x5f\xff\x56\x2e\xe5\xbe\x7a\x74\x7f\x2f\xf7\xf7\x72\xe5\x14\xf7\xd0\xe0\xda\x8b\xda\xd8\xce\xe0\xda\x55\xce\xb7\x1f\xca\x72\xc2\x78\xa7\xa9\xdf\x76\x25\xfb\xf4\x6f\xf3\x7f\x7d\xfa\x77\x9b\xc9\xf5\xe9\xdf\x3d\x70\xa9\x4f\xff\xee\xa1\x39\x3d\x34\xe7\x0d\x40\x73\xac\x66\xb1\x8b\x14\xf0\x0a\x2d\x65\x7d\x1a\xf8\x97\xb2\xca\xbc\xb7\x1a\x88\xa5\xb5\x4f\x07\xef\xd3\xc1\xb7\xe5\x9d\xbd\x30\x56\x9e\x24\x2d\xbc\x42\x0c\x6c\x6b\xa1\xbc\x8e\xf4\x70\x4b\x6d\x9f\xdb\xd2\x43\xf4\xf6\x1f\xa2\xb7\x77\xb9\x2d\x7b\xa3\xcf\xf6\x56\xe2\x0e\xad\xc4\x3e\xbd\xa5\x4f\x6f\xe9\x6d\xe8\xd6\xab\xd5\xdb\xd0\xfe\x77\xaf\xcc\x86\x7e\xda\x34\xf1\xa7\xd0\xab\x7b\xb5\x5a\xff\xae\x57\xab\x7b\xb5\xfa\x8d\xaa\xd5\xfb\xb1\xc2\xbd\x4e\xdd\xeb\xd4\xbd\x4e\xdd\xeb\xd4\xbd\x4e\xdd\xeb\xd4\xe6\xa9\x9d\xe9\xd4\xbb\x4d\x1b\xef\x18\xc5\xf2\x52\x11\x5e\x93\x32\xdd\x2b\xd2\xbd\x22\xbd\xdf\x8a\xf4\xde\x4c\xa8\x4f\x21\xef\x53\xc8\x4b\xdf\xec\x6f\x0a\xf9\x37\x86\x11\x0e\x3c\xd9\xef\x2e\x89\x83\x1f\x92\x74\x72\xb3\x5a\x12\xf5\xdf\x13\xba\x20\x4c\x80\xc6\x42\xe5\xca\xbf\x38\x6b\x16\xb8\xbc\xb4\x07\xd7\xa7\xe7\x9f\xce\xfc\xe4\x8a\x83\xcf\xb7\x67\x37\xa7\x97\xc3\xab\x1b\x4b\xa1\x9b\x95\xbf\x16\xe6\xb9\xe0\xee\x3f\x4e\x17\x4b\xcc\xa9\x48\xd9\xe8\xeb\x92\x13\xa1\x48\xbb\x80\xdb\x36\xe5\x9b\x51\x37\xfa\x8b\x4f\xd9\x79\xf8\xcf\x4f\x37\xe1\xbf\x82\x59\x9c\xdd\x84\xff\x1a\x35\xce\xc6\x1b\xb8\x78\x82\x0e\xd1\xa7\x9b\x0f\xe8\x13\x44\xfd\x39\xba\x99\x63\x06\xa9\x3b\x67\x37\x1f\xd0\x19\x11\x02\x3e\xc9\x1f\x96\x54\x26\x30\xb7\x1f\x28\xc3\x7c\x85\xec\xf4\x75\x96\x0e\x06\x77\xa0\x5d\x9a\xe2\xe2\xb1\x7f\x64\x0c\x14\xd6\x7c\xf5\xce\xd2\x19\x8d\x70\xb2\xdd\x22\x0e\xcf\xfd\xf3\x72\x70\x71\xd5\xb8\x14\xfe\xaf\xcb\x6b\x31\x3c\x3f\x81\xec\x24\x4b\x6a\xc5\xcc\xcf\x89\x90\x24\x56\x17\x60\xac\x99\x57\xd9\x1a\x64\xe5\x5d\x8c\xff\x48\x29\x23\x31\xca\x84\x52\xd7\x86\xe7\x27\xe8\x3d\xba\xb8\x1a\xb3\x0b\x1e\x6b\x7f\x01\x51\x37\x8a\xb6\x55\xa8\x40\x2c\x95\x88\x2e\x96\x29\x97\x98\x49\x75\x99\x2a\x41\x96\x9a\x15\x11\x08\x73\x82\x8e\xd3\xc5\x22\x93\x58\xd2\x07\x52\x5a\x54\xa6\x8d\x80\x6b\x22\x4f\x63\xf0\x40\x56\xac\x61\x3a\x09\x14\x9d\x83\x25\x57\xe3\x4b\x5a\xd0\xfe\x0e\x68\x5c\x52\x07\xed\x10\x98\x73\x1c\x8a\xc1\x03\x2a\xc9\xa2\xf8\xfb\x66\xf9\xff\x4d\xf1\xaf\x50\xb7\x76\x3d\x6f\x47\x9c\xa7\x1c\xfe\xe7\x27\xca\xe2\xcd\xb8\xe2\xf6\xfc\xa7\xf3\x8b\x2f\xe7\x3e\x67\xdc\x5e\x8f\xae\xfc\x7f\x5f\xff\xf5\xfa\x66\xf4\xb9\x91\x5b\x8a\xa3\xe4\x6c\x00\xe4\xc1\x3d\xf3\x01\x5d\xeb\x36\xa6\x29\x47\x4a\x73\x38\xa8\x9e\xd4\x67\x22\x71\x8c\x25\xce\x3f\x48\x63\xb2\xd9\xdc\x3e\x0f\xcf\x6f\x87\x67\xc1\x54\x8e\x7f\x1c\x9d\xdc\x9e\x05\x37\x87\x9d\x9f\xf7\xc9\xd5\x48\xdf\x0b\xfe\x67\xc7\x3f\x9e\x9e\x9d\xdc\xb9\x9b\xa4\x69\x35\x0a\xef\x2d\x1e\x9f\x9b\x39\x41\x0b\x22\xe7\x69\x8c\x26\x2b\x3f\x6d\x24\x4f\xdf\x7b\xc4\x02\x25\xe0\xfd\x23\xf1\xd1\x58\x8b\x1a\x3d\xea\x07\x75\x8a\x90\x79\x99\xf7\xc4\x22\x8d\xc9\xc0\xfc\x46\x9d\x13\x9d\xe5\xa8\x6e\x73\x30\x8a\xaa\x06\x56\x6f\xc7\x0c\x51\x16\xd3\x07\x1a\x67\x38\xd1\xd9\x88\x6e\x8d\x3e\xa0\x21\x52\xc6\x49\x9c\x25\x04\x49\x4e\x67\x33\xd0\x63\x0b\xa4\xea\xd1\xcc\xa3\xb0\x92\xf0\x9c\xeb\x58\xab\xec\x1f\x78\xad\x31\x80\xe8\x24\xd1\x5a\xa2\x7e\x10\xb2\x2f\xc3\x11\x39\x96\x73\xc2\xab\x48\xb3\xfb\xf2\x41\xbb\x2d\x6a\xa6\x05\xd9\x70\x39\x8c\x0d\x22\x2a\x42\xab\xdf\x4b\x4e\x1e\x68\x9a\x79\x8f\x9a\x44\xd1\x60\x73\x2b\x87\xcf\x17\x00\x96\x2d\x05\x1a\xf3\x61\x42\x6e\xbe\xb2\xae\x4e\xfb\xc7\x88\x49\x5e\x79\x35\xb7\x95\x39\x46\xf1\x0b\x84\x4e\xb5\x7d\x58\x7a\xf7\x79\x51\x93\x2f\xdb\xcf\x46\xfb\x53\x2f\x39\x3a\xa8\x34\x1c\x41\xbb\xaf\x93\x7a\x15\x0a\x5c\x2e\x01\x7e\x06\xbb\x60\x91\x09\x09\x65\x27\xb4\x0b\x0a\xdd\xff\x49\xa0\x7f\x66\x18\x20\x86\x47\xe8\x9a\x90\x31\x9b\x4b\xb9\x14\x1f\xde\xbf\x9f\x51\x39\xcf\x26\x47\x51\xba\x78\x9f\x67\xe3\xbe\xc7\x4b\xba\xc0\x8a\x5f\x08\x5f\xbd\x9f\x24\xe9\xe4\xfd\x02\x0b\x49\xf8\xfb\xe5\xfd\x0c\xbc\x0d\x56\x87\x7d\xef\x86\x9d\xa5\xff\xeb\xec\x0f\xdf\x1f\x9e\xfd\xe9\xfb\x83\xb2\x48\xad\x3b\x9d\x23\x16\xe1\xa5\xc8\x12\xe3\x95\xe4\xfe\xda\x00\x52\x16\x56\x62\xdd\x7e\x9f\x87\xdb\xb5\x9d\x40\x3e\xbe\xbc\x0d\x54\x9c\xf0\x9f\x9f\x47\x9f\x2f\xae\xfe\x1a\x08\xb4\x9b\x8b\xab\xe1\xa7\x66\x55\xa7\x24\xb1\x0b\xcb\xf0\x13\x4b\x1f\x59\x38\x7b\x51\x9c\x74\xc6\x24\x5d\x10\x2b\xb0\xcd\x3f\x6f\xf4\x4c\x37\x98\xf9\xc5\xcd\x8f\xe1\xc5\xf3\xf1\xec\xaf\x37\xa3\xbb\xeb\x93\x9f\x1a\x67\xa2\x1f\x0b\x28\xbb\x06\x97\xca\x71\x9a\x64\x0b\xe6\xff\xbd\x39\x6d\xa7\xe7\x37\xa3\x4f\x45\xea\x2e\x86\x37\xe1\xb2\x5f\x85\x9e\xba\x83\x1f\x2e\x2e\xce\x46\xc3\x60\x2f\x4f\x86\x37\xa3\x9b\xd3\xcf\x81\x92\x7a\x72\x7b\x35\xbc\x39\xbd\x38\x6f\x9c\xa6\xa5\xa0\x62\xa2\x6a\x5a\xfe\x34\x77\x2d\x67\x5a\x1d\xf3\xa1\x89\x82\xe9\x83\x72\xe8\xe5\x0e\x69\x07\x17\xe8\x00\x87\xce\x3f\x10\x69\x4a\x2b\x65\x8d\x0c\xb7\x09\xd5\xcb\xba\xc6\x8d\x6e\x12\x79\x37\x8e\x04\xa0\xcb\xf8\xc1\x71\x92\xa4\x8f\x3a\x16\xb1\xa0\x4a\x7b\x35\x89\x9c\xea\x27\x02\x45\x19\xe7\x84\xc9\x64\x75\x54\x21\x4e\xc2\x6d\x49\xb9\x3c\x71\xde\xea\x8d\x18\xae\xd2\xf5\x5b\x76\xfa\x56\xb2\x4a\xd1\xd1\x6b\xc9\x82\x82\xed\xe9\xec\x33\x11\x02\xcf\xc8\x47\x1b\x0c\xdb\x91\x90\xba\xfe\xd9\xff\xe7\x9f\xaf\xd7\xf0\xb3\x1d\x22\xa0\x10\x7c\x9b\xc3\x49\xca\xa5\x95\x2a\xdb\xf0\x72\x84\x33\xd1\x89\x99\x9b\x63\x79\x18\x65\x82\xf0\x43\xe3\x3c\x21\x31\xc2\x8a\x50\x13\xc8\x83\xb2\x4a\x4b\x2c\x14\x13\xa5\xa0\xd3\x10\xf3\xf3\x4c\x17\x5a\x42\x40\x4d\xcd\xed\xba\xe4\x94\x45\x74\x89\x93\x8d\x8e\x5e\xc1\xbb\x63\x70\xfb\xdf\xd1\x29\xc2\x6c\xf5\xae\xa4\x78\x49\xc2\x17\x10\xd4\x36\x64\x3a\x25\x66\x1d\x5b\xeb\xdd\x61\x2c\x95\x38\x74\x47\x6c\xb0\x37\x3a\xda\x52\x37\xdd\xc2\x28\xe6\xed\xda\x90\xc4\xc9\x65\xf5\x98\x55\x0b\xe6\x9b\x55\x4d\x5b\xfd\x19\x2f\xd5\x16\xeb\x92\x0b\x08\xe7\x73\x34\xb1\x6a\x53\x2d\x4b\xfd\x2b\x58\x32\xcf\x2f\xd8\x5e\xc5\xc8\x97\xd0\x04\x9d\xca\x2f\x09\x94\x76\x0f\x46\x60\x58\x72\x9a\xc9\x8c\x2b\x65\x4a\xa9\xfd\xe8\x3b\x72\x34\x3b\x42\x17\x3f\x8f\xae\xae\x4e\x4f\x46\x03\x34\xbc\xbc\x1c\x9d\x9f\x0c\x10\x91\xd1\x3b\x6b\x6f\x83\xd4\x24\xf1\x98\xc9\xd4\xb8\xff\x56\x68\x9e\x3e\xaa\x77\x2d\x08\x9f\x91\x60\xce\xe6\xc7\x08\x92\x43\x66\x54\x48\x1d\x29\x01\xf5\xc7\xab\x31\x42\x17\x45\x3d\x48\x73\x48\x26\xe7\xdb\xb0\x06\x16\x22\x5b\xe0\x49\x42\xee\x28\x5e\xdc\xf1\x34\x59\x77\x86\x2b\x8f\x54\xae\x3a\xde\x09\xed\x6a\xbb\xc3\x51\x94\x66\x4c\xb6\x1e\x6d\xdd\x3e\x9e\xc0\x32\x09\xb4\x54\x07\x0a\x1c\x35\xe5\xaa\x1c\x6e\xb9\x04\x8a\xc0\x79\x04\xf6\x03\x88\x8c\x24\x87\x77\xc0\x96\x54\xad\xe5\xb1\x2e\xf7\x62\xd5\x4a\xaf\x20\xc7\x36\x0b\x5c\x35\xca\xcb\x9e\xbf\x63\x7d\xf0\xaa\xea\x9c\x68\x03\xb9\x50\xb6\x0e\x30\x34\x85\xfa\x3c\x7a\x81\x15\x67\xea\x03\xf1\xcf\x2c\x95\x58\xbc\x3b\x1a\x33\x75\xba\xef\xc9\x4a\x7b\x89\xd4\xf9\xf9\x8d\x92\xe9\x87\x82\x30\x41\x25\x7d\x20\xbf\xd1\xfa\xad\x92\x00\x0f\x98\x53\xc5\x7b\x42\xbd\xc1\x94\x05\x0a\x4b\xb0\x4c\x69\x02\x61\x62\x35\xa8\x39\xbe\x26\x7e\x3e\xf1\xeb\xb6\xd8\xef\x34\xf9\x33\x22\x21\xf6\x23\xa9\xcc\x14\x0f\xc4\xba\xee\x50\x89\xf4\xb5\xaa\x05\x70\xc5\x89\x8e\x5b\x6d\xe5\xc2\xda\xe4\x4c\x75\x55\x0e\x8b\xe7\x85\x8a\x65\x82\x57\x25\x33\x73\xdd\x39\x53\xc6\x94\x58\xe2\x88\xe4\x71\x33\x1b\x62\x8c\xd2\xc5\x22\x65\xc9\xca\x61\x65\x62\x3a\x85\x6c\x36\xa9\xce\x20\x9a\x10\xf9\x48\x08\xcb\x3f\x45\x46\x16\x20\xca\x84\xc4\x4c\x17\x75\x02\x6e\x19\xab\xb5\x8a\x33\x50\xd9\xc6\x07\x03\x34\x3e\x88\xc9\x03\x49\xd2\xe5\x82\x30\xa9\x3e\x20\xb2\xf2\x84\x8e\x16\x98\x26\xe7\xa9\xba\x7f\x23\x5c\xa7\xef\xb5\xdd\x16\x4e\x22\xba\xa4\x84\x49\x71\x47\xd4\xb8\x4f\xea\x66\x5c\xa7\x1f\x5b\x40\x0e\x50\x82\x70\x1c\x73\x22\x04\xd4\x32\xb1\x44\x1a\x6d\x5e\x7b\x67\xdd\x02\xb4\xe3\x61\xe7\xdf\xdb\x2d\x1b\x57\xdb\x09\x51\xca\x5d\x86\xaa\x7b\x71\x5e\x7d\xa2\x91\x6b\x4d\x2d\x9b\xbc\x46\x82\x0d\x09\x3a\x84\x41\xd1\x0b\x54\x3c\x36\x4a\xb8\xb7\xa3\x33\x5c\x99\x6b\xf5\x5c\x23\x69\xc2\xc7\x8e\xd9\x82\x66\xf9\x5d\x6d\x5c\x5f\x45\x6f\x1b\x59\x4b\x71\x94\xa4\x22\xe3\x2d\x8d\xb0\x90\xe8\x63\xf3\x68\x13\xdd\x23\x5f\xb5\xc9\x12\x29\x3a\x69\x4f\x15\x0b\x8f\x38\x59\x72\x22\x80\x27\xc1\x6f\xa8\x0e\xb7\x34\xd7\xb0\xf9\xf5\x00\x51\x16\x25\x59\xac\xd6\x00\x27\xb9\x5f\x90\xc5\x28\xbf\xda\xc6\x6c\x61\x0c\x0f\x84\x05\x7a\x24\x49\xa2\xfe\x1b\xa5\x8b\x25\x88\x6d\x43\xae\x19\x49\x19\x88\x12\x4b\x32\x40\x69\x26\xd5\x60\x03\x5d\xfb\xcd\x6c\xc1\xe1\x04\x03\x80\x2d\xaf\xe8\x3a\x66\xb7\xc2\x22\x01\x1c\xee\x48\xf3\xba\x16\x60\x94\xa1\x4f\x44\xc2\x28\x00\x04\xf5\x27\xa8\x6b\xdc\x55\x8a\xa0\xe2\xda\x6f\x71\xa2\xcc\x4c\x3a\xec\xfc\x19\x95\x84\xe3\xe4\x33\x5e\xfe\x90\xa4\x93\xc6\x7d\x1f\xa2\x85\xd6\xb3\xcd\x5b\x10\x2d\x5a\x58\x1e\x60\x66\x1d\x8f\x12\xce\x83\x50\xd8\x9a\xe3\x1f\x46\x4d\x9a\xd9\x13\x62\x16\x94\x69\xb8\x28\xc4\x9f\x8a\x74\x9a\xcc\xed\x75\x34\x82\x85\x78\xf7\x7a\xec\x50\x4d\xef\xa2\x6c\x7b\xaf\x63\x82\xd0\x66\x7f\xea\xc9\xc0\x01\x91\x73\x42\x39\x6a\x35\x2d\x7b\x7e\xef\xf4\x99\x6f\xcf\x34\x39\x6f\xd7\x99\xde\x5a\x88\x38\x01\xa1\x08\x33\xc0\xd5\xa0\x20\xe3\xd1\x98\x15\x88\x40\x31\x59\x12\x16\x0b\x04\xec\x65\x4f\x43\x20\xfb\x07\x68\x4a\xbf\x9a\x41\x6d\xc4\x27\xff\xa9\x67\x3e\xd4\x38\x15\xe6\xb8\xcc\x76\x1d\xee\xc7\x4b\x78\xbe\xd1\x6a\x4e\x85\xb2\x10\x23\xa5\x58\x71\x12\xa5\x5c\x89\x44\x78\xad\xf3\xf3\xad\xbd\x1b\x25\xe6\x6a\x51\xf0\x3a\xb3\x2c\xa0\x23\x07\x72\xc7\x58\x92\x43\x65\x89\xae\x89\x70\x2c\x53\xf5\x1a\x44\x17\xca\xb6\x70\x41\x37\xdf\x92\x9f\x90\x19\x66\x88\x67\x8c\x51\x36\xab\xa1\xd6\x8a\xf6\x2d\x0e\xb3\xd2\xac\xf0\x42\xd9\xa1\xa0\x47\x28\x82\x42\x3a\xc4\x12\x96\xb3\x91\x0e\x63\x4a\x3e\xd7\xaa\xc9\x86\x65\x7b\xc4\xce\xb2\xad\x21\x36\x83\x42\xda\x7b\x43\x6c\x82\x85\x44\x86\xa6\x1a\x8a\x7d\x6d\x76\x07\xa1\xfe\xa6\x62\x68\xbe\xe1\xd0\x45\x39\xf7\x49\x44\x82\x48\x49\x4d\xd1\xae\x4c\x10\x84\xa7\xca\x2e\x5e\x10\x3e\xb3\x0a\x9f\x2e\x57\xe1\x8e\xb6\xa9\x5b\x61\xe5\xa8\x2f\x4b\xc6\xac\x72\xe8\x23\x34\x64\xa5\xa8\xaf\x75\x72\x04\xeb\xa5\xa5\x36\x4e\x1e\xf1\x4a\xa0\x25\x14\x17\xd1\x81\xe8\x7c\xf2\xe0\x85\x0a\x1f\xb2\x2e\x27\xa5\x50\xd1\x08\x27\xc9\x0a\x81\xa1\xe7\x51\x56\xb3\x59\x5e\xc5\xbe\xf6\xc2\xae\xa5\xee\x5f\xf0\xac\x56\xd5\xef\x73\x26\x50\xa5\xa4\x2b\x29\xb3\x39\x30\xc2\x8f\x33\x1a\x84\x21\xe8\x96\xc6\xba\x18\x85\x5e\xd9\x3a\x85\x0f\x5c\x20\x67\x78\x42\x92\xad\xbd\xb1\x1b\xf9\x9e\xe1\xd5\x06\xfb\xa9\xcc\x6f\xa2\xbd\xcb\x04\x3d\xce\x09\x2f\x8a\x36\xeb\xc4\xe1\x59\x3b\x5f\x73\x3e\xcf\xa0\xda\xca\x16\x13\xb5\x60\xe6\xcd\xe5\x77\x1d\xd0\xd9\xbf\x48\x72\xa4\x73\xf5\x2d\x52\x74\xdf\x6c\x43\x83\x07\x49\xae\x24\x01\xed\x02\x94\xbc\x13\x6f\x90\xe3\x99\x96\x09\x78\xa7\x53\xc4\x52\x46\x10\x15\xf9\x8f\x21\x9e\xa8\xb1\x25\xc0\x4c\x33\xc2\x08\x87\x1a\x56\x36\xfc\xe8\x92\x85\x5c\x1a\xc7\x33\x1b\xe5\x43\x67\x4c\xa2\x29\x25\x49\x2c\x10\x23\xca\xa6\xc1\x7c\xa5\x4e\x88\x11\x68\x6d\x74\xa3\x5d\x69\xab\x15\xd7\x87\x51\x23\x2d\x40\x17\x12\x8a\x94\x26\x56\xa0\x0b\x0d\x93\x24\xff\x91\x79\xc8\x40\x39\xc6\xcc\x59\xc1\xc0\x7f\x54\x28\xeb\xee\x08\xc1\xb6\xc9\xfc\x29\x75\xc7\xa8\x0f\xec\x1e\x0e\xac\x2e\x2b\x74\x3a\x4e\x17\xdb\xdf\xde\x5b\xf9\x3a\x86\xe8\x26\x75\x19\xa9\x19\xcc\xe8\x03\x61\x95\xf5\xb0\x2d\x53\x24\x81\x1b\xb2\x59\xea\x98\xfa\x60\x7b\xe0\xa7\x6a\xbf\x52\x6a\x93\xb3\x92\xe7\x4a\x57\xff\xca\x8d\xec\x64\xe5\xa2\x12\xbe\xa9\x72\xaa\x45\x8b\x2e\x6b\x8c\x05\xfa\x0d\x4b\xe5\x6f\x50\x6e\xa3\x59\x73\x58\x97\x8f\x33\xae\x89\x41\x80\x1b\x57\x6f\x83\x13\x6a\x98\x04\x61\x77\x56\xe3\xf5\x2b\xbf\x2d\x42\x33\x8f\xba\x3c\xa9\xf6\x36\x2a\x47\x4e\xeb\x12\x6f\x74\xee\xe8\xce\x7c\x00\xcf\x51\xd1\x13\x69\x36\xe0\x04\xc2\x26\x2c\x45\x8b\x94\x93\x42\xfe\xaa\x16\xde\xf6\x5e\x37\x79\x83\xed\xb9\xb4\xc2\x1d\xa6\x73\xf2\xf2\x63\x1e\xb8\xc1\x9a\xdd\x5f\xbb\xc0\x0c\x2c\x42\xb4\x69\x03\x07\xac\x41\xac\x56\x9b\xe4\x9b\xc4\xf9\xeb\x74\x52\xe7\x88\xf6\x0b\xf5\xd5\xe1\x34\x8f\xc6\xec\x63\xca\xcd\xdd\x29\x0c\xe8\x7a\x82\xa3\xfb\x43\xc2\x62\x84\x33\x39\xd7\x78\x49\xe3\x3b\x5e\x99\x9d\x55\x7a\x01\xb0\x80\xdd\xe2\x98\x8a\x08\x73\x23\xf4\xa7\xf8\x21\xb5\x54\x8c\x99\x37\x08\xc0\xba\x21\x75\x04\xd2\xdb\xeb\x14\x08\x02\xa9\x7a\x75\x6b\x51\x95\xc4\x5d\x4a\xe1\x6e\x3e\x33\x7e\x22\xe8\x18\xde\x47\x62\x46\x84\x18\x1f\x68\xaa\x0b\x2b\x74\x6a\xfd\x51\xd6\xbe\x11\x7e\x39\x4c\xf7\x4b\x7d\xc6\xac\x47\xc6\xcc\x42\xa9\x29\xdf\x5b\xd9\x19\xa0\x47\xa7\x19\x07\xb0\x68\xd5\x98\xdf\x45\x73\x9a\xe4\x3e\xea\x77\x03\x73\x1e\xf5\x90\x09\x79\x20\x89\x1a\x98\xb2\x88\x93\x05\x61\x26\x7c\xfc\x3d\xfa\x6f\x9d\xdc\x8c\x7e\x37\x66\x9f\x40\xac\x26\xc9\x6a\x80\xe8\x34\x1f\x19\xcb\xc2\x30\xf7\x95\x04\xa8\x2d\xd3\x92\x25\x20\x44\xef\xf7\x1c\x3f\x90\x31\xb3\xc3\xfc\x37\xba\x47\xbf\x45\xbf\xab\x73\xe4\x18\xa4\xf0\x53\xdb\xf9\xc0\xc5\xf6\x5d\x9e\x64\x18\x18\xf5\x11\x24\x87\x75\x03\x84\x4d\x51\x9c\xa9\xe6\x14\x5c\x07\x6f\xa6\xec\x21\x2d\x47\xaf\xfc\x93\x8b\x39\x61\xf2\x8e\xa5\x31\xb9\x23\x15\xa1\xab\x06\x41\xa1\x2e\xf5\xf3\x34\x26\x6b\x03\x4f\x4e\x41\xfe\x02\xae\x0b\x91\x4d\xdc\x76\xa8\xf7\xe6\x46\x77\xc8\x60\xd5\x04\xbb\xaa\x9e\x9b\x90\xbb\x69\xac\xec\xc2\x68\x57\x03\x90\xe8\x86\x80\xea\x78\x8d\x6e\xb7\x03\x78\x9a\xe2\x29\x2c\x7a\x88\xd5\x8f\xd5\xcc\xcd\x9d\xe3\xd5\x2b\x85\x1c\x10\x4e\x67\x54\x69\xdb\xcd\xf1\xb8\xf5\xaa\x65\x1e\x41\xf2\x9a\xac\x4c\xd2\xac\x08\xa1\x87\xcd\xd1\x57\xa2\x0c\x34\xe8\x2a\xd5\x1e\x4d\xd4\xf3\x1c\x6e\xdd\x69\x06\x1d\x7b\xb4\xa7\x54\x57\x18\x11\x61\x4b\x17\x6e\x9b\x03\x69\xf0\x8d\x1d\x90\x1a\xe8\x71\x0c\x5e\x13\x14\xcd\x31\x9b\x35\x2b\x50\x7f\xc9\x48\xb6\x23\xb4\x88\xc9\x60\x7b\xa1\x38\x34\x9e\x89\xbc\xbf\x91\x5e\x1b\x25\x8b\x0a\x2d\x95\x4c\x24\x1a\x8b\xfb\xdc\x93\xe4\x10\xa8\xda\x7e\x2c\x1a\xb2\x2d\xbc\x0e\x57\x86\xef\x76\xe0\x77\x78\x8e\x40\x75\x59\x31\xa8\x38\x78\xc0\x7f\x26\x67\xe3\x59\xcd\x7a\x27\xbc\x0a\x17\xee\xae\x4d\xfc\x0e\x26\xa4\x25\xca\x50\x68\xa4\x4a\x39\xaa\x57\xcd\x1d\xd7\xa1\x03\xa1\x33\x4b\xe8\x77\xdf\x41\xfc\x66\x6b\xbf\xa5\xe7\x8f\xcb\x41\x65\x1a\x55\xa8\x67\x43\xe2\xa7\xf5\x31\x84\x11\xb1\x10\xd7\xe8\x05\xc4\xea\xf0\xa6\x1e\x45\x1b\x44\x1f\xcb\x16\x40\x35\x6d\xf6\xeb\xb6\xa4\x34\xc6\x01\x5a\x7a\xf5\xc1\x94\x6d\x3a\xb6\x67\x06\x66\x13\xfa\xc3\x35\x76\x20\xf5\x22\x82\xe0\x1a\xcf\x04\x92\x1c\x03\x6c\x2d\x65\x62\xcc\xbe\x68\xf5\x8d\x0a\x6d\x28\x99\x3c\x49\xb0\xc3\x10\x85\x7f\x83\xf0\x34\x29\x55\x72\x8e\xb5\x72\x5f\xed\x7b\x77\x95\x0d\xdc\x49\xf0\xbd\xef\x55\x2f\x83\x17\x19\x9d\xb5\x72\x48\xbb\xd0\x3e\xd6\xb1\xd4\x81\xb6\xda\x49\x4a\x05\x60\x40\x71\x52\x6b\x2c\x4d\xd2\x34\x21\x98\xd5\xe9\x93\x95\x5f\x97\xdc\x24\xd4\x87\xef\x29\x73\x47\xa9\x24\x3c\x23\x4a\x99\xc6\x49\x52\x98\x17\x86\x02\x44\x92\x30\x6d\x55\x1b\x8b\x48\x11\x1a\xaf\x89\x04\x0c\xfc\x93\x3f\x21\x49\x27\x88\x85\x7e\xa0\x91\x8b\xe0\x27\x79\x8d\x9b\x56\x40\x65\x3f\xf2\x5f\x09\xeb\x5e\x47\x98\x0f\x06\x6f\xf4\x89\x86\x80\xea\x0e\x24\xae\x13\xe7\xc3\x42\xcc\x1c\x11\x08\xb4\x63\x40\xaa\xa9\xfd\x83\xf3\x6e\x5d\x1e\x4e\xde\x07\xbb\x04\x29\x95\xf0\x70\x9c\x12\xe1\xa9\x58\x28\x7d\x20\x86\x7f\xe9\x94\x28\x35\x6c\xcc\x94\x46\xea\xab\x83\x58\xa8\x83\xb6\xe4\xe9\xcc\xc0\xe3\x70\xc4\x53\x21\x4c\x18\x5c\x8f\x23\x8e\x1a\x6f\x92\x1b\x03\xc8\xdf\x45\x80\xe3\xf9\x10\x71\xe5\x72\x77\x79\xba\x66\x8d\xe6\x31\x21\x2e\xf9\xa0\xf6\xdc\x6f\x0b\x96\xb1\x26\x08\xe2\x04\x0b\x63\xf4\x01\xa6\xa4\x10\x4d\xef\xa0\x27\x38\x9a\x35\xb6\xec\xd0\x6e\xb6\xcf\x42\x26\x81\x48\x57\x9a\x52\x16\x3b\xe7\x04\x4a\x88\x4c\x12\x13\xcb\x08\xb8\x86\xe6\xed\x14\xf2\x15\x71\xf6\x8d\x7e\x33\xc8\x49\x41\x17\xea\xac\x40\xe6\x24\x4b\x0f\xd3\x25\xd8\x0d\xc5\x5f\x4d\x31\x4d\x94\xc0\xa2\x61\x37\x07\xa5\x5c\x1d\x42\x45\x24\xc2\x64\x95\x87\xd7\x0e\x02\x1e\x61\x12\xeb\x6d\xd4\x9c\x3b\x3e\x18\xfe\x70\x71\x75\x33\x3a\x19\x1f\xe4\x71\x3b\x8b\xf1\xb0\x62\xdd\xa5\x92\xa4\x6c\xcc\x9c\xf7\xdd\x95\x3a\x84\xbd\x44\x38\x8e\xf3\xcc\x09\x8d\xfc\xba\xd3\x5e\xc4\xb6\xa7\x62\xad\x03\xbe\x3c\xcc\x47\xfa\x95\xc4\x57\x58\x6e\xe5\xb6\x6f\x0c\x8b\xb6\x72\x4f\x55\xb2\x78\xc6\x68\xc9\x45\xd2\x20\x64\xdd\x54\x6e\xd5\x73\xed\x39\x58\x9f\x04\xd8\x2b\xeb\xe7\x10\x88\x67\x4c\x59\x96\xd8\x55\xa0\x9c\x02\x0f\xb0\x68\x35\x40\x80\x83\x56\x5c\xbb\x42\xbf\x47\x0b\xca\x00\xb3\xd8\xb4\xb6\xb7\xe1\x44\xba\xa4\xe6\x9f\x9e\xdf\x86\x95\x3a\x7e\xbc\xb8\xbd\x0a\x13\x25\xff\xda\x9c\x64\x1f\x8e\xd0\x64\xce\xe7\x73\xf4\x70\x21\xa9\x5e\x0a\xb7\x34\x55\x13\x3d\x2b\x5e\xd4\x6f\x2b\xcd\x29\x71\x3a\xc3\xae\x33\x9c\x3c\x54\xc0\x5e\x24\x37\x99\x99\x6e\x97\xd7\xa4\x4d\xab\xcb\xd0\x5e\x7b\xd2\x0b\xba\x32\xf2\xb7\x79\x0c\x3b\x9f\x00\xd8\xae\xd5\xd7\x6f\x67\xe4\x77\x3e\xaa\x85\x1f\x77\xd0\xde\x50\xfe\xb4\xf5\x00\x08\xe3\xfd\x5b\xe2\x09\x4d\x20\xae\x91\x7a\x89\x38\x15\x9a\x85\x38\x1a\x33\xbf\x54\xae\xbe\x33\x15\x0f\xd8\x64\x2c\xca\x66\x28\x65\x04\xa5\x5c\xc7\xb0\x9c\x38\x1c\xf8\x28\xf0\x22\x8a\x49\xce\xd1\x2a\xcd\xb8\x7b\x63\xe9\x3d\x86\xfb\xc4\x1c\xdb\x38\xb7\xd5\x33\x4d\x14\xc6\xcf\xfe\x82\xf1\x96\x9c\xe4\xc6\x16\xbc\x98\x3c\x10\x86\x1e\x95\x61\x95\x3b\xe5\xc7\xcc\xc3\x17\x29\x95\x94\x7d\x2b\x1d\x88\x80\x26\xa6\x79\x14\x76\x11\x88\xdc\xd5\x22\x30\x35\x23\x37\x33\xf0\x0e\x80\xe2\x80\x7c\xdf\x8c\xf9\xe0\xc9\x3a\xef\x81\x0e\xd9\x00\x0f\xf8\xbe\x0c\x0d\x66\xad\x64\x59\xf2\x75\x49\xa2\x4d\xd0\xbd\x97\xb6\x18\x62\x93\x37\xc3\x0f\x21\x99\x74\x70\xb3\x75\x32\xb5\xbe\x95\x22\xb5\x6b\xe8\xec\x84\xb1\x57\x84\xfe\x6c\x92\xd2\x3a\xd2\x69\x51\xf6\x53\x9e\x2e\xda\x91\xf8\x3c\xb8\xd2\x9b\x12\x42\x33\x70\x0f\xec\x09\xa0\x74\x3d\x95\x75\x48\xd2\x75\x52\xef\x67\x7d\x2f\x3a\xd0\x38\x24\x84\x12\x34\x4d\x56\x92\xa8\xd1\xa5\x22\xd5\x80\x38\xfd\x77\xfa\x77\x96\x0b\x1f\x58\x7c\x45\xe1\x14\x04\x81\x89\x09\x41\x46\x1b\xd2\xa0\xca\x6a\x34\x28\x5c\x9f\x55\x1e\x51\x2f\xa8\x68\x72\x62\xd4\xe2\x09\x89\x17\x2e\x03\xb2\x98\xf6\x5a\x58\xae\x35\xd2\x68\x57\xe8\xbe\x27\x40\x80\x56\xd9\xba\x01\x2a\xd5\x44\xdf\x77\x93\xfa\x55\xb8\xa1\x1b\x09\x0b\x72\xbf\x7c\x82\x62\x22\x31\x4d\x84\x9f\xef\x54\xde\xca\xe0\xe6\xd3\xc5\x8c\xac\xe3\x75\x43\x2b\xd9\xeb\x20\xe9\xef\x3c\xf2\xef\x78\x70\xb2\x2c\xf0\xca\x43\x05\xa9\x53\x90\x10\x09\x97\x33\x65\xee\x5f\xa1\xa8\xb5\xcc\xec\xb3\x68\x55\x64\xfe\x08\xfd\xb0\x72\xd7\x22\x4e\x12\x9f\x12\xed\xbc\xcb\xfb\x16\xaa\xa3\x00\x97\x18\x3a\x3d\x1f\x1e\xdf\x9c\xfe\x3c\x02\xc4\xcb\x2a\xcd\xd0\x23\x15\xca\x42\x18\x33\xf0\x07\x2a\x81\x0a\xbf\x93\x29\xd2\x3f\x1c\xc0\xaf\x00\x07\x27\xb2\xc9\x82\x2a\x7b\x2a\x9f\xe4\x2d\x48\x84\x2b\x8b\x8a\xd2\xe7\x58\x3d\x00\xd7\xb6\xc5\x5b\x55\x41\x9b\xd7\x9c\x8f\x0d\xcc\xe0\x7c\x90\x6d\x21\x55\x5e\xb8\xe2\x69\x41\x55\x9e\x9a\xed\x9b\x35\x95\xc7\xab\x47\x55\x55\x1f\xca\x30\xb5\x10\xf2\x3f\xa9\x90\x85\xcb\xa4\x3e\xa1\x30\xdf\x82\x5d\x40\xaa\xac\xb6\xdd\x41\x0e\x5e\xdb\x47\xaa\xb5\x9d\x6b\x57\x95\xae\x52\x05\xbb\xac\xd5\x6f\xf6\x2d\xb1\x23\x0f\xdb\x6d\x1e\x04\xea\x62\x6e\xe5\xd0\x64\x9f\x15\x3c\x04\x42\x08\xe9\x25\x45\xd1\xcd\x52\x09\xd1\xd7\x48\x26\xab\x0a\xe8\xc3\x98\x55\xeb\x0d\xcd\x3c\xb6\x6d\x20\x75\xa7\x09\x20\x6e\x47\xae\xdc\x2c\x8c\x47\xe4\x8b\x83\x4c\x69\x63\xd4\x15\x4b\x26\x85\x73\x65\xfd\xaf\x35\x56\x00\xa8\x0b\x9b\xe4\x58\x56\x9c\xca\x96\x61\xce\xb5\xe7\xc2\x5c\x99\x4f\x63\x41\x6d\x19\x0f\x86\x1c\xc8\xdd\x67\x6e\x82\x13\x73\x00\x1e\xf2\xf4\x81\x70\x4e\x63\x65\x61\xf9\x29\xf3\xad\x56\xae\x45\x79\x9a\x1a\x19\xa6\x1b\x72\xc8\x14\xc2\x26\xce\xe6\x55\xe3\xd9\x34\xae\x82\x74\x73\xea\x4e\xc6\x62\xc2\x19\xc1\x72\xfe\x7c\xf1\xc5\xe3\x6d\x5d\x86\xcf\x16\x6b\x3c\xde\x49\x0d\x27\x9f\xdc\xb0\x9e\xd1\x5a\x3a\xb3\x42\x29\xf8\x66\x58\x6a\x5e\x3c\xa8\x64\x44\x55\xb8\xba\x3c\x7c\xaf\xb1\xb3\xc2\x42\x42\x1d\xc1\xd7\xb5\x16\x84\x73\x3f\x29\xf3\x20\x2c\x2c\x61\xfa\xa4\x34\x8b\x74\x59\x13\x79\x69\x53\x69\x51\xeb\xd8\x41\xd9\x3b\xfd\x89\xf9\xa0\xa6\x3c\x62\xe1\xb1\xe2\x6c\x7d\xc3\x80\xad\x8a\x76\x35\xe6\x71\x42\x04\xa8\x7c\x5a\xd7\x2f\x68\x75\x4d\x36\xc7\x98\xfd\x98\x3e\x92\x07\xc2\x07\x08\x4b\xb4\x48\xd5\x4d\xce\x88\xdf\x40\x00\x87\x09\x96\xda\xa5\x8d\xd1\x39\x5e\x90\x78\x04\xf7\x81\x87\xdd\x32\x96\x8f\xf1\x2a\x56\xe5\xb0\x40\x5e\x86\xde\x06\xeb\x02\x1f\x33\x1c\x49\xfa\x40\x74\x6c\x07\x00\x83\xd4\x4e\x0c\xf8\xff\x37\xce\xe7\xf9\x9b\x23\x74\xa3\x2e\x2e\x2a\x42\x7a\x3d\x2c\x6c\x1d\x6d\x63\x36\xe3\x69\xb6\x74\x9a\x69\x3a\x01\x95\x58\xfb\x3e\x2b\x7c\x9e\x40\x8c\x75\x78\x46\x38\x56\xd7\x62\x33\xe3\x04\xb6\xd3\x9e\xb9\x02\x42\x7c\x9d\xcf\x40\xea\xb6\x70\x61\x25\x03\x1d\x00\x36\xaa\x4f\x7a\xdf\x9d\xef\xb4\x54\x94\x4c\x80\x52\xe6\x4c\xd6\x00\x6c\xb1\xa1\xa8\xf0\xcc\x7c\x6b\x12\x57\xa3\x84\xf2\xd7\xea\x22\x9f\x5a\x70\x90\xea\xaa\xb9\x35\x7b\xdf\x3e\xdd\xaa\x40\xe5\x65\xc6\x97\x29\xc0\x6c\x93\x95\x85\x26\x2d\x30\x04\xcf\x97\xe9\x32\xd3\x88\x63\xea\x07\x99\x2a\x09\xa2\x42\x7e\xc6\x32\x9a\x2b\x7d\x20\x87\xd0\xee\x22\x0d\x2c\x10\xa4\x4f\x6b\x7f\x54\xcc\xe0\xd8\x7f\x7b\x8d\x6d\xdd\xda\xb4\xd4\x99\x64\x16\x3f\x00\xff\x4a\x92\xbc\x8d\x69\x45\x21\xb7\xea\xb5\x0e\x6a\xc7\xec\x3c\xd0\xba\x85\x7e\x78\xa2\x14\x68\xca\x50\xfe\x43\x64\x3c\xc8\x95\x47\x3a\xe3\x74\x23\x35\xd0\x78\x20\xc8\x03\x61\x32\x37\x28\x16\x78\x89\xa8\x92\xdb\xea\xe6\xe1\x33\x32\x40\x8f\xb6\x5f\x22\xc2\x28\xe3\xd4\x9e\x30\xb0\x02\x1a\xb6\x2f\x54\xc3\xdf\xeb\x88\x80\xc6\x44\x45\xd8\x2b\x9b\x64\xca\x9a\x47\x32\xc3\x2e\x6e\x0b\x3b\x9c\x50\x76\xaf\x5e\xa6\xd3\xb9\xad\xb7\x97\x2b\xf9\x96\x72\x0b\x2a\x0d\xf6\x74\x2d\xe7\x6d\xb1\xcb\xf5\x95\x0b\xd7\x1d\x05\xca\x66\x1e\x1c\xbe\xda\x08\x6a\x93\x96\x5d\xf9\x64\xbb\xac\xf2\xca\x47\xad\x3e\xb1\xc9\xb3\x0d\x08\xe2\x8d\x6b\x5a\x06\xb8\x09\x83\x13\x30\x1a\x89\x9f\xa8\x60\x54\x69\xc8\xaf\xa1\xba\x5c\xbf\xd1\x50\xfe\xcb\xfd\xa5\x8b\xe1\xe8\xa5\xf9\x2f\x94\xf2\x31\xd3\x9f\x0f\x5c\xde\xbc\xfa\x41\x9e\xe2\x52\x93\x14\xea\xf8\xc9\x16\xc1\xdc\x4c\xaf\xbc\x19\x5e\xff\x74\x77\x35\xba\xbe\xb8\xbd\x3a\x0e\x94\xcb\xe3\xb3\xdb\xeb\x9b\xd1\x55\xe5\x77\xa3\xff\x3b\x3a\xbe\xbd\x39\xbd\x38\xbf\xfb\xcb\xed\xe8\xb6\xe6\x2b\x3b\xc0\xd9\xf0\x87\xd1\x59\xa3\x92\x5a\x4d\x43\x5d\x59\x51\x5c\x68\xcb\x94\x67\xef\xdb\x4b\x75\xb2\x32\x5b\x44\xff\x05\xc6\xeb\xa5\x5e\xd7\xc3\x81\xfd\x4b\x17\x8a\x3c\x54\x47\xd9\xba\x2f\xf2\x53\x30\x66\xce\xbf\xe4\xe4\xb6\xc4\x33\x61\x1b\x4e\x04\xd4\x7e\x40\xc3\xa5\x69\x2a\x91\x86\x2f\x95\x58\xdc\xe7\x94\x5a\xb7\x22\xec\x2d\x94\xd1\x16\xa6\xc5\x42\x61\x99\xc3\x01\xcd\x9c\x80\x04\xe3\x5e\x89\x51\x5e\xc2\xb5\x54\xeb\xd3\x0c\x5a\xd8\x1f\xe8\x49\xa3\x17\x47\x68\xba\x20\x6b\x66\xc5\xf0\x82\x46\xfa\x83\x42\xe2\x88\x49\x29\x59\x10\x26\x8b\x23\x06\xdb\x1a\x8e\x3c\x27\xe8\xa7\x3f\xe5\x44\x81\x51\x6c\x8c\xcc\xac\x54\xfa\xc9\x76\xbb\xcd\xaa\x2a\x79\x54\xc8\xa6\xad\x52\x75\xc4\xfd\x9d\xeb\x0b\xb6\x91\xb0\xbc\xc1\xe2\xbe\xa2\xda\x6c\xa5\xfc\x31\xf3\xdf\xf2\x8d\xf5\x25\x6e\xab\xfd\x67\x76\x5d\xef\x60\x03\x37\x7b\x67\x6d\x9e\xd4\x9a\x57\xda\x19\x27\x85\x82\x2b\xad\xdf\x17\x14\x6c\x69\x2f\x95\x21\xc7\x93\x46\x90\x4f\x8b\x29\x33\x99\xfc\xc4\x95\x90\xb1\x35\x0d\x75\xa1\x7a\x93\xfd\x83\x27\xe9\x43\x90\x5e\xb6\xd0\x85\xdf\x2b\x35\x31\xcf\xde\xdb\x86\x03\xc3\xa6\x74\xad\xb5\x31\xbb\xf9\x50\xb7\xbf\x72\x0f\xda\xda\x73\xc5\xc9\xac\x83\x50\x6d\xe0\x87\xf5\x46\x77\x8e\xd8\x36\x2a\xd8\x09\xec\xe9\x04\xbc\xec\x79\x69\x41\x5d\xc1\x16\x0c\x35\xdf\xe8\x1e\xe4\x01\x67\xad\x9a\xb9\x4b\xf3\xbd\xbd\x47\xd1\x7b\xed\x09\x78\xef\xdd\x13\xab\x65\xd0\xb4\xbc\x79\xa3\xbd\xb5\xd9\xcb\x92\x3a\x95\xbd\x43\x37\x57\xdd\xda\x92\xf0\x0c\x4d\x3e\x2b\x27\xf1\xd4\xf5\x74\xf6\xad\xa1\x7d\x7b\xf1\x97\xd7\xca\x32\x74\x9b\xc2\x3a\xa0\x16\x05\xc0\x8c\x8f\x80\xa1\xf1\xc8\x1c\x7a\x35\xb6\x01\xbd\x2f\x09\xd7\xe5\x5f\x20\x1a\xef\x22\xbe\xc6\x5b\xb7\x4e\x36\xe6\x47\x66\xeb\x12\x25\x6a\xbc\x32\xb6\x77\xc7\x51\xc8\x66\x41\xb8\x06\x2d\x3c\x74\x25\xa0\xf3\xa2\x2e\xa2\x86\x79\xfb\x48\x7c\xd5\xac\x02\x6b\xca\x2e\x66\xe5\xa6\xac\x63\xbc\xd7\xc6\x6e\x2d\x62\xde\xc3\xaa\x15\x31\x98\x85\x1a\x4d\xac\xe7\xb2\xa7\xe5\xb2\x5d\xc0\x3d\x42\xe2\xba\xdf\x66\xc7\x5a\x21\xf2\x86\xb1\x29\x75\x4a\xc3\xb5\x72\x3a\xac\x7d\xd3\x9c\x0a\xde\x38\xe5\x9d\x45\x1c\x76\xa1\xfa\xd6\x41\x11\x7c\xf5\xce\x4c\xdc\xd5\x29\x97\xa9\xc1\xa0\x3e\x99\xe2\x5c\xe3\xb9\x2c\x95\x1b\x68\x4b\xd2\x8e\x74\xee\x35\xe0\x07\x03\x7e\x32\x21\x0b\xd3\x30\x96\x91\x47\x7d\xda\xf6\x23\xf8\x51\xc1\x87\x2f\x1c\xfd\x08\x0a\xd5\xec\xac\x9e\xfc\xdd\x7a\xf7\x78\xb5\xe5\xbd\xbb\x1a\xef\x85\x8e\xb4\xbe\x09\x66\x75\xe5\xf3\xfa\xba\x5d\xdd\x4a\x69\x07\x8b\xb8\xbe\x8c\x36\x34\xdb\xc0\xa2\xa6\x86\x36\xe4\xf4\xc7\xfb\x52\x49\xbb\x8c\x8a\x0f\x89\x7b\xe1\x32\xda\x05\x62\xf6\xa7\x96\xf6\xda\x75\xdb\xdf\xb4\x87\x0a\x42\x5b\xd4\xd0\x76\xa8\x3c\x28\x99\xd5\x4d\xe4\x43\x26\x04\x8d\x13\x90\x48\xd6\x71\xad\x0e\x55\x1b\x7f\x4b\x11\x0e\x14\xb8\xcc\x0a\x73\x31\x50\x79\x70\x13\x87\xad\x48\xea\x85\xe2\xe8\x81\x30\xb9\x13\x7d\x01\x86\xa8\x40\x2d\xb6\x33\xfa\x75\x2d\x9c\xd3\x93\x5c\x4c\xb8\xb2\x89\x5e\xb4\x40\x72\xac\x6e\x29\xdb\x08\xc9\xb4\x3f\xaa\x73\x74\xaa\xa9\xb5\xdb\x22\xf8\x69\x79\x5d\xd6\x40\x13\xcc\x6a\x43\x51\xad\x42\xd8\x33\x8d\xa0\xbf\x66\xa7\x44\x9a\xe0\x66\x66\x31\x24\xbc\x7b\xb5\xcb\x75\xfb\xeb\xe2\x9e\xeb\x77\xce\xb1\x28\xbe\x72\xed\x96\x6f\x80\xbf\x0f\x86\xf9\x44\xe4\x09\x96\x78\x27\x05\x65\x3b\xc0\x21\x81\x90\x5b\x9e\xac\x6d\xcf\x72\xad\x0b\x8f\x65\x3c\xc9\x0d\x1b\x8c\xd4\x85\x76\xe4\x45\xc1\x01\xa5\x1c\xac\xa8\x26\xa6\x46\x0e\x74\x6f\x28\xf3\x94\xa4\x1a\x6a\x36\x42\xd3\x0b\xc9\xb3\x08\x52\x93\xd5\x89\xab\xde\x59\x53\x93\x01\x64\xa7\x71\xd6\x8b\x20\xd3\xc6\xa6\xe4\x41\x70\xbd\xf2\x5e\xaf\xe7\x9f\x6d\x7d\x00\x61\xf1\xc2\x27\x73\x05\x04\xd2\x3b\x98\x40\x9f\xd0\xb1\xa9\x81\x6f\xca\x74\x38\x0e\x84\x7c\x2b\xc9\x29\x81\x44\xe0\xc4\x65\x0f\x84\x92\xce\xf8\x7c\xd6\x32\x96\xba\x56\x4f\x5a\x9a\xfd\x9e\x55\x9a\x7b\x1d\xf2\xbc\x02\x2f\xdc\xe4\xd5\x78\xc4\x70\x5c\x1a\x7b\x1a\xec\xaa\x85\x1e\xa8\xce\x4f\xc6\xdb\x0d\x8d\x72\x7c\xde\x6e\xe7\x55\xd5\xa4\x6a\x74\x8d\x12\x18\x99\x20\x5c\x67\x95\x3b\x24\x70\x45\x69\xad\xda\x20\x48\x65\xc7\xc0\xa6\xa0\x64\xa9\x73\x61\xb5\xa6\xa1\x3d\x2b\xe8\x3b\x68\xdc\x8f\x25\x39\xb2\x89\x1f\xef\xd0\x7f\x43\xa9\xac\xff\xaa\x2b\x99\x3a\x23\xfc\x2e\xce\x82\x88\xe2\x3a\xa2\x2e\xd5\x43\x27\x99\x5c\x55\x27\xd0\x04\x06\x4f\x82\xa3\xfb\x2e\x49\x45\xea\xf7\x35\xc3\xae\x3f\x81\x9e\x8b\x2d\xbc\x08\x6a\x52\x76\x48\x21\x65\xc7\x04\x60\xfc\xf7\xeb\x60\x09\x83\x4a\x6a\x9e\xb7\xc0\xc4\x8d\x86\x8a\xe6\x23\xf4\x51\x57\xc3\x80\x4b\x4d\xbf\x22\x4a\xb3\x24\x1e\x33\xf2\x55\x99\xfb\x01\x74\xa2\xa2\x82\x81\x81\xf0\x98\x37\x55\x4b\x82\x42\xb1\xba\xad\x6e\x98\x17\xcf\xaf\x2a\xef\x69\x79\xca\xd5\x4c\xb6\x95\x2e\xbf\x27\x7d\x3b\x8f\x6d\x8f\xfa\x01\x72\x93\x2c\xb0\x45\x42\x1e\x08\xc7\x33\x62\xfa\x7a\x7a\xd5\x2a\xf0\x06\x6d\x3c\x2f\x4b\xd1\xdf\xd7\xdd\x8b\xb6\x14\x54\x7e\x5a\x36\x36\x9d\x7c\xd7\xea\x45\xed\x9d\xea\xed\x65\xda\x4d\xba\x3c\xd4\xa5\xc1\x99\x6b\xb0\x6b\x95\x9e\x28\xc1\x42\xd0\xe9\xca\xeb\x9c\x6b\xb5\x09\x1d\xd7\x75\x45\x51\xc2\xe2\x39\x95\xba\x46\x00\x46\xdb\x0d\xd2\x69\x7b\xd0\x81\xb1\x9f\x6d\x04\x9c\xc6\x3e\x8a\x1f\xaa\x42\x96\x50\x8f\x2d\x0b\x57\x6e\x8b\x45\x30\x94\x99\x88\xfc\xee\x08\xb3\x20\xbf\xcd\x20\x53\x8d\x28\xda\xb5\xf2\xa1\xb8\xf7\x27\x24\x21\x7b\xd2\xd0\xa9\xcc\x08\x8d\x6b\x9d\xe7\x77\x3e\xdb\xfe\x6f\x47\xcf\x06\x71\xa9\x1a\xdc\xed\x0e\xf6\xfb\x85\xa3\x1b\x35\xd4\x7d\x22\x6d\xbc\x3b\x6b\x79\x71\xa3\x73\x55\x27\x1c\xb7\x58\xec\x9d\x85\x34\x9f\x78\x42\x75\x7b\x7d\x4d\xa4\xb0\x8a\xab\xc7\xe9\xda\x67\x62\xce\xe9\xa1\x85\x60\xe5\x80\xa6\x0e\x1b\xbe\x27\xc1\x36\x43\xdd\x95\xa9\x49\xf2\x74\xe2\x70\xfd\x76\x75\xe1\xb7\x9c\xde\x0d\x3c\xa2\x66\x8c\x5d\xdc\xfe\x4f\xab\x9a\x95\x16\xa6\xa5\x71\x71\x5d\x2e\x77\xd1\x3d\x51\x8c\xa7\xec\x8e\x7c\x55\x36\xa7\xd8\x14\x47\x71\x2b\x88\x40\xc3\x2f\xd7\x48\xac\x98\xc4\x5f\x3f\xa0\xf1\xc1\x67\x5d\xd3\x13\xfd\x98\x66\x5c\xa0\x13\xbc\x3a\x4c\xa7\x87\x8b\x94\xc9\x39\xfa\x0c\xff\x6b\x3e\x7a\x24\xe4\x1e\xfd\x95\x60\x3e\x3e\x18\x33\x48\x56\x35\x8d\xc3\x5c\xdd\x8d\x39\x86\xb0\x9a\x30\xe5\x42\x7f\xf7\x47\x5b\x2f\x54\xbd\xe6\xfb\xf7\xbf\xfb\x23\xfa\x0d\xfc\xbf\xff\x1f\xfd\x66\x7c\x50\x73\x2f\x75\xcb\x81\xcc\x0b\xba\x56\x8e\x76\x4f\xa3\xfb\x74\x3a\xbd\x93\x74\x41\x74\xb1\x80\x3b\xcc\x6b\x5b\x0b\x75\x44\x84\x52\x53\xc3\x40\x57\x61\xcb\xd3\xb4\xcc\x4b\x75\xf8\xd1\x2a\x61\xae\x23\xb5\xce\x9a\x62\x61\xee\x3e\x15\xf0\x14\x89\x51\x3a\x9d\x76\xf1\x01\xda\xac\x90\x72\x85\xa4\x3c\x90\xed\x57\xe4\x70\x46\x9d\xef\x8a\x48\xd7\x55\x3c\x2d\xfb\x48\xde\x98\x55\x0c\x13\x7c\x52\x8b\xf8\x3a\xe5\x5b\x89\xf0\x7b\x52\xf2\x97\x75\x72\x80\xdb\xe2\x02\x7e\x61\x17\x88\x90\xa5\xdc\xc1\xaa\x75\x40\xc3\x64\xf2\x8f\xd9\xcd\xc5\xc9\xc5\x77\xf7\x58\xf2\x74\x86\xd9\xbb\x0f\x68\x18\xc7\xa6\xc9\x06\x32\x4e\x3f\xc5\x3c\x73\xc2\xc9\x11\xf2\x2b\xe6\x33\xb5\x70\x95\x1e\x6d\x5f\x1f\xa6\x9c\x44\x55\x86\x6b\xf5\x61\x57\xcb\x77\xe2\x1e\xa9\x81\x1e\x05\x15\x14\xdc\x0b\xf2\x6c\x67\x98\xeb\x3d\x59\x99\x6e\x72\xc5\xf9\x6e\xd2\x37\xe4\x7a\x49\x22\x65\xfd\xc2\xd0\x29\x8f\x09\x2c\x8f\xee\x51\x4c\x85\xb4\xc1\xd7\xaa\x43\x75\x83\xc5\xfd\x6e\x1d\x24\x5b\xe7\xb2\xd3\x38\xcf\xfd\xd4\xab\x58\x6e\x16\x69\x84\x9f\xc4\xe2\xbe\x0e\x3a\xd1\xb9\x58\xac\x5a\x0a\x8b\x2a\x6a\xa2\xcf\x8c\xec\xa5\xb8\x98\x72\xfe\xa0\x50\x79\xe8\xef\x05\x5e\xea\x96\x02\x20\x18\x69\x42\x62\xbf\xf0\x42\x15\xfd\xeb\x36\x5a\x43\xc8\x3d\xff\x06\x07\xd8\xbc\x52\xf7\x62\x88\x29\x61\xb6\xd2\x0c\xa0\x04\x2d\x16\xf7\xc2\x15\x54\x40\x62\x81\x93\x64\x80\x38\xc9\xa0\x27\xc4\x00\x09\x92\x4c\x0f\x6d\xd6\x4e\x8c\x92\x74\x46\x23\x9c\xa0\x49\x92\x46\xf7\x62\xcc\x94\xe4\x63\x33\x2d\xb0\x97\x3c\x8d\x88\x10\xde\x55\x91\x87\x0d\x97\x3c\x8d\xb3\x48\xd7\x7c\xd5\x35\xd7\xa9\x90\x34\x2a\x14\xfa\x54\x27\x19\x5a\x20\x45\x18\x14\x63\x28\xe5\xb0\xd0\xcd\xfc\x38\x25\xe0\xbc\x91\x99\x6d\xcb\x01\x59\x09\x38\xa1\xff\x02\x78\xc0\x1c\x3f\xd0\x94\xd7\x71\xef\x0e\x80\x60\x76\x7b\xee\x64\x78\x1a\xd6\xf0\xf3\xb1\x79\x0c\xce\x50\x13\xc7\x5c\x85\xec\xec\xb8\xc1\xb1\xb9\x4b\x1e\xb0\x4c\x91\xd7\x45\xb5\x09\x1a\xfa\x27\x36\x1c\xb8\x67\x78\x21\x20\xb9\x06\x25\xb4\x8e\xa7\x8f\x75\xa9\x51\x93\x13\xe9\x39\x8e\x60\x74\x5b\x8c\xd1\x64\x77\x2b\xd1\xf6\xa0\x98\xc4\x2e\x8f\x5a\x7b\x25\xfe\x06\xae\xfe\x27\x16\x68\x99\x64\x33\xca\x0e\x5d\x6e\x4b\x8c\x25\x1e\x33\x28\x04\xa2\x5e\x52\x28\x26\x59\xe6\xa8\x3d\xae\xf9\xb9\x1b\xe1\xd8\xb1\xf4\xa7\x5d\xe4\x2e\x4c\x1e\xf2\xad\x6d\x81\xb6\x31\x74\x9c\x57\x85\x99\x4d\x93\x5f\xf5\xed\x03\xcd\x0b\xda\x78\x2f\xaa\xdd\xdb\x8d\xad\xeb\x02\x55\x25\xfc\x05\x9d\x6a\x26\x03\xda\x20\xc4\x66\xfa\x57\xd4\x51\xf4\x22\x88\xd6\xa6\x8d\xbc\xc4\x52\xf7\x20\x20\x8b\x54\xea\x32\x0e\xba\xa2\x82\x29\xb4\x60\x0a\x35\x4c\x92\x74\x02\xf7\x0a\x14\x5b\x80\x79\x07\x95\xab\xcc\xbc\x49\x8c\xbe\xf3\xae\x09\x07\x33\x79\x57\x17\x29\xde\x1d\xac\xb6\x98\xa9\x55\x0b\xae\x0d\xb3\xaf\x8f\xd0\x65\xee\x26\x29\xce\x6a\x8a\x95\xe4\xae\x6b\xc4\xd9\x0d\x8a\x1b\xec\xfe\x0e\xa0\xb8\x85\x69\xd4\x14\x66\x48\x77\xd1\x32\xb1\x79\x52\x67\x69\x7b\xfb\x47\x03\xef\xb4\xfe\x11\x6c\x8e\x65\xb3\x55\xd5\x16\xed\x17\xcc\xb8\x90\xbd\xff\xb2\x30\xe3\x02\x31\xfb\x0c\x33\x2e\x90\xba\xbf\x30\xe3\x0a\x42\x5b\xc0\x8c\xb5\x9b\xf8\x4e\x31\x75\x3b\xa1\xb0\xe4\xa9\x4c\x27\xd9\xf4\x1a\x6e\x93\x36\x95\x04\xb5\x70\xb6\x7a\x8e\xc9\xee\x00\x6a\xb5\x0e\xd4\x4d\x11\xf3\xd1\xc8\x85\x29\xb7\x44\x23\x07\x22\xad\x47\x23\x3b\x34\x72\x79\x5d\xf6\x11\x8d\x5c\xd8\xf3\x76\x68\xe4\xaa\x2d\xdf\xc0\xf7\x1e\x0c\xf3\x66\xd0\xc8\x85\x15\xdd\x67\x34\x72\x81\xd4\xdd\xa1\x91\xab\x77\xb6\x1b\x1a\xb9\xf2\xfa\xaf\xe7\x9f\x6d\xb1\x62\x50\xac\xe6\x99\xd1\xc8\xc1\x04\x7a\x34\xf2\x96\xe5\xe5\x43\x16\x34\x14\x40\xb5\x54\x03\x70\x2d\xca\xba\x06\x3c\x32\xa8\xb4\x3b\xe0\xa8\xa7\x8d\x09\x82\x17\xaa\xad\xd6\x3d\x0c\xd6\x41\x98\xfa\x7d\xea\xfa\xb3\x18\x51\xaf\x05\x63\x5f\x56\x61\xdb\x84\xf7\xc2\x22\x3b\xef\x15\x6c\x5c\x1d\xcb\x55\x54\x9d\xda\x82\x01\x4d\xa9\xb7\x4d\xeb\x6d\xd5\x77\x65\xd3\x85\xd4\x76\x33\xec\x37\xfe\x7f\x6b\x17\x64\xdb\xa2\xfc\xd1\x32\xdb\x04\xd5\x39\xdb\xec\xb1\x05\x59\xa4\x7c\x5d\xd8\xac\xc6\x9c\x4d\x39\x9e\xad\x43\x92\xb6\x5d\xbd\x6d\x57\xcd\xd6\xbe\xeb\xe6\xdf\xb8\xb1\x4f\x35\x1a\x5c\xb6\x6b\x81\xef\x01\x07\x9d\xb4\x32\xc6\xe2\x72\xf9\x37\x8c\xa2\xd4\x00\xe6\xcb\x2f\x04\xf7\xaa\x20\xfc\xd0\x43\xc0\x87\x7e\xcd\x32\x05\xc1\xba\x5b\x05\x6d\x8b\x65\xcf\x78\x6d\x6c\xba\x85\x8c\x1d\xea\xaa\xa9\x4a\xfb\xf3\x13\xfd\x8b\x9c\x36\x59\x55\xe0\xa8\xda\x99\xd4\xba\x97\x6c\x17\xc7\x30\xfd\x97\xdb\xe8\x29\x4d\x08\xc2\x51\x44\x04\x34\x23\x46\x06\xbb\xa0\xab\xc3\x65\x3c\xd9\x66\x57\x29\x9b\xc1\xbc\x95\x32\xe9\x55\xaf\x77\xcc\xa3\xef\x8c\x39\x4f\xb3\xd9\xdc\x5a\x59\xb6\xc1\x59\xd5\x5e\x7e\x29\x57\x43\x7d\x65\x01\x81\x42\xcb\x93\x22\x13\x74\x8f\x98\xda\x25\x79\xe6\xa8\x69\xd5\x3c\x3a\x70\x47\x80\x79\xc9\x8f\xbf\xf5\x63\x6b\xad\x04\x32\x5c\xc6\x6c\x18\xa0\x63\x6c\x7f\xac\xc9\x2a\x8f\xb2\xeb\xab\xdd\x67\x32\xe8\xe8\x69\xac\x17\x68\xa1\xa1\xfe\x02\x35\x04\x1e\x32\xf1\x54\x1b\x33\x05\x80\x00\x89\x0f\x71\xb4\x8a\x12\x1a\x79\x2a\xe9\x8c\xe3\xe5\xbc\x89\x13\x7b\xb8\xfa\x4b\xc1\xd5\x5b\x56\x46\x6e\x22\xed\x8b\x5f\x5b\xf8\x55\xc3\xe8\xcb\xec\xd8\x23\xe8\x3b\xb0\xe4\x76\xf4\xec\x9c\x13\x5f\x13\xa0\xbf\x9e\xf3\x5e\x18\x3c\x5d\x26\xec\x25\x61\xfc\x15\xf7\xc5\x66\xab\xfb\xb2\xe0\xfd\x56\xd3\xa8\x85\xc8\xb5\xc0\xed\x07\x8d\x6c\xdc\xbd\xbf\x06\xc5\x5f\xbf\x4a\x7b\xc2\x83\xbb\xc4\x47\xd5\x49\x9b\xf5\x18\xa9\x2e\xaa\x62\x37\xb8\x94\xdb\xa8\xd7\x05\x99\x72\x64\x6f\x08\x9b\x1a\x7a\x05\xb7\xe7\x69\x02\xad\x74\x83\xd5\x72\x2f\x70\xc8\x0b\xb7\x40\x76\x33\xa0\x6f\x22\xa8\xae\x79\x91\x84\x26\x70\x94\xdb\xc4\xb7\x01\x90\x5a\x63\x0f\x75\x04\x49\xf9\x8b\xba\x1d\x50\x6a\x4b\xfb\xa6\x1b\x58\xaa\xa9\x0f\x66\x71\xbf\x37\x08\xeb\x95\x0a\x52\xf4\x41\x61\x17\x14\xae\x5e\x9b\x7d\x0c\x0c\x97\x3b\xcb\xb5\x0c\x0e\xd7\x6d\xff\x2e\x38\x69\x87\x41\xe2\x17\x0e\xbd\x36\x46\x5d\x3d\x06\x7b\xd9\x58\x76\x53\x18\x7b\x3d\x9b\x55\xc6\xe5\xea\xf7\xb4\x53\x78\x98\x35\x87\x86\xed\x5b\xb6\x8d\xe1\x39\xdc\xfd\x93\xc6\xf1\x9c\x9f\xd1\x7b\xa2\x65\x2c\x2f\x4f\x0c\xe8\xe3\x79\x4f\x1a\xcf\xab\x58\xe8\xf5\x31\xbd\x40\x41\x78\xd6\x40\x8c\x7d\xf3\x73\x04\x63\xd6\x29\x55\xd9\xe4\xee\xc9\xcf\x51\xe5\x9c\xdb\x1e\xa7\x2f\x6e\x6f\xf5\xe5\xc7\x15\xd3\x4c\x48\xac\x3b\x8f\xcb\x14\xa5\xd0\x53\x2c\x67\x01\x46\x34\xb3\xe6\xdd\xa3\x31\x34\xe4\xa0\xb1\x06\x64\x2e\x31\xd4\x28\x71\x77\xa8\x46\xe9\x8d\x19\xec\x6f\x92\x10\x6e\x75\x76\x8e\xbe\x13\x14\xba\x7a\xe7\x7a\x3c\x47\x71\x4a\x04\xfb\x56\xea\x9e\x10\x98\xad\xd0\x3d\x4b\x1f\x13\x12\xcf\x60\x87\x8a\xc4\x1c\x22\x4a\x06\x88\x4a\xf7\x18\x27\x38\x9a\x2b\x71\x39\x56\xb4\x83\x5b\x5b\x5f\xf6\xc4\x3c\xcb\x4d\xc6\xb4\x67\x32\x88\x77\x47\x08\x9d\x32\x34\xc5\xca\x28\x16\xd9\x24\x1f\x3f\x4e\xa1\xd1\xba\xba\xfd\xfd\x89\xe7\x83\x3c\x59\x20\xae\x32\xf0\x56\xa3\xbd\x2a\x06\x18\x26\x14\x6f\xe5\x18\x7f\xc0\x25\x1c\x7a\x07\x69\xf8\x39\x13\x52\xf7\x2e\x83\x0e\xb6\x86\x5e\x03\x6a\x76\xe9\xba\x50\xdd\x46\xa7\xbe\xb2\x34\xae\xed\xf2\x5c\x98\x4a\x57\x5a\xf2\x28\x86\x29\xaa\x63\x4c\x22\x18\x57\x2f\x77\x9c\x3e\x32\x21\x39\xc1\x0b\x20\x44\x98\x16\x8c\x53\x1d\xaf\xd0\xce\x06\xca\xf5\x0d\xdc\x65\x8b\xcf\x28\xbb\x57\xbb\x9b\x27\x28\xa7\x90\xfd\xa9\xde\x5c\xb1\x69\x3f\x50\x86\xf9\x56\x5d\x9e\x74\x05\xf5\x8d\x4c\xf9\xc9\xaa\x2e\x83\x5b\xe2\x75\xe9\xda\x5d\x0c\x77\x41\x17\xea\x5e\x54\xaf\x43\x20\xea\x74\x39\x34\x8c\x24\x86\xa6\xeb\x73\x92\x2c\xbd\xe2\x46\x4b\xcc\xa5\xeb\x29\x20\x56\x42\x92\x05\x74\x66\xca\x98\x6e\xcd\xae\x6d\x81\x47\x93\xe6\x67\xfc\x42\xf9\xe0\x47\x63\x76\x2a\xbf\x15\xea\x7c\xa5\x6c\x96\xac\x10\x8e\x1f\xa8\xc8\x93\xc5\xa3\x94\x89\x6c\x41\xb8\x79\x05\x15\xba\x94\xbf\x6e\x8d\x8c\xb0\xe5\x15\x45\x9b\x52\xbc\x6c\xa5\x3d\x73\x37\xcc\xd0\x84\x4c\xd5\xa5\xbb\xc4\x5c\x58\x1f\x44\x85\xff\xc0\x6c\x6e\xac\xd6\xea\xc5\xce\xe4\xcf\xfe\xb1\x43\x8b\xfc\x84\x62\xa3\xd3\xbe\x2f\x9e\x4f\xb3\xea\x0d\x67\x73\x52\x9a\x14\x6a\xbe\x98\xcc\x2a\x9c\x94\xda\x04\x14\x4d\x3d\xdb\xad\x40\x77\xdb\x57\xef\xb1\x0a\x8d\x26\xae\x93\xb7\xa8\x30\x41\x43\xb5\x76\x01\xf8\x67\xd3\x74\xcc\x14\x12\x4b\x1a\x19\xdd\x29\xaf\x07\xab\x9f\xae\xdf\xda\xb6\x85\x3a\xeb\xb6\x57\x44\x38\x29\xef\x70\xfd\x5a\x5e\xeb\xdf\x37\xcb\x3e\x73\xdc\xf4\xd8\x8d\x30\x88\x28\x4d\x92\x2e\xf9\xe0\x85\x99\x1f\xe7\x8f\x37\x53\x94\xbf\x47\x6d\x80\xdd\x0b\x38\x35\x3a\x87\x1d\x27\x46\xb3\x10\xd2\xec\x92\xff\x23\x2d\x43\x57\x88\x65\x8b\x09\xe1\x63\x96\x4e\xa1\x4c\x40\x52\x67\x36\x2e\x79\xba\xa0\x5d\x12\x93\x2e\x60\x9b\xaf\x6c\xb0\x67\x8d\x37\xcb\x86\x84\xd4\x29\x32\xec\x65\xde\xa8\xbb\xc3\x31\xad\x67\x34\x9c\xa1\x05\x5e\x6e\xb4\xe0\xa5\x0e\xc9\xa5\x95\x5e\x68\xd3\xd5\xac\x1e\x64\x43\x13\x48\xbe\x87\x45\x7e\xc4\xab\x1c\x2c\xd2\xe5\x38\x5d\x6b\x5d\x84\x88\xbc\xc3\xac\xe1\x32\xef\xc4\xb8\x60\x99\xde\x2f\xbd\x0a\x6d\x4e\xd0\x71\x15\x1b\x76\x3e\x4b\x76\xce\x4f\xa9\x64\xfb\xc7\xde\xd7\xaf\xbb\xdc\x86\xe1\x61\xf0\x46\x44\x40\x4e\xf3\x52\x7d\x0e\x38\x67\xe7\x6b\x54\x18\x07\x69\x5b\xce\xfa\xca\x2f\xab\x47\x7d\x86\x35\x33\x6c\xdd\x6a\xb1\xb6\xc4\x9f\x75\xeb\x8e\x60\xdf\x58\xd1\x0c\xc1\x3b\xef\x5d\x3a\xae\xac\xb7\x21\xa6\x4a\x77\xd1\x6a\x65\x3a\x9d\x26\x29\x56\x96\x9a\x89\x5d\x4f\x69\x42\xc4\x11\x3a\xad\xb0\x27\xfc\x86\x45\x3a\xbd\x15\x22\x21\x56\xdf\xc9\x38\x35\xa8\x0c\xc2\x89\xd3\x6a\x10\x35\xc5\x72\x73\x97\x03\x27\x8a\x66\x60\x60\xd0\xe4\xe7\xca\xc4\x9b\xeb\x01\xa8\x30\x8d\xd9\xa5\x22\x09\x6c\x3b\x2a\xb5\x2f\x22\x26\x4b\xc2\x62\xf7\x40\xaa\xdb\xff\xe1\x48\xf7\x66\xcc\xa9\xaa\xd9\xd2\x5d\x74\xc3\x6a\x1f\xa3\xb7\x6f\x2d\xf4\x40\xfd\xc6\xff\x6f\x91\xc2\x9b\x70\xf4\xce\xd4\x39\xbd\xbc\xbb\x73\xff\x23\x3c\x6a\x9d\x49\x18\x4d\x39\x01\x7f\xe3\xc2\xe1\x02\x59\x4c\xb8\x90\x69\x0a\x37\xd4\xf5\xc9\x4f\xef\x6f\x4f\x11\x91\x11\xd4\x0f\x1d\xb3\x48\x3c\x0c\x94\x42\xfb\xcf\x8c\x48\xf5\x71\x5d\xf1\x98\x05\x61\x02\x24\x01\x6d\x5b\x47\xda\x2e\x8c\xfa\xef\x49\xf8\x7c\x03\xcb\x7b\x6d\x5a\x75\xa1\x25\xe0\x5d\x5b\x18\x03\xd8\x14\xb2\xb1\x83\xfe\x74\xc1\x7e\xa4\x69\x42\x30\x1b\x55\x55\xed\xda\x20\x1a\xcc\xfe\x91\xb1\x8e\x6a\xd2\x71\xfe\x90\x47\x45\x8d\x16\xb6\x58\x62\x4e\x45\xb7\xe1\xed\x33\x95\xa3\xaf\x13\x22\x79\x5b\xf3\x89\x5e\x29\x94\x17\x38\x43\x92\x13\x02\x22\xc4\xf1\x93\xb9\xeb\xe1\x96\xf7\x56\xc3\x7b\xe8\x68\xcc\x3e\x5b\xff\x67\xfe\xa9\xc8\xbb\xb2\x2e\x26\x50\x74\x25\x03\x9b\x29\x1c\x05\x86\x8d\xa9\x70\x1f\x40\x2e\xbe\xc8\x12\xa9\x4b\xfa\x4c\x29\xc3\x89\x23\x54\x7f\x53\x25\x25\x38\x66\xd1\x1c\xfa\x46\x6d\x13\xa1\x9d\xde\x91\xa4\x8b\xee\x78\x3a\x1d\x25\x42\xf1\x77\x74\x5f\x73\x3a\x7f\x6b\x4b\x81\x75\xd8\xa0\x7c\x32\xa0\xb9\xd9\x02\x31\xda\x2a\xd1\x7e\xba\x44\x12\x9d\xcd\x0f\x4e\xb6\x22\x38\x40\x83\x29\xd5\x2e\x1a\xdd\xda\xb4\x41\x93\x3c\x4d\x90\x75\xcb\x4d\xe0\x2d\x08\xcb\x31\xe3\x19\x83\x8c\x6a\xe7\x3f\xc7\x48\x10\x4e\xb5\x23\x3b\x4a\x99\xd6\x01\x8c\xf3\x64\xa6\xc4\x84\xd2\xfc\x00\x99\x91\x32\xb0\xa8\xd2\x4c\x28\x19\x82\x17\x44\xaa\x0b\xea\x3b\xa8\x55\xa7\x23\x18\x03\xb4\xe4\x74\x21\xe9\x03\x71\x65\x10\xfc\x9d\xab\x64\xe6\x6d\xa2\x5b\x4b\xc2\xb1\x6c\x5b\x55\xa1\xea\xed\x17\x76\x84\xca\x03\x9b\x90\xa9\xbc\xab\xf4\xbb\x34\x98\x18\x6a\x44\x16\xd7\xa0\xc8\xe8\x6c\xbe\x83\x11\xdb\x9f\xfa\xdf\x1b\xbf\x98\x3a\xea\xde\x8d\xcf\xd3\x54\x6a\x7e\xcb\x65\x12\xb2\xab\x09\xea\x82\x79\xa9\xae\xc4\xa4\x36\x95\xc2\xae\xaa\x33\x7c\xcf\xd2\x47\xe6\x6c\x6b\xa5\x36\x8c\x70\x34\xf7\x05\x8b\x89\x53\xe8\x53\xbd\xf6\x3c\x07\xd5\x86\xf6\x24\x8f\xc3\x6f\x8c\x09\x95\xff\x92\x15\xca\x2b\x4a\x05\xcf\xb5\xb9\xde\xb4\xdd\x69\xcf\xae\x9e\xb0\x29\xa2\x22\xc9\xd2\xd8\xc6\xa6\x77\xa2\x03\x79\x80\x7b\x55\xbd\xea\x08\x7d\xb1\x9a\x1c\x84\x81\x5c\x64\x02\xb2\x0a\xa8\x40\x09\x5e\xd9\x0e\xc3\x55\x0b\xbb\x0b\x80\xff\xae\x63\x33\xcd\x0b\xec\x90\x9b\x15\xab\x1c\x5c\xa8\x8c\x69\x0b\xab\x65\xec\xd8\x5c\xd8\xe6\xa1\x6b\xd2\x8c\x49\xf8\x08\x55\x55\x74\xef\x6a\xf0\x56\xa5\x2c\x59\xfd\x7f\x7a\xb3\x00\xd8\xaf\x8e\x50\x66\xbc\x01\x9e\x0f\x53\x9d\x1f\xf0\xc1\xb1\x54\xaa\x4b\x71\x4a\x93\x04\x62\x2c\x47\x68\x08\x75\xc1\xa0\xe2\x93\xee\x56\xae\x83\x77\x74\xc6\xd2\x75\x21\x86\x1a\x66\x8a\x3c\x66\xba\xae\x67\x26\x01\xdc\xe4\xa2\x0a\x3b\xe2\xa8\x1d\x40\xf0\x94\x6c\xc1\xe5\x34\xb2\xf6\xc0\xbb\x0e\x97\xf1\x4b\x84\xeb\x4a\xe4\xfa\xa6\x71\x35\xe9\x9f\x32\xcc\x31\x93\x10\x84\x32\x55\x4f\xb9\x09\xf4\x2a\x0e\x44\xe4\x2b\x44\x6b\x99\x36\xec\xe0\x23\x7f\x73\xad\xd3\x7d\x46\x1f\x08\x43\x34\x1e\x20\x7a\x44\x8e\x06\xa6\x6a\xac\xc8\x26\xf9\x2f\xe7\x58\x20\x3c\x66\x25\x20\xd9\x11\x1a\x26\x22\x35\x4f\x10\x16\x25\x50\x87\xcf\x8b\x97\x39\xce\x37\x6e\xa2\xc9\x0a\xd0\xa6\xb0\x95\xf9\xf0\xa9\xf9\xc2\x7b\x70\xcc\xb0\xd0\x5e\xe9\x04\x4e\x7a\xfe\x79\x55\x7d\xc8\x20\x52\xf1\x84\x79\xc6\xa5\x6b\xe8\xc9\x36\x49\x17\x94\x6b\xda\x20\xf8\x05\x6c\x4c\x0e\xf0\x1b\x33\xc7\xce\xe8\x3b\x2c\x13\x82\x85\x44\xbf\x7b\xd7\x29\x38\x63\xe7\x97\x0b\x57\x73\x7a\x73\x18\x8a\x0d\x7d\xd7\x95\xb7\x85\x32\x44\x08\x43\x43\x5f\x07\x4c\x19\xa8\x6d\x96\x29\x7a\xa0\x22\x83\xca\x86\x1e\xac\x4a\xd7\xa6\xa3\x52\xd8\x32\x2b\xda\x4f\x59\x23\x46\x6c\x85\x53\xe3\xbf\x34\x64\x55\x30\xd6\x40\x2f\x39\xd5\xca\x2e\x20\x9b\xf3\x20\xf4\x5c\x69\xb9\x46\xb0\xda\xb8\x8d\x57\x02\x6b\x98\x24\x61\xe0\x57\x29\x38\x31\x61\x6a\xc2\x50\x97\xf1\x08\xf9\xcd\x2f\x45\x1e\x2b\x0c\x4b\x0a\xe7\xed\xbd\x51\x3a\x1d\x33\x87\x4e\xf5\xc7\xae\x54\x76\xaa\xcc\xc5\x67\xd4\x81\x2b\x5e\x7f\xa6\x0b\x64\xb6\xd0\x85\xeb\xab\x63\x37\xb8\x57\x4a\x26\x7a\x83\x6a\xbc\xeb\x17\xb4\xd7\x94\xab\xcd\x5d\xb8\x65\x1f\xd3\x0a\xeb\xb9\x66\x73\x3d\xd5\x62\x8b\x4d\xcd\x83\xd6\xcf\xe5\xc0\x0d\x48\x3f\x8d\x01\x51\xb6\x5e\x08\xe6\x08\x2d\x2b\x3a\xc0\x6e\xa5\xb1\x87\x31\xf1\x02\xf0\x00\x25\xb2\x72\xcf\xfc\xb2\xae\x1e\xd6\xeb\x9e\xfe\x20\x9f\xbf\x9d\x8a\x8b\x42\x97\x27\x5e\xaf\xeb\x0d\xe3\x7f\xe0\x88\xb0\x68\xa5\xdf\x64\xeb\xfa\xe5\x7a\x1c\x28\x7b\x5e\x06\x27\x06\xdb\xbc\x52\x3b\x34\xb5\x6e\x8f\xd0\x08\xee\x19\x5b\xfa\x16\x4f\xad\x7f\xc1\xfb\xf1\x98\x29\xc3\x44\x5d\xf1\x42\x13\x6d\xc7\x0f\x59\xbc\xea\x04\x68\xe8\xfe\x56\xae\x99\xc5\xfa\xe2\x00\x75\xc6\x84\xcd\x1c\x80\x31\x20\xd3\x1a\x8d\x66\x1f\x50\x9c\x46\xf7\x84\xbf\xe7\x24\xa6\xe2\x03\xb8\xca\x65\xad\x8f\x6e\xa1\x8c\xed\xad\x15\x8d\x4d\xab\xa6\xeb\xf7\x1b\xf4\x91\xbe\xb7\x88\xd2\x10\xa6\x60\x4d\x58\x54\xa1\x86\x1a\x9a\xd2\x17\x88\x30\xc9\x57\xcb\x94\x32\x69\x51\x12\x51\x61\x21\xac\xa1\xa1\x74\xb6\x3a\x2c\x0e\xdf\x45\x48\x6d\xc3\x69\xdf\xcc\x89\x20\x36\x7e\xa0\x27\x25\x53\xa4\xab\x42\x6b\x71\xb1\xc4\x72\x2e\x00\x17\x19\xae\x81\xb1\xb9\xe0\x51\xb5\x42\x78\x09\xe1\x07\xed\xa4\xc8\x1f\x72\x80\x3f\x21\x69\x92\x8c\x19\x23\x24\x16\x08\xea\x14\x7d\x5b\x89\xbf\x55\x8f\x0e\x10\x8e\x63\xf4\xbf\xbf\xfb\x78\xf6\xd7\x9b\xd1\xdd\xe9\xf9\xe5\xed\xcd\xdd\xc7\xd3\xb3\xd1\xbb\x81\xfb\xf0\xe2\xf6\xc6\x7d\xaa\x1d\x2c\x0f\x84\xa3\x05\xbe\x07\x0b\x8f\x09\xad\xfe\x01\x2c\xce\xa7\xd4\xa6\x3b\xa9\x6f\x04\xb1\x50\x13\xa3\xa6\xb8\x84\x17\xb3\x87\x6b\x52\x12\x3b\xd8\xbe\x57\xee\x91\x66\x1e\xb4\xcc\xe3\x5e\x61\xd5\xc0\x05\x61\x52\xc9\x18\x83\x59\xcb\x4d\xdf\x9c\xe1\x08\x9b\x51\x56\x17\x10\x27\xec\xe1\x29\x75\xf8\x9f\xc8\xea\x67\x65\x5d\x5f\x62\xca\x5b\xf3\xde\x88\x3d\x50\x9e\x32\x98\x9a\xf3\x6a\xe5\x9d\x25\x08\x4c\xb8\x70\xa8\x84\xd6\x85\x21\xe4\xb2\xac\x05\x5d\xb0\x29\xad\x85\x57\xbd\xd8\x74\x87\xda\x4d\x4c\xbe\x4a\x8e\x4d\x23\x4b\x61\xc4\x0d\x7e\xc0\x34\x01\xc0\x8c\xbd\x68\x72\x1e\xd4\x0d\x0b\x3e\x20\x92\xe0\x49\xca\x01\x46\xab\x23\x7c\x76\x08\xb3\x60\x50\x02\xdd\x0d\x54\x07\xdc\x48\xf9\xd3\x35\x92\x09\xee\xa1\xcb\x94\xb7\xb9\xc9\xd5\xcf\x60\x15\xd2\xa5\x32\xc9\x0a\x42\xd4\x5c\xb3\x53\x82\x75\x25\x64\x01\x92\x46\x64\x4b\x35\x0f\x03\x06\x49\x92\xa0\xe8\x96\x3a\x03\xe2\xc8\x38\xc7\xf3\x5f\xa6\x0c\xfd\xf4\x27\x81\x26\x99\x1c\xb3\x70\x8c\x94\x41\xdf\x98\x1f\xb0\x8c\xe6\x55\x86\x5d\xfd\x55\x7b\xb9\x65\xef\x0b\x37\xcd\xbb\x65\x38\x52\x30\x1a\x65\x92\xcc\x8a\x29\x6a\x5d\xaa\xa5\x9c\x03\xa8\x07\x5a\xf0\x42\x53\x8c\x14\x99\x66\xaa\x06\xc3\xbf\x4c\xe3\x6f\x05\x3a\xbd\x54\x32\x57\xe9\xd8\x10\x8e\xa6\x42\x7b\xd2\x20\x3a\x05\x08\x3d\xfd\xb4\x46\x08\x0d\xd0\xf7\x68\x9c\x7d\xff\xfd\x1f\x22\xf4\xd5\xfe\xf1\x9f\x7f\xfc\xe3\x1f\xfe\x73\x93\x1e\x2f\x30\x6e\xbe\x46\x26\x83\xb6\x28\x84\xfd\x1d\x18\x15\x2a\x3a\x77\x8f\x04\x43\x81\xe0\x3b\x68\x11\xde\x2d\xdd\xab\xa2\x62\xae\x51\x2b\xad\x37\x82\x13\x1d\xad\x87\xb2\xd3\x75\xf0\x24\x22\x44\x47\x55\xab\xb2\xf4\xb4\x19\x07\x8a\xce\x3c\x76\x2a\xcd\xea\x03\xa5\x99\xa6\xd5\x8c\x62\x8d\x05\x0f\x5d\x15\xac\x7d\x58\x1e\x7b\x2b\xf6\x8f\x37\x53\x36\xf5\xdc\x23\x58\xf6\xbc\x01\x0c\x9a\xf1\x34\x5b\x3a\x08\xa2\x05\x63\xe8\x6d\x18\xb3\xcf\xea\x9e\x3f\x65\xd3\xf4\x83\x61\xd8\x33\xca\xee\xe1\xaf\x1a\x1f\xf7\xf6\x7b\xe4\x0a\x51\x7b\x9f\x5b\xfb\x40\xaf\xf8\xa1\xe9\x46\xa0\xa8\x16\x12\x47\xf7\x3a\x3d\xb0\xa9\x90\x79\xd7\x52\xec\x39\x84\x21\x53\x92\xd2\x2c\x1d\xf4\x47\x16\x7e\xa1\xa4\x07\x8a\x11\x46\xb7\x57\xa7\xd5\xef\xbe\xa7\x65\xdd\xbc\xfa\x16\x08\x19\x04\xfe\xe7\x27\xda\x29\x8a\x56\x48\x67\x25\x01\xab\xbb\xac\x98\xba\x04\xad\x42\x66\xef\x56\x09\xa1\x9d\x4b\x4f\xf8\xba\x1e\xc0\x55\x9a\xf8\xc3\x51\x19\xa6\x23\x38\xd6\xb5\xef\xb7\x92\x45\x19\x9c\xfa\x11\xc8\xf0\xe0\xba\x57\x40\xdc\xd0\x24\x7d\xfb\x6a\x27\x7e\x63\x30\x5b\xf2\xc4\xb4\x55\xd2\xb4\x4d\x08\xa4\xa6\xd4\xd3\xb0\x75\x7d\x13\x9f\x04\x53\x4e\xa1\x8e\x82\x31\x1b\xda\x9f\x38\x5c\x04\x13\x54\x77\xaf\x01\xcf\xae\xc8\x26\x3a\xfe\x03\x5d\xc7\xbd\x4a\xd7\x66\x72\x35\x93\xd8\xb2\xff\xf2\xad\x20\xdc\x99\x4f\x06\xd1\x69\x35\x3d\x3b\x8f\x9a\x37\x9b\x4a\x55\x5b\xbc\xfc\xda\x4e\xb1\x50\xf4\xaa\xea\xc5\xeb\x8e\xe6\xc8\x61\xde\xcc\x40\x7e\x9d\x2d\xed\x35\x4f\x56\xb9\x8f\x56\xad\xb8\xb6\x25\x0b\x2f\x0b\x0e\xeb\x54\x63\x3b\xb6\xd3\xa4\xb4\x0b\x6a\xe7\xde\x51\x39\x27\x0c\xf4\x84\xf6\x23\x03\x40\xa6\xbb\x1a\x84\x73\x10\x88\x35\x5d\x3d\xc5\x36\x63\xd4\xe4\x64\x1b\x5f\xbd\xe7\xa4\xb0\x3d\x25\xf2\xe7\x95\x99\x84\x25\x15\x53\x5a\x4a\xa2\x2e\x22\x6a\xb6\x59\xf5\x4e\xbd\x29\xec\x36\x37\xb1\xaa\x0b\xb6\x1c\xa1\x8f\x94\x0b\xe9\x4d\x49\xa9\xad\x06\x10\x53\x57\xed\x5a\xce\x49\x6d\x2e\xc7\x2e\x6c\x1b\x3b\x83\xb6\x06\x9f\x0b\xac\x1d\xa1\x61\x5e\x0e\x43\x43\x82\x88\x68\x31\x23\x92\x08\xb2\x09\xf3\xb5\xd2\x58\xc1\x0e\x00\x06\x42\x20\x2e\x85\xfa\x3c\xcf\x2b\x73\x64\x3e\x02\x76\x05\xdf\x93\xba\x1e\x19\x5d\xfb\xab\xac\x6d\xab\x32\x74\x0a\x69\xaa\x75\xd2\x4d\x08\x6c\x7f\xec\x72\x14\x16\x9d\xbe\x57\x4b\x6e\x1a\x96\xe9\x90\xd9\x14\xf8\xd0\xe0\xb8\x1e\xe7\xca\x6e\xca\x99\xd2\xee\x9f\xd0\x6d\x14\x33\x62\x43\x63\x10\x71\x74\x0b\x7c\x34\x66\xa7\x53\xc4\x52\x1f\xe6\x05\x54\xbb\x43\xaa\x5d\x6a\x6e\xbf\x91\xb9\x1b\xf4\x32\x80\x81\x6f\x87\x2a\x9f\xe6\xc0\x19\xb1\xc5\x71\xde\xae\x15\xa3\x3b\xb9\x35\xd7\x58\xd7\x24\xba\xda\xb3\xd4\x29\xf6\x3a\x23\x8c\x70\x1a\x41\x82\x86\xbe\x76\x97\x98\x56\x99\x94\xa6\x30\xc1\xbe\xa6\x1a\xed\x3a\xc7\xc8\x4c\x77\xc3\xfc\xa2\x44\x3f\xad\x31\xf2\x09\x14\x7a\xd3\x79\x45\xbb\xc8\xc6\xc9\x4b\x44\xb4\xcb\xc4\xd1\xcc\x23\x74\x25\x76\x4d\x57\x37\x1e\x09\x96\xd8\x74\xfc\xd4\xde\x21\x01\x49\x51\x1a\xc8\x97\x4e\x5d\xf2\x94\xf6\x2d\xe9\x3c\x4b\x65\x6b\x96\xfe\xf8\x21\x49\x27\xe2\x9d\xdf\x3f\xce\xbc\x23\xc7\xf3\xd5\xb3\xe0\x6e\x72\x75\xec\x52\x3c\xe5\x7d\x68\xcf\x8c\x7f\x1f\x76\x59\xf8\x6a\xa6\xca\x43\x6b\x1a\xce\x80\x79\x9a\x31\x9b\xeb\x90\x32\x92\x4e\x01\xdf\x08\x9d\x6d\xac\x55\x08\x30\x68\x96\x4a\x0f\xba\xc0\xc9\x52\x07\xce\x40\x43\xad\x5f\xee\x2d\xf3\x7d\xd6\xad\xf3\x53\xe4\xfb\x6c\xbb\xee\xe6\xe0\xbc\xd0\x82\x6f\x9b\xc5\xa1\x8f\x52\x07\x31\x0b\xbf\x5f\x6b\x8c\x3b\x39\x00\xd6\xb7\x5f\xb1\x49\x23\x75\xc1\x53\x4c\x0e\x65\x7a\x08\x90\x2f\x00\x12\xe9\x0c\xbc\xba\xba\x14\xd1\x9c\x2c\x3a\x24\x39\x5d\xc3\xef\x5b\xd0\xa9\x7b\x62\x7f\xf5\x08\x35\x77\xaf\x40\xb6\x5a\xab\x6e\x95\x0d\x8d\x97\xc0\x3e\x5b\x7b\x73\x74\x74\x71\xf8\x5b\xd9\xec\x01\x33\xd9\x25\x85\xec\x28\x93\xd3\x38\x05\xa3\xc7\xd2\x70\x84\x2e\x58\xb2\x42\xf3\x74\x91\xaa\x6b\x3b\xcd\x84\xf7\xa5\x86\x0b\xc1\x65\xd3\x50\xab\x76\xa9\x21\xde\x2f\x37\x1b\x75\xb4\xd4\x57\x5a\x77\xf4\x7f\xb4\x3e\x45\xd4\x9b\xc9\x24\x4c\xb1\x5b\x43\xbf\xcb\x8d\x6a\xe6\x1b\x48\xe8\x59\xd0\xd9\xdc\x54\xfe\xf0\x5b\xe2\x02\xeb\x2f\x5c\x21\x44\xdb\x9b\x4b\xa7\x94\x01\x43\xb1\xaa\x92\xe7\xb5\xee\xed\x2e\x19\x7e\x1d\x7a\x94\x79\x08\x60\x87\x9d\x83\x45\x76\x38\x5a\x8b\x4f\x73\x0f\x3e\xe4\x65\x67\x56\x4b\x32\x40\x93\x0c\xbe\x3f\xbf\xb8\xf1\x7d\x43\x94\xc1\xd7\x87\xd1\x9c\x44\xf7\x6a\x5f\x90\x16\x8a\x7a\xb9\x6c\xfd\xa0\xc9\x6a\xcc\xf2\xe2\x06\x32\xb5\x8e\x8e\x95\xcb\x1e\x71\x19\x54\x29\x47\x31\x15\xcb\x04\xaf\x10\xf9\x2a\x09\xd3\xb5\x5e\x2a\x1a\x45\x2a\x66\xd9\xcc\x6c\x81\xea\x0b\x46\x0a\x58\x3d\x0c\xfe\x65\x27\xe1\x8a\xcc\x01\x96\x7a\x8a\xa3\x4a\xb5\x63\xeb\x7c\x9e\x6d\xe2\x27\x75\x75\x44\xbc\xd2\x8a\x7a\x47\x7d\x57\xa9\x83\xf2\xb0\x02\x26\x67\x6c\xea\x99\x8d\x0f\xc0\x83\x32\xb6\x55\xd8\xd4\xbf\x75\x15\x27\xc2\x1f\x48\x3c\x66\x21\x58\xca\x5c\x65\xf9\x2e\xa3\x3c\xbf\xbc\x4e\x74\x76\x4f\x62\x55\xeb\xec\x72\x2c\x1b\x43\x3b\x10\x20\xce\x91\xe1\xae\x30\x5f\x43\xbe\x7b\x75\x1d\xb7\x27\x48\xcc\x6e\xed\xfc\xc8\x13\xda\x4d\x36\xaa\x29\x37\x41\x74\xaa\x64\xb2\xd2\x0d\xe5\x0d\x63\x3a\x28\x88\xc6\x89\x3a\xec\xab\xc1\x87\xe4\xa8\x07\xb3\xe7\x55\x63\x8c\x99\x8d\x58\x4e\xb3\x24\xd1\xd8\xff\xda\xae\x8f\x1a\x1a\x66\x23\x80\x2f\x87\xbf\x71\x76\x2d\xf2\x2a\x00\x78\x3d\x12\x97\xb1\x92\x1d\x2c\x5a\xe5\x55\x25\x81\x79\x09\x13\x99\xee\xc9\x2f\x3d\xec\xf3\x8c\x48\xa4\xf4\x8e\x38\x4b\x34\x70\x98\x67\xcc\xe0\xcc\x70\x92\x20\x2a\xc5\x98\x39\x58\x9c\xae\xca\x03\x57\x41\x64\x72\x41\x62\xa3\x0b\xc2\x2b\x60\x58\x53\x23\x0a\x2e\x08\x1a\x51\x19\x90\x04\x9e\xca\x95\x9f\x32\xb7\x5c\x12\xcc\x41\x5d\xb4\x4d\x0a\x7c\x6d\xb0\xb8\x0d\xa6\xb9\x30\x94\xee\xa9\xef\x16\xb2\x0b\xee\xd5\xa5\x9b\x3a\x6f\xca\x11\x1a\xea\xd9\x29\x55\xd0\xd6\xaf\xd1\xd4\x9a\x30\xb5\x89\x27\x28\x7d\x4b\x0a\x57\x6c\xd1\x69\xd4\x4b\xcc\x25\x8d\xb2\x04\xf3\x64\xa5\xa4\xcb\x34\x4b\x10\x9d\x7a\xa5\x78\x60\x13\x34\x2a\x0a\x4a\xaa\xa6\x70\x47\x58\xd4\xb3\xc0\xd0\xd6\xde\x30\xb8\x35\x3c\x13\xcf\x89\xa8\x33\xbd\xb4\x77\x4a\x8d\xf5\xee\x08\x9d\x14\x0b\x2f\xc1\xb1\xf0\xd0\xd4\x54\x68\x09\xe8\xe8\x35\x49\xa3\x50\x6b\x0e\x0a\x38\xd1\xa9\x52\x76\xbf\xf5\x0e\x5e\x5d\x85\x3f\x2c\xee\x3b\x7a\x28\x6f\xb0\xb8\x5f\xeb\xa5\x3c\xf5\xae\xca\x5c\x00\xde\x40\xe1\xb8\xc0\x6f\xe9\x4e\xc4\x9a\x6a\xf6\x1d\x89\xf4\x91\xe8\x1b\x10\xfa\xc5\xab\xcc\x56\x24\x76\xd1\x50\xf9\x07\xf6\xb1\x23\xa9\x5e\x56\x6e\x77\x42\x3d\xce\xf1\xfd\xd1\xb5\x2b\xbb\xde\xb8\xfc\x12\xe4\xc7\x22\x45\x97\x52\xec\x89\x8e\x60\x14\x8a\x7e\x02\x0d\x26\x91\x16\x72\x19\xdd\x61\x9b\x10\x94\x50\x76\xaf\x4f\x05\x86\x9d\x1f\x20\x9c\x8f\x0e\x87\x4f\x53\xaf\x99\xb9\x46\xb3\x71\xd1\xe8\xdd\x84\x84\xdb\x21\x46\x2a\x37\xd7\xcd\xbb\xe2\xf9\xf5\x8c\x58\x35\x8f\xf6\xdb\xd2\x18\xb6\x73\x4a\xac\x8d\xd5\xe9\x0b\x26\x6c\x64\xb8\x5a\xb7\xbe\x97\x85\x4e\xe5\x75\x5a\xe0\x01\x61\xd9\xe2\xe0\x03\xfa\x9f\x7c\x65\x6e\xcf\x4f\x46\x1f\x4f\xcf\x47\x27\x1e\x03\x1f\xfc\xe5\x76\x74\x1b\x7e\x72\x75\x7b\x7e\x7e\x7a\xfe\xc9\xff\xe8\xfa\xf6\xf8\x78\x34\x3a\x09\x7f\xf7\x71\x78\x7a\x56\xf8\x9d\xfa\x28\xfc\xd1\xf0\x87\x8b\xab\x9b\xf0\xa3\xeb\x9f\x4e\x2f\x2f\xc3\x8f\x6e\x4e\x3f\x8f\x4e\xee\x2e\x6e\x6f\xec\x5a\xff\xcd\x5b\x61\x40\xcb\x42\x74\xd7\xd1\x5f\xb9\x44\xbb\x28\xac\xd1\x35\xfe\xec\x21\xe5\xa7\x9c\x12\x16\x27\xab\xbc\x2d\x8c\x3a\x74\x85\x20\xa5\x2f\xd2\xe9\x82\xa4\xd9\x36\x98\x01\x65\xfa\xa6\x0f\xca\xa4\x4e\x90\x19\xcd\x60\x72\x0a\x6d\xd5\xbc\xb7\x72\x22\x79\xd9\x0d\xd6\x88\xb2\x90\x7c\x75\x2d\x39\x96\x64\xb6\x6a\x89\x7f\x33\x2f\x41\x4b\xc2\x9b\x68\x81\x0b\x97\x67\x4b\x49\x27\x65\x47\x93\x5d\x07\x93\x98\x52\x5b\xf9\xcf\x7c\xdd\xdd\xb2\xd3\xf8\x50\x5a\x29\xae\xcf\xab\x05\x9d\x4d\x54\xdf\x32\x1b\x14\x3c\xd3\xed\x77\xe0\xd2\x3d\x52\xcd\x7a\xc7\xb6\xb8\x85\x32\x99\x25\x66\x35\xc0\xff\x8e\x05\xf8\xf2\x6c\x5c\x9e\x97\xc1\x34\x37\x95\xb5\x22\x72\x34\xf1\x26\x96\xb5\x49\xc8\x67\x71\xde\x33\xcc\x24\xea\x7b\xd5\x38\x2a\x36\xa1\x50\xe2\xec\xc9\x6f\x99\x46\x9e\x37\x98\x44\x50\xfd\x74\x46\xa4\xe9\x84\xa7\xaf\x65\x48\x33\xae\x0d\xd5\xed\xb8\x22\xa2\x53\x3d\xf3\x72\x6e\xae\x40\xa0\x95\x47\xdd\x15\x8d\x42\x31\x34\xaf\x50\x9c\xee\x4d\x01\x09\xb0\x30\x6c\xee\x8b\x33\x9a\x85\x96\x03\x0f\x24\x46\x87\x7e\x01\xca\xf8\x10\xd0\x65\x63\x56\x67\x61\x56\x14\x6f\xf4\x39\xe0\xd2\xd6\xe6\xd8\x66\xef\x2b\x56\xbf\xfe\x08\xda\xc5\x6e\x07\xaa\x40\xf6\xe7\x47\xa8\xde\x95\x69\xf6\x65\x82\xb5\x0b\x09\xce\x96\x2b\x3a\x52\x07\xf1\x72\x77\x61\x37\x8f\x6b\x2b\x6f\x2b\x76\x89\x29\xda\xcf\x0a\x3a\xcb\x1c\x83\xff\x4d\xd7\xda\x0c\x08\xf7\x4a\x8d\xd6\x19\x2d\x2e\x41\x7d\x3b\xd1\xde\xca\x82\x1c\x68\x44\x80\xab\x1a\xee\x67\xf5\xba\x0a\x05\xdd\x18\xdf\xed\x86\xcb\x05\xc7\x56\xee\x81\xc0\x4a\x70\xa6\x74\xfa\x65\x82\x35\x90\x68\x8e\x85\x66\x69\xeb\xa4\xc4\x13\x9a\x50\x09\xbd\xab\xb5\x79\x5f\x58\xe1\x94\xa3\x05\xe6\xf7\xca\xa2\x25\xc9\x54\x8d\x5e\x08\xee\x57\x32\xfd\x96\x81\xb4\xbc\xb0\xcd\x73\x86\xd2\xf2\x23\xdb\xd6\x37\x90\xb3\xa5\x09\xa3\xe5\xdb\xa1\x4b\x2f\xcb\xd4\x2b\xd2\xd3\x6d\x67\xcd\x88\x97\xc5\xc7\x83\xf5\xae\xb8\xa8\xbb\xfb\x6c\x4d\x4e\x41\x07\x31\x5f\xcc\x38\xa8\x3c\x59\xd3\x24\xc5\x35\x65\x76\xec\xd8\x3a\x81\xa0\x6e\xec\x38\xcd\x94\x38\xab\x1c\x5c\x53\xd5\x3c\x7a\x93\x01\x66\xcf\xed\xae\x14\x3a\x5f\x00\x62\x49\xa0\x63\xd3\x46\x0b\x9a\x37\x7c\xaa\x1e\x3c\xe3\xb8\x0a\xdd\xd1\xbe\xc0\x61\x9e\x6d\x63\x99\x07\xdd\xac\x96\xa4\xa2\xac\x5b\x80\x5d\xde\xd0\x98\xbb\xbe\x1c\x1d\x9f\x7e\x3c\x2d\x58\x52\xc3\xeb\x9f\xfc\x7f\x7f\xb9\xb8\xfa\xe9\xe3\xd9\xc5\x17\xff\xb3\xb3\xe1\xed\xf9\xf1\x8f\x77\x97\x67\xc3\xf3\x35\xf6\x56\xf9\x15\x65\x77\x47\x9e\x18\x90\xe3\xa8\xd5\xdd\x60\xa0\xbf\x60\xea\x56\x9c\xaf\xab\x8a\xe4\xbe\x4d\x5b\x09\x3d\x99\x4b\xd3\x11\x69\xff\x18\x31\xc9\x57\x5d\x92\x3e\x51\x4c\x04\xdc\x43\xc6\x7b\x19\x26\x1c\x12\x01\xbe\x60\x3b\xfa\x39\x08\x36\xeb\x5d\x37\x21\x1a\xb3\x8e\xea\x62\x49\x68\x6d\x0b\x90\xea\x5e\xee\x7b\xb2\x0e\x3e\x06\x10\x56\x61\x92\x66\x2c\xb6\x95\xd5\x16\x94\xbd\x5f\xe0\xaf\xef\xec\x4c\xf3\x4e\x6b\x90\xcf\xaa\xcb\xd9\x27\x4a\xeb\x58\x21\x9e\xb1\xe6\xe5\x1a\xb3\x86\xf5\x5a\x7f\x33\xe8\x3e\x83\xf4\x5f\xa0\xe2\xe4\xfa\xa8\xf6\x18\x3f\x90\x55\xd5\xfe\x95\x12\xa9\xb4\x57\xda\xe8\xc0\x30\xc8\x92\x13\x28\x24\xea\xfc\xd1\x89\x8e\x33\xb8\x7f\x43\xbc\x33\xc8\x2f\xad\xba\x93\x42\x5b\x7c\xab\x73\x53\xe9\x05\x78\x82\x54\x38\xf3\x26\xb5\x69\xda\x27\x60\xd3\x4e\x4d\x7c\x37\x46\x8f\x73\xa2\x77\xeb\x1f\xe9\x04\x4d\x21\x1c\x6e\xca\xc7\x70\x12\x81\x7b\x43\xed\x85\x4d\x2f\x02\x58\x6d\xc9\xd1\x60\x79\x20\x21\x02\x9c\x6d\x50\x8a\x91\xfc\x33\x33\xd8\xb9\xdf\x7d\xdf\x2d\x65\x4b\xf2\x15\x12\x66\x99\xfd\x70\xbc\x41\xa3\x18\x9f\x1d\xd0\x95\x31\x5a\x55\xf2\xed\x4a\x17\x21\x7c\xde\x5a\xaf\x85\x97\x9a\x7f\xae\x45\x2c\xdc\xd8\x34\x18\xfd\xfb\x27\xcb\x8f\xf8\xb9\x90\x16\x61\x5e\x07\x81\x48\x33\xba\xf0\x50\xf7\xca\x32\x7a\xc4\x3c\xd6\x8e\x01\xf0\x11\x1d\xa1\x1f\xd3\x47\xf2\x40\xf8\x00\x45\x84\x4b\x6c\xe0\xca\xea\xac\x25\x09\x1c\x28\x33\xce\x98\x41\x6c\x5e\x63\xbf\x19\x94\xde\x91\x74\x36\x57\xca\xa3\x31\x42\x4d\xb9\x4e\x41\x24\x40\x0d\xc9\xd7\x25\x89\x34\x28\xa3\x2e\x12\x3d\x4d\xf0\x43\x19\x7f\xbd\x09\xb4\xd6\xab\x48\x6a\xdb\x25\x99\x9c\x95\x46\xa7\x94\x2d\x6c\xa9\xa5\xe6\x72\x25\xe7\x29\x1b\xa0\x59\x9a\x60\x36\x3b\x3a\x3a\x42\x44\x46\x47\xef\x3a\x31\xba\x19\xd0\x7b\x5d\x1e\x51\x4b\x52\x41\x92\x95\xb5\xf0\x72\xe4\x83\x5a\x65\x40\x5a\x08\xaa\xcd\x9b\x0a\xee\xbf\x2e\x22\x74\x9f\xd7\x4d\x56\xad\x95\x76\x86\xfa\xd4\x8c\x53\xec\x73\xb2\x6e\x24\xfd\xfb\x6a\x4d\xbb\x03\x74\x0d\x2a\x39\xd0\x38\xc9\x21\x6c\x35\x19\x54\x29\xeb\x8a\xcb\xfa\x39\xad\xab\x52\xb3\x51\xca\x41\xe5\x48\x06\x20\xbe\x11\x52\xa9\xcc\xd1\x15\x1c\xe7\x40\x7d\x5b\xa5\x37\x25\xd9\xa2\x5c\x6a\x71\x57\x5a\x54\x4e\xa4\xfe\xeb\x18\x5e\xd7\xbe\xae\x81\x2b\xc6\x93\x72\x8d\xa6\x32\xf4\x9a\x9e\xdf\x30\x26\x48\x4b\x4e\x05\x24\x5a\x6c\x02\x78\x72\xc3\xe8\xa1\xc1\x3d\xab\x6c\x18\x5d\x1e\xcd\x34\xa2\x01\x0c\x97\xeb\x27\xa3\x1f\x11\x5a\xd5\x01\x9f\x6e\xbd\x64\xc8\x41\xa2\x1b\x59\x3d\xe7\x17\xe7\x23\xdf\x94\x39\x3d\xbf\x19\x7d\x1a\x5d\x05\x31\xa8\xb3\x8b\xe1\x4d\x10\x6f\xba\xb9\x2a\x84\xa9\x7e\xb8\xb8\x38\x1b\x0d\xcf\xfd\x8f\x4e\x86\x37\xa3\x9b\xd3\xcf\xc1\xe0\x27\xb7\x57\xc3\x9b\xd3\x8b\xe0\x77\x3f\x9c\x9e\x0f\xaf\xfe\xea\x7f\x32\xba\xba\xba\xb8\x2a\xbc\xef\xf6\xb8\x39\x92\x15\x4c\xa3\x7a\x27\x72\x65\xd9\xc3\xcb\x56\x29\x85\x37\x58\xdc\xef\x38\xfa\x0a\x68\x83\x0d\x3b\xfc\xd6\x08\xa5\x98\xdc\x6d\x16\x98\xad\x0b\x2e\x57\xbe\x47\xe9\x83\xab\x3b\x2c\x25\x59\x2c\xb7\x2b\xf4\xd0\xfe\xe0\x74\x8b\xf9\x82\x49\xd3\x22\xe6\x1b\xec\xea\xfe\xc4\x7c\x2b\xc2\xb9\x26\xe6\xdb\xc4\xee\x0d\x81\x5b\x35\xcf\xb3\x74\xab\xce\x52\x5d\x7a\x52\xf8\x3c\xb9\x3e\xd4\x5b\xf9\x9c\x41\xe6\xdf\x55\x77\x39\xa8\x66\x64\x33\xcb\xcf\xfa\x51\xdd\xe4\xa0\x26\x2a\x2c\x93\x1d\xf8\x9f\xce\xd2\x59\x35\x0a\xd6\x75\x84\xa4\xc2\xcb\x83\x07\x6f\x76\x3a\x43\x82\xb2\xfb\x31\xfb\xa2\x0c\xb2\x34\xe3\xfa\x23\x99\x72\x00\x54\x4f\x93\x4c\xcc\x09\x94\x8f\x1a\xa0\x47\x02\x6d\xed\xc1\xab\x1d\xd6\xd7\x85\x22\xa1\x09\xbd\x27\xf0\x74\x42\x99\xe2\xf6\x25\xb5\x1a\x50\x71\xeb\x77\x61\x20\xc5\x54\x38\x3b\xf1\x09\x43\x0d\xb9\xa7\xeb\x71\x4e\x00\xb7\xea\x55\xe7\xb2\x85\x3d\xb5\xe4\x81\x1c\xa9\x34\xbd\xcf\x96\xa6\x2d\x1b\x16\xf7\xdf\x5a\x14\x18\x2c\xf7\x43\x4a\x63\x14\x67\xcb\xc4\xeb\x8a\xf8\x98\xf2\xda\xa8\xbd\xd6\xd4\x3b\x44\xed\x0b\xf6\x67\xd3\xc4\x2a\xcc\x00\xcf\xea\x68\x88\xdf\x3f\x31\x82\xc1\xab\xd9\x91\x09\xc2\x0f\x25\xa7\xb3\x19\xe8\x3d\xd6\xa9\xb0\xff\x10\x07\xcb\x9b\xab\xbb\xed\xed\x67\xdf\xd5\x9a\xe8\x8a\xa6\xae\xd4\x80\xe2\xa9\xe5\x32\x59\x59\xe0\xa1\x5e\x40\x7b\xec\x97\x19\xd7\x85\x88\xa6\xc8\x11\x54\x1b\x62\x5c\x72\xa2\xde\x12\xdf\xe9\x32\x28\xdb\x97\x67\x39\x9d\x2a\x4d\xc6\xf4\xf4\xcd\x0b\xc9\xe4\xc5\x36\xf4\x66\x43\x16\x84\x79\xb7\x4d\x0b\xd0\x19\xb9\x4c\x37\xf4\x7b\x64\xb6\xd5\x21\x16\xda\xb4\x87\x86\xe7\xab\xbc\x0f\x22\x34\x54\x83\x7c\x5e\xd7\x23\xcf\x64\x18\x1a\x1f\x9d\xae\xb4\x57\xdc\xaf\x7a\x39\x0a\x40\xc8\xb0\x23\x52\x51\x82\x6d\x0b\xeb\x77\xe1\xf5\x4d\x15\xae\x66\x93\x61\x96\xa4\x13\x9c\x24\xab\x0a\xc0\xbf\x7f\x29\x74\xf3\x8f\xd9\xbe\x4d\xe1\x95\x62\x81\x33\x10\x89\x4d\x1b\x12\xa9\x83\xee\x02\x3b\xcd\x88\xd8\x7e\xc1\x32\x99\xea\x64\x66\x70\xf8\xa9\xc9\x9d\x16\xaa\xdf\x1f\x69\x78\xec\x69\x5c\x59\x87\x23\x67\x68\xbb\xf2\x75\xc2\xb3\xc2\x44\xef\x94\xd0\xb1\xe4\xc4\x3a\x67\x56\x44\x3a\x9f\x4c\x62\xe1\xbb\xab\x65\x58\xf0\xdc\x77\x4a\x5b\xb7\x93\x75\x77\xeb\xf6\xc4\x5e\x49\xd5\x94\x11\x26\x75\x61\x49\x96\x8e\x99\x19\xdc\xa6\x87\xb9\x0a\x2b\xc6\xcf\xae\x17\x66\x60\x54\x5c\x38\xb4\x9c\x88\x34\x79\x30\xbd\x46\xdd\x9a\xc8\x14\xe0\xdb\x8a\xc0\x63\x25\x6d\x95\x6e\xa1\x2c\x4c\x57\x12\x73\x4e\xc6\xac\x90\x23\xe5\x75\x39\xb6\x1c\xeb\x3f\xbf\xb3\xbc\x91\x40\x1d\x69\x5a\xfa\xda\xbc\x91\x75\x50\xb7\x29\x8e\xba\xe0\xb7\x57\x4b\x12\x9f\xba\xe7\x9a\x99\x21\xb0\xcc\x63\x2f\x72\x11\x1c\x72\xcd\x03\x5a\x9e\x0a\x9d\x7c\x23\x5c\xa3\x52\xb7\x49\xae\x66\x8f\xab\x05\xae\xb6\x68\x86\x6d\x3d\x78\xe1\x8a\x81\x43\x30\x35\xf0\xa8\x16\x7a\xf7\x38\x55\x27\x4a\x85\xd4\xe1\x1b\x78\x64\x8a\x69\x92\xf1\xda\x1b\x5c\xb3\xe5\xce\xb3\xda\x8e\x61\x58\x54\xb5\x6b\xce\xed\xe9\x1d\x23\xe7\xf2\x74\x3d\x81\x92\x6c\x46\x99\x08\xb9\xbe\xbe\x36\x66\xa9\x4e\xf0\x9a\x0d\xcf\x4b\x0b\xb7\x97\xc5\x43\x7d\xd8\x0b\x1d\xb8\xab\x0b\x04\x19\x9d\xca\xa3\x7d\xcc\x6e\xe0\x2a\xd5\x49\x5b\xee\x98\x41\x01\x27\x5d\x8f\x03\x8a\x24\x57\xcd\x37\x90\xe7\x21\xa7\x6e\x85\x97\xa8\x4a\xaf\x5a\x8f\xcb\xfa\x8c\x97\x4d\x99\x2f\x5b\x8f\xb8\x6e\x1b\x9c\xf3\xac\x78\x0c\x8b\x55\x77\x2b\x56\xcf\x61\xcb\x9e\x25\x46\xd4\x25\x0f\xd7\x41\x0c\x4d\x06\x7b\x29\x89\x32\xd0\x1b\xfd\x47\xbb\xa3\x4c\xf3\xe0\x88\x69\xf4\xa7\x07\x9c\x68\x5c\xa0\x0f\x65\xdc\x22\x89\xd3\x6d\x4c\xa1\x11\x73\xd5\x76\x6c\x09\xb3\xca\x91\xb1\xcf\x88\xb2\xfa\xb9\xb4\x44\x5d\x41\x56\x85\xf6\xf6\x32\xf5\xda\x60\xb5\xd2\x98\x1d\xb8\xea\xe7\x10\x1a\x1c\x2c\x71\x4a\x5b\x61\xa8\xcb\xc5\xdd\x40\x69\x89\x09\x4b\x25\x41\x18\x31\x9a\xbc\x67\x59\x92\xbc\x3f\x87\x2e\x24\x42\xd0\x99\x2e\x72\x0c\x0e\x8d\xa0\x6b\x34\x40\x53\x3d\xa8\xa9\x77\x04\xe0\x8a\x54\x24\xe9\x1e\xec\x52\x49\x4c\xb5\x05\xc9\x6a\xcc\xd4\x13\x5a\xc5\x72\x2d\x40\x6d\x2b\x41\x78\x9b\x4d\x9b\x31\xef\x52\xa6\x2b\x5b\xf9\x83\x57\x30\x58\x53\xa6\xc9\x56\x11\xb3\xbe\x04\xe1\xde\x94\x20\x4c\xb9\x75\x0c\x75\x28\x46\x58\x7f\xa8\x36\xae\x06\xe8\x14\x31\xe7\x71\x6e\xc1\x8f\x2f\xe9\x6d\x7e\xca\xbc\xa3\xad\x93\x8c\xec\x4a\x75\x71\x5a\x16\xb8\xc3\x3e\xea\x18\x41\x6d\x19\xf7\x72\xeb\xc7\xec\x26\x75\x16\x9a\x61\xff\x69\xa6\x54\xbb\x06\x51\x62\x47\x3d\xd1\xd3\xd8\x0a\x52\xb7\xcb\xa4\x9c\x46\xaf\x90\x8d\x8c\x58\x6f\xaa\xdf\x79\x2b\x20\xc2\xa0\x7e\xf4\x01\x82\x6a\xf5\x32\xb4\x32\x74\x45\x03\x0b\x2c\x32\x7d\x23\x32\xec\x70\xd6\xb0\x96\x6a\xc1\x4d\x12\x70\xc6\x00\x27\x44\xbe\xea\x54\xeb\x64\xe5\x8f\x0a\x49\x79\x30\x62\xc7\xe8\x29\x18\xb0\x2e\x6f\x72\xed\x46\xd7\xef\xe6\xb6\x1e\x25\x8d\x4b\x5f\x26\x98\xdd\x69\x4d\xe1\x05\x7c\x4a\x1e\x36\xbe\xae\x6c\x8f\xd7\x9f\x6e\x37\x74\x3a\x71\x79\x15\x64\xac\xf8\x0d\xab\x06\xc5\xd2\x9e\xf6\x7a\x77\x9d\xbb\x8d\x65\x6b\x6a\x37\x7f\xad\x02\x1f\xac\xf7\x8b\xe1\x82\x15\xec\x8a\x97\xaf\x71\x8c\x95\x3a\x4a\xee\x99\x73\xac\xcd\xce\x17\x18\xbc\xb8\xed\xdd\xfd\x32\x25\xa9\xbb\x91\x6f\x66\x0d\x59\x4f\xeb\x9f\xa9\xb5\x43\xca\x7e\x9a\x2f\x61\xe3\xa3\x08\x3a\x09\x46\x49\x16\x13\x24\x52\xa5\x1c\x59\x33\xa9\x3a\xf7\xa1\x10\x73\x7f\xd2\x5a\x0f\x61\x6a\x6b\x6b\xf0\x8a\xae\xf6\x82\x4e\x19\xb2\xe6\xce\x00\x8d\x0f\x34\x67\x89\xf1\x41\xd8\x25\xda\x96\x92\x09\x8b\xff\x17\xbd\x98\xda\xff\xef\xdd\x20\xcc\xb3\xb5\x8b\xeb\x52\xe3\x12\x78\xc9\x1a\x2e\x1e\xb2\x47\x87\x08\x27\x7a\x00\xa3\xe1\x69\xc5\x75\x65\x0b\xbc\x40\x9a\x27\xcf\x22\xe9\xf5\xa1\xb4\xf5\x30\x7e\xb0\x0f\xaa\x25\x5a\x66\x89\xe9\xb3\x6d\xeb\x4f\xa4\x7c\xcc\xec\x68\x79\x59\xba\x61\x92\x94\x86\x2a\x97\x82\xf1\x78\x15\x0a\x43\x59\xcc\x2d\x60\xb9\xd5\x8f\x00\x95\x54\x92\x03\x63\xa6\x33\xb0\x5c\xf2\xdf\x11\x1a\x16\xfa\x73\x86\x55\x4f\xfc\xa2\x27\x49\x62\x2b\x7e\xe8\x3a\x1a\x5e\x99\x07\x91\x41\x4d\xfd\x69\xa6\xc4\x91\x7b\xbb\x4c\xc7\x0c\x0a\xe0\xe8\x56\xeb\x76\x5d\xc6\xec\x73\x2a\x6c\xcf\x30\x91\xaf\x87\xd5\x19\xcc\xb2\x7d\xeb\xa0\xc7\xe6\x83\x13\x25\x44\xd4\x53\xca\x4e\x2c\x24\x9e\x42\x8c\x0a\x22\xe9\x03\xb4\x4a\x33\x4f\x81\x89\x30\x1b\xb3\x7f\xa8\xe5\xb1\x55\x5d\x52\xd7\xd1\x16\x0e\xb1\x4d\xd4\x45\xdf\xfd\x5d\x0f\xfa\xdd\x1f\xdf\xfd\xfd\x9d\xae\x99\x95\x89\x4c\x49\xd8\x41\x78\x85\x58\x42\xd5\x96\x52\x36\x1b\x33\x3b\x03\x57\xa6\x3f\x7f\x45\x63\xfe\xb7\xf1\xbc\xee\xba\xda\x71\xee\xbe\x19\xa2\x08\xcb\x68\x7e\x88\x0d\xef\xf9\x95\x6e\xa8\xc8\x6b\x69\x3f\xce\x09\x83\x56\x52\x61\xfd\x6d\x0d\x7e\x47\xb1\x92\x6c\x0b\x97\x3a\x19\xf0\x8b\x6e\x2a\x62\xb4\xc2\x42\xce\xa8\x7d\x13\x30\x67\x9e\xb5\xf8\x25\x97\x0c\xf6\xe7\x16\xcb\x9d\xfb\x5c\x8c\x9f\x49\xd9\x7f\x31\x1a\x6b\xec\xe3\xf8\xc0\x6e\xff\x98\x2d\x27\x47\xc9\x6a\x2a\x8f\x00\x89\x79\xa4\x96\xe5\x68\xd4\xd8\x7b\x44\x5f\x42\x77\x71\x59\x2b\x5f\xb3\xdc\xb5\x7a\x7d\xb5\xbe\xe3\x56\xc7\xbd\xa9\xbd\xd2\xa2\xed\x44\xb7\x3e\xd7\xa1\x23\x99\x38\xc3\x93\xe8\xe0\xc0\xc0\x75\xda\x67\x61\xbb\x5c\x77\x3e\xa1\xac\x8e\xba\xe8\xb0\xa4\x11\xe8\x0a\x98\xe1\x64\x05\x19\x15\x83\x31\x8b\x29\x27\x11\xf4\xf1\x8b\x56\x51\x42\x23\x53\x95\x24\xd4\x85\xc8\x03\x61\x32\x00\x7e\x8d\xd4\x27\xcf\xa5\x0e\xd5\x41\xce\xaa\x57\xff\xb6\x46\x15\x72\x15\xa4\x42\xd3\xbb\xc8\x26\x26\x8f\x9a\x77\xcc\x43\x77\xaf\x07\xd1\x1c\x5b\xa7\x49\xca\xe9\x8c\x32\x68\x72\xff\x1d\xf8\x10\x93\x84\xf0\x77\xae\x19\x0a\xac\x62\x35\x19\xf3\x4e\x45\xe6\x2b\x4a\x92\x54\x5f\xb6\x51\x94\x71\x4e\xe2\xbb\x32\x52\xaa\x6b\xce\x5e\x33\x8e\x44\xa9\xd6\x74\x41\x84\xc4\x8b\xa5\xdf\x14\xdc\x65\x97\x98\x95\x49\xf4\x22\x20\x4b\xd8\x00\x51\x00\x43\xb9\x98\xef\x98\x99\x68\xaf\xde\xb7\x94\x57\x24\xa3\x17\x67\x09\x82\xa3\x45\xc3\x98\x06\x7d\xa4\x6b\xbb\x99\xa2\xd7\xe9\xea\xcc\x06\xe4\xd3\xa0\x7b\xba\xd7\xc5\x98\xc2\x79\x86\x73\x5a\xd1\x07\x79\xcc\x72\xb8\xcd\x71\x92\x66\x31\x32\x3e\x37\xe3\xc1\xe2\x47\x88\x92\xa3\x01\x12\x7f\xf8\xf0\xfe\xfd\xd1\xd1\x8e\x6a\xd4\x87\x4d\x8e\xaa\x39\x5c\xb7\x21\xaa\x82\xb3\xad\x39\x5a\x41\x4d\xaa\xbb\x6e\x96\x87\x85\xdb\x03\xb7\xf8\x96\x79\x88\x06\x29\xbe\x72\x89\x39\x61\xf2\x0e\x00\xb4\xdd\x5e\x08\x2f\xba\x84\xc7\x03\xec\x67\x2b\xb3\x27\xaf\x69\x67\x92\xe7\xb0\xb8\x47\xdf\x51\x70\x47\xbf\x33\xc6\x38\xf4\xf1\x6e\x28\x35\x55\x96\xc0\x4d\xd4\x3c\x93\x28\xae\x03\x37\xb7\x21\x3f\x78\x76\xeb\x0b\x64\x1b\x4c\x74\xa3\x1f\xec\xc4\xd5\x4d\x85\x40\xf4\x29\x43\x51\xba\x98\x28\x21\xae\x58\xdd\x39\x26\x00\xda\x3c\xb4\xf8\x42\x07\x8e\xb2\x78\x2a\x5d\x79\xa0\x80\x2e\x76\xae\x61\x1f\xfd\xa4\x59\xb4\x70\x37\xd5\xf5\x35\xd2\xec\xfc\x04\xf0\xed\xea\xa3\x3e\x2c\xce\x20\xaf\xe4\x7b\x4f\xa3\x7b\xa2\xee\xb9\x69\x5e\x71\xc4\x97\x6e\xee\x7e\x73\x70\x30\xd3\x24\x5d\x83\x1b\x88\x99\xf7\x1d\xd5\xf5\x1a\x89\x6d\x4e\xea\x01\x53\xbe\x15\xd5\x8b\xf3\xd4\x58\xf3\xea\xb5\x80\xf1\x1d\xa2\xd4\xe4\x3c\x3a\xd5\x42\x2b\x63\x20\x91\x7f\xef\xe4\xa1\x20\x51\xca\x1c\x0a\x75\x27\x17\x7d\x05\x0e\xbd\x9a\x5c\xf8\xae\x94\x2c\xb9\x4e\xeb\xd8\x52\xf9\xc9\x15\x1f\xdb\xec\x59\x1b\xcc\x10\x04\x04\xac\x8b\x7a\xf7\x00\x3a\xe8\x9b\x63\x00\x8d\xdf\x50\x4c\x26\xd9\x6c\x56\x7b\x27\x27\xe9\x2e\x5a\x05\x37\xaf\xea\x59\xda\xe0\x20\x70\x33\x4c\x9a\x90\xdc\x6b\x38\xf4\x0d\x29\x5f\x8d\xd0\xaa\x5d\xa8\x4f\xa7\xf6\x4d\xda\x08\x9c\xd2\x84\x3c\x8f\xc6\xb4\x23\xf5\xef\xb4\x8d\xfa\x67\xbd\x08\x10\x0e\xd5\xf3\x70\x76\xde\xaf\x48\x2f\xd4\xf0\xb2\x3b\xf5\xe4\x93\x62\xcc\x1c\x2a\x16\x0e\xab\x46\x8f\x29\xd9\x14\x0b\x48\x6e\xde\x3d\xe8\x0c\x64\xfb\x3a\xa4\xf9\xd6\xc9\xfd\xd7\xe9\x82\x20\x78\x95\x18\xe8\x54\x0f\x13\xcf\x1d\x80\xd7\x51\x4d\x10\x2d\xb2\x44\xd2\x65\x62\x84\xbf\x71\xab\x45\x73\xcc\x66\x5e\x55\x7b\xf4\x1d\x23\x8f\x48\xc9\xda\x81\xef\x86\xf1\xb6\x67\x80\x88\x8c\xde\x29\xdd\x26\x88\xda\x70\x12\xa5\x3c\x86\x44\x80\x19\xe6\x31\x44\xf3\x0c\xc3\x27\x38\xba\x87\x6a\x41\x70\x1d\xe9\x37\xda\x00\xa2\xc1\xca\x6b\xf7\x65\x3e\x1a\x65\x91\xee\xfb\x6d\x8b\x11\x38\xfa\xf4\xe3\x02\xe1\x88\xa7\x42\x7b\xa2\x6c\x91\x18\x8d\xf5\x00\xf5\xeb\x81\xc6\x19\x4e\xf4\x1b\xbb\xc4\x0c\x2f\x0d\x43\x58\x58\x82\xe7\x04\x03\x29\x19\xa4\x65\x7f\x4c\xb9\xc1\xbd\xc3\x8a\x5f\x9a\xec\xef\x1f\xe9\x03\x19\xa0\xeb\x25\xe6\xf7\x03\x74\xb2\x62\x78\x41\xa3\x3f\xa7\x93\x2a\x7f\x4a\x29\xce\xbf\xb5\x4a\xbc\xfb\x4a\xab\xd5\x07\xfd\x4b\x09\xc5\x80\xea\x12\x96\x5f\xa7\x37\xa5\x06\x82\xf1\xd6\x2f\xf5\x35\x31\xb9\xde\x31\xb2\xd3\x0b\xb0\xd2\x50\xb6\x6e\x0e\x1c\x2f\x28\x0b\x6c\xb5\xbd\x72\xb6\x16\x37\xb5\x0a\xf2\x14\x08\xe3\x56\xd6\xed\x2e\x34\xc7\x4b\xac\xac\x1c\x65\x50\x2e\x52\x49\xf4\xbd\x2f\x64\xca\x89\x3a\x27\xdc\xaa\x93\xd0\x12\x86\x0a\xfd\x4d\x5d\xb9\xc4\x28\x49\x45\xc6\x5b\x8a\x8d\xf2\x86\x1d\x9b\xc7\x1b\xb5\x93\x74\xb1\x84\xe8\x0b\x27\x22\x4b\xa4\xa8\xb0\xd7\x4a\x6e\xeb\x9d\x04\xf2\xcb\xe4\x7e\x26\x12\x9f\x94\xfc\x5a\x8e\xb7\x03\xfc\x0c\x64\x15\x8d\x1a\x78\xba\xee\x8a\x1d\xf9\xf1\x0b\x75\xb6\x6d\xc3\x1d\xd3\x54\x80\xb2\x59\x52\x57\x87\x7b\xcc\x4c\x4f\x02\x4f\xf6\xe1\x3c\x39\xc6\x2a\x64\x36\x7d\xf1\x31\xa8\xc7\xee\x1a\x1a\x18\x20\x0c\x36\x06\xbb\xd3\x8b\xe0\x2e\x1f\x40\x31\x21\x0d\x0c\x62\x50\x4b\x6a\xcc\x44\x36\x39\xcc\xe1\x2a\x29\x07\xe9\x0a\xc5\x00\x96\x58\x89\x53\x14\xcd\x69\x12\x1f\x96\x91\x7d\x46\xcb\x81\x56\x06\xae\x70\xd6\x84\x40\x6d\x1c\xd8\x71\xdd\x36\x4c\x47\x4b\xdd\xdc\xdd\x38\x93\x4c\x22\xe2\x4a\xc3\x53\x61\x9c\x47\x05\x4d\x22\x90\x17\x81\x6f\xe0\xa5\x3d\x82\xeb\xe5\x45\x5d\xee\xdb\xdb\x97\x13\xc1\x9a\xb5\x91\x13\x37\xa1\x17\xce\x9e\x1a\xcc\x9c\xe4\xa8\x5b\x2a\x71\xa7\x5d\x68\x4f\x88\x1c\xfc\xe2\xd2\xaf\x6d\xc6\x92\x58\xe2\x47\x66\x40\x22\x9d\x4a\x81\xb6\x93\x0f\xd5\x35\x1b\x94\x7c\x28\x7c\xe3\x4b\x0a\x75\x1d\x41\x90\x9f\xba\x4c\xc2\x81\x97\xd1\x0c\x6d\x62\xf2\xf4\x90\xdc\xfc\x19\xb3\x1c\xbd\x94\xf7\xb5\x8c\x8a\x82\xdb\x80\x82\x62\x08\xb4\x92\x81\x45\x34\x0c\x74\x3a\x9d\x31\x52\x0e\x27\x18\xca\xd6\x4a\xc9\xe9\x24\x93\xa5\xf2\x21\xc1\x69\xae\x0c\x72\xec\xc2\x3a\x38\x7d\xfa\x36\x0c\xd5\xd7\x46\xde\xc6\x22\x87\x2a\x15\xa7\xee\x95\x53\x7a\xfe\x12\x14\xdd\xd2\x76\xbc\x1a\x47\xed\x39\xbc\x94\x1a\x68\xea\xfb\x80\x45\x1d\x7b\xd5\xa9\x03\x20\x05\x2c\x61\x5e\xbd\xdb\x81\x4c\xbc\x0c\x0a\x25\xa2\xf0\x8c\xa0\x05\x89\x69\x56\xcc\x0a\x5b\x1f\x3d\xdb\x2b\xb3\xb3\x0d\x67\x29\x03\xdc\x19\xa2\xe7\x60\x2c\x3c\xaa\x5b\x5b\x43\xd0\xc0\xe9\x51\x5d\x40\xc1\x83\x81\x62\xf9\xad\x70\xd1\xb8\x70\xc5\xac\x8b\xe9\x8c\x0a\xf9\x73\xa1\xf2\xee\x06\xc9\x47\x49\xf6\x74\xd8\x3f\x4b\xaa\x26\xd3\x7b\xa2\x11\xe3\x76\x15\xb4\x2d\x05\x26\xd3\xee\x0a\xc0\x88\xd8\xb4\x2c\x45\x77\x17\x01\xfe\x77\xb7\x5e\x7f\x37\x8d\x55\x39\x5e\x2e\x09\x47\xa6\xb9\x6a\xb1\x5d\xaa\xce\x71\x82\xb7\x8c\x99\x56\x98\xfe\x7c\x7d\x71\x9e\x4b\xee\xdc\x8e\x2a\x0c\x0d\x3f\x83\xa5\x3b\xaa\xde\xb9\xf3\x2c\x49\x6a\x77\xae\x45\x65\xab\xdb\xb3\xb3\xbb\x9f\x87\x67\xb7\xa3\xe6\xca\x51\xf9\xcf\x6a\xd7\xc4\x51\x62\xd6\x44\x5f\x63\x12\xae\xae\x6c\x41\x8c\x03\x0b\x94\x11\x33\x6b\x0d\x70\xc8\x92\x24\x4c\x53\x19\xb3\xbf\x9b\x71\x00\x00\x97\x31\xad\x66\x8e\x19\x6a\x5c\xb8\xf0\xfd\xf0\xb3\xbf\xab\xc1\xff\xae\x9f\x3d\x44\xf9\x24\x3e\xa0\x73\xf7\xd6\x9a\x75\x35\x4e\xd7\x2d\x8e\x83\xce\x96\x79\xae\x44\xbc\xcd\x8e\xc7\x2d\xb3\x45\xdd\x4c\xfe\xdc\x4e\x4e\x87\x5e\xbb\xbf\x87\x26\x8c\x4b\x16\x8e\xb5\x9c\x87\x71\x07\x3a\x7d\x4a\x37\xde\x76\x19\x46\x63\xa6\xf1\x04\xd0\x6e\x35\xad\xa7\x09\x9d\x32\x8d\x6c\x4c\x30\x9b\x65\x78\x46\xc4\x00\xd9\x97\x8f\x99\x6b\xee\x69\x8a\x71\xb8\xa6\x11\x18\x4a\x64\x87\x2c\xa4\x5d\x9d\xe4\x2b\x5e\x2c\x21\x04\xc3\xc6\xcc\xcc\x89\xcd\xf2\xe1\xb5\x17\xf4\xcf\xd7\x6e\x3a\x8a\xd3\xdc\x40\x26\x03\x8c\x8d\x99\xde\x5c\x9d\xfe\x67\x75\x3b\x70\x00\x41\x37\xdf\x80\x75\x31\x27\x36\xe9\x14\x64\xfa\x0c\xb4\x4c\x5d\x4f\xd8\x86\x18\x95\xa4\xf7\x0a\x8a\x68\x87\xb3\x26\x69\xbd\x3c\xb1\x9b\x61\xcf\x84\xa1\xad\x9a\xeb\xb7\xbe\x03\xd4\x81\xab\xae\xe1\xde\xcc\xb6\xb9\x18\x5b\x23\xcd\x73\x86\x62\xc5\x23\x8c\x8a\x50\x74\x08\x5e\xef\xa0\x5e\x7d\x6b\x92\xf4\xef\x1b\x89\xea\x50\xe6\xbe\xf5\x6b\x4d\xee\x72\xd3\x6b\x95\x85\xd3\xfc\xd2\x1d\x98\x48\x01\x51\xe6\x81\x75\x8b\x91\x45\x35\x1d\x05\xb6\x8e\x89\x15\x97\xc8\x4a\x9f\x26\x82\x12\x2a\x36\x22\x27\xd7\x9f\x5a\x53\xe4\x34\x04\x73\xd9\x75\x92\xb0\xe6\x9e\x0b\x04\x6c\x8d\x98\x34\xd8\x2c\xe3\x96\x21\x54\x8b\x17\x75\x78\x06\x70\x88\x14\xff\x0f\x1c\x13\x0d\xf2\x9d\x1b\xe8\x5a\xd8\x19\x17\x4a\x5c\x1a\x79\x67\xa4\xb6\x32\x73\xc6\xcc\xa6\x0f\x58\x71\x3c\xb4\xed\x79\xb8\xfb\x54\xc7\x19\x97\x1a\x7c\x0b\x1a\xab\xcc\xfb\x3a\x61\x39\x66\x90\xe8\xcd\xc0\x84\x9c\x08\xc8\x9e\x32\xe9\xcc\xe6\x0b\xaf\x74\x13\x66\xae\x1e\xf7\x1a\x99\x57\x50\x03\x82\x7b\xfe\x1b\xf5\xff\x7f\xf9\xe6\xff\x05\x00\x00\xff\xff\xd5\xf1\xe8\xf5\xd9\xe8\x02\x00") func adminSwaggerJsonBytes() ([]byte, error) { return bindataRead( @@ -92,7 +92,7 @@ func adminSwaggerJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "admin.swagger.json", size: 190408, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} + info := bindataFileInfo{name: "admin.swagger.json", size: 190681, 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/core/Workflow.java b/gen/pb-java/flyteidl/core/Workflow.java index 7c071015c1..0e2bdcf2fc 100644 --- a/gen/pb-java/flyteidl/core/Workflow.java +++ b/gen/pb-java/flyteidl/core/Workflow.java @@ -10195,6 +10195,427 @@ public flyteidl.core.Workflow.Node getDefaultInstanceForType() { } + public interface WorkflowMetadataOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.core.WorkflowMetadata) + com.google.protobuf.MessageOrBuilder { + } + /** + * <pre> + * Metadata for the entire workflow. + * To be used in the future. + * </pre> + * + * Protobuf type {@code flyteidl.core.WorkflowMetadata} + */ + public static final class WorkflowMetadata extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.core.WorkflowMetadata) + WorkflowMetadataOrBuilder { + private static final long serialVersionUID = 0L; + // Use WorkflowMetadata.newBuilder() to construct. + private WorkflowMetadata(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) { + super(builder); + } + private WorkflowMetadata() { + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private WorkflowMetadata( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + 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; + 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.core.Workflow.internal_static_flyteidl_core_WorkflowMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.core.Workflow.internal_static_flyteidl_core_WorkflowMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.core.Workflow.WorkflowMetadata.class, flyteidl.core.Workflow.WorkflowMetadata.Builder.class); + } + + 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 { + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + 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.core.Workflow.WorkflowMetadata)) { + return super.equals(obj); + } + flyteidl.core.Workflow.WorkflowMetadata other = (flyteidl.core.Workflow.WorkflowMetadata) obj; + + 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 = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.core.Workflow.WorkflowMetadata parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.core.Workflow.WorkflowMetadata parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.core.Workflow.WorkflowMetadata parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.core.Workflow.WorkflowMetadata parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.core.Workflow.WorkflowMetadata parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.core.Workflow.WorkflowMetadata parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.core.Workflow.WorkflowMetadata parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.core.Workflow.WorkflowMetadata 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.core.Workflow.WorkflowMetadata parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.core.Workflow.WorkflowMetadata 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.core.Workflow.WorkflowMetadata parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.core.Workflow.WorkflowMetadata 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.core.Workflow.WorkflowMetadata 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; + } + /** + * <pre> + * Metadata for the entire workflow. + * To be used in the future. + * </pre> + * + * Protobuf type {@code flyteidl.core.WorkflowMetadata} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:flyteidl.core.WorkflowMetadata) + flyteidl.core.Workflow.WorkflowMetadataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.core.Workflow.internal_static_flyteidl_core_WorkflowMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.core.Workflow.internal_static_flyteidl_core_WorkflowMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.core.Workflow.WorkflowMetadata.class, flyteidl.core.Workflow.WorkflowMetadata.Builder.class); + } + + // Construct using flyteidl.core.Workflow.WorkflowMetadata.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(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.core.Workflow.internal_static_flyteidl_core_WorkflowMetadata_descriptor; + } + + @java.lang.Override + public flyteidl.core.Workflow.WorkflowMetadata getDefaultInstanceForType() { + return flyteidl.core.Workflow.WorkflowMetadata.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.core.Workflow.WorkflowMetadata build() { + flyteidl.core.Workflow.WorkflowMetadata result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.core.Workflow.WorkflowMetadata buildPartial() { + flyteidl.core.Workflow.WorkflowMetadata result = new flyteidl.core.Workflow.WorkflowMetadata(this); + 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.core.Workflow.WorkflowMetadata) { + return mergeFrom((flyteidl.core.Workflow.WorkflowMetadata)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.core.Workflow.WorkflowMetadata other) { + if (other == flyteidl.core.Workflow.WorkflowMetadata.getDefaultInstance()) return this; + 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.core.Workflow.WorkflowMetadata parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.core.Workflow.WorkflowMetadata) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + 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.core.WorkflowMetadata) + } + + // @@protoc_insertion_point(class_scope:flyteidl.core.WorkflowMetadata) + private static final flyteidl.core.Workflow.WorkflowMetadata DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.core.Workflow.WorkflowMetadata(); + } + + public static flyteidl.core.Workflow.WorkflowMetadata getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser<WorkflowMetadata> + PARSER = new com.google.protobuf.AbstractParser<WorkflowMetadata>() { + @java.lang.Override + public WorkflowMetadata parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new WorkflowMetadata(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser<WorkflowMetadata> parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser<WorkflowMetadata> getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.core.Workflow.WorkflowMetadata getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + public interface WorkflowMetadataDefaultsOrBuilder extends // @@protoc_insertion_point(interface_extends:flyteidl.core.WorkflowMetadataDefaults) com.google.protobuf.MessageOrBuilder { @@ -10742,25 +11163,25 @@ public interface WorkflowTemplateOrBuilder extends * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - boolean hasMetadataDefaults(); + boolean hasMetadata(); /** * <pre> * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - flyteidl.core.Workflow.WorkflowMetadataDefaults getMetadataDefaults(); + flyteidl.core.Workflow.WorkflowMetadata getMetadata(); /** * <pre> * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder getMetadataDefaultsOrBuilder(); + flyteidl.core.Workflow.WorkflowMetadataOrBuilder getMetadataOrBuilder(); /** * <pre> @@ -10935,6 +11356,31 @@ flyteidl.core.Literals.BindingOrBuilder getOutputsOrBuilder( * <code>.flyteidl.core.Node failure_node = 6;</code> */ flyteidl.core.Workflow.NodeOrBuilder getFailureNodeOrBuilder(); + + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + boolean hasMetadataDefaults(); + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + flyteidl.core.Workflow.WorkflowMetadataDefaults getMetadataDefaults(); + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder getMetadataDefaultsOrBuilder(); } /** * <pre> @@ -10996,14 +11442,14 @@ private WorkflowTemplate( break; } case 18: { - flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder subBuilder = null; - if (metadataDefaults_ != null) { - subBuilder = metadataDefaults_.toBuilder(); + flyteidl.core.Workflow.WorkflowMetadata.Builder subBuilder = null; + if (metadata_ != null) { + subBuilder = metadata_.toBuilder(); } - metadataDefaults_ = input.readMessage(flyteidl.core.Workflow.WorkflowMetadataDefaults.parser(), extensionRegistry); + metadata_ = input.readMessage(flyteidl.core.Workflow.WorkflowMetadata.parser(), extensionRegistry); if (subBuilder != null) { - subBuilder.mergeFrom(metadataDefaults_); - metadataDefaults_ = subBuilder.buildPartial(); + subBuilder.mergeFrom(metadata_); + metadata_ = subBuilder.buildPartial(); } break; @@ -11052,6 +11498,19 @@ private WorkflowTemplate( break; } + case 58: { + flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder subBuilder = null; + if (metadataDefaults_ != null) { + subBuilder = metadataDefaults_.toBuilder(); + } + metadataDefaults_ = input.readMessage(flyteidl.core.Workflow.WorkflowMetadataDefaults.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(metadataDefaults_); + metadataDefaults_ = subBuilder.buildPartial(); + } + + break; + } default: { if (!parseUnknownField( input, unknownFields, extensionRegistry, tag)) { @@ -11124,37 +11583,37 @@ public flyteidl.core.IdentifierOuterClass.IdentifierOrBuilder getIdOrBuilder() { return getId(); } - public static final int METADATA_DEFAULTS_FIELD_NUMBER = 2; - private flyteidl.core.Workflow.WorkflowMetadataDefaults metadataDefaults_; + public static final int METADATA_FIELD_NUMBER = 2; + private flyteidl.core.Workflow.WorkflowMetadata metadata_; /** * <pre> * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - public boolean hasMetadataDefaults() { - return metadataDefaults_ != null; + public boolean hasMetadata() { + return metadata_ != null; } /** * <pre> * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - public flyteidl.core.Workflow.WorkflowMetadataDefaults getMetadataDefaults() { - return metadataDefaults_ == null ? flyteidl.core.Workflow.WorkflowMetadataDefaults.getDefaultInstance() : metadataDefaults_; + public flyteidl.core.Workflow.WorkflowMetadata getMetadata() { + return metadata_ == null ? flyteidl.core.Workflow.WorkflowMetadata.getDefaultInstance() : metadata_; } /** * <pre> * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - public flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder getMetadataDefaultsOrBuilder() { - return getMetadataDefaults(); + public flyteidl.core.Workflow.WorkflowMetadataOrBuilder getMetadataOrBuilder() { + return getMetadata(); } public static final int INTERFACE_FIELD_NUMBER = 3; @@ -11369,6 +11828,39 @@ public flyteidl.core.Workflow.NodeOrBuilder getFailureNodeOrBuilder() { return getFailureNode(); } + public static final int METADATA_DEFAULTS_FIELD_NUMBER = 7; + private flyteidl.core.Workflow.WorkflowMetadataDefaults metadataDefaults_; + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + public boolean hasMetadataDefaults() { + return metadataDefaults_ != null; + } + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + public flyteidl.core.Workflow.WorkflowMetadataDefaults getMetadataDefaults() { + return metadataDefaults_ == null ? flyteidl.core.Workflow.WorkflowMetadataDefaults.getDefaultInstance() : metadataDefaults_; + } + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + public flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder getMetadataDefaultsOrBuilder() { + return getMetadataDefaults(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -11386,8 +11878,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (id_ != null) { output.writeMessage(1, getId()); } - if (metadataDefaults_ != null) { - output.writeMessage(2, getMetadataDefaults()); + if (metadata_ != null) { + output.writeMessage(2, getMetadata()); } if (interface_ != null) { output.writeMessage(3, getInterface()); @@ -11401,6 +11893,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (failureNode_ != null) { output.writeMessage(6, getFailureNode()); } + if (metadataDefaults_ != null) { + output.writeMessage(7, getMetadataDefaults()); + } unknownFields.writeTo(output); } @@ -11414,9 +11909,9 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(1, getId()); } - if (metadataDefaults_ != null) { + if (metadata_ != null) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getMetadataDefaults()); + .computeMessageSize(2, getMetadata()); } if (interface_ != null) { size += com.google.protobuf.CodedOutputStream @@ -11434,6 +11929,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(6, getFailureNode()); } + if (metadataDefaults_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(7, getMetadataDefaults()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -11454,10 +11953,10 @@ public boolean equals(final java.lang.Object obj) { if (!getId() .equals(other.getId())) return false; } - if (hasMetadataDefaults() != other.hasMetadataDefaults()) return false; - if (hasMetadataDefaults()) { - if (!getMetadataDefaults() - .equals(other.getMetadataDefaults())) return false; + if (hasMetadata() != other.hasMetadata()) return false; + if (hasMetadata()) { + if (!getMetadata() + .equals(other.getMetadata())) return false; } if (hasInterface() != other.hasInterface()) return false; if (hasInterface()) { @@ -11473,6 +11972,11 @@ public boolean equals(final java.lang.Object obj) { if (!getFailureNode() .equals(other.getFailureNode())) return false; } + if (hasMetadataDefaults() != other.hasMetadataDefaults()) return false; + if (hasMetadataDefaults()) { + if (!getMetadataDefaults() + .equals(other.getMetadataDefaults())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -11488,9 +11992,9 @@ public int hashCode() { hash = (37 * hash) + ID_FIELD_NUMBER; hash = (53 * hash) + getId().hashCode(); } - if (hasMetadataDefaults()) { - hash = (37 * hash) + METADATA_DEFAULTS_FIELD_NUMBER; - hash = (53 * hash) + getMetadataDefaults().hashCode(); + if (hasMetadata()) { + hash = (37 * hash) + METADATA_FIELD_NUMBER; + hash = (53 * hash) + getMetadata().hashCode(); } if (hasInterface()) { hash = (37 * hash) + INTERFACE_FIELD_NUMBER; @@ -11508,6 +12012,10 @@ public int hashCode() { hash = (37 * hash) + FAILURE_NODE_FIELD_NUMBER; hash = (53 * hash) + getFailureNode().hashCode(); } + if (hasMetadataDefaults()) { + hash = (37 * hash) + METADATA_DEFAULTS_FIELD_NUMBER; + hash = (53 * hash) + getMetadataDefaults().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -11654,11 +12162,11 @@ public Builder clear() { id_ = null; idBuilder_ = null; } - if (metadataDefaultsBuilder_ == null) { - metadataDefaults_ = null; + if (metadataBuilder_ == null) { + metadata_ = null; } else { - metadataDefaults_ = null; - metadataDefaultsBuilder_ = null; + metadata_ = null; + metadataBuilder_ = null; } if (interfaceBuilder_ == null) { interface_ = null; @@ -11684,6 +12192,12 @@ public Builder clear() { failureNode_ = null; failureNodeBuilder_ = null; } + if (metadataDefaultsBuilder_ == null) { + metadataDefaults_ = null; + } else { + metadataDefaults_ = null; + metadataDefaultsBuilder_ = null; + } return this; } @@ -11717,10 +12231,10 @@ public flyteidl.core.Workflow.WorkflowTemplate buildPartial() { } else { result.id_ = idBuilder_.build(); } - if (metadataDefaultsBuilder_ == null) { - result.metadataDefaults_ = metadataDefaults_; + if (metadataBuilder_ == null) { + result.metadata_ = metadata_; } else { - result.metadataDefaults_ = metadataDefaultsBuilder_.build(); + result.metadata_ = metadataBuilder_.build(); } if (interfaceBuilder_ == null) { result.interface_ = interface_; @@ -11750,6 +12264,11 @@ public flyteidl.core.Workflow.WorkflowTemplate buildPartial() { } else { result.failureNode_ = failureNodeBuilder_.build(); } + if (metadataDefaultsBuilder_ == null) { + result.metadataDefaults_ = metadataDefaults_; + } else { + result.metadataDefaults_ = metadataDefaultsBuilder_.build(); + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -11802,8 +12321,8 @@ public Builder mergeFrom(flyteidl.core.Workflow.WorkflowTemplate other) { if (other.hasId()) { mergeId(other.getId()); } - if (other.hasMetadataDefaults()) { - mergeMetadataDefaults(other.getMetadataDefaults()); + if (other.hasMetadata()) { + mergeMetadata(other.getMetadata()); } if (other.hasInterface()) { mergeInterface(other.getInterface()); @@ -11863,6 +12382,9 @@ public Builder mergeFrom(flyteidl.core.Workflow.WorkflowTemplate other) { if (other.hasFailureNode()) { mergeFailureNode(other.getFailureNode()); } + if (other.hasMetadataDefaults()) { + mergeMetadataDefaults(other.getMetadataDefaults()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -12046,31 +12568,31 @@ public flyteidl.core.IdentifierOuterClass.IdentifierOrBuilder getIdOrBuilder() { return idBuilder_; } - private flyteidl.core.Workflow.WorkflowMetadataDefaults metadataDefaults_; + private flyteidl.core.Workflow.WorkflowMetadata metadata_; private com.google.protobuf.SingleFieldBuilderV3< - flyteidl.core.Workflow.WorkflowMetadataDefaults, flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder, flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder> metadataDefaultsBuilder_; + flyteidl.core.Workflow.WorkflowMetadata, flyteidl.core.Workflow.WorkflowMetadata.Builder, flyteidl.core.Workflow.WorkflowMetadataOrBuilder> metadataBuilder_; /** * <pre> * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - public boolean hasMetadataDefaults() { - return metadataDefaultsBuilder_ != null || metadataDefaults_ != null; + public boolean hasMetadata() { + return metadataBuilder_ != null || metadata_ != null; } /** * <pre> * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - public flyteidl.core.Workflow.WorkflowMetadataDefaults getMetadataDefaults() { - if (metadataDefaultsBuilder_ == null) { - return metadataDefaults_ == null ? flyteidl.core.Workflow.WorkflowMetadataDefaults.getDefaultInstance() : metadataDefaults_; + public flyteidl.core.Workflow.WorkflowMetadata getMetadata() { + if (metadataBuilder_ == null) { + return metadata_ == null ? flyteidl.core.Workflow.WorkflowMetadata.getDefaultInstance() : metadata_; } else { - return metadataDefaultsBuilder_.getMessage(); + return metadataBuilder_.getMessage(); } } /** @@ -12078,17 +12600,17 @@ public flyteidl.core.Workflow.WorkflowMetadataDefaults getMetadataDefaults() { * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - public Builder setMetadataDefaults(flyteidl.core.Workflow.WorkflowMetadataDefaults value) { - if (metadataDefaultsBuilder_ == null) { + public Builder setMetadata(flyteidl.core.Workflow.WorkflowMetadata value) { + if (metadataBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - metadataDefaults_ = value; + metadata_ = value; onChanged(); } else { - metadataDefaultsBuilder_.setMessage(value); + metadataBuilder_.setMessage(value); } return this; @@ -12098,15 +12620,15 @@ public Builder setMetadataDefaults(flyteidl.core.Workflow.WorkflowMetadataDefaul * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - public Builder setMetadataDefaults( - flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder builderForValue) { - if (metadataDefaultsBuilder_ == null) { - metadataDefaults_ = builderForValue.build(); + public Builder setMetadata( + flyteidl.core.Workflow.WorkflowMetadata.Builder builderForValue) { + if (metadataBuilder_ == null) { + metadata_ = builderForValue.build(); onChanged(); } else { - metadataDefaultsBuilder_.setMessage(builderForValue.build()); + metadataBuilder_.setMessage(builderForValue.build()); } return this; @@ -12116,19 +12638,19 @@ public Builder setMetadataDefaults( * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - public Builder mergeMetadataDefaults(flyteidl.core.Workflow.WorkflowMetadataDefaults value) { - if (metadataDefaultsBuilder_ == null) { - if (metadataDefaults_ != null) { - metadataDefaults_ = - flyteidl.core.Workflow.WorkflowMetadataDefaults.newBuilder(metadataDefaults_).mergeFrom(value).buildPartial(); + public Builder mergeMetadata(flyteidl.core.Workflow.WorkflowMetadata value) { + if (metadataBuilder_ == null) { + if (metadata_ != null) { + metadata_ = + flyteidl.core.Workflow.WorkflowMetadata.newBuilder(metadata_).mergeFrom(value).buildPartial(); } else { - metadataDefaults_ = value; + metadata_ = value; } onChanged(); } else { - metadataDefaultsBuilder_.mergeFrom(value); + metadataBuilder_.mergeFrom(value); } return this; @@ -12138,15 +12660,15 @@ public Builder mergeMetadataDefaults(flyteidl.core.Workflow.WorkflowMetadataDefa * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - public Builder clearMetadataDefaults() { - if (metadataDefaultsBuilder_ == null) { - metadataDefaults_ = null; + public Builder clearMetadata() { + if (metadataBuilder_ == null) { + metadata_ = null; onChanged(); } else { - metadataDefaults_ = null; - metadataDefaultsBuilder_ = null; + metadata_ = null; + metadataBuilder_ = null; } return this; @@ -12156,26 +12678,26 @@ public Builder clearMetadataDefaults() { * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - public flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder getMetadataDefaultsBuilder() { + public flyteidl.core.Workflow.WorkflowMetadata.Builder getMetadataBuilder() { onChanged(); - return getMetadataDefaultsFieldBuilder().getBuilder(); + return getMetadataFieldBuilder().getBuilder(); } /** * <pre> * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ - public flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder getMetadataDefaultsOrBuilder() { - if (metadataDefaultsBuilder_ != null) { - return metadataDefaultsBuilder_.getMessageOrBuilder(); + public flyteidl.core.Workflow.WorkflowMetadataOrBuilder getMetadataOrBuilder() { + if (metadataBuilder_ != null) { + return metadataBuilder_.getMessageOrBuilder(); } else { - return metadataDefaults_ == null ? - flyteidl.core.Workflow.WorkflowMetadataDefaults.getDefaultInstance() : metadataDefaults_; + return metadata_ == null ? + flyteidl.core.Workflow.WorkflowMetadata.getDefaultInstance() : metadata_; } } /** @@ -12183,20 +12705,20 @@ public flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder getMetadataDefau * Extra metadata about the workflow. * </pre> * - * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 2;</code> + * <code>.flyteidl.core.WorkflowMetadata metadata = 2;</code> */ private com.google.protobuf.SingleFieldBuilderV3< - flyteidl.core.Workflow.WorkflowMetadataDefaults, flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder, flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder> - getMetadataDefaultsFieldBuilder() { - if (metadataDefaultsBuilder_ == null) { - metadataDefaultsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - flyteidl.core.Workflow.WorkflowMetadataDefaults, flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder, flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder>( - getMetadataDefaults(), + flyteidl.core.Workflow.WorkflowMetadata, flyteidl.core.Workflow.WorkflowMetadata.Builder, flyteidl.core.Workflow.WorkflowMetadataOrBuilder> + getMetadataFieldBuilder() { + if (metadataBuilder_ == null) { + metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Workflow.WorkflowMetadata, flyteidl.core.Workflow.WorkflowMetadata.Builder, flyteidl.core.Workflow.WorkflowMetadataOrBuilder>( + getMetadata(), getParentForChildren(), isClean()); - metadataDefaults_ = null; + metadata_ = null; } - return metadataDefaultsBuilder_; + return metadataBuilder_; } private flyteidl.core.Interface.TypedInterface interface_; @@ -13254,6 +13776,159 @@ public flyteidl.core.Workflow.NodeOrBuilder getFailureNodeOrBuilder() { } return failureNodeBuilder_; } + + private flyteidl.core.Workflow.WorkflowMetadataDefaults metadataDefaults_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Workflow.WorkflowMetadataDefaults, flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder, flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder> metadataDefaultsBuilder_; + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + public boolean hasMetadataDefaults() { + return metadataDefaultsBuilder_ != null || metadataDefaults_ != null; + } + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + public flyteidl.core.Workflow.WorkflowMetadataDefaults getMetadataDefaults() { + if (metadataDefaultsBuilder_ == null) { + return metadataDefaults_ == null ? flyteidl.core.Workflow.WorkflowMetadataDefaults.getDefaultInstance() : metadataDefaults_; + } else { + return metadataDefaultsBuilder_.getMessage(); + } + } + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + public Builder setMetadataDefaults(flyteidl.core.Workflow.WorkflowMetadataDefaults value) { + if (metadataDefaultsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + metadataDefaults_ = value; + onChanged(); + } else { + metadataDefaultsBuilder_.setMessage(value); + } + + return this; + } + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + public Builder setMetadataDefaults( + flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder builderForValue) { + if (metadataDefaultsBuilder_ == null) { + metadataDefaults_ = builderForValue.build(); + onChanged(); + } else { + metadataDefaultsBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + public Builder mergeMetadataDefaults(flyteidl.core.Workflow.WorkflowMetadataDefaults value) { + if (metadataDefaultsBuilder_ == null) { + if (metadataDefaults_ != null) { + metadataDefaults_ = + flyteidl.core.Workflow.WorkflowMetadataDefaults.newBuilder(metadataDefaults_).mergeFrom(value).buildPartial(); + } else { + metadataDefaults_ = value; + } + onChanged(); + } else { + metadataDefaultsBuilder_.mergeFrom(value); + } + + return this; + } + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + public Builder clearMetadataDefaults() { + if (metadataDefaultsBuilder_ == null) { + metadataDefaults_ = null; + onChanged(); + } else { + metadataDefaults_ = null; + metadataDefaultsBuilder_ = null; + } + + return this; + } + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + public flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder getMetadataDefaultsBuilder() { + + onChanged(); + return getMetadataDefaultsFieldBuilder().getBuilder(); + } + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + public flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder getMetadataDefaultsOrBuilder() { + if (metadataDefaultsBuilder_ != null) { + return metadataDefaultsBuilder_.getMessageOrBuilder(); + } else { + return metadataDefaults_ == null ? + flyteidl.core.Workflow.WorkflowMetadataDefaults.getDefaultInstance() : metadataDefaults_; + } + } + /** + * <pre> + * workflow defaults + * </pre> + * + * <code>.flyteidl.core.WorkflowMetadataDefaults metadata_defaults = 7;</code> + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Workflow.WorkflowMetadataDefaults, flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder, flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder> + getMetadataDefaultsFieldBuilder() { + if (metadataDefaultsBuilder_ == null) { + metadataDefaultsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Workflow.WorkflowMetadataDefaults, flyteidl.core.Workflow.WorkflowMetadataDefaults.Builder, flyteidl.core.Workflow.WorkflowMetadataDefaultsOrBuilder>( + getMetadataDefaults(), + getParentForChildren(), + isClean()); + metadataDefaults_ = null; + } + return metadataDefaultsBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -13347,6 +14022,11 @@ public flyteidl.core.Workflow.WorkflowTemplate getDefaultInstanceForType() { private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_flyteidl_core_Node_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_core_WorkflowMetadata_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_core_WorkflowMetadata_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_flyteidl_core_WorkflowMetadataDefaults_descriptor; private static final @@ -13399,17 +14079,19 @@ public flyteidl.core.Workflow.WorkflowTemplate getDefaultInstanceForType() { "flyteidl.core.TaskNodeH\000\0224\n\rworkflow_nod" + "e\030\007 \001(\0132\033.flyteidl.core.WorkflowNodeH\000\0220" + "\n\013branch_node\030\010 \001(\0132\031.flyteidl.core.Bran" + - "chNodeH\000B\010\n\006target\"1\n\030WorkflowMetadataDe" + - "faults\022\025\n\rinterruptible\030\001 \001(\010\"\247\002\n\020Workfl" + - "owTemplate\022%\n\002id\030\001 \001(\0132\031.flyteidl.core.I" + - "dentifier\022B\n\021metadata_defaults\030\002 \001(\0132\'.f" + - "lyteidl.core.WorkflowMetadataDefaults\0220\n" + - "\tinterface\030\003 \001(\0132\035.flyteidl.core.TypedIn" + - "terface\022\"\n\005nodes\030\004 \003(\0132\023.flyteidl.core.N" + - "ode\022\'\n\007outputs\030\005 \003(\0132\026.flyteidl.core.Bin" + - "ding\022)\n\014failure_node\030\006 \001(\0132\023.flyteidl.co" + - "re.NodeB2Z0github.com/lyft/flyteidl/gen/" + - "pb-go/flyteidl/coreb\006proto3" + "chNodeH\000B\010\n\006target\"\022\n\020WorkflowMetadata\"1" + + "\n\030WorkflowMetadataDefaults\022\025\n\rinterrupti" + + "ble\030\001 \001(\010\"\332\002\n\020WorkflowTemplate\022%\n\002id\030\001 \001" + + "(\0132\031.flyteidl.core.Identifier\0221\n\010metadat" + + "a\030\002 \001(\0132\037.flyteidl.core.WorkflowMetadata" + + "\0220\n\tinterface\030\003 \001(\0132\035.flyteidl.core.Type" + + "dInterface\022\"\n\005nodes\030\004 \003(\0132\023.flyteidl.cor" + + "e.Node\022\'\n\007outputs\030\005 \003(\0132\026.flyteidl.core." + + "Binding\022)\n\014failure_node\030\006 \001(\0132\023.flyteidl" + + ".core.Node\022B\n\021metadata_defaults\030\007 \001(\0132\'." + + "flyteidl.core.WorkflowMetadataDefaultsB2" + + "Z0github.com/lyft/flyteidl/gen/pb-go/fly" + + "teidl/coreb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -13477,18 +14159,24 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_core_Node_descriptor, new java.lang.String[] { "Id", "Metadata", "Inputs", "UpstreamNodeIds", "OutputAliases", "TaskNode", "WorkflowNode", "BranchNode", "Target", }); - internal_static_flyteidl_core_WorkflowMetadataDefaults_descriptor = + internal_static_flyteidl_core_WorkflowMetadata_descriptor = getDescriptor().getMessageTypes().get(8); + internal_static_flyteidl_core_WorkflowMetadata_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_core_WorkflowMetadata_descriptor, + new java.lang.String[] { }); + internal_static_flyteidl_core_WorkflowMetadataDefaults_descriptor = + getDescriptor().getMessageTypes().get(9); internal_static_flyteidl_core_WorkflowMetadataDefaults_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_core_WorkflowMetadataDefaults_descriptor, new java.lang.String[] { "Interruptible", }); internal_static_flyteidl_core_WorkflowTemplate_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(10); internal_static_flyteidl_core_WorkflowTemplate_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_core_WorkflowTemplate_descriptor, - new java.lang.String[] { "Id", "MetadataDefaults", "Interface", "Nodes", "Outputs", "FailureNode", }); + new java.lang.String[] { "Id", "Metadata", "Interface", "Nodes", "Outputs", "FailureNode", "MetadataDefaults", }); flyteidl.core.Condition.getDescriptor(); flyteidl.core.IdentifierOuterClass.getDescriptor(); flyteidl.core.Interface.getDescriptor(); diff --git a/gen/pb-js/flyteidl.d.ts b/gen/pb-js/flyteidl.d.ts index 4ca1e11200..f98faffc10 100644 --- a/gen/pb-js/flyteidl.d.ts +++ b/gen/pb-js/flyteidl.d.ts @@ -819,6 +819,52 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a WorkflowMetadata. */ + interface IWorkflowMetadata { + } + + /** Represents a WorkflowMetadata. */ + class WorkflowMetadata implements IWorkflowMetadata { + + /** + * Constructs a new WorkflowMetadata. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.core.IWorkflowMetadata); + + /** + * Creates a new WorkflowMetadata instance using the specified properties. + * @param [properties] Properties to set + * @returns WorkflowMetadata instance + */ + public static create(properties?: flyteidl.core.IWorkflowMetadata): flyteidl.core.WorkflowMetadata; + + /** + * Encodes the specified WorkflowMetadata message. Does not implicitly {@link flyteidl.core.WorkflowMetadata.verify|verify} messages. + * @param message WorkflowMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.core.IWorkflowMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WorkflowMetadata message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns WorkflowMetadata + * @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.core.WorkflowMetadata; + + /** + * Verifies a WorkflowMetadata 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 WorkflowMetadataDefaults. */ interface IWorkflowMetadataDefaults { @@ -877,8 +923,8 @@ export namespace flyteidl { /** WorkflowTemplate id */ id?: (flyteidl.core.IIdentifier|null); - /** WorkflowTemplate metadataDefaults */ - metadataDefaults?: (flyteidl.core.IWorkflowMetadataDefaults|null); + /** WorkflowTemplate metadata */ + metadata?: (flyteidl.core.IWorkflowMetadata|null); /** WorkflowTemplate interface */ "interface"?: (flyteidl.core.ITypedInterface|null); @@ -891,6 +937,9 @@ export namespace flyteidl { /** WorkflowTemplate failureNode */ failureNode?: (flyteidl.core.INode|null); + + /** WorkflowTemplate metadataDefaults */ + metadataDefaults?: (flyteidl.core.IWorkflowMetadataDefaults|null); } /** Represents a WorkflowTemplate. */ @@ -905,8 +954,8 @@ export namespace flyteidl { /** WorkflowTemplate id. */ public id?: (flyteidl.core.IIdentifier|null); - /** WorkflowTemplate metadataDefaults. */ - public metadataDefaults?: (flyteidl.core.IWorkflowMetadataDefaults|null); + /** WorkflowTemplate metadata. */ + public metadata?: (flyteidl.core.IWorkflowMetadata|null); /** WorkflowTemplate interface. */ public interface?: (flyteidl.core.ITypedInterface|null); @@ -920,6 +969,9 @@ export namespace flyteidl { /** WorkflowTemplate failureNode. */ public failureNode?: (flyteidl.core.INode|null); + /** WorkflowTemplate metadataDefaults. */ + public metadataDefaults?: (flyteidl.core.IWorkflowMetadataDefaults|null); + /** * Creates a new WorkflowTemplate instance using the specified properties. * @param [properties] Properties to set diff --git a/gen/pb-js/flyteidl.js b/gen/pb-js/flyteidl.js index 0144602bc9..a32a0c8657 100644 --- a/gen/pb-js/flyteidl.js +++ b/gen/pb-js/flyteidl.js @@ -2040,6 +2040,99 @@ export const flyteidl = $root.flyteidl = (() => { return Node; })(); + core.WorkflowMetadata = (function() { + + /** + * Properties of a WorkflowMetadata. + * @memberof flyteidl.core + * @interface IWorkflowMetadata + */ + + /** + * Constructs a new WorkflowMetadata. + * @memberof flyteidl.core + * @classdesc Represents a WorkflowMetadata. + * @implements IWorkflowMetadata + * @constructor + * @param {flyteidl.core.IWorkflowMetadata=} [properties] Properties to set + */ + function WorkflowMetadata(properties) { + if (properties) + for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new WorkflowMetadata instance using the specified properties. + * @function create + * @memberof flyteidl.core.WorkflowMetadata + * @static + * @param {flyteidl.core.IWorkflowMetadata=} [properties] Properties to set + * @returns {flyteidl.core.WorkflowMetadata} WorkflowMetadata instance + */ + WorkflowMetadata.create = function create(properties) { + return new WorkflowMetadata(properties); + }; + + /** + * Encodes the specified WorkflowMetadata message. Does not implicitly {@link flyteidl.core.WorkflowMetadata.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.WorkflowMetadata + * @static + * @param {flyteidl.core.IWorkflowMetadata} message WorkflowMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WorkflowMetadata.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Decodes a WorkflowMetadata message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.WorkflowMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.WorkflowMetadata} WorkflowMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WorkflowMetadata.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + let end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.WorkflowMetadata(); + while (reader.pos < end) { + let tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a WorkflowMetadata message. + * @function verify + * @memberof flyteidl.core.WorkflowMetadata + * @static + * @param {Object.<string,*>} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + WorkflowMetadata.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + return WorkflowMetadata; + })(); + core.WorkflowMetadataDefaults = (function() { /** @@ -2157,11 +2250,12 @@ export const flyteidl = $root.flyteidl = (() => { * @memberof flyteidl.core * @interface IWorkflowTemplate * @property {flyteidl.core.IIdentifier|null} [id] WorkflowTemplate id - * @property {flyteidl.core.IWorkflowMetadataDefaults|null} [metadataDefaults] WorkflowTemplate metadataDefaults + * @property {flyteidl.core.IWorkflowMetadata|null} [metadata] WorkflowTemplate metadata * @property {flyteidl.core.ITypedInterface|null} ["interface"] WorkflowTemplate interface * @property {Array.<flyteidl.core.INode>|null} [nodes] WorkflowTemplate nodes * @property {Array.<flyteidl.core.IBinding>|null} [outputs] WorkflowTemplate outputs * @property {flyteidl.core.INode|null} [failureNode] WorkflowTemplate failureNode + * @property {flyteidl.core.IWorkflowMetadataDefaults|null} [metadataDefaults] WorkflowTemplate metadataDefaults */ /** @@ -2190,12 +2284,12 @@ export const flyteidl = $root.flyteidl = (() => { WorkflowTemplate.prototype.id = null; /** - * WorkflowTemplate metadataDefaults. - * @member {flyteidl.core.IWorkflowMetadataDefaults|null|undefined} metadataDefaults + * WorkflowTemplate metadata. + * @member {flyteidl.core.IWorkflowMetadata|null|undefined} metadata * @memberof flyteidl.core.WorkflowTemplate * @instance */ - WorkflowTemplate.prototype.metadataDefaults = null; + WorkflowTemplate.prototype.metadata = null; /** * WorkflowTemplate interface. @@ -2229,6 +2323,14 @@ export const flyteidl = $root.flyteidl = (() => { */ WorkflowTemplate.prototype.failureNode = null; + /** + * WorkflowTemplate metadataDefaults. + * @member {flyteidl.core.IWorkflowMetadataDefaults|null|undefined} metadataDefaults + * @memberof flyteidl.core.WorkflowTemplate + * @instance + */ + WorkflowTemplate.prototype.metadataDefaults = null; + /** * Creates a new WorkflowTemplate instance using the specified properties. * @function create @@ -2255,8 +2357,8 @@ export const flyteidl = $root.flyteidl = (() => { writer = $Writer.create(); if (message.id != null && message.hasOwnProperty("id")) $root.flyteidl.core.Identifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.metadataDefaults != null && message.hasOwnProperty("metadataDefaults")) - $root.flyteidl.core.WorkflowMetadataDefaults.encode(message.metadataDefaults, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.metadata != null && message.hasOwnProperty("metadata")) + $root.flyteidl.core.WorkflowMetadata.encode(message.metadata, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message["interface"] != null && message.hasOwnProperty("interface")) $root.flyteidl.core.TypedInterface.encode(message["interface"], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.nodes != null && message.nodes.length) @@ -2267,6 +2369,8 @@ export const flyteidl = $root.flyteidl = (() => { $root.flyteidl.core.Binding.encode(message.outputs[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); if (message.failureNode != null && message.hasOwnProperty("failureNode")) $root.flyteidl.core.Node.encode(message.failureNode, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.metadataDefaults != null && message.hasOwnProperty("metadataDefaults")) + $root.flyteidl.core.WorkflowMetadataDefaults.encode(message.metadataDefaults, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; }; @@ -2292,7 +2396,7 @@ export const flyteidl = $root.flyteidl = (() => { message.id = $root.flyteidl.core.Identifier.decode(reader, reader.uint32()); break; case 2: - message.metadataDefaults = $root.flyteidl.core.WorkflowMetadataDefaults.decode(reader, reader.uint32()); + message.metadata = $root.flyteidl.core.WorkflowMetadata.decode(reader, reader.uint32()); break; case 3: message["interface"] = $root.flyteidl.core.TypedInterface.decode(reader, reader.uint32()); @@ -2310,6 +2414,9 @@ export const flyteidl = $root.flyteidl = (() => { case 6: message.failureNode = $root.flyteidl.core.Node.decode(reader, reader.uint32()); break; + case 7: + message.metadataDefaults = $root.flyteidl.core.WorkflowMetadataDefaults.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -2334,10 +2441,10 @@ export const flyteidl = $root.flyteidl = (() => { if (error) return "id." + error; } - if (message.metadataDefaults != null && message.hasOwnProperty("metadataDefaults")) { - let error = $root.flyteidl.core.WorkflowMetadataDefaults.verify(message.metadataDefaults); + if (message.metadata != null && message.hasOwnProperty("metadata")) { + let error = $root.flyteidl.core.WorkflowMetadata.verify(message.metadata); if (error) - return "metadataDefaults." + error; + return "metadata." + error; } if (message["interface"] != null && message.hasOwnProperty("interface")) { let error = $root.flyteidl.core.TypedInterface.verify(message["interface"]); @@ -2367,6 +2474,11 @@ export const flyteidl = $root.flyteidl = (() => { if (error) return "failureNode." + error; } + if (message.metadataDefaults != null && message.hasOwnProperty("metadataDefaults")) { + let error = $root.flyteidl.core.WorkflowMetadataDefaults.verify(message.metadataDefaults); + if (error) + return "metadataDefaults." + error; + } return null; }; diff --git a/gen/pb-protodoc/flyteidl/core/workflow.proto.rst b/gen/pb-protodoc/flyteidl/core/workflow.proto.rst index c0420ff8b7..d41e719dd5 100644 --- a/gen/pb-protodoc/flyteidl/core/workflow.proto.rst +++ b/gen/pb-protodoc/flyteidl/core/workflow.proto.rst @@ -334,12 +334,29 @@ branch_node +.. _api_msg_flyteidl.core.WorkflowMetadata: + +flyteidl.core.WorkflowMetadata +------------------------------ + +`[flyteidl.core.WorkflowMetadata proto] <https://github.com/lyft/flyteidl/blob/master/protos/flyteidl/core/workflow.proto#L130>`_ + +Metadata for the entire workflow. +To be used in the future. + +.. code-block:: json + + {} + + + + .. _api_msg_flyteidl.core.WorkflowMetadataDefaults: flyteidl.core.WorkflowMetadataDefaults -------------------------------------- -`[flyteidl.core.WorkflowMetadataDefaults proto] <https://github.com/lyft/flyteidl/blob/master/protos/flyteidl/core/workflow.proto#L129>`_ +`[flyteidl.core.WorkflowMetadataDefaults proto] <https://github.com/lyft/flyteidl/blob/master/protos/flyteidl/core/workflow.proto#L135>`_ Default Workflow Metadata for the entire workflow. @@ -364,7 +381,7 @@ interruptible flyteidl.core.WorkflowTemplate ------------------------------ -`[flyteidl.core.WorkflowTemplate proto] <https://github.com/lyft/flyteidl/blob/master/protos/flyteidl/core/workflow.proto#L138>`_ +`[flyteidl.core.WorkflowTemplate proto] <https://github.com/lyft/flyteidl/blob/master/protos/flyteidl/core/workflow.proto#L144>`_ Flyte Workflow Structure that encapsulates task, branch and subworkflow nodes to form a statically analyzable, directed acyclic graph. @@ -373,11 +390,12 @@ directed acyclic graph. { "id": "{...}", - "metadata_defaults": "{...}", + "metadata": "{...}", "interface": "{...}", "nodes": [], "outputs": [], - "failure_node": "{...}" + "failure_node": "{...}", + "metadata_defaults": "{...}" } .. _api_field_flyteidl.core.WorkflowTemplate.id: @@ -386,10 +404,10 @@ id (:ref:`flyteidl.core.Identifier <api_msg_flyteidl.core.Identifier>`) A globally unique identifier for the workflow. -.. _api_field_flyteidl.core.WorkflowTemplate.metadata_defaults: +.. _api_field_flyteidl.core.WorkflowTemplate.metadata: -metadata_defaults - (:ref:`flyteidl.core.WorkflowMetadataDefaults <api_msg_flyteidl.core.WorkflowMetadataDefaults>`) Extra metadata about the workflow. +metadata + (:ref:`flyteidl.core.WorkflowMetadata <api_msg_flyteidl.core.WorkflowMetadata>`) Extra metadata about the workflow. .. _api_field_flyteidl.core.WorkflowTemplate.interface: @@ -424,4 +442,10 @@ failure_node pb.lyft.flyte.core.Error. +.. _api_field_flyteidl.core.WorkflowTemplate.metadata_defaults: + +metadata_defaults + (:ref:`flyteidl.core.WorkflowMetadataDefaults <api_msg_flyteidl.core.WorkflowMetadataDefaults>`) workflow defaults + + diff --git a/gen/pb_python/flyteidl/core/workflow_pb2.py b/gen/pb_python/flyteidl/core/workflow_pb2.py index 73af7bdcc9..608694eb51 100644 --- a/gen/pb_python/flyteidl/core/workflow_pb2.py +++ b/gen/pb_python/flyteidl/core/workflow_pb2.py @@ -26,7 +26,7 @@ package='flyteidl.core', syntax='proto3', serialized_options=_b('Z0github.com/lyft/flyteidl/gen/pb-go/flyteidl/core'), - serialized_pb=_b('\n\x1c\x66lyteidl/core/workflow.proto\x12\rflyteidl.core\x1a\x1d\x66lyteidl/core/condition.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/types.proto\x1a\x1egoogle/protobuf/duration.proto\"f\n\x07IfBlock\x12\x33\n\tcondition\x18\x01 \x01(\x0b\x32 .flyteidl.core.BooleanExpression\x12&\n\tthen_node\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.Node\"\xb6\x01\n\x0bIfElseBlock\x12$\n\x04\x63\x61se\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.IfBlock\x12%\n\x05other\x18\x02 \x03(\x0b\x32\x16.flyteidl.core.IfBlock\x12(\n\telse_node\x18\x03 \x01(\x0b\x32\x13.flyteidl.core.NodeH\x00\x12%\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00\x42\t\n\x07\x64\x65\x66\x61ult\"9\n\nBranchNode\x12+\n\x07if_else\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.IfElseBlock\"J\n\x08TaskNode\x12\x31\n\x0creference_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00\x42\x0b\n\treference\"\x87\x01\n\x0cWorkflowNode\x12\x33\n\x0elaunchplan_ref\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00\x12\x35\n\x10sub_workflow_ref\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00\x42\x0b\n\treference\"\xa7\x01\n\x0cNodeMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12-\n\x07retries\x18\x05 \x01(\x0b\x32\x1c.flyteidl.core.RetryStrategy\x12\x17\n\rinterruptible\x18\x06 \x01(\x08H\x00\x42\x15\n\x13interruptible_value\"#\n\x05\x41lias\x12\x0b\n\x03var\x18\x01 \x01(\t\x12\r\n\x05\x61lias\x18\x02 \x01(\t\"\xd2\x02\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\t\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.NodeMetadata\x12&\n\x06inputs\x18\x03 \x03(\x0b\x32\x16.flyteidl.core.Binding\x12\x19\n\x11upstream_node_ids\x18\x04 \x03(\t\x12,\n\x0eoutput_aliases\x18\x05 \x03(\x0b\x32\x14.flyteidl.core.Alias\x12,\n\ttask_node\x18\x06 \x01(\x0b\x32\x17.flyteidl.core.TaskNodeH\x00\x12\x34\n\rworkflow_node\x18\x07 \x01(\x0b\x32\x1b.flyteidl.core.WorkflowNodeH\x00\x12\x30\n\x0b\x62ranch_node\x18\x08 \x01(\x0b\x32\x19.flyteidl.core.BranchNodeH\x00\x42\x08\n\x06target\"1\n\x18WorkflowMetadataDefaults\x12\x15\n\rinterruptible\x18\x01 \x01(\x08\"\xa7\x02\n\x10WorkflowTemplate\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12\x42\n\x11metadata_defaults\x18\x02 \x01(\x0b\x32\'.flyteidl.core.WorkflowMetadataDefaults\x12\x30\n\tinterface\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterface\x12\"\n\x05nodes\x18\x04 \x03(\x0b\x32\x13.flyteidl.core.Node\x12\'\n\x07outputs\x18\x05 \x03(\x0b\x32\x16.flyteidl.core.Binding\x12)\n\x0c\x66\x61ilure_node\x18\x06 \x01(\x0b\x32\x13.flyteidl.core.NodeB2Z0github.com/lyft/flyteidl/gen/pb-go/flyteidl/coreb\x06proto3') + serialized_pb=_b('\n\x1c\x66lyteidl/core/workflow.proto\x12\rflyteidl.core\x1a\x1d\x66lyteidl/core/condition.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x19\x66lyteidl/core/types.proto\x1a\x1egoogle/protobuf/duration.proto\"f\n\x07IfBlock\x12\x33\n\tcondition\x18\x01 \x01(\x0b\x32 .flyteidl.core.BooleanExpression\x12&\n\tthen_node\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.Node\"\xb6\x01\n\x0bIfElseBlock\x12$\n\x04\x63\x61se\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.IfBlock\x12%\n\x05other\x18\x02 \x03(\x0b\x32\x16.flyteidl.core.IfBlock\x12(\n\telse_node\x18\x03 \x01(\x0b\x32\x13.flyteidl.core.NodeH\x00\x12%\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00\x42\t\n\x07\x64\x65\x66\x61ult\"9\n\nBranchNode\x12+\n\x07if_else\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.IfElseBlock\"J\n\x08TaskNode\x12\x31\n\x0creference_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00\x42\x0b\n\treference\"\x87\x01\n\x0cWorkflowNode\x12\x33\n\x0elaunchplan_ref\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00\x12\x35\n\x10sub_workflow_ref\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.IdentifierH\x00\x42\x0b\n\treference\"\xa7\x01\n\x0cNodeMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12-\n\x07retries\x18\x05 \x01(\x0b\x32\x1c.flyteidl.core.RetryStrategy\x12\x17\n\rinterruptible\x18\x06 \x01(\x08H\x00\x42\x15\n\x13interruptible_value\"#\n\x05\x41lias\x12\x0b\n\x03var\x18\x01 \x01(\t\x12\r\n\x05\x61lias\x18\x02 \x01(\t\"\xd2\x02\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\t\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.NodeMetadata\x12&\n\x06inputs\x18\x03 \x03(\x0b\x32\x16.flyteidl.core.Binding\x12\x19\n\x11upstream_node_ids\x18\x04 \x03(\t\x12,\n\x0eoutput_aliases\x18\x05 \x03(\x0b\x32\x14.flyteidl.core.Alias\x12,\n\ttask_node\x18\x06 \x01(\x0b\x32\x17.flyteidl.core.TaskNodeH\x00\x12\x34\n\rworkflow_node\x18\x07 \x01(\x0b\x32\x1b.flyteidl.core.WorkflowNodeH\x00\x12\x30\n\x0b\x62ranch_node\x18\x08 \x01(\x0b\x32\x19.flyteidl.core.BranchNodeH\x00\x42\x08\n\x06target\"\x12\n\x10WorkflowMetadata\"1\n\x18WorkflowMetadataDefaults\x12\x15\n\rinterruptible\x18\x01 \x01(\x08\"\xda\x02\n\x10WorkflowTemplate\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12\x31\n\x08metadata\x18\x02 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowMetadata\x12\x30\n\tinterface\x18\x03 \x01(\x0b\x32\x1d.flyteidl.core.TypedInterface\x12\"\n\x05nodes\x18\x04 \x03(\x0b\x32\x13.flyteidl.core.Node\x12\'\n\x07outputs\x18\x05 \x03(\x0b\x32\x16.flyteidl.core.Binding\x12)\n\x0c\x66\x61ilure_node\x18\x06 \x01(\x0b\x32\x13.flyteidl.core.Node\x12\x42\n\x11metadata_defaults\x18\x07 \x01(\x0b\x32\'.flyteidl.core.WorkflowMetadataDefaultsB2Z0github.com/lyft/flyteidl/gen/pb-go/flyteidl/coreb\x06proto3') , dependencies=[flyteidl_dot_core_dot_condition__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_interface__pb2.DESCRIPTOR,flyteidl_dot_core_dot_literals__pb2.DESCRIPTOR,flyteidl_dot_core_dot_types__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,]) @@ -408,6 +408,30 @@ ) +_WORKFLOWMETADATA = _descriptor.Descriptor( + name='WorkflowMetadata', + full_name='flyteidl.core.WorkflowMetadata', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1340, + serialized_end=1358, +) + + _WORKFLOWMETADATADEFAULTS = _descriptor.Descriptor( name='WorkflowMetadataDefaults', full_name='flyteidl.core.WorkflowMetadataDefaults', @@ -434,8 +458,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1340, - serialized_end=1389, + serialized_start=1360, + serialized_end=1409, ) @@ -454,7 +478,7 @@ is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='metadata_defaults', full_name='flyteidl.core.WorkflowTemplate.metadata_defaults', index=1, + name='metadata', full_name='flyteidl.core.WorkflowTemplate.metadata', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, @@ -488,6 +512,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='metadata_defaults', full_name='flyteidl.core.WorkflowTemplate.metadata_defaults', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -500,8 +531,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1392, - serialized_end=1687, + serialized_start=1412, + serialized_end=1758, ) _IFBLOCK.fields_by_name['condition'].message_type = flyteidl_dot_core_dot_condition__pb2._BOOLEANEXPRESSION @@ -550,11 +581,12 @@ _NODE.fields_by_name['branch_node']) _NODE.fields_by_name['branch_node'].containing_oneof = _NODE.oneofs_by_name['target'] _WORKFLOWTEMPLATE.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._IDENTIFIER -_WORKFLOWTEMPLATE.fields_by_name['metadata_defaults'].message_type = _WORKFLOWMETADATADEFAULTS +_WORKFLOWTEMPLATE.fields_by_name['metadata'].message_type = _WORKFLOWMETADATA _WORKFLOWTEMPLATE.fields_by_name['interface'].message_type = flyteidl_dot_core_dot_interface__pb2._TYPEDINTERFACE _WORKFLOWTEMPLATE.fields_by_name['nodes'].message_type = _NODE _WORKFLOWTEMPLATE.fields_by_name['outputs'].message_type = flyteidl_dot_core_dot_literals__pb2._BINDING _WORKFLOWTEMPLATE.fields_by_name['failure_node'].message_type = _NODE +_WORKFLOWTEMPLATE.fields_by_name['metadata_defaults'].message_type = _WORKFLOWMETADATADEFAULTS DESCRIPTOR.message_types_by_name['IfBlock'] = _IFBLOCK DESCRIPTOR.message_types_by_name['IfElseBlock'] = _IFELSEBLOCK DESCRIPTOR.message_types_by_name['BranchNode'] = _BRANCHNODE @@ -563,6 +595,7 @@ DESCRIPTOR.message_types_by_name['NodeMetadata'] = _NODEMETADATA DESCRIPTOR.message_types_by_name['Alias'] = _ALIAS DESCRIPTOR.message_types_by_name['Node'] = _NODE +DESCRIPTOR.message_types_by_name['WorkflowMetadata'] = _WORKFLOWMETADATA DESCRIPTOR.message_types_by_name['WorkflowMetadataDefaults'] = _WORKFLOWMETADATADEFAULTS DESCRIPTOR.message_types_by_name['WorkflowTemplate'] = _WORKFLOWTEMPLATE _sym_db.RegisterFileDescriptor(DESCRIPTOR) @@ -623,6 +656,13 @@ )) _sym_db.RegisterMessage(Node) +WorkflowMetadata = _reflection.GeneratedProtocolMessageType('WorkflowMetadata', (_message.Message,), dict( + DESCRIPTOR = _WORKFLOWMETADATA, + __module__ = 'flyteidl.core.workflow_pb2' + # @@protoc_insertion_point(class_scope:flyteidl.core.WorkflowMetadata) + )) +_sym_db.RegisterMessage(WorkflowMetadata) + WorkflowMetadataDefaults = _reflection.GeneratedProtocolMessageType('WorkflowMetadataDefaults', (_message.Message,), dict( DESCRIPTOR = _WORKFLOWMETADATADEFAULTS, __module__ = 'flyteidl.core.workflow_pb2' diff --git a/gen/pb_python/flyteidl/service/flyteadmin/README.md b/gen/pb_python/flyteidl/service/flyteadmin/README.md index 7b76c7f206..86f35abd40 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/README.md +++ b/gen/pb_python/flyteidl/service/flyteadmin/README.md @@ -274,6 +274,7 @@ Class | Method | HTTP request | Description - [CoreVoid](docs/CoreVoid.md) - [CoreWorkflowExecutionIdentifier](docs/CoreWorkflowExecutionIdentifier.md) - [CoreWorkflowExecutionPhase](docs/CoreWorkflowExecutionPhase.md) + - [CoreWorkflowMetadata](docs/CoreWorkflowMetadata.md) - [CoreWorkflowMetadataDefaults](docs/CoreWorkflowMetadataDefaults.md) - [CoreWorkflowNode](docs/CoreWorkflowNode.md) - [CoreWorkflowTemplate](docs/CoreWorkflowTemplate.md) diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py index e27ee199a8..bc9ef153d5 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py @@ -177,6 +177,7 @@ from flyteadmin.models.core_void import CoreVoid from flyteadmin.models.core_workflow_execution_identifier import CoreWorkflowExecutionIdentifier from flyteadmin.models.core_workflow_execution_phase import CoreWorkflowExecutionPhase +from flyteadmin.models.core_workflow_metadata import CoreWorkflowMetadata from flyteadmin.models.core_workflow_metadata_defaults import CoreWorkflowMetadataDefaults from flyteadmin.models.core_workflow_node import CoreWorkflowNode from flyteadmin.models.core_workflow_template import CoreWorkflowTemplate 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 d85312daf5..265a90d9b7 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py @@ -170,6 +170,7 @@ from flyteadmin.models.core_void import CoreVoid from flyteadmin.models.core_workflow_execution_identifier import CoreWorkflowExecutionIdentifier from flyteadmin.models.core_workflow_execution_phase import CoreWorkflowExecutionPhase +from flyteadmin.models.core_workflow_metadata import CoreWorkflowMetadata from flyteadmin.models.core_workflow_metadata_defaults import CoreWorkflowMetadataDefaults from flyteadmin.models.core_workflow_node import CoreWorkflowNode from flyteadmin.models.core_workflow_template import CoreWorkflowTemplate diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_workflow_metadata.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_workflow_metadata.py new file mode 100644 index 0000000000..8f8d1bd12f --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_workflow_metadata.py @@ -0,0 +1,87 @@ +# 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 CoreWorkflowMetadata(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 = { + } + + attribute_map = { + } + + def __init__(self): # noqa: E501 + """CoreWorkflowMetadata - a model defined in Swagger""" # noqa: E501 + self.discriminator = None + + 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(CoreWorkflowMetadata, 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, CoreWorkflowMetadata): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_workflow_template.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_workflow_template.py index 6103eab4cd..ced623ccd1 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_workflow_template.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_workflow_template.py @@ -20,6 +20,7 @@ from flyteadmin.models.core_identifier import CoreIdentifier # noqa: F401,E501 from flyteadmin.models.core_node import CoreNode # noqa: F401,E501 from flyteadmin.models.core_typed_interface import CoreTypedInterface # noqa: F401,E501 +from flyteadmin.models.core_workflow_metadata import CoreWorkflowMetadata # noqa: F401,E501 from flyteadmin.models.core_workflow_metadata_defaults import CoreWorkflowMetadataDefaults # noqa: F401,E501 @@ -38,37 +39,40 @@ class CoreWorkflowTemplate(object): """ swagger_types = { 'id': 'CoreIdentifier', - 'metadata_defaults': 'CoreWorkflowMetadataDefaults', + 'metadata': 'CoreWorkflowMetadata', 'interface': 'CoreTypedInterface', 'nodes': 'list[CoreNode]', 'outputs': 'list[CoreBinding]', - 'failure_node': 'CoreNode' + 'failure_node': 'CoreNode', + 'metadata_defaults': 'CoreWorkflowMetadataDefaults' } attribute_map = { 'id': 'id', - 'metadata_defaults': 'metadata_defaults', + 'metadata': 'metadata', 'interface': 'interface', 'nodes': 'nodes', 'outputs': 'outputs', - 'failure_node': 'failure_node' + 'failure_node': 'failure_node', + 'metadata_defaults': 'metadata_defaults' } - def __init__(self, id=None, metadata_defaults=None, interface=None, nodes=None, outputs=None, failure_node=None): # noqa: E501 + def __init__(self, id=None, metadata=None, interface=None, nodes=None, outputs=None, failure_node=None, metadata_defaults=None): # noqa: E501 """CoreWorkflowTemplate - a model defined in Swagger""" # noqa: E501 self._id = None - self._metadata_defaults = None + self._metadata = None self._interface = None self._nodes = None self._outputs = None self._failure_node = None + self._metadata_defaults = None self.discriminator = None if id is not None: self.id = id - if metadata_defaults is not None: - self.metadata_defaults = metadata_defaults + if metadata is not None: + self.metadata = metadata if interface is not None: self.interface = interface if nodes is not None: @@ -77,6 +81,8 @@ def __init__(self, id=None, metadata_defaults=None, interface=None, nodes=None, self.outputs = outputs if failure_node is not None: self.failure_node = failure_node + if metadata_defaults is not None: + self.metadata_defaults = metadata_defaults @property def id(self): @@ -102,27 +108,27 @@ def id(self, id): self._id = id @property - def metadata_defaults(self): - """Gets the metadata_defaults of this CoreWorkflowTemplate. # noqa: E501 + def metadata(self): + """Gets the metadata of this CoreWorkflowTemplate. # noqa: E501 Extra metadata about the workflow. # noqa: E501 - :return: The metadata_defaults of this CoreWorkflowTemplate. # noqa: E501 - :rtype: CoreWorkflowMetadataDefaults + :return: The metadata of this CoreWorkflowTemplate. # noqa: E501 + :rtype: CoreWorkflowMetadata """ - return self._metadata_defaults + return self._metadata - @metadata_defaults.setter - def metadata_defaults(self, metadata_defaults): - """Sets the metadata_defaults of this CoreWorkflowTemplate. + @metadata.setter + def metadata(self, metadata): + """Sets the metadata of this CoreWorkflowTemplate. Extra metadata about the workflow. # noqa: E501 - :param metadata_defaults: The metadata_defaults of this CoreWorkflowTemplate. # noqa: E501 - :type: CoreWorkflowMetadataDefaults + :param metadata: The metadata of this CoreWorkflowTemplate. # noqa: E501 + :type: CoreWorkflowMetadata """ - self._metadata_defaults = metadata_defaults + self._metadata = metadata @property def interface(self): @@ -216,6 +222,27 @@ def failure_node(self, failure_node): self._failure_node = failure_node + @property + def metadata_defaults(self): + """Gets the metadata_defaults of this CoreWorkflowTemplate. # noqa: E501 + + + :return: The metadata_defaults of this CoreWorkflowTemplate. # noqa: E501 + :rtype: CoreWorkflowMetadataDefaults + """ + return self._metadata_defaults + + @metadata_defaults.setter + def metadata_defaults(self, metadata_defaults): + """Sets the metadata_defaults of this CoreWorkflowTemplate. + + + :param metadata_defaults: The metadata_defaults of this CoreWorkflowTemplate. # noqa: E501 + :type: CoreWorkflowMetadataDefaults + """ + + self._metadata_defaults = metadata_defaults + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_core_workflow_metadata.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_core_workflow_metadata.py new file mode 100644 index 0000000000..8c3c210d80 --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_core_workflow_metadata.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.core_workflow_metadata import CoreWorkflowMetadata # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestCoreWorkflowMetadata(unittest.TestCase): + """CoreWorkflowMetadata unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testCoreWorkflowMetadata(self): + """Test CoreWorkflowMetadata""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.core_workflow_metadata.CoreWorkflowMetadata() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/protos/flyteidl/core/workflow.proto b/protos/flyteidl/core/workflow.proto index 32549487dc..3c45d8b0ec 100644 --- a/protos/flyteidl/core/workflow.proto +++ b/protos/flyteidl/core/workflow.proto @@ -126,6 +126,12 @@ message Node { } } +// Metadata for the entire workflow. +// To be used in the future. +message WorkflowMetadata { + // Default Workflow Metadata for the entire workflow. +} + // Default Workflow Metadata for the entire workflow. message WorkflowMetadataDefaults { // Identify whether workflow is interruptible. @@ -141,7 +147,7 @@ message WorkflowTemplate { Identifier id = 1; // Extra metadata about the workflow. - WorkflowMetadataDefaults metadata_defaults = 2; + WorkflowMetadata metadata = 2; // Defines a strongly typed interface for the Workflow. This can include some optional parameters. TypedInterface interface = 3; @@ -162,7 +168,9 @@ message WorkflowTemplate { // The interface of this node must match the Workflow interface with an additional input named "error" of type // pb.lyft.flyte.core.Error. Node failure_node = 6; - + + // workflow defaults + WorkflowMetadataDefaults metadata_defaults = 7; }