From a56f6486a006b8486b6cd93879e95dcff6363bac Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Mon, 16 May 2022 21:47:32 +0800 Subject: [PATCH] Add description entity Signed-off-by: Kevin Su --- .gitignore | 1 + clients/go/admin/mocks/AdminServiceClient.go | 48 + clients/go/admin/mocks/AdminServiceServer.go | 41 + .../admin/entity_description.grpc.pb.cc | 24 + .../admin/entity_description.grpc.pb.h | 47 + .../flyteidl/admin/entity_description.pb.cc | 1923 ++++++++ .../flyteidl/admin/entity_description.pb.h | 1415 ++++++ gen/pb-cpp/flyteidl/admin/execution.pb.cc | 214 +- gen/pb-cpp/flyteidl/admin/execution.pb.h | 160 + gen/pb-cpp/flyteidl/admin/launch_plan.pb.cc | 210 +- gen/pb-cpp/flyteidl/admin/launch_plan.pb.h | 56 + gen/pb-cpp/flyteidl/admin/project.pb.cc | 109 +- gen/pb-cpp/flyteidl/admin/project.pb.h | 92 + gen/pb-cpp/flyteidl/admin/task.pb.cc | 126 +- gen/pb-cpp/flyteidl/admin/task.pb.h | 56 + gen/pb-cpp/flyteidl/admin/workflow.pb.cc | 132 +- gen/pb-cpp/flyteidl/admin/workflow.pb.h | 56 + gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc | 42 + gen/pb-cpp/flyteidl/service/admin.grpc.pb.h | 172 +- gen/pb-cpp/flyteidl/service/admin.pb.cc | 687 +-- gen/pb-cpp/flyteidl/service/admin.pb.h | 1 + .../flyteidl/admin/entity_description.pb.go | 336 ++ .../admin/entity_description.pb.validate.go | 285 ++ .../admin/entity_description.swagger.json | 19 + gen/pb-go/flyteidl/admin/execution.pb.go | 239 +- .../flyteidl/admin/execution.pb.validate.go | 2 + gen/pb-go/flyteidl/admin/launch_plan.pb.go | 161 +- .../flyteidl/admin/launch_plan.pb.validate.go | 10 + gen/pb-go/flyteidl/admin/project.pb.go | 81 +- gen/pb-go/flyteidl/admin/task.pb.go | 65 +- gen/pb-go/flyteidl/admin/task.pb.validate.go | 10 + gen/pb-go/flyteidl/admin/workflow.pb.go | 75 +- .../flyteidl/admin/workflow.pb.validate.go | 10 + gen/pb-go/flyteidl/service/admin.pb.go | 456 +- gen/pb-go/flyteidl/service/admin.pb.gw.go | 95 + gen/pb-go/flyteidl/service/admin.swagger.json | 186 + .../flyteidl/service/flyteadmin/README.md | 5 + .../service/flyteadmin/api/swagger.yaml | 299 ++ .../service/flyteadmin/api_admin_service.go | 105 + .../model_admin_entity_description.go | 24 + .../flyteadmin/model_admin_execution_spec.go | 4 + .../model_admin_launch_plan_spec.go | 2 + .../model_admin_long_description.go | 18 + .../service/flyteadmin/model_admin_project.go | 2 + .../flyteadmin/model_admin_source_code.go | 19 + .../flyteadmin/model_admin_task_spec.go | 2 + .../flyteadmin/model_admin_workflow_spec.go | 2 + ...del_long_description_description_format.go | 20 + gen/pb-go/flyteidl/service/openapi.go | 4 +- .../admin/EntityDescriptionOuterClass.java | 4321 +++++++++++++++++ .../flyteidl/admin/ExecutionOuterClass.java | 503 +- .../flyteidl/admin/LaunchPlanOuterClass.java | 366 +- .../flyteidl/admin/ProjectOuterClass.java | 302 +- .../flyteidl/admin/TaskOuterClass.java | 288 +- .../flyteidl/admin/WorkflowOuterClass.java | 294 +- gen/pb-java/flyteidl/service/Admin.java | 682 +-- gen/pb-js/flyteidl.d.ts | 296 ++ gen/pb-js/flyteidl.js | 730 +++ .../flyteidl/admin/entity_description_pb2.py | 272 ++ .../admin/entity_description_pb2_grpc.py | 3 + gen/pb_python/flyteidl/admin/execution_pb2.py | 50 +- .../flyteidl/admin/launch_plan_pb2.py | 65 +- gen/pb_python/flyteidl/admin/project_pb2.py | 35 +- gen/pb_python/flyteidl/admin/task_pb2.py | 37 +- gen/pb_python/flyteidl/admin/workflow_pb2.py | 37 +- gen/pb_python/flyteidl/service/admin_pb2.py | 18 +- .../flyteidl/service/admin_pb2_grpc.py | 18 + .../flyteidl/service/flyteadmin/README.md | 5 + .../service/flyteadmin/flyteadmin/__init__.py | 4 + .../flyteadmin/api/admin_service_api.py | 127 + .../flyteadmin/flyteadmin/models/__init__.py | 4 + .../models/admin_entity_description.py | 233 + .../flyteadmin/models/admin_execution_spec.py | 62 +- .../models/admin_launch_plan_spec.py | 35 +- .../models/admin_long_description.py | 195 + .../flyteadmin/models/admin_project.py | 34 +- .../flyteadmin/models/admin_source_code.py | 245 + .../flyteadmin/models/admin_task_spec.py | 35 +- .../flyteadmin/models/admin_workflow_spec.py | 35 +- .../long_description_description_format.py | 95 + .../test/test_admin_entity_description.py | 40 + .../test/test_admin_long_description.py | 40 + .../flyteadmin/test/test_admin_service_api.py | 7 + .../flyteadmin/test/test_admin_source_code.py | 40 + ...est_long_description_description_format.py | 40 + go.mod | 1 + go.sum | 1 + protos/docs/admin/admin.rst | 120 + protos/docs/service/service.rst | 1 + .../flyteidl/admin/entity_description.proto | 63 + protos/flyteidl/admin/execution.proto | 7 + protos/flyteidl/admin/launch_plan.proto | 4 + protos/flyteidl/admin/project.proto | 4 + protos/flyteidl/admin/task.proto | 4 + protos/flyteidl/admin/workflow.proto | 4 + protos/flyteidl/service/admin.proto | 10 + 96 files changed, 16391 insertions(+), 1569 deletions(-) create mode 100644 gen/pb-cpp/flyteidl/admin/entity_description.grpc.pb.cc create mode 100644 gen/pb-cpp/flyteidl/admin/entity_description.grpc.pb.h create mode 100644 gen/pb-cpp/flyteidl/admin/entity_description.pb.cc create mode 100644 gen/pb-cpp/flyteidl/admin/entity_description.pb.h create mode 100644 gen/pb-go/flyteidl/admin/entity_description.pb.go create mode 100644 gen/pb-go/flyteidl/admin/entity_description.pb.validate.go create mode 100644 gen/pb-go/flyteidl/admin/entity_description.swagger.json create mode 100644 gen/pb-go/flyteidl/service/flyteadmin/model_admin_entity_description.go create mode 100644 gen/pb-go/flyteidl/service/flyteadmin/model_admin_long_description.go create mode 100644 gen/pb-go/flyteidl/service/flyteadmin/model_admin_source_code.go create mode 100644 gen/pb-go/flyteidl/service/flyteadmin/model_long_description_description_format.go create mode 100644 gen/pb-java/flyteidl/admin/EntityDescriptionOuterClass.java create mode 100644 gen/pb_python/flyteidl/admin/entity_description_pb2.py create mode 100644 gen/pb_python/flyteidl/admin/entity_description_pb2_grpc.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_entity_description.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_long_description.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_source_code.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/long_description_description_format.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_entity_description.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_long_description.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_source_code.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/test/test_long_description_description_format.py create mode 100644 protos/flyteidl/admin/entity_description.proto diff --git a/.gitignore b/.gitignore index 7e917af58..664242c5c 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ docs/build/ .vscode/ tmp/ .python-version +__pycache__ diff --git a/clients/go/admin/mocks/AdminServiceClient.go b/clients/go/admin/mocks/AdminServiceClient.go index 5f473b8a3..a0192faf1 100644 --- a/clients/go/admin/mocks/AdminServiceClient.go +++ b/clients/go/admin/mocks/AdminServiceClient.go @@ -497,6 +497,54 @@ func (_m *AdminServiceClient) GetActiveLaunchPlan(ctx context.Context, in *admin return r0, r1 } +type AdminServiceClient_GetDescription struct { + *mock.Call +} + +func (_m AdminServiceClient_GetDescription) Return(_a0 *admin.EntityDescription, _a1 error) *AdminServiceClient_GetDescription { + return &AdminServiceClient_GetDescription{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceClient) OnGetDescription(ctx context.Context, in *admin.ObjectGetRequest, opts ...grpc.CallOption) *AdminServiceClient_GetDescription { + c_call := _m.On("GetDescription", ctx, in, opts) + return &AdminServiceClient_GetDescription{Call: c_call} +} + +func (_m *AdminServiceClient) OnGetDescriptionMatch(matchers ...interface{}) *AdminServiceClient_GetDescription { + c_call := _m.On("GetDescription", matchers...) + return &AdminServiceClient_GetDescription{Call: c_call} +} + +// GetDescription provides a mock function with given fields: ctx, in, opts +func (_m *AdminServiceClient) GetDescription(ctx context.Context, in *admin.ObjectGetRequest, opts ...grpc.CallOption) (*admin.EntityDescription, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *admin.EntityDescription + if rf, ok := ret.Get(0).(func(context.Context, *admin.ObjectGetRequest, ...grpc.CallOption) *admin.EntityDescription); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.EntityDescription) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.ObjectGetRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceClient_GetExecution struct { *mock.Call } diff --git a/clients/go/admin/mocks/AdminServiceServer.go b/clients/go/admin/mocks/AdminServiceServer.go index aba0a6aff..6917de9c9 100644 --- a/clients/go/admin/mocks/AdminServiceServer.go +++ b/clients/go/admin/mocks/AdminServiceServer.go @@ -425,6 +425,47 @@ func (_m *AdminServiceServer) GetActiveLaunchPlan(_a0 context.Context, _a1 *admi return r0, r1 } +type AdminServiceServer_GetDescription struct { + *mock.Call +} + +func (_m AdminServiceServer_GetDescription) Return(_a0 *admin.EntityDescription, _a1 error) *AdminServiceServer_GetDescription { + return &AdminServiceServer_GetDescription{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceServer) OnGetDescription(_a0 context.Context, _a1 *admin.ObjectGetRequest) *AdminServiceServer_GetDescription { + c_call := _m.On("GetDescription", _a0, _a1) + return &AdminServiceServer_GetDescription{Call: c_call} +} + +func (_m *AdminServiceServer) OnGetDescriptionMatch(matchers ...interface{}) *AdminServiceServer_GetDescription { + c_call := _m.On("GetDescription", matchers...) + return &AdminServiceServer_GetDescription{Call: c_call} +} + +// GetDescription provides a mock function with given fields: _a0, _a1 +func (_m *AdminServiceServer) GetDescription(_a0 context.Context, _a1 *admin.ObjectGetRequest) (*admin.EntityDescription, error) { + ret := _m.Called(_a0, _a1) + + var r0 *admin.EntityDescription + if rf, ok := ret.Get(0).(func(context.Context, *admin.ObjectGetRequest) *admin.EntityDescription); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.EntityDescription) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.ObjectGetRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceServer_GetExecution struct { *mock.Call } diff --git a/gen/pb-cpp/flyteidl/admin/entity_description.grpc.pb.cc b/gen/pb-cpp/flyteidl/admin/entity_description.grpc.pb.cc new file mode 100644 index 000000000..a6c960cbb --- /dev/null +++ b/gen/pb-cpp/flyteidl/admin/entity_description.grpc.pb.cc @@ -0,0 +1,24 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: flyteidl/admin/entity_description.proto + +#include "flyteidl/admin/entity_description.pb.h" +#include "flyteidl/admin/entity_description.grpc.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace flyteidl { +namespace admin { + +} // namespace flyteidl +} // namespace admin + diff --git a/gen/pb-cpp/flyteidl/admin/entity_description.grpc.pb.h b/gen/pb-cpp/flyteidl/admin/entity_description.grpc.pb.h new file mode 100644 index 000000000..ac8d68948 --- /dev/null +++ b/gen/pb-cpp/flyteidl/admin/entity_description.grpc.pb.h @@ -0,0 +1,47 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: flyteidl/admin/entity_description.proto +#ifndef GRPC_flyteidl_2fadmin_2fentity_5fdescription_2eproto__INCLUDED +#define GRPC_flyteidl_2fadmin_2fentity_5fdescription_2eproto__INCLUDED + +#include "flyteidl/admin/entity_description.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace grpc_impl { +class Channel; +class CompletionQueue; +class ServerCompletionQueue; +} // namespace grpc_impl + +namespace grpc { +namespace experimental { +template +class MessageAllocator; +} // namespace experimental +} // namespace grpc_impl + +namespace grpc { +class ServerContext; +} // namespace grpc + +namespace flyteidl { +namespace admin { + +} // namespace admin +} // namespace flyteidl + + +#endif // GRPC_flyteidl_2fadmin_2fentity_5fdescription_2eproto__INCLUDED diff --git a/gen/pb-cpp/flyteidl/admin/entity_description.pb.cc b/gen/pb-cpp/flyteidl/admin/entity_description.pb.cc new file mode 100644 index 000000000..4689e031e --- /dev/null +++ b/gen/pb-cpp/flyteidl/admin/entity_description.pb.cc @@ -0,0 +1,1923 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/admin/entity_description.proto + +#include "flyteidl/admin/entity_description.pb.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +// @@protoc_insertion_point(includes) +#include + +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_Labels_flyteidl_2fadmin_2fcommon_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fentity_5fdescription_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_LongDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fentity_5fdescription_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_SourceCode_flyteidl_2fadmin_2fentity_5fdescription_2eproto; +namespace flyteidl { +namespace admin { +class EntityDescriptionDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _EntityDescription_default_instance_; +class LongDescriptionDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _LongDescription_default_instance_; +class SourceCodeDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _SourceCode_default_instance_; +} // namespace admin +} // namespace flyteidl +static void InitDefaultsEntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_EntityDescription_default_instance_; + new (ptr) ::flyteidl::admin::EntityDescription(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::EntityDescription::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<3> scc_info_EntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsEntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto}, { + &scc_info_LongDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base, + &scc_info_Labels_flyteidl_2fadmin_2fcommon_2eproto.base, + &scc_info_SourceCode_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base,}}; + +static void InitDefaultsLongDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_LongDescription_default_instance_; + new (ptr) ::flyteidl::admin::LongDescription(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::LongDescription::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_LongDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsLongDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto}, {}}; + +static void InitDefaultsSourceCode_flyteidl_2fadmin_2fentity_5fdescription_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_SourceCode_default_instance_; + new (ptr) ::flyteidl::admin::SourceCode(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::SourceCode::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_SourceCode_flyteidl_2fadmin_2fentity_5fdescription_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSourceCode_flyteidl_2fadmin_2fentity_5fdescription_2eproto}, {}}; + +void InitDefaults_flyteidl_2fadmin_2fentity_5fdescription_2eproto() { + ::google::protobuf::internal::InitSCC(&scc_info_EntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_LongDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_SourceCode_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base); +} + +::google::protobuf::Metadata file_level_metadata_flyteidl_2fadmin_2fentity_5fdescription_2eproto[3]; +const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto[1]; +constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto = nullptr; + +const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fentity_5fdescription_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::EntityDescription, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::EntityDescription, short_description_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::EntityDescription, long_description_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::EntityDescription, tags_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::EntityDescription, labels_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::EntityDescription, source_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LongDescription, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LongDescription, values_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LongDescription, uri_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LongDescription, long_format_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LongDescription, icon_link_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::SourceCode, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::SourceCode, file_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::SourceCode, line_number_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::SourceCode, repo_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::SourceCode, branch_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::SourceCode, link_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::SourceCode, language_), +}; +static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + { 0, -1, sizeof(::flyteidl::admin::EntityDescription)}, + { 10, -1, sizeof(::flyteidl::admin::LongDescription)}, + { 19, -1, sizeof(::flyteidl::admin::SourceCode)}, +}; + +static ::google::protobuf::Message const * const file_default_instances[] = { + reinterpret_cast(&::flyteidl::admin::_EntityDescription_default_instance_), + reinterpret_cast(&::flyteidl::admin::_LongDescription_default_instance_), + reinterpret_cast(&::flyteidl::admin::_SourceCode_default_instance_), +}; + +::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_flyteidl_2fadmin_2fentity_5fdescription_2eproto = { + {}, AddDescriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto, "flyteidl/admin/entity_description.proto", schemas, + file_default_instances, TableStruct_flyteidl_2fadmin_2fentity_5fdescription_2eproto::offsets, + file_level_metadata_flyteidl_2fadmin_2fentity_5fdescription_2eproto, 3, file_level_enum_descriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto, file_level_service_descriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto, +}; + +const char descriptor_table_protodef_flyteidl_2fadmin_2fentity_5fdescription_2eproto[] = + "\n\'flyteidl/admin/entity_description.prot" + "o\022\016flyteidl.admin\032\036flyteidl/core/identif" + "ier.proto\032\033flyteidl/admin/common.proto\"\313" + "\001\n\021EntityDescription\022\031\n\021short_descriptio" + "n\030\001 \001(\t\0229\n\020long_description\030\002 \001(\0132\037.flyt" + "eidl.admin.LongDescription\022\014\n\004tags\030\003 \003(\t" + "\022&\n\006labels\030\004 \001(\0132\026.flyteidl.admin.Labels" + "\022*\n\006source\030\005 \001(\0132\032.flyteidl.admin.Source" + "Code\"\314\001\n\017LongDescription\022\016\n\006values\030\001 \001(\t" + "\022\013\n\003uri\030\002 \001(\t\022F\n\013long_format\030\003 \001(\01621.fly" + "teidl.admin.LongDescription.DescriptionF" + "ormat\022\021\n\ticon_link\030\004 \001(\t\"A\n\021DescriptionF" + "ormat\022\013\n\007UNKNOWN\020\000\022\014\n\010MARKDOWN\020\001\022\010\n\004HTML" + "\020\002\022\007\n\003RST\020\003\"m\n\nSourceCode\022\014\n\004file\030\001 \001(\t\022" + "\023\n\013line_number\030\002 \001(\r\022\014\n\004repo\030\003 \001(\t\022\016\n\006br" + "anch\030\004 \001(\t\022\014\n\004link\030\005 \001(\t\022\020\n\010language\030\006 \001" + "(\tB7Z5github.com/flyteorg/flyteidl/gen/p" + "b-go/flyteidl/adminb\006proto3" + ; +::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2fentity_5fdescription_2eproto = { + false, InitDefaults_flyteidl_2fadmin_2fentity_5fdescription_2eproto, + descriptor_table_protodef_flyteidl_2fadmin_2fentity_5fdescription_2eproto, + "flyteidl/admin/entity_description.proto", &assign_descriptors_table_flyteidl_2fadmin_2fentity_5fdescription_2eproto, 707, +}; + +void AddDescriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto() { + static constexpr ::google::protobuf::internal::InitFunc deps[2] = + { + ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, + ::AddDescriptors_flyteidl_2fadmin_2fcommon_2eproto, + }; + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2fentity_5fdescription_2eproto, deps, 2); +} + +// Force running AddDescriptors() at dynamic initialization time. +static bool dynamic_init_dummy_flyteidl_2fadmin_2fentity_5fdescription_2eproto = []() { AddDescriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto(); return true; }(); +namespace flyteidl { +namespace admin { +const ::google::protobuf::EnumDescriptor* LongDescription_DescriptionFormat_descriptor() { + ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_flyteidl_2fadmin_2fentity_5fdescription_2eproto); + return file_level_enum_descriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto[0]; +} +bool LongDescription_DescriptionFormat_IsValid(int value) { + switch (value) { + case 0: + case 1: + case 2: + case 3: + return true; + default: + return false; + } +} + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const LongDescription_DescriptionFormat LongDescription::UNKNOWN; +const LongDescription_DescriptionFormat LongDescription::MARKDOWN; +const LongDescription_DescriptionFormat LongDescription::HTML; +const LongDescription_DescriptionFormat LongDescription::RST; +const LongDescription_DescriptionFormat LongDescription::DescriptionFormat_MIN; +const LongDescription_DescriptionFormat LongDescription::DescriptionFormat_MAX; +const int LongDescription::DescriptionFormat_ARRAYSIZE; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +// =================================================================== + +void EntityDescription::InitAsDefaultInstance() { + ::flyteidl::admin::_EntityDescription_default_instance_._instance.get_mutable()->long_description_ = const_cast< ::flyteidl::admin::LongDescription*>( + ::flyteidl::admin::LongDescription::internal_default_instance()); + ::flyteidl::admin::_EntityDescription_default_instance_._instance.get_mutable()->labels_ = const_cast< ::flyteidl::admin::Labels*>( + ::flyteidl::admin::Labels::internal_default_instance()); + ::flyteidl::admin::_EntityDescription_default_instance_._instance.get_mutable()->source_ = const_cast< ::flyteidl::admin::SourceCode*>( + ::flyteidl::admin::SourceCode::internal_default_instance()); +} +class EntityDescription::HasBitSetters { + public: + static const ::flyteidl::admin::LongDescription& long_description(const EntityDescription* msg); + static const ::flyteidl::admin::Labels& labels(const EntityDescription* msg); + static const ::flyteidl::admin::SourceCode& source(const EntityDescription* msg); +}; + +const ::flyteidl::admin::LongDescription& +EntityDescription::HasBitSetters::long_description(const EntityDescription* msg) { + return *msg->long_description_; +} +const ::flyteidl::admin::Labels& +EntityDescription::HasBitSetters::labels(const EntityDescription* msg) { + return *msg->labels_; +} +const ::flyteidl::admin::SourceCode& +EntityDescription::HasBitSetters::source(const EntityDescription* msg) { + return *msg->source_; +} +void EntityDescription::clear_labels() { + if (GetArenaNoVirtual() == nullptr && labels_ != nullptr) { + delete labels_; + } + labels_ = nullptr; +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int EntityDescription::kShortDescriptionFieldNumber; +const int EntityDescription::kLongDescriptionFieldNumber; +const int EntityDescription::kTagsFieldNumber; +const int EntityDescription::kLabelsFieldNumber; +const int EntityDescription::kSourceFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +EntityDescription::EntityDescription() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.EntityDescription) +} +EntityDescription::EntityDescription(const EntityDescription& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr), + tags_(from.tags_) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + short_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.short_description().size() > 0) { + short_description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.short_description_); + } + if (from.has_long_description()) { + long_description_ = new ::flyteidl::admin::LongDescription(*from.long_description_); + } else { + long_description_ = nullptr; + } + if (from.has_labels()) { + labels_ = new ::flyteidl::admin::Labels(*from.labels_); + } else { + labels_ = nullptr; + } + if (from.has_source()) { + source_ = new ::flyteidl::admin::SourceCode(*from.source_); + } else { + source_ = nullptr; + } + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.EntityDescription) +} + +void EntityDescription::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_EntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base); + short_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + ::memset(&long_description_, 0, static_cast( + reinterpret_cast(&source_) - + reinterpret_cast(&long_description_)) + sizeof(source_)); +} + +EntityDescription::~EntityDescription() { + // @@protoc_insertion_point(destructor:flyteidl.admin.EntityDescription) + SharedDtor(); +} + +void EntityDescription::SharedDtor() { + short_description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (this != internal_default_instance()) delete long_description_; + if (this != internal_default_instance()) delete labels_; + if (this != internal_default_instance()) delete source_; +} + +void EntityDescription::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const EntityDescription& EntityDescription::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_EntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base); + return *internal_default_instance(); +} + + +void EntityDescription::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.EntityDescription) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + tags_.Clear(); + short_description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (GetArenaNoVirtual() == nullptr && long_description_ != nullptr) { + delete long_description_; + } + long_description_ = nullptr; + if (GetArenaNoVirtual() == nullptr && labels_ != nullptr) { + delete labels_; + } + labels_ = nullptr; + if (GetArenaNoVirtual() == nullptr && source_ != nullptr) { + delete source_; + } + source_ = nullptr; + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* EntityDescription::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // string short_description = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.EntityDescription.short_description"); + object = msg->mutable_short_description(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // .flyteidl.admin.LongDescription long_description = 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::admin::LongDescription::_InternalParse; + object = msg->mutable_long_description(); + 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; + } + // repeated string tags = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual; + do { + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.EntityDescription.tags"); + object = msg->add_tags(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + if (ptr >= end) break; + } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1)); + break; + } + // .flyteidl.admin.Labels labels = 4; + case 4: { + if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::Labels::_InternalParse; + object = msg->mutable_labels(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // .flyteidl.admin.SourceCode source = 5; + case 5: { + if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::SourceCode::_InternalParse; + object = msg->mutable_source(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool EntityDescription::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.admin.EntityDescription) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // string short_description = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_short_description())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.EntityDescription.short_description")); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.admin.LongDescription long_description = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_long_description())); + } else { + goto handle_unusual; + } + break; + } + + // repeated string tags = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->add_tags())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(this->tags_size() - 1).data(), + static_cast(this->tags(this->tags_size() - 1).length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.EntityDescription.tags")); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.admin.Labels labels = 4; + case 4: { + if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_labels())); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.admin.SourceCode source = 5; + case 5: { + if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_source())); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.admin.EntityDescription) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.EntityDescription) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void EntityDescription::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.EntityDescription) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string short_description = 1; + if (this->short_description().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.EntityDescription.short_description"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 1, this->short_description(), output); + } + + // .flyteidl.admin.LongDescription long_description = 2; + if (this->has_long_description()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 2, HasBitSetters::long_description(this), output); + } + + // repeated string tags = 3; + for (int i = 0, n = this->tags_size(); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(i).data(), static_cast(this->tags(i).length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.EntityDescription.tags"); + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->tags(i), output); + } + + // .flyteidl.admin.Labels labels = 4; + if (this->has_labels()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 4, HasBitSetters::labels(this), output); + } + + // .flyteidl.admin.SourceCode source = 5; + if (this->has_source()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 5, HasBitSetters::source(this), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.admin.EntityDescription) +} + +::google::protobuf::uint8* EntityDescription::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.EntityDescription) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string short_description = 1; + if (this->short_description().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->short_description().data(), static_cast(this->short_description().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.EntityDescription.short_description"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 1, this->short_description(), target); + } + + // .flyteidl.admin.LongDescription long_description = 2; + if (this->has_long_description()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 2, HasBitSetters::long_description(this), target); + } + + // repeated string tags = 3; + for (int i = 0, n = this->tags_size(); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(i).data(), static_cast(this->tags(i).length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.EntityDescription.tags"); + target = ::google::protobuf::internal::WireFormatLite:: + WriteStringToArray(3, this->tags(i), target); + } + + // .flyteidl.admin.Labels labels = 4; + if (this->has_labels()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 4, HasBitSetters::labels(this), target); + } + + // .flyteidl.admin.SourceCode source = 5; + if (this->has_source()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 5, HasBitSetters::source(this), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.admin.EntityDescription) + return target; +} + +size_t EntityDescription::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.EntityDescription) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // repeated string tags = 3; + total_size += 1 * + ::google::protobuf::internal::FromIntSize(this->tags_size()); + for (int i = 0, n = this->tags_size(); i < n; i++) { + total_size += ::google::protobuf::internal::WireFormatLite::StringSize( + this->tags(i)); + } + + // string short_description = 1; + if (this->short_description().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->short_description()); + } + + // .flyteidl.admin.LongDescription long_description = 2; + if (this->has_long_description()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *long_description_); + } + + // .flyteidl.admin.Labels labels = 4; + if (this->has_labels()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *labels_); + } + + // .flyteidl.admin.SourceCode source = 5; + if (this->has_source()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *source_); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void EntityDescription::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.EntityDescription) + GOOGLE_DCHECK_NE(&from, this); + const EntityDescription* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.EntityDescription) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.EntityDescription) + MergeFrom(*source); + } +} + +void EntityDescription::MergeFrom(const EntityDescription& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.EntityDescription) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + tags_.MergeFrom(from.tags_); + if (from.short_description().size() > 0) { + + short_description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.short_description_); + } + if (from.has_long_description()) { + mutable_long_description()->::flyteidl::admin::LongDescription::MergeFrom(from.long_description()); + } + if (from.has_labels()) { + mutable_labels()->::flyteidl::admin::Labels::MergeFrom(from.labels()); + } + if (from.has_source()) { + mutable_source()->::flyteidl::admin::SourceCode::MergeFrom(from.source()); + } +} + +void EntityDescription::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.EntityDescription) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void EntityDescription::CopyFrom(const EntityDescription& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.EntityDescription) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool EntityDescription::IsInitialized() const { + return true; +} + +void EntityDescription::Swap(EntityDescription* other) { + if (other == this) return; + InternalSwap(other); +} +void EntityDescription::InternalSwap(EntityDescription* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + tags_.InternalSwap(CastToBase(&other->tags_)); + short_description_.Swap(&other->short_description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + swap(long_description_, other->long_description_); + swap(labels_, other->labels_); + swap(source_, other->source_); +} + +::google::protobuf::Metadata EntityDescription::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fentity_5fdescription_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fentity_5fdescription_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void LongDescription::InitAsDefaultInstance() { +} +class LongDescription::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int LongDescription::kValuesFieldNumber; +const int LongDescription::kUriFieldNumber; +const int LongDescription::kLongFormatFieldNumber; +const int LongDescription::kIconLinkFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +LongDescription::LongDescription() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.LongDescription) +} +LongDescription::LongDescription(const LongDescription& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + values_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.values().size() > 0) { + values_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.values_); + } + uri_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.uri().size() > 0) { + uri_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.uri_); + } + icon_link_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.icon_link().size() > 0) { + icon_link_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.icon_link_); + } + long_format_ = from.long_format_; + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.LongDescription) +} + +void LongDescription::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_LongDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base); + values_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + uri_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + icon_link_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + long_format_ = 0; +} + +LongDescription::~LongDescription() { + // @@protoc_insertion_point(destructor:flyteidl.admin.LongDescription) + SharedDtor(); +} + +void LongDescription::SharedDtor() { + values_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + uri_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + icon_link_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +void LongDescription::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const LongDescription& LongDescription::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_LongDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base); + return *internal_default_instance(); +} + + +void LongDescription::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.LongDescription) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + values_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + uri_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + icon_link_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + long_format_ = 0; + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* LongDescription::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // string values = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.LongDescription.values"); + object = msg->mutable_values(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // string uri = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.LongDescription.uri"); + object = msg->mutable_uri(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual; + ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr); + msg->set_long_format(static_cast<::flyteidl::admin::LongDescription_DescriptionFormat>(val)); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + break; + } + // string icon_link = 4; + case 4: { + if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.LongDescription.icon_link"); + object = msg->mutable_icon_link(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool LongDescription::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.admin.LongDescription) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // string values = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_values())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->values().data(), static_cast(this->values().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.LongDescription.values")); + } else { + goto handle_unusual; + } + break; + } + + // string uri = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_uri())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->uri().data(), static_cast(this->uri().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.LongDescription.uri")); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) { + int value = 0; + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + set_long_format(static_cast< ::flyteidl::admin::LongDescription_DescriptionFormat >(value)); + } else { + goto handle_unusual; + } + break; + } + + // string icon_link = 4; + case 4: { + if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_icon_link())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->icon_link().data(), static_cast(this->icon_link().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.LongDescription.icon_link")); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.admin.LongDescription) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.LongDescription) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void LongDescription::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.LongDescription) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string values = 1; + if (this->values().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->values().data(), static_cast(this->values().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.LongDescription.values"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 1, this->values(), output); + } + + // string uri = 2; + if (this->uri().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->uri().data(), static_cast(this->uri().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.LongDescription.uri"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 2, this->uri(), output); + } + + // .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + if (this->long_format() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteEnum( + 3, this->long_format(), output); + } + + // string icon_link = 4; + if (this->icon_link().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->icon_link().data(), static_cast(this->icon_link().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.LongDescription.icon_link"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 4, this->icon_link(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.admin.LongDescription) +} + +::google::protobuf::uint8* LongDescription::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.LongDescription) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string values = 1; + if (this->values().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->values().data(), static_cast(this->values().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.LongDescription.values"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 1, this->values(), target); + } + + // string uri = 2; + if (this->uri().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->uri().data(), static_cast(this->uri().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.LongDescription.uri"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 2, this->uri(), target); + } + + // .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + if (this->long_format() != 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray( + 3, this->long_format(), target); + } + + // string icon_link = 4; + if (this->icon_link().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->icon_link().data(), static_cast(this->icon_link().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.LongDescription.icon_link"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 4, this->icon_link(), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.admin.LongDescription) + return target; +} + +size_t LongDescription::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.LongDescription) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // string values = 1; + if (this->values().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->values()); + } + + // string uri = 2; + if (this->uri().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->uri()); + } + + // string icon_link = 4; + if (this->icon_link().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->icon_link()); + } + + // .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + if (this->long_format() != 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::EnumSize(this->long_format()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void LongDescription::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.LongDescription) + GOOGLE_DCHECK_NE(&from, this); + const LongDescription* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.LongDescription) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.LongDescription) + MergeFrom(*source); + } +} + +void LongDescription::MergeFrom(const LongDescription& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.LongDescription) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.values().size() > 0) { + + values_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.values_); + } + if (from.uri().size() > 0) { + + uri_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.uri_); + } + if (from.icon_link().size() > 0) { + + icon_link_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.icon_link_); + } + if (from.long_format() != 0) { + set_long_format(from.long_format()); + } +} + +void LongDescription::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.LongDescription) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void LongDescription::CopyFrom(const LongDescription& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.LongDescription) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool LongDescription::IsInitialized() const { + return true; +} + +void LongDescription::Swap(LongDescription* other) { + if (other == this) return; + InternalSwap(other); +} +void LongDescription::InternalSwap(LongDescription* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + values_.Swap(&other->values_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + uri_.Swap(&other->uri_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + icon_link_.Swap(&other->icon_link_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + swap(long_format_, other->long_format_); +} + +::google::protobuf::Metadata LongDescription::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fentity_5fdescription_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fentity_5fdescription_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void SourceCode::InitAsDefaultInstance() { +} +class SourceCode::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int SourceCode::kFileFieldNumber; +const int SourceCode::kLineNumberFieldNumber; +const int SourceCode::kRepoFieldNumber; +const int SourceCode::kBranchFieldNumber; +const int SourceCode::kLinkFieldNumber; +const int SourceCode::kLanguageFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +SourceCode::SourceCode() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.SourceCode) +} +SourceCode::SourceCode(const SourceCode& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + file_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.file().size() > 0) { + file_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_); + } + repo_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.repo().size() > 0) { + repo_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.repo_); + } + branch_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.branch().size() > 0) { + branch_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.branch_); + } + link_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.link().size() > 0) { + link_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.link_); + } + language_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.language().size() > 0) { + language_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.language_); + } + line_number_ = from.line_number_; + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.SourceCode) +} + +void SourceCode::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_SourceCode_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base); + file_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + repo_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + branch_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + link_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + language_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + line_number_ = 0u; +} + +SourceCode::~SourceCode() { + // @@protoc_insertion_point(destructor:flyteidl.admin.SourceCode) + SharedDtor(); +} + +void SourceCode::SharedDtor() { + file_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + repo_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + branch_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + link_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + language_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +void SourceCode::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const SourceCode& SourceCode::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_SourceCode_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base); + return *internal_default_instance(); +} + + +void SourceCode::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.SourceCode) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + file_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + repo_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + branch_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + link_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + language_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + line_number_ = 0u; + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* SourceCode::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // string file = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.SourceCode.file"); + object = msg->mutable_file(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // uint32 line_number = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual; + msg->set_line_number(::google::protobuf::internal::ReadVarint(&ptr)); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + break; + } + // string repo = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.SourceCode.repo"); + object = msg->mutable_repo(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // string branch = 4; + case 4: { + if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.SourceCode.branch"); + object = msg->mutable_branch(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // string link = 5; + case 5: { + if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.SourceCode.link"); + object = msg->mutable_link(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // string language = 6; + case 6: { + if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.SourceCode.language"); + object = msg->mutable_language(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool SourceCode::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.admin.SourceCode) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // string file = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_file())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->file().data(), static_cast(this->file().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.SourceCode.file")); + } else { + goto handle_unusual; + } + break; + } + + // uint32 line_number = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) { + + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, &line_number_))); + } else { + goto handle_unusual; + } + break; + } + + // string repo = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_repo())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->repo().data(), static_cast(this->repo().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.SourceCode.repo")); + } else { + goto handle_unusual; + } + break; + } + + // string branch = 4; + case 4: { + if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_branch())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->branch().data(), static_cast(this->branch().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.SourceCode.branch")); + } else { + goto handle_unusual; + } + break; + } + + // string link = 5; + case 5: { + if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_link())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->link().data(), static_cast(this->link().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.SourceCode.link")); + } else { + goto handle_unusual; + } + break; + } + + // string language = 6; + case 6: { + if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_language())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->language().data(), static_cast(this->language().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.SourceCode.language")); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:flyteidl.admin.SourceCode) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.SourceCode) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void SourceCode::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.SourceCode) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string file = 1; + if (this->file().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->file().data(), static_cast(this->file().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.file"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 1, this->file(), output); + } + + // uint32 line_number = 2; + if (this->line_number() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->line_number(), output); + } + + // string repo = 3; + if (this->repo().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->repo().data(), static_cast(this->repo().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.repo"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 3, this->repo(), output); + } + + // string branch = 4; + if (this->branch().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->branch().data(), static_cast(this->branch().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.branch"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 4, this->branch(), output); + } + + // string link = 5; + if (this->link().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->link().data(), static_cast(this->link().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.link"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 5, this->link(), output); + } + + // string language = 6; + if (this->language().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->language().data(), static_cast(this->language().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.language"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 6, this->language(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.admin.SourceCode) +} + +::google::protobuf::uint8* SourceCode::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.SourceCode) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // string file = 1; + if (this->file().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->file().data(), static_cast(this->file().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.file"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 1, this->file(), target); + } + + // uint32 line_number = 2; + if (this->line_number() != 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->line_number(), target); + } + + // string repo = 3; + if (this->repo().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->repo().data(), static_cast(this->repo().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.repo"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 3, this->repo(), target); + } + + // string branch = 4; + if (this->branch().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->branch().data(), static_cast(this->branch().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.branch"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 4, this->branch(), target); + } + + // string link = 5; + if (this->link().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->link().data(), static_cast(this->link().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.link"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 5, this->link(), target); + } + + // string language = 6; + if (this->language().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->language().data(), static_cast(this->language().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.SourceCode.language"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 6, this->language(), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.admin.SourceCode) + return target; +} + +size_t SourceCode::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.SourceCode) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // string file = 1; + if (this->file().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->file()); + } + + // string repo = 3; + if (this->repo().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->repo()); + } + + // string branch = 4; + if (this->branch().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->branch()); + } + + // string link = 5; + if (this->link().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->link()); + } + + // string language = 6; + if (this->language().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->language()); + } + + // uint32 line_number = 2; + if (this->line_number() != 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt32Size( + this->line_number()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void SourceCode::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.SourceCode) + GOOGLE_DCHECK_NE(&from, this); + const SourceCode* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.SourceCode) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.SourceCode) + MergeFrom(*source); + } +} + +void SourceCode::MergeFrom(const SourceCode& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.SourceCode) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.file().size() > 0) { + + file_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_); + } + if (from.repo().size() > 0) { + + repo_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.repo_); + } + if (from.branch().size() > 0) { + + branch_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.branch_); + } + if (from.link().size() > 0) { + + link_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.link_); + } + if (from.language().size() > 0) { + + language_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.language_); + } + if (from.line_number() != 0) { + set_line_number(from.line_number()); + } +} + +void SourceCode::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.SourceCode) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void SourceCode::CopyFrom(const SourceCode& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.SourceCode) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool SourceCode::IsInitialized() const { + return true; +} + +void SourceCode::Swap(SourceCode* other) { + if (other == this) return; + InternalSwap(other); +} +void SourceCode::InternalSwap(SourceCode* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + file_.Swap(&other->file_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + repo_.Swap(&other->repo_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + branch_.Swap(&other->branch_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + link_.Swap(&other->link_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + language_.Swap(&other->language_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + swap(line_number_, other->line_number_); +} + +::google::protobuf::Metadata SourceCode::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fentity_5fdescription_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fentity_5fdescription_2eproto[kIndexInFileMessages]; +} + + +// @@protoc_insertion_point(namespace_scope) +} // namespace admin +} // namespace flyteidl +namespace google { +namespace protobuf { +template<> PROTOBUF_NOINLINE ::flyteidl::admin::EntityDescription* Arena::CreateMaybeMessage< ::flyteidl::admin::EntityDescription >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::EntityDescription >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::admin::LongDescription* Arena::CreateMaybeMessage< ::flyteidl::admin::LongDescription >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::LongDescription >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::admin::SourceCode* Arena::CreateMaybeMessage< ::flyteidl::admin::SourceCode >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::SourceCode >(arena); +} +} // namespace protobuf +} // namespace google + +// @@protoc_insertion_point(global_scope) +#include diff --git a/gen/pb-cpp/flyteidl/admin/entity_description.pb.h b/gen/pb-cpp/flyteidl/admin/entity_description.pb.h new file mode 100644 index 000000000..aae363cc1 --- /dev/null +++ b/gen/pb-cpp/flyteidl/admin/entity_description.pb.h @@ -0,0 +1,1415 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/admin/entity_description.proto + +#ifndef PROTOBUF_INCLUDED_flyteidl_2fadmin_2fentity_5fdescription_2eproto +#define PROTOBUF_INCLUDED_flyteidl_2fadmin_2fentity_5fdescription_2eproto + +#include +#include + +#include +#if PROTOBUF_VERSION < 3007000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 3007000 < PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // IWYU pragma: export +#include // IWYU pragma: export +#include +#include +#include "flyteidl/core/identifier.pb.h" +#include "flyteidl/admin/common.pb.h" +// @@protoc_insertion_point(includes) +#include +#define PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fentity_5fdescription_2eproto + +// Internal implementation detail -- do not use these members. +struct TableStruct_flyteidl_2fadmin_2fentity_5fdescription_2eproto { + static const ::google::protobuf::internal::ParseTableField entries[] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::google::protobuf::internal::AuxillaryParseTableField aux[] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::google::protobuf::internal::ParseTable schema[3] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::google::protobuf::internal::FieldMetadata field_metadata[]; + static const ::google::protobuf::internal::SerializationTable serialization_table[]; + static const ::google::protobuf::uint32 offsets[]; +}; +void AddDescriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto(); +namespace flyteidl { +namespace admin { +class EntityDescription; +class EntityDescriptionDefaultTypeInternal; +extern EntityDescriptionDefaultTypeInternal _EntityDescription_default_instance_; +class LongDescription; +class LongDescriptionDefaultTypeInternal; +extern LongDescriptionDefaultTypeInternal _LongDescription_default_instance_; +class SourceCode; +class SourceCodeDefaultTypeInternal; +extern SourceCodeDefaultTypeInternal _SourceCode_default_instance_; +} // namespace admin +} // namespace flyteidl +namespace google { +namespace protobuf { +template<> ::flyteidl::admin::EntityDescription* Arena::CreateMaybeMessage<::flyteidl::admin::EntityDescription>(Arena*); +template<> ::flyteidl::admin::LongDescription* Arena::CreateMaybeMessage<::flyteidl::admin::LongDescription>(Arena*); +template<> ::flyteidl::admin::SourceCode* Arena::CreateMaybeMessage<::flyteidl::admin::SourceCode>(Arena*); +} // namespace protobuf +} // namespace google +namespace flyteidl { +namespace admin { + +enum LongDescription_DescriptionFormat { + LongDescription_DescriptionFormat_UNKNOWN = 0, + LongDescription_DescriptionFormat_MARKDOWN = 1, + LongDescription_DescriptionFormat_HTML = 2, + LongDescription_DescriptionFormat_RST = 3, + LongDescription_DescriptionFormat_LongDescription_DescriptionFormat_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(), + LongDescription_DescriptionFormat_LongDescription_DescriptionFormat_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max() +}; +bool LongDescription_DescriptionFormat_IsValid(int value); +const LongDescription_DescriptionFormat LongDescription_DescriptionFormat_DescriptionFormat_MIN = LongDescription_DescriptionFormat_UNKNOWN; +const LongDescription_DescriptionFormat LongDescription_DescriptionFormat_DescriptionFormat_MAX = LongDescription_DescriptionFormat_RST; +const int LongDescription_DescriptionFormat_DescriptionFormat_ARRAYSIZE = LongDescription_DescriptionFormat_DescriptionFormat_MAX + 1; + +const ::google::protobuf::EnumDescriptor* LongDescription_DescriptionFormat_descriptor(); +inline const ::std::string& LongDescription_DescriptionFormat_Name(LongDescription_DescriptionFormat value) { + return ::google::protobuf::internal::NameOfEnum( + LongDescription_DescriptionFormat_descriptor(), value); +} +inline bool LongDescription_DescriptionFormat_Parse( + const ::std::string& name, LongDescription_DescriptionFormat* value) { + return ::google::protobuf::internal::ParseNamedEnum( + LongDescription_DescriptionFormat_descriptor(), name, value); +} +// =================================================================== + +class EntityDescription final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.EntityDescription) */ { + public: + EntityDescription(); + virtual ~EntityDescription(); + + EntityDescription(const EntityDescription& from); + + inline EntityDescription& operator=(const EntityDescription& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + EntityDescription(EntityDescription&& from) noexcept + : EntityDescription() { + *this = ::std::move(from); + } + + inline EntityDescription& operator=(EntityDescription&& 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 EntityDescription& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const EntityDescription* internal_default_instance() { + return reinterpret_cast( + &_EntityDescription_default_instance_); + } + static constexpr int kIndexInFileMessages = + 0; + + void Swap(EntityDescription* other); + friend void swap(EntityDescription& a, EntityDescription& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline EntityDescription* New() const final { + return CreateMaybeMessage(nullptr); + } + + EntityDescription* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const EntityDescription& from); + void MergeFrom(const EntityDescription& 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(EntityDescription* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // repeated string tags = 3; + int tags_size() const; + void clear_tags(); + static const int kTagsFieldNumber = 3; + const ::std::string& tags(int index) const; + ::std::string* mutable_tags(int index); + void set_tags(int index, const ::std::string& value); + #if LANG_CXX11 + void set_tags(int index, ::std::string&& value); + #endif + void set_tags(int index, const char* value); + void set_tags(int index, const char* value, size_t size); + ::std::string* add_tags(); + void add_tags(const ::std::string& value); + #if LANG_CXX11 + void add_tags(::std::string&& value); + #endif + void add_tags(const char* value); + void add_tags(const char* value, size_t size); + const ::google::protobuf::RepeatedPtrField<::std::string>& tags() const; + ::google::protobuf::RepeatedPtrField<::std::string>* mutable_tags(); + + // string short_description = 1; + void clear_short_description(); + static const int kShortDescriptionFieldNumber = 1; + const ::std::string& short_description() const; + void set_short_description(const ::std::string& value); + #if LANG_CXX11 + void set_short_description(::std::string&& value); + #endif + void set_short_description(const char* value); + void set_short_description(const char* value, size_t size); + ::std::string* mutable_short_description(); + ::std::string* release_short_description(); + void set_allocated_short_description(::std::string* short_description); + + // .flyteidl.admin.LongDescription long_description = 2; + bool has_long_description() const; + void clear_long_description(); + static const int kLongDescriptionFieldNumber = 2; + const ::flyteidl::admin::LongDescription& long_description() const; + ::flyteidl::admin::LongDescription* release_long_description(); + ::flyteidl::admin::LongDescription* mutable_long_description(); + void set_allocated_long_description(::flyteidl::admin::LongDescription* long_description); + + // .flyteidl.admin.Labels labels = 4; + bool has_labels() const; + void clear_labels(); + static const int kLabelsFieldNumber = 4; + const ::flyteidl::admin::Labels& labels() const; + ::flyteidl::admin::Labels* release_labels(); + ::flyteidl::admin::Labels* mutable_labels(); + void set_allocated_labels(::flyteidl::admin::Labels* labels); + + // .flyteidl.admin.SourceCode source = 5; + bool has_source() const; + void clear_source(); + static const int kSourceFieldNumber = 5; + const ::flyteidl::admin::SourceCode& source() const; + ::flyteidl::admin::SourceCode* release_source(); + ::flyteidl::admin::SourceCode* mutable_source(); + void set_allocated_source(::flyteidl::admin::SourceCode* source); + + // @@protoc_insertion_point(class_scope:flyteidl.admin.EntityDescription) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::RepeatedPtrField<::std::string> tags_; + ::google::protobuf::internal::ArenaStringPtr short_description_; + ::flyteidl::admin::LongDescription* long_description_; + ::flyteidl::admin::Labels* labels_; + ::flyteidl::admin::SourceCode* source_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fadmin_2fentity_5fdescription_2eproto; +}; +// ------------------------------------------------------------------- + +class LongDescription final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.LongDescription) */ { + public: + LongDescription(); + virtual ~LongDescription(); + + LongDescription(const LongDescription& from); + + inline LongDescription& operator=(const LongDescription& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + LongDescription(LongDescription&& from) noexcept + : LongDescription() { + *this = ::std::move(from); + } + + inline LongDescription& operator=(LongDescription&& 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 LongDescription& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const LongDescription* internal_default_instance() { + return reinterpret_cast( + &_LongDescription_default_instance_); + } + static constexpr int kIndexInFileMessages = + 1; + + void Swap(LongDescription* other); + friend void swap(LongDescription& a, LongDescription& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline LongDescription* New() const final { + return CreateMaybeMessage(nullptr); + } + + LongDescription* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const LongDescription& from); + void MergeFrom(const LongDescription& 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(LongDescription* 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 ---------------------------------------------------- + + typedef LongDescription_DescriptionFormat DescriptionFormat; + static const DescriptionFormat UNKNOWN = + LongDescription_DescriptionFormat_UNKNOWN; + static const DescriptionFormat MARKDOWN = + LongDescription_DescriptionFormat_MARKDOWN; + static const DescriptionFormat HTML = + LongDescription_DescriptionFormat_HTML; + static const DescriptionFormat RST = + LongDescription_DescriptionFormat_RST; + static inline bool DescriptionFormat_IsValid(int value) { + return LongDescription_DescriptionFormat_IsValid(value); + } + static const DescriptionFormat DescriptionFormat_MIN = + LongDescription_DescriptionFormat_DescriptionFormat_MIN; + static const DescriptionFormat DescriptionFormat_MAX = + LongDescription_DescriptionFormat_DescriptionFormat_MAX; + static const int DescriptionFormat_ARRAYSIZE = + LongDescription_DescriptionFormat_DescriptionFormat_ARRAYSIZE; + static inline const ::google::protobuf::EnumDescriptor* + DescriptionFormat_descriptor() { + return LongDescription_DescriptionFormat_descriptor(); + } + static inline const ::std::string& DescriptionFormat_Name(DescriptionFormat value) { + return LongDescription_DescriptionFormat_Name(value); + } + static inline bool DescriptionFormat_Parse(const ::std::string& name, + DescriptionFormat* value) { + return LongDescription_DescriptionFormat_Parse(name, value); + } + + // accessors ------------------------------------------------------- + + // string values = 1; + void clear_values(); + static const int kValuesFieldNumber = 1; + const ::std::string& values() const; + void set_values(const ::std::string& value); + #if LANG_CXX11 + void set_values(::std::string&& value); + #endif + void set_values(const char* value); + void set_values(const char* value, size_t size); + ::std::string* mutable_values(); + ::std::string* release_values(); + void set_allocated_values(::std::string* values); + + // string uri = 2; + void clear_uri(); + static const int kUriFieldNumber = 2; + const ::std::string& uri() const; + void set_uri(const ::std::string& value); + #if LANG_CXX11 + void set_uri(::std::string&& value); + #endif + void set_uri(const char* value); + void set_uri(const char* value, size_t size); + ::std::string* mutable_uri(); + ::std::string* release_uri(); + void set_allocated_uri(::std::string* uri); + + // string icon_link = 4; + void clear_icon_link(); + static const int kIconLinkFieldNumber = 4; + const ::std::string& icon_link() const; + void set_icon_link(const ::std::string& value); + #if LANG_CXX11 + void set_icon_link(::std::string&& value); + #endif + void set_icon_link(const char* value); + void set_icon_link(const char* value, size_t size); + ::std::string* mutable_icon_link(); + ::std::string* release_icon_link(); + void set_allocated_icon_link(::std::string* icon_link); + + // .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + void clear_long_format(); + static const int kLongFormatFieldNumber = 3; + ::flyteidl::admin::LongDescription_DescriptionFormat long_format() const; + void set_long_format(::flyteidl::admin::LongDescription_DescriptionFormat value); + + // @@protoc_insertion_point(class_scope:flyteidl.admin.LongDescription) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr values_; + ::google::protobuf::internal::ArenaStringPtr uri_; + ::google::protobuf::internal::ArenaStringPtr icon_link_; + int long_format_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fadmin_2fentity_5fdescription_2eproto; +}; +// ------------------------------------------------------------------- + +class SourceCode final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.SourceCode) */ { + public: + SourceCode(); + virtual ~SourceCode(); + + SourceCode(const SourceCode& from); + + inline SourceCode& operator=(const SourceCode& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + SourceCode(SourceCode&& from) noexcept + : SourceCode() { + *this = ::std::move(from); + } + + inline SourceCode& operator=(SourceCode&& 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 SourceCode& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const SourceCode* internal_default_instance() { + return reinterpret_cast( + &_SourceCode_default_instance_); + } + static constexpr int kIndexInFileMessages = + 2; + + void Swap(SourceCode* other); + friend void swap(SourceCode& a, SourceCode& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline SourceCode* New() const final { + return CreateMaybeMessage(nullptr); + } + + SourceCode* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const SourceCode& from); + void MergeFrom(const SourceCode& 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(SourceCode* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // string file = 1; + void clear_file(); + static const int kFileFieldNumber = 1; + const ::std::string& file() const; + void set_file(const ::std::string& value); + #if LANG_CXX11 + void set_file(::std::string&& value); + #endif + void set_file(const char* value); + void set_file(const char* value, size_t size); + ::std::string* mutable_file(); + ::std::string* release_file(); + void set_allocated_file(::std::string* file); + + // string repo = 3; + void clear_repo(); + static const int kRepoFieldNumber = 3; + const ::std::string& repo() const; + void set_repo(const ::std::string& value); + #if LANG_CXX11 + void set_repo(::std::string&& value); + #endif + void set_repo(const char* value); + void set_repo(const char* value, size_t size); + ::std::string* mutable_repo(); + ::std::string* release_repo(); + void set_allocated_repo(::std::string* repo); + + // string branch = 4; + void clear_branch(); + static const int kBranchFieldNumber = 4; + const ::std::string& branch() const; + void set_branch(const ::std::string& value); + #if LANG_CXX11 + void set_branch(::std::string&& value); + #endif + void set_branch(const char* value); + void set_branch(const char* value, size_t size); + ::std::string* mutable_branch(); + ::std::string* release_branch(); + void set_allocated_branch(::std::string* branch); + + // string link = 5; + void clear_link(); + static const int kLinkFieldNumber = 5; + const ::std::string& link() const; + void set_link(const ::std::string& value); + #if LANG_CXX11 + void set_link(::std::string&& value); + #endif + void set_link(const char* value); + void set_link(const char* value, size_t size); + ::std::string* mutable_link(); + ::std::string* release_link(); + void set_allocated_link(::std::string* link); + + // string language = 6; + void clear_language(); + static const int kLanguageFieldNumber = 6; + const ::std::string& language() const; + void set_language(const ::std::string& value); + #if LANG_CXX11 + void set_language(::std::string&& value); + #endif + void set_language(const char* value); + void set_language(const char* value, size_t size); + ::std::string* mutable_language(); + ::std::string* release_language(); + void set_allocated_language(::std::string* language); + + // uint32 line_number = 2; + void clear_line_number(); + static const int kLineNumberFieldNumber = 2; + ::google::protobuf::uint32 line_number() const; + void set_line_number(::google::protobuf::uint32 value); + + // @@protoc_insertion_point(class_scope:flyteidl.admin.SourceCode) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr file_; + ::google::protobuf::internal::ArenaStringPtr repo_; + ::google::protobuf::internal::ArenaStringPtr branch_; + ::google::protobuf::internal::ArenaStringPtr link_; + ::google::protobuf::internal::ArenaStringPtr language_; + ::google::protobuf::uint32 line_number_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fadmin_2fentity_5fdescription_2eproto; +}; +// =================================================================== + + +// =================================================================== + +#ifdef __GNUC__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif // __GNUC__ +// EntityDescription + +// string short_description = 1; +inline void EntityDescription::clear_short_description() { + short_description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& EntityDescription::short_description() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.EntityDescription.short_description) + return short_description_.GetNoArena(); +} +inline void EntityDescription::set_short_description(const ::std::string& value) { + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.EntityDescription.short_description) +} +#if LANG_CXX11 +inline void EntityDescription::set_short_description(::std::string&& value) { + + short_description_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.EntityDescription.short_description) +} +#endif +inline void EntityDescription::set_short_description(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.EntityDescription.short_description) +} +inline void EntityDescription::set_short_description(const char* value, size_t size) { + + short_description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.EntityDescription.short_description) +} +inline ::std::string* EntityDescription::mutable_short_description() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.EntityDescription.short_description) + return short_description_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* EntityDescription::release_short_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.EntityDescription.short_description) + + return short_description_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void EntityDescription::set_allocated_short_description(::std::string* short_description) { + if (short_description != nullptr) { + + } else { + + } + short_description_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), short_description); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.EntityDescription.short_description) +} + +// .flyteidl.admin.LongDescription long_description = 2; +inline bool EntityDescription::has_long_description() const { + return this != internal_default_instance() && long_description_ != nullptr; +} +inline void EntityDescription::clear_long_description() { + if (GetArenaNoVirtual() == nullptr && long_description_ != nullptr) { + delete long_description_; + } + long_description_ = nullptr; +} +inline const ::flyteidl::admin::LongDescription& EntityDescription::long_description() const { + const ::flyteidl::admin::LongDescription* p = long_description_; + // @@protoc_insertion_point(field_get:flyteidl.admin.EntityDescription.long_description) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_LongDescription_default_instance_); +} +inline ::flyteidl::admin::LongDescription* EntityDescription::release_long_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.EntityDescription.long_description) + + ::flyteidl::admin::LongDescription* temp = long_description_; + long_description_ = nullptr; + return temp; +} +inline ::flyteidl::admin::LongDescription* EntityDescription::mutable_long_description() { + + if (long_description_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::LongDescription>(GetArenaNoVirtual()); + long_description_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.EntityDescription.long_description) + return long_description_; +} +inline void EntityDescription::set_allocated_long_description(::flyteidl::admin::LongDescription* long_description) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete long_description_; + } + if (long_description) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + long_description = ::google::protobuf::internal::GetOwnedMessage( + message_arena, long_description, submessage_arena); + } + + } else { + + } + long_description_ = long_description; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.EntityDescription.long_description) +} + +// repeated string tags = 3; +inline int EntityDescription::tags_size() const { + return tags_.size(); +} +inline void EntityDescription::clear_tags() { + tags_.Clear(); +} +inline const ::std::string& EntityDescription::tags(int index) const { + // @@protoc_insertion_point(field_get:flyteidl.admin.EntityDescription.tags) + return tags_.Get(index); +} +inline ::std::string* EntityDescription::mutable_tags(int index) { + // @@protoc_insertion_point(field_mutable:flyteidl.admin.EntityDescription.tags) + return tags_.Mutable(index); +} +inline void EntityDescription::set_tags(int index, const ::std::string& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.EntityDescription.tags) + tags_.Mutable(index)->assign(value); +} +#if LANG_CXX11 +inline void EntityDescription::set_tags(int index, ::std::string&& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.EntityDescription.tags) + tags_.Mutable(index)->assign(std::move(value)); +} +#endif +inline void EntityDescription::set_tags(int index, const char* value) { + GOOGLE_DCHECK(value != nullptr); + tags_.Mutable(index)->assign(value); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.EntityDescription.tags) +} +inline void EntityDescription::set_tags(int index, const char* value, size_t size) { + tags_.Mutable(index)->assign( + reinterpret_cast(value), size); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.EntityDescription.tags) +} +inline ::std::string* EntityDescription::add_tags() { + // @@protoc_insertion_point(field_add_mutable:flyteidl.admin.EntityDescription.tags) + return tags_.Add(); +} +inline void EntityDescription::add_tags(const ::std::string& value) { + tags_.Add()->assign(value); + // @@protoc_insertion_point(field_add:flyteidl.admin.EntityDescription.tags) +} +#if LANG_CXX11 +inline void EntityDescription::add_tags(::std::string&& value) { + tags_.Add(std::move(value)); + // @@protoc_insertion_point(field_add:flyteidl.admin.EntityDescription.tags) +} +#endif +inline void EntityDescription::add_tags(const char* value) { + GOOGLE_DCHECK(value != nullptr); + tags_.Add()->assign(value); + // @@protoc_insertion_point(field_add_char:flyteidl.admin.EntityDescription.tags) +} +inline void EntityDescription::add_tags(const char* value, size_t size) { + tags_.Add()->assign(reinterpret_cast(value), size); + // @@protoc_insertion_point(field_add_pointer:flyteidl.admin.EntityDescription.tags) +} +inline const ::google::protobuf::RepeatedPtrField<::std::string>& +EntityDescription::tags() const { + // @@protoc_insertion_point(field_list:flyteidl.admin.EntityDescription.tags) + return tags_; +} +inline ::google::protobuf::RepeatedPtrField<::std::string>* +EntityDescription::mutable_tags() { + // @@protoc_insertion_point(field_mutable_list:flyteidl.admin.EntityDescription.tags) + return &tags_; +} + +// .flyteidl.admin.Labels labels = 4; +inline bool EntityDescription::has_labels() const { + return this != internal_default_instance() && labels_ != nullptr; +} +inline const ::flyteidl::admin::Labels& EntityDescription::labels() const { + const ::flyteidl::admin::Labels* p = labels_; + // @@protoc_insertion_point(field_get:flyteidl.admin.EntityDescription.labels) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_Labels_default_instance_); +} +inline ::flyteidl::admin::Labels* EntityDescription::release_labels() { + // @@protoc_insertion_point(field_release:flyteidl.admin.EntityDescription.labels) + + ::flyteidl::admin::Labels* temp = labels_; + labels_ = nullptr; + return temp; +} +inline ::flyteidl::admin::Labels* EntityDescription::mutable_labels() { + + if (labels_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::Labels>(GetArenaNoVirtual()); + labels_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.EntityDescription.labels) + return labels_; +} +inline void EntityDescription::set_allocated_labels(::flyteidl::admin::Labels* labels) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(labels_); + } + if (labels) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + labels = ::google::protobuf::internal::GetOwnedMessage( + message_arena, labels, submessage_arena); + } + + } else { + + } + labels_ = labels; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.EntityDescription.labels) +} + +// .flyteidl.admin.SourceCode source = 5; +inline bool EntityDescription::has_source() const { + return this != internal_default_instance() && source_ != nullptr; +} +inline void EntityDescription::clear_source() { + if (GetArenaNoVirtual() == nullptr && source_ != nullptr) { + delete source_; + } + source_ = nullptr; +} +inline const ::flyteidl::admin::SourceCode& EntityDescription::source() const { + const ::flyteidl::admin::SourceCode* p = source_; + // @@protoc_insertion_point(field_get:flyteidl.admin.EntityDescription.source) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_SourceCode_default_instance_); +} +inline ::flyteidl::admin::SourceCode* EntityDescription::release_source() { + // @@protoc_insertion_point(field_release:flyteidl.admin.EntityDescription.source) + + ::flyteidl::admin::SourceCode* temp = source_; + source_ = nullptr; + return temp; +} +inline ::flyteidl::admin::SourceCode* EntityDescription::mutable_source() { + + if (source_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::SourceCode>(GetArenaNoVirtual()); + source_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.EntityDescription.source) + return source_; +} +inline void EntityDescription::set_allocated_source(::flyteidl::admin::SourceCode* source) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete source_; + } + if (source) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + source = ::google::protobuf::internal::GetOwnedMessage( + message_arena, source, submessage_arena); + } + + } else { + + } + source_ = source; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.EntityDescription.source) +} + +// ------------------------------------------------------------------- + +// LongDescription + +// string values = 1; +inline void LongDescription::clear_values() { + values_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& LongDescription::values() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.LongDescription.values) + return values_.GetNoArena(); +} +inline void LongDescription::set_values(const ::std::string& value) { + + values_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.LongDescription.values) +} +#if LANG_CXX11 +inline void LongDescription::set_values(::std::string&& value) { + + values_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.LongDescription.values) +} +#endif +inline void LongDescription::set_values(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + values_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.LongDescription.values) +} +inline void LongDescription::set_values(const char* value, size_t size) { + + values_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.LongDescription.values) +} +inline ::std::string* LongDescription::mutable_values() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.LongDescription.values) + return values_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* LongDescription::release_values() { + // @@protoc_insertion_point(field_release:flyteidl.admin.LongDescription.values) + + return values_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void LongDescription::set_allocated_values(::std::string* values) { + if (values != nullptr) { + + } else { + + } + values_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), values); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.LongDescription.values) +} + +// string uri = 2; +inline void LongDescription::clear_uri() { + uri_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& LongDescription::uri() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.LongDescription.uri) + return uri_.GetNoArena(); +} +inline void LongDescription::set_uri(const ::std::string& value) { + + uri_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.LongDescription.uri) +} +#if LANG_CXX11 +inline void LongDescription::set_uri(::std::string&& value) { + + uri_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.LongDescription.uri) +} +#endif +inline void LongDescription::set_uri(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + uri_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.LongDescription.uri) +} +inline void LongDescription::set_uri(const char* value, size_t size) { + + uri_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.LongDescription.uri) +} +inline ::std::string* LongDescription::mutable_uri() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.LongDescription.uri) + return uri_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* LongDescription::release_uri() { + // @@protoc_insertion_point(field_release:flyteidl.admin.LongDescription.uri) + + return uri_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void LongDescription::set_allocated_uri(::std::string* uri) { + if (uri != nullptr) { + + } else { + + } + uri_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), uri); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.LongDescription.uri) +} + +// .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; +inline void LongDescription::clear_long_format() { + long_format_ = 0; +} +inline ::flyteidl::admin::LongDescription_DescriptionFormat LongDescription::long_format() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.LongDescription.long_format) + return static_cast< ::flyteidl::admin::LongDescription_DescriptionFormat >(long_format_); +} +inline void LongDescription::set_long_format(::flyteidl::admin::LongDescription_DescriptionFormat value) { + + long_format_ = value; + // @@protoc_insertion_point(field_set:flyteidl.admin.LongDescription.long_format) +} + +// string icon_link = 4; +inline void LongDescription::clear_icon_link() { + icon_link_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& LongDescription::icon_link() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.LongDescription.icon_link) + return icon_link_.GetNoArena(); +} +inline void LongDescription::set_icon_link(const ::std::string& value) { + + icon_link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.LongDescription.icon_link) +} +#if LANG_CXX11 +inline void LongDescription::set_icon_link(::std::string&& value) { + + icon_link_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.LongDescription.icon_link) +} +#endif +inline void LongDescription::set_icon_link(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + icon_link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.LongDescription.icon_link) +} +inline void LongDescription::set_icon_link(const char* value, size_t size) { + + icon_link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.LongDescription.icon_link) +} +inline ::std::string* LongDescription::mutable_icon_link() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.LongDescription.icon_link) + return icon_link_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* LongDescription::release_icon_link() { + // @@protoc_insertion_point(field_release:flyteidl.admin.LongDescription.icon_link) + + return icon_link_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void LongDescription::set_allocated_icon_link(::std::string* icon_link) { + if (icon_link != nullptr) { + + } else { + + } + icon_link_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), icon_link); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.LongDescription.icon_link) +} + +// ------------------------------------------------------------------- + +// SourceCode + +// string file = 1; +inline void SourceCode::clear_file() { + file_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& SourceCode::file() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.SourceCode.file) + return file_.GetNoArena(); +} +inline void SourceCode::set_file(const ::std::string& value) { + + file_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.SourceCode.file) +} +#if LANG_CXX11 +inline void SourceCode::set_file(::std::string&& value) { + + file_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.SourceCode.file) +} +#endif +inline void SourceCode::set_file(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + file_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.SourceCode.file) +} +inline void SourceCode::set_file(const char* value, size_t size) { + + file_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.SourceCode.file) +} +inline ::std::string* SourceCode::mutable_file() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.SourceCode.file) + return file_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* SourceCode::release_file() { + // @@protoc_insertion_point(field_release:flyteidl.admin.SourceCode.file) + + return file_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void SourceCode::set_allocated_file(::std::string* file) { + if (file != nullptr) { + + } else { + + } + file_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), file); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.SourceCode.file) +} + +// uint32 line_number = 2; +inline void SourceCode::clear_line_number() { + line_number_ = 0u; +} +inline ::google::protobuf::uint32 SourceCode::line_number() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.SourceCode.line_number) + return line_number_; +} +inline void SourceCode::set_line_number(::google::protobuf::uint32 value) { + + line_number_ = value; + // @@protoc_insertion_point(field_set:flyteidl.admin.SourceCode.line_number) +} + +// string repo = 3; +inline void SourceCode::clear_repo() { + repo_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& SourceCode::repo() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.SourceCode.repo) + return repo_.GetNoArena(); +} +inline void SourceCode::set_repo(const ::std::string& value) { + + repo_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.SourceCode.repo) +} +#if LANG_CXX11 +inline void SourceCode::set_repo(::std::string&& value) { + + repo_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.SourceCode.repo) +} +#endif +inline void SourceCode::set_repo(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + repo_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.SourceCode.repo) +} +inline void SourceCode::set_repo(const char* value, size_t size) { + + repo_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.SourceCode.repo) +} +inline ::std::string* SourceCode::mutable_repo() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.SourceCode.repo) + return repo_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* SourceCode::release_repo() { + // @@protoc_insertion_point(field_release:flyteidl.admin.SourceCode.repo) + + return repo_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void SourceCode::set_allocated_repo(::std::string* repo) { + if (repo != nullptr) { + + } else { + + } + repo_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), repo); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.SourceCode.repo) +} + +// string branch = 4; +inline void SourceCode::clear_branch() { + branch_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& SourceCode::branch() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.SourceCode.branch) + return branch_.GetNoArena(); +} +inline void SourceCode::set_branch(const ::std::string& value) { + + branch_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.SourceCode.branch) +} +#if LANG_CXX11 +inline void SourceCode::set_branch(::std::string&& value) { + + branch_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.SourceCode.branch) +} +#endif +inline void SourceCode::set_branch(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + branch_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.SourceCode.branch) +} +inline void SourceCode::set_branch(const char* value, size_t size) { + + branch_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.SourceCode.branch) +} +inline ::std::string* SourceCode::mutable_branch() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.SourceCode.branch) + return branch_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* SourceCode::release_branch() { + // @@protoc_insertion_point(field_release:flyteidl.admin.SourceCode.branch) + + return branch_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void SourceCode::set_allocated_branch(::std::string* branch) { + if (branch != nullptr) { + + } else { + + } + branch_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), branch); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.SourceCode.branch) +} + +// string link = 5; +inline void SourceCode::clear_link() { + link_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& SourceCode::link() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.SourceCode.link) + return link_.GetNoArena(); +} +inline void SourceCode::set_link(const ::std::string& value) { + + link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.SourceCode.link) +} +#if LANG_CXX11 +inline void SourceCode::set_link(::std::string&& value) { + + link_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.SourceCode.link) +} +#endif +inline void SourceCode::set_link(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.SourceCode.link) +} +inline void SourceCode::set_link(const char* value, size_t size) { + + link_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.SourceCode.link) +} +inline ::std::string* SourceCode::mutable_link() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.SourceCode.link) + return link_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* SourceCode::release_link() { + // @@protoc_insertion_point(field_release:flyteidl.admin.SourceCode.link) + + return link_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void SourceCode::set_allocated_link(::std::string* link) { + if (link != nullptr) { + + } else { + + } + link_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), link); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.SourceCode.link) +} + +// string language = 6; +inline void SourceCode::clear_language() { + language_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& SourceCode::language() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.SourceCode.language) + return language_.GetNoArena(); +} +inline void SourceCode::set_language(const ::std::string& value) { + + language_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.SourceCode.language) +} +#if LANG_CXX11 +inline void SourceCode::set_language(::std::string&& value) { + + language_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.SourceCode.language) +} +#endif +inline void SourceCode::set_language(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + language_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.SourceCode.language) +} +inline void SourceCode::set_language(const char* value, size_t size) { + + language_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.SourceCode.language) +} +inline ::std::string* SourceCode::mutable_language() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.SourceCode.language) + return language_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* SourceCode::release_language() { + // @@protoc_insertion_point(field_release:flyteidl.admin.SourceCode.language) + + return language_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void SourceCode::set_allocated_language(::std::string* language) { + if (language != nullptr) { + + } else { + + } + language_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), language); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.SourceCode.language) +} + +#ifdef __GNUC__ + #pragma GCC diagnostic pop +#endif // __GNUC__ +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + + +// @@protoc_insertion_point(namespace_scope) + +} // namespace admin +} // namespace flyteidl + +namespace google { +namespace protobuf { + +template <> struct is_proto_enum< ::flyteidl::admin::LongDescription_DescriptionFormat> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::flyteidl::admin::LongDescription_DescriptionFormat>() { + return ::flyteidl::admin::LongDescription_DescriptionFormat_descriptor(); +} + +} // namespace protobuf +} // namespace google + +// @@protoc_insertion_point(global_scope) + +#include +#endif // PROTOBUF_INCLUDED_flyteidl_2fadmin_2fentity_5fdescription_2eproto diff --git a/gen/pb-cpp/flyteidl/admin/execution.pb.cc b/gen/pb-cpp/flyteidl/admin/execution.pb.cc index 4fecff833..46e56ee10 100644 --- a/gen/pb-cpp/flyteidl/admin/execution.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/execution.pb.cc @@ -636,6 +636,8 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fexecution_2eprot PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionSpec, raw_output_data_config_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionSpec, cluster_assignment_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionSpec, interruptible_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionSpec, description_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionSpec, tags_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionSpec, notification_overrides_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionTerminateRequest, _internal_metadata_), @@ -700,13 +702,13 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 93, -1, sizeof(::flyteidl::admin::ExecutionMetadata)}, { 105, -1, sizeof(::flyteidl::admin::NotificationList)}, { 111, -1, sizeof(::flyteidl::admin::ExecutionSpec)}, - { 131, -1, sizeof(::flyteidl::admin::ExecutionTerminateRequest)}, - { 138, -1, sizeof(::flyteidl::admin::ExecutionTerminateResponse)}, - { 143, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataRequest)}, - { 149, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataResponse)}, - { 158, -1, sizeof(::flyteidl::admin::ExecutionUpdateRequest)}, - { 165, -1, sizeof(::flyteidl::admin::ExecutionStateChangeDetails)}, - { 173, -1, sizeof(::flyteidl::admin::ExecutionUpdateResponse)}, + { 133, -1, sizeof(::flyteidl::admin::ExecutionTerminateRequest)}, + { 140, -1, sizeof(::flyteidl::admin::ExecutionTerminateResponse)}, + { 145, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataRequest)}, + { 151, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataResponse)}, + { 160, -1, sizeof(::flyteidl::admin::ExecutionUpdateRequest)}, + { 167, -1, sizeof(::flyteidl::admin::ExecutionStateChangeDetails)}, + { 175, -1, sizeof(::flyteidl::admin::ExecutionUpdateResponse)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -806,7 +808,7 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2fexecution_2eproto[] = "\001\022\n\n\006SYSTEM\020\002\022\014\n\010RELAUNCH\020\003\022\022\n\016CHILD_WOR" "KFLOW\020\004\022\r\n\tRECOVERED\020\005\"G\n\020NotificationLi" "st\0223\n\rnotifications\030\001 \003(\0132\034.flyteidl.adm" - "in.Notification\"\347\005\n\rExecutionSpec\022.\n\013lau" + "in.Notification\"\212\006\n\rExecutionSpec\022.\n\013lau" "nch_plan\030\001 \001(\0132\031.flyteidl.core.Identifie" "r\022-\n\006inputs\030\002 \001(\0132\031.flyteidl.core.Litera" "lMapB\002\030\001\0223\n\010metadata\030\003 \001(\0132!.flyteidl.ad" @@ -824,34 +826,35 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2fexecution_2eproto[] = "utputDataConfig\022=\n\022cluster_assignment\030\024 " "\001(\0132!.flyteidl.admin.ClusterAssignment\0221" "\n\rinterruptible\030\025 \001(\0132\032.google.protobuf." - "BoolValueB\030\n\026notification_overridesJ\004\010\004\020" - "\005\"b\n\031ExecutionTerminateRequest\0226\n\002id\030\001 \001" - "(\0132*.flyteidl.core.WorkflowExecutionIden" - "tifier\022\r\n\005cause\030\002 \001(\t\"\034\n\032ExecutionTermin" - "ateResponse\"Y\n\037WorkflowExecutionGetDataR" - "equest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workf" - "lowExecutionIdentifier\"\336\001\n WorkflowExecu" - "tionGetDataResponse\022,\n\007outputs\030\001 \001(\0132\027.f" - "lyteidl.admin.UrlBlobB\002\030\001\022+\n\006inputs\030\002 \001(" - "\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022.\n\013full_i" - "nputs\030\003 \001(\0132\031.flyteidl.core.LiteralMap\022/" - "\n\014full_outputs\030\004 \001(\0132\031.flyteidl.core.Lit" - "eralMap\"\177\n\026ExecutionUpdateRequest\0226\n\002id\030" - "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" - "dentifier\022-\n\005state\030\002 \001(\0162\036.flyteidl.admi" - "n.ExecutionState\"\220\001\n\033ExecutionStateChang" - "eDetails\022-\n\005state\030\001 \001(\0162\036.flyteidl.admin" - ".ExecutionState\022/\n\013occurred_at\030\002 \001(\0132\032.g" - "oogle.protobuf.Timestamp\022\021\n\tprincipal\030\003 " - "\001(\t\"\031\n\027ExecutionUpdateResponse*>\n\016Execut" - "ionState\022\024\n\020EXECUTION_ACTIVE\020\000\022\026\n\022EXECUT" - "ION_ARCHIVED\020\001B7Z5github.com/flyteorg/fl" - "yteidl/gen/pb-go/flyteidl/adminb\006proto3" + "BoolValue\022\023\n\013description\030\026 \001(\t\022\014\n\004tags\030\027" + " \003(\tB\030\n\026notification_overridesJ\004\010\004\020\005\"b\n\031" + "ExecutionTerminateRequest\0226\n\002id\030\001 \001(\0132*." + "flyteidl.core.WorkflowExecutionIdentifie" + "r\022\r\n\005cause\030\002 \001(\t\"\034\n\032ExecutionTerminateRe" + "sponse\"Y\n\037WorkflowExecutionGetDataReques" + "t\0226\n\002id\030\001 \001(\0132*.flyteidl.core.WorkflowEx" + "ecutionIdentifier\"\336\001\n WorkflowExecutionG" + "etDataResponse\022,\n\007outputs\030\001 \001(\0132\027.flytei" + "dl.admin.UrlBlobB\002\030\001\022+\n\006inputs\030\002 \001(\0132\027.f" + "lyteidl.admin.UrlBlobB\002\030\001\022.\n\013full_inputs" + "\030\003 \001(\0132\031.flyteidl.core.LiteralMap\022/\n\014ful" + "l_outputs\030\004 \001(\0132\031.flyteidl.core.LiteralM" + "ap\"\177\n\026ExecutionUpdateRequest\0226\n\002id\030\001 \001(\013" + "2*.flyteidl.core.WorkflowExecutionIdenti" + "fier\022-\n\005state\030\002 \001(\0162\036.flyteidl.admin.Exe" + "cutionState\"\220\001\n\033ExecutionStateChangeDeta" + "ils\022-\n\005state\030\001 \001(\0162\036.flyteidl.admin.Exec" + "utionState\022/\n\013occurred_at\030\002 \001(\0132\032.google" + ".protobuf.Timestamp\022\021\n\tprincipal\030\003 \001(\t\"\031" + "\n\027ExecutionUpdateResponse*>\n\016ExecutionSt" + "ate\022\024\n\020EXECUTION_ACTIVE\020\000\022\026\n\022EXECUTION_A" + "RCHIVED\020\001B7Z5github.com/flyteorg/flyteid" + "l/gen/pb-go/flyteidl/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2fexecution_2eproto = { false, InitDefaults_flyteidl_2fadmin_2fexecution_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2fexecution_2eproto, - "flyteidl/admin/execution.proto", &assign_descriptors_table_flyteidl_2fadmin_2fexecution_2eproto, 4279, + "flyteidl/admin/execution.proto", &assign_descriptors_table_flyteidl_2fadmin_2fexecution_2eproto, 4314, }; void AddDescriptors_flyteidl_2fadmin_2fexecution_2eproto() { @@ -7170,6 +7173,8 @@ const int ExecutionSpec::kMaxParallelismFieldNumber; const int ExecutionSpec::kRawOutputDataConfigFieldNumber; const int ExecutionSpec::kClusterAssignmentFieldNumber; const int ExecutionSpec::kInterruptibleFieldNumber; +const int ExecutionSpec::kDescriptionFieldNumber; +const int ExecutionSpec::kTagsFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 ExecutionSpec::ExecutionSpec() @@ -7179,8 +7184,13 @@ ExecutionSpec::ExecutionSpec() } ExecutionSpec::ExecutionSpec(const ExecutionSpec& from) : ::google::protobuf::Message(), - _internal_metadata_(nullptr) { + _internal_metadata_(nullptr), + tags_(from.tags_) { _internal_metadata_.MergeFrom(from._internal_metadata_); + description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.description().size() > 0) { + description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_); + } if (from.has_launch_plan()) { launch_plan_ = new ::flyteidl::core::Identifier(*from.launch_plan_); } else { @@ -7257,6 +7267,7 @@ ExecutionSpec::ExecutionSpec(const ExecutionSpec& from) void ExecutionSpec::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_ExecutionSpec_flyteidl_2fadmin_2fexecution_2eproto.base); + description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); ::memset(&launch_plan_, 0, static_cast( reinterpret_cast(&max_parallelism_) - reinterpret_cast(&launch_plan_)) + sizeof(max_parallelism_)); @@ -7269,6 +7280,7 @@ ExecutionSpec::~ExecutionSpec() { } void ExecutionSpec::SharedDtor() { + description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete launch_plan_; if (this != internal_default_instance()) delete inputs_; if (this != internal_default_instance()) delete metadata_; @@ -7319,6 +7331,8 @@ void ExecutionSpec::Clear() { // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; + tags_.Clear(); + description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); if (GetArenaNoVirtual() == nullptr && launch_plan_ != nullptr) { delete launch_plan_; } @@ -7551,6 +7565,41 @@ const char* ExecutionSpec::_InternalParse(const char* begin, const char* end, vo {parser_till_end, object}, ptr - size, ptr)); break; } + // string description = 22; + case 22: { + if (static_cast<::google::protobuf::uint8>(tag) != 178) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.ExecutionSpec.description"); + object = msg->mutable_description(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // repeated string tags = 23; + case 23: { + if (static_cast<::google::protobuf::uint8>(tag) != 186) goto handle_unusual; + do { + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.ExecutionSpec.tags"); + object = msg->add_tags(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + if (ptr >= end) break; + } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 65535) == 442 && (ptr += 2)); + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -7566,6 +7615,10 @@ const char* ExecutionSpec::_InternalParse(const char* begin, const char* end, vo } // switch } // while return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; len_delim_till_end: return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, {parser_till_end, object}, size); @@ -7740,6 +7793,37 @@ bool ExecutionSpec::MergePartialFromCodedStream( break; } + // string description = 22; + case 22: { + if (static_cast< ::google::protobuf::uint8>(tag) == (178 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_description())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->description().data(), static_cast(this->description().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.ExecutionSpec.description")); + } else { + goto handle_unusual; + } + break; + } + + // repeated string tags = 23; + case 23: { + if (static_cast< ::google::protobuf::uint8>(tag) == (186 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->add_tags())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(this->tags_size() - 1).data(), + static_cast(this->tags(this->tags_size() - 1).length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.ExecutionSpec.tags")); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -7849,6 +7933,26 @@ void ExecutionSpec::SerializeWithCachedSizes( 21, HasBitSetters::interruptible(this), output); } + // string description = 22; + if (this->description().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->description().data(), static_cast(this->description().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.ExecutionSpec.description"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 22, this->description(), output); + } + + // repeated string tags = 23; + for (int i = 0, n = this->tags_size(); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(i).data(), static_cast(this->tags(i).length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.ExecutionSpec.tags"); + ::google::protobuf::internal::WireFormatLite::WriteString( + 23, this->tags(i), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -7956,6 +8060,27 @@ ::google::protobuf::uint8* ExecutionSpec::InternalSerializeWithCachedSizesToArra 21, HasBitSetters::interruptible(this), target); } + // string description = 22; + if (this->description().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->description().data(), static_cast(this->description().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.ExecutionSpec.description"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 22, this->description(), target); + } + + // repeated string tags = 23; + for (int i = 0, n = this->tags_size(); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(i).data(), static_cast(this->tags(i).length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.ExecutionSpec.tags"); + target = ::google::protobuf::internal::WireFormatLite:: + WriteStringToArray(23, this->tags(i), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -7977,6 +8102,21 @@ size_t ExecutionSpec::ByteSizeLong() const { // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; + // repeated string tags = 23; + total_size += 2 * + ::google::protobuf::internal::FromIntSize(this->tags_size()); + for (int i = 0, n = this->tags_size(); i < n; i++) { + total_size += ::google::protobuf::internal::WireFormatLite::StringSize( + this->tags(i)); + } + + // string description = 22; + if (this->description().size() > 0) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->description()); + } + // .flyteidl.core.Identifier launch_plan = 1; if (this->has_launch_plan()) { total_size += 1 + @@ -8105,6 +8245,11 @@ void ExecutionSpec::MergeFrom(const ExecutionSpec& from) { ::google::protobuf::uint32 cached_has_bits = 0; (void) cached_has_bits; + tags_.MergeFrom(from.tags_); + if (from.description().size() > 0) { + + description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_); + } if (from.has_launch_plan()) { mutable_launch_plan()->::flyteidl::core::Identifier::MergeFrom(from.launch_plan()); } @@ -8181,6 +8326,9 @@ void ExecutionSpec::Swap(ExecutionSpec* other) { void ExecutionSpec::InternalSwap(ExecutionSpec* other) { using std::swap; _internal_metadata_.Swap(&other->_internal_metadata_); + tags_.InternalSwap(CastToBase(&other->tags_)); + description_.Swap(&other->description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); swap(launch_plan_, other->launch_plan_); swap(inputs_, other->inputs_); swap(metadata_, other->metadata_); diff --git a/gen/pb-cpp/flyteidl/admin/execution.pb.h b/gen/pb-cpp/flyteidl/admin/execution.pb.h index 4418383b1..377bf176d 100644 --- a/gen/pb-cpp/flyteidl/admin/execution.pb.h +++ b/gen/pb-cpp/flyteidl/admin/execution.pb.h @@ -2249,6 +2249,42 @@ class ExecutionSpec final : // accessors ------------------------------------------------------- + // repeated string tags = 23; + int tags_size() const; + void clear_tags(); + static const int kTagsFieldNumber = 23; + const ::std::string& tags(int index) const; + ::std::string* mutable_tags(int index); + void set_tags(int index, const ::std::string& value); + #if LANG_CXX11 + void set_tags(int index, ::std::string&& value); + #endif + void set_tags(int index, const char* value); + void set_tags(int index, const char* value, size_t size); + ::std::string* add_tags(); + void add_tags(const ::std::string& value); + #if LANG_CXX11 + void add_tags(::std::string&& value); + #endif + void add_tags(const char* value); + void add_tags(const char* value, size_t size); + const ::google::protobuf::RepeatedPtrField<::std::string>& tags() const; + ::google::protobuf::RepeatedPtrField<::std::string>* mutable_tags(); + + // string description = 22; + void clear_description(); + static const int kDescriptionFieldNumber = 22; + const ::std::string& description() const; + void set_description(const ::std::string& value); + #if LANG_CXX11 + void set_description(::std::string&& value); + #endif + void set_description(const char* value); + void set_description(const char* value, size_t size); + ::std::string* mutable_description(); + ::std::string* release_description(); + void set_allocated_description(::std::string* description); + // .flyteidl.core.Identifier launch_plan = 1; bool has_launch_plan() const; void clear_launch_plan(); @@ -2384,6 +2420,8 @@ class ExecutionSpec final : inline void clear_has_notification_overrides(); ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::RepeatedPtrField<::std::string> tags_; + ::google::protobuf::internal::ArenaStringPtr description_; ::flyteidl::core::Identifier* launch_plan_; ::flyteidl::core::LiteralMap* inputs_; ::flyteidl::admin::ExecutionMetadata* metadata_; @@ -5945,6 +5983,128 @@ inline void ExecutionSpec::set_allocated_interruptible(::google::protobuf::BoolV // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.ExecutionSpec.interruptible) } +// string description = 22; +inline void ExecutionSpec::clear_description() { + description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& ExecutionSpec::description() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.ExecutionSpec.description) + return description_.GetNoArena(); +} +inline void ExecutionSpec::set_description(const ::std::string& value) { + + description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.ExecutionSpec.description) +} +#if LANG_CXX11 +inline void ExecutionSpec::set_description(::std::string&& value) { + + description_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.ExecutionSpec.description) +} +#endif +inline void ExecutionSpec::set_description(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.ExecutionSpec.description) +} +inline void ExecutionSpec::set_description(const char* value, size_t size) { + + description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.ExecutionSpec.description) +} +inline ::std::string* ExecutionSpec::mutable_description() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.ExecutionSpec.description) + return description_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* ExecutionSpec::release_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.ExecutionSpec.description) + + return description_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void ExecutionSpec::set_allocated_description(::std::string* description) { + if (description != nullptr) { + + } else { + + } + description_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.ExecutionSpec.description) +} + +// repeated string tags = 23; +inline int ExecutionSpec::tags_size() const { + return tags_.size(); +} +inline void ExecutionSpec::clear_tags() { + tags_.Clear(); +} +inline const ::std::string& ExecutionSpec::tags(int index) const { + // @@protoc_insertion_point(field_get:flyteidl.admin.ExecutionSpec.tags) + return tags_.Get(index); +} +inline ::std::string* ExecutionSpec::mutable_tags(int index) { + // @@protoc_insertion_point(field_mutable:flyteidl.admin.ExecutionSpec.tags) + return tags_.Mutable(index); +} +inline void ExecutionSpec::set_tags(int index, const ::std::string& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.ExecutionSpec.tags) + tags_.Mutable(index)->assign(value); +} +#if LANG_CXX11 +inline void ExecutionSpec::set_tags(int index, ::std::string&& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.ExecutionSpec.tags) + tags_.Mutable(index)->assign(std::move(value)); +} +#endif +inline void ExecutionSpec::set_tags(int index, const char* value) { + GOOGLE_DCHECK(value != nullptr); + tags_.Mutable(index)->assign(value); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.ExecutionSpec.tags) +} +inline void ExecutionSpec::set_tags(int index, const char* value, size_t size) { + tags_.Mutable(index)->assign( + reinterpret_cast(value), size); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.ExecutionSpec.tags) +} +inline ::std::string* ExecutionSpec::add_tags() { + // @@protoc_insertion_point(field_add_mutable:flyteidl.admin.ExecutionSpec.tags) + return tags_.Add(); +} +inline void ExecutionSpec::add_tags(const ::std::string& value) { + tags_.Add()->assign(value); + // @@protoc_insertion_point(field_add:flyteidl.admin.ExecutionSpec.tags) +} +#if LANG_CXX11 +inline void ExecutionSpec::add_tags(::std::string&& value) { + tags_.Add(std::move(value)); + // @@protoc_insertion_point(field_add:flyteidl.admin.ExecutionSpec.tags) +} +#endif +inline void ExecutionSpec::add_tags(const char* value) { + GOOGLE_DCHECK(value != nullptr); + tags_.Add()->assign(value); + // @@protoc_insertion_point(field_add_char:flyteidl.admin.ExecutionSpec.tags) +} +inline void ExecutionSpec::add_tags(const char* value, size_t size) { + tags_.Add()->assign(reinterpret_cast(value), size); + // @@protoc_insertion_point(field_add_pointer:flyteidl.admin.ExecutionSpec.tags) +} +inline const ::google::protobuf::RepeatedPtrField<::std::string>& +ExecutionSpec::tags() const { + // @@protoc_insertion_point(field_list:flyteidl.admin.ExecutionSpec.tags) + return tags_; +} +inline ::google::protobuf::RepeatedPtrField<::std::string>* +ExecutionSpec::mutable_tags() { + // @@protoc_insertion_point(field_mutable_list:flyteidl.admin.ExecutionSpec.tags) + return &tags_; +} + inline bool ExecutionSpec::has_notification_overrides() const { return notification_overrides_case() != NOTIFICATION_OVERRIDES_NOT_SET; } diff --git a/gen/pb-cpp/flyteidl/admin/launch_plan.pb.cc b/gen/pb-cpp/flyteidl/admin/launch_plan.pb.cc index bbb8e9e82..6181a3bd6 100644 --- a/gen/pb-cpp/flyteidl/admin/launch_plan.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/launch_plan.pb.cc @@ -23,8 +23,9 @@ extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::prot extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_Annotations_flyteidl_2fadmin_2fcommon_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_Labels_flyteidl_2fadmin_2fcommon_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_Notification_flyteidl_2fadmin_2fcommon_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fentity_5fdescription_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_EntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2flaunch_5fplan_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Auth_flyteidl_2fadmin_2flaunch_5fplan_2eproto; -extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2flaunch_5fplan_2eproto ::google::protobuf::internal::SCCInfo<12> scc_info_LaunchPlanSpec_flyteidl_2fadmin_2flaunch_5fplan_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2flaunch_5fplan_2eproto ::google::protobuf::internal::SCCInfo<13> scc_info_LaunchPlanSpec_flyteidl_2fadmin_2flaunch_5fplan_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2flaunch_5fplan_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_LaunchPlanMetadata_flyteidl_2fadmin_2flaunch_5fplan_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2flaunch_5fplan_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_LaunchPlanClosure_flyteidl_2fadmin_2flaunch_5fplan_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2flaunch_5fplan_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_LaunchPlan_flyteidl_2fadmin_2flaunch_5fplan_2eproto; @@ -176,8 +177,8 @@ static void InitDefaultsLaunchPlanSpec_flyteidl_2fadmin_2flaunch_5fplan_2eproto( ::flyteidl::admin::LaunchPlanSpec::InitAsDefaultInstance(); } -::google::protobuf::internal::SCCInfo<12> scc_info_LaunchPlanSpec_flyteidl_2fadmin_2flaunch_5fplan_2eproto = - {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 12, InitDefaultsLaunchPlanSpec_flyteidl_2fadmin_2flaunch_5fplan_2eproto}, { +::google::protobuf::internal::SCCInfo<13> scc_info_LaunchPlanSpec_flyteidl_2fadmin_2flaunch_5fplan_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 13, InitDefaultsLaunchPlanSpec_flyteidl_2fadmin_2flaunch_5fplan_2eproto}, { &scc_info_Identifier_flyteidl_2fcore_2fidentifier_2eproto.base, &scc_info_LaunchPlanMetadata_flyteidl_2fadmin_2flaunch_5fplan_2eproto.base, &scc_info_ParameterMap_flyteidl_2fcore_2finterface_2eproto.base, @@ -189,7 +190,8 @@ ::google::protobuf::internal::SCCInfo<12> scc_info_LaunchPlanSpec_flyteidl_2fadm &scc_info_SecurityContext_flyteidl_2fcore_2fsecurity_2eproto.base, &scc_info_QualityOfService_flyteidl_2fcore_2fexecution_2eproto.base, &scc_info_RawOutputDataConfig_flyteidl_2fadmin_2fcommon_2eproto.base, - &scc_info_BoolValue_google_2fprotobuf_2fwrappers_2eproto.base,}}; + &scc_info_BoolValue_google_2fprotobuf_2fwrappers_2eproto.base, + &scc_info_EntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base,}}; static void InitDefaultsLaunchPlanClosure_flyteidl_2fadmin_2flaunch_5fplan_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -356,6 +358,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2flaunch_5fplan_2e PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LaunchPlanSpec, raw_output_data_config_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LaunchPlanSpec, max_parallelism_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LaunchPlanSpec, interruptible_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LaunchPlanSpec, entity_description_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LaunchPlanClosure, _internal_metadata_), ~0u, // no _extensions_ @@ -409,12 +412,12 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 20, -1, sizeof(::flyteidl::admin::LaunchPlanList)}, { 27, -1, sizeof(::flyteidl::admin::Auth)}, { 34, -1, sizeof(::flyteidl::admin::LaunchPlanSpec)}, - { 53, -1, sizeof(::flyteidl::admin::LaunchPlanClosure)}, - { 63, -1, sizeof(::flyteidl::admin::LaunchPlanMetadata)}, - { 70, -1, sizeof(::flyteidl::admin::LaunchPlanUpdateRequest)}, - { 77, -1, sizeof(::flyteidl::admin::LaunchPlanUpdateResponse)}, - { 82, -1, sizeof(::flyteidl::admin::ActiveLaunchPlanRequest)}, - { 88, -1, sizeof(::flyteidl::admin::ActiveLaunchPlanListRequest)}, + { 54, -1, sizeof(::flyteidl::admin::LaunchPlanClosure)}, + { 64, -1, sizeof(::flyteidl::admin::LaunchPlanMetadata)}, + { 71, -1, sizeof(::flyteidl::admin::LaunchPlanUpdateRequest)}, + { 78, -1, sizeof(::flyteidl::admin::LaunchPlanUpdateResponse)}, + { 83, -1, sizeof(::flyteidl::admin::ActiveLaunchPlanRequest)}, + { 89, -1, sizeof(::flyteidl::admin::ActiveLaunchPlanListRequest)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -445,68 +448,70 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2flaunch_5fplan_2eproto[] "l/core/identifier.proto\032\035flyteidl/core/i" "nterface.proto\032\034flyteidl/core/security.p" "roto\032\035flyteidl/admin/schedule.proto\032\033fly" - "teidl/admin/common.proto\032\037google/protobu" - "f/timestamp.proto\032\036google/protobuf/wrapp" - "ers.proto\"n\n\027LaunchPlanCreateRequest\022%\n\002" - "id\030\001 \001(\0132\031.flyteidl.core.Identifier\022,\n\004s" - "pec\030\002 \001(\0132\036.flyteidl.admin.LaunchPlanSpe" - "c\"\032\n\030LaunchPlanCreateResponse\"\225\001\n\nLaunch" - "Plan\022%\n\002id\030\001 \001(\0132\031.flyteidl.core.Identif" - "ier\022,\n\004spec\030\002 \001(\0132\036.flyteidl.admin.Launc" - "hPlanSpec\0222\n\007closure\030\003 \001(\0132!.flyteidl.ad" - "min.LaunchPlanClosure\"Q\n\016LaunchPlanList\022" - "0\n\014launch_plans\030\001 \003(\0132\032.flyteidl.admin.L" - "aunchPlan\022\r\n\005token\030\002 \001(\t\"J\n\004Auth\022\032\n\022assu" - "mable_iam_role\030\001 \001(\t\022\"\n\032kubernetes_servi" - "ce_account\030\002 \001(\t:\002\030\001\"\260\005\n\016LaunchPlanSpec\022" - ".\n\013workflow_id\030\001 \001(\0132\031.flyteidl.core.Ide" - "ntifier\022;\n\017entity_metadata\030\002 \001(\0132\".flyte" - "idl.admin.LaunchPlanMetadata\0223\n\016default_" - "inputs\030\003 \001(\0132\033.flyteidl.core.ParameterMa" - "p\022/\n\014fixed_inputs\030\004 \001(\0132\031.flyteidl.core." - "LiteralMap\022\020\n\004role\030\005 \001(\tB\002\030\001\022&\n\006labels\030\006" - " \001(\0132\026.flyteidl.admin.Labels\0220\n\013annotati" - "ons\030\007 \001(\0132\033.flyteidl.admin.Annotations\022&" - "\n\004auth\030\010 \001(\0132\024.flyteidl.admin.AuthB\002\030\001\022/" - "\n\tauth_role\030\t \001(\0132\030.flyteidl.admin.AuthR" - "oleB\002\030\001\0228\n\020security_context\030\n \001(\0132\036.flyt" - "eidl.core.SecurityContext\022;\n\022quality_of_" - "service\030\020 \001(\0132\037.flyteidl.core.QualityOfS" - "ervice\022C\n\026raw_output_data_config\030\021 \001(\0132#" - ".flyteidl.admin.RawOutputDataConfig\022\027\n\017m" - "ax_parallelism\030\022 \001(\005\0221\n\rinterruptible\030\023 " - "\001(\0132\032.google.protobuf.BoolValue\"\217\002\n\021Laun" - "chPlanClosure\022.\n\005state\030\001 \001(\0162\037.flyteidl." - "admin.LaunchPlanState\0224\n\017expected_inputs" - "\030\002 \001(\0132\033.flyteidl.core.ParameterMap\0224\n\020e" - "xpected_outputs\030\003 \001(\0132\032.flyteidl.core.Va" - "riableMap\022.\n\ncreated_at\030\004 \001(\0132\032.google.p" - "rotobuf.Timestamp\022.\n\nupdated_at\030\005 \001(\0132\032." - "google.protobuf.Timestamp\"u\n\022LaunchPlanM" - "etadata\022*\n\010schedule\030\001 \001(\0132\030.flyteidl.adm" - "in.Schedule\0223\n\rnotifications\030\002 \003(\0132\034.fly" - "teidl.admin.Notification\"p\n\027LaunchPlanUp" - "dateRequest\022%\n\002id\030\001 \001(\0132\031.flyteidl.core." - "Identifier\022.\n\005state\030\002 \001(\0162\037.flyteidl.adm" - "in.LaunchPlanState\"\032\n\030LaunchPlanUpdateRe" - "sponse\"L\n\027ActiveLaunchPlanRequest\0221\n\002id\030" - "\001 \001(\0132%.flyteidl.admin.NamedEntityIdenti" - "fier\"\203\001\n\033ActiveLaunchPlanListRequest\022\017\n\007" - "project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\r\n\005limit\030\003" - " \001(\r\022\r\n\005token\030\004 \001(\t\022%\n\007sort_by\030\005 \001(\0132\024.f" - "lyteidl.admin.Sort*+\n\017LaunchPlanState\022\014\n" - "\010INACTIVE\020\000\022\n\n\006ACTIVE\020\001B7Z5github.com/fl" - "yteorg/flyteidl/gen/pb-go/flyteidl/admin" - "b\006proto3" + "teidl/admin/common.proto\032\'flyteidl/admin" + "/entity_description.proto\032\037google/protob" + "uf/timestamp.proto\032\036google/protobuf/wrap" + "pers.proto\"n\n\027LaunchPlanCreateRequest\022%\n" + "\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\022,\n\004" + "spec\030\002 \001(\0132\036.flyteidl.admin.LaunchPlanSp" + "ec\"\032\n\030LaunchPlanCreateResponse\"\225\001\n\nLaunc" + "hPlan\022%\n\002id\030\001 \001(\0132\031.flyteidl.core.Identi" + "fier\022,\n\004spec\030\002 \001(\0132\036.flyteidl.admin.Laun" + "chPlanSpec\0222\n\007closure\030\003 \001(\0132!.flyteidl.a" + "dmin.LaunchPlanClosure\"Q\n\016LaunchPlanList" + "\0220\n\014launch_plans\030\001 \003(\0132\032.flyteidl.admin." + "LaunchPlan\022\r\n\005token\030\002 \001(\t\"J\n\004Auth\022\032\n\022ass" + "umable_iam_role\030\001 \001(\t\022\"\n\032kubernetes_serv" + "ice_account\030\002 \001(\t:\002\030\001\"\357\005\n\016LaunchPlanSpec" + "\022.\n\013workflow_id\030\001 \001(\0132\031.flyteidl.core.Id" + "entifier\022;\n\017entity_metadata\030\002 \001(\0132\".flyt" + "eidl.admin.LaunchPlanMetadata\0223\n\016default" + "_inputs\030\003 \001(\0132\033.flyteidl.core.ParameterM" + "ap\022/\n\014fixed_inputs\030\004 \001(\0132\031.flyteidl.core" + ".LiteralMap\022\020\n\004role\030\005 \001(\tB\002\030\001\022&\n\006labels\030" + "\006 \001(\0132\026.flyteidl.admin.Labels\0220\n\013annotat" + "ions\030\007 \001(\0132\033.flyteidl.admin.Annotations\022" + "&\n\004auth\030\010 \001(\0132\024.flyteidl.admin.AuthB\002\030\001\022" + "/\n\tauth_role\030\t \001(\0132\030.flyteidl.admin.Auth" + "RoleB\002\030\001\0228\n\020security_context\030\n \001(\0132\036.fly" + "teidl.core.SecurityContext\022;\n\022quality_of" + "_service\030\020 \001(\0132\037.flyteidl.core.QualityOf" + "Service\022C\n\026raw_output_data_config\030\021 \001(\0132" + "#.flyteidl.admin.RawOutputDataConfig\022\027\n\017" + "max_parallelism\030\022 \001(\005\0221\n\rinterruptible\030\023" + " \001(\0132\032.google.protobuf.BoolValue\022=\n\022enti" + "ty_description\030\024 \001(\0132!.flyteidl.admin.En" + "tityDescription\"\217\002\n\021LaunchPlanClosure\022.\n" + "\005state\030\001 \001(\0162\037.flyteidl.admin.LaunchPlan" + "State\0224\n\017expected_inputs\030\002 \001(\0132\033.flyteid" + "l.core.ParameterMap\0224\n\020expected_outputs\030" + "\003 \001(\0132\032.flyteidl.core.VariableMap\022.\n\ncre" + "ated_at\030\004 \001(\0132\032.google.protobuf.Timestam" + "p\022.\n\nupdated_at\030\005 \001(\0132\032.google.protobuf." + "Timestamp\"u\n\022LaunchPlanMetadata\022*\n\010sched" + "ule\030\001 \001(\0132\030.flyteidl.admin.Schedule\0223\n\rn" + "otifications\030\002 \003(\0132\034.flyteidl.admin.Noti" + "fication\"p\n\027LaunchPlanUpdateRequest\022%\n\002i" + "d\030\001 \001(\0132\031.flyteidl.core.Identifier\022.\n\005st" + "ate\030\002 \001(\0162\037.flyteidl.admin.LaunchPlanSta" + "te\"\032\n\030LaunchPlanUpdateResponse\"L\n\027Active" + "LaunchPlanRequest\0221\n\002id\030\001 \001(\0132%.flyteidl" + ".admin.NamedEntityIdentifier\"\203\001\n\033ActiveL" + "aunchPlanListRequest\022\017\n\007project\030\001 \001(\t\022\016\n" + "\006domain\030\002 \001(\t\022\r\n\005limit\030\003 \001(\r\022\r\n\005token\030\004 " + "\001(\t\022%\n\007sort_by\030\005 \001(\0132\024.flyteidl.admin.So" + "rt*+\n\017LaunchPlanState\022\014\n\010INACTIVE\020\000\022\n\n\006A" + "CTIVE\020\001B7Z5github.com/flyteorg/flyteidl/" + "gen/pb-go/flyteidl/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2flaunch_5fplan_2eproto = { false, InitDefaults_flyteidl_2fadmin_2flaunch_5fplan_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2flaunch_5fplan_2eproto, - "flyteidl/admin/launch_plan.proto", &assign_descriptors_table_flyteidl_2fadmin_2flaunch_5fplan_2eproto, 2328, + "flyteidl/admin/launch_plan.proto", &assign_descriptors_table_flyteidl_2fadmin_2flaunch_5fplan_2eproto, 2432, }; void AddDescriptors_flyteidl_2fadmin_2flaunch_5fplan_2eproto() { - static constexpr ::google::protobuf::internal::InitFunc deps[9] = + static constexpr ::google::protobuf::internal::InitFunc deps[10] = { ::AddDescriptors_flyteidl_2fcore_2fexecution_2eproto, ::AddDescriptors_flyteidl_2fcore_2fliterals_2eproto, @@ -515,10 +520,11 @@ void AddDescriptors_flyteidl_2fadmin_2flaunch_5fplan_2eproto() { ::AddDescriptors_flyteidl_2fcore_2fsecurity_2eproto, ::AddDescriptors_flyteidl_2fadmin_2fschedule_2eproto, ::AddDescriptors_flyteidl_2fadmin_2fcommon_2eproto, + ::AddDescriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto, ::AddDescriptors_google_2fprotobuf_2ftimestamp_2eproto, ::AddDescriptors_google_2fprotobuf_2fwrappers_2eproto, }; - ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2flaunch_5fplan_2eproto, deps, 9); + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2flaunch_5fplan_2eproto, deps, 10); } // Force running AddDescriptors() at dynamic initialization time. @@ -2291,6 +2297,8 @@ void LaunchPlanSpec::InitAsDefaultInstance() { ::flyteidl::admin::RawOutputDataConfig::internal_default_instance()); ::flyteidl::admin::_LaunchPlanSpec_default_instance_._instance.get_mutable()->interruptible_ = const_cast< ::google::protobuf::BoolValue*>( ::google::protobuf::BoolValue::internal_default_instance()); + ::flyteidl::admin::_LaunchPlanSpec_default_instance_._instance.get_mutable()->entity_description_ = const_cast< ::flyteidl::admin::EntityDescription*>( + ::flyteidl::admin::EntityDescription::internal_default_instance()); } class LaunchPlanSpec::HasBitSetters { public: @@ -2306,6 +2314,7 @@ class LaunchPlanSpec::HasBitSetters { static const ::flyteidl::core::QualityOfService& quality_of_service(const LaunchPlanSpec* msg); static const ::flyteidl::admin::RawOutputDataConfig& raw_output_data_config(const LaunchPlanSpec* msg); static const ::google::protobuf::BoolValue& interruptible(const LaunchPlanSpec* msg); + static const ::flyteidl::admin::EntityDescription& entity_description(const LaunchPlanSpec* msg); }; const ::flyteidl::core::Identifier& @@ -2356,6 +2365,10 @@ const ::google::protobuf::BoolValue& LaunchPlanSpec::HasBitSetters::interruptible(const LaunchPlanSpec* msg) { return *msg->interruptible_; } +const ::flyteidl::admin::EntityDescription& +LaunchPlanSpec::HasBitSetters::entity_description(const LaunchPlanSpec* msg) { + return *msg->entity_description_; +} void LaunchPlanSpec::clear_workflow_id() { if (GetArenaNoVirtual() == nullptr && workflow_id_ != nullptr) { delete workflow_id_; @@ -2416,6 +2429,12 @@ void LaunchPlanSpec::clear_interruptible() { } interruptible_ = nullptr; } +void LaunchPlanSpec::clear_entity_description() { + if (GetArenaNoVirtual() == nullptr && entity_description_ != nullptr) { + delete entity_description_; + } + entity_description_ = nullptr; +} #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int LaunchPlanSpec::kWorkflowIdFieldNumber; const int LaunchPlanSpec::kEntityMetadataFieldNumber; @@ -2431,6 +2450,7 @@ const int LaunchPlanSpec::kQualityOfServiceFieldNumber; const int LaunchPlanSpec::kRawOutputDataConfigFieldNumber; const int LaunchPlanSpec::kMaxParallelismFieldNumber; const int LaunchPlanSpec::kInterruptibleFieldNumber; +const int LaunchPlanSpec::kEntityDescriptionFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 LaunchPlanSpec::LaunchPlanSpec() @@ -2506,6 +2526,11 @@ LaunchPlanSpec::LaunchPlanSpec(const LaunchPlanSpec& from) } else { interruptible_ = nullptr; } + if (from.has_entity_description()) { + entity_description_ = new ::flyteidl::admin::EntityDescription(*from.entity_description_); + } else { + entity_description_ = nullptr; + } max_parallelism_ = from.max_parallelism_; // @@protoc_insertion_point(copy_constructor:flyteidl.admin.LaunchPlanSpec) } @@ -2538,6 +2563,7 @@ void LaunchPlanSpec::SharedDtor() { if (this != internal_default_instance()) delete quality_of_service_; if (this != internal_default_instance()) delete raw_output_data_config_; if (this != internal_default_instance()) delete interruptible_; + if (this != internal_default_instance()) delete entity_description_; } void LaunchPlanSpec::SetCachedSize(int size) const { @@ -2604,6 +2630,10 @@ void LaunchPlanSpec::Clear() { delete interruptible_; } interruptible_ = nullptr; + if (GetArenaNoVirtual() == nullptr && entity_description_ != nullptr) { + delete entity_description_; + } + entity_description_ = nullptr; max_parallelism_ = 0; _internal_metadata_.Clear(); } @@ -2800,6 +2830,19 @@ const char* LaunchPlanSpec::_InternalParse(const char* begin, const char* end, v {parser_till_end, object}, ptr - size, ptr)); break; } + // .flyteidl.admin.EntityDescription entity_description = 20; + case 20: { + if (static_cast<::google::protobuf::uint8>(tag) != 162) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::EntityDescription::_InternalParse; + object = msg->mutable_entity_description(); + 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) { @@ -2994,6 +3037,17 @@ bool LaunchPlanSpec::MergePartialFromCodedStream( break; } + // .flyteidl.admin.EntityDescription entity_description = 20; + case 20: { + if (static_cast< ::google::protobuf::uint8>(tag) == (162 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_entity_description())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -3108,6 +3162,12 @@ void LaunchPlanSpec::SerializeWithCachedSizes( 19, HasBitSetters::interruptible(this), output); } + // .flyteidl.admin.EntityDescription entity_description = 20; + if (this->has_entity_description()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 20, HasBitSetters::entity_description(this), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -3221,6 +3281,13 @@ ::google::protobuf::uint8* LaunchPlanSpec::InternalSerializeWithCachedSizesToArr 19, HasBitSetters::interruptible(this), target); } + // .flyteidl.admin.EntityDescription entity_description = 20; + if (this->has_entity_description()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 20, HasBitSetters::entity_description(this), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -3333,6 +3400,13 @@ size_t LaunchPlanSpec::ByteSizeLong() const { *interruptible_); } + // .flyteidl.admin.EntityDescription entity_description = 20; + if (this->has_entity_description()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *entity_description_); + } + // int32 max_parallelism = 18; if (this->max_parallelism() != 0) { total_size += 2 + @@ -3407,6 +3481,9 @@ void LaunchPlanSpec::MergeFrom(const LaunchPlanSpec& from) { if (from.has_interruptible()) { mutable_interruptible()->::google::protobuf::BoolValue::MergeFrom(from.interruptible()); } + if (from.has_entity_description()) { + mutable_entity_description()->::flyteidl::admin::EntityDescription::MergeFrom(from.entity_description()); + } if (from.max_parallelism() != 0) { set_max_parallelism(from.max_parallelism()); } @@ -3451,6 +3528,7 @@ void LaunchPlanSpec::InternalSwap(LaunchPlanSpec* other) { swap(quality_of_service_, other->quality_of_service_); swap(raw_output_data_config_, other->raw_output_data_config_); swap(interruptible_, other->interruptible_); + swap(entity_description_, other->entity_description_); swap(max_parallelism_, other->max_parallelism_); } diff --git a/gen/pb-cpp/flyteidl/admin/launch_plan.pb.h b/gen/pb-cpp/flyteidl/admin/launch_plan.pb.h index c2900562a..2501acb39 100644 --- a/gen/pb-cpp/flyteidl/admin/launch_plan.pb.h +++ b/gen/pb-cpp/flyteidl/admin/launch_plan.pb.h @@ -39,6 +39,7 @@ #include "flyteidl/core/security.pb.h" #include "flyteidl/admin/schedule.pb.h" #include "flyteidl/admin/common.pb.h" +#include "flyteidl/admin/entity_description.pb.h" #include #include // @@protoc_insertion_point(includes) @@ -990,6 +991,15 @@ class LaunchPlanSpec final : ::google::protobuf::BoolValue* mutable_interruptible(); void set_allocated_interruptible(::google::protobuf::BoolValue* interruptible); + // .flyteidl.admin.EntityDescription entity_description = 20; + bool has_entity_description() const; + void clear_entity_description(); + static const int kEntityDescriptionFieldNumber = 20; + const ::flyteidl::admin::EntityDescription& entity_description() const; + ::flyteidl::admin::EntityDescription* release_entity_description(); + ::flyteidl::admin::EntityDescription* mutable_entity_description(); + void set_allocated_entity_description(::flyteidl::admin::EntityDescription* entity_description); + // int32 max_parallelism = 18; void clear_max_parallelism(); static const int kMaxParallelismFieldNumber = 18; @@ -1014,6 +1024,7 @@ class LaunchPlanSpec final : ::flyteidl::core::QualityOfService* quality_of_service_; ::flyteidl::admin::RawOutputDataConfig* raw_output_data_config_; ::google::protobuf::BoolValue* interruptible_; + ::flyteidl::admin::EntityDescription* entity_description_; ::google::protobuf::int32 max_parallelism_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2flaunch_5fplan_2eproto; @@ -2890,6 +2901,51 @@ inline void LaunchPlanSpec::set_allocated_interruptible(::google::protobuf::Bool // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.LaunchPlanSpec.interruptible) } +// .flyteidl.admin.EntityDescription entity_description = 20; +inline bool LaunchPlanSpec::has_entity_description() const { + return this != internal_default_instance() && entity_description_ != nullptr; +} +inline const ::flyteidl::admin::EntityDescription& LaunchPlanSpec::entity_description() const { + const ::flyteidl::admin::EntityDescription* p = entity_description_; + // @@protoc_insertion_point(field_get:flyteidl.admin.LaunchPlanSpec.entity_description) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_EntityDescription_default_instance_); +} +inline ::flyteidl::admin::EntityDescription* LaunchPlanSpec::release_entity_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.LaunchPlanSpec.entity_description) + + ::flyteidl::admin::EntityDescription* temp = entity_description_; + entity_description_ = nullptr; + return temp; +} +inline ::flyteidl::admin::EntityDescription* LaunchPlanSpec::mutable_entity_description() { + + if (entity_description_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::EntityDescription>(GetArenaNoVirtual()); + entity_description_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.LaunchPlanSpec.entity_description) + return entity_description_; +} +inline void LaunchPlanSpec::set_allocated_entity_description(::flyteidl::admin::EntityDescription* entity_description) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(entity_description_); + } + if (entity_description) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + entity_description = ::google::protobuf::internal::GetOwnedMessage( + message_arena, entity_description, submessage_arena); + } + + } else { + + } + entity_description_ = entity_description; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.LaunchPlanSpec.entity_description) +} + // ------------------------------------------------------------------- // LaunchPlanClosure diff --git a/gen/pb-cpp/flyteidl/admin/project.pb.cc b/gen/pb-cpp/flyteidl/admin/project.pb.cc index 16932307c..8dcd9afa2 100644 --- a/gen/pb-cpp/flyteidl/admin/project.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/project.pb.cc @@ -188,6 +188,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fproject_2eproto: PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Project, description_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Project, labels_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Project, state_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Project, tags_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::Projects, _internal_metadata_), ~0u, // no _extensions_ @@ -224,11 +225,11 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fproject_2eproto: static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, sizeof(::flyteidl::admin::Domain)}, { 7, -1, sizeof(::flyteidl::admin::Project)}, - { 18, -1, sizeof(::flyteidl::admin::Projects)}, - { 25, -1, sizeof(::flyteidl::admin::ProjectListRequest)}, - { 34, -1, sizeof(::flyteidl::admin::ProjectRegisterRequest)}, - { 40, -1, sizeof(::flyteidl::admin::ProjectRegisterResponse)}, - { 45, -1, sizeof(::flyteidl::admin::ProjectUpdateResponse)}, + { 19, -1, sizeof(::flyteidl::admin::Projects)}, + { 26, -1, sizeof(::flyteidl::admin::ProjectListRequest)}, + { 35, -1, sizeof(::flyteidl::admin::ProjectRegisterRequest)}, + { 41, -1, sizeof(::flyteidl::admin::ProjectRegisterResponse)}, + { 46, -1, sizeof(::flyteidl::admin::ProjectUpdateResponse)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -250,28 +251,28 @@ ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_fl const char descriptor_table_protodef_flyteidl_2fadmin_2fproject_2eproto[] = "\n\034flyteidl/admin/project.proto\022\016flyteidl" ".admin\032\033flyteidl/admin/common.proto\"\"\n\006D" - "omain\022\n\n\002id\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\"\376\001\n\007Proj" + "omain\022\n\n\002id\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\"\214\002\n\007Proj" "ect\022\n\n\002id\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\'\n\007domains" "\030\003 \003(\0132\026.flyteidl.admin.Domain\022\023\n\013descri" "ption\030\004 \001(\t\022&\n\006labels\030\005 \001(\0132\026.flyteidl.a" "dmin.Labels\0223\n\005state\030\006 \001(\0162$.flyteidl.ad" - "min.Project.ProjectState\">\n\014ProjectState" - "\022\n\n\006ACTIVE\020\000\022\014\n\010ARCHIVED\020\001\022\024\n\020SYSTEM_GEN" - "ERATED\020\002\"D\n\010Projects\022)\n\010projects\030\001 \003(\0132\027" - ".flyteidl.admin.Project\022\r\n\005token\030\002 \001(\t\"j" - "\n\022ProjectListRequest\022\r\n\005limit\030\001 \001(\r\022\r\n\005t" - "oken\030\002 \001(\t\022\017\n\007filters\030\003 \001(\t\022%\n\007sort_by\030\004" - " \001(\0132\024.flyteidl.admin.Sort\"B\n\026ProjectReg" - "isterRequest\022(\n\007project\030\001 \001(\0132\027.flyteidl" - ".admin.Project\"\031\n\027ProjectRegisterRespons" - "e\"\027\n\025ProjectUpdateResponseB7Z5github.com" - "/flyteorg/flyteidl/gen/pb-go/flyteidl/ad" - "minb\006proto3" + "min.Project.ProjectState\022\014\n\004tags\030\007 \003(\t\">" + "\n\014ProjectState\022\n\n\006ACTIVE\020\000\022\014\n\010ARCHIVED\020\001" + "\022\024\n\020SYSTEM_GENERATED\020\002\"D\n\010Projects\022)\n\010pr" + "ojects\030\001 \003(\0132\027.flyteidl.admin.Project\022\r\n" + "\005token\030\002 \001(\t\"j\n\022ProjectListRequest\022\r\n\005li" + "mit\030\001 \001(\r\022\r\n\005token\030\002 \001(\t\022\017\n\007filters\030\003 \001(" + "\t\022%\n\007sort_by\030\004 \001(\0132\024.flyteidl.admin.Sort" + "\"B\n\026ProjectRegisterRequest\022(\n\007project\030\001 " + "\001(\0132\027.flyteidl.admin.Project\"\031\n\027ProjectR" + "egisterResponse\"\027\n\025ProjectUpdateResponse" + "B7Z5github.com/flyteorg/flyteidl/gen/pb-" + "go/flyteidl/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2fproject_2eproto = { false, InitDefaults_flyteidl_2fadmin_2fproject_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2fproject_2eproto, - "flyteidl/admin/project.proto", &assign_descriptors_table_flyteidl_2fadmin_2fproject_2eproto, 731, + "flyteidl/admin/project.proto", &assign_descriptors_table_flyteidl_2fadmin_2fproject_2eproto, 745, }; void AddDescriptors_flyteidl_2fadmin_2fproject_2eproto() { @@ -708,6 +709,7 @@ const int Project::kDomainsFieldNumber; const int Project::kDescriptionFieldNumber; const int Project::kLabelsFieldNumber; const int Project::kStateFieldNumber; +const int Project::kTagsFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 Project::Project() @@ -718,7 +720,8 @@ Project::Project() Project::Project(const Project& from) : ::google::protobuf::Message(), _internal_metadata_(nullptr), - domains_(from.domains_) { + domains_(from.domains_), + tags_(from.tags_) { _internal_metadata_.MergeFrom(from._internal_metadata_); id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); if (from.id().size() > 0) { @@ -780,6 +783,7 @@ void Project::Clear() { (void) cached_has_bits; domains_.Clear(); + tags_.Clear(); id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); @@ -889,6 +893,25 @@ const char* Project::_InternalParse(const char* begin, const char* end, void* ob GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); break; } + // repeated string tags = 7; + case 7: { + if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual; + do { + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("flyteidl.admin.Project.tags"); + object = msg->add_tags(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + if (ptr >= end) break; + } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 58 && (ptr += 1)); + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -1004,6 +1027,22 @@ bool Project::MergePartialFromCodedStream( break; } + // repeated string tags = 7; + case 7: { + if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->add_tags())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(this->tags_size() - 1).data(), + static_cast(this->tags(this->tags_size() - 1).length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.Project.tags")); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -1082,6 +1121,16 @@ void Project::SerializeWithCachedSizes( 6, this->state(), output); } + // repeated string tags = 7; + for (int i = 0, n = this->tags_size(); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(i).data(), static_cast(this->tags(i).length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Project.tags"); + ::google::protobuf::internal::WireFormatLite::WriteString( + 7, this->tags(i), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -1149,6 +1198,16 @@ ::google::protobuf::uint8* Project::InternalSerializeWithCachedSizesToArray( 6, this->state(), target); } + // repeated string tags = 7; + for (int i = 0, n = this->tags_size(); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tags(i).data(), static_cast(this->tags(i).length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.Project.tags"); + target = ::google::protobuf::internal::WireFormatLite:: + WriteStringToArray(7, this->tags(i), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -1181,6 +1240,14 @@ size_t Project::ByteSizeLong() const { } } + // repeated string tags = 7; + total_size += 1 * + ::google::protobuf::internal::FromIntSize(this->tags_size()); + for (int i = 0, n = this->tags_size(); i < n; i++) { + total_size += ::google::protobuf::internal::WireFormatLite::StringSize( + this->tags(i)); + } + // string id = 1; if (this->id().size() > 0) { total_size += 1 + @@ -1243,6 +1310,7 @@ void Project::MergeFrom(const Project& from) { (void) cached_has_bits; domains_.MergeFrom(from.domains_); + tags_.MergeFrom(from.tags_); if (from.id().size() > 0) { id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.id_); @@ -1289,6 +1357,7 @@ void Project::InternalSwap(Project* other) { using std::swap; _internal_metadata_.Swap(&other->_internal_metadata_); CastToBase(&domains_)->InternalSwap(CastToBase(&other->domains_)); + tags_.InternalSwap(CastToBase(&other->tags_)); id_.Swap(&other->id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual()); name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), diff --git a/gen/pb-cpp/flyteidl/admin/project.pb.h b/gen/pb-cpp/flyteidl/admin/project.pb.h index b1fa7e9e3..4f54da7f6 100644 --- a/gen/pb-cpp/flyteidl/admin/project.pb.h +++ b/gen/pb-cpp/flyteidl/admin/project.pb.h @@ -383,6 +383,28 @@ class Project final : const ::google::protobuf::RepeatedPtrField< ::flyteidl::admin::Domain >& domains() const; + // repeated string tags = 7; + int tags_size() const; + void clear_tags(); + static const int kTagsFieldNumber = 7; + const ::std::string& tags(int index) const; + ::std::string* mutable_tags(int index); + void set_tags(int index, const ::std::string& value); + #if LANG_CXX11 + void set_tags(int index, ::std::string&& value); + #endif + void set_tags(int index, const char* value); + void set_tags(int index, const char* value, size_t size); + ::std::string* add_tags(); + void add_tags(const ::std::string& value); + #if LANG_CXX11 + void add_tags(::std::string&& value); + #endif + void add_tags(const char* value); + void add_tags(const char* value, size_t size); + const ::google::protobuf::RepeatedPtrField<::std::string>& tags() const; + ::google::protobuf::RepeatedPtrField<::std::string>* mutable_tags(); + // string id = 1; void clear_id(); static const int kIdFieldNumber = 1; @@ -446,6 +468,7 @@ class Project final : ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; ::google::protobuf::RepeatedPtrField< ::flyteidl::admin::Domain > domains_; + ::google::protobuf::RepeatedPtrField<::std::string> tags_; ::google::protobuf::internal::ArenaStringPtr id_; ::google::protobuf::internal::ArenaStringPtr name_; ::google::protobuf::internal::ArenaStringPtr description_; @@ -1433,6 +1456,75 @@ inline void Project::set_state(::flyteidl::admin::Project_ProjectState value) { // @@protoc_insertion_point(field_set:flyteidl.admin.Project.state) } +// repeated string tags = 7; +inline int Project::tags_size() const { + return tags_.size(); +} +inline void Project::clear_tags() { + tags_.Clear(); +} +inline const ::std::string& Project::tags(int index) const { + // @@protoc_insertion_point(field_get:flyteidl.admin.Project.tags) + return tags_.Get(index); +} +inline ::std::string* Project::mutable_tags(int index) { + // @@protoc_insertion_point(field_mutable:flyteidl.admin.Project.tags) + return tags_.Mutable(index); +} +inline void Project::set_tags(int index, const ::std::string& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.Project.tags) + tags_.Mutable(index)->assign(value); +} +#if LANG_CXX11 +inline void Project::set_tags(int index, ::std::string&& value) { + // @@protoc_insertion_point(field_set:flyteidl.admin.Project.tags) + tags_.Mutable(index)->assign(std::move(value)); +} +#endif +inline void Project::set_tags(int index, const char* value) { + GOOGLE_DCHECK(value != nullptr); + tags_.Mutable(index)->assign(value); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.Project.tags) +} +inline void Project::set_tags(int index, const char* value, size_t size) { + tags_.Mutable(index)->assign( + reinterpret_cast(value), size); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.Project.tags) +} +inline ::std::string* Project::add_tags() { + // @@protoc_insertion_point(field_add_mutable:flyteidl.admin.Project.tags) + return tags_.Add(); +} +inline void Project::add_tags(const ::std::string& value) { + tags_.Add()->assign(value); + // @@protoc_insertion_point(field_add:flyteidl.admin.Project.tags) +} +#if LANG_CXX11 +inline void Project::add_tags(::std::string&& value) { + tags_.Add(std::move(value)); + // @@protoc_insertion_point(field_add:flyteidl.admin.Project.tags) +} +#endif +inline void Project::add_tags(const char* value) { + GOOGLE_DCHECK(value != nullptr); + tags_.Add()->assign(value); + // @@protoc_insertion_point(field_add_char:flyteidl.admin.Project.tags) +} +inline void Project::add_tags(const char* value, size_t size) { + tags_.Add()->assign(reinterpret_cast(value), size); + // @@protoc_insertion_point(field_add_pointer:flyteidl.admin.Project.tags) +} +inline const ::google::protobuf::RepeatedPtrField<::std::string>& +Project::tags() const { + // @@protoc_insertion_point(field_list:flyteidl.admin.Project.tags) + return tags_; +} +inline ::google::protobuf::RepeatedPtrField<::std::string>* +Project::mutable_tags() { + // @@protoc_insertion_point(field_mutable_list:flyteidl.admin.Project.tags) + return &tags_; +} + // ------------------------------------------------------------------- // Projects diff --git a/gen/pb-cpp/flyteidl/admin/task.pb.cc b/gen/pb-cpp/flyteidl/admin/task.pb.cc index 2f3903a1c..12de011ce 100644 --- a/gen/pb-cpp/flyteidl/admin/task.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/task.pb.cc @@ -16,8 +16,9 @@ // @@protoc_insertion_point(includes) #include -extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2ftask_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TaskSpec_flyteidl_2fadmin_2ftask_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fentity_5fdescription_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_EntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2ftask_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TaskClosure_flyteidl_2fadmin_2ftask_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2ftask_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TaskSpec_flyteidl_2fadmin_2ftask_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2ftask_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_Task_flyteidl_2fadmin_2ftask_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fcompiler_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_CompiledTask_flyteidl_2fcore_2fcompiler_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Identifier_flyteidl_2fcore_2fidentifier_2eproto; @@ -123,9 +124,10 @@ static void InitDefaultsTaskSpec_flyteidl_2fadmin_2ftask_2eproto() { ::flyteidl::admin::TaskSpec::InitAsDefaultInstance(); } -::google::protobuf::internal::SCCInfo<1> scc_info_TaskSpec_flyteidl_2fadmin_2ftask_2eproto = - {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTaskSpec_flyteidl_2fadmin_2ftask_2eproto}, { - &scc_info_TaskTemplate_flyteidl_2fcore_2ftasks_2eproto.base,}}; +::google::protobuf::internal::SCCInfo<2> scc_info_TaskSpec_flyteidl_2fadmin_2ftask_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTaskSpec_flyteidl_2fadmin_2ftask_2eproto}, { + &scc_info_TaskTemplate_flyteidl_2fcore_2ftasks_2eproto.base, + &scc_info_EntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base,}}; static void InitDefaultsTaskClosure_flyteidl_2fadmin_2ftask_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -189,6 +191,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2ftask_2eproto::of ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::TaskSpec, template__), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::TaskSpec, entity_description_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::TaskClosure, _internal_metadata_), ~0u, // no _extensions_ @@ -203,7 +206,7 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 12, -1, sizeof(::flyteidl::admin::Task)}, { 19, -1, sizeof(::flyteidl::admin::TaskList)}, { 26, -1, sizeof(::flyteidl::admin::TaskSpec)}, - { 32, -1, sizeof(::flyteidl::admin::TaskClosure)}, + { 33, -1, sizeof(::flyteidl::admin::TaskClosure)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -226,36 +229,39 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2ftask_2eproto[] = "min\032\036flyteidl/core/identifier.proto\032\031fly" "teidl/core/tasks.proto\032\034flyteidl/core/co" "mpiler.proto\032\037google/protobuf/timestamp." - "proto\"b\n\021TaskCreateRequest\022%\n\002id\030\001 \001(\0132\031" - ".flyteidl.core.Identifier\022&\n\004spec\030\002 \001(\0132" - "\030.flyteidl.admin.TaskSpec\"\024\n\022TaskCreateR" - "esponse\"[\n\004Task\022%\n\002id\030\001 \001(\0132\031.flyteidl.c" - "ore.Identifier\022,\n\007closure\030\002 \001(\0132\033.flytei" - "dl.admin.TaskClosure\">\n\010TaskList\022#\n\005task" - "s\030\001 \003(\0132\024.flyteidl.admin.Task\022\r\n\005token\030\002" - " \001(\t\"9\n\010TaskSpec\022-\n\010template\030\001 \001(\0132\033.fly" - "teidl.core.TaskTemplate\"q\n\013TaskClosure\0222" - "\n\rcompiled_task\030\001 \001(\0132\033.flyteidl.core.Co" - "mpiledTask\022.\n\ncreated_at\030\002 \001(\0132\032.google." - "protobuf.TimestampB7Z5github.com/flyteor" - "g/flyteidl/gen/pb-go/flyteidl/adminb\006pro" - "to3" + "proto\032\'flyteidl/admin/entity_description" + ".proto\"b\n\021TaskCreateRequest\022%\n\002id\030\001 \001(\0132" + "\031.flyteidl.core.Identifier\022&\n\004spec\030\002 \001(\013" + "2\030.flyteidl.admin.TaskSpec\"\024\n\022TaskCreate" + "Response\"[\n\004Task\022%\n\002id\030\001 \001(\0132\031.flyteidl." + "core.Identifier\022,\n\007closure\030\002 \001(\0132\033.flyte" + "idl.admin.TaskClosure\">\n\010TaskList\022#\n\005tas" + "ks\030\001 \003(\0132\024.flyteidl.admin.Task\022\r\n\005token\030" + "\002 \001(\t\"x\n\010TaskSpec\022-\n\010template\030\001 \001(\0132\033.fl" + "yteidl.core.TaskTemplate\022=\n\022entity_descr" + "iption\030\002 \001(\0132!.flyteidl.admin.EntityDesc" + "ription\"q\n\013TaskClosure\0222\n\rcompiled_task\030" + "\001 \001(\0132\033.flyteidl.core.CompiledTask\022.\n\ncr" + "eated_at\030\002 \001(\0132\032.google.protobuf.Timesta" + "mpB7Z5github.com/flyteorg/flyteidl/gen/p" + "b-go/flyteidl/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2ftask_2eproto = { false, InitDefaults_flyteidl_2fadmin_2ftask_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2ftask_2eproto, - "flyteidl/admin/task.proto", &assign_descriptors_table_flyteidl_2fadmin_2ftask_2eproto, 683, + "flyteidl/admin/task.proto", &assign_descriptors_table_flyteidl_2fadmin_2ftask_2eproto, 787, }; void AddDescriptors_flyteidl_2fadmin_2ftask_2eproto() { - static constexpr ::google::protobuf::internal::InitFunc deps[4] = + static constexpr ::google::protobuf::internal::InitFunc deps[5] = { ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, ::AddDescriptors_flyteidl_2fcore_2ftasks_2eproto, ::AddDescriptors_flyteidl_2fcore_2fcompiler_2eproto, ::AddDescriptors_google_2fprotobuf_2ftimestamp_2eproto, + ::AddDescriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto, }; - ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2ftask_2eproto, deps, 4); + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2ftask_2eproto, deps, 5); } // Force running AddDescriptors() at dynamic initialization time. @@ -1556,24 +1562,38 @@ ::google::protobuf::Metadata TaskList::GetMetadata() const { void TaskSpec::InitAsDefaultInstance() { ::flyteidl::admin::_TaskSpec_default_instance_._instance.get_mutable()->template__ = const_cast< ::flyteidl::core::TaskTemplate*>( ::flyteidl::core::TaskTemplate::internal_default_instance()); + ::flyteidl::admin::_TaskSpec_default_instance_._instance.get_mutable()->entity_description_ = const_cast< ::flyteidl::admin::EntityDescription*>( + ::flyteidl::admin::EntityDescription::internal_default_instance()); } class TaskSpec::HasBitSetters { public: static const ::flyteidl::core::TaskTemplate& template_(const TaskSpec* msg); + static const ::flyteidl::admin::EntityDescription& entity_description(const TaskSpec* msg); }; const ::flyteidl::core::TaskTemplate& TaskSpec::HasBitSetters::template_(const TaskSpec* msg) { return *msg->template__; } +const ::flyteidl::admin::EntityDescription& +TaskSpec::HasBitSetters::entity_description(const TaskSpec* msg) { + return *msg->entity_description_; +} void TaskSpec::clear_template_() { if (GetArenaNoVirtual() == nullptr && template__ != nullptr) { delete template__; } template__ = nullptr; } +void TaskSpec::clear_entity_description() { + if (GetArenaNoVirtual() == nullptr && entity_description_ != nullptr) { + delete entity_description_; + } + entity_description_ = nullptr; +} #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int TaskSpec::kTemplateFieldNumber; +const int TaskSpec::kEntityDescriptionFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 TaskSpec::TaskSpec() @@ -1590,13 +1610,20 @@ TaskSpec::TaskSpec(const TaskSpec& from) } else { template__ = nullptr; } + if (from.has_entity_description()) { + entity_description_ = new ::flyteidl::admin::EntityDescription(*from.entity_description_); + } else { + entity_description_ = nullptr; + } // @@protoc_insertion_point(copy_constructor:flyteidl.admin.TaskSpec) } void TaskSpec::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_TaskSpec_flyteidl_2fadmin_2ftask_2eproto.base); - template__ = nullptr; + ::memset(&template__, 0, static_cast( + reinterpret_cast(&entity_description_) - + reinterpret_cast(&template__)) + sizeof(entity_description_)); } TaskSpec::~TaskSpec() { @@ -1606,6 +1633,7 @@ TaskSpec::~TaskSpec() { void TaskSpec::SharedDtor() { if (this != internal_default_instance()) delete template__; + if (this != internal_default_instance()) delete entity_description_; } void TaskSpec::SetCachedSize(int size) const { @@ -1627,6 +1655,10 @@ void TaskSpec::Clear() { delete template__; } template__ = nullptr; + if (GetArenaNoVirtual() == nullptr && entity_description_ != nullptr) { + delete entity_description_; + } + entity_description_ = nullptr; _internal_metadata_.Clear(); } @@ -1656,6 +1688,19 @@ const char* TaskSpec::_InternalParse(const char* begin, const char* end, void* o {parser_till_end, object}, ptr - size, ptr)); break; } + // .flyteidl.admin.EntityDescription entity_description = 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::admin::EntityDescription::_InternalParse; + object = msg->mutable_entity_description(); + 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) { @@ -1697,6 +1742,17 @@ bool TaskSpec::MergePartialFromCodedStream( break; } + // .flyteidl.admin.EntityDescription entity_description = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_entity_description())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -1730,6 +1786,12 @@ void TaskSpec::SerializeWithCachedSizes( 1, HasBitSetters::template_(this), output); } + // .flyteidl.admin.EntityDescription entity_description = 2; + if (this->has_entity_description()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 2, HasBitSetters::entity_description(this), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -1750,6 +1812,13 @@ ::google::protobuf::uint8* TaskSpec::InternalSerializeWithCachedSizesToArray( 1, HasBitSetters::template_(this), target); } + // .flyteidl.admin.EntityDescription entity_description = 2; + if (this->has_entity_description()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 2, HasBitSetters::entity_description(this), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -1778,6 +1847,13 @@ size_t TaskSpec::ByteSizeLong() const { *template__); } + // .flyteidl.admin.EntityDescription entity_description = 2; + if (this->has_entity_description()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *entity_description_); + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -1808,6 +1884,9 @@ void TaskSpec::MergeFrom(const TaskSpec& from) { if (from.has_template_()) { mutable_template_()->::flyteidl::core::TaskTemplate::MergeFrom(from.template_()); } + if (from.has_entity_description()) { + mutable_entity_description()->::flyteidl::admin::EntityDescription::MergeFrom(from.entity_description()); + } } void TaskSpec::CopyFrom(const ::google::protobuf::Message& from) { @@ -1836,6 +1915,7 @@ void TaskSpec::InternalSwap(TaskSpec* other) { using std::swap; _internal_metadata_.Swap(&other->_internal_metadata_); swap(template__, other->template__); + swap(entity_description_, other->entity_description_); } ::google::protobuf::Metadata TaskSpec::GetMetadata() const { diff --git a/gen/pb-cpp/flyteidl/admin/task.pb.h b/gen/pb-cpp/flyteidl/admin/task.pb.h index 7946c0a91..42c6aa285 100644 --- a/gen/pb-cpp/flyteidl/admin/task.pb.h +++ b/gen/pb-cpp/flyteidl/admin/task.pb.h @@ -35,6 +35,7 @@ #include "flyteidl/core/tasks.pb.h" #include "flyteidl/core/compiler.pb.h" #include +#include "flyteidl/admin/entity_description.pb.h" // @@protoc_insertion_point(includes) #include #define PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2ftask_2eproto @@ -681,12 +682,22 @@ class TaskSpec final : ::flyteidl::core::TaskTemplate* mutable_template_(); void set_allocated_template_(::flyteidl::core::TaskTemplate* template_); + // .flyteidl.admin.EntityDescription entity_description = 2; + bool has_entity_description() const; + void clear_entity_description(); + static const int kEntityDescriptionFieldNumber = 2; + const ::flyteidl::admin::EntityDescription& entity_description() const; + ::flyteidl::admin::EntityDescription* release_entity_description(); + ::flyteidl::admin::EntityDescription* mutable_entity_description(); + void set_allocated_entity_description(::flyteidl::admin::EntityDescription* entity_description); + // @@protoc_insertion_point(class_scope:flyteidl.admin.TaskSpec) private: class HasBitSetters; ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; ::flyteidl::core::TaskTemplate* template__; + ::flyteidl::admin::EntityDescription* entity_description_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2ftask_2eproto; }; @@ -1162,6 +1173,51 @@ inline void TaskSpec::set_allocated_template_(::flyteidl::core::TaskTemplate* te // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.TaskSpec.template) } +// .flyteidl.admin.EntityDescription entity_description = 2; +inline bool TaskSpec::has_entity_description() const { + return this != internal_default_instance() && entity_description_ != nullptr; +} +inline const ::flyteidl::admin::EntityDescription& TaskSpec::entity_description() const { + const ::flyteidl::admin::EntityDescription* p = entity_description_; + // @@protoc_insertion_point(field_get:flyteidl.admin.TaskSpec.entity_description) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_EntityDescription_default_instance_); +} +inline ::flyteidl::admin::EntityDescription* TaskSpec::release_entity_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.TaskSpec.entity_description) + + ::flyteidl::admin::EntityDescription* temp = entity_description_; + entity_description_ = nullptr; + return temp; +} +inline ::flyteidl::admin::EntityDescription* TaskSpec::mutable_entity_description() { + + if (entity_description_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::EntityDescription>(GetArenaNoVirtual()); + entity_description_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.TaskSpec.entity_description) + return entity_description_; +} +inline void TaskSpec::set_allocated_entity_description(::flyteidl::admin::EntityDescription* entity_description) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(entity_description_); + } + if (entity_description) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + entity_description = ::google::protobuf::internal::GetOwnedMessage( + message_arena, entity_description, submessage_arena); + } + + } else { + + } + entity_description_ = entity_description; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.TaskSpec.entity_description) +} + // ------------------------------------------------------------------- // TaskClosure diff --git a/gen/pb-cpp/flyteidl/admin/workflow.pb.cc b/gen/pb-cpp/flyteidl/admin/workflow.pb.cc index 2e4f05d02..4602797e8 100644 --- a/gen/pb-cpp/flyteidl/admin/workflow.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/workflow.pb.cc @@ -16,8 +16,9 @@ // @@protoc_insertion_point(includes) #include -extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_WorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fentity_5fdescription_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_EntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_WorkflowClosure_flyteidl_2fadmin_2fworkflow_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_WorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto; 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; @@ -123,9 +124,10 @@ static void InitDefaultsWorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto() { ::flyteidl::admin::WorkflowSpec::InitAsDefaultInstance(); } -::google::protobuf::internal::SCCInfo<1> scc_info_WorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto = - {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsWorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto}, { - &scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto.base,}}; +::google::protobuf::internal::SCCInfo<2> scc_info_WorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsWorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto}, { + &scc_info_WorkflowTemplate_flyteidl_2fcore_2fworkflow_2eproto.base, + &scc_info_EntityDescription_flyteidl_2fadmin_2fentity_5fdescription_2eproto.base,}}; static void InitDefaultsWorkflowClosure_flyteidl_2fadmin_2fworkflow_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -190,6 +192,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fworkflow_2eproto ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowSpec, template__), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowSpec, sub_workflows_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowSpec, entity_description_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowClosure, _internal_metadata_), ~0u, // no _extensions_ @@ -204,7 +207,7 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 12, -1, sizeof(::flyteidl::admin::Workflow)}, { 19, -1, sizeof(::flyteidl::admin::WorkflowList)}, { 26, -1, sizeof(::flyteidl::admin::WorkflowSpec)}, - { 33, -1, sizeof(::flyteidl::admin::WorkflowClosure)}, + { 34, -1, sizeof(::flyteidl::admin::WorkflowClosure)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -227,39 +230,42 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2fworkflow_2eproto[] = "l.admin\032\034flyteidl/core/compiler.proto\032\036f" "lyteidl/core/identifier.proto\032\034flyteidl/" "core/workflow.proto\032\037google/protobuf/tim" - "estamp.proto\"j\n\025WorkflowCreateRequest\022%\n" - "\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\022*\n\004" - "spec\030\002 \001(\0132\034.flyteidl.admin.WorkflowSpec" - "\"\030\n\026WorkflowCreateResponse\"c\n\010Workflow\022%" - "\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\0220\n" - "\007closure\030\002 \001(\0132\037.flyteidl.admin.Workflow" - "Closure\"J\n\014WorkflowList\022+\n\tworkflows\030\001 \003" - "(\0132\030.flyteidl.admin.Workflow\022\r\n\005token\030\002 " - "\001(\t\"y\n\014WorkflowSpec\0221\n\010template\030\001 \001(\0132\037." - "flyteidl.core.WorkflowTemplate\0226\n\rsub_wo" - "rkflows\030\002 \003(\0132\037.flyteidl.core.WorkflowTe" - "mplate\"\204\001\n\017WorkflowClosure\022A\n\021compiled_w" - "orkflow\030\001 \001(\0132&.flyteidl.core.CompiledWo" - "rkflowClosure\022.\n\ncreated_at\030\002 \001(\0132\032.goog" - "le.protobuf.TimestampB7Z5github.com/flyt" - "eorg/flyteidl/gen/pb-go/flyteidl/adminb\006" - "proto3" + "estamp.proto\032\'flyteidl/admin/entity_desc" + "ription.proto\"j\n\025WorkflowCreateRequest\022%" + "\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\022*\n" + "\004spec\030\002 \001(\0132\034.flyteidl.admin.WorkflowSpe" + "c\"\030\n\026WorkflowCreateResponse\"c\n\010Workflow\022" + "%\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\0220" + "\n\007closure\030\002 \001(\0132\037.flyteidl.admin.Workflo" + "wClosure\"J\n\014WorkflowList\022+\n\tworkflows\030\001 " + "\003(\0132\030.flyteidl.admin.Workflow\022\r\n\005token\030\002" + " \001(\t\"\270\001\n\014WorkflowSpec\0221\n\010template\030\001 \001(\0132" + "\037.flyteidl.core.WorkflowTemplate\0226\n\rsub_" + "workflows\030\002 \003(\0132\037.flyteidl.core.Workflow" + "Template\022=\n\022entity_description\030\003 \001(\0132!.f" + "lyteidl.admin.EntityDescription\"\204\001\n\017Work" + "flowClosure\022A\n\021compiled_workflow\030\001 \001(\0132&" + ".flyteidl.core.CompiledWorkflowClosure\022." + "\n\ncreated_at\030\002 \001(\0132\032.google.protobuf.Tim" + "estampB7Z5github.com/flyteorg/flyteidl/g" + "en/pb-go/flyteidl/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2fworkflow_2eproto = { false, InitDefaults_flyteidl_2fadmin_2fworkflow_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2fworkflow_2eproto, - "flyteidl/admin/workflow.proto", &assign_descriptors_table_flyteidl_2fadmin_2fworkflow_2eproto, 806, + "flyteidl/admin/workflow.proto", &assign_descriptors_table_flyteidl_2fadmin_2fworkflow_2eproto, 911, }; void AddDescriptors_flyteidl_2fadmin_2fworkflow_2eproto() { - static constexpr ::google::protobuf::internal::InitFunc deps[4] = + static constexpr ::google::protobuf::internal::InitFunc deps[5] = { ::AddDescriptors_flyteidl_2fcore_2fcompiler_2eproto, ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, ::AddDescriptors_flyteidl_2fcore_2fworkflow_2eproto, ::AddDescriptors_google_2fprotobuf_2ftimestamp_2eproto, + ::AddDescriptors_flyteidl_2fadmin_2fentity_5fdescription_2eproto, }; - ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2fworkflow_2eproto, deps, 4); + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2fworkflow_2eproto, deps, 5); } // Force running AddDescriptors() at dynamic initialization time. @@ -1560,16 +1566,23 @@ ::google::protobuf::Metadata WorkflowList::GetMetadata() const { void WorkflowSpec::InitAsDefaultInstance() { ::flyteidl::admin::_WorkflowSpec_default_instance_._instance.get_mutable()->template__ = const_cast< ::flyteidl::core::WorkflowTemplate*>( ::flyteidl::core::WorkflowTemplate::internal_default_instance()); + ::flyteidl::admin::_WorkflowSpec_default_instance_._instance.get_mutable()->entity_description_ = const_cast< ::flyteidl::admin::EntityDescription*>( + ::flyteidl::admin::EntityDescription::internal_default_instance()); } class WorkflowSpec::HasBitSetters { public: static const ::flyteidl::core::WorkflowTemplate& template_(const WorkflowSpec* msg); + static const ::flyteidl::admin::EntityDescription& entity_description(const WorkflowSpec* msg); }; const ::flyteidl::core::WorkflowTemplate& WorkflowSpec::HasBitSetters::template_(const WorkflowSpec* msg) { return *msg->template__; } +const ::flyteidl::admin::EntityDescription& +WorkflowSpec::HasBitSetters::entity_description(const WorkflowSpec* msg) { + return *msg->entity_description_; +} void WorkflowSpec::clear_template_() { if (GetArenaNoVirtual() == nullptr && template__ != nullptr) { delete template__; @@ -1579,9 +1592,16 @@ void WorkflowSpec::clear_template_() { void WorkflowSpec::clear_sub_workflows() { sub_workflows_.Clear(); } +void WorkflowSpec::clear_entity_description() { + if (GetArenaNoVirtual() == nullptr && entity_description_ != nullptr) { + delete entity_description_; + } + entity_description_ = nullptr; +} #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int WorkflowSpec::kTemplateFieldNumber; const int WorkflowSpec::kSubWorkflowsFieldNumber; +const int WorkflowSpec::kEntityDescriptionFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 WorkflowSpec::WorkflowSpec() @@ -1599,13 +1619,20 @@ WorkflowSpec::WorkflowSpec(const WorkflowSpec& from) } else { template__ = nullptr; } + if (from.has_entity_description()) { + entity_description_ = new ::flyteidl::admin::EntityDescription(*from.entity_description_); + } else { + entity_description_ = nullptr; + } // @@protoc_insertion_point(copy_constructor:flyteidl.admin.WorkflowSpec) } void WorkflowSpec::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_WorkflowSpec_flyteidl_2fadmin_2fworkflow_2eproto.base); - template__ = nullptr; + ::memset(&template__, 0, static_cast( + reinterpret_cast(&entity_description_) - + reinterpret_cast(&template__)) + sizeof(entity_description_)); } WorkflowSpec::~WorkflowSpec() { @@ -1615,6 +1642,7 @@ WorkflowSpec::~WorkflowSpec() { void WorkflowSpec::SharedDtor() { if (this != internal_default_instance()) delete template__; + if (this != internal_default_instance()) delete entity_description_; } void WorkflowSpec::SetCachedSize(int size) const { @@ -1637,6 +1665,10 @@ void WorkflowSpec::Clear() { delete template__; } template__ = nullptr; + if (GetArenaNoVirtual() == nullptr && entity_description_ != nullptr) { + delete entity_description_; + } + entity_description_ = nullptr; _internal_metadata_.Clear(); } @@ -1682,6 +1714,19 @@ const char* WorkflowSpec::_InternalParse(const char* begin, const char* end, voi } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1)); break; } + // .flyteidl.admin.EntityDescription entity_description = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::admin::EntityDescription::_InternalParse; + object = msg->mutable_entity_description(); + 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) { @@ -1734,6 +1779,17 @@ bool WorkflowSpec::MergePartialFromCodedStream( break; } + // .flyteidl.admin.EntityDescription entity_description = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_entity_description())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -1776,6 +1832,12 @@ void WorkflowSpec::SerializeWithCachedSizes( output); } + // .flyteidl.admin.EntityDescription entity_description = 3; + if (this->has_entity_description()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 3, HasBitSetters::entity_description(this), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -1804,6 +1866,13 @@ ::google::protobuf::uint8* WorkflowSpec::InternalSerializeWithCachedSizesToArray 2, this->sub_workflows(static_cast(i)), target); } + // .flyteidl.admin.EntityDescription entity_description = 3; + if (this->has_entity_description()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 3, HasBitSetters::entity_description(this), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -1843,6 +1912,13 @@ size_t WorkflowSpec::ByteSizeLong() const { *template__); } + // .flyteidl.admin.EntityDescription entity_description = 3; + if (this->has_entity_description()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *entity_description_); + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -1874,6 +1950,9 @@ void WorkflowSpec::MergeFrom(const WorkflowSpec& from) { if (from.has_template_()) { mutable_template_()->::flyteidl::core::WorkflowTemplate::MergeFrom(from.template_()); } + if (from.has_entity_description()) { + mutable_entity_description()->::flyteidl::admin::EntityDescription::MergeFrom(from.entity_description()); + } } void WorkflowSpec::CopyFrom(const ::google::protobuf::Message& from) { @@ -1903,6 +1982,7 @@ void WorkflowSpec::InternalSwap(WorkflowSpec* other) { _internal_metadata_.Swap(&other->_internal_metadata_); CastToBase(&sub_workflows_)->InternalSwap(CastToBase(&other->sub_workflows_)); swap(template__, other->template__); + swap(entity_description_, other->entity_description_); } ::google::protobuf::Metadata WorkflowSpec::GetMetadata() const { diff --git a/gen/pb-cpp/flyteidl/admin/workflow.pb.h b/gen/pb-cpp/flyteidl/admin/workflow.pb.h index 187806a3c..2c34f5ee2 100644 --- a/gen/pb-cpp/flyteidl/admin/workflow.pb.h +++ b/gen/pb-cpp/flyteidl/admin/workflow.pb.h @@ -35,6 +35,7 @@ #include "flyteidl/core/identifier.pb.h" #include "flyteidl/core/workflow.pb.h" #include +#include "flyteidl/admin/entity_description.pb.h" // @@protoc_insertion_point(includes) #include #define PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fworkflow_2eproto @@ -693,6 +694,15 @@ class WorkflowSpec final : ::flyteidl::core::WorkflowTemplate* mutable_template_(); void set_allocated_template_(::flyteidl::core::WorkflowTemplate* template_); + // .flyteidl.admin.EntityDescription entity_description = 3; + bool has_entity_description() const; + void clear_entity_description(); + static const int kEntityDescriptionFieldNumber = 3; + const ::flyteidl::admin::EntityDescription& entity_description() const; + ::flyteidl::admin::EntityDescription* release_entity_description(); + ::flyteidl::admin::EntityDescription* mutable_entity_description(); + void set_allocated_entity_description(::flyteidl::admin::EntityDescription* entity_description); + // @@protoc_insertion_point(class_scope:flyteidl.admin.WorkflowSpec) private: class HasBitSetters; @@ -700,6 +710,7 @@ class WorkflowSpec final : ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; ::google::protobuf::RepeatedPtrField< ::flyteidl::core::WorkflowTemplate > sub_workflows_; ::flyteidl::core::WorkflowTemplate* template__; + ::flyteidl::admin::EntityDescription* entity_description_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2fworkflow_2eproto; }; @@ -1202,6 +1213,51 @@ WorkflowSpec::sub_workflows() const { return sub_workflows_; } +// .flyteidl.admin.EntityDescription entity_description = 3; +inline bool WorkflowSpec::has_entity_description() const { + return this != internal_default_instance() && entity_description_ != nullptr; +} +inline const ::flyteidl::admin::EntityDescription& WorkflowSpec::entity_description() const { + const ::flyteidl::admin::EntityDescription* p = entity_description_; + // @@protoc_insertion_point(field_get:flyteidl.admin.WorkflowSpec.entity_description) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_EntityDescription_default_instance_); +} +inline ::flyteidl::admin::EntityDescription* WorkflowSpec::release_entity_description() { + // @@protoc_insertion_point(field_release:flyteidl.admin.WorkflowSpec.entity_description) + + ::flyteidl::admin::EntityDescription* temp = entity_description_; + entity_description_ = nullptr; + return temp; +} +inline ::flyteidl::admin::EntityDescription* WorkflowSpec::mutable_entity_description() { + + if (entity_description_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::EntityDescription>(GetArenaNoVirtual()); + entity_description_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.WorkflowSpec.entity_description) + return entity_description_; +} +inline void WorkflowSpec::set_allocated_entity_description(::flyteidl::admin::EntityDescription* entity_description) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(entity_description_); + } + if (entity_description) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + entity_description = ::google::protobuf::internal::GetOwnedMessage( + message_arena, entity_description, submessage_arena); + } + + } else { + + } + entity_description_ = entity_description; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.WorkflowSpec.entity_description) +} + // ------------------------------------------------------------------- // WorkflowClosure diff --git a/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc b/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc index 6c0368c5c..69ace3a55 100644 --- a/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc +++ b/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc @@ -67,6 +67,7 @@ static const char* AdminService_method_names[] = { "/flyteidl.service.AdminService/GetNamedEntity", "/flyteidl.service.AdminService/UpdateNamedEntity", "/flyteidl.service.AdminService/GetVersion", + "/flyteidl.service.AdminService/GetDescription", }; std::unique_ptr< AdminService::Stub> AdminService::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) { @@ -123,6 +124,7 @@ AdminService::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& chann , rpcmethod_GetNamedEntity_(AdminService_method_names[44], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_UpdateNamedEntity_(AdminService_method_names[45], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_GetVersion_(AdminService_method_names[46], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetDescription_(AdminService_method_names[47], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) {} ::grpc::Status AdminService::Stub::CreateTask(::grpc::ClientContext* context, const ::flyteidl::admin::TaskCreateRequest& request, ::flyteidl::admin::TaskCreateResponse* response) { @@ -1441,6 +1443,34 @@ ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::GetVersionResponse>* Admin return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::GetVersionResponse>::Create(channel_.get(), cq, rpcmethod_GetVersion_, context, request, false); } +::grpc::Status AdminService::Stub::GetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::flyteidl::admin::EntityDescription* response) { + return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_GetDescription_, context, request, response); +} + +void AdminService::Stub::experimental_async::GetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetDescription_, context, request, response, std::move(f)); +} + +void AdminService::Stub::experimental_async::GetDescription(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::EntityDescription* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetDescription_, context, request, response, std::move(f)); +} + +void AdminService::Stub::experimental_async::GetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetDescription_, context, request, response, reactor); +} + +void AdminService::Stub::experimental_async::GetDescription(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::EntityDescription* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetDescription_, context, request, response, reactor); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::admin::EntityDescription>* AdminService::Stub::AsyncGetDescriptionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::EntityDescription>::Create(channel_.get(), cq, rpcmethod_GetDescription_, context, request, true); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::admin::EntityDescription>* AdminService::Stub::PrepareAsyncGetDescriptionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::EntityDescription>::Create(channel_.get(), cq, rpcmethod_GetDescription_, context, request, false); +} + AdminService::Service::Service() { AddMethod(new ::grpc::internal::RpcServiceMethod( AdminService_method_names[0], @@ -1677,6 +1707,11 @@ AdminService::Service::Service() { ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::GetVersionRequest, ::flyteidl::admin::GetVersionResponse>( std::mem_fn(&AdminService::Service::GetVersion), this))); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AdminService_method_names[47], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::ObjectGetRequest, ::flyteidl::admin::EntityDescription>( + std::mem_fn(&AdminService::Service::GetDescription), this))); } AdminService::Service::~Service() { @@ -2011,6 +2046,13 @@ ::grpc::Status AdminService::Service::GetVersion(::grpc::ServerContext* context, return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } +::grpc::Status AdminService::Service::GetDescription(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response) { + (void) context; + (void) request; + (void) response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); +} + } // namespace flyteidl } // namespace service diff --git a/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h b/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h index d30d96362..a81c4b16f 100644 --- a/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h +++ b/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h @@ -431,6 +431,14 @@ class AdminService final { std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::GetVersionResponse>> PrepareAsyncGetVersion(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::GetVersionResponse>>(PrepareAsyncGetVersionRaw(context, request, cq)); } + // Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition. + virtual ::grpc::Status GetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::flyteidl::admin::EntityDescription* response) = 0; + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::EntityDescription>> AsyncGetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::EntityDescription>>(AsyncGetDescriptionRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::EntityDescription>> PrepareAsyncGetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::EntityDescription>>(PrepareAsyncGetDescriptionRaw(context, request, cq)); + } class experimental_async_interface { public: virtual ~experimental_async_interface() {} @@ -674,6 +682,11 @@ class AdminService final { virtual void GetVersion(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::GetVersionResponse* response, std::function) = 0; virtual void GetVersion(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest* request, ::flyteidl::admin::GetVersionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; virtual void GetVersion(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::GetVersionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + // Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition. + virtual void GetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response, std::function) = 0; + virtual void GetDescription(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::EntityDescription* response, std::function) = 0; + virtual void GetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + virtual void GetDescription(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::EntityDescription* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; }; virtual class experimental_async_interface* experimental_async() { return nullptr; } private: @@ -771,6 +784,8 @@ class AdminService final { virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::NamedEntityUpdateResponse>* PrepareAsyncUpdateNamedEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::NamedEntityUpdateRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::GetVersionResponse>* AsyncGetVersionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::GetVersionResponse>* PrepareAsyncGetVersionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::EntityDescription>* AsyncGetDescriptionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::EntityDescription>* PrepareAsyncGetDescriptionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) = 0; }; class Stub final : public StubInterface { public: @@ -1104,6 +1119,13 @@ class AdminService final { std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::GetVersionResponse>> PrepareAsyncGetVersion(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::GetVersionResponse>>(PrepareAsyncGetVersionRaw(context, request, cq)); } + ::grpc::Status GetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::flyteidl::admin::EntityDescription* response) override; + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::EntityDescription>> AsyncGetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::EntityDescription>>(AsyncGetDescriptionRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::EntityDescription>> PrepareAsyncGetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::EntityDescription>>(PrepareAsyncGetDescriptionRaw(context, request, cq)); + } class experimental_async final : public StubInterface::experimental_async_interface { public: @@ -1295,6 +1317,10 @@ class AdminService final { void GetVersion(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::GetVersionResponse* response, std::function) override; void GetVersion(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest* request, ::flyteidl::admin::GetVersionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; void GetVersion(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::GetVersionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void GetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response, std::function) override; + void GetDescription(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::EntityDescription* response, std::function) override; + void GetDescription(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void GetDescription(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::EntityDescription* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; private: friend class Stub; explicit experimental_async(Stub* stub): stub_(stub) { } @@ -1400,6 +1426,8 @@ class AdminService final { ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::NamedEntityUpdateResponse>* PrepareAsyncUpdateNamedEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::NamedEntityUpdateRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::GetVersionResponse>* AsyncGetVersionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::GetVersionResponse>* PrepareAsyncGetVersionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::GetVersionRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::EntityDescription>* AsyncGetDescriptionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::EntityDescription>* PrepareAsyncGetDescriptionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) override; const ::grpc::internal::RpcMethod rpcmethod_CreateTask_; const ::grpc::internal::RpcMethod rpcmethod_GetTask_; const ::grpc::internal::RpcMethod rpcmethod_ListTaskIds_; @@ -1447,6 +1475,7 @@ class AdminService final { const ::grpc::internal::RpcMethod rpcmethod_GetNamedEntity_; const ::grpc::internal::RpcMethod rpcmethod_UpdateNamedEntity_; const ::grpc::internal::RpcMethod rpcmethod_GetVersion_; + const ::grpc::internal::RpcMethod rpcmethod_GetDescription_; }; static std::unique_ptr NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions()); @@ -1553,6 +1582,8 @@ class AdminService final { // Updates a :ref:`ref_flyteidl.admin.NamedEntity` object. virtual ::grpc::Status UpdateNamedEntity(::grpc::ServerContext* context, const ::flyteidl::admin::NamedEntityUpdateRequest* request, ::flyteidl::admin::NamedEntityUpdateResponse* response); virtual ::grpc::Status GetVersion(::grpc::ServerContext* context, const ::flyteidl::admin::GetVersionRequest* request, ::flyteidl::admin::GetVersionResponse* response); + // Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition. + virtual ::grpc::Status GetDescription(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response); }; template class WithAsyncMethod_CreateTask : public BaseClass { @@ -2494,7 +2525,27 @@ class AdminService final { ::grpc::Service::RequestAsyncUnary(46, context, request, response, new_call_cq, notification_cq, tag); } }; - typedef WithAsyncMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > AsyncService; + template + class WithAsyncMethod_GetDescription : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithAsyncMethod_GetDescription() { + ::grpc::Service::MarkMethodAsync(47); + } + ~WithAsyncMethod_GetDescription() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetDescription(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetDescription(::grpc::ServerContext* context, ::flyteidl::admin::ObjectGetRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::EntityDescription>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(47, context, request, response, new_call_cq, notification_cq, tag); + } + }; + typedef WithAsyncMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > AsyncService; template class ExperimentalWithCallbackMethod_CreateTask : public BaseClass { private: @@ -3952,7 +4003,38 @@ class AdminService final { } virtual void GetVersion(::grpc::ServerContext* context, const ::flyteidl::admin::GetVersionRequest* request, ::flyteidl::admin::GetVersionResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; - typedef ExperimentalWithCallbackMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ExperimentalCallbackService; + template + class ExperimentalWithCallbackMethod_GetDescription : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithCallbackMethod_GetDescription() { + ::grpc::Service::experimental().MarkMethodCallback(47, + new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ObjectGetRequest, ::flyteidl::admin::EntityDescription>( + [this](::grpc::ServerContext* context, + const ::flyteidl::admin::ObjectGetRequest* request, + ::flyteidl::admin::EntityDescription* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + return this->GetDescription(context, request, response, controller); + })); + } + void SetMessageAllocatorFor_GetDescription( + ::grpc::experimental::MessageAllocator< ::flyteidl::admin::ObjectGetRequest, ::flyteidl::admin::EntityDescription>* allocator) { + static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ObjectGetRequest, ::flyteidl::admin::EntityDescription>*>( + ::grpc::Service::experimental().GetHandler(47)) + ->SetMessageAllocator(allocator); + } + ~ExperimentalWithCallbackMethod_GetDescription() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetDescription(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void GetDescription(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + typedef ExperimentalWithCallbackMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ExperimentalCallbackService; template class WithGenericMethod_CreateTask : public BaseClass { private: @@ -4753,6 +4835,23 @@ class AdminService final { } }; template + class WithGenericMethod_GetDescription : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithGenericMethod_GetDescription() { + ::grpc::Service::MarkMethodGeneric(47); + } + ~WithGenericMethod_GetDescription() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetDescription(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template class WithRawMethod_CreateTask : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} @@ -5693,6 +5792,26 @@ class AdminService final { } }; template + class WithRawMethod_GetDescription : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithRawMethod_GetDescription() { + ::grpc::Service::MarkMethodRaw(47); + } + ~WithRawMethod_GetDescription() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetDescription(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetDescription(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(47, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template class ExperimentalWithRawCallbackMethod_CreateTask : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} @@ -6868,6 +6987,31 @@ class AdminService final { virtual void GetVersion(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; template + class ExperimentalWithRawCallbackMethod_GetDescription : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithRawCallbackMethod_GetDescription() { + ::grpc::Service::experimental().MarkMethodRawCallback(47, + new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( + [this](::grpc::ServerContext* context, + const ::grpc::ByteBuffer* request, + ::grpc::ByteBuffer* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + this->GetDescription(context, request, response, controller); + })); + } + ~ExperimentalWithRawCallbackMethod_GetDescription() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetDescription(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void GetDescription(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template class WithStreamedUnaryMethod_CreateTask : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} @@ -7807,9 +7951,29 @@ class AdminService final { // replace default version of method with streamed unary virtual ::grpc::Status StreamedGetVersion(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::admin::GetVersionRequest,::flyteidl::admin::GetVersionResponse>* server_unary_streamer) = 0; }; - typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedUnaryService; + template + class WithStreamedUnaryMethod_GetDescription : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithStreamedUnaryMethod_GetDescription() { + ::grpc::Service::MarkMethodStreamed(47, + new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::ObjectGetRequest, ::flyteidl::admin::EntityDescription>(std::bind(&WithStreamedUnaryMethod_GetDescription::StreamedGetDescription, this, std::placeholders::_1, std::placeholders::_2))); + } + ~WithStreamedUnaryMethod_GetDescription() override { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status GetDescription(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::EntityDescription* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedGetDescription(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::admin::ObjectGetRequest,::flyteidl::admin::EntityDescription>* server_unary_streamer) = 0; + }; + typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedUnaryService; typedef Service SplitStreamedService; - typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedService; + typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedService; }; } // namespace service diff --git a/gen/pb-cpp/flyteidl/service/admin.pb.cc b/gen/pb-cpp/flyteidl/service/admin.pb.cc index c3187aba9..694b58b36 100644 --- a/gen/pb-cpp/flyteidl/service/admin.pb.cc +++ b/gen/pb-cpp/flyteidl/service/admin.pb.cc @@ -50,352 +50,358 @@ const char descriptor_table_protodef_flyteidl_2fservice_2fadmin_2eproto[] = "l/admin/node_execution.proto\032#flyteidl/a" "dmin/task_execution.proto\032\034flyteidl/admi" "n/version.proto\032\033flyteidl/admin/common.p" - "roto\032,protoc-gen-swagger/options/annotat" - "ions.proto2\236h\n\014AdminService\022\305\002\n\nCreateTa" - "sk\022!.flyteidl.admin.TaskCreateRequest\032\"." - "flyteidl.admin.TaskCreateResponse\"\357\001\202\323\344\223" - "\002\022\"\r/api/v1/tasks:\001*\222A\323\001\032&Create and reg" - "ister a task definition.JB\n\003400\022;\n9Retur" - "ned for bad request that may have failed" - " validation.Je\n\003409\022^\n\\Returned for a re" - "quest that references an identical entit" - "y that has already been registered.\022\262\001\n\007" - "GetTask\022 .flyteidl.admin.ObjectGetReques" - "t\032\024.flyteidl.admin.Task\"o\202\323\344\223\002\?\022=/api/v1" - "/tasks/{id.project}/{id.domain}/{id.name" - "}/{id.version}\222A\'\032%Retrieve an existing " - "task definition.\022\336\001\n\013ListTaskIds\0220.flyte" - "idl.admin.NamedEntityIdentifierListReque" - "st\032).flyteidl.admin.NamedEntityIdentifie" - "rList\"r\202\323\344\223\002%\022#/api/v1/task_ids/{project" - "}/{domain}\222AD\032BFetch existing task defin" - "ition identifiers matching input filters" - ".\022\353\001\n\tListTasks\022#.flyteidl.admin.Resourc" - "eListRequest\032\030.flyteidl.admin.TaskList\"\236" - "\001\202\323\344\223\002\\\0220/api/v1/tasks/{id.project}/{id." - "domain}/{id.name}Z(\022&/api/v1/tasks/{id.p" - "roject}/{id.domain}\222A9\0327Fetch existing t" - "ask definitions matching input filters.\022" - "\331\002\n\016CreateWorkflow\022%.flyteidl.admin.Work" - "flowCreateRequest\032&.flyteidl.admin.Workf" - "lowCreateResponse\"\367\001\202\323\344\223\002\026\"\021/api/v1/work" - "flows:\001*\222A\327\001\032*Create and register a work" - "flow definition.JB\n\003400\022;\n9Returned for " - "bad request that may have failed validat" - "ion.Je\n\003409\022^\n\\Returned for a request th" - "at references an identical entity that h" - "as already been registered.\022\302\001\n\013GetWorkf" - "low\022 .flyteidl.admin.ObjectGetRequest\032\030." - "flyteidl.admin.Workflow\"w\202\323\344\223\002C\022A/api/v1" - "/workflows/{id.project}/{id.domain}/{id." - "name}/{id.version}\222A+\032)Retrieve an exist" - "ing workflow definition.\022\355\001\n\017ListWorkflo" - "wIds\0220.flyteidl.admin.NamedEntityIdentif" - "ierListRequest\032).flyteidl.admin.NamedEnt" - "ityIdentifierList\"}\202\323\344\223\002)\022\'/api/v1/workf" - "low_ids/{project}/{domain}\222AK\032IFetch an " - "existing workflow definition identifiers" - " matching input filters.\022\377\001\n\rListWorkflo" - "ws\022#.flyteidl.admin.ResourceListRequest\032" - "\034.flyteidl.admin.WorkflowList\"\252\001\202\323\344\223\002d\0224" - "/api/v1/workflows/{id.project}/{id.domai" - "n}/{id.name}Z,\022*/api/v1/workflows/{id.pr" - "oject}/{id.domain}\222A=\032;Fetch existing wo" - "rkflow definitions matching input filter" - "s.\022\345\002\n\020CreateLaunchPlan\022\'.flyteidl.admin" - ".LaunchPlanCreateRequest\032(.flyteidl.admi" - "n.LaunchPlanCreateResponse\"\375\001\202\323\344\223\002\031\"\024/ap" - "i/v1/launch_plans:\001*\222A\332\001\032-Create and reg" - "ister a launch plan definition.JB\n\003400\022;" - "\n9Returned for bad request that may have" - " failed validation.Je\n\003409\022^\n\\Returned f" - "or a request that references an identica" - "l entity that has already been registere" - "d.\022\314\001\n\rGetLaunchPlan\022 .flyteidl.admin.Ob" - "jectGetRequest\032\032.flyteidl.admin.LaunchPl" - "an\"}\202\323\344\223\002F\022D/api/v1/launch_plans/{id.pro" - "ject}/{id.domain}/{id.name}/{id.version}" - "\222A.\032,Retrieve an existing launch plan de" - "finition.\022\363\001\n\023GetActiveLaunchPlan\022\'.flyt" - "eidl.admin.ActiveLaunchPlanRequest\032\032.fly" - "teidl.admin.LaunchPlan\"\226\001\202\323\344\223\002@\022>/api/v1" - "/active_launch_plans/{id.project}/{id.do" - "main}/{id.name}\222AM\032KRetrieve the active " - "launch plan version specified by input r" - "equest filters.\022\353\001\n\025ListActiveLaunchPlan" - "s\022+.flyteidl.admin.ActiveLaunchPlanListR" - "equest\032\036.flyteidl.admin.LaunchPlanList\"\204" - "\001\202\323\344\223\0020\022./api/v1/active_launch_plans/{pr" - "oject}/{domain}\222AK\032IFetch the active lau" - "nch plan versions specified by input req" - "uest filters.\022\363\001\n\021ListLaunchPlanIds\0220.fl" - "yteidl.admin.NamedEntityIdentifierListRe" - "quest\032).flyteidl.admin.NamedEntityIdenti" - "fierList\"\200\001\202\323\344\223\002,\022*/api/v1/launch_plan_i" - "ds/{project}/{domain}\222AK\032IFetch existing" - " launch plan definition identifiers matc" - "hing input filters.\022\214\002\n\017ListLaunchPlans\022" - "#.flyteidl.admin.ResourceListRequest\032\036.f" - "lyteidl.admin.LaunchPlanList\"\263\001\202\323\344\223\002j\0227/" - "api/v1/launch_plans/{id.project}/{id.dom" - "ain}/{id.name}Z/\022-/api/v1/launch_plans/{" - "id.project}/{id.domain}\222A@\032>Fetch existi" - "ng launch plan definitions matching inpu" - "t filters.\022\300\006\n\020UpdateLaunchPlan\022\'.flytei" - "dl.admin.LaunchPlanUpdateRequest\032(.flyte" - "idl.admin.LaunchPlanUpdateResponse\"\330\005\202\323\344" - "\223\002I\032D/api/v1/launch_plans/{id.project}/{" - "id.domain}/{id.name}/{id.version}:\001*\222A\205\005" - "\032\202\005Update the status of an existing laun" - "ch plan definition. At most one launch p" - "lan version for a given {project, domain" - ", name} can be active at a time. If this" - " call sets a launch plan to active and e" - "xisting version is already active, the r" - "esult of this call will be that the form" - "erly active launch plan will be made ina" - "ctive and specified launch plan in this " - "request will be made active. In the even" - "t that the formerly active launch plan h" - "ad a schedule associated it with it, thi" - "s schedule will be disabled. If the refe" - "rence launch plan in this request is bei" - "ng set to active and has a schedule asso" - "ciated with it, the schedule will be ena" - "bled.\022\242\001\n\017CreateExecution\022&.flyteidl.adm" - "in.ExecutionCreateRequest\032\'.flyteidl.adm" - "in.ExecutionCreateResponse\">\202\323\344\223\002\027\"\022/api" - "/v1/executions:\001*\222A\036\032\034Create a workflow " - "execution.\022\261\001\n\021RelaunchExecution\022(.flyte" - "idl.admin.ExecutionRelaunchRequest\032\'.fly" - "teidl.admin.ExecutionCreateResponse\"I\202\323\344" - "\223\002 \"\033/api/v1/executions/relaunch:\001*\222A \032\036" - "Relaunch a workflow execution.\022\235\005\n\020Recov" - "erExecution\022\'.flyteidl.admin.ExecutionRe" - "coverRequest\032\'.flyteidl.admin.ExecutionC" - "reateResponse\"\266\004\202\323\344\223\002\037\"\032/api/v1/executio" - "ns/recover:\001*\222A\215\004\032\212\004Recreates a previous" - "ly-run workflow execution that will only" - " start executing from the last known fai" - "lure point. In Recover mode, users canno" - "t change any input parameters or update " - "the version of the execution. This is ex" - "tremely useful to recover from system er" - "rors and byzantine faults like - Loss of" - " K8s cluster, bugs in platform or instab" - "ility, machine failures, downstream syst" - "em failures (downstream services), or si" - "mply to recover executions that failed b" - "ecause of retry exhaustion and should co" - "mplete if tried again.\022\302\001\n\014GetExecution\022" - "+.flyteidl.admin.WorkflowExecutionGetReq" - "uest\032\031.flyteidl.admin.Execution\"j\202\323\344\223\0027\022" - "5/api/v1/executions/{id.project}/{id.dom" - "ain}/{id.name}\222A*\032(Retrieve an existing " - "workflow execution.\022\326\001\n\017UpdateExecution\022" - "&.flyteidl.admin.ExecutionUpdateRequest\032" - "\'.flyteidl.admin.ExecutionUpdateResponse" - "\"r\202\323\344\223\002:\0325/api/v1/executions/{id.project" - "}/{id.domain}/{id.name}:\001*\222A/\032-Update ex" - "ecution belonging to project domain.\022\202\002\n" - "\020GetExecutionData\022/.flyteidl.admin.Workf" - "lowExecutionGetDataRequest\0320.flyteidl.ad" - "min.WorkflowExecutionGetDataResponse\"\212\001\202" - "\323\344\223\002<\022:/api/v1/data/executions/{id.proje" - "ct}/{id.domain}/{id.name}\222AE\032CRetrieve i" - "nput and output data from an existing wo" - "rkflow execution.\022\310\001\n\016ListExecutions\022#.f" - "lyteidl.admin.ResourceListRequest\032\035.flyt" - "eidl.admin.ExecutionList\"r\202\323\344\223\002-\022+/api/v" - "1/executions/{id.project}/{id.domain}\222A<" - "\032:Fetch existing workflow executions mat" - "ching input filters.\022\364\001\n\022TerminateExecut" - "ion\022).flyteidl.admin.ExecutionTerminateR" - "equest\032*.flyteidl.admin.ExecutionTermina" - "teResponse\"\206\001\202\323\344\223\002:*5/api/v1/executions/" - "{id.project}/{id.domain}/{id.name}:\001*\222AC" - "\032ATerminate the active workflow executio" - "n specified in the request.\022\374\001\n\020GetNodeE" - "xecution\022\'.flyteidl.admin.NodeExecutionG" - "etRequest\032\035.flyteidl.admin.NodeExecution" - "\"\237\001\202\323\344\223\002p\022n/api/v1/node_executions/{id.e" - "xecution_id.project}/{id.execution_id.do" - "main}/{id.execution_id.name}/{id.node_id" - "}\222A&\032$Retrieve an existing node executio" - "n.\022\232\002\n\022ListNodeExecutions\022(.flyteidl.adm" - "in.NodeExecutionListRequest\032!.flyteidl.a" - "dmin.NodeExecutionList\"\266\001\202\323\344\223\002u\022s/api/v1" - "/node_executions/{workflow_execution_id." - "project}/{workflow_execution_id.domain}/" - "{workflow_execution_id.name}\222A8\0326Fetch e" - "xisting node executions matching input f" - "ilters.\022\357\004\n\031ListNodeExecutionsForTask\022/." - "flyteidl.admin.NodeExecutionForTaskListR" - "equest\032!.flyteidl.admin.NodeExecutionLis" - "t\"\375\003\202\323\344\223\002\254\003\022\251\003/api/v1/children/task_exec" - "utions/{task_execution_id.node_execution" - "_id.execution_id.project}/{task_executio" - "n_id.node_execution_id.execution_id.doma" - "in}/{task_execution_id.node_execution_id" - ".execution_id.name}/{task_execution_id.n" - "ode_execution_id.node_id}/{task_executio" - "n_id.task_id.project}/{task_execution_id" - ".task_id.domain}/{task_execution_id.task" - "_id.name}/{task_execution_id.task_id.ver" - "sion}/{task_execution_id.retry_attempt}\222" - "AG\032EFetch child node executions launched" - " by the specified task execution.\022\263\002\n\024Ge" - "tNodeExecutionData\022+.flyteidl.admin.Node" - "ExecutionGetDataRequest\032,.flyteidl.admin" - ".NodeExecutionGetDataResponse\"\277\001\202\323\344\223\002u\022s" - "/api/v1/data/node_executions/{id.executi" - "on_id.project}/{id.execution_id.domain}/" - "{id.execution_id.name}/{id.node_id}\222AA\032\?" - "Retrieve input and output data from an e" - "xisting node execution.\022\227\001\n\017RegisterProj" - "ect\022&.flyteidl.admin.ProjectRegisterRequ" - "est\032\'.flyteidl.admin.ProjectRegisterResp" - "onse\"3\202\323\344\223\002\025\"\020/api/v1/projects:\001*\222A\025\032\023Re" - "gister a project.\022\207\001\n\rUpdateProject\022\027.fl" - "yteidl.admin.Project\032%.flyteidl.admin.Pr" - "ojectUpdateResponse\"6\202\323\344\223\002\032\032\025/api/v1/pro" - "jects/{id}:\001*\222A\023\032\021Update a project.\022\205\001\n\014" - "ListProjects\022\".flyteidl.admin.ProjectLis" - "tRequest\032\030.flyteidl.admin.Projects\"7\202\323\344\223" - "\002\022\022\020/api/v1/projects\222A\034\032\032Fetch registere" - "d projects.\022\335\001\n\023CreateWorkflowEvent\022-.fl" - "yteidl.admin.WorkflowExecutionEventReque" - "st\032..flyteidl.admin.WorkflowExecutionEve" - "ntResponse\"g\202\323\344\223\002\035\"\030/api/v1/events/workf" - "lows:\001*\222AA\032\?Create a workflow execution " - "event recording a phase transition.\022\311\001\n\017" - "CreateNodeEvent\022).flyteidl.admin.NodeExe" - "cutionEventRequest\032*.flyteidl.admin.Node" - "ExecutionEventResponse\"_\202\323\344\223\002\031\"\024/api/v1/" - "events/nodes:\001*\222A=\032;Create a node execut" - "ion event recording a phase transition.\022" - "\311\001\n\017CreateTaskEvent\022).flyteidl.admin.Tas" - "kExecutionEventRequest\032*.flyteidl.admin." - "TaskExecutionEventResponse\"_\202\323\344\223\002\031\"\024/api" - "/v1/events/tasks:\001*\222A=\032;Create a task ex" - "ecution event recording a phase transiti" - "on.\022\251\003\n\020GetTaskExecution\022\'.flyteidl.admi" - "n.TaskExecutionGetRequest\032\035.flyteidl.adm" - "in.TaskExecution\"\314\002\202\323\344\223\002\234\002\022\231\002/api/v1/tas" - "k_executions/{id.node_execution_id.execu" - "tion_id.project}/{id.node_execution_id.e" - "xecution_id.domain}/{id.node_execution_i" - "d.execution_id.name}/{id.node_execution_" - "id.node_id}/{id.task_id.project}/{id.tas" - "k_id.domain}/{id.task_id.name}/{id.task_" - "id.version}/{id.retry_attempt}\222A&\032$Retri" - "eve an existing task execution.\022\323\002\n\022List" - "TaskExecutions\022(.flyteidl.admin.TaskExec" - "utionListRequest\032!.flyteidl.admin.TaskEx" - "ecutionList\"\357\001\202\323\344\223\002\255\001\022\252\001/api/v1/task_exe" - "cutions/{node_execution_id.execution_id." - "project}/{node_execution_id.execution_id" - ".domain}/{node_execution_id.execution_id" - ".name}/{node_execution_id.node_id}\222A8\0326F" - "etch existing task executions matching i" - "nput filters.\022\340\003\n\024GetTaskExecutionData\022+" - ".flyteidl.admin.TaskExecutionGetDataRequ" - "est\032,.flyteidl.admin.TaskExecutionGetDat" - "aResponse\"\354\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/task_" - "executions/{id.node_execution_id.executi" - "on_id.project}/{id.node_execution_id.exe" - "cution_id.domain}/{id.node_execution_id." - "execution_id.name}/{id.node_execution_id" - ".node_id}/{id.task_id.project}/{id.task_" - "id.domain}/{id.task_id.name}/{id.task_id" - ".version}/{id.retry_attempt}\222AA\032\?Retriev" - "e input and output data from an existing" - " task execution.\022\277\002\n\035UpdateProjectDomain" - "Attributes\0224.flyteidl.admin.ProjectDomai" - "nAttributesUpdateRequest\0325.flyteidl.admi" - "n.ProjectDomainAttributesUpdateResponse\"" - "\260\001\202\323\344\223\002O\032J/api/v1/project_domain_attribu" - "tes/{attributes.project}/{attributes.dom" - "ain}:\001*\222AX\032VUpdate the customized resour" - "ce attributes associated with a project-" - "domain combination\022\237\002\n\032GetProjectDomainA" - "ttributes\0221.flyteidl.admin.ProjectDomain" - "AttributesGetRequest\0322.flyteidl.admin.Pr" - "ojectDomainAttributesGetResponse\"\231\001\202\323\344\223\002" - "6\0224/api/v1/project_domain_attributes/{pr" - "oject}/{domain}\222AZ\032XRetrieve the customi" - "zed resource attributes associated with " - "a project-domain combination\022\251\002\n\035DeleteP" - "rojectDomainAttributes\0224.flyteidl.admin." - "ProjectDomainAttributesDeleteRequest\0325.f" - "lyteidl.admin.ProjectDomainAttributesDel" - "eteResponse\"\232\001\202\323\344\223\0029*4/api/v1/project_do" - "main_attributes/{project}/{domain}:\001*\222AX" - "\032VDelete the customized resource attribu" - "tes associated with a project-domain com" - "bination\022\316\002\n\030UpdateWorkflowAttributes\022/." - "flyteidl.admin.WorkflowAttributesUpdateR" - "equest\0320.flyteidl.admin.WorkflowAttribut" - "esUpdateResponse\"\316\001\202\323\344\223\002_\032Z/api/v1/workf" - "low_attributes/{attributes.project}/{att" - "ributes.domain}/{attributes.workflow}:\001*" - "\222Af\032dUpdate the customized resource attr" - "ibutes associated with a project, domain" - " and workflow combination\022\243\002\n\025GetWorkflo" - "wAttributes\022,.flyteidl.admin.WorkflowAtt" - "ributesGetRequest\032-.flyteidl.admin.Workf" - "lowAttributesGetResponse\"\254\001\202\323\344\223\002;\0229/api/" - "v1/workflow_attributes/{project}/{domain" - "}/{workflow}\222Ah\032fRetrieve the customized" - " resource attributes associated with a p" - "roject, domain and workflow combination\022" - "\255\002\n\030DeleteWorkflowAttributes\022/.flyteidl." - "admin.WorkflowAttributesDeleteRequest\0320." - "flyteidl.admin.WorkflowAttributesDeleteR" - "esponse\"\255\001\202\323\344\223\002>*9/api/v1/workflow_attri" - "butes/{project}/{domain}/{workflow}:\001*\222A" - "f\032dDelete the customized resource attrib" - "utes associated with a project, domain a" - "nd workflow combination\022\341\001\n\027ListMatchabl" - "eAttributes\022..flyteidl.admin.ListMatchab" - "leAttributesRequest\032/.flyteidl.admin.Lis" - "tMatchableAttributesResponse\"e\202\323\344\223\002\036\022\034/a" - "pi/v1/matchable_attributes\222A>\032/api/v" + "1/active_launch_plans/{id.project}/{id.d" + "omain}/{id.name}\222AM\032KRetrieve the active" + " launch plan version specified by input " + "request filters.\022\353\001\n\025ListActiveLaunchPla" + "ns\022+.flyteidl.admin.ActiveLaunchPlanList" + "Request\032\036.flyteidl.admin.LaunchPlanList\"" + "\204\001\202\323\344\223\0020\022./api/v1/active_launch_plans/{p" + "roject}/{domain}\222AK\032IFetch the active la" + "unch plan versions specified by input re" + "quest filters.\022\363\001\n\021ListLaunchPlanIds\0220.f" + "lyteidl.admin.NamedEntityIdentifierListR" + "equest\032).flyteidl.admin.NamedEntityIdent" + "ifierList\"\200\001\202\323\344\223\002,\022*/api/v1/launch_plan_" + "ids/{project}/{domain}\222AK\032IFetch existin" + "g launch plan definition identifiers mat" + "ching input filters.\022\214\002\n\017ListLaunchPlans" + "\022#.flyteidl.admin.ResourceListRequest\032\036." + "flyteidl.admin.LaunchPlanList\"\263\001\202\323\344\223\002j\0227" + "/api/v1/launch_plans/{id.project}/{id.do" + "main}/{id.name}Z/\022-/api/v1/launch_plans/" + "{id.project}/{id.domain}\222A@\032>Fetch exist" + "ing launch plan definitions matching inp" + "ut filters.\022\300\006\n\020UpdateLaunchPlan\022\'.flyte" + "idl.admin.LaunchPlanUpdateRequest\032(.flyt" + "eidl.admin.LaunchPlanUpdateResponse\"\330\005\202\323" + "\344\223\002I\032D/api/v1/launch_plans/{id.project}/" + "{id.domain}/{id.name}/{id.version}:\001*\222A\205" + "\005\032\202\005Update the status of an existing lau" + "nch plan definition. At most one launch " + "plan version for a given {project, domai" + "n, name} can be active at a time. If thi" + "s call sets a launch plan to active and " + "existing version is already active, the " + "result of this call will be that the for" + "merly active launch plan will be made in" + "active and specified launch plan in this" + " request will be made active. In the eve" + "nt that the formerly active launch plan " + "had a schedule associated it with it, th" + "is schedule will be disabled. If the ref" + "erence launch plan in this request is be" + "ing set to active and has a schedule ass" + "ociated with it, the schedule will be en" + "abled.\022\242\001\n\017CreateExecution\022&.flyteidl.ad" + "min.ExecutionCreateRequest\032\'.flyteidl.ad" + "min.ExecutionCreateResponse\">\202\323\344\223\002\027\"\022/ap" + "i/v1/executions:\001*\222A\036\032\034Create a workflow" + " execution.\022\261\001\n\021RelaunchExecution\022(.flyt" + "eidl.admin.ExecutionRelaunchRequest\032\'.fl" + "yteidl.admin.ExecutionCreateResponse\"I\202\323" + "\344\223\002 \"\033/api/v1/executions/relaunch:\001*\222A \032" + "\036Relaunch a workflow execution.\022\235\005\n\020Reco" + "verExecution\022\'.flyteidl.admin.ExecutionR" + "ecoverRequest\032\'.flyteidl.admin.Execution" + "CreateResponse\"\266\004\202\323\344\223\002\037\"\032/api/v1/executi" + "ons/recover:\001*\222A\215\004\032\212\004Recreates a previou" + "sly-run workflow execution that will onl" + "y start executing from the last known fa" + "ilure point. In Recover mode, users cann" + "ot change any input parameters or update" + " the version of the execution. This is e" + "xtremely useful to recover from system e" + "rrors and byzantine faults like - Loss o" + "f K8s cluster, bugs in platform or insta" + "bility, machine failures, downstream sys" + "tem failures (downstream services), or s" + "imply to recover executions that failed " + "because of retry exhaustion and should c" + "omplete if tried again.\022\302\001\n\014GetExecution" + "\022+.flyteidl.admin.WorkflowExecutionGetRe" + "quest\032\031.flyteidl.admin.Execution\"j\202\323\344\223\0027" + "\0225/api/v1/executions/{id.project}/{id.do" + "main}/{id.name}\222A*\032(Retrieve an existing" + " workflow execution.\022\326\001\n\017UpdateExecution" + "\022&.flyteidl.admin.ExecutionUpdateRequest" + "\032\'.flyteidl.admin.ExecutionUpdateRespons" + "e\"r\202\323\344\223\002:\0325/api/v1/executions/{id.projec" + "t}/{id.domain}/{id.name}:\001*\222A/\032-Update e" + "xecution belonging to project domain.\022\202\002" + "\n\020GetExecutionData\022/.flyteidl.admin.Work" + "flowExecutionGetDataRequest\0320.flyteidl.a" + "dmin.WorkflowExecutionGetDataResponse\"\212\001" + "\202\323\344\223\002<\022:/api/v1/data/executions/{id.proj" + "ect}/{id.domain}/{id.name}\222AE\032CRetrieve " + "input and output data from an existing w" + "orkflow execution.\022\310\001\n\016ListExecutions\022#." + "flyteidl.admin.ResourceListRequest\032\035.fly" + "teidl.admin.ExecutionList\"r\202\323\344\223\002-\022+/api/" + "v1/executions/{id.project}/{id.domain}\222A" + "<\032:Fetch existing workflow executions ma" + "tching input filters.\022\364\001\n\022TerminateExecu" + "tion\022).flyteidl.admin.ExecutionTerminate" + "Request\032*.flyteidl.admin.ExecutionTermin" + "ateResponse\"\206\001\202\323\344\223\002:*5/api/v1/executions" + "/{id.project}/{id.domain}/{id.name}:\001*\222A" + "C\032ATerminate the active workflow executi" + "on specified in the request.\022\374\001\n\020GetNode" + "Execution\022\'.flyteidl.admin.NodeExecution" + "GetRequest\032\035.flyteidl.admin.NodeExecutio" + "n\"\237\001\202\323\344\223\002p\022n/api/v1/node_executions/{id." + "execution_id.project}/{id.execution_id.d" + "omain}/{id.execution_id.name}/{id.node_i" + "d}\222A&\032$Retrieve an existing node executi" + "on.\022\232\002\n\022ListNodeExecutions\022(.flyteidl.ad" + "min.NodeExecutionListRequest\032!.flyteidl." + "admin.NodeExecutionList\"\266\001\202\323\344\223\002u\022s/api/v" + "1/node_executions/{workflow_execution_id" + ".project}/{workflow_execution_id.domain}" + "/{workflow_execution_id.name}\222A8\0326Fetch " + "existing node executions matching input " + "filters.\022\357\004\n\031ListNodeExecutionsForTask\022/" + ".flyteidl.admin.NodeExecutionForTaskList" + "Request\032!.flyteidl.admin.NodeExecutionLi" + "st\"\375\003\202\323\344\223\002\254\003\022\251\003/api/v1/children/task_exe" + "cutions/{task_execution_id.node_executio" + "n_id.execution_id.project}/{task_executi" + "on_id.node_execution_id.execution_id.dom" + "ain}/{task_execution_id.node_execution_i" + "d.execution_id.name}/{task_execution_id." + "node_execution_id.node_id}/{task_executi" + "on_id.task_id.project}/{task_execution_i" + "d.task_id.domain}/{task_execution_id.tas" + "k_id.name}/{task_execution_id.task_id.ve" + "rsion}/{task_execution_id.retry_attempt}" + "\222AG\032EFetch child node executions launche" + "d by the specified task execution.\022\263\002\n\024G" + "etNodeExecutionData\022+.flyteidl.admin.Nod" + "eExecutionGetDataRequest\032,.flyteidl.admi" + "n.NodeExecutionGetDataResponse\"\277\001\202\323\344\223\002u\022" + "s/api/v1/data/node_executions/{id.execut" + "ion_id.project}/{id.execution_id.domain}" + "/{id.execution_id.name}/{id.node_id}\222AA\032" + "\?Retrieve input and output data from an " + "existing node execution.\022\227\001\n\017RegisterPro" + "ject\022&.flyteidl.admin.ProjectRegisterReq" + "uest\032\'.flyteidl.admin.ProjectRegisterRes" + "ponse\"3\202\323\344\223\002\025\"\020/api/v1/projects:\001*\222A\025\032\023R" + "egister a project.\022\207\001\n\rUpdateProject\022\027.f" + "lyteidl.admin.Project\032%.flyteidl.admin.P" + "rojectUpdateResponse\"6\202\323\344\223\002\032\032\025/api/v1/pr" + "ojects/{id}:\001*\222A\023\032\021Update a project.\022\205\001\n" + "\014ListProjects\022\".flyteidl.admin.ProjectLi" + "stRequest\032\030.flyteidl.admin.Projects\"7\202\323\344" + "\223\002\022\022\020/api/v1/projects\222A\034\032\032Fetch register" + "ed projects.\022\335\001\n\023CreateWorkflowEvent\022-.f" + "lyteidl.admin.WorkflowExecutionEventRequ" + "est\032..flyteidl.admin.WorkflowExecutionEv" + "entResponse\"g\202\323\344\223\002\035\"\030/api/v1/events/work" + "flows:\001*\222AA\032\?Create a workflow execution" + " event recording a phase transition.\022\311\001\n" + "\017CreateNodeEvent\022).flyteidl.admin.NodeEx" + "ecutionEventRequest\032*.flyteidl.admin.Nod" + "eExecutionEventResponse\"_\202\323\344\223\002\031\"\024/api/v1" + "/events/nodes:\001*\222A=\032;Create a node execu" + "tion event recording a phase transition." + "\022\311\001\n\017CreateTaskEvent\022).flyteidl.admin.Ta" + "skExecutionEventRequest\032*.flyteidl.admin" + ".TaskExecutionEventResponse\"_\202\323\344\223\002\031\"\024/ap" + "i/v1/events/tasks:\001*\222A=\032;Create a task e" + "xecution event recording a phase transit" + "ion.\022\251\003\n\020GetTaskExecution\022\'.flyteidl.adm" + "in.TaskExecutionGetRequest\032\035.flyteidl.ad" + "min.TaskExecution\"\314\002\202\323\344\223\002\234\002\022\231\002/api/v1/ta" + "sk_executions/{id.node_execution_id.exec" + "ution_id.project}/{id.node_execution_id." + "execution_id.domain}/{id.node_execution_" + "id.execution_id.name}/{id.node_execution" + "_id.node_id}/{id.task_id.project}/{id.ta" + "sk_id.domain}/{id.task_id.name}/{id.task" + "_id.version}/{id.retry_attempt}\222A&\032$Retr" + "ieve an existing task execution.\022\323\002\n\022Lis" + "tTaskExecutions\022(.flyteidl.admin.TaskExe" + "cutionListRequest\032!.flyteidl.admin.TaskE" + "xecutionList\"\357\001\202\323\344\223\002\255\001\022\252\001/api/v1/task_ex" + "ecutions/{node_execution_id.execution_id" + ".project}/{node_execution_id.execution_i" + "d.domain}/{node_execution_id.execution_i" + "d.name}/{node_execution_id.node_id}\222A8\0326" + "Fetch existing task executions matching " + "input filters.\022\340\003\n\024GetTaskExecutionData\022" + "+.flyteidl.admin.TaskExecutionGetDataReq" + "uest\032,.flyteidl.admin.TaskExecutionGetDa" + "taResponse\"\354\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/task" + "_executions/{id.node_execution_id.execut" + "ion_id.project}/{id.node_execution_id.ex" + "ecution_id.domain}/{id.node_execution_id" + ".execution_id.name}/{id.node_execution_i" + "d.node_id}/{id.task_id.project}/{id.task" + "_id.domain}/{id.task_id.name}/{id.task_i" + "d.version}/{id.retry_attempt}\222AA\032\?Retrie" + "ve input and output data from an existin" + "g task execution.\022\277\002\n\035UpdateProjectDomai" + "nAttributes\0224.flyteidl.admin.ProjectDoma" + "inAttributesUpdateRequest\0325.flyteidl.adm" + "in.ProjectDomainAttributesUpdateResponse" + "\"\260\001\202\323\344\223\002O\032J/api/v1/project_domain_attrib" + "utes/{attributes.project}/{attributes.do" + "main}:\001*\222AX\032VUpdate the customized resou" + "rce attributes associated with a project" + "-domain combination\022\237\002\n\032GetProjectDomain" + "Attributes\0221.flyteidl.admin.ProjectDomai" + "nAttributesGetRequest\0322.flyteidl.admin.P" + "rojectDomainAttributesGetResponse\"\231\001\202\323\344\223" + "\0026\0224/api/v1/project_domain_attributes/{p" + "roject}/{domain}\222AZ\032XRetrieve the custom" + "ized resource attributes associated with" + " a project-domain combination\022\251\002\n\035Delete" + "ProjectDomainAttributes\0224.flyteidl.admin" + ".ProjectDomainAttributesDeleteRequest\0325." + "flyteidl.admin.ProjectDomainAttributesDe" + "leteResponse\"\232\001\202\323\344\223\0029*4/api/v1/project_d" + "omain_attributes/{project}/{domain}:\001*\222A" + "X\032VDelete the customized resource attrib" + "utes associated with a project-domain co" + "mbination\022\316\002\n\030UpdateWorkflowAttributes\022/" + ".flyteidl.admin.WorkflowAttributesUpdate" + "Request\0320.flyteidl.admin.WorkflowAttribu" + "tesUpdateResponse\"\316\001\202\323\344\223\002_\032Z/api/v1/work" + "flow_attributes/{attributes.project}/{at" + "tributes.domain}/{attributes.workflow}:\001" + "*\222Af\032dUpdate the customized resource att" + "ributes associated with a project, domai" + "n and workflow combination\022\243\002\n\025GetWorkfl" + "owAttributes\022,.flyteidl.admin.WorkflowAt" + "tributesGetRequest\032-.flyteidl.admin.Work" + "flowAttributesGetResponse\"\254\001\202\323\344\223\002;\0229/api" + "/v1/workflow_attributes/{project}/{domai" + "n}/{workflow}\222Ah\032fRetrieve the customize" + "d resource attributes associated with a " + "project, domain and workflow combination" + "\022\255\002\n\030DeleteWorkflowAttributes\022/.flyteidl" + ".admin.WorkflowAttributesDeleteRequest\0320" + ".flyteidl.admin.WorkflowAttributesDelete" + "Response\"\255\001\202\323\344\223\002>*9/api/v1/workflow_attr" + "ibutes/{project}/{domain}/{workflow}:\001*\222" + "Af\032dDelete the customized resource attri" + "butes associated with a project, domain " + "and workflow combination\022\341\001\n\027ListMatchab" + "leAttributes\022..flyteidl.admin.ListMatcha" + "bleAttributesRequest\032/.flyteidl.admin.Li" + "stMatchableAttributesResponse\"e\202\323\344\223\002\036\022\034/" + "api/v1/matchable_attributes\222A>\032 diff --git a/gen/pb-go/flyteidl/admin/entity_description.pb.go b/gen/pb-go/flyteidl/admin/entity_description.pb.go new file mode 100644 index 000000000..330634046 --- /dev/null +++ b/gen/pb-go/flyteidl/admin/entity_description.pb.go @@ -0,0 +1,336 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: flyteidl/admin/entity_description.proto + +package admin + +import ( + fmt "fmt" + _ "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core" + proto "github.com/golang/protobuf/proto" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package + +type LongDescription_DescriptionFormat int32 + +const ( + LongDescription_UNKNOWN LongDescription_DescriptionFormat = 0 + LongDescription_MARKDOWN LongDescription_DescriptionFormat = 1 + LongDescription_HTML LongDescription_DescriptionFormat = 2 + // python default documentation - comments is rst + LongDescription_RST LongDescription_DescriptionFormat = 3 +) + +var LongDescription_DescriptionFormat_name = map[int32]string{ + 0: "UNKNOWN", + 1: "MARKDOWN", + 2: "HTML", + 3: "RST", +} + +var LongDescription_DescriptionFormat_value = map[string]int32{ + "UNKNOWN": 0, + "MARKDOWN": 1, + "HTML": 2, + "RST": 3, +} + +func (x LongDescription_DescriptionFormat) String() string { + return proto.EnumName(LongDescription_DescriptionFormat_name, int32(x)) +} + +func (LongDescription_DescriptionFormat) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_f33327cd6dce222e, []int{1, 0} +} + +// EntityDescription contains detailed description for the task/workflow/launch plan. +// Documentation could provide insight into the algorithms, business use case, etc. +type EntityDescription struct { + // One-liner overview of the entity. + ShortDescription string `protobuf:"bytes,1,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"` + // Full user description with formatting preserved. + LongDescription *LongDescription `protobuf:"bytes,2,opt,name=long_description,json=longDescription,proto3" json:"long_description,omitempty"` + // User-specified tags. These are arbitrary and can be used for searching + // filtering and discovering entities. + Tags []string `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"` + // User-defined free-form key-value pair attributes. These are arbitrary + // and can be used for searching, filtering and discovering entities. + Labels *Labels `protobuf:"bytes,4,opt,name=labels,proto3" json:"labels,omitempty"` + // Optional link to source code used to define this entity. + Source *SourceCode `protobuf:"bytes,5,opt,name=source,proto3" json:"source,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *EntityDescription) Reset() { *m = EntityDescription{} } +func (m *EntityDescription) String() string { return proto.CompactTextString(m) } +func (*EntityDescription) ProtoMessage() {} +func (*EntityDescription) Descriptor() ([]byte, []int) { + return fileDescriptor_f33327cd6dce222e, []int{0} +} + +func (m *EntityDescription) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_EntityDescription.Unmarshal(m, b) +} +func (m *EntityDescription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_EntityDescription.Marshal(b, m, deterministic) +} +func (m *EntityDescription) XXX_Merge(src proto.Message) { + xxx_messageInfo_EntityDescription.Merge(m, src) +} +func (m *EntityDescription) XXX_Size() int { + return xxx_messageInfo_EntityDescription.Size(m) +} +func (m *EntityDescription) XXX_DiscardUnknown() { + xxx_messageInfo_EntityDescription.DiscardUnknown(m) +} + +var xxx_messageInfo_EntityDescription proto.InternalMessageInfo + +func (m *EntityDescription) GetShortDescription() string { + if m != nil { + return m.ShortDescription + } + return "" +} + +func (m *EntityDescription) GetLongDescription() *LongDescription { + if m != nil { + return m.LongDescription + } + return nil +} + +func (m *EntityDescription) GetTags() []string { + if m != nil { + return m.Tags + } + return nil +} + +func (m *EntityDescription) GetLabels() *Labels { + if m != nil { + return m.Labels + } + return nil +} + +func (m *EntityDescription) GetSource() *SourceCode { + if m != nil { + return m.Source + } + return nil +} + +// Full user description with formatting preserved. This can be rendered +// by clients, such as the console or command line tools with in-tact +// formatting. +type LongDescription struct { + // long description - no more than 4KB + Values string `protobuf:"bytes,1,opt,name=values,proto3" json:"values,omitempty"` + // if the description sizes exceed some threshold we can offload the entire + // description proto altogether to an external data store, like S3 rather than store inline in the db + Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` + // format of the long description + LongFormat LongDescription_DescriptionFormat `protobuf:"varint,3,opt,name=long_format,json=longFormat,proto3,enum=flyteidl.admin.LongDescription_DescriptionFormat" json:"long_format,omitempty"` + // Optional link to an icon for the entity + IconLink string `protobuf:"bytes,4,opt,name=icon_link,json=iconLink,proto3" json:"icon_link,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LongDescription) Reset() { *m = LongDescription{} } +func (m *LongDescription) String() string { return proto.CompactTextString(m) } +func (*LongDescription) ProtoMessage() {} +func (*LongDescription) Descriptor() ([]byte, []int) { + return fileDescriptor_f33327cd6dce222e, []int{1} +} + +func (m *LongDescription) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LongDescription.Unmarshal(m, b) +} +func (m *LongDescription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LongDescription.Marshal(b, m, deterministic) +} +func (m *LongDescription) XXX_Merge(src proto.Message) { + xxx_messageInfo_LongDescription.Merge(m, src) +} +func (m *LongDescription) XXX_Size() int { + return xxx_messageInfo_LongDescription.Size(m) +} +func (m *LongDescription) XXX_DiscardUnknown() { + xxx_messageInfo_LongDescription.DiscardUnknown(m) +} + +var xxx_messageInfo_LongDescription proto.InternalMessageInfo + +func (m *LongDescription) GetValues() string { + if m != nil { + return m.Values + } + return "" +} + +func (m *LongDescription) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *LongDescription) GetLongFormat() LongDescription_DescriptionFormat { + if m != nil { + return m.LongFormat + } + return LongDescription_UNKNOWN +} + +func (m *LongDescription) GetIconLink() string { + if m != nil { + return m.IconLink + } + return "" +} + +// Link to source code used to define this entity +type SourceCode struct { + // File where the code is located + File string `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"` + // Line number where the task definition, workflow definition, etc starts at + LineNumber uint32 `protobuf:"varint,2,opt,name=line_number,json=lineNumber,proto3" json:"line_number,omitempty"` + // git repository + Repo string `protobuf:"bytes,3,opt,name=repo,proto3" json:"repo,omitempty"` + // branch of the repository + Branch string `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` + // link to the original repository + Link string `protobuf:"bytes,5,opt,name=link,proto3" json:"link,omitempty"` + // language of the code + Language string `protobuf:"bytes,6,opt,name=language,proto3" json:"language,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SourceCode) Reset() { *m = SourceCode{} } +func (m *SourceCode) String() string { return proto.CompactTextString(m) } +func (*SourceCode) ProtoMessage() {} +func (*SourceCode) Descriptor() ([]byte, []int) { + return fileDescriptor_f33327cd6dce222e, []int{2} +} + +func (m *SourceCode) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SourceCode.Unmarshal(m, b) +} +func (m *SourceCode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SourceCode.Marshal(b, m, deterministic) +} +func (m *SourceCode) XXX_Merge(src proto.Message) { + xxx_messageInfo_SourceCode.Merge(m, src) +} +func (m *SourceCode) XXX_Size() int { + return xxx_messageInfo_SourceCode.Size(m) +} +func (m *SourceCode) XXX_DiscardUnknown() { + xxx_messageInfo_SourceCode.DiscardUnknown(m) +} + +var xxx_messageInfo_SourceCode proto.InternalMessageInfo + +func (m *SourceCode) GetFile() string { + if m != nil { + return m.File + } + return "" +} + +func (m *SourceCode) GetLineNumber() uint32 { + if m != nil { + return m.LineNumber + } + return 0 +} + +func (m *SourceCode) GetRepo() string { + if m != nil { + return m.Repo + } + return "" +} + +func (m *SourceCode) GetBranch() string { + if m != nil { + return m.Branch + } + return "" +} + +func (m *SourceCode) GetLink() string { + if m != nil { + return m.Link + } + return "" +} + +func (m *SourceCode) GetLanguage() string { + if m != nil { + return m.Language + } + return "" +} + +func init() { + proto.RegisterEnum("flyteidl.admin.LongDescription_DescriptionFormat", LongDescription_DescriptionFormat_name, LongDescription_DescriptionFormat_value) + proto.RegisterType((*EntityDescription)(nil), "flyteidl.admin.EntityDescription") + proto.RegisterType((*LongDescription)(nil), "flyteidl.admin.LongDescription") + proto.RegisterType((*SourceCode)(nil), "flyteidl.admin.SourceCode") +} + +func init() { + proto.RegisterFile("flyteidl/admin/entity_description.proto", fileDescriptor_f33327cd6dce222e) +} + +var fileDescriptor_f33327cd6dce222e = []byte{ + // 472 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0x4d, 0x6f, 0xd3, 0x40, + 0x10, 0xc5, 0x71, 0x9a, 0xc6, 0x13, 0x68, 0x9d, 0x3d, 0x54, 0x56, 0x2a, 0xd1, 0x28, 0x17, 0x22, + 0x21, 0x6c, 0x11, 0x84, 0x38, 0x17, 0x0a, 0x42, 0x34, 0x0d, 0xd2, 0xb6, 0x08, 0x89, 0x4b, 0xe4, + 0x8f, 0xcd, 0x66, 0xd5, 0xf5, 0x6e, 0xb4, 0x5e, 0x23, 0xf5, 0xce, 0xdf, 0xe0, 0x37, 0xf2, 0x17, + 0xd0, 0x4e, 0x9c, 0x36, 0x49, 0x0f, 0xbd, 0xbd, 0x99, 0x79, 0x6f, 0x66, 0xde, 0x68, 0xe0, 0xd5, + 0x42, 0xde, 0x59, 0x26, 0x0a, 0x99, 0xa4, 0x45, 0x29, 0x54, 0xc2, 0x94, 0x15, 0xf6, 0x6e, 0x5e, + 0xb0, 0x2a, 0x37, 0x62, 0x65, 0x85, 0x56, 0xf1, 0xca, 0x68, 0xab, 0xc9, 0xd1, 0x86, 0x18, 0x23, + 0x71, 0xf0, 0xf2, 0x5e, 0x98, 0x6b, 0xc3, 0x12, 0x51, 0x38, 0xe5, 0x42, 0x30, 0xb3, 0xe6, 0x0f, + 0x4e, 0xf7, 0x1a, 0xe7, 0xba, 0x2c, 0x37, 0xcd, 0x46, 0x7f, 0x5a, 0xd0, 0xff, 0x8c, 0x93, 0x2e, + 0x1e, 0x06, 0x91, 0xd7, 0xd0, 0xaf, 0x96, 0xda, 0xd8, 0xed, 0xe9, 0x91, 0x37, 0xf4, 0xc6, 0x01, + 0x0d, 0xb1, 0xb0, 0x4d, 0xfe, 0x06, 0xa1, 0xd4, 0x8a, 0xef, 0x70, 0x5b, 0x43, 0x6f, 0xdc, 0x9b, + 0x9c, 0xc5, 0xbb, 0xab, 0xc6, 0x53, 0xad, 0xf8, 0x96, 0x94, 0x1e, 0xcb, 0xdd, 0x04, 0x21, 0xd0, + 0xb6, 0x29, 0xaf, 0x22, 0x7f, 0xe8, 0x8f, 0x03, 0x8a, 0x98, 0xc4, 0xd0, 0x91, 0x69, 0xc6, 0x64, + 0x15, 0xb5, 0xb1, 0xeb, 0xc9, 0xa3, 0xae, 0x58, 0xa5, 0x0d, 0x8b, 0x4c, 0xa0, 0x53, 0xe9, 0xda, + 0xe4, 0x2c, 0x3a, 0x40, 0xfe, 0x60, 0x9f, 0x7f, 0x8d, 0xd5, 0x4f, 0xba, 0x60, 0xb4, 0x61, 0x8e, + 0xfe, 0x79, 0x70, 0xbc, 0xb7, 0x1c, 0x39, 0x81, 0xce, 0xef, 0x54, 0xd6, 0xac, 0x6a, 0x9c, 0x37, + 0x11, 0x09, 0xc1, 0xaf, 0x8d, 0x40, 0x8b, 0x01, 0x75, 0x90, 0x50, 0xe8, 0xe1, 0x05, 0x16, 0xda, + 0x94, 0xa9, 0x8d, 0xfc, 0xa1, 0x37, 0x3e, 0x9a, 0xbc, 0x7d, 0xc2, 0x7c, 0xbc, 0x85, 0xbf, 0xa0, + 0x90, 0x82, 0xeb, 0xb2, 0xc6, 0xe4, 0x14, 0x02, 0x91, 0x6b, 0x35, 0x97, 0x42, 0xdd, 0xa2, 0xf1, + 0x80, 0x76, 0x5d, 0x62, 0x2a, 0xd4, 0xed, 0xe8, 0x1c, 0xfa, 0x8f, 0xd4, 0xa4, 0x07, 0x87, 0x3f, + 0x66, 0x97, 0xb3, 0xef, 0x3f, 0x67, 0xe1, 0x33, 0xf2, 0x1c, 0xba, 0x57, 0xe7, 0xf4, 0xf2, 0xc2, + 0x45, 0x1e, 0xe9, 0x42, 0xfb, 0xeb, 0xcd, 0xd5, 0x34, 0x6c, 0x91, 0x43, 0xf0, 0xe9, 0xf5, 0x4d, + 0xe8, 0x8f, 0xfe, 0x7a, 0x00, 0x0f, 0x87, 0x70, 0x87, 0x5f, 0x08, 0xc9, 0x1a, 0xab, 0x88, 0xc9, + 0x19, 0xf4, 0xa4, 0x50, 0x6c, 0xae, 0xea, 0x32, 0x63, 0x06, 0x0d, 0xbf, 0xa0, 0xe0, 0x52, 0x33, + 0xcc, 0x38, 0x91, 0x61, 0x2b, 0x8d, 0x86, 0x03, 0x8a, 0xd8, 0x5d, 0x2d, 0x33, 0xa9, 0xca, 0x97, + 0xcd, 0xd2, 0x4d, 0xe4, 0xb8, 0x68, 0xe5, 0x60, 0xcd, 0x75, 0x98, 0x0c, 0xa0, 0x2b, 0x53, 0xc5, + 0xeb, 0x94, 0xb3, 0xa8, 0xb3, 0xb6, 0xb8, 0x89, 0x3f, 0x7e, 0xf8, 0xf5, 0x9e, 0x0b, 0xbb, 0xac, + 0xb3, 0x38, 0xd7, 0x65, 0x82, 0xa7, 0xd4, 0x86, 0x27, 0xf7, 0xbf, 0xcc, 0x99, 0x4a, 0x56, 0xd9, + 0x1b, 0xae, 0x93, 0xdd, 0xf7, 0xce, 0x3a, 0xf8, 0xd8, 0xef, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, + 0xef, 0x58, 0x86, 0xda, 0x50, 0x03, 0x00, 0x00, +} diff --git a/gen/pb-go/flyteidl/admin/entity_description.pb.validate.go b/gen/pb-go/flyteidl/admin/entity_description.pb.validate.go new file mode 100644 index 000000000..386785419 --- /dev/null +++ b/gen/pb-go/flyteidl/admin/entity_description.pb.validate.go @@ -0,0 +1,285 @@ +// Code generated by protoc-gen-validate. DO NOT EDIT. +// source: flyteidl/admin/entity_description.proto + +package admin + +import ( + "bytes" + "errors" + "fmt" + "net" + "net/mail" + "net/url" + "regexp" + "strings" + "time" + "unicode/utf8" + + "github.com/golang/protobuf/ptypes" +) + +// ensure the imports are used +var ( + _ = bytes.MinRead + _ = errors.New("") + _ = fmt.Print + _ = utf8.UTFMax + _ = (*regexp.Regexp)(nil) + _ = (*strings.Reader)(nil) + _ = net.IPv4len + _ = time.Duration(0) + _ = (*url.URL)(nil) + _ = (*mail.Address)(nil) + _ = ptypes.DynamicAny{} +) + +// define the regex for a UUID once up-front +var _entity_description_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") + +// Validate checks the field values on EntityDescription with the rules defined +// in the proto definition for this message. If any rules are violated, an +// error is returned. +func (m *EntityDescription) Validate() error { + if m == nil { + return nil + } + + // no validation rules for ShortDescription + + if v, ok := interface{}(m.GetLongDescription()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return EntityDescriptionValidationError{ + field: "LongDescription", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if v, ok := interface{}(m.GetLabels()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return EntityDescriptionValidationError{ + field: "Labels", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if v, ok := interface{}(m.GetSource()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return EntityDescriptionValidationError{ + field: "Source", + reason: "embedded message failed validation", + cause: err, + } + } + } + + return nil +} + +// EntityDescriptionValidationError is the validation error returned by +// EntityDescription.Validate if the designated constraints aren't met. +type EntityDescriptionValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e EntityDescriptionValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e EntityDescriptionValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e EntityDescriptionValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e EntityDescriptionValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e EntityDescriptionValidationError) ErrorName() string { + return "EntityDescriptionValidationError" +} + +// Error satisfies the builtin error interface +func (e EntityDescriptionValidationError) 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 %sEntityDescription.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = EntityDescriptionValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = EntityDescriptionValidationError{} + +// Validate checks the field values on LongDescription with the rules defined +// in the proto definition for this message. If any rules are violated, an +// error is returned. +func (m *LongDescription) Validate() error { + if m == nil { + return nil + } + + // no validation rules for Values + + // no validation rules for Uri + + // no validation rules for LongFormat + + // no validation rules for IconLink + + return nil +} + +// LongDescriptionValidationError is the validation error returned by +// LongDescription.Validate if the designated constraints aren't met. +type LongDescriptionValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e LongDescriptionValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e LongDescriptionValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e LongDescriptionValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e LongDescriptionValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e LongDescriptionValidationError) ErrorName() string { return "LongDescriptionValidationError" } + +// Error satisfies the builtin error interface +func (e LongDescriptionValidationError) 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 %sLongDescription.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = LongDescriptionValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = LongDescriptionValidationError{} + +// Validate checks the field values on SourceCode with the rules defined in the +// proto definition for this message. If any rules are violated, an error is returned. +func (m *SourceCode) Validate() error { + if m == nil { + return nil + } + + // no validation rules for File + + // no validation rules for LineNumber + + // no validation rules for Repo + + // no validation rules for Branch + + // no validation rules for Link + + // no validation rules for Language + + return nil +} + +// SourceCodeValidationError is the validation error returned by +// SourceCode.Validate if the designated constraints aren't met. +type SourceCodeValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e SourceCodeValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e SourceCodeValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e SourceCodeValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e SourceCodeValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e SourceCodeValidationError) ErrorName() string { return "SourceCodeValidationError" } + +// Error satisfies the builtin error interface +func (e SourceCodeValidationError) 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 %sSourceCode.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = SourceCodeValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = SourceCodeValidationError{} diff --git a/gen/pb-go/flyteidl/admin/entity_description.swagger.json b/gen/pb-go/flyteidl/admin/entity_description.swagger.json new file mode 100644 index 000000000..8004c08a8 --- /dev/null +++ b/gen/pb-go/flyteidl/admin/entity_description.swagger.json @@ -0,0 +1,19 @@ +{ + "swagger": "2.0", + "info": { + "title": "flyteidl/admin/entity_description.proto", + "version": "version not set" + }, + "schemes": [ + "http", + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": {}, + "definitions": {} +} diff --git a/gen/pb-go/flyteidl/admin/execution.pb.go b/gen/pb-go/flyteidl/admin/execution.pb.go index dda11fb83..1c51b1cde 100644 --- a/gen/pb-go/flyteidl/admin/execution.pb.go +++ b/gen/pb-go/flyteidl/admin/execution.pb.go @@ -1058,10 +1058,15 @@ type ExecutionSpec struct { // Omitting this field uses the workflow's value as a default. // As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper // around the bool field. - Interruptible *wrappers.BoolValue `protobuf:"bytes,21,opt,name=interruptible,proto3" json:"interruptible,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Interruptible *wrappers.BoolValue `protobuf:"bytes,21,opt,name=interruptible,proto3" json:"interruptible,omitempty"` + // One-liner overview of the execution. + Description string `protobuf:"bytes,22,opt,name=description,proto3" json:"description,omitempty"` + // User-specified tags. These are arbitrary and can be used for searching + // filtering and discovering entities. + Tags []string `protobuf:"bytes,23,rep,name=tags,proto3" json:"tags,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ExecutionSpec) Reset() { *m = ExecutionSpec{} } @@ -1212,6 +1217,20 @@ func (m *ExecutionSpec) GetInterruptible() *wrappers.BoolValue { return nil } +func (m *ExecutionSpec) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *ExecutionSpec) GetTags() []string { + if m != nil { + return m.Tags + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*ExecutionSpec) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -1586,111 +1605,113 @@ func init() { func init() { proto.RegisterFile("flyteidl/admin/execution.proto", fileDescriptor_4e2785d91b3809ec) } var fileDescriptor_4e2785d91b3809ec = []byte{ - // 1696 bytes of a gzipped FileDescriptorProto + // 1726 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xdd, 0x72, 0xdb, 0xc6, - 0x15, 0x16, 0x29, 0x52, 0x3f, 0x87, 0x26, 0x45, 0xaf, 0x1d, 0x05, 0x96, 0x1d, 0x5b, 0x41, 0xa7, + 0x15, 0x16, 0x29, 0x52, 0x3f, 0x87, 0x26, 0x45, 0xaf, 0x1d, 0x19, 0x96, 0x1d, 0x5b, 0x41, 0xa7, 0x8d, 0x27, 0x99, 0x92, 0x13, 0xa5, 0x9a, 0x4c, 0xdc, 0x3a, 0x13, 0x8a, 0xa2, 0x43, 0xb5, 0xfa, - 0x71, 0x57, 0x3f, 0x4e, 0xd2, 0xc9, 0xa0, 0x4b, 0x60, 0x49, 0x21, 0x5e, 0x60, 0xe1, 0xc5, 0xc2, - 0xb2, 0xdf, 0xa0, 0xd3, 0x27, 0xe8, 0x23, 0xb4, 0x37, 0xbd, 0xec, 0x45, 0xaf, 0xfb, 0x60, 0x1d, - 0x2c, 0x16, 0x20, 0x00, 0x52, 0x96, 0x3c, 0xd6, 0x1d, 0x76, 0xcf, 0x77, 0xce, 0x9e, 0x3d, 0xff, - 0x0b, 0x78, 0x38, 0x66, 0x6f, 0x25, 0x75, 0x1d, 0xd6, 0x25, 0x8e, 0xe7, 0xfa, 0x5d, 0xfa, 0x86, - 0xda, 0x91, 0x74, 0xb9, 0xdf, 0x09, 0x04, 0x97, 0x1c, 0xb5, 0x52, 0x7a, 0x47, 0xd1, 0x37, 0x3e, - 0x2b, 0xe1, 0x6d, 0x16, 0x85, 0x92, 0x0a, 0x8b, 0x84, 0xa1, 0x3b, 0xf1, 0x3d, 0xea, 0xcb, 0x84, - 0x71, 0xe3, 0x7e, 0x19, 0xc8, 0x3d, 0x2f, 0x95, 0xba, 0xf1, 0x20, 0x23, 0xda, 0x5c, 0xd0, 0x2e, - 0x73, 0x25, 0x15, 0x84, 0x85, 0x9a, 0xfa, 0x49, 0x91, 0x5a, 0x52, 0x69, 0xe3, 0x61, 0x91, 0xec, - 0x3a, 0xd4, 0x97, 0xee, 0xd8, 0xa5, 0x62, 0xbe, 0xf0, 0x90, 0xda, 0x91, 0x70, 0xe5, 0xdb, 0x94, - 0x7b, 0xc2, 0xf9, 0x84, 0xd1, 0xae, 0x5a, 0x8d, 0xa2, 0x71, 0xd7, 0x89, 0x04, 0xc9, 0x49, 0x7f, - 0x54, 0xa6, 0x4b, 0xd7, 0xa3, 0xa1, 0x24, 0x5e, 0x70, 0x99, 0x80, 0x0b, 0x41, 0x82, 0x80, 0x0a, - 0xad, 0xbd, 0xf9, 0xbf, 0x0a, 0xac, 0x0f, 0x52, 0x95, 0xfb, 0x82, 0x12, 0x49, 0x31, 0x7d, 0x15, - 0xd1, 0x50, 0x22, 0x03, 0x96, 0x03, 0xc1, 0x7f, 0xa1, 0xb6, 0x34, 0x2a, 0x9b, 0x95, 0xc7, 0xab, - 0x38, 0x5d, 0xa2, 0x75, 0x58, 0x72, 0xb8, 0x47, 0x5c, 0xdf, 0xa8, 0x2a, 0x82, 0x5e, 0x21, 0x04, - 0x35, 0x9f, 0x78, 0xd4, 0x58, 0x54, 0xbb, 0xea, 0x1b, 0x7d, 0x09, 0xb5, 0x30, 0xa0, 0xb6, 0x51, - 0xdb, 0xac, 0x3c, 0x6e, 0x6c, 0x7d, 0xd2, 0x29, 0x7a, 0xa8, 0x93, 0x9d, 0x7d, 0x1c, 0x50, 0x1b, - 0x2b, 0x28, 0xfa, 0x12, 0x96, 0x5c, 0x3f, 0x88, 0x64, 0x68, 0xd4, 0x15, 0xd3, 0xbd, 0x29, 0x53, - 0x6c, 0xa3, 0xce, 0x7e, 0xe2, 0x80, 0x03, 0x12, 0x60, 0x0d, 0x34, 0x7f, 0x01, 0x23, 0x93, 0x84, - 0x29, 0x23, 0x91, 0x6f, 0x9f, 0xa7, 0xf7, 0x78, 0x02, 0x55, 0xd7, 0x51, 0x57, 0x68, 0x6c, 0x7d, - 0x5e, 0x12, 0xf5, 0x82, 0x8b, 0x97, 0x63, 0xc6, 0x2f, 0x32, 0xe6, 0xbd, 0xcc, 0x3f, 0xb8, 0xea, - 0x3a, 0xf3, 0x6e, 0x64, 0xfe, 0xb3, 0x02, 0x1f, 0xe7, 0x0e, 0xb3, 0xf9, 0x6b, 0x2a, 0x6e, 0xf2, - 0xac, 0x6a, 0xce, 0x7a, 0x4f, 0x61, 0xc5, 0xa3, 0x92, 0x38, 0x44, 0x12, 0xa5, 0x43, 0x63, 0xeb, - 0xd3, 0x4b, 0x2d, 0x78, 0xa0, 0x81, 0x38, 0x63, 0x31, 0x4f, 0x73, 0x9a, 0xa6, 0xce, 0x0d, 0x03, - 0xee, 0x87, 0xf4, 0x43, 0x34, 0x35, 0x7f, 0x84, 0xfb, 0x33, 0x90, 0xef, 0xa9, 0xbc, 0x01, 0x23, - 0x98, 0xff, 0xa9, 0xc0, 0x6a, 0x46, 0xfb, 0x20, 0x73, 0xa6, 0x81, 0x57, 0xbd, 0x7e, 0xe0, 0x3d, - 0x81, 0x65, 0x9b, 0xf1, 0x30, 0x12, 0x54, 0x1b, 0x7b, 0xf3, 0x52, 0xae, 0x7e, 0x82, 0xc3, 0x29, - 0x83, 0xf9, 0x57, 0x68, 0x66, 0xc4, 0x7d, 0x37, 0x94, 0xe8, 0x1b, 0x80, 0xac, 0x16, 0x84, 0x46, - 0x65, 0x73, 0xb1, 0x18, 0xc9, 0x25, 0x79, 0x38, 0x07, 0x46, 0x77, 0xa1, 0x2e, 0xf9, 0x4b, 0x9a, - 0xa6, 0x57, 0xb2, 0x30, 0x29, 0xb4, 0xa6, 0x91, 0xbf, 0xc3, 0xf8, 0x08, 0x7d, 0x0d, 0x4b, 0xaf, - 0x09, 0x8b, 0x68, 0xa8, 0x4d, 0x74, 0x79, 0xa2, 0xec, 0x54, 0x8d, 0xca, 0x70, 0x01, 0x6b, 0x38, - 0x42, 0xb0, 0x18, 0x09, 0x37, 0x11, 0x3f, 0x5c, 0xc0, 0xf1, 0x62, 0x67, 0x09, 0x6a, 0x2a, 0x66, - 0xfa, 0xd0, 0xec, 0x8d, 0xb8, 0x90, 0x69, 0x38, 0xc5, 0xda, 0xd8, 0x24, 0x0a, 0xa9, 0xae, 0x02, - 0xc9, 0x02, 0x3d, 0x80, 0xd5, 0x40, 0xb8, 0xbe, 0xed, 0x06, 0x84, 0x69, 0x3d, 0xa7, 0x1b, 0xe6, - 0x3f, 0x96, 0xa1, 0x5d, 0xb6, 0x15, 0xfa, 0x16, 0x96, 0x79, 0x24, 0x55, 0x62, 0x27, 0xfa, 0x3e, - 0x2c, 0x9b, 0xa3, 0x78, 0x3f, 0xad, 0x74, 0xca, 0x84, 0xb6, 0xa1, 0x4e, 0x85, 0xe0, 0x62, 0xd6, - 0xa5, 0xea, 0xb6, 0xd9, 0x79, 0x83, 0x18, 0x34, 0x5c, 0xc0, 0x09, 0x1a, 0xfd, 0x1a, 0x1a, 0x24, - 0xbe, 0x90, 0x95, 0xdc, 0x02, 0x62, 0x5d, 0xb5, 0x68, 0x50, 0x84, 0xbe, 0xba, 0xd0, 0x33, 0x68, - 0x25, 0xb0, 0x2c, 0xe1, 0x6e, 0xcd, 0x8f, 0x9c, 0x82, 0x75, 0x86, 0x0b, 0xb8, 0x49, 0x0a, 0xe6, - 0xfa, 0x0e, 0x1a, 0x89, 0xc2, 0x96, 0x12, 0xd2, 0xbc, 0x9e, 0x67, 0x20, 0xe1, 0xd9, 0x8d, 0x25, - 0x3c, 0x83, 0x35, 0x9b, 0x7b, 0x41, 0x24, 0xa9, 0x63, 0xe9, 0x42, 0xb8, 0x78, 0x0d, 0x29, 0xb8, - 0x95, 0x72, 0xed, 0x29, 0x26, 0xf4, 0x07, 0xa8, 0x07, 0xe7, 0x24, 0xa4, 0xaa, 0xf6, 0xb6, 0xb6, - 0x7e, 0x73, 0x55, 0x02, 0x75, 0x9e, 0xc7, 0x68, 0x9c, 0x30, 0xc5, 0xf1, 0x1b, 0x4a, 0x22, 0x62, - 0x25, 0x88, 0xd4, 0x95, 0x78, 0xa3, 0x93, 0xb4, 0x93, 0x4e, 0xda, 0x4e, 0x3a, 0x27, 0x69, 0xbf, - 0xc1, 0xab, 0x1a, 0xdd, 0x93, 0x68, 0x1b, 0x56, 0xd2, 0x3e, 0x65, 0x2c, 0x69, 0xcd, 0xcb, 0x8c, - 0xbb, 0x1a, 0x80, 0x33, 0x68, 0x7c, 0xa2, 0xad, 0x8a, 0x94, 0x3a, 0x71, 0xf9, 0xea, 0x13, 0x35, - 0xba, 0xa7, 0x92, 0x2d, 0x0a, 0x9c, 0x94, 0x75, 0xe5, 0x6a, 0x56, 0x8d, 0xee, 0x49, 0xb4, 0x03, - 0x4d, 0x9f, 0xc7, 0x75, 0xc3, 0x26, 0x49, 0xaa, 0xae, 0xaa, 0x54, 0x7d, 0x50, 0x76, 0xfb, 0x61, - 0x0e, 0x84, 0x8b, 0x2c, 0xe8, 0x09, 0x34, 0x2e, 0xb4, 0x35, 0x2d, 0xd7, 0x31, 0x1a, 0x73, 0xbd, - 0x95, 0xab, 0x4f, 0x90, 0xa2, 0xf7, 0x1c, 0xf4, 0x33, 0xdc, 0x0d, 0x25, 0x91, 0xd4, 0xb2, 0xcf, - 0x89, 0x3f, 0xa1, 0x96, 0x43, 0x25, 0x71, 0x59, 0x68, 0xb4, 0x94, 0x90, 0x2f, 0x2e, 0xaf, 0x5b, - 0x31, 0x53, 0x5f, 0xf1, 0xec, 0x26, 0x2c, 0x18, 0x85, 0x33, 0x7b, 0x3b, 0x6b, 0xd0, 0xd4, 0xe1, - 0x28, 0x68, 0x18, 0x31, 0x69, 0x3e, 0x85, 0xd6, 0xf1, 0xdb, 0x50, 0x52, 0x2f, 0x8b, 0xd8, 0x2f, - 0xe0, 0x76, 0x56, 0x7c, 0x2c, 0x3d, 0x22, 0xe9, 0x64, 0x6f, 0xd3, 0x69, 0x12, 0xab, 0x7d, 0xf3, - 0xbf, 0x35, 0xb8, 0x3d, 0xd3, 0x72, 0x50, 0x1f, 0x6a, 0x1e, 0x77, 0x92, 0x12, 0xd1, 0xda, 0xea, - 0x5e, 0xd9, 0xa3, 0x72, 0x3b, 0xdc, 0xa1, 0x58, 0x31, 0xbf, 0xbb, 0xa4, 0xc4, 0xe3, 0x88, 0x4f, - 0x43, 0xe9, 0xfa, 0x13, 0x95, 0x0d, 0x4d, 0x9c, 0x2e, 0xd1, 0x53, 0xb8, 0x15, 0xda, 0xe7, 0xd4, - 0x89, 0x58, 0xe2, 0xfe, 0xda, 0x95, 0xee, 0x6f, 0x64, 0xf8, 0x9e, 0x44, 0x3f, 0xc1, 0x47, 0x01, - 0x11, 0xd4, 0x97, 0x96, 0xcf, 0x1d, 0x6a, 0x65, 0x37, 0xd6, 0x31, 0x5f, 0x4e, 0x9b, 0x43, 0xee, - 0xd0, 0x79, 0x3d, 0xe7, 0x4e, 0x22, 0xa4, 0x40, 0x46, 0x7f, 0x81, 0x3b, 0x82, 0x8e, 0xa9, 0xa0, - 0xbe, 0x9d, 0x97, 0xdc, 0x7e, 0xef, 0x8e, 0x86, 0x32, 0x31, 0x53, 0xe1, 0xdf, 0xc3, 0x5a, 0xa8, - 0x3c, 0x39, 0x2d, 0x59, 0xb7, 0xe7, 0xd7, 0xd5, 0xa2, 0xc3, 0x71, 0x2b, 0x2c, 0xac, 0xcd, 0x49, - 0xae, 0x77, 0xc5, 0xfe, 0x40, 0x00, 0x4b, 0x07, 0xbd, 0xc3, 0xd3, 0xde, 0x7e, 0x7b, 0x01, 0x35, - 0x61, 0xf5, 0xb8, 0x3f, 0x1c, 0xec, 0x9e, 0xee, 0x0f, 0x76, 0xdb, 0x95, 0x98, 0x74, 0xfc, 0xe3, - 0xf1, 0xc9, 0xe0, 0xa0, 0x5d, 0x45, 0xb7, 0x60, 0x05, 0x0f, 0xf6, 0x7b, 0xa7, 0x87, 0xfd, 0x61, - 0x7b, 0x11, 0x21, 0x68, 0xf5, 0x87, 0x7b, 0xfb, 0xbb, 0xd6, 0x8b, 0x23, 0xfc, 0xa7, 0x67, 0xfb, - 0x47, 0x2f, 0xda, 0xb5, 0x98, 0x19, 0x0f, 0xfa, 0x47, 0x67, 0x03, 0x3c, 0xd8, 0x6d, 0xd7, 0xcd, - 0x33, 0x68, 0xe7, 0xd3, 0x48, 0xf5, 0xc9, 0x99, 0xfc, 0xab, 0xbc, 0x77, 0xfe, 0x99, 0xff, 0x5a, - 0xce, 0xdd, 0xe0, 0x38, 0x69, 0xe5, 0x8d, 0x64, 0x0a, 0xb4, 0x02, 0x46, 0xfc, 0x4b, 0xfa, 0x63, - 0x3e, 0x23, 0x13, 0xf4, 0x73, 0x46, 0x7c, 0xb4, 0x9d, 0xcd, 0x9f, 0xd5, 0xeb, 0x94, 0x5d, 0x0d, - 0xfe, 0xc0, 0x59, 0x0d, 0x0d, 0xcb, 0x76, 0xa8, 0xcf, 0x1f, 0x41, 0xca, 0x06, 0x8c, 0x3b, 0x50, - 0xb1, 0x1a, 0x7d, 0x0a, 0x0d, 0xc7, 0x0d, 0xc9, 0x88, 0x51, 0x8b, 0x30, 0xa6, 0x2a, 0xf0, 0x4a, - 0xdc, 0x62, 0xf4, 0x66, 0x8f, 0x31, 0xd4, 0x81, 0x25, 0x46, 0x46, 0x94, 0x85, 0xba, 0xcc, 0xae, - 0xcf, 0x74, 0x62, 0x45, 0xc5, 0x1a, 0x85, 0x9e, 0x42, 0x83, 0xf8, 0x3e, 0x97, 0x5a, 0xb5, 0xa4, - 0xc0, 0xde, 0x9f, 0xe9, 0x8c, 0x53, 0x08, 0xce, 0xe3, 0xd1, 0x1e, 0xb4, 0xd3, 0x87, 0x8d, 0x65, - 0x73, 0x5f, 0xd2, 0x37, 0x52, 0xf5, 0xe1, 0x42, 0xa8, 0x2a, 0xdb, 0x1e, 0x6b, 0x58, 0x3f, 0x41, - 0xe1, 0xb5, 0xb0, 0xb8, 0x81, 0xbe, 0x81, 0x55, 0x12, 0xc9, 0x73, 0x4b, 0x70, 0x46, 0x75, 0x1e, - 0x19, 0x33, 0x7a, 0x44, 0xf2, 0x1c, 0x73, 0x46, 0x95, 0x7b, 0x56, 0x88, 0x5e, 0xa1, 0x03, 0x40, - 0xaf, 0x22, 0xc2, 0x62, 0x25, 0xf8, 0xd8, 0x0a, 0xa9, 0x78, 0xed, 0xda, 0x54, 0xa7, 0xcc, 0xa3, - 0x92, 0x1e, 0x7f, 0x4e, 0x80, 0x47, 0xe3, 0xe3, 0x04, 0x86, 0xdb, 0xaf, 0x4a, 0x3b, 0xe8, 0x33, - 0x58, 0xf3, 0xc8, 0x1b, 0x2b, 0x20, 0x82, 0x30, 0x46, 0x99, 0x1b, 0x7a, 0x06, 0xda, 0xac, 0x3c, - 0xae, 0xe3, 0x96, 0x47, 0xde, 0x3c, 0x9f, 0xee, 0xa2, 0x1f, 0x60, 0x5d, 0x90, 0x0b, 0x2b, 0x37, - 0x15, 0xc4, 0x46, 0x18, 0xbb, 0x13, 0xe3, 0x8e, 0x3a, 0xfb, 0x57, 0x65, 0xfd, 0x31, 0xb9, 0x38, - 0xca, 0xc6, 0x81, 0xbe, 0x82, 0xe2, 0x3b, 0x62, 0x76, 0x13, 0x3d, 0x07, 0x34, 0xfb, 0xa4, 0x35, - 0xee, 0xce, 0x0f, 0x3e, 0x5d, 0xc1, 0x7b, 0x19, 0x10, 0xdf, 0xb6, 0xcb, 0x5b, 0xe8, 0x3b, 0x68, - 0xba, 0xbe, 0xa4, 0x42, 0x44, 0x81, 0x74, 0x47, 0x8c, 0x1a, 0x1f, 0x5d, 0x52, 0x4c, 0x77, 0x38, - 0x67, 0x67, 0xf1, 0x34, 0x89, 0x8b, 0x0c, 0x3b, 0x06, 0xac, 0xe7, 0xc3, 0xd1, 0x8a, 0x9f, 0x47, - 0xc2, 0x75, 0x68, 0xf8, 0xc7, 0xda, 0x4a, 0xad, 0x5d, 0x37, 0x3d, 0xb8, 0x97, 0xa5, 0xc1, 0x09, - 0x15, 0x9e, 0xeb, 0xe7, 0xde, 0x9c, 0x1f, 0x32, 0xf0, 0x67, 0x73, 0x6a, 0x35, 0x37, 0xa7, 0x9a, - 0x0f, 0x60, 0x63, 0xde, 0x71, 0xc9, 0x2b, 0xc8, 0xfc, 0x19, 0x1e, 0xcd, 0x7b, 0xc9, 0xc4, 0x26, - 0xbe, 0x89, 0xd7, 0xcc, 0xdf, 0xaa, 0xb0, 0x79, 0xb9, 0x7c, 0xfd, 0x12, 0xdb, 0x2e, 0x8f, 0xc5, - 0x1f, 0x97, 0x3d, 0x77, 0x2a, 0x58, 0x3a, 0x0f, 0x4f, 0xa7, 0xe1, 0xaf, 0x4a, 0x55, 0xea, 0x9d, - 0x5c, 0x69, 0x8d, 0x7a, 0x02, 0x8d, 0x71, 0xc4, 0xd8, 0x75, 0xc7, 0x4a, 0x0c, 0x31, 0x3a, 0x1b, - 0x27, 0x6f, 0x29, 0xde, 0x54, 0xd9, 0xda, 0x55, 0xcc, 0xea, 0xa8, 0x24, 0x66, 0x43, 0xf3, 0xef, - 0xf9, 0x1f, 0x0d, 0xa7, 0x6a, 0xfa, 0xba, 0x09, 0xa7, 0xff, 0x0e, 0xea, 0x6a, 0xe8, 0x51, 0x46, - 0x68, 0xcd, 0x76, 0xbe, 0xe2, 0xb8, 0x84, 0x13, 0xb0, 0xf9, 0xef, 0x0a, 0xdc, 0x7f, 0xc7, 0x20, - 0x35, 0x95, 0x5a, 0x79, 0x0f, 0xa9, 0xe8, 0xf7, 0xd0, 0xe0, 0xb6, 0x1d, 0x09, 0x91, 0x8c, 0x21, - 0xd5, 0x2b, 0xc7, 0x10, 0x48, 0xe1, 0x3d, 0x59, 0x1c, 0x7e, 0x16, 0xcb, 0xef, 0xa9, 0x7b, 0xb9, - 0x87, 0x7c, 0x6a, 0xbc, 0x24, 0x7c, 0x3e, 0xff, 0x16, 0x5a, 0x45, 0x75, 0xd0, 0x5d, 0x68, 0x0f, - 0x7e, 0x18, 0xf4, 0x4f, 0x4f, 0xf6, 0x8e, 0x0e, 0xad, 0x5e, 0xff, 0x64, 0xef, 0x6c, 0xd0, 0x5e, - 0x40, 0xeb, 0x80, 0x72, 0xbb, 0xb8, 0x3f, 0xdc, 0x3b, 0x8b, 0x1b, 0xfa, 0xce, 0xd7, 0x3f, 0x6d, - 0x4f, 0x5c, 0x79, 0x1e, 0x8d, 0x3a, 0x36, 0xf7, 0xba, 0xea, 0xa2, 0x5c, 0x4c, 0xba, 0xd9, 0x6f, - 0xa9, 0x09, 0xf5, 0xbb, 0xc1, 0xe8, 0xb7, 0x13, 0xde, 0x2d, 0xfe, 0x23, 0x1b, 0x2d, 0xa9, 0x1b, - 0x7d, 0xf5, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x57, 0x3e, 0x8c, 0x95, 0x13, 0x00, 0x00, + 0x71, 0x57, 0x3f, 0x4e, 0xd2, 0xc9, 0xa0, 0x4b, 0x60, 0x49, 0x21, 0x01, 0xb0, 0xf0, 0xee, 0xc2, + 0xb2, 0xdf, 0xa0, 0xd3, 0x27, 0xe8, 0x23, 0xf4, 0xaa, 0x97, 0xbd, 0xe8, 0x75, 0xdf, 0xa3, 0xaf, + 0xd2, 0xc1, 0x62, 0x01, 0x02, 0x20, 0x65, 0xc9, 0x63, 0xdd, 0x61, 0xf7, 0x7c, 0xe7, 0xec, 0xd9, + 0xf3, 0xbf, 0x80, 0x47, 0x63, 0xef, 0xad, 0xa4, 0xae, 0xe3, 0x75, 0x89, 0xe3, 0xbb, 0x41, 0x97, + 0xbe, 0xa1, 0x76, 0x24, 0x5d, 0x16, 0x74, 0x42, 0xce, 0x24, 0x43, 0xad, 0x94, 0xde, 0x51, 0xf4, + 0x8d, 0x4f, 0x4b, 0x78, 0xdb, 0x8b, 0x84, 0xa4, 0xdc, 0x22, 0x42, 0xb8, 0x93, 0xc0, 0xa7, 0x81, + 0x4c, 0x18, 0x37, 0x1e, 0x94, 0x81, 0xcc, 0xf7, 0x53, 0xa9, 0x1b, 0x0f, 0x33, 0xa2, 0xcd, 0x38, + 0xed, 0x7a, 0xae, 0xa4, 0x9c, 0x78, 0x42, 0x53, 0x3f, 0x2e, 0x52, 0x4b, 0x2a, 0x6d, 0x3c, 0x2a, + 0x92, 0x5d, 0x87, 0x06, 0xd2, 0x1d, 0xbb, 0x94, 0xcf, 0x17, 0x2e, 0xa8, 0x1d, 0x71, 0x57, 0xbe, + 0x4d, 0xb9, 0x27, 0x8c, 0x4d, 0x3c, 0xda, 0x55, 0xab, 0x51, 0x34, 0xee, 0x3a, 0x11, 0x27, 0x39, + 0xe9, 0x8f, 0xcb, 0x74, 0xe9, 0xfa, 0x54, 0x48, 0xe2, 0x87, 0x97, 0x09, 0xb8, 0xe0, 0x24, 0x0c, + 0x29, 0xd7, 0xda, 0x9b, 0xff, 0xad, 0xc0, 0xfa, 0x20, 0x55, 0xb9, 0xcf, 0x29, 0x91, 0x14, 0xd3, + 0x57, 0x11, 0x15, 0x12, 0x19, 0xb0, 0x1c, 0x72, 0xf6, 0x33, 0xb5, 0xa5, 0x51, 0xd9, 0xac, 0x3c, + 0x59, 0xc5, 0xe9, 0x12, 0xad, 0xc3, 0x92, 0xc3, 0x7c, 0xe2, 0x06, 0x46, 0x55, 0x11, 0xf4, 0x0a, + 0x21, 0xa8, 0x05, 0xc4, 0xa7, 0xc6, 0xa2, 0xda, 0x55, 0xdf, 0xe8, 0x0b, 0xa8, 0x89, 0x90, 0xda, + 0x46, 0x6d, 0xb3, 0xf2, 0xa4, 0xb1, 0xf5, 0x71, 0xa7, 0xe8, 0xa1, 0x4e, 0x76, 0xf6, 0x71, 0x48, + 0x6d, 0xac, 0xa0, 0xe8, 0x0b, 0x58, 0x72, 0x83, 0x30, 0x92, 0xc2, 0xa8, 0x2b, 0xa6, 0xfb, 0x53, + 0xa6, 0xd8, 0x46, 0x9d, 0xfd, 0xc4, 0x01, 0x07, 0x24, 0xc4, 0x1a, 0x68, 0xfe, 0x0c, 0x46, 0x26, + 0x09, 0x53, 0x8f, 0x44, 0x81, 0x7d, 0x9e, 0xde, 0xe3, 0x29, 0x54, 0x5d, 0x47, 0x5d, 0xa1, 0xb1, + 0xf5, 0x59, 0x49, 0xd4, 0x4b, 0xc6, 0x7f, 0x19, 0x7b, 0xec, 0x22, 0x63, 0xde, 0xcb, 0xfc, 0x83, + 0xab, 0xae, 0x33, 0xef, 0x46, 0xe6, 0x3f, 0x2b, 0x70, 0x2f, 0x77, 0x98, 0xcd, 0x5e, 0x53, 0x7e, + 0x93, 0x67, 0x55, 0x73, 0xd6, 0x7b, 0x06, 0x2b, 0x3e, 0x95, 0xc4, 0x21, 0x92, 0x28, 0x1d, 0x1a, + 0x5b, 0x9f, 0x5c, 0x6a, 0xc1, 0x03, 0x0d, 0xc4, 0x19, 0x8b, 0x79, 0x9a, 0xd3, 0x34, 0x75, 0xae, + 0x08, 0x59, 0x20, 0xe8, 0x87, 0x68, 0x6a, 0xfe, 0x00, 0x0f, 0x66, 0x20, 0xdf, 0x51, 0x79, 0x03, + 0x46, 0x30, 0xff, 0x5d, 0x81, 0xd5, 0x8c, 0xf6, 0x41, 0xe6, 0x4c, 0x03, 0xaf, 0x7a, 0xfd, 0xc0, + 0x7b, 0x0a, 0xcb, 0xb6, 0xc7, 0x44, 0xc4, 0xa9, 0x36, 0xf6, 0xe6, 0xa5, 0x5c, 0xfd, 0x04, 0x87, + 0x53, 0x06, 0xf3, 0xaf, 0xd0, 0xcc, 0x88, 0xfb, 0xae, 0x90, 0xe8, 0x6b, 0x80, 0xac, 0x16, 0x08, + 0xa3, 0xb2, 0xb9, 0x58, 0x8c, 0xe4, 0x92, 0x3c, 0x9c, 0x03, 0xa3, 0xbb, 0x50, 0x97, 0xec, 0x17, + 0x9a, 0xa6, 0x57, 0xb2, 0x30, 0x29, 0xb4, 0xa6, 0x91, 0xbf, 0xe3, 0xb1, 0x11, 0xfa, 0x0a, 0x96, + 0x5e, 0x13, 0x2f, 0xa2, 0x42, 0x9b, 0xe8, 0xf2, 0x44, 0xd9, 0xa9, 0x1a, 0x95, 0xe1, 0x02, 0xd6, + 0x70, 0x84, 0x60, 0x31, 0xe2, 0x6e, 0x22, 0x7e, 0xb8, 0x80, 0xe3, 0xc5, 0xce, 0x12, 0xd4, 0x54, + 0xcc, 0xf4, 0xa1, 0xd9, 0x1b, 0x31, 0x2e, 0xd3, 0x70, 0x8a, 0xb5, 0xb1, 0x49, 0x24, 0xa8, 0xae, + 0x02, 0xc9, 0x02, 0x3d, 0x84, 0xd5, 0x90, 0xbb, 0x81, 0xed, 0x86, 0xc4, 0xd3, 0x7a, 0x4e, 0x37, + 0xcc, 0x7f, 0x2c, 0x43, 0xbb, 0x6c, 0x2b, 0xf4, 0x0d, 0x2c, 0xb3, 0x48, 0xaa, 0xc4, 0x4e, 0xf4, + 0x7d, 0x54, 0x36, 0x47, 0xf1, 0x7e, 0x5a, 0xe9, 0x94, 0x09, 0x6d, 0x43, 0x9d, 0x72, 0xce, 0xf8, + 0xac, 0x4b, 0xd5, 0x6d, 0xb3, 0xf3, 0x06, 0x31, 0x68, 0xb8, 0x80, 0x13, 0x34, 0xfa, 0x35, 0x34, + 0x48, 0x7c, 0x21, 0x2b, 0xb9, 0x05, 0xc4, 0xba, 0x6a, 0xd1, 0xa0, 0x08, 0x7d, 0x75, 0xa1, 0xe7, + 0xd0, 0x4a, 0x60, 0x59, 0xc2, 0xdd, 0x9a, 0x1f, 0x39, 0x05, 0xeb, 0x0c, 0x17, 0x70, 0x93, 0x14, + 0xcc, 0xf5, 0x2d, 0x34, 0x12, 0x85, 0x2d, 0x25, 0xa4, 0x79, 0x3d, 0xcf, 0x40, 0xc2, 0xb3, 0x1b, + 0x4b, 0x78, 0x0e, 0x6b, 0x36, 0xf3, 0xc3, 0x48, 0x52, 0xc7, 0xd2, 0x85, 0x70, 0xf1, 0x1a, 0x52, + 0x70, 0x2b, 0xe5, 0xda, 0x53, 0x4c, 0xe8, 0x0f, 0x50, 0x0f, 0xcf, 0x89, 0xa0, 0xaa, 0xf6, 0xb6, + 0xb6, 0x7e, 0x73, 0x55, 0x02, 0x75, 0x5e, 0xc4, 0x68, 0x9c, 0x30, 0xc5, 0xf1, 0x2b, 0x24, 0xe1, + 0xb1, 0x12, 0x44, 0xea, 0x4a, 0xbc, 0xd1, 0x49, 0xda, 0x49, 0x27, 0x6d, 0x27, 0x9d, 0x93, 0xb4, + 0xdf, 0xe0, 0x55, 0x8d, 0xee, 0x49, 0xb4, 0x0d, 0x2b, 0x69, 0x9f, 0x32, 0x96, 0xb4, 0xe6, 0x65, + 0xc6, 0x5d, 0x0d, 0xc0, 0x19, 0x34, 0x3e, 0xd1, 0x56, 0x45, 0x4a, 0x9d, 0xb8, 0x7c, 0xf5, 0x89, + 0x1a, 0xdd, 0x53, 0xc9, 0x16, 0x85, 0x4e, 0xca, 0xba, 0x72, 0x35, 0xab, 0x46, 0xf7, 0x24, 0xda, + 0x81, 0x66, 0xc0, 0xe2, 0xba, 0x61, 0x93, 0x24, 0x55, 0x57, 0x55, 0xaa, 0x3e, 0x2c, 0xbb, 0xfd, + 0x30, 0x07, 0xc2, 0x45, 0x16, 0xf4, 0x14, 0x1a, 0x17, 0xda, 0x9a, 0x96, 0xeb, 0x18, 0x8d, 0xb9, + 0xde, 0xca, 0xd5, 0x27, 0x48, 0xd1, 0x7b, 0x0e, 0xfa, 0x09, 0xee, 0x0a, 0x49, 0x24, 0xb5, 0xec, + 0x73, 0x12, 0x4c, 0xa8, 0xe5, 0x50, 0x49, 0x5c, 0x4f, 0x18, 0x2d, 0x25, 0xe4, 0xf3, 0xcb, 0xeb, + 0x56, 0xcc, 0xd4, 0x57, 0x3c, 0xbb, 0x09, 0x0b, 0x46, 0x62, 0x66, 0x6f, 0x67, 0x0d, 0x9a, 0x3a, + 0x1c, 0x39, 0x15, 0x91, 0x27, 0xcd, 0x67, 0xd0, 0x3a, 0x7e, 0x2b, 0x24, 0xf5, 0xb3, 0x88, 0xfd, + 0x1c, 0x6e, 0x67, 0xc5, 0xc7, 0xd2, 0x23, 0x92, 0x4e, 0xf6, 0x36, 0x9d, 0x26, 0xb1, 0xda, 0x37, + 0xff, 0x53, 0x83, 0xdb, 0x33, 0x2d, 0x07, 0xf5, 0xa1, 0xe6, 0x33, 0x27, 0x29, 0x11, 0xad, 0xad, + 0xee, 0x95, 0x3d, 0x2a, 0xb7, 0xc3, 0x1c, 0x8a, 0x15, 0xf3, 0xbb, 0x4b, 0x4a, 0x3c, 0x8e, 0x04, + 0x54, 0x48, 0x37, 0x98, 0xa8, 0x6c, 0x68, 0xe2, 0x74, 0x89, 0x9e, 0xc1, 0x2d, 0x61, 0x9f, 0x53, + 0x27, 0xf2, 0x12, 0xf7, 0xd7, 0xae, 0x74, 0x7f, 0x23, 0xc3, 0xf7, 0x24, 0xfa, 0x11, 0x3e, 0x0a, + 0x09, 0xa7, 0x81, 0xb4, 0x02, 0xe6, 0x50, 0x2b, 0xbb, 0xb1, 0x8e, 0xf9, 0x72, 0xda, 0x1c, 0x32, + 0x87, 0xce, 0xeb, 0x39, 0x77, 0x12, 0x21, 0x05, 0x32, 0xfa, 0x0b, 0xdc, 0xe1, 0x74, 0x4c, 0x39, + 0x0d, 0xec, 0xbc, 0xe4, 0xf6, 0x7b, 0x77, 0x34, 0x94, 0x89, 0x99, 0x0a, 0xff, 0x0e, 0xd6, 0x84, + 0xf2, 0xe4, 0xb4, 0x64, 0xdd, 0x9e, 0x5f, 0x57, 0x8b, 0x0e, 0xc7, 0x2d, 0x51, 0x58, 0x9b, 0x93, + 0x5c, 0xef, 0x8a, 0xfd, 0x81, 0x00, 0x96, 0x0e, 0x7a, 0x87, 0xa7, 0xbd, 0xfd, 0xf6, 0x02, 0x6a, + 0xc2, 0xea, 0x71, 0x7f, 0x38, 0xd8, 0x3d, 0xdd, 0x1f, 0xec, 0xb6, 0x2b, 0x31, 0xe9, 0xf8, 0x87, + 0xe3, 0x93, 0xc1, 0x41, 0xbb, 0x8a, 0x6e, 0xc1, 0x0a, 0x1e, 0xec, 0xf7, 0x4e, 0x0f, 0xfb, 0xc3, + 0xf6, 0x22, 0x42, 0xd0, 0xea, 0x0f, 0xf7, 0xf6, 0x77, 0xad, 0x97, 0x47, 0xf8, 0x4f, 0xcf, 0xf7, + 0x8f, 0x5e, 0xb6, 0x6b, 0x31, 0x33, 0x1e, 0xf4, 0x8f, 0xce, 0x06, 0x78, 0xb0, 0xdb, 0xae, 0x9b, + 0x67, 0xd0, 0xce, 0xa7, 0x91, 0xea, 0x93, 0x33, 0xf9, 0x57, 0x79, 0xef, 0xfc, 0x33, 0xff, 0xb7, + 0x9c, 0xbb, 0xc1, 0x71, 0xd2, 0xca, 0x1b, 0xc9, 0x14, 0x68, 0x85, 0x1e, 0x09, 0x2e, 0xe9, 0x8f, + 0xf9, 0x8c, 0x4c, 0xd0, 0x2f, 0x3c, 0x12, 0xa0, 0xed, 0x6c, 0xfe, 0xac, 0x5e, 0xa7, 0xec, 0x6a, + 0xf0, 0x07, 0xce, 0x6a, 0x68, 0x58, 0xb6, 0x43, 0x7d, 0xfe, 0x08, 0x52, 0x36, 0x60, 0xdc, 0x81, + 0x8a, 0xd5, 0xe8, 0x13, 0x68, 0x38, 0xae, 0x20, 0x23, 0x8f, 0x5a, 0xc4, 0xf3, 0x54, 0x05, 0x5e, + 0x89, 0x5b, 0x8c, 0xde, 0xec, 0x79, 0x1e, 0xea, 0xc0, 0x92, 0x47, 0x46, 0xd4, 0x13, 0xba, 0xcc, + 0xae, 0xcf, 0x74, 0x62, 0x45, 0xc5, 0x1a, 0x85, 0x9e, 0x41, 0x83, 0x04, 0x01, 0x93, 0x5a, 0xb5, + 0xa4, 0xc0, 0x3e, 0x98, 0xe9, 0x8c, 0x53, 0x08, 0xce, 0xe3, 0xd1, 0x1e, 0xb4, 0xd3, 0x87, 0x8d, + 0x65, 0xb3, 0x40, 0xd2, 0x37, 0x52, 0xf5, 0xe1, 0x42, 0xa8, 0x2a, 0xdb, 0x1e, 0x6b, 0x58, 0x3f, + 0x41, 0xe1, 0x35, 0x51, 0xdc, 0x40, 0x5f, 0xc3, 0x2a, 0x89, 0xe4, 0xb9, 0xc5, 0x99, 0x47, 0x75, + 0x1e, 0x19, 0x33, 0x7a, 0x44, 0xf2, 0x1c, 0x33, 0x8f, 0x2a, 0xf7, 0xac, 0x10, 0xbd, 0x42, 0x07, + 0x80, 0x5e, 0x45, 0xc4, 0x8b, 0x95, 0x60, 0x63, 0x4b, 0x50, 0xfe, 0xda, 0xb5, 0xa9, 0x4e, 0x99, + 0xc7, 0x25, 0x3d, 0xfe, 0x9c, 0x00, 0x8f, 0xc6, 0xc7, 0x09, 0x0c, 0xb7, 0x5f, 0x95, 0x76, 0xd0, + 0xa7, 0xb0, 0xe6, 0x93, 0x37, 0x56, 0x48, 0x38, 0xf1, 0x3c, 0xea, 0xb9, 0xc2, 0x37, 0xd0, 0x66, + 0xe5, 0x49, 0x1d, 0xb7, 0x7c, 0xf2, 0xe6, 0xc5, 0x74, 0x17, 0x7d, 0x0f, 0xeb, 0x9c, 0x5c, 0x58, + 0xb9, 0xa9, 0x20, 0x36, 0xc2, 0xd8, 0x9d, 0x18, 0x77, 0xd4, 0xd9, 0xbf, 0x2a, 0xeb, 0x8f, 0xc9, + 0xc5, 0x51, 0x36, 0x0e, 0xf4, 0x15, 0x14, 0xdf, 0xe1, 0xb3, 0x9b, 0xe8, 0x05, 0xa0, 0xd9, 0x27, + 0xad, 0x71, 0x77, 0x7e, 0xf0, 0xe9, 0x0a, 0xde, 0xcb, 0x80, 0xf8, 0xb6, 0x5d, 0xde, 0x42, 0xdf, + 0x42, 0xd3, 0x0d, 0x24, 0xe5, 0x3c, 0x0a, 0xa5, 0x3b, 0xf2, 0xa8, 0xf1, 0xd1, 0x25, 0xc5, 0x74, + 0x87, 0x31, 0xef, 0x2c, 0x9e, 0x26, 0x71, 0x91, 0x01, 0x6d, 0x42, 0xc3, 0xa1, 0xc2, 0xe6, 0x6e, + 0xa8, 0x4a, 0xdd, 0xba, 0xaa, 0xe3, 0xf9, 0xad, 0xf8, 0xa1, 0x23, 0xc9, 0x44, 0x18, 0xf7, 0x36, + 0x17, 0xe3, 0x87, 0x4e, 0xfc, 0xbd, 0x63, 0xc0, 0x7a, 0x3e, 0x88, 0xad, 0xf8, 0x51, 0xc5, 0x5d, + 0x87, 0x8a, 0x3f, 0xd6, 0x56, 0x6a, 0xed, 0xba, 0xe9, 0xc3, 0xfd, 0x2c, 0x79, 0x4e, 0x28, 0xf7, + 0xdd, 0x20, 0xf7, 0x52, 0xfd, 0x90, 0x67, 0x42, 0x36, 0xdd, 0x56, 0x73, 0xd3, 0xad, 0xf9, 0x10, + 0x36, 0xe6, 0x1d, 0x97, 0xbc, 0x9d, 0xcc, 0x9f, 0xe0, 0xf1, 0xbc, 0xf7, 0x4f, 0xec, 0x98, 0x9b, + 0x78, 0x03, 0xfd, 0xad, 0x0a, 0x9b, 0x97, 0xcb, 0xd7, 0xef, 0xb7, 0xed, 0xf2, 0x30, 0x7d, 0xaf, + 0xec, 0xef, 0x53, 0xee, 0xa5, 0x53, 0xf4, 0x74, 0x86, 0xfe, 0xb2, 0x54, 0xdb, 0xde, 0xc9, 0x95, + 0x56, 0xb6, 0xa7, 0xd0, 0x18, 0x47, 0x9e, 0x77, 0xdd, 0x61, 0x14, 0x43, 0x8c, 0xce, 0x86, 0xd0, + 0x5b, 0x8a, 0x37, 0x55, 0xb6, 0x76, 0x15, 0xb3, 0x3a, 0x2a, 0x89, 0x74, 0x61, 0xfe, 0x3d, 0xff, + 0x7b, 0xe2, 0x54, 0xcd, 0x6c, 0x37, 0xe1, 0xf4, 0xdf, 0x41, 0x5d, 0x8d, 0x4a, 0xca, 0x08, 0xad, + 0xd9, 0x7e, 0x59, 0x1c, 0xb2, 0x70, 0x02, 0x36, 0xff, 0x55, 0x81, 0x07, 0xef, 0x18, 0xbf, 0xa6, + 0x52, 0x2b, 0xef, 0x21, 0x15, 0xfd, 0x1e, 0x1a, 0xcc, 0xb6, 0x23, 0xce, 0x93, 0xe1, 0xa5, 0x7a, + 0xe5, 0xf0, 0x02, 0x29, 0xbc, 0x27, 0x8b, 0x23, 0xd3, 0x62, 0xf9, 0x15, 0x76, 0x3f, 0xf7, 0xfc, + 0x4f, 0x8d, 0x97, 0x84, 0xcf, 0x67, 0xdf, 0x40, 0xab, 0xa8, 0x0e, 0xba, 0x0b, 0xed, 0xc1, 0xf7, + 0x83, 0xfe, 0xe9, 0xc9, 0xde, 0xd1, 0xa1, 0xd5, 0xeb, 0x9f, 0xec, 0x9d, 0x0d, 0xda, 0x0b, 0x68, + 0x1d, 0x50, 0x6e, 0x17, 0xf7, 0x87, 0x7b, 0x67, 0xf1, 0x18, 0xb0, 0xf3, 0xd5, 0x8f, 0xdb, 0x13, + 0x57, 0x9e, 0x47, 0xa3, 0x8e, 0xcd, 0xfc, 0xae, 0xba, 0x28, 0xe3, 0x93, 0x6e, 0xf6, 0x33, 0x6b, + 0x42, 0x83, 0x6e, 0x38, 0xfa, 0xed, 0x84, 0x75, 0x8b, 0x7f, 0xd6, 0x46, 0x4b, 0xea, 0x46, 0x5f, + 0xfe, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x62, 0xc7, 0xe5, 0x53, 0xcb, 0x13, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/execution.pb.validate.go b/gen/pb-go/flyteidl/admin/execution.pb.validate.go index 1a14dceb8..6fccfb04e 100644 --- a/gen/pb-go/flyteidl/admin/execution.pb.validate.go +++ b/gen/pb-go/flyteidl/admin/execution.pb.validate.go @@ -1372,6 +1372,8 @@ func (m *ExecutionSpec) Validate() error { } } + // no validation rules for Description + switch m.NotificationOverrides.(type) { case *ExecutionSpec_Notifications: diff --git a/gen/pb-go/flyteidl/admin/launch_plan.pb.go b/gen/pb-go/flyteidl/admin/launch_plan.pb.go index 971c7dacd..877c03be9 100644 --- a/gen/pb-go/flyteidl/admin/launch_plan.pb.go +++ b/gen/pb-go/flyteidl/admin/launch_plan.pb.go @@ -338,10 +338,12 @@ type LaunchPlanSpec struct { // Omitting this field uses the workflow's value as a default. // As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper // around the bool field. - Interruptible *wrappers.BoolValue `protobuf:"bytes,19,opt,name=interruptible,proto3" json:"interruptible,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Interruptible *wrappers.BoolValue `protobuf:"bytes,19,opt,name=interruptible,proto3" json:"interruptible,omitempty"` + // EntityDescription encapsulates all the detailed documentation for the launch plan. + EntityDescription *EntityDescription `protobuf:"bytes,20,opt,name=entity_description,json=entityDescription,proto3" json:"entity_description,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *LaunchPlanSpec) Reset() { *m = LaunchPlanSpec{} } @@ -470,6 +472,13 @@ func (m *LaunchPlanSpec) GetInterruptible() *wrappers.BoolValue { return nil } +func (m *LaunchPlanSpec) GetEntityDescription() *EntityDescription { + if m != nil { + return m.EntityDescription + } + return nil +} + // Values computed by the flyte platform after launch plan registration. // These include expected_inputs required to be present in a CreateExecutionRequest // to launch the reference workflow as well timestamp values associated with the launch plan. @@ -830,75 +839,77 @@ func init() { func init() { proto.RegisterFile("flyteidl/admin/launch_plan.proto", fileDescriptor_368a863574f5e699) } var fileDescriptor_368a863574f5e699 = []byte{ - // 1109 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xef, 0x6e, 0x1b, 0x45, - 0x10, 0xc7, 0xae, 0xe3, 0x24, 0xe3, 0xc6, 0x71, 0xb7, 0x55, 0x7a, 0xb8, 0xa5, 0x0d, 0x46, 0x88, - 0x02, 0xad, 0x2d, 0x15, 0x2a, 0xd4, 0xd2, 0x4a, 0xd8, 0x69, 0x3f, 0x58, 0xf4, 0x4f, 0xd8, 0x94, - 0x0a, 0xf1, 0xe5, 0xb4, 0xbe, 0x1b, 0xdb, 0x4b, 0xf7, 0x6e, 0xaf, 0xbb, 0x7b, 0x8d, 0x23, 0xde, - 0x81, 0xe7, 0x40, 0xbc, 0x0b, 0x2f, 0xc2, 0x53, 0xa0, 0xdb, 0xdb, 0xf3, 0x9f, 0xbb, 0x46, 0x05, - 0x24, 0x3e, 0x25, 0xb3, 0xf3, 0xfb, 0xcd, 0xce, 0xcc, 0xcd, 0xfe, 0xc6, 0x70, 0x38, 0x15, 0x67, - 0x06, 0x79, 0x28, 0x06, 0x2c, 0x8c, 0x78, 0x3c, 0x10, 0x2c, 0x8d, 0x83, 0xb9, 0x9f, 0x08, 0x16, - 0xf7, 0x13, 0x25, 0x8d, 0x24, 0xed, 0x02, 0xd1, 0xb7, 0x88, 0xee, 0x47, 0x4b, 0x46, 0x20, 0x15, - 0x0e, 0x70, 0x81, 0x41, 0x6a, 0xb8, 0x74, 0xf0, 0xee, 0xf5, 0x4d, 0xb7, 0xe0, 0x06, 0x15, 0x13, - 0xda, 0x79, 0x6f, 0x6c, 0x7a, 0x79, 0x88, 0xb1, 0xe1, 0x53, 0x8e, 0xca, 0xf9, 0x4b, 0xc1, 0x79, - 0x6c, 0x50, 0x4d, 0x59, 0x80, 0xef, 0x0e, 0xae, 0x31, 0x48, 0x15, 0x37, 0x67, 0x15, 0x72, 0x5e, - 0x8b, 0x0e, 0xe6, 0x18, 0xa6, 0xa2, 0x20, 0x5f, 0x2b, 0xb9, 0x03, 0x19, 0x45, 0xcb, 0xb4, 0x6f, - 0xce, 0xa4, 0x9c, 0x09, 0x1c, 0x58, 0x6b, 0x92, 0x4e, 0x07, 0x86, 0x47, 0xa8, 0x0d, 0x8b, 0x92, - 0x22, 0xf3, 0x32, 0xe0, 0x54, 0xb1, 0x24, 0x41, 0xe5, 0x2a, 0xeb, 0x2d, 0xe0, 0xea, 0x53, 0xdb, - 0xbb, 0x63, 0xc1, 0xe2, 0x23, 0x85, 0xcc, 0x20, 0xc5, 0x37, 0x29, 0x6a, 0x43, 0x3e, 0x87, 0x3a, - 0x0f, 0xbd, 0xda, 0x61, 0xed, 0x56, 0xeb, 0xee, 0x87, 0xfd, 0x65, 0x3b, 0xb3, 0x12, 0xfa, 0xe3, - 0x65, 0x07, 0x68, 0x9d, 0x87, 0xe4, 0x2e, 0x34, 0x74, 0x82, 0x81, 0x57, 0xb7, 0xe0, 0x1b, 0xfd, - 0xcd, 0xde, 0xf7, 0x57, 0x37, 0x9c, 0x24, 0x18, 0x50, 0x8b, 0xed, 0x75, 0xc1, 0xab, 0xde, 0xac, - 0x13, 0x19, 0x6b, 0xec, 0xfd, 0x5e, 0x03, 0x58, 0x39, 0xff, 0xe7, 0x4c, 0xc8, 0xb7, 0xb0, 0x1d, - 0x08, 0xa9, 0x53, 0x85, 0xde, 0x05, 0x4b, 0xfb, 0xf8, 0x7c, 0xda, 0x51, 0x0e, 0xa4, 0x05, 0xa3, - 0x87, 0xd0, 0x5e, 0x79, 0x9f, 0x72, 0x6d, 0xc8, 0x23, 0xb8, 0xb8, 0x36, 0x8e, 0xda, 0xab, 0x1d, - 0x5e, 0xb8, 0xd5, 0xba, 0xdb, 0x3d, 0x3f, 0x26, 0x6d, 0x89, 0xe5, 0xff, 0x9a, 0x5c, 0x81, 0x2d, - 0x23, 0x5f, 0x63, 0x6c, 0x4b, 0xd8, 0xa5, 0xb9, 0xd1, 0x7b, 0x0b, 0x8d, 0x61, 0x6a, 0xe6, 0xe4, - 0x36, 0x10, 0xa6, 0x75, 0x1a, 0xb1, 0x89, 0x40, 0x9f, 0xb3, 0xc8, 0x57, 0x52, 0xa0, 0x6d, 0xcd, - 0x2e, 0xed, 0x2c, 0x3d, 0x63, 0x16, 0x51, 0x29, 0x90, 0x3c, 0x84, 0xee, 0xeb, 0x74, 0x82, 0x2a, - 0x46, 0x83, 0xda, 0xd7, 0xa8, 0xde, 0xf2, 0x00, 0x7d, 0x16, 0x04, 0x32, 0x8d, 0x8d, 0xbb, 0xc0, - 0x5b, 0x21, 0x4e, 0x72, 0xc0, 0x30, 0xf7, 0x3f, 0xa8, 0x7b, 0xb5, 0xde, 0x5f, 0xcd, 0xf5, 0xfa, - 0xb2, 0xa6, 0x91, 0x07, 0xd0, 0x3a, 0x95, 0xea, 0xf5, 0x54, 0xc8, 0x53, 0xff, 0x9f, 0x7c, 0x16, - 0x28, 0xd0, 0xe3, 0x90, 0x7c, 0x0f, 0xfb, 0xd9, 0xb9, 0x39, 0xf3, 0x23, 0x34, 0x2c, 0x64, 0x86, - 0xb9, 0x2f, 0xd5, 0x3b, 0xbf, 0x3d, 0xcf, 0x1c, 0x92, 0xb6, 0x73, 0x6a, 0x61, 0x93, 0x11, 0xb4, - 0x43, 0x9c, 0xb2, 0x54, 0x18, 0x9f, 0xc7, 0x49, 0x6a, 0xb4, 0xfb, 0x7c, 0xd7, 0x4a, 0xb9, 0x1c, - 0x33, 0xc5, 0x22, 0x34, 0xa8, 0x9e, 0xb1, 0x84, 0xee, 0x39, 0xca, 0xd8, 0x32, 0xc8, 0x43, 0xb8, - 0x38, 0xe5, 0x0b, 0x0c, 0x8b, 0x08, 0x8d, 0x77, 0x56, 0xf3, 0x34, 0x97, 0x83, 0x8c, 0xdf, 0xb2, - 0x70, 0xc7, 0x3e, 0x80, 0x86, 0xed, 0xff, 0x56, 0xd6, 0xc9, 0x51, 0xdd, 0xab, 0x51, 0x6b, 0x93, - 0x3e, 0x34, 0x05, 0x9b, 0xa0, 0xd0, 0x5e, 0xd3, 0xc6, 0x3b, 0xa8, 0x56, 0x97, 0x79, 0xa9, 0x43, - 0x91, 0x47, 0xd0, 0x62, 0x71, 0x2c, 0x0d, 0xcb, 0x14, 0x49, 0x7b, 0xdb, 0xe5, 0x32, 0x72, 0xd2, - 0x70, 0x05, 0xa1, 0xeb, 0x78, 0x72, 0x1b, 0x1a, 0x2c, 0x35, 0x73, 0x6f, 0xc7, 0xf2, 0xae, 0x54, - 0x78, 0xa9, 0x99, 0xe7, 0xc9, 0x65, 0x28, 0x72, 0x1f, 0x76, 0xb3, 0xbf, 0xf9, 0xe4, 0xec, 0x5a, - 0x8a, 0xf7, 0x2e, 0x4a, 0x36, 0x41, 0x96, 0xb6, 0xc3, 0x9c, 0x45, 0xc6, 0xd0, 0x29, 0xc4, 0xcb, - 0x0f, 0x64, 0x6c, 0x70, 0x61, 0x3c, 0x28, 0xbf, 0x34, 0xdb, 0xb1, 0x13, 0x07, 0x3b, 0xca, 0x51, - 0x74, 0x5f, 0x6f, 0x1e, 0x90, 0x67, 0x40, 0xde, 0xa4, 0x4c, 0x64, 0x91, 0xe4, 0xb4, 0x18, 0x4d, - 0xaf, 0x63, 0x83, 0xdd, 0x2c, 0x05, 0xfb, 0x21, 0x07, 0xbe, 0x98, 0xba, 0x01, 0xa5, 0x9d, 0x37, - 0xa5, 0x13, 0xf2, 0x13, 0x1c, 0x28, 0x76, 0xea, 0xcb, 0xd4, 0x24, 0xa9, 0xf1, 0xb3, 0xf1, 0xc8, - 0x12, 0x9c, 0xf2, 0x99, 0x77, 0xc9, 0x86, 0xfc, 0xa4, 0x5c, 0x21, 0x65, 0xa7, 0x2f, 0x2c, 0xf8, - 0x31, 0x33, 0xec, 0xc8, 0x42, 0xe9, 0x65, 0x55, 0x3d, 0x24, 0x9f, 0xc1, 0x7e, 0xc4, 0x16, 0x7e, - 0xc2, 0x14, 0x13, 0x02, 0x05, 0xd7, 0x91, 0x47, 0x0e, 0x6b, 0xb7, 0xb6, 0x68, 0x3b, 0x62, 0x8b, - 0xe3, 0xd5, 0x29, 0xf9, 0x0e, 0xf6, 0xac, 0xf0, 0xab, 0x34, 0x31, 0x7c, 0x22, 0xd0, 0xbb, 0x6c, - 0x6f, 0xee, 0xf6, 0x73, 0x09, 0xee, 0x17, 0x12, 0xdc, 0x1f, 0x49, 0x29, 0x5e, 0x31, 0x91, 0x22, - 0xdd, 0x24, 0xf4, 0xfe, 0xac, 0xc3, 0xa5, 0x8a, 0xd4, 0x90, 0x7b, 0xb0, 0xa5, 0x0d, 0x33, 0xf9, - 0x2b, 0x6f, 0xaf, 0x37, 0xa7, 0xa2, 0x69, 0x19, 0x8c, 0xe6, 0x68, 0xf2, 0x18, 0xf6, 0x71, 0x91, - 0x60, 0x60, 0x56, 0xc3, 0x5d, 0x7f, 0xff, 0xf3, 0x68, 0x17, 0x1c, 0x37, 0xe1, 0x4f, 0xa0, 0xb3, - 0x8c, 0x92, 0x37, 0xb7, 0x78, 0x65, 0xdd, 0x52, 0x98, 0x57, 0x4c, 0xf1, 0x4c, 0x7b, 0xb2, 0x28, - 0xcb, 0x9b, 0xf3, 0x6e, 0x6a, 0x72, 0x1f, 0x20, 0xb0, 0x12, 0x1f, 0xfa, 0xcc, 0xb8, 0x47, 0x56, - 0x6d, 0xcc, 0xcb, 0x62, 0x79, 0xd1, 0x5d, 0x87, 0x1e, 0x9a, 0x8c, 0x9a, 0x26, 0x61, 0x41, 0xdd, - 0x7a, 0x3f, 0xd5, 0xa1, 0x87, 0xa6, 0xf7, 0x5b, 0x0d, 0x48, 0x55, 0x47, 0xc8, 0xd7, 0xb0, 0x53, - 0xec, 0x58, 0xa7, 0x5e, 0x95, 0xf9, 0x3f, 0x71, 0x7e, 0xba, 0x44, 0x92, 0x11, 0xec, 0xc5, 0x32, - 0x93, 0xb4, 0xc0, 0xbd, 0xd2, 0xba, 0xd5, 0xf5, 0xeb, 0x65, 0xea, 0xf3, 0x35, 0x10, 0xdd, 0xa4, - 0xf4, 0x7e, 0x5d, 0xdf, 0xb6, 0x3f, 0xda, 0x3c, 0xff, 0xc3, 0xb6, 0x5d, 0x0e, 0x44, 0xfd, 0xdf, - 0x0c, 0xc4, 0xe6, 0xc2, 0x2d, 0x2e, 0x77, 0x0b, 0xf7, 0x18, 0xae, 0x0e, 0x03, 0xc3, 0xdf, 0xe2, - 0xda, 0x56, 0x72, 0x89, 0xdd, 0x5b, 0x4b, 0xec, 0xd3, 0x4a, 0xb1, 0x2c, 0xc2, 0xf0, 0x89, 0x95, - 0xe5, 0xcd, 0x24, 0x7b, 0x7f, 0xd4, 0xe0, 0x5a, 0x39, 0x64, 0xb6, 0x1e, 0x8b, 0xb0, 0x1e, 0x6c, - 0x27, 0x4a, 0xfe, 0x82, 0x81, 0x71, 0xdb, 0xab, 0x30, 0xc9, 0x01, 0x34, 0x43, 0x19, 0x31, 0x5e, - 0x6c, 0x40, 0x67, 0x65, 0x8b, 0x51, 0xf0, 0x88, 0x1b, 0x3b, 0x7f, 0x7b, 0x34, 0x37, 0x56, 0xeb, - 0xb2, 0xb1, 0xb6, 0x2e, 0xc9, 0x1d, 0xd8, 0xd6, 0x52, 0x19, 0x7f, 0x72, 0xe6, 0x26, 0xa6, 0x22, - 0x8a, 0x27, 0x52, 0x19, 0xda, 0xcc, 0x40, 0xa3, 0xb3, 0x2f, 0xbe, 0x84, 0xfd, 0x52, 0xd3, 0xc8, - 0x45, 0xd8, 0x19, 0x3f, 0x1f, 0x1e, 0xbd, 0x1c, 0xbf, 0x7a, 0xd2, 0xf9, 0x80, 0x00, 0x34, 0xdd, - 0xff, 0xb5, 0xd1, 0x37, 0x3f, 0xdf, 0x9b, 0x71, 0x33, 0x4f, 0x27, 0xfd, 0x40, 0x46, 0x03, 0x1b, - 0x56, 0xaa, 0xd9, 0x60, 0xf9, 0x33, 0x6d, 0x86, 0xf1, 0x20, 0x99, 0xdc, 0x99, 0xc9, 0xc1, 0xe6, - 0x2f, 0xb7, 0x49, 0xd3, 0x4e, 0xeb, 0x57, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xba, 0x3d, 0x1b, - 0x3a, 0xbd, 0x0a, 0x00, 0x00, + // 1141 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdb, 0x8e, 0x13, 0x47, + 0x13, 0xfe, 0x6d, 0xbc, 0xde, 0xdd, 0x32, 0xeb, 0x35, 0x0d, 0x5a, 0xe6, 0x37, 0x04, 0x36, 0x8e, + 0x22, 0x48, 0x02, 0xb6, 0x44, 0x82, 0x22, 0x08, 0x48, 0xb1, 0x17, 0x2e, 0xac, 0x70, 0xd8, 0xf4, + 0x12, 0x14, 0xe5, 0x66, 0xd4, 0x9e, 0x29, 0xdb, 0x1d, 0x7a, 0xa6, 0x87, 0xee, 0x1e, 0xd6, 0xab, + 0xbc, 0x43, 0x9e, 0x23, 0xca, 0x33, 0xe4, 0x15, 0xf2, 0x4e, 0xd1, 0xf4, 0xf4, 0xf8, 0x30, 0xb3, + 0x88, 0x24, 0x52, 0xae, 0xec, 0xea, 0xfa, 0xbe, 0xea, 0xaa, 0xea, 0x3a, 0x0c, 0x1c, 0x4e, 0xc5, + 0x99, 0x41, 0x1e, 0x8a, 0x01, 0x0b, 0x23, 0x1e, 0x0f, 0x04, 0x4b, 0xe3, 0x60, 0xee, 0x27, 0x82, + 0xc5, 0xfd, 0x44, 0x49, 0x23, 0x49, 0xbb, 0x40, 0xf4, 0x2d, 0xa2, 0xfb, 0xd1, 0x92, 0x11, 0x48, + 0x85, 0x03, 0x5c, 0x60, 0x90, 0x1a, 0x2e, 0x1d, 0xbc, 0x7b, 0x7d, 0x53, 0x2d, 0xb8, 0x41, 0xc5, + 0x84, 0x76, 0xda, 0x1b, 0x9b, 0x5a, 0x1e, 0x62, 0x6c, 0xf8, 0x94, 0xa3, 0x72, 0xfa, 0x92, 0x71, + 0x1e, 0x1b, 0x54, 0x53, 0x16, 0xe0, 0xf9, 0xc6, 0x35, 0x06, 0xa9, 0xe2, 0xe6, 0xac, 0x42, 0xce, + 0x63, 0xd1, 0xc1, 0x1c, 0xc3, 0x54, 0x14, 0xe4, 0x6b, 0x25, 0x75, 0x20, 0xa3, 0x68, 0xe9, 0xf6, + 0xad, 0x92, 0x32, 0xf3, 0xcb, 0x9c, 0xf9, 0x21, 0xea, 0x40, 0xf1, 0x64, 0x2d, 0xbe, 0x9b, 0x33, + 0x29, 0x67, 0x02, 0x07, 0x56, 0x9a, 0xa4, 0xd3, 0x81, 0xe1, 0x11, 0x6a, 0xc3, 0xa2, 0xa4, 0x08, + 0xb1, 0x0c, 0x38, 0x55, 0x2c, 0x49, 0x50, 0xb9, 0x14, 0xf4, 0x16, 0x70, 0xf5, 0x99, 0x4d, 0xf2, + 0xb1, 0x60, 0xf1, 0x91, 0x42, 0x66, 0x90, 0xe2, 0xdb, 0x14, 0xb5, 0x21, 0x9f, 0x41, 0x9d, 0x87, + 0x5e, 0xed, 0xb0, 0x76, 0xbb, 0x75, 0xef, 0xff, 0xfd, 0x65, 0xde, 0xb3, 0x58, 0xfb, 0xe3, 0x65, + 0xaa, 0x68, 0x9d, 0x87, 0xe4, 0x1e, 0x34, 0x74, 0x82, 0x81, 0x57, 0xb7, 0xe0, 0x1b, 0xfd, 0xcd, + 0x47, 0xea, 0xaf, 0x6e, 0x38, 0x49, 0x30, 0xa0, 0x16, 0xdb, 0xeb, 0x82, 0x57, 0xbd, 0x59, 0x27, + 0x32, 0xd6, 0xd8, 0xfb, 0xad, 0x06, 0xb0, 0x52, 0xfe, 0xc7, 0x9e, 0x90, 0x6f, 0x60, 0x3b, 0x10, + 0x52, 0xa7, 0x0a, 0xbd, 0x0b, 0x96, 0xf6, 0xf1, 0xfb, 0x69, 0x47, 0x39, 0x90, 0x16, 0x8c, 0x1e, + 0x42, 0x7b, 0xa5, 0x7d, 0xc6, 0xb5, 0x21, 0x8f, 0xe1, 0xe2, 0x5a, 0xdd, 0x6a, 0xaf, 0x76, 0x78, + 0xe1, 0x76, 0xeb, 0x5e, 0xf7, 0xfd, 0x36, 0x69, 0x4b, 0x2c, 0xff, 0x6b, 0x72, 0x05, 0xb6, 0x8c, + 0x7c, 0x83, 0xb1, 0x0d, 0x61, 0x97, 0xe6, 0x42, 0xef, 0x1d, 0x34, 0x86, 0xa9, 0x99, 0x93, 0x3b, + 0x40, 0x98, 0xd6, 0x69, 0xc4, 0x26, 0x02, 0x7d, 0xce, 0x22, 0x5f, 0x49, 0x81, 0x36, 0x35, 0xbb, + 0xb4, 0xb3, 0xd4, 0x8c, 0x59, 0x44, 0xa5, 0x40, 0xf2, 0x08, 0xba, 0x6f, 0xd2, 0x09, 0xaa, 0x18, + 0x0d, 0x6a, 0x5f, 0xa3, 0x7a, 0xc7, 0x03, 0xf4, 0x59, 0x10, 0xc8, 0x34, 0x36, 0xee, 0x02, 0x6f, + 0x85, 0x38, 0xc9, 0x01, 0xc3, 0x5c, 0xff, 0xb0, 0xee, 0xd5, 0x7a, 0x7f, 0x6c, 0xaf, 0xc7, 0x97, + 0x25, 0x8d, 0x3c, 0x84, 0xd6, 0xa9, 0x54, 0x6f, 0xa6, 0x42, 0x9e, 0xfa, 0x7f, 0xe7, 0x59, 0xa0, + 0x40, 0x8f, 0x43, 0xf2, 0x1d, 0xec, 0xbb, 0x5a, 0x8e, 0xd0, 0xb0, 0x90, 0x19, 0xe6, 0x5e, 0xaa, + 0xf7, 0xfe, 0xf4, 0x3c, 0x77, 0x48, 0xda, 0xce, 0xa9, 0x85, 0x4c, 0x46, 0xd0, 0x0e, 0x71, 0xca, + 0x52, 0x61, 0x7c, 0x1e, 0x27, 0xa9, 0xd1, 0xee, 0xf9, 0xae, 0x95, 0x7c, 0x39, 0x66, 0x8a, 0x45, + 0x68, 0x50, 0x3d, 0x67, 0x09, 0xdd, 0x73, 0x94, 0xb1, 0x65, 0x90, 0x47, 0x70, 0x71, 0xca, 0x17, + 0x18, 0x16, 0x16, 0x1a, 0xe7, 0x46, 0xf3, 0x2c, 0x9f, 0x1b, 0x19, 0xbf, 0x65, 0xe1, 0x8e, 0x7d, + 0x00, 0x0d, 0x9b, 0xff, 0xad, 0x2c, 0x93, 0xa3, 0xba, 0x57, 0xa3, 0x56, 0x26, 0x7d, 0x68, 0x0a, + 0x36, 0x41, 0xa1, 0xbd, 0xa6, 0xb5, 0x77, 0x50, 0x8d, 0x2e, 0xd3, 0x52, 0x87, 0x22, 0x8f, 0xa1, + 0xc5, 0xe2, 0x58, 0x1a, 0x96, 0xb5, 0xb6, 0xf6, 0xb6, 0xcb, 0x61, 0xe4, 0xa4, 0xe1, 0x0a, 0x42, + 0xd7, 0xf1, 0xe4, 0x0e, 0x34, 0x58, 0x6a, 0xe6, 0xde, 0x8e, 0xe5, 0x5d, 0xa9, 0xf0, 0x52, 0x33, + 0xcf, 0x9d, 0xcb, 0x50, 0xe4, 0x01, 0xec, 0x66, 0xbf, 0x79, 0xe5, 0xec, 0x5a, 0x8a, 0x77, 0x1e, + 0x25, 0xab, 0x20, 0x4b, 0xdb, 0x61, 0x4e, 0x22, 0x63, 0xe8, 0x14, 0x53, 0xce, 0x0f, 0x64, 0x6c, + 0x70, 0x61, 0x3c, 0x28, 0x77, 0x9a, 0xcd, 0xd8, 0x89, 0x83, 0x1d, 0xe5, 0x28, 0xba, 0xaf, 0x37, + 0x0f, 0xc8, 0x73, 0x20, 0x6f, 0x53, 0x26, 0x32, 0x4b, 0x72, 0x5a, 0x94, 0xa6, 0xd7, 0xb1, 0xc6, + 0x6e, 0x96, 0x8c, 0x7d, 0x9f, 0x03, 0x5f, 0x4e, 0x5d, 0x81, 0xd2, 0xce, 0xdb, 0xd2, 0x09, 0xf9, + 0x11, 0x0e, 0x14, 0x3b, 0xf5, 0x65, 0x6a, 0x92, 0xd4, 0xf8, 0x59, 0x79, 0x64, 0x0e, 0x4e, 0xf9, + 0xcc, 0xbb, 0x64, 0x4d, 0x7e, 0x52, 0x8e, 0x90, 0xb2, 0xd3, 0x97, 0x16, 0xfc, 0x84, 0x19, 0x76, + 0x64, 0xa1, 0xf4, 0xb2, 0xaa, 0x1e, 0x92, 0x5b, 0xb0, 0x1f, 0xb1, 0x85, 0x9f, 0x30, 0xc5, 0x84, + 0x40, 0xc1, 0x75, 0xe4, 0x91, 0xc3, 0xda, 0xed, 0x2d, 0xda, 0x8e, 0xd8, 0xe2, 0x78, 0x75, 0x4a, + 0xbe, 0x85, 0x3d, 0xbb, 0x21, 0x54, 0x9a, 0x18, 0x3e, 0x11, 0xe8, 0x5d, 0xb6, 0x37, 0x77, 0xfb, + 0xf9, 0x08, 0xee, 0x17, 0x23, 0xb8, 0x3f, 0x92, 0x52, 0xbc, 0x66, 0x22, 0x45, 0xba, 0x49, 0x20, + 0xc7, 0x40, 0xaa, 0x93, 0xde, 0xbb, 0x72, 0xfe, 0x4c, 0x7a, 0x6a, 0x91, 0x4f, 0x56, 0x40, 0x7a, + 0x09, 0xcb, 0x47, 0xbd, 0x3f, 0xeb, 0x70, 0xa9, 0x32, 0xbc, 0xc8, 0x7d, 0xd8, 0xd2, 0x86, 0x99, + 0x7c, 0x6e, 0xb4, 0xd7, 0xd3, 0x5d, 0x99, 0x92, 0x19, 0x8c, 0xe6, 0x68, 0xf2, 0x04, 0xf6, 0x71, + 0x91, 0x60, 0x60, 0x56, 0xed, 0x52, 0xff, 0x70, 0xc3, 0xb5, 0x0b, 0x8e, 0xeb, 0x99, 0xa7, 0xd0, + 0x59, 0x5a, 0xc9, 0x9f, 0xab, 0xe8, 0xdb, 0x6e, 0xc9, 0xcc, 0x6b, 0xa6, 0x78, 0x36, 0xcd, 0x32, + 0x2b, 0xcb, 0x9b, 0xf3, 0xf7, 0xd1, 0xe4, 0x01, 0x40, 0x60, 0x97, 0x46, 0xe8, 0x33, 0xe3, 0xda, + 0xb6, 0x9a, 0xea, 0x57, 0xc5, 0x3a, 0xa4, 0xbb, 0x0e, 0x3d, 0x34, 0x19, 0x35, 0x4d, 0xc2, 0x82, + 0xba, 0xf5, 0x61, 0xaa, 0x43, 0x0f, 0x4d, 0xef, 0xd7, 0x1a, 0x90, 0xea, 0x64, 0x22, 0x5f, 0xc1, + 0x4e, 0xb1, 0xde, 0xdd, 0x3c, 0xac, 0x74, 0xd4, 0x89, 0xd3, 0xd3, 0x25, 0x92, 0x8c, 0x60, 0x2f, + 0x96, 0xd9, 0x90, 0x0c, 0x5c, 0xdf, 0xd7, 0xed, 0xa6, 0xb8, 0x5e, 0xa6, 0xbe, 0x58, 0x03, 0xd1, + 0x4d, 0x4a, 0xef, 0x97, 0xf5, 0xfd, 0xfd, 0x83, 0xf5, 0xf3, 0x5f, 0xec, 0xef, 0x65, 0x41, 0xd4, + 0xff, 0x49, 0x41, 0x6c, 0xae, 0xf0, 0xe2, 0x72, 0xb7, 0xc2, 0x8f, 0xe1, 0xea, 0x30, 0x30, 0xfc, + 0x1d, 0xae, 0xed, 0x39, 0xe7, 0xd8, 0xfd, 0x35, 0xc7, 0x3e, 0xad, 0x04, 0xcb, 0x22, 0x0c, 0xf3, + 0xda, 0xde, 0x74, 0xb2, 0xf7, 0x7b, 0x0d, 0xae, 0x95, 0x4d, 0x66, 0x0b, 0xb7, 0x30, 0xeb, 0xc1, + 0x76, 0xa2, 0xe4, 0xcf, 0x18, 0x18, 0xb7, 0x0f, 0x0b, 0x91, 0x1c, 0x40, 0x33, 0x94, 0x11, 0xe3, + 0xc5, 0x4e, 0x75, 0x52, 0xb6, 0x6a, 0x05, 0x8f, 0xb8, 0xb1, 0xf5, 0xb7, 0x47, 0x73, 0x61, 0xb5, + 0x80, 0x1b, 0x6b, 0x0b, 0x98, 0xdc, 0x85, 0x6d, 0x2d, 0x95, 0xf1, 0x27, 0x67, 0xae, 0x62, 0x2a, + 0x63, 0xf6, 0x44, 0x2a, 0x43, 0x9b, 0x19, 0x68, 0x74, 0xf6, 0xf9, 0x17, 0xb0, 0x5f, 0x4a, 0x1a, + 0xb9, 0x08, 0x3b, 0xe3, 0x17, 0xc3, 0xa3, 0x57, 0xe3, 0xd7, 0x4f, 0x3b, 0xff, 0x23, 0x00, 0x4d, + 0xf7, 0xbf, 0x36, 0xfa, 0xfa, 0xa7, 0xfb, 0x33, 0x6e, 0xe6, 0xe9, 0xa4, 0x1f, 0xc8, 0x68, 0x60, + 0xcd, 0x4a, 0x35, 0x1b, 0x2c, 0x3f, 0x02, 0x67, 0x18, 0x0f, 0x92, 0xc9, 0xdd, 0x99, 0x1c, 0x6c, + 0x7e, 0x17, 0x4e, 0x9a, 0xb6, 0x5a, 0xbf, 0xfc, 0x2b, 0x00, 0x00, 0xff, 0xff, 0xda, 0xb8, 0xe1, + 0xf7, 0x38, 0x0b, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/launch_plan.pb.validate.go b/gen/pb-go/flyteidl/admin/launch_plan.pb.validate.go index 4d8c9733f..33ec7adf7 100644 --- a/gen/pb-go/flyteidl/admin/launch_plan.pb.validate.go +++ b/gen/pb-go/flyteidl/admin/launch_plan.pb.validate.go @@ -566,6 +566,16 @@ func (m *LaunchPlanSpec) Validate() error { } } + if v, ok := interface{}(m.GetEntityDescription()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return LaunchPlanSpecValidationError{ + field: "EntityDescription", + reason: "embedded message failed validation", + cause: err, + } + } + } + return nil } diff --git a/gen/pb-go/flyteidl/admin/project.pb.go b/gen/pb-go/flyteidl/admin/project.pb.go index 5de7fd77b..b82cccd55 100644 --- a/gen/pb-go/flyteidl/admin/project.pb.go +++ b/gen/pb-go/flyteidl/admin/project.pb.go @@ -113,11 +113,14 @@ type Project struct { Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` // Leverage Labels from flyteidel.admin.common.proto to // tag projects with ownership information. - Labels *Labels `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"` - State Project_ProjectState `protobuf:"varint,6,opt,name=state,proto3,enum=flyteidl.admin.Project_ProjectState" json:"state,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Labels *Labels `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"` + State Project_ProjectState `protobuf:"varint,6,opt,name=state,proto3,enum=flyteidl.admin.Project_ProjectState" json:"state,omitempty"` + // User-specified tags. These are arbitrary and can be used for searching + // filtering and discovering entities. + Tags []string `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Project) Reset() { *m = Project{} } @@ -187,6 +190,13 @@ func (m *Project) GetState() Project_ProjectState { return Project_ACTIVE } +func (m *Project) GetTags() []string { + if m != nil { + return m.Tags + } + return nil +} + // Represents a list of projects. // See :ref:`ref_flyteidl.admin.Project` for more details type Projects struct { @@ -433,34 +443,35 @@ func init() { func init() { proto.RegisterFile("flyteidl/admin/project.proto", fileDescriptor_2db065ce03bf106d) } var fileDescriptor_2db065ce03bf106d = []byte{ - // 459 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0xc7, 0xb1, 0xdb, 0xd8, 0x61, 0x52, 0xa2, 0x68, 0x14, 0x1a, 0xf3, 0x71, 0xb0, 0x2c, 0x0e, - 0x39, 0x50, 0x1b, 0x52, 0x21, 0x24, 0x0e, 0x48, 0x69, 0x63, 0x41, 0x45, 0x41, 0x68, 0x93, 0x56, - 0x82, 0x4b, 0xe5, 0x8f, 0xad, 0x59, 0xb0, 0xbd, 0xc6, 0xbb, 0x3d, 0xe4, 0x11, 0x78, 0x18, 0xde, - 0x11, 0x79, 0xbd, 0xae, 0xda, 0x10, 0x50, 0x4f, 0xf6, 0xcc, 0xfc, 0x76, 0xe6, 0x3f, 0x33, 0xbb, - 0xf0, 0xf4, 0x32, 0x5f, 0x4b, 0xca, 0xd2, 0x3c, 0x88, 0xd2, 0x82, 0x95, 0x41, 0x55, 0xf3, 0xef, - 0x34, 0x91, 0x7e, 0x55, 0x73, 0xc9, 0x71, 0xd8, 0x45, 0x7d, 0x15, 0x7d, 0xfc, 0x64, 0x83, 0x4e, - 0x78, 0x51, 0xf0, 0xb2, 0x85, 0xbd, 0xe7, 0x60, 0x2d, 0x78, 0x11, 0xb1, 0x12, 0x87, 0x60, 0xb2, - 0xd4, 0x31, 0x5c, 0x63, 0x7a, 0x9f, 0x98, 0x2c, 0x45, 0x84, 0xdd, 0x32, 0x2a, 0xa8, 0x63, 0x2a, - 0x8f, 0xfa, 0xf7, 0x7e, 0x9b, 0x60, 0x7f, 0x6e, 0x8b, 0xdd, 0x85, 0xc7, 0x17, 0x60, 0xa7, 0x2a, - 0xbb, 0x70, 0x76, 0xdc, 0x9d, 0xe9, 0x60, 0xb6, 0xef, 0xdf, 0x16, 0xe7, 0xb7, 0xc5, 0x49, 0x87, - 0xa1, 0x0b, 0x83, 0x94, 0x8a, 0xa4, 0x66, 0x95, 0x64, 0xbc, 0x74, 0x76, 0x55, 0xb2, 0x9b, 0x2e, - 0xf4, 0xc1, 0xca, 0xa3, 0x98, 0xe6, 0xc2, 0xe9, 0xb9, 0xc6, 0xb6, 0x94, 0xa7, 0x2a, 0x4a, 0x34, - 0x85, 0x6f, 0xa0, 0x27, 0x64, 0x24, 0xa9, 0x63, 0xb9, 0xc6, 0x74, 0x38, 0x7b, 0xb6, 0x89, 0xeb, - 0x7e, 0xba, 0xef, 0xb2, 0x61, 0x49, 0x7b, 0xc4, 0x7b, 0x0b, 0x7b, 0x37, 0xdd, 0x08, 0x60, 0xcd, - 0x8f, 0x57, 0x27, 0xe7, 0xe1, 0xe8, 0x1e, 0xee, 0x41, 0x7f, 0x4e, 0x8e, 0xdf, 0x9f, 0x9c, 0x87, - 0x8b, 0x91, 0x81, 0x63, 0x18, 0x2d, 0xbf, 0x2c, 0x57, 0xe1, 0xc7, 0x8b, 0x77, 0xe1, 0xa7, 0x90, - 0xcc, 0x57, 0xe1, 0x62, 0x64, 0x7a, 0x67, 0xd0, 0xd7, 0xe7, 0x05, 0x1e, 0x42, 0x5f, 0xef, 0x49, - 0x38, 0x86, 0x1a, 0xc6, 0xe4, 0x1f, 0x52, 0xc8, 0x35, 0x88, 0x63, 0xe8, 0x49, 0xfe, 0x83, 0x96, - 0x7a, 0xaa, 0xad, 0xe1, 0xfd, 0x32, 0x00, 0x35, 0x7b, 0xca, 0x84, 0x24, 0xf4, 0xe7, 0x15, 0x15, - 0xb2, 0x81, 0x73, 0x56, 0x30, 0xa9, 0x96, 0xf2, 0x80, 0xb4, 0xc6, 0xf6, 0x14, 0xe8, 0x80, 0x7d, - 0xc9, 0x72, 0x49, 0xeb, 0x66, 0x33, 0x8d, 0xbf, 0x33, 0xf1, 0x00, 0x6c, 0xc1, 0x6b, 0x79, 0x11, - 0xaf, 0xd5, 0xf4, 0x07, 0xb3, 0xf1, 0xa6, 0xcc, 0x25, 0xaf, 0x25, 0xb1, 0x1a, 0xe8, 0x68, 0xed, - 0x7d, 0x80, 0xfd, 0x4e, 0x36, 0xcd, 0x98, 0x90, 0xb4, 0xee, 0xe4, 0xbc, 0x04, 0x5b, 0xf7, 0xa1, - 0x04, 0xfd, 0xa7, 0xdf, 0x8e, 0xf3, 0x1e, 0xc1, 0xe4, 0xaf, 0x64, 0xa2, 0xe2, 0xa5, 0xa0, 0xde, - 0x04, 0x1e, 0xea, 0xd0, 0x59, 0x95, 0x36, 0x2b, 0xd2, 0x81, 0xa3, 0xd7, 0x5f, 0x5f, 0x65, 0x4c, - 0x7e, 0xbb, 0x8a, 0xfd, 0x84, 0x17, 0x81, 0xaa, 0xc0, 0xeb, 0x2c, 0xb8, 0xbe, 0xf4, 0x19, 0x2d, - 0x83, 0x2a, 0x3e, 0xc8, 0x78, 0x70, 0xfb, 0x1d, 0xc4, 0x96, 0x7a, 0x01, 0x87, 0x7f, 0x02, 0x00, - 0x00, 0xff, 0xff, 0xff, 0xe4, 0x77, 0x94, 0x4e, 0x03, 0x00, 0x00, + // 470 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xdf, 0x6f, 0xd3, 0x30, + 0x10, 0xc7, 0x49, 0xba, 0x26, 0xe5, 0x3a, 0xaa, 0xca, 0x2a, 0xab, 0xf9, 0xf1, 0x10, 0x45, 0x3c, + 0xf4, 0x81, 0x25, 0xd0, 0x09, 0x21, 0xf1, 0x80, 0xd4, 0xad, 0x11, 0x4c, 0x0c, 0x84, 0xdc, 0x6e, + 0x12, 0xbc, 0x4c, 0xf9, 0xe1, 0x05, 0x43, 0x12, 0x87, 0xd8, 0x7b, 0xe8, 0x9f, 0xc0, 0x9f, 0xc5, + 0x7f, 0x86, 0xec, 0x38, 0xd3, 0x56, 0x06, 0xda, 0x93, 0x7d, 0x77, 0x1f, 0xdf, 0x7d, 0xcf, 0xa7, + 0x83, 0xa7, 0x17, 0xc5, 0x46, 0x52, 0x96, 0x15, 0x61, 0x9c, 0x95, 0xac, 0x0a, 0xeb, 0x86, 0x7f, + 0xa7, 0xa9, 0x0c, 0xea, 0x86, 0x4b, 0x8e, 0x46, 0x5d, 0x34, 0xd0, 0xd1, 0xc7, 0x4f, 0xb6, 0xe8, + 0x94, 0x97, 0x25, 0xaf, 0x5a, 0xd8, 0x7f, 0x0e, 0xce, 0x92, 0x97, 0x31, 0xab, 0xd0, 0x08, 0x6c, + 0x96, 0x61, 0xcb, 0xb3, 0x66, 0xf7, 0x89, 0xcd, 0x32, 0x84, 0x60, 0xa7, 0x8a, 0x4b, 0x8a, 0x6d, + 0xed, 0xd1, 0x77, 0xff, 0xb7, 0x0d, 0xee, 0xe7, 0xb6, 0xd8, 0x5d, 0x78, 0xf4, 0x02, 0xdc, 0x4c, + 0x67, 0x17, 0xb8, 0xe7, 0xf5, 0x66, 0xc3, 0xf9, 0x5e, 0x70, 0x53, 0x5c, 0xd0, 0x16, 0x27, 0x1d, + 0x86, 0x3c, 0x18, 0x66, 0x54, 0xa4, 0x0d, 0xab, 0x25, 0xe3, 0x15, 0xde, 0xd1, 0xc9, 0xae, 0xbb, + 0x50, 0x00, 0x4e, 0x11, 0x27, 0xb4, 0x10, 0xb8, 0xef, 0x59, 0xb7, 0xa5, 0x3c, 0xd1, 0x51, 0x62, + 0x28, 0xf4, 0x06, 0xfa, 0x42, 0xc6, 0x92, 0x62, 0xc7, 0xb3, 0x66, 0xa3, 0xf9, 0xb3, 0x6d, 0xdc, + 0xf4, 0xd3, 0x9d, 0x2b, 0xc5, 0x92, 0xf6, 0x89, 0xea, 0x49, 0xc6, 0xb9, 0xc0, 0xae, 0xd7, 0x53, + 0x3d, 0xa9, 0xbb, 0xff, 0x16, 0x76, 0xaf, 0xa3, 0x08, 0xc0, 0x59, 0x1c, 0xad, 0x8f, 0xcf, 0xa2, + 0xf1, 0x3d, 0xb4, 0x0b, 0x83, 0x05, 0x39, 0x7a, 0x7f, 0x7c, 0x16, 0x2d, 0xc7, 0x16, 0x9a, 0xc0, + 0x78, 0xf5, 0x65, 0xb5, 0x8e, 0x3e, 0x9e, 0xbf, 0x8b, 0x3e, 0x45, 0x64, 0xb1, 0x8e, 0x96, 0x63, + 0xdb, 0x3f, 0x85, 0x81, 0x79, 0x2f, 0xd0, 0x01, 0x0c, 0xcc, 0xec, 0x04, 0xb6, 0xf4, 0x07, 0x4d, + 0xff, 0x21, 0x8f, 0x5c, 0x81, 0x68, 0x02, 0x7d, 0xc9, 0x7f, 0xd0, 0xca, 0xfc, 0x74, 0x6b, 0xf8, + 0xbf, 0x2c, 0x40, 0x86, 0x3d, 0x61, 0x42, 0x12, 0xfa, 0xf3, 0x92, 0x0a, 0xa9, 0xe0, 0x82, 0x95, + 0x4c, 0xea, 0x41, 0x3d, 0x20, 0xad, 0x71, 0x7b, 0x0a, 0x84, 0xc1, 0xbd, 0x60, 0x85, 0xa4, 0x8d, + 0x9a, 0x96, 0xf2, 0x77, 0x26, 0xda, 0x07, 0x57, 0xf0, 0x46, 0x9e, 0x27, 0x1b, 0x3d, 0x91, 0xe1, + 0x7c, 0xb2, 0x2d, 0x73, 0xc5, 0x1b, 0x49, 0x1c, 0x05, 0x1d, 0x6e, 0xfc, 0x0f, 0xb0, 0xd7, 0xc9, + 0xa6, 0x39, 0x13, 0x92, 0x36, 0x9d, 0x9c, 0x97, 0xe0, 0x9a, 0x3e, 0xb4, 0xa0, 0xff, 0xf4, 0xdb, + 0x71, 0xfe, 0x23, 0x98, 0xfe, 0x95, 0x4c, 0xd4, 0xbc, 0x12, 0xd4, 0x9f, 0xc2, 0x43, 0x13, 0x3a, + 0xad, 0x33, 0x35, 0x36, 0x13, 0x38, 0x7c, 0xfd, 0xf5, 0x55, 0xce, 0xe4, 0xb7, 0xcb, 0x24, 0x48, + 0x79, 0x19, 0xea, 0x0a, 0xbc, 0xc9, 0xc3, 0xab, 0x45, 0xc8, 0x69, 0x15, 0xd6, 0xc9, 0x7e, 0xce, + 0xc3, 0x9b, 0xbb, 0x91, 0x38, 0x7a, 0x2b, 0x0e, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0xc6, 0x92, + 0x40, 0x1b, 0x62, 0x03, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/task.pb.go b/gen/pb-go/flyteidl/admin/task.pb.go index 2bf2aaf94..91c0ef4e9 100644 --- a/gen/pb-go/flyteidl/admin/task.pb.go +++ b/gen/pb-go/flyteidl/admin/task.pb.go @@ -214,7 +214,9 @@ func (m *TaskList) GetToken() string { // Represents a structure that encapsulates the user-configured specification of the task. type TaskSpec struct { // Template of the task that encapsulates all the metadata of the task. - Template *core.TaskTemplate `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Template *core.TaskTemplate `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + // EntityDescription encapsulates all the detailed documentation for the task. + EntityDescription *EntityDescription `protobuf:"bytes,2,opt,name=entity_description,json=entityDescription,proto3" json:"entity_description,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -252,6 +254,13 @@ func (m *TaskSpec) GetTemplate() *core.TaskTemplate { return nil } +func (m *TaskSpec) GetEntityDescription() *EntityDescription { + if m != nil { + return m.EntityDescription + } + return nil +} + // Compute task attributes which include values derived from the TaskSpec, as well as plugin-specific data // and task metadata. type TaskClosure struct { @@ -315,30 +324,32 @@ func init() { func init() { proto.RegisterFile("flyteidl/admin/task.proto", fileDescriptor_9204120d588b2162) } var fileDescriptor_9204120d588b2162 = []byte{ - // 389 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0x31, 0xef, 0xd3, 0x30, - 0x10, 0xc5, 0x95, 0xf2, 0x2f, 0xb4, 0x2e, 0x20, 0x61, 0x75, 0x48, 0x5b, 0x04, 0x55, 0xa6, 0x82, - 0xc0, 0x96, 0x8a, 0xaa, 0x8a, 0x0d, 0xc8, 0x84, 0xd4, 0xc9, 0x74, 0x62, 0xa9, 0x12, 0xe7, 0x9a, - 0x5a, 0x4d, 0x62, 0x13, 0x3b, 0x03, 0x5f, 0x81, 0x4f, 0x8d, 0xec, 0x38, 0x51, 0x83, 0xca, 0xf0, - 0x1f, 0xcf, 0xf7, 0xcb, 0x7b, 0x77, 0x97, 0x87, 0x16, 0xe7, 0xe2, 0xb7, 0x01, 0x91, 0x15, 0x34, - 0xc9, 0x4a, 0x51, 0x51, 0x93, 0xe8, 0x2b, 0x51, 0xb5, 0x34, 0x12, 0xbf, 0xec, 0x5a, 0xc4, 0xb5, - 0x96, 0x6f, 0x7a, 0x94, 0xcb, 0x1a, 0xa8, 0xc8, 0xa0, 0x32, 0xe2, 0x2c, 0xa0, 0x6e, 0xf9, 0xe5, - 0x62, 0xd8, 0xb7, 0x4a, 0xda, 0xb7, 0x5e, 0x0f, 0x5b, 0x5c, 0x96, 0x4a, 0x14, 0xfd, 0x87, 0x6f, - 0x73, 0x29, 0xf3, 0x02, 0xa8, 0xab, 0xd2, 0xe6, 0x4c, 0x8d, 0x28, 0x41, 0x9b, 0xa4, 0x54, 0x2d, - 0x10, 0x15, 0xe8, 0xd5, 0x31, 0xd1, 0xd7, 0xb8, 0x86, 0xc4, 0x00, 0x83, 0x5f, 0x0d, 0x68, 0x83, - 0xdf, 0xa1, 0x91, 0xc8, 0xc2, 0x60, 0x1d, 0x6c, 0x66, 0xdb, 0x05, 0xe9, 0x67, 0xb5, 0x06, 0xe4, - 0x7b, 0x3f, 0x1b, 0x1b, 0x89, 0x0c, 0x7f, 0x40, 0x0f, 0x5a, 0x01, 0x0f, 0x47, 0x0e, 0x0e, 0xc9, - 0x70, 0x31, 0x62, 0xb5, 0x7f, 0x28, 0xe0, 0xcc, 0x51, 0xd1, 0x1c, 0xe1, 0x5b, 0x37, 0xad, 0x64, - 0xa5, 0x21, 0xba, 0xa0, 0x07, 0xfb, 0xfa, 0x18, 0xdb, 0x1d, 0x7a, 0xc6, 0x0b, 0xa9, 0x9b, 0x1a, - 0xbc, 0xf3, 0xea, 0x9e, 0x73, 0xdc, 0x22, 0xac, 0x63, 0xa3, 0x03, 0x9a, 0xd8, 0xf7, 0x83, 0xd0, - 0x06, 0xbf, 0x47, 0x63, 0x77, 0xc7, 0x30, 0x58, 0x3f, 0xd9, 0xcc, 0xb6, 0xf3, 0x7b, 0x02, 0xac, - 0x45, 0xf0, 0x1c, 0x8d, 0x8d, 0xbc, 0x42, 0xe5, 0xcc, 0xa6, 0xac, 0x2d, 0xa2, 0xb8, 0x55, 0xb3, - 0xfb, 0xe1, 0x3d, 0x9a, 0x18, 0x28, 0x55, 0x91, 0x18, 0xf0, 0x1b, 0xac, 0xfe, 0xd9, 0xc0, 0xa2, - 0x47, 0x8f, 0xb0, 0x1e, 0x8e, 0xfe, 0x04, 0x68, 0x76, 0x33, 0x2b, 0xfe, 0x82, 0x5e, 0xf8, 0x7f, - 0x98, 0x9d, 0xac, 0xf9, 0x7f, 0xd4, 0x62, 0xcf, 0xb8, 0x29, 0x9f, 0xf3, 0x9b, 0x0a, 0x7f, 0x46, - 0x88, 0xbb, 0x03, 0x67, 0xa7, 0xc4, 0xf8, 0xf3, 0x2c, 0x49, 0x1b, 0x04, 0xd2, 0x05, 0x81, 0x1c, - 0xbb, 0x20, 0xb0, 0xa9, 0xa7, 0xbf, 0x9a, 0x6f, 0xfb, 0x9f, 0xbb, 0x5c, 0x98, 0x4b, 0x93, 0x12, - 0x2e, 0x4b, 0xea, 0x1c, 0x65, 0x9d, 0xd3, 0x3e, 0x62, 0x39, 0x54, 0x54, 0xa5, 0x1f, 0x73, 0x49, - 0x87, 0xd9, 0x4e, 0x9f, 0x3a, 0xdd, 0x4f, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x38, 0xe5, 0xba, - 0x67, 0xf4, 0x02, 0x00, 0x00, + // 432 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0x41, 0x6f, 0xd3, 0x40, + 0x10, 0x85, 0xe5, 0xd0, 0x42, 0x3b, 0x01, 0xa4, 0xae, 0x72, 0x48, 0x52, 0x04, 0xc5, 0x17, 0x0a, + 0x82, 0x5d, 0xa9, 0xa8, 0xaa, 0xb8, 0x01, 0x81, 0x03, 0x52, 0x0f, 0x68, 0xc9, 0x89, 0x4b, 0xe4, + 0xac, 0x27, 0xee, 0x2a, 0xb6, 0x77, 0xf1, 0x4e, 0x0e, 0xfd, 0x0b, 0xdc, 0xf9, 0xbf, 0x68, 0xd7, + 0x1b, 0x93, 0x98, 0x72, 0xe0, 0x38, 0x33, 0x9f, 0xe7, 0xcd, 0xf3, 0x3e, 0x98, 0xac, 0xca, 0x5b, + 0x42, 0x9d, 0x97, 0x22, 0xcb, 0x2b, 0x5d, 0x0b, 0xca, 0xdc, 0x9a, 0xdb, 0xc6, 0x90, 0x61, 0x8f, + 0xb7, 0x23, 0x1e, 0x46, 0xd3, 0xa7, 0x1d, 0xaa, 0x4c, 0x83, 0x42, 0xe7, 0x58, 0x93, 0x5e, 0x69, + 0x6c, 0x5a, 0x7e, 0x3a, 0xd9, 0x9f, 0xfb, 0x4d, 0x2e, 0x8e, 0x9e, 0xec, 0x8f, 0x94, 0xa9, 0xac, + 0x2e, 0xbb, 0x0f, 0x9f, 0x15, 0xc6, 0x14, 0x25, 0x8a, 0x50, 0x2d, 0x37, 0x2b, 0x41, 0xba, 0x42, + 0x47, 0x59, 0x65, 0x23, 0xf0, 0xa2, 0x77, 0xa4, 0x17, 0xa6, 0xdb, 0x45, 0x8e, 0x4e, 0x35, 0xda, + 0x92, 0x36, 0x75, 0x0b, 0xa6, 0x25, 0x9c, 0xcc, 0x33, 0xb7, 0x9e, 0x35, 0x98, 0x11, 0x4a, 0xfc, + 0xb1, 0x41, 0x47, 0xec, 0x25, 0x0c, 0x74, 0x3e, 0x4e, 0xce, 0x92, 0xf3, 0xe1, 0xc5, 0x84, 0x77, + 0xa6, 0xfc, 0x25, 0xfc, 0x4b, 0x67, 0x42, 0x0e, 0x74, 0xce, 0x5e, 0xc3, 0x81, 0xb3, 0xa8, 0xc6, + 0x83, 0x00, 0x8f, 0xf9, 0xfe, 0x1f, 0xe0, 0x7e, 0xf7, 0x37, 0x8b, 0x4a, 0x06, 0x2a, 0x1d, 0x01, + 0xdb, 0x55, 0x73, 0xd6, 0xd4, 0x0e, 0xd3, 0x1b, 0x38, 0xf0, 0xdd, 0xff, 0x91, 0xbd, 0x84, 0x07, + 0xaa, 0x34, 0x6e, 0xd3, 0x60, 0x54, 0x3e, 0xbd, 0x4b, 0x79, 0xd6, 0x22, 0x72, 0xcb, 0xa6, 0xd7, + 0x70, 0xe4, 0xfb, 0xd7, 0xda, 0x11, 0x7b, 0x05, 0x87, 0xe1, 0x87, 0x8f, 0x93, 0xb3, 0x7b, 0xe7, + 0xc3, 0x8b, 0xd1, 0x5d, 0x0b, 0x64, 0x8b, 0xb0, 0x11, 0x1c, 0x92, 0x59, 0x63, 0x1d, 0xc4, 0x8e, + 0x65, 0x5b, 0xa4, 0xbf, 0x92, 0x76, 0x9d, 0x37, 0xc8, 0xae, 0xe0, 0x88, 0xb0, 0xb2, 0x65, 0x46, + 0x18, 0x2d, 0x9c, 0xf6, 0x2c, 0x78, 0x74, 0x1e, 0x11, 0xd9, 0xc1, 0xec, 0x2b, 0xb0, 0xbf, 0x5f, + 0x27, 0xba, 0x7a, 0xde, 0x3f, 0xea, 0x73, 0x20, 0x3f, 0xfd, 0x01, 0xe5, 0x09, 0xf6, 0x5b, 0xe9, + 0xcf, 0x04, 0x86, 0x3b, 0xf6, 0xd9, 0x7b, 0x78, 0x14, 0xf3, 0x93, 0x2f, 0xbc, 0x9f, 0x7f, 0xdc, + 0x37, 0x8b, 0x4c, 0x30, 0xfe, 0x50, 0xed, 0x54, 0xec, 0x1d, 0x80, 0x0a, 0x6f, 0x96, 0x2f, 0x32, + 0x8a, 0xb7, 0x4d, 0x79, 0x1b, 0x42, 0xbe, 0x0d, 0x21, 0x9f, 0x6f, 0x43, 0x28, 0x8f, 0x23, 0xfd, + 0x81, 0x3e, 0x5e, 0x7d, 0xbf, 0x2c, 0x34, 0xdd, 0x6c, 0x96, 0x5c, 0x99, 0x4a, 0x04, 0x45, 0xd3, + 0x14, 0xa2, 0xcb, 0x67, 0x81, 0xb5, 0xb0, 0xcb, 0x37, 0x85, 0x11, 0xfb, 0x91, 0x5d, 0xde, 0x0f, + 0x7b, 0xdf, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x02, 0x61, 0x03, 0x35, 0x70, 0x03, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/task.pb.validate.go b/gen/pb-go/flyteidl/admin/task.pb.validate.go index ec3bffda1..e32549357 100644 --- a/gen/pb-go/flyteidl/admin/task.pb.validate.go +++ b/gen/pb-go/flyteidl/admin/task.pb.validate.go @@ -372,6 +372,16 @@ func (m *TaskSpec) Validate() error { } } + if v, ok := interface{}(m.GetEntityDescription()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TaskSpecValidationError{ + field: "EntityDescription", + reason: "embedded message failed validation", + cause: err, + } + } + } + return nil } diff --git a/gen/pb-go/flyteidl/admin/workflow.pb.go b/gen/pb-go/flyteidl/admin/workflow.pb.go index c2f723d92..765adb418 100644 --- a/gen/pb-go/flyteidl/admin/workflow.pb.go +++ b/gen/pb-go/flyteidl/admin/workflow.pb.go @@ -217,10 +217,12 @@ type WorkflowSpec struct { // Workflows that are embedded into other workflows need to be passed alongside the parent workflow to the // propeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out // to Admin to see other registered workflows). In fact, subworkflows do not even need to be registered. - SubWorkflows []*core.WorkflowTemplate `protobuf:"bytes,2,rep,name=sub_workflows,json=subWorkflows,proto3" json:"sub_workflows,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SubWorkflows []*core.WorkflowTemplate `protobuf:"bytes,2,rep,name=sub_workflows,json=subWorkflows,proto3" json:"sub_workflows,omitempty"` + // EntityDescription encapsulates all the detailed documentation for the workflow. + EntityDescription *EntityDescription `protobuf:"bytes,3,opt,name=entity_description,json=entityDescription,proto3" json:"entity_description,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *WorkflowSpec) Reset() { *m = WorkflowSpec{} } @@ -262,6 +264,13 @@ func (m *WorkflowSpec) GetSubWorkflows() []*core.WorkflowTemplate { return nil } +func (m *WorkflowSpec) GetEntityDescription() *EntityDescription { + if m != nil { + return m.EntityDescription + } + return nil +} + // A container holding the compiled workflow produced from the WorkflowSpec and additional metadata. type WorkflowClosure struct { // Represents the compiled representation of the workflow from the specification provided. @@ -324,32 +333,34 @@ func init() { func init() { proto.RegisterFile("flyteidl/admin/workflow.proto", fileDescriptor_827ade3f2372dc85) } var fileDescriptor_827ade3f2372dc85 = []byte{ - // 421 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x5f, 0x6b, 0xd6, 0x30, - 0x14, 0xc6, 0x69, 0xfd, 0xb7, 0xf7, 0x6c, 0xfe, 0x0b, 0x2a, 0xb5, 0x4c, 0xdf, 0xd1, 0x0b, 0x99, - 0x17, 0x26, 0x32, 0x51, 0x19, 0x5e, 0xe9, 0xeb, 0x8d, 0xe0, 0x55, 0x36, 0x10, 0x44, 0x18, 0x6d, - 0x7a, 0x5a, 0xc3, 0xda, 0x26, 0x36, 0x29, 0xc3, 0x8f, 0xe1, 0x47, 0xf0, 0x9b, 0xca, 0xd2, 0xa4, - 0x2f, 0x2d, 0x0c, 0xd9, 0x65, 0xfa, 0xfc, 0xf2, 0x9c, 0xe7, 0x9c, 0x9c, 0xc2, 0xb3, 0xaa, 0xf9, - 0x6d, 0x51, 0x96, 0x0d, 0xcb, 0xcb, 0x56, 0x76, 0xec, 0x42, 0xf5, 0xe7, 0x55, 0xa3, 0x2e, 0xa8, - 0xee, 0x95, 0x55, 0xe4, 0x5e, 0x90, 0xa9, 0x93, 0xd3, 0xfd, 0x09, 0x17, 0xaa, 0x47, 0x26, 0x54, - 0xab, 0x65, 0x83, 0xfd, 0x48, 0xa7, 0xcf, 0xe7, 0xaa, 0x2c, 0xb1, 0xb3, 0xb2, 0x92, 0x93, 0xbe, - 0xb8, 0x3d, 0xaf, 0x95, 0xae, 0x6b, 0xa5, 0xea, 0x06, 0x99, 0x3b, 0x15, 0x43, 0xc5, 0xac, 0x6c, - 0xd1, 0xd8, 0xbc, 0xd5, 0x23, 0x90, 0x59, 0x78, 0xfc, 0xcd, 0x5f, 0xd9, 0xf4, 0x98, 0x5b, 0xe4, - 0xf8, 0x6b, 0x40, 0x63, 0xc9, 0x4b, 0x88, 0x65, 0x99, 0x44, 0x07, 0xd1, 0xe1, 0xee, 0xd1, 0x53, - 0x3a, 0x45, 0xbe, 0x2c, 0x42, 0xbf, 0x4c, 0x21, 0x78, 0x2c, 0x4b, 0xf2, 0x1a, 0x6e, 0x1a, 0x8d, - 0x22, 0x89, 0x1d, 0xbc, 0x4f, 0xe7, 0xfd, 0xd1, 0xe0, 0x7f, 0xa2, 0x51, 0x70, 0x47, 0x66, 0x09, - 0x3c, 0x59, 0x56, 0x35, 0x5a, 0x75, 0x06, 0x33, 0x0d, 0x3b, 0x41, 0xb9, 0x4e, 0x84, 0x63, 0xb8, - 0x23, 0x1a, 0x65, 0x86, 0x1e, 0x7d, 0x8a, 0xf5, 0x55, 0x29, 0x36, 0x23, 0xc6, 0x03, 0x9f, 0xfd, - 0x80, 0xbd, 0xa0, 0x7d, 0x95, 0xc6, 0x92, 0x77, 0xb0, 0x0a, 0x43, 0x34, 0x49, 0x74, 0x70, 0xe3, - 0x70, 0xf7, 0x28, 0xb9, 0xca, 0x8c, 0x6f, 0x51, 0xf2, 0x08, 0x6e, 0x59, 0x75, 0x8e, 0x9d, 0x0b, - 0xb0, 0xe2, 0xe3, 0x21, 0xfb, 0x13, 0x6d, 0xed, 0x2f, 0x07, 0x40, 0x3e, 0xc0, 0x8e, 0xc5, 0x56, - 0x37, 0xb9, 0x45, 0xdf, 0xda, 0x7a, 0xd1, 0x5a, 0xc0, 0x4f, 0x3d, 0xc6, 0xa7, 0x0b, 0xe4, 0x33, - 0xdc, 0x35, 0x43, 0x71, 0xb6, 0xcd, 0x17, 0xbb, 0x7c, 0xff, 0x75, 0xd8, 0x33, 0x43, 0x11, 0x3e, - 0x9a, 0xec, 0x6f, 0x04, 0xf7, 0x17, 0xe3, 0x20, 0x27, 0xf0, 0xd0, 0x2f, 0x5e, 0x39, 0xd9, 0xfb, - 0x7c, 0x2f, 0x16, 0xee, 0x1b, 0xcf, 0x2d, 0x27, 0xfa, 0x40, 0x2c, 0x04, 0x72, 0x0c, 0x20, 0xdc, - 0xf3, 0x96, 0x67, 0xb9, 0xf5, 0x0f, 0x93, 0xd2, 0x71, 0x25, 0x69, 0x58, 0x49, 0x7a, 0x1a, 0x56, - 0x92, 0xaf, 0x3c, 0xfd, 0xd1, 0x7e, 0x7a, 0xff, 0xfd, 0x6d, 0x2d, 0xed, 0xcf, 0xa1, 0xa0, 0x42, - 0xb5, 0xcc, 0x05, 0x50, 0x7d, 0xcd, 0xa6, 0x65, 0xaf, 0xb1, 0x63, 0xba, 0x78, 0x55, 0x2b, 0x36, - 0xff, 0xd9, 0x8a, 0xdb, 0xce, 0xf7, 0xcd, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xc9, 0x42, - 0xe2, 0x85, 0x03, 0x00, 0x00, + // 462 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xdd, 0x6a, 0xd4, 0x40, + 0x14, 0xc7, 0xc9, 0xd6, 0x8f, 0xee, 0xb4, 0x7e, 0x74, 0x50, 0x89, 0x4b, 0x75, 0x6b, 0x2e, 0xb4, + 0x5e, 0x38, 0x91, 0x8a, 0x4a, 0xf1, 0x4a, 0xb7, 0x5e, 0x08, 0x5e, 0xc8, 0xb4, 0x50, 0x10, 0x61, + 0x49, 0x26, 0x67, 0xe3, 0xd0, 0x24, 0x33, 0x66, 0x4e, 0x28, 0x7d, 0x1c, 0x9f, 0xcd, 0x17, 0x91, + 0x9d, 0xcc, 0x64, 0xd9, 0x91, 0x45, 0x7a, 0x99, 0x9c, 0x5f, 0xfe, 0xf9, 0x9d, 0x33, 0x73, 0xc8, + 0x93, 0x45, 0x75, 0x85, 0x20, 0x8b, 0x2a, 0xcd, 0x8a, 0x5a, 0x36, 0xe9, 0xa5, 0x6a, 0x2f, 0x16, + 0x95, 0xba, 0x64, 0xba, 0x55, 0xa8, 0xe8, 0x5d, 0x5f, 0x66, 0xb6, 0x3c, 0xd9, 0x1f, 0x70, 0xa1, + 0x5a, 0x48, 0x85, 0xaa, 0xb5, 0xac, 0xa0, 0xed, 0xe9, 0xc9, 0xd3, 0xf5, 0xaa, 0x2c, 0xa0, 0x41, + 0xb9, 0x90, 0x43, 0x3d, 0xf8, 0x7a, 0xfd, 0x5f, 0x93, 0x69, 0xa9, 0x54, 0x59, 0x41, 0x6a, 0x9f, + 0xf2, 0x6e, 0x91, 0xa2, 0xac, 0xc1, 0x60, 0x56, 0x6b, 0x07, 0xbc, 0x08, 0x5c, 0x97, 0xe9, 0x78, + 0x35, 0x2f, 0xc0, 0x88, 0x56, 0x6a, 0x94, 0xaa, 0xe9, 0xc1, 0x04, 0xc9, 0xc3, 0x73, 0x97, 0x3d, + 0x6b, 0x21, 0x43, 0xe0, 0xf0, 0xab, 0x03, 0x83, 0xf4, 0x25, 0x19, 0xc9, 0x22, 0x8e, 0x0e, 0xa2, + 0xc3, 0x9d, 0xa3, 0xc7, 0x6c, 0xe8, 0x6d, 0x69, 0xc3, 0xbe, 0x0c, 0xb6, 0x7c, 0x24, 0x0b, 0xfa, + 0x9a, 0xdc, 0x30, 0x1a, 0x44, 0x3c, 0xb2, 0xf0, 0x3e, 0x5b, 0x1f, 0x04, 0xf3, 0xf9, 0xa7, 0x1a, + 0x04, 0xb7, 0x64, 0x12, 0x93, 0x47, 0xe1, 0x5f, 0x8d, 0x56, 0x8d, 0x81, 0x44, 0x93, 0x6d, 0x5f, + 0xb9, 0x8e, 0xc2, 0x31, 0xb9, 0x2d, 0x2a, 0x65, 0xba, 0x16, 0x9c, 0xc5, 0x74, 0x93, 0xc5, 0xac, + 0xc7, 0xb8, 0xe7, 0x93, 0x1f, 0x64, 0xd7, 0xd7, 0xbe, 0x4a, 0x83, 0xf4, 0x1d, 0x19, 0xfb, 0x69, + 0x9b, 0x38, 0x3a, 0xd8, 0x3a, 0xdc, 0x39, 0x8a, 0x37, 0x85, 0xf1, 0x15, 0x4a, 0x1f, 0x90, 0x9b, + 0xa8, 0x2e, 0xa0, 0xb1, 0x02, 0x63, 0xde, 0x3f, 0x24, 0x7f, 0xa2, 0x55, 0xfc, 0x72, 0x00, 0xf4, + 0x03, 0xd9, 0x46, 0xa8, 0x75, 0x95, 0x21, 0xb8, 0xd6, 0xa6, 0x41, 0x6b, 0x1e, 0x3f, 0x73, 0x18, + 0x1f, 0x3e, 0xa0, 0x27, 0xe4, 0x8e, 0xe9, 0xf2, 0xf9, 0xca, 0x6f, 0x64, 0xfd, 0xfe, 0x9b, 0xb0, + 0x6b, 0xba, 0xfc, 0x7c, 0x30, 0xfd, 0x46, 0xe8, 0xbf, 0xf7, 0x21, 0xde, 0xb2, 0x32, 0xcf, 0xc2, + 0x56, 0x3f, 0x5b, 0xf2, 0x64, 0x05, 0xf2, 0x3d, 0x08, 0x5f, 0x25, 0xbf, 0x23, 0x72, 0x2f, 0x18, + 0x30, 0x3d, 0x25, 0x7b, 0xee, 0xce, 0x17, 0x83, 0xb0, 0xeb, 0xf8, 0x79, 0xe0, 0x3b, 0x73, 0x5c, + 0x78, 0x46, 0xf7, 0x45, 0x50, 0xa0, 0xc7, 0x84, 0x08, 0x7b, 0x61, 0x8a, 0x79, 0x86, 0xee, 0xa8, + 0x27, 0xac, 0xdf, 0x06, 0xe6, 0xb7, 0x81, 0x9d, 0xf9, 0x6d, 0xe0, 0x63, 0x47, 0x7f, 0xc4, 0x4f, + 0xef, 0xbf, 0xbf, 0x2d, 0x25, 0xfe, 0xec, 0x72, 0x26, 0x54, 0x9d, 0x5a, 0x01, 0xd5, 0x96, 0xe9, + 0xb0, 0x28, 0x25, 0x34, 0xa9, 0xce, 0x5f, 0x95, 0x2a, 0x5d, 0xdf, 0x9d, 0xfc, 0x96, 0xcd, 0x7d, + 0xf3, 0x37, 0x00, 0x00, 0xff, 0xff, 0x73, 0xf7, 0xbc, 0xff, 0x00, 0x04, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/workflow.pb.validate.go b/gen/pb-go/flyteidl/admin/workflow.pb.validate.go index a7ea425ad..a0dfe0b0c 100644 --- a/gen/pb-go/flyteidl/admin/workflow.pb.validate.go +++ b/gen/pb-go/flyteidl/admin/workflow.pb.validate.go @@ -389,6 +389,16 @@ func (m *WorkflowSpec) Validate() error { } + if v, ok := interface{}(m.GetEntityDescription()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WorkflowSpecValidationError{ + field: "EntityDescription", + reason: "embedded message failed validation", + cause: err, + } + } + } + return nil } diff --git a/gen/pb-go/flyteidl/service/admin.pb.go b/gen/pb-go/flyteidl/service/admin.pb.go index 0aef2611e..a59069f9f 100644 --- a/gen/pb-go/flyteidl/service/admin.pb.go +++ b/gen/pb-go/flyteidl/service/admin.pb.go @@ -30,213 +30,217 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("flyteidl/service/admin.proto", fileDescriptor_5cfa31da1d67295d) } var fileDescriptor_5cfa31da1d67295d = []byte{ - // 3295 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0x5d, 0x8c, 0x1c, 0xc5, - 0x9d, 0x57, 0x8f, 0x6d, 0x4e, 0xd7, 0x60, 0x6c, 0x97, 0xf1, 0x61, 0x37, 0xb6, 0x29, 0xc6, 0x67, - 0x7b, 0x77, 0xbd, 0xbb, 0xb3, 0x7c, 0x1a, 0x1b, 0x30, 0xb4, 0xbf, 0x56, 0x8b, 0xc1, 0xa0, 0x3d, - 0x8e, 0x43, 0x3e, 0xee, 0x56, 0x35, 0xdd, 0x35, 0x33, 0x65, 0xf7, 0x74, 0xcf, 0x75, 0x55, 0xaf, - 0x3d, 0x58, 0x96, 0x10, 0x3a, 0x92, 0x08, 0x25, 0x2f, 0x1d, 0x29, 0x11, 0x28, 0x01, 0x91, 0x3c, - 0x81, 0x40, 0x4a, 0x82, 0xc4, 0x2b, 0x51, 0xa4, 0x48, 0x49, 0x84, 0x78, 0x41, 0xca, 0x97, 0x94, - 0x28, 0x91, 0x92, 0xa7, 0x24, 0xe2, 0x81, 0x48, 0x79, 0x09, 0x4a, 0x54, 0xd5, 0x55, 0xfd, 0xdd, - 0x3d, 0x3d, 0x8b, 0x89, 0x84, 0x94, 0x27, 0xaf, 0xfb, 0xff, 0xaf, 0xea, 0xff, 0xef, 0x57, 0xff, - 0xaf, 0xae, 0xaa, 0xd1, 0xf7, 0xf6, 0x9c, 0x31, 0xc3, 0xc4, 0x76, 0x3a, 0x14, 0xfb, 0xeb, 0xc4, - 0xc2, 0x1d, 0x64, 0x0f, 0x89, 0xbb, 0x38, 0xf2, 0x3d, 0xe6, 0x81, 0xed, 0x4a, 0xba, 0x28, 0xa5, - 0xc6, 0xde, 0xbe, 0xe7, 0xf5, 0x1d, 0xdc, 0x41, 0x23, 0xd2, 0x41, 0xae, 0xeb, 0x31, 0xc4, 0x88, - 0xe7, 0xd2, 0x48, 0xdf, 0x48, 0x66, 0x13, 0xb3, 0x74, 0x46, 0xbe, 0x77, 0x11, 0x5b, 0x4c, 0x4a, - 0x17, 0xcb, 0xa5, 0x6b, 0xb6, 0x37, 0x44, 0xc4, 0x5d, 0x43, 0x8c, 0xf9, 0xa4, 0x1b, 0x30, 0xac, - 0x66, 0xdb, 0x93, 0xd3, 0x67, 0x88, 0x5e, 0x92, 0xa2, 0x7d, 0x39, 0xd1, 0x65, 0xcf, 0xbf, 0xd4, - 0x73, 0xbc, 0xcb, 0x52, 0x3c, 0x53, 0x21, 0x2e, 0xbe, 0x03, 0xe6, 0x34, 0x1d, 0x14, 0xb8, 0xd6, - 0x60, 0x6d, 0xe4, 0x20, 0xc9, 0x81, 0x61, 0xe4, 0x34, 0xf0, 0x3a, 0x76, 0x15, 0xa2, 0xfd, 0x79, - 0xd9, 0x15, 0x6c, 0x05, 0x9c, 0x10, 0x29, 0x3f, 0x9c, 0x93, 0x0f, 0x11, 0xb3, 0x06, 0xa8, 0xeb, - 0xe0, 0x35, 0x1f, 0x53, 0x2f, 0xf0, 0x2d, 0x2c, 0x15, 0x0f, 0xe4, 0x14, 0x5d, 0xcf, 0xc6, 0x6b, - 0xf9, 0xd9, 0x0e, 0x94, 0xf0, 0x51, 0x50, 0xca, 0x2f, 0xc1, 0x3a, 0xf6, 0x69, 0x22, 0xbd, 0x2d, - 0x27, 0xb5, 0xbc, 0xe1, 0x30, 0x16, 0xce, 0x8b, 0x7f, 0xac, 0x85, 0x3e, 0x76, 0x17, 0xe8, 0x65, - 0xd4, 0xef, 0x63, 0xbf, 0xe3, 0x8d, 0xc4, 0xfa, 0x16, 0xd7, 0xfa, 0xae, 0x57, 0x07, 0xfa, 0x4d, - 0x26, 0x9f, 0xe4, 0x3f, 0x22, 0xd7, 0x00, 0x3f, 0x6c, 0xe9, 0xfa, 0x29, 0x1f, 0x23, 0x86, 0x9f, - 0x42, 0xf4, 0x12, 0xb8, 0x23, 0x5e, 0xee, 0xc5, 0xc8, 0xa5, 0xf8, 0xd3, 0x48, 0xbe, 0x8a, 0xff, - 0x2f, 0xc0, 0x94, 0x19, 0xed, 0x3a, 0x15, 0x3a, 0xf2, 0x5c, 0x8a, 0xdb, 0x1f, 0x69, 0xa1, 0xf9, - 0xa1, 0x66, 0x1c, 0x8a, 0x1e, 0x43, 0xe4, 0xda, 0xd0, 0xc7, 0x7d, 0x42, 0x19, 0xf6, 0x21, 0x82, - 0x9c, 0x02, 0x68, 0xe3, 0x1e, 0x71, 0x89, 0xe0, 0xe0, 0xd1, 0x93, 0xfa, 0xa6, 0x7b, 0x96, 0x96, - 0xc0, 0x03, 0xfa, 0xb1, 0x55, 0xcc, 0x02, 0xdf, 0xc5, 0x36, 0xec, 0x79, 0x3e, 0xec, 0x22, 0x3e, - 0x4c, 0xbc, 0x15, 0xb2, 0x01, 0x62, 0x70, 0x88, 0xc6, 0x70, 0x80, 0xd6, 0x31, 0xec, 0x21, 0xe2, - 0x60, 0x1b, 0xae, 0x23, 0x87, 0xd8, 0x28, 0x9a, 0x03, 0xf3, 0x39, 0x8e, 0x81, 0xff, 0xd5, 0x9f, - 0xcd, 0xcc, 0x81, 0xb2, 0x33, 0xf8, 0xb8, 0x87, 0x7d, 0xec, 0x5a, 0x98, 0x42, 0xe4, 0x42, 0x62, - 0x63, 0x97, 0x11, 0x0b, 0x39, 0x90, 0xff, 0xcb, 0xc6, 0x91, 0xce, 0x00, 0x51, 0x88, 0x1c, 0x1f, - 0x23, 0x7b, 0x0c, 0xbb, 0x18, 0xbb, 0xb1, 0xe9, 0xd8, 0x5e, 0x7c, 0xe1, 0xc3, 0xdf, 0x7d, 0xb5, - 0x05, 0xda, 0x5b, 0x45, 0x28, 0xad, 0xdf, 0x29, 0x56, 0x93, 0x1e, 0xd7, 0xe6, 0xc0, 0xf7, 0x34, - 0xfd, 0x5f, 0x96, 0x31, 0x13, 0x24, 0xc2, 0x3c, 0x43, 0x4f, 0x74, 0x79, 0xc8, 0x2c, 0x63, 0xa6, - 0x38, 0xbc, 0xa5, 0x8c, 0xc3, 0xb6, 0x17, 0x9a, 0x87, 0x8d, 0x83, 0xab, 0x98, 0xf9, 0x04, 0xaf, - 0x73, 0xd6, 0x20, 0xbe, 0x42, 0x28, 0x23, 0x6e, 0xbf, 0x40, 0x99, 0xb0, 0xe3, 0x61, 0xf0, 0x50, - 0xc6, 0x8e, 0xce, 0x55, 0x62, 0x2f, 0xca, 0xf8, 0xbc, 0x26, 0xfe, 0x13, 0x05, 0x69, 0xf4, 0xb7, - 0x8b, 0x86, 0x38, 0xfa, 0x4b, 0x7a, 0xd7, 0x35, 0xf0, 0x6b, 0x4d, 0xbf, 0xf1, 0x31, 0x42, 0x85, - 0xd5, 0x2b, 0x36, 0x05, 0x4b, 0x79, 0xb3, 0xce, 0xa3, 0x21, 0xb6, 0xcf, 0x08, 0x6e, 0x56, 0x04, - 0x57, 0x3d, 0x82, 0x7d, 0x3e, 0x42, 0x01, 0x99, 0x6d, 0x3c, 0xa2, 0xed, 0x87, 0xe6, 0x69, 0xe3, - 0xe4, 0x59, 0xcc, 0xac, 0x41, 0x25, 0x2e, 0xb9, 0x22, 0x7c, 0x0c, 0x85, 0x22, 0xee, 0xb8, 0x12, - 0x71, 0x47, 0x01, 0x83, 0x3d, 0xe2, 0x30, 0xec, 0xd3, 0x08, 0xfa, 0x41, 0x70, 0x20, 0x0d, 0x7d, - 0x8d, 0xd8, 0xb4, 0x73, 0x35, 0x81, 0x2e, 0x71, 0x83, 0x3f, 0x68, 0xfa, 0xbf, 0x2a, 0x80, 0x14, - 0x1c, 0xc8, 0x1b, 0xbb, 0x2a, 0xe3, 0x39, 0x8d, 0x68, 0x77, 0xd9, 0xd2, 0x08, 0x00, 0xaf, 0x6a, - 0xa1, 0x79, 0xcc, 0x38, 0x5a, 0x8f, 0xa0, 0xde, 0xec, 0x67, 0xc1, 0xd2, 0xb4, 0x2b, 0x76, 0x61, - 0x06, 0x1c, 0x6a, 0x36, 0x06, 0xfc, 0xa2, 0xa5, 0xdf, 0x1c, 0x45, 0xdc, 0x7f, 0xc9, 0xd4, 0x09, - 0x0e, 0xe6, 0xd1, 0x28, 0x49, 0x36, 0xa6, 0x0f, 0x4d, 0x52, 0x93, 0x71, 0xfd, 0x17, 0x2d, 0x34, - 0x7f, 0xa6, 0x19, 0x73, 0xe5, 0x71, 0xad, 0x12, 0xf6, 0xe7, 0x39, 0xb6, 0xff, 0xad, 0xbd, 0x43, - 0xb1, 0xad, 0xe0, 0x88, 0xf8, 0xfe, 0x81, 0xa6, 0xdf, 0xb8, 0x8c, 0x59, 0x4c, 0xec, 0xe4, 0x18, - 0xdf, 0x5d, 0xc5, 0x69, 0xfb, 0x72, 0x68, 0x1e, 0x31, 0x66, 0x4b, 0xe3, 0xbc, 0x8c, 0x42, 0x61, - 0xd7, 0x29, 0x60, 0x16, 0xec, 0x9a, 0x3a, 0xde, 0xff, 0xa4, 0xe9, 0xdb, 0xb8, 0x2b, 0x2b, 0x4b, - 0x3e, 0xf3, 0x98, 0xbf, 0x16, 0x9a, 0xe7, 0x8c, 0x95, 0x28, 0x62, 0x26, 0xc0, 0x6c, 0x1c, 0xfa, - 0xb3, 0xe0, 0x70, 0x9e, 0x89, 0xaa, 0xf0, 0xff, 0x9b, 0xa6, 0x6f, 0x4d, 0xe3, 0x6d, 0x98, 0x02, - 0xf6, 0x56, 0xad, 0x9c, 0xc0, 0xf4, 0xa6, 0x16, 0x9a, 0x0f, 0x19, 0x0f, 0xe4, 0xd2, 0x40, 0x09, - 0xa2, 0x7a, 0x18, 0x36, 0xb8, 0x67, 0x23, 0x0b, 0x7a, 0x61, 0x1e, 0xcc, 0x35, 0x1f, 0x07, 0x7e, - 0xdf, 0xd2, 0xb7, 0x47, 0xc1, 0xfa, 0x98, 0xe8, 0x91, 0x9e, 0x74, 0x90, 0x0b, 0x0e, 0xe7, 0xf1, - 0x25, 0xb2, 0x6c, 0x5a, 0x98, 0x99, 0xac, 0x28, 0x13, 0xc3, 0x27, 0x5a, 0x68, 0xfe, 0x52, 0x33, - 0x16, 0xca, 0x13, 0x43, 0xd4, 0x9f, 0x41, 0xde, 0x9f, 0x7d, 0x9e, 0x73, 0xc3, 0x9e, 0xf6, 0x2d, - 0x8a, 0xfa, 0x54, 0xc7, 0x29, 0xd2, 0xc3, 0xfb, 0x9a, 0xbe, 0x75, 0x19, 0xb3, 0x14, 0xc9, 0x93, - 0x13, 0x84, 0x51, 0xcd, 0x2e, 0x0f, 0x9c, 0x45, 0x63, 0xbe, 0x34, 0x45, 0x54, 0x90, 0x29, 0x2c, - 0x3c, 0x0b, 0x4e, 0x97, 0x59, 0x38, 0x75, 0xa2, 0xf8, 0x58, 0xd3, 0x77, 0x2e, 0x63, 0x66, 0x5a, - 0x8c, 0xac, 0xd7, 0x7a, 0x4e, 0x5e, 0xa3, 0x09, 0xb6, 0xaf, 0x69, 0xa1, 0xf9, 0xb8, 0x71, 0x2e, - 0x06, 0xc7, 0x06, 0x18, 0x22, 0x31, 0x4f, 0x06, 0x9b, 0x34, 0x06, 0xd2, 0x11, 0xb6, 0x78, 0x5a, - 0xb0, 0x61, 0x77, 0x2c, 0x03, 0x49, 0x2d, 0x6d, 0x26, 0xa0, 0x1e, 0x01, 0x27, 0x14, 0xf6, 0x68, - 0xb6, 0xb5, 0x29, 0x29, 0xe0, 0xdd, 0xc2, 0x2e, 0x1e, 0xe2, 0x79, 0x50, 0x14, 0x1c, 0x99, 0x84, - 0x3b, 0x9d, 0x3e, 0xf6, 0x57, 0x63, 0x17, 0x09, 0xe4, 0xff, 0xb5, 0x54, 0x56, 0xac, 0x07, 0x4f, - 0x1b, 0xa3, 0x5f, 0x02, 0x8b, 0xb5, 0xe8, 0x8b, 0xc9, 0xf1, 0x63, 0x4d, 0xdf, 0xc1, 0xed, 0x49, - 0xac, 0xfb, 0xcc, 0xcb, 0xc1, 0xf3, 0x69, 0xe4, 0x13, 0x1c, 0xba, 0x71, 0x3d, 0x48, 0x25, 0xc4, - 0x14, 0xe4, 0xaa, 0x92, 0xf0, 0xe5, 0x56, 0x54, 0x02, 0xd3, 0xab, 0xdb, 0xa8, 0x28, 0x4c, 0x5a, - 0xd5, 0x77, 0xb4, 0xd0, 0x7c, 0xc4, 0x38, 0xd1, 0x08, 0x5b, 0x3d, 0xa0, 0x8b, 0xe0, 0xe8, 0x06, - 0x83, 0xf8, 0x42, 0x07, 0x2c, 0x4c, 0x35, 0x14, 0x7c, 0xff, 0x06, 0x7d, 0xfb, 0x7f, 0x8e, 0xec, - 0xc6, 0xf5, 0x21, 0xd2, 0x6d, 0x50, 0x1f, 0x94, 0xa2, 0xac, 0x0f, 0x3f, 0xdf, 0x12, 0x9a, 0x2f, - 0x6e, 0x31, 0x5e, 0xd8, 0x12, 0x3d, 0x17, 0x6e, 0x4f, 0x19, 0x62, 0x01, 0x85, 0x5e, 0xaf, 0x49, - 0x7a, 0x83, 0x26, 0x83, 0x43, 0x8f, 0x32, 0xe8, 0xb9, 0xe5, 0x69, 0x22, 0x4a, 0xfa, 0x7d, 0xb2, - 0x8e, 0x5d, 0xa8, 0xd6, 0x7d, 0x1e, 0x46, 0x38, 0xe7, 0xa1, 0xa0, 0x07, 0x5a, 0xc8, 0x85, 0xdd, - 0x38, 0xde, 0x10, 0xe3, 0xdf, 0xa2, 0x64, 0x88, 0x17, 0xe1, 0x4a, 0x0f, 0xb2, 0x01, 0xa1, 0xd0, - 0x42, 0x8e, 0x03, 0x29, 0x66, 0x34, 0x57, 0xb4, 0x98, 0x17, 0x0f, 0x72, 0xed, 0xc4, 0x56, 0xf5, - 0x6e, 0x92, 0x14, 0x8e, 0x48, 0x6d, 0x5e, 0x00, 0xf4, 0x31, 0x0d, 0x1c, 0xc6, 0x01, 0x26, 0x93, - 0x5f, 0x26, 0x8e, 0xc3, 0x6d, 0x10, 0x15, 0x87, 0x2b, 0xf5, 0x3c, 0x7f, 0x88, 0x7d, 0x67, 0x5c, - 0x96, 0x05, 0x94, 0xf2, 0x10, 0xd9, 0x18, 0x12, 0x37, 0x65, 0x42, 0x92, 0x16, 0xd2, 0xfa, 0xc4, - 0x8d, 0xde, 0xa4, 0x32, 0x44, 0x66, 0x7c, 0x34, 0x7a, 0x11, 0xae, 0xb8, 0xe2, 0xbd, 0x62, 0x47, - 0xa4, 0x99, 0x19, 0x03, 0x64, 0x43, 0x04, 0xa9, 0x35, 0xc0, 0x76, 0xe0, 0x60, 0x88, 0x28, 0xf5, - 0x2c, 0x82, 0x18, 0xb6, 0x21, 0xe1, 0xef, 0x60, 0x03, 0x48, 0xd8, 0x7c, 0xf4, 0xe6, 0x58, 0x49, - 0xbd, 0xda, 0x26, 0x14, 0x75, 0x1d, 0x6c, 0x4b, 0x8e, 0x71, 0x52, 0x89, 0x6b, 0x2d, 0x27, 0x14, - 0x76, 0x31, 0xa7, 0x98, 0x62, 0x96, 0x63, 0x5f, 0x94, 0xe9, 0x52, 0x6b, 0x52, 0xa6, 0xe0, 0xa2, - 0x25, 0xd8, 0x8d, 0x0c, 0x11, 0x31, 0xb6, 0x62, 0x5c, 0x97, 0x42, 0xc9, 0x4b, 0xff, 0xb7, 0x34, - 0x7d, 0x5b, 0xd4, 0xf6, 0x9c, 0x51, 0xbb, 0x3a, 0xa0, 0xf0, 0x3d, 0x15, 0x8b, 0xb2, 0x0d, 0xd6, - 0xe1, 0x89, 0x7a, 0x32, 0x7e, 0x4e, 0x84, 0xe6, 0x7e, 0x63, 0xaf, 0xea, 0xae, 0x92, 0x6e, 0x33, - 0xd9, 0x48, 0x12, 0xb0, 0x6e, 0x6d, 0x03, 0x05, 0x2b, 0x96, 0x88, 0xfe, 0xe4, 0xbb, 0x9a, 0xbe, - 0x63, 0x15, 0x47, 0x50, 0x13, 0x33, 0x67, 0x2a, 0x5f, 0xaf, 0x74, 0xa7, 0x36, 0x74, 0x25, 0x34, - 0xa1, 0xb1, 0x5f, 0x0d, 0xaf, 0x31, 0x15, 0xb6, 0x6f, 0x2b, 0x9a, 0xda, 0xf1, 0xe5, 0x40, 0x6e, - 0xf3, 0x37, 0xb7, 0xe8, 0xdb, 0x57, 0xb1, 0xe5, 0xad, 0x63, 0x3f, 0x31, 0xf9, 0x70, 0x8d, 0xc9, - 0x42, 0x75, 0x6a, 0x8b, 0xdf, 0xdd, 0x1c, 0x9a, 0x5f, 0xd9, 0x6c, 0xbc, 0xb4, 0x79, 0x15, 0x5b, - 0x42, 0xc2, 0xdd, 0x6b, 0xe4, 0xe3, 0x75, 0xe2, 0x05, 0xd4, 0x19, 0x2f, 0xf8, 0x81, 0x5b, 0x02, - 0x22, 0x8a, 0x1c, 0xe1, 0x5b, 0x9e, 0xeb, 0x8c, 0x79, 0x32, 0xf3, 0x99, 0x12, 0xbb, 0x7d, 0xd8, - 0xf3, 0xbd, 0xa1, 0xf0, 0x43, 0x07, 0x51, 0x06, 0x2f, 0xb9, 0xde, 0x65, 0x57, 0x74, 0xaf, 0x81, - 0x8f, 0xe1, 0xc8, 0x23, 0x2e, 0x13, 0x81, 0x28, 0x6d, 0x86, 0x43, 0xcf, 0xc6, 0xf3, 0x30, 0xa0, - 0xbc, 0xd6, 0x59, 0x62, 0xd7, 0x0e, 0x5a, 0x03, 0xe4, 0xf6, 0xb9, 0xc7, 0xab, 0xb2, 0x3f, 0x42, - 0x3e, 0x1a, 0x62, 0x5e, 0x26, 0xa0, 0xe7, 0xc3, 0x20, 0xc9, 0xa3, 0x2a, 0x0b, 0x79, 0x51, 0x80, - 0x25, 0x3c, 0xc3, 0xa7, 0x78, 0x48, 0x11, 0x0a, 0xf1, 0x15, 0xe6, 0xe3, 0x21, 0x76, 0xc6, 0xfc, - 0x15, 0xbd, 0xc0, 0xe1, 0x11, 0xe5, 0xcb, 0x57, 0x0b, 0x43, 0xe9, 0x98, 0x32, 0x3c, 0x84, 0xd8, - 0xf7, 0x3d, 0x9f, 0x8a, 0x28, 0xeb, 0x8e, 0x9f, 0x43, 0x2e, 0x23, 0x2e, 0xef, 0xb9, 0x03, 0x87, - 0x51, 0xe8, 0x90, 0x4b, 0x18, 0x2e, 0xc0, 0xc7, 0x3c, 0x2a, 0x52, 0xf6, 0xb9, 0xfb, 0x29, 0xb4, - 0x9c, 0x80, 0xb7, 0xc7, 0xf3, 0xb0, 0x1b, 0xf4, 0x29, 0x0f, 0xe1, 0x91, 0x83, 0x18, 0x4f, 0x24, - 0xdc, 0x40, 0xe2, 0x52, 0x86, 0xba, 0xc4, 0x21, 0x6c, 0x3c, 0x0f, 0x87, 0x88, 0x57, 0x3b, 0xac, - 0x18, 0xa0, 0x3c, 0x31, 0x5f, 0x76, 0x29, 0xf3, 0x31, 0x8a, 0x5f, 0xae, 0x64, 0x70, 0x26, 0x2d, - 0x8b, 0xb6, 0x29, 0xe9, 0xec, 0x3c, 0x9f, 0x93, 0x92, 0xe1, 0xc8, 0x19, 0xa7, 0xad, 0x4f, 0x5c, - 0x27, 0x5a, 0x10, 0xf9, 0x81, 0xd0, 0xc5, 0x16, 0x0a, 0x28, 0xe6, 0x86, 0xfa, 0x98, 0xf9, 0x63, - 0x88, 0xaf, 0x0c, 0x50, 0x40, 0xc5, 0xc2, 0x89, 0xf4, 0x39, 0xf0, 0x02, 0xc7, 0x86, 0x96, 0x37, - 0x1c, 0x39, 0x98, 0x61, 0x48, 0x7a, 0x90, 0x37, 0xa3, 0x36, 0x44, 0x7d, 0x44, 0xa4, 0x83, 0xde, - 0xde, 0x36, 0x4a, 0x1d, 0x54, 0xbc, 0x58, 0x6e, 0x09, 0xdc, 0xb4, 0x8c, 0x59, 0xe2, 0x9b, 0x47, - 0xaa, 0xbe, 0x1b, 0x63, 0x95, 0x54, 0xf7, 0xbf, 0xa7, 0xd2, 0x3f, 0xdb, 0x17, 0x43, 0x73, 0xce, - 0x98, 0xa9, 0xdf, 0x1f, 0xc8, 0x45, 0xd3, 0x51, 0x70, 0x6f, 0x89, 0xb1, 0x0d, 0x7a, 0xde, 0x9f, - 0x6a, 0xfa, 0xb6, 0xa8, 0x26, 0x37, 0xc9, 0x5e, 0xd9, 0xf2, 0x7f, 0x78, 0xa2, 0x9e, 0x0c, 0x31, - 0x3f, 0x34, 0x3b, 0xc6, 0x82, 0x2c, 0xfd, 0x49, 0x08, 0x75, 0xb1, 0xe3, 0xb9, 0x7d, 0xb1, 0x89, - 0xe6, 0x41, 0x69, 0xa7, 0xac, 0xd8, 0x11, 0xaa, 0xe3, 0xc6, 0xc6, 0x50, 0xf1, 0xd5, 0x79, 0xa1, - 0xa5, 0x6f, 0x4f, 0xaf, 0xce, 0x69, 0xc4, 0x10, 0xe8, 0x34, 0x59, 0x21, 0xae, 0xa9, 0x20, 0x2e, - 0x35, 0x1f, 0x20, 0xb1, 0xbe, 0xa4, 0x85, 0xe6, 0x19, 0xe3, 0x54, 0xbc, 0x7a, 0x51, 0xf0, 0x72, - 0xa7, 0xf3, 0x02, 0xc6, 0xff, 0xb4, 0x11, 0x43, 0x51, 0xd4, 0x35, 0x59, 0xd8, 0x07, 0xc1, 0x71, - 0x45, 0x01, 0x1f, 0x38, 0xe5, 0xea, 0xfe, 0x48, 0xd3, 0x6f, 0xe6, 0xdd, 0x69, 0x6c, 0x6d, 0xc3, - 0x66, 0x77, 0x5f, 0xe5, 0xca, 0xaa, 0xad, 0xdc, 0x07, 0x8d, 0xe3, 0x55, 0x3b, 0x20, 0xa9, 0x98, - 0xac, 0x6b, 0x73, 0x17, 0xc0, 0x91, 0x29, 0x16, 0x17, 0xfc, 0x59, 0xd3, 0xc1, 0x53, 0xd8, 0x1f, - 0x12, 0x37, 0xe3, 0xab, 0xb3, 0x95, 0x96, 0xc6, 0xca, 0x0a, 0xd4, 0x5c, 0x13, 0x55, 0xb9, 0x8a, - 0x5f, 0xd0, 0x42, 0xf3, 0x94, 0x61, 0xc6, 0x82, 0xf4, 0x77, 0x5a, 0x49, 0x31, 0x48, 0xda, 0x31, - 0xe2, 0xca, 0x2e, 0x47, 0xbc, 0x53, 0xba, 0xf1, 0xdc, 0xc6, 0xdd, 0xf8, 0xaf, 0x9a, 0x70, 0xe3, - 0xf3, 0x9e, 0x8d, 0x6b, 0x8a, 0x60, 0x46, 0x9c, 0x4a, 0x32, 0xfb, 0x6a, 0x15, 0xdb, 0xaf, 0x69, - 0xa1, 0x79, 0xc8, 0xf8, 0xf7, 0xd2, 0x4c, 0xe3, 0x7a, 0x36, 0xce, 0x3b, 0xe3, 0x08, 0xb8, 0x0a, - 0x48, 0xf6, 0xac, 0x2b, 0x42, 0x13, 0xff, 0x77, 0x2d, 0x0f, 0x2d, 0x23, 0x49, 0xe3, 0xcc, 0x08, - 0x92, 0xfe, 0x4a, 0xcc, 0x4e, 0xec, 0x6b, 0xe0, 0x95, 0x96, 0x0e, 0xb8, 0xcb, 0x65, 0xec, 0xa6, - 0xc5, 0xc6, 0x25, 0x23, 0x4f, 0x7b, 0xf2, 0x1d, 0x13, 0x35, 0xdb, 0xef, 0x6a, 0xa1, 0x79, 0xbf, - 0x71, 0x5f, 0xce, 0x9d, 0xb3, 0xf8, 0xeb, 0x5d, 0x39, 0x00, 0xb4, 0x92, 0x97, 0x78, 0x8f, 0xb2, - 0x82, 0x9d, 0x72, 0x79, 0xcc, 0x51, 0xb9, 0x38, 0x8a, 0xee, 0x8f, 0x36, 0xeb, 0x7b, 0x8a, 0xe4, - 0x9c, 0xf5, 0x7c, 0x71, 0x0a, 0xd5, 0xa9, 0x45, 0x2e, 0xb5, 0xa6, 0xa4, 0xea, 0x93, 0x4d, 0xa1, - 0xb9, 0x6c, 0x9c, 0x89, 0xa8, 0xb2, 0x06, 0xc4, 0xb1, 0x0b, 0x3c, 0x45, 0xfd, 0x5b, 0xb4, 0x5f, - 0x21, 0xfa, 0xf0, 0x38, 0x34, 0xc4, 0x49, 0x49, 0xce, 0xa3, 0xde, 0xda, 0x04, 0xde, 0xd8, 0xa4, - 0xb8, 0x13, 0x13, 0xfa, 0x38, 0x7f, 0x46, 0x4a, 0x3b, 0x57, 0xb3, 0x0f, 0xd6, 0x94, 0x87, 0x64, - 0x9e, 0x54, 0xf0, 0x3b, 0xf5, 0xd0, 0x98, 0xfa, 0xa9, 0x47, 0x4a, 0xff, 0x6d, 0x32, 0x4e, 0x39, - 0x78, 0x99, 0xb6, 0x3c, 0xd0, 0xaa, 0xc5, 0xa0, 0x74, 0x6a, 0x8c, 0x55, 0x2a, 0x95, 0x56, 0x29, - 0x05, 0xf5, 0x31, 0x53, 0xa6, 0x23, 0xba, 0xa7, 0x35, 0xc4, 0x18, 0x1e, 0x8e, 0xd8, 0x35, 0xf0, - 0x4e, 0x4b, 0xbf, 0x25, 0x9f, 0x8d, 0x44, 0x61, 0x3d, 0x32, 0x29, 0x23, 0xa5, 0x8b, 0xea, 0x7c, - 0x33, 0x65, 0x99, 0x8a, 0xdf, 0xd3, 0x42, 0xd3, 0x34, 0x1e, 0x9e, 0xb6, 0xa0, 0x96, 0xe5, 0xaf, - 0x54, 0x9c, 0x8a, 0x62, 0xfa, 0x0f, 0x4a, 0x62, 0x5f, 0xd7, 0xf4, 0x6d, 0xab, 0x72, 0x2f, 0xf9, - 0xc9, 0x68, 0xc6, 0x62, 0x8f, 0x25, 0x05, 0x4a, 0xaf, 0xb2, 0xc7, 0x2a, 0xe8, 0x49, 0x9a, 0xee, - 0x0e, 0xcd, 0x5d, 0xc6, 0xce, 0xd5, 0x64, 0xd3, 0x5d, 0x5d, 0xe3, 0x10, 0xc8, 0x77, 0xb5, 0xb7, - 0x2b, 0xe4, 0xf2, 0xb9, 0xf8, 0x2c, 0xfc, 0xa2, 0xa6, 0x6f, 0x8d, 0xda, 0x32, 0x65, 0xd7, 0xad, - 0x15, 0xef, 0x33, 0x0e, 0x56, 0x08, 0x72, 0xad, 0xde, 0x7d, 0xa1, 0xb9, 0xd3, 0xd8, 0x21, 0x5b, - 0xbd, 0x9c, 0x11, 0x86, 0xb1, 0x2b, 0x6f, 0x04, 0x27, 0x4a, 0xd4, 0xb9, 0x17, 0x35, 0xfd, 0x26, - 0x9e, 0x62, 0xe4, 0xac, 0x14, 0xb4, 0x2b, 0xde, 0x57, 0x7b, 0x56, 0xab, 0x46, 0xb7, 0x8f, 0x86, - 0xe6, 0x5e, 0xc3, 0x88, 0xf2, 0x54, 0xb2, 0x8d, 0xaf, 0xcc, 0x91, 0x69, 0x1b, 0x80, 0x02, 0x29, - 0xe0, 0x57, 0x9a, 0xbe, 0x33, 0x7b, 0x86, 0x7a, 0x66, 0x1d, 0xbb, 0x0c, 0x2c, 0x4c, 0x6c, 0x04, - 0x85, 0x9e, 0xb2, 0x6c, 0xb1, 0xa9, 0xba, 0xa4, 0xad, 0x2f, 0x7c, 0xbc, 0xe6, 0xfb, 0x5e, 0xee, - 0xd7, 0xf0, 0xcf, 0x0f, 0xdf, 0xe6, 0xfe, 0x8d, 0xe0, 0x68, 0x80, 0x28, 0x86, 0xcc, 0x47, 0x2e, - 0x4d, 0x1d, 0x01, 0xec, 0x6b, 0xef, 0x8e, 0x9b, 0x0d, 0x3e, 0x84, 0x66, 0xcf, 0x31, 0x7f, 0x1c, - 0xef, 0x56, 0x88, 0xa0, 0x13, 0xd8, 0x66, 0x6b, 0xe3, 0x31, 0x83, 0x6b, 0xae, 0x89, 0xaa, 0xc4, - 0xb4, 0x26, 0xce, 0xc9, 0x62, 0x4c, 0xd9, 0x80, 0x6c, 0x8c, 0x27, 0x75, 0xe8, 0x22, 0xf1, 0xf0, - 0x89, 0x72, 0x58, 0x78, 0x29, 0xab, 0xc0, 0x22, 0x44, 0xcd, 0xb0, 0x94, 0xa9, 0x96, 0x63, 0xc9, - 0x96, 0xb2, 0x4f, 0x81, 0x25, 0xbe, 0x3f, 0xf2, 0xc6, 0x26, 0xd1, 0xe7, 0x65, 0x4c, 0x28, 0xf6, - 0x79, 0x19, 0x71, 0x5d, 0x9f, 0x97, 0x51, 0x6c, 0xbf, 0xdf, 0xaa, 0xee, 0xf3, 0xca, 0xaa, 0xf2, - 0x37, 0x5a, 0xe0, 0xe5, 0x56, 0xe6, 0x7e, 0x45, 0x2e, 0x49, 0x36, 0xae, 0xbe, 0x53, 0x94, 0xdb, - 0xc6, 0xf5, 0x75, 0x42, 0x41, 0x2d, 0xad, 0xa0, 0x65, 0x25, 0xb3, 0x58, 0x23, 0x4b, 0x8b, 0x62, - 0xb1, 0x0a, 0x7e, 0x28, 0x9b, 0xd2, 0x0c, 0xc9, 0x25, 0x4d, 0x69, 0x46, 0x5e, 0xdb, 0x69, 0x15, - 0x34, 0xc5, 0x0d, 0xaa, 0x62, 0x53, 0x9a, 0x5d, 0xac, 0xfa, 0xa6, 0xf4, 0x6d, 0x0d, 0xbc, 0xa9, - 0x55, 0x2e, 0x62, 0xe3, 0x15, 0x6c, 0xba, 0x7c, 0xcd, 0xd6, 0xae, 0x7a, 0xe1, 0xc0, 0x6f, 0x36, - 0x89, 0xde, 0x22, 0x43, 0x45, 0x79, 0x6f, 0x91, 0x8f, 0x82, 0xda, 0xde, 0xa2, 0x5c, 0x59, 0x86, - 0xf5, 0x1f, 0x5b, 0x1b, 0xea, 0x2d, 0xca, 0x62, 0xe6, 0xf5, 0x16, 0x78, 0xb5, 0x95, 0xe9, 0x2e, - 0xfe, 0x19, 0x38, 0xf9, 0xc0, 0x79, 0xaf, 0xa5, 0xef, 0xcb, 0xb4, 0x1b, 0xa7, 0xc5, 0x94, 0x66, - 0x7c, 0xbf, 0x13, 0xdc, 0x53, 0x51, 0xd1, 0xf3, 0x8a, 0xd9, 0x8d, 0xa8, 0x7b, 0xa7, 0x1c, 0x25, - 0x57, 0xff, 0x3b, 0x5a, 0x68, 0x3e, 0x63, 0x3c, 0x9d, 0x3a, 0x92, 0xb2, 0x02, 0xca, 0xbc, 0x21, - 0x79, 0x0e, 0xdb, 0x50, 0xdd, 0xf5, 0x84, 0xc9, 0xed, 0xd3, 0xc2, 0x59, 0x43, 0xdc, 0xdf, 0x2c, - 0x44, 0xdc, 0x40, 0xcb, 0x1b, 0x76, 0x89, 0x2b, 0x6e, 0x26, 0x08, 0xa7, 0x78, 0xc2, 0x78, 0x34, - 0xd7, 0x61, 0x14, 0xef, 0xcd, 0x76, 0xae, 0x66, 0xef, 0xb7, 0x4a, 0xe2, 0x53, 0x0f, 0x25, 0xf1, - 0xbc, 0x4c, 0xbc, 0xd6, 0xd2, 0x8d, 0x65, 0xcc, 0xaa, 0xe8, 0xbb, 0xb3, 0x21, 0x11, 0xa9, 0xd2, - 0x71, 0xd7, 0x34, 0x43, 0x24, 0x71, 0x2f, 0x6b, 0xa1, 0x79, 0xc1, 0x78, 0x26, 0x73, 0x82, 0x7f, - 0xbd, 0xa9, 0xbb, 0x2f, 0xb9, 0x1f, 0x53, 0x43, 0x5d, 0xf1, 0x80, 0xf7, 0x8d, 0x96, 0xbe, 0xef, - 0x34, 0x76, 0xf0, 0xa7, 0xf7, 0xb1, 0x68, 0x96, 0x69, 0x7d, 0x4c, 0x8d, 0x92, 0x54, 0xbd, 0x12, - 0xf9, 0x58, 0xf4, 0xf4, 0x33, 0x21, 0xea, 0xd8, 0xdc, 0x86, 0x88, 0xe2, 0xde, 0xf4, 0x41, 0x4b, - 0xdf, 0x1d, 0x79, 0xbf, 0x6a, 0x4f, 0x53, 0x34, 0x55, 0xee, 0x95, 0x56, 0x45, 0xe1, 0x52, 0xf3, - 0x01, 0x92, 0x9c, 0x0f, 0xb4, 0xd0, 0xec, 0x19, 0xf6, 0x75, 0x08, 0x40, 0x75, 0xd2, 0x2b, 0x72, - 0x77, 0xdc, 0x3d, 0xe7, 0xa9, 0x5a, 0x33, 0x2e, 0x14, 0xae, 0x8e, 0x6d, 0x20, 0x10, 0x33, 0xcf, - 0xd4, 0x44, 0x82, 0xd0, 0x6f, 0xb7, 0xf4, 0x5d, 0xa9, 0x5b, 0x82, 0x29, 0x36, 0xe7, 0x27, 0x93, - 0x93, 0x0a, 0xca, 0x85, 0x86, 0xda, 0x92, 0xc7, 0xb7, 0xb4, 0xd0, 0x1c, 0x18, 0xbd, 0xeb, 0x12, - 0x8f, 0xcd, 0x98, 0x7c, 0x00, 0x1c, 0xab, 0x65, 0xb2, 0xe0, 0x6e, 0xc9, 0x4e, 0xd6, 0x35, 0xf0, - 0x76, 0x4b, 0xdf, 0x1d, 0x05, 0xc4, 0xc6, 0xdc, 0x2e, 0x1b, 0x98, 0x4b, 0xcd, 0x07, 0x48, 0xba, - 0xde, 0x8e, 0xdc, 0xee, 0x3a, 0xc4, 0x64, 0x33, 0xb2, 0x4e, 0xcc, 0x6d, 0x9c, 0x2c, 0xee, 0x55, - 0xbf, 0xd5, 0xf4, 0x5b, 0x79, 0x53, 0xf8, 0xb8, 0xfa, 0x21, 0x42, 0x8a, 0xae, 0xc2, 0x87, 0x66, - 0x85, 0xa2, 0x62, 0xab, 0xd3, 0x58, 0x5f, 0x92, 0x85, 0x43, 0xf3, 0x84, 0xf1, 0x60, 0xf2, 0xe9, - 0x00, 0x1d, 0x42, 0xc5, 0x9d, 0x86, 0x92, 0x41, 0xa7, 0x3c, 0xb7, 0x47, 0xfa, 0x81, 0x2f, 0xa0, - 0x43, 0xaf, 0x9b, 0xfa, 0xd6, 0xde, 0x0f, 0xf6, 0x2a, 0x0e, 0x92, 0xdf, 0x53, 0x24, 0x24, 0x80, - 0xe7, 0x5b, 0xd1, 0x6d, 0xa4, 0xe4, 0xf2, 0x10, 0xc1, 0xb4, 0xb8, 0x4b, 0x92, 0xba, 0x5b, 0x94, - 0x6e, 0xa8, 0x6f, 0x9f, 0xa0, 0xd7, 0x7e, 0x5d, 0x0b, 0xcd, 0xff, 0x31, 0xfe, 0xbb, 0x04, 0x46, - 0x4a, 0x53, 0x59, 0x0c, 0xe9, 0x00, 0xf9, 0xd1, 0x77, 0x5c, 0xf4, 0x53, 0x8b, 0xc4, 0x29, 0xd8, - 0x78, 0x84, 0xe7, 0x93, 0xd5, 0xe7, 0xcb, 0x9e, 0x3e, 0xb0, 0x4a, 0x85, 0x05, 0xef, 0x8c, 0xec, - 0x35, 0x2c, 0x91, 0x74, 0xae, 0xaa, 0x29, 0xd6, 0xf8, 0x14, 0xd7, 0xca, 0x2a, 0xd7, 0x4f, 0x34, - 0xfd, 0xe6, 0x65, 0x9c, 0x62, 0x60, 0x5c, 0xbc, 0xbe, 0x9d, 0x12, 0xa6, 0xd2, 0xc5, 0x6d, 0x35, - 0x6a, 0x6d, 0x26, 0x4f, 0xe4, 0x63, 0xe4, 0x45, 0xc4, 0x91, 0xf1, 0xe7, 0xc0, 0x4a, 0x53, 0xe3, - 0x27, 0x9f, 0x3c, 0x7d, 0xac, 0xe9, 0x72, 0x17, 0x28, 0x8d, 0x67, 0xa6, 0xc6, 0xd0, 0x6c, 0x31, - 0x99, 0x6d, 0xa0, 0x29, 0x3d, 0xf4, 0x4b, 0x5a, 0x68, 0xde, 0x69, 0x74, 0x52, 0x55, 0xa4, 0x47, - 0xb0, 0x63, 0x97, 0x85, 0x6d, 0x6a, 0x12, 0x01, 0xf9, 0xbc, 0x71, 0xfd, 0x20, 0xf3, 0x48, 0x7d, - 0x4f, 0xd3, 0xf5, 0x65, 0xcc, 0x9e, 0x8e, 0x7a, 0xe0, 0xe2, 0xaf, 0x69, 0x12, 0x59, 0xe5, 0xaf, - 0x69, 0xd2, 0x2a, 0x12, 0xe0, 0xc5, 0xd0, 0x7c, 0xd2, 0x38, 0x9f, 0xc9, 0xee, 0x52, 0x05, 0xce, - 0x10, 0xd7, 0x72, 0x02, 0xb1, 0xe9, 0xc0, 0x1f, 0x9f, 0x0c, 0x88, 0x63, 0x43, 0x48, 0xdc, 0x9e, - 0xe7, 0x0f, 0x45, 0x14, 0xce, 0x8a, 0x8b, 0x51, 0x67, 0xf9, 0x3b, 0xc4, 0xef, 0x7e, 0xd4, 0x89, - 0xba, 0x80, 0xbf, 0x03, 0x6c, 0x53, 0xf0, 0x65, 0xdb, 0x7e, 0xf2, 0xd8, 0x85, 0xa3, 0x7d, 0xc2, - 0x06, 0x41, 0x77, 0xd1, 0xf2, 0x86, 0x1d, 0x61, 0x9b, 0xe7, 0xf7, 0x3b, 0xf1, 0x2f, 0x90, 0xfa, - 0xd8, 0xed, 0x8c, 0xba, 0x0b, 0x7d, 0xaf, 0x93, 0xff, 0x0d, 0x5a, 0xf7, 0x06, 0xf1, 0x13, 0xa3, - 0xbb, 0xff, 0x1e, 0x00, 0x00, 0xff, 0xff, 0xd5, 0x4b, 0x59, 0x61, 0x9e, 0x36, 0x00, 0x00, + // 3346 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0x5b, 0x8c, 0x1c, 0xc5, + 0xb9, 0x56, 0x8f, 0x6d, 0x8e, 0x4e, 0x83, 0xb1, 0x5d, 0xc6, 0x07, 0xbb, 0xb1, 0x4d, 0x31, 0x3e, + 0xb6, 0x77, 0xd7, 0xbb, 0x3b, 0xcb, 0xd5, 0xd8, 0x80, 0xa1, 0x7d, 0x5b, 0x2d, 0x36, 0x06, 0xed, + 0xe1, 0x10, 0xe4, 0x90, 0x8c, 0x6a, 0xba, 0x6b, 0x66, 0xca, 0xee, 0xe9, 0x9e, 0x74, 0xd5, 0xac, + 0x3d, 0x58, 0x56, 0x10, 0x0a, 0x49, 0x84, 0x92, 0x97, 0x8e, 0x94, 0x08, 0x94, 0x80, 0x48, 0x9e, + 0x40, 0x20, 0x25, 0x41, 0xe2, 0x95, 0x28, 0x52, 0xa4, 0x24, 0x42, 0xbc, 0x20, 0x91, 0x8b, 0x94, + 0x28, 0x91, 0x92, 0xa7, 0x24, 0xe2, 0x81, 0x48, 0xbc, 0x04, 0x25, 0xaa, 0xea, 0xaa, 0xbe, 0x77, + 0x4f, 0xcf, 0x62, 0x22, 0x21, 0xe5, 0xc9, 0xeb, 0xf9, 0xff, 0xaa, 0xfe, 0xbf, 0xaf, 0xfe, 0x5b, + 0x57, 0x55, 0xeb, 0xbb, 0xbb, 0xce, 0x98, 0x61, 0x62, 0x3b, 0x2d, 0x8a, 0xfd, 0x35, 0x62, 0xe1, + 0x16, 0xb2, 0x07, 0xc4, 0x5d, 0x1c, 0xfa, 0x1e, 0xf3, 0xc0, 0x56, 0x25, 0x5d, 0x94, 0x52, 0x63, + 0x77, 0xcf, 0xf3, 0x7a, 0x0e, 0x6e, 0xa1, 0x21, 0x69, 0x21, 0xd7, 0xf5, 0x18, 0x62, 0xc4, 0x73, + 0x69, 0xa8, 0x6f, 0xc4, 0xb3, 0x89, 0x59, 0x5a, 0x43, 0xdf, 0xbb, 0x80, 0x2d, 0x26, 0xa5, 0x8b, + 0xc5, 0xd2, 0xb6, 0xed, 0x0d, 0x10, 0x71, 0xdb, 0x88, 0x31, 0x9f, 0x74, 0x46, 0x0c, 0xab, 0xd9, + 0x76, 0x65, 0xf4, 0x19, 0xa2, 0x17, 0xa5, 0x68, 0x4f, 0x46, 0x74, 0xc9, 0xf3, 0x2f, 0x76, 0x1d, + 0xef, 0x92, 0x14, 0xcf, 0x94, 0x88, 0xf3, 0xcf, 0x80, 0x19, 0x4d, 0x07, 0x8d, 0x5c, 0xab, 0xdf, + 0x1e, 0x3a, 0x48, 0x72, 0x60, 0x18, 0x19, 0x0d, 0xbc, 0x86, 0x5d, 0x85, 0x68, 0x6f, 0x56, 0x76, + 0x19, 0x5b, 0x23, 0x4e, 0x88, 0x94, 0x1f, 0xcc, 0xc8, 0x07, 0x88, 0x59, 0x7d, 0xd4, 0x71, 0x70, + 0xdb, 0xc7, 0xd4, 0x1b, 0xf9, 0x16, 0x96, 0x8a, 0xfb, 0x32, 0x8a, 0xae, 0x67, 0xe3, 0x76, 0x76, + 0xb6, 0x7d, 0x05, 0x7c, 0xe4, 0x94, 0xb2, 0x4b, 0xb0, 0x86, 0x7d, 0x1a, 0x4b, 0x6f, 0xc9, 0x48, + 0x2d, 0x6f, 0x30, 0x28, 0xb5, 0x16, 0xbb, 0x8c, 0xb0, 0x71, 0xdb, 0xc6, 0xd4, 0xf2, 0xc9, 0x30, + 0xf1, 0x8c, 0x79, 0xf1, 0x8f, 0xb5, 0xd0, 0xc3, 0xee, 0x02, 0xbd, 0x84, 0x7a, 0x3d, 0xec, 0xb7, + 0x3c, 0xa1, 0x40, 0xf3, 0x4e, 0x71, 0xc7, 0x47, 0x44, 0xbf, 0xc1, 0xe4, 0x13, 0xfe, 0x5f, 0xe8, + 0x43, 0xe0, 0x67, 0x0d, 0x5d, 0x3f, 0xe1, 0x63, 0xc4, 0xf0, 0xe3, 0x88, 0x5e, 0x04, 0xb7, 0x45, + 0x7e, 0xb1, 0x18, 0xfa, 0x1e, 0xff, 0x35, 0x94, 0xaf, 0xe2, 0x2f, 0x8d, 0x30, 0x65, 0x46, 0xb3, + 0x4a, 0x85, 0x0e, 0x3d, 0x97, 0xe2, 0xe6, 0x07, 0x5a, 0x60, 0xbe, 0xa7, 0x19, 0x07, 0xc2, 0x9f, + 0x21, 0x72, 0x6d, 0xe8, 0xe3, 0x1e, 0xa1, 0x0c, 0xfb, 0x10, 0x41, 0xce, 0x15, 0xb4, 0x71, 0x97, + 0xb8, 0x44, 0x00, 0x79, 0xf8, 0xb8, 0xbe, 0xe1, 0xae, 0xa5, 0x25, 0x70, 0x9f, 0x7e, 0x64, 0x15, + 0xb3, 0x91, 0xef, 0x62, 0x1b, 0x76, 0x3d, 0x1f, 0x76, 0x10, 0x1f, 0x26, 0x9e, 0x0a, 0x59, 0x1f, + 0x31, 0x38, 0x40, 0x63, 0xd8, 0x47, 0x6b, 0x18, 0x76, 0x11, 0x71, 0xb0, 0x0d, 0xd7, 0x90, 0x43, + 0x6c, 0x14, 0xce, 0x81, 0xf9, 0x1c, 0x47, 0xc0, 0x17, 0xf5, 0xa7, 0x52, 0x73, 0xa0, 0xf4, 0x0c, + 0x3e, 0xee, 0x62, 0x1f, 0xbb, 0x16, 0xa6, 0x10, 0xb9, 0x90, 0xd8, 0x9c, 0x56, 0x0b, 0x39, 0x30, + 0xa4, 0x37, 0xd4, 0xe9, 0x23, 0x0a, 0x91, 0xe3, 0x63, 0x64, 0x8f, 0x61, 0x07, 0x63, 0x37, 0x32, + 0x1d, 0xdb, 0x8b, 0xcf, 0xbe, 0xf7, 0xa7, 0x6f, 0x35, 0x40, 0x73, 0xb3, 0x88, 0xb9, 0xb5, 0xdb, + 0xc5, 0xb2, 0xd3, 0xa3, 0xda, 0x1c, 0xf8, 0xb1, 0xa6, 0xff, 0xd7, 0x32, 0x66, 0x82, 0x44, 0x98, + 0x65, 0xe8, 0xd1, 0x0e, 0x8f, 0xad, 0x65, 0xcc, 0x14, 0x87, 0x37, 0x15, 0x71, 0xd8, 0xf4, 0x02, + 0xf3, 0xa0, 0xb1, 0x7f, 0x15, 0x33, 0x9f, 0xe0, 0x35, 0xce, 0x1a, 0xc4, 0x97, 0x09, 0x65, 0xc4, + 0xed, 0xe5, 0x28, 0x13, 0x76, 0x3c, 0x08, 0x1e, 0x48, 0xd9, 0xd1, 0xba, 0x42, 0xec, 0x45, 0x19, + 0xc8, 0x57, 0xc5, 0x7f, 0xc2, 0x68, 0x0e, 0xff, 0x76, 0xd1, 0x00, 0x87, 0x7f, 0x49, 0x37, 0xbc, + 0x0a, 0x7e, 0xaf, 0xe9, 0xd7, 0x9f, 0x25, 0x54, 0x58, 0xbd, 0x62, 0x53, 0xb0, 0x94, 0x35, 0xeb, + 0x1c, 0x1a, 0x60, 0xfb, 0x94, 0xe0, 0x66, 0x45, 0x70, 0xd5, 0x25, 0xd8, 0xe7, 0x23, 0x14, 0x90, + 0xd9, 0xda, 0x23, 0x9a, 0x7e, 0x60, 0x9e, 0x34, 0x8e, 0x9f, 0xc6, 0xcc, 0xea, 0x97, 0xe2, 0x92, + 0x2b, 0xc2, 0xc7, 0x50, 0x28, 0x02, 0x94, 0x2b, 0x11, 0x77, 0x38, 0x62, 0xb0, 0x4b, 0x1c, 0x86, + 0x7d, 0x1a, 0x42, 0xdf, 0x0f, 0xf6, 0x25, 0xa1, 0xb7, 0x89, 0x4d, 0x5b, 0x57, 0x62, 0xe8, 0x12, + 0x37, 0xf8, 0x8b, 0xa6, 0xff, 0xb7, 0x02, 0x48, 0xc1, 0xbe, 0xac, 0xb1, 0xab, 0x32, 0xf0, 0x93, + 0x88, 0x76, 0x16, 0x2d, 0x8d, 0x00, 0xf0, 0x92, 0x16, 0x98, 0x47, 0x8c, 0xc3, 0xd5, 0x08, 0xaa, + 0xcd, 0x7e, 0x0a, 0x2c, 0x4d, 0xbb, 0x62, 0xe7, 0x67, 0xc0, 0x81, 0x7a, 0x63, 0xc0, 0x6f, 0x1a, + 0xfa, 0x8d, 0x61, 0xc4, 0x7d, 0x4e, 0xe6, 0x58, 0xb0, 0x3f, 0x8b, 0x46, 0x49, 0xd2, 0x31, 0x7d, + 0x60, 0x92, 0x9a, 0x8c, 0xeb, 0x8f, 0xb4, 0xc0, 0xfc, 0x95, 0x66, 0xcc, 0x15, 0xc7, 0xb5, 0xca, + 0xec, 0x9f, 0xe5, 0xd8, 0xfe, 0x9f, 0xe6, 0x36, 0xc5, 0xb6, 0x82, 0x23, 0xe2, 0xfb, 0xa7, 0x9a, + 0x7e, 0xfd, 0x32, 0x66, 0x11, 0xb1, 0x93, 0x63, 0x7c, 0x67, 0x19, 0xa7, 0xcd, 0x4b, 0x81, 0x79, + 0xc8, 0x98, 0x2d, 0x8c, 0xf3, 0x22, 0x0a, 0x85, 0x5d, 0x27, 0x80, 0x99, 0xb3, 0x6b, 0xea, 0x78, + 0xff, 0x9b, 0xa6, 0x6f, 0xe1, 0xae, 0xac, 0x2c, 0xf9, 0xd4, 0x63, 0xfe, 0x6a, 0x60, 0x9e, 0x31, + 0x56, 0xc2, 0x88, 0x99, 0x00, 0xb3, 0x76, 0xe8, 0xcf, 0x82, 0x83, 0x59, 0x26, 0xca, 0xc2, 0xff, + 0x9f, 0x9a, 0xbe, 0x39, 0x89, 0xb7, 0x66, 0x0a, 0xd8, 0x5d, 0xb6, 0x72, 0x02, 0xd3, 0x6b, 0x5a, + 0x60, 0x3e, 0x60, 0xdc, 0x97, 0x49, 0x03, 0x05, 0x88, 0xaa, 0x61, 0xd8, 0xe0, 0xae, 0xf5, 0x2c, + 0xe8, 0xf9, 0x79, 0x30, 0x57, 0x7f, 0x1c, 0xf8, 0x73, 0x43, 0xdf, 0x1a, 0x06, 0xeb, 0x59, 0xd1, + 0x4c, 0x3d, 0xe6, 0x20, 0x17, 0x1c, 0xcc, 0xe2, 0x8b, 0x65, 0xe9, 0xb4, 0x30, 0x33, 0x59, 0x51, + 0x26, 0x86, 0x8f, 0xb5, 0xc0, 0xfc, 0xad, 0x66, 0x2c, 0x14, 0x27, 0x86, 0xb0, 0x91, 0x83, 0xbc, + 0x91, 0xfb, 0x2c, 0xe7, 0x86, 0x5d, 0xcd, 0x9b, 0x14, 0xf5, 0x89, 0xd6, 0x54, 0xa4, 0x87, 0x77, + 0x34, 0x7d, 0xf3, 0x32, 0x66, 0x09, 0x92, 0x27, 0x27, 0x08, 0xa3, 0x9c, 0x5d, 0x1e, 0x38, 0x8b, + 0xc6, 0x7c, 0x61, 0x8a, 0x28, 0x21, 0x53, 0x58, 0x78, 0x1a, 0x9c, 0x2c, 0xb2, 0x70, 0xea, 0x44, + 0xf1, 0xa1, 0xa6, 0x6f, 0x5f, 0xc6, 0xcc, 0xb4, 0x18, 0x59, 0xab, 0xf4, 0x9c, 0xac, 0x46, 0x1d, + 0x6c, 0xdf, 0xd6, 0x02, 0xf3, 0x11, 0xe3, 0x4c, 0x04, 0x8e, 0xf5, 0x31, 0x44, 0x62, 0x9e, 0x14, + 0x36, 0x69, 0x0c, 0xa4, 0x43, 0x6c, 0xf1, 0xb4, 0x60, 0xc3, 0xce, 0x58, 0x06, 0x92, 0x5a, 0xda, + 0x54, 0x40, 0x3d, 0x04, 0x8e, 0x29, 0xec, 0xe1, 0x6c, 0xed, 0x29, 0x29, 0xe0, 0xdd, 0xc2, 0x0e, + 0x1e, 0xe2, 0x59, 0x50, 0x14, 0x1c, 0x9a, 0x84, 0x3b, 0x99, 0x3e, 0xf6, 0x96, 0x63, 0x17, 0x09, + 0xe4, 0x2b, 0x5a, 0x22, 0x2b, 0x56, 0x83, 0xa7, 0xb5, 0xd1, 0x2f, 0x81, 0xc5, 0x4a, 0xf4, 0xf9, + 0xe4, 0xf8, 0xa1, 0xa6, 0x6f, 0xe3, 0xf6, 0xc4, 0xd6, 0x7d, 0xea, 0xe5, 0xe0, 0x99, 0x24, 0xf2, + 0x09, 0x0e, 0x5d, 0xbb, 0x1e, 0x24, 0x12, 0x62, 0x02, 0x72, 0x59, 0x49, 0xf8, 0x46, 0x23, 0x2c, + 0x81, 0xc9, 0xd5, 0xad, 0x55, 0x14, 0x26, 0xad, 0xea, 0x9b, 0x5a, 0x60, 0x3e, 0x64, 0x1c, 0xab, + 0x85, 0xad, 0x1a, 0xd0, 0x05, 0x70, 0x78, 0x9d, 0x41, 0x7c, 0xbe, 0x05, 0x16, 0xa6, 0x1a, 0x0a, + 0x7e, 0x72, 0x9d, 0xbe, 0xf5, 0xff, 0x87, 0x76, 0xed, 0xfa, 0x10, 0xea, 0xd6, 0xa8, 0x0f, 0x4a, + 0x51, 0xd6, 0x87, 0x5f, 0x6f, 0x0a, 0xcc, 0xe7, 0x36, 0x19, 0xcf, 0x6e, 0x0a, 0x7f, 0x17, 0x6e, + 0x4f, 0x19, 0x62, 0x23, 0x0a, 0xbd, 0x6e, 0x9d, 0xf4, 0x06, 0x4d, 0x06, 0x07, 0x1e, 0x65, 0xd0, + 0x73, 0x8b, 0xd3, 0x44, 0x98, 0xf4, 0x7b, 0x64, 0x0d, 0xbb, 0x50, 0xad, 0xfb, 0x3c, 0x0c, 0x71, + 0xce, 0x43, 0x41, 0x0f, 0xb4, 0x90, 0x0b, 0x3b, 0x51, 0xbc, 0x21, 0xc6, 0xdf, 0x45, 0xc9, 0x00, + 0x2f, 0xc2, 0x95, 0x2e, 0x64, 0x7d, 0x42, 0xa1, 0x85, 0x1c, 0x07, 0x52, 0xcc, 0x68, 0xa6, 0x68, + 0x31, 0x2f, 0x1a, 0xe4, 0xda, 0xb1, 0xad, 0xea, 0xd9, 0x24, 0x2e, 0x1c, 0xa1, 0xda, 0xbc, 0x00, + 0xe8, 0x63, 0x3a, 0x72, 0x18, 0x07, 0x18, 0x4f, 0x7e, 0x89, 0x38, 0x0e, 0xb7, 0x41, 0x54, 0x1c, + 0xae, 0xd4, 0xf5, 0xfc, 0x01, 0xf6, 0x9d, 0x71, 0x51, 0x16, 0x50, 0xca, 0x03, 0x64, 0x63, 0x48, + 0xdc, 0x84, 0x09, 0x71, 0x5a, 0x48, 0xea, 0x13, 0x37, 0x7c, 0x92, 0xca, 0x10, 0xa9, 0xf1, 0xe1, + 0xe8, 0x45, 0xb8, 0xe2, 0x8a, 0xe7, 0x8a, 0xad, 0x93, 0x7a, 0x66, 0xf4, 0x91, 0x0d, 0x11, 0xa4, + 0x56, 0x1f, 0xdb, 0x23, 0x07, 0x43, 0x44, 0xa9, 0x67, 0x11, 0xc4, 0xb0, 0x0d, 0x09, 0x7f, 0x06, + 0xeb, 0x43, 0xc2, 0xe6, 0xc3, 0x27, 0x47, 0x4a, 0xea, 0xd1, 0x36, 0xa1, 0xa8, 0xe3, 0x60, 0x5b, + 0x72, 0x8c, 0xe3, 0x4a, 0x5c, 0x69, 0x39, 0xa1, 0xb0, 0x83, 0x39, 0xc5, 0x14, 0xb3, 0x0c, 0xfb, + 0xa2, 0x4c, 0x17, 0x5a, 0x93, 0x30, 0x05, 0xe7, 0x2d, 0xc1, 0x6e, 0x68, 0x88, 0x88, 0xb1, 0x15, + 0xe3, 0x9a, 0x14, 0x4a, 0x5e, 0xfa, 0xbf, 0xaf, 0xe9, 0x5b, 0xc2, 0xb6, 0xe7, 0x94, 0xda, 0xfe, + 0x01, 0xb9, 0xf7, 0xa9, 0x48, 0x94, 0x6e, 0xb0, 0x0e, 0x4e, 0xd4, 0x93, 0xf1, 0x73, 0x2c, 0x30, + 0xf7, 0x1a, 0xbb, 0x55, 0x77, 0x15, 0x77, 0x9b, 0xf1, 0x8e, 0x93, 0x80, 0x75, 0x73, 0x13, 0x28, + 0x58, 0x91, 0x44, 0xf4, 0x27, 0x3f, 0xd2, 0xf4, 0x6d, 0xab, 0x38, 0x84, 0x1a, 0x9b, 0x39, 0x53, + 0xfa, 0x78, 0xa5, 0x3b, 0xb5, 0xa1, 0x2b, 0x81, 0x09, 0x8d, 0xbd, 0x6a, 0x78, 0x85, 0xa9, 0xb0, + 0x79, 0x4b, 0xde, 0xd4, 0x96, 0x2f, 0x07, 0x72, 0x9b, 0xbf, 0xb7, 0x49, 0xdf, 0xba, 0x8a, 0x2d, + 0x6f, 0x0d, 0xfb, 0xb1, 0xc9, 0x07, 0x2b, 0x4c, 0x16, 0xaa, 0x53, 0x5b, 0xfc, 0xd6, 0xc6, 0xc0, + 0xfc, 0xe6, 0x46, 0xe3, 0xf9, 0x8d, 0xab, 0xd8, 0x12, 0x12, 0xee, 0x5e, 0x43, 0x1f, 0xaf, 0x11, + 0x6f, 0x44, 0x9d, 0xf1, 0x82, 0x3f, 0x72, 0x0b, 0x40, 0x84, 0x91, 0x23, 0x7c, 0xcb, 0x73, 0x9d, + 0x31, 0x4f, 0x66, 0x3e, 0x53, 0x62, 0xb7, 0x07, 0xbb, 0xbe, 0x37, 0x10, 0x7e, 0xe8, 0x20, 0xca, + 0xe0, 0x45, 0xd7, 0xbb, 0xe4, 0x8a, 0xee, 0x75, 0xe4, 0x63, 0x38, 0xf4, 0x88, 0xcb, 0x44, 0x20, + 0x4a, 0x9b, 0xe1, 0xc0, 0xb3, 0xf1, 0x3c, 0x1c, 0x51, 0x5e, 0xeb, 0x2c, 0xb1, 0x6b, 0x07, 0xad, + 0x3e, 0x72, 0x7b, 0xdc, 0xe3, 0x55, 0xd9, 0x1f, 0x22, 0x1f, 0x0d, 0x30, 0x2f, 0x13, 0xd0, 0xf3, + 0xe1, 0x28, 0xce, 0xa3, 0x2a, 0x0b, 0x79, 0x61, 0x80, 0xc5, 0x3c, 0xc3, 0xc7, 0x79, 0x48, 0x11, + 0x0a, 0xf1, 0x65, 0xe6, 0xe3, 0x01, 0x76, 0xc6, 0xfc, 0x11, 0xdd, 0x91, 0xc3, 0x23, 0xca, 0x97, + 0x8f, 0x16, 0x86, 0xd2, 0x31, 0x65, 0x78, 0x00, 0xb1, 0xef, 0x7b, 0x3e, 0x15, 0x51, 0xd6, 0x19, + 0x3f, 0x8d, 0x5c, 0x46, 0x5c, 0xde, 0x73, 0x8f, 0x1c, 0x46, 0xa1, 0x43, 0x2e, 0x62, 0xb8, 0x00, + 0xcf, 0x7a, 0x54, 0xa4, 0xec, 0x33, 0xf7, 0x52, 0x68, 0x39, 0x23, 0xde, 0x1e, 0xcf, 0xc3, 0xce, + 0xa8, 0x47, 0x79, 0x08, 0x0f, 0x1d, 0xc4, 0x78, 0x22, 0xe1, 0x06, 0x12, 0x97, 0x32, 0xd4, 0x21, + 0x0e, 0x61, 0xe3, 0x79, 0x38, 0x40, 0xbc, 0xda, 0x61, 0xc5, 0x00, 0xe5, 0x89, 0xf9, 0x92, 0x4b, + 0x99, 0x8f, 0x51, 0xf4, 0x70, 0x25, 0x83, 0x33, 0x49, 0x59, 0xb8, 0x4d, 0x49, 0x67, 0xe7, 0xf9, + 0x9c, 0x94, 0x0c, 0x86, 0xce, 0x38, 0x69, 0x7d, 0xec, 0x3a, 0xe1, 0x82, 0xc8, 0x17, 0x84, 0x0e, + 0xb6, 0xd0, 0x88, 0x62, 0x6e, 0xa8, 0x8f, 0x99, 0x3f, 0x86, 0xf8, 0x72, 0x1f, 0x8d, 0xa8, 0x58, + 0x38, 0x91, 0x3e, 0xfb, 0xde, 0xc8, 0xb1, 0xa1, 0xe5, 0x0d, 0x86, 0x0e, 0x66, 0x18, 0x92, 0x2e, + 0xe4, 0xcd, 0xa8, 0x0d, 0x51, 0x0f, 0x11, 0xe9, 0xa0, 0xb7, 0x36, 0x8d, 0x42, 0x07, 0x15, 0x0f, + 0x96, 0x5b, 0x02, 0x37, 0x2c, 0x63, 0x16, 0xfb, 0xe6, 0xa1, 0xb2, 0xf7, 0xc6, 0x48, 0x25, 0xd1, + 0xfd, 0xef, 0x2a, 0xf5, 0xcf, 0xe6, 0x85, 0xc0, 0x9c, 0x33, 0x66, 0xaa, 0xf7, 0x07, 0x32, 0xd1, + 0x74, 0x18, 0xdc, 0x5d, 0x60, 0x6c, 0x8d, 0x9e, 0xf7, 0x7d, 0x4d, 0xdf, 0x12, 0xd6, 0xe4, 0x3a, + 0xd9, 0x2b, 0x5d, 0xfe, 0x0f, 0x4e, 0xd4, 0x93, 0x21, 0xe6, 0x07, 0x66, 0xcb, 0x58, 0x90, 0xa5, + 0x3f, 0x0e, 0xa1, 0x0e, 0x76, 0x3c, 0xb7, 0x27, 0x36, 0xd1, 0x3c, 0x28, 0xed, 0x94, 0x15, 0x3b, + 0x44, 0x75, 0xd4, 0x58, 0x1f, 0x2a, 0xbe, 0x3a, 0xcf, 0x36, 0xf4, 0xad, 0xc9, 0xd5, 0x39, 0x89, + 0x18, 0x02, 0xad, 0x3a, 0x2b, 0xc4, 0x35, 0x15, 0xc4, 0xa5, 0xfa, 0x03, 0x24, 0xd6, 0xe7, 0xb5, + 0xc0, 0x3c, 0x65, 0x9c, 0x88, 0x56, 0x2f, 0x0c, 0x5e, 0xee, 0x74, 0xde, 0x88, 0xf1, 0x3f, 0x6d, + 0xc4, 0x50, 0x18, 0x75, 0x75, 0x16, 0xf6, 0x7e, 0x70, 0x54, 0x51, 0xc0, 0x07, 0x4e, 0xb9, 0xba, + 0x3f, 0xd7, 0xf4, 0x1b, 0x79, 0x77, 0x1a, 0x59, 0x5b, 0xb3, 0xd9, 0xdd, 0x53, 0xba, 0xb2, 0x6a, + 0x2b, 0xf7, 0x7e, 0xe3, 0x68, 0xd9, 0x0e, 0x48, 0x22, 0x26, 0xab, 0xda, 0xdc, 0x05, 0x70, 0x68, + 0x8a, 0xc5, 0x05, 0x7f, 0xd7, 0x74, 0xf0, 0x38, 0xf6, 0x07, 0xc4, 0x4d, 0xf9, 0xea, 0x6c, 0xa9, + 0xa5, 0x91, 0xb2, 0x02, 0x35, 0x57, 0x47, 0x55, 0xae, 0xe2, 0x57, 0xb5, 0xc0, 0x3c, 0x61, 0x98, + 0x91, 0x20, 0xf9, 0x9e, 0x56, 0x50, 0x0c, 0xe2, 0x76, 0x8c, 0xb8, 0xb2, 0xcb, 0x11, 0xcf, 0x94, + 0x6e, 0x3c, 0xb7, 0x7e, 0x37, 0xfe, 0x87, 0x26, 0xdc, 0xf8, 0x9c, 0x67, 0xe3, 0x8a, 0x22, 0x98, + 0x12, 0x27, 0x92, 0xcc, 0x9e, 0x4a, 0xc5, 0xe6, 0xcb, 0x5a, 0x60, 0x1e, 0x30, 0xfe, 0xb7, 0x30, + 0xd3, 0xb8, 0x9e, 0x8d, 0xb3, 0xce, 0x38, 0x04, 0xae, 0x02, 0x92, 0x3e, 0x14, 0x0b, 0xd1, 0x44, + 0xff, 0x6d, 0x67, 0xa1, 0xa5, 0x24, 0x49, 0x9c, 0x29, 0x41, 0xdc, 0x5f, 0x89, 0xd9, 0x89, 0x7d, + 0x15, 0xbc, 0xd8, 0xd0, 0x01, 0x77, 0xb9, 0x94, 0xdd, 0x34, 0xdf, 0xb8, 0xa4, 0xe4, 0x49, 0x4f, + 0xbe, 0x6d, 0xa2, 0x66, 0xf3, 0x2d, 0x2d, 0x30, 0xef, 0x35, 0xee, 0xc9, 0xb8, 0x73, 0x1a, 0x7f, + 0xb5, 0x2b, 0x8f, 0x00, 0x2d, 0xe5, 0x25, 0xda, 0xa3, 0x2c, 0x61, 0xa7, 0x58, 0x1e, 0x71, 0x54, + 0x2c, 0x0e, 0xa3, 0xfb, 0x83, 0x8d, 0xfa, 0xae, 0x3c, 0x39, 0xa7, 0x3d, 0x5f, 0x9c, 0x42, 0xb5, + 0x2a, 0x91, 0x4b, 0xad, 0x29, 0xa9, 0xfa, 0x78, 0x43, 0x60, 0x2e, 0x1b, 0xa7, 0x42, 0xaa, 0xac, + 0x3e, 0x71, 0xec, 0x1c, 0x4f, 0x61, 0xff, 0x16, 0xee, 0x57, 0x88, 0x3e, 0x3c, 0x0a, 0x0d, 0x71, + 0x52, 0x92, 0xf1, 0xa8, 0xd7, 0x37, 0x80, 0x57, 0x37, 0x28, 0xee, 0xc4, 0x84, 0x3e, 0xce, 0x1e, + 0xa6, 0xd2, 0xd6, 0x95, 0xf4, 0x0f, 0x6d, 0xe5, 0x21, 0xa9, 0x5f, 0x4a, 0xf8, 0x9d, 0x7a, 0x68, + 0x44, 0xfd, 0xd4, 0x23, 0xa5, 0xff, 0xd6, 0x19, 0xa7, 0x1c, 0xbc, 0x48, 0x5b, 0x1e, 0x68, 0x55, + 0x62, 0x50, 0x3a, 0x15, 0xc6, 0x2a, 0x95, 0x52, 0xab, 0x94, 0x82, 0x7a, 0x99, 0x29, 0xd2, 0x11, + 0xdd, 0x53, 0x1b, 0x31, 0x86, 0x07, 0x43, 0x76, 0x15, 0xbc, 0xd9, 0xd0, 0x6f, 0xca, 0x66, 0x23, + 0x51, 0x58, 0x0f, 0x4d, 0xca, 0x48, 0xc9, 0xa2, 0x3a, 0x5f, 0x4f, 0x59, 0xa6, 0xe2, 0xb7, 0xb5, + 0xc0, 0x34, 0x8d, 0x07, 0xa7, 0x2d, 0xa8, 0x45, 0xf9, 0x2b, 0x11, 0xa7, 0xa2, 0x98, 0xfe, 0x9b, + 0x92, 0xd8, 0x77, 0x34, 0x7d, 0xcb, 0xaa, 0xdc, 0x4b, 0x7e, 0x2c, 0x9c, 0x31, 0xdf, 0x63, 0x49, + 0x81, 0xd2, 0x2b, 0xed, 0xb1, 0x72, 0x7a, 0x92, 0xa6, 0x3b, 0x03, 0x73, 0x87, 0xb1, 0x7d, 0x35, + 0xde, 0x74, 0x57, 0xf7, 0x3d, 0x04, 0xf2, 0x1d, 0xcd, 0xad, 0x0a, 0xb9, 0xfc, 0x5d, 0xbc, 0x16, + 0x7e, 0x4d, 0xd3, 0x37, 0x87, 0x6d, 0x99, 0xb2, 0xeb, 0xe6, 0x92, 0xe7, 0x19, 0xfb, 0x4b, 0x04, + 0x99, 0x56, 0xef, 0x9e, 0xc0, 0xdc, 0x6e, 0x6c, 0x93, 0xad, 0x5e, 0xc6, 0x08, 0xc3, 0xd8, 0x91, + 0x35, 0x82, 0x13, 0x25, 0xea, 0xdc, 0x73, 0x9a, 0x7e, 0x03, 0x4f, 0x31, 0x72, 0x56, 0x0a, 0x9a, + 0x25, 0xcf, 0xab, 0x3c, 0xab, 0x55, 0xa3, 0x9b, 0x87, 0x03, 0x73, 0xb7, 0x61, 0x84, 0x79, 0x2a, + 0xde, 0xc6, 0x57, 0xe6, 0xc8, 0xb4, 0x0d, 0x40, 0x8e, 0x14, 0xf0, 0x3b, 0x4d, 0xdf, 0x9e, 0x3e, + 0x43, 0x3d, 0xb5, 0x86, 0x5d, 0x06, 0x16, 0x26, 0x36, 0x82, 0x42, 0x4f, 0x59, 0xb6, 0x58, 0x57, + 0x5d, 0xd2, 0xd6, 0x13, 0x3e, 0x5e, 0xf1, 0x7e, 0x2f, 0xf7, 0x6b, 0xf8, 0xeb, 0x87, 0x6f, 0x73, + 0xff, 0x46, 0x70, 0xd8, 0x47, 0x14, 0x43, 0xe6, 0x23, 0x97, 0x26, 0x8e, 0x00, 0xf6, 0x34, 0x77, + 0x46, 0xcd, 0x06, 0x1f, 0x42, 0xd3, 0xe7, 0x98, 0xbf, 0x88, 0x76, 0x2b, 0x44, 0xd0, 0x09, 0x6c, + 0xb3, 0x95, 0xf1, 0x98, 0xc2, 0x35, 0x57, 0x47, 0x55, 0x62, 0x6a, 0x8b, 0x73, 0xb2, 0x08, 0x53, + 0x3a, 0x20, 0x6b, 0xe3, 0x49, 0x1c, 0xba, 0x48, 0x3c, 0x7c, 0xa2, 0x0c, 0x16, 0x5e, 0xca, 0x4a, + 0xb0, 0x08, 0x51, 0x3d, 0x2c, 0x45, 0xaa, 0xc5, 0x58, 0xd2, 0xa5, 0xec, 0x13, 0x60, 0x89, 0xee, + 0x8f, 0xbc, 0xba, 0x41, 0xf4, 0x79, 0x29, 0x13, 0xf2, 0x7d, 0x5e, 0x4a, 0x5c, 0xd5, 0xe7, 0xa5, + 0x14, 0x9b, 0xef, 0x34, 0xca, 0xfb, 0xbc, 0xa2, 0xaa, 0xfc, 0xdd, 0x06, 0x78, 0xa1, 0x91, 0xba, + 0x5f, 0x91, 0x49, 0x92, 0xb5, 0xab, 0xef, 0x14, 0xe5, 0xb6, 0x76, 0x7d, 0x9d, 0x50, 0x50, 0x0b, + 0x2b, 0x68, 0x51, 0xc9, 0xcc, 0xd7, 0xc8, 0xc2, 0xa2, 0x98, 0xaf, 0x82, 0xef, 0xc9, 0xa6, 0x34, + 0x45, 0x72, 0x41, 0x53, 0x9a, 0x92, 0x57, 0x76, 0x5a, 0x39, 0x4d, 0x71, 0x83, 0x2a, 0xdf, 0x94, + 0xa6, 0x17, 0xab, 0xba, 0x29, 0x7d, 0x43, 0x03, 0xaf, 0x69, 0xa5, 0x8b, 0x58, 0x7b, 0x05, 0xeb, + 0x2e, 0x5f, 0xbd, 0xb5, 0x2b, 0x5f, 0x38, 0xf0, 0x87, 0x0d, 0xa2, 0xb7, 0x48, 0x51, 0x51, 0xdc, + 0x5b, 0x64, 0xa3, 0xa0, 0xb2, 0xb7, 0x28, 0x56, 0x96, 0x61, 0xfd, 0xd7, 0xc6, 0xba, 0x7a, 0x8b, + 0xa2, 0x98, 0x79, 0xa5, 0x01, 0x5e, 0x6a, 0xa4, 0xba, 0x8b, 0xff, 0x04, 0x4e, 0x36, 0x70, 0xde, + 0x6e, 0xe8, 0x7b, 0x52, 0xed, 0xc6, 0x49, 0x31, 0xa5, 0x19, 0x5d, 0x04, 0x05, 0x77, 0x95, 0x54, + 0xf4, 0xac, 0x62, 0x7a, 0x23, 0xea, 0xee, 0x29, 0x47, 0xc9, 0xd5, 0xff, 0xa1, 0x16, 0x98, 0x4f, + 0x1a, 0x4f, 0x24, 0x8e, 0xa4, 0xac, 0x11, 0x65, 0xde, 0x80, 0x3c, 0x8d, 0x6d, 0xa8, 0x2e, 0x85, + 0xc2, 0xf8, 0x9a, 0x6a, 0xee, 0xac, 0x21, 0xea, 0x6f, 0x16, 0x42, 0x6e, 0xa0, 0xe5, 0x0d, 0x3a, + 0xc4, 0x15, 0x37, 0x13, 0x84, 0x53, 0x3c, 0x6a, 0x3c, 0x9c, 0xe9, 0x30, 0xf2, 0x17, 0x6c, 0x5b, + 0x57, 0xd2, 0x17, 0x61, 0x25, 0xf1, 0x89, 0x1f, 0x25, 0xf1, 0xbc, 0x4c, 0xbc, 0xdc, 0xd0, 0x8d, + 0x65, 0xcc, 0xca, 0xe8, 0xbb, 0xbd, 0x26, 0x11, 0x89, 0xd2, 0x71, 0xc7, 0x34, 0x43, 0x24, 0x71, + 0x2f, 0x68, 0x81, 0x79, 0xde, 0x78, 0x32, 0x75, 0x82, 0x7f, 0xad, 0xa9, 0xbb, 0x27, 0xbe, 0x1f, + 0x53, 0x41, 0x5d, 0xfe, 0x80, 0xf7, 0xd5, 0x86, 0xbe, 0xe7, 0x24, 0x76, 0xf0, 0x27, 0xf7, 0xb1, + 0x70, 0x96, 0x69, 0x7d, 0x4c, 0x8d, 0x92, 0x54, 0xbd, 0x18, 0xfa, 0x58, 0xf8, 0xeb, 0xa7, 0x42, + 0xd4, 0x91, 0xb9, 0x75, 0x11, 0xc5, 0xbd, 0xe9, 0xdd, 0x86, 0xbe, 0x33, 0xf4, 0x7e, 0xd5, 0x9e, + 0x26, 0x68, 0x2a, 0xdd, 0x2b, 0x2d, 0x8b, 0xc2, 0xa5, 0xfa, 0x03, 0x24, 0x39, 0xef, 0x6a, 0x81, + 0xd9, 0x35, 0xec, 0x6b, 0x10, 0x80, 0xea, 0xa4, 0x57, 0xe4, 0xee, 0xa8, 0x7b, 0xce, 0x52, 0xd5, + 0x36, 0xce, 0xe7, 0xae, 0x8e, 0xad, 0x23, 0x10, 0x53, 0xbf, 0xa9, 0x89, 0x04, 0xa1, 0x3f, 0x68, + 0xe8, 0x3b, 0x12, 0xb7, 0x04, 0x13, 0x6c, 0xce, 0x4f, 0x26, 0x27, 0x11, 0x94, 0x0b, 0x35, 0xb5, + 0x25, 0x8f, 0xaf, 0x6b, 0x81, 0xd9, 0x37, 0xba, 0xd7, 0x24, 0x1e, 0xeb, 0x31, 0x79, 0x1f, 0x38, + 0x52, 0xc9, 0x64, 0xce, 0xdd, 0xe2, 0x9d, 0xac, 0xab, 0xe0, 0x8d, 0x86, 0xbe, 0x33, 0x0c, 0x88, + 0xf5, 0xb9, 0x5d, 0x3a, 0x30, 0x97, 0xea, 0x0f, 0x90, 0x74, 0xbd, 0x11, 0xba, 0xdd, 0x35, 0x88, + 0xc9, 0x7a, 0x64, 0x1d, 0x9b, 0x5b, 0x3f, 0x59, 0xdc, 0xab, 0xfe, 0xa8, 0xe9, 0x37, 0xf3, 0xa6, + 0xf0, 0x11, 0xf5, 0xc5, 0x42, 0x82, 0xae, 0xdc, 0x8b, 0x66, 0x89, 0xa2, 0x62, 0xab, 0x55, 0x5b, + 0x5f, 0x92, 0x85, 0x03, 0xf3, 0x98, 0x71, 0x7f, 0xfc, 0xea, 0x00, 0x1d, 0x42, 0xc5, 0x9d, 0x86, + 0x82, 0x41, 0x27, 0x3c, 0xb7, 0x4b, 0x7a, 0x23, 0x5f, 0x40, 0x87, 0x5e, 0x27, 0xf1, 0xae, 0xbd, + 0x17, 0xec, 0x56, 0x1c, 0xc4, 0x1f, 0x5e, 0xc4, 0x24, 0x80, 0x67, 0x1a, 0xe1, 0x6d, 0xa4, 0xf8, + 0xf2, 0x10, 0xc1, 0x34, 0xbf, 0x4b, 0x92, 0xb8, 0x5b, 0x94, 0x6c, 0xa8, 0x6f, 0x9d, 0xa0, 0xd7, + 0x7c, 0x45, 0x0b, 0xcc, 0x2f, 0x18, 0x9f, 0x2f, 0x80, 0x91, 0xd0, 0x54, 0x16, 0x43, 0xda, 0x47, + 0x7e, 0xf8, 0x1e, 0x17, 0x7e, 0x93, 0x11, 0x3b, 0x05, 0x1b, 0x0f, 0xf1, 0x7c, 0xbc, 0xfa, 0x7c, + 0xd9, 0x93, 0x07, 0x56, 0x89, 0xb0, 0xe0, 0x9d, 0x91, 0xdd, 0xc6, 0x12, 0x49, 0xeb, 0x8a, 0x9a, + 0xa2, 0xcd, 0xa7, 0xb8, 0x5a, 0x54, 0xb9, 0x7e, 0xa9, 0xe9, 0x37, 0x2e, 0xe3, 0x04, 0x03, 0xe3, + 0xfc, 0xf5, 0xed, 0x84, 0x30, 0x91, 0x2e, 0x6e, 0xa9, 0x50, 0x6b, 0x32, 0x79, 0x22, 0x1f, 0x21, + 0xcf, 0x23, 0x0e, 0x8d, 0x3f, 0x03, 0x56, 0xea, 0x1a, 0x3f, 0xf9, 0xe4, 0xe9, 0x43, 0x4d, 0x97, + 0xbb, 0x40, 0x49, 0x3c, 0x33, 0x15, 0x86, 0xa6, 0x8b, 0xc9, 0x6c, 0x0d, 0x4d, 0xe9, 0xa1, 0x5f, + 0xd7, 0x02, 0xf3, 0x76, 0xa3, 0x95, 0xa8, 0x22, 0x5d, 0x82, 0x1d, 0xbb, 0x28, 0x6c, 0x13, 0x93, + 0x08, 0xc8, 0xe7, 0x8c, 0x6b, 0x07, 0x99, 0x47, 0xea, 0xdb, 0x9a, 0xae, 0x2f, 0x63, 0xf6, 0x44, + 0xd8, 0x03, 0xe7, 0xbf, 0xa6, 0x89, 0x65, 0xa5, 0x5f, 0xd3, 0x24, 0x55, 0x24, 0xc0, 0x0b, 0x81, + 0xf9, 0x98, 0x71, 0x2e, 0x95, 0xdd, 0xa5, 0x0a, 0x9c, 0x21, 0xae, 0xe5, 0x8c, 0xc4, 0xa6, 0x03, + 0xff, 0xf9, 0xf8, 0x88, 0x38, 0x36, 0x84, 0xc4, 0xed, 0x7a, 0xfe, 0x40, 0x44, 0xe1, 0xac, 0xb8, + 0x18, 0x75, 0x9a, 0x3f, 0x43, 0x7c, 0xf7, 0xa3, 0x4e, 0xd4, 0x05, 0xfc, 0x6d, 0x60, 0x8b, 0x82, + 0x2f, 0xdb, 0x76, 0xf0, 0x7e, 0xe8, 0x84, 0x27, 0xe3, 0xef, 0x8c, 0x6a, 0xdc, 0x64, 0xcd, 0xe1, + 0x0c, 0x29, 0x4e, 0x4c, 0xd2, 0xfc, 0x72, 0xf9, 0x99, 0xb6, 0xbc, 0x83, 0x9b, 0xfc, 0xb4, 0x49, + 0x58, 0x77, 0x16, 0x44, 0xcd, 0x73, 0xfe, 0xeb, 0xa7, 0x69, 0x6f, 0xea, 0x1c, 0x3f, 0x72, 0xfe, + 0x70, 0x8f, 0xb0, 0xfe, 0xa8, 0xb3, 0x68, 0x79, 0x83, 0x96, 0xb0, 0xd7, 0xf3, 0x7b, 0xad, 0xe8, + 0x33, 0xab, 0x1e, 0x76, 0x5b, 0xc3, 0xce, 0x42, 0xcf, 0x6b, 0x65, 0xbf, 0xc2, 0xeb, 0x5c, 0x27, + 0xbe, 0x9d, 0xba, 0xf3, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x73, 0x2b, 0x23, 0xb6, 0xa0, 0x37, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -350,6 +354,8 @@ type AdminServiceClient interface { // Updates a :ref:`ref_flyteidl.admin.NamedEntity` object. UpdateNamedEntity(ctx context.Context, in *admin.NamedEntityUpdateRequest, opts ...grpc.CallOption) (*admin.NamedEntityUpdateResponse, error) GetVersion(ctx context.Context, in *admin.GetVersionRequest, opts ...grpc.CallOption) (*admin.GetVersionResponse, error) + // Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition. + GetDescription(ctx context.Context, in *admin.ObjectGetRequest, opts ...grpc.CallOption) (*admin.EntityDescription, error) } type adminServiceClient struct { @@ -783,6 +789,15 @@ func (c *adminServiceClient) GetVersion(ctx context.Context, in *admin.GetVersio return out, nil } +func (c *adminServiceClient) GetDescription(ctx context.Context, in *admin.ObjectGetRequest, opts ...grpc.CallOption) (*admin.EntityDescription, error) { + out := new(admin.EntityDescription) + err := c.cc.Invoke(ctx, "/flyteidl.service.AdminService/GetDescription", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // AdminServiceServer is the server API for AdminService service. type AdminServiceServer interface { // Create and upload a :ref:`ref_flyteidl.admin.Task` definition @@ -884,6 +899,8 @@ type AdminServiceServer interface { // Updates a :ref:`ref_flyteidl.admin.NamedEntity` object. UpdateNamedEntity(context.Context, *admin.NamedEntityUpdateRequest) (*admin.NamedEntityUpdateResponse, error) GetVersion(context.Context, *admin.GetVersionRequest) (*admin.GetVersionResponse, error) + // Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition. + GetDescription(context.Context, *admin.ObjectGetRequest) (*admin.EntityDescription, error) } // UnimplementedAdminServiceServer can be embedded to have forward compatible implementations. @@ -1031,6 +1048,9 @@ func (*UnimplementedAdminServiceServer) UpdateNamedEntity(ctx context.Context, r func (*UnimplementedAdminServiceServer) GetVersion(ctx context.Context, req *admin.GetVersionRequest) (*admin.GetVersionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetVersion not implemented") } +func (*UnimplementedAdminServiceServer) GetDescription(ctx context.Context, req *admin.ObjectGetRequest) (*admin.EntityDescription, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDescription not implemented") +} func RegisterAdminServiceServer(s *grpc.Server, srv AdminServiceServer) { s.RegisterService(&_AdminService_serviceDesc, srv) @@ -1882,6 +1902,24 @@ func _AdminService_GetVersion_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _AdminService_GetDescription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(admin.ObjectGetRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).GetDescription(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/flyteidl.service.AdminService/GetDescription", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).GetDescription(ctx, req.(*admin.ObjectGetRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _AdminService_serviceDesc = grpc.ServiceDesc{ ServiceName: "flyteidl.service.AdminService", HandlerType: (*AdminServiceServer)(nil), @@ -2074,6 +2112,10 @@ var _AdminService_serviceDesc = grpc.ServiceDesc{ MethodName: "GetVersion", Handler: _AdminService_GetVersion_Handler, }, + { + MethodName: "GetDescription", + Handler: _AdminService_GetDescription_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "flyteidl/service/admin.proto", diff --git a/gen/pb-go/flyteidl/service/admin.pb.gw.go b/gen/pb-go/flyteidl/service/admin.pb.gw.go index 6c1d4c2d6..24b7877e4 100644 --- a/gen/pb-go/flyteidl/service/admin.pb.gw.go +++ b/gen/pb-go/flyteidl/service/admin.pb.gw.go @@ -2605,6 +2605,77 @@ func request_AdminService_GetVersion_0(ctx context.Context, marshaler runtime.Ma } +var ( + filter_AdminService_GetDescription_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3, "version": 4}, Base: []int{1, 1, 1, 2, 3, 4, 0, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 2, 3, 4, 5, 6}} +) + +func request_AdminService_GetDescription_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq admin.ObjectGetRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id.project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.project") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.project", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.project", err) + } + + val, ok = pathParams["id.domain"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.domain") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.domain", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.domain", err) + } + + val, ok = pathParams["id.name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.name") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.name", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.name", err) + } + + val, ok = pathParams["id.version"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id.version") + } + + err = runtime.PopulateFieldFromPath(&protoReq, "id.version", val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id.version", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetDescription_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetDescription(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + // RegisterAdminServiceHandlerFromEndpoint is same as RegisterAdminServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAdminServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { @@ -3643,6 +3714,26 @@ func RegisterAdminServiceHandlerClient(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("GET", pattern_AdminService_GetDescription_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_GetDescription_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_GetDescription_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -3746,6 +3837,8 @@ var ( pattern_AdminService_UpdateNamedEntity_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "named_entities", "resource_type", "id.project", "id.domain", "id.name"}, "")) pattern_AdminService_GetVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "version"}, "")) + + pattern_AdminService_GetDescription_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "entity_description", "id.project", "id.domain", "id.name", "id.version"}, "")) ) var ( @@ -3848,4 +3941,6 @@ var ( forward_AdminService_UpdateNamedEntity_0 = runtime.ForwardResponseMessage forward_AdminService_GetVersion_0 = runtime.ForwardResponseMessage + + forward_AdminService_GetDescription_0 = runtime.ForwardResponseMessage ) diff --git a/gen/pb-go/flyteidl/service/admin.swagger.json b/gen/pb-go/flyteidl/service/admin.swagger.json index 14fd49c55..f879e4e9b 100644 --- a/gen/pb-go/flyteidl/service/admin.swagger.json +++ b/gen/pb-go/flyteidl/service/admin.swagger.json @@ -447,6 +447,69 @@ ] } }, + "/api/v1/entity_description/{id.project}/{id.domain}/{id.name}/{id.version}": { + "get": { + "summary": "Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition.", + "description": "Retrieve an existing entity description.", + "operationId": "GetDescription", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminEntityDescription" + } + } + }, + "parameters": [ + { + "name": "id.project", + "description": "Name of the project the resource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.domain", + "description": "Name of the domain the resource belongs to.\nA domain can be considered as a subset within a specific project.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.name", + "description": "User provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.version", + "description": "Specific version of the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id.resource_type", + "description": "Identifies the specific type of resource that this identifier corresponds to.\n\n - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects.\nEventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects \nin a similar manner to other Flyte objects", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "UNSPECIFIED", + "TASK", + "WORKFLOW", + "LAUNCH_PLAN", + "DATASET" + ], + "default": "UNSPECIFIED" + } + ], + "tags": [ + "AdminService" + ] + } + }, "/api/v1/events/nodes": { "post": { "summary": "Indicates a :ref:`ref_flyteidl.event.NodeExecutionEvent` has occurred.", @@ -3002,6 +3065,17 @@ "description": "- UPLOAD_ON_EXIT: All data will be uploaded after the main container exits\n - UPLOAD_EAGER: Data will be uploaded as it appears. Refer to protocol specification for details\n - DO_NOT_UPLOAD: Data will not be uploaded, only references will be written", "title": "Mode to use for uploading" }, + "LongDescriptionDescriptionFormat": { + "type": "string", + "enum": [ + "UNKNOWN", + "MARKDOWN", + "HTML", + "RST" + ], + "default": "UNKNOWN", + "title": "- RST: python default documentation - comments is rst" + }, "PluginOverrideMissingPluginBehavior": { "type": "string", "enum": [ @@ -3296,6 +3370,35 @@ }, "description": "Defines an email notification specification." }, + "adminEntityDescription": { + "type": "object", + "properties": { + "short_description": { + "type": "string", + "description": "One-liner overview of the entity." + }, + "long_description": { + "$ref": "#/definitions/adminLongDescription", + "description": "Full user description with formatting preserved." + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "User-specified tags. These are arbitrary and can be used for searching\nfiltering and discovering entities." + }, + "labels": { + "$ref": "#/definitions/adminLabels", + "description": "User-defined free-form key-value pair attributes. These are arbitrary\nand can be used for searching, filtering and discovering entities." + }, + "source": { + "$ref": "#/definitions/adminSourceCode", + "description": "Optional link to source code used to define this entity." + } + }, + "description": "EntityDescription contains detailed description for the task/workflow/launch plan.\nDocumentation could provide insight into the algorithms, business use case, etc." + }, "adminExecution": { "type": "object", "properties": { @@ -3582,6 +3685,17 @@ "type": "boolean", "format": "boolean", "description": "Allows for the interruptible flag of a workflow to be overwritten for a single execution.\nOmitting this field uses the workflow's value as a default.\nAs we need to distinguish between the field not being provided and its default value false, we have to use a wrapper\naround the bool field." + }, + "description": { + "type": "string", + "description": "One-liner overview of the execution." + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "User-specified tags. These are arbitrary and can be used for searching\nfiltering and discovering entities." } }, "description": "An ExecutionSpec encompasses all data used to launch this execution. The Spec does not change over the lifetime\nof an execution as it progresses across phase changes." @@ -3847,6 +3961,10 @@ "type": "boolean", "format": "boolean", "description": "Allows for the interruptible flag of a workflow to be overwritten for a single execution.\nOmitting this field uses the workflow's value as a default.\nAs we need to distinguish between the field not being provided and its default value false, we have to use a wrapper\naround the bool field." + }, + "entity_description": { + "$ref": "#/definitions/adminEntityDescription", + "description": "EntityDescription encapsulates all the detailed documentation for the launch plan." } }, "description": "User-provided launch plan definition and configuration values." @@ -3904,6 +4022,28 @@ }, "title": "Input/output data can represented by actual values or a link to where values are stored" }, + "adminLongDescription": { + "type": "object", + "properties": { + "values": { + "type": "string", + "title": "long description - no more than 4KB" + }, + "uri": { + "type": "string", + "title": "if the description sizes exceed some threshold we can offload the entire\ndescription proto altogether to an external data store, like S3 rather than store inline in the db" + }, + "long_format": { + "$ref": "#/definitions/LongDescriptionDescriptionFormat", + "title": "format of the long description" + }, + "icon_link": { + "type": "string", + "title": "Optional link to an icon for the entity" + } + }, + "description": "Full user description with formatting preserved. This can be rendered\nby clients, such as the console or command line tools with in-tact\nformatting." + }, "adminMatchableAttributesConfiguration": { "type": "object", "properties": { @@ -4319,6 +4459,13 @@ }, "state": { "$ref": "#/definitions/ProjectProjectState" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "User-specified tags. These are arbitrary and can be used for searching\nfiltering and discovering entities." } }, "description": "Top-level namespace used to classify different entities like workflows and executions." @@ -4508,6 +4655,37 @@ }, "description": "Specifies sort ordering in a list request." }, + "adminSourceCode": { + "type": "object", + "properties": { + "file": { + "type": "string", + "title": "File where the code is located" + }, + "line_number": { + "type": "integer", + "format": "int64", + "title": "Line number where the task definition, workflow definition, etc starts at" + }, + "repo": { + "type": "string", + "title": "git repository" + }, + "branch": { + "type": "string", + "title": "branch of the repository" + }, + "link": { + "type": "string", + "title": "link to the original repository" + }, + "language": { + "type": "string", + "title": "language of the code" + } + }, + "title": "Link to source code used to define this entity" + }, "adminSystemMetadata": { "type": "object", "properties": { @@ -4745,6 +4923,10 @@ "template": { "$ref": "#/definitions/coreTaskTemplate", "description": "Template of the task that encapsulates all the metadata of the task." + }, + "entity_description": { + "$ref": "#/definitions/adminEntityDescription", + "description": "EntityDescription encapsulates all the detailed documentation for the task." } }, "description": "Represents a structure that encapsulates the user-configured specification of the task." @@ -5011,6 +5193,10 @@ "$ref": "#/definitions/coreWorkflowTemplate" }, "description": "Workflows that are embedded into other workflows need to be passed alongside the parent workflow to the\npropeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out\nto Admin to see other registered workflows). In fact, subworkflows do not even need to be registered." + }, + "entity_description": { + "$ref": "#/definitions/adminEntityDescription", + "description": "EntityDescription encapsulates all the detailed documentation for the workflow." } }, "description": "Represents a structure that encapsulates the specification of the workflow." diff --git a/gen/pb-go/flyteidl/service/flyteadmin/README.md b/gen/pb-go/flyteidl/service/flyteadmin/README.md index 58d495a1f..e621518a9 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/README.md +++ b/gen/pb-go/flyteidl/service/flyteadmin/README.md @@ -31,6 +31,7 @@ Class | Method | HTTP request | Description *AdminServiceApi* | [**DeleteProjectDomainAttributes**](docs/AdminServiceApi.md#deleteprojectdomainattributes) | **Delete** /api/v1/project_domain_attributes/{project}/{domain} | Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain. *AdminServiceApi* | [**DeleteWorkflowAttributes**](docs/AdminServiceApi.md#deleteworkflowattributes) | **Delete** /api/v1/workflow_attributes/{project}/{domain}/{workflow} | Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow. *AdminServiceApi* | [**GetActiveLaunchPlan**](docs/AdminServiceApi.md#getactivelaunchplan) | **Get** /api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name} | Fetch the active version of a :ref:`ref_flyteidl.admin.LaunchPlan`. +*AdminServiceApi* | [**GetDescription**](docs/AdminServiceApi.md#getdescription) | **Get** /api/v1/entity_description/{id.project}/{id.domain}/{id.name}/{id.version} | Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition. *AdminServiceApi* | [**GetExecution**](docs/AdminServiceApi.md#getexecution) | **Get** /api/v1/executions/{id.project}/{id.domain}/{id.name} | Fetches a :ref:`ref_flyteidl.admin.Execution`. *AdminServiceApi* | [**GetExecutionData**](docs/AdminServiceApi.md#getexecutiondata) | **Get** /api/v1/data/executions/{id.project}/{id.domain}/{id.name} | Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`. *AdminServiceApi* | [**GetLaunchPlan**](docs/AdminServiceApi.md#getlaunchplan) | **Get** /api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version} | Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition. @@ -85,6 +86,7 @@ Class | Method | HTTP request | Description - [AdminCronSchedule](docs/AdminCronSchedule.md) - [AdminDomain](docs/AdminDomain.md) - [AdminEmailNotification](docs/AdminEmailNotification.md) + - [AdminEntityDescription](docs/AdminEntityDescription.md) - [AdminExecution](docs/AdminExecution.md) - [AdminExecutionClosure](docs/AdminExecutionClosure.md) - [AdminExecutionClusterLabel](docs/AdminExecutionClusterLabel.md) @@ -118,6 +120,7 @@ Class | Method | HTTP request | Description - [AdminLaunchPlanUpdateResponse](docs/AdminLaunchPlanUpdateResponse.md) - [AdminListMatchableAttributesResponse](docs/AdminListMatchableAttributesResponse.md) - [AdminLiteralMapBlob](docs/AdminLiteralMapBlob.md) + - [AdminLongDescription](docs/AdminLongDescription.md) - [AdminMatchableAttributesConfiguration](docs/AdminMatchableAttributesConfiguration.md) - [AdminMatchableResource](docs/AdminMatchableResource.md) - [AdminMatchingAttributes](docs/AdminMatchingAttributes.md) @@ -157,6 +160,7 @@ Class | Method | HTTP request | Description - [AdminSelectorOperator](docs/AdminSelectorOperator.md) - [AdminSlackNotification](docs/AdminSlackNotification.md) - [AdminSort](docs/AdminSort.md) + - [AdminSourceCode](docs/AdminSourceCode.md) - [AdminSystemMetadata](docs/AdminSystemMetadata.md) - [AdminTask](docs/AdminTask.md) - [AdminTaskClosure](docs/AdminTaskClosure.md) @@ -305,6 +309,7 @@ Class | Method | HTTP request | Description - [FlyteidleventWorkflowNodeMetadata](docs/FlyteidleventWorkflowNodeMetadata.md) - [IoStrategyDownloadMode](docs/IoStrategyDownloadMode.md) - [IoStrategyUploadMode](docs/IoStrategyUploadMode.md) + - [LongDescriptionDescriptionFormat](docs/LongDescriptionDescriptionFormat.md) - [PluginOverrideMissingPluginBehavior](docs/PluginOverrideMissingPluginBehavior.md) - [ProjectProjectState](docs/ProjectProjectState.md) - [ProtobufListValue](docs/ProtobufListValue.md) diff --git a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml index 8c8ce965a..20e5be6c3 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml +++ b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml @@ -399,6 +399,64 @@ paths: description: "A successful response." schema: $ref: "#/definitions/adminTaskExecutionGetDataResponse" + /api/v1/entity_description/{id.project}/{id.domain}/{id.name}/{id.version}: + get: + tags: + - "AdminService" + summary: "Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition." + description: "Retrieve an existing entity description." + operationId: "GetDescription" + parameters: + - name: "id.project" + in: "path" + description: "Name of the project the resource belongs to." + required: true + type: "string" + x-exportParamName: "IdProject" + - name: "id.domain" + in: "path" + description: "Name of the domain the resource belongs to.\nA domain can be\ + \ considered as a subset within a specific project." + required: true + type: "string" + x-exportParamName: "IdDomain" + - name: "id.name" + in: "path" + description: "User provided value for the resource." + required: true + type: "string" + x-exportParamName: "IdName" + - name: "id.version" + in: "path" + description: "Specific version of the resource." + required: true + type: "string" + x-exportParamName: "IdVersion" + - name: "id.resource_type" + in: "query" + description: "Identifies the specific type of resource that this identifier\ + \ corresponds to.\n\n - DATASET: A dataset represents an entity modeled\ + \ in Flyte DataCatalog. A Dataset is also a versioned entity and can be\ + \ a compilation of multiple individual objects.\nEventually all Catalog\ + \ objects should be modeled similar to Flyte Objects. The Dataset entities\ + \ makes it possible for the UI and CLI to act on the objects \nin a similar\ + \ manner to other Flyte objects" + required: false + type: "string" + default: "UNSPECIFIED" + enum: + - "UNSPECIFIED" + - "TASK" + - "WORKFLOW" + - "LAUNCH_PLAN" + - "DATASET" + x-exportParamName: "IdResourceType" + x-optionalDataType: "String" + responses: + 200: + description: "A successful response." + schema: + $ref: "#/definitions/adminEntityDescription" /api/v1/events/nodes: post: tags: @@ -2707,6 +2765,15 @@ definitions: - "UPLOAD_EAGER" - "DO_NOT_UPLOAD" default: "UPLOAD_ON_EXIT" + LongDescriptionDescriptionFormat: + type: "string" + title: "- RST: python default documentation - comments is rst" + enum: + - "UNKNOWN" + - "MARKDOWN" + - "HTML" + - "RST" + default: "UNKNOWN" PluginOverrideMissingPluginBehavior: type: "string" description: " - FAIL: By default, if this plugin is not enabled for a Flyte deployment\ @@ -3040,6 +3107,51 @@ definitions: recipients_email: - "recipients_email" - "recipients_email" + adminEntityDescription: + type: "object" + properties: + short_description: + type: "string" + description: "One-liner overview of the entity." + long_description: + description: "Full user description with formatting preserved." + $ref: "#/definitions/adminLongDescription" + tags: + type: "array" + description: "User-specified tags. These are arbitrary and can be used for\ + \ searching\nfiltering and discovering entities." + items: + type: "string" + labels: + description: "User-defined free-form key-value pair attributes. These are\ + \ arbitrary\nand can be used for searching, filtering and discovering entities." + $ref: "#/definitions/adminLabels" + source: + description: "Optional link to source code used to define this entity." + $ref: "#/definitions/adminSourceCode" + description: "EntityDescription contains detailed description for the task/workflow/launch\ + \ plan.\nDocumentation could provide insight into the algorithms, business use\ + \ case, etc." + example: + short_description: "short_description" + long_description: + values: "values" + icon_link: "icon_link" + uri: "uri" + long_format: {} + source: + file: "file" + line_number: 5 + repo: "repo" + link: "link" + language: "language" + branch: "branch" + tags: + - "tags" + - "tags" + labels: + values: + key: "values" adminExecution: type: "object" properties: @@ -3150,10 +3262,14 @@ definitions: values: key: "values" max_parallelism: 6 + description: "description" interruptible: true labels: values: key: "values" + tags: + - "tags" + - "tags" launch_plan: domain: "domain" resource_type: {} @@ -3546,10 +3662,14 @@ definitions: values: key: "values" max_parallelism: 6 + description: "description" interruptible: true labels: values: key: "values" + tags: + - "tags" + - "tags" launch_plan: domain: "domain" resource_type: {} @@ -3758,10 +3878,14 @@ definitions: values: key: "values" max_parallelism: 6 + description: "description" interruptible: true labels: values: key: "values" + tags: + - "tags" + - "tags" launch_plan: domain: "domain" resource_type: {} @@ -4033,6 +4157,15 @@ definitions: \ as a default.\nAs we need to distinguish between the field not being provided\ \ and its default value false, we have to use a wrapper\naround the bool\ \ field." + description: + type: "string" + description: "One-liner overview of the execution." + tags: + type: "array" + description: "User-specified tags. These are arbitrary and can be used for\ + \ searching\nfiltering and discovering entities." + items: + type: "string" description: "An ExecutionSpec encompasses all data used to launch this execution.\ \ The Spec does not change over the lifetime\nof an execution as it progresses\ \ across phase changes." @@ -4061,10 +4194,14 @@ definitions: values: key: "values" max_parallelism: 6 + description: "description" interruptible: true labels: values: key: "values" + tags: + - "tags" + - "tags" launch_plan: domain: "domain" resource_type: {} @@ -4597,6 +4734,26 @@ definitions: labels: values: key: "values" + entity_description: + short_description: "short_description" + long_description: + values: "values" + icon_link: "icon_link" + uri: "uri" + long_format: {} + source: + file: "file" + line_number: 5 + repo: "repo" + link: "link" + language: "language" + branch: "branch" + tags: + - "tags" + - "tags" + labels: + values: + key: "values" quality_of_service: tier: {} spec: @@ -5395,6 +5552,26 @@ definitions: labels: values: key: "values" + entity_description: + short_description: "short_description" + long_description: + values: "values" + icon_link: "icon_link" + uri: "uri" + long_format: {} + source: + file: "file" + line_number: 5 + repo: "repo" + link: "link" + language: "language" + branch: "branch" + tags: + - "tags" + - "tags" + labels: + values: + key: "values" quality_of_service: tier: {} spec: @@ -5908,6 +6085,26 @@ definitions: labels: values: key: "values" + entity_description: + short_description: "short_description" + long_description: + values: "values" + icon_link: "icon_link" + uri: "uri" + long_format: {} + source: + file: "file" + line_number: 5 + repo: "repo" + link: "link" + language: "language" + branch: "branch" + tags: + - "tags" + - "tags" + labels: + values: + key: "values" quality_of_service: tier: {} spec: @@ -6240,6 +6437,10 @@ definitions: \ as a default.\nAs we need to distinguish between the field not being provided\ \ and its default value false, we have to use a wrapper\naround the bool\ \ field." + entity_description: + description: "EntityDescription encapsulates all the detailed documentation\ + \ for the launch plan." + $ref: "#/definitions/adminEntityDescription" description: "User-provided launch plan definition and configuration values." example: workflow_id: @@ -6303,6 +6504,26 @@ definitions: labels: values: key: "values" + entity_description: + short_description: "short_description" + long_description: + values: "values" + icon_link: "icon_link" + uri: "uri" + long_format: {} + source: + file: "file" + line_number: 5 + repo: "repo" + link: "link" + language: "language" + branch: "branch" + tags: + - "tags" + - "tags" + labels: + values: + key: "values" quality_of_service: tier: {} spec: @@ -6819,6 +7040,30 @@ definitions: values: literals: {} uri: "uri" + adminLongDescription: + type: "object" + properties: + values: + type: "string" + title: "long description - no more than 4KB" + uri: + type: "string" + title: "if the description sizes exceed some threshold we can offload the\ + \ entire\ndescription proto altogether to an external data store, like S3\ + \ rather than store inline in the db" + long_format: + title: "format of the long description" + $ref: "#/definitions/LongDescriptionDescriptionFormat" + icon_link: + type: "string" + title: "Optional link to an icon for the entity" + description: "Full user description with formatting preserved. This can be rendered\n\ + by clients, such as the console or command line tools with in-tact\nformatting." + example: + values: "values" + icon_link: "icon_link" + uri: "uri" + long_format: {} adminMatchableAttributesConfiguration: type: "object" properties: @@ -13720,6 +13965,12 @@ definitions: $ref: "#/definitions/adminLabels" state: $ref: "#/definitions/ProjectProjectState" + tags: + type: "array" + description: "User-specified tags. These are arbitrary and can be used for\ + \ searching\nfiltering and discovering entities." + items: + type: "string" description: "Top-level namespace used to classify different entities like workflows\ \ and executions." example: @@ -13735,6 +13986,9 @@ definitions: labels: values: key: "values" + tags: + - "tags" + - "tags" adminProjectDomainAttributes: type: "object" properties: @@ -14068,6 +14322,9 @@ definitions: labels: values: key: "values" + tags: + - "tags" + - "tags" - name: "name" domains: - name: "name" @@ -14080,6 +14337,9 @@ definitions: labels: values: key: "values" + tags: + - "tags" + - "tags" token: "token" adminRawOutputDataConfig: type: "object" @@ -14177,6 +14437,37 @@ definitions: title: "Indicates the direction to apply sort key for response values.\n+optional" $ref: "#/definitions/SortDirection" description: "Specifies sort ordering in a list request." + adminSourceCode: + type: "object" + properties: + file: + type: "string" + title: "File where the code is located" + line_number: + type: "integer" + format: "int64" + title: "Line number where the task definition, workflow definition, etc starts\ + \ at" + repo: + type: "string" + title: "git repository" + branch: + type: "string" + title: "branch of the repository" + link: + type: "string" + title: "link to the original repository" + language: + type: "string" + title: "language of the code" + title: "Link to source code used to define this entity" + example: + file: "file" + line_number: 5 + repo: "repo" + link: "link" + language: "language" + branch: "branch" adminSystemMetadata: type: "object" properties: @@ -15698,6 +15989,10 @@ definitions: description: "Template of the task that encapsulates all the metadata of the\ \ task." $ref: "#/definitions/coreTaskTemplate" + entity_description: + description: "EntityDescription encapsulates all the detailed documentation\ + \ for the task." + $ref: "#/definitions/adminEntityDescription" description: "Represents a structure that encapsulates the user-configured specification\ \ of the task." adminToleration: @@ -40284,6 +40579,10 @@ definitions: \ do not even need to be registered." items: $ref: "#/definitions/coreWorkflowTemplate" + entity_description: + description: "EntityDescription encapsulates all the detailed documentation\ + \ for the workflow." + $ref: "#/definitions/adminEntityDescription" description: "Represents a structure that encapsulates the specification of the\ \ workflow." coreAlias: diff --git a/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go b/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go index 0cd7f73dc..89ac5aedb 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go @@ -1005,6 +1005,111 @@ func (a *AdminServiceApiService) GetActiveLaunchPlan(ctx context.Context, idProj return localVarReturnValue, localVarHttpResponse, nil } +/* +AdminServiceApiService Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition. +Retrieve an existing entity description. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param idProject Name of the project the resource belongs to. + * @param idDomain Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. + * @param idName User provided value for the resource. + * @param idVersion Specific version of the resource. + * @param optional nil or *GetDescriptionOpts - Optional Parameters: + * @param "IdResourceType" (optional.String) - Identifies the specific type of resource that this identifier corresponds to. - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects. Eventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects in a similar manner to other Flyte objects + +@return AdminEntityDescription +*/ + +type GetDescriptionOpts struct { + IdResourceType optional.String +} + +func (a *AdminServiceApiService) GetDescription(ctx context.Context, idProject string, idDomain string, idName string, idVersion string, localVarOptionals *GetDescriptionOpts) (AdminEntityDescription, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue AdminEntityDescription + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/api/v1/entity_description/{id.project}/{id.domain}/{id.name}/{id.version}" + localVarPath = strings.Replace(localVarPath, "{"+"id.project"+"}", fmt.Sprintf("%v", idProject), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.domain"+"}", fmt.Sprintf("%v", idDomain), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.name"+"}", fmt.Sprintf("%v", idName), -1) + localVarPath = strings.Replace(localVarPath, "{"+"id.version"+"}", fmt.Sprintf("%v", idVersion), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.IdResourceType.IsSet() { + localVarQueryParams.Add("id.resource_type", parameterToString(localVarOptionals.IdResourceType.Value(), "")) + } + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v AdminEntityDescription + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + /* AdminServiceApiService Fetches a :ref:`ref_flyteidl.admin.Execution`. Retrieve an existing workflow execution. diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_entity_description.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_entity_description.go new file mode 100644 index 000000000..7b6eaba71 --- /dev/null +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_entity_description.go @@ -0,0 +1,24 @@ +/* + * 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 + +// EntityDescription contains detailed description for the task/workflow/launch plan. Documentation could provide insight into the algorithms, business use case, etc. +type AdminEntityDescription struct { + // One-liner overview of the entity. + ShortDescription string `json:"short_description,omitempty"` + // Full user description with formatting preserved. + LongDescription *AdminLongDescription `json:"long_description,omitempty"` + // User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities. + Tags []string `json:"tags,omitempty"` + // User-defined free-form key-value pair attributes. These are arbitrary and can be used for searching, filtering and discovering entities. + Labels *AdminLabels `json:"labels,omitempty"` + // Optional link to source code used to define this entity. + Source *AdminSourceCode `json:"source,omitempty"` +} diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_spec.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_spec.go index 974069584..8de41f8dd 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_spec.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_spec.go @@ -35,4 +35,8 @@ type AdminExecutionSpec struct { ClusterAssignment *AdminClusterAssignment `json:"cluster_assignment,omitempty"` // Allows for the interruptible flag of a workflow to be overwritten for a single execution. Omitting this field uses the workflow's value as a default. As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper around the bool field. Interruptible bool `json:"interruptible,omitempty"` + // One-liner overview of the execution. + Description string `json:"description,omitempty"` + // User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities. + Tags []string `json:"tags,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_launch_plan_spec.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_launch_plan_spec.go index f1828b7cd..da0e0ee24 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_launch_plan_spec.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_launch_plan_spec.go @@ -34,4 +34,6 @@ type AdminLaunchPlanSpec struct { MaxParallelism int32 `json:"max_parallelism,omitempty"` // Allows for the interruptible flag of a workflow to be overwritten for a single execution. Omitting this field uses the workflow's value as a default. As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper around the bool field. Interruptible bool `json:"interruptible,omitempty"` + // EntityDescription encapsulates all the detailed documentation for the launch plan. + EntityDescription *AdminEntityDescription `json:"entity_description,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_long_description.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_long_description.go new file mode 100644 index 000000000..b5166e81b --- /dev/null +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_long_description.go @@ -0,0 +1,18 @@ +/* + * 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 + +// Full user description with formatting preserved. This can be rendered by clients, such as the console or command line tools with in-tact formatting. +type AdminLongDescription struct { + Values string `json:"values,omitempty"` + Uri string `json:"uri,omitempty"` + LongFormat *LongDescriptionDescriptionFormat `json:"long_format,omitempty"` + IconLink string `json:"icon_link,omitempty"` +} diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_project.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_project.go index f501820a2..5a6e10d64 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_project.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_project.go @@ -20,4 +20,6 @@ type AdminProject struct { // Leverage Labels from flyteidel.admin.common.proto to tag projects with ownership information. Labels *AdminLabels `json:"labels,omitempty"` State *ProjectProjectState `json:"state,omitempty"` + // User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities. + Tags []string `json:"tags,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_source_code.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_source_code.go new file mode 100644 index 000000000..e76bb9195 --- /dev/null +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_source_code.go @@ -0,0 +1,19 @@ +/* + * flyteidl/service/admin.proto + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: version not set + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package flyteadmin + +type AdminSourceCode struct { + File string `json:"file,omitempty"` + LineNumber int64 `json:"line_number,omitempty"` + Repo string `json:"repo,omitempty"` + Branch string `json:"branch,omitempty"` + Link string `json:"link,omitempty"` + Language string `json:"language,omitempty"` +} diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_spec.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_spec.go index 84ee0ec72..c72e48b29 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_spec.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_task_spec.go @@ -13,4 +13,6 @@ package flyteadmin type AdminTaskSpec struct { // Template of the task that encapsulates all the metadata of the task. Template *CoreTaskTemplate `json:"template,omitempty"` + // EntityDescription encapsulates all the detailed documentation for the task. + EntityDescription *AdminEntityDescription `json:"entity_description,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_spec.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_spec.go index 5e6377c24..def2d1086 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_spec.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_spec.go @@ -15,4 +15,6 @@ type AdminWorkflowSpec struct { Template *CoreWorkflowTemplate `json:"template,omitempty"` // Workflows that are embedded into other workflows need to be passed alongside the parent workflow to the propeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out to Admin to see other registered workflows). In fact, subworkflows do not even need to be registered. SubWorkflows []CoreWorkflowTemplate `json:"sub_workflows,omitempty"` + // EntityDescription encapsulates all the detailed documentation for the workflow. + EntityDescription *AdminEntityDescription `json:"entity_description,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_long_description_description_format.go b/gen/pb-go/flyteidl/service/flyteadmin/model_long_description_description_format.go new file mode 100644 index 000000000..9a5240bf0 --- /dev/null +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_long_description_description_format.go @@ -0,0 +1,20 @@ +/* + * 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 + +type LongDescriptionDescriptionFormat string + +// List of LongDescriptionDescriptionFormat +const ( + LongDescriptionDescriptionFormatUNKNOWN LongDescriptionDescriptionFormat = "UNKNOWN" + LongDescriptionDescriptionFormatMARKDOWN LongDescriptionDescriptionFormat = "MARKDOWN" + LongDescriptionDescriptionFormatHTML LongDescriptionDescriptionFormat = "HTML" + LongDescriptionDescriptionFormatRST LongDescriptionDescriptionFormat = "RST" +) diff --git a/gen/pb-go/flyteidl/service/openapi.go b/gen/pb-go/flyteidl/service/openapi.go index 0fc57eab4..8ffe4c247 100644 --- a/gen/pb-go/flyteidl/service/openapi.go +++ b/gen/pb-go/flyteidl/service/openapi.go @@ -78,7 +78,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x79\x73\x23\xb9\x95\x2f\xfa\xff\x7c\x0a\xdc\xf2\x8d\xe8\x2e\x0f\x25\x75\xdb\x33\x7e\x1e\x4d\xdc\x78\x8f\x2d\xb1\xaa\x75\x5b\x25\xc9\x5a\xba\xa6\xdf\xe5\x04\x1b\xcc\x04\x49\x58\x99\x00\x9d\x40\x4a\x45\x3b\xfc\xdd\x6f\xe0\x1c\x00\x89\xdc\xc8\xe4\xa2\xad\x9a\x33\x11\x6e\x15\x33\x13\xeb\xc1\xc1\x59\x7f\xe7\x1f\xff\x42\xc8\x3b\xf5\x48\xa7\x53\x96\xbd\x3b\x26\xef\xfe\x70\xf8\xdd\xbb\x9e\xf9\x8d\x8b\x89\x7c\x77\x4c\xcc\x73\x42\xde\x69\xae\x13\x66\x9e\x4f\x92\x85\x66\x3c\x4e\x8e\x14\xcb\x1e\x78\xc4\x8e\x68\x9c\x72\x71\x38\xcf\xa4\x96\xf0\x21\x21\xef\x1e\x58\xa6\xb8\x14\xe6\x75\xfb\x27\x11\x52\x13\xc5\xf4\xbb\x7f\x21\xe4\x9f\xd0\xbc\x8a\x66\x2c\x65\xea\xdd\x31\xf9\x3f\xf8\xd1\x4c\xeb\xb9\x6b\xc0\xfc\xad\xcc\xbb\xff\x0d\xef\x46\x52\xa8\xbc\xf4\x32\x9d\xcf\x13\x1e\x51\xcd\xa5\x38\xfa\xab\x92\xa2\x78\x77\x9e\xc9\x38\x8f\x3a\xbe\x4b\xf5\x4c\x15\x73\x3c\xa2\x73\x7e\xf4\xf0\xfd\x11\x8d\x34\x7f\x60\xa3\x84\xe6\x22\x9a\x8d\xe6\x09\x15\xea\xe8\x1f\x3c\x36\x73\xfc\x2b\x8b\xf4\x3f\xe1\x1f\xb1\x4c\x29\x17\xf8\xb7\xa0\x29\xfb\xa7\x6f\x87\x90\x77\x53\xa6\x83\x7f\x9a\xd9\xe6\x69\x4a\xb3\x85\x59\x91\x0f\x4c\x47\x33\xa2\x67\x8c\x60\x3f\xc4\x2d\x91\x9c\x10\x4a\x8e\x33\x36\x39\xfe\x35\x63\x93\x91\x5b\xe8\x43\x5c\xe0\x73\x18\xcd\x55\x42\xc5\xaf\x87\x76\x99\xa0\xe5\x98\xa9\x28\xe3\x73\x6d\xd7\xfb\x9a\xe9\x8c\xb3\x07\x16\x76\x80\x13\x21\x66\x22\xbe\x33\x35\x67\x11\x9f\x70\x16\x93\xf1\x82\x70\x31\xcf\x35\xc9\xd8\xdf\x72\xa6\x34\x99\xf0\x44\xb3\x4c\x95\x7a\x91\x73\x96\xc1\x0a\x9e\xc5\xa6\x97\x8f\x4c\xf7\xa1\xed\x62\x54\xe1\xdb\x19\x53\x73\x29\x14\x53\xa5\x45\x20\xe4\xdd\x1f\xbe\xfb\xae\xf2\x53\x7d\x06\x7d\xa2\xf2\x28\x62\x4a\x4d\xf2\x84\xb8\x96\xc2\xc1\xe0\x82\x1a\xf2\xa1\xb5\xc6\x08\x79\xf7\x3f\x33\x36\x31\xed\xfc\xee\x28\x66\x13\x2e\xb8\x69\x57\x21\x95\x06\xa3\x2d\x7d\xf5\xcf\x7f\x69\xfa\xfb\x9f\xc1\x8c\xe6\x34\xa3\x29\x33\xcb\xe2\xe9\x0a\xff\xaf\x32\x17\x43\x09\xa6\xf3\x82\x5a\xaa\x03\xaf\xcc\xf6\x82\xa6\xcc\xec\xbc\xd9\x2e\xfb\x05\xfc\x9d\x31\x25\xf3\x2c\x62\x64\xcc\x12\x29\xa6\x8a\x68\x59\x5b\x03\x0e\x2d\x18\x22\xae\x3e\x31\x5b\xc9\x33\x66\xf6\x4a\x67\x39\xab\x3c\xd5\x8b\x39\x0c\x52\xe9\x8c\x8b\x69\xb8\x14\xff\xec\x75\x9a\x1a\xd2\xfe\x1a\x33\xc3\x0f\x5a\x27\x36\x14\x7d\xf7\x4a\x44\x05\x19\x33\x62\x4e\x3c\x8f\x59\xc6\x62\x42\x15\xa1\x44\xe5\x63\xc5\x34\x79\xe4\x7a\xc6\x85\xf9\x37\x92\x6f\xe4\xd6\xec\xf5\xac\x0d\xfc\xb9\x7c\x65\xee\x14\xcb\xcc\xc0\x1f\x78\xcc\x62\xf2\x40\x93\x9c\x91\x89\xcc\x4a\xcb\x73\x38\x14\xb7\x33\xb3\x0e\xe9\x98\x0b\x38\x79\x66\x2d\x1d\x85\xfc\xab\x5b\xae\x7f\x25\xa6\x3f\x92\x0b\xfe\xb7\x9c\x25\x0b\xc2\x63\x26\xb4\x39\xd7\xaa\xda\xda\xbf\x4a\xe8\x9f\x26\xe4\x80\x98\x75\x66\x99\x86\xf5\x96\x42\xb3\x2f\x5a\x91\x03\x92\xf0\x7b\x46\xbe\x39\xe7\x4a\x93\xfe\xd5\xd9\x37\x3d\xf2\xcd\x79\xc1\x38\xd4\x37\xcf\xb0\xc2\xfe\xef\xff\x0e\x8e\x9e\xa6\xd3\xea\xa1\x7b\xd7\x37\xa7\xf9\x06\x2f\xa0\xa2\x85\xff\xfe\x97\xb0\x1d\xbb\x5f\xcb\xb9\x7a\xc1\xd2\x2d\x3f\xef\xca\xc5\x61\x99\xca\x0c\x5c\x99\x1d\xda\x96\x7f\xd7\x6e\x87\x06\xe6\xad\xb6\xe4\xde\x66\xec\x55\xf6\xad\xde\x16\xff\x36\x53\x78\x6a\x1e\xbe\x0d\x03\xa7\x1a\x4e\x16\xe5\x02\x0f\xa2\x3f\x97\x99\x32\x67\xd1\x9d\x90\x57\xc2\xb6\xb6\xe1\xe7\xc1\xcc\x02\x96\xee\x38\x75\xb0\x2a\xaf\x70\xde\x09\x4f\xf9\xaa\xfd\x3d\x13\xb1\x11\x1e\x2d\x43\x15\x79\x3a\x66\x99\x59\x06\xc7\x5a\x61\xb6\x63\xc3\x6a\x75\x9e\x09\x16\x77\x98\xe6\xdf\x72\x96\x2d\x96\xcc\x73\x42\x13\xd5\x36\x51\x2e\x34\x33\x92\x7a\xe5\xf1\x44\x66\x29\xd5\xf6\x85\x3f\xfd\xdb\xba\x0b\xa1\xe5\x3d\x5b\xb5\xff\x67\xb8\x9b\x11\x55\x40\x06\x69\x9e\x68\x3e\x4f\x18\x99\xd3\x29\x53\x76\x45\xf2\x44\xab\x1e\xbc\x66\xb4\x03\x96\x1d\xf8\x5b\x0e\x7a\x70\xb7\x7b\xae\xe0\x17\x32\xf1\xcc\x4e\xb0\x2f\x1a\x5a\x1a\x0a\xb8\xdf\x61\x89\xc2\x5b\xeb\x09\x96\x72\x33\x9a\x51\x32\xd3\xa3\xf1\xe2\xf0\x9e\xd5\xfa\x6d\xa5\x1c\x2a\x08\xd5\x3a\xe3\xe3\x5c\x33\x33\x6f\xd3\x86\xbb\x9f\x81\x3d\xa2\x10\xd0\x85\x35\xbc\xdc\x84\x63\x9e\xb1\x08\xe6\xb6\xce\x81\xf1\x5f\x99\x79\x1b\x4d\x6c\x81\xb3\xbf\x67\x0b\x90\x79\x1a\x56\xc0\x6f\xf9\x50\x0c\x05\x39\x20\xa7\x83\x9b\x93\xc1\xc5\xe9\xd9\xc5\xc7\x63\xf2\xc3\x82\xc4\x6c\x42\xf3\x44\xf7\xc8\x84\xb3\x24\x56\x84\x66\x0c\x9a\x64\xb1\x91\x6b\xcc\x60\x98\x88\xb9\x98\x12\x99\xc5\x2c\x7b\xba\x65\xac\x3c\x65\x22\x4f\x2b\xf7\x0a\xfc\x5e\x8c\xbe\xf2\x85\x11\x63\xfc\xa3\xd2\x93\xff\xae\x2d\x30\xcc\xd8\xf4\x1d\xb4\xf6\x6c\x82\x53\x34\xe3\x49\x9c\x31\x71\xa4\xa9\xba\x1f\xb1\x2f\x2c\xca\xf1\x4e\xfe\x47\xf9\x87\x91\x91\x7e\x65\xcc\xca\xbf\x94\xfe\x51\x88\x5b\x6b\x7f\xea\xf5\xed\xb5\xbf\x04\xed\xbc\xdb\x77\xf0\x0b\x8f\x1b\xdf\x86\x5f\x56\xcc\xc1\xbd\xb3\x64\xb0\xee\x95\xd6\x51\xb9\x17\xac\xb0\xd7\xf8\x4e\xc6\x74\xb6\x18\x51\xad\x59\x3a\xd7\x6b\x5a\x1e\x28\x49\x8c\xec\xba\x4c\x56\xbd\x90\x31\x1b\xb8\xfe\x7e\xb5\x22\x28\x0a\x9b\xc8\xb5\x26\x2c\x63\x22\x62\xed\x2d\xdc\x52\x75\x5f\xb4\xb0\x5a\xe0\x05\x1a\x23\x66\xf9\x49\x41\x60\xb5\x8e\x0b\xb1\xd7\x2c\x49\xf1\xe6\x2a\x61\xb7\x34\x1f\xf5\x41\x66\x66\x78\x6f\x41\xe0\x2d\x0d\xfc\x39\x64\xde\x4d\x4f\xf4\x57\x67\xe5\xd8\x90\x3f\xed\x6d\x22\xdb\xaf\x64\x57\x0b\x8a\xcc\x88\x5a\x28\xcd\xd2\x95\xb6\x94\xb7\xb3\x10\xf6\x02\x7a\xad\x03\xae\xdc\x81\xbf\x81\x53\x5f\xbe\xd1\xf7\xc7\x7b\x8d\x25\xdb\x95\x25\xf4\xb5\xcf\xd3\x79\xbb\x96\x4f\xf5\xc6\x6d\x5f\xe0\xee\x79\x13\xd3\x2c\xc9\x9a\xbb\x1e\xe4\x13\x99\x33\x5a\xf7\xca\xad\xf6\x08\x06\xb0\x42\x91\x2d\xdb\xd2\xfd\xf9\x33\x9f\x86\x16\x20\x34\xf7\xe9\x19\x57\x81\x31\x8c\x44\x32\x43\x59\x30\xb6\xe7\x1d\x75\xd9\xfe\x6d\xff\x66\x70\x7b\x4c\xfa\x24\xa6\x9a\x9a\x03\x9e\xb1\x79\xc6\x14\x13\x1a\xec\x04\xe6\x7b\xbd\x20\xa9\x8c\x59\x82\x1a\xed\x07\x23\x59\x93\x53\xaa\xe9\x09\xd5\x34\x91\xd3\x43\xd2\x87\x7f\x9a\x8f\xb9\x22\x34\x51\x92\x50\x47\x56\x2c\x76\x4d\x50\x11\x3b\xd6\x42\x49\x24\xd3\x39\x4f\xbc\x1f\xc1\x1b\x6f\xb8\x88\xf9\x03\x8f\x73\x9a\x10\x39\x36\x5c\xc5\x68\xe0\x83\x07\x26\x74\x4e\x93\x64\x41\x68\x92\x10\xdb\xad\x7b\x81\xa8\x99\xcc\x93\xd8\xb4\xeb\x46\xa9\x78\xca\x13\x9a\x19\x15\x1f\x47\x7b\x69\xdb\x22\xb7\x33\xe6\xc7\x0a\xe3\x32\xab\x99\xd2\x7b\xa6\x08\xd7\x64\x2e\x95\xe2\xe3\xa4\x38\xf3\x77\x67\x04\xc6\x7d\x72\x7e\x06\xf6\x82\x48\x13\x89\x3c\xd4\x75\x6e\xed\x43\xae\xc7\x94\x0a\xc1\xa0\x63\xa9\x67\x2c\xb3\xdd\xdb\x97\x5f\x5a\xf5\xbf\xbb\xb8\xb9\x1a\x9c\x9c\x7d\x38\x1b\x9c\xd6\x75\xff\xdb\xfe\xcd\x4f\xf5\x5f\x3f\x5f\x5e\xff\xf4\xe1\xfc\xf2\x73\xfd\xc9\x79\xff\xee\xe2\xe4\xc7\xd1\xd5\x79\xff\xa2\xfe\xd0\x92\x55\x67\x33\x42\x38\xb2\x35\xcf\xd6\xde\x66\xfa\x54\x36\xd3\xde\xd7\x6b\x34\xb5\x4e\xa9\xee\x06\x53\x6f\xa3\xb0\x5f\x92\x39\x55\x0a\x25\x23\x1c\xc1\xe1\x50\x7c\x92\x99\x61\x60\x13\x69\x78\x84\x91\x9e\x74\x96\x47\x9a\x8b\xa9\xff\xe8\x98\x0c\xf3\xef\xbe\xfb\x63\x74\xce\xc5\x3d\xfc\xc5\x5e\xe3\xe2\xec\x2d\xca\x7b\x8b\xf2\x6f\xcb\xa2\x6c\x44\x9f\xa3\xd0\x90\xbc\xdb\xe0\x2a\x23\x5c\x80\x4f\xdc\x88\x12\x32\xd7\xe6\x4f\xd3\x25\x90\xc7\x92\x10\xab\x6e\x06\x4b\x1f\x61\xd5\xd2\x47\x26\x53\x10\xe4\xbe\x70\x05\xcc\xe8\x51\x66\xf7\x93\x44\x3e\x76\x33\x57\x7e\x64\xda\x0f\xc3\x08\x4e\x6f\xc1\x4a\xf9\xd9\xce\xd0\x0f\xfc\x23\xd3\x66\xec\xd7\xb6\x97\x7d\xb0\xd5\x3e\xd8\xea\x65\x83\xad\x5e\x95\xa9\xf0\xe9\x59\x6b\xd9\xae\x88\xfc\xb5\xc5\x0f\xd7\xea\x66\x6b\xf1\xa2\x05\x4e\xb2\x67\xe1\xc9\x65\x57\xd4\x2e\xf9\x72\xd9\xd9\xb4\x82\x27\x97\x86\xf1\x56\xf8\x72\x69\xd0\xcf\xcf\x93\x7f\x13\x7e\xa2\xbd\x1b\x68\xc3\x85\x7a\x93\xac\xbb\xe3\xad\xf4\x6c\x4e\x9c\xa7\xbf\x4a\x6a\x31\x1f\xeb\x04\x79\xac\x11\xd5\xd1\x39\x8c\x63\x45\xdc\x46\x63\xa0\x46\x53\x64\x46\x3d\x14\xa3\x31\xf6\x62\xbb\x60\x8b\x4d\x6f\xbd\xee\xe1\x13\xeb\xde\x7a\xdd\x03\x27\x3e\x32\x5d\x1a\xc6\x5b\xb9\xf5\x4a\x83\x7e\xfe\x5b\xef\x37\x1a\x2f\xb1\x0f\x90\x78\xc2\xa5\xfb\xda\xef\xca\xd7\x1b\x02\xf1\x1b\x88\x79\xd8\x07\x39\xac\xb5\x46\x5f\x57\x54\xc3\xd7\x1a\xc6\xf0\x36\xe3\x16\xf6\x81\x0a\xfb\x40\x85\x97\xf0\x28\xbd\xbd\x40\x85\x27\x55\x7c\x99\x21\x2b\x05\x56\xd4\x50\xb9\x79\x37\x97\xaa\x5d\xdf\x0b\x9d\xd7\x0d\x7a\x1d\xb4\x59\xb6\x66\x02\xf5\xfe\x4a\x66\x54\x11\x19\x45\x79\x56\x71\xd1\x56\x4f\xf9\x49\xc6\xa8\x36\x47\xa4\x6c\xb8\x24\xd0\x32\xc9\x58\x24\x33\x70\x52\x52\x32\x9f\x51\xc5\x88\xce\xa8\x50\x7c\x95\x96\x87\xad\xc2\xb8\x4c\x3b\x6f\x41\xc1\xab\x2f\xe2\x73\xa9\x77\x63\x19\xd7\x0e\x24\x9e\xd5\xa6\x27\xcb\x6f\x92\x9d\x4d\x1d\xd2\x7e\xbb\xcc\xfc\x09\x8f\x8a\xb9\xb5\x76\x7c\x54\x4a\x6a\xfc\xa6\x47\xa5\x6c\xed\xd8\xc9\x51\x81\x71\xbd\x95\xa3\x52\x5f\xc4\xdf\xcc\x51\x69\x9a\xfa\x6b\x38\x2a\x2e\x1c\x60\xc7\xc7\xa5\xe6\x83\xdf\xf4\xc8\xd4\xc3\x15\x76\x72\x6c\xfc\xf8\xde\xca\xd1\x69\x5e\xd0\xdf\xcc\xf1\x69\x9b\xfe\xcb\x1e\x21\xef\x87\xe8\x7c\x78\x6e\x33\x3e\x9d\xb2\x0c\x35\xa3\xc8\x90\xe2\x6a\xa8\xa5\xc2\xf2\xbe\xd9\x81\x59\x7d\x1a\x7c\x0f\x6f\xe1\x24\xf8\xc1\xe2\xd8\x7f\x33\x47\xa0\x36\xef\x57\x42\xfb\x47\x86\x13\x3f\x00\x5a\x5b\xb7\x33\x70\xcd\x80\xf0\xe1\x02\x99\x67\xec\x81\xcb\x5c\x25\x8b\x83\x2c\x17\x4d\xdc\x1e\x8c\x04\x8f\x3c\x49\x88\x14\xc9\x82\x28\x4d\x33\xed\x1e\x8b\x29\x7a\x94\xcc\x61\x4a\xa8\xd2\xe4\x5e\xc8\x47\x41\x26\x94\x27\x79\xc6\xc8\x5c\x72\xa1\x0f\x87\xe2\x4c\x90\x6b\x1c\x23\x68\xde\x3d\x92\x2b\x73\x04\x23\x2a\x84\xd4\x24\x9a\x51\x31\x65\x84\x0a\x07\x5d\x53\x50\x06\x91\x19\xc9\xe7\xb1\x39\x58\xa6\x8b\x8a\x8d\xa9\x38\x60\x43\x71\x0b\x56\x0c\x45\xd8\x17\x9d\xb1\x94\x25\x0b\xd3\x87\xa1\x7d\x2d\x89\x5d\x1f\x1c\xaa\x35\x88\xb3\x2c\x93\x99\x02\x9d\x7d\xbc\xf8\x3b\x15\x9a\x0b\x46\x40\xcd\x54\x08\x7c\x74\x40\xce\xa5\x82\x98\xec\x9f\xfe\xac\x48\x94\xe4\x4a\xb3\xac\x47\xc6\xf9\x54\x11\x2e\xc8\x3c\xa1\x7a\x22\xb3\xd4\x8c\x90\x0b\xa5\xe9\x98\x27\x5c\x2f\x7a\x24\xa5\xd1\x0c\xdb\x82\x35\x50\xbd\xa1\x88\xe5\xa3\x50\x3a\x63\xd4\xf7\xee\x1e\x92\x6f\xc3\x67\x48\x00\xea\x7d\x0f\x0c\xf7\x3c\x9d\x27\x8b\x70\xf8\x41\x22\x34\xec\x89\x69\x84\xc5\x64\xcc\x22\x9a\x2b\x6b\xd8\xd1\xd9\x82\xb0\x2f\x33\x9a\x2b\xd8\x3b\x33\x3d\x6b\xf5\x88\x64\x3a\x4f\x98\x66\x84\x4f\x88\xce\x38\x8b\x09\x9d\x52\x6e\x96\xee\x86\x2d\x49\xdc\xf6\x44\x6f\x37\xd0\x52\xfd\xaf\x60\xf9\x48\x65\xc6\x48\xcc\x34\xe5\x89\x5a\xee\x94\x7c\x56\x82\x23\x4f\x4e\x6f\xe4\xf5\x92\x1b\x79\xd5\xd4\xb6\xe4\x26\xb4\x3b\xb6\xbf\x0a\xdf\xd2\x55\x58\xe6\x0a\xaf\xe2\x2e\x44\x90\x88\x1d\x08\x84\xc2\x5a\xc5\x23\x9a\x6c\x29\x1b\x5e\xdb\x41\xad\x2d\x1d\xba\x0f\xf7\x87\xe2\x6d\x1d\x0a\xdc\xb5\xd7\x73\x2a\xda\x12\x2a\x76\x8e\x14\xb3\x0e\xc6\xcb\x92\x8c\x08\x45\x52\xaa\xcd\xc5\x36\xb5\x57\x74\x47\x14\xc3\x02\xd4\xe5\x4d\x1d\x94\xe7\x40\x72\xf9\xba\x23\x16\xf6\x91\x0a\xbf\x41\x04\xda\x57\x93\xc0\xb8\xcf\x81\x7e\xa2\x1c\x68\xae\xf6\x39\xd0\xfb\x1c\xe8\xae\x0b\xb4\xcf\x81\xde\xe7\x40\xbf\xd9\x1c\xe8\x27\x4d\x7f\xde\x5d\x92\xf3\x6e\x32\x99\xdf\x94\x74\xbe\x97\xcc\xf7\x92\xf9\x3e\x5d\xd9\x4f\x6d\x57\x5c\xd0\x7d\xfd\x2e\x66\x09\xd3\xac\xdd\x40\xc7\xb2\xd4\x28\x1c\x78\xc3\x73\x61\x44\xc1\x69\xc6\x94\xda\x96\xa7\xf9\x86\xc3\xf2\x0a\x0d\xfe\x88\x02\x65\xd6\x93\x25\xd8\x75\x96\x31\x3b\xdf\xf6\xdb\x64\x79\x7e\xf8\x7b\xc8\x86\x3d\x0f\xdc\xf3\xc0\x4d\xa6\xf6\x7a\xcc\xd1\xc1\x61\x7e\x2e\x7b\xb4\xe7\xed\xf3\xbc\x5d\x38\xbd\x43\x47\x6b\xc1\x68\x91\xc2\x21\x2b\x55\xfa\xc3\x6d\xe9\x7c\x4b\x5e\xbf\x4e\x5f\xcb\xf8\x3a\xb6\xf3\x36\x99\x3a\x8e\x7d\xcf\xd1\xf7\x1c\x7d\xcf\xd1\xdf\x36\x47\x77\x27\xf9\x45\xdd\x8b\x41\xe1\xb4\x11\x8f\xb7\xa9\x9d\xd6\xbd\x0e\x05\x4d\x59\x3c\x80\x2c\x31\x9f\xe3\x96\xfd\x6a\x3e\x09\xab\xa2\xb9\x7c\xb0\xee\x0e\xc8\xf0\xeb\x62\xd5\x4b\xa5\xac\x36\xf3\x47\x16\x05\xca\xce\xe2\x37\xe1\x92\x6c\x5c\xe1\xaf\xa4\xb8\xda\xeb\xe0\x22\xcf\x5e\x5b\xed\x75\x4c\x7b\xef\x22\xdb\x97\x56\xdb\x3b\x81\x3a\x4e\x78\xef\x04\x7a\xbd\x4e\xa0\x0e\xdb\xf8\x24\x9e\xdd\x67\x3e\x9e\xcf\x25\x3a\x76\xcf\xdc\x71\x09\x36\x22\x26\xf9\x3c\x91\x34\xee\x58\x1d\x3d\x90\xe8\x3a\xa4\xef\x88\x98\x64\x6c\xca\x95\x66\x99\xd9\x97\x46\xc1\x70\x75\x3e\xcf\x5b\x2d\x83\xde\x39\x62\x33\xec\xf6\xdd\xbf\x75\x18\xfe\xb5\xbd\xb3\x81\x13\x8d\x69\xec\xeb\x13\x83\xf8\x96\xd2\x05\x99\xd1\x07\xe6\xa2\xcc\x1f\x68\xc2\x63\x5a\x5d\xeb\xca\x0c\x97\x0d\xe8\x3f\xd6\x1b\x10\x2d\x0f\xc7\x17\xb4\x53\xe5\x28\x60\x0b\x50\x01\xef\xcc\x8c\x56\x9e\x64\x8c\xc6\x0b\x32\x66\x4c\x78\xb2\x69\xb8\x4f\x5a\xc6\xbc\x13\xc1\xf9\xc5\xb5\xd2\x3a\xf5\xbc\x16\xb5\xf4\x19\xe3\x5e\x9b\xf9\xcd\xf6\x3a\xe8\xf6\x8a\xa7\xfa\xc3\xdb\x62\x41\xfb\x58\xd8\xbd\x6d\xf2\xe5\x6d\x93\xfb\x58\xd8\xbd\xa2\xff\xca\x14\xfd\x7d\x2c\xec\x3e\x16\x76\x6f\x06\x59\x3e\xed\xbd\x19\xe4\xab\x88\x85\xed\x24\xc3\x6f\x18\x0d\xfb\xc6\xa5\xf9\xbd\x30\xef\xde\xdb\x0b\xf3\x7b\x61\xfe\x2b\x15\xe6\x5f\xc7\x0a\xef\x25\xf9\xbd\x24\xbf\x97\xe4\xf7\x92\xfc\x5e\x92\xdf\xf9\x32\xee\x25\xf9\x66\x49\x1e\xfe\x72\xc5\x76\xd6\x15\xeb\xd7\x14\xe7\xd7\x4e\x77\x5b\xdf\x19\xf8\x91\xe9\xb7\xea\x09\xdc\x4b\xed\x7b\xa9\xfd\x75\x4b\xed\xaf\x66\x42\x5f\x5f\xa1\x8c\x7d\xa9\x89\x7d\xa9\x89\x7d\xa9\x89\x27\x2e\x35\xe1\xbe\xee\x90\x23\x65\x0f\x97\xa6\x3a\x57\x88\x55\x5c\x04\x9b\x74\x12\x7b\x3a\xa4\x46\x55\x7a\x58\x2d\xf7\x90\xbe\x26\xa9\x34\xba\x9b\x60\xa5\x77\x1c\x83\xc3\xc0\x9a\x29\x7f\x60\x82\xb8\xe4\x80\x9e\xbd\xc6\x7a\x60\x4c\xf9\xa7\x3f\x7c\x98\x7c\x4b\x35\xa1\x44\xf3\x94\x1d\x92\xb3\x09\x72\x8b\xc8\x9c\x2e\xc5\xb4\xaa\x44\x63\x21\xe5\xc3\x47\x22\x2e\xc6\xea\xfa\xe6\x45\x70\x0e\xbe\xd6\x73\xcc\x36\x4f\x34\xb2\x5e\xd7\x38\x20\x8d\x8e\x3d\x87\x82\x83\x96\xb2\x2c\x71\x5f\x96\xba\x75\x2f\xa7\x34\x36\x8c\x21\x18\x42\x91\x25\x1c\xbe\x0f\x77\x3a\x57\x3e\xbc\xa8\xf4\x3d\x7e\x0d\x70\xa5\x00\x2f\x0a\xb0\xea\x9d\x86\x31\x83\xe8\x37\x23\xe2\xc5\x79\xc2\x08\x55\x4a\x46\x9c\x82\x1a\x83\x32\x00\xe1\xda\x59\x1a\xdc\x4b\xae\xeb\x98\x2b\x3a\x4e\x58\x6c\xd7\x98\x15\xd1\x4e\x4b\x47\xce\x15\x19\x33\xb3\xc4\x86\x4d\x95\x57\x7f\x86\x12\x48\xc3\x68\x82\xa1\xb0\xfa\x48\x98\xc0\x81\x2c\x91\xa0\x91\x38\xdf\xaa\x10\xbd\xcf\xb8\xf3\x4f\xf7\x22\xf5\x5e\xa4\xfe\x8d\x8a\xd4\xaf\x28\x42\xf3\x55\x24\x0e\x82\x0f\xd4\x70\xfe\x91\x37\x6c\xaa\xae\xb6\x9e\x73\xae\xb4\x22\x51\xae\xb4\x4c\xdb\x25\x9f\x4f\xae\x87\xbe\xef\xe0\x44\x8a\x09\x9f\xe6\x78\xb7\xfc\x6a\x65\x13\x7f\xa2\x0b\x35\x65\x31\x67\xdd\x0c\x43\xde\x6e\xbd\xaa\xb3\xc6\x7c\xc4\x06\x27\x6f\x43\x3b\x6f\xe2\xb6\x6b\x1e\xfa\x73\x5d\x7a\xeb\x28\xab\x85\x7d\xdc\x6a\x9a\x46\xbf\x18\x5d\x0f\x6e\x2e\xef\xae\x4f\x06\xc7\xa4\x3f\x9f\x27\x1c\x5d\x56\x48\x61\xfc\xef\x66\x52\x58\x35\xca\x93\x88\x15\x88\x10\xcc\x1d\x7c\x64\x46\x1f\x24\x07\xe4\xe4\xfc\xee\xe6\x76\x70\xdd\xd2\xa0\x25\x09\x40\x1c\x60\xe9\x3c\x01\xf9\xe8\x3e\x1f\xb3\x4c\x30\x23\xe1\x5b\xc8\xf7\xc2\x73\x86\x8d\x0e\xfe\x6b\x70\x72\x77\x7b\x76\x79\x31\xfa\xcb\xdd\xe0\x6e\x70\x4c\x1c\x6d\x99\x66\xcd\xb8\xcc\x28\xe2\x85\xa0\xa9\xd1\xba\xcb\xe5\xad\xfe\x96\xb3\x1c\xc4\x31\x3e\x15\x29\x83\x4a\x0c\xa5\x16\xdd\x80\xcf\xfb\x3f\x0c\xce\xcb\x2d\xcf\x58\x88\x43\x4f\x12\x3a\x66\x89\x75\xe5\x81\x77\xca\x9c\x9f\x00\xb1\x1f\x7d\x7c\x39\xae\xea\x5f\xee\xfa\xe7\x67\xb7\xbf\x8c\x2e\x3f\x8c\x6e\x06\xd7\x3f\x9f\x9d\x0c\x46\x56\x93\x3a\xe9\x9b\x7e\x4b\x3d\x59\x85\x8b\xfc\x2d\xa7\x89\xd1\xc8\xe5\xc4\x21\xd3\x93\xc7\x19\x13\x24\x17\x40\x71\xa8\xe6\x83\x56\x12\xc2\xf2\xe0\x8c\xae\xce\xef\x3e\x9e\x5d\x8c\x2e\x7f\x1e\x5c\x5f\x9f\x9d\x0e\x8e\xc9\x0d\x4b\x40\x11\x76\x8b\x0e\xbb\x38\x4f\xf2\x29\x17\x84\xa7\xf3\x84\x99\xd5\xa0\x16\x07\x62\x46\x1f\xb8\xcc\x4a\xda\x0a\xac\x23\xb0\x02\x68\xdf\x29\x9c\xa3\x60\xe9\x2e\x2f\x3e\x9c\x7d\x3c\x26\xfd\x38\xf6\x73\x50\xd0\x46\x89\x72\x1c\x9a\xd0\x41\x0d\x4d\x28\xa2\x18\x10\x02\x05\xda\x1f\x58\x96\xf1\x98\x55\xe8\xa8\x7f\x73\x73\xf6\xf1\xe2\xd3\xe0\xe2\x16\x56\x4c\x67\x32\x51\x64\x26\x1f\xc1\x0b\x04\x33\x04\xe7\xd0\x03\xe5\x09\x74\xe6\x36\x4b\x0a\xf2\x38\xe3\xe0\x39\x84\x0a\x05\xbe\x67\xb4\x49\x64\x79\x3d\xa9\xe2\xb9\xb5\xfe\xd2\xc1\xab\xab\xea\xd5\x93\x54\x7f\xa3\x72\x2c\x96\xbd\x50\xa2\xf2\xfa\x8b\xab\xa8\xb5\xfe\x45\x85\xdc\xda\x0d\x14\x35\x7a\x69\x9f\x69\xb1\xd7\x9d\xed\x13\xe5\x35\x7c\xb6\xdb\xdb\x30\xde\x78\xe4\xec\x54\x47\xff\x28\x31\xe0\x7f\xee\x30\x5a\x0b\x13\x74\x96\x62\x17\x06\xd9\xea\xbf\xda\x6b\xb6\xe3\xe5\x1d\x7c\xd9\xf4\x61\xdd\x8f\x13\x7c\xf0\x16\x6e\xe5\x70\xb8\xaf\xe8\x06\xbe\x0e\xe5\x2c\x27\xae\xa7\x4c\xd3\x98\x6a\x6a\xf8\xda\x94\xe9\x43\x72\x29\xe0\xd9\x2d\x55\xf7\x3d\xe2\x0a\x8f\x11\x99\x91\x42\x90\x7d\x86\x04\xf7\x37\x62\xc0\x5c\x5f\xb9\xda\x1b\x09\xf6\x46\x82\xe6\x95\xd9\x47\xcb\xb5\xac\xf0\xae\x6e\xd4\xb5\x6c\xfe\xbb\xbb\xf8\x02\x13\xbf\x0b\x7c\xa9\xd8\x68\x4b\x37\xe2\x4a\x7b\xec\xdb\xbd\x0c\x9f\xd7\x22\xbb\xd3\xab\x11\xeb\x92\xed\xef\x3d\xfc\xbf\xfd\xbd\xb7\xbf\xf7\xf6\xf7\xde\x2b\x58\xe1\x17\xb7\x6e\x37\x70\xf7\x17\x35\x6f\xaf\x52\x90\x37\x86\xc9\x2b\x14\xe2\x75\x80\xf2\x7e\xed\x82\x87\xd7\x60\xd6\xae\x6b\xc8\x8a\xa8\x19\xcd\xb0\xe0\x77\x24\xd3\x54\x8a\xb2\xdd\xbc\x47\xbc\x93\x1f\x8c\x92\x2b\xc1\x54\x0d\x65\x17\xdd\xf0\xb7\x61\xef\x0e\xd6\xe5\x39\xb2\x9b\x76\x2a\x42\x60\xda\xc0\x5e\xbf\x7e\x42\x39\x63\x8f\x63\xb8\x53\x1c\xc3\xd7\x31\xd7\x27\xc9\x84\xda\xbd\x0d\xfe\x6d\x64\x3f\xed\x01\x0b\xf7\xf9\x3d\xfb\xfc\x1e\xf8\x7d\x0f\x58\xb8\x3b\x6a\x7d\x5a\x99\x5e\xc6\x6c\x54\xa9\xd0\xe5\xff\x39\xaa\xba\xbc\x4a\x4f\x42\xff\x57\xe9\x41\x91\xf0\x04\xad\xf3\x78\x97\x55\xbd\x2e\x64\xcc\xb6\xa8\xec\x65\x46\xd4\xb9\xaa\x57\xa9\xaf\x57\x2e\xc2\xbb\x65\x42\x51\xbe\x34\xf0\x27\x16\xe4\x5b\x28\xe6\x6b\xb4\x46\x35\xd0\xff\xde\x34\xb5\x72\xa1\xbe\xd6\xb2\x09\x05\x83\x7b\x43\x8e\x9a\x6e\xb7\x80\x0b\xef\x19\xb5\xdc\x05\xcd\xcf\xfd\x8d\xd0\xfc\xf8\x69\x20\x6d\xba\x5f\x08\x15\x24\x9b\xf2\x55\xb0\x29\x82\x4d\xa9\xfb\xb7\x61\xe7\x09\x47\xfc\x1c\x96\x9e\xa5\xc4\xf4\xd5\x5d\x13\xcb\x8e\xc6\xfe\xb2\xe8\xb8\x5c\x5f\xeb\x95\xb1\x47\x9e\x59\x66\x7b\xd9\x43\xbb\xec\x4d\x3f\xaf\x67\xc2\x7b\xd3\xcf\x9b\x36\xfd\xa0\xa3\x7a\x34\xa7\x19\x13\xba\x41\x46\xaf\x5e\x27\xf0\x7a\x98\xc3\xef\xa4\x0e\x68\x00\xa5\x45\x7b\x21\xfb\xab\xea\xeb\xb2\x05\x59\xc1\x60\x84\x72\x45\x90\xc3\x74\xf4\x8f\xe2\xef\x40\x09\x08\x7e\x6c\x70\xf8\x2e\x0b\x04\x43\x3c\x7d\x65\xae\xef\xdc\xc6\x84\xed\x2a\xf3\xc9\x09\x89\x2d\x8e\xda\xf6\xf8\x31\x97\xde\xc0\xe2\x42\xe0\x2a\x66\xd8\x10\x57\x66\x7b\x3a\x70\x62\x58\x11\x3f\xb1\x32\xcc\xec\x0a\x3f\x3d\x85\x2f\xdf\x56\x56\x54\xcb\xd0\x9f\x37\xfc\xac\x4e\x8e\xdd\x4e\xb7\x23\x0e\x8e\x79\x3e\x41\x32\x89\x11\x95\xe5\x24\xdc\x70\x97\xcb\x4d\x21\xd5\xa9\xed\x7a\x7a\x6e\x01\xb2\x76\xe6\xba\x4d\xdc\xd2\xe8\xdb\x9d\xf7\x8b\x07\xe3\xac\xa0\xfb\x17\x0d\xcc\x59\xc2\xb8\xb7\x2b\x5d\xf9\x62\x7c\xd9\xdb\xee\x9f\x8f\x33\x7f\x64\xfa\xeb\x63\xcb\x1f\x99\x7e\x2e\x9e\xbc\x29\x23\x5e\xca\x8c\x8a\x7a\x45\x6f\x34\x4e\xa4\xc6\x7f\xdf\xec\x74\xd7\x89\xd7\xfa\x8c\x93\xb4\xc1\x5a\x3e\x2d\x3e\x9c\xaa\x96\xd6\x80\x51\xd2\x01\xf7\xe9\xcb\xfb\xf4\xe5\x7d\xfa\x72\xf5\xa8\xef\xd3\x97\xf7\xe9\xcb\x8d\xc9\x56\x31\x4b\x98\x66\xad\x32\xdc\x29\x3c\x7e\x29\x19\x0e\x7b\x7f\x46\x09\x0e\x3b\xfc\xfa\x84\x38\x9c\xd7\x5e\x8e\xdb\xcb\x71\xbb\x98\xee\x6b\xd5\xa4\x1d\x95\xbf\x06\x4d\xba\x33\x6a\x53\x11\xb0\xb6\x32\x4e\xc1\x4e\xfb\xd7\x95\x01\x0a\x01\x02\xa6\x1b\xce\xaa\x20\x84\x2b\x37\xec\xb7\xc3\xe4\xd4\x53\xf3\xb1\x6d\x5c\xad\x6e\xdd\xbf\x5a\x4f\xeb\xbe\xc6\x47\xe3\x5a\xed\x1d\xc1\x4b\x16\x67\xef\x08\xde\x3b\x82\x5f\x9d\x23\x78\xe7\x2a\xd5\xd2\x4a\xfd\xd7\xf6\x6a\x5e\x1a\xa1\xee\x2e\x7a\xd4\x65\x0c\x29\x20\x2e\x79\xcc\xe6\x89\x5c\x80\xbd\x67\xa9\xe5\xdb\xd7\xe8\x6f\x08\xd4\xaa\x5e\xfe\xee\xed\xab\x9a\xd0\xfe\xda\xef\x7f\x37\xf2\xe7\x52\x6b\x5e\x8b\xd8\x5b\xcc\xfb\x55\x08\xba\x47\xff\xa8\xa4\x67\x74\xc2\x6f\x09\x12\x2a\x56\x1f\x83\xa1\x68\x7e\x12\x94\x12\xb0\xb7\xe6\x38\xd7\x41\xec\xa3\x32\x07\x60\xce\x32\xbd\x08\xde\x64\xe9\x5c\x2f\xfe\x73\x28\x78\x81\x38\xce\xa7\x42\x66\xc8\x03\xcd\xc7\x33\x2a\xe2\xc4\x9c\x1f\xe5\xdb\x89\xa8\x10\x52\x83\x70\x02\x33\x88\xc9\x03\xa7\x28\xca\xf4\xaf\xce\x3a\xc4\x07\x74\x3a\x8b\x25\xd7\xfe\x1b\x3a\x89\xcf\x8d\xe5\xbd\xe2\x16\xfd\x98\xc8\x31\x54\x9f\xc8\xcb\x26\x06\xd3\xc0\xde\x19\x5d\xda\xb9\x97\x62\x1e\x9a\xaa\xfb\x6a\xd2\x58\x39\x85\x60\xb4\x34\x8d\x6c\xc5\xbb\x25\x60\xc5\xe5\xaf\x56\x52\xcd\xca\xcf\x6c\xf2\x19\x3c\x86\x21\x57\xc7\xe1\x7e\x0c\x3b\x74\xbf\x15\x2d\xbb\x5f\x5c\xf5\x2e\xf8\x31\x63\x3a\x5b\x8c\xa8\xd6\x86\x21\xed\x32\xbf\xed\x96\xaa\xfb\x2d\xf2\xdb\xca\x9e\xa6\x15\xf9\x6d\xa5\xbe\x5e\x39\xc7\x2a\xe5\xb7\x95\x07\xfe\xe4\x1c\xab\x23\x71\x7f\x75\xa9\x0c\x5d\x8f\xea\x3e\xad\x61\x83\xa5\xfb\x5a\x53\x1c\x96\xf1\xe2\x57\x33\xc2\xca\x75\xf0\x35\x9e\xdc\xf2\xe5\xb6\x3f\xa2\xcb\xd6\xe8\xab\x2b\x33\x52\x91\x59\x56\xcc\xed\x8d\x94\x1b\xa9\x8a\x5d\xbb\x1e\xd5\xd3\xd8\xdf\x83\xdd\xd8\xd7\x1f\xdc\xd7\x1f\xdc\xd7\x1f\x7c\xf2\xfa\x83\xdd\x74\xd6\xce\x0a\x6b\x57\x6d\xb5\x9b\xaa\xda\xae\xa7\x3e\x81\xcf\xb9\xbb\x32\x59\xc9\x8d\x2f\xab\x91\x9b\xe6\xc6\x97\xba\x7f\x13\xce\xe9\xd2\x88\x9f\x23\x37\xfe\x37\xaa\x59\xee\xd5\xca\x27\x59\xb7\xaf\x55\xa7\x7c\xe5\x0a\xe5\x3e\xab\x7f\x8f\xa8\xb8\x0f\x35\xd9\xe1\xe2\xec\x43\x4d\xf6\xa1\x26\x5f\x6d\xa8\x49\xbb\x7a\xc2\xe3\xad\x33\x36\xd7\xc4\x50\xf7\x56\x86\xec\x57\x10\xa5\x8c\xd8\xdf\x01\x55\xbd\x49\x5b\x28\x64\xe9\x12\x0a\xf2\xe6\x9a\xc3\x59\xfc\x26\x54\x86\xc6\xd5\x7c\x0e\xd5\x61\x0f\xc8\xbd\x53\x40\xee\x57\x37\xed\xbd\x54\xb9\x97\x2a\xf7\x82\x53\xc7\x09\xef\x05\xa7\xd7\x2b\x38\xbd\x94\x36\xf4\x35\x61\x33\x19\x11\xab\x94\x95\xb4\x34\x4e\x19\xf1\x95\xc0\x99\x91\xcf\x13\x49\xe3\x55\x11\x47\xbf\x06\xe2\xdb\x12\xb9\x2f\x68\x37\x2b\xe2\x94\x2b\xe2\xdf\x32\xd9\x0e\x1b\x30\x3d\xbe\x05\xd1\xce\x8c\x13\x47\xdc\x21\x3a\x32\xec\xf0\xdd\xbf\x75\x18\xf8\xb5\xbd\x93\x81\xd3\x8c\x69\xec\x00\x0c\x50\x3c\x4b\xe9\x82\xcc\xe8\x03\x23\x13\xca\x13\xb4\xcf\xf1\x98\x56\xd7\xb7\x32\xb7\x65\x03\xfa\x8f\xf5\x06\x44\xcb\xc3\x29\x32\x1a\xcd\x7d\x81\x52\x55\x44\x13\xe7\xee\x83\x77\x66\x54\x11\x9a\x64\x8c\xc6\x0b\x32\x66\x4c\x04\x99\x6c\x5d\xc7\xbc\x13\xc1\xf8\xc5\xc3\x33\x43\xba\x79\xd1\x28\x6f\xe0\x1a\xad\x95\xab\x77\xae\x58\x56\x39\xc9\x16\x3a\xe4\x36\x8a\xa3\xfa\xc3\x5b\x61\x2e\xcf\xa1\x26\x7e\xc5\x5e\xa4\xbd\xa7\xe8\xb7\x59\x1f\xf2\xd5\x68\x1f\x7b\x15\x7d\x9f\x64\xbc\xf7\xfc\xec\x0d\x18\x7b\x03\xc6\xce\x97\xf1\x35\x19\x30\x5e\x50\x46\xc7\xdc\xa6\x27\x29\x9c\xf2\x5a\xa4\xf5\xbd\xb0\xbe\x17\xd6\xf7\xc2\xfa\x57\x2b\xac\xbf\x8e\x15\xde\x4b\xea\x7b\x49\x7d\x2f\xa9\xef\x25\xf5\xbd\xa4\xbe\xf3\x65\xdc\x4b\xea\x15\x49\x1d\xfe\x72\x68\x01\xeb\x8a\xed\x9d\xc5\xf5\xcd\xa0\x01\xba\xb9\xe9\x2c\x36\xc0\x5b\x91\xcc\xf7\x52\xf9\x5e\x2a\x7f\xdd\x52\xf9\xab\x99\xd0\xd7\x97\x10\xbc\x4f\xa9\xdd\xa7\xd4\xee\x53\x6a\x5f\x22\xa5\xd6\xf1\x92\x65\x12\xce\xb2\xba\x3e\x3f\x5b\xe6\xf2\x2d\x17\x51\x92\x83\xa8\x6a\x7e\xfe\x21\xe7\x49\x4c\x40\x45\x32\x9a\x2e\x97\xe2\x3d\xd0\x13\x90\x02\x8c\xd3\x55\xa2\x58\x2e\xc1\xfc\x5c\x63\x75\xaf\x56\x88\x29\x46\xbb\x29\x0c\xdb\xae\xf6\xd4\x97\xe3\xdd\xa0\xfa\x5f\xe9\x37\xd7\xd0\x2b\xaa\x09\xd8\x73\x62\x89\xe1\x48\x6e\x7c\x4f\x5c\x1d\xb0\xb1\xcf\xb5\x6a\x05\x7e\xb6\x1f\xbd\xad\x52\x06\xf5\x51\xef\x2b\x04\x92\x60\xd7\xf6\x15\x02\x9f\x70\xde\xee\x9c\xad\x98\xb9\xa3\x51\xb4\x85\xbf\xd1\x69\xbf\x78\xb0\x63\xfb\x49\x7f\xd1\xd0\xc7\xc6\x8b\xac\x96\x5b\x77\xf4\x8f\xc6\x7b\xea\x05\x0a\x23\xae\x7d\x39\xed\xa4\x44\xe2\x36\xd7\xd3\x47\xa6\xbf\x96\xbb\x69\x5f\x26\x71\x5f\x5e\x67\x47\xd3\xdd\xe8\xee\x79\xb3\xb3\xdd\x17\x85\xdc\x17\x85\xdc\x17\x85\xdc\x17\x85\xdc\x17\x85\x24\xbf\xf1\xa2\x90\x6b\xcb\xaf\x3b\x28\x0f\xb9\x8d\xf4\x8a\xdd\x7f\x2d\x02\xec\xbe\x44\xe4\x5e\x86\xdd\xdd\x74\x7f\x5b\x32\xec\x2b\xb4\xa0\xbc\x8a\x5a\x98\xde\x82\xf2\xe2\xb0\x44\x9e\xb5\x77\x86\x26\x0a\xe3\x5e\xfc\xd7\x3b\x45\x28\x72\x9b\xb6\x47\x29\xb2\xff\xb7\x47\x29\xda\xa3\x14\xb5\xcc\x7a\x1f\x58\xbd\x47\x29\x22\xfb\xd0\xe1\x7d\xe8\xf0\x6b\x0e\x1d\xee\xb0\x8d\x7b\x94\xa2\x8e\x22\xe3\x13\x21\x15\x39\x99\x6b\x2b\xb4\xa2\x06\x71\x70\x35\x62\xd1\xe7\xba\x46\xf4\x6a\x45\x3d\x37\xd6\x3d\x72\xd1\x1e\xb9\x68\x5b\xda\x79\x15\x0a\xe8\x33\x22\x18\x35\x71\x98\x75\xf2\xa2\x1b\x98\xcb\xb6\x0a\xe6\xdb\x40\x33\x72\xa3\xdd\x27\x49\xef\xd3\x31\x5e\x7f\x3a\xc6\xab\x4b\x92\x7e\x35\x9a\xca\x5e\x9d\xdf\xe7\x49\xef\xf3\xa4\xf7\xc6\x8e\xbd\xb1\x63\xe7\xcb\xf8\x9a\x8c\x1d\x2f\x2c\xb7\x3f\x21\xaa\xd1\x6b\x94\xe0\xf7\x02\x3c\xbe\xb7\x17\xe0\xf7\x02\xfc\x57\x2a\xc0\xbf\x8e\x15\xde\x4b\xef\x7b\xe9\x7d\x2f\xbd\xef\xa5\xf7\xbd\xf4\xbe\xf3\x65\xdc\x4b\xef\xcf\x86\x74\xd4\x24\xc2\xaf\x8d\x76\xb4\xa6\x9b\x2f\x48\x66\x7b\x4b\xd2\xfa\x5e\x52\xdf\x4b\xea\xaf\x5b\x52\x7f\x35\x13\xda\x23\x1f\xed\x91\x8f\xf6\xc8\x47\x7b\xe4\xa3\x8d\x64\xa4\x7f\xb1\xc7\xf2\x5d\x70\x13\xfb\x2b\xfb\xdd\x0f\x89\x1c\xdf\x2e\xe6\xcc\xfc\xf7\x94\xa7\x4c\x28\x90\x68\xb9\x5e\x84\x32\x51\xcb\xca\xd7\xd7\xfc\xdd\xcd\xd9\xc5\xc7\xf3\x30\x55\xed\xdd\xa7\xbb\xf3\xdb\xb3\xab\xfe\xb5\x5f\x17\x3f\xab\x70\x2d\xec\x77\x25\xb1\xce\x92\xfc\x35\x33\xfa\x2b\x9c\x9a\x1b\x4d\x75\xae\x36\x1b\xd9\xf5\xe0\x66\x70\xfd\x33\xa4\xda\x8d\x4e\xcf\x6e\xfa\x3f\x9c\x97\x08\xa2\xf4\xbc\x7f\xf2\x97\xbb\xb3\xeb\xf6\xe7\x83\xff\x3a\xbb\xb9\xbd\x69\x7b\x7a\x3d\x38\x1f\xf4\x6f\xda\xbf\xfe\xd0\x3f\x3b\xbf\xbb\x1e\x2c\x5d\x8f\xa5\xa3\x5d\xae\xc8\x28\x58\x24\xc8\x62\x21\x91\xe5\x1a\x59\xb1\x86\xc4\x8b\x8f\x8e\x1d\x36\xf5\x75\x4c\xee\xac\x5d\x80\xdb\xc6\x5d\x48\x92\x6f\x08\x15\x9a\x98\x2b\x3a\x4e\x58\x5c\x6b\xc9\xad\x61\x5b\x4b\xb4\x34\xa8\x47\xa3\x81\x7b\x91\xd3\xf0\xbc\x08\x79\x01\x81\x04\x60\xcd\x44\xdc\xd0\x07\xee\x43\x6b\x0f\xc2\xf0\x2e\xfe\xc0\x4a\x3d\x45\x79\x96\x31\xa1\x93\x05\x0a\xdc\xaa\xd6\xa8\xdb\xbe\xb6\x66\xed\x9d\xea\x1b\x9c\x51\x85\x91\x57\xa5\xf1\x67\x2c\x61\x54\x35\x8c\xd9\xee\x7e\xb7\x65\xf1\x7b\x65\x2d\x3a\x78\x19\x4d\x28\x4f\xf2\x8c\x55\x4e\x8b\x14\x7f\xcd\x05\x68\xb0\x83\x2f\xe6\x32\x33\x27\xf9\x5c\x4e\x79\x44\x93\x4b\x68\x46\x66\x9b\x9d\x9c\xfe\x45\x89\x94\x2f\xaf\x97\x52\x6e\xf8\x76\x95\x50\x0f\x48\xff\xe2\x14\x92\x8c\xdd\x50\x8b\x57\x35\xd7\x09\x0c\xe8\x82\x29\x33\xcf\x48\x8a\xd8\xba\x40\xcc\x05\xb6\x08\xe4\xd2\xbf\x4a\x48\xd4\xce\x95\xd1\x96\xfa\x17\xa7\xe4\x88\x5c\x5e\x0f\xc5\xa5\x51\xa3\x0d\xdd\x33\x23\xd0\xe1\xb2\x71\x45\x84\xd4\x84\xa7\x73\x99\x69\x2a\xb4\x91\x65\xe1\x26\xb3\x2b\x82\x44\x7c\x22\xd3\x34\xd7\xd4\xd0\x4a\x6d\x51\x05\x5a\x05\x6e\x98\x3e\x8b\xc1\xc3\xd0\xb0\x86\x78\xd5\x15\x73\x99\x67\xa6\x7d\x73\xcd\x96\x55\x49\x1e\xd7\xb4\x31\xd7\x04\xcd\x32\x5a\xbe\x10\xdf\x71\xcd\xd2\xea\xfb\x1d\x23\x64\xff\xd9\xa8\x27\x9f\x60\x46\x0a\xcb\xfa\x59\x34\xe3\x9a\x45\xda\x50\xd1\x46\x34\x71\x77\xf1\xd3\xc5\xe5\xe7\xf0\x12\x7c\xd7\xff\x74\xfa\xa7\x7f\x2b\xfd\x70\xfd\xa9\xf6\xc3\xe8\xe7\x3f\xd5\x7e\xf9\x7f\x96\xd2\x53\xb5\xa7\x9a\xaa\x1a\xcc\xe5\x00\xa4\x42\x30\x8d\xba\xa9\x12\x9e\xd2\x29\x23\x2a\x9f\x1b\x0a\x50\x87\xe5\xfd\x35\x52\xd1\xb9\xa4\x31\x17\x53\xcc\x10\x3e\xe7\x9a\x65\x34\xf9\x44\xe7\x1f\x9c\x19\x77\x83\xd5\xf9\xdf\x37\xa5\x7c\xee\x77\xbf\xf4\x3f\x85\x19\xe1\xef\xae\xae\x2f\x6f\x2f\x97\xce\xba\xd4\x42\xfd\x18\x99\xc7\xc7\xf0\xbf\xe4\x88\x98\xd6\xbd\xf0\x96\x32\x4d\x8d\x50\x4b\xbe\xc5\xac\x46\x9f\x85\xc4\x45\x02\xa7\x66\x9e\xf1\x94\x03\x57\x44\x43\xd6\x7b\x94\x0f\xbd\x00\xec\xcf\x0d\x7e\x80\x79\xcb\xf6\x5e\x11\x31\xcd\x62\xf2\x57\x55\x85\x17\x00\xfb\x29\xfe\xc0\x62\x72\x40\x66\x5a\xcf\xd5\xf1\xd1\xd1\xe3\xe3\xe3\xa1\x79\xfb\x50\x66\xd3\x23\xf3\xc7\x01\x13\x87\x33\x9d\x26\x08\xa7\x60\x56\xe1\x98\x5c\x65\xd2\x70\x41\xd0\x31\x59\xc6\x69\x02\xd9\xd4\x63\x2e\x68\x06\x30\x0d\xbf\x46\x32\x63\x87\xc5\xc6\x58\xdb\x8a\x65\x85\xd6\xfe\x72\x64\x5e\x6a\x60\x26\xd5\xfd\x24\x31\x8b\x78\x6c\x6f\x4a\x26\x22\x09\x06\x38\x34\xd9\x9b\xf6\x5c\x2a\x28\xb3\xfe\x52\xbf\x9c\x81\xbc\x4d\x63\x16\xa0\x21\x68\x59\x26\x38\x23\xbb\x9f\xa1\xe6\x95\x1b\x2d\x13\x02\x74\xe1\x62\x70\xaf\xce\xcd\x84\x23\x99\x90\x71\x3e\x99\xb0\x2c\x74\xd7\xf6\x8c\x40\xce\x15\xc9\x58\x24\xd3\x14\x2e\x3d\xf3\x55\xae\x90\xaa\x61\xc5\xec\x68\x0f\x87\x02\xf6\xdf\x48\xea\x40\x01\xb1\x04\x56\x27\x98\xd1\xd8\xc5\x02\xbb\x19\xe7\x93\x92\x3b\x18\x60\x4a\x68\x4c\xb8\x1e\x8a\x7e\x92\x90\x8c\xa5\x52\xb3\x30\xd2\x18\x7c\x47\xa5\x05\x07\x16\x99\xb1\x79\x42\x23\x97\xc7\x9e\xc8\x88\x26\x64\xc2\x13\xa6\x16\x4a\xb3\x34\x6c\xe0\x5b\x30\x37\x98\x35\xe3\x8a\xc4\xf2\x51\x24\x92\xda\x79\x54\x3f\x7b\x5f\x3e\x8d\x03\x07\x21\x31\xc8\x32\x99\xc1\xff\xfc\xc4\x45\xbc\x33\x0e\x75\x77\x33\xb8\x0e\xff\x7d\xf3\xcb\xcd\xed\xe0\xd3\x7a\xdc\xc7\x53\x16\x0c\x0f\xd4\xd0\x63\x72\x83\x8b\x20\x33\x73\xa9\x67\x2d\x93\xfa\x64\x49\xa9\xf8\x41\xc6\x1b\x72\xdf\x4f\xfd\x8b\xbb\x7e\x89\xa3\xdc\x9c\xfc\x38\x38\xbd\xab\x88\xb4\x76\x7e\x25\x31\x14\x35\x98\xf0\xb7\x93\x1f\xcf\xce\x4f\x47\x0d\x3a\xcf\xbb\xeb\xc1\xc9\xe5\xcf\x83\xeb\x42\x3d\x69\x5c\xa2\xca\x60\xaa\xcc\xea\x16\x99\xd2\x4c\xc6\x64\xbc\x68\x06\x0c\x31\xc2\x5f\x02\x2e\xc9\x02\x32\x07\x5b\x3d\x06\xde\xe4\xb0\x5b\x8a\x2f\x8c\xce\xdb\xb3\xef\x00\xd2\x0a\xda\x07\x50\xe8\x6b\x6e\xd8\xf4\x4e\x45\xa0\x6b\x23\x08\x8a\x5f\xb8\x63\xd2\x27\xca\xbc\x98\x9b\x43\x9d\xf1\xe9\x14\x6c\x5f\x95\xa1\x62\x6b\xf6\x53\x58\x5e\xf8\x0e\xf7\x7f\x9e\x49\x38\xe7\xa6\x5b\x6b\x34\xf5\x8a\x35\x7e\x88\x40\xb1\xa5\x16\x33\x0a\x3a\x73\xc3\xd0\xdc\x66\x99\x45\x68\x5d\x2f\x3c\x8f\x45\x6e\x00\xb0\x2d\x85\x26\xbb\x79\xc6\x1e\xb8\xcc\x83\x4f\x2d\xf0\x4b\x69\xc7\x1b\x9b\x2f\x16\x00\x96\x0d\xf5\xfa\x4a\x33\x9e\x3c\x1a\x5b\x30\x2c\xec\x01\x5a\x98\x64\x32\x6d\x68\xa3\x7c\x4c\xce\x2e\x6f\x74\x46\x35\x9b\x2e\x4e\x2d\xcb\xd8\xfc\x78\x9c\x5e\x7e\xbe\x38\xbf\xec\x9f\x8e\x06\xfd\x8f\xe5\x13\xef\x9f\xdc\xdc\x5e\x0f\xfa\x9f\xca\x8f\x46\x17\x97\xb7\x23\xf7\xc6\x52\x92\x6f\xe9\xa0\x7e\x4f\x97\x5f\x3c\x26\x86\xe5\x02\x6b\x74\x88\x8c\x01\x7f\x1c\xb3\x89\xcc\x90\xcf\xa7\xce\x83\x6f\x45\x18\xb7\xb6\x56\x9d\xa8\xcc\xe2\x18\x8c\x3b\x4d\x4d\xa2\xe1\x56\x67\x8c\xa6\x70\x4f\x50\x41\x06\x22\x3e\xb8\x9c\x1c\xdc\xe0\x8f\x29\xcd\xee\x59\xe6\x3f\x7d\xcc\xb8\xd6\x4c\x94\xb4\x12\xea\x86\xec\xf5\x9c\xa2\x83\x43\x72\x6d\xf8\xbe\x79\xdf\x5f\x6a\x86\xd8\x63\xa6\x29\x4f\x94\x1d\x6c\x69\x5d\x8f\xc9\x39\xcd\xa6\x85\x29\xe9\x5b\x39\x99\x60\x63\xef\x71\x18\xe6\x0e\x2b\xcd\xa2\x81\xf7\x1a\xd2\x70\xf7\x22\xf4\x67\x5f\xf6\xf2\x70\x9d\xaa\xee\xe6\xdb\xd1\xd4\xdd\x15\xac\x38\x2a\x9d\xb7\xa5\x5b\xe5\xaa\x8d\xd6\x60\xe2\xf8\x78\xf9\x25\xd3\xdc\x76\x9d\x9c\xca\x2f\x36\x90\x13\x26\xa2\x99\x9d\x9f\x68\x96\x35\xd1\x12\xfb\xc2\xad\xce\x1b\x8e\xbb\x42\x42\x45\x33\x60\x21\xa4\xf3\x39\xa3\x99\x6a\xda\xed\xb2\x18\xd8\xb2\xf7\xd8\x53\xd8\x87\xdd\x64\xd7\x4f\x8f\x48\x01\x3a\xb3\x17\x22\x2a\x14\xd9\x81\x06\xb0\xad\x1a\x05\x5c\x01\x1a\xd7\xa5\x45\xbe\xfa\xc4\x95\x51\x1a\xf1\xc7\x1f\x2c\x24\xd7\x66\x04\x61\xf4\xf8\x8a\x70\x31\x3a\x1d\x7c\xe8\xdf\x9d\x2f\xb7\x74\x95\xbe\xab\x6e\x31\x39\x20\xe6\x79\xd9\x7d\xcc\x27\x78\x67\x38\x60\x31\x54\x69\x99\x00\xbb\x8b\xcd\x1b\x43\x93\x6b\xcc\xe6\x89\x5c\xa4\x4c\x80\x95\xa2\x74\x13\x9a\xf5\x9c\x50\x6e\xaf\x96\x60\xb0\x60\x88\xb0\x96\x23\xb8\xc6\x0e\x1c\x9a\x19\x8b\xfd\xcd\x5b\x06\x33\xab\xb0\xee\x2b\x74\x00\xd9\xff\xdc\x68\xaa\x37\x3c\x63\xfd\x93\xdb\xb3\x9f\x07\x65\xfd\xf0\xe4\xc7\xb3\x9f\x9b\xa4\x9a\xd1\xc7\xc1\xc5\xe0\xba\x7f\xbb\x42\x38\xa9\x34\xd9\x24\x9c\x28\x33\xe0\xaa\x03\x90\x2b\x1f\x18\x13\x21\x24\x1a\xe1\x5a\x91\x07\xae\xf8\x98\x03\x80\x9c\x75\xa6\xdd\x9d\x01\x67\x85\x4c\x41\xae\x17\x4e\x7c\xc1\x7e\xcb\xfb\x68\x38\xa9\x6d\x1f\xcd\x0e\xa1\x8b\x0d\x0c\x55\xb8\x39\x6e\xd2\xc7\x04\x74\xdb\x07\x50\xda\x82\xcf\x84\x11\xa4\xc5\x94\x65\x38\x1c\x70\x20\x84\x63\x09\x9e\x9b\x51\x85\xc2\x4a\xb1\x6a\x5e\x68\x9d\x32\xc1\x32\x40\xa8\xf2\x9d\xa0\x20\x95\x31\xf1\x8d\x91\xb9\xe6\x09\x8f\xb8\x4e\x16\x24\x82\xcc\x3a\xb0\xc8\xa5\x54\xd0\xa9\x15\x0e\x40\xcd\xa9\x90\xc4\x5f\x10\x65\xef\x72\x62\xad\xd3\xb7\x9c\x6d\x78\xcc\xee\x2e\x4e\x07\x1f\xce\x2e\xca\x24\xf0\xe3\xd9\xc7\x92\x08\xfb\x69\x70\x7a\x76\x57\xba\xcd\x8d\x24\xbb\x5c\xae\xaf\x36\xdb\x70\x14\xfd\x4b\xc7\xe4\x14\x3f\x3d\x36\x8b\xdb\x00\x21\xe8\x95\xdf\xca\x3a\x5c\xbb\xc8\x34\xf7\xc7\x40\xe8\xac\xd1\xb4\xde\xd5\x84\x64\xdd\x68\x25\x1b\x52\xb3\xb7\xbd\xd6\xf7\x45\xd5\x2f\x5a\x8f\x46\xb0\xbe\x34\xd3\xc9\x61\x61\x59\x0a\xdd\xf0\x60\x34\x68\x33\x62\x35\x78\x66\x0a\x86\xfd\x33\x78\x59\xd3\x5c\x69\xf4\x86\x01\x71\x92\xfb\x3f\x2b\xb3\xa0\xe0\x2d\x3b\x24\x37\x8c\x0d\x85\xb3\x1e\x4c\xb9\x9e\xe5\xe3\xc3\x48\xa6\x47\x05\x7e\xe5\x11\x9d\xf3\x94\x1a\x49\x9a\x65\x8b\xa3\x71\x22\xc7\x47\x29\x55\x9a\x65\x47\xf3\xfb\x29\x04\x82\x38\x8f\xe0\x91\x6f\x76\x2a\x7f\x77\xfe\xc7\xef\x0e\xce\xff\xfc\xdd\xbb\xba\x85\xac\x6d\xff\x07\x22\xa2\x73\x95\x27\x36\x70\x2c\x0b\xd7\xc6\x1d\xf9\x9c\xad\xda\xef\x8b\xf2\x76\x6d\xa7\xbf\x9e\x5c\xdd\x85\xff\xfc\x58\xfe\xe7\xa7\xc1\xa7\xcb\xeb\x5f\x4a\x9c\xf2\xf6\xf2\xba\xff\xb1\xc4\x50\x07\x57\x3f\x0e\x3e\x0d\xae\xfb\xe7\x23\xf7\x70\x1b\xdb\xdb\x4f\x42\x3e\x8a\xf2\xd2\x28\xc7\x01\x6b\x3d\x1d\x93\x0f\x32\x23\x3f\xf9\x9d\x3c\x18\x53\x05\x57\x8c\xbb\xb3\x54\x8f\xcc\x65\x0c\x8c\x97\xb0\xf9\x8c\xa5\x2c\xa3\x89\xb5\x19\x28\x2d\x33\x3a\xc5\x9b\x5e\x45\x19\xd5\xd1\x8c\xa8\x39\x8d\x58\x8f\x44\x40\x0d\xd3\x1e\x6c\x0a\xa8\x5a\x72\x5a\xb5\xf3\x5d\xe7\x42\xf3\x94\x39\x15\xdc\xfe\xf3\x16\x37\x63\x83\xcd\xb9\xbc\xfd\xb1\x2c\xec\x7d\x38\xff\xe5\x76\x30\xba\x39\xfd\x69\xe9\x7a\xe2\x67\xa5\x91\xdd\x40\x0c\xcd\x89\x4c\xf2\x54\x84\x7f\x6f\x3e\xb6\xb3\x8b\xdb\xc1\xc7\xea\xe8\x2e\xfb\xb7\x65\xca\xb8\x2e\xc7\x79\xbd\xfb\xe1\xf2\xf2\x7c\x50\xf2\x6a\xbe\x3b\xed\xdf\x0e\x6e\xcf\x3e\x95\xe8\xe7\xf4\xee\x1a\xd1\x2a\x97\x4d\xd3\x8d\xa0\x61\xa2\x66\x5a\xe1\x34\x77\xcd\x0a\x3b\x71\xa2\xbe\x8d\xab\xc6\xb3\x7c\x10\x60\x15\x61\x44\x13\x58\x75\x0e\xbc\x49\x35\xc2\x91\x36\xb2\x43\x5d\xde\x26\xd2\xce\x8e\x97\x6e\xf4\x32\xae\x7c\xeb\x87\x80\x50\xb1\xa8\x6c\xd3\x24\x91\x8f\x18\xd1\x9a\x72\x73\x2b\x5b\xe4\x3a\xf3\x8a\x2a\x9c\x5c\x87\x0d\x1c\xaf\xbc\x2d\x2c\xca\x98\xfe\x24\x73\xa1\x37\x27\xb9\xfe\x45\x89\xef\x0c\x2e\x7e\x1e\xfd\xdc\x2f\x53\xe0\xd9\xf9\x72\x56\x13\x36\xd1\x70\x15\xf7\x2f\x7e\xf1\x97\x30\xc4\x3d\xf7\xbc\x86\x8a\xb2\x6b\x94\x70\x23\xf6\x46\xd4\x68\xaf\x09\x48\x34\x84\x71\x30\x39\xa4\x66\x72\x10\x67\x39\x47\x7f\x12\xf2\x27\x1c\xe4\xb1\xfb\xa3\xd2\x9e\x82\x75\x01\x6b\xaa\x0b\x2b\x87\x76\xac\x56\x2d\x08\x13\x0f\x3c\x93\x80\x77\x4c\x1e\x68\xc6\x8d\x34\x8e\x2d\x9b\xb9\x1e\xc3\xff\xae\xd7\x26\x18\x46\x2b\x8c\xeb\x46\x66\xfa\xd4\xc7\xb3\x6e\x66\x0d\x69\x8a\xeb\xac\x47\x74\x36\x1b\x3a\xea\xdf\x36\x6c\xce\x96\x71\xaf\xe5\x09\xff\x2d\x39\xe5\x34\x31\x0c\x60\x77\xf2\x62\xff\xe2\xe6\xac\x2c\x3f\x96\xd5\x8c\x80\x2f\x6f\x2c\x2f\x82\xa1\x12\x47\xee\x94\x89\x9b\xbf\x9c\xa3\x76\x01\xa0\xd8\x78\x6e\x03\xc5\xc2\xa2\x8b\xa0\x34\x31\xa7\x99\xaa\x7c\xa1\x08\xa0\xc8\x15\x31\x43\xe6\xce\x82\x88\x9c\x07\xc9\xe3\xa1\x60\x5f\xe6\x4c\x28\xf0\x6f\xe3\x7d\x56\xb8\x8b\xd5\x21\x39\x9b\x00\x4b\x30\xaf\x0b\x92\x0b\xeb\x00\x33\x17\x2e\x0e\xb2\x67\x44\xd9\x02\xe0\x24\x30\x1f\x09\xe6\xe2\x7d\x8a\xc1\x0f\xc5\x67\xef\x44\x83\x47\x13\x69\x18\x90\xd9\x45\xdb\xde\x31\xa1\x42\xf1\x1e\x31\x0a\x4b\x75\x4f\x21\x82\xde\x28\x94\x36\x0a\xc9\x70\x1a\xfb\xe7\xf3\x5f\x03\xb5\x50\xd7\xf0\x32\x68\xbe\x0b\x2a\x57\x41\x8b\x68\x9c\xa0\xc7\x64\xd4\xfd\x4e\x88\x64\xc6\xac\x9f\x65\xed\x6b\x60\x15\x63\xbf\xa5\xea\xbe\xe6\x7b\x38\x13\x4a\x53\x11\xb1\x93\x84\xaa\x0d\xe3\x68\x9c\x8d\xa3\x57\x96\x38\xae\xaf\xef\xae\x6e\xcf\x7e\x58\xc1\xe5\xab\x1f\xd7\x23\x59\xa2\x24\x77\xee\xb9\x71\x26\x69\x4c\x0c\xfb\x9c\x4a\x74\x05\x5a\xc1\xbf\x80\x86\xc7\xf4\x16\x1f\x13\x58\x82\xa5\x2f\xa2\xf2\xad\x9d\x23\x74\x25\x70\xbb\x10\x24\x32\x2b\x41\x02\x93\x87\xdb\x6a\xf0\x2c\x62\xc5\x1c\x6b\xdd\x9a\x27\x54\x4f\x64\x96\x22\x97\x2f\x4d\x1a\x1b\x5f\xde\x28\x17\x9a\x65\x59\x3e\xd7\xdc\x61\xfd\x57\xa5\x54\xb3\x65\xe7\x72\xfa\x89\x29\x45\xa7\x6c\x1b\x07\x74\x93\xf2\x70\xf3\x73\xf8\x4f\x70\x30\x77\x91\xfd\x4b\x23\x74\xc1\xdb\x8e\x9e\x2e\xc5\x07\x8c\x45\xb9\x92\x09\x8f\x36\x8c\x19\xfb\xd0\x3f\x3b\x1f\x9d\x7d\x32\x4a\x7c\xff\x76\x70\x5e\x12\x25\xe0\x59\xff\xc3\xed\xe0\xda\x82\x9c\xf7\x7f\x38\x1f\x8c\x2e\x2e\x4f\x07\x37\xa3\x93\xcb\x4f\x57\xe7\x83\xdb\xe5\x14\xd7\xda\x78\xdd\xba\x5a\x7d\xf5\xb8\xf6\x0b\xec\xb0\xe1\x65\xa1\xbd\x0c\x92\xa7\x28\x4f\xc0\x09\x2e\xd1\x19\x4e\x89\x90\x31\xc2\x48\x29\x67\x9d\xf1\xc8\xe2\xe4\x4c\x7f\x93\x24\x84\xe6\x5a\xa6\x14\xbc\x36\xc9\x62\x28\xe8\xd8\xb0\x56\x9a\x24\x41\x84\x52\x96\x0b\x61\x58\xac\x69\x0c\x21\xfc\xa3\x84\x19\x76\x3e\x0f\x72\xde\xac\xdf\x60\xc2\x05\x04\x8b\xa6\x34\xbb\x77\xf5\x08\x7d\x26\x81\x3f\x14\x8a\x50\x35\x14\x08\x6f\x65\xa5\x95\x0e\x2b\x7c\xdc\xe9\xad\xd6\xd5\x49\xe9\x3d\x33\xab\x92\xe6\xd1\x8c\xcc\x33\x39\xcd\x98\x52\xd6\xb6\x1c\x51\x81\x01\x08\xf6\x75\x73\x0d\x0d\x85\x90\x66\x29\x9c\x09\x3b\x66\x73\x26\x62\x26\x22\x8e\xd9\x6d\xe0\xbb\xf7\xa6\xcd\x69\x46\xe7\x33\xa2\x24\x38\xbd\x61\xd9\xc1\x7e\x85\x1f\xb9\x9b\xcc\x02\x7a\xc1\xe3\xd0\x02\x9d\xe5\x86\x4f\x5c\x82\x9c\x88\xab\x0c\x1f\xbb\xcb\xd0\xb9\x5d\xd0\x0e\x98\xce\x13\xa6\xb1\x98\x03\x2c\x39\x6c\x86\x59\xeb\xd2\x7e\x98\x6d\x6a\xda\x04\x73\x61\xbb\x31\x53\x65\x47\x74\xd8\x60\xd9\xb6\x47\x8a\xfc\x48\x45\x9c\x98\x56\x9c\x0f\xa3\x7c\x16\x21\x9b\xa2\x6f\xa8\xc6\x9d\xc6\x6d\x6e\xd1\x88\xe6\x6a\x9b\x6b\xb4\x92\x92\x88\x56\xc1\x83\x22\x28\x04\xc8\xdb\xe6\x23\xc2\xea\xce\x0d\x8b\xa4\x89\xb4\xab\x84\xaf\xe7\x58\xa0\x8c\xc0\x68\x5a\xae\xd9\x79\xc6\x45\xc4\xe7\x34\xd9\x48\xf7\xab\xc4\x93\xdb\x30\xed\x6f\xf9\xc4\x90\xcf\xfb\x9a\xdb\x56\xb3\x2c\x85\x3c\x5d\x3b\x4c\xbf\x85\x6b\x58\x92\x6c\x60\x3e\x53\x45\x34\x09\xcd\x64\x8e\xfe\x38\x58\x17\x16\x37\x1c\xd5\xc3\xa6\xed\x9e\x80\xf0\xb0\x95\x05\x11\x4b\x7a\xc8\x6c\x07\xa1\x68\x4b\xd2\x7c\x6e\x6c\x2f\xad\xe9\x01\xd5\x55\xfa\x64\xa3\xe1\x15\xf1\x03\x04\xcd\xe1\x1b\x2a\xe2\x6f\x0e\xe0\x08\x4e\x19\x9c\x53\xf4\x3f\xc5\x79\x84\xce\x52\x97\xd2\xe9\x90\x0e\x7a\x84\x25\x7c\x0a\x3b\xe8\x41\xb7\xbb\x6f\xd6\x29\xc4\x16\x61\x30\x12\x34\x8b\x19\xa0\x94\x1b\x79\xdc\x49\xee\xb6\x2a\x4a\xb5\x1f\x82\x16\x2d\x08\x13\x18\xb3\x04\x28\x6c\x01\xf1\xf5\x4c\x55\xef\x7a\xdc\x4e\xc3\xe8\x68\x39\x24\x7b\x83\x1d\xc5\x40\xae\xb6\xed\xac\xb4\x62\x7b\xc7\xd8\x4a\x9a\x5c\x35\xb7\xd9\x74\xa0\x3a\xef\x24\x9d\xc3\xc2\x61\x95\x0e\x5a\xcc\xd1\xea\xbc\xb6\x0a\xa1\x0b\x87\x0a\x42\x21\x7c\xa6\x4a\xf7\xfd\x2a\x96\xd0\xc6\xb3\xd5\x3b\x29\x85\x84\x04\x99\xf3\x96\x65\x4d\x72\xa3\x9a\x10\x0a\x41\x25\xe4\x5b\x76\x38\x3d\x24\xae\xe6\x4a\x8f\xf4\xaf\xae\x06\x17\xa7\x3d\xc2\x74\xf4\xde\x85\xa0\xda\xf8\xb3\xa1\x30\xa4\x00\x87\x7b\xe1\xea\xe5\xa4\x2c\x9b\xb2\xd2\x9c\x5d\xb0\x1a\x04\x4f\x4f\xb9\xa1\x25\xbc\x02\x44\x1c\x56\x36\xe2\x69\x55\x6b\x42\x0a\xc9\xf5\x6c\x1b\xd2\xa0\x4a\xe5\x29\x1d\x27\x6c\xc4\x69\x3a\xca\x64\xb2\x0d\x8f\xf7\x67\x43\x10\x0f\x3a\xc0\x69\x4a\x4c\xb3\x36\xb2\xc7\x7b\x90\xbd\x84\x6e\xe4\x5c\x73\xcd\x1a\x31\x28\x10\x43\x9c\x33\xc9\x86\x17\x72\x17\xd1\x02\xa0\x04\x2d\x9c\xbf\xf0\x02\x8c\xac\xe3\x65\x44\xa3\x48\xe6\x42\xef\x78\x52\x41\xb9\x2c\xe7\xe1\xb1\x1d\x3d\xd9\x34\xbb\xf2\xa5\xb9\xb9\x90\x20\xb6\xbb\x5e\x5d\xa6\xa1\xdf\xf1\xa2\xd6\xab\x2b\x68\x75\xa7\xbc\x85\x0c\x65\x2a\xc5\x60\x27\x15\x16\xc4\x02\xde\x05\x60\xa8\x61\x97\x2e\x45\xc7\x34\xbc\x90\x79\xd6\x74\x6f\x0d\xc5\x29\x9b\x67\xcc\x28\x6e\x55\x7f\x98\xa7\xe9\xeb\x32\x25\xee\xe9\x7a\x4f\xd7\x6f\x9e\xae\x4f\xb0\x2e\x5a\xdf\xd7\xc1\xdb\x8a\xc0\xeb\x92\x1e\x59\x21\x72\x79\xe1\xb0\x91\xc8\xac\x55\xbc\x6c\x46\x5e\xd5\xe4\x6d\xf1\x51\xf7\x2d\x2d\x79\x4e\x2b\x65\xe8\x00\x49\x41\xe6\x20\x4f\x97\xee\x65\x69\x2e\xd3\x20\xab\xd8\x16\x99\x5b\xb2\xce\xce\xc5\x1a\x14\xc0\xda\x66\xbd\x9b\x5a\x59\xd6\x12\x79\x72\x39\xea\x04\x05\xa8\xa6\xba\x62\xe5\xd3\xea\x64\x1d\x2e\x6a\xd5\x1d\xf1\xc0\x98\x05\x46\xc1\xe6\x6f\xb9\xd4\x54\xbd\x3f\x1c\x0a\x23\xa5\xdd\xb3\x05\x0a\xd9\x46\x0e\xfa\xbd\xd1\xdd\x0e\x14\x13\x0a\xd2\x03\x7e\x8f\xee\x5c\x73\x86\x9c\x7b\x03\x4d\x19\x58\x54\xb2\x5c\xf2\x0c\x42\xba\x6d\xa3\x56\x0c\x2b\x02\xe6\x8b\x3a\x69\xee\x19\x0e\x7f\xca\x34\x64\x95\x6b\xae\x41\xc7\x8e\xb1\x6a\x65\x6d\xe8\x2b\x4d\x9d\x48\x15\x99\x04\xbf\x5a\x9c\x6f\x77\xb3\xa8\x7a\x1b\x4d\x9b\xd8\xac\x5d\xde\xd8\x1c\x89\x23\x67\x67\x8c\x32\x59\x2b\x05\x49\x15\xc1\x9d\x1e\x23\xbf\x71\xf1\x0e\x4c\x1c\x3e\xf2\x7b\x3e\x67\x31\xa7\x90\x31\x61\xfe\x75\x64\xe6\xf5\xbb\x93\xeb\xcb\x8b\x11\xf3\x69\x5d\xff\x39\x14\xfd\x44\x49\x9f\xd5\x42\x84\x14\x3e\x3d\x63\x9e\x31\x27\x73\xda\xb9\x80\x95\xbe\x38\xda\x43\xd1\x36\x82\x58\x46\xea\x90\x3e\xaa\x43\x9a\xd2\xbf\x4b\x01\xa1\x17\x7d\xf8\xf3\x24\x91\x79\xfc\xd9\x68\x58\x47\x70\xae\xf5\x11\x7b\x60\x42\xa3\x5b\xd3\x2c\x57\x0c\xf9\xca\x0a\xb2\x3b\x7e\x67\xc6\x5c\x24\xa1\xa9\xa1\x60\x5f\x22\x36\xd7\xe4\xff\xcb\xd8\x58\x4a\xdd\xcc\xa0\xe4\x64\xa2\xd8\x5a\x37\x5e\xa1\xd4\xdf\x5c\x92\x3f\xff\xe9\xbb\xef\x0d\x09\x6d\xb2\xc6\x67\x37\x97\x23\xf3\xfd\xef\x4e\xed\xf7\x6a\x0d\x76\x77\x39\x2f\x58\x9b\x23\x1e\x4c\xb4\xc8\x05\x5c\xaf\x19\x38\xbb\x80\xbd\x01\x39\x14\xfb\xd8\xc4\xdd\x4e\x11\xd9\x61\xab\x2c\xb3\x2d\xc4\x86\x8f\x89\x1c\x83\x1d\x31\x2f\xd5\x84\x5b\x12\x11\xb4\xa5\xff\xe5\x94\xab\x79\x42\x17\xb5\x1e\x56\x2d\xfb\x85\xe1\x4e\x73\x1a\xb1\x02\x92\xc2\x05\xef\x45\x32\x4d\x21\xa0\xd4\xe9\xeb\x31\x9f\x40\x64\xa9\x36\x42\x05\x19\x33\xfd\x08\x71\xcc\xee\x57\x2f\x0c\x39\x03\xbe\x61\x65\xc0\x2e\x87\xef\xd0\xd2\x60\x3a\x1d\xbe\xeb\x91\xe1\xbb\x98\x3d\xb0\x44\xce\xcd\x69\x36\x3f\x30\x1d\x35\x6d\xe2\x20\xa5\x3c\xb9\x90\xda\xdf\x7c\xdb\xec\x67\xc6\x22\x3e\xe7\xe6\x74\x8d\x98\x69\xf7\x49\x53\x08\x9b\x0f\xd8\x6d\x60\x67\x81\x31\x10\x1a\xc7\x86\x88\xa1\x40\x9e\x1b\x5e\xe1\x92\x11\xc1\xd4\x4b\x85\x9f\x36\x30\xc4\x08\xdb\x63\xd8\x66\x59\xac\x68\xdc\x01\x6f\xa8\xdb\xe9\x49\x6a\xf7\xe3\x39\xd7\x88\xef\xb8\x28\x56\xb6\x94\xfe\x6d\xed\xc5\x00\xb4\xc2\x5a\xb8\x5b\x2d\x82\xd5\x03\x68\xd6\x62\x0d\x99\xce\x0f\xf0\xc6\x7c\xb7\x74\x68\x2a\x44\x8d\x8b\xc2\x12\xaa\x60\xbe\xb0\xb9\x26\xd5\xf4\x16\xb6\x72\xc4\x51\x22\x55\x39\xf5\xb4\xf3\xa0\x4f\xec\xa7\xcb\xc6\x3d\x08\xad\x3d\x79\xb2\x9e\x01\xb0\xdf\xb0\xf0\x15\x78\x10\x64\x13\xda\x6a\x28\xf6\xed\x1e\xe1\xe0\xbc\x04\xc9\x36\x29\x12\x71\x44\x4c\x0a\x29\x71\x28\x0a\x13\xb0\x22\x8f\x2c\x01\xaf\x51\x24\xd3\x39\x48\x40\x76\xb8\xb6\x25\x73\x81\x6b\xaa\x59\x8f\xc8\x5c\x9b\xc6\x30\xc4\xcd\xdd\x71\x36\x7e\xae\x90\x0a\x51\xf7\xb1\xb1\x24\x1e\xae\x0c\x69\x1d\x59\x21\x17\xe4\x23\xd3\xd0\x0a\xc0\x41\x86\x13\xc4\x62\xe3\x4b\x8f\xd2\x49\x6d\xdb\xd6\x3e\x51\x76\x26\x6b\xec\x7c\x91\x87\xf8\x43\x22\xc7\x4b\xf7\xfd\x12\x1a\x27\x77\xd7\x67\xce\xe7\x56\xb8\x23\x02\x3c\xab\x92\x46\x37\xb8\xba\x1e\x9c\xf4\x6f\x07\xa7\x87\xc4\x28\x8e\x1f\x99\xf6\xd3\x85\x74\x05\x8f\x8c\x88\x23\xb7\x89\x8d\x42\x69\x46\xe3\x16\xea\x66\x59\x56\x4a\x2a\x58\xc1\x38\xca\x59\x8f\xcb\x09\x1b\x72\x0e\xb9\xc0\x0c\x50\xc8\xd3\xad\xce\xd3\x3a\xba\x56\x9d\x40\x70\x3b\x8c\xde\x8e\xd3\x07\xc7\x9b\xd6\x1d\x5d\xab\xc8\xa7\xec\x20\x7b\xea\xc9\xc0\xd1\xd2\x33\xc6\x33\xd2\x69\x5a\x48\x54\xa3\xee\x73\x0a\x22\x46\x3e\xd1\xf9\xf2\x68\x6e\xfa\x58\x22\x5a\xeb\x33\x29\x6c\x27\x4f\x7d\x0e\x1c\x5b\x1b\x21\x2b\xdc\x7e\x82\x85\xbc\x8f\xbc\xd5\xf3\x4d\x0c\xa0\x52\xce\x68\x15\x4e\xac\x32\x08\xeb\x16\x56\x04\xce\x0e\xfc\xc2\x05\x29\x5d\x89\x3d\x32\xe1\x5f\x6c\xa3\x45\xb8\x88\x7b\x35\x30\x38\xb5\xb8\x27\x67\xb4\x7e\xa6\xd6\x10\x1b\xae\xe0\xfb\xa5\xfe\x15\xa9\xb4\x91\xba\x8c\xe4\x9a\x31\xa3\x5f\xb0\x98\x40\xb7\x3e\x78\x65\xa5\xc8\xa0\x69\x66\x16\x85\xae\xa5\x6f\x15\xc8\xb6\x31\xd5\xec\x40\xf3\x95\xf9\x04\x36\xe4\x0c\x82\xd3\xa8\x0e\xb2\xeb\x8b\x9b\x67\xcc\xa6\x54\xb8\x48\x87\x96\xe1\xba\x2b\x6f\x0b\x56\x65\x24\x58\x0a\xd1\x96\x20\x5f\x41\x24\x5d\x69\x1c\x6a\x0e\xeb\xb9\x74\x1c\xd6\xfa\xf8\x1a\x96\xed\x91\x7a\x63\x68\xcb\x60\xf3\x79\xfc\x9a\x06\x9b\x50\xa5\x89\x1d\x53\x9b\x26\x19\x48\xf8\x4f\xeb\x9d\x2e\xa9\x66\x5d\xed\x71\x86\x84\xca\x4a\x08\xd3\x9a\xdb\x82\xb7\xb9\x62\x36\xe9\x32\x65\xd9\xd4\x09\xc2\x58\x8c\xcc\x9f\x6d\x5b\x95\xcc\xdd\x12\x21\x33\x81\x98\x97\x7a\xd3\x87\xa4\x2f\x6a\xe9\xe7\xce\x2e\x5e\x5a\x2f\xbc\x93\x68\xf2\x48\x17\x8a\xcc\x33\xcc\xd4\xc4\x40\x18\x37\x79\x70\x58\x96\x3f\xf2\x96\x22\xed\x22\x91\x08\xa8\xd2\xab\x9d\x16\x41\x8d\xed\xee\xdc\xae\xa3\x4e\x54\x09\xd2\x68\x2a\x83\xed\x55\xcd\x0e\xac\x4e\xb3\x51\x34\xa3\x62\xca\x46\x36\x39\x75\x23\x6d\xc9\xb4\x73\x02\xcd\x9c\xda\x56\x9a\x2f\xa7\x2b\x54\x98\x2c\xaa\x30\xbe\xea\x74\x3a\x38\x04\x4a\xd3\x29\x23\x38\xa2\x65\x8a\x49\x01\x35\x11\x1a\xd4\x2d\xfc\x14\xe8\x09\xb6\xd5\x41\x39\x28\xa5\x4d\x78\x07\xcb\xf0\x39\x1d\xb3\x64\xeb\x60\x83\x8d\xac\x74\xd0\xb5\x05\xdb\xd4\xd2\x2c\x0d\x04\xd7\x30\xf2\x38\x63\x59\x95\x1d\x3b\xdb\x76\x96\x37\xb9\x1e\x96\xcd\xb3\x54\xff\x6f\x8b\x89\x3a\xf4\xd8\x4d\xa6\xda\x86\x29\x1b\x5e\x7b\x01\xf6\x6a\x93\x7d\x24\xbc\xfe\xaa\x26\xc1\xcd\x06\x12\x40\xc0\xb6\x8c\x63\x6b\x0c\xd8\x95\x53\xd9\x38\x67\xa7\x63\x6d\x85\xb3\x09\x11\x52\x30\xc2\x55\xf1\xb2\x2e\x47\x17\xfa\x8c\x57\x23\xe2\xa3\xf1\xa5\x5e\xd1\xf6\xa9\x2d\x2d\x45\x2e\x92\xb7\x0d\xb8\x74\x09\xc1\x8c\xa2\x4a\xb3\x05\x20\xe6\x20\x1f\x2e\xcb\x74\x2b\xc7\xb9\x73\x81\xfb\xd6\x01\x22\x05\x9e\x52\x2d\x09\x88\x91\x95\xc1\x11\x84\x15\xb2\x2f\xd9\x8f\x6c\xd6\xe7\x50\x78\xcb\x06\x10\x22\x57\x24\xa5\x73\xc8\x55\x10\x52\x17\x5f\x61\x16\xb3\xf6\x5b\xd8\x73\x82\xb8\x42\x64\xf6\x96\x15\x58\x65\xda\x71\xd7\x6f\xb1\xae\x65\xb4\x18\x87\x74\x35\xe5\x0f\x4c\x38\x9a\xee\xb9\x33\x61\x06\xe5\x3a\x4d\x16\x07\x14\xdc\xbc\x2c\x0e\x0d\xd7\xcb\x39\x92\xad\x66\xfb\x0a\xec\x91\xdd\x97\xcc\x6c\x7c\x5e\xb3\x50\x22\xe6\x40\x09\xef\xd0\x39\xe6\x43\x2a\xb5\x30\x58\x98\x58\x41\x15\xf9\xbd\x90\xfa\xf7\x01\x50\x98\x33\x5e\x60\xb1\x63\x6b\x82\xea\xd5\x40\x7c\xe1\xd0\x5a\xc2\x21\x34\x48\x58\x5f\xb9\xf2\xdb\xe2\xf5\x15\x81\x07\x4f\x2a\x8d\x0e\xea\x41\xa5\x6d\x28\xe8\x58\x1d\x64\x67\x16\x9b\xe7\x28\xe3\x4f\x90\x0c\x32\xe6\xc0\x0b\x52\x99\xb1\x4a\x85\x12\xe4\xe7\x3e\xea\x3a\x9d\xeb\xc6\xcc\xc5\xba\x68\xd4\x60\xf0\xc4\x62\x0d\xc5\x49\x2f\x19\x3a\xd5\xe1\x50\xdc\x30\xd6\x8e\xe0\xef\xf7\xe2\x57\x68\x08\xc6\xea\xa4\xc6\x25\x94\xb6\x8b\x10\xec\xb4\x0c\x4e\xb3\x84\x6a\x56\x60\x8a\x35\xdb\x25\x36\x09\x9b\x6e\x93\xcb\xbd\x93\x22\x2c\x45\xdd\x06\x9a\x75\x38\x14\x1f\x64\x66\xaf\x60\x65\x61\x3b\xc7\x34\xba\x3f\x60\x22\x26\x34\xd7\x33\x04\xaf\xb2\x7e\x85\x85\xa5\x06\x23\x69\x00\xd9\xf8\xcc\x34\xae\x22\x9a\xc5\x0e\x03\xf5\x41\xba\x51\x0c\x45\xd0\x08\x00\x83\x02\xf4\x37\x14\x40\x6a\x53\x35\x19\xd4\x5a\x68\x5b\x8b\xa6\xd2\x3e\xb5\xc2\x3e\xcb\xcf\x59\xa9\x54\x11\x40\x9a\x0a\xa6\xac\xc8\x5e\x59\x9d\x33\x67\x6d\x74\xfa\x9d\x0a\x8b\xbd\xfb\x37\x7b\x56\xa3\x40\x93\x94\x9d\x81\x91\x74\xbe\x73\xbc\xb6\x04\xc2\x35\xc9\x33\x08\x82\x6a\x6a\xf3\xdb\x68\xc6\x93\xc2\x77\xf1\xbe\xe7\x87\x69\x9a\x4c\xd8\x03\x4b\x10\x02\x32\xca\x20\x70\x01\xad\x86\xdf\x91\xff\x85\xe5\x6e\xc8\xf7\x43\xf1\x11\xd8\x70\x92\x2c\x00\xa0\xc6\xb7\x4c\x75\xa5\x99\xfb\xc6\x01\x68\x1b\x8a\x45\xca\x03\xc1\xbd\x9e\xd1\x07\x36\x14\xae\x99\xff\x45\xee\xc9\xbf\x92\xef\xdb\xd4\x3b\x17\x7f\xf0\xc4\x76\x8e\x0f\x81\x77\x3f\xb8\xe5\x2c\xa3\xb4\xfc\xc6\x99\x41\x4a\x46\xc8\x86\x44\x35\x8f\x33\xc7\xc5\x83\x8c\x6a\x41\x2e\xe1\xa9\xa5\x19\x13\x7a\x24\x64\xcc\x46\xac\xc1\xa5\xb9\x84\x49\x18\x21\xe0\x42\xc6\x6c\xa5\x43\xd2\x33\xd3\xcf\x60\xba\x51\xf9\xd8\x6f\x07\xe4\xcb\xf8\xe4\x08\x6f\x7d\x28\x53\x5a\xf3\xc8\x3d\x98\xd3\x26\xe3\xde\xd4\x99\x7a\x69\xe5\xb3\x1e\x5c\x08\x76\x00\xcd\x0e\xbd\x84\x6a\x17\x83\x5e\x3d\x8e\x55\x47\x80\x79\xd9\xcc\xdc\x5e\x56\x01\x4c\x15\x40\x09\x67\x7c\xca\x8d\xfc\xde\xdd\x61\x0b\x9c\x70\x13\x6f\x06\x62\xf6\x74\x72\x67\x14\x4b\xe1\xf2\x16\x0f\x3c\xfd\x15\x4e\xc8\xb1\xcc\xab\x02\xbc\x5d\x00\xae\xc2\xe8\x78\x2b\xab\x2f\x0c\x1f\x9e\x62\x04\x26\x9b\x71\x4c\x61\xe9\x9f\x9c\x13\x73\x3a\x64\x8a\x79\xde\xb0\x68\xb9\x9e\xc9\x8c\xff\xbd\x35\x80\xab\x5d\x46\x2f\x3c\xad\x45\xbc\x1b\x8e\xb3\x2c\xad\x03\xb1\xa2\x48\xa1\x4b\x5a\x49\x93\xce\x44\xc6\x39\x40\x1a\x19\x36\x3b\xc9\x13\xc4\x41\x8d\x64\x16\x63\x3d\x3e\x55\x8a\xae\x33\xef\x79\xf1\x9e\x6a\xdf\x20\xb7\xc8\x2f\x16\x69\x15\x2d\x38\x4b\x05\xd0\xbf\xe4\x2c\xdf\x51\x80\xa2\x2d\x00\xf0\x4c\x91\x1f\x55\x35\x80\x4e\x55\x11\x14\x8c\x6b\x63\x78\x73\xb1\xbe\x7f\x33\x33\x55\x41\xcc\xb0\xb3\x2c\xfa\x8c\x6a\x54\xc9\xb1\x54\xcc\x5a\x16\x9d\x6b\x44\x92\xdc\x81\x49\xe7\x39\xe2\x39\xea\x32\x52\x03\xfb\xb1\xe4\xf7\xe0\x03\x5c\xab\x2c\xe2\x89\xec\x24\x0e\x92\xb3\x22\x7d\x3c\xa1\xc9\x64\x03\x26\x57\x17\xaa\x97\xad\x77\x60\x40\xf1\x6c\xad\x21\x98\x5d\x4b\x62\xe6\xfe\x98\x71\x00\x5c\x58\x14\x2f\xfb\xaa\x48\xee\xba\x08\x79\x8c\x91\x52\x50\xac\x85\xb8\x0e\xb7\x84\x8b\x66\x1e\xbf\x86\x01\xc2\x36\x54\xee\xba\xee\xb7\x6f\x3b\x11\xc8\x92\x5e\xeb\x91\xa8\x67\x5b\xae\x3c\x0c\x1e\x58\xf7\x65\x0c\x88\x5e\xb4\x79\xe2\x93\xb1\x16\x85\x04\x17\xd9\xda\x24\x72\x53\x36\x55\xae\x4d\x17\xd8\xf7\x08\xfc\xdc\x5b\xbb\x77\x02\x17\x40\x91\xae\x81\x79\x7a\x2e\xc3\xfa\x99\x0c\x99\x10\x39\x50\xce\x14\x0c\x02\x07\xda\x32\x7c\x9f\x94\x9f\x15\x88\xa6\x8e\x23\x75\x1c\xca\x52\x77\x69\x47\xe7\x27\x58\xc8\x96\xb1\xd7\x73\x1b\xf5\x59\x76\x1b\xfa\x44\xd7\x22\xd4\xce\x96\x9d\xd1\x19\x85\x04\x02\x08\xfb\xfe\x8c\x5a\x1e\x57\x68\x85\x71\xc8\xa5\xe9\x5c\x2f\x2c\xd0\x3d\xf0\x66\x0b\x81\xad\x67\x54\xd8\x24\xfe\x26\x17\x65\x95\x4f\xc7\x25\x27\x65\x53\x67\xd0\x91\x55\x6d\x1b\x9b\x74\x0b\x1d\x66\x11\x55\x92\x2a\xda\x22\x12\xb0\xec\xcd\x88\x26\xad\xf6\x94\xb1\x94\x09\xa3\xa2\x4d\xed\x6c\x7c\x5c\xb3\xbe\xf2\x30\x91\xc2\xe2\xf9\xe8\x2c\x67\x46\xe7\xa6\x49\x52\x99\x17\x85\xca\xb5\xda\xd7\x0d\x18\x17\xf5\x79\xba\x3b\x4c\x31\x77\x79\x9d\x08\x3d\xfc\x60\x29\x15\xd9\x7c\x68\x57\x59\xb5\x53\xea\x6f\x18\xfe\xd5\x98\x28\xbd\x6a\x60\x61\x7a\xf5\x52\x11\xa2\x9c\xa2\xbc\xd9\x10\x15\x8b\xf2\x8c\xeb\xc5\xc8\x1a\x9e\xba\x33\xad\x1b\xfb\xe5\x89\xfd\xb0\x8b\x56\x77\x4c\x5c\x7f\xce\xd0\x05\xe2\x4d\xc6\x11\x14\xd9\x4e\xa1\xcb\x76\x1b\x4d\xad\x31\x81\x72\xd9\xc2\xba\x0c\xce\x6e\x43\x35\x5d\x6c\x3a\x3c\x0b\xb6\x3a\x92\x13\x97\x1b\xd9\x7d\x61\xab\x28\xb4\x6b\x58\xec\x1c\xa2\xd6\x3c\xe3\x32\xb3\x60\xaf\x5d\x02\xab\x52\xfa\x65\x34\xa7\x19\x4d\x12\x96\x70\x95\x6e\x6e\x5f\xfc\xe3\x1f\x96\x8e\xf6\x04\x41\x89\x95\x85\xf8\xfe\xc2\xd3\x3c\x0d\x2a\xa2\x03\x12\x52\x80\x67\x62\x4d\xf6\x36\x8f\xd3\x0d\xb0\xb8\x68\x84\xe6\x59\x80\x50\x63\x74\x62\x8f\x55\x66\xd5\x65\x1a\xcd\xa0\x52\xed\x84\xf2\x4c\x30\xa5\x0e\xc9\x85\xd4\xec\x98\x7c\xa2\xf3\x5b\x50\xf8\xb0\x4a\xc8\x14\x2d\xb4\x54\x11\x23\x39\xe5\x82\xeb\xde\x50\x58\x80\x33\xb7\x2a\x47\x91\x14\x08\x72\x13\xc1\xc2\xfa\x26\xc0\xe4\xe8\xd0\x5e\x34\x16\x0e\x30\x54\xd2\xb2\xd8\x19\x7d\x1c\x05\x11\x94\x23\x8c\x50\x5f\x83\x8e\xaf\xe9\x23\xc6\x0c\x43\x61\x47\xfc\x7a\x89\xf4\x68\x83\x72\x2c\x28\x34\x62\x3b\xb9\xe0\x05\x09\x10\xa5\x8c\x78\x38\x7b\x8c\x90\xfc\x96\x1f\xb2\x43\xf2\x43\x22\xc7\xaa\x47\x94\xc7\x41\x73\x75\x27\x55\x0f\x9d\x24\xf0\x6f\xcc\x26\x79\xef\x56\xbf\xe0\xfb\x50\xc9\x61\xc2\xbf\x60\x25\x7f\xf5\xc7\xe3\xa3\xa3\x74\x71\x30\xce\xa3\x7b\xa6\xcd\x5f\x20\x53\x34\xae\x90\x4d\x07\x1c\xd1\xa6\x9c\xd4\x55\xab\x53\xcf\x67\xed\x44\x91\x16\x09\xc1\x62\x64\x98\x2b\xdd\xd7\xca\x71\xd9\x89\x52\x34\x17\x02\xb1\x53\xce\xf2\xb6\xe3\x55\xc2\xd0\x7a\xc2\x8b\xb7\x8f\xe8\x9a\xee\x7c\x94\xa1\xbb\x26\x09\x9d\xa2\x61\xb0\x30\x67\xc3\x5d\xeb\x14\x4c\xcd\x84\x73\x91\x72\x31\x4d\xca\xc6\xb5\xcb\x94\x5b\x2a\x32\x73\x07\x9f\xbf\x39\x65\xe5\x48\xa7\x6f\x9c\x4b\x0c\x5c\x5b\xd6\xe4\x7f\x38\x14\x7d\x45\x1e\x19\x96\xf8\x81\xb4\x26\xb0\x90\xe7\x5c\xcd\x7c\x52\x13\xd8\xec\xa0\x51\x44\x38\x32\x3d\x79\xe5\x05\x92\x36\x20\x08\x16\x7d\x08\x56\x0b\x82\x5a\x9b\xa6\x61\x48\x8b\x76\xc1\x6c\xe4\x31\xa3\xf3\x39\xcb\x86\xc2\xa2\xd5\x00\x26\x9b\x94\x36\x50\x61\x3d\x90\x8e\x72\x88\x2d\x54\x5e\x4a\x41\xf0\x56\x45\x81\x09\xa7\xa7\x7b\xb5\xa7\x74\x3d\x00\x48\x14\x7c\x1c\x4b\xa6\x02\x03\x1c\xf1\x7a\x74\xc2\x27\xcc\x70\xed\xa1\x30\xbb\x13\x1a\x0b\x11\x6b\xca\x41\x4f\x99\x4e\xa3\x4c\x2a\x65\xa3\x66\xb1\x9d\xe5\xb9\x0f\x5b\xc0\xda\x23\x60\x16\xd6\x44\xac\x02\xdc\x07\xcf\x1c\xd4\xbd\x7d\xd8\x88\x66\xd6\xda\xd4\x4a\x60\xfb\x62\x2d\xd6\x80\xb6\x3f\x3a\x39\x3f\xf3\x78\xce\x95\xae\xeb\xd8\xf6\x21\xc8\x58\x3b\xba\x7d\x7d\xc6\x01\xce\x7d\xa5\x89\x25\x48\xf7\xab\x37\xab\x1c\xab\xb7\x4d\x46\x70\x65\xeb\x57\xf1\xcd\x0a\xcd\xac\x0a\x29\xdd\xd1\x36\xb5\x24\x18\x44\x70\xd1\x3e\xb5\x77\x0c\x2e\x2c\xf3\x96\xd2\x34\x9d\x87\xe9\x52\x0e\x73\xc1\x4e\x13\x8f\x5a\x9b\x56\xf5\xac\xd0\x5e\x11\x45\x4f\x74\x75\x70\xb5\xad\x58\xcf\x5a\x7d\x6b\x11\xc3\x76\x11\x82\xf8\x7c\xf9\x87\xc9\xa2\x88\xb8\x51\xf6\xce\xf3\x45\xa9\x9b\x6d\x76\x63\xe6\xd1\xd1\x5a\x37\x74\xdb\x04\x23\xa7\x43\x90\x8c\x51\x65\x5d\xa9\x90\x87\x53\x89\xd1\x5f\xc3\xac\xe6\xc7\x8c\x99\x7c\x07\x1e\x8f\x30\xb8\x6a\x2c\xc4\x76\xe4\x0e\x22\xcf\x32\x06\xa5\xbd\x11\xe3\xf9\xac\x72\xbb\x00\x1c\x77\xc6\x68\xbc\x08\x56\xc4\x3b\x0b\xb1\x67\x30\x2b\x28\x9e\x1a\xc5\x07\x44\x3a\x21\x0f\xe4\xdc\xc9\x7a\xa5\xb7\x00\x4c\x92\x4f\xcc\x8d\x15\xb8\x1a\xcd\x17\xe2\x00\x6a\xd6\x1a\xd9\xb8\x21\xce\xca\x35\x02\x71\x59\x00\x31\x3d\x63\xf6\x86\x1b\xbe\xeb\xff\x70\x79\x7d\x3b\x38\x1d\xbe\x2b\x22\x6b\x5d\xea\x88\x93\x72\x3c\xd6\x9d\x14\x43\xe1\x83\xe1\x3c\x78\x0c\xec\x25\xa1\x71\x5c\x40\x77\x59\xe1\x1b\x63\x79\x96\x72\xe4\xe0\x54\xac\x0c\x83\x5b\xd2\xcc\x1d\xe4\x0f\xbc\xd6\x93\xb5\xc4\xec\x5d\x3a\x39\x98\x05\xb1\x24\x5c\x7d\x47\x97\x4d\x08\x4b\xa1\x51\x47\x61\xbe\x02\xae\x60\x8f\x4e\xc6\x84\xdb\xf9\x88\xe2\x25\xbc\x1e\xb7\x73\x1b\xb2\xc1\xa6\x7e\xe0\x5f\x58\x7c\xdd\x22\x55\xed\x24\x1a\xbd\x53\x14\x4f\xe3\x2e\x18\xbd\x75\x8d\x4d\xf0\x53\xb9\x33\xdf\x75\x67\x4b\xc8\xde\x2a\xc8\x11\x00\x1b\xa1\x09\x25\x11\xcb\x34\xe5\x82\x4c\xe0\x60\x1b\x5d\x19\x30\x09\x18\xf8\x9f\xfe\x40\x52\x2e\x20\xeb\x77\xd9\xd2\xde\x95\xe7\xb1\x4e\x89\xc9\xb3\x8b\xbb\xdb\x92\xa8\xfa\xe3\xe5\x5d\xb9\xbe\x59\xff\x97\xa5\xb2\x6a\xa5\x85\x65\x8e\xfe\x60\x8a\x45\x06\x91\x05\xd0\xf0\x2b\xd3\x34\xd1\x8f\x4c\xff\x6c\xf8\xb2\x14\xbb\x08\xaf\xb5\x72\x16\x38\x3d\xd8\xe8\x01\x1b\x5e\x83\x0c\xec\x50\x96\xc4\x50\x3b\x49\x0e\x7a\x20\xb6\x87\x30\xa1\xf7\x10\x2b\x79\x41\x65\x7f\x50\xd7\x5c\xa0\x8a\xd1\x97\xa4\x30\xcb\x35\x84\xb7\x89\xae\x35\x27\x27\xf8\x71\xa7\xc0\xc9\xeb\x30\x5c\xd2\xb4\x55\x2c\x25\xe9\x5f\x9d\x35\xac\xf5\x79\xd5\x2e\xfc\x75\xe1\x54\x26\xde\x44\xbd\x6b\x88\xca\x20\xef\xe5\x55\xa0\x53\xda\x99\x6e\x07\x4c\x89\x9e\xbc\xab\xb2\x7b\xf0\x49\xaf\xe1\x2d\xe4\xd9\x52\x3e\x9b\x55\x0c\x76\x03\xa6\x51\x2c\xc3\x9a\x68\x1a\xe1\x80\x6c\x7c\x71\x88\x20\x51\x0f\x5e\xeb\x85\x88\x12\x58\x4b\xd5\xf9\x22\x77\x86\xb2\x51\xcc\xa6\x0b\xcc\xc6\xcf\x48\xd1\x3e\x0b\x1b\xf2\xca\x1d\x70\xbe\x0b\x3a\xb3\x49\x91\xe1\x74\x43\x6a\x5b\x0f\x99\xa3\x18\x9f\xb3\x69\xd9\xe2\x2f\x74\x4e\xad\x52\x0c\x12\xbe\x43\x28\x6b\x02\x40\x3f\x1c\x8a\xc0\x0b\xad\x50\x26\x37\x67\xc4\xa1\x0e\x42\x65\x12\xc3\x4e\x6d\xf4\xb7\xbf\x99\x4b\x3b\x50\xcd\xbd\xd4\xb3\x32\x6e\x60\xad\x1f\x7b\x3a\xd5\x8c\xba\x0c\x17\xa7\xde\xdb\x00\x93\xd0\xf8\x01\xed\x05\x40\x5e\xb6\x63\xf6\xc0\x6c\x50\x0a\x0d\x60\xc5\x83\xac\xc8\x58\x32\x25\xbe\xd1\x3e\x87\x88\x27\x16\xeb\x90\x56\x6d\x7e\x46\xe4\xa0\xdc\xb6\xbc\xfc\x80\xef\x00\xf6\x63\x5d\xa9\x36\x38\x56\x2b\x6d\x28\xce\x71\x03\x94\x10\x06\x18\x40\xa7\x6d\x18\x1d\x5f\xe6\x2c\xda\x04\x9b\xe0\x8a\x66\x34\x65\x9a\x65\xcb\x62\x0c\xca\x45\x7f\xc0\x7f\xee\x76\xd0\xf6\x8b\xbb\x88\x08\x77\x55\x28\x44\xaf\x7a\x9d\xaf\xc2\x1a\xf0\xb3\x58\x0b\x56\xc5\x4c\xe3\x67\x0b\xe9\xb7\xe6\x2c\x6c\x3f\xc5\x34\x6c\x08\x45\x00\x2d\xb1\xed\x9c\x9e\x27\xc7\xfe\xb6\x96\xad\x5e\x8a\x01\x78\x25\xc9\xf5\xab\x47\xd9\x96\x55\xbf\x8a\x97\xee\x84\x77\xbb\xd0\x59\x97\x9b\x55\x39\x54\xa5\xa0\x5c\xa0\x12\x90\xf7\x31\xc1\xbc\x39\x33\x1e\x84\x96\xa6\xb0\xa7\x20\xc1\xc0\xe2\x26\x15\xd6\x46\x2b\x59\x55\x51\x63\x2b\xcb\xb5\x82\xc7\xed\x2a\x6b\x78\x2f\xd1\xec\x5a\xa2\x59\xc3\xb6\x87\xd4\xc9\xb2\x0a\x80\x81\x2d\xce\x63\x33\x4f\xcb\x13\x84\xa0\x76\x7b\x45\xda\x0a\x1f\x70\xf5\x73\xe1\xff\x55\xe6\xe0\x8e\xa8\x43\x52\x6d\xca\xd6\x39\x0c\xfc\x23\xe0\x1e\x49\x42\x69\xc0\x3a\xcb\x61\xb4\x18\xdb\x84\x26\xe8\xb3\x0b\xf4\xae\x40\xd6\xdc\x42\xe6\xe4\x91\x2b\xa3\x0b\x0f\x05\x04\xff\x78\x53\xb5\x96\xb6\xc4\x70\x0f\xde\x82\xfc\x5a\x95\x8f\x53\xae\x09\x0d\x66\x58\xb2\x97\xf5\xec\x79\x36\x1f\xc0\x8c\x1b\x13\x38\x9b\xb0\x1f\x56\x1c\x9a\x0d\x8c\x3f\x45\x23\xdb\xe6\x68\x06\x81\x8a\x4f\x9b\xa5\x19\x68\x3c\xa1\x86\xd9\x78\xe6\xf6\x69\x9a\xa4\xd9\xda\x60\xd1\xe8\x00\x32\x90\x2b\x5d\xb9\x5b\x2c\x06\xdd\x8a\x14\xcd\x62\x23\x3a\xe5\x68\x16\xaf\xef\x22\x49\xb3\x0d\x1e\x78\x59\xd2\x8e\xfb\xa4\xc5\x38\xeb\x92\xc1\xb4\x74\xd1\xb0\xa1\xa4\x74\xd5\x2a\x29\xbd\x36\xb8\x9c\x22\xca\x77\xf3\x98\xd1\x75\xd4\xc1\x22\xf0\x3f\xa4\xa2\x20\x8f\xa7\x0c\x36\xc0\xaa\x9c\x5f\x48\x0d\xc1\xda\x11\x94\xda\xaa\x25\x10\x0d\x45\xb3\x04\xb2\x9c\x27\x6e\x1b\x77\xbd\x53\x58\x9d\xe0\xfc\xb9\x59\x58\x8b\xd6\x67\x1f\xb9\x82\xca\xb2\x2d\x9a\x55\x15\x31\x0b\xff\x53\x8b\x02\x02\x82\xc7\x26\x99\x6c\x0d\xa7\xb2\x63\x54\xf4\xca\x73\x61\x2f\xdd\x1d\xaa\x76\x35\xee\xdc\x39\x88\xdc\xcb\xc8\x96\x1b\xbb\x28\x48\xa7\xc6\x57\xdc\x88\x9b\x54\x8f\x00\xb4\xba\x9d\x61\xec\x55\xd3\x5e\x4d\xe3\x3d\x70\x3d\xda\xa1\x53\x0c\xc3\xf0\xc8\xaf\x95\x2d\x29\x4d\xd8\x16\x59\x7b\x82\x49\xaf\x5b\xf1\x23\x70\x85\x65\x36\x84\x8f\x87\x76\x03\x28\xf5\x61\x23\x9f\x2a\x7c\xd8\x8b\x76\xb9\x88\x59\x26\x18\xd5\xb3\xe7\x0b\x9c\x3e\xd9\xd6\x38\xfd\x6c\x41\xd4\x27\x3b\x29\xf7\x54\x09\x4c\x5e\x33\x26\x79\x8d\x00\xdf\xa2\xf8\x47\x4d\x71\x6c\xaa\x9a\x58\x60\x1b\xac\x43\xa5\x5b\xc5\x56\x37\x2b\x73\x4f\x13\x65\xde\x60\xf5\xa9\xc5\x97\x9b\xc3\x1e\x96\x4c\x59\xb1\x24\x5f\x45\x38\xf7\xd3\x47\x18\x2f\xab\x9d\x92\x07\x41\xc7\x50\x21\x47\x53\x2e\x2c\xf7\x5a\x16\x67\x8c\xe5\xe5\x9b\x42\x8b\x5f\x7d\xd0\xfa\x57\x1f\xb3\xbe\x8f\x60\x7e\x93\x11\xcc\xcb\x4c\x5d\xde\xfb\x02\x05\x7a\x4b\x28\xf9\x28\x23\xae\xd0\x18\x36\x8f\x2c\x76\xd6\xa2\x30\x2c\xc3\xfe\x62\x7f\x68\x8c\xcc\xa8\x7d\x56\x9d\x6d\x68\xb9\x12\x8b\xaa\x01\x98\x66\x71\x62\xa1\x6c\x6c\xdc\x64\xd9\xd2\xb0\xcc\x28\x36\x14\x3f\xca\x47\xf6\xc0\xb2\x1e\xa1\x9a\xa4\xd2\x28\x8a\x41\x24\x04\xd0\x64\x09\x15\x15\x3d\xde\x94\x5c\xd0\x94\xc5\x03\x50\x37\x82\xe8\x2a\x6b\x9a\xb3\x4e\xb5\x26\xc4\x36\x00\x1f\xc3\x6d\x70\x1e\xf2\xa1\xc0\x88\x27\x8c\xb2\x81\x7b\x81\xbb\x89\x81\xd0\xf2\x7b\xef\xf2\xfb\xfd\x21\xb9\x35\xbc\x88\xab\xf2\x78\x03\x00\x97\xb6\xb1\x0d\xc5\x34\x93\xf9\xdc\x5b\x4b\xe4\x18\xcc\x34\x48\xc2\x0d\x2e\x3f\x18\x8c\xf3\xf7\x45\x34\x36\x5a\xd7\x72\xc2\x79\x91\x60\xb8\x8d\x50\x10\x42\x02\x32\x6c\xc5\x47\xf8\xd8\x88\x5b\xf4\xd4\x05\xb9\xdf\xcb\xb0\x5c\x9f\xc8\x8d\x78\xca\x14\xe8\xff\xde\xbe\x5a\x4a\x03\x2c\xa7\x9a\x36\x8e\x73\x99\xf5\xcb\x5b\xa8\x9d\x15\xb7\x39\x8b\xb5\xe8\xdc\x46\xf7\xb8\xfa\xf1\x40\xc0\x4f\x66\x17\xeb\x1c\xc4\xd7\xc6\x2f\xae\xf2\x6c\x2e\xe1\xd6\x4d\x16\x2e\xeb\xd6\x82\xc5\xcc\xe5\x3c\xc7\x08\x26\x1e\x06\xb4\x34\x52\x36\x57\xfa\x13\xd5\xd1\xcc\xa8\x98\x05\x68\xca\x8e\x22\xbb\x0a\xae\xfc\xb4\xb6\xb2\x86\x19\x9c\x84\xbd\xb7\x18\x8f\x3b\xd8\x4e\xf1\x42\x76\x51\xbe\xf0\xaf\x24\xf1\x65\x8f\x1b\xeb\xc4\xb9\x4f\xec\x13\x33\xd1\x55\x54\xb4\x6a\xfc\xdd\x68\xab\x5c\xb4\x63\xe7\x31\x63\x5b\x20\x00\x9c\x5a\xcc\x8f\xe2\x45\x62\x25\xab\x46\x96\x93\x67\x7c\xb3\x64\x04\x0b\xb4\xfb\x60\x84\x42\x6f\x5b\x4b\xe9\xdc\x08\x8c\x5a\x9a\x5b\x32\x9b\xa2\xcc\x92\x31\x9d\x67\xe6\x1e\xc9\x33\xee\xce\x7e\x25\xa5\xaf\x9d\x3a\xc0\x16\x75\x14\x16\x65\x88\x68\x50\xaf\x06\x5d\xbb\x34\xd2\x39\xf5\x21\x68\x40\x13\x09\x17\xf7\xa6\x33\x4c\x5f\x74\x2e\xd4\x8c\x61\x1a\x63\xdc\xb0\xa7\x2b\x09\x7b\x8b\x5d\x6e\xaf\xbe\xb8\xea\xa4\x71\x31\x0d\xf0\x95\x9a\xed\x81\x5d\xe0\x93\x1b\xbf\xec\x06\x01\xdd\xf8\xa9\x93\x7d\x36\xf9\x76\x09\xf6\x46\xeb\xe7\xab\x04\xd8\x52\xb8\xad\x0d\x79\xb4\xd2\x53\x88\x7c\x65\x6d\x35\x00\x60\x87\x35\x54\xa9\x95\xa6\xfe\xd3\xff\x85\xe5\x36\x70\x69\xfe\x93\xc8\x6c\x28\xf0\xf7\x9e\x87\xba\x36\x2f\x14\x18\x72\x34\x65\x05\xca\x56\x56\xc6\xe3\x81\x8c\x70\x8b\xa7\x82\x78\x81\x1e\xe9\xd7\x8c\x21\x28\x58\x5b\xab\x6c\x99\x52\x41\xa7\x80\x4e\xd8\x83\x18\x28\x10\x57\x0b\xeb\x12\x92\x34\x96\x4c\x02\x6e\x65\x98\xa5\x4d\xfb\x2b\x2a\xbf\x41\x9f\x28\xca\x5a\x70\xb4\xc2\x91\xde\x4c\xfd\xae\xec\xe8\x66\x12\xfb\x6d\xff\xe6\xa7\xd1\xf5\xe0\xe6\xf2\xee\xfa\xa4\x24\xb6\x9f\x9c\xdf\xdd\xdc\x0e\xae\x1b\x9f\x15\x29\x73\x7f\xb9\x1b\xdc\xb5\x3c\x72\x0d\x9c\xf7\x7f\x18\x9c\x87\xaf\xfc\xe5\xae\x7f\x7e\x76\xfb\xcb\xe8\xf2\xc3\xe8\x66\x70\xfd\xf3\xd9\xc9\x60\x74\x73\x35\x38\x39\xfb\x70\x76\xd2\x37\x5f\x86\xef\x5e\x9d\xdf\x7d\x3c\xbb\x18\xb9\x00\xd3\xf0\xd1\xe7\xcb\xeb\x9f\x3e\x9c\x5f\x7e\x1e\x05\x5d\x5e\x5e\x7c\x38\xfb\xd8\x34\x8b\xfe\xcd\xcd\xd9\xc7\x8b\x4f\x83\x8b\xdb\xa5\x8a\x48\xf3\x6a\xb4\x97\xe4\x2f\x2e\xb2\xc0\x40\x10\x88\x49\xe3\x85\x25\x6d\xfe\x77\x30\x53\x5f\x21\x3d\x1e\xf4\xdc\x5f\x58\x5c\xf1\xc0\xb0\x40\xe7\x01\x29\xb8\xc7\x50\x78\x17\x95\xbf\x54\x35\x9d\x2a\x97\x01\x59\x1a\xed\x31\xe9\xc3\x59\x01\x85\xa1\xd4\x29\xe4\xde\xfb\x91\x3a\xa7\x26\xd0\x61\xc2\x53\x0e\xfe\x4d\x72\x40\xaa\x1b\x5e\x6e\xd0\xce\x09\x86\x60\x3d\x34\xf1\xb2\xd3\xa0\xaa\xc9\x95\x40\x29\xc7\xc4\x71\x68\xd3\xac\x19\x17\xc0\xd7\x2d\x04\x4d\x79\x84\x3f\x54\x10\xdc\x48\x91\x29\x5e\x6d\xb1\x44\x60\xe5\x96\x67\x8c\xfc\xf4\xe7\x62\x50\x60\xad\xb6\x16\x85\xbc\x56\x94\xc7\x3e\xc8\x72\x5c\xd5\x55\xe4\x59\xea\xc9\x1d\x73\x6b\x46\x84\x73\x6b\x6b\x37\x82\x6b\x21\x17\x01\x5a\x4c\xc9\xcf\x60\x8b\x43\x93\x03\x52\xa1\xf1\x63\x72\x03\x99\xea\xaa\x50\xdd\xcd\x2e\xce\x93\x7c\xca\x6b\xa5\x5b\xc7\x6c\x46\x1f\xb8\x74\x08\xd8\x08\x14\x0e\xeb\x68\x45\x2b\x72\x40\x5a\x0f\xca\x31\xe9\xc7\xb1\x2a\x33\xb8\x12\xe5\x38\x96\x79\x50\x1e\x76\x08\xf0\x22\x62\xcf\x36\x2b\x74\x54\x1c\x39\x58\xb1\xdd\xe7\xe2\xd7\xd9\x61\xf9\xee\xdd\x0a\xdb\x50\xdd\x8f\x1c\x29\x8f\x36\x12\x06\x6e\xa9\xba\x6f\xa8\x08\xdd\x78\xbf\x3a\x54\x84\xed\x7a\x6c\x2f\x43\xdd\xd8\xa9\x5f\xd9\x11\x1c\xb4\xcd\xfa\x6c\x05\x96\x5c\xd1\xa5\x9b\x71\x52\xa9\xfe\xd1\xb9\xbf\x52\xf5\x90\xa7\xb7\xec\x37\x4b\x63\x70\x24\x47\x9e\xfe\xd7\x98\xc7\x15\x7c\x7a\xe9\xbf\x5c\x2a\xb2\x8d\x82\x75\x5b\xd7\xde\x5f\xcb\x15\xb4\x36\xff\xa5\x74\xb8\x23\x74\x8e\xee\xc2\x20\x60\x37\xf3\x08\x5c\x3b\x94\x0b\x8b\xe8\xcf\xbc\xef\xc1\xd5\xb0\x34\xe7\xd8\x57\x99\xa1\x63\xf9\x50\x52\x2e\x53\xa6\x14\x6d\xc1\x4d\x08\x4c\x62\xdb\x30\x06\x7f\x42\xed\x87\x1d\xe9\xc9\x9d\xc9\x5b\xf3\xd5\x32\xa3\xcf\x75\xa8\x19\xbb\x89\x1a\x81\x35\x76\x31\x95\xe4\x12\x33\xab\x0c\x7f\xe9\x15\x61\x13\x32\x0b\xa2\x49\xda\x4c\xfd\x1d\xcd\x6a\xd5\x05\x6b\x2c\xd4\x10\xba\x6b\xd6\x8f\xb6\x08\x5a\xdf\x18\x54\xd3\xda\xd0\x69\x79\x7d\xd6\xa0\xba\x92\x6f\x2b\x2c\x62\x89\xf5\x9a\xb1\x42\x76\x30\xd2\x1e\xa1\x98\xd0\x56\x48\x53\x2a\x8f\x66\xe8\x51\x30\x57\x46\x6f\x28\x1e\x83\x0d\x29\x85\x7c\xf6\xc3\x96\x00\x0c\xee\x8b\x39\x6e\xfc\xa1\x14\x48\x0b\x22\x23\x87\xa8\xce\x80\x10\xd0\xf9\x53\x54\xa0\x58\x41\xe0\xc1\x7e\x6d\x41\xea\x1b\x94\x1b\x6a\xa8\x88\xdd\x54\x74\xc8\xcf\x2d\xa8\xf5\xb3\x85\xa6\xdc\x75\x08\x41\xb9\xa1\xa6\x11\xec\xa0\xda\xd0\xb3\x22\x84\xfa\xc4\x3c\xcc\xe3\x4c\xc7\x36\x55\xde\x4c\xd7\xad\xf6\xbf\xba\x19\xfd\x2b\xfa\x1d\xf2\x16\x6c\x85\xa0\x35\x0f\x12\x4a\x0e\x8c\xcc\xea\x72\x7e\xad\xd3\x5d\x91\x03\x04\x7d\xfa\x06\x62\xea\xfa\x57\x67\xdf\xf4\xc8\x37\x61\x5e\xd1\x37\x1b\x1d\x40\x3b\x6e\x5b\x71\x08\xb4\xa9\x52\x70\x79\xf9\xd8\xc1\x5e\x55\x4e\xa2\xdd\x33\x7b\x10\x49\xdb\x39\x34\x5f\x96\xbe\x01\x47\x24\x54\xd0\x41\x5f\x9d\x0f\x6d\xb5\x2e\x20\x94\x71\xb9\x6a\x58\xbb\x78\x28\xc6\x8b\xaa\x93\xa7\xe7\xbd\x3c\x9d\x4f\xe9\xd6\x55\x61\x4c\x7b\xf5\x44\xd4\x1d\x87\x5c\x2e\xbf\x0f\x56\xa4\xb6\xf6\x7d\xb5\xf6\x82\x8b\xb5\x79\xa4\xf7\xb1\xca\x4d\xb3\x2a\xd9\xcb\xdc\x62\x36\x6e\xca\x2a\xf9\xe7\xad\x91\x5b\x87\x00\xdf\x7e\xd3\x8a\xd8\xd8\xee\x16\xe1\x7a\x4f\x65\x4f\x4b\x65\xbb\x88\x6d\x2f\x0f\x6e\xfd\x0b\xf4\x04\xe5\xb8\xa0\x19\x67\x70\x35\xca\x84\x67\xf0\xa5\xd2\x41\xab\x6b\xee\xad\xe9\xf3\x0d\xd6\x64\xb5\xd3\xf7\x06\x03\x07\xd0\xed\x5a\x1f\x6b\x75\xa8\x7d\x6d\xeb\x18\x48\x8e\x79\x6c\x9a\xa7\xac\x47\xa4\x48\x16\x41\xb0\x83\x3d\xaf\x40\x6e\x18\x8f\x82\x05\xc1\xb1\x13\x0b\x75\xb6\x56\xe2\xf3\x9a\xd2\x78\x1b\x8d\x6c\x11\x69\x72\xd1\xff\x34\x38\x1d\x0d\x2e\x6e\xcf\x6e\x7f\x69\x80\xb1\x2b\x3f\x76\x48\x76\xc1\x0b\x37\xbf\xdc\xdc\x0e\x3e\x8d\x3e\x0e\x2e\x06\xd7\xfd\xdb\x15\x28\x77\xcb\x3a\x6b\x43\x50\xcb\x55\x93\xfa\xb6\x0e\x8a\x9a\x33\xf3\x36\xf4\x5e\xc7\xba\x0b\x3a\xe1\xac\x05\xef\x0e\x93\xbc\x45\xcc\x32\x12\xb3\x07\x96\xc8\x79\x61\x56\x6d\x5c\xb0\x00\x08\xaf\xa1\xfd\x65\x60\x78\xd0\x66\x75\x8d\x8f\x09\x96\x8b\x09\x2a\xe6\xf9\x06\x41\xe4\xa3\x19\x13\xdf\x68\xc2\xbe\xcc\x13\x1e\x71\x1d\x24\x81\xc9\xcc\xba\x57\xd0\x7d\x08\x91\x88\x2b\x88\x6b\x67\xd1\x28\x3b\xd7\xf9\x43\x4f\x7a\x5d\xdb\xf7\x27\xca\x03\x33\xad\xac\x41\xb0\x03\xc5\xbe\xc5\x69\x5c\xc3\x8d\xda\x60\x74\x4f\x61\x1e\xa8\x67\x63\xd8\x44\xae\x16\x4c\xa9\xe6\x41\xae\xbe\x0d\x97\xc5\xc9\x94\xce\xf5\xf2\x40\x99\x6e\x94\xfa\xc2\xe1\x2e\xa5\xda\x5c\x3b\xc0\x58\xb0\x71\xca\x6b\x06\x2c\xd4\xe0\xfe\xc5\x3d\x82\xa0\x93\x8c\xa5\x52\x1b\x05\x0c\x23\x02\x7a\x46\xa8\xe2\x34\xe1\x7f\x07\x34\xa2\x8c\x1d\x06\x11\x14\x90\xec\x15\x87\xc1\xfd\x16\x29\xe0\x70\x28\x4e\x07\x57\xd7\x83\x13\xc3\x90\x0e\xc9\x9d\x02\xa0\xa1\xd2\xd4\x4f\x2d\x79\xa3\x38\x16\x46\x32\x70\xa1\x34\xa3\x6d\xc1\x60\x2c\xcb\x64\xd6\x9d\x3f\xf8\xfe\x06\xf0\x5d\x33\x79\xc3\xb3\x92\x6d\xca\x19\x00\x2e\x5a\x0b\x2b\x06\xf1\xe1\x3b\x4f\xbf\xb9\xa6\x8f\xa5\x15\x09\x81\x16\x40\x12\x29\xaf\xfa\x13\xae\x36\xe0\x08\x76\x9f\x5f\xa9\xcf\x2b\xf8\x76\xd9\x3c\x6f\x5d\x6d\x74\x0f\x4a\x88\xb8\x85\xbe\x68\x41\x65\x9e\xad\xa2\x62\xf6\x12\xa0\x0c\x15\xd2\x1f\xb3\x29\x15\x24\xcb\x85\xa8\xa0\x54\x86\x96\xb6\x7a\xd0\xcc\xba\x47\xd5\xac\x19\x4d\x65\x2e\x40\x69\x80\x30\xd6\x86\xc1\xa8\x39\x13\x7a\xc5\x60\x5e\x0a\x72\xa3\x32\xd4\xd7\x8b\xba\xd1\x30\xd0\x36\xe0\x8d\x26\x7f\x12\x54\x6f\x5c\xef\x5a\x76\x41\x79\x25\xa7\x92\x39\x54\xfe\x7e\x6e\xd6\xb2\xa9\xba\xdf\xba\xbb\x5b\xaa\xee\x5b\xba\x5a\x75\x83\x9f\x94\x1c\x4a\x95\x65\xb3\xe1\x82\x16\xd6\x0e\xb4\xe8\x95\xf7\xe2\xe0\x81\x09\xbd\x13\xa1\x12\x9a\x68\xc8\xaa\xed\x66\x1a\xc6\xd2\x4e\x67\xa7\x05\x47\xf2\x25\x86\x83\x50\x14\x9d\x51\x60\xce\x36\x93\xc1\xfa\x41\xdb\xbc\xb3\x0f\x9d\x1d\x7e\xf0\x6a\x7d\x5d\x56\xc4\x33\xdb\xd5\x2e\x4a\x3c\x16\xb1\x88\x0e\x16\x7a\x43\x9c\x0d\xc5\x50\xf5\x0c\xf2\xbb\xad\x46\x51\xdd\x73\xec\x73\x46\x55\xb5\xcb\x95\x5b\xbe\x01\xa8\x44\xa9\x99\x8f\x0c\x72\xae\x76\x52\x76\x7d\x8d\xdc\x5a\x18\xc8\x5d\x96\x40\xdc\xeb\x52\xd3\x03\x96\x97\xcc\xb3\xa4\xb8\x8e\x69\x07\xc1\x0a\x07\x63\x6e\x7a\x36\xcf\x18\x14\x3c\x3e\x26\x57\x09\x33\xd7\x65\x6e\xae\xcc\x3c\x49\x1c\x00\xcf\xf2\x2b\x7d\x2d\xd0\xa8\x27\x9f\x57\x20\x30\x2e\x99\x98\x03\xa0\x5a\x3e\xb3\x60\x0d\x76\x9f\x11\x1d\xac\x2f\xd8\xfd\xc0\xfa\x53\x16\xfd\x41\x77\x5b\x60\xb0\x23\xe8\xff\x34\xd4\x51\x14\xff\xbb\xb9\xaa\x33\xa6\x66\x32\x59\x3a\x85\xb5\x61\xbd\xd6\x99\x83\x5b\xca\x27\x9c\x84\x8d\x34\x1b\xb5\x05\xc3\x76\xb8\x8c\x4e\xb1\x89\xc6\x2b\x70\xd9\x14\x3d\x72\xb8\x77\xd9\x5b\x38\x44\x1b\xba\x65\x87\x06\x8e\xa8\xc2\x3e\x12\x42\x13\x15\xf6\xe6\x42\x02\x5d\xa0\xc3\xcc\x7f\x1e\x14\xae\xf6\x71\xdc\x5c\xab\xa2\xd2\x0b\x54\x30\x5f\x8f\xcb\xda\x68\xff\xa2\x09\x33\xe0\x66\xd6\x66\x41\xc3\x41\x4e\xb1\xb1\x1c\xaa\x04\xaa\x64\xb7\x18\xa7\xdc\x28\x43\xb7\x33\xd0\x6d\xfd\x16\xe5\x9a\xd5\x4f\xe6\xbe\x28\x51\x4b\x69\x02\x7b\x98\x9e\xf5\x61\x7a\x2c\x82\xbc\xa7\x3d\x00\xd5\xd2\x19\x64\xd1\x16\x1e\x8a\xea\x25\x6f\xad\x8a\xab\x52\x4b\x4a\xbb\xd3\x29\x8f\xa4\xf4\x85\x39\xf7\xa7\x5b\xba\x38\xcc\x64\x16\x23\xc8\xcc\xdb\x26\xcc\xa1\x34\x7f\x34\xcf\x42\x9b\x2c\x26\x98\x0a\x8c\x20\xa2\x76\xed\xbc\x69\x1a\xab\xb9\x0f\xc5\xb5\x19\x05\x7e\x51\xb8\xba\x8b\x4a\xc9\xac\xa8\xe9\x36\x21\xd4\x7e\x05\x8b\xde\x16\x69\xa4\x46\x41\xa1\xf8\x27\xcc\x2a\xfe\x01\xdf\xc1\x04\x62\x0b\xa0\x61\xa6\xca\x27\x85\x9e\x64\x84\x3d\xac\xea\x8f\xc9\xdc\x78\x79\x70\x6d\x13\xb4\xbd\xa8\x9c\x33\x07\x65\x0a\x9f\x79\xfe\xd5\xc4\x5c\x9d\x26\x26\x9c\x05\x44\x0d\x45\xd0\xc7\x12\xe4\x3b\xd4\x86\x36\x14\xfb\x61\x9f\x79\xec\x3d\x0b\xf0\x4f\xdc\xa1\x5a\xd5\x77\x3b\xbd\x94\xce\xc1\x7e\x86\x67\x50\x4e\xfc\xfd\x73\x6b\xc3\xb8\x0f\x61\xc4\xff\xe7\xbf\xfe\xfb\x90\xb7\x99\x97\xd5\xc8\xae\xc0\x6b\xd8\xc9\xf5\xb6\x25\xdc\xf9\x20\x25\xbf\x25\xd5\x5b\xe5\x63\x8f\x97\x5b\x0a\x4d\x2f\x7e\xb5\x97\x9b\x21\x1a\xa9\x67\xe8\x4f\x2b\x93\x3b\x18\x9f\xb3\x7c\xf9\x2d\x1b\xb0\xb8\xc2\xe3\x5a\xb8\xd5\x82\xa8\x46\x07\xb8\x8e\xd1\x68\xa6\xfd\xca\x85\x52\x61\x50\x01\x32\xd6\x36\xd1\x5f\x33\xaa\x9e\xce\xc5\xdf\x58\xc5\x02\xad\x72\xe1\x1d\xb9\xca\xd9\x8f\x83\xc4\xac\x31\xb3\x2b\xb9\x62\x19\x1e\x68\x0f\xa1\xd2\x50\x6c\x15\x62\xbd\x56\xf8\x2c\x58\x4a\xf9\x5a\x71\xc9\xe6\xfd\x66\x54\xb2\x92\xd1\x92\x4e\x59\x36\x8a\xf3\x52\x10\xea\xaa\xb6\xaf\xcc\x47\xa7\xb9\x5e\xac\x6e\x5f\x25\x34\xba\x5f\x07\x09\xce\xbc\xdf\xd2\xec\x6a\xc1\x30\x08\x15\x28\x0b\x87\x2d\x38\x6b\xac\x82\xb3\x66\x63\xd7\x4a\x5a\x3b\x5c\x34\x02\xaa\xe5\x06\xc2\xbd\xbd\x89\x10\x0d\x16\x46\x4e\xc6\x79\x61\xe5\xf0\xf8\xda\xf1\xe1\x50\x7c\x40\x80\x7a\x50\x3c\x70\x00\x11\x24\x0e\xb0\x2f\x73\xa9\x58\x29\x93\xa5\x01\x33\xdb\x66\xa2\xd9\x61\x34\xcb\xa4\x95\x6a\xc5\x5b\x89\xa4\x2f\x8e\x98\x57\xdf\xf0\xfa\x94\x9b\x29\x70\x2b\xa9\x27\xe2\x73\x6e\x68\x67\xd4\x78\xd2\xd6\x9f\x7a\xd7\x92\x0b\x45\x6c\x08\x60\xa7\xe8\x64\xd1\x23\x7e\x7a\x15\x82\x48\xd8\x03\xcb\xe8\xd4\x48\xac\x94\x27\x21\x32\x7a\xd9\xd4\xd4\xc2\x4e\x56\x1d\xa0\x22\x8d\x0c\xd8\x02\x89\xab\x23\x28\x27\xdb\x34\xd1\x62\x39\x8d\x60\xeb\x8c\x97\x26\x07\xf7\x1a\x52\x68\x3f\x44\x88\x5f\x30\x4d\xd8\x17\xcd\x6c\x81\xb3\x5b\x97\x93\x54\x0f\x63\x26\xcd\x69\x15\xed\x22\xd2\xee\xa9\xa2\x36\x11\x9b\x89\xea\x92\xae\x62\x77\xef\xdb\x24\xa4\x19\x15\xb1\xcd\xac\xb3\xb2\xb4\x91\x29\x60\x76\x68\x07\xf2\x31\xc7\x36\x3f\x2c\x80\xd6\xc5\x36\x11\x03\x18\x2e\x32\xa7\x17\x19\xc9\x1c\xdc\xb4\x32\x33\x02\x6a\x2e\x34\x4f\x0c\x71\xd8\x31\x18\xad\x39\x17\x1e\xdc\x0a\x22\x64\xdb\xf0\x93\xb8\x52\x5c\x4c\x47\x76\x25\x5d\x92\x58\xb7\x8b\xa1\x4c\x53\x9f\xb0\x29\xfc\xf1\x07\xd7\xd0\x72\x3b\x2f\x92\x35\x60\xdb\xb8\xf4\x34\x10\xac\x85\x74\x93\xb1\xa0\x44\x2e\xab\x6d\xc4\xe3\x52\x41\x76\x98\xe8\x3a\x46\x0a\x10\xeb\xea\xf9\xe0\xc5\x15\xa2\x6c\xca\x19\x26\x92\x40\xc4\xaf\x6e\xc9\xa9\x53\xad\xb9\x74\x67\xc2\x8b\x68\xb6\x50\x8a\xcf\x18\xae\xa4\xe5\x51\xd7\x9d\x0d\x6b\xa6\x49\x32\xa6\xd1\xbd\x57\x36\xbc\xca\x2d\x33\x07\x34\x6d\x04\x54\xa8\xa4\x83\xc4\x65\x06\x1a\x81\x74\x63\xeb\xf9\x02\x31\x21\x22\x88\x1d\x76\xd1\xb9\x2d\x63\x2f\xb0\xb0\x3a\x28\xe7\x38\x7a\x8c\x91\x8e\xd9\x3c\x91\x8b\xb4\xe5\x3e\xab\xa6\x22\x6d\xe3\xf1\x6f\xcb\x84\xda\xe9\x55\x56\x61\x7a\x6b\x5f\x66\xb5\xbc\x86\x1d\xe0\xd3\xac\xc1\x25\x3f\x26\x72\x0c\x56\x3e\xab\x65\xbb\x58\xfd\x20\x64\xbc\x7a\x9e\xd7\xcd\x20\xa8\x9e\x48\xae\xe6\x09\x5d\x2c\xeb\x01\x63\xd7\x9f\x76\xdf\x30\xd7\x79\xb5\x11\xac\x7b\xd4\x67\xe3\xe7\x4f\x81\x7a\x79\xee\x24\x01\x7c\x17\xf9\x97\x35\x26\x31\x67\x4d\xc2\xac\xa1\xc3\x79\x26\x8d\xa4\x20\x87\x42\xd3\xa9\xdb\x5d\x2b\x5d\xca\x47\xc1\x32\x35\xe3\xf3\x52\x89\xad\xad\xe3\x4c\x2d\x49\xdb\xff\x60\x54\xe5\x1a\xcc\x53\xce\x0f\x10\xea\xc0\x10\x88\x9a\xd3\xa8\xb0\xfe\x45\x09\x55\x8a\x4f\x16\x01\x42\x81\x0f\xd9\x83\x3c\x90\xb2\xba\x1c\x54\xb5\x69\xe2\x34\x61\xce\xfb\x6e\x12\x75\xb7\x4f\x52\xba\x2b\x9f\x42\x1e\x87\x80\x50\x50\xf6\xbc\x06\x4a\xe1\x2e\x6c\x0b\x4e\xf1\x54\xb9\x4b\x76\x64\x36\x83\x67\x77\x03\x73\x58\x02\x9b\x65\xfc\x2e\x05\x39\x69\x37\x73\x14\xc2\xae\x1d\xb6\x55\xb4\x3c\xb0\x41\x38\x0d\x98\x63\x6c\xbf\xf0\xd9\x3a\xa5\x3c\x75\x5a\xc2\xf6\xc0\x35\x32\xca\x9f\x33\xe1\x9a\xf3\xe5\x81\x13\x20\xbf\xbc\xe8\xa0\x47\xd4\x56\x80\x43\xdd\x49\xfb\x94\x25\x6c\x27\x31\xa8\x1b\xd0\x79\x35\x56\x20\xa0\xf0\xa5\x44\x54\x40\x6c\xaf\x36\x93\xac\x4f\xe3\xd5\x51\x15\xd4\xbd\xb3\x41\x6d\x10\xaf\xdb\x82\xa8\xd2\x3c\xf2\xcf\x38\x50\x1b\xb2\xdb\x44\x60\x60\x5e\x84\xad\xef\xaa\x1a\x36\x41\xb3\x61\x0b\xf6\xc4\x14\xdd\xb8\x7d\x74\xd8\x37\x5e\xd8\x75\xd2\xd7\xeb\x3d\x06\x2f\x1c\xe0\xda\x32\xba\x8f\xac\x4b\x74\xc7\xca\x23\xba\x11\x37\x6d\xbb\x12\xbb\x91\x8a\xf5\xcc\x6a\x49\xa6\x4c\x63\xf9\x68\x5f\x23\xfb\x0d\x92\xc9\xce\x22\xf6\x77\xba\x15\xcd\x4c\x60\xbd\x53\x7d\xc3\xb4\x72\x37\x5e\x0d\x0d\xcf\xee\xd4\x81\x4b\x3e\x2e\x52\x79\x5f\xef\x16\xbd\x8e\x93\x7c\x6d\xad\x2a\x4f\x77\xc1\xae\xa6\x97\x9d\xd0\x07\xe0\xf0\x50\x48\x57\xc8\x2d\xb0\x2f\x1c\xde\xc0\x03\x5b\x53\xe5\x57\xf8\xb6\xed\xf0\x3a\x79\xb5\x6b\xcb\xf9\x14\xdb\x6b\x63\x53\x3b\x6f\xee\x53\x92\xda\xba\x63\xd9\x85\x8e\xf2\xc4\x46\x11\x4b\x8d\x2b\xb5\xeb\x7d\x88\x09\x21\x6d\xfe\xd7\xc2\xb1\x68\xb7\x6c\x97\x87\xac\x09\x79\x7f\xfb\xec\x9a\x44\xa2\x77\x60\x34\xcf\xd8\x84\x7f\xd9\x48\x14\xbf\x82\x4f\xad\x7a\x69\x96\xb9\x82\xe5\x0f\xd6\x0e\xc0\xfe\x0f\xdc\xe0\x76\xa5\x2d\x38\xfb\x50\x00\x2c\xb6\xfa\xe3\xf1\xd1\xd1\x38\x8f\xee\x99\x3e\xba\x67\x0b\x22\xb3\xd2\x4f\x9b\x62\xb3\xec\xbe\xee\x00\xee\xeb\x4c\xeb\xb9\x3a\x3e\x3a\x9a\x72\x3d\xcb\xc7\x87\x91\x4c\x31\x7a\x4b\x66\x53\xfc\xe3\x88\x2b\x95\x33\x75\xf4\x87\xef\xbf\x2f\xb6\x78\x4c\xa3\xfb\x29\x66\xbb\xd6\xad\x38\xa5\x2d\xbf\xa9\xd7\xe6\x5a\x1f\x29\x38\x93\x62\xc4\xbe\x18\x22\x6d\xaa\xfe\xde\x15\x48\x44\x91\xfe\xe7\x1b\xa2\x16\x42\xd3\x2f\xc7\xe4\x13\x96\xea\x27\x3f\xca\x3c\x53\xe4\x94\x2e\x0e\xe4\xe4\x20\x95\x42\xcf\xc8\x27\xf8\x5f\xfb\xd3\x23\x63\xf7\xe4\x17\x46\x33\xbb\xbf\x16\x82\xdf\x17\x08\x9b\x51\x48\xe5\x80\x42\xc0\xd9\x82\x7c\xff\xef\x24\xc5\x96\x8f\xc9\x77\x47\xdf\xff\x3b\xf9\x3d\xfc\xff\xff\x4b\x7e\xdf\xa2\xa9\xad\x97\x49\x0d\xb5\x7f\xae\xcb\xc6\xad\x5e\x65\xa5\x36\x28\x87\x76\x92\xc9\x62\xa7\x1a\x5b\xbe\xe7\xd1\xbd\x9c\x4c\x46\x9a\xa7\x0c\x43\x6d\x47\x34\xab\xa1\x70\x6d\x08\x4b\xc3\x6d\xf1\x26\xac\x7f\x5b\x40\xf3\xda\x4e\x31\x91\xc6\x1d\x37\x95\x17\xc5\x6b\xc0\xa7\x52\x2a\x08\xc4\x15\x7c\xc5\x62\x73\x2a\xd6\xf1\x9f\x38\xeb\x4c\xbd\xc4\x64\x91\x78\x16\x16\x24\xf3\x7e\xd0\xd0\xa9\x8f\x7e\x0f\xbb\x90\x8d\xc7\x01\x7c\x22\x72\x2b\x54\xa2\x7b\x56\x0b\x9d\x58\x33\x45\x09\xc1\x20\xef\x59\x5b\x79\x52\xb8\x49\x5e\xcc\xf5\x78\x19\x14\xfa\xb6\x20\xc8\xee\x9a\x04\xc9\xdf\x56\x5e\xb2\x9a\x01\x73\xb8\x93\xdf\x42\x96\xa0\xfb\xe7\x7b\xb7\x59\x46\x50\x54\x3d\xd7\x10\x14\xe5\xb4\xf1\x53\x41\x25\x0d\x74\x5c\xd9\x16\x15\xd3\x07\x18\xb0\xd1\xdc\x04\x5d\xf8\x16\xc2\x9a\xe4\xb6\x91\xb6\xc0\x37\xb3\x97\x54\x77\xf5\x40\x96\x88\xe5\xd2\x7d\xda\x9d\x9a\xfb\xc4\x7d\x6c\x4e\x04\x2d\xbb\xd1\x81\x87\x59\x1f\xf4\x02\x0c\x8f\xbe\x96\xf4\x38\xb0\xd4\x47\x32\xcb\x40\xf4\x84\xc8\x49\xbb\xe8\x4b\x68\xfa\xb2\x3e\xc3\x35\xd0\x0c\x06\x7f\xb9\xeb\x9f\xdf\x94\x00\x0c\x2e\x6f\x47\xf5\x5f\xcf\x2e\xaa\xef\x94\x7f\x19\xfc\xd7\xd9\xcd\xed\xcd\x52\x2c\x83\x4a\xa3\x6d\x9c\x60\x26\x1f\xa1\xf2\x85\x39\x2b\xb0\x20\xb4\xb2\x24\xe6\x7a\xa7\xc2\xc1\x52\x71\xe7\x60\x45\x9f\x26\x60\x9b\xc5\xcd\xb9\x35\xf5\x98\xa3\xaf\x26\x90\x04\xa6\xf6\x52\x41\x24\xaa\xd6\xf9\xea\xf8\x91\x1b\x99\x6d\xa5\x35\xaf\xc9\x8d\x1b\xaa\x7a\x85\x05\x32\x21\x93\x4b\x66\x1e\x24\x0e\xad\x5b\xb6\x64\xcd\x6a\x5b\x34\xcf\xd0\xe3\xde\x8d\xc9\x98\xa9\x9f\xfa\x4f\x56\x0d\x13\xdc\xef\xee\xed\xa2\x18\x07\x8c\xd6\x9c\x04\xc3\x54\x1a\x46\xdc\x80\x24\xb3\x6a\x43\x6f\x70\xcf\x98\xc2\xc6\x21\x16\x04\xe2\x60\x85\xd3\x4f\x6c\xa2\x5f\xe3\x7e\x02\xbe\xc6\x2e\xa0\x77\x6a\x50\xad\x5b\xdc\xba\x68\x30\x2f\x04\x05\x87\xf4\x5b\x01\xf8\xcd\xa8\xb9\x53\x36\x44\x2b\x42\xc8\xf6\x1e\xc9\x28\x84\x53\xe8\x19\x15\x68\x4a\x99\xd0\x88\x8b\x69\x2f\x00\xaa\x81\xfc\xc3\x50\x72\x69\x5a\xc9\x5b\xaa\xee\x77\x1b\x22\xb0\x75\x09\x1b\x1e\x17\x65\x14\x90\x22\x6d\x04\x01\xaf\xa1\x74\x68\xaa\xee\xdb\x72\xab\x6b\xc0\x0e\x4b\x46\xe7\x97\xc2\xc1\x41\x2c\x1b\x9f\xcb\x67\x62\xa1\xea\x06\xa8\xad\xae\x80\x96\x85\x79\x71\x21\xe9\x58\xe0\x9c\x27\x2c\xae\xe2\x1b\x55\xc7\xbf\x8a\x10\xd0\x38\x16\xf8\xa2\x01\xfe\x26\x9d\x4b\x88\x3c\x9d\x90\x94\x8a\x05\x1e\x25\x23\x4a\x51\x75\xaf\x7c\x1d\x25\xa2\x52\x9a\x24\x3d\x92\xb1\x5c\x19\x01\xbc\x67\x2e\xb2\xc9\x81\x43\xa2\x8d\x49\x22\xa7\x3c\xa2\x09\x19\x27\x32\xba\x57\x43\x61\xae\x12\x31\x45\x91\x6c\x9e\xc9\x88\x29\x15\x48\xe0\x45\xae\x93\x8d\x40\x87\x22\x4a\x9a\x65\x29\x17\x5c\x69\x1e\x79\x69\xc3\xa7\x17\x62\xd9\xb6\x88\x82\xe9\x17\xe2\xf9\x61\xb8\x46\x23\x60\x88\x8d\x93\x0b\x8b\x59\x0e\x0c\xdd\x42\x5e\xb8\xd8\xaa\x36\xea\xdd\x01\x82\x87\xdb\x9e\x91\x2e\x9f\x86\x15\xf4\x7c\x62\x3f\x83\x33\xb4\x8c\x62\xae\xcb\xe4\xec\xa9\xc1\x93\xb9\x07\x86\x74\x44\x51\x44\x8e\x95\x85\x3a\x67\x60\x7a\x65\x80\x02\x30\xe4\x16\x18\x81\x55\x34\x6d\x56\x11\x2e\x45\x80\xc9\xaf\x7a\xc7\x6d\x29\x69\x27\x97\x9b\x4b\xe2\xc1\x10\x89\x5b\x1e\xb3\xf6\xe6\x2a\xe9\x11\xaa\xc8\x23\x4b\x12\xf3\x5f\x0c\x1c\x3b\xf0\xb8\xa5\x86\x1f\x22\xb6\x2c\x74\xe2\x58\x64\x2b\x45\xd9\xf2\xfa\xaf\xa2\xbe\x97\xbf\xa4\xd7\x65\x8b\x2b\x05\x09\x55\xae\x98\xbd\x64\x7c\x7e\x65\xa0\xc8\x76\xf3\xf0\x2a\x34\x5e\xd7\x45\x96\x0c\xaa\x46\x22\xcd\x56\xcb\xac\x29\x4b\x0e\x29\x0e\x9e\x3e\xf0\xa2\x96\x9d\xed\x6d\xa9\x55\xd3\xcc\xa8\x93\x49\x33\x24\x8a\x8d\xcd\xf4\x95\xa9\xd4\xb2\x4d\x39\x16\xe2\xc4\x09\x81\x54\x9b\x47\x11\x63\x71\xa3\x3a\x66\x46\xf4\xea\x30\x8c\xae\xa8\x9e\x61\xe2\x62\x2a\x35\x96\x52\x42\x0c\x23\x67\x6e\x45\xd0\x9b\x71\x22\xc7\x70\x21\x01\xbc\x91\x4b\x7c\x0a\x92\x26\x70\xde\x2c\x26\xdf\x06\xf7\x8b\x4f\xaa\x7d\xdf\x0c\xb6\x53\x5a\x91\x57\x00\x6d\x54\xb5\xf3\xb6\x02\x1c\x95\xab\x81\x1c\x92\xab\x4a\x26\x78\xb0\x32\x13\x6a\xae\x8d\xa5\xa8\x02\x2f\x04\x87\x54\x99\xc4\xd3\xed\xd0\x9a\x70\x48\xa5\x3e\x77\x00\x87\x54\x99\x67\x4b\x64\xa6\x9c\x3e\x69\x46\x99\x99\xd4\xb9\xec\x6e\x6b\x43\x44\x12\x14\xf1\x4a\x24\xe8\x0e\xe4\xa2\x89\x10\x5f\x17\xd4\x53\xa5\x66\xce\xcb\x42\x3d\x55\x06\xf3\x9a\xa1\x9e\x2a\x43\x7d\xbd\x50\x4f\x0d\x03\xed\x00\xf5\x84\xb1\x26\x23\x43\xd4\xdd\x98\x02\x44\x2d\x8f\xf3\xc9\x0d\xdc\xbb\x4b\xc7\x68\x0b\xeb\xe3\x35\xe6\x44\x49\x8b\x7c\x08\xa3\xb5\x19\x2e\x6d\xd1\x79\x54\x6d\x45\x7b\xde\x19\xcc\x15\x6a\xf1\xf3\x84\x8a\xf2\xd5\x01\x65\x71\x33\x16\x19\xf2\x43\x46\xa5\x33\x2a\x14\x4c\xb5\x67\xad\x4b\x66\x14\xe8\x56\x89\xe8\xdc\x66\x0c\xb6\x01\x92\xbf\x9e\xdc\xa8\xf5\x50\xb4\x00\xec\xa8\xc4\xea\x3b\x41\x95\x7c\xaa\x60\xfa\xa2\x2d\xd8\xeb\x32\x48\x8c\xad\xa4\x07\x9d\x8e\xac\x42\xdf\xb6\x62\x5b\x97\x6e\xbf\xf5\xf8\x51\xce\x74\x10\x20\xeb\xda\xf4\x71\x8f\xe1\xcf\x62\x5b\xd8\x57\x19\xed\xda\x4c\x07\x6f\x54\x45\x52\xca\x9d\x9e\x9f\x2b\x57\x42\x7c\x28\x30\x86\xdf\xd6\x93\x39\x24\xe0\x6a\xf9\x42\xd3\x79\xc2\x7a\xc4\xcf\x8f\x1b\x0a\x1a\xe6\xdf\x7d\xf7\x47\x46\xbe\x23\x29\xa3\xa2\x64\xdf\x00\xad\xde\x5c\x79\x00\x16\xa4\x67\x6c\x28\x1a\xb7\x82\x0c\xbe\x60\x05\x02\x17\x76\x7a\x26\x26\xd2\xd9\x4b\xa0\x0c\x0e\x8d\x66\x44\xe5\x63\xac\xe3\x16\xd8\xb7\x9c\x9e\x77\x2e\xa7\x10\x2f\x01\x37\xb1\x1b\xf4\xc6\x20\x69\x15\x86\xd3\x11\x24\xad\x34\xb5\x3d\x48\x5a\xf3\xe9\x7b\xb5\x20\x69\x95\x3d\xef\x06\x92\xd6\xb4\xe5\x1b\x80\xa4\x95\x9a\xf9\x6a\x40\xd2\x2a\x2b\xfa\xd5\x80\xa4\x55\xe6\xb5\x07\x49\xfb\x4a\x40\xd2\x56\xf3\x91\x46\x18\xb0\xe6\xc3\xbb\x1e\x0c\x58\xa3\x7e\xd5\xce\x22\xb6\xc5\x5c\x00\x69\xee\x99\x61\xc0\x4a\x13\xd8\xc7\x68\xae\x1f\xa3\xd9\x48\x7c\xb6\x6f\x33\x3c\x17\xb8\x59\xbd\xc8\x3a\x02\x81\x95\xf6\xa7\xb3\xe9\x73\x17\x94\xf8\xb4\x51\xc1\xe0\x81\xe9\x6a\x0e\xe9\x97\x56\x51\x59\xf8\x40\x23\x19\x39\x00\x17\xd4\x9c\x42\xef\xf3\x9e\x72\x37\x88\x2e\xae\x2c\xaf\xf7\xd9\x20\x2d\xee\xd2\x38\xdf\x50\x0b\x76\x0b\x7a\x75\x09\x98\x6b\x3a\x47\xdc\x20\xc0\x49\xd2\x6c\x18\x84\x32\xd4\xbb\x69\x76\xd5\x45\xe6\xe1\x29\x4a\x55\xb1\x7d\x6e\x69\x51\x15\x1b\x65\xe3\x4a\x4a\x2d\xa1\xda\x7d\x39\xe5\x4a\x67\xad\x91\x35\xb5\x11\x6e\xe3\x86\x9d\xe7\x9b\x24\xc2\x4f\x37\xfb\x2c\x65\xa9\xcc\x56\x85\xf5\x34\x7e\xa9\xb4\xcc\xe8\x74\x95\x95\xa4\x59\xad\x9a\xcf\x58\x6a\x84\xa0\xd1\xba\x8d\x74\xdd\xef\x22\xcc\x0f\xf3\xdf\x1a\x4a\xa3\x07\x4e\x56\xf3\x6e\x6c\xcb\x9d\x77\xdd\xee\x6d\xb7\xd9\xd5\x55\x5f\xcf\x8a\xef\x60\xfc\x96\x5b\x4b\xec\x4b\x25\x57\x3a\xd0\x77\x63\xb0\x86\x8f\x95\xd9\x30\x1c\xa3\x05\x1a\xac\xde\x21\x78\x6b\x15\xcb\x0e\x42\x19\xb5\xe4\x21\xad\x8f\xa0\xbc\xee\x32\x61\x35\x6b\xf6\xda\x2b\xaf\x6c\x10\xe7\xd3\x5e\xc6\x3e\xfc\xb9\xfb\x85\xac\xfd\xf4\x88\x0a\x42\x5a\x15\x4f\x79\x42\x33\x34\xba\x52\xcc\x95\x16\x84\x4e\xa0\xc3\x05\x40\xa3\x01\x24\xa4\x51\x0f\x1e\x68\xc2\x63\xe2\x02\x70\x31\x34\x06\x63\x40\x49\xff\xe2\x94\x60\xc4\xe8\x26\xb1\xe2\xfe\x40\x79\x1b\x30\x46\x8b\xfa\xc5\x2c\x42\xd9\x83\xd0\x2f\x2a\xdc\xa4\x18\x06\x8c\xdb\x60\xb0\xa6\xcd\x75\x8a\xeb\x16\x3b\x9b\x67\xad\x21\xa1\x5d\x8c\xb6\x91\xce\x69\x02\x5a\x71\x58\xc7\xa7\xb2\x71\xef\xc6\x8b\x86\x4c\xd3\x6e\x5e\x01\x2e\xf4\x9f\xfe\x6d\x9d\x18\x19\xd0\xe0\xec\xa1\x98\xf0\x84\x11\x1a\x45\x4c\xa1\x1d\xd9\xae\x36\xd6\xc5\xce\xb3\x64\x9b\x23\x6b\x38\x9f\x99\xb7\xb9\x0f\x3d\x98\x62\x5c\x70\x06\x94\xae\x66\x99\xcc\xa7\x33\x67\xaa\x32\x2c\xc6\x4c\xad\x69\x2f\x7f\xae\xd9\x83\xd7\xde\xcb\x1f\x72\x9e\x6c\x66\x08\x2c\x62\x2a\xcd\x30\x3f\x9e\xdd\x12\x35\xf3\xcc\x6d\x0c\xcd\x36\x6e\x6c\x7d\xd0\xdd\xfb\xb4\xdf\x7a\x9f\x04\x74\xd3\x73\x00\x62\x13\x99\x24\x60\x55\x57\x2c\x7d\x68\xab\xab\x0d\x13\xbe\xe5\x1b\x56\x0f\x86\xaf\xc1\x37\xa7\x34\x4d\xe7\x9d\xc4\xd5\x2b\x94\xa4\x15\x71\xa3\xaf\x3a\xe6\x31\x64\x4f\x0a\x5f\xde\xbd\xb4\xc9\x9f\xeb\xb0\xea\x6f\x2c\x70\xd2\x05\xf2\xed\x2c\x78\xd2\x2d\xc9\x33\x07\x50\x36\xcd\x63\x0d\x16\x50\xca\x2a\x2a\x2e\x70\x17\x99\x82\x4a\x5a\xdf\xcc\x6f\x28\xfa\xa5\xfc\x23\x57\xb0\x6f\xbc\x28\x42\x97\x51\xdf\x09\x39\x09\xa0\x51\x5b\x23\x10\xf8\x6b\xcc\x5f\xa0\x95\x21\xf6\x1d\x86\x56\xba\xf0\x49\x88\xbb\x66\xf1\x01\x8d\x16\x51\xc2\xa3\xe0\x3a\x99\x66\x74\x3e\x6b\x62\x37\x6e\xd9\xf7\x28\x43\x2f\x85\x32\xd4\x56\x62\x61\x9d\xb8\x71\x47\x57\x50\xbb\x7c\x8f\x7e\xd4\x80\x7e\xd4\xf3\xf8\x1e\xa2\x28\x16\xf1\x82\xb0\x11\xf5\x73\xb7\x87\x40\x7a\x01\x08\xa4\x4d\x0e\x5f\x81\x6f\x54\x3a\x76\x7b\x58\xa6\x77\x9d\x60\x99\xfc\x25\xf8\xaa\x90\x76\xda\xcf\xe3\x0b\x23\xb8\xd4\x07\xf6\x92\x30\x4c\x0d\xe2\xc2\x3a\x72\xd3\x32\x1c\xa6\x65\x74\xd1\x69\x5d\x5e\x16\x15\x69\xbd\x95\x59\x0b\xf0\xa8\xf1\xee\x7a\x25\xf0\x47\xed\xdb\xf0\x4a\xce\xcd\x2e\xb3\x7b\xd6\xab\x86\x15\x66\xf8\xac\xa3\xdd\xac\x97\xec\xe3\xe9\xe1\x6d\x25\xfc\x14\xa5\x48\x36\x4b\xfa\xe9\x3b\x7f\x39\xcb\xc8\x4c\x26\x31\x86\xa4\x05\xab\xe5\x3b\xf0\xa1\xe6\x7e\x81\xdc\x66\xdc\xcc\x59\x84\xda\x56\xbd\x4c\xff\x52\x92\x7a\xeb\xe9\x3d\x81\xfc\xbb\xdb\x14\x9f\x70\x65\x37\x4d\xf3\x59\x31\xb8\x65\xa2\xc7\x86\xa9\x3e\x41\x8f\x4b\x3d\x8a\x6e\x76\x9d\xbc\x8a\x55\x62\xd9\x20\xe0\xab\x56\xf8\x65\x7b\x30\xa4\x94\x7e\x19\xcd\x69\x46\x93\x84\x25\x5c\xa5\x4f\x16\x75\x7a\x52\x76\x2d\x9b\xb3\x9a\x49\xb4\xcf\x88\x3c\x1d\x23\x29\xba\x81\xd8\x72\x53\x5a\x92\x2c\x17\x21\x94\x9b\xdf\x18\xe2\xca\x11\xe5\x70\x2f\x80\x49\x27\x9a\x41\x6d\xb3\x09\xe5\x99\x60\xaa\xb5\x92\x14\x8b\xf2\x8c\xeb\xc5\xc8\x16\xe6\xea\x7e\xe0\x6e\xec\x97\x27\xf6\xc3\xe5\xde\x78\x97\xff\xee\xfa\xf3\x85\xc0\xe6\x2c\x83\x2a\x03\x0e\x2f\x3f\x28\x3e\x66\xf1\x0d\x98\x2f\x55\x00\x71\xb6\xb5\x6b\xbb\x2d\x3e\x9c\x3e\x8e\x82\x94\x9d\x51\x54\x25\x8e\x55\x87\xb5\x09\x67\x6b\xd9\x24\x9f\x18\x69\xaa\xc5\xe3\xfd\x04\x20\xe5\x36\x2e\x1f\x9b\x36\x03\x0e\xdc\xd6\x60\x2c\x2c\x36\x26\x48\xba\xb7\x4a\x55\xcb\x38\xa9\x10\x52\x37\x97\xa7\x59\x32\xd8\x7e\xf0\x55\x87\x11\x07\x9d\xec\x68\xd8\xe6\xa0\x67\x59\x3e\xd7\x7c\x5c\x87\x82\xda\x61\xd1\xb2\x7e\x02\xe9\xe6\xce\xc6\x5f\xea\x16\x2b\x99\x95\x38\xb1\x9d\x9d\x91\xff\x2d\x6e\x9a\x43\xd4\xb2\x50\x3c\x41\xa2\xd8\x65\xca\x81\x0a\xf1\xfc\x80\xf5\xd7\x50\x67\xd9\x36\xfb\x8d\x0b\x4d\xa1\x50\x0f\x0d\x4d\x44\x87\x43\xd1\x57\xe4\x91\x11\xc1\x70\x09\x9b\x2a\x9d\x79\x93\x32\x94\x8e\x18\x33\xd3\x93\x8f\xa3\x31\xc2\x03\xd7\xca\x57\x2f\xc1\x3e\x26\x34\x51\xac\x67\x1a\x86\xa2\x67\x5a\x42\x80\x27\x25\x8f\x19\x9d\xcf\x59\x36\x14\x36\x5d\x00\xbc\x1d\x52\x26\xd8\xfe\x5a\xd2\x4f\x1c\xab\xb2\xa1\x0b\x55\x08\xfe\xf7\x92\x8a\x7d\x50\x4a\x31\x8a\x02\xb0\x15\x08\x2e\x74\x45\x28\x96\xc9\x3a\xfb\x50\xf5\x7a\xa8\x7a\xf3\xda\xbc\xc6\x70\x75\x7f\x9e\xd6\x0d\x59\x6f\xdb\xfe\x5d\x48\x31\x3b\x0c\x5d\x7f\xe1\x18\xef\xa7\x09\xef\x7e\xd9\x78\xfc\xa7\x08\xc5\xdf\x07\xac\xbf\xbd\x80\xf5\xf6\x63\xbb\x56\xd0\xfa\x0a\xf4\x20\xd7\xcb\xb6\x11\xc2\x1e\xd1\xe6\x49\x03\x93\xbc\xdb\x3e\xf8\xa2\x63\xa4\x70\x01\xb9\xb3\x8f\x16\x7e\xa2\x68\xe1\x86\x25\x5e\x2f\x62\x78\x23\xfd\xfe\xf9\x83\x19\xab\x75\x89\x9f\x32\xa0\x71\x45\x98\x87\xca\xc7\xa3\x27\x3f\x7a\x8d\x73\xee\x7a\x02\x3f\x7b\xa2\x40\x91\x28\x33\x74\x36\x66\x71\x0c\x36\x64\xa3\xac\x42\x9a\x68\x41\x3b\x4e\x17\x30\xcc\x97\x2a\x43\xec\x34\x91\x62\xaa\x78\xcc\x82\x4a\xe0\x25\x4d\x05\x52\x56\x61\x7f\x93\x84\x65\xce\x04\x99\x91\x6f\x15\x17\x11\x0b\xcd\x92\x19\x89\x25\x53\xe2\x1b\x8d\x9a\x01\x15\x0b\x72\x2f\xe4\x63\xc2\xe2\x29\xec\x50\x75\x30\x07\x84\xb3\x1e\xe1\xda\x7f\x96\x41\x8e\xab\xcc\xf5\xd0\x8c\x1d\x02\x4b\x50\x04\x64\xf6\xdb\xa0\x7e\xa2\x6f\xe6\xfd\x21\x21\x67\x82\x4c\x68\xa4\x7b\xe5\xca\xcd\xb1\xc4\x82\x78\x0f\x4c\x84\x13\x2f\x1a\x79\xb2\x60\xd6\xc6\xe0\xd5\x0a\xb5\xb9\xf3\x66\x08\xa0\x9f\x70\xba\x55\x68\xca\x03\xdd\x06\x99\xef\x53\xae\xac\x0f\x13\xd1\x5c\x71\xbc\x16\xfe\xc2\x43\x12\x43\x59\x30\x8c\xd6\x5c\x52\xf3\x9d\x56\xa6\xb2\xee\x58\x8a\x38\x22\x5b\x8d\xcc\xda\x79\xa1\x5d\x5c\xee\x58\x3e\x0a\xa5\x33\x46\x53\x6b\x5b\x33\xcc\x1b\x7c\xd0\x18\x45\x64\x46\xcf\x33\xbc\xb4\xd7\xd9\xe2\x73\x2e\xee\xcd\xee\x16\x20\xcc\x50\xdd\x11\x7a\x6e\xd8\xb4\x1f\xb8\xa0\xa5\x08\xf9\x0d\x76\x6d\x09\xc6\xf0\x72\xcf\xc4\x78\xd1\x86\x7f\xad\xe9\x2a\x48\xea\x35\x34\x71\xa2\xa0\xa4\x25\x19\x43\xc5\x65\xc3\xea\x1c\x0c\xac\xa6\x60\x0d\x9b\xb1\x64\x1e\x54\x85\x9b\xd3\x4c\x2b\x47\x40\x08\xc6\x68\xb8\x43\x9a\x0b\xcc\xc4\x47\x0d\xf1\xd1\x62\xee\x59\x43\x68\xd1\xf8\xe1\x50\x9c\xe9\x6f\x94\x39\x5f\x52\x4c\x93\x05\xa1\xf1\x03\x57\x05\x20\x76\x24\x85\xca\x53\x96\x55\xaa\xad\x62\x94\x0c\xa1\x8e\x56\xcc\xd8\x2c\x28\x2d\x8f\x5d\xf5\x6f\xf3\xe3\x98\x4d\xcc\xbd\x37\xa7\x99\x72\x2e\x95\x06\x77\x88\xdd\xdc\xd8\xac\xd5\x8b\x9d\xc9\x9f\xc3\x63\x87\x98\xcd\x78\x42\xa9\xd5\x5d\x8e\xaa\xe7\x53\x16\x25\xf2\xdb\x22\x94\x6b\x93\x22\xcb\x2f\x26\xbb\x0a\xa7\xab\xa0\x22\x1c\x5c\x51\x8e\xee\x6f\xd3\x8f\x93\x81\x70\x70\x6b\x99\x7f\x2a\x13\xb4\xa3\x46\x1b\x5a\x78\x36\x19\x87\x4b\x41\x69\xaa\x79\x64\xc5\x2d\x99\x59\xf6\x64\xd9\x57\xfb\xd6\x9e\x6e\x09\x8d\xaa\x22\x9a\xd4\x77\x78\x89\xc5\x1d\xdf\x5f\xce\xfb\xec\x71\xc3\xb6\x97\x46\x9b\x47\x32\x49\xd6\x01\xba\xad\xcc\xfc\xa4\xf8\x7c\xf9\x88\x8a\x7e\xcc\x06\xb8\xbd\x80\x53\x83\x7e\x0b\x9a\x58\xc9\x42\x69\xbb\x4b\xe1\x4b\xc8\x43\x17\xd6\x2f\x32\x14\x72\x02\x50\xc8\x49\x9b\x47\x63\x9e\xc9\x94\xaf\x03\x61\x85\x46\xfe\x6b\x17\x81\xb4\xc2\xf7\xec\xe2\x94\xa0\x6a\x2f\x92\x97\xed\x11\x62\x55\xa9\x40\x39\x63\xc9\x19\x4a\xe9\x7c\xa3\x05\x5f\xa5\x25\xf7\x49\x8a\x26\x0a\xbb\x7a\x0a\x4b\x43\xdf\xb3\x05\x20\xdc\x24\x8f\x74\x51\xc4\xe4\xb7\x81\x13\x89\xb5\xc8\xe1\xce\xbc\x7e\x26\x26\x72\x8d\xc3\x59\xc4\xd0\xdb\xd3\x47\x1d\xcd\x06\xe7\xcf\xc7\x83\xe1\xee\xe3\x9a\x76\x39\x8f\x27\x4d\x44\xbd\xf6\xc9\x74\x2b\xf8\x94\x22\x7b\xc8\x44\x42\x69\x7d\x9d\xbb\xb5\x7c\xb4\x82\x16\x09\x0c\x67\xf9\x52\x7d\x2a\xd1\xe1\xce\xd7\xa8\xd2\x0e\x41\xcd\xd0\x05\x12\x5c\x35\xb7\xfa\x0c\x6b\x66\x0f\x49\xa7\xc5\xda\x32\x69\x68\x3d\x90\x25\xd7\xa3\x87\x56\x6a\x3e\xa1\x2b\x11\x24\xd7\xd1\x48\x26\x46\x12\xb2\x25\xc8\xbd\x57\xd2\x86\x67\x4e\x78\xc2\xd4\x21\x39\x6b\xd0\x4e\x5c\x70\x24\xc8\x68\x00\x40\x09\x61\x22\x4e\x7a\xca\x33\x1e\x14\x01\x72\x32\x12\xe1\x00\x52\x1c\xda\x3c\x32\x66\xc6\x1c\xa1\xcf\x45\x22\xa2\x12\x44\x66\x64\x1c\xeb\xd4\x1b\x61\x55\x83\xf9\xce\xf0\x02\x6e\xd3\x68\x63\x36\x67\x22\xf6\x1f\x48\xf4\x97\x51\x5b\xe7\xac\x18\x55\xcb\x96\xee\x02\xd6\xbc\x7b\xec\xa9\xeb\xf5\xd6\x7c\x51\xdf\x9b\xc6\x11\xde\x96\x5b\x5f\x7b\x74\x5e\xca\x5f\xdf\x81\xf4\x01\x3e\x75\xd6\x2c\x4a\x26\x19\x03\x83\x67\xea\x93\xb9\x44\xcc\x32\xa5\xa5\x84\xfb\xee\xe6\xf4\xa7\xa3\xbb\x33\xc2\x74\x04\x65\x9c\x87\x22\x52\x0f\x3d\x23\x1e\xff\x2d\x67\xda\xfc\xdc\x12\xec\xcc\x53\x26\x14\x70\x02\xae\x6b\x39\xc2\xcd\x0b\xe9\x16\xc6\xfc\xf7\xb4\xfc\xfd\x12\x92\xaf\x85\xce\x03\xed\x3a\xcc\x6b\x20\x53\xc0\x4b\xb5\x45\x3b\x1a\x28\x06\xdd\xb7\x83\xa6\xca\x49\x1b\x84\xca\x89\xbf\xe6\x62\x4d\xa1\xeb\xa4\xf8\x28\x18\x45\x8b\x4c\x97\xce\x29\x00\x8a\xad\x17\x83\x87\xdf\x34\xb6\xbe\x8a\x89\x14\x29\x09\xd6\xd1\x4d\x8a\x22\x53\x44\x67\x8c\x01\x0b\xf1\xf4\x64\xef\x7a\x9b\x02\xe6\x27\x16\x7c\x74\x38\x14\x9f\x9c\x01\xb6\xf8\x55\xb9\x26\x30\xae\xd3\xe3\xac\x95\x5b\x81\x66\x63\xae\xfc\x0f\x80\x96\xab\xf2\x44\x63\xdd\x83\x09\x17\x34\xf1\x03\xc5\x27\x4d\x5c\x22\xa3\x22\x9a\x5d\xc8\x78\x3b\xe0\xa8\xc9\x88\x25\xeb\x48\xa2\x67\x93\x41\xa2\x0c\x7d\x47\xf7\x2d\xa7\x73\x93\xca\x1e\xc5\x64\x82\x2a\x36\x14\xa3\x8a\xac\xd5\x2f\xc1\x2a\x0a\x8c\x80\xc9\xae\x1a\x39\x89\xc9\x51\x66\x17\xad\xa4\x8e\x16\x3b\x0c\x59\xf2\xe1\x08\xd0\x0b\xa1\x7a\x28\xb2\x5c\x00\x92\xa7\x37\xe0\x53\xa2\x58\xc6\xd1\x92\x1e\x49\x81\x32\x80\x35\xc5\x4c\x0d\x9b\x30\x92\x1f\x78\x71\xa4\x00\xfd\x4c\xe6\x0a\xa2\x9f\x52\xa6\xcd\x05\xf5\x2d\xd4\x0c\x43\x17\x4a\x8f\xcc\x33\x9e\x72\xcd\x1f\x98\x7a\xdf\xb0\x75\x27\x54\xd3\x44\x4e\xfb\x99\xe6\x13\x1a\xe9\x5b\xba\x95\x06\x4e\x6d\x33\x9b\xba\xe3\xdd\x30\xc8\xd9\xa9\x59\xfc\x29\x13\x90\xb1\x1c\x83\x4e\xde\x7c\x84\xe1\xc9\x46\x9c\x1b\x6a\x17\x44\x88\xf6\xae\xbc\xc5\x82\xe6\x5a\xa6\x46\xbf\xa5\x49\xb2\x00\x14\x77\xf3\x64\x46\xd5\xcc\x6d\x34\x42\xbf\x77\xb9\x9b\xec\xe2\x9e\xd0\x68\xc6\x6e\x34\xd5\x79\xa3\xc9\x71\x75\x99\xa2\x93\xfe\xc9\x8f\x83\xd1\xe9\xd9\x4d\xff\x87\xf3\xc1\x69\x30\x1f\xfb\xe4\xd3\xd9\xcd\x4d\xfd\xd7\x1f\xcf\x6e\xeb\x3f\x5e\x5d\x5e\xdd\x9d\xf7\x6f\x9b\x5a\x39\xbf\xbc\xfc\xe9\xee\x6a\xf4\xa1\x7f\x76\x7e\x77\x3d\x68\xf8\xf4\xee\xd6\x3f\xb4\xcf\x1a\x2b\x1d\xb5\x8c\xb6\x7a\xce\x0e\x48\xf9\xc5\x63\x72\x57\x85\x91\xb4\x21\x18\x98\xaa\xf5\x48\x95\x61\x55\x74\x9c\xb0\x78\x28\x88\xfb\xdc\xcc\xbd\xed\x53\x74\x52\x45\x33\x46\x12\x29\xef\xf3\xb9\xe5\x60\x18\xef\x2d\x6c\x65\x2f\xa6\x82\xd6\x7e\x3c\xbb\x3d\xae\xc3\x59\xfa\xc6\x82\x8c\x6c\x47\xea\x30\x2e\xea\xb8\x26\x98\x4c\xe6\x19\x7b\x80\x33\xe9\x7d\x95\x41\x0f\x7e\x03\x96\xf5\x83\xad\x51\xa1\x2b\xdd\xc4\xb1\xad\x03\xe7\x26\x16\x34\x5c\xde\xbe\x65\xab\xe9\x97\x03\xf1\xbb\xc9\x98\x45\x34\x47\x57\x9e\xb9\x8e\xb2\x4c\x66\xe1\x80\x8b\x6d\xdf\xb2\xd1\x77\x75\x29\xa3\x5c\xe9\x47\xc1\x19\x31\x9f\x04\x27\xc7\x68\xdf\xa0\x99\x3b\xec\xd8\x99\xc5\xf8\xe6\x0a\xbd\x0d\x85\xff\x05\x60\xd1\x0c\xe7\xf6\x18\x9f\x1c\x7c\x83\x54\x93\x47\x06\x41\xff\xb9\x05\xcf\x46\x0d\xd9\x9c\x40\xe8\x0e\xad\xda\xae\x62\x43\x29\x19\xa0\x95\x65\xee\x42\x2c\x36\xdf\x2b\xd6\xc4\x2e\xb7\x88\xdc\x3e\xc5\x46\x81\x87\x3a\x47\x2d\x8c\xb8\xc5\x7f\xe0\x78\x76\x83\x1d\x7b\x89\x14\x54\xbf\x37\x56\xb0\x74\xc3\x5c\xbb\x8c\xc7\x65\xab\x95\xe0\xe2\xba\x0f\xac\x04\x29\xb6\x72\xad\x6e\x65\x4c\x17\x86\x38\x20\x42\x42\xe5\xf3\xb9\xcc\x34\x69\x69\x03\xa3\xfd\x70\x7c\x70\x33\xd8\x79\x78\x16\x05\x8d\x18\x39\x40\x35\x20\xba\x76\x4b\xe0\xb1\xeb\x5a\x9c\xfb\x10\x09\x00\xd4\x35\x0f\xfb\x91\x96\x14\xdf\x12\x85\x36\x89\xa8\xdb\xc4\x45\xad\x55\x46\xb0\x6d\x04\x0d\x15\x05\xc3\xc8\x5c\x36\xd1\xa3\x46\xff\xcc\x12\x53\xa4\x69\x51\xb4\xe5\x3d\xf2\xe9\x6c\x07\x2d\x76\x97\xe7\xff\x60\xfd\x67\x46\x88\x0f\x74\xf9\x4c\x4a\x8d\x92\x64\xa1\x6d\x78\x5c\x18\x30\x04\xd8\x4e\x11\x23\xa6\x10\xd7\x8c\x74\x7e\x2f\xe4\xa3\xf0\x36\x78\x75\x38\x14\x03\x0a\x35\xbd\xbc\xca\x60\x43\x20\x50\x5e\x5f\x29\xa9\x2f\xdd\x97\x8d\x64\x93\xc1\x5f\x42\x49\xe1\xa2\xfc\xcf\x8f\xb7\xe5\x7f\x95\xa4\x8a\xf3\xdb\xf2\xbf\x96\x4b\x15\x41\xc3\x75\x49\xe2\xe3\xed\x31\xf9\x08\x99\x11\x19\xb9\x9d\x51\xbc\x6f\xcf\x6f\x8f\xc9\x39\x53\x0a\x7e\x69\xb8\x7b\xd0\x9d\x48\xdc\xf4\x0b\xcc\x67\x56\xd1\xeb\xaa\x0b\xe8\x6b\x2c\x3d\x6b\x9c\x46\x3b\xe8\x54\xc1\x3c\x6c\x19\xd9\xc4\x17\x0b\x65\x31\x29\x7d\xd7\x85\x05\xa1\x81\xdf\x49\xbb\x38\x61\x8b\x85\xa4\xd9\xdc\x3a\x21\x70\x9e\x45\x8a\x10\xf8\xb1\x4d\x57\x87\xe4\xb3\x33\x72\x41\xc8\x4b\x51\xff\x4d\xe3\xb5\x9d\xd0\x85\x03\x5e\x69\x5a\xd8\x5d\x60\x99\xec\x3a\x08\x66\xf9\x02\xfb\xbc\xed\x86\x55\x2e\xd9\x1a\x84\x40\xe3\xf3\x1a\x11\x7f\x27\xfe\xa3\x1b\xb6\x3c\x24\xf8\x03\x94\x73\x41\x44\x73\x10\x73\xcc\x65\xf4\x3f\x70\xb3\x30\xe0\xdc\x01\xb5\xdb\xf2\x1a\xd6\x59\x6c\x18\x10\x38\x3b\x31\x1e\x9d\x4c\x78\x92\x80\x30\x75\x48\xfa\x50\x0d\x0d\xea\x5c\x19\x79\xc2\x05\x56\xf1\xa9\x90\xab\x62\x39\x5a\x88\x29\x0a\x88\xe9\xa6\x9d\x98\x14\x50\x53\x91\xae\xb3\x1b\x8a\xda\x41\xea\xa6\x61\xce\xb4\x0e\xd2\xd7\x3d\x61\x73\x0d\x3b\xc5\x4b\xc4\x45\xd5\x86\x1b\x7c\xf8\xcf\xe6\xa1\x7f\xcc\x69\x46\x85\x86\x68\x1f\xab\xbe\x64\x2c\x88\x3a\x65\x5f\x20\x9e\x4e\xa0\xcd\x1b\x7e\x0a\x37\xd7\x45\x37\x4c\xf9\x03\x13\x84\xc7\x3d\xc2\x0f\xd9\x61\xcf\x16\x36\x57\xf9\xb8\x78\x73\x66\xc4\xaf\xa1\xa8\xa5\x21\x1e\x92\x7e\xa2\xa4\xfd\x82\x89\x28\x81\xea\x83\x41\x60\x92\xa7\x7c\xeb\x41\x1b\x2f\x40\x49\x83\xad\x2c\x9a\x97\xf6\x41\xf0\xe1\x50\x50\x85\xee\xff\x04\x4e\x7a\xf1\x7b\x53\x85\xd1\x52\x48\xc8\x13\x22\xcc\xd6\xae\xa1\x27\xdb\x24\x2c\x3d\xb1\x6c\x83\xe0\x0d\xd8\x98\x22\x3d\x34\x48\xb4\x24\xdf\x52\x4d\x12\x46\x95\x26\xdf\xbf\x5f\x2b\x0c\xc6\x4d\xb0\xe0\xae\xf6\xf8\x16\x31\xc2\x2e\xc8\xb0\xad\x58\x3a\x94\x06\x22\x94\x08\x16\x24\x2c\xf4\xcc\x3e\x6b\x49\x1e\xb8\xca\xa1\xa0\x63\x90\xd6\x80\x25\xf9\x30\x01\x07\xe2\x34\x51\xef\x6c\xe1\x23\x0e\x52\xcc\x7a\x8a\x8b\xfa\xde\x55\xca\xb2\x1a\x28\x47\x1d\x17\x32\xef\x8b\x70\xbf\x19\xd5\x43\x61\x39\xab\x8b\x90\x09\x8a\x6f\xf5\x93\xa4\x1c\x62\x47\x21\x8a\x54\x98\x09\x43\x39\xca\x43\xbf\x40\x17\xa0\xc3\xfa\xa8\xac\x72\x81\x7a\x7f\x58\x8c\xba\x3b\x14\x3e\xad\x39\x6c\xbb\x51\x5c\x6c\x32\xa5\x3f\x9b\x26\xd1\xd8\xfd\x39\xd6\x05\xed\xa0\x4d\xb0\xa6\x21\xaf\x38\x58\x75\xf7\xc5\x12\xe5\x62\xd7\x1d\x74\xd7\x35\x9a\x5d\x01\x70\xcd\x3e\xca\x06\xcf\x42\xcb\xe6\x06\xb2\xc5\x36\x56\x0c\x1f\x1e\xf8\x5c\xce\xed\xd2\xd0\xcf\x62\x08\xf7\x5f\xcd\x05\x8b\xf0\x79\xc7\x3a\xc0\xa6\xcf\xe3\x20\x9a\x37\x08\x75\x84\x68\x6f\xc7\xf8\xec\x9b\x2d\x4e\xe6\xf9\xdb\x9e\x7e\xaf\x98\xbf\x9b\x8a\x8f\xf7\xab\x4f\xbc\x5d\xd8\xeb\xc7\x7f\xa5\x11\x13\xd1\x02\x7b\x72\xe9\x99\xf5\xbc\x6b\x87\x56\x47\xc1\x6f\xd1\x28\x1e\xda\x12\xbf\x87\x64\x00\x17\x8d\xab\xf8\x4b\x27\xce\xf7\x12\xbc\x3c\x14\x46\x33\x71\x69\x9a\x41\xfb\x65\x12\x6f\x3a\x01\x88\xf9\xb0\x95\xdb\x2a\x5d\x0d\x9b\xdc\xa6\x4d\x38\xc8\x09\x68\x03\xa0\x43\xc9\x60\x7a\x4c\x62\x19\xdd\xb3\xec\x28\x63\x31\x57\xc7\x10\x46\xa0\x5b\xfd\x97\x29\x15\xad\xbe\x96\xdd\x57\xdf\xaf\xd7\xca\x4d\xa1\x8c\x2d\xc4\x79\xbb\x02\x55\x3d\xc2\x27\xa0\x4e\xb8\x94\x0f\xcc\x03\x71\x59\xad\x4c\xe8\x6c\x31\x97\x5c\x68\x6f\x0f\xac\x2c\x84\xd3\x34\x8c\xd0\xd6\x16\xf5\x9c\xed\x22\xdc\x68\xc3\x69\xdf\xce\x98\x62\x2e\xb6\x02\x27\xa5\x25\x41\x87\x12\xb2\x8b\x39\xd5\x33\x05\x49\x2b\xe5\x35\xb0\x4a\x17\x7c\x6a\x56\x88\xce\x21\x34\x03\xcd\x3c\xc5\x47\x3e\xb5\x42\x69\x9e\x24\x43\x21\x18\x8b\x15\x81\xfc\x92\x6f\x1a\x93\xa3\xcc\xa7\x3d\x42\xe3\x98\xfc\xcf\x6f\x3f\x9c\xff\x72\x3b\x18\x9d\x5d\x80\xe1\xfe\xec\x7c\xf0\xbe\xe7\x7f\xbc\xbc\xbb\xf5\xbf\xa2\x89\xea\x81\x65\x24\xa5\xf7\xa0\xe2\x09\x85\xf2\x1f\x24\x20\x84\x23\x75\x69\x63\xe6\x89\x62\x2e\xa8\xd7\x8a\x29\x1e\x29\xc5\xee\x61\x6b\xfd\x39\x34\x9c\xae\xa1\xfc\x5e\xfb\x4f\x96\xd3\xa0\x23\x1e\xdf\x85\x13\x03\x53\x26\xb4\xe1\x31\xd6\x64\x5a\xe8\xbe\x05\xc1\x31\x31\xe5\xa2\x2d\xf4\x90\x89\x87\xa7\x14\xe2\x7f\x62\x8b\x9f\x8d\x7a\x7d\x45\x79\x77\x70\xea\x81\x78\xe0\x99\x14\x30\x35\x6f\x17\xf4\x27\xc6\xe8\xe9\x54\x55\x0f\x95\x42\x59\x18\xc2\x51\xe6\xad\xe1\xad\x4d\x78\x0f\x2f\x3e\x5d\x9b\xe9\xcf\xbe\xe8\xcc\x25\x28\x7a\xb0\x82\x07\xca\x13\x08\x4d\x76\x17\x4d\x41\x83\x43\x71\x7b\x79\x7a\x79\x4c\x58\x42\xc7\xd2\x81\x5e\xcf\x00\xe6\x0a\x9b\xb0\x0b\x06\x95\xdf\x7d\x43\xa5\xe4\xd4\x1e\x99\x17\xc9\xa9\xa1\x11\xed\x10\xdb\x58\x55\x18\x56\x66\xf5\xd4\xce\xdd\xaa\x80\x76\xb2\x57\x32\xeb\x72\xfd\x9b\xd7\x60\xe9\xe4\xdc\x28\x72\x15\xce\x6b\xef\xe6\x09\xa3\x58\x93\x11\x7d\x6b\xd6\x21\x62\x63\x75\x93\xa4\x54\xe2\xc5\x1c\x1c\x75\x68\xa3\x0d\x8a\x37\xa5\x20\x3f\xfd\x59\x91\x71\xae\x87\xa2\xdc\x86\x14\xa4\xff\xf9\x86\xfc\x40\x75\x34\x7b\x3f\x14\x97\x46\xcd\xfc\xe9\xcf\x2d\x59\xf4\x6b\x83\x90\x98\x35\x39\xa5\x9a\x9e\x4b\x1a\x73\x31\x6d\x42\x20\x29\x4c\xbf\x83\xdb\xfe\x31\xb9\xb4\x3a\xbc\x4f\x7c\x2d\x50\x83\x82\x86\x80\x21\xc3\x44\x1c\x17\x01\x56\x2e\xca\x28\x0d\xa8\x99\xc1\x85\x35\x14\xb7\x08\xbd\x62\xb8\x2a\xd7\x64\x2e\x2d\x4e\xb8\xd1\xca\x10\x94\x06\x7d\x01\xd6\x92\x68\x56\x07\xc8\xd8\x6f\x86\x95\xc7\x40\x9e\xa9\x33\xfb\xa1\x00\x05\xdd\x27\x23\x26\x32\xa2\x09\x84\x1f\x1e\x04\x36\x3d\xa3\xb6\xcb\x1c\x32\xc3\x20\xee\x47\x2c\xca\x51\xc2\x3e\x59\xd1\x0b\x65\xe1\x46\x81\x01\x00\xf6\xd1\x7a\xa4\x53\x69\x38\xce\xe1\x50\x9c\x4d\x30\x3a\x31\xc1\xd5\x31\x1f\x32\x01\x4e\x79\xb7\x2c\xe6\xa9\xe3\x47\x50\xab\x16\x7d\xb3\x34\x02\xff\x87\x58\x40\xa4\x3a\x60\x0b\x4b\x88\x72\x29\xb8\xb3\x25\xca\xda\x2e\xfa\x3b\x31\xf8\x6c\x28\x30\x28\xb2\xb4\x2f\x61\xe2\x76\xd0\xbb\x14\x10\xb3\x59\x5c\x97\x5e\xc0\x98\xdb\x18\x4e\x2b\xeb\xcf\x33\x76\x10\x33\xcd\xb2\x14\xec\x3d\xe1\x9a\x9a\x1b\xf6\x90\x5c\x87\xea\x75\x2c\xa3\x3c\x75\x00\x6a\x90\x41\x67\x83\xfd\xec\x25\xea\x29\x04\x2f\xf6\x55\x14\x4f\xb3\x68\xc6\x35\x83\x34\xb7\xce\xfa\x31\x12\x4c\x3f\xfc\xb4\x2e\xa9\xb7\x0b\xbe\xc0\x3b\xb6\x0b\xd0\xc3\x86\x46\xf3\x72\x4b\xa5\xd6\x56\xe3\x3f\xad\x00\xe3\xbf\x28\x40\x9e\x64\x06\xc2\x16\xfb\x32\x97\x60\xe4\xc6\x2c\x4a\x19\x7f\xa3\xc8\xd9\x95\x91\x80\x8c\xc6\xeb\xcf\x60\xae\x34\xc6\xd1\x61\x39\x06\xf8\x1a\x33\x23\x7a\xe4\x3b\x2c\x22\x1a\x91\x2f\xee\x8f\x3f\xfd\xfb\xbf\xff\xf1\x4f\x9b\xd4\x64\x80\x76\x8b\x35\xf2\x90\xed\x65\x91\x28\xdc\x81\x3a\xa7\xda\x62\x17\xec\x01\x6c\x5b\xfe\x4d\x00\x77\x82\x30\x29\x3a\xb5\x27\x5c\x85\x27\x93\x94\x8e\x66\x11\x8e\xa1\x98\xee\x95\x39\x84\x17\x76\xad\x44\xff\x3f\x96\xe0\x54\x8c\xcc\x51\xd9\x2c\x9c\x8b\x27\x5e\xbc\x36\x8d\x90\x6f\xad\xfd\x4f\x83\x07\xf6\xbd\xbb\xe0\x64\x12\xb3\xcc\x16\x20\x76\x26\x3b\x6f\x48\x04\xe6\xc0\xbe\xcc\x13\x19\x3b\x14\x24\xc5\xe6\x14\x04\x08\xc3\x0c\x0e\x87\x62\xe0\xea\xd1\xda\x6a\xf8\xf0\x11\x7a\x5e\x26\x34\x42\xf0\x1f\x45\xbe\xfd\x72\x6c\x7e\xeb\x91\xc5\x31\xc4\xcb\xf6\xc8\xdf\x8f\x6d\x9e\x3c\xcd\xf4\xc8\xfc\xf4\xde\xc9\xda\xb6\x09\x18\x34\x57\x64\xf8\xee\xe8\x81\x66\x58\xc7\xee\xc8\x22\xb4\xbf\xb3\xbc\xd5\x57\x9f\x08\xa5\xf3\x44\xca\x7b\x1b\x4d\x5c\xfb\xf2\xc8\xa1\x6e\x00\x81\x7b\xcf\x09\x6e\xbe\x0d\x0c\x37\x92\xe4\x81\xad\xa7\x7b\x38\x1f\x93\xc3\xbf\x2a\x29\xc8\xe1\x82\xa6\x89\xfd\xd5\x3d\xb5\xc1\xce\x54\x11\x57\x51\xd9\x85\x3a\x25\x0b\xb4\x95\xfe\x90\xc8\x31\xcc\xeb\x93\x9b\x2b\x86\x0b\xc3\x40\x8b\xfb\xa7\xb8\xb2\xec\x44\xac\x2c\x85\xd8\x01\xa9\xd4\xf8\x0a\x70\xb9\xa6\x59\x7d\xf1\x43\xfa\x2f\x74\xad\xc3\xa2\xb8\x8c\x45\x34\x0f\xfb\x50\x3d\xd3\xe8\x17\xf2\xad\x65\x42\xef\xcd\x2d\x63\x63\xb3\x71\x19\x9a\x3a\x58\xf8\x0e\x7e\x09\x3a\xe0\x82\x58\xa7\x71\xfb\x97\x7f\x3f\x3a\x3c\x3c\xf4\x5f\x5f\x98\xa9\xfc\xff\x84\x6b\xc5\x92\x09\xb6\xe4\xee\xb0\xc5\x50\x7c\x72\x08\xab\xce\x7c\x5d\xe0\xf9\x40\x25\xe4\x48\x26\xe4\xa0\x30\xe9\xc6\x32\x52\xe4\x77\x46\xb0\x0d\x96\x12\x7e\x34\x9a\x5c\xf3\xa9\xb2\x90\x6e\xcf\x74\xac\xac\x49\xbc\x7a\xb0\x42\x08\x0f\xaf\xda\x52\x15\xc2\xf5\x02\x2d\x18\xca\x39\xb2\x30\x1f\x59\x66\x5e\x66\x5f\x34\x3c\x6a\x41\x51\x69\x8c\xdb\x6f\xbe\x2b\x6b\x0c\xb7\x00\x53\x41\xb2\x6e\x59\x00\x8b\x75\x61\x79\x03\xce\xb3\x17\x3a\x50\xcc\xf5\x22\x42\xcc\x4f\x95\xa7\x29\xcd\x16\x47\xc5\x69\xab\x13\x67\x01\xe0\x0d\x5c\x26\x71\x0b\x00\x4e\xdc\xc4\x1e\x2d\x1b\x08\x62\x05\x4c\x77\xa7\xf9\xb3\x1b\x41\xc5\x10\x08\x4b\xc4\x7a\x39\x4c\x44\x32\xb6\x74\x5d\xa4\xda\x96\x65\x16\xff\x4e\x5d\x5a\x71\x81\x45\xaa\x30\xc7\x09\x8d\xf9\xf7\xf6\x0d\xf7\x71\x0b\x03\x97\x23\x28\xd5\xc5\xa6\x6b\x38\x48\xcf\x2e\x6f\xdc\x37\xdd\xaf\x5d\x58\x87\xb2\xd0\x4e\x9d\x9e\xe8\x6c\x12\x19\x7d\x2c\x2e\x60\x08\x8f\x41\xfb\x4c\xee\x13\x91\xf1\xdf\x27\xf2\x8a\x27\xe6\xde\x02\x1a\x3f\x1c\x8a\xd2\xcf\x3d\xc2\x12\x9e\x72\xe1\x43\x14\x91\xbd\xcb\x09\xca\xcf\xf7\x5c\x9b\x2d\x53\xf1\xbd\xe1\x60\x0e\xd3\x21\x50\xaa\xfa\x62\xe1\x48\xc7\xbb\xa6\xac\x0d\x22\x57\x66\x5c\x85\x96\x6e\xc4\x59\xd3\xc4\x81\x15\x49\x79\x40\x78\x70\x7e\x87\xc2\xb4\xe6\xce\x52\x11\x1b\x1d\xb4\x17\x34\x77\xe0\x90\x2f\x03\x0e\x00\x7d\x94\x02\x9c\xbd\x04\xdc\x20\xa2\x0c\x44\x9e\x6e\x9b\x59\x63\x63\xa5\x5f\xca\x50\x77\x55\xd4\xfe\xb7\x59\x5a\x4c\xe4\xa9\x3b\x50\x6b\x50\xdc\xc0\x0a\x40\x31\x8b\x12\x0a\x77\x07\x34\x04\x01\xa4\x3d\x74\x91\xce\x83\xbe\xf0\x7a\xc1\x6e\x10\x4c\x3b\x61\xe2\x5b\xfc\xf7\x7b\x5f\xbb\xbe\x67\xef\xf3\x4c\x39\xa8\x3f\xbb\xe7\x50\x8c\x85\xc5\x68\x45\x07\x48\xba\x29\xcd\x62\xb4\x97\x87\x7a\x05\xa6\x2b\x1b\x09\x6c\x21\x73\xf2\xc8\xd5\x6c\x28\x6e\xa5\x33\x39\x12\x21\x3d\xa8\x5f\x0f\xd4\xd1\x5a\x7f\x54\x01\x13\x80\x51\x37\x51\x00\x44\xed\x6e\x93\x58\x05\xb1\xc0\x23\x21\x63\xb6\x66\x4a\x40\xdd\xe2\xea\x3c\x11\xce\x83\x9d\x31\x4c\x7e\x83\x9b\xa2\x2d\x77\x18\x8b\xf2\x6f\xd1\x31\x2c\x81\x2b\xee\x0f\x85\xb7\x1e\xc5\xa6\x28\x26\xfe\x56\x83\x56\x9c\xce\x19\xa4\x3e\x97\xd6\xde\x43\xe5\x6d\xbb\x09\x51\x39\x2f\x67\xe5\x0a\xf8\xab\x0f\xe7\x1e\xc1\xb2\xfb\x38\x6d\x4a\xa6\x99\xcc\xe7\x1e\x1f\xc0\xe5\x36\xe2\x36\x58\x99\xe6\x4c\x4c\xe4\xb1\xd5\xaa\xce\xb9\xb8\x47\x8a\x7f\xaa\x3d\x42\x34\x44\x16\x93\xe0\x77\x77\x87\xe1\x8a\x1f\x10\x2e\xa2\x24\x87\x8b\x4f\x69\x1a\xdd\x23\xa2\x63\x9b\xd9\xd7\x7c\x33\x5a\x9d\x39\xda\x22\x31\xe5\x49\x62\xbb\x2d\x2e\xd0\xa2\x58\xdc\x03\xa7\x84\x92\xbb\xeb\xb3\xe6\xbe\xef\x79\xdd\x9d\xd3\x7c\x7b\x96\x09\x04\xfe\xe7\x27\xbe\x56\xe8\x6a\x05\x3b\x9b\x95\x48\xdd\x9b\x97\xda\x00\xd7\x2a\xb7\xf7\x96\xfe\x63\x73\x0b\x8d\xd2\x06\x4a\x6d\x9e\x7c\xd1\xf1\xa9\xfd\xf8\x93\xf9\xb6\x79\x47\x3e\x41\xe6\x96\x07\xcb\x48\xa9\x30\x13\x74\xbd\xb6\x58\x63\xf0\x62\xdc\x68\x48\x77\xf3\x8d\x06\x84\x3d\x76\xac\xf3\x60\xbb\x72\xad\x3c\xa2\x41\x92\x26\xa8\x70\xeb\x19\x68\x62\x05\x3e\xb2\xd9\xd8\xb2\x46\x86\x58\xca\x09\xcd\xa6\x28\x27\x2a\xa6\xd5\xfb\x86\x1d\x2e\x22\xe8\xb7\xd8\xe1\x0d\x6a\xd0\x84\x0e\x20\x90\x42\x96\x71\x00\x3f\xca\x32\x1a\x94\x67\x4e\xbe\x9a\x93\xbd\x3b\xb8\x0a\x61\xec\x23\x99\x65\x80\x5a\x18\x1b\x69\xbc\x1d\x27\x63\xcb\x5a\x64\x17\x34\xf5\x59\xe0\xae\x22\x92\x4d\xf6\xc1\xc1\x8d\x19\x40\x83\xb5\x8f\x61\xeb\xa2\x63\xe1\x10\x6c\x11\x90\xb6\x11\x0c\x45\xdf\xbd\xe2\x33\x49\x41\xc4\xcd\x50\x0e\x81\x40\x39\x0c\x0b\x05\x31\x93\x16\xab\x6e\x27\xd7\x32\x89\x75\x13\xf6\xaa\x75\xd3\x8c\x98\xeb\xb1\x04\x2d\x42\xb2\xd5\x77\x56\xa0\x53\x3f\xac\x5f\x56\xb2\x19\x8c\x23\xaa\x96\xfd\x6b\xea\x78\xb5\x48\xe9\x50\x02\x6c\x43\x61\xa5\x41\x0c\xa6\x4b\x16\x05\x99\x9a\x15\x47\xd5\xa4\xd2\x59\xfd\xb4\xea\xad\xb8\x31\xa7\xe9\x28\x93\xed\xf0\xdd\x1d\x96\xc9\x35\x51\x52\x73\x67\x08\xf1\xba\x20\x7f\xcb\x69\x82\xf6\x7e\x61\xc9\xd1\x0d\x1b\x24\x86\x3f\xfc\x89\xf4\xe1\xba\x24\x9f\x80\x2f\x82\xa7\x13\x5a\xd3\x92\xf0\x74\xce\x32\x25\x8d\x3e\xd6\xb2\xc9\xf7\x7f\x56\x23\x8b\xcf\x3c\xa2\x51\x24\xf3\x3a\x16\xf3\x1a\x33\x69\x68\x2d\x9c\x14\x25\xf7\xf9\x98\x65\x82\x21\x56\x3f\xbc\x47\xdc\x7b\x9d\x86\x2b\x69\xae\x67\x7f\x18\x45\x09\xef\x0c\x1a\x0d\x79\x2a\x7d\xf3\xd9\x09\x7e\xb5\x6c\x02\xa5\xf6\x4b\x43\x17\x04\x9f\x11\x7c\x76\x48\x7e\xa0\xd1\x3d\x13\x31\x99\x27\xf9\x94\xdb\x04\x72\xb8\xa1\x80\x5d\x06\x56\xaa\xf2\xc4\x50\xe5\xc5\xf6\xcd\x35\x34\x14\x29\xbd\x07\x0d\xe9\x8b\x8d\x46\x37\x9a\xe6\x5a\xda\x96\xa7\x87\x1a\x92\x86\xcb\x76\xf6\x75\x11\xf0\x7c\x68\x3c\x1f\x60\x57\x02\x6c\xba\x5c\x10\x0a\x60\x1c\xdf\x28\x92\xcf\x9d\xf1\x03\x0c\x1e\x09\x38\xa0\x70\x92\x50\xf0\x92\x1b\x71\x70\xc6\x86\x02\x82\xfa\x5c\x8b\x0b\xcf\x55\x42\x9f\xa7\xf7\xbd\x37\x1d\xbe\x09\xa6\xa2\x6f\xe7\x4e\x41\x33\xd2\xce\x03\x16\xf5\x8c\x09\xd0\xc3\xba\xb7\x0c\xf9\xfc\xdd\x37\xad\x14\x9c\x88\xb3\x28\x0c\x47\x7e\x09\x73\xc1\x2d\x4c\xb9\xb5\x15\x06\x71\x43\xce\xa4\x5e\x7c\xcf\x15\x51\x54\x73\x35\xe1\x8d\xfa\x69\x08\x00\xb0\xcd\xaa\xd3\xf5\x50\x07\x1a\x10\x07\x2a\x6b\xe1\x03\xa0\x0f\xc9\x07\x50\xb7\x8b\x29\x69\xe9\xf3\xf7\xdb\x58\x82\x9e\xb1\x56\x20\xbb\x5d\x44\x0e\xb8\x19\x74\xb5\xa2\xf8\x60\xf7\x43\xd2\x2f\xcc\x9c\x88\x60\x80\x06\xcc\x15\x33\x62\x89\x62\x9b\x10\x5f\x27\x8b\x00\x38\x03\x81\x80\x08\xc8\x2a\xca\xfc\x5e\x80\x6a\xfa\x61\x3e\x42\x42\x1e\xbd\x67\x62\x99\xda\xd7\x7d\x84\x83\x52\x4a\x73\xd3\x10\xfb\x5e\xe1\x97\xa8\xf3\x6f\x32\xc0\xee\xc7\xae\x00\x8d\xe0\x93\x23\xb3\xe4\x46\xd0\x8f\xee\x6d\x14\x3b\x9a\x7d\x2c\xec\xc4\xe3\x4c\xaa\xf0\x9c\xb9\xfd\x83\xcd\xd4\x59\xce\x5c\xb4\x3a\x64\x01\xf8\x05\x46\xf7\xbf\x90\x21\x2a\x05\x8c\xda\x1f\x52\x34\x69\xf9\xfd\x26\x8e\x85\xc2\x32\x80\xb9\xdc\x35\x55\x3f\xcd\x3f\xfd\x59\x5d\xc2\x89\xdd\x45\x66\x75\x73\xa1\x97\xed\x03\x72\x37\x34\x44\xfa\x50\x93\xa2\x4a\x0c\x8d\x7d\x2a\xff\x5c\xc6\xa4\x20\xaf\xf5\x4b\xc2\xbc\xfc\xb4\x2a\xa5\x64\x3a\xcd\x6d\x15\x65\x7f\x0a\xbc\x95\x58\xc6\x1d\x01\x6c\x02\x91\xcb\x26\x8e\x81\xf6\x6b\xaf\x7f\xae\xfc\x7d\xd2\x4c\x63\x57\x32\xde\x86\xb0\xd6\x07\x29\xab\xd3\x75\x87\x70\x46\xd5\x54\x45\x6e\xc9\x4a\xcc\x65\x7b\x20\x5a\x3c\xea\x5e\x77\x0d\xfc\x8e\xe3\x7c\x72\x03\x80\xcb\x6d\x08\x03\x0e\x1b\x6a\xc6\x7c\xb6\x8b\xd9\x67\xd3\x8d\x8f\xbd\x6e\xdb\x14\xeb\xc6\x2a\xae\x7f\x4a\xfe\xf7\xcd\xe5\xc5\x41\x4a\x33\x35\xa3\x90\x7c\xe8\xda\xea\xb9\xb2\x00\xa8\x80\x3a\xf3\x3a\x17\x64\x28\x0e\xc8\x54\xf6\xd0\x9b\x73\x4c\x66\x5a\xcf\xd5\xf1\xd1\xd1\x94\xeb\x59\x3e\x3e\x8c\x64\x7a\x54\xac\xcd\x11\x9d\xf3\xa3\x71\x22\xc7\x47\x19\x83\x88\xbe\x83\xef\x0f\xff\xf0\x3d\x6c\xcd\xd1\xc3\xf7\x47\x60\xc3\x3f\x9c\xca\xdf\x9d\xff\xe1\x3f\xfe\xf8\x27\xd3\xf0\x7c\xa1\x67\x52\x1c\x5b\x57\xd1\xd2\xb6\x0f\x50\xf0\x3d\xc2\x4f\x2a\xbd\xfc\xc7\xe1\x77\xe1\x30\xec\xab\xa9\x8c\x59\xa2\x8e\x1e\xbe\x1f\xb9\x9d\x39\x9c\xaf\xe3\xfc\x2a\x18\xbe\x5f\xf2\x4a\xd1\x41\xf3\xbb\x27\x19\x97\x7b\xb4\x6a\x5b\x1a\xce\x4a\x18\xaf\xb9\xc5\x89\xb9\x67\x35\x7f\xe0\x1a\x1a\x98\x97\xa4\x5a\x74\xfa\x75\x11\x9d\x5b\x65\x9b\xb5\xd2\xd3\xc0\xfb\xc6\x23\x40\x0b\x45\x1b\xc4\x9c\xf2\xa6\x38\x1f\xeb\x65\xde\x66\xfd\x9e\x12\xf7\x76\xd7\x80\xb7\x76\xba\x1b\x82\xdd\x26\xf8\xb5\xf3\x89\xcb\x47\x07\x72\xbb\x0b\x68\xd8\x8e\xc5\x53\x3c\xe2\x25\x12\x0f\x8c\xc5\x8d\xab\x65\x18\x33\xaa\x36\x0b\xae\xe8\x23\xae\x94\xcf\x7b\xf6\x65\xc7\x6c\x87\x8e\x57\xba\xfc\x55\xa8\xcc\x65\xb1\x46\xe6\x58\xd6\x56\x1d\x92\x0f\x95\xea\x12\x45\xc0\xc8\xf5\x87\x13\xf2\xfd\x9f\xff\xe3\x8f\x43\xf1\x6d\x03\x17\x03\x0f\xb6\xcc\xa6\x36\x7e\x05\x78\x57\x4a\x95\x66\xd9\x51\x36\x89\x8e\xd0\x21\x7e\x64\xbe\x3f\xb0\x9d\x1e\xc8\xc9\x81\xc7\xbd\x3c\xb0\x10\x80\x87\x69\xbc\x5e\x6a\x67\x89\xf4\x30\x7c\xc4\x86\x9e\x2a\x08\x53\x45\x14\x0d\x39\xf1\x08\xc7\x18\x61\x8c\x60\xe8\x72\xd2\xf0\x07\x14\x03\x7c\xef\xf1\x7b\xa8\x72\x7d\x14\x60\x1a\xed\x47\x73\x37\x10\xb8\x8e\x44\x9e\x52\x6f\x73\xbc\x24\x94\xce\xd6\x59\xf8\xe6\xc3\x56\x04\x00\x63\x26\xac\xad\x26\x87\x10\xa2\x52\x30\x39\x81\xe8\x09\x10\x0c\x9c\x77\x08\x8c\x43\x42\xea\x20\xeb\x35\x63\x73\xbc\x60\xc2\xea\x73\x0d\xcb\xbd\x25\x8c\xee\xaa\x75\x7e\x0a\x18\xdd\x6d\xd7\xdd\x32\x94\x17\x5a\xf0\x6d\x43\x38\xf0\x28\xad\x71\xfd\xc0\xfb\x2b\x5d\x36\x9e\x0f\x80\x8f\x26\x2c\xb6\x87\x30\x39\x10\xb6\xcd\x0e\xb4\x3c\x00\xb8\x00\x48\x42\x47\x60\xeb\xb6\xe2\x31\xe0\xea\x5a\xe7\x9a\x34\xef\x77\x18\x27\x86\xea\x7f\x09\x06\x6a\x65\x12\x5b\x5e\xd5\xba\xc2\xb9\x10\x2c\xb3\x46\xfc\x95\x37\xea\x9a\x8e\xb0\x70\x2b\x97\x7b\xc2\x0b\xc1\x3c\x04\x1d\xf6\x71\x90\x34\x60\x02\x87\x04\xe2\xd1\x67\x32\x95\x46\x9c\x91\xb9\x0a\x1e\x62\x3e\x03\x5c\xc2\xad\xb2\x57\x4a\xe7\x88\xaf\xf4\x72\xb3\x31\x47\xcb\x3c\x42\x1b\x47\xf8\xd2\x5a\x38\xee\xe3\x32\x72\xf5\x8a\xf1\x7b\xc8\xe1\xe5\x74\x03\x6e\xd6\x14\x6c\xca\x50\x9e\xc7\x02\x89\xf2\xbf\x1b\x15\xc6\x90\x94\xcf\x1d\xf0\x37\x37\x06\xe4\x22\x94\x58\x08\x36\x58\x29\x23\x5e\x1d\x3e\x13\x79\xba\xe6\x1e\xf8\xe0\xae\x2e\x1b\x40\x05\x86\x3b\xb9\x38\xa7\x83\xc6\x40\xa7\xb6\x73\xe9\x4a\xf7\xc4\x23\x07\x77\xb7\xde\x50\x6f\x7c\x03\x16\xd9\xae\x3e\xee\x02\xe8\x02\xa2\xe2\x70\x8d\x91\x21\x38\xd9\xa2\xc5\xcb\x2f\xd6\x3f\x8c\x80\xe2\xbf\xce\xda\x41\x27\x48\x9c\xb5\x15\x0c\xce\x42\xdb\x02\xae\x67\x71\x58\xa6\xc0\x37\x85\x51\x22\x36\x50\x11\x35\x6d\x46\x59\x53\x1e\xfd\x87\x0f\x45\xe5\xaf\xc5\x9c\xf5\xc8\x38\x87\xe7\x17\x97\xb7\xa1\x7b\x98\xe3\x6c\x0f\xa2\x19\x8b\xee\x21\x85\x0a\xaf\x3c\x3c\x0c\xae\xea\xdb\x78\x31\x14\x45\x7d\x19\x2d\x9d\xaf\x73\xe1\x21\x77\x3d\xec\xb4\xcc\x48\xcc\xd5\x3c\xa1\x0b\xf0\x2a\x09\x8c\x8f\x2c\x3c\x52\x3e\xb0\xd8\xb0\x82\x55\xe6\xb3\xee\x3b\x6d\x76\xa5\xa8\xa9\xbc\xf6\x5a\xd2\x6c\xcc\x75\x46\x6d\x61\x6a\x5c\xcc\x3a\x3f\x20\x8a\xa5\x54\x68\x1e\x0d\x45\xca\xa8\x08\xe3\x77\xad\x57\xcd\x2c\x72\x2c\x99\x85\xbb\x9c\x4c\x58\xa4\x0b\xa8\x27\x10\xde\xfd\x4a\xad\x3a\x83\xeb\xcd\xdd\x9f\xbc\xa5\x53\xff\x91\x0b\x4c\x2c\xe4\xe9\x3c\x93\x0f\x96\x0d\xbb\xab\x71\x43\x5b\x36\xd4\x23\xb2\x57\xae\x53\x06\xe1\x5f\x8e\xa6\x7c\x31\x5e\x9f\x7a\xd1\x24\xe3\x6f\x8d\x49\xbd\x4d\xd0\x62\x5b\x65\xad\x20\xf4\x04\x0f\x58\x18\xbd\xe2\x21\x17\xaa\x35\xeb\x87\xef\x5c\x32\x08\xd8\x7b\x86\xae\x5a\xad\xf9\x37\x96\x42\x64\xd9\x03\x8b\x87\xa2\x0c\x6a\x61\xe5\xc6\xe2\xd0\x91\xa2\xe2\xca\x6e\x38\x8e\x5b\xe7\x4e\xe6\xcd\x01\x24\xf2\x16\x10\x5e\x3e\xe1\x61\x49\x05\x98\xe6\x52\xaf\x4f\x50\x5c\xa4\xb3\xdd\xbb\x28\xca\x62\x2b\x2a\xd8\x02\x4c\x25\x17\xb3\x27\x4c\x9f\xb2\x8f\x78\x3e\x3e\x10\xdc\x06\x86\xd7\xf2\x1f\x9b\xda\x18\x0a\x97\xcb\x36\xc9\x13\xc4\x68\x6b\xab\x49\x63\x11\x3c\x5c\xd4\xed\xcb\x45\x5f\x7b\xdb\x1a\x09\x8a\xd8\x78\x4f\xb0\x4b\x3e\x8a\x16\x45\xed\x6d\x20\x5d\x26\x54\x0e\x62\x85\xab\x5f\x01\xe9\xa8\x53\xa6\xe1\x46\x8f\xf3\x04\x53\xb3\xc0\xc7\x0f\x68\x20\x34\x49\x08\xd7\x6a\x28\x3c\x78\x09\xe2\xf9\x02\x97\x75\x89\xb6\xb1\x55\xbb\xa0\x0b\x68\xd6\xd6\x4c\x04\x59\x8c\x47\x5c\x87\x23\x02\xdf\xf5\x22\xc4\x7c\x9f\xcf\x19\xc5\x3c\x02\x7b\x0c\x45\xad\xcc\x7a\xe8\xc3\xc5\xa0\x7b\xa8\x64\xb7\x8b\xf8\xf7\x76\xd2\xc5\x4a\x86\x6b\x6f\xc9\x21\xe9\xe3\xec\x8c\xd2\xe5\xca\xb9\xe1\x68\x5d\x6d\x7c\x0c\xef\x32\x9a\x8d\x56\xbe\x22\xb5\xd7\x5d\xe7\x34\xd3\x3c\xca\x13\x9a\x25\x00\xab\x3c\xc9\x13\xc2\x27\x41\x65\x3a\xd8\x03\x84\xae\x30\xdb\x15\x49\xb8\xaf\x9d\x5b\x48\xd1\x94\x05\x59\x73\xd6\xc4\x93\x04\x6e\x65\x04\x34\x45\x7f\xa5\x69\xeb\xfd\x21\x39\xad\xd6\x21\x84\x33\x11\x40\x5e\x71\x85\xec\xcf\x8f\x37\x48\xf7\xc0\x7a\x86\x7c\x62\xd4\xca\x6f\x82\x53\xd7\x56\x23\x97\xaa\xfb\x35\x7d\xd6\x0e\x7d\x7a\x79\xa8\x62\x63\xba\xd7\x2d\xd4\x51\x2d\x79\xb2\xfd\x81\x68\x19\xa0\xbb\x19\xd6\x1c\x64\x08\x17\xb6\xc1\x40\x3f\x07\x85\x4a\xab\x83\x4d\x97\x14\xc2\x83\x7d\x5c\x73\xa8\x41\x59\x89\xf5\x07\x1a\x50\x4e\x18\xa1\xd0\xba\xb2\xab\xcd\x38\x9f\x4b\x05\x1e\x88\x19\x97\x51\xa1\x19\xc6\xb4\x54\x6a\x9d\xff\x5f\xf6\xde\xad\xb9\x8d\x1c\x49\x1b\xbe\x9f\x5f\x81\x98\xef\xc2\xf6\x17\x94\x3c\x87\xd8\x88\x0d\x47\xec\x05\x2d\xc9\xd3\x9c\x96\x25\x8d\x0e\x76\xef\xbb\xdc\xa0\xc1\x2a\x90\xac\x55\x11\xa0\x51\x55\x92\xb9\x3b\xf3\xdf\xdf\x40\x66\xe2\x50\x47\x56\x91\x94\xdb\x3b\x6f\x5f\xcc\x74\xb7\x48\xa2\x50\x38\x24\x12\x99\x4f\x3e\x0f\xf4\x81\x94\x20\x80\xb2\xd7\x6d\xb6\xb9\x60\x69\x22\x1f\x6d\x7d\xa9\x99\xf9\x11\xe3\xbe\x75\xd8\x7c\xd8\x7b\x5c\xcc\x2d\x6e\x4d\x13\xc9\xf5\x01\x9e\x4e\xbf\x1a\x8d\xe6\xeb\xa7\xed\xc9\x20\x1e\xf3\x9a\x22\x78\xf0\x1e\xfd\xa7\xa5\x13\x45\xe9\x2e\x14\x16\x3a\x89\xe7\x4b\x80\xe7\xca\x13\xa7\x11\xdd\x3a\xbe\x37\xab\x32\x3e\x68\x00\x39\xf2\xc3\xd5\xf9\xc5\x87\xc9\x55\x59\x6d\xe1\x6f\x0f\x17\x0f\xe5\xbf\xdc\x3e\x5c\x5d\x4d\xae\xfe\x12\xfe\xe9\xee\xe1\xec\xec\xe2\xe2\xbc\xfc\xbd\x0f\xe3\xc9\x65\xe5\x7b\xe6\x4f\xe5\x2f\x8d\xdf\x5f\xdf\x56\xf4\x1d\xee\x7e\x9e\xdc\xdc\x94\xff\x74\x3f\xf9\x78\x71\x3e\xbb\x7e\x28\x71\x30\x9f\xff\xfb\xd5\xf8\xe3\xe4\x6c\xd6\xd0\x9f\xdb\x8b\xb3\xeb\x4f\x17\xb7\x17\xe7\x9d\x24\xcd\xfe\x7d\x1b\x87\xf4\x18\xc0\x8e\xbd\xf5\x3e\xc6\x6c\xa1\x13\x21\xe3\x74\x8b\xb8\x53\x7b\xc9\xaa\xc0\xdc\xc2\x23\x20\x59\x0b\x55\x1c\x02\x1f\xbd\x5f\x09\xa6\x9e\xcc\x05\x3f\x65\xd4\x1a\x55\xcd\xf0\xec\xb1\x95\x28\x29\xd7\xf5\x00\x75\x27\x4a\x3e\xd7\x5b\x57\x87\xd1\xd5\x1d\x4f\xa3\x40\x0f\x61\x1b\xa1\xbb\xfa\x02\x07\xb4\x2e\x36\x79\x32\x6f\x07\x04\xf7\xa4\x17\x18\x7e\x0d\x44\xd2\x9f\xe6\xfa\xe8\xab\x66\xc3\x58\xc2\xc5\x1e\x02\x09\x84\x16\xf6\x95\xb1\x71\xbf\xb6\x30\xaa\x4d\x31\x4f\x93\x88\x25\x71\xf5\x6a\x8f\xe5\x1b\x18\xbd\xac\x72\x83\x6d\x84\x06\x8f\xc9\x38\xa2\x1b\x2d\x4e\x78\x91\xaf\xac\xc2\x2e\x04\x94\x88\xc9\x75\x2a\x33\x11\x69\x91\x5b\xd1\x7f\x11\x5b\x61\x93\xe0\x49\xd0\x19\x2a\xe2\x8a\xa1\x5e\xfc\x34\xe0\x69\x6d\x09\x57\xe3\x2f\xb1\xf5\x01\xf1\x3a\xfc\x7e\xe7\xd0\x50\x8f\x93\xac\x2a\x5e\x09\xbe\x21\x7e\x68\xe5\x51\xcc\x7b\x1b\x4b\x1d\x59\xb0\x31\x4e\xb2\xc5\x2d\x37\xbf\xc6\xae\x35\x16\x2e\x94\x32\xcc\x98\x5a\xa7\x8f\xce\xb4\x80\x43\x84\xb2\xd2\xf6\x1a\x0d\x28\x0a\xc2\x39\x03\xbc\xd9\xdc\x18\xe6\x62\xc5\xd3\x05\x06\xc8\xcc\xd4\xf8\x7d\x55\x5f\xa2\xf7\xea\x51\xc8\x5b\x9c\xb0\x5f\xc5\x1c\x4a\x74\xc0\x7d\x59\x9f\x0b\x4e\xf8\x68\x9a\xe9\xa3\x5d\x55\xb6\xce\x03\x45\xa0\xd1\x5d\x0d\x3e\x46\xb0\xb5\xa7\xed\xb3\x25\x22\x8b\x45\xf2\xcd\x34\x38\x95\xa2\x91\xb8\x0c\xa0\x2b\x96\x60\xc1\xd9\x65\x20\xee\xc1\x2a\xf5\x47\x21\x41\x99\x05\xe5\x15\x77\xae\xd9\x61\xa1\xdc\xfa\x5c\x74\xc4\x96\x21\xfc\x94\x94\x04\x6b\xc2\x84\x83\x1d\x27\x28\xe8\x7a\x14\xa7\xec\x9c\x6a\x6f\xcd\x5f\xce\x2e\x27\x17\x57\xf7\xb3\xb3\xdb\x8b\xf3\x8b\xab\xfb\xc9\xf8\xf2\xae\xef\xf6\x3b\x46\x4d\x40\x65\xf7\x55\xcb\x32\x9c\x85\x78\x4b\x3b\xcf\x97\xa6\xb9\x97\xf2\xdb\x0e\xa6\x64\x77\xef\x93\x78\x33\x8b\x93\x2c\x32\xc7\xdf\x76\x26\x64\x0c\x8c\x8f\x7b\x2d\xd5\xe6\xa6\xaa\x6f\xe1\xbe\xc1\xdc\x37\xac\x05\xc1\xd3\xee\xc9\xae\x68\xf7\x39\x50\x42\x41\x34\x4c\x0b\xb3\xf9\xe3\xa9\x0c\x4e\x9b\xd3\xdd\x34\xdf\xa6\xb9\xc3\xde\xad\xdc\x44\xf5\x9d\xb0\xbf\x49\x96\x15\xdc\xd8\x47\xfb\x35\x28\xf9\x6e\x19\x15\xa2\xe1\x09\x69\x27\x93\x40\x1d\x8e\x99\x2b\xf2\x9a\xcb\x98\xe7\x4a\x6f\x5b\x5e\xb1\x9f\xf1\x0c\xb7\x4d\xd9\x84\x86\x47\xb6\xb9\xff\xdb\x59\xc0\xaf\x72\x59\x5d\x4a\x48\x4e\x79\x7f\xfd\xf3\xc5\xd5\xdd\xec\xe2\xea\xd3\xec\xe6\xf6\xe2\xc3\xe4\x17\xc7\xaf\xb1\xe1\x59\x5d\x77\x4a\x98\x43\xd1\x58\x17\x5b\xe9\xdb\x68\x5f\x50\xfc\xc9\xb6\x43\x5a\x15\xc9\x62\x2a\xad\x65\xd1\xbe\xf9\x95\x56\xc5\x72\xd5\xdc\x50\xb5\x97\x37\xe3\xfb\x9f\xf6\xea\x26\xf0\x30\xa0\x3a\x0c\xee\xb6\x3a\x5d\x59\xb2\x20\xbb\x87\x1c\x67\x95\xee\x01\x9b\x08\x7c\xb5\x29\xe0\xdd\x62\xd1\xf6\xba\xbd\xd4\x8d\x56\xa7\xf3\xdf\xf0\xf5\xb6\x05\x74\x1f\xd8\xcd\xd2\x31\x02\xf8\x50\x14\x1f\xab\xb5\xf6\xae\xe1\x6f\xa5\x13\xec\x4f\x27\xa9\x58\x2e\x45\x8c\xcb\xab\xda\x30\x85\x82\xc8\x04\x46\xfe\x5c\x6f\x1a\x45\x92\x01\x3a\xe0\x60\x76\xd0\xa3\xfe\x06\xfc\xc6\xfd\xa4\xd9\x56\x9c\x59\x51\xd0\x48\xc9\x2c\xe7\xb2\x25\xa7\xf9\x54\x07\x0b\xf6\x32\x45\xd7\x9a\xb9\xb2\x04\x0a\x90\xd8\xc8\xb5\xdf\x07\xfb\x64\x73\x48\xee\x48\x52\xc4\x23\x90\x41\x0a\x54\x4c\x1b\x26\xa1\x22\x34\xff\xe2\xc1\x8d\xce\xab\x13\x91\x4f\x40\xc4\x11\xe5\x12\x88\x19\x11\xa3\x41\xa0\x41\xd2\x8a\x51\x1d\x34\x21\x95\x27\x7f\xa2\xa1\xc7\x5b\x6b\x39\xe2\xe9\x45\xf5\xed\x04\x39\xe7\x6d\x78\x7c\xab\x22\x22\x1f\xc8\xf5\xc7\x45\x44\x14\xa0\xd8\xac\x07\x5b\x50\x40\xcb\x1e\xb0\x31\x3b\x31\xd3\x4c\x97\x14\x11\x9f\x00\x8d\xc0\x54\xb6\x65\x35\xac\x0d\x68\x09\x73\xdd\xd8\x53\xeb\x30\x0a\x9a\x01\xd8\x59\x3b\xd8\xfd\xaa\xbb\x98\xfd\x3a\x38\x7b\x2d\x58\x15\x9a\x97\x39\xc7\xb4\x65\xf9\x38\x6e\x2b\xf4\x76\x56\x75\x18\xa4\xa6\x1f\x22\xa1\xcc\x1f\x83\x47\xe4\x8a\x67\xe8\xb9\xe6\xd1\xaa\xdc\x71\x78\x9b\x32\x47\x4c\xb5\xbb\xce\x13\x3c\x2c\x42\xd0\x2b\x71\x31\xc2\x3b\x75\x92\x51\xef\x43\xc5\x0f\x27\x5f\x34\x6c\xe1\x87\xce\x91\xbb\xbc\xa0\xdd\x03\x83\x95\xf2\x42\x46\x2b\xb6\x49\x39\x56\x34\xae\x78\x86\x4b\xda\x66\xf0\xf9\x3c\x49\x93\x1c\xc8\x18\x30\xa9\x54\x19\x61\x73\xa3\xe1\xfa\xd1\xd2\xc0\x71\x4f\x06\xd5\xb5\xe8\x0f\x44\x4a\x7a\x41\xe0\xef\x89\x95\xf4\x5b\x36\xf8\x45\x67\x4a\xca\x2f\x4b\xc2\x49\xfa\xe9\x30\x16\x0f\x96\xa5\x7f\x97\x61\x33\x4b\x2d\xde\x54\x7f\x5e\x1a\xef\x86\x83\x7a\x38\x4e\x80\x18\x4e\x07\x98\xf9\x2a\xff\x69\xe3\xce\x5a\xa4\x8a\xb7\x88\x18\xda\xb6\x91\xce\xb4\xad\xed\x58\x15\xf3\x36\xfa\x3c\xec\x55\x77\xeb\x5d\x71\x7f\xbb\x6f\x8f\x15\x17\x0c\x0d\x20\xcf\x45\x9e\x0c\x0b\x6d\x04\x2f\xcd\x73\x71\x02\x3f\x6f\x6e\x9c\x48\xe3\x7a\xbf\x73\x6d\xa1\x79\x52\x6d\x47\xd2\x07\x08\xae\xfa\xea\xfa\x5b\x01\x92\xfb\xd7\x8b\x3b\x64\x07\x38\x64\x91\xe5\x49\x7d\x85\x35\xef\xc4\xea\x53\xef\xcb\x49\x95\x70\x0d\xf4\xae\x0c\x6b\x7a\x9b\x3b\xf3\xeb\xfe\x1b\xb2\xac\xf6\xbb\xd1\x89\x82\x1a\x7e\x92\x08\xee\xe0\x19\x6a\x7c\xee\x01\x23\xf9\xb5\x10\x85\x30\x6b\x7f\x5e\xc4\xcb\x7a\x6c\x73\x80\x77\xe6\x5f\x69\xa5\x9e\xd9\xba\x88\x56\xcc\x36\xce\x62\x91\xf2\x6d\xe9\xd5\xc0\x5f\xca\x55\x0a\xcc\x7d\x7b\xd2\x88\x45\x45\x96\xab\x35\x20\x1c\x7d\xbb\xba\x90\xb0\xe0\x19\xcf\x73\x9d\xcc\x8b\xbc\x11\x0d\x55\xe2\xd3\xd9\x33\xa1\x75\x77\x73\x71\x36\xf9\x30\xa9\x64\x93\xc6\x77\x3f\x87\xff\xfd\xf9\xfa\xf6\xe7\x0f\x97\xd7\x9f\xc3\xbf\x5d\x8e\x1f\xae\xce\x7e\x9a\xdd\x5c\x8e\xaf\x4a\x39\xa7\xf1\xfd\xf8\xee\xe2\x7e\x47\x5a\xa9\xfe\xd4\xf6\x89\xe0\x01\xdd\x8f\xc5\x5c\x5a\xfa\x47\x7b\xbb\xa4\xa7\xbe\x63\x63\x4b\x7e\x14\xaa\x0f\x72\x9b\x1a\x84\x94\x36\xca\x21\x52\x06\xf1\x9c\xe7\x9c\x34\x7a\x4f\xd9\x98\x59\xad\x65\x40\x1a\x67\xc6\x59\x20\x66\x18\x33\x3b\xd8\x84\xf1\x18\x22\x7f\x73\xf3\x0a\x37\x6a\x41\x9c\x4c\xa9\x08\x99\x50\x6d\x59\xcd\x54\x5e\x3c\x09\x99\x17\x40\xd3\xc8\xd3\xd4\x6a\x62\xdb\x2f\x04\x15\x94\xb6\x97\x59\xb2\x4e\x52\xae\xbd\x18\xc9\x35\xb5\x05\x0e\xbb\xed\xab\x23\xcc\xa8\x33\xd4\xdb\xcb\xc3\xc3\x84\x41\xbf\xcf\x2e\x27\xe0\x02\x45\xb9\x65\xda\xb6\x0f\x9f\x4a\xe4\xfc\xa1\x27\xae\x39\xa0\xdf\x73\x45\xf1\x34\x7c\x3c\x7d\xb9\x7d\x21\x36\xea\xe1\xf7\x27\x95\xc2\xc8\xf3\x4b\xa1\x6b\x5c\x27\xed\xbf\x5c\xc8\x5c\x6f\x7b\xfb\x35\xf7\x40\xd4\x98\x81\x6f\x4a\x40\x9a\xb2\x40\x09\x86\x3b\x98\x6d\xfd\x0a\x9c\x1d\x8b\xf2\xa2\x68\xbc\x0b\xba\x0b\x20\x83\x6c\xf1\xbf\x53\x73\x08\xfd\xa8\xe3\x10\x12\x14\xc0\x28\xcc\x55\x21\xe3\x8c\x20\x3f\xeb\x44\xbe\x5d\xf3\x6f\x6f\xec\x9b\x62\xc1\xaf\x23\x09\x06\x32\x17\x91\x9a\x9b\xc8\xd6\x18\xb9\xee\xe1\x9a\xca\x8e\xf1\xda\xed\x2d\x5a\xcb\x0a\xd7\x1e\x7f\x47\x45\xf0\xd2\x93\xd8\x36\xcd\x5f\x8d\xea\x1d\x01\x52\xb4\xe1\xa1\x91\x8d\x16\xe6\x8b\x0e\x19\x95\x22\xe0\xcd\xfd\x37\xa0\xa0\x4b\x72\x34\xcd\xb6\x3b\xcc\xf2\x1e\xb4\x6d\x1a\xf3\xcb\x2f\xc0\xd5\x4f\x4f\x32\x73\x86\xd9\x66\x1b\xe8\x24\xd4\x37\xa5\xd1\xcc\x64\xfd\x97\x9a\xb3\x05\x94\x40\x90\xdc\xa4\x16\x10\xd8\x86\xa9\xb0\xd4\x92\x40\xf9\x51\x4b\x61\xdb\x25\x90\x8a\x0c\xc2\xbd\xd2\x5c\xb7\xc4\xd7\x82\x32\x76\x7f\xfc\xc3\xb0\x73\x36\xd7\x5b\x66\x69\x8c\xc3\x12\x0c\xaa\x40\xa2\x33\x17\xfa\x55\xc8\xa4\x89\x07\xe8\xb6\x90\xe6\x28\x3e\x06\xd8\xa1\x7f\x36\xab\xf2\x50\xfa\xcf\x9d\x55\x0a\x36\x10\xab\xf1\xfb\x2f\x46\x9c\xf6\xa9\xc2\x97\x46\x8f\x03\x3c\x2c\xb5\x1e\x1e\x68\x73\x1e\x3d\x3e\x73\x1d\x63\xac\x10\xd0\x07\xa7\xec\x27\xf5\x2c\x9e\x84\x1e\xb1\x48\xe8\x9c\x13\x95\x4a\x06\xe9\x57\xd8\x50\xd4\xce\x54\x02\x44\x1c\x79\x69\x24\x28\x75\xe6\xc9\x72\x65\xee\x93\x41\xf2\x5c\x69\x63\x8e\x72\xe4\xa9\xda\x88\x88\xc8\x2b\x5a\x06\x60\x91\xf2\xa7\x3a\x37\xcc\x3e\x65\xe6\x6c\xe2\xea\xdc\x6c\x76\xca\xd2\xf5\x76\xc1\x1d\x68\xc0\xc8\x68\x22\xdb\xc0\x88\x2d\x55\xca\xe5\xf2\xf4\xf4\x94\x89\x3c\x3a\x7d\x33\x68\xa1\x53\x83\x61\xbe\xcb\x61\x3b\x53\xa5\x32\x91\x6e\x1d\xe1\x82\x43\xe0\x83\x44\xfa\xb7\x5c\xc8\x2c\xc1\x90\x47\xc3\xf2\xbf\xab\x96\xab\x7f\xdf\xd0\x79\xf3\x4d\x75\x70\x7d\x57\x4b\x3b\xc0\xfe\x3f\xa0\x25\xfc\x7e\xf3\xcd\x6b\x40\xbd\xa2\x15\xeb\xf1\x75\x8b\x2d\xdc\x8a\x4a\x0e\x2d\xc6\xfb\xa4\xda\x54\x2d\xf7\xe2\x43\x6a\x6c\x89\xd8\x12\xf6\x2a\x60\x6a\x8b\x5c\x54\x6a\xca\x0e\x28\x27\xeb\xa8\x0c\x1b\x58\x14\xd6\xb0\xff\x1a\xb6\x87\x2b\x3b\x3d\x04\x9f\xa4\xd2\x62\xdd\x4e\x04\x74\xa8\xcb\xe7\x3b\x89\xff\x76\x06\x8f\xeb\xed\xf2\x79\xa5\x51\xcb\x64\x4e\xfd\xc5\xc0\x2d\x15\xe6\x19\xdb\xae\x93\x0c\x28\xab\xf6\xa9\x12\x72\xcd\x60\xd3\x90\x5f\xda\x6e\x30\x60\x88\xf5\x43\xe9\x16\xeb\xd0\x6c\x3e\x82\x7e\x92\xa1\x5f\x06\x49\xa9\x76\x33\x56\x45\x3d\x0d\x9e\x23\xe0\xc9\xde\x2b\x13\x07\x8e\x4e\x40\xd5\x4a\xb0\x0c\x68\x90\x72\xc7\xb9\x62\x0b\x5b\x73\xf2\x28\x02\x6d\xaf\x18\x48\x5c\x9f\x91\x16\xe2\xe7\x7f\xcd\x6c\x96\x99\x80\x00\xfe\x8c\xcd\xfd\x43\x30\x9a\xfd\xf4\x47\x8b\xff\xc0\x37\xc4\x26\x40\x2c\x23\xe6\x32\x6f\x6c\xc0\xc3\xa3\xa0\x2d\xfc\xc9\x27\x73\x6f\x6f\xfc\x3a\xb5\x0f\x5f\x45\x5e\xfc\xf1\xe7\x3b\x86\x43\x4d\x74\x9f\xba\xab\xa3\x41\x23\xbb\x11\x28\x30\x5c\xb3\x3d\x7c\x97\xd2\x3c\xe0\xa0\x5b\xbe\x57\x33\xec\x22\x8f\x56\xfe\xac\x2c\x4b\xdc\x91\xe8\x09\xbd\xe7\xda\x13\x98\x22\xb8\x2f\x44\x49\x25\x4b\xa9\xb4\xf0\x68\x2b\x25\x05\xa4\x15\x78\xce\x62\x15\x36\xcb\x92\x7c\x37\x14\x65\x20\xc9\xce\xae\xa5\x96\x2b\x84\x18\xd0\x7b\x96\xb2\x43\xe0\x04\x27\x48\xcd\x61\x71\x7c\xe8\xc5\x93\x86\x46\x95\x76\xb3\x5c\xec\x3c\x95\xe5\x47\xd5\x06\xc9\x62\x45\x12\x2d\x90\x2d\x2f\x33\xfe\x46\x9e\x3c\x99\x8d\x5a\x5f\xd6\x6e\x81\x82\x05\xa8\xaf\xbd\xa9\xc4\x6e\x07\x94\x7b\x8f\x62\x9b\x85\x82\x1d\xb4\xa2\x58\xdb\x82\x4c\xcc\xfb\xd0\x7c\xed\x9e\x0a\x18\xb8\x59\x20\x41\xda\xef\x14\xc1\x87\x7e\x34\x3f\xee\x00\xa1\xd5\x1a\x37\x6b\xd0\x17\xf5\xf8\x28\x18\x99\x09\x3f\xce\x34\x87\x1e\x67\xd2\x20\x4f\xeb\x03\x8a\x70\x55\x33\x37\xb2\xa9\x24\x56\xce\x20\x7f\x6b\x0c\x4e\x7d\xda\xa8\xd2\x10\xb9\x00\xb7\x25\xa6\x04\x60\x4c\xb5\x3a\x8a\xcd\xaa\xc0\x56\xef\x89\xd4\xf0\xb1\x16\xcb\x46\x9d\x1a\x1f\xb8\x27\x78\x89\x26\xb7\x15\xb0\xe4\x9d\x6e\x1a\x38\x22\xcb\x42\xe5\x17\xf4\xd7\x23\x61\x86\x6f\x2c\x1b\xb1\x42\x16\x29\x74\x77\x71\x76\x7b\x71\xff\xdd\x00\x4d\x16\x4d\x34\x18\xd1\x64\xfb\x79\x7e\xf1\x61\xfc\x70\x79\x3f\x3b\x9f\xdc\xbe\x04\xa4\x89\x3e\xda\x03\xd3\x74\x47\x64\xbf\x67\x4a\xe6\xe2\xdb\x41\x67\xb2\x2e\xe4\x8c\x0f\xc0\xd6\x3b\x42\xed\x2e\x77\x07\x1b\xad\x93\x15\x3b\x26\x61\xa2\x6a\xc3\x13\xcd\x71\x13\x07\x32\xcf\x8b\x24\x4d\xa1\xe2\xcd\x05\x84\xa9\x8c\xc5\x0c\x2a\xd8\x1f\xab\x57\x49\x36\x75\x2a\xe7\x25\xb6\x66\x08\x52\xad\xcc\xb5\x0d\x6b\xdd\x36\x66\x00\x74\x02\x05\x4f\x5d\x7c\xc6\xcb\x44\x0a\xdf\x0d\x54\x69\x2b\x24\x6b\x25\xa1\xa4\x49\x7c\xc9\x82\x46\x72\xbc\xfa\xfa\x9a\x76\xc5\x95\xd6\xa7\x75\x3f\xed\x87\xee\x0d\x71\x13\x27\x12\x1d\xd3\xd2\x6e\xbe\x6b\x5e\xba\x6f\xfd\x16\x80\x71\x37\x33\xc9\x21\x6a\x0e\x42\x68\x7e\x22\x69\x22\x50\x49\xc0\x87\xd3\x1f\x13\xc4\x7d\xa8\x45\x65\x9c\x8d\x29\x34\x63\x9d\x40\x6c\x9d\x53\x21\x7f\x94\x16\x59\x2e\x34\x5d\xf4\xc7\x9f\xef\xa6\x12\xf5\x72\xe9\x14\x22\xb6\x79\x7c\x04\xa2\x0e\x54\xe9\xf9\xd6\x43\x09\x2d\xd8\x6b\x8c\xaa\xae\x05\x97\x19\xca\x54\xa6\xa9\xd0\x7e\x65\x60\x7f\x84\x88\x49\xa8\x04\xb4\x4c\xfd\xef\x49\xa9\x50\xc1\xae\x35\xfd\xa5\x4f\x49\xa9\xaf\xba\x9e\xda\x0a\x2a\x01\xd2\xf8\x92\x2b\xa7\x01\x59\xdf\x77\x15\x11\x1a\xb4\x71\x11\x95\x71\xee\xbd\xd6\xd2\x3d\x36\xf7\xdb\x52\x3a\xe2\x52\xea\x71\xae\x87\xa7\x04\x5b\x29\x63\x40\x1d\x51\xbc\x4f\x8c\xba\x82\xee\x14\x10\x3b\x66\x18\x1b\x4f\x1d\xcf\x63\xb5\x57\xaa\xf4\xea\xfa\xea\x22\x4c\x74\x4e\xae\xee\x2f\xfe\x72\x71\x5b\x2a\xde\xbb\xbc\x1e\x97\x0a\xf0\xee\xee\x6f\x2b\x75\x77\xef\xaf\xaf\x2f\x2f\x6a\x19\xd3\x8b\xfb\xc9\xc7\x52\xe3\xe7\x0f\xb7\xe3\xfb\xc9\x75\xe9\x7b\xef\x27\x57\xe3\xdb\x7f\x0f\xff\x72\x71\x7b\x7b\x7d\x5b\x79\xde\xc3\x59\x77\xee\xb5\xf4\x1a\xcd\x57\x71\x9f\xda\x09\x28\xbd\x1a\x87\xf4\xeb\x61\x44\x98\x39\xcf\x1b\x1d\xea\xde\x37\x1d\x12\x4a\xfc\x5a\x08\xbd\x25\x0e\x01\xf4\x42\xf1\x2f\x11\x97\x08\xe0\xca\x49\xea\x3d\x0e\x91\x47\x53\xf9\x19\xc5\xe0\x21\xb9\xf9\x2a\x63\x7f\x81\xf0\xab\xfd\xb2\x17\x14\x85\xcd\xfa\x37\x7c\x86\xfb\xec\x74\x2a\x4b\x42\x8c\xc1\xaf\x4a\x3a\xd2\xa7\x53\x69\xb9\x1a\x63\x15\x65\xa7\xb0\x97\x4f\x95\x5e\xbe\x25\x59\x15\x63\xeb\xd4\xe3\x5c\xa9\xc7\xb7\x42\xbe\x05\x6f\x23\x7f\xcb\x8b\x5c\xbd\x85\xd4\x0d\x42\x5b\xb2\xb7\x56\x7d\xc1\xca\x57\x64\x6f\x57\xc9\x93\x80\xff\x3b\x5d\xe5\xeb\xf4\xff\xcb\x36\xab\x6f\x27\xcb\x54\x9f\x98\xdf\x9e\x84\xbf\x3d\xb1\xbf\x3d\xb1\xbf\x3d\x31\x3f\xc3\xff\xdb\x6c\xf1\xe2\x2e\x48\x07\x77\x2a\x13\x99\x09\x9d\x43\x9d\xe3\xb3\x4e\x72\xaf\xd2\xbd\x65\xaf\xfe\xe7\x7f\xd8\xa9\xe6\xcf\x08\xe5\x3d\xe7\x39\xbf\x41\xcf\xf1\x1f\xff\x78\xc5\xb2\x5c\x91\x96\xcc\x86\xeb\xaf\x85\xc8\x8d\x0f\x9b\x8a\x28\x67\xff\xff\x54\x82\xfc\xd4\x7a\x3b\xcb\xd1\xa3\x46\xef\x32\xce\xd8\xbf\x61\x9b\x13\xe4\xd3\x88\x33\xd3\x52\x0b\xca\x27\xe1\x69\x83\x60\x4f\xcb\xe5\xeb\x6b\x7a\x4e\xdf\x1f\x60\x71\xbe\xa6\x25\xd4\x80\x63\x85\xcd\xbe\xa6\x40\xdc\x92\x2a\x6e\x13\x47\xcc\x2d\x5e\xb0\x80\xd4\xb9\xa6\x3d\x52\x0b\x4f\x1e\xb0\x63\xf6\xd5\x30\xbb\x43\x5e\x2f\x7b\x27\xab\xc9\xd1\xc0\x2d\xd0\xdf\x30\x81\xca\x25\x31\x3b\xe4\x0e\x7d\x5c\xd4\x88\x85\x37\x07\xdb\x9f\x2b\xcd\x97\x5e\xd3\x97\x8e\xa4\xec\xcf\xef\xde\xbe\x1d\xb1\x65\x06\xff\x98\x7f\x85\x7f\x40\x26\xe3\x58\xb4\x34\xb5\xc1\x74\x49\xb9\x3e\x91\xda\xd6\x1f\x1f\x64\xc3\x5e\x9e\x0d\xad\xb2\x4c\xdf\x17\x32\x4e\x85\x47\x26\x97\x2e\xbb\xa9\xb2\x82\x61\xe8\xf2\x54\x79\x67\x61\x8e\xe7\x22\xe2\xc6\xf0\xd5\x9e\x8d\x89\x6e\xb5\xc8\x85\x44\x3f\x47\x7b\x96\x6e\x8e\x3e\x09\x64\x99\x20\x2d\x0b\xfa\xb7\xeb\x0d\x88\xe1\x26\x10\x00\xbc\x47\x7a\xb1\x51\xf5\x23\x90\xb3\x44\xa6\x2c\xe0\x7e\x41\xd5\x4d\x61\x6f\xe2\x58\xd1\x55\x68\xe3\xea\x6c\xb8\x8c\x79\x06\x2b\x70\xa1\x21\x8e\xa5\x19\xaf\x77\x74\x84\xd0\x00\x73\xb3\xe7\x72\x4b\x31\xe3\x70\x24\x90\xca\x2c\xe8\xf3\x28\xe8\x04\x9e\x09\x28\xe0\x5b\xfd\xe1\xe9\x54\x3a\x29\x58\xcc\xcb\x59\x71\xf1\xcd\x96\x8a\x25\xab\x83\x9e\x58\x9f\x88\x86\x7b\xe4\xc5\xf6\xaa\xdf\x05\x99\xf1\x30\x68\x02\xac\x69\xa1\x12\x8e\x55\xeb\x79\x0d\xe2\xbc\x42\x67\x6f\xcc\x36\x04\x2e\xd1\xdc\x73\x92\x25\x99\x9f\x0c\xa7\x1c\x4b\x7e\xa0\x69\xde\xd1\x0b\x9b\xd1\x29\xf1\x6c\x35\xb9\x60\xbb\xb7\xca\x8f\x9e\xdf\x68\xea\x2f\xfd\xeb\x77\xcd\x75\x84\x39\xe6\x46\x31\xeb\x41\x64\x03\xb8\x65\x43\x8b\x8b\x8d\x92\xd0\x2c\x3a\x27\x56\x76\x24\x31\x47\x56\x6e\x6e\x00\xf9\x54\xd2\x09\x3c\x62\x0b\xc1\xf3\x15\x24\xd9\xb3\x27\x34\xc6\x78\xdc\xe7\xcf\xca\x67\x57\x2c\x49\x2b\x24\xe6\x4b\x8d\x7b\xf7\x1f\xbf\x06\xb1\x62\x1e\xe5\x18\x3a\x6e\xa3\xaf\x74\xae\x0a\x0c\x56\xa3\x41\xdc\x63\x1c\x2c\xe7\x67\x95\x5f\x3b\xa4\x9c\x85\x91\xd8\x62\x08\x90\x55\xfb\x81\x1f\x18\xc3\x83\x6f\x87\x01\xfe\xc0\x38\x42\x65\x13\xe5\xf5\x71\x9f\xf9\xe8\x5c\x48\xba\x06\x91\x97\xb6\x4d\xd5\x31\x10\xd0\x81\xfd\x20\xd0\xe6\xa7\x3b\xa9\x29\x32\xa1\x2d\x21\x29\xbe\x2b\x72\x53\xac\x12\x1d\x9f\x6c\xb8\xce\xb7\x76\xf9\xa6\xc9\x1c\x78\x0c\xd3\xe4\x51\xb0\xb1\xd6\xea\xf9\xd8\xa3\xd0\x6a\x5a\xee\x79\xf6\x78\x64\xaa\x1b\xa0\x76\x1a\x42\x55\xd3\xc8\x4c\x53\x4a\xbb\xc7\x62\xb6\x1f\x0b\x4e\x1b\x93\x4f\xe3\x73\xb4\xc8\xf5\x76\x66\x16\xe2\x7a\xd3\x6a\x29\x7a\x01\xb8\xfa\x3b\xb9\xc3\x08\x76\xe0\x7c\xee\x41\xb0\x53\x9a\xd5\x1f\x87\x60\xa7\x81\x3b\xa7\x4e\xb0\x33\xb9\x9a\xdc\x4f\xc6\x97\x93\xff\x53\x69\xf1\xf3\x78\x72\x3f\xb9\xfa\xcb\xec\xc3\xf5\xed\xec\xf6\xe2\xee\xfa\xe1\xf6\xec\xa2\xbb\x62\xb6\xde\x7b\xef\x82\x9f\xb0\xf0\x39\xef\xd8\x7d\x10\x82\x47\xe0\x13\xf9\xdf\x24\xe4\x01\xab\xca\x6c\xe6\x44\x2e\x47\xb0\x51\xdf\xb1\x0b\xad\x27\x6b\xbe\x14\x37\x45\x9a\x42\xa2\x0c\x51\x86\x67\x5a\xc0\xc5\x73\xc4\x6e\x54\x3c\x09\x7e\x07\xd0\xe8\xc6\xd7\x80\xe7\xf3\x38\xd6\x22\xcb\xf0\xf1\x23\x7a\x7e\x90\x16\x72\xb0\x6b\x4a\x8b\xf2\x27\x9e\xa4\xe6\xfe\xf6\x0e\xb4\x05\xd5\x82\x54\xa2\x47\x0e\xc4\xc9\xbe\x16\x2a\xe7\x4c\x7c\x8b\xa0\x4a\xbc\x79\x9d\x5c\xaa\xe5\xcb\xde\x81\x9a\xf7\xf4\x6e\x62\x8d\x96\x4b\x0a\x10\xb6\xcf\x9a\x8f\xf3\x66\x43\x40\x6f\xf9\x11\x7f\xfa\x01\x7f\xd9\xd8\x7a\x9e\xa7\x47\xa8\x5a\xb9\x54\xcb\x66\xfa\x5c\xf0\xae\x89\xf3\xd7\x8b\xe8\x42\x0d\x9c\x5a\xb2\x2c\x91\x8f\x53\xf9\x79\x25\x24\x53\x85\xc6\x3f\xc1\x35\xdf\xb8\x99\x69\x91\xad\x44\xcc\x54\x91\x8f\xd8\xb3\x60\x6b\xbe\x45\xb7\x19\xee\x04\x8e\xef\x13\x96\x0c\x9c\x22\xe6\xd7\x69\x22\x8d\xb5\xd8\x24\x16\x23\x55\x9d\xfa\x63\xdc\xb8\x2c\x47\x02\x3f\x9c\xc2\xa8\x5f\x21\xc8\xf3\x4a\x00\x06\xde\x67\xc4\x6d\xea\x87\x2c\x37\x48\x8a\x28\xf5\x58\x6c\x3c\x9b\xca\x2b\x4b\x59\x08\xc3\xfd\xa4\x92\x98\xc5\xc5\x26\x4d\x22\x67\x77\x9f\x95\x6e\xa5\x8c\x42\x30\xdf\x00\xca\xa8\x0a\x44\xb5\xeb\xc5\x1a\x90\x82\x41\x8e\xb4\x83\x3c\xea\x85\xe9\xb3\x02\x49\xf7\x22\x13\xfa\x24\xd7\xc9\x72\x09\x0e\xb8\xc5\x1d\xff\xf8\xfc\x5a\x9e\xbf\xe3\x70\x88\x6d\x58\x00\x93\xaa\x65\x12\xf1\x34\x84\xad\xf8\x78\xb7\x23\xf0\xb1\xdb\x9e\xa4\x64\x4c\xbf\x5d\x87\x5a\x0b\x93\x37\x5a\x00\x87\xd4\x0c\x55\xf2\x0f\x57\xef\x9f\x2c\x98\xb9\xa0\x5b\x99\x59\x5f\x21\x66\x95\xba\xed\x09\xe7\x9f\x6d\xf9\xc4\x51\x50\x50\x02\x18\x5b\x3d\x4b\xa1\xc1\x83\x85\x80\xbe\x79\x53\xa9\xc0\x37\x71\x1c\xe3\x0e\x79\x62\x39\xf6\x17\x0e\x62\x83\x28\xfe\x65\xf2\x24\xe4\xf7\xe7\x43\x0b\x1e\x10\xf1\x68\x25\x66\xd6\x2f\x3f\xb6\xc9\x72\x07\xc0\x40\x63\x65\x89\x3e\x43\x53\xca\x12\xe0\xa0\x88\xf0\xea\x84\x3d\xae\xdb\x2e\x24\xb0\xee\x75\x28\x01\x05\x6a\x39\x3e\x57\x3d\x0e\x0e\x65\xf3\x76\x20\xb9\x7d\xbd\xff\xee\x40\xc0\x32\x55\x73\xa8\xd6\xaa\xf3\x7c\x87\x27\x6c\x1b\x65\xf0\x93\xd0\x3a\x89\x87\x58\x26\x3b\x26\xd7\xee\xa7\x5d\x1d\x74\x62\x8d\xee\x49\x60\x14\x12\x8c\xd5\x55\x3c\xf7\x6a\x35\xc0\xae\x6b\x02\xe4\x36\x32\x97\xdc\x70\x8e\x84\xe5\xea\x83\xc0\x84\xea\x50\xff\xac\xbf\xcb\x41\x13\x5d\xaf\x2f\xdb\x31\x96\xbe\x24\xad\x7b\x92\x0f\x28\x12\xc2\x8a\x26\x57\x29\x34\x84\x70\xc9\x4e\x1d\x26\x9e\x41\x59\xd5\x4d\x62\x09\x11\xd4\x6b\x46\xab\xe3\x7e\x4f\xe9\xae\x83\x2a\xe0\x5f\x60\x47\x15\xb9\xf2\xd1\x4a\x78\x9f\x09\xd0\x90\x84\x58\x43\x30\x1b\x93\xb8\x51\x31\xdf\x1f\x1f\x76\x6b\xb6\xb9\x2a\x87\x45\x9c\xc6\x6c\xa3\x85\x8d\x7b\x6f\x45\xee\x6a\x24\x52\xcb\xec\x0c\x61\x5d\xf7\xd6\xe5\x22\x31\x5b\x07\xe2\x0a\x7b\x21\x08\xab\xac\x16\xf6\x7a\xa3\xa4\x90\x84\x0e\x90\x6a\x2a\xa9\x71\xab\xd1\xe3\x22\xc3\x25\x10\xe6\x88\x2e\xe4\x08\xe9\x11\x99\x4a\x9f\x28\x05\x10\xf0\xf7\x01\xb3\xb7\xe9\xe0\x99\xf1\x6d\x8c\x27\x0f\xb9\x29\x42\xe4\x01\x46\xa1\x22\x54\xa3\xc5\x32\xc9\x72\x11\xe2\x56\xc3\xdf\x1f\x4d\x4f\xa0\xe4\xfc\x77\x0d\x7d\xab\x9e\xc0\xae\x53\xdc\xec\xda\x01\xfd\xd9\x6e\x44\x3c\x71\xbf\xeb\x5e\x0c\x25\xf0\x79\x1c\x18\x89\xd2\x29\x80\x6b\x00\xbd\x97\x0c\xcb\x66\x33\xc7\xbc\xe7\x26\x89\x0a\x1a\xb9\x13\x82\x80\x29\x5a\x16\x5c\x73\x99\x0b\x91\x4d\x25\x25\x4e\xb0\xfc\x3b\xac\x70\x5a\x94\x04\x24\xfc\xd9\x1c\xa9\x2c\xc7\x6a\x4a\xf8\xc9\x82\x27\x69\xa1\x5b\xdd\x65\x5c\x95\x7b\x95\x6e\x74\x8d\xd2\x19\x34\xcb\x9a\x26\xcd\x41\xab\x83\x5d\xe4\x2a\x90\xaa\x69\x8f\x32\xf2\xb8\xe5\x15\xac\xc9\xed\x3f\xdf\x2e\x56\xd2\x82\xb6\xfe\xd7\x6c\xb6\x51\x03\x2c\x1e\xe9\x0e\x37\x36\x96\x7d\xad\xdd\xe9\x3b\xd2\x7f\x5f\xdb\xb8\x08\x79\xf6\x08\x91\xf3\x5d\x57\x89\xdd\xf1\xc1\x3f\xff\x69\x77\x7c\xbd\xd5\x76\xc1\xaa\x5d\x71\x19\xa7\xa0\x51\x9c\x57\x4e\x20\xb7\x07\x40\x00\x20\xb7\xc6\xb1\x1d\x6e\x08\xe8\x9d\x59\x54\x83\x7e\xee\x1a\xa7\x0a\x66\x74\x07\x84\xb0\xf4\x94\x32\x92\xb3\x09\x41\xe4\x4f\x76\x12\xa2\x70\x1b\xb6\x7d\x09\x2e\x92\xe5\xf1\x89\x78\xfa\x2a\x73\x38\x2f\xfb\x63\xdd\x52\x46\xb4\x15\xe9\xfc\x72\x62\x1c\x07\x6e\x46\x40\x7e\x19\x63\x16\xd2\x1d\x4d\x25\xe9\xd4\x60\xd2\x08\xb2\x05\x58\xd2\x9b\xb1\x3f\x3a\x38\xf0\x1f\xff\xc5\x16\x74\x6e\xd9\x02\xc6\x1a\xaa\xa6\x55\x14\x15\x1a\x32\x3a\x74\xeb\x64\x02\xcf\xa6\x21\xac\x74\x63\x3c\x91\x5d\x1e\x1e\xdd\xa7\x26\xef\xc1\x85\x19\x4a\x2f\x75\x0f\xb7\x4b\x54\xdc\x71\x67\x21\x31\xd8\xea\x2c\x67\x59\x2e\x36\x8d\x56\xa9\xe4\x74\x95\x85\xa5\x0e\x70\xbb\x3a\x54\xe1\x0f\xb6\xd1\xe3\x40\xc1\xea\xaf\x77\xd7\x57\x6c\xc3\xb7\x00\x69\xc9\x15\x29\x82\x01\xa7\x45\x75\xff\xee\x9a\x81\xf2\xcb\x97\x37\x1b\x8e\xa9\xe6\xde\x5e\xd4\xc3\x4e\xdc\x29\xfe\x55\xec\x10\xac\x19\x5a\x92\x66\x2b\x6b\x95\x9e\x6c\x52\x2e\x05\xf2\x0f\x62\x81\x2f\xab\x3c\x3e\x4c\x53\xb9\x80\x35\x01\x01\xa0\x03\xa1\x60\xb6\x2e\x64\x13\xae\xad\xac\x95\x75\x50\x66\xaa\xd5\x46\x74\xe2\x75\x3e\x22\x2b\x21\x8f\xcc\x36\xc1\x72\x17\x9b\x6d\x73\x09\x5b\x9e\x01\x96\x6a\xc0\x44\x75\x0b\x7b\x4d\xa5\xd5\x6c\x51\xcf\x19\x8b\xb1\x20\xa8\x48\x32\xd4\xc3\xc4\x58\x26\xe0\x1a\xc8\xbe\x60\xd2\x55\x73\x99\x99\x09\x85\x70\x8c\x78\x12\x92\xd5\xcb\x4b\x26\xe7\x97\x2e\x35\x89\x93\x44\x7c\xe6\x2d\x43\x1f\x38\x66\x07\x51\x78\x35\xa9\x4c\xed\xa6\x0a\xfc\xc8\x37\x2d\x17\x7a\x94\xa0\x39\xb4\xc5\x5d\xb3\xe4\xca\x21\xab\x5e\x27\xe8\xdf\x00\xc5\x31\x69\xf7\xd4\x47\xef\x41\x1e\x68\x7e\x1a\xb9\xc3\x06\x28\xe9\xee\x4f\xdd\x1d\x8a\x88\x0e\xb0\x3d\x41\x2d\xbd\x83\x05\x38\x7f\xd9\xec\x72\x20\x90\x45\xc5\x46\x52\xa8\xbe\x13\x82\x7d\x71\xa2\x8f\x5f\x88\xa0\xdc\xeb\x6d\xb7\x8d\xeb\x44\x2e\xd4\x61\xc6\x40\x2f\x6b\x48\x9a\x83\x46\xa5\xb9\x9f\x87\x62\x75\xa0\xa2\x48\xbe\x6c\x51\x48\xe3\x7b\xed\x40\xe6\xdc\xf8\x3b\x39\xc1\x93\x6d\x4f\xcd\xf9\x0c\x53\xbc\x9f\x38\x61\x69\x91\xe4\xa0\x83\x09\xe4\x4f\x8f\x52\x3d\x4b\xf4\x05\xe8\x49\xec\xb5\xd9\x7f\x70\x80\x01\x8b\x13\x81\x73\x0a\xb4\x86\x6f\x80\x8d\x6a\xec\xfe\x9b\xdd\x61\x98\x1b\xfb\x0c\x74\xab\x19\x38\x3f\x44\x94\x0a\xd6\xfc\xf5\x78\xc4\xde\x8f\xd8\xd9\x88\x9d\x9e\x9e\xbe\x19\x31\xc1\xa3\x95\xed\x11\xfe\x04\x41\x2f\x39\x5f\x9a\xb6\x9d\x56\xae\x7f\x00\xb0\x07\x9b\xc3\xca\x1c\x99\xc6\x40\xf3\x40\x51\xd7\x47\x1e\xec\x2b\x20\x98\x1b\x15\x2a\x6c\x4a\x30\x5a\xa9\xc4\x77\x0a\xd0\x65\x22\x52\xda\xe2\xd3\xb2\x5c\x69\x8b\xb5\x79\xe2\x9a\x27\x12\xea\x0d\x78\x1d\x69\x48\x4f\x0e\x38\xb2\xc4\x37\xbe\x86\xf7\x4f\xa4\xa3\x09\x31\xc3\x74\xef\xfa\x9f\x6f\x37\x49\x04\xe3\xf9\xac\x93\x3c\x37\xa7\x73\x36\x95\x77\xec\xdd\xbf\xb1\xf1\x66\x93\x0a\x36\x66\x7f\x67\xef\xb9\xe4\x92\xb3\xf7\xec\xef\xec\x8c\xcb\x9c\xa7\xaa\xd8\x08\x76\xc6\xfe\x6e\x86\xcd\xb4\x77\xa5\xcc\x71\xb8\x1d\x31\xce\x64\x91\xe2\xa9\xff\xda\xe2\x58\xde\xb8\xf7\xe2\x7e\x76\xac\xe0\x64\xa6\xd6\x74\x14\xfe\x82\xd5\x0c\x66\x64\x12\xb9\x4c\x45\x6e\x65\x5e\x4b\x88\x23\x7c\xc0\x09\xbc\xe9\xbb\xa9\x74\xb1\xbc\x5f\x4c\x8f\x7f\x61\x7f\x67\x57\x45\x9a\x9a\x2e\x19\x43\x63\x16\xd2\x3b\x66\x11\xe0\x42\x9e\x3e\x27\x8f\xc9\x46\xc4\x09\x07\x0c\xb8\xf9\xaf\xb7\xf7\x30\xdb\xb3\xc2\x53\x0e\x84\x7b\xda\x51\xd8\x7e\x17\xde\x99\x21\x7a\xce\x8e\xc9\xd8\x4e\x7e\xc7\xcd\xaf\xfc\xd3\xe1\x1e\x91\x27\x5c\xa1\xfd\x40\x0e\x2b\xd2\x0f\x87\x8c\xc9\x7b\x99\x80\xca\x61\x6b\xdb\x6a\x38\x0a\xc2\x43\xfd\x50\x23\x0b\x04\xdc\x47\xbf\x43\xf6\x60\x43\xee\x6b\x72\x6b\x5c\xae\x4f\x21\x79\x35\xf8\x92\xbe\xfe\xb4\x57\x56\xc8\x71\xb8\x7e\x2a\x33\x90\x97\x86\x58\x25\xbd\xa8\xda\x2b\x9d\x7d\xa0\xd8\x45\x2c\xa4\xca\xcd\x45\x46\x26\xe9\x5b\xb3\x55\xdf\x5e\x29\x69\xae\xad\x59\xb2\xc4\x9a\x59\x40\x40\x64\xc0\x6b\x63\x9d\x82\xfb\xb2\xcb\x1a\x6c\x01\xf0\x0f\x4c\x97\x10\x95\x93\x1b\x2b\x60\xa6\x20\xdd\x4e\xa5\xf9\x05\x9d\x48\x80\xd0\x4d\x1c\x19\x10\x3e\xcd\x8a\xc2\xd1\xb3\xc8\x20\x07\x8d\x37\x2c\xb0\x2e\x1d\xb5\x83\x48\x78\xa0\xda\xe4\x80\xa8\xf8\x55\x40\x2b\x40\xad\xd9\x9a\x33\x04\xff\xcc\x45\xaa\xe4\xd2\xac\x8a\x36\x23\xa0\xd6\x3c\x39\x24\x27\x1e\x76\x01\x1b\x6b\xed\x81\x39\x2c\xe9\x2b\x34\x25\x81\xa0\x35\x89\xd9\x80\x20\xa6\x8b\xc8\xba\xd3\x90\x5e\xae\xe5\x25\x86\x2a\xf4\xd4\x57\x29\xe8\x5f\x53\x72\xd6\x45\xfb\xf1\xe0\xb4\xd1\x34\xfb\x46\xfd\x36\x55\x27\xa6\xaf\x39\x14\x42\xd9\x04\x1b\x4c\x76\x41\xbd\x1e\xeb\xf1\xd7\x84\xf7\xbd\xa4\xaa\x5e\xa3\x84\x1e\x7c\xcf\xb4\x46\x7f\x1a\x2a\x93\x67\x47\xef\x18\xc8\xa7\xaf\xc8\x9a\x3b\x53\x0b\x5b\x04\xd6\xff\x4c\xaf\xf1\x16\xf7\x83\x9e\x84\x5c\x65\x21\xbf\x6f\x7d\xe1\xb4\xe5\x1b\x94\x9c\x51\x46\xa2\x5f\x67\xab\x03\x76\x2d\x3f\xe0\xcf\x6f\x54\x9a\x44\xdd\x78\x1d\x7b\x5c\x81\x88\x73\x0d\x00\x01\x9a\xea\x2e\xfe\x43\x9d\x42\x0f\x3d\x17\x51\xee\x33\x6e\xf5\x97\x1b\x14\x0e\xa3\x00\xab\x6b\x05\xa4\x24\x5c\x4a\x0b\x8e\x1a\x20\x41\x01\xb6\x3a\x0c\x3d\x42\x55\x0c\xa4\x7a\x23\x4e\x11\xd9\x52\x47\xc0\x5e\x3d\xaf\x54\x6a\xae\x26\x32\x26\x42\x99\xa9\xdc\x08\x1d\xa9\x94\xe7\xc6\x1a\x3e\x13\x69\x40\x92\xc6\x9e\x12\xf6\x35\x60\xf3\x00\x41\xf3\x86\x78\xef\x85\x4b\xb9\x3a\x2d\xf2\xdd\xcb\xd6\x6a\x5f\x1d\x16\x90\x39\x1e\xd8\xa6\x6b\x15\x7c\x26\x08\x0c\x0e\x05\xc9\x07\x57\x92\x67\x66\xd0\x4b\xfd\x19\x36\xc3\xc2\xb1\x7d\x46\xfe\x1e\x91\x57\xe6\x95\xae\x12\xd5\xa1\x04\x62\x20\xac\xeb\x40\x3c\x45\x26\xa0\x3b\x6b\xc1\xd1\x35\xf1\x34\x1d\x34\xa9\x53\xe9\xd3\x85\xaf\xb2\xd0\x4d\x69\x9c\x67\xe4\xbd\xb1\x70\x9e\x11\x7b\x55\x7a\xd1\x57\x40\x1c\x23\x15\x3c\x8f\x52\x3a\xa5\xa1\x81\xe5\x3a\x62\x49\x3e\x95\x49\x86\x2b\x53\x8b\x54\x3c\x99\xde\x85\xb1\x53\x82\x7e\xd8\xab\xa4\x7d\x6d\x40\x84\x72\x5b\x48\xe8\x24\xd3\xa0\x44\x5b\x87\x04\x24\x1c\xe2\xb4\xa0\x29\x5d\x48\x20\xfb\x14\xdf\x50\xb8\x3b\xdd\x5a\x34\x44\x2c\xa4\xed\x1f\x80\x24\x50\x95\x65\x2a\x27\x0b\xa8\xe6\x82\x1a\xb2\x38\xc6\x4b\x99\xa5\x7f\x74\xd5\xe0\x09\xc5\x4a\x15\x5d\x51\x9d\x22\x2f\xca\x36\xe0\x4e\x12\x4f\x42\x6f\x73\x88\x71\xc2\xb8\x4a\xc1\xf3\x15\x4b\xf2\x11\x94\xf1\x5b\xc3\x31\x95\x3c\x26\xd5\x2b\x6a\xce\x0c\x0d\xac\xfb\x8e\x79\xa6\xcf\xe7\xea\xa9\xcb\xcf\x3b\x14\x04\x85\xbb\x7a\x93\x72\x39\x43\x83\xfa\x2b\xc0\xa0\x02\x45\x8d\xb6\xcc\x5f\x31\x9f\x39\x85\xeb\xa3\xf4\xd3\x79\x3f\xb7\x25\x9d\x1b\xe3\xd6\xd9\x07\x8d\x70\x31\x78\xea\x31\xeb\xad\xbb\xb0\x05\x25\xdb\x35\xb3\x09\xc9\xfe\x56\xc0\x23\xa4\x78\x25\x31\x6f\x57\xeb\x2e\x88\x94\x5d\x01\x3f\x2a\x5c\xa7\xcf\xcc\x57\xce\x90\xea\xb4\x0f\x47\x8a\xd4\x1c\xa6\xbd\xd0\x22\x3b\xba\xf5\xb2\x88\x91\xd6\xb0\x42\x1d\x39\x62\xdf\x36\xc8\x7e\x21\x0c\x5a\x60\x58\xca\x45\x3d\x9a\x15\x53\xc2\x6b\x89\x6a\x80\x1a\x1e\x33\x64\x5b\xd6\x55\xee\x5d\x45\x09\xfd\x3a\x65\x13\xc9\x6c\xf4\x62\xc4\xa6\xbf\xc7\x95\x95\x4d\x7f\x4f\x31\x39\x12\xde\xa1\x64\x72\x4c\xfb\x87\x2a\xcf\xaa\xd8\x04\xc4\xff\xfa\x0d\x87\xa9\x91\x36\xff\xb3\x39\x6b\x73\xcc\x91\x79\x9f\x00\xfe\x78\x9f\x12\x53\x4c\xab\xcd\xb1\x01\x3a\x26\xf1\x1e\xba\x45\x2f\x56\xf9\xf0\xae\x7f\x61\x9b\x00\x62\xef\xed\x0f\xcd\x10\x6d\x0a\x3a\x51\xed\xe7\x4c\xe9\xa9\xb4\xad\x51\x8c\x2e\x43\x8e\xe6\x6a\x53\xf6\xf2\xeb\x9d\xe0\x60\xad\x42\x56\xdf\xd2\x72\x03\xdb\xbb\x67\xc9\xa9\xda\x01\x40\x09\xcc\x85\x97\x0c\x3b\x65\x63\xff\x34\xe3\x7a\x98\x25\xbe\xc6\x83\x9e\x58\xe1\x84\x8c\xb6\x40\x74\x93\xa6\x66\x50\x92\x3c\x23\xaf\x2d\x80\x2a\x67\x05\xd0\xcf\x2c\x0a\x63\x8e\x02\x8e\x9e\xa9\x34\x83\xc7\x16\x09\x00\x61\x69\x5c\xa6\xf2\xa3\xca\x6c\x65\x6c\xe6\xc7\xc3\x82\x2a\x69\xd8\x5e\x39\x76\x72\xfa\xc3\x39\x1c\xdb\x14\x04\xaf\xc8\xd5\x01\x46\x9d\xca\xdb\xb7\xaa\xd0\xfe\xa5\x22\x2e\xa7\xf2\xbf\xcc\xf0\xa0\x58\x94\x53\x5a\x53\x0b\xdc\xc4\x56\xde\x8f\xbd\xfe\x82\x8d\xbe\xfe\x97\x37\x5f\xde\x60\x85\x7a\x91\x81\x20\xc4\xa8\x7c\x84\x38\xba\xb6\x22\x4d\x21\x35\x6b\xdf\xc0\x15\x96\xfb\x47\x74\x8a\x8f\xd3\x2d\x67\x26\xcb\x4e\x46\x9f\xad\xde\xb5\x82\x7d\x34\x76\xcc\x22\x9e\x47\xab\x13\xeb\xcd\x91\x21\xb3\xe7\x1f\x4d\x1f\x32\xc3\x1b\x5f\xab\x99\xb1\xcc\xdc\xc0\xf4\xda\x09\xae\x95\xd6\x8b\x79\x05\x40\x9a\xdc\x97\x56\x65\x28\x6b\x88\x8b\xd3\x6b\x9d\x79\x4f\xcf\x7d\xdd\xd2\xbd\xfb\x10\x2a\x85\x8d\x25\x5f\x8b\x98\x4d\x91\x1d\x79\xfa\x7b\x3b\xfd\x53\xb9\x99\x9f\xa6\xdb\x45\x4e\x84\x2d\x66\x58\x4e\x81\x12\x79\xc7\x49\x37\x8b\xeb\x57\xa5\x1d\xc3\xdd\x7a\xd9\x6a\xf6\x77\xdc\xe8\xb8\x27\xf5\x77\x5a\x30\xec\xe3\xc6\xe7\xae\x8c\x9a\x29\x33\xde\xf1\xec\x71\xc4\xe6\x9a\x4b\xe0\x08\x8d\x43\xc7\xca\xef\x4f\x54\x34\x07\x36\x14\x4a\xe2\x70\xc9\xd3\x2d\xc0\xa9\x47\x53\x89\xd4\x31\xc0\x1e\xb5\x8d\xd2\x24\x42\x75\xc5\x8a\x2f\x24\x9e\x84\xcc\x2f\xa8\x56\xda\xe2\xb6\x0f\xcd\xb6\xba\xda\xeb\x83\x64\x22\x27\x65\x8f\x87\xfb\xa2\x72\x1f\x74\x8c\xb4\x00\x3c\xf3\x7c\x1b\xe0\x3c\xdd\x12\x1f\x11\xc9\x3a\xb0\xeb\xb0\xbf\x15\x73\x95\x5a\x7a\xa2\xc9\x39\x53\x1a\x38\x1f\x73\x45\x7f\x4a\xe2\xb6\x73\x2c\x91\xb1\xf8\x76\x50\x8d\x70\xf7\x91\x64\x5d\x3c\xf3\x98\x80\x5a\xb0\xfa\xb2\xb0\x8f\xb4\x30\xc7\x45\x6e\x6f\x71\xb5\x6f\x65\x55\xd0\xd9\x38\xcd\x57\x80\x04\x43\x0c\xb2\x1f\xd4\x35\xdf\xb2\x68\xc5\xe5\x32\xb8\x46\x03\x30\x47\x6c\x94\x46\x36\xff\x27\x20\xe3\x51\xda\xd6\x60\x51\x65\x11\x01\xa1\x5d\x0c\x18\xf1\x87\xca\x96\x0f\xf1\xe5\x52\x8b\x25\x94\xc5\x96\x44\xa0\xd1\x82\x3a\x5a\x46\x7c\x4e\x57\x69\xd9\x71\xea\xb3\xdb\x6e\x2e\xb9\xde\xba\xc2\x1c\x92\xc2\x70\x43\x57\x1b\xd6\x11\x4b\xc4\xe9\x88\xfd\xc9\x63\x2e\x45\xa4\xa4\xab\xec\x69\x7e\x87\x4d\x25\x5a\xbb\xc3\x16\x35\x14\x72\x37\xf7\x1d\x3e\xab\x09\x6a\x34\x2e\x9a\xce\xd2\xa8\x9c\xe7\xc5\x00\x5b\x49\xa2\x49\x67\xe6\xc7\x77\xf8\xdb\x4e\x58\x32\xdf\x18\xf3\x66\x49\x34\xcc\xf7\x8d\x85\x37\xcf\x26\x7e\xaf\x96\xb1\x6e\x8e\xfd\x05\xdd\x4f\xd5\xf2\x45\x9d\x4a\x5b\x29\xdd\xea\x54\xba\x99\x48\x5b\xaa\x7f\x3b\xde\x69\x68\x38\xd3\xe2\x33\x09\x79\x9d\x55\xaf\x5c\x0d\x16\xc0\xc9\xcc\x2a\x8d\x9e\x3b\x82\x19\x5c\x11\x72\xc9\x48\x36\x1d\x08\x25\x26\x05\x90\xce\xfa\x5e\xf7\xe3\x36\x0e\x87\xe6\xe1\x7f\x68\xb9\x1b\x5b\xdf\xa4\x69\xd0\xc3\xfd\x89\xe3\xa4\x07\x9e\x53\x5e\x70\x1e\x88\x69\x6d\x80\x53\xe9\x64\x99\x48\x9e\x2b\xcd\x5e\xdf\x58\x36\xc7\x37\x8e\x81\x18\x46\xf1\x18\x66\xa2\x34\x44\x68\x26\x9a\x6f\x5f\x00\xf1\x15\xf1\x6c\x18\x13\x4e\x93\xf4\xe3\x4e\x08\xbb\xf9\x56\x96\xf3\xf5\x26\x24\x71\x73\x8a\x44\x34\x32\x29\x0e\x02\xb3\x1d\x83\x38\x5f\x92\xf9\xb2\xa4\xa9\xa4\xe8\x38\xce\x9b\xd2\x0d\x9a\xc6\xd5\xb7\x04\x4f\x72\xb6\x27\x31\x01\x7a\xf2\x3d\x7e\xdd\x99\x55\xbc\xbd\xb4\x49\x03\x7f\x33\x28\xb9\xda\xf0\xa2\xc8\x29\x95\xc1\xa9\x8d\x97\x3c\x67\x36\xcc\x29\x69\xeb\xaf\xcf\x52\x55\xc4\x8c\x8c\x06\x65\x28\xf5\x29\x9e\x3e\x40\xf2\x76\x7a\xda\xc6\x78\x33\x50\x63\xc4\xed\x6f\xf8\x5d\xf3\x0a\x87\xcf\x5a\x2c\x5c\xe7\xd6\xa2\x91\x1d\x16\x7f\xa2\xe4\xfc\x47\xbe\xe9\xae\xa2\xe7\xf6\xee\x8c\x35\x2f\xa1\xaa\x76\xc3\xde\x6f\x19\x2e\x17\x11\x05\xc6\x99\x61\xc1\x32\xab\x21\x03\xeb\x39\x0c\x26\x37\x70\xe2\x85\xa8\x4c\x9e\x3d\x1e\xfc\x38\x5b\xdc\xd9\xfd\xa8\x0d\xd7\x42\xe6\x33\x78\xe2\xb0\x87\xc1\x43\x6e\xe0\xe7\x25\x87\xa4\x57\x50\xf0\x3f\xee\x15\xc6\x7a\x6d\x79\xf9\x7f\xb2\x3b\x8a\x6e\x64\x56\x8f\xce\x9c\x3e\xaf\x13\x80\x63\x04\x79\x31\x37\x71\x2d\xd3\x45\x2f\xb4\xc7\xe8\x05\x2f\x54\x32\x9d\xbd\x5e\xc8\xf7\x1e\xd9\xd9\x4d\x2b\x14\xe8\xa1\xa2\x42\x63\xca\xec\xdf\xfc\x9a\xc3\x42\x5d\x9f\xa1\x65\x3c\x67\x66\xfe\x52\xf6\xdf\x42\x2b\x8f\x94\x27\x8d\xeb\xa0\xe1\x4e\x7f\x78\x7f\x1d\x14\xf4\x77\x51\x81\x23\xa4\xa0\x87\xbf\x50\x05\x3f\xde\x2c\xe7\x5b\xeb\xee\xb7\xa4\x13\x36\x22\xc2\x79\xd8\xf3\xd8\x0c\x2e\x76\x81\x7d\xb7\xc1\x2f\x77\x58\xd8\x0d\xfa\x16\xee\xad\xc4\x91\xb5\xe6\x1b\x82\x3e\x11\xca\xb2\x1a\xc8\x3f\x85\x97\xf8\x8f\x5f\xfe\xf3\xb4\x4d\x8b\x09\xba\x3e\x14\x49\xe2\x3a\xff\x41\x27\x42\xc6\x90\x98\xe3\xb1\x83\x63\x39\xb3\x28\x4b\x91\xda\x92\x79\x36\xcb\xf0\x28\x05\x65\xcd\xe7\x60\x36\xc3\x45\xf4\x1d\xb2\xbb\xde\xc8\xba\xed\x5b\xca\xfd\xb4\x1d\xd5\xd9\x2c\xde\x4a\xbe\xae\xab\x57\xbd\x68\x1f\xb7\x89\x48\x63\xe8\x22\x3d\xbd\x31\x43\xf1\xbb\xf0\x9f\x25\x67\xb8\xcb\x74\x1c\xe0\x15\x1f\xb2\x83\xea\x7e\xaf\x93\x8f\xf0\xc6\x28\x89\x43\xc9\x53\x67\x8a\x3c\xd9\x9c\xdb\x43\x10\x60\x6b\xf1\xbc\x4f\xa9\x9f\x0d\x4f\x18\x30\x7a\xcd\x27\xc9\x77\xba\x53\xb4\xd1\xde\xf5\xe9\xbe\x0d\x89\xdd\x28\x95\x1e\x1a\x16\xe3\xa9\x25\xed\x9d\x01\x0f\xfe\x21\x3e\x27\x2e\x00\x77\xbb\x9c\x9c\xbb\x14\x8d\xe3\x91\xa3\xcb\xb5\x53\xa1\x01\xfc\x00\x75\x01\xb2\xf6\xd0\x89\x0e\xa4\x5d\xb6\x69\xc8\xd2\x0d\x44\x0c\x42\x1b\x98\xde\x77\x7a\xb4\xb5\x38\x5d\x50\x03\xca\x7d\x1f\x81\x6b\xa7\xd2\xc3\x41\x37\x66\x64\xad\xaf\x3c\xca\xdd\x9e\x43\x4e\x2e\x37\x8e\xc1\xb3\xed\x78\xa2\x56\x8e\xb9\x7e\xd3\x51\x3f\x95\xc1\xb1\x8e\x6c\x14\x16\x92\xe9\x46\xad\xe9\x52\x5d\x5a\x86\x07\x5f\xaa\x0f\x21\x5e\xec\x8c\xba\x9e\x87\x9a\x08\x90\x3c\x8c\xd4\x7a\x6e\x2e\xb6\x58\xe2\x47\x91\x26\xf0\x47\xc6\x96\xd7\xc6\x45\x05\xad\x5f\x81\xc4\xba\x95\xb1\x77\x70\xc8\x90\x22\x28\x34\x59\xbb\x7c\xf6\xd0\x09\x3c\x2e\x47\x64\xb3\x9d\x1d\x57\xdf\x00\xb4\xc9\x9f\xf9\x36\x03\x01\x09\x61\xac\xe2\x02\xa3\x2b\xe5\xfe\x8f\xfc\x9d\xdf\x71\x26\x91\x1a\x53\x41\xba\x32\xf4\x2e\x09\xd6\x3d\x8b\xd4\x4a\x65\x78\x3e\x89\x57\x59\xf3\xe0\xfc\x3a\x01\x53\xdd\x19\x30\xc5\x8c\xc5\xff\x8e\x18\x69\x47\x24\xe6\xc0\x80\x50\x70\x4c\x6a\x15\x91\x88\x72\xce\x40\x57\x0a\xcd\xb1\x79\xf6\x88\xad\x79\x22\x69\x1b\xe4\xda\x18\xc8\x58\xcc\x8b\xe5\xb2\x35\x4e\xf1\xe3\x07\x3c\xcb\xfb\xe4\x9f\x3e\x20\xd5\xc9\x88\x72\x8c\x90\xd2\xc4\x3e\x09\x33\xa5\x8b\x24\x15\xdf\x27\x8a\x74\xa4\x90\xd8\xa4\x4f\x48\xcc\xa6\xda\xa1\x04\x80\x58\xaf\x6d\x32\xf4\xb7\x58\xd9\xf7\x89\x95\x35\x26\x03\xaa\x3d\xc4\xb2\xf3\x59\x52\x76\x80\x3b\x7a\xb8\x27\x7b\x8d\xa3\x39\x83\x5e\x91\x74\x52\x26\x64\x9c\x81\x8c\xf9\xf1\xe9\x6c\xe0\xf4\x39\xfc\x52\xbe\x23\xc3\x7b\xa7\xd6\x82\xc1\xa3\x32\xa4\x13\x66\x54\x65\x31\x02\xf0\x90\x79\x41\x9f\x16\xa5\xa4\x2b\x1c\x57\x98\x9e\x8d\xbd\xd3\xfa\x5a\x8a\x67\x66\x4e\x83\x51\x88\xa6\x08\xa6\x07\x78\xe6\xdf\x90\xf6\xa9\x07\x5f\xba\x92\x52\x2d\x96\x5c\xc7\x00\xf9\xa5\x2d\x99\xf2\xe8\xd1\xfc\x3b\xf4\x8f\x9e\x48\x88\x0f\x4b\x79\x89\x28\x24\xdf\x5a\x22\x23\xd4\xa1\x24\x70\x89\xef\x1f\xfe\x3c\x63\x3c\xd2\x2a\xc3\x98\x59\x5c\x68\x5f\x14\x2e\xc1\x41\x7c\x4a\xe2\x82\xa7\xf8\xc4\xd6\x70\x17\xcf\x0e\xa2\xf0\x1c\x07\x4c\xea\xe2\xdb\x26\xe5\xb2\xbc\x27\xf1\x75\x81\x43\x21\xe9\x58\xf9\x8e\x0a\xe8\xbb\x52\x9a\x85\x7a\x86\x7e\x5b\xa1\xf7\xa9\x05\x8f\xb7\x21\x61\x4a\x22\x49\xa4\x8c\xc7\xeb\x44\x9a\xa9\xb7\x42\x19\xce\xbe\x42\xd3\x11\x4f\x11\xf7\x04\x7c\xd2\x69\x5a\xd9\xfa\x19\x93\xc2\xb8\x2c\x5c\x27\xe9\x16\xbc\xd4\x8d\x16\x27\xc1\x73\x82\xfd\x4d\xc0\xeb\x24\x9b\x4a\x5b\xdc\x5b\x64\x62\x51\xa4\xe8\xcb\xc2\x6d\xcf\xbd\x00\xed\xc3\x87\xc9\xc8\x1c\x63\x39\xb1\xb8\x06\x0f\x46\x6d\x84\x63\x80\x58\xeb\xf7\xac\x5e\x41\x5e\x4f\xe4\xa3\x01\x61\xb7\x52\xcf\x16\x69\xff\xcc\x3d\x90\xaa\xed\x2c\x39\x5a\x60\xaf\xdb\xab\xb1\xf7\x09\xbb\x2b\x71\xd0\xcb\x82\xa2\xf4\x99\x88\xdd\x4e\x4c\x24\xbc\x0e\xc9\x0a\x11\xe8\x42\xc4\xac\xc8\x10\xb0\x6f\xe6\x10\xac\xb5\xbd\x36\x63\x09\x83\x95\xa4\x62\xee\xed\x92\x4c\x49\x36\x2d\xfe\xf0\x87\x3f\x0b\xf6\x07\x12\xad\x03\x2b\x83\x21\x59\xa0\xf2\xc1\xd6\xc1\x40\xb9\x07\x08\xe4\xf9\xa9\xcd\x08\x6b\x42\x1d\xd9\xea\x39\xc0\xed\xf0\x68\xc5\xb2\x62\x8e\xa0\x14\x4e\x51\x3d\x2e\x1d\x53\xde\xa5\x02\x7c\x09\x9e\x63\xb6\xf7\x03\x82\x05\x37\x74\xbe\xd8\x40\x40\x00\x8d\x83\x81\x0e\x95\x69\x60\x50\xf0\x25\xc1\x80\xdf\x80\x3c\xcd\x88\xfd\x94\x3c\x89\x11\xbb\xdb\x70\xfd\x38\x62\xe7\x18\x5f\xfc\xab\x9a\xef\xbc\xff\x1f\x23\x06\xe6\xdc\xd4\xc1\xd1\xec\xc6\x68\xd2\x28\xe0\x87\x0c\x62\xda\xf5\x68\x8d\x85\x14\x80\xe0\x07\x4a\xa7\xee\x12\xe1\x68\x25\x11\x3d\xd6\x2d\xa6\x1d\xc7\xd6\x7a\xa7\xa9\x5a\x69\x7f\x9e\x52\xa9\x50\x13\xb4\xc2\x9c\x63\xb0\x12\xcd\x8b\x9f\x80\x67\xa2\x34\xdb\xa4\x3c\x37\x6b\x25\x23\x35\x2e\x5c\x15\x08\x38\xc3\x13\xb9\x52\x00\xd6\xd7\xf1\xb2\x0f\x9e\x6d\x94\x4a\x1b\xfd\xaf\xa3\x0e\x60\x2d\xda\xd9\x77\xf0\x26\x08\x9c\xcf\x42\xaf\xc4\x8e\xa2\x8f\x9c\xf9\x38\x5b\x20\x40\x0d\xab\x29\x2e\x80\x58\xc0\x0f\x47\xa8\x89\x62\xcc\x0a\xc2\xfc\xd0\x11\xb1\x12\x5a\xdc\x7a\x88\xc6\x89\xa2\x10\x62\x08\x2f\xab\xc5\xf4\xb2\xfa\x73\x5a\xdc\x42\x68\x77\x96\x34\x55\x7f\x0f\xdd\x5c\xf7\xab\xc6\x40\x3d\xf6\xdc\x1a\x70\x0b\xb5\xde\xc5\x7d\x67\x2b\xcb\x66\x51\xca\xb3\x9e\xd0\xad\x46\xbb\x33\xa1\x86\xce\xa0\x9d\xfe\x36\xf3\x27\x88\xa9\xae\x7b\x1e\x98\x53\x39\x76\xdc\x6f\xde\xd5\x72\xee\x21\x9a\x59\x74\x8c\x6b\x53\x83\xf8\x6d\x4f\x14\x38\x62\x59\x11\xad\x00\xa1\x5e\xb6\x53\xa1\xdd\xaa\xef\xd8\xd1\x54\x1a\x67\x05\xa5\x13\x38\x64\x40\x9f\x81\x65\x3b\xf9\x6f\xe1\xbc\x21\x82\x41\x86\x0e\xd0\x9c\x9b\xa9\x21\xcd\xf4\xaa\xb3\x68\x8b\x05\xb8\x7e\x14\x71\x10\xea\x2b\x36\x31\xcf\x8d\xf7\xec\x0e\x39\x58\xbf\x8e\x34\xd3\x7a\x9f\x59\xf8\x62\xa1\xb3\x5c\xb1\xb4\x69\xb2\x10\xd1\x36\xaa\x91\x61\x94\x70\x07\xc7\x8b\x29\xef\x17\x52\xed\x22\x4d\x68\xbe\x29\x7f\xae\x15\xf9\xb2\xb6\x64\xed\xff\x4e\x88\x56\x4b\xdd\xfe\x3f\x7b\x54\x6c\x47\xfe\xf7\x37\xb4\xd5\x3f\x65\x04\xa9\x5f\xc9\x7e\xc9\x7e\x59\x40\x13\xdc\x58\xc9\x6b\x6e\x84\x51\xfd\x58\x55\x99\x49\x1c\xee\x1b\x64\x5a\x6c\x49\xc4\xef\xd8\x0a\x54\xfb\x1a\xbb\xba\xdc\x01\x28\x6c\xfa\xa9\x1d\xaf\xb3\x54\x65\x85\xee\xde\xfc\xb7\xe5\x5e\xdb\xa7\x37\xd0\xf6\xc1\x62\x5b\xcf\x05\x94\x5c\xf7\xc1\x4b\xb4\x39\x0a\xe6\xbe\x54\xfd\x3d\x01\x8c\x9e\x05\x8b\x10\x1b\xde\x22\x84\x53\xfb\x5d\x10\x03\x81\x93\x77\x29\x42\x2f\xa0\x72\x38\x96\x16\x57\x29\xdf\xf7\x43\x81\x98\x1b\xef\x60\x15\xaa\x98\x52\xb8\xac\x57\x86\xf4\x18\xd9\x87\x1b\x9e\xaf\x30\x90\x03\x42\xf2\x98\x2d\xcf\x8d\x03\x85\x32\x65\x98\x92\x98\xa7\x6a\x0e\xda\x56\x20\x3d\xdd\xb6\xce\x69\x71\xf6\x1a\xba\xfa\x84\xf5\x59\xdb\x66\x3f\x40\x99\x9b\x16\x19\xf0\x1d\xd4\x73\x7e\x7d\x21\xa1\xc3\x82\x4d\xf5\xee\x1a\xb3\x75\x5e\x0b\x36\xd5\xf9\xa2\x8d\x55\x07\x7c\xe0\xc5\x1e\x45\x01\x17\x61\xa1\x98\x39\xde\x88\x3a\x93\x92\xea\xc8\x9e\x57\x79\x5f\x2b\x1e\x38\x95\x63\xfc\xa4\x24\xb5\xed\x74\x11\x1c\x04\x8f\x74\xa2\xdc\xfe\xc3\xca\x31\x36\x0e\x41\x5f\xe4\xd7\x8f\xfc\x8d\x0b\xc2\x23\x23\x28\xd4\x92\x79\xa2\x8d\x3f\x9d\x81\xbb\x90\x15\xf3\x13\xcf\x0b\xa0\x34\x38\x18\x40\x1b\xb1\xe1\x1a\x44\xf8\x56\x49\x1a\x9f\x34\x1c\x24\x18\x87\xf6\xfc\xe6\x96\x4e\x8a\xa7\x64\xbe\xe0\x5e\x88\x65\xa9\xee\xdd\x5d\x3b\xc6\xbd\x87\x28\x92\x2d\x89\x44\x73\xdd\x65\x2f\x4a\x97\xa5\x5f\x1b\xa0\xd4\x03\x01\xd4\xa2\x8b\xf3\xcf\x6f\x27\x4a\x63\xd6\xc7\x4e\xdc\x97\xaf\x56\x76\xd7\x98\xcb\x21\x59\x8e\x76\xd8\xe2\xf7\x45\x56\xc2\x04\x66\x1b\xfe\x2c\xa9\x1a\xbf\x9b\xdf\x6f\x2f\xfb\xd0\x2c\x2e\x6a\xec\x43\x0d\x9a\xe5\x2d\x85\x24\x66\x9b\x3c\x71\x22\x32\xa3\x40\x3a\x8e\xa7\x69\x48\x95\xec\x43\x41\x53\xe9\x03\x06\xe6\xf8\x4f\x53\xf3\xcf\xa8\x6a\xb8\x89\x7d\x21\x46\x7d\xff\x91\x2d\x1d\x27\xda\x25\x4a\x23\x9d\xe0\xc5\xdc\x5f\x9f\x77\xed\xe6\x63\xf9\x93\x3f\x58\xcd\xdc\x8e\x84\x2d\x3e\x76\xf6\x28\xb6\x83\xfb\xda\x9c\x32\xf1\xda\x62\x20\xc5\xed\x8a\x97\x23\xae\xb5\x85\xc7\xd3\x53\x19\xd7\x79\xb2\xe0\x51\x29\x82\xde\x8b\x4c\xaf\x74\x42\x62\x8b\x19\xc0\x03\x2c\x74\xd0\xb3\xbb\x70\xe6\x54\xcc\xda\xe7\xff\xd8\x77\x0a\xe1\x8d\xf4\x0b\xc4\x47\xba\x03\x87\xb8\x7d\xeb\x67\x64\x29\xb2\xcc\x6b\x25\x04\x3d\x07\x9b\xb3\x12\x27\x52\xe3\x90\x82\x16\x08\x88\x58\x1f\x32\x86\x7b\x96\x6a\x0d\xa3\xd1\xc5\x6e\x0e\x24\x34\xaf\xa9\x0d\x91\x62\x37\x5c\x39\x62\x22\x96\xc9\xab\x4c\x08\x30\x84\x58\x30\xf1\x64\x59\xa0\x2b\x24\xfc\x56\x41\x7e\x2d\xe2\xa4\xa8\x6a\x58\x94\x8a\x7b\x7e\xbb\x0b\xff\xbf\x77\x17\x06\xf8\xc7\x4b\x5e\x84\x9b\xcb\xc6\x7e\x3b\x0a\x7f\x80\xa3\xb0\x9c\xea\x13\xfa\x09\xcb\x03\x86\x0c\x2d\x75\xf5\xd6\xff\xfc\xb0\xc1\x15\x2c\xe8\x49\xd6\x7f\x9c\x69\xad\x0e\xdc\xc5\xbd\xad\x5f\x77\xf6\xd1\x3b\x0b\xde\x83\x0e\x6a\x93\x6a\xfb\x28\x0c\x41\xe5\xe1\x1c\x9a\x8b\x4b\xef\xf0\x65\x7b\xf9\xe7\x0f\x95\x84\xe9\xe3\x0c\x18\x13\xe5\xd2\x32\x57\xd6\x34\x49\x81\xe9\xc9\x0e\x13\x15\x50\xef\xf1\xfc\x55\xe6\x46\xbd\x6c\x8a\x2c\x1e\xf0\x32\xc9\xf2\x4f\x15\x9d\x93\xfd\x84\x52\x5e\x0c\x49\x60\xbb\x8a\xdd\x0c\x7e\xd1\x99\x00\xbf\x2d\xa7\xa8\x8d\x5f\x80\x6b\x0e\x78\x79\x2c\xb3\xbd\xe9\xf7\x90\x83\xe3\x8b\x1b\xaf\x2f\xe8\xf3\x3e\x6b\xbe\xd9\x08\x6d\xf3\xae\xb5\xd4\x38\xd0\xc4\xc3\x53\x40\xe7\x61\x25\x50\x6c\xaa\x72\xb6\x99\x3d\x5d\x69\x1a\xbe\x06\x43\x77\xda\x3c\x73\x57\x45\x9a\xb6\xce\xdc\x6e\xf6\xe9\xab\x87\xcb\xcb\xd9\xa7\xf1\xe5\xc3\x45\x27\x9b\x73\xf0\xb5\xd6\x31\x71\x3d\xa1\x31\xf1\x7a\x11\xe6\xb1\xc2\x0a\x5e\x29\xff\xd6\x78\x71\x28\xd2\xb4\xcc\xf4\x3d\x95\x5f\xa8\x1d\x00\xb1\xa1\x8a\x89\x19\x37\xd6\x39\x70\xe5\xe7\xc3\xd7\xbe\x98\xc6\xbf\xe0\x6f\x4f\x98\x7f\x89\x77\xa0\x47\x41\x3c\xf7\xcd\xe3\x4a\x08\xd9\x03\xb6\x03\x42\xa6\xda\xb6\xc3\xb1\xb5\x0c\xf6\xdb\x1e\x0f\x12\x48\xe3\x44\x6c\x25\x08\x8e\xb2\x3b\x70\xec\xbe\x94\xa3\x99\xce\x96\xc7\xe8\x9a\x43\xbb\x23\x64\xa0\x07\x5d\x2d\x4f\xd2\x3e\x95\x78\xaf\x34\x7d\xca\x55\x7b\x9f\xd8\x84\xd0\x08\x29\x97\xcb\x82\x2f\x45\x36\x62\xf6\xe1\x53\xb9\x4e\x96\x2b\xa0\xe7\x23\x01\x74\x77\x13\xe3\x79\xf2\x54\x95\x46\xaa\xa0\xeb\x12\x39\x95\xf4\x4e\x72\xe9\x9b\x47\x8c\xd9\x5f\xef\xdc\xeb\x10\x74\x0f\x1b\x22\x12\x7d\x39\x95\x38\xb9\xc8\x02\x6c\xc3\x3c\xe0\xb8\xf2\xbc\xba\x74\x39\x88\x2c\xa1\xd0\x9c\xb1\xe9\x4b\x08\x38\x4d\xa5\x2b\x8b\x41\x10\x60\x28\xe2\x8e\xe8\x60\xec\xd2\x6e\x7b\x62\x27\xc3\xee\x09\xea\x5b\xf3\xaa\x3f\xf8\x0c\x30\x1b\x6e\x36\x40\x31\xab\x6e\xc6\x7a\xde\x11\x78\x60\x38\xda\x6a\x25\xa1\x16\xaa\xb9\x37\xf6\xbd\xf0\x3b\xad\x29\x7c\x55\xcc\xd3\x01\x5d\xc2\xef\x77\x76\x0a\x4d\x72\x77\xa7\x7a\xc4\x78\x6f\x2b\x5b\xcb\x2c\xd3\xae\xc7\xce\x95\x6a\x99\x97\x23\x46\x4b\x4b\x9d\xa2\x1f\xec\x1a\x8c\x22\xca\xf7\x59\x2f\x3d\x0a\x18\xaa\x43\x64\xad\x4f\x57\x87\xd2\x24\xdb\xab\x3b\xde\x7f\xea\xdd\x23\xe7\x21\xd0\x61\x37\xc8\xc2\xd2\x39\x57\x32\xb0\x2d\x66\x92\x62\x74\x56\x7a\x2a\x41\xf3\x62\x36\x0f\xea\x42\x99\xf5\x3f\x72\x8b\x68\xe4\x67\x6e\x04\x9d\x8c\x0a\x9d\x19\x73\x49\xf6\x8e\xac\xb6\xd2\x8c\x4f\xa5\xa5\x6c\xb5\xe6\x78\x6c\x41\x08\xda\xfd\x15\x8b\x42\x36\x48\x78\x08\x1e\x6b\xce\x94\x14\xd6\x1a\x4e\xa5\xd5\x2b\x1b\x31\x3e\xcf\xac\x0c\x18\x97\x5b\xa7\xcd\x95\x38\xe1\x05\x2e\x19\xa0\x3b\x76\xdb\xbc\x8a\x1b\x50\x3a\xe7\x7f\x67\xfe\xf7\x8f\xdf\xfd\xdf\x00\x00\x00\xff\xff\x33\x8b\x94\x12\x67\x38\x04\x00") +var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x79\x73\x24\xb7\x95\x2f\xfa\xff\x7c\x0a\xdc\xf6\x8d\x90\x64\x17\x49\x49\xf6\xf8\x79\x38\x71\xe3\xbd\x6a\xb2\xba\xc5\x2b\x36\x49\x73\x91\x46\xef\xd6\x44\x09\x95\x89\xaa\x82\x99\x09\x94\x01\x24\xd9\x65\x87\xbf\xfb\x0d\x1c\x2c\x89\x5c\x2b\x6b\xe1\xd6\xca\x99\x08\x8b\x5d\x99\x89\xf5\xe0\xe0\xac\xbf\xf3\xcf\x7f\x43\xe8\x9d\x7c\xc4\xf3\x39\x11\xef\x8e\xd1\xbb\xef\x0f\xbf\x7d\x37\xd0\xbf\x51\x36\xe3\xef\x8e\x91\x7e\x8e\xd0\x3b\x45\x55\x42\xf4\xf3\x59\xb2\x52\x84\xc6\xc9\x91\x24\xe2\x81\x46\xe4\x08\xc7\x29\x65\x87\x4b\xc1\x15\x87\x0f\x11\x7a\xf7\x40\x84\xa4\x9c\xe9\xd7\xed\x9f\x88\x71\x85\x24\x51\xef\xfe\x0d\xa1\x7f\x41\xf3\x32\x5a\x90\x94\xc8\x77\xc7\xe8\xff\x98\x8f\x16\x4a\x2d\x5d\x03\xfa\x6f\xa9\xdf\xfd\x6f\x78\x37\xe2\x4c\x66\x85\x97\xf1\x72\x99\xd0\x08\x2b\xca\xd9\xd1\xdf\x24\x67\xf9\xbb\x4b\xc1\xe3\x2c\xea\xf8\x2e\x56\x0b\x99\xcf\xf1\x08\x2f\xe9\xd1\xc3\x77\x47\x38\x52\xf4\x81\x4c\x12\x9c\xb1\x68\x31\x59\x26\x98\xc9\xa3\x7f\xd2\x58\xcf\xf1\x6f\x24\x52\xff\x82\x7f\xc4\x3c\xc5\x94\x99\xbf\x19\x4e\xc9\xbf\x7c\x3b\x08\xbd\x9b\x13\x15\xfc\x53\xcf\x36\x4b\x53\x2c\x56\x7a\x45\x3e\x10\x15\x2d\x90\x5a\x10\x64\xfa\x41\x6e\x89\xf8\x0c\x61\x74\x2c\xc8\xec\xf8\x57\x41\x66\x13\xb7\xd0\x87\x66\x81\xcf\x61\x34\x57\x09\x66\xbf\x1e\xda\x65\x82\x96\x63\x22\x23\x41\x97\xca\xae\xf7\x35\x51\x82\x92\x07\x12\x76\x60\x26\x82\xf4\x44\x7c\x67\x72\x49\x22\x3a\xa3\x24\x46\xd3\x15\xa2\x6c\x99\x29\x24\xc8\xdf\x33\x22\x15\x9a\xd1\x44\x11\x21\x0b\xbd\xf0\x25\x11\xb0\x82\x67\xb1\xee\xe5\x23\x51\x43\x68\x3b\x1f\x55\xf8\xb6\x20\x72\xc9\x99\x24\xb2\xb0\x08\x08\xbd\xfb\xfe\xdb\x6f\x4b\x3f\x55\x67\x30\x44\x32\x8b\x22\x22\xe5\x2c\x4b\x90\x6b\x29\x1c\x8c\x59\x50\x4d\x3e\xb8\xd2\x18\x42\xef\xfe\xa7\x20\x33\xdd\xce\xef\x8e\x62\x32\xa3\x8c\xea\x76\xa5\xa1\xd2\x60\xb4\x85\xaf\xfe\xf5\x6f\x75\x7f\xff\x2b\x98\xd1\x12\x0b\x9c\x12\xbd\x2c\x9e\xae\xcc\xff\x95\xe6\xa2\x29\x41\x77\x9e\x53\x4b\x79\xe0\xa5\xd9\x5e\xe0\x94\xe8\x9d\xd7\xdb\x65\xbf\x80\xbf\x05\x91\x3c\x13\x11\x41\x53\x92\x70\x36\x97\x48\xf1\xca\x1a\x50\x68\x41\x13\x71\xf9\x89\xde\x4a\x2a\x88\xde\x2b\x25\x32\x52\x7a\xaa\x56\x4b\x18\xa4\x54\x82\xb2\x79\xb8\x14\xff\x1a\x74\x9a\x9a\xa1\xfd\x0d\x66\x66\x3e\x68\x9c\xd8\x98\x0d\xdd\x2b\x11\x66\x68\x4a\x90\x3e\xf1\x34\x26\x82\xc4\x08\x4b\x84\x91\xcc\xa6\x92\x28\xf4\x48\xd5\x82\x32\xfd\x6f\x43\xbe\x91\x5b\xb3\xd7\xb3\x36\xf0\x67\xfb\xca\xdc\x49\x22\xf4\xc0\x1f\x68\x4c\x62\xf4\x80\x93\x8c\xa0\x19\x17\x85\xe5\x39\x1c\xb3\xdb\x85\x5e\x87\x74\x4a\x19\x9c\x3c\xbd\x96\x8e\x42\xfe\xe0\x96\xeb\x0f\x48\xf7\x87\x32\x46\xff\x9e\x91\x64\x85\x68\x4c\x98\xd2\xe7\x5a\x96\x5b\xfb\x03\x87\xfe\x71\x82\x0e\x90\x5e\x67\x22\x14\xac\x37\x67\x8a\x7c\x56\x12\x1d\xa0\x84\xde\x13\xf4\xd5\x39\x95\x0a\x0d\xaf\xce\xbe\x1a\xa0\xaf\xce\x73\xc6\x21\xbf\x7a\x86\x15\xf6\x7f\xff\x77\x70\xf4\x14\x9e\x97\x0f\xdd\xbb\xa1\x3e\xcd\x37\xe6\x02\xca\x5b\xf8\xef\x7f\x0b\xdb\xb1\xfb\xd5\xce\xd5\x73\x96\x6e\xf9\x79\x57\x2e\x0e\xcb\x54\x64\xe0\x52\xef\xd0\xae\xfc\xbb\x72\x3b\xd4\x30\x6f\xb9\x23\xf7\xd6\x63\x2f\xb3\x6f\xf9\xb6\xf8\xb7\x9e\xc2\x53\xf3\xf0\x5d\x18\x38\x56\x70\xb2\x30\x65\xe6\x20\xfa\x73\x29\xa4\x3e\x8b\xee\x84\xbc\x12\xb6\xb5\x0b\x3f\x0f\x66\x16\xb0\x74\xc7\xa9\x83\x55\x79\x85\xf3\x4e\x68\x4a\xd7\xed\xef\x19\x8b\xb5\xf0\x68\x19\x2a\xcb\xd2\x29\x11\x7a\x19\x1c\x6b\x85\xd9\x4e\x35\xab\x55\x99\x60\x24\xee\x30\xcd\xbf\x67\x44\xac\x5a\xe6\x39\xc3\x89\x6c\x9a\x28\x65\x8a\x68\x49\xbd\xf4\x78\xc6\x45\x8a\x95\x7d\xe1\xcf\x7f\xda\x74\x21\x14\xbf\x27\xeb\xf6\xff\xcc\xec\x66\x84\x25\x90\x41\x9a\x25\x8a\x2e\x13\x82\x96\x78\x4e\xa4\x5d\x91\x2c\x51\x72\x00\xaf\x69\xed\x80\x88\x03\x7f\xcb\x41\x0f\xee\x76\xcf\x24\xfc\x82\x66\x9e\xd9\x31\xf2\x59\x41\x4b\x63\x06\xf7\x3b\x2c\x51\x78\x6b\x3d\xc1\x52\x6e\x47\x33\x92\x0b\x35\x99\xae\x0e\xef\x49\xa5\xdf\x46\xca\xc1\x0c\x61\xa5\x04\x9d\x66\x8a\xe8\x79\xeb\x36\xdc\xfd\x0c\xec\xd1\x08\x01\x5d\x58\xc3\xcb\x4d\x38\xa6\x82\x44\x30\xb7\x4d\x0e\x8c\xff\x4a\xcf\x5b\x6b\x62\x2b\x33\xfb\x7b\xb2\x02\x99\xa7\x66\x05\xfc\x96\x8f\xd9\x98\xa1\x03\x74\x3a\xba\x39\x19\x5d\x9c\x9e\x5d\x7c\x3c\x46\xef\x57\x28\x26\x33\x9c\x25\x6a\x80\x66\x94\x24\xb1\x44\x58\x10\x68\x92\xc4\x5a\xae\xd1\x83\x21\x2c\xa6\x6c\x8e\xb8\x88\x89\x78\xba\x65\x2c\x3d\x25\x2c\x4b\x4b\xf7\x0a\xfc\x9e\x8f\xbe\xf4\x85\x16\x63\xfc\xa3\xc2\x93\xff\xae\x2c\x30\xcc\x58\xf7\x1d\xb4\xf6\x6c\x82\x53\xb4\xa0\x49\x2c\x08\x3b\x52\x58\xde\x4f\xc8\x67\x12\x65\xe6\x4e\xfe\x67\xf1\x87\x89\x96\x7e\x79\x4c\x8a\xbf\x14\xfe\x91\x8b\x5b\x1b\x7f\xea\xf5\xed\x8d\xbf\x04\xed\xbc\xdb\x77\xf0\x0b\x8d\x6b\xdf\x86\x5f\xd6\xcc\xc1\xbd\xd3\x32\x58\xf7\x4a\xe3\xa8\xdc\x0b\x56\xd8\xab\x7d\x47\x10\x25\x56\x13\xac\x14\x49\x97\x6a\x43\xcb\x03\x46\x89\x96\x5d\xdb\x64\xd5\x0b\x1e\x93\x91\xeb\xef\x57\x2b\x82\x1a\x61\xd3\x70\xad\x19\x11\x84\x45\xa4\xb9\x85\x5b\x2c\xef\xf3\x16\xd6\x0b\xbc\x40\x63\x48\x2f\x3f\xca\x09\xac\xd2\x71\x2e\xf6\xea\x25\xc9\xdf\x5c\x27\xec\x16\xe6\x23\x3f\x70\xa1\x87\xf7\x16\x04\xde\xc2\xc0\x9f\x43\xe6\xdd\xf6\x44\x7f\x71\x56\x8e\x2d\xf9\x53\x6f\x13\xd9\x7d\x25\xbb\x5a\x50\xb8\x40\x72\x25\x15\x49\xd7\xda\x52\xde\xce\x42\xd8\x0b\xe8\xb5\x0e\xb8\x74\x07\xfe\x06\x4e\x7d\xf1\x46\xef\x8f\xf7\x06\x4b\xb6\x2f\x4b\xe8\x6b\x9f\xa7\xf3\x76\xb5\x4f\xf5\xc6\x6d\x5f\xe0\xee\x79\x13\xd3\x2c\xc8\x9a\xfb\x1e\xe4\x13\x99\x33\x1a\xf7\xca\xad\xf6\x04\x06\xb0\x46\x91\x2d\xda\xd2\xfd\xf9\xd3\x9f\x86\x16\x20\x63\xee\x53\x0b\x2a\x03\x63\x18\x8a\xb8\x30\xb2\x60\x6c\xcf\xbb\xd1\x65\x87\xb7\xc3\x9b\xd1\xed\x31\x1a\xa2\x18\x2b\xac\x0f\xb8\x20\x4b\x41\x24\x61\x0a\xec\x04\xfa\x7b\xb5\x42\x29\x8f\x49\x62\x34\xda\x0f\x5a\xb2\x46\xa7\x58\xe1\x13\xac\x70\xc2\xe7\x87\x68\x08\xff\xd4\x1f\x53\x89\x70\x22\x39\xc2\x8e\xac\x48\xec\x9a\xc0\x2c\x76\xac\x05\xa3\x88\xa7\x4b\x9a\x78\x3f\x82\x37\xde\x50\x16\xd3\x07\x1a\x67\x38\x41\x7c\xaa\xb9\x8a\xd6\xc0\x47\x0f\x84\xa9\x0c\x27\xc9\x0a\xe1\x24\x41\xb6\x5b\xf7\x02\x92\x0b\x9e\x25\xb1\x6e\xd7\x8d\x52\xd2\x94\x26\x58\x68\x15\xdf\x8c\xf6\xd2\xb6\x85\x6e\x17\xc4\x8f\x15\xc6\xa5\x57\x33\xc5\xf7\x44\x22\xaa\xd0\x92\x4b\x49\xa7\x49\x7e\xe6\xef\xce\x10\x8c\xfb\xe4\xfc\x0c\xec\x05\x91\x42\xdc\xf0\x50\xd7\xb9\xb5\x0f\xb9\x1e\x53\xcc\x18\x81\x8e\xb9\x5a\x10\x61\xbb\xb7\x2f\xbf\xb4\xea\x7f\x77\x71\x73\x35\x3a\x39\xfb\x70\x36\x3a\xad\xea\xfe\xb7\xc3\x9b\x1f\xab\xbf\xfe\x7c\x79\xfd\xe3\x87\xf3\xcb\x9f\xab\x4f\xce\x87\x77\x17\x27\x3f\x4c\xae\xce\x87\x17\xd5\x87\x96\xac\x3a\x9b\x11\xc2\x91\x6d\x78\xb6\x7a\x9b\xe9\x53\xd9\x4c\x07\x5f\xae\xd1\xd4\x3a\xa5\xba\x1b\x4c\xbd\x8d\xc2\x7e\x89\x96\x58\x4a\x23\x19\x99\x11\x1c\x8e\xd9\x27\x2e\x34\x03\x9b\x71\xcd\x23\xb4\xf4\xa4\x44\x16\x29\xca\xe6\xfe\xa3\x63\x34\xce\xbe\xfd\xf6\x8f\xd1\x39\x65\xf7\xf0\x17\x79\x8d\x8b\xd3\x5b\x94\x7b\x8b\xf2\x6f\xcb\xa2\xac\x45\x9f\xa3\xd0\x90\xbc\xdf\xe0\x2a\x2d\x5c\x80\x4f\x5c\x8b\x12\x3c\x53\xfa\x4f\xdd\x25\x90\x47\x4b\x88\x55\x37\x83\xa5\x8f\xb0\x6a\xe8\x43\xf0\x14\x04\xb9\xcf\x54\x02\x33\x7a\xe4\xe2\x7e\x96\xf0\xc7\x6e\xe6\xca\x8f\x44\xf9\x61\x68\xc1\xe9\x2d\x58\x29\x7f\xb6\x33\xf4\x03\xff\x48\x94\x1e\xfb\xb5\xed\xa5\x0f\xb6\xea\x83\xad\x5e\x36\xd8\xea\x55\x99\x0a\x9f\x9e\xb5\x16\xed\x8a\x86\xbf\x36\xf8\xe1\x1a\xdd\x6c\x0d\x5e\xb4\xc0\x49\xf6\x2c\x3c\xb9\xe8\x8a\xda\x27\x5f\x2e\x3a\x9b\xd6\xf0\xe4\xc2\x30\xde\x0a\x5f\x2e\x0c\xfa\xf9\x79\xf2\x6f\xc2\x4f\xd4\xbb\x81\xb6\x5c\xa8\x37\xc9\xba\x3b\xde\x4a\xcf\xe6\xc4\x79\xfa\xab\xa4\x12\xf3\xb1\x49\x90\xc7\x06\x51\x1d\x9d\xc3\x38\xd6\xc4\x6d\xd4\x06\x6a\xd4\x45\x66\x54\x43\x31\x6a\x63\x2f\x76\x0b\xb6\xd8\xf6\xd6\xeb\x1e\x3e\xb1\xe9\xad\xd7\x3d\x70\xe2\x23\x51\x85\x61\xbc\x95\x5b\xaf\x30\xe8\xe7\xbf\xf5\x7e\xa3\xf1\x12\x7d\x80\xc4\x13\x2e\xdd\x97\x7e\x57\xbe\xde\x10\x88\xdf\x40\xcc\x43\x1f\xe4\xb0\xd1\x1a\x7d\x59\x51\x0d\x5f\x6a\x18\xc3\xdb\x8c\x5b\xe8\x03\x15\xfa\x40\x85\x97\xf0\x28\xbd\xbd\x40\x85\x27\x55\x7c\x0d\x5d\x4e\x82\x53\xd6\xc1\x43\x05\x7f\x39\xbd\x71\xd3\x88\xfc\x66\x97\x14\x0c\xe5\x34\x1f\xc9\xaf\x28\x57\x78\x3a\xe9\x85\xa1\xf2\x67\x0f\x5c\xf0\xea\x1a\x05\x30\xe8\xf8\x2d\xa8\x7e\x95\xd5\xea\x3d\x4f\xbd\xe7\xe9\x75\xa7\xf9\xbf\x9a\x09\x7d\x79\xe2\x5f\x2f\x40\xf5\x02\x54\x2f\x40\xbd\x88\x00\xa5\xc9\x4a\x82\x1b\x3a\x14\x11\xde\x2d\xb9\x6c\x96\x85\xc2\xe8\xbf\x1a\x79\x08\xda\x2c\xba\x83\x81\x7a\x7f\x45\x0b\x2c\x11\x8f\xa2\x4c\x94\x62\xdc\xca\xa7\xfc\x44\x10\xac\xf4\x11\x29\x7a\x7e\x11\xb4\x8c\x04\x89\xb8\x80\x28\x2f\x8c\x96\x0b\x2c\x09\x52\x02\x33\x59\x15\xb4\x4a\x52\x92\x69\x15\xc6\xa5\xdb\x79\x0b\x62\x52\x75\x11\x9f\xcb\x3e\x3e\xe5\x71\xe5\x40\x9a\xb3\x5a\xf7\xa4\xfd\x86\xd8\xdb\xd4\x01\x37\xa5\xcb\xcc\x9f\xf0\xa8\x68\xb5\x7f\xcf\x47\xa5\xe0\x07\xd9\xf6\xa8\x14\xdd\x45\x7b\x39\x2a\x30\xae\xb7\x72\x54\xaa\x8b\xf8\x9b\x39\x2a\x75\x53\x7f\x0d\x47\xc5\xc5\x53\xee\xf9\xb8\x54\x82\x18\xb7\x3d\x32\xd5\x78\xcf\xbd\x1c\x1b\x3f\xbe\xb7\x72\x74\xea\x17\xf4\x37\x73\x7c\x9a\xa6\xff\xb2\x47\xc8\x07\x72\x74\x3e\x3c\xb7\x82\xce\xe7\x44\x18\xcd\x28\xd2\xa4\xb8\x1e\xab\x32\x0f\x5d\xd8\xee\xc0\xac\x3f\x0d\xbe\x87\xb7\x70\x12\xfc\x60\xcd\xd8\x7f\x33\x47\xa0\x32\xef\x57\x42\xfb\x47\x9a\x13\x3f\x00\xdc\x6d\xb7\x33\x70\x4d\x80\xf0\xe1\x02\x59\x0a\xf2\x40\x79\x26\x93\xd5\x81\xc8\x58\x1d\xb7\x07\x23\xc1\x23\x4d\x12\xc4\x59\xb2\x42\x52\x61\xa1\xdc\x63\x36\x37\x21\x39\xfa\x30\x25\x58\x2a\x74\xcf\xf8\x23\x43\x33\x4c\x93\x4c\x10\xb4\xe4\x94\xa9\xc3\x31\x3b\x63\xe8\xda\x8c\x11\x34\xef\x01\xca\xa4\x3e\x82\x11\x66\x8c\x2b\x14\x2d\x30\x9b\x13\x84\x99\xc3\xfe\xcb\x29\x03\x71\x81\xb2\x65\xac\x0f\x96\xee\xa2\x64\xa5\xc9\x0f\xd8\x98\xdd\x82\x15\x43\x22\xf2\x59\x09\x92\x92\x64\xa5\xfb\xd0\xb4\xaf\x38\xb2\xeb\x63\x86\x6a\x23\x0a\x88\x10\x5c\x48\xd0\xd9\xa7\xab\x7f\x60\xa6\x28\x23\x08\xd4\x4c\x69\x90\x23\x0f\xd0\x39\x97\x90\xd4\xf6\xe3\x5f\x24\x8a\x92\x4c\x2a\x22\x06\x68\x9a\xcd\x25\xa2\x0c\x2d\x13\xac\x66\x5c\xa4\x7a\x84\x94\x49\x85\xa7\x34\xa1\x6a\x35\x40\x29\x8e\x16\xa6\x2d\x58\x03\x39\x18\xb3\x98\x3f\x32\xa9\x04\xc1\xbe\x77\xf7\x10\x7d\x1d\x3e\x33\x04\x20\xbf\x19\x40\xe4\x03\x4d\x97\xc9\x2a\x1c\x7e\x80\x24\x03\x7b\xa2\x1b\x21\x31\x9a\x92\x08\x67\xd2\x1a\x76\x94\x58\x21\xf2\x79\x81\x33\x09\x7b\xa7\xa7\x67\xad\x1e\x11\x4f\x97\x09\x51\x04\xd1\x19\x52\x82\x92\x18\xe1\x39\xa6\x7a\xe9\x6e\x48\x0b\xf2\x8d\x27\x7a\xbb\x81\x96\xea\x7f\x05\xcb\x47\xca\x05\x41\x31\x51\x98\x26\xb2\xdd\x7a\xff\xac\x04\x87\x9e\x9c\xde\xd0\xeb\x25\x37\xf4\xaa\xa9\xad\xe5\x26\xb4\x3b\xd6\x5f\x85\x6f\xe9\x2a\x2c\x72\x85\x57\x71\x17\x1a\x94\xad\x3d\x08\x84\xcc\x5a\xc5\x23\x9c\xec\x28\x1b\x5e\xdb\x41\x6d\x2c\x1d\xba\x0f\xfb\x43\xf1\xb6\x0e\x85\xd9\xb5\xd7\x73\x2a\x9a\xfc\xfd\x7b\x87\xda\xdb\x04\x24\xaf\x25\xa5\x54\xa2\x14\x2b\x7d\xb1\xcd\xed\x15\xdd\x11\x06\x3a\x47\xc5\x7b\x53\x07\xe5\x39\xa0\xf0\x7a\xdf\x7e\xef\xdb\x6f\x5c\x99\xb7\x09\xe1\xff\x6a\x10\x20\x7a\x10\x99\x27\x02\x91\xa1\xb2\x07\x91\xe9\x41\x64\xba\x2e\x50\x0f\x22\xd3\x83\xc8\xbc\x59\x10\x99\x27\xc5\x8f\xd9\x1f\x4a\xcc\x7e\xa0\x60\xde\x94\x74\xde\x4b\xe6\xbd\x64\xde\xe3\xbd\xf8\xa9\xed\x8b\x0b\xba\xaf\xdf\xc5\x24\x21\x8a\x34\x1b\xe8\x88\x48\xb5\xc2\x61\x6e\x78\xca\xb4\x28\x38\x17\x44\xca\x5d\x79\x9a\x6f\x38\xac\x4f\x55\xe3\x8f\xc8\x61\xfa\x3d\x59\x82\x5d\xa7\x8d\xd9\xf9\xb6\xdf\x26\xcb\xf3\xc3\xef\x31\xaf\x7a\x1e\xd8\xf3\xc0\x6d\xa6\xf6\x7a\xcc\xd1\xc1\x61\x7e\x2e\x7b\xb4\xe7\xed\xcb\xac\x59\x38\xbd\x33\x8e\xd6\x9c\xd1\x1a\x0a\x07\x58\x0f\xee\x0f\xb7\xa5\xf3\x1d\x79\xfd\x26\x7d\xb5\xf1\x75\xd3\xce\xdb\x64\xea\x66\xec\x3d\x47\xef\x39\x7a\xcf\xd1\xdf\x36\x47\x77\x27\xf9\x45\xdd\x8b\x41\xe5\xd9\x09\x8d\x77\x29\x3e\xdb\xbd\x90\x17\x4e\x49\x6c\xb2\x62\x7d\x8e\x9b\xf8\x55\x7f\x12\x96\x95\x75\xf9\x60\xdd\x1d\x90\xe1\xd7\xf9\xaa\x17\x6a\x81\x6e\xe7\x8f\xcc\x2b\xbc\x9e\xc5\x6f\xc2\x25\x59\xbb\xc2\x5f\x48\x75\xda\xd7\xc1\x45\x9e\xbd\x38\xed\xeb\x98\x76\xef\x22\xeb\x6b\xd3\xf6\x4e\xa0\x8e\x13\xee\x9d\x40\xaf\xd7\x09\xd4\x61\x1b\x9f\xc4\xb3\xfb\xcc\xc7\xf3\xb9\x44\xc7\xee\x99\x3b\x2e\xc1\x86\xc5\x28\x5b\x26\x1c\xc7\x6d\x5e\xad\x5c\xf0\x0a\x11\x66\x3a\xa4\xef\xb0\x18\x09\x32\xa7\x52\x11\xa1\xf7\xa5\x56\x30\x5c\x9f\xcf\x93\x77\xff\x16\x84\xbe\x7c\xb4\x9d\x23\x36\xc3\x6e\xdf\xfd\xa9\xc3\xf0\xaf\xed\x9d\x0d\x9c\x68\x8a\x63\x67\x44\x37\xe2\x5b\x8a\x57\x68\x81\x1f\x88\x8b\x32\x7f\xc0\x09\x8d\x71\x79\xad\x4b\x33\x6c\x1b\xd0\x7f\x6c\x36\x20\x5c\x1c\x8e\xaf\x08\x2c\x8b\x51\xc0\x16\xa0\x02\xde\x59\x68\xad\x3c\x11\x04\xc7\x2b\x34\x25\x84\x79\xb2\xa9\xb9\x4f\x1a\xc6\xbc\x17\xc1\xf9\xc5\xb5\xd2\x2a\xf5\xbc\x16\xb5\xf4\x19\xe3\x5e\xeb\xf9\xcd\xee\x3a\xe8\xee\x8a\xa7\xfc\xfe\x6d\xb1\xa0\x3e\x16\xb6\xb7\x4d\xbe\xbc\x6d\xb2\x8f\x85\xed\x15\xfd\x57\xa6\xe8\xf7\xb1\xb0\x7d\x2c\x6c\x6f\x06\x69\x9f\x76\x6f\x06\xf9\x22\x62\x61\x3b\xc9\xf0\x5b\x46\xc3\xbe\x71\x69\xbe\x17\xe6\xdd\x7b\xbd\x30\xdf\x0b\xf3\x5f\xa8\x30\xff\x3a\x56\xb8\x97\xe4\x7b\x49\xbe\x97\xe4\x7b\x49\xbe\x97\xe4\xf7\xbe\x8c\xbd\x24\xff\x9c\x55\x27\xea\xc5\xf9\x8d\xd3\xdd\x36\x77\x06\x7e\x24\xea\xad\x7a\x02\x7b\xa9\xbd\x97\xda\x5f\xb7\xd4\xfe\x6a\x26\xd4\x97\x9a\xe8\x4b\x4d\xf4\xa5\x26\xfa\x52\x13\x4f\x97\x23\x65\x0f\x97\xc2\x2a\x93\x06\xab\x38\x0f\x36\xe9\x24\xf6\x74\x48\x8d\x2a\xf5\xb0\x5e\xee\x41\x43\x85\x52\xae\x75\x37\x46\x0a\xef\x38\x06\x67\x02\x6b\xe6\xf4\x81\x30\xe4\x92\x03\x06\xf6\x1a\x1b\x80\x31\xe5\x5f\xfe\xf0\x99\xe4\x5b\xac\x10\x46\x8a\xa6\xe4\x10\x9d\xcd\x0c\xb7\x88\xf4\xe9\x92\x44\xc9\x52\x34\x96\xa1\x7c\xf8\x88\xc5\xf9\x58\x5d\xdf\x34\x0f\xce\x31\xaf\x0d\x1c\xb3\xcd\x12\x65\x58\xaf\x6b\x1c\x90\x46\xa7\x9e\x43\xc1\x41\x4b\x89\x48\xdc\x97\x85\x6e\xdd\xcb\x29\x8e\x35\x63\x08\x86\x90\x67\x09\x87\xef\xc3\x9d\x4e\xa5\x0f\x2f\x2a\x7c\x6f\xbe\x06\xb8\x52\x80\x17\x05\x58\xf5\x4e\xc3\x58\x40\xf4\x9b\x16\xf1\xe2\x2c\x21\x08\x4b\xc9\x23\x8a\x41\x8d\x31\x32\x00\xa2\xca\x59\x1a\xdc\x4b\xae\xeb\x98\x4a\x3c\x4d\x48\x6c\xd7\x98\xe4\xd1\x4e\xad\x23\xa7\x12\x4d\x89\x5e\x62\xcd\xa6\x8a\xab\xbf\x30\x12\x48\xcd\x68\x82\xa1\x90\xea\x48\x08\x33\x03\x69\x91\xa0\x0d\x71\xbe\x55\x21\xba\xcf\xb8\xf3\x4f\x7b\x91\xba\x17\xa9\x7f\xa3\x22\xf5\x2b\x8a\xd0\x7c\x15\x89\x83\xe0\x03\xd5\x9c\x7f\xe2\x0d\x9b\xb2\xab\xad\xe7\x9c\x4a\x25\x51\x94\x49\xc5\xd3\x66\xc9\xe7\x93\xeb\x61\xe8\x3b\x38\xe1\x6c\x46\xe7\x99\xb9\x5b\x7e\xb5\xb2\x89\x3f\xd1\xb9\x9a\xb2\x5a\x92\x6e\x86\x21\x6f\xb7\x5e\xd7\x59\x6d\x3e\x62\x8d\x93\xb7\xa6\x9d\x37\x71\xdb\xd5\x0f\xfd\xb9\x2e\xbd\x4d\x94\xd5\xdc\x3e\x6e\x35\x4d\xad\x5f\x4c\xae\x47\x37\x97\x77\xd7\x27\xa3\x63\x34\x5c\x2e\x13\x6a\x5c\x56\x86\xc2\xe8\x3f\xf4\xa4\x4c\xd5\x28\x4f\x22\x56\x20\x32\x60\xee\xe0\x23\xd3\xfa\x20\x3a\x40\x27\xe7\x77\x37\xb7\xa3\xeb\x86\x06\x2d\x49\x00\xe2\x00\x49\x97\x09\xc8\x47\xf7\xd9\x94\x08\x46\xb4\x84\x6f\x21\xdf\x73\xcf\x99\x69\x74\xf4\x5f\xa3\x93\xbb\xdb\xb3\xcb\x8b\xc9\x5f\xef\x46\x77\xa3\x63\xe4\x68\x4b\x37\xab\xc7\xa5\x47\x11\xaf\x18\x4e\xb5\xd6\x5d\x2c\x6f\xf5\xf7\x8c\x64\x20\x8e\xd1\x39\x4b\x09\x54\x62\x28\xb4\xe8\x06\x7c\x3e\x7c\x3f\x3a\x2f\xb6\xbc\x20\x21\x0e\x3d\x4a\xf0\x94\x24\xd6\x95\x07\xde\x29\x7d\x7e\x02\xc4\x7e\xe3\xe3\xcb\xcc\xaa\xfe\xf5\x6e\x78\x7e\x76\xfb\xcb\xe4\xf2\xc3\xe4\x66\x74\xfd\xd3\xd9\xc9\x68\x62\x35\xa9\x93\xa1\xee\xb7\xd0\x93\x55\xb8\xd0\xdf\x33\x9c\x68\x8d\x9c\xcf\x1c\x32\x3d\x7a\x5c\x10\x86\x32\x06\x14\x67\xd4\x7c\xd0\x4a\x42\x58\x1e\x33\xa3\xab\xf3\xbb\x8f\x67\x17\x93\xcb\x9f\x46\xd7\xd7\x67\xa7\xa3\x63\x74\x43\x12\x50\x84\xdd\xa2\xc3\x2e\x2e\x93\x6c\x4e\x19\xa2\xe9\x32\x21\x7a\x35\xb0\xc5\x81\x58\xe0\x07\xca\x45\x41\x5b\x81\x75\x04\x56\x00\xed\x3b\x85\x73\x12\x2c\xdd\xe5\xc5\x87\xb3\x8f\xc7\x68\x18\xc7\x7e\x0e\x12\xda\x28\x50\x8e\x43\x13\x3a\xa8\xa0\x09\x45\xd8\x04\x84\xe8\xed\xe3\x0f\x44\x08\x1a\x93\x12\x1d\x0d\x6f\x6e\xce\x3e\x5e\x7c\x1a\x5d\xdc\xc2\x8a\x29\xc1\x13\x89\x16\xfc\x11\xbc\x40\x30\x43\x70\x0e\x3d\x60\x9a\x40\x67\x6e\xb3\x38\x43\x8f\x0b\x0a\x9e\x43\xa8\x50\xe0\x7b\x36\x36\x09\x91\x55\x93\x2a\x9e\x5b\xeb\x2f\x1c\xbc\xaa\xaa\x5e\x3e\x49\xd5\x37\x4a\xc7\xa2\xed\x85\x02\x95\x57\x5f\x5c\x47\xad\xd5\x2f\x4a\xe4\xd6\x6c\xa0\xa8\xd0\x4b\xf3\x4c\xf3\xbd\xee\x6c\x9f\x28\xae\xe1\xb3\xdd\xde\x9a\xf1\xc6\x13\x67\xa7\x3a\xfa\x67\x81\x01\xff\x6b\x8f\xd1\x5a\x26\x41\xa7\x15\xbb\x30\xc8\x56\xff\xd5\x5e\xb3\x1d\x2f\xef\xe0\xcb\xba\x0f\xab\x7e\x9c\xe0\x83\xb7\x70\x2b\x87\xc3\x7d\x45\x37\xf0\x75\x28\x67\x39\x71\x3d\x25\x0a\xc7\x58\x61\xcd\xd7\xe6\x44\x1d\xa2\x4b\x06\xcf\x6e\xb1\xbc\x1f\x20\x57\x78\x0c\x71\x81\x72\x41\xf6\x19\x12\xdc\xdf\x88\x01\x73\x73\xe5\xaa\x37\x12\xf4\x46\x82\xfa\x95\xe9\xa3\xe5\x1a\x56\x78\x5f\x37\xea\x46\x36\xff\xfd\x5d\x7c\x81\x89\xdf\x05\xbe\x94\x6c\xb4\x85\x1b\x71\xad\x3d\xf6\xed\x5e\x86\xcf\x6b\x91\xdd\xeb\xd5\x68\xea\x92\xf5\xf7\x9e\xf9\xbf\xfe\xde\xeb\xef\xbd\xfe\xde\x7b\x05\x2b\xfc\xe2\xd6\xed\x1a\xee\xfe\xa2\xe6\xed\x75\x0a\xf2\xd6\x30\x79\xb9\x42\xbc\x09\x50\xde\xaf\x5d\xf0\xf0\x6a\xcc\xda\x55\x0d\x59\x22\xb9\xc0\xc2\x14\xfc\x8e\x78\x9a\x72\x56\xb4\x9b\x0f\x90\x77\xf2\x83\x51\x72\x2d\x98\xaa\xa6\xec\xbc\x1b\xfa\x36\xec\xdd\xc1\xba\x3c\x47\x76\xd3\x5e\x45\x08\x93\x36\xd0\xeb\xd7\x4f\x28\x67\xf4\x38\x86\x7b\xc5\x31\x7c\x1d\x73\x7d\x92\x4c\xa8\xfd\xdb\xe0\xdf\x46\xf6\x53\x0f\x58\xd8\xe7\xf7\xf4\xf9\x3d\xf0\x7b\x0f\x58\xb8\x3f\x6a\x7d\x5a\x99\x9e\xc7\x64\x52\xaa\xd0\xe5\xff\x39\x29\xbb\xbc\x0a\x4f\x42\xff\x57\xe1\x41\x9e\xf0\x04\xad\xd3\x78\x9f\x55\xbd\x2e\x78\x4c\x76\xa8\xec\xa5\x47\xd4\xb9\xaa\x57\xa1\xaf\x57\x2e\xc2\xbb\x65\x32\xa2\x7c\x61\xe0\x4f\x2c\xc8\x37\x50\xcc\x97\x68\x8d\xaa\xa1\xff\xde\x34\xb5\x76\xa1\xbe\xd4\xb2\x09\x39\x83\x7b\x43\x8e\x9a\x6e\xb7\x80\x0b\xef\x99\x34\xdc\x05\xf5\xcf\xfd\x8d\x50\xff\xf8\x69\x20\x6d\xba\x5f\x08\x25\x24\x9b\xe2\x55\xb0\x2d\x82\x4d\xa1\xfb\xb7\x61\xe7\x09\x47\xfc\x1c\x96\x9e\x56\x62\xfa\xe2\xae\x89\xb6\xa3\xd1\x5f\x16\x1d\x97\xeb\x4b\xbd\x32\x7a\xe4\x99\x36\xdb\x4b\x0f\xed\xd2\x9b\x7e\x5e\xcf\x84\x7b\xd3\xcf\x9b\x36\xfd\x18\x47\xf5\x64\x89\x05\x61\xaa\x46\x46\x2f\x5f\x27\xf0\x7a\x98\xc3\xef\xa4\x0e\x68\xc0\x48\x8b\xf6\x42\xf6\x57\xd5\x97\x65\x0b\xb2\x82\xc1\xc4\xc8\x15\x41\x0e\xd3\xd1\x3f\xf3\xbf\x03\x25\x20\xf8\xb1\xc6\xe1\xdb\x16\x08\x66\xf0\xf4\xa5\xbe\xbe\x33\x1b\x13\xb6\xaf\xcc\x27\x27\x24\x36\x38\x6a\x9b\xe3\xc7\x5c\x7a\x03\x89\x73\x81\x2b\x9f\x61\x4d\x5c\x99\xed\xe9\xc0\x89\x61\x79\xfc\xc4\xda\x30\xb3\x2b\xf3\xe9\x29\x7c\xf9\xb6\xb2\xa2\x1a\x86\xfe\xbc\xe1\x67\x55\x72\xec\x76\xba\x1d\x71\x50\x93\xe7\x13\x24\x93\x68\x51\x99\xcf\xc2\x0d\x77\xb9\xdc\x18\x52\x9d\x9a\xae\xa7\xe7\x16\x20\x2b\x67\xae\xdb\xc4\x2d\x8d\xbe\xdd\x79\xbf\x78\x30\xce\x1a\xba\x7f\xd1\xc0\x9c\x16\xc6\xbd\x5b\xe9\xca\x17\xe3\xcb\xde\x76\xff\x7c\x9c\xf9\x23\x51\x5f\x1e\x5b\xfe\x48\xd4\x73\xf1\xe4\x6d\x19\x71\x2b\x33\xca\xeb\x15\xbd\xd1\x38\x91\x0a\xff\x7d\xb3\xd3\xdd\x24\x5e\xeb\x67\x33\x49\x1b\xac\xe5\xd3\xe2\xc3\xa9\x2a\x6e\x0d\x18\x05\x1d\xb0\x4f\x5f\xee\xd3\x97\xfb\xf4\xe5\xf2\x51\xef\xd3\x97\xfb\xf4\xe5\xda\x64\xab\x98\x24\x44\x91\x46\x19\xee\x14\x1e\xbf\x94\x0c\x67\x7a\x7f\x46\x09\xce\x74\xf8\xe5\x09\x71\x66\x5e\xbd\x1c\xd7\xcb\x71\xfb\x98\xee\x6b\xd5\xa4\x1d\x95\xbf\x06\x4d\xba\x33\x6a\x53\x1e\xb0\xb6\x36\x4e\xc1\x4e\xfb\xd7\xb5\x01\x0a\x01\x02\xa6\x1b\xce\xba\x20\x84\x2b\x37\xec\xb7\xc3\xe4\xe4\x53\xf3\xb1\x5d\x5c\xad\x6e\xdd\xbf\x58\x4f\x6b\x5f\xe3\xa3\x76\xad\x7a\x47\x70\xcb\xe2\xf4\x8e\xe0\xde\x11\xfc\xea\x1c\xc1\x7b\x57\xa9\x5a\x2b\xf5\x5f\xdb\xab\xb9\x35\x42\xdd\x5d\xf4\x46\x97\xd1\xa4\x60\x70\xc9\x63\xb2\x4c\xf8\x0a\xec\x3d\xad\x96\x6f\x5f\xa3\xbf\x26\x50\xab\x7c\xf9\xbb\xb7\xaf\x2a\x42\xfb\x6b\xbf\xff\xdd\xc8\x9f\x4b\xad\x79\x2d\x62\x6f\x3e\xef\x57\x21\xe8\x1e\xfd\xb3\x94\x9e\xd1\x09\xbf\x25\x48\xa8\x58\x7f\x0c\xc6\xac\xfe\x49\x50\x4a\xc0\xde\x9a\xd3\x4c\x05\xb1\x8f\x52\x1f\x80\x25\x11\x6a\x15\xbc\x49\xd2\xa5\x5a\xfd\xe7\x98\xd1\x1c\x71\x9c\xce\x19\x17\x86\x07\xea\x8f\x17\x98\xc5\x89\x3e\x3f\xd2\xb7\x13\x61\xc6\xb8\x02\xe1\x04\x66\x10\xa3\x07\x8a\x8d\x28\x33\xbc\x3a\xeb\x10\x1f\xd0\xe9\x2c\x16\x5c\xfb\x6f\xe8\x24\x3e\x37\x96\xf7\x9a\x5b\xf4\x63\xc2\xa7\x50\x7d\x22\x2b\x9a\x18\x74\x03\xbd\x33\xba\xb0\x73\x2f\xc5\x3c\x14\x96\xf7\xe5\xa4\xb1\x62\x0a\xc1\xa4\x35\x8d\x6c\xcd\xbb\x05\x60\xc5\xf6\x57\x4b\xa9\x66\xc5\x67\x36\xf9\x0c\x1e\xc3\x90\xcb\xe3\x70\x3f\x86\x1d\xba\xdf\xf2\x96\xdd\x2f\xae\x7a\x17\xfc\x28\x88\x12\xab\x09\x56\x4a\x33\xa4\x7d\xe6\xb7\xdd\x62\x79\xbf\x43\x7e\x5b\xd1\xd3\xb4\x26\xbf\xad\xd0\xd7\x2b\xe7\x58\x85\xfc\xb6\xe2\xc0\x9f\x9c\x63\x75\x24\xee\x2f\x2e\x95\xa1\xeb\x51\xed\xd3\x1a\xb6\x58\xba\x2f\x35\xc5\xa1\x8d\x17\xbf\x9a\x11\x96\xae\x83\x2f\xf1\xe4\x16\x2f\xb7\xfe\x88\xb6\xad\xd1\x17\x57\x66\xa4\x24\xb3\xac\x99\xdb\x1b\x29\x37\x52\x16\xbb\xf6\x3d\xaa\xa7\xb1\xbf\x07\xbb\xd1\xd7\x1f\xec\xeb\x0f\xf6\xf5\x07\x9f\xbc\xfe\x60\x37\x9d\xb5\xb3\xc2\xda\x55\x5b\xed\xa6\xaa\x36\xeb\xa9\x4f\xe0\x73\xee\xae\x4c\x96\x72\xe3\x8b\x6a\xe4\xb6\xb9\xf1\x85\xee\xdf\x84\x73\xba\x30\xe2\xe7\xc8\x8d\xff\x8d\x6a\x96\xbd\x5a\xf9\x24\xeb\xf6\xa5\xea\x94\xaf\x5c\xa1\xec\xb3\xfa\x7b\x44\xc5\x3e\xd4\x64\x8f\x8b\xd3\x87\x9a\xf4\xa1\x26\x5f\x6c\xa8\x49\xb3\x7a\x42\xe3\x9d\x33\x36\x37\xc4\x50\xf7\x56\x06\xf1\x2b\x88\x52\x5a\xec\xef\x80\xaa\x5e\xa7\x2d\xe4\xb2\x74\x01\x05\x79\x7b\xcd\xe1\x2c\x7e\x13\x2a\x43\xed\x6a\x3e\x87\xea\xd0\x03\x72\xef\x15\x90\xfb\xd5\x4d\xbb\x97\x2a\x7b\xa9\xb2\x17\x9c\x3a\x4e\xb8\x17\x9c\x5e\xaf\xe0\xf4\x52\xda\xd0\x97\x84\xcd\xa4\x45\xac\x42\x56\x52\x6b\x9c\xb2\xc1\x57\x02\x67\x46\xb6\x4c\x38\x8e\xd7\x45\x1c\xfd\x1a\x88\x6f\x2d\x72\x5f\xd0\xae\xc8\xe3\x94\x4b\xe2\x5f\x9b\x6c\x67\x1a\xd0\x3d\xbe\x05\xd1\x4e\x8f\xd3\x8c\xb8\x43\x74\x64\xd8\xe1\xbb\x3f\x75\x18\xf8\xb5\xbd\x93\x81\xd3\x4c\x71\xec\x00\x0c\x8c\x78\x96\xe2\x15\x5a\xe0\x07\x82\x66\x98\x26\xc6\x3e\x47\x63\x5c\x5e\xdf\xd2\xdc\xda\x06\xf4\x1f\x9b\x0d\x08\x17\x87\x93\x67\x34\xea\xfb\xc2\x48\x55\x11\x4e\x9c\xbb\x0f\xde\x59\x60\x89\x70\x22\x08\x8e\x57\x68\x4a\x08\x0b\x32\xd9\xba\x8e\x79\x2f\x82\xf1\x8b\x87\x67\x86\x74\xf3\xa2\x51\xde\xc0\x35\x1a\x2b\x57\xef\x5d\xb1\x2c\x73\x92\x1d\x74\xc8\x5d\x14\x47\xf9\xfd\x5b\x61\x2e\xcf\xa1\x26\x7e\xc1\x5e\xa4\xde\x53\xf4\xdb\xac\x0f\xf9\x6a\xb4\x8f\x5e\x45\xef\x93\x8c\x7b\xcf\x4f\x6f\xc0\xe8\x0d\x18\x7b\x5f\xc6\xd7\x64\xc0\x78\x41\x19\xdd\xe4\x36\x3d\x49\xe1\x94\xd7\x22\xad\xf7\xc2\x7a\x2f\xac\xf7\xc2\xfa\x17\x2b\xac\xbf\x8e\x15\xee\x25\xf5\x5e\x52\xef\x25\xf5\x5e\x52\xef\x25\xf5\xbd\x2f\x63\x2f\xa9\x97\x24\x75\xf8\xcb\xa1\x05\x6c\x2a\xb6\x77\x16\xd7\xb7\x83\x06\xe8\xe6\xa6\xb3\xd8\x00\x6f\x45\x32\xef\xa5\xf2\x5e\x2a\x7f\xdd\x52\xf9\xab\x99\xd0\x97\x97\x10\xdc\xa7\xd4\xf6\x29\xb5\x7d\x4a\xed\x4b\xa4\xd4\x3a\x5e\xd2\x26\xe1\xb4\xd5\xf5\xf9\xc9\x32\x97\xaf\x29\x8b\x92\x0c\x44\x55\xfd\xf3\xfb\x8c\x26\x31\x02\x15\x49\x6b\xba\x94\xb3\x6f\x80\x9e\x80\x14\x60\x9c\xae\x12\x45\xbb\x04\xf3\x53\x85\xd5\xbd\x5a\x21\x26\x1f\xed\xb6\x30\x6c\xfb\xda\x53\x5f\x8e\x77\x8b\xea\x7f\x85\xdf\x5c\x43\xaf\xa8\x26\xe0\xc0\x89\x25\x9a\x23\xb9\xf1\x3d\x71\x75\xc0\xda\x3e\x37\xaa\x15\xf8\xb3\xfd\xe8\x6d\x95\x32\xa8\x8e\xba\xaf\x10\x88\x82\x5d\xeb\x2b\x04\x3e\xe1\xbc\xdd\x39\x5b\x33\x73\x47\xa3\xc6\x16\xfe\x46\xa7\xfd\xe2\xc1\x8e\xcd\x27\xfd\x45\x43\x1f\x6b\x2f\xb2\x4a\x6e\xdd\xd1\x3f\x6b\xef\xa9\x17\x28\x8c\xb8\xf1\xe5\xb4\x97\x12\x89\xbb\x5c\x4f\x1f\x89\xfa\x52\xee\xa6\xbe\x4c\x62\x5f\x5e\x67\x4f\xd3\xdd\xea\xee\x79\xb3\xb3\xed\x8b\x42\xf6\x45\x21\xfb\xa2\x90\x7d\x51\xc8\xbe\x28\x24\xfa\x8d\x17\x85\xdc\x58\x7e\xdd\x43\x79\xc8\x5d\xa4\x57\xd3\xfd\x97\x22\xc0\xf6\x25\x22\x7b\x19\x76\x7f\xd3\xfd\x6d\xc9\xb0\xaf\xd0\x82\xf2\x2a\x6a\x61\x7a\x0b\xca\x8b\xc3\x12\x79\xd6\xde\x19\x9a\x28\x8c\x7b\xf1\x5f\xef\x15\xa1\xc8\x6d\x5a\x8f\x52\x64\xff\xaf\x47\x29\xea\x51\x8a\x1a\x66\xdd\x07\x56\xf7\x28\x45\xa8\x0f\x1d\xee\x43\x87\x5f\x73\xe8\x70\x87\x6d\xec\x51\x8a\x3a\x8a\x8c\x4f\x84\x54\xe4\x64\xae\x9d\xd0\x8a\x6a\xc4\xc1\xf5\x88\x45\x3f\x57\x35\xa2\x57\x2b\xea\xb9\xb1\xf6\xc8\x45\x3d\x72\xd1\xae\xb4\xf3\x2a\x14\xd0\x67\x44\x30\xaa\xe3\x30\x9b\xe4\x45\xd7\x30\x97\x5d\x15\xcc\xb7\x81\x66\xe4\x46\xdb\x27\x49\xf7\xe9\x18\xaf\x3f\x1d\xe3\xd5\x25\x49\xbf\x1a\x4d\xa5\x57\xe7\xfb\x3c\xe9\x3e\x4f\xba\x37\x76\xf4\xc6\x8e\xbd\x2f\xe3\x6b\x32\x76\xbc\xb0\xdc\xfe\x84\xa8\x46\xaf\x51\x82\xef\x05\x78\xf3\x5e\x2f\xc0\xf7\x02\xfc\x17\x2a\xc0\xbf\x8e\x15\xee\xa5\xf7\x5e\x7a\xef\xa5\xf7\x5e\x7a\xef\xa5\xf7\xbd\x2f\x63\x2f\xbd\x3f\x1b\xd2\x51\x9d\x08\xbf\x31\xda\xd1\x86\x6e\xbe\x20\x99\xed\x2d\x49\xeb\xbd\xa4\xde\x4b\xea\xaf\x5b\x52\x7f\x35\x13\xea\x91\x8f\x7a\xe4\xa3\x1e\xf9\xa8\x47\x3e\xda\x4a\x46\xfa\x37\x7b\x2c\xdf\x05\x37\xb1\xbf\xb2\xdf\xbd\x4f\xf8\xf4\x76\xb5\x24\xfa\xbf\xa7\x34\x25\x4c\x82\x44\x4b\xd5\x2a\x94\x89\x1a\x56\xbe\xba\xe6\xef\x6e\xce\x2e\x3e\x9e\x87\xa9\x6a\xef\x3e\xdd\x9d\xdf\x9e\x5d\x0d\xaf\xfd\xba\xf8\x59\x85\x6b\x61\xbf\x2b\x88\x75\x96\xe4\xaf\x89\xd6\x5f\xe1\xd4\xdc\x28\xac\x32\xb9\xdd\xc8\xae\x47\x37\xa3\xeb\x9f\x20\xd5\x6e\x72\x7a\x76\x33\x7c\x7f\x5e\x20\x88\xc2\xf3\xe1\xc9\x5f\xef\xce\xae\x9b\x9f\x8f\xfe\xeb\xec\xe6\xf6\xa6\xe9\xe9\xf5\xe8\x7c\x34\xbc\x69\xfe\xfa\xc3\xf0\xec\xfc\xee\x7a\xd4\xba\x1e\xad\xa3\x6d\x57\x64\x24\x2c\x12\x64\xb1\xa0\xc8\x72\x0d\x91\xaf\x21\xf2\xe2\xa3\x63\x87\x75\x7d\x1d\xa3\x3b\x6b\x17\xa0\xb6\x71\x17\x92\xe4\x1b\x32\x0a\x4d\x4c\x25\x9e\x26\x24\xae\xb4\xe4\xd6\xb0\xa9\x25\x5c\x18\xd4\xa3\xd6\xc0\xbd\xc8\xa9\x79\x5e\x64\x78\x01\x82\x04\x60\x45\x58\x5c\xd3\x87\xd9\x87\xc6\x1e\x98\xe6\x5d\xf4\x81\x14\x7a\x8a\x32\x21\x08\x53\xc9\xca\x08\xdc\xb2\xd2\xa8\xdb\xbe\xa6\x66\xed\x9d\xea\x1b\x5c\x60\x69\x22\xaf\x0a\xe3\x17\x24\x21\x58\xd6\x8c\xd9\xee\x7e\xb7\x65\xf1\x7b\x65\x2d\x3a\xe6\x32\x9a\x61\x9a\x64\x82\x94\x4e\x0b\x67\x7f\xcb\x18\x68\xb0\xa3\xcf\xfa\x32\xd3\x27\xf9\x9c\xcf\x69\x84\x93\x4b\x68\x86\x8b\xed\x4e\xce\xf0\xa2\x40\xca\x97\xd7\xad\x94\x1b\xbe\x5d\x26\xd4\x03\x34\xbc\x38\x85\x24\x63\x37\xd4\xfc\x55\x45\x55\x02\x03\xba\x20\x52\xcf\x33\xe2\x2c\xb6\x2e\x10\x7d\x81\xad\x02\xb9\xf4\x6f\x1c\x12\xb5\x33\xa9\xb5\xa5\xe1\xc5\x29\x3a\x42\x97\xd7\x63\x76\xa9\xd5\x68\x4d\xf7\x44\x0b\x74\x66\xd9\xa8\x44\x8c\x2b\x44\xd3\x25\x17\x0a\x33\xa5\x65\x59\xb8\xc9\xec\x8a\x18\x22\x3e\xe1\x69\x9a\x29\xac\x69\xa5\xb2\xa8\xcc\x58\x05\x6e\x88\x3a\x8b\xc1\xc3\x50\xb3\x86\xe6\xaa\xcb\xe7\xb2\x14\xba\x7d\x7d\xcd\x16\x55\x49\x1a\x57\xb4\x31\xd7\x04\x16\x02\x17\x2f\xc4\x77\x54\x91\xb4\xfc\x7e\xc7\x08\xd9\x7f\xd5\xea\xc9\x27\x26\x23\x85\x88\xa1\x88\x16\x54\x91\x48\x69\x2a\xda\x8a\x26\xee\x2e\x7e\xbc\xb8\xfc\x39\xbc\x04\xdf\x0d\x3f\x9d\xfe\xf9\x4f\x85\x1f\xae\x3f\x55\x7e\x98\xfc\xf4\xe7\xca\x2f\xff\x4f\x2b\x3d\x95\x7b\xaa\xa8\xaa\xc1\x5c\x0e\x40\x2a\x04\xd3\xa8\x9b\x2a\xa2\x29\x9e\x13\x24\xb3\xa5\xa6\x00\x79\x58\xdc\x5f\x2d\x15\x9d\x73\x1c\x53\x36\x37\x19\xc2\xe7\x54\x11\x81\x93\x4f\x78\xf9\xc1\x99\x71\xb7\x58\x9d\xff\x7d\x53\xc8\xe7\x7e\xf7\xcb\xf0\x53\x98\x11\xfe\xee\xea\xfa\xf2\xf6\xb2\x75\xd6\x85\x16\xaa\xc7\x48\x3f\x3e\x86\xff\x45\x47\x48\xb7\xee\x85\xb7\x94\x28\xac\x85\x5a\xf4\xb5\xc9\x6a\xf4\x59\x48\x94\x25\x70\x6a\x96\x82\xa6\x14\xb8\xa2\x31\x64\x7d\x63\xe4\x43\x2f\x00\xfb\x73\x63\x3e\x30\x79\xcb\xf6\x5e\x61\x31\x16\x31\xfa\x9b\x2c\xc3\x0b\x80\xfd\xd4\xfc\x40\x62\x74\x80\x16\x4a\x2d\xe5\xf1\xd1\xd1\xe3\xe3\xe3\xa1\x7e\xfb\x90\x8b\xf9\x91\xfe\xe3\x80\xb0\xc3\x85\x4a\x13\x03\xa7\xa0\x57\xe1\x18\x5d\x09\xae\xb9\x20\xe8\x98\x44\x50\x9c\x40\x36\xf5\x94\x32\x2c\x00\xa6\xe1\xd7\x88\x0b\x72\x98\x6f\x8c\xb5\xad\x58\x56\x68\xed\x2f\x47\xfa\xa5\x1a\x66\x52\xde\x4f\x14\x93\x88\xc6\xf6\xa6\x24\x2c\xe2\x60\x80\x33\x26\x7b\xdd\x9e\x4b\x05\x25\xd6\x5f\xea\x97\x33\x90\xb7\x71\x4c\x02\x34\x04\xc5\x8b\x04\xa7\x65\xf7\x33\xa3\x79\x65\x5a\xcb\x84\x00\x5d\xb8\x18\xdc\xab\x4b\x3d\xe1\x88\x27\x68\x9a\xcd\x66\x44\x84\xee\xda\x81\x16\xc8\xa9\x44\x82\x44\x3c\x4d\xe1\xd2\xd3\x5f\x65\xd2\x50\x35\xac\x98\x1d\xed\xe1\x98\xc1\xfe\x6b\x49\x1d\x28\x20\xe6\xc0\xea\x18\xd1\x1a\x3b\x5b\x99\x6e\xa6\xd9\xac\xe0\x0e\x06\x98\x12\x1c\x23\xaa\xc6\x6c\x98\x24\x48\x90\x94\x2b\x12\x46\x1a\x83\xef\xa8\xb0\xe0\xc0\x22\x05\x59\x26\x38\x72\x79\xec\x09\x8f\x70\x82\x66\x34\x21\x72\x25\x15\x49\xc3\x06\xbe\x06\x73\x83\x5e\x33\x2a\x51\xcc\x1f\x59\xc2\xb1\x9d\x47\xf9\xb3\x6f\x8a\xa7\x71\xe4\x20\x24\x46\x42\x70\x01\xff\xf3\x23\x65\xf1\xde\x38\xd4\xdd\xcd\xe8\x3a\xfc\xf7\xcd\x2f\x37\xb7\xa3\x4f\x9b\x71\x1f\x4f\x59\x30\x3c\x50\x43\x8f\xd1\x8d\x59\x04\x2e\xf4\xa5\x2e\x1a\x26\xf5\xc9\x92\x52\xfe\x03\x8f\xb7\xe4\xbe\x9f\x86\x17\x77\xc3\x02\x47\xb9\x39\xf9\x61\x74\x7a\x57\x12\x69\xed\xfc\x0a\x62\xa8\xd1\x60\xc2\xdf\x4e\x7e\x38\x3b\x3f\x9d\xd4\xe8\x3c\xef\xae\x47\x27\x97\x3f\x8d\xae\x73\xf5\xa4\x76\x89\x4a\x83\x29\x33\xab\x5b\xc3\x94\x16\x3c\x46\xd3\x55\x3d\x60\x88\x16\xfe\x12\x70\x49\xe6\x90\x39\xa6\xd5\x63\xe0\x4d\x0e\xbb\x25\xff\x42\xeb\xbc\x03\xfb\x0e\x20\xad\x18\xfb\x80\x11\xfa\xea\x1b\xd6\xbd\x63\x16\xe8\xda\x06\x04\xc5\x2f\xdc\x31\x1a\x22\xa9\x5f\xcc\xf4\xa1\x16\x74\x3e\x07\xdb\x57\x69\xa8\xa6\x35\xfb\x29\x2c\x2f\x7c\x67\xf6\x7f\x29\x38\x9c\x73\xdd\xad\x35\x9a\x7a\xc5\xda\x7c\x68\x80\x62\x0b\x2d\x0a\x0c\x3a\x73\xcd\xd0\xdc\x66\xe9\x45\x68\x5c\x2f\x73\x1e\xf3\xdc\x00\x60\x5b\xd2\x98\xec\x96\x82\x3c\x50\x9e\x05\x9f\x5a\xe0\x97\xc2\x8e\xd7\x36\x9f\x2f\x00\x2c\x9b\xd1\xeb\x4b\xcd\x78\xf2\xa8\x6d\x41\xb3\xb0\x07\x68\x61\x26\x78\x5a\xd3\x46\xf1\x98\x9c\x5d\xde\x28\x81\x15\x99\xaf\x4e\x2d\xcb\xd8\xfe\x78\x9c\x5e\xfe\x7c\x71\x7e\x39\x3c\x9d\x8c\x86\x1f\x8b\x27\xde\x3f\xb9\xb9\xbd\x1e\x0d\x3f\x15\x1f\x4d\x2e\x2e\x6f\x27\xee\x8d\x56\x92\x6f\xe8\xa0\x7a\x4f\x17\x5f\x3c\x46\x9a\xe5\x02\x6b\x74\x88\x8c\x01\x7f\x9c\x92\x19\x17\x86\xcf\xa7\xce\x83\x6f\x45\x18\xb7\xb6\x56\x9d\x28\xcd\xe2\x18\x8c\x3b\x75\x4d\x1a\xc3\xad\x12\x04\xa7\x70\x4f\x60\x86\x46\x2c\x3e\xb8\x9c\x1d\xdc\x98\x1f\x53\x2c\xee\x89\xf0\x9f\x3e\x0a\xaa\x14\x61\x05\xad\x04\xbb\x21\x7b\x3d\x27\xef\xe0\x10\x5d\x6b\xbe\xaf\xdf\xf7\x97\x9a\x26\xf6\x98\x28\x4c\x13\x69\x07\x5b\x58\xd7\x63\x74\x8e\xc5\x3c\x37\x25\x7d\xcd\x67\x33\xd3\xd8\x37\x66\x18\xfa\x0e\x2b\xcc\xa2\x86\xf7\x6a\xd2\x70\xf7\x22\xf4\x67\x5f\xf6\xf2\x70\x95\xaa\xee\x96\xbb\xd1\xd4\xdd\x15\xac\xb8\x51\x3a\x6f\x0b\xb7\xca\x55\x13\xad\xc1\xc4\xcd\xe3\xf6\x4b\xa6\xbe\xed\x2a\x39\x15\x5f\xac\x21\x27\x93\x88\xa6\x77\x7e\xa6\x88\xa8\xa3\x25\xf2\x99\x5a\x9d\x37\x1c\x77\x89\x84\xf2\x66\xc0\x42\x88\x97\x4b\x82\x85\xac\xdb\xed\xa2\x18\xd8\xb0\xf7\xa6\xa7\xb0\x0f\xbb\xc9\xae\x9f\x01\xe2\x0c\x74\x66\x2f\x44\x94\x28\xb2\x03\x0d\x98\xb6\x2a\x14\x70\xce\xd9\xfc\x34\x5f\xc7\xe0\xcf\x5d\x04\xfc\x1a\xe1\xe2\xd3\xf0\xfa\xc7\xd3\xd2\x6f\x3f\xdc\x16\xe5\xfe\xeb\x9b\x76\x2b\x58\xb3\xb4\x71\x80\xae\x6f\x6e\x8f\xd1\x72\xa5\x16\x9c\xf9\x0b\x31\xe6\x51\x96\x43\x8c\x1d\x20\x23\x34\x2a\x09\x22\xa4\x0b\x86\x73\x2b\x71\x05\xb8\x64\x97\x16\x03\xec\x13\x95\x5a\x7d\x36\x3f\xbe\xb7\xe0\x64\xdb\x2d\xc6\x87\xe1\xd9\x79\x49\xcc\x9a\x9c\x8e\x3e\x0c\xef\xce\xdb\x67\x5b\xf8\xae\x4c\xec\xe8\x00\xe9\xe7\x45\x47\x3a\x9d\x99\xdb\xd3\x41\xac\x19\xe5\x9e\x30\xb0\x40\xd9\x0c\x3a\x63\x7c\x8e\xc9\x32\xe1\x2b\xbd\x18\xfa\x10\x14\x64\x02\x4d\x59\x33\x4c\xed\x25\x1b\x0c\x16\x4c\x32\xd6\x86\x06\x17\xfa\x81\xc3\x75\x23\xb1\x5f\xf2\x22\xac\x5b\xe9\x12\xbb\x32\xae\x30\xfb\x9f\x1b\x85\xd5\x96\xdc\x66\x78\x72\x7b\xf6\xd3\xa8\xa8\x29\x9f\xfc\x70\xf6\x53\x9d\x7c\x37\xf9\x38\xba\x18\x5d\x0f\x6f\xd7\x88\x69\xa5\x26\xeb\xc4\x34\xa9\x07\x5c\x76\x85\x52\xe9\x43\x84\x22\x03\x0e\x87\xa8\x92\xe8\x81\x4a\x3a\xa5\x00\xa5\x67\xdd\x8a\x77\x67\x70\xc7\x40\xce\x24\x55\x2b\x27\xc8\x99\x7e\x8b\xfb\xa8\xef\x14\xdb\xbe\x31\xc0\x84\xce\x46\x30\xd9\x99\xcd\x71\x93\x3e\x46\xa0\xe5\x3f\x80\xfa\x1a\x7c\xc6\xb4\x4a\xc1\xe6\x44\x98\xe1\x80\x2b\x25\x1c\x4b\xf0\x5c\x8f\x2a\x14\xdb\xf2\x55\xf3\xe2\xfb\x9c\x30\x22\x00\xab\xcb\x77\x62\x44\x4a\x41\xd8\x57\x5a\xfa\x5c\x26\x34\xa2\x2a\x59\xa1\x08\x72\x0c\xc1\x36\x99\x62\x86\xe7\x56\x4c\x02\x85\xaf\x44\x12\x7f\x35\x78\x83\x97\x33\x6b\xa7\xbf\xa5\x64\xcb\x63\x76\x77\x71\x3a\xfa\x70\x76\x51\x24\x81\x1f\xce\x3e\x16\x84\xf9\x4f\xa3\xd3\xb3\xbb\x82\x5c\xa3\x65\xfa\x76\x9e\x53\x6e\xb6\xe6\x28\xfa\x97\x8e\xd1\xa9\xf9\xf4\x58\x2f\x6e\x0d\x98\xa2\x37\x03\x94\xd6\xe1\xda\xc5\xe8\xb9\x3f\x46\x4c\x89\x5a\x27\x43\x57\x63\x9a\x75\x28\x16\xac\x69\xf5\x71\x07\x95\xbe\x2f\xca\x1e\xe2\x6a\x5c\x86\xf5\x2a\xea\x4e\x0e\x73\x1b\x5b\x18\x90\x00\xe6\x93\x26\x73\x5e\x8d\x8f\x2a\x67\xe6\x3f\x81\xbf\x39\xcd\xa4\x32\x7e\x41\x20\x4e\x74\xff\x17\xa9\x17\x14\xfc\x86\x87\xe8\x86\x90\x31\x73\x76\x94\x39\x55\x8b\x6c\x7a\x18\xf1\xf4\x28\x47\xf2\x3c\xc2\x4b\x9a\x62\xad\x53\x10\xb1\x3a\x9a\x26\x7c\x7a\x94\x62\xa9\x88\x38\x5a\xde\xcf\x21\x24\xc6\xf9\x46\x8f\x7c\xb3\x73\xfe\xbb\xf3\x3f\x7e\x7b\x70\xfe\x97\x6f\xdf\x55\x6d\x85\x4d\xfb\x3f\x62\x11\x5e\xca\x2c\xb1\x21\x74\x22\x5c\x1b\x77\xe4\x33\xb2\x6e\xbf\x2f\x8a\xdb\xb5\xdb\x65\x7b\x72\x75\x17\xfe\xf3\x63\xf1\x9f\x9f\x46\x9f\x2e\xaf\x7f\x29\x70\xca\xdb\xcb\xeb\xe1\xc7\x02\x43\x1d\x5d\xfd\x30\xfa\x34\xba\x1e\x9e\x4f\xdc\xc3\x5d\xac\x90\x3f\x32\xfe\xc8\x8a\x4b\x23\x1d\x07\xac\xf4\x74\x8c\x3e\x70\x81\x7e\xf4\x3b\x79\x30\xc5\x12\xae\x18\x77\x67\xc9\x01\x5a\xf2\x18\x18\x2f\x22\xcb\x05\x49\x89\xc0\x89\xb5\x9e\x48\xc5\x05\x9e\x1b\x99\x47\x46\x02\xab\x68\x81\xe4\x12\x47\x64\x80\x22\xa0\x86\xf9\x00\x36\x05\x94\x4e\x3e\x2f\x5b\x3c\xaf\x33\xa6\x68\x4a\x9c\x31\xc2\xfe\xf3\xd6\x6c\xc6\x16\x9b\x73\x79\xfb\x43\x51\xec\xfd\x70\xfe\xcb\xed\x68\x72\x73\xfa\x63\xeb\x7a\x9a\xcf\x0a\x23\xbb\x81\x68\xa2\x13\x9e\x64\x29\x0b\xff\xde\x7e\x6c\x67\x17\xb7\xa3\x8f\xe5\xd1\x5d\x0e\x6f\x8b\x94\x71\x5d\x8c\x78\x7b\xf7\xfe\xf2\xf2\x7c\x54\xf0\xef\xbe\x3b\x1d\xde\x8e\x6e\xcf\x3e\x15\xe8\xe7\xf4\xee\xda\xe0\x76\xb6\x4d\xd3\x8d\xa0\x66\xa2\x7a\x5a\xe1\x34\xf7\xcd\x0a\x3b\x71\xa2\xa1\x8d\x30\x37\x67\xf9\x20\x40\x6d\x32\xb1\x5d\x60\xdf\x3a\xf0\xc6\xe5\xc8\x8c\xb4\x96\x1d\xaa\xe2\x36\xa1\x66\x76\xdc\xba\xd1\x6d\x5c\xf9\xd6\x0f\xc1\x80\xe6\x1a\xb3\x03\x4e\x12\xfe\x68\x62\x7b\x53\xaa\x6f\x65\x8b\xe1\xa7\x5f\x91\xb9\xbb\xef\xb0\x86\xe3\x15\xb7\x85\x44\x82\xa8\x4f\x3c\x63\x6a\x7b\x92\x1b\x5e\x14\xf8\xce\xe8\xe2\xa7\xc9\x4f\xc3\x22\x05\x9e\x9d\xb7\xb3\x9a\xb0\x89\x9a\xab\x78\x78\xf1\x8b\xbf\x84\x21\x02\x7c\xe0\x75\x75\x23\xbb\x46\x09\xd5\x62\x6f\x84\xb5\x1e\x9f\x80\x44\x83\x08\x05\xe3\x4b\xaa\x27\x07\x11\xa7\x4b\xe3\x59\x33\xfc\xc9\x0c\xf2\xd8\xfd\x51\x6a\x4f\xc2\xba\x80\x5d\xd9\x05\xd8\x43\x3b\xd6\xbe\xc0\x10\x61\x0f\x54\x70\x40\x7e\x46\x0f\x58\x50\x2d\x8d\x9b\x96\xf5\x5c\x8f\xe1\x7f\x37\x6b\x13\x4c\xc4\x25\xc6\x75\xc3\x85\x3a\xf5\x91\xbd\xdb\xd9\x85\xea\x22\x5c\xab\xb1\xad\xf5\x26\x9f\xea\xb7\x35\x9b\xb3\x63\x04\x70\x71\xc2\x7f\x4f\x4e\x29\x4e\x34\x03\xd8\x9f\xbc\x38\xbc\xb8\x39\x2b\xca\x8f\x45\x35\x23\xe0\xcb\x5b\xcb\x8b\x60\xb2\x35\x23\x77\xca\xc4\xcd\x5f\xcf\x8d\x76\x01\xf0\xe0\xe6\xdc\x06\x8a\x85\xc5\x59\x31\xd2\xc4\x12\x0b\x59\xfa\x42\x22\xc0\xd3\xcb\xa3\xa7\xf4\x9d\x05\xb1\x49\x0f\x9c\xc6\x63\x46\x3e\x2f\x09\x93\xe0\xe9\x37\xf7\x59\xee\x38\x97\x87\xe8\x6c\x06\x2c\x41\xbf\xce\x50\xc6\xac\x2b\x50\x5f\xb8\x66\x90\x03\x2d\xca\xe6\x50\x2f\x81\x21\x8d\x11\x17\xf9\x94\x0f\x7e\xcc\x7e\xf6\xee\x44\x78\x34\xe3\x9a\x01\xe9\x5d\xb4\xed\x1d\x23\xcc\x24\x1d\x20\xad\xb0\x94\xf7\x14\x72\x09\xb4\x42\x69\xe3\xb1\x34\xa7\xb1\x7f\x3e\xff\x35\x50\x09\xfa\x0d\x2f\x83\xfa\xbb\xa0\x74\x15\x34\x88\xc6\x89\xf1\x1d\x4d\xba\xdf\x09\x11\x17\xc4\x7a\x9c\x36\xbe\x06\xd6\x31\xf6\x5b\x2c\xef\x2b\x5e\x98\x33\x26\x15\x66\x11\x39\x49\xb0\xdc\x32\xa2\xc8\xd9\x38\x06\x45\x89\xe3\xfa\xfa\xee\xea\xf6\xec\xfd\x1a\x2e\x5f\xfe\xb8\x1a\xd3\x13\x25\x99\x73\x54\x4e\x05\xc7\x31\xd2\xec\x73\xce\x8d\x53\xd4\x0a\xfe\x39\x48\xbe\x49\xf4\xf1\xd1\x91\x05\x80\xfe\x3c\x3f\xc1\xda\x39\x42\xa7\x0a\xb5\x0b\x81\x22\xbd\x12\x28\x30\x79\xb8\xad\x06\x1f\xab\xa9\x1d\x64\xed\x7c\xcb\x04\xab\x19\x17\xa9\xe1\xf2\x85\x49\x9b\xc6\xdb\x1b\xa5\x4c\x11\x21\xb2\xa5\xa2\xae\xea\x41\x59\x4a\xd5\x5b\x76\xce\xe7\x9f\x88\x94\x78\x4e\xf6\x6c\xa9\x3b\xb9\xf9\x29\xfc\x27\xb8\xda\xbb\xc8\xfe\x85\x11\xba\x30\x76\x47\x4f\x97\xec\x83\x89\xca\xb9\xe2\x09\x8d\xb6\x8c\x9e\xfb\x30\x3c\x3b\x9f\x9c\x7d\xd2\x4a\xfc\xf0\x76\x74\x5e\x10\x25\xe0\xd9\xf0\xc3\xed\xe8\xda\xc2\xbd\x0f\xdf\x9f\x8f\x26\x17\x97\xa7\xa3\x9b\xc9\xc9\xe5\xa7\xab\xf3\xd1\x6d\x3b\xc5\x35\x36\x5e\xb5\x33\x97\x5f\x3d\xae\xfc\x02\x3b\xac\x79\x59\x68\x2f\x83\x34\x32\x4c\x13\x08\x07\xe0\x26\x2c\x00\x23\xc6\x63\x03\xa8\x25\x9d\x75\xc6\x63\xac\xa3\x33\xf5\x55\x92\x20\x9c\x29\x9e\x62\xf0\x5f\x25\xab\x31\xc3\x53\xcd\x5a\x71\x92\x04\xb1\x5a\x22\x63\x4c\xb3\x58\xdd\x98\x29\x66\x10\x25\x44\xb3\xf3\x65\x90\xfd\x67\x3d\x28\x33\xca\x20\x6c\x36\xc5\xe2\xde\x55\x66\xf4\x39\x15\xfe\x50\x48\x84\xe5\x98\x19\xa0\x2f\x2b\xad\x74\x58\xe1\xe3\x4e\x6f\x35\xae\x4e\x8a\xef\x89\x5e\x95\x34\x8b\x16\x68\x29\xf8\x5c\x10\x29\xad\x95\x3d\xc2\xcc\x84\x62\xd8\xd7\xf5\x35\x34\x66\x8c\xeb\xa5\x70\xc6\xfc\x98\x2c\x09\x8b\x09\x8b\xa8\xc9\xf3\x83\x28\x06\x6f\xda\x9c\x0b\xbc\x5c\x20\xc9\xc1\xfd\x0f\xcb\x0e\xf6\x2b\xf3\x91\xbb\xc9\x2c\xb4\x19\x3c\x0e\x6d\xf1\x22\xd3\x7c\xe2\x12\xe4\x44\xb3\xca\xf0\xb1\xbb\x0c\x9d\x03\xca\xd8\x01\xd3\x65\x42\x94\x29\x6b\x01\x4b\x0e\x9b\xa1\xd7\xba\xb0\x1f\x7a\x9b\xea\x36\x41\x5f\xd8\x6e\xcc\x58\xda\x11\x1d\xd6\x58\xbd\xed\x91\x42\x3f\x60\x16\x27\xba\x15\xe7\xcd\x29\x9e\x45\xc8\x2b\x19\x6a\xaa\x71\xa7\x71\x97\x5b\x34\xc2\x99\xdc\xe5\x1a\x2d\x25\x67\x1a\xab\xe0\x41\x1e\x1e\x03\xe4\x6d\x33\x33\x61\x75\x97\x9a\x45\xe2\x84\xdb\x55\x32\xaf\x67\xa6\x54\x1b\x82\xd1\x34\x5c\xb3\x4b\x41\x59\x44\x97\x38\xd9\x4a\xf7\x2b\x45\xd6\xdb\x80\xf5\xaf\xe9\x4c\x93\xcf\x37\x15\x07\xb6\x22\x22\x85\x8c\x65\x3b\x4c\xbf\x85\x1b\x58\x92\x6c\x8a\x02\x91\x79\x5c\x0d\x16\x3c\x33\x9e\x49\x58\x17\x12\xd7\x1c\xd5\xc3\xba\xed\x9e\x81\xf0\xb0\x93\x05\xd1\x14\x37\xe1\x62\x0f\x41\x79\x2d\x09\x4f\x37\xb6\x97\xc6\x44\x89\xf2\x2a\x7d\xb2\x79\x01\x12\xf9\x01\x82\xe6\xf0\x15\x66\xf1\x57\x07\x70\x04\xe7\x04\xce\xa9\xf1\xc4\xc5\x59\x64\xdc\xc6\x2e\xb9\xd5\x61\x3e\x0c\x10\x49\xe8\x1c\x76\xd0\xc3\x8f\x77\xdf\xac\x53\x88\xb2\x32\x61\x59\xd0\xac\xc9\x85\xc5\x54\xcb\xe3\x4e\x72\xb7\xf5\x61\xca\xfd\x20\x63\xd1\x82\x80\x89\x29\x49\x80\xc2\x56\x90\x69\x40\x64\xf9\xae\x37\xdb\xa9\x19\x1d\x2e\x06\xa7\x6f\xb1\xa3\x26\xa4\xad\x69\x3b\x4b\xad\xd8\xde\x4d\x94\x29\x4e\xae\xea\xdb\xac\x3b\x50\x9d\x77\x12\x2f\x61\xe1\x4c\xbd\x12\x9c\xcf\xd1\xea\xbc\xb6\x1e\xa3\x0b\x0c\x0b\x82\x42\x7c\xce\x4e\xf7\xfd\xca\x97\xd0\x46\xf6\x55\x3b\x29\x04\xc7\x04\x18\x02\x96\x65\xcd\x32\xad\x9a\x20\x0c\xe1\x35\xe8\x6b\x72\x38\x3f\x44\xae\xfa\xcc\x00\x0d\xaf\xae\x46\x17\xa7\x03\x44\x54\xf4\x8d\x0b\xc6\xb5\x91\x78\x63\xa6\x49\x01\x0e\xf7\xca\x55\x0e\x4a\x89\x98\x93\xc2\x9c\x5d\xd8\x1e\x84\x91\xcf\xa9\xa6\x25\x73\x05\xb0\x38\xac\xf1\x44\xd3\xb2\xd6\x64\x28\x24\x53\x8b\x5d\x48\x03\x4b\x99\xa5\x78\x9a\x90\x09\xc5\xe9\x44\xf0\x64\x17\x1e\xef\xcf\x06\x43\x1e\x7e\x81\xe2\x14\xe9\x66\x6d\x8c\x93\xf7\xa5\x7b\x09\x5d\xcb\xb9\xfa\x9a\xd5\x62\x50\x20\x86\x38\x67\x92\x0d\xb4\xa4\x2e\xb6\x07\xe0\x19\x1a\x38\x7f\xee\x05\x98\x58\xc7\xcb\x04\x47\x11\xcf\x98\xda\xf3\xa4\x82\xc2\x61\xce\xc3\x63\x3b\x7a\xb2\x69\x76\xe5\x4b\x4b\x7d\x21\x41\x94\x7b\xb5\xce\x4e\x4d\xbf\xd3\x55\xa5\x57\x57\xda\xeb\x4e\x7a\x0b\x99\x91\xa9\x24\x81\x9d\x94\xa6\x34\x18\xf0\x2e\x80\x85\x0d\xbb\x74\xc9\x4a\xba\xe1\x15\xcf\x44\xdd\xbd\x35\x66\xa7\x64\x29\x88\x56\xdc\xca\xfe\x30\x4f\xd3\xd7\x45\x4a\xec\xe9\xba\xa7\xeb\x37\x4f\xd7\x27\xa6\x42\xdc\xd0\x57\x04\xdc\x89\xc0\xab\x92\x1e\x5a\x23\x72\x79\xe1\xb0\x96\xc8\xac\x55\xbc\x68\x46\x5e\xd7\xe4\x6d\xfe\x51\xf7\x2d\x2d\x78\x4e\x4b\x05\xf9\x00\x53\x82\x67\x20\x4f\x17\xee\x65\xae\x2f\xd3\x20\xbf\xda\x96\xdb\x6b\x59\x67\xe7\x62\x0d\x4a\x81\xed\xb2\xde\x75\xad\xb4\xb5\x84\x9e\x5c\x8e\x3a\x31\x02\x54\x5d\x85\xb5\xe2\x69\x75\xb2\x0e\x65\x95\x3a\x97\xe6\xc0\xe8\x05\x36\x82\xcd\xdf\x33\xae\xb0\xfc\xe6\x70\xcc\xb4\x94\x76\x4f\x56\x46\xc8\xd6\x72\xd0\xef\xb5\xee\x76\x20\x09\x93\x90\x28\xf1\x7b\xe3\xce\xd5\x67\xc8\xb9\x37\x8c\x29\xc3\x94\xd7\x2c\x16\x7f\x83\xe0\x76\xdb\xa8\x15\xc3\xf2\xd4\x81\xbc\x62\x9c\x7b\x66\x86\x3f\x27\x0a\xf2\xeb\x15\x55\xa0\x63\xc7\xa6\x7e\x67\x65\xe8\x6b\x4d\x9d\x86\x2a\x04\x07\xbf\x5a\x9c\xed\x76\xb3\xc8\x6a\x1b\x75\x9b\x58\xaf\x5d\xde\xd8\x6c\x91\x23\x67\x67\x8c\x04\xaf\x14\xc5\xc4\x12\x99\x9d\x9e\x1a\x7e\xe3\xe2\x1d\x08\x3b\x7c\xa4\xf7\x74\x49\x62\x8a\x21\x77\x44\xff\xeb\x48\xcf\xeb\x77\x27\xd7\x97\x17\x13\xe2\x13\xdc\xfe\x73\xcc\x86\x89\xe4\x3e\xbf\x07\x31\xce\x7c\xa2\xca\x52\x10\x27\x73\xda\xb9\x80\x95\x3e\x3f\xda\x63\xd6\x34\x82\x98\x47\xf2\x10\x3f\xca\x43\x9c\xe2\x7f\x70\x06\xa1\x17\x43\xf8\xf3\x24\xe1\x59\xfc\xb3\xd6\xb0\x8e\xe0\x5c\xab\x23\xf2\x40\x98\x32\x6e\x4d\xbd\x5c\x31\x64\x6e\x4b\xc8\x73\xf9\x9d\x1e\x73\x9e\x8e\x27\xc7\x8c\x7c\x8e\xc8\x52\xa1\xff\x4f\x90\x29\xe7\xaa\x9e\x41\xf1\xd9\x4c\x92\x8d\x6e\xbc\x5c\xa9\xbf\xb9\x44\x7f\xf9\xf3\xb7\xdf\x69\x12\xda\x66\x8d\xcf\x6e\x2e\x27\xfa\xfb\xdf\x9d\xda\xef\xe5\x06\xec\xee\x72\x99\xb3\x36\x47\x3c\x26\xe5\x24\x63\x70\xbd\x0a\x70\x76\x01\x7b\x03\x72\xc8\xf7\xb1\x8e\xbb\x9d\x1a\x8c\x8b\x9d\xf2\xed\x76\x10\x1b\x3e\x26\x7c\x0a\x76\xc4\xac\x50\x1d\xaf\x25\x22\x68\x47\xff\xcb\x29\x95\xcb\x04\xaf\x2a\x3d\xac\x5b\xf6\x0b\xcd\x9d\x96\x38\x22\x39\x38\x87\x0b\xde\x8b\x78\x9a\x42\x68\xad\xd3\xd7\x63\x3a\x83\x18\x5b\xa5\x85\x0a\x34\x25\xea\x11\x22\xba\xdd\xaf\x5e\x18\x72\x06\x7c\xcd\xca\x80\x5d\x8e\xdf\x19\x4b\x83\xee\x74\xfc\x6e\x80\xc6\xef\x62\xf2\x40\x12\xbe\xd4\xa7\x59\xff\x40\x54\x54\xb7\x89\xa3\x14\xd3\xe4\x82\x2b\x7f\xf3\xed\xb2\x9f\x82\x44\x74\x49\xf5\xe9\x9a\x10\xdd\xee\x93\x26\x53\xd6\x1f\xb0\xdb\xc0\xce\x02\x63\x40\x38\x8e\x35\x11\x43\xa9\x40\x37\xbc\xdc\x25\xc3\x82\xa9\x17\x4a\x60\x6d\x61\x88\x61\xb6\xc7\xb0\xcd\xa2\x58\x51\xbb\x03\x60\xd8\x3b\x2d\xb4\xb9\xfd\x9d\xb0\xe0\x42\x4d\xe2\xda\xc6\x36\xa5\xf7\x4b\x46\x0e\x12\x08\x4a\xe7\x0f\x9a\xec\xc8\xa3\x37\x69\x9b\x68\xb5\x06\xe7\x22\x67\xf3\xb6\x11\xb4\x08\x71\xa5\x60\xf0\xd6\xd1\x7d\xc8\x92\xc4\x64\xf0\x05\x0f\x8c\x14\x6e\x12\xf0\x40\x72\x5b\x9a\x6c\x6d\x2f\x06\x97\x07\x6b\x61\x1b\x9e\x89\x4a\x6b\x50\x6e\x02\xc3\xb3\x1e\x0b\x78\x18\x24\x01\x51\x07\x8b\x29\x55\x02\x8b\x02\x4a\x89\xd7\x77\x24\xc1\x02\xac\x88\x63\x66\x70\xef\x8c\xa0\x1a\xa3\x98\x4a\xc8\xec\xd1\xff\x76\x68\x22\x4d\x5b\x05\xc6\xbf\x4d\x36\xc8\x7c\xb0\x76\x52\xee\x5a\x9f\x09\x42\x0e\xf4\x76\x68\x01\xee\xc0\xe0\xf8\x2c\x31\x15\x81\x84\x58\x3b\xe3\x31\x6b\x9d\xf2\x00\x6d\x3d\x65\x23\xb1\x6d\x30\xe5\x1b\xf8\xe0\x84\xc7\xed\x4e\xef\x4b\xa7\xb9\x26\x94\xdd\x1b\x68\x3e\x23\x1a\xf2\x38\xc7\x70\x34\xcb\x62\x33\xcc\x2a\x67\x68\xbd\xb6\x52\x62\x14\x79\xf2\xb0\x49\xea\x80\x18\xc5\xfc\xa9\xf3\x0f\x6b\xcd\xd8\x63\xaf\x1d\x85\xda\xef\x98\x9d\x16\x32\x14\x22\x10\x84\x2d\xee\x92\xbe\x63\xe8\x7c\xa1\x10\x65\xd6\xfe\x89\x93\x39\x17\x54\x2d\x52\x39\x40\xd3\x4c\x6a\xa6\x67\x62\x20\x4d\x98\x53\xd3\x0d\xe3\x1d\x11\x7b\x95\x14\x9a\xe3\x14\x9c\xeb\xd7\x77\x9c\x97\xa5\x6c\xa7\x5c\x23\x47\x04\xf0\x44\x96\xdd\x35\x7a\x3c\x2a\xc4\xb5\x24\xd1\x06\xa4\xe5\x07\x78\xa3\xbf\x5b\x7b\xa8\x3c\x1e\x56\x14\x16\xcb\x86\x03\x60\xb3\x0a\xcb\x89\x8c\x64\xed\x88\xa3\x84\xcb\x22\xc8\x40\xe7\x41\x9f\xd8\x4f\xdb\xc6\x3d\x0a\xad\xd9\x59\xb2\x99\x83\x63\x58\xb3\xf0\x25\x20\x28\x23\x06\x29\x6b\x81\xb1\x6f\x0f\x10\x85\xe0\x0c\xe0\x0e\x49\x9e\x72\xc9\x62\x94\x6b\xc1\x63\x96\xbb\xb8\x24\x7a\x24\x09\x78\xc5\x23\x9e\x2e\x41\xc3\xb3\xc3\xb5\x2d\x69\x05\x45\x61\x45\x06\x88\x67\x4a\x37\x66\x42\x78\x9d\x0c\x6f\xe3\x83\x03\x9e\x06\xb6\x1d\x1b\x2b\xe7\x81\x29\x0d\xad\x1b\x66\x40\x19\xfa\x48\x14\xb4\x02\xc0\xbf\xe1\x04\xa1\x32\x52\xad\x17\xa6\xb2\xf6\x3b\x9c\x28\x3b\x93\x4d\x98\xbf\xcf\x38\x7f\x9f\xf0\x69\x3b\x37\x84\xc6\xd1\xdd\xf5\x99\x8b\x29\xc8\xdd\xad\x01\x72\x61\xc1\x62\x35\xba\xba\x1e\x9d\x0c\x6f\x47\xa7\x87\xe8\x4e\x12\xbd\x3c\x7e\xba\x90\x98\xe6\x31\x70\xcd\xc8\x6d\x0a\x3b\x93\x8a\xe0\xa6\xdb\x9d\x08\x51\x48\x9a\x5a\xc3\x38\x8a\xf9\xed\xed\x84\x0d\xd9\xe5\x94\x19\x51\x03\x10\x19\xca\xf3\xb4\x8e\xfc\x75\x27\x10\xdc\xaa\x93\xb7\xe3\xd4\x36\xe3\x4d\xab\x8e\xfc\x75\xe4\x53\x0c\x00\x78\xea\xc9\xc0\xd1\x52\x0b\x42\x05\xea\x34\x2d\x43\x54\x93\xee\x73\x0a\x22\xe2\x3e\xe1\x65\x7b\xb6\x0a\x7e\x2c\x10\xad\xf5\x09\xe7\xb6\xe1\xa7\x3e\x07\x8e\xad\x4d\x0c\x2b\xdc\x7d\x82\xb9\x3d\xc3\xf0\x56\xcf\x37\x4d\x80\xa8\x74\x12\x5b\x38\xb1\xd2\x20\x6c\xd8\x8b\x44\x70\x76\xe0\x17\xca\x50\xe1\x4a\xd4\x62\xde\x67\xdb\x68\x1e\x0e\xe7\x5e\x0d\x04\x99\x86\xf0\x8b\x05\xae\x9e\xa9\x0d\xc4\x86\x2b\xf8\xbe\xd5\x7f\xcc\xa5\xd2\x5a\xa5\xd6\xcc\x05\x89\xb8\xd0\x37\x05\x74\xeb\x85\xaf\xb5\x22\x83\xc2\x42\x2f\x0a\xde\xc8\x9e\x94\x63\x98\xc7\x58\x91\x03\x45\xd7\xe6\x4b\xd9\x90\x5a\x08\xbe\xc5\x2a\xc0\x51\xc9\x6f\x9e\x29\x99\x63\xe6\x22\xb9\x1a\x86\xeb\xae\xbc\x1d\x58\x95\xd6\xd0\x31\x44\x93\x83\x7c\x05\x91\xc2\x85\x71\xc8\x25\xac\x67\xeb\x38\xac\x77\xe5\x35\x2c\xdb\x23\xf6\xce\x9e\x86\xc1\x66\xcb\xf8\x35\x0d\x36\xc1\x52\x21\x3b\xa6\x26\x4b\x59\x60\xc1\x78\xda\xe8\x9b\x82\xe9\xa9\xab\xe2\xac\x49\xa8\x68\x64\x21\xa0\xee\x4b\x97\x70\x6e\xd2\xeb\x53\x22\xe6\x4e\x10\x36\x65\x27\xfd\xd9\xb6\xf5\x27\xdd\x2d\x11\x32\x13\x88\xe9\xab\x36\x7d\x88\x86\xac\x02\x34\xe2\xfc\x7e\x85\xf5\x32\x77\x12\x4e\x1e\xf1\x4a\xa2\xa5\x30\x39\xf9\x26\xd0\xcf\x4d\x1e\x02\x32\x8a\x1f\x79\x4b\xb8\x72\x91\x96\x08\x4c\x85\xeb\x9d\xb2\x4e\xee\x9d\x6c\xa2\x24\x75\xd4\x89\x4a\x41\x68\x35\xd0\xd7\xb9\x29\xad\x03\xab\x53\x64\x12\x2d\x30\x9b\x93\x89\x85\x21\xd8\x4a\x5b\xd2\xed\x9c\x40\x33\xa7\xb6\x95\xfa\xcb\xe9\xca\x28\x4c\x16\x3f\xde\xbc\xea\x74\x3a\x38\x04\x52\xe1\x39\x41\x66\x44\x6d\x8a\x49\x0e\x2a\x14\x3a\x0c\x2d\xd0\x20\xe8\x09\xb6\xd5\x51\x31\xe8\xae\x49\x78\x07\xcf\x17\xd8\x52\x76\x0e\xa6\xda\xca\x0b\x01\x5d\x5b\x58\x65\x30\x4b\x98\xe0\x41\x82\x1e\x17\x44\x94\xd9\xb1\xf3\xdd\x89\xac\xce\xb5\xda\x36\xcf\x42\xa5\xd7\x1d\x26\xea\x70\xc2\xb7\x99\x6a\x13\x7a\x78\x78\xed\x05\x28\xdb\x75\xf6\xdf\xf0\xfa\x2b\xbb\x3c\xb6\x1b\x48\x00\xf6\xdd\x30\x8e\x9d\xd1\xbe\xd7\x4e\x65\xeb\x9c\xc4\x8e\x55\x74\xce\x66\x88\x71\x46\x10\x95\xf9\xcb\xaa\x18\x3d\xed\x33\xfa\xb5\x88\x6f\x8c\x2f\xd5\xda\xe5\x4f\x6d\x69\xc9\x73\x2d\xbd\x6d\xc0\xa5\x83\x31\xa2\x15\x55\x2c\x56\x80\x8d\x66\xf8\x70\x51\xa6\x5b\x3b\xce\xbd\x0b\xdc\xb7\x0e\xfa\x2e\x88\x04\x51\x1c\x81\x18\x59\x1a\x1c\x32\x00\x72\xf6\x25\xfb\x91\xcd\x6a\x1f\x33\x6f\xd9\x00\x42\xa4\x12\xa5\x78\x09\xb9\x58\x8c\xab\xfc\x2b\x83\xd2\xa0\xfc\x16\x0e\x9c\x20\x2e\x4d\x0d\x8e\x86\x15\x58\x67\xda\x71\xd7\x6f\xbe\xae\x45\x5c\x30\x87\x69\x38\xa7\x0f\x84\x39\x9a\x1e\xb8\x33\xa1\x07\xe5\x3a\x4d\x56\x07\x18\xc2\x58\x48\x1c\x3a\xe6\xda\x39\x92\xad\x5b\xfe\x0a\xec\x91\xdd\x97\x4c\x6f\x7c\x56\xb1\x50\x1a\x4c\x95\x02\xb2\xad\x0b\x3c\x0a\xa9\xd4\x02\x1e\x9a\xc4\x31\x2c\xd1\xef\x19\x57\xbf\x0f\x20\x21\x9d\xf1\xc2\x94\xb5\xb7\x26\xa8\x41\x05\xae\x1d\x0e\xad\x25\x1c\x84\x03\x40\x8e\xb5\x2b\xbf\x2b\x32\x6b\x1e\x58\xf5\xa4\xd2\xe8\xa8\x1a\x34\xdf\x54\xef\xc2\xd4\x81\xda\x9b\xc5\xa6\xb5\x46\x14\xd9\x4f\x89\x28\x64\xc8\x40\x10\x07\xce\x92\x72\x41\x4a\xb5\xa8\x0c\x3f\xf7\x59\x25\xe9\x72\x8d\x8f\x22\xbc\x16\xca\x06\x4f\x53\x96\x27\x3f\xe9\x05\x43\xa7\x3c\x1c\xb3\x1b\x42\x9a\x6b\xb5\xf8\xbd\xf8\x15\x1a\x82\xb1\x3a\xa9\xb1\x85\xd2\xf6\x91\x62\x92\x16\x61\xc8\x5a\xa8\x66\x0d\x7a\x64\xbd\x5d\x62\x9b\xb4\x90\x26\xb9\x5c\x14\x7d\xb2\x16\x02\xbb\x01\x1e\xf1\x70\xcc\x3e\x70\x61\xaf\x60\x69\x01\x9a\xa7\x38\xba\x3f\x20\x2c\x46\x38\x53\x0b\x03\x53\x68\xfd\x0a\x2b\x4b\x0d\x5a\xd2\x00\xb2\xf1\x99\xb7\x54\x46\x58\xc4\x0e\xed\xfa\x81\xbb\x51\x8c\x59\xd0\x08\x40\x40\x43\x91\x07\x28\x75\xd7\xa4\x6a\x12\xa8\xaa\xd3\xb4\x16\x75\x45\xdc\x2a\x25\xdc\xda\xcf\x59\xa1\x28\x1d\x80\x57\x83\xe3\x8a\xcf\xaa\xab\x73\xe6\xac\x8d\x4e\xbf\xd3\xf4\x5c\xf5\x42\x0c\xac\x46\x61\x4c\x52\x76\x06\x5a\xd2\xf9\xd6\xf1\xda\x02\xdc\xe2\x2c\x13\x10\xe4\x59\xd7\xe6\xd7\xd1\x82\x26\xb9\xef\xe2\x9b\x81\x1f\xa6\x6e\x32\x21\x0f\x24\x31\x60\xbf\x91\x80\xc0\x2c\x63\x35\xfc\x16\xfd\x2f\x53\xd8\x0c\x7d\x37\x66\x1f\x81\x0d\x27\xc9\x0a\x00\xb8\x7c\xcb\x58\x95\x9a\xb9\xaf\x1d\x80\xb2\xa1\xa6\xa8\x38\x10\xb3\xd7\x0b\xfc\x40\xc6\xcc\x35\xf3\xbf\xd0\x3d\xfa\x03\xfa\xae\x49\xbd\x73\xf1\x55\x4f\x6c\xe7\xf8\x10\x44\x2f\x05\xb7\x9c\x65\x94\x96\xdf\x38\x33\x48\xc1\x08\x59\x93\x88\xeb\x11\x45\x29\x7b\xe0\x51\x25\x88\x2f\x3c\xb5\x58\x10\xa6\x26\x8c\xc7\x64\x42\x6a\x5c\x9a\x2d\x4c\x42\x0b\x01\x17\x3c\x26\x6b\x1d\x92\x9e\x99\xfe\x0c\xa6\x1b\x99\x4d\xfd\x76\x40\x3e\xa0\x4f\xfe\xf2\xd6\x87\x22\xa5\xd5\x8f\xdc\xc3\xf6\x6d\x33\xee\x6d\x9d\xa9\xce\x1f\x3e\x80\x0b\xc1\x0e\xa0\xde\xa1\x97\x60\xe5\x72\x6c\xca\xc7\xb1\xec\x08\xd0\x2f\xeb\x99\xdb\xcb\x2a\x00\x24\x04\xd0\x78\x41\xe7\x54\xcb\xef\xdd\x1d\xb6\xc0\x09\xb7\xf1\x66\x18\x4c\xb2\x4e\xee\x8c\x7c\x29\x5c\x5e\xf6\x81\xa7\xbf\xdc\x09\x39\xe5\x59\x59\x80\xb7\x0b\x40\x65\x98\xfd\x63\x65\xf5\x95\xe6\xc3\x73\x13\x61\x4e\x16\xd4\xa4\xe8\x0d\x4f\xce\x91\x3e\x1d\x3c\x35\x38\x16\xb0\x68\x99\x5a\x70\x41\xff\xd1\x18\xa0\xda\x2c\xa3\xe7\x9e\xd6\x3c\x9e\xd7\x8c\xb3\x28\xad\x03\xb1\x1a\x91\x42\x15\xb4\x92\x3a\x9d\x09\x4d\x33\x80\x6c\xd3\x6c\x76\x96\x25\x06\xf1\x3a\xe2\x22\x36\x95\x57\x65\x21\x7a\x18\x82\x42\x9c\x78\x8f\x95\x6f\x90\x5a\x64\x2b\x8b\xa9\x6d\x2c\x38\xad\x02\xe8\x5f\x33\x92\xed\x29\x00\xfb\x45\x63\x86\x6e\xf1\x5c\xe6\x11\x31\x66\x6d\x20\xec\xc5\xaf\xef\xdf\xf5\x4c\x65\x90\x13\xe1\x2c\x8b\x1e\x31\xc2\xa8\xe4\xa6\x28\xd8\x46\x16\x9d\x6b\x83\x19\xbc\x07\x93\xce\x73\xc4\x73\x54\x65\xa4\x1a\xf6\x63\xc9\xef\xc1\x07\xf0\x97\x59\xc4\x13\xd9\x49\x1c\xf8\x72\x49\xfa\x78\x42\x93\xc9\x16\x4c\xae\x2a\x54\xb7\xad\x77\x60\x40\xf1\x6c\xad\x26\x59\x47\x71\x88\x27\x7c\x14\x14\x00\x65\x56\xf9\xcb\xbe\xfe\x9d\xbb\x2e\x42\x1e\xa3\xa5\x14\x23\xd6\x42\x5c\x87\x5b\xc2\x55\x3d\x8f\xdf\xc0\x00\x61\x1b\x2a\x76\x5d\xf5\xdb\x37\x9d\x08\xc3\x92\x5e\xeb\x91\xa8\x66\x93\xaf\x3d\x0c\x1e\x42\xfd\x65\x0c\x88\x5e\xb4\x79\xe2\x93\xb1\x11\x85\x04\x17\xd9\xc6\x24\x72\x53\x34\x55\x6e\x4c\x17\xa6\xef\x09\xf8\xb9\x77\x76\xef\x04\x2e\x80\x3c\x1d\xcd\xe4\x21\x3b\x04\x89\x67\x32\x64\x42\xe4\x40\x31\x13\x3a\x08\x1c\x68\x42\x30\x78\x52\x7e\x96\x63\x57\x3b\x8e\xd4\x71\x28\xad\xee\xd2\x8e\xce\x4f\xb0\x90\xb5\xb1\xd7\x73\x1b\xd5\x5e\x74\x1b\xfa\x44\xfe\x3c\xd4\xce\x16\x18\x53\x02\x43\x82\x14\xa4\xb5\xfc\x6c\xb4\x3c\x2a\x8d\x15\xc6\x21\x33\xa7\x4b\xb5\xb2\x25\x4d\x80\x37\xdb\x62\x07\x6a\x81\x99\x05\x29\xa9\x73\x51\x96\xf9\x74\x8c\x8a\x41\xa5\xd5\xce\xa0\x23\xab\xda\xd6\x36\xe9\x16\x3a\xcc\x92\x2c\x25\x8d\x35\x45\x24\x98\x02\x67\x13\x9c\x34\xda\x53\xa6\x9c\x27\x04\xb3\x26\xb5\xb3\xf6\x71\xc5\xfa\x4a\xc3\x44\x31\x8b\x57\xa6\x44\x46\xb4\xce\x8d\x93\xa4\x34\x2f\x0c\x35\xca\x95\xaf\x10\x33\xcd\x2b\xb1\x75\x77\x98\x3e\x45\x78\xf6\xb9\xc5\x7b\x70\x35\xb4\x3b\x41\x1b\x84\xe1\x5f\xb5\x40\x10\xeb\x06\x16\xc2\x47\xb4\x8a\x10\x45\x08\x86\xed\x86\x28\x49\x94\x09\xaa\x56\x13\x6b\x78\xea\xce\xb4\x6e\xec\x97\x27\xf6\xc3\x2e\x5a\xdd\x31\x72\xfd\x39\x43\x17\x88\x37\x82\x1a\xf8\x7b\x3b\x85\x2e\xdb\xad\x35\xb5\xda\x04\xf1\xb6\x85\x75\x19\xea\xdd\x86\xaa\xbb\xd8\x76\x78\x16\x4c\x7a\xc2\x67\x2e\xf7\xbb\xfb\xc2\x96\x51\xb6\x37\xb0\xd8\x39\xc4\xc0\xa5\xa0\x5c\x58\x30\xeb\x2e\x81\x55\x29\xfe\x3c\x59\x62\x81\x93\x84\x24\x54\xa6\xdb\xdb\x17\xff\xf8\x7d\xeb\x68\x4f\x0c\xe8\xba\xb4\xc5\x1c\x3e\xd3\x34\x4b\x11\xcb\xd2\xa9\x95\xb4\xb0\xbc\x0f\xf1\x9a\xac\xc9\xde\xe6\xa9\xbb\x01\xe6\x17\x0d\x53\x54\x04\x08\x5c\x5a\x27\xf6\x58\x8c\x56\x5d\xc6\xd1\x02\x6a\x92\xcf\x30\x15\x8c\x48\x79\x88\x2e\xb8\x22\xc7\xe8\x13\x5e\xde\x82\xc2\x67\xea\x41\xcd\x8d\x85\x16\x4b\xa4\x25\xa7\x8c\x51\x35\x30\x69\x15\xc1\xaa\x1c\x45\x9c\x19\x10\xaf\x08\x16\xd6\x37\x01\x26\x47\x87\x66\xa5\x4c\x89\x18\x4d\x25\x0d\x8b\x2d\xf0\xe3\x24\x88\xa0\x9c\x98\x08\xf5\x0d\xe8\xf8\x1a\x3f\x9a\x98\x61\x28\xe1\x6b\xbe\x6e\x91\x1e\x6d\x50\x8e\x05\xbd\x37\xd8\x75\x2e\x78\x81\x03\x04\x33\x41\xbe\x70\x89\x89\x90\xfc\x9a\x1e\x92\x43\xf4\x3e\xe1\x53\x39\x40\xd2\xe3\x3c\xba\x0a\xc3\x72\x60\x9c\x24\xf0\x6f\x93\xcb\xf0\x8d\x5b\xfd\x9c\xef\x43\xcd\x9e\x19\xfd\x8c\x12\x7a\x4f\x90\xfc\xe3\xf1\xd1\x51\xba\x3a\x98\x66\xd1\x3d\x51\xfa\x2f\x90\x29\x6a\x57\xc8\xa6\x3b\x4f\x70\x5d\xce\xfd\xba\xd5\xa9\xe6\xeb\x77\xa2\x48\x8b\xf4\x62\x31\x80\xf4\x95\xee\xab\xa2\xb9\xec\x6b\xce\xea\x4b\x3e\xd9\x29\x8b\xac\xe9\x78\x15\x30\x02\x9f\xf0\xe2\x1d\x1a\xf4\x60\x77\x3e\x8a\xd0\x84\xb3\x04\xcf\x8d\x61\x30\x37\x67\xc3\x5d\xeb\x14\x4c\x45\x98\x73\x91\x52\x36\x4f\x8a\xc6\xb5\xcb\x94\x5a\x2a\xd2\x73\x07\x9f\xbf\x3e\x65\xc5\x48\xa7\xaf\x9c\x4b\x0c\x5c\x5b\xd6\xe4\x7f\x38\x66\x43\x89\x1e\x89\x29\xe6\x06\x69\x9b\x60\x21\xcf\xa8\x5c\xf8\xa4\x4d\xb0\xd9\x41\xa3\x06\xc1\xcd\xa4\xa3\x59\xe5\x05\x92\x36\x20\x08\xd6\xf8\x10\xac\x16\x04\x55\x95\x75\xc3\x00\xfb\xe0\x82\xd9\xd0\xa3\xc0\xcb\x25\x11\x63\x66\xd1\xb8\x00\x73\x92\x73\x1b\xa8\xd0\x24\x18\x3d\x75\x12\xe0\x1a\x06\xfc\x1b\x4c\xad\x5b\xa7\x53\x0e\x4b\x01\xce\x50\xe1\x30\x05\xb5\x47\xe6\x85\x9c\x9c\x95\xc4\x2b\x9d\x85\xcb\x19\x20\x08\xe1\xe3\x98\x13\x19\x98\x3f\x91\xb7\x62\x24\x74\x46\xf4\x9d\x39\x66\xfa\x6c\x84\xa6\x5a\x83\x64\xe8\x80\x0d\x75\xa7\x91\xe0\x52\xda\x98\x65\xd3\x4e\x7b\xe6\xc9\x0e\x45\x53\x0c\x1c\xa3\xa9\x3d\x5c\x2e\x9f\x12\x3c\x73\x85\x54\xec\xc3\x5a\xac\xcc\xc6\xa6\xd6\x96\x4d\xc9\xd7\x62\x83\xc2\x29\x47\x27\xe7\x67\xbe\x5a\x40\xa9\xeb\x6a\xe5\x94\x10\xc2\xb2\xb9\x76\x4a\x75\xc6\x41\x15\x95\x52\x13\x2d\x75\x54\xd6\x6f\x56\x31\x52\x72\x97\xdc\xe2\xd2\xd6\xa3\xae\xda\xb6\xa1\x99\x75\x01\xbd\x7b\xda\xa6\x86\xf4\x8e\x08\xc4\x9c\xa7\xf6\x4d\x82\xb8\xa0\xdf\x92\x0a\xa7\xcb\x30\x59\xcd\x21\xfa\xd8\x69\x9a\xa3\xd6\xc4\xba\x9f\x15\x38\x32\xc2\x26\x0e\xa0\x3c\xb8\xca\x56\x6c\xe6\x2b\xb8\xb5\x78\x94\xfb\x08\x00\x7d\xbe\xec\xcf\x64\x95\xc7\x3b\x49\x2b\x71\xb8\xaa\x8f\x0d\x16\xd3\x29\xf1\xd8\x9b\x8d\x1b\xba\x6b\x7a\x97\xcf\x2e\x16\x04\x4b\xeb\xc8\x86\x2c\xa8\x52\x86\xc4\x06\x46\x4d\x3f\x66\x93\x47\x79\xe0\xd1\x6e\x83\xab\xc6\x16\x70\x88\xdc\x41\xa4\x42\x90\x07\x22\x80\x76\x6c\xb4\x04\x2b\x1e\x55\x9c\x08\x82\xe3\x55\xb0\x22\xde\x55\x6b\x7a\x06\xa3\x8e\xa4\xa9\x56\x3b\x41\xa0\x66\xfc\x80\x2f\x9d\xa4\x5d\x78\x0b\xa0\x8a\xe9\x4c\xdf\x58\x81\xa3\x57\x7f\xc1\x0e\xa0\x36\xbc\xd6\x4c\x6a\xa2\xdc\x5c\x23\x10\x15\x07\x05\x0c\x16\xc4\xde\x70\xe3\x77\xc3\xf7\x97\xd7\xb7\xa3\xd3\xf1\xbb\x3c\xae\xd9\x25\xee\xf8\x7c\x69\x87\xa4\xca\xd9\x98\xf9\x50\x44\x0f\x4d\x06\x7b\x89\x70\x1c\xe7\xc0\x90\x56\xf5\x31\x91\x54\xad\x1c\x39\x38\x15\x6b\x83\x10\x5b\x9a\xb9\x83\xec\x8d\xd7\x7a\xb2\x5a\x9c\x0e\x85\x93\x63\x72\x50\x5a\x92\x05\xf6\x74\xd9\x84\xa0\x47\xca\x68\x88\xc4\x57\x9a\x67\xe4\xd1\x49\xf8\x70\x3b\x1f\x61\x73\x09\x6f\xc6\xed\xdc\x86\x6c\xb1\xa9\x1f\xe8\x67\x12\x5f\x37\x48\x55\x7b\xc9\x05\xe8\x14\x43\x55\xbb\x0b\x19\xa3\x9b\xe8\xa9\x7e\x2a\x77\xfa\xbb\xee\x6c\xe9\x32\x07\x2c\xc8\x71\x89\x00\x94\x48\x21\x8c\x22\x22\x14\xa6\x0c\xcd\xe0\x60\xb3\x68\x85\x00\xf1\x86\x80\xf7\xef\x7b\x94\x52\x06\x39\xd7\x6d\x4b\x7b\x57\x9c\xc7\x26\xa5\x9c\xcf\x2e\xee\x6e\x0b\xa2\xea\x0f\x97\x77\xc5\x3a\xa2\xc3\x5f\x5a\x65\xd5\x52\x0b\x6d\x61\x16\xc1\x14\xf3\xfc\x2d\x0b\xcf\xe4\x57\xa6\x6e\xa2\x1f\x89\xfa\x49\xf3\x65\xce\xf6\x11\xdc\x6c\xe5\x2c\x70\x39\x91\xc9\x83\x69\x78\x03\x32\xb0\x43\x69\x89\x60\x77\x92\x1c\xf4\x80\x6c\x0f\x61\x3a\xf5\xa1\xa9\x13\x39\xd4\xcd\x81\xea\xe5\xc2\x84\xb4\xbe\xc4\x99\x5e\xae\x31\xbc\x6d\x8b\x5d\x84\xcd\xf1\x99\xf9\xb8\x53\xd8\xea\x75\x18\xac\xaa\xdb\xca\x97\x12\x0d\xaf\xce\x6a\xd6\xfa\xbc\x6c\x95\xff\xb2\x50\x90\x13\xef\x20\xd8\x37\x00\x72\x90\x75\xf4\x2a\xb0\x8f\xed\x4c\x77\x83\x3d\x36\x7e\xd4\xab\xa2\x73\xf6\x49\xaf\xe1\x1d\xe4\xd9\x42\x36\x61\x3b\x8a\xd3\x86\x09\x36\xf9\x32\x6c\x88\x65\x12\x0e\xc8\x46\x77\x87\xf8\x1d\xd5\xd0\xc1\x41\x88\xe7\x61\x6a\x96\x3b\x4f\xf0\xde\x30\x4e\xf2\xd9\x74\x01\x39\xf9\xc9\x50\xb4\xcf\x81\x87\xac\x7e\x57\x96\xc5\x85\xfc\xd9\x94\xd4\x70\xba\x21\xb5\x6d\x86\x8b\x92\x8f\xcf\x59\x14\x6d\x69\x31\xbc\xc4\x56\x29\x06\x09\xdf\xe1\x5f\xd6\x95\xd7\x38\x1c\xb3\x20\x06\x40\x1a\x99\x5c\x9f\x11\x87\x69\x0b\x75\xaf\x34\x3b\xb5\xb1\xf7\xfe\x66\x2e\xec\x40\x39\xf3\x55\x2d\x8a\xa8\xb4\x95\x7e\xec\xe9\x94\x0b\xec\xf2\x8b\x9c\x7a\x6f\xc3\x7b\x42\xe3\x07\xb4\x17\xc0\x44\xda\x8e\xc9\x03\xb1\x21\x41\x38\x28\x5a\x11\xe4\xa4\xc6\x9c\x48\xf6\x95\xf2\x19\x5c\x34\xb1\x48\xba\xb8\x6c\x71\xd5\x22\x07\xa6\xb6\xe5\xf6\x03\xbe\x07\xd0\x95\x4d\xa5\xda\xe0\x58\xad\xb5\xa1\x38\xb7\x19\x50\x42\x18\xde\x01\x9d\x36\x21\xa4\x7c\x5e\x92\x68\x1b\x64\x88\x2b\x2c\x70\x4a\x14\x11\x6d\x11\x1e\xc5\x92\x72\x10\xbd\xe0\x76\xd0\xf6\x6b\x76\xd1\xe0\xa7\x96\x81\x76\xbd\xea\x75\xbe\x0e\xe9\xc1\xcf\x62\x23\x50\x1b\x3d\x8d\x9f\x2c\x60\xec\x86\xb3\xb0\xfd\xe4\xd3\xb0\x01\x2c\x01\xb0\xc7\xae\x73\x7a\x1e\x84\x83\xdb\x0a\x56\x40\x21\x02\xe3\x95\x40\x1b\xac\x1f\x65\x13\xa6\xc1\x3a\x5e\xba\x17\xde\xed\x02\x97\x5d\x66\x5c\xe9\x50\x15\x42\xa2\x81\x4a\x40\xde\x37\xe9\xfd\xf5\xb8\x04\x20\xb4\xd4\x05\x9d\x05\xe9\x1d\x16\xb5\x2a\xb7\x36\x5a\xc9\xaa\x8c\x49\x5e\x5a\xae\x35\x3c\x6e\x5f\x39\xdb\xbd\x44\xb3\x6f\x89\x66\x03\xdb\x9e\xa1\x4e\x22\x4a\xf0\x11\xb6\xf4\x9b\xcd\xfb\x2d\x4e\x10\x52\x0a\xec\x15\x69\xeb\x47\xc1\xd5\x4f\x99\xff\x57\x91\x83\x3b\xa2\x0e\x49\xb5\x2e\x57\xea\x30\xf0\x8f\x80\x7b\x24\x09\xa5\x01\x1b\xaa\x00\xa3\x35\x91\x65\xc6\x04\x7d\x76\x61\xbc\x2b\x90\xb3\xb8\xe2\x19\x7a\xa4\x52\xeb\xc2\x63\x06\xa1\x57\xde\x54\xad\xb8\x2d\x60\x3f\x80\xb7\x20\xbb\x59\x66\xd3\x94\x2a\x84\x83\x19\x16\xec\x65\x03\x7b\x9e\xf5\x07\x30\xe3\xda\xf4\xd9\x3a\xe4\x8d\x35\x87\x66\x0b\xe3\x4f\xde\xc8\xae\x19\xb2\x41\x98\xe8\xd3\xe6\xc8\x06\x1a\x4f\xa8\x61\xd6\x9e\xb9\x3e\x49\x16\xd5\x5b\x1b\x2c\x16\x20\x00\x36\x52\xa9\x4a\x77\x8b\x45\x00\x5c\x93\x20\x9b\x6f\x44\xa7\x0c\xd9\xfc\xf5\x7d\xa4\xc8\x36\x81\xcf\xb7\xa5\x4c\xb9\x4f\x1a\x8c\xb3\x2e\x15\x4f\x71\x17\x8b\x1c\x4a\x4a\x57\x8d\x92\xd2\x6b\x03\x2b\xca\x63\xac\xb7\x8f\xd8\xdd\x44\x1d\xcc\xd3\x2e\x42\x2a\x0a\xb2\xa8\x8a\x50\x0f\xa4\xcc\xf9\x19\x57\x10\x2a\x1f\x41\x21\xc7\x4a\xfa\xd6\x98\xd5\x4b\x20\xed\x3c\x71\xd7\xa8\xf7\xbd\x82\x1a\x05\xe7\xcf\xcd\xc2\x5a\xb4\x7e\xf6\x71\x43\x46\x59\xb6\x25\x19\xcb\x22\x66\xee\x7f\x6a\x50\x40\x40\xf0\xd8\x26\x8f\xb0\xe6\x54\x76\x8c\x49\x5f\x7b\x2e\xec\xa5\xbb\x47\xd5\xae\xc2\x9d\x3b\x87\xf0\x7b\x19\xd9\x72\x63\x17\x83\xea\xd4\xf8\x92\x1b\x71\x9b\xda\x44\x80\x15\xb8\x37\x84\xc3\x72\xd2\xb1\x6e\x7c\x00\xae\x47\x3b\x74\x6c\xc2\x30\x3c\xee\x6e\x69\x4b\x0a\x13\xb6\x25\x3c\x9f\x60\xd2\x9b\xd6\x93\x0a\x5c\x61\xc2\x06\x50\xd2\xd0\x6e\x00\x85\xa4\x6c\xdc\x59\x89\x0f\x7b\xd1\x2e\x63\x31\x11\x8c\x60\xb5\x78\xbe\xb0\xf5\x93\x5d\x8d\xd3\xcf\x16\xc2\x7e\xb2\x97\x62\x82\xa5\xb0\xf0\x0d\x23\xc2\x37\x08\xaf\xce\x4b\x4b\x55\x14\xc7\xba\x9a\xbc\x39\xb2\xc4\x26\x54\xba\x53\x64\x7b\xbd\x32\xf7\x34\x31\xfe\x35\x56\x9f\x4a\x74\xbf\x3e\xec\x61\x41\xae\x35\x4b\xf2\x45\x04\xd3\x3f\x7d\x7c\x77\x5b\x65\xae\x2c\x08\xf9\x86\xfa\x6b\x0a\x53\x66\xb9\x57\x5b\x94\xf7\x0d\xd4\xc5\xaf\x0b\xec\x7e\xf5\x29\x03\x5f\x7c\xc6\x40\x1f\x3f\xfe\xda\xe3\xc7\xad\x4c\xbb\x5d\x25\x97\x6a\x51\x9b\xf6\xd3\x5e\xae\x6c\x41\xc2\xf3\x8f\x93\x24\x80\xf0\xd4\x47\xbd\x50\xb5\xa2\x26\x77\x70\x13\xbb\x59\x9b\xf5\xce\x3b\x94\x20\x4c\xbc\x50\x76\xc1\x88\xbd\x6b\x94\xa0\xed\x83\xa5\x9d\x01\x2c\x8c\x34\xb1\xbf\xd8\x1f\x6a\x83\x4d\x2a\x9f\x95\x67\x1b\x1a\xe3\xd8\xaa\x6c\xd3\xc6\x22\x4e\x2c\x36\x92\x0d\x05\x2d\x1a\x4f\xda\xec\x7c\x63\xf6\x03\x7f\x24\x0f\x44\x0c\x10\x56\x28\xe5\x5a\xf7\x0d\x82\x3b\xe0\x98\x15\x60\x76\x8d\x13\x1f\xa3\x0b\x9c\x92\xd8\x90\x40\x10\x30\x66\xad\x8d\xd6\x4f\x58\x07\x01\x08\x68\x76\x66\x1b\x9c\xd3\x7f\xcc\x4c\x10\x97\x09\x1c\x82\xab\x8e\xba\x89\x81\x1c\xf6\x7b\xef\xc5\xfc\xfd\x21\xba\xd5\xec\x95\xca\xe2\x78\x03\x44\xa0\xa6\xb1\x8d\xd9\x5c\xf0\x6c\xe9\x0d\x40\x7c\x6a\x6a\x0c\x19\x34\xe1\xaa\x17\x13\x06\xe3\x5c\x98\x11\x8e\xb5\x22\xd9\x4e\x38\x2f\x12\xdf\xb7\x15\xac\x46\x48\x40\xfa\x20\xfa\xa0\x25\x1b\x44\x6c\x9c\x8f\x01\x98\x40\x1b\x38\xf0\x13\x79\x46\x4f\x89\x04\x93\x86\x37\x19\x17\xf2\x4a\x8b\xb9\xcb\xb5\xe3\x6c\x33\xe8\x79\xa3\xbb\x33\x4c\xd7\xa7\x45\xe7\x9d\xdb\x80\x25\x93\xb4\x66\xf1\x0f\x9e\xcc\xd4\xd7\x39\x2e\xb1\x89\x5f\x5c\x65\x62\xc9\x41\x90\x48\x56\x2e\x8d\xdb\xa2\x0f\x2d\xf9\x32\x33\x41\x59\x34\x8c\xd1\xa9\xa5\x6c\x2a\xd5\x27\xac\xa2\x85\xd6\x9a\x73\x14\x9e\x3d\x05\xab\xe5\x5c\xf9\x69\xcd\x7f\x35\x33\x38\x09\x7b\x6f\xb0\x87\x77\x30\x07\x1b\x19\xc3\x05\x2e\xc3\xbf\x92\x04\xa5\xba\xbf\x42\xa1\xd1\xc0\xa8\xe7\x3e\xb1\x4f\xf4\x44\xd7\x51\xd1\xba\xf1\x77\xa3\xad\x62\x15\x98\xbd\x87\xc1\xed\x00\x29\x71\x6a\x41\x64\xf2\x17\x6d\x29\xb8\x06\xdf\xb5\xa0\xdb\xe5\x57\x58\xe4\xe6\x07\x2d\xe7\x7a\x73\x61\x8a\x97\x5a\x06\x56\x5c\xdf\x92\x62\x6e\xc4\x30\x41\x54\x26\xf4\x3d\x92\x09\xea\xce\x7e\x29\x47\xb4\x99\x3a\xc0\xbc\x76\x14\x56\xf9\x88\x70\x50\x00\xc9\x78\xab\x71\xa4\x32\xec\xa3\xea\x80\x26\x5c\x05\x32\x93\x0f\xeb\xbc\xc2\x82\x98\xbc\xd8\xb8\x6e\x4f\x4b\x75\xf7\x9e\x2c\xb6\xb1\x75\x5d\xa1\x7e\x4b\x58\xc0\xec\xc0\xbb\x5f\x00\x90\xe2\x4f\x3f\xbe\xdf\xef\x46\x52\x8b\xc6\x1d\x74\x29\xe9\x3f\x88\x44\xe4\x73\xa4\x05\x73\xc0\x51\x53\x0b\x41\xe4\x82\x27\xb1\xde\x4f\xbd\x01\x56\xe3\x0c\x94\xaf\x31\x0b\x9b\x58\x0a\xae\xaf\x98\x44\xf1\x39\x31\x68\x1a\x36\xb8\x51\x11\xc1\xb0\xcd\xf1\x83\xad\x18\x98\x34\xe2\x9b\x3f\x16\x70\x37\x4c\xf6\x32\x65\x09\x65\x3e\xcf\x2b\x9e\x36\x98\xda\x38\x9b\x4f\xbc\x42\xd4\xe1\x1c\x95\x76\x3a\xf8\xf3\x83\x69\xa5\x7e\xa5\x4c\x17\x1e\x3b\xbf\xb4\x51\x0d\x1a\x5e\xc4\xd9\x44\xd3\xe2\x56\x7b\x53\xa9\xa7\x87\x19\xd2\x2d\x16\xf4\xde\x42\x05\xf1\x75\x72\xfe\xa6\x05\x23\x4d\xf2\x8b\xd3\xbe\xb5\x5a\x0b\xde\xee\xe9\x0a\x45\x09\x14\x11\x1d\x20\x99\x69\x61\x58\xba\x2b\x5d\xf2\x04\x7c\xe6\x11\x4f\x53\x2d\x0a\xc2\x0e\x2a\xae\x35\x7d\xe8\x86\xb2\x03\x85\x23\x35\x66\x79\x7f\x75\x97\xe5\xda\x6b\x66\x87\xe3\xd9\x5c\x3c\x7c\xdd\xbd\x47\xd9\x3c\x80\xcf\xab\xdd\xf1\x4e\xe8\xf8\xb5\x5f\x76\x43\xf8\xaf\xfd\xd4\x69\x22\xdb\x7c\xdb\x02\xad\xd4\xf8\xf9\x3a\x32\x2b\xc4\xf3\xdb\x98\x6a\xab\xcb\x84\xc0\x86\xd6\x18\x0c\xf8\xa4\x14\x0e\x3f\xb6\xba\xcd\x7f\xfa\xbf\x4c\x35\x25\xb3\x34\xff\x89\xb8\x18\x33\xf3\xfb\xc0\x57\x32\xd0\x2f\xe4\x10\xa1\x38\x25\x39\x88\xa2\x28\xc2\xad\x01\xe0\x87\x85\xcb\x32\x70\xb0\x1e\xc8\x5d\x8f\xe1\x3e\x9b\x12\xc1\x88\x1e\x5a\xa5\x30\x7b\x8a\x19\x9e\x03\xf8\xec\x00\x82\x2c\x41\x79\xcc\xcd\xd7\x86\xe3\x9b\x8a\x78\xc0\xac\xb5\xe8\x62\xf3\x8a\xf3\xc2\xc5\xd0\xa7\x51\x2c\x2d\xf6\x65\x1e\xa9\x53\x4f\xfd\xae\x6a\xfe\x76\xfa\xf3\xed\xf0\xe6\xc7\xc9\xf5\xe8\xe6\xf2\xee\xfa\xa4\xa0\x44\x9f\x9c\xdf\xdd\xdc\x8e\xae\x6b\x9f\xe5\x39\xb9\x7f\xbd\x1b\xdd\x35\x3c\x72\x0d\x9c\x0f\xdf\x8f\xce\xc3\x57\xfe\x7a\x37\x3c\x3f\xbb\xfd\x65\x72\xf9\x61\x72\x33\xba\xfe\xe9\xec\x64\x34\xb9\xb9\x1a\x9d\x9c\x7d\x38\x3b\x19\xea\x2f\xc3\x77\xaf\xce\xef\x3e\x9e\x5d\x4c\x5c\x04\x7b\xf8\xe8\xe7\xcb\xeb\x1f\x3f\x9c\x5f\xfe\x3c\x09\xba\xbc\xbc\xf8\x70\xf6\xb1\x6e\x16\xc3\x9b\x9b\xb3\x8f\x17\x9f\x46\x17\xb7\xad\x66\x81\xfa\xd5\x68\x2c\x64\x1c\x88\x95\x81\x05\x32\x50\x5a\x34\x13\x04\xd2\xa6\xff\x00\x3f\xd8\x95\xa1\xc7\x83\x81\xfb\xcb\xd4\x06\x3f\xd0\xdc\xd0\xb9\x58\x73\xee\x31\x66\xde\x07\xee\x45\x5c\xc8\xd0\xb7\x29\xd6\x85\xd1\x1e\xa3\x21\x9c\x15\x50\xdf\x0b\x9d\x02\xb4\x8a\x1f\xa9\x8b\x9a\x40\x86\xf3\xa6\x14\x02\x28\xd0\x01\x2a\x6f\x78\xb1\x41\x3b\x27\x18\x82\x75\x01\xc7\x6d\xa7\x41\x96\xb3\xb7\x81\x52\x8e\x91\xe3\xd0\xba\x59\x3d\x2e\x80\x0b\x58\x31\x9c\xd2\xc8\xfc\x50\x02\xe8\x44\x39\x10\x48\xb9\xc5\x02\x81\x15\x5b\x5e\x10\xf4\xe3\x5f\xf2\x41\x81\x3b\xcc\x9a\x2c\xb3\x4a\xcd\x35\xfb\x40\x64\x66\x55\xd7\x91\x67\xa1\x27\x77\xcc\xad\x9f\x02\xce\xad\x2d\x3d\x0e\xbe\xcb\x8c\x05\x60\x60\x05\x47\xa6\x3e\xde\x66\x46\x25\x1a\x3f\x46\x37\x00\x44\x22\x73\x43\x9a\xde\xc5\x65\x92\xcd\x29\x43\x34\x5d\x26\x24\xb7\xe9\x4d\xc9\x02\x3f\x50\xee\x0a\x1c\x98\x3a\x10\xb0\x8e\x56\xd1\x41\x07\xa8\xf1\xa0\x1c\xa3\x61\x1c\xcb\x22\x83\x2b\x50\x8e\x63\x99\x07\xc5\x61\x87\xf8\x5d\x2c\xf6\x6c\xb3\x44\x47\xf9\x91\x83\x15\xdb\x3f\xd4\x4a\x95\x1d\x16\xef\xde\x1d\xae\x7f\xbd\x82\x13\x47\xca\x93\xad\x84\x81\x5b\x2c\xef\x1d\x6b\x5e\x27\x10\x38\xd0\x9b\xdd\x7a\xb4\xe8\x37\x5d\x3b\xf5\x2b\x3b\x81\x83\xb6\x5d\x9f\x8d\xb8\xc1\x6b\xba\x74\x33\x4e\x4a\xc5\x9d\x3a\xf7\x57\x28\x0e\x55\xdb\xd9\x5e\x5d\x87\xf5\xd2\x18\x1c\xc9\x89\xa7\xff\x0d\xe6\x71\x05\x9f\x5e\xfa\x2f\x5b\x45\xb6\x49\xb0\x6e\x9b\x3a\x14\x2b\xc9\xc8\xd6\xa9\xd8\x4a\x87\x7b\x02\x5f\xea\x2e\x0c\x02\x34\x3f\x8d\x5c\xa1\x6e\x5b\xb0\x25\x77\x6e\xb8\x12\xc5\xfa\x1c\xfb\x22\x62\x78\xca\x1f\x0a\xa6\x9e\x94\x48\x89\x1b\x80\x59\x02\x03\xf5\x2e\x8c\xc1\x9f\x50\xfb\x61\x47\x7a\x72\x67\xf2\x56\x7f\xd5\x66\x82\xbd\x0e\xed\x54\x6e\xa2\x5a\x60\x8d\x5d\xd0\x36\xba\x34\xa9\x9b\x9a\xbf\x0c\xf2\xb8\x2c\x2e\x82\x70\xb5\x26\x5f\x62\x47\x23\x77\x79\xc1\x6a\xeb\xf0\x84\xfe\xe0\xcd\xc3\xb9\x82\xd6\xb7\xc6\x4c\xb6\x4e\x3a\x5c\x5c\x9f\x0d\xa8\xae\xe0\x3c\x0f\x6b\x14\x6b\xc5\xd4\xc8\x05\x05\xcf\xc6\x00\x61\x93\x31\x9b\x4b\x53\x4e\xb3\xc5\x70\xe9\x0e\xc6\xec\x31\xd8\x90\x42\x4c\xf9\x30\x6c\x09\xb0\x3e\x3f\xeb\xe3\x46\x1f\x0a\x91\xfa\x20\x32\x52\x08\x1b\x0f\x08\xc1\x78\x97\xf3\x02\x43\x6b\x08\x3c\xd8\xaf\x1d\x48\x7d\x8b\x6a\x72\xa5\xf5\x6d\xaa\x29\xe7\xe7\x16\x94\x72\xdb\x41\x53\xee\x3a\x84\xa0\x9a\x5c\xdd\x08\xf6\x50\x4c\xee\x59\x01\xa0\x7d\xe6\xaf\x49\x14\x4f\xa7\x16\x8b\x43\x4f\xd7\xad\xf6\x1f\xdc\x8c\xfe\x60\xbc\x80\x59\x03\x78\x4b\xd0\x9a\xc7\x80\x46\x07\x5a\x66\x75\xa0\x02\x36\xaa\x47\xa2\x03\x63\x8c\xfb\x0a\x82\x76\x87\x57\x67\x5f\x0d\xd0\x57\x61\xe2\xe2\x57\x5b\x1d\x40\x3b\x6e\x5b\x50\x0e\xb4\xa9\x42\xf6\x4a\xf1\xd8\xc1\x5e\x95\x4e\xa2\xdd\x33\x7b\x10\x51\xd3\x39\xd4\x5f\x16\xbe\x81\x48\x07\x28\x90\x66\x82\x01\x7c\xec\xbc\x75\xc8\x1a\x19\x97\xca\x9a\xb5\x33\x56\xae\x92\xcb\x75\xe0\x7d\xae\x9d\x4f\xe9\xce\x45\xbf\x2c\xc4\xda\xd3\xc6\x74\xb7\xdf\x07\x6b\x72\xe7\x87\x26\x7c\x9f\xcf\x02\x2e\xd6\x14\xf2\xd2\x27\x43\xd4\xcd\xaa\x60\x2f\x73\x8b\x59\xbb\x29\xeb\xe4\x9f\xb7\x46\x6e\x1d\x32\x08\x86\x75\x2b\x62\x93\x47\x1a\x84\xeb\x9e\xca\x9e\x96\xca\xf6\x91\x3c\xb3\x25\x34\xa7\x27\x8b\x13\x23\xc7\x85\x7e\x0c\x6b\x70\xd5\xca\x84\x67\xf0\x85\xca\x70\xeb\x4b\xaa\x6e\x18\x81\x11\xac\xc9\xfa\x10\x8c\x1b\x13\xc6\x63\x82\x20\xaa\x63\x2d\x0f\x75\xa8\x6c\x99\x1a\x4e\x4d\xa2\xac\xa2\x29\x19\x20\xce\x92\x55\x10\x7a\x64\xcf\x2b\x90\x9b\x09\x78\x5b\x10\x2a\x5c\x27\x16\x4b\x71\x23\x64\x85\x0d\xa5\xf1\x26\x1a\xd9\x21\xee\xeb\x62\xf8\x69\x74\x3a\x19\x5d\xdc\x9e\xdd\xfe\x52\x83\x93\x59\x7c\xec\xa0\x32\x83\x17\x6e\x7e\xb9\xb9\x1d\x7d\x9a\x7c\x1c\x5d\x8c\xae\x87\xb7\x6b\x60\x34\xdb\x3a\x6b\x82\x68\xcc\x64\x9d\xfa\xb6\x09\x4c\xa3\x33\xf3\xd6\xf4\x5e\x05\xd3\x0c\x3a\xa1\xa4\x01\x50\xd3\xa0\x48\xb0\x18\x5c\x7b\x0f\x24\xe1\xcb\xdc\xac\x5a\xbb\x60\x01\xd2\x66\x4d\xfb\x6d\x68\x9b\xd0\x66\x79\x8d\x8f\x91\xa9\x06\x16\x14\x44\xf5\x0d\x82\xc8\x87\x05\x61\x5f\x29\x44\x3e\x2f\x13\x1a\x51\x15\x64\x99\x72\x61\xdd\x2b\xc6\x99\x0f\xfe\xc9\x35\xc4\xb5\xb7\xd8\xb0\xbd\xeb\xfc\x61\x5c\x4b\x55\xdb\xf7\x27\xca\x23\xbf\xad\x2d\x31\xb3\x07\xc5\xbe\x21\x84\xa3\x02\x4c\xb7\xc5\xe8\x9e\xc2\x3c\x50\x4d\xf7\xb2\x99\xa2\x0d\xa0\x75\xf5\x83\x5c\x7f\x1b\xb6\x45\xad\x15\xce\x75\x7b\xd8\x5a\x37\x4a\x7d\xe1\xe0\xb3\x42\xe9\xc5\x3d\x80\xb8\xd8\x44\x88\x0d\xa3\x4e\x2a\xd5\x5c\xd8\xbd\xa9\x71\x81\x04\x49\xb9\xd2\x0a\x98\x89\xcf\x19\x68\xa1\x8a\xe2\x84\xfe\x03\xe0\xce\x04\x39\x0c\xe2\x99\x20\x9b\x34\x0e\xb3\x87\x2c\x14\xc9\xe1\x98\x9d\x8e\xae\xae\x47\x27\x9a\x21\x1d\xa2\x3b\x09\x48\x66\x85\xa9\x9f\x5a\xf2\x36\xe2\x58\x18\x57\x44\x99\x54\x04\x37\x06\x82\x0b\xc1\x45\x77\xfe\xe0\xfb\x1b\xc1\x77\xf5\xe4\x0d\xcf\x0a\xb6\x29\x67\x00\xb8\x68\xac\x9b\x1b\x24\xa0\xec\x3d\xbf\xef\x1a\x3f\x16\x56\x24\x44\x72\x01\x49\xa4\xb8\xea\x4f\xb8\xda\x00\x54\xda\x7d\x7e\x85\x3e\xaf\xe0\xdb\xb6\x79\xde\x42\xc0\xab\x54\x39\xea\xa9\x01\x46\xf5\x35\x69\x4a\xf3\x6c\x14\x15\xc5\x4b\xa0\xbe\x94\x48\x7f\x4a\xe6\x98\x21\x91\x31\x56\x82\xc1\x0d\x2d\x6d\xd5\xa0\x99\x4d\x8f\xaa\x5e\x33\x9c\xf2\x8c\x99\x00\x28\x9a\x92\xba\xc1\xc8\x25\x61\x6a\xcd\x60\x5e\x0a\xd3\xa7\x34\xd4\xd7\x0b\xeb\x53\x33\xd0\x26\x64\x9f\x3a\x7f\x12\x14\xe7\xdd\xec\x5a\x76\x21\xb2\x05\xa7\x92\x3e\x54\xfe\x7e\xae\xd7\xb2\xb1\xbc\xdf\xb9\xbb\x5b\x2c\xef\x1b\xba\x5a\x77\x83\x9f\x14\x1c\x4a\xa5\x65\xb3\xc1\xbb\x16\x37\x13\xb4\xe8\xb5\xf7\xe2\xe8\x81\x30\xb5\x17\xa1\x12\x9a\xa8\x49\xdb\xef\x66\x1a\x36\x95\xfb\xce\x4e\x73\x8e\xe4\x2b\xc8\x07\xa1\x28\x4a\x60\x60\xce\x36\x55\xca\xfa\x41\x9b\xbc\xb3\x0f\x9d\x1d\x7e\xf0\x6a\x75\x5d\xd6\x64\x17\xd8\xd5\xce\x2b\xf8\xe6\x91\xc1\x0e\x77\x7e\x4b\x20\x1f\x49\x8c\xea\x19\x00\x48\x58\x8d\xa2\xbc\xe7\xa6\xcf\x05\x96\xe5\x2e\xd7\x6e\xf9\x16\xa8\x35\x85\x66\x3e\x12\x48\xea\xdc\x47\x2c\xff\x26\xc9\xfb\x30\x90\x3b\x91\x40\x14\x7a\xab\xe9\xc1\x54\x0f\xce\x44\x92\x5f\xc7\xb8\x83\x60\x65\x06\xa3\x6f\x7a\xb2\x14\x04\xea\xd9\x1f\xa3\xab\x84\xe8\xeb\x32\xd3\x57\x66\x96\x24\x0e\xe1\xab\xfd\x4a\xdf\x08\x95\xee\xc9\xe7\x15\x08\x8c\x2d\x13\x73\x08\x77\xed\x33\x0b\xd6\x60\xff\x90\x0b\xc1\xfa\x82\xdd\x0f\xac\x3f\x45\xd1\x1f\x74\xb7\x95\x09\x76\x04\xfd\x1f\x87\x3a\x8a\xa4\xff\x08\xe2\xb7\xdb\xa6\xb0\x31\x6e\xe0\x26\x73\x70\x4b\xf9\x84\x93\xb0\x91\x66\x93\xa6\x60\xd8\x0e\x97\xd1\xa9\x69\xa2\xf6\x0a\x6c\x9b\xa2\x0f\xd4\xf6\x2e\x7b\x8b\xb7\x6a\x43\xb7\xec\xd0\xc0\x11\x95\xdb\x47\x42\xec\xb3\xdc\xde\x9c\x4b\xa0\x2b\xe3\x30\xf3\x9f\xe7\x56\xbf\x3c\xab\x82\x2a\x99\x17\xf2\x42\x0b\x22\x36\x42\x23\xf6\xb9\x37\x79\x13\x7a\xc0\xf5\xac\xcd\x56\x25\x00\x39\xc5\xc6\x72\xc8\x02\x6a\x9b\xdd\x62\x33\xe5\x5a\x19\xba\x99\x81\xee\xea\xb7\x00\x31\x24\x4f\x37\x7c\x2a\xf7\x45\x81\x5a\x0a\x13\xe8\x71\xc0\x36\xc7\x01\xb3\x25\x2a\x3c\xed\x01\x6a\x9f\x12\x90\xa6\x9f\x7b\x28\xca\x97\xbc\xab\x39\xb5\x26\xd1\xab\xb0\x3b\x9d\xb2\xba\x0a\x5f\xe8\x73\x7f\xba\xa3\x8b\x43\x4f\x66\x35\x81\x3c\xd9\x5d\xc2\x1c\x0a\xf3\x37\xe6\x59\x68\x93\xc4\xc8\x60\x0d\x18\x94\x62\xbb\x76\xde\x34\xbd\xc4\x82\x30\x35\x66\xd7\x7a\x14\xe6\x8b\xdc\xd5\x9d\x17\xc2\x27\x79\xc9\xce\x19\xc2\xf6\x2b\x58\xf4\xa6\x48\x23\x39\x31\x2f\x81\xec\xff\x84\xb0\x05\xef\xcd\x3b\x06\xa1\xc0\x22\xf4\xe8\xa9\xda\x94\x25\xa0\x0b\x2d\xec\x45\x0b\x0a\x00\x01\x31\x91\xf6\xf2\xa0\xca\x22\x40\x78\x51\x39\x23\x0e\x2b\x19\x3e\xf3\xfc\xab\x8e\xb9\x3a\x4d\x8c\x39\x0b\x88\x1c\xb3\xa0\x8f\x16\x68\x4d\xa3\x0d\x6d\x29\xf6\xc3\x3e\xd3\xd8\x7b\x16\xe0\x9f\x66\x87\xb8\xa0\x73\xca\x82\xea\x3b\x76\x7a\x29\x5e\x82\xfd\xcc\x9c\x41\x3e\xf3\xf7\xcf\xad\x0d\xe3\x3e\x84\x11\xff\x9f\xff\xfa\xef\x43\xda\x64\x5e\x96\x13\xbb\x02\xaf\x61\x27\x37\xdb\x96\x70\xe7\x03\xcc\x8f\x06\x2c\x09\x99\x4d\x3d\x20\x77\x21\x34\x3d\xff\xd5\x5e\x6e\x9a\x68\xb8\x5a\x18\x7f\x5a\x91\xdc\xc1\xf8\x2c\xb2\xf6\x5b\x36\x60\x71\xb9\xc7\x35\x77\xab\x05\x51\x8d\xae\xa2\x83\x89\x46\xd3\xed\x97\x2e\x94\x12\x83\x0a\xa0\xf7\x76\x89\xfe\x5a\x60\xf9\x74\x2e\xfe\xda\x32\x39\xc6\x2a\x17\xde\x91\xeb\x9c\xfd\x66\x90\x26\x87\x53\xef\x4a\x26\x89\x30\x07\xda\x63\x34\x59\xe2\x09\x81\x05\x21\xd6\x6b\x8d\xcf\x82\xa4\x98\x6e\x14\x97\xac\xdf\xaf\x87\x3d\x2c\x18\x2d\xf1\x9c\x88\x49\x9c\x15\x82\x50\xd7\xb5\x7d\xa5\x3f\x3a\xcd\xd4\x6a\x7d\xfb\x32\xc1\x51\x25\x8f\xb0\x0d\x6a\x52\xbf\xdf\xd0\xec\x7a\xc1\x30\x08\x15\x28\x0a\x87\x0d\x40\x8e\xa4\x04\xe4\x68\x63\xd7\x0a\x5a\x3b\x5c\x34\x0c\x8a\xa1\x07\xc2\xbd\xbd\x89\x0c\xdc\x34\x8c\x1c\x4d\xb3\xdc\xca\xe1\x01\xfc\xe3\xc3\x31\xfb\x60\x2a\x60\x80\xe2\x61\x06\x10\x41\xe2\x00\xf9\xbc\xe4\x92\x14\x32\x59\x6a\x40\xf9\x6d\x26\x9a\x1d\x46\xbd\x4c\x5a\x2a\x46\xbf\x93\x48\xfa\xe2\x90\x9c\xd5\x0d\xaf\x4e\xb9\x9e\x02\x77\x92\x7a\x22\xba\x84\xe4\xd0\x49\xed\x49\x7b\xba\xfa\xa7\x79\x6c\x08\x80\x33\xa9\x64\x35\x40\x7e\x7a\x25\x82\x48\xc8\x03\x11\x78\xae\x25\x56\x4c\x93\xb0\xf4\x42\xd1\xd4\xd4\xc0\x4e\xd6\x1d\xa0\x3c\x8d\x0c\xd8\x02\x8a\xcb\x23\x28\x26\xdb\xd4\xd1\x62\x31\x8d\x60\xe7\x8c\x97\x3a\x07\xf7\x06\x52\xe8\x30\x2c\x41\xb1\x22\x0a\x72\xb9\x6d\x05\xc5\x5b\x97\x93\x54\x0d\x63\x46\xf5\x69\x15\xcd\x22\xd2\x93\x57\xc5\x1d\xba\x4c\x54\x97\x74\x15\xbb\x7b\xdf\x26\x21\x2d\x30\x8b\x6d\x66\x9d\x95\xa5\xb5\x4c\x01\xb3\x33\x76\x20\x1f\x73\x6c\xf3\xc3\x02\xec\x6e\xd3\xa6\x01\x19\x87\x8b\xcc\xe9\x45\x5a\x32\x07\x37\x2d\x17\x5a\x40\xcd\x98\xa2\x89\x26\x0e\x3b\x06\xad\x35\x67\xcc\xa3\xe7\x41\x84\x6c\x13\x40\x1b\x95\x92\xb2\xf9\xc4\xae\xa4\x4b\x12\xeb\x76\x31\x14\x69\xea\x93\x69\xca\xfc\xf8\xde\x35\xd4\x6e\xe7\x35\x64\x0d\xe0\x59\x2e\x3d\x0d\x04\x6b\xc6\xdd\x64\x2c\xea\x99\xcb\x6a\x9b\xd0\xd8\x2c\x05\x35\x85\x7a\x61\xa2\x9b\x18\x29\x40\xac\xab\xe6\x83\xe7\x57\x88\xb4\x29\x67\x26\x91\x04\x22\x7e\x55\x43\x4e\x9d\x6c\xcc\xa5\x3b\x63\x5e\x44\xb3\x99\xf6\x3e\x63\xb8\x94\x96\x87\x5d\x77\x36\xac\x19\x27\xc9\x14\x47\xf7\x5e\xd9\xf0\x2a\x37\x17\x0e\xc9\x5e\x0b\xa8\x90\xf1\x6e\x88\x4b\x0f\x34\x02\xe9\xc6\x96\x6b\x37\x00\x0c\x34\xa7\xa0\xa0\x73\xb3\x6a\x84\xe9\xc9\x9b\x4c\x43\x3b\x7a\x13\x23\x1d\x93\x65\xc2\x57\x69\xc3\x7d\x56\x4e\x45\xda\xc5\xe3\xdf\x94\x09\xb5\xd7\xab\xac\xc4\xf4\x36\xbe\xcc\x2a\x79\x0d\x7b\x40\x8b\xda\x80\x4b\x7e\x4c\xf8\x14\xac\x7c\x56\xcb\x76\xb1\xfa\x41\xc8\x78\xf9\x3c\x6f\x9a\x41\x50\x3e\x91\x54\x2e\x13\xbc\x6a\xeb\xc1\xc4\xae\x3f\xed\xbe\x99\x5c\xe7\xf5\x46\xb0\xee\x51\x9f\xb5\x9f\x3f\x05\xac\xee\xb9\x93\x04\xcc\xbb\x86\x7f\x59\x63\x12\x71\xd6\x24\x93\x35\x74\x68\x70\x4d\x14\x1f\x33\x85\xe7\x6e\x77\xad\x74\xc9\x1f\x19\x11\x72\x41\x97\x85\x1a\x7e\x3b\xc7\x99\x5a\x92\xb6\xff\x31\x51\x95\xb5\x6d\xf6\xb5\xe6\xab\x57\x07\x5f\x1e\x18\xa0\x07\x7d\x3c\xe4\x12\x47\xb9\xed\x33\x4a\xb0\x94\x74\xb6\x0a\xf0\x19\x7c\xc0\x22\x64\xc1\x14\x8d\x05\x41\xd1\xb0\x3a\x3e\x1b\x66\xfc\xef\x27\x4d\x79\xf7\x14\xad\xbb\x22\x0f\xa2\x71\x08\x4e\xa7\x2f\xd5\x2a\x24\x87\x13\x57\x2c\x34\xc7\x53\x65\x6e\xd9\x91\xd9\xfc\xa5\xfd\x0d\xcc\x21\x29\x6c\x97\xef\xdc\x0a\xf1\x52\x21\xb5\x1c\x71\xcb\x8b\xfa\x76\xd8\x56\xcd\xf4\xb0\x0e\xe1\x34\x60\x8e\xb1\xfd\xc2\xe7\x2a\x15\xb2\xf4\x71\x01\xd9\xc4\xac\x91\x56\x7d\x9d\x01\x5b\x73\x17\x0f\x1b\x01\xd9\xf5\x79\x07\x03\x24\x77\x02\x3f\xeb\x4e\xda\xa7\x24\x21\x7b\x89\xc0\xdd\x82\xce\xcb\x91\x12\x01\x85\xb7\x12\x51\x5e\xc1\x60\xbd\x91\x68\x73\x1a\x2f\x8f\x2a\xa7\xee\xbd\x0d\x6a\x8b\x68\xe5\x06\x3c\x99\xfa\x91\xff\x6c\x06\x6a\x03\x96\xeb\x08\x0c\x8c\xab\xb0\xf5\x5d\x15\xe3\x3a\x98\x48\xd3\x82\x3d\x31\x79\x37\x6e\x1f\x1d\xf2\x8f\x17\xf5\x9d\xec\xf9\x7a\x8f\xc1\x0b\x87\xf7\x36\x8c\xee\x23\xe9\x12\xdb\xb2\xf6\x88\x6e\xc5\x4d\x9b\xae\xc4\x6e\xa4\x62\xfd\xd2\x8a\xa3\x39\x51\xa6\x3a\x7f\x4c\x1f\x68\x9c\xe1\xe4\x2d\x92\xc9\xde\xf2\x15\xf6\xba\x15\xf5\x4c\x60\xb3\x53\x7d\x43\x94\x74\x37\x5e\x05\x99\xd3\xee\xd4\x81\x4b\xbd\xce\x13\x99\x5f\xef\x16\xbd\x8e\x93\x7c\x6d\x6d\x4a\x4f\x77\xc1\xae\xa7\x97\xbd\xd0\x07\xa0\x10\x61\x48\xd6\xc8\x2c\xc8\x38\x1c\xde\xc0\xff\x5c\x31\x64\xac\xf1\xec\xdb\xe1\x75\xf2\xe9\x57\x96\xf3\x29\xb6\xd7\x46\xe6\x76\xde\xdc\xa7\x24\xb5\x4d\xc7\xb2\x0f\x1d\xe5\x89\x4d\x42\x96\x1a\xd7\xda\x16\xfa\x00\x1b\x84\x9a\xbc\xcf\xb9\x5b\xd5\x6e\xd9\x3e\x0f\x59\x5d\x61\x93\xdd\x73\x8b\x12\x6e\x7c\x23\x93\xa5\x20\x33\xfa\x79\x2b\x51\xfc\x0a\x3e\xb5\xea\xa5\x5e\xe6\x52\xa9\x14\xb0\xf5\x00\x1e\x6a\x10\x04\x60\x57\xda\xd6\xbe\x18\x33\x80\xe8\x97\x7f\x3c\x3e\x3a\x9a\x66\xd1\x3d\x51\x47\xf7\x64\x85\xb8\x28\xfc\xb4\x2d\x32\xcd\xfe\xcb\xba\x98\x7d\x5d\x28\xb5\x94\xc7\x47\x47\x73\xaa\x16\xd9\xf4\x30\xe2\xa9\x89\x5d\xe3\x62\x6e\xfe\x38\xa2\x52\x66\x44\x1e\x7d\xff\xdd\x77\xf9\x16\x4f\x71\x74\x3f\x37\xb9\xbe\x55\x1b\x56\x61\xcb\x6f\xaa\xa5\x0f\x37\x47\x2d\x17\x9c\x4d\xc8\x67\x4d\xa4\x72\xdb\x2c\xf0\x3b\x49\x24\x1a\xfe\x7c\x83\xe4\x8a\x29\xfc\xf9\x18\x7d\xa2\x0c\x04\x90\x1f\x78\x26\x24\x3a\xc5\xab\x03\x3e\x3b\x48\x39\x53\x0b\xf4\x09\xfe\xd7\xfe\xf4\x48\xc8\x3d\xfa\x85\x60\x61\xf7\xd7\x56\x38\xf1\xf5\x17\x17\x18\x12\x59\xa0\xce\xba\x58\xa1\xef\xfe\x1d\xa5\xa6\xe5\x63\xf4\xed\xd1\x77\xff\x8e\x7e\x0f\xff\xff\xff\xa2\xdf\x37\x68\x6a\x9b\xe5\x91\x43\x69\xb5\xeb\x46\xd3\x1e\xac\xd4\x16\xd5\x26\x4f\x04\xcf\x77\xaa\xb6\xe5\x7b\x1a\xdd\xf3\xd9\x6c\xa2\x68\x4a\x4c\xa0\xf1\x04\x8b\x0a\x06\xd9\x96\xa0\x3c\xd4\xd6\xc6\x33\xe5\xc5\x73\x98\x70\xdb\xa9\x49\x23\x72\xc7\x4d\x66\x79\x6d\x30\xf0\x28\x15\xea\xad\x51\x09\x5f\x91\x58\x9f\x8a\x4d\x4c\x80\xce\x3a\x53\xad\xe0\x9b\xa7\xdd\x85\xf5\x1e\xbd\x17\x38\x0c\x69\x30\x5e\x1f\xbb\x90\xb5\xc7\x01\x3c\x42\x7c\x27\x4c\xa6\x7b\x52\x09\x1c\xd9\x30\x41\xcb\x40\x61\xde\x93\xa6\xea\xcf\x70\x93\xbc\x98\x89\x18\xb0\xcd\x2c\xa3\xb1\x80\xec\xee\x9a\x04\xc9\xdf\x16\xb6\xb3\x9a\x01\x71\xa8\x9b\x5f\x43\x8e\xa4\xfb\xe7\x37\x6e\xb3\x52\x83\x3e\x6d\x1b\x82\x9a\xc7\x36\x7a\x2c\x28\x54\x64\xdc\x76\xb6\x45\x49\xd4\x81\x09\x57\xa9\x6f\x02\xaf\x7c\x0b\x3c\x18\xaa\x6d\xa4\x29\xec\x4f\xef\x25\x56\x5d\xfd\xaf\x05\x62\xb9\x74\x9f\x76\xa7\xe6\x21\x72\x1f\xeb\x13\x81\x8b\x41\x04\xc0\xc3\xac\x07\x7e\x05\x86\x47\x5f\xaa\x7f\x1a\xf8\x29\x22\x2e\x04\x88\x9e\x10\x37\x6a\x17\xbd\x85\xa6\x2f\xab\x33\xdc\x00\xcb\x61\xf4\xd7\xbb\xe1\xf9\x4d\x01\xbe\xe1\xf2\x76\x52\xfd\xf5\xec\xa2\xfc\x4e\xf1\x97\xd1\x7f\x9d\xdd\xdc\xde\xb4\x22\x39\x94\x1a\x6d\xe2\x04\x0b\xfe\x08\x55\x78\xf4\x59\x81\x05\xc1\xa5\x25\xd1\xd7\x3b\x66\x0e\x94\x8b\x3a\xf7\xb2\xf1\xe8\x02\xb2\x5b\x5c\x9f\x59\x54\x8d\xb8\xfa\x62\xc2\x68\x60\x6a\x2f\x15\x42\x23\x2b\x9d\xaf\x8f\x9e\xb9\xe1\x62\x27\xad\x79\x43\x6e\x5c\x53\x34\x31\xac\x3f\x0c\x79\x6c\x5c\x78\x88\x3c\x63\xdd\xb2\xe5\xb3\xd6\xdb\xa2\xa9\x30\xf1\x06\xdd\x98\x8c\x9e\xfa\xa9\xff\x64\xdd\x30\x21\xf8\xc0\xbd\x9d\x17\x06\x82\xd1\xea\x93\xa0\x99\x4a\xcd\x88\x6b\x70\x74\xd6\x6d\xe8\x8d\x75\x0f\x4a\xd3\x38\x44\xc2\x40\x14\x30\x73\xfa\x89\x4d\x73\xac\xdf\xcf\x4c\x44\xe4\x84\xef\x16\x09\x35\xa3\x5b\x96\x8a\xfd\x40\x13\x12\x44\x6b\x44\xdc\x84\x66\x80\x8e\xd2\xb4\x6d\x09\x65\x64\x62\x4a\x1a\x36\xf5\xb9\xbe\x8c\xe2\x9f\xff\xd4\x30\xa2\x73\xca\x88\x2b\x98\x98\x0f\x0c\x42\x5a\x72\x62\x08\xb0\xf2\xc2\x1f\x89\x8a\x10\xe4\xaf\x4b\xd4\x54\x18\x46\x90\x25\xdf\x6a\xa5\xe6\x54\xef\xe3\x92\x4b\xaa\xb8\x58\xd5\x37\x3e\x15\x98\x45\x95\x82\xae\x9d\x9a\x37\x9f\x3a\x09\x73\x5d\x47\x5b\x97\xde\x70\x15\x37\x0a\xd1\xf7\x6b\x7b\xc3\x6c\x9e\xe1\xf9\x76\x14\xe6\x3e\x76\x53\x8b\x8a\x18\x10\xcd\x6a\xfe\xb9\x1d\xaa\xc3\x3d\xd4\xa4\xe9\x04\x2b\xe3\x69\xb4\x68\xdb\x01\xe0\x5a\xf1\x68\x01\x70\xcf\x3e\x30\xbd\x2a\x18\xd0\x3b\x08\xb4\xc6\x17\x95\xcb\xe0\x0e\x42\xbc\x84\x1c\x2e\xb0\x16\xd7\xb6\x84\x41\x33\xb5\x20\x06\x85\xd2\x33\x60\xa5\x9c\xe1\x88\xb2\xf9\x20\x40\xc0\x82\xc4\xe6\x50\x29\xa8\x63\x52\xb7\x58\xde\xef\x37\xf6\x68\xe7\x4a\x75\x34\xce\xab\x25\x19\x66\x6f\x43\x93\x68\x05\xfe\x47\xf3\x8e\x26\xd0\x86\x0a\x62\x4c\xcb\xe8\xfc\x52\x38\x9c\x99\xb6\xf1\xb9\x44\xc9\xda\x62\x97\x21\x64\xa8\xcb\x75\xc1\xa0\xca\x41\x09\xcc\x12\x70\x5a\x79\xfc\xeb\x08\xc1\xd8\x9d\x83\x30\x0f\xc0\xd5\x4a\x97\x1c\x42\xda\x67\x28\xc5\x6c\x65\x6e\x29\x88\x68\x91\xf7\xd2\x97\x4b\x44\x32\xc5\x49\x32\x40\x82\x64\x52\xeb\xb6\x03\x2d\x23\xce\x0e\x1c\xc4\x75\x8c\x12\x3e\xa7\x11\x4e\xd0\x34\xe1\xd1\xbd\x1c\x33\x2d\xa5\xb1\xb9\x39\x94\x4b\xc1\x23\x22\x65\xa0\xdc\xe6\x49\x94\x36\xb5\x05\x6a\x25\x2a\x22\x52\xca\xa8\x54\x34\xf2\x82\xbc\xcf\x5b\x36\x05\x67\x23\x0c\x5e\x15\x48\x14\x82\xe1\x6a\x65\x9b\x18\xd0\xad\x8c\xb9\xf0\x1a\x7d\xef\x5a\x2c\x1d\x17\xb4\xd9\x44\xbd\x7b\x80\x06\x72\xdb\x33\x51\xc5\xd3\xb0\x86\x9e\x4f\xec\x67\x70\x86\xda\x28\xe6\xba\x48\xce\x9e\x1a\x3c\x99\x7b\xc4\x59\x7f\x21\xfa\x90\xd4\xa2\xbe\xe4\x6c\xb7\xaf\x0c\xa9\x04\x86\xdc\x80\x4f\xb2\x8e\xa6\xf5\x2a\x82\xbc\x09\xf5\x37\xca\x81\x27\x94\x81\xf2\xe2\x54\x5e\x2d\x7f\x3d\x68\x22\x71\xcb\xa3\xd7\x5e\x4b\x69\x03\x84\x25\x7a\x24\x49\xa2\xff\x6b\x22\x52\x0f\x3c\x20\xb2\xe6\x87\x06\xb4\x1a\x3a\x71\x2c\xb2\x91\xa2\x60\x12\xaf\xa4\x8c\x67\x5e\xf6\x6c\x43\xb6\xb8\x56\x46\xd7\xcb\xb3\x21\x7b\xd4\x2b\xdd\x08\x1e\x57\x18\x5b\x55\xcd\x6f\x19\x54\xb3\xa4\x50\x70\x08\x88\xba\xf4\x5b\x43\x71\xf0\xf4\x81\xe6\x25\x6b\x6d\x6f\xad\x0e\x03\x3d\xa3\x4e\xde\x82\x90\x28\xb6\xf6\x80\x95\xa6\x52\x49\x63\xa7\xa6\x84\xb8\x99\x10\x28\x8c\x59\x14\x11\x12\xd7\x5a\x3a\xf4\x88\x5e\x1d\x38\xda\x15\x56\x0b\x93\x11\x9d\x72\x45\x82\x8a\x79\xce\x93\x61\xd0\xb4\xa6\x09\x9f\xc2\x85\x04\xb8\x69\x2e\xa3\x32\xc8\xc6\x32\xf3\x26\x31\xfa\x3a\xb8\x5f\x7c\xb6\xfe\x37\xf5\x28\x5e\x85\x15\x79\x05\x98\x69\x65\x17\x4a\x23\x72\x5a\xb1\xcc\xd0\x21\xba\x2a\x41\x4c\x04\x2b\x33\x83\x3a\xda\xad\x70\x25\x2f\x84\xb3\x56\x9a\xc4\xd3\xed\xd0\x86\x38\x6b\x85\x3e\xf7\x80\xb3\x56\x9a\x67\x83\x52\xc5\xf7\x11\xd6\xdc\x3e\xa9\x73\xde\xdd\x8c\x7d\xea\x0a\xb0\x27\x7c\x5e\x20\x41\x77\x20\x57\x75\x84\xf8\xba\x30\xe4\x4a\xc5\xb8\x5e\x16\x43\xae\x34\x98\xd7\x8c\x21\x57\x1a\xea\xeb\xc5\x90\xab\x19\x68\x07\x0c\x39\x13\xc6\x35\xd1\x44\xdd\x8d\x29\x40\x3a\xc4\x34\x9b\xdd\xc0\xbd\xdb\x3a\xc6\x13\x13\x22\x66\xae\x31\x27\x4a\x5a\x03\x0b\x8c\xd6\xa6\xce\x35\x59\xa3\xb0\xdc\x89\xf6\x7c\x9c\x05\x95\x46\x8b\x5f\x26\x98\x15\xaf\x0e\xa8\x7e\x2f\x48\xa4\xc9\xcf\x30\x2a\x25\x30\x93\xd6\x64\x66\xac\x4d\x7a\x14\xc6\x63\x19\xe1\xa5\x4d\x45\x6e\xaa\x74\xf0\x7a\x92\x2e\x37\x83\xe7\x03\x14\xb5\x02\xab\xef\x84\x81\xf4\xa9\x04\x16\x6e\xdc\x2c\x5e\x97\x31\xc4\xd8\x48\x7a\xd0\xe9\xc4\x2a\xf4\xdb\x5b\x4b\xff\xf8\xfd\x5a\x0e\x64\x40\xe2\x9c\xe9\x20\x80\xec\xb6\xb8\x14\xbe\x38\x08\x89\x6d\xfd\x7e\xa9\xb5\x6b\x3d\x1d\x73\xa3\x4a\x94\x62\xea\xf4\xfc\x4c\x42\xb0\xc6\x82\xca\x31\x33\xc9\x41\xb6\x50\xd5\x21\x02\x2f\xe6\x67\x9c\x2e\x13\x32\x40\x7e\x7e\x54\x53\xd0\x38\xfb\xf6\xdb\x3f\x12\xf4\x2d\x4a\x09\x66\x05\xfb\x06\x68\xf5\xfa\xca\x03\x14\x32\xb5\x20\x63\x56\xbb\x15\x68\x64\x4b\x29\xbb\x88\xee\x33\x36\xe3\xce\x5e\x02\xf5\xb5\x70\xb4\x40\x32\x9b\x9a\x02\x91\x81\x7d\xcb\xe9\x79\xe7\x7c\x0e\xa1\x48\x70\x13\xbb\x41\x6f\x8d\xbe\x58\x62\x38\x1d\xd1\x17\x0b\x53\xeb\xd1\x17\xeb\x4f\xdf\xab\x45\x5f\x2c\xed\x79\x37\xf4\xc5\xba\x2d\xdf\x02\x7d\xb1\xd0\xcc\x17\x83\xbe\x58\x5a\xd1\x2f\x06\x7d\xb1\x34\xaf\x1e\x7d\xf1\x0b\x41\x5f\x5c\xcf\x47\x6a\xf1\x05\xeb\x0f\xef\x66\xf8\x82\xb5\xfa\x55\x33\x8b\xd8\x15\xcc\x05\xa4\xb9\x67\xc6\x17\x2c\x4c\xa0\x0f\x7f\xde\x3c\xfc\xb9\x96\xf8\x6c\xdf\x7a\x78\x2e\x26\xba\x7c\x91\x75\x44\x18\x2c\xec\x4f\x67\xd3\xe7\x3e\x28\xf1\x69\x03\xee\xc1\x03\xd3\xd5\x1c\x32\x2c\xac\xa2\xb4\xb8\xa4\x5a\x32\x72\xc8\x50\x46\x73\x0a\x03\x3b\x7a\xca\xdd\x22\x70\xbf\xb4\xbc\xde\x67\x63\x68\x71\x9f\xc6\xf9\x9a\x22\xd3\x3b\xd0\xab\xcb\x6d\xde\xd0\x39\xe2\x06\x01\x4e\x92\x7a\xc3\x20\xd4\xb7\xdf\x4f\xb3\xeb\x2e\x32\x8f\x7b\x53\x28\xb7\xef\xd3\xb6\xf3\x72\xfb\x46\x36\x2e\x65\xab\x23\xac\xdc\x97\x73\x2a\x95\x68\x0c\x5a\xab\x8c\x70\x17\x37\xec\x32\xdb\x06\x61\x63\xbe\xdd\x67\x29\x49\xb9\x58\x17\x31\x57\xfb\xa5\x54\x5c\xac\x8f\x99\xa9\x57\xab\x96\x0b\x92\x6a\x21\x68\xb2\x69\x23\x5d\xf7\x3b\x8f\xa0\x35\xa9\xa5\x26\x8e\xbd\x40\x04\x81\x93\x55\xbf\x1b\x1b\xf4\xb9\xce\xdb\xbd\xeb\x36\x5b\x7c\xbc\x0d\xad\xf8\x0e\x1f\xb4\xdd\x5a\x62\x5f\x2a\xb8\xd2\x81\xbe\x6b\x83\x35\x7c\xac\xcc\xfa\x70\x12\x13\x8a\x34\x69\x01\x83\x69\x83\x63\x84\x8f\x4f\x83\x6f\x5b\x5d\x45\xe5\xb7\xeb\x07\x1f\x3b\xab\x7e\xcc\xa3\x2c\xc7\x7a\x0a\xdd\x4a\x5b\x97\x5a\x0c\x3c\xac\x95\xc5\x03\xcf\xb3\x24\xe2\x20\x94\xb7\x0b\xde\xde\xea\x6a\x16\x69\x88\x27\xa4\x62\x99\xdf\x98\x8a\xa4\x8d\xf5\x7e\x5a\xc1\xc2\x67\x49\x74\x17\x2e\x94\x9f\x1e\x92\x41\xe4\xbb\xa4\x29\x4d\xb0\x30\x06\x64\x6c\x20\x15\x18\xc2\x33\xe8\x70\x05\xf8\x91\x10\xb9\xa7\x55\x9d\x07\x9c\xd0\x18\xb9\x38\x7d\x13\xe6\x63\x42\xc5\xd1\xf0\xe2\x14\x99\xc0\xf2\x6d\x52\x4a\x3c\x73\xf0\xf6\x6c\x13\x54\xee\x17\x33\xcf\x78\x09\xc2\xd8\x30\x73\x93\x22\x26\xaf\xc4\x06\xb6\xd5\x6d\xae\x53\xc2\x77\xd8\xd9\x4c\x34\x46\x8e\x77\x31\x40\x47\x2a\xc3\x09\x68\xf8\x61\xb1\xb3\xf2\x79\x9e\xae\x6a\x12\xd2\xbb\x79\x38\x6a\x42\x5c\xdb\xe3\x7d\x40\x1b\xb5\x87\x62\x46\x13\x82\x70\x14\x11\x69\x6c\xe2\x76\xb5\xf1\x94\x3f\x10\x3d\xe8\x5d\x8e\xac\xe6\xe2\x7a\xde\xfa\x6e\xf7\x88\xb3\x71\xce\xe5\x8c\xa4\xb8\x10\x3c\x9b\x2f\x9c\xd9\x4d\xb3\x4b\x3d\xb5\xba\xbd\xfc\xa9\x62\xdb\xde\x78\x2f\xdf\x67\x34\xd9\xce\xa8\x99\x87\x5e\xeb\x61\x7e\x3c\xbb\x45\x72\xe1\x19\xf5\x14\x9a\xad\xdd\xd8\xea\xa0\xbb\xf7\x69\xbf\xf5\x3c\x14\xba\x19\x38\x94\xc5\x19\x4f\x12\xf0\x10\x48\x92\x3e\x84\xc5\xa6\xc3\xee\x61\xc2\xb7\x74\xcb\x12\xeb\xf0\x35\xf8\x19\xa5\xc2\xe9\xb2\x93\xe8\x7d\x65\xb4\x02\x89\xdc\xe8\xcb\x41\x06\x26\xfc\x90\x33\xc2\xea\xcc\x92\x3f\x57\x6b\x4f\xbc\xb1\x20\x50\x17\x94\xb8\xb7\x40\x50\xb7\x24\xcf\x1c\x0c\x5a\x37\x8f\x0d\x58\x40\x21\xf9\x30\xbf\xc0\x5d\x94\x8d\x51\x38\x87\x7a\x7e\x63\x36\x2c\xa4\x29\xba\xaa\xa6\xd3\x55\x9e\xe1\x60\x74\xb7\x90\x93\x00\x64\xbf\x35\x68\x81\xef\x49\xff\x05\x1a\xa6\x01\x08\x35\x61\xa2\x2e\x14\x14\xd2\x33\x48\x7c\x80\xa3\x55\x94\xd0\x28\xb8\x4e\xe6\x02\x2f\x17\x75\xec\xc6\x2d\x7b\x0f\x46\xf6\x52\x60\x64\x4d\x75\x68\x36\x89\x81\x77\x74\xc5\x70\x4a\x7a\x90\xb4\x3a\x90\xb4\x81\x87\x01\x62\x79\x45\x9d\x17\x44\x97\xa9\x9e\xbb\x1e\x29\xed\x05\x90\xd2\xb6\x39\x7c\x39\x0c\x5a\xe1\xd8\xf5\xe8\x6d\xef\x3a\xa1\xb7\xf9\x4b\xf0\x55\x01\x72\x35\x9f\xc7\x17\x06\x7a\xaa\x0e\xec\x25\xd1\xda\x6a\xc4\x85\x4d\xe4\xa6\x36\xb8\xb6\x36\xba\xe8\xb4\x2e\x2f\x0b\x9e\xb6\xd9\xca\x6c\x84\x8b\x56\x7b\x77\xbd\x12\x94\xb4\xe6\x6d\x78\x25\xe7\x66\x9f\x99\x4a\x9b\x95\x0c\x0c\xb3\x95\x36\xd1\x6e\x36\x4b\x5c\xf2\xf4\xf0\xb6\x92\x97\xf2\x7a\x4d\xdb\x25\x30\x0d\x9d\xef\x9f\x08\xb4\xe0\x49\x6c\xc2\xeb\x82\xd5\xf2\x1d\xf8\xb0\x79\xbf\x40\x6e\x33\x6e\x96\x24\x32\xda\x56\x5e\x74\xa9\x2d\x4d\xc9\x6f\xe2\x5b\x4f\x55\x0a\xe4\xdf\xfd\xa6\x2b\x85\x2b\xbb\x6d\xca\xd2\x9a\xc1\xb5\x89\x1e\x5b\xa6\x2d\x05\x3d\xb6\x7a\x47\xdd\xec\x3a\x79\x48\xcb\xc4\xb2\x45\xf0\x5a\xa5\x3a\xd6\xee\x98\x69\x29\xfe\x3c\x59\x62\x81\x93\x84\x24\x54\xa6\x4f\x16\x41\x7b\x52\x74\x93\xeb\xb3\x2a\xb8\xb1\xcf\x58\x2c\x02\x3e\x43\x6e\x20\xb6\x26\x9f\xe2\x48\x64\x2c\x44\x7c\xf4\x1b\x83\x5c\xcd\xb6\x0c\xee\x05\x30\xe9\x44\x0b\x28\x00\x39\xc3\x54\x30\x22\x1b\xcb\xed\x91\x28\x13\x54\xad\x26\xb6\x7a\x61\xf7\x03\x77\x63\xbf\x3c\xb1\x1f\xb6\x47\x16\x38\x98\x0c\xd7\x9f\xaf\x96\xb8\x24\x02\x4a\xb1\xb8\xa2\x22\x41\x85\x46\x0b\x83\x42\x7c\x3d\x17\x88\x19\xae\x5c\xdb\x4d\xb1\xee\xf8\x71\x12\xa4\x1f\x4d\xa2\x32\x71\xac\x3b\xac\x75\x70\x7c\xed\x2e\xb2\x27\x05\xa4\x6b\xc2\x4a\xd8\x7f\x25\x07\x9b\x63\x60\x9a\xd6\x03\x0e\x5c\xf0\x60\x2c\xcc\x37\x26\x00\x10\xb0\x4a\x55\xc3\x38\x31\x63\x5c\xd5\xd7\xf0\x6a\x19\xec\x30\xf8\xaa\xc3\x88\x83\x4e\xf6\x34\x6c\x7d\xd0\x85\xc8\x96\x8a\x4e\x9b\x11\x4f\xf6\x50\xd9\x71\x98\x40\xea\xbc\xb3\xf1\x17\xba\x35\xe5\x1e\x0b\x9c\xd8\xce\x4e\xcb\xff\x16\x5e\xd1\x01\xef\x59\xc4\xae\x20\xe9\xed\x32\xa5\x40\x85\xe6\xfc\x80\xf5\x57\x53\x67\xd1\x36\xfb\x95\x0b\xb3\xc1\x50\x34\xd2\x98\x88\x0e\xc7\x6c\x28\xd1\x23\x41\x8c\x58\x18\x8c\x9a\x72\x90\xde\xa4\x0c\xf5\x75\xa6\x44\xf7\xe4\x63\x82\xb4\xf0\x40\x95\xf4\x25\x9e\x4c\x1f\x33\x9c\x48\x32\xd0\x0d\x43\x65\x48\xc5\x21\x58\x15\xa3\x47\x81\x97\x4b\x22\xc6\xcc\xa6\x3e\x80\xb7\x83\xf3\xc4\xb4\xbf\x91\xf4\x13\xc7\xb2\x68\xe8\x32\x2a\x04\xfd\x47\x41\xc5\x3e\x28\xa4\x4b\x45\x01\x26\x13\x04\x4a\xba\x4a\x3d\x6d\xb2\x4e\x1f\x76\x5f\x0d\xbb\xaf\x5f\x9b\xd7\x18\x7a\xef\xcf\xd3\xa6\xe1\xf7\x4d\xdb\xbf\x0f\x29\x66\x8f\x61\xf8\x2f\x1c\xaf\xfe\x34\xa1\xea\x2f\x9b\x5b\xf0\x14\x69\x05\x7d\xf0\xfd\xdb\x0b\xbe\x6f\x3e\xb6\x1b\x05\xe0\xaf\x41\x42\x72\xbd\xec\x1a\xed\xec\xd1\x79\x9e\x34\x30\xc9\xbb\xed\x83\x2f\x3a\x46\x3d\xe7\xf0\x41\x7d\xe4\xf3\x13\x45\x3e\xd7\x2c\xf1\x66\xd1\xcf\x5b\xe9\xf7\xcf\x1f\x98\x59\x2e\xde\xfe\x94\xc1\x99\x6b\xc2\x3c\x64\x36\x9d\x3c\xf9\xd1\xab\x9d\x73\xd7\x13\xf8\xb3\x27\x0a\x23\x12\x09\x4d\x67\x53\x12\xc7\x60\x43\xd6\xca\x2a\xa4\xbc\xe6\xb4\xe3\x74\x01\xcd\x7c\xb1\xd4\xc4\x8e\x13\xce\xe6\x92\xc6\x06\x86\xc0\x14\x79\x2f\x68\x2a\x90\x7e\x0b\xfb\x9b\x24\x44\x38\x13\xa4\x40\x5f\x4b\xca\x22\x12\x9a\x25\x05\x8a\x39\x91\xec\x2b\x65\x34\x03\xcc\x56\xe8\x9e\xf1\xc7\x84\xc4\x06\xd0\xaf\x3c\x98\x03\x44\xc9\x00\x51\xe5\x3f\x13\x90\xaf\xcb\x33\x35\xd6\x63\x87\xc0\x12\x23\x02\x12\xfb\x6d\x50\x64\xd6\x37\xf3\xcd\x21\x42\x67\x0c\xcd\x70\xa4\x06\xc5\xf2\xf6\x31\x37\x55\x43\x1f\x08\x0b\x27\x9e\x37\xf2\xa5\x04\xe6\xee\x18\xe6\xb3\x3e\x38\xb7\x36\x18\xb7\xd4\xab\xe3\x1f\x9a\xa0\x87\x09\xc5\x3b\x85\xda\x3c\xe0\x5d\x50\x13\x3f\x65\xd2\xfa\x64\x0d\x88\xb5\x19\xaf\x85\x26\xf1\x48\xec\x50\x0d\xd1\x44\x9f\x32\x1e\x37\x9a\x3e\x4a\x53\xd9\x74\x2c\x79\x5c\x94\x2d\xc2\x68\xed\xd6\xd0\xae\x59\xee\x98\x3f\x32\xa9\x04\xc1\xa9\xb5\x15\xea\xcb\x08\x7c\xea\x26\x2a\x4a\x8f\x9e\x0a\x23\x84\x6c\xb2\xc5\xe7\x94\xdd\xeb\xdd\xcd\xb1\xe7\xa1\xa4\x2f\xf4\x5c\xb3\x69\xef\x29\xc3\x85\xec\x85\x2d\x76\xad\x05\x5a\xbd\xdd\xd3\x32\x5d\xb5\x54\xf4\xdc\x5b\x46\xc3\x10\x49\xa8\x63\x8c\xa6\x50\x66\x5f\xb3\x6e\x87\x7e\xad\x30\x58\xf7\x16\x24\x59\x06\xc5\x30\x97\x00\x0f\x6b\x09\xc8\x00\x65\x6a\x6e\x97\x66\xcc\xa0\x24\x18\x8d\xf7\xd1\xe2\x21\x5a\xc3\x6e\xde\xf8\xe1\x98\x9d\xa9\xaf\xa4\x3e\x5f\x9c\xcd\x93\x15\xc2\xf1\x03\x95\x79\x1d\x80\x88\x33\x99\xa5\x44\x94\x4a\x6c\x5b\xc0\x52\xec\x68\x45\x8f\xcd\x62\x71\xd3\x58\x77\x6b\xee\xba\x39\x9a\x92\x99\xbe\xc7\x97\x58\x48\xe7\x22\xaa\x71\xef\xd8\xcd\x8d\xf5\x5a\xbd\xd8\x99\xfc\x29\x3c\x76\x06\xaa\xde\x9c\x50\x6c\x75\xb1\xa3\xf2\xf9\xb4\xab\xde\x72\x36\xa7\x95\x49\xa1\xf6\x8b\xd6\xae\xc2\xe9\x3a\x18\x0f\x07\x25\x95\x19\x77\xbe\xee\xc7\xc9\x74\x66\x70\x1b\x99\xb3\x4a\x13\xb4\xa3\x36\x36\xc1\xf0\x6c\x12\x0a\x97\x9c\xd4\xdc\x3d\xb2\xe2\x23\x17\x96\x3d\x59\xf6\xd5\xbc\xb5\xa7\x3b\xc2\xd6\xca\x08\x27\xd5\x1d\x6e\xf1\x20\x98\xf7\xdb\x79\x9f\x3d\x6e\xa6\xed\xd6\xe8\xf9\x88\x27\xc9\x26\xf8\xde\xa5\x99\x9f\xe4\x9f\xb7\x8f\x28\xef\x47\x6f\x80\xdb\x0b\x38\x35\xc6\x0f\x83\x13\x2b\x29\x49\x65\x77\x29\x7c\xc9\xf0\xd0\x95\xf5\xf3\x8c\x19\x9f\x01\x02\x7c\xd2\xe4\xa1\x59\x0a\x9e\xd2\x4d\xe0\xc5\x8c\xd3\xe2\xda\x45\x54\xad\xf1\xa5\xbb\xb8\x2b\x28\xd5\x6e\xc8\xcb\xf6\x08\xb1\xb7\x98\x19\xb9\xa9\xe5\x0c\xa5\x78\xb9\xd5\x82\xaf\xd3\xfa\x87\x28\x35\x26\x17\xbb\x7a\xa6\x12\x32\x80\xa9\xc3\x22\x3f\xe2\x55\x9e\x63\xd0\x04\x1c\xc5\x36\x22\x87\x3b\xfd\xfa\x19\x9b\xf1\x0d\x0e\x67\x9e\x13\x60\x4f\x1f\x76\x34\x1b\x9c\x3f\x1f\xdf\x66\x76\xdf\xac\x69\x97\xf3\x78\x52\x47\xd4\x1b\x9f\x4c\xb7\x82\x4f\xa9\x82\x84\x4c\x24\xd4\x3e\x36\xb9\x5b\x8b\x47\x2b\x68\x11\xc1\x70\xda\x97\xea\x53\x81\x0e\xf7\xbe\x46\xa5\x76\x90\xd1\x74\x5d\x60\xc4\x55\x7d\xab\xcf\xb0\x66\xf6\x90\x74\x5a\xac\x1d\x93\xa0\x36\x03\xc0\x72\x3d\x7a\xd8\xab\xfa\x13\xba\x16\xdd\x73\x13\x8d\x64\xa6\x25\x21\x23\xa4\xe6\x5e\x56\x1b\x6e\x3a\xa3\x09\x91\x87\xe8\xac\x46\x3b\x71\xc1\x9e\x20\xa3\x01\x38\x28\x84\xbd\x38\xe9\x29\x13\x34\xa8\x7d\xe6\x64\x24\x44\x01\x40\x3a\xb4\xe1\x08\xa2\xc7\x1c\x19\x1f\x12\x37\x68\x57\x10\x69\x22\xa8\xe6\x59\x46\x58\x55\x60\x8e\xd4\xbc\x80\xda\x14\xe7\x98\x2c\x09\x8b\xfd\x07\xdc\xf8\xff\xb0\x2d\xef\x98\x8f\xaa\x61\x4b\xf7\x01\x39\xdf\x3d\x96\xd6\xf5\x7a\xab\xbf\xa8\xee\x4d\xed\x08\x6f\x8b\xad\x6f\x5e\x6f\xc2\x49\xf9\x9b\x3b\xc4\x3e\xc0\xa7\xce\x3a\x87\xd1\x4c\x10\x30\xe0\xa6\x3e\x39\x8d\xc5\x44\x48\xc5\x39\xdc\x77\x37\xa7\x3f\x1e\xdd\x9d\x41\x65\x87\x84\xde\x93\x31\x8b\xe4\xc3\x40\x8b\xc7\x7f\xcf\x88\xd2\x3f\x37\x04\x6f\xd3\x94\x30\x09\x9c\x80\xaa\x4a\xfe\x76\xfd\x42\xba\x85\xd1\xff\x3d\x2d\x7e\xdf\x42\xf2\x95\x54\x00\xa0\x5d\x87\x47\x0e\x64\x0a\x58\xb6\xb6\x56\x51\x0d\xc5\x18\x77\xf4\xa8\xae\x60\xdc\x16\xa1\x7f\xec\x6f\x19\xdb\x50\xe8\x3a\xc9\x3f\x0a\x46\xd1\x20\xd3\xa5\x4b\x0c\x60\x6f\x9b\xc5\x14\x9a\x6f\x6a\x5b\x5f\xc7\x44\xf2\x14\x0b\xeb\xb8\x47\x79\x6d\x3d\xa4\x04\x21\xc0\x42\x3c\x3d\xd9\xbb\xde\xa6\xb4\xf9\x89\x05\x1f\x1d\x8e\xd9\x27\x67\x50\xce\x7f\x95\xae\x09\x13\xa7\xea\x31\xf0\x8a\xad\x40\xb3\x31\x95\xfe\x07\x40\x32\x96\x59\xa2\x4c\xb9\x97\x19\x14\xd4\x70\x03\x35\x4f\xea\xb8\x04\x54\xfb\xb8\xd8\xb1\xea\x0b\x9d\x4d\x48\xb2\x89\x24\x7a\x36\x1b\x25\x52\xd3\x77\x74\xdf\x70\x3a\xb7\x29\x68\x94\x4f\x26\x28\xde\x85\x4d\x94\x94\xb5\x62\x26\xa6\xc2\x05\x41\x60\x82\x2c\x47\x82\x9a\x64\x2f\xbd\x8b\x56\x52\x37\x16\x48\x13\x82\xe5\xc3\x2b\x4c\x81\x14\xac\xc6\x4c\x64\x0c\x50\x56\xbd\x43\x02\x23\x49\x04\x35\x9e\x81\x88\x33\x23\x03\x58\x53\xcc\x5c\xb3\x09\x2d\xf9\x81\x57\x8a\x33\xd0\xcf\x78\x26\x21\x9a\x2b\x25\x4a\x5f\x50\x5f\x43\xa9\x44\xe3\x12\x1a\xa0\xa5\xa0\x29\x55\xf4\x81\xc8\x6f\x6a\xb6\xee\x04\x2b\x9c\xf0\xf9\x50\x28\x3a\xc3\x91\xba\xc5\x3b\x69\xe0\xd8\x36\xb3\x6d\x78\x81\x1b\x06\x3a\x3b\xd5\x8b\x3f\x27\x0c\x32\xb0\x63\xd0\xc9\xeb\x8f\x30\x3c\xd9\x8a\x73\x43\x5d\x89\xc8\x20\xf1\x4b\x6f\xb1\xc0\x99\xe2\xa9\xd6\x6f\x71\x92\xac\x00\x61\x5f\x3f\x59\x60\xe9\xab\xd9\x18\x58\xfe\x2e\x77\x93\x5d\xdc\x13\x1c\x2d\xc8\x8d\xc2\x2a\xab\x35\x39\xae\xaf\xce\x76\x32\x3c\xf9\x61\x34\x39\x3d\xbb\x19\xbe\x3f\x1f\x9d\x06\xf3\xb1\x4f\x3e\x9d\xdd\xdc\x54\x7f\xfd\xe1\xec\xb6\xfa\xe3\xd5\xe5\xd5\xdd\xf9\xf0\xb6\xae\x95\xf3\xcb\xcb\x1f\xef\xae\x26\x1f\x86\x67\xe7\x77\xd7\xa3\x9a\x4f\xef\x6e\xfd\x43\xfb\xac\xb6\xc0\x5b\xc3\x68\xcb\xe7\xec\x00\x15\x5f\x3c\x46\x77\x65\x88\x4f\x1b\x52\x62\x52\xcf\x1e\xb1\xd4\xac\x0a\x4f\x13\x12\x8f\x19\x72\x9f\xeb\xb9\x37\x7d\x6a\x9c\x6e\xd1\x82\xa0\x84\xf3\xfb\x6c\x69\x39\x98\x89\x5f\x67\xb6\xa0\x21\x91\x41\x6b\x3f\x9c\xdd\x1e\x57\xa1\x46\x7d\x63\x41\x86\xb9\x23\x75\x18\x17\x76\x5c\x13\x4c\x26\x4b\x41\x1e\xe0\x4c\x7a\xdf\x6b\xd0\x83\xdf\x80\xb6\x7e\x4c\x6b\x98\xa9\x52\x37\x71\x6c\xcb\x5f\xba\x89\x05\x0d\x17\xb7\xaf\x6d\x35\xfd\x72\x18\x6c\x75\x34\x25\x11\xce\x8c\x6b\x52\x5f\x47\x42\x70\x11\x0e\x38\xdf\xf6\x1d\x1b\x7d\x57\x95\x32\x8a\x05\xce\x24\x9c\x11\xfd\x49\x70\x72\xb4\xf6\x0d\x9a\xb9\xc3\xf5\x5d\x58\xfc\x75\x2a\x8d\xf7\x24\xf7\x27\x01\x64\x9d\xe6\xdc\x1e\x7f\x95\x82\xaf\x13\x2b\xf4\x48\x20\x89\x21\xb3\xc0\xe6\x46\x43\xd6\x27\x10\xba\x33\x56\x6d\x57\x4d\xa3\x90\xdc\xd0\xc8\x32\xf7\x21\x16\xeb\xef\x25\xa9\x63\x97\x3b\x44\xa2\x9f\x9a\x46\x81\x87\x3a\xc7\x33\x8c\xb8\xc1\x7f\xe0\x78\x76\x8d\x1d\xbb\x45\x0a\xaa\xde\x1b\x6b\x58\xba\x66\xae\x5d\xc6\xe3\xb2\xef\x0a\x50\x7e\xdd\x07\x56\x80\x7b\x5b\xbb\x56\xb7\x3c\xc6\x2b\x4d\x1c\x10\xf1\x21\xb3\xe5\x92\x0b\x85\x1a\xda\x30\xd1\x8b\x66\x7c\x70\x33\xd8\x79\x78\x16\x05\x8d\x68\x39\x40\xd6\xa0\xed\x76\x4b\x48\xb2\xeb\x9a\x9f\xfb\x10\xd9\x00\xd4\x35\x0f\x63\x92\x16\x14\xdf\x02\x85\xd6\x89\xa8\xbb\xc4\x79\x6d\x54\x3d\xb5\x69\x04\x35\x85\x54\xc3\x48\x63\x32\x53\x93\x5a\xff\x4c\x8b\x29\x52\xb7\xc8\x9a\xf2\x38\xe9\x7c\xb1\x87\x16\xbb\xcb\xf3\xdf\x5b\xff\x99\x16\xe2\x03\x5d\x5e\x70\xae\x8c\x24\x99\x6b\x1b\x1e\xe7\x06\x0c\x01\xb6\x53\x83\x79\x93\x8b\x6b\x5a\x3a\xbf\x67\xfc\x91\x79\x1b\xbc\x3c\x1c\xb3\x11\x86\x7a\x6b\x5e\x65\xb0\x21\x1d\x46\x5e\x5f\x2b\xa9\xb7\xee\xcb\x56\xb2\xc9\xe8\xaf\xa1\xa4\x70\x51\xfc\xe7\xc7\xdb\xe2\xbf\x0a\x52\xc5\xf9\x6d\xf1\x5f\xed\x52\x45\xd0\x70\x55\x92\xf8\x78\x7b\x8c\x3e\x42\xa6\x87\x40\xb7\x0b\x6c\xee\xdb\xf3\xdb\x63\x74\x4e\xa4\x84\x5f\x6a\xee\x1e\xe3\x4e\x44\x6e\xfa\x39\x1e\x37\x29\xe9\x75\xe5\x05\xf4\xf5\xaf\x9e\x35\xee\xa4\x19\x10\x2c\x67\x1e\xb6\x7a\x76\xe2\x6b\x24\x93\x18\x15\xbe\xeb\xc2\x82\x8c\x81\xdf\x49\xbb\x66\xc2\x16\xdb\x49\x91\xa5\x75\x42\x98\x79\xe6\x29\x4f\xe0\xc7\xd6\x5d\x1d\xa2\x9f\x9d\x91\x0b\x42\x78\xf2\xda\x7c\xca\x5c\xdb\x09\x5e\x39\x20\x99\xba\x85\xdd\x07\x36\xcb\xbe\x83\x7a\xda\x17\xd8\xe7\xa1\xd7\xac\x72\xc1\xd6\xc0\x98\x31\x3e\x6f\x10\xc1\x78\xe2\x3f\xba\x21\xed\x21\xce\x1f\xa0\xd4\x8e\x41\x9b\x07\x31\x47\x5f\x46\xff\xc3\x6c\x96\x09\xa0\x77\x20\xfa\xb6\xf4\x89\x75\x16\x6b\x06\x04\xce\x4e\x13\x5f\x8f\x66\x34\x49\x40\x98\x3a\x44\x43\xa8\x54\x07\x35\xc8\xb4\x3c\xe1\x02\xc5\xe8\x9c\xf1\x75\xe1\xd2\x0d\xc4\x14\x05\xc4\x74\xd3\x4c\x4c\x12\xa8\x29\x4f\x3f\xda\x0f\x45\xed\x21\x15\x55\x33\x67\x5c\x05\x50\xec\x9e\x80\xba\x81\x9d\xe2\x25\xe2\xbc\x2a\xc3\x0d\x3e\xfc\x57\xfd\xd0\x3f\x66\x58\x60\xa6\x20\x7a\xc9\xaa\x2f\x82\x04\x51\xb4\xe4\x33\xc4\x07\x32\x63\xf3\x86\x9f\xc2\xcd\x75\xd1\x0d\x73\xfa\x40\x18\xa2\xf1\x00\xd1\x43\x72\x08\x95\x18\x84\x16\xc8\xa6\xf9\x9b\x0b\x2d\x7e\x8d\x59\x25\xad\xf2\x10\x0d\x13\xc9\xed\x17\x84\x45\x09\x54\x86\x0c\x02\xad\x3c\xe5\x5b\x0f\xda\x74\x05\x4a\x1a\x6c\x65\xde\x3c\xb7\x0f\x82\x0f\xc7\x0c\x4b\xe3\xfe\x4f\xe0\xa4\xe7\xbf\xd7\x15\x56\x2e\x84\x84\x3c\x21\xfa\x6f\xe5\x1a\x7a\xb2\x4d\x32\x65\x41\xda\x36\x08\xde\x80\x8d\xc9\xd3\x5d\x83\xc4\x51\xf4\x35\x56\x28\x21\x58\x2a\xf4\xdd\x37\x1b\x85\xc1\xb8\x09\xe6\xdc\xd5\x1e\xdf\x3c\xe6\xd9\xc5\x9e\x85\x12\xb2\xef\x58\x71\x53\x3a\x19\x61\xc4\x48\x90\x80\x31\xd0\xfb\xac\x38\x7a\xa0\x32\x83\x62\x9b\x41\x9a\x86\x29\x97\x68\x12\x8a\x20\xee\xd4\xe8\x9d\x0d\x7c\xc4\x41\xa4\x59\x4f\xb1\x1d\x56\x0d\x65\x59\x0d\x94\x1a\x1d\x17\x90\x04\xf2\xf0\xc5\x05\x56\x63\x66\x39\xab\x8b\x90\x09\x0a\xa3\x0d\x93\xa4\x18\x32\x88\x21\x2a\x96\xe9\x09\x43\xa9\xd0\x43\xbf\x40\x17\xa0\xc3\xfa\xa8\xac\x82\x49\x32\x3f\x2c\x5a\xdd\x1d\x33\x9f\xa6\x1d\xb6\x5d\x2b\x2e\xd6\x99\xd2\x9f\x4d\x93\xa8\xed\xfe\xdc\xd4\x6c\xed\xa0\x4d\x90\xba\x21\xaf\x39\x58\x55\xf7\x45\x8b\x72\xb1\xef\x0e\xba\xeb\x1a\xf5\xae\x00\xb8\x66\x1f\x79\x8d\x67\xa1\x61\x73\x03\xd9\x62\x17\x2b\x86\x0f\x0f\x7c\x2e\xe7\x76\x61\xe8\x67\x31\xa4\x2f\xac\xe7\x82\x79\x3a\x80\x63\x1d\x60\xd3\xa7\x71\x10\x9d\x1c\x84\x3a\x42\xf4\xba\x63\x7c\xf6\xcd\x06\x27\xf3\xf2\x6d\x4f\x7f\x90\xcf\xdf\x4d\xc5\xc7\xfb\x55\x27\xde\x2c\xec\x0d\xe3\xbf\xe1\x88\xb0\x68\x65\x7a\xaa\x44\xff\xfa\x3c\x72\x87\xbe\x87\xc1\x6f\x51\x2b\x1e\xda\xf2\xcb\x87\x68\x04\x17\x8d\xab\xc6\x8c\x67\xce\xf7\x12\xbc\x3c\x66\x5a\x33\x71\x69\xa7\x41\xfb\x45\x12\xaf\x3b\x01\x06\xc3\x62\x27\xb7\x55\xba\x6d\x2d\xf9\xbc\x36\x13\xb4\x01\x50\xa8\x68\x34\x3f\x46\x31\x8f\xee\x89\x38\x12\x24\xa6\xf2\x18\xc2\x08\x1a\xca\xff\x47\x3c\x4d\x31\x6b\xf4\xb5\x74\x97\x34\x9a\x62\x22\xd6\x84\xf7\x9f\x98\xfe\x6d\xdc\xba\x2b\x1e\x36\x40\x74\x06\xea\x84\x4b\x61\x19\xd8\x18\x71\x93\xa5\x4b\x98\x12\xab\x25\xa7\x4c\x79\x7b\x60\x69\x21\x9c\xa6\xa1\x85\xb6\xa6\xa8\x67\xb1\x8f\x70\xa3\x2d\xa7\x7d\xbb\x20\x92\xb8\xd8\x0a\x33\x29\xc5\x91\x71\x28\x19\x76\xb1\xc4\x6a\x21\x21\x09\xa7\xb8\x06\x56\xe9\x82\x4f\xf5\x0a\xe1\x25\x84\x66\x18\x33\x4f\xfe\x91\x4f\x15\x91\x8a\x26\xc9\x98\x31\x42\x62\x89\x20\x5f\xe6\xab\xda\x64\x2f\xfd\xe9\x00\xe1\x38\x46\xff\xf3\xeb\x0f\xe7\xbf\xdc\x8e\x26\x67\x17\x60\xb8\x3f\x3b\x1f\x7d\x33\xf0\x3f\x5e\xde\xdd\xfa\x5f\x8d\x89\xea\x81\x08\x94\xe2\x7b\x50\xf1\x98\x34\xf2\x1f\x24\x54\x84\x23\x75\x69\x70\xfa\x89\x24\x2e\xa8\xd7\x8a\x29\x1e\xf9\xc5\xee\x61\x63\x6d\x40\x63\x38\xdd\x40\xf9\xbd\xf6\x9f\xb4\xd3\xa0\x23\x1e\xdf\x85\x13\x03\x53\xc2\x94\xe6\x31\xd6\x64\x9a\xeb\xbe\x39\xc1\x11\x36\xa7\xac\x29\xf4\x90\xb0\x87\xa7\x14\xe2\x7f\x24\xab\x9f\xb4\x7a\x7d\x85\x69\x77\xb0\xed\x11\x7b\xa0\x82\x33\x98\x9a\xb7\x0b\xfa\x13\xa3\xf5\x74\x2c\xcb\x87\x4a\x1a\x59\x18\xc2\x51\x96\x8d\xe1\xad\x75\xf8\x15\x2f\x3e\x5d\x8b\x5c\x40\x3e\x2b\xe1\x12\x2e\x3d\xf8\xc2\x03\xa6\x09\x84\x26\xbb\x8b\x26\xa7\xc1\x31\xbb\xbd\x3c\xbd\x3c\x46\x24\xc1\x53\xee\x40\xbc\x17\x00\xdb\x65\x9a\xb0\x0b\x06\x55\xf9\x7d\x43\x85\x64\xdb\x01\x5a\xe6\xc9\xb6\xa1\x11\xed\xd0\xb4\xb1\xae\x68\x2f\x17\xd5\x54\xd5\xfd\xaa\x80\x76\xb2\x57\x5c\x74\xb9\xfe\xf5\x6b\xb0\x74\x7c\xa9\x15\xb9\x12\xe7\xb5\x77\xf3\x8c\x60\x53\x2f\xd3\xf8\xd6\xac\x43\xc4\xc6\xea\x26\x49\xa1\xfc\x8e\x3e\x38\xf2\xd0\x46\x1b\xe4\x6f\x72\x86\x7e\xfc\x8b\x44\xd3\x4c\x8d\x59\xb1\x0d\xce\xd0\xf0\xe7\x1b\xf4\x1e\xab\x68\xf1\xcd\x98\x5d\x6a\x35\xf3\xc7\xbf\x34\xa0\x02\x6c\x0c\xaa\xa2\xd7\xe4\x14\x2b\x7c\xce\x71\x4c\xd9\xbc\x0e\x51\x25\x37\xfd\x8e\x6e\x87\xc7\xe8\xd2\xea\xf0\x3e\x91\x37\x4f\x5a\x0a\x1a\x02\x86\x0c\x13\x71\x5c\x04\x58\x39\x2b\xa2\x4e\x18\xcd\x0c\x2e\xac\x31\xbb\x35\x50\x32\x9a\xab\x52\x85\x96\xdc\xe2\x9e\x6b\xad\xcc\x80\xec\x18\x5f\x80\xb5\x24\xea\xd5\x01\x32\xf6\x9b\x61\xe5\x31\x90\x67\xaa\xcc\x7e\xcc\x40\x41\xf7\xc9\x95\x09\x8f\x70\x02\xe1\x87\x07\x81\x4d\x4f\xab\xed\x3c\x83\x4c\x37\x88\xfb\x61\xab\x62\x94\xb0\x4f\xbe\xf4\x42\x59\xb8\x51\x60\x00\x80\x7d\xb4\x1e\xe9\x94\x6b\x8e\x73\x38\x66\x67\x33\x13\x9d\x98\x98\xd5\xd1\x1f\x12\x06\x4e\x79\xb7\x2c\xfa\xa9\xe3\x47\x50\x47\xd8\xf8\x66\x71\x04\xfe\x0f\xb6\x82\x48\x75\xc0\x4a\xe6\x10\xe5\x92\x73\x67\x4b\x94\x95\x5d\xf4\x77\x62\xf0\xd9\x98\x99\xa0\xc8\xc2\xbe\x84\x89\xe8\x41\xef\x9c\x41\xcc\x66\x7e\x5d\x7a\x01\x63\x69\x63\x38\xad\xac\xbf\x14\xe4\x20\x26\x8a\x88\x14\xec\x3d\xe1\x9a\xea\x1b\xf6\x10\x5d\x87\xea\x75\x21\xd7\x0d\x32\x02\x6d\xb0\x9f\xbd\x44\x3d\x85\x98\x8b\x7d\x1d\xc5\x63\x11\x2d\xa8\x22\x90\xe6\xd6\x59\x3f\x36\x04\x33\x0c\x3f\xad\x4a\xea\xcd\x82\x2f\xf0\x8e\xdd\x02\xf4\x4c\x43\x93\x65\xb1\xa5\x42\x6b\xeb\xf1\xac\xd6\x14\x17\xb8\xc8\x41\xab\xb8\x00\x61\x8b\x7c\x5e\x72\x30\x72\x9b\xac\x50\x1e\x7f\x25\xd1\xd9\x95\x96\x80\xb4\xc6\xeb\xcf\x60\x26\x95\x89\xa3\x33\xe5\x25\xe0\x6b\x93\x19\x31\x40\xdf\x9a\x02\xaf\x11\xfa\xec\xfe\xf8\xf3\xbf\xff\xfb\x1f\xff\xbc\x4d\x8d\x09\x68\x37\x5f\x23\x0f\x41\x5f\x14\x89\xc2\x1d\xa8\x72\xaa\x1d\x76\xc1\x1e\xc0\xa6\xe5\xdf\x06\x40\x28\x08\x93\xc2\x73\x7b\xc2\x65\x78\x32\x51\xe1\x68\xe6\xe1\x18\x92\xa8\x41\x91\x43\x78\x61\xd7\x4a\xf4\xff\xa3\x05\x77\x63\xa2\x8f\xca\x76\xe1\x5c\x34\xf1\xe2\xb5\x6e\x04\x7d\x6d\xed\x7f\x0a\x3c\xb0\xdf\xb8\x0b\x8e\x27\x31\x11\xb6\x38\xb4\x33\xd9\x79\x43\x22\x30\x07\xf2\x79\x99\xf0\xd8\xa1\x3a\x49\xb2\xc4\x20\x40\x68\x66\x70\x38\x66\x23\x57\x2b\xd8\x20\x42\x98\x8f\x8c\xe7\x65\x86\x23\x03\x66\x24\xd1\xd7\x9f\x8f\xf5\x6f\x03\xb4\x3a\x86\x78\xd9\x01\xfa\xc7\xb1\xcd\xfb\xc7\x42\x4d\xf4\x4f\xdf\x38\x59\xdb\x36\x01\x83\xa6\x12\x8d\xdf\x1d\x3d\x60\x61\x6a\x0c\x1e\x59\xc4\xf9\x77\x96\xb7\xfa\x6a\x1a\xa1\x74\x9e\x70\x7e\x6f\xa3\x89\x2b\x5f\x1e\x39\x14\x11\x20\x70\xef\x39\x31\x9b\x6f\x03\xc3\xb5\x24\x79\x60\x6b\x1d\x1f\x2e\xa7\xe8\xf0\x6f\x92\x33\x74\xb8\xc2\x69\x62\x7f\x75\x4f\x6d\xb0\x33\x96\xc8\x55\xbb\x76\xa1\x4e\xc9\xca\xd8\x4a\xdf\x27\x7c\x0a\xf3\xfa\xe4\xe6\x6a\xc2\x85\x61\xa0\xf9\xfd\x93\x5f\x59\x76\x22\x56\x96\x32\x58\x08\x29\x57\xe6\x15\xe0\x72\x75\xb3\xfa\xec\x87\xf4\x5f\xc6\xb5\x0e\x8b\xe2\x32\x16\x8d\x79\xd8\x87\xea\xe9\x46\x3f\xa3\xaf\x2d\x13\xfa\x46\xdf\x32\x36\x36\xdb\x2c\x43\x5d\x07\x2b\xdf\xc1\x2f\x41\x07\x94\x21\xeb\x34\x6e\xfe\xf2\x1f\x47\x87\x87\x87\xfe\xeb\x0b\x3d\x95\xff\x1f\x51\x25\x49\x32\x33\x2d\xb9\x3b\x6c\x35\x66\x9f\x1c\x62\xac\x33\x5f\xe7\xf8\x44\x50\xa5\x3a\xe2\x09\x3a\xc8\x4d\xba\x31\x8f\x24\xfa\x9d\x16\x6c\x83\xa5\x84\x1f\xb5\x26\x57\x7f\xaa\x2c\x44\xdd\x33\x1d\x2b\x6b\x12\x2f\x1f\xac\x10\x92\xc4\xab\xb6\x58\x86\xf0\xc3\x40\x0b\x9a\x72\x8e\x2c\x6c\x89\x10\xfa\x65\xf2\x59\xc1\xa3\x06\x54\x98\xda\xb8\xfd\xfa\xbb\xb2\xc2\x70\x73\x70\x18\x43\xd6\x0d\x0b\x60\xb1\x3b\x2c\x6f\x30\xf3\x1c\x84\x0e\x14\x7d\xbd\xb0\x10\xc3\x54\x66\x69\x8a\xc5\xea\x28\x3f\x6d\x55\xe2\xcc\x01\xc9\x81\xcb\x24\x6e\x01\xc0\x89\x9b\xd8\xa3\x65\x03\x41\xac\x80\xe9\xee\x34\x7f\x76\x23\xa8\x80\x02\x61\x89\xa6\xfe\x0f\x61\x11\x8f\x2d\x5d\xe7\xa9\xb6\x45\x99\xc5\xbf\x53\x95\x56\x5c\x60\x91\xcc\xcd\x71\x4c\x99\xfc\x7b\xfb\x86\xfb\xb8\x81\x81\xf3\x09\x94\x51\x23\xf3\x0d\x1c\xa4\x67\x97\x37\xee\x9b\xee\xd7\x2e\xac\x43\x51\x68\xc7\x4e\x4f\x74\x36\x09\x81\x1f\xf3\x0b\x18\xc2\x63\x8c\x7d\x26\xf3\x89\xc8\xe6\xdf\x27\xfc\x8a\x26\xfa\xde\x02\x1a\x3f\x1c\xb3\xc2\xcf\x03\x44\x12\x9a\x52\xe6\x43\x14\x0d\x7b\xe7\x33\x23\x3f\xdf\x53\xa5\xb7\x4c\xc6\xf7\x9a\x83\x39\x8c\x8a\x40\xa9\x1a\xb2\x95\x23\x1d\xef\x9a\xb2\x36\x88\x4c\xea\x71\xe5\x5a\xba\x16\x67\x75\x13\x07\x56\x24\xa5\x01\xe1\xc1\xf9\x1d\x33\xdd\x9a\x3b\x4b\x79\x6c\x74\xd0\x5e\xd0\xdc\x81\x43\xf2\x0c\x38\x00\xf4\x51\x08\x70\xf6\x12\x70\x8d\x88\x32\x62\x59\xba\x6b\x66\x8d\x8d\x95\x7e\x29\x43\xdd\x95\x20\xee\xa6\xb2\x59\x5a\x84\x65\xa9\x3b\x50\x1b\x50\xdc\xc8\x0a\x40\x31\x89\x12\x0c\x77\x07\x34\x04\x01\xa4\x03\xe3\x22\x5d\x06\x7d\x99\xeb\xc5\x74\x63\xc0\xc1\x13\xc2\xbe\x36\xff\xfe\x06\xd9\xbb\xe1\xdb\x81\xbd\xcf\x85\x74\xd0\x85\x76\xcf\xa1\xb8\x0c\x89\x8d\x15\x1d\x20\xf6\xe6\x58\xc4\xc6\x5e\x1e\xea\x15\x26\x5d\x59\x4b\x60\x2b\x9e\xa1\x47\x2a\x17\x63\x76\xcb\x9d\xc9\x11\x31\xee\x41\x0a\x07\xa0\x8e\x56\xfa\xc3\x12\x98\x00\x8c\xba\x8e\x02\x20\x6a\x77\x97\xc4\x2a\x88\x05\x9e\x30\x1e\x93\x0d\x53\x02\xaa\x16\x57\xe7\x89\x70\x1e\x6c\x41\x4c\xf2\x1b\xdc\x14\x4d\xb9\xc3\x44\xca\x0d\xad\xf3\xe5\x8d\x87\x7b\xc8\xb6\x03\x85\xc4\x1e\xd9\xb6\x28\x26\xfe\x56\x83\x56\x9c\xce\x19\xa4\x3e\x17\xd6\xde\x43\xff\xed\xba\x09\x51\x31\x2f\x67\xed\x0a\xf8\xab\xcf\xcc\x3d\x82\x65\xf7\x71\xda\x18\xcd\x05\xcf\x96\x1e\x1f\xc0\xe5\x36\x9a\x6d\xb0\x32\xcd\x19\x9b\xf1\x63\xab\x55\x9d\x53\x76\x6f\x28\xfe\xa9\xf6\xe8\xd4\x83\xcf\x04\x30\x35\xf6\x0e\x33\x2b\x7e\x80\x28\x8b\x92\x0c\x2e\x3e\xa9\x70\x74\x6f\x10\x2a\x9b\xcc\xbe\xfa\x9b\xc9\xfa\xcc\xd1\x06\x89\x29\x4b\x12\xdb\x6d\x7e\x81\xe6\xc5\xef\x1e\x28\x46\x18\xdd\x5d\x9f\xd5\xf7\x7d\x4f\xab\xee\x9c\xfa\xdb\xb3\x48\x20\xf0\x3f\x3f\xd2\x8d\x42\x57\x4b\x58\xe0\xa4\x40\xea\xde\xbc\xd4\x04\x20\x57\xba\xbd\x77\xf4\x1f\xeb\x5b\x68\x92\xd6\x50\x6a\xfd\xe4\xf3\x8e\x4f\xed\xc7\x9f\xf4\xb7\xf5\x3b\xf2\x09\x32\xb7\x3c\x58\x46\x8a\x99\x9e\xa0\xeb\xb5\xc1\x1a\x63\x2e\xc6\xad\x86\x74\xb7\xdc\x6a\x40\xa6\xc7\x8e\x75\x2b\x6c\x57\xae\x95\x47\x63\x90\xc4\x89\x51\xb8\xd5\x02\x34\xb1\x1c\xef\x59\x6f\x6c\x51\x23\x33\xd8\xd0\x09\x16\x73\x23\x27\x4a\xa2\xe4\x37\x35\x3b\x9c\x47\xd0\xef\xb0\xc3\x5b\xd4\xd4\x09\x1d\x40\x20\x85\xb4\x71\x00\x3f\xca\x22\x1a\x94\x67\x4e\xbe\x3a\x95\xbd\x3b\xa8\x0c\x61\xf9\x23\x2e\x04\xa0\x30\xc6\x5a\x1a\x6f\xc6\xc9\xd8\xb1\xb6\xda\x05\x4e\x7d\x16\xb8\xab\xf0\x64\x93\x7d\xcc\xe0\xa6\x04\xa0\xce\x9a\xc7\xb0\x73\x11\xb5\x70\x08\xb6\xa8\x49\xd3\x08\xc6\x6c\xe8\x5e\xf1\x99\xa4\x20\xe2\x0a\x23\x87\x40\xa0\x9c\x09\x0b\x05\x31\x13\xe7\xab\x6e\x27\xd7\x30\x89\x4d\x13\xf6\xca\x75\xe0\xb4\x98\xeb\xb1\x11\x2d\xe2\xb3\xd5\x77\xd6\xa0\x6d\x3f\x6c\x5e\x26\xb3\x1e\x8c\x23\x2a\x97\x31\xac\xeb\x78\xbd\x48\xe9\x50\x02\x6c\x43\x61\xe5\x44\x13\x4c\x97\xac\x72\x32\xd5\x2b\x6e\x54\x93\x52\x67\xd5\xd3\xaa\x76\xe2\xc6\x14\xa7\x13\xc1\x9b\xe1\xc8\x3b\x2c\x93\x6b\xa2\xa0\xe6\x2e\x0c\x64\xed\x0a\xfd\x3d\xc3\x89\xb1\xf7\x33\x4b\x8e\x6e\xd8\x20\x31\x7c\xff\x67\x34\x84\xeb\x12\x7d\x02\xbe\x08\x9e\x4e\x68\x4d\x71\x44\xd3\x25\x11\x92\x6b\x7d\xac\x61\x93\xef\xff\x22\x27\x16\x6f\x7a\x82\xa3\x88\x67\x55\x6c\xe9\x0d\x66\x52\xd3\x5a\x38\x29\x8c\xee\xb3\x29\x11\x8c\x98\xda\x03\xf0\x1e\x72\xef\x75\x1a\x2e\xc7\x99\x5a\x7c\x3f\x89\x12\xda\x19\x04\x1b\xf2\x54\x86\xfa\xb3\x13\xf3\x55\xdb\x04\x0a\xed\x17\x86\xce\x90\x79\x86\xcc\xb3\x43\xf4\x1e\x47\xf7\x84\xc5\x68\x99\x64\x73\x6a\x13\xc8\xe1\x86\x02\x76\x19\x58\xa9\x8a\x13\x33\x2a\xaf\x69\x5f\x5f\x43\x63\x96\xe2\x7b\xd0\x90\x3e\xdb\x68\x74\xad\x69\x6e\xa4\x6d\x79\x7a\xa8\x20\x69\xb8\x6c\x67\x5f\xe7\xc1\x9c\x0f\x65\xce\x07\xd8\x95\x00\x9b\x2e\x63\x08\x03\x18\xc7\x57\x12\x65\x4b\x67\xfc\x00\x83\x47\x02\x0e\x28\x33\x49\x28\xe0\x49\xb5\x38\xb8\x20\x63\x06\x41\x7d\xae\xc5\x95\xe7\x2a\xa1\xcf\xd3\xfb\xde\xeb\x0e\xdf\xcc\xa4\xa2\xef\xe6\x4e\x31\x66\xa4\xbd\x07\x2c\xaa\x05\x61\xa0\x87\x75\x6f\x19\xf2\xf9\xbb\x6f\x5a\x21\x38\xd1\xcc\x22\x37\x1c\xf9\x25\xcc\x18\xb5\xb0\xeb\xd6\x56\x18\xc4\x0d\x39\x93\x7a\xfe\x3d\x95\x48\x62\x45\xe5\x8c\xd6\xea\xa7\x21\x00\xc0\x2e\xab\x8e\x37\x43\x1d\xa8\x41\x1c\x28\xad\x85\x0f\x80\x3e\x44\x1f\x40\xdd\xce\xa7\xa4\xb8\xcf\xdf\x6f\x62\x09\x6a\x41\x1a\x81\xec\xf6\x11\x39\xe0\x66\xd0\xd5\x8a\xe2\x83\xdd\x0f\xd1\x30\x37\x73\x1a\x04\x03\x63\xc0\x5c\x33\x23\x92\x48\xb2\x0d\xf1\x75\xb2\x08\x80\x33\x10\x08\x08\x81\xac\x22\xf5\xef\x39\xa8\xa6\x1f\xe6\x23\x24\xe4\xe1\x7b\xc2\xda\xd4\xbe\xee\x23\x1c\x15\x52\x9a\xeb\x86\x38\xf4\x0a\x3f\x37\x3a\xff\x36\x03\xec\x7e\xec\x72\xd0\x08\x3a\x3b\xd2\x4b\xae\x05\xfd\xe8\xde\x46\xb1\x1b\xb3\x8f\x85\x9d\x78\x5c\x70\x19\x9e\x33\xb7\x7f\xb0\x99\x4a\x64\xc4\x45\xab\x43\x16\x80\x5f\x60\xe3\xfe\x67\x3c\x44\xa5\x80\x51\xfb\x43\x6a\x4c\x5a\x7e\xbf\x91\x63\xa1\xb0\x0c\x60\x2e\x77\x4d\x55\x4f\xf3\x8f\x7f\x91\x97\x70\x62\xf7\x91\x59\x5d\x5f\xb8\x66\xf7\x80\xdc\x2d\x0d\x91\x3e\xd4\x24\xaf\x7a\x83\x63\x9f\xca\xbf\xe4\x31\xca\xc9\x6b\xf3\x12\x37\x2f\x3f\xad\x52\x69\x9c\x4e\x73\x5b\x47\xd9\x9f\x02\x6f\xa5\x29\x4b\x6f\x00\x6c\x02\x91\xcb\x26\x8e\x81\xf6\x6b\xaf\x7f\x2a\xfd\x7d\x52\x4f\x63\x57\x3c\xde\x85\xb0\x36\x07\x29\xab\xd2\x75\x87\x70\x46\x59\x57\x15\xaf\x65\x25\x96\xbc\x39\x10\x2d\x9e\x74\xaf\x23\x07\x7e\xc7\x69\x36\xbb\x01\xc0\xe5\x26\x84\x01\x87\x0d\xb5\x20\x3e\xdb\x45\xef\xb3\xee\xc6\xc7\x5e\x37\x6d\x8a\x75\x63\xe5\xd7\x3f\x46\xff\xfb\xe6\xf2\xe2\x20\xc5\x42\x2e\x30\x24\x1f\xba\xb6\x06\xae\xcc\x81\x51\x40\x9d\x79\x9d\x32\x34\x66\x07\x68\xce\x07\xc6\x9b\x73\x8c\x16\x4a\x2d\xe5\xf1\xd1\xd1\x9c\xaa\x45\x36\x3d\x8c\x78\x7a\x94\xaf\xcd\x11\x5e\xd2\xa3\x69\xc2\xa7\x47\x82\x40\x44\xdf\xc1\x77\x87\xdf\x7f\x07\x5b\x73\xf4\xf0\xdd\x11\xd8\xf0\x0f\xe7\xfc\x77\xe7\xdf\xff\xc7\x1f\xff\xac\x1b\x5e\xae\xd4\x82\xb3\x63\xeb\x2a\x6a\x6d\xfb\xc0\x08\xbe\x47\xe6\x93\x52\x2f\xff\x71\xf8\x6d\x38\x0c\xfb\x6a\xca\x63\x92\xc8\xa3\x87\xef\x26\x6e\x67\x0e\x97\x9b\x38\xbf\x72\x86\xef\x97\xbc\x54\x44\x51\xff\xee\x49\xc6\xe5\x1e\xad\xdb\x96\x9a\xb3\x12\xc6\x6b\xee\x70\x62\xee\x49\xc5\x1f\xb8\x81\x06\xe6\x25\xa9\x06\x9d\x7e\x53\x44\xe7\x46\xd9\x66\xa3\xf4\x34\xf0\xbe\xd1\x08\xd0\x42\x8d\x0d\x62\x89\x69\x5d\x9c\x8f\xf5\x32\xef\xb2\x7e\x4f\x89\x7b\xbb\x6f\xc0\x5b\x3b\xdd\x2d\xc1\x6e\x13\xf3\xb5\xf3\x89\xf3\x47\x07\x72\xbb\x0f\x68\xd8\x8e\xc5\x60\x3c\xe2\xa5\x21\x1e\x18\x8b\x1b\x57\xc3\x30\x16\x58\x6e\x17\x5c\x31\x34\xb8\x52\x3e\xef\xd9\x97\x51\xb3\x1d\x3a\x5e\xe9\xf2\x57\xa1\xd2\x98\xc5\x1a\x59\x9a\x32\xbd\xf2\x10\x7d\x28\x55\xcb\xc8\x03\x46\xae\x3f\x9c\xa0\xef\xfe\xf2\x1f\x7f\x1c\xb3\xaf\x6b\xb8\x18\x78\xb0\xb9\x98\xdb\xf8\x15\xe0\x5d\x29\x96\x8a\x88\x23\x31\x8b\x8e\x8c\x43\xfc\x48\x7f\x7f\x60\x3b\x3d\xe0\xb3\x03\x8f\x7b\x79\x60\x21\x00\x0f\xd3\x78\xb3\xd4\xce\x02\xe9\x99\xf0\x11\x1b\x7a\x2a\x21\x4c\xd5\xa0\x68\xf0\x99\x47\x38\x36\x11\xc6\x06\x0c\x9d\xcf\xfe\x2f\x7b\x5f\xd6\xdc\xc6\x8e\xa4\xfb\xde\xbf\x02\xd1\xf7\xc1\xf6\x0d\x4a\xee\x25\x26\x62\xc2\x11\xf3\x40\x4b\x72\x1f\x76\xcb\x92\x5a\x8b\x7d\xe6\x0e\x27\x68\xb0\x0a\x24\x31\x2a\x02\x74\x2d\x92\xd9\xd3\xfd\xdf\x6f\x20\x33\xb1\xd4\xca\x2a\x92\xf2\xf1\xf4\x9c\x87\x99\x3e\x16\x49\x14\x0a\x4b\x22\x91\xf9\xe5\xf7\x35\xfc\x07\x88\x1b\xbe\x71\xfc\x3d\x3c\xb3\xcf\xf0\x64\x1a\xed\x5b\xf3\x38\x14\xb8\x76\x89\xbc\xe4\xbd\xcd\xda\x92\xd0\x3b\x1b\x32\xf0\xcd\x9b\xcd\x03\x80\xb1\x12\x96\xd4\xf1\x90\x42\x54\x2b\xa1\x17\x80\x9e\x00\xc7\xc0\x66\x87\x20\x38\xa4\x74\x1e\x54\xbd\xa6\x62\x83\x07\x4c\xa8\xa6\xd7\x30\xdc\x07\xd2\xe8\xee\x1a\xe7\x97\xa0\xd1\x3d\x74\xdc\xc9\xa0\xfc\x42\x03\x7e\x28\x84\x03\xb7\xd2\x80\xe3\x07\xbe\xbf\x33\x65\xe3\xec\x00\xe4\x68\x42\xf1\x40\xa4\xc9\x01\xd8\xb6\x38\xc9\xf5\x09\xd0\x05\x40\x11\x3a\x12\x5b\xb7\x89\xe1\x40\xaa\x6b\xc8\x31\x69\xbe\xdf\xa3\x9f\x08\xd5\xff\x16\x74\x94\x7c\x12\x92\x8b\xa5\x54\xb8\x54\x4a\xa4\x14\xc4\xdf\x79\xa2\x0e\x4c\x84\x85\x53\xd9\x9d\x09\xf7\x8e\x79\x48\x3a\xec\x70\x90\x3c\x30\x02\xa7\x0c\xf0\xe8\x2b\xbd\xd6\xc6\x9d\xd1\x45\x16\x7c\x88\xf5\x0c\x70\x08\xb7\xfa\x5e\x6b\xbe\x41\x7e\xa5\x5f\xee\x6d\xcc\xd6\x32\x1f\x61\x8c\x23\xfc\xd2\x20\x1e\xf7\x79\x99\xb9\x7a\x47\xff\x1d\xe5\x70\xf7\xba\x81\x34\xeb\x1a\x62\xca\x20\x37\x44\x44\xa2\xf2\x6f\xe6\x0a\x63\x96\x94\xd7\xc9\xb1\x27\x37\x02\x72\x91\x4a\x2c\x24\x1b\xac\xc8\xa2\x57\xbb\x2f\x54\xb1\x1e\x38\x07\x0e\xdc\xd5\x67\x02\xb8\x42\xb8\x93\xc5\x39\x9d\x34\x02\x9d\xda\xf6\xa5\x95\xee\x89\x67\x96\xee\x6e\x58\x57\xef\x5c\x03\xc4\x6c\x57\xef\xb7\x27\xba\x00\x54\x1c\x8e\x31\x1a\x04\xeb\x5b\xb4\x64\xf9\xd5\xf0\xcd\x08\x2c\xfe\x43\xc6\x0e\x1e\x82\x8b\xb3\x36\x82\xc1\x5e\x68\x1b\xc0\x61\x11\x87\xae\x0b\x7c\x13\x8c\x12\xb9\x81\x3c\x6a\xda\xf4\xb2\x76\x79\x74\x3f\x7c\xf2\x4a\x66\xdb\x8d\x18\xb1\x79\x01\x9f\x5f\x5d\xdf\x87\xe9\x61\x89\x6f\x7b\x12\xad\x44\xf4\x08\x25\x54\x78\xe4\xe1\x66\xb0\x2a\x76\xf3\xed\x54\x79\x7d\x99\x5c\xdb\x5c\xe7\xd6\x51\xee\x3a\xda\x69\x9d\xb2\x58\x66\x9b\x84\x6f\x21\xab\xa4\x10\x1f\xe9\x33\x52\x0e\x58\x6c\x4c\xc1\xae\xf0\x59\xff\x99\x36\xb3\xe2\x35\xa2\x07\x8f\x25\x4f\xe7\x32\x4f\x39\x09\x6d\xe3\x60\xd6\xed\x01\xcb\xc4\x9a\xab\x5c\x46\x53\xb5\x16\x5c\x85\xf8\x5d\xca\xaa\x99\x41\x8e\xb5\x20\xba\xcb\xc5\x42\x44\xb9\xa7\x7a\x02\xe7\xdd\x8d\xd4\xae\x3d\x38\xec\xdd\xdd\xce\xeb\x7c\xf5\x9f\xa4\xc2\xc2\x42\xb9\xde\xa4\xfa\x89\xcc\xb0\x3d\x1a\xf7\x8c\x65\x83\x1e\x11\x1d\xb9\xf6\x32\x08\xff\xb2\x6b\xca\x89\x0b\xbb\xd2\x8b\x26\x1f\xff\x60\x4e\xea\x43\x40\x8b\x6d\xca\x5a\x01\xf4\x04\x37\x58\x88\x5e\x71\x94\x0b\x55\x0d\xfe\xe9\x6f\x6d\x31\x08\xc4\x7b\xa6\x56\x7d\xd7\xfc\x1b\xa5\x1d\x45\xfa\x24\xe2\xa9\x2a\x93\x5a\x90\xdf\xe8\x37\x1d\xf3\x8a\x2b\xc7\xb1\x38\x76\x9c\x7b\x85\x37\x2f\xa0\x90\xd7\x53\x78\xb9\x82\x87\x0e\x05\x98\x66\xe9\xda\x17\x10\x17\xe9\x1d\xf7\xf6\xa2\x2c\xa4\xa8\x40\x02\x4c\xa5\x14\xb3\x5b\x98\xae\x64\x1f\xf9\x7c\x1c\x10\x9c\x80\xe1\xb5\xfa\xc7\xa6\x36\xa6\xca\xd6\xb2\x2d\x8a\x04\x39\xda\xda\x34\x69\x88\xc1\xc3\xa2\x6e\x7f\x39\xf4\xb5\x8b\xad\xb1\x40\xc4\xc6\x65\x82\x6d\xf1\x51\xb4\xf5\x5a\xe2\xb0\x74\x85\xca\x0a\x70\x2b\xac\x7e\x05\x94\xa3\x2e\x45\x0e\x27\x7a\x5c\x24\x58\x9a\x05\x39\x7e\x60\x03\xe1\x49\xc2\x64\x9e\x4d\x95\x23\x2f\x41\x3e\x5f\xb0\xb2\xb6\xd0\x36\xa6\x6b\x17\x3c\x02\x9a\x25\x0d\x48\xf0\xc5\x64\x24\xf3\xb0\x47\x90\xbb\xde\x86\x9c\xef\x9b\x8d\xe0\x58\x47\x40\xdb\x50\xd5\x64\xe3\xc3\x1c\x2e\x82\xee\x41\xc9\xee\x18\xf8\xf7\xf6\xa5\x8b\x4a\x86\x83\xa7\xe4\x94\x8d\xf1\xed\xcc\xa5\xcb\xca\xb9\x61\x6f\xad\xd6\x3f\xc2\xbb\xcc\xcd\x26\xcf\x9c\xc2\xb6\xbb\xbb\x6e\x78\x9a\xcb\xa8\x48\x78\x9a\x00\xad\xf2\xa2\x48\x98\x5c\x04\xca\x74\x30\x07\x48\x5d\x61\xa6\x2b\xd2\x70\x5e\xdb\xb4\x50\xc6\xd7\x22\xa8\x9a\xa3\x10\x4f\x12\xa4\x95\x91\xd0\x14\xf3\x95\xa6\xad\x37\xa7\xec\xbc\xaa\x43\x08\x7b\x22\xa0\xbc\x92\x19\x9a\x3f\xd7\xdf\xa0\xdc\x03\xf5\x0c\xe5\xc2\x5c\x2b\x5f\x05\xbb\xae\x4d\xf3\x97\x67\x8f\x03\x73\xd6\x96\x7d\xba\x1b\xaa\xd8\x58\xee\x75\x0f\xba\xb0\xa5\x4c\xb6\xdb\x10\x2d\x1d\xb4\x27\xc3\xc0\x4e\x86\x74\x61\x7b\x74\xf4\x73\x20\xbc\x5a\xed\xec\xba\x43\x08\x0f\xe6\x71\x60\x57\x03\x59\x89\xe1\x1d\x0d\x56\x4e\x88\x50\x68\x1d\xd9\xdd\x61\x9c\xcf\x25\x81\x07\x66\xfa\x65\xae\xd0\x02\x31\x2d\x15\xed\x76\xe8\x03\x29\x41\x00\x65\xaf\xdb\x6c\x73\xc1\x12\xa9\x1e\x6d\x7d\xa9\x99\xf9\x11\xe3\xbe\x75\xd8\x7c\xd8\x7b\x5c\xcc\x2d\x6e\x4d\x13\xc9\xf5\x01\x9e\x4e\xbf\x1a\x8d\xe6\xeb\xa7\xed\xc9\x20\x1e\xf3\x9a\xc2\x79\xf0\x1e\xfd\xa7\xa5\x13\x45\xe9\x2e\x14\x16\x3a\x89\xe7\x4b\x80\xe7\xca\xa5\xd3\xbc\x6e\x1d\xdf\x9b\x55\x19\x1f\x34\x80\x1c\xf9\xe1\xea\xfc\xe2\xc3\xe4\xaa\xac\xb6\xf0\xd7\x87\x8b\x87\xf2\x5f\x6e\x1f\xae\xae\x26\x57\x7f\x0a\xff\x74\xf7\x70\x76\x76\x71\x71\x5e\xfe\xde\x87\xf1\xe4\xb2\xf2\x3d\xf3\xa7\xf2\x97\xc6\xef\xaf\x6f\x2b\xfa\x0e\x77\x7f\x99\xdc\xdc\x94\xff\x74\x3f\xf9\x78\x71\x3e\xbb\x7e\x28\x71\x30\x9f\xff\xfb\xd5\xf8\xe3\xe4\x6c\xd6\xd0\x9f\xdb\x8b\xb3\xeb\x4f\x17\xb7\x17\xe7\x9d\x24\xcd\xfe\x7d\x1b\x87\xf4\x18\xc0\x8e\xbd\xf5\x3e\xc6\x6c\x91\x4a\xa1\xe2\x64\x8b\xb8\x53\x7b\xc9\xaa\xc0\xdc\xc2\x23\x40\xae\x85\x2e\x0e\x81\x8f\xde\xaf\x04\xd3\x4f\xe6\x82\x9f\x30\x6a\x8d\xaa\x66\x78\xf6\xd8\x4a\x94\x94\xa7\xf5\x00\x75\x27\x4a\x3e\x4f\xb7\xae\x0e\xa3\xab\x3b\x9e\x46\x81\x1e\xc2\x36\x22\xed\xea\x0b\x1c\xd0\x69\xb1\xc9\xe5\xbc\x1d\x10\xdc\x93\x5e\x60\xf8\x35\x10\x49\x7f\x9a\xeb\xa3\xaf\x9a\x0d\x63\x09\x17\x7b\x08\x24\x10\x5a\xd8\x57\xc6\xc6\xfd\xda\xc2\xa8\x36\xc5\x3c\x91\x11\x93\x71\xf5\x6a\x8f\xe5\x1b\x18\xbd\xac\x72\x83\x6d\x44\x0a\x1e\x93\x71\x44\x37\xa9\x38\xe1\x45\xbe\xb2\x0a\xbb\x10\x50\x22\x26\xd7\xa9\xca\x44\x94\x0a\x0c\x4b\x8b\x0c\xe2\x85\x28\x6c\x12\x3c\x09\x3a\x43\x45\x5c\x31\xd4\x8b\x9f\x06\x3c\xad\x2d\xe1\x6a\xfc\x25\xb6\x3e\x20\x5e\x87\xdf\xef\x1c\x1a\xea\xb1\xcc\xaa\xe2\x95\xe0\x1b\xe2\x87\x56\x1e\xc5\xbc\xb7\xb1\xd4\x91\x05\x1b\xe3\x24\x5b\xdc\x72\xf3\x6b\xec\x5a\x63\xe1\x42\x29\xc3\x8c\xa9\x75\xfa\xe8\x2c\x15\x70\x88\x50\x56\xda\x5e\xa3\x01\x45\x41\x38\x67\x80\x37\x9b\x1b\xc3\x5c\xac\x78\xb2\xc0\x00\x99\x99\x1a\xbf\xaf\xea\x4b\xf4\x5e\x3f\x0a\x75\x8b\x13\xf6\x8b\x98\x43\x85\x0e\xb8\x2f\xeb\x73\xc1\x09\x1f\x4d\x33\x7d\xb4\xab\xca\xd6\x79\xa0\x08\x34\xba\xab\xc1\xc7\x08\xb6\xf6\xb4\x7d\xb6\x44\x64\xb1\x90\xdf\x4c\x83\x53\x25\x1a\x89\xcb\x00\xba\x62\x09\x16\x9c\x5d\x06\xe2\x1e\xac\x52\x7f\x14\x0a\x94\x59\x50\x5e\x71\xe7\x9a\x1d\x16\xca\xad\xcf\x45\x47\x6c\x19\xc2\x4f\xb2\x24\x58\x13\x26\x1c\xec\x38\x41\x41\xd7\xa3\x38\x65\xe7\x54\x7b\x6b\xfe\x72\x76\x39\xb9\xb8\xba\x9f\x9d\xdd\x5e\x9c\x5f\x5c\xdd\x4f\xc6\x97\x77\x7d\xb7\xdf\x31\x6a\x02\x2a\xbb\xaf\x5a\x96\xe1\x2c\xc4\x5b\xda\x79\xbe\x34\xcd\xbd\x94\xdf\x76\x30\x25\xbb\x7b\x2f\xe3\xcd\x2c\x96\x59\x64\x8e\xbf\xed\x4c\xa8\x18\x18\x1f\xf7\x5a\xaa\xcd\x4d\x55\xdf\xc2\x7d\x83\xb9\x6f\x58\x0b\x82\xa7\xdd\x93\x5d\xd1\xee\x73\xa0\x84\x82\x68\x58\x2a\xcc\xe6\x8f\xa7\x2a\x38\x6d\x4e\x77\xd3\x7c\x9b\xe6\x0e\x7b\xb7\x72\x13\xd5\x77\xc2\xfe\xca\x2c\x2b\xb8\xb1\x8f\xf6\x6b\x50\xf2\xdd\x32\x2a\x44\xc3\x13\xd2\x4e\xca\x40\x1d\x8e\x99\x2b\xf2\x9a\xab\x98\xe7\x3a\xdd\xb6\xbc\x62\x3f\xe3\x19\x6e\x9b\xb2\x09\x0d\x8f\x6c\x73\xff\xb7\xb3\x80\x5f\xe5\xaa\xba\x94\x90\x9c\xf2\xfe\xfa\x2f\x17\x57\x77\xb3\x8b\xab\x4f\xb3\x9b\xdb\x8b\x0f\x93\x9f\x1d\xbf\xc6\x86\x67\x75\xdd\x29\x61\x0e\x45\x63\x5d\x6c\xa5\x6f\xa3\x7d\x41\xf1\x27\xdb\x0e\x69\x55\xc8\xc5\x54\x59\xcb\x92\xfa\xe6\x57\xa9\x2e\x96\xab\xe6\x86\xaa\xbd\xbc\x19\xdf\xff\xb4\x57\x37\x81\x87\x01\xd5\x61\x70\xb7\xd5\xe9\xca\xe4\x82\xec\x1e\x72\x9c\x55\xba\x07\x6c\x22\xf0\xd5\xa6\x80\x77\x8b\x45\xdb\xeb\xf6\x52\x37\x5a\x9d\xce\x7f\xc3\xd7\xdb\x16\xd0\x7d\x60\x37\x4b\xc7\x08\xe0\x43\x51\x7c\xac\xd6\xda\xbb\x86\xbf\x95\x4e\xb0\x3f\x9c\x24\x62\xb9\x14\x31\x2e\xaf\x6a\xc3\x14\x0a\x22\x13\x18\xf9\x73\xbd\x69\x14\x49\x06\xe8\x80\x83\xd9\x41\x8f\xfa\x1b\xf0\x1b\xf7\x93\x66\x5b\x71\x66\x45\x41\x23\xad\xb2\x9c\xab\x96\x9c\xe6\x53\x1d\x2c\xd8\xcb\x14\x5d\xa7\xcc\x95\x25\x50\x80\xc4\x46\xae\xfd\x3e\xd8\x27\x9b\x43\x72\x47\x8a\x22\x1e\x81\x0c\x52\xa0\x62\xda\x30\x09\x15\xa1\xf9\x17\x0f\x6e\x74\x5e\x9d\x88\x7c\x02\x22\x8e\x28\x97\x40\xcc\x88\x18\x0d\x02\x0d\x92\x56\x8c\xea\xa0\x09\xa9\x3c\xf9\x13\x0d\x3d\xde\x5a\xcb\x11\x4f\x2f\xaa\x6f\x27\xc8\x39\x6f\xc3\xe3\x5b\x15\x11\xf9\x40\xae\x3f\x2e\x22\xa2\x00\xc5\x66\x3d\xd8\x82\x02\x5a\xf6\x80\x8d\xd9\x89\x99\x66\xba\xa4\x88\xf8\x04\x68\x04\xa6\xaa\x2d\xab\x61\x6d\x40\x4b\x98\xeb\xc6\x9e\x5a\x87\x51\xd0\x0c\xc0\xce\xda\xc1\xee\x57\xdd\xc5\xec\xd7\xc1\xd9\x6b\xc1\xaa\xd0\xbc\xcc\x39\xa6\x2d\xcb\xc7\x71\x5b\xa1\xb7\xb3\xaa\xc3\x20\x35\xfd\x10\x09\x65\xfe\x18\x3c\x22\x57\x3c\x43\xcf\x35\x8f\x56\xe5\x8e\xc3\xdb\x94\x39\x62\xaa\xdd\x75\x9e\xe0\x61\x11\x82\x5e\x89\x8b\x11\xde\xa9\x65\x46\xbd\x0f\x15\x3f\x9c\x7c\xd1\xb0\x85\x1f\x3a\x47\xee\xf2\x82\x76\x0f\x0c\x56\xc2\x0b\x15\xad\xd8\x26\xe1\x58\xd1\xb8\xe2\x19\x2e\x69\x9b\xc1\xe7\x73\x99\xc8\x1c\xc8\x18\x30\xa9\x54\x19\x61\x73\xa3\xe1\xe9\xa3\xa5\x81\xe3\x9e\x0c\xaa\x6b\xd1\x1f\x88\x94\xf4\x82\xc0\xdf\x13\x2b\xe9\xb7\x6c\xf0\x8b\xce\x94\x94\x5f\x96\x84\x93\xf4\xd3\x61\x2c\x1e\x2c\x4b\xff\x2e\xc3\x66\x96\x5a\xbc\xa9\xfe\xbc\x34\xde\x0d\x07\xf5\x70\x9c\x00\x31\x9c\x0e\x30\xf3\x55\xfe\xd3\xc6\x9d\xb5\x48\x34\x6f\x11\x31\xb4\x6d\x23\x9d\x69\x5b\xdb\xb1\x2e\xe6\x6d\xf4\x79\xd8\xab\xee\xd6\xbb\xe2\xfe\x76\xdf\x1e\x2b\x2e\x18\x1a\x40\x9e\x8b\x5c\x0e\x0b\x6d\x04\x2f\xcd\x73\x71\x02\x3f\x6f\x6e\x9c\x48\xe3\x7a\xbf\x73\x6d\xa1\x79\x52\x6d\x47\xd2\x07\x08\xae\xfa\xea\xfa\x6b\x01\x92\xfb\xd7\x8b\x3b\x64\x07\x38\x64\x91\xe5\xb2\xbe\xc2\x9a\x77\x62\xf5\xa9\xf7\xe5\xa4\x4a\xb8\x06\x7a\x57\x86\x35\xbd\xcd\x9d\xf9\x75\xff\x0d\x59\x56\xfb\xdd\xa4\x52\x43\x0d\x3f\x49\x04\x77\xf0\x0c\x35\x3e\xf7\x80\x91\xfc\x5a\x88\x42\x98\xb5\x3f\x2f\xe2\x65\x3d\xb6\x39\xc0\x3b\xf3\xaf\xb4\xd2\xcf\x6c\x5d\x44\x2b\x66\x1b\x67\xb1\x48\xf8\xb6\xf4\x6a\xe0\x2f\xe5\x3a\x01\xe6\xbe\x3d\x69\xc4\xa2\x22\xcb\xf5\x1a\x10\x8e\xbe\xdd\xb4\x50\xb0\xe0\x19\xcf\xf3\x54\xce\x8b\xbc\x11\x0d\x55\xe2\xd3\xd9\x33\xa1\x75\x77\x73\x71\x36\xf9\x30\xa9\x64\x93\xc6\x77\x7f\x09\xff\xfd\xf9\xfa\xf6\x2f\x1f\x2e\xaf\x3f\x87\x7f\xbb\x1c\x3f\x5c\x9d\xfd\x34\xbb\xb9\x1c\x5f\x95\x72\x4e\xe3\xfb\xf1\xdd\xc5\xfd\x8e\xb4\x52\xfd\xa9\xed\x13\xc1\x03\xba\x1f\x8b\xb9\xb4\xf4\x8f\xf6\x76\x49\x4f\x7d\xc7\xc6\x96\xfc\x28\x54\x1f\xe4\x36\x35\x08\x29\x6d\x94\x43\xa4\x0c\xe2\x39\xcf\x39\x69\xf4\x9e\xb2\x31\xb3\x5a\xcb\x80\x34\xce\x8c\xb3\x40\xcc\x30\x66\x76\xb0\x09\xe3\x31\x44\xfe\xe6\xe6\x15\x6e\xf4\x82\x38\x99\x12\x11\x32\xa1\xda\xb2\x9a\xa9\xba\x78\x12\x2a\x2f\x80\xa6\x91\x27\x89\xd5\xc4\xb6\x5f\x08\x2a\x28\x6d\x2f\x33\xb9\x96\x09\x4f\xbd\x18\xc9\x35\xb5\x05\x0e\xbb\xed\xab\x23\xcc\xa8\x33\xd4\xdb\xcb\xc3\xc3\x84\x41\xbf\xcf\x2e\x27\xe0\x02\x45\xb9\x65\xda\xb6\x0f\x9f\x2a\xe4\xfc\xa1\x27\xae\x39\xa0\xdf\x73\x4d\xf1\x34\x7c\x3c\x7d\xb9\x7d\x21\x36\xea\xe1\xf7\x27\x95\xc2\xc8\xf3\x4b\xa1\x6b\x5c\x27\xed\x7f\x5c\xa8\x3c\xdd\xf6\xf6\x6b\xee\x81\xa8\x31\x03\xdf\x94\x80\x34\x65\x81\x12\x0c\x77\x30\xdb\xfa\x15\x38\x3b\x16\xe5\x45\xd1\x78\x17\x74\x17\x40\x06\xd9\xe2\x7f\x27\xe6\x10\xfa\x51\xc7\x21\x24\x28\x80\x51\x98\xeb\x42\xc5\x19\x41\x7e\xd6\x52\xbd\x5d\xf3\x6f\x6f\xec\x9b\x62\xc1\xaf\x23\x09\x06\x32\x17\x91\x98\x9b\xc8\xd6\x18\xb9\xee\xe1\x9a\xaa\x8e\xf1\xda\xed\x2d\x5a\xcb\x0a\xd7\x1e\x7f\x47\x45\xf0\xd2\x93\xd8\x36\xcd\x5f\x8d\xea\x1d\x01\x52\xb4\xe1\xa1\x91\x4d\x2a\xcc\x17\x1d\x32\x2a\x41\xc0\x9b\xfb\x37\xa0\xa0\x4b\x72\x34\xcd\xb6\x3b\xcc\xf2\x1e\xb4\x6d\x1a\xf3\xcb\x2f\xc0\xd5\x4f\x4f\x32\x73\x86\xd9\x66\x1b\xe8\x24\xd4\x37\xa5\xd1\xcc\x64\xfd\x97\x9e\xb3\x05\x94\x40\x90\xdc\x64\x2a\x20\xb0\x0d\x53\x61\xa9\x25\x81\xf2\xa3\x96\xc2\xb6\x4b\x20\x11\x19\x84\x7b\x95\xb9\x6e\x89\xaf\x05\x65\xec\x7e\xff\xbb\x61\xe7\x6c\x9e\x6e\x99\xa5\x31\x0e\x4b\x30\xa8\x02\x89\xce\x5c\xe8\x57\xa1\x64\x13\x0f\xd0\x6d\xa1\xcc\x51\x7c\x0c\xb0\x43\xff\x6c\x56\xe5\xa1\xf4\xcf\x9d\x55\x0a\x36\x10\x9b\xe2\xf7\x5f\x8c\x38\xed\x53\x85\x2f\x8d\x1e\x07\x78\x58\x6a\x3d\x3c\xd0\xe6\x3c\x7a\x7c\xe6\x69\x8c\xb1\x42\x40\x1f\x9c\xb2\x9f\xf4\xb3\x78\x12\xe9\x88\x45\x22\xcd\x39\x51\xa9\x64\x90\x7e\x85\x0d\x45\xed\x4c\x15\x40\xc4\x91\x97\x46\x81\x52\x67\x2e\x97\x2b\x73\x9f\x0c\x92\xe7\x3a\x35\xe6\x28\x47\x9e\xaa\x8d\x88\x88\xbc\xa2\x65\x00\x16\x09\x7f\xaa\x73\xc3\xec\x53\x66\xce\x26\xae\xce\xcd\x66\xa7\x2c\x5d\x6f\x17\xdc\x81\x06\x8c\x8c\x26\xb2\x0d\x8c\xd8\x52\x27\x5c\x2d\x4f\x4f\x4f\x99\xc8\xa3\xd3\x37\x83\x16\x3a\x35\x18\xe6\xbb\x1c\xb6\x33\xd1\x3a\x13\xc9\xd6\x11\x2e\x38\x04\x3e\x48\xa4\x7f\xcb\x85\xca\x24\x86\x3c\x1a\x96\xff\x5d\xb5\x5c\xfd\xfb\x86\xce\x9b\x6f\xaa\x83\xeb\xbb\x5a\xda\x01\xf6\xff\x01\x2d\xe1\xf7\x9b\x6f\x5e\x03\xea\x15\xad\x58\x8f\xaf\x5b\x6c\xe1\x56\xd4\x6a\x68\x31\xde\x27\xdd\xa6\x6a\xb9\x17\x1f\x52\x63\x4b\xc4\x96\xb0\x57\x01\x53\x5b\xe4\xa2\x52\x53\x76\x40\x39\x59\x47\x65\xd8\xc0\xa2\xb0\x86\xfd\xd7\xb0\x3d\x5c\xd9\xe9\x21\xf8\x24\x9d\x14\xeb\x76\x22\xa0\x43\x5d\x3e\xdf\x49\xfc\xaf\x33\x78\x5c\x6f\x97\xcf\x2b\x8d\x5a\x26\x73\xea\x2f\x06\x6e\xa9\x30\xcf\xd8\xf6\x54\x66\x40\x59\xb5\x4f\x95\x90\x6b\x06\x9b\x86\xfc\xd2\x76\x83\x01\x43\xac\x1f\x4a\xb6\x58\x87\x66\xf3\x11\xf4\x93\x0c\xfd\x32\x48\x4a\xb5\x9b\xb1\x2a\xea\x69\xf0\x1c\x01\x4f\xf6\x5e\x99\x38\x70\x74\x02\xaa\x56\x82\x65\x40\x83\x94\x3b\xce\x35\x5b\xd8\x9a\x93\x47\x11\x68\x7b\xc5\x40\xe2\xfa\x8c\xb4\x10\x7f\xf9\xd7\xcc\x66\x99\x09\x08\xe0\xcf\xd8\xdc\x3f\x04\xa3\xd9\x4f\xbf\xb7\xf8\x0f\x7c\x43\x6c\x02\xc4\x32\x62\xae\xf2\xc6\x06\x3c\x3c\x0a\xda\xc2\x9f\x7c\x32\xf7\xf6\xc6\xaf\x53\xfb\xf0\x55\xe4\xc5\x1f\x7f\xbe\x63\x38\xd4\x44\xf7\x99\x76\x75\x34\x68\x64\x37\x02\x05\x86\x6b\xb6\x87\xef\x52\x9a\x07\x1c\x74\xcb\xf7\x6a\x86\x5d\xe4\xd1\xca\x9f\x95\x65\x89\x3b\x12\x3d\xa1\xf7\x5c\x7b\x02\x53\x04\xf7\x85\x28\x29\xb9\x54\x3a\x15\x1e\x6d\xa5\x95\x80\xb4\x02\xcf\x59\xac\xc3\x66\x99\xcc\x77\x43\x51\x06\x92\xec\xec\x5a\x6a\xb9\x46\x88\x01\xbd\x67\x29\x3b\x04\x4e\xb0\x44\x6a\x0e\x8b\xe3\x43\x2f\x9e\x34\x34\xaa\xb4\x9b\xe5\x62\xe7\xa9\x2a\x3f\xaa\x36\x48\x16\x2b\x22\x53\x81\x6c\x79\x99\xf1\x37\x72\xf9\x64\x36\x6a\x7d\x59\xbb\x05\x0a\x16\xa0\xbe\xf6\xa6\x0a\xbb\x1d\x50\xee\x3d\x8a\x6d\x16\x0a\x76\xd0\x8a\x62\x6d\x0b\x52\x9a\xf7\xa1\xf9\xda\x3d\x15\x30\x70\xb3\x40\x82\xb4\xdf\x29\x82\x0f\xfd\x68\x7e\xdc\x01\x42\xab\x35\x6e\xd6\xa0\x2f\xea\xf1\x51\x30\x32\x13\x7e\x9c\x69\x0e\x3d\xce\xa4\x41\x9e\xd6\x07\x14\xe1\xaa\x66\x6e\x64\x53\x45\xac\x9c\x41\xfe\xd6\x18\x9c\xfa\xb4\x51\xa5\x21\x72\x01\x6e\x4b\x4c\x09\xc0\x98\x6a\x75\x14\x9b\x55\x81\xad\xde\x13\xa9\xe1\x63\x2d\x96\x8d\x3a\x35\x3e\x70\x4f\xf0\x12\x4d\x6e\x2b\x60\xc9\x3b\xdd\x34\x70\x44\x96\x85\xca\x2f\xe8\xaf\x47\xc2\x0c\xdf\x58\x35\x62\x85\x2c\x52\xe8\xee\xe2\xec\xf6\xe2\xfe\xbb\x01\x9a\x2c\x9a\x68\x30\xa2\xc9\xf6\xf3\xfc\xe2\xc3\xf8\xe1\xf2\x7e\x76\x3e\xb9\x7d\x09\x48\x13\x7d\xb4\x07\xa6\xe9\x8e\xc8\x7e\xcf\xb4\xca\xc5\xb7\x83\xce\xe4\xb4\x50\x33\x3e\x00\x5b\xef\x08\xb5\xbb\xdc\x1d\x6c\xb4\x4e\x56\xec\x98\x84\x89\xaa\x0d\x4f\x34\xc7\x4d\x1c\xc8\x3c\x2f\x64\x92\x40\xc5\x9b\x0b\x08\x53\x19\x8b\x19\x54\xb0\x3f\x56\xaf\x92\x6c\xea\x54\xcd\x4b\x6c\xcd\x10\xa4\x5a\x99\x6b\x1b\xd6\xba\x6d\xcc\x00\xa4\x12\x0a\x9e\xba\xf8\x8c\x97\x52\x09\xdf\x0d\x54\x69\x2b\x14\x6b\x25\xa1\xa4\x49\x7c\xc9\x82\x46\x72\xbc\xfa\xfa\x9a\x76\xc5\x95\xd6\xa7\x75\x3f\xed\x87\xee\x0d\x71\x13\x4b\x85\x8e\x69\x69\x37\xdf\x35\x2f\xdd\xb7\x7e\x0b\xc0\xb8\x9b\x99\xe4\x10\x35\x07\x21\x34\x3f\x91\x34\x11\xa8\x24\xe0\xc3\xe9\x8f\x12\x71\x1f\x7a\x51\x19\x67\x63\x0a\xcd\x58\x4b\x88\xad\x73\x2a\xe4\x8f\x92\x22\xcb\x45\x4a\x17\xfd\xf1\xe7\xbb\xa9\x42\xbd\x5c\x3a\x85\x88\x6d\x1e\x1f\x81\xa8\x03\x5d\x7a\xbe\xf5\x50\x42\x0b\xf6\x1a\xa3\xaa\x6b\xc1\x55\x86\x32\x95\x49\x22\x52\xbf\x32\xb0\x3f\x42\xc4\x24\x54\x02\x5a\xa6\xfe\xf7\xa4\x54\xa8\x61\xd7\x9a\xfe\xd2\xa7\xa4\xd4\x57\x5d\x4f\x6d\x05\x95\x00\x69\x7c\xc9\x95\xd3\x80\xac\xef\xbb\x8a\x08\x0d\xda\xb8\x88\xca\x38\xf7\x5e\x6b\xe9\x1e\x9b\xfb\x75\x29\x1d\x71\x29\xf5\x38\xd7\xc3\x53\x82\xad\xb4\x31\xa0\x8e\x28\xde\x27\x46\x5d\x41\x77\x02\x88\x1d\x33\x8c\x8d\xa7\x8e\xe7\xb1\xda\x2b\x55\x7a\x75\x7d\x75\x11\x26\x3a\x27\x57\xf7\x17\x7f\xba\xb8\x2d\x15\xef\x5d\x5e\x8f\x4b\x05\x78\x77\xf7\xb7\x95\xba\xbb\xf7\xd7\xd7\x97\x17\xb5\x8c\xe9\xc5\xfd\xe4\x63\xa9\xf1\xf3\x87\xdb\xf1\xfd\xe4\xba\xf4\xbd\xf7\x93\xab\xf1\xed\xbf\x87\x7f\xb9\xb8\xbd\xbd\xbe\xad\x3c\xef\xe1\xac\x3b\xf7\x5a\x7a\x8d\xe6\xab\xb8\x4f\xed\x04\x94\x5e\x8d\x43\xfa\xf5\x30\x22\xcc\x9c\xe7\x8d\x0e\x75\xef\x9b\x0e\x09\x25\x7e\x2d\x44\xba\x25\x0e\x01\xf4\x42\xf1\x2f\x11\x57\x08\xe0\xca\x49\xea\x3d\x0e\x91\x47\x53\xf5\x19\xc5\xe0\x21\xb9\xf9\x2a\x63\x7f\x82\xf0\xab\xfd\xb2\x17\x14\x85\xcd\xfa\x57\x7c\x86\xfb\xec\x74\xaa\x4a\x42\x8c\xc1\xaf\x4a\x3a\xd2\xa7\x53\x65\xb9\x1a\x63\x1d\x65\xa7\xb0\x97\x4f\x75\xba\x7c\x4b\xb2\x2a\xc6\xd6\xe9\xc7\xb9\xd6\x8f\x6f\x85\x7a\x0b\xde\x46\xfe\x96\x17\xb9\x7e\x0b\xa9\x1b\x84\xb6\x64\x6f\xad\xfa\x82\x95\xaf\xc8\xde\xae\xe4\x93\x80\xff\x77\xba\xca\xd7\xc9\xff\xc9\x36\xab\x6f\x27\xcb\x24\x3d\x31\xbf\x3d\x09\x7f\x7b\x62\x7f\x7b\x62\x7f\x7b\x62\x7e\x86\xff\x6f\xb3\xc5\x8b\xbb\x20\x1d\xdc\xa9\x92\x2a\x13\x69\x0e\x75\x8e\xcf\xa9\xcc\xbd\x4a\xf7\x96\xbd\xfa\xef\xff\x66\xa7\x29\x7f\x46\x28\xef\x39\xcf\xf9\x0d\x7a\x8e\xff\xf8\xc7\x2b\x96\xe5\x9a\xb4\x64\x36\x3c\xfd\x5a\x88\xdc\xf8\xb0\x89\x88\x72\xf6\x7f\xa7\x0a\xe4\xa7\xd6\xdb\x59\x8e\x1e\x35\x7a\x97\x71\xc6\xfe\x0d\xdb\x9c\x20\x9f\x46\x9c\x99\x96\x5a\x50\x3e\x92\x27\x0d\x82\x3d\x2d\x97\xaf\xaf\xc9\x39\x7d\x7f\x80\xc5\xf9\x9a\x94\x50\x03\x8e\x15\x36\xfb\x9a\x00\x71\x4b\xa2\xb9\x4d\x1c\x31\xb7\x78\xc1\x02\x52\xe7\x9a\xf6\x48\x2d\x3c\x79\xc0\x8e\xd9\x57\xc3\xec\x0e\x79\xbd\xec\x9d\xac\x26\x47\x03\xb7\x40\x7f\xc3\x04\x2a\x17\x69\x76\xc8\x1d\xfa\xb8\xa8\x11\x0b\x6f\x0e\xb6\x3f\xd7\x29\x5f\x7a\x4d\x5f\x3a\x92\xb2\x3f\xbe\x7b\xfb\x76\xc4\x96\x19\xfc\xcf\xfc\x2b\xfc\x0f\x64\x32\x8e\x45\x4b\x53\x1b\x4c\x97\x94\xeb\x13\xa9\x6d\xfd\xf1\x41\x36\xec\xe5\xd9\xd0\x2a\xcb\xf4\x7d\xa1\xe2\x44\x78\x64\x72\xe9\xb2\x9b\x68\x2b\x18\x86\x2e\x4f\x95\x77\x16\xe6\x78\x2e\x22\x6e\x0c\x5f\xed\xd9\x98\xe8\xd6\x8b\x5c\x28\xf4\x73\x52\xcf\xd2\xcd\xd1\x27\x81\x2c\x13\xa4\x65\x41\xff\x76\xbd\x01\x31\x5c\x09\x01\xc0\x7b\xa4\x17\x1b\x55\x3f\x02\x39\x4b\x64\xca\x02\xee\x17\x54\xdd\x14\xf6\x26\x8e\x15\x5d\x45\x6a\x5c\x9d\x0d\x57\x31\xcf\x60\x05\x2e\x52\x88\x63\xa5\x8c\xd7\x3b\x3a\x42\x68\x80\xb9\xd9\x73\xb5\xa5\x98\x71\x38\x12\x48\x65\x16\xf4\x79\x14\x74\x02\xcf\x04\x14\xf0\xad\xfe\xf0\x74\xaa\x9c\x14\x2c\xe6\xe5\xac\xb8\xf8\x66\x4b\xc5\x92\xd5\x41\x97\xd6\x27\xa2\xe1\x1e\x79\xb1\xbd\xea\x77\x41\x66\x3c\x0c\x9a\x00\x6b\x5a\xa8\x84\x63\xd5\x7a\x5e\x83\x38\xaf\x48\xb3\x37\x66\x1b\x02\x97\x68\xee\x39\xc9\x64\xe6\x27\xc3\x29\xc7\x92\x1f\x68\x9a\x77\xf4\xc2\x66\x74\x4a\x3c\x5b\x4d\x2e\xd8\xee\xad\xf2\xa3\xe7\x37\x9a\xfa\x4b\xff\xf9\x5d\x73\x1d\x61\x8e\xb9\x51\xcc\x7a\x10\xd9\x00\x6e\xd9\xd0\xe2\x62\xa3\x24\x34\x8b\xce\x89\x95\x1d\x91\xe6\xc8\xca\xcd\x0d\x20\x9f\x2a\x3a\x81\x47\x6c\x21\x78\xbe\x82\x24\x7b\xf6\x84\xc6\x18\x8f\xfb\xfc\x59\xfb\xec\x8a\x25\x69\x85\xc4\x7c\xa9\x71\xef\xfe\xe3\xd7\x20\x56\xcc\xa3\x1c\x43\xc7\x6d\xf4\x95\xce\x55\x81\xc1\x6a\x34\x88\x7b\x8c\x83\xe5\xfc\xac\xf2\x6b\x87\x94\xb3\x30\x12\x5b\x0c\x01\xb2\x6a\x3f\xf0\x03\x63\x78\xf0\xed\x30\xc0\x1f\x18\x47\xa8\x6c\xa2\xbc\x3e\xee\x33\x1f\x9d\x0b\x49\xd7\x20\xf2\xd2\xb6\xa9\x3a\x06\x02\x3a\xb0\x1f\x04\xda\xfc\x74\x27\x35\x45\x26\x52\x4b\x48\x8a\xef\x8a\xdc\x14\x2b\x99\xc6\x27\x1b\x9e\xe6\x5b\xbb\x7c\x13\x39\x07\x1e\xc3\x44\x3e\x0a\x36\x4e\x53\xfd\x7c\xec\x51\x68\x35\x2d\xf7\x3c\x7b\x3c\x32\xd5\x0d\x50\x3b\x0d\xa1\xaa\x69\x64\xa6\x29\xa5\xdd\x63\x31\xdb\x8f\x05\xa7\x8d\xc9\xa7\xf1\x39\xa9\xc8\xd3\xed\xcc\x2c\xc4\xf5\xa6\xd5\x52\xf4\x02\x70\xf5\x77\x72\x87\x11\xec\xc0\xf9\xdc\x83\x60\xa7\x34\xab\x3f\x0e\xc1\x4e\x03\x77\x4e\x9d\x60\x67\x72\x35\xb9\x9f\x8c\x2f\x27\xff\xaf\xd2\xe2\xe7\xf1\xe4\x7e\x72\xf5\xa7\xd9\x87\xeb\xdb\xd9\xed\xc5\xdd\xf5\xc3\xed\xd9\x45\x77\xc5\x6c\xbd\xf7\xde\x05\x3f\x61\xe1\x73\xde\xb1\xfb\x20\x04\x8f\xc0\x27\xf2\xbf\x49\xc8\x03\x56\x95\xd9\xcc\x52\x2d\x47\xb0\x51\xdf\xb1\x8b\x34\x9d\xac\xf9\x52\xdc\x14\x49\x02\x89\x32\x44\x19\x9e\xa5\x02\x2e\x9e\x23\x76\xa3\xe3\x49\xf0\x3b\x80\x46\x37\xbe\x06\x3c\x9f\xc7\x71\x2a\xb2\x0c\x1f\x3f\xa2\xe7\x07\x69\x21\x07\xbb\xa6\xb4\x28\x7f\xe2\x32\x31\xf7\xb7\x77\xa0\x2d\xa8\x17\xa4\x12\x3d\x72\x20\x4e\xf6\xb5\xd0\x39\x67\xe2\x5b\x04\x55\xe2\xcd\xeb\xe4\x52\x2f\x5f\xf6\x0e\xd4\xbc\xa7\x77\x13\x6b\xb4\x5c\x52\x80\xb0\x7d\xd6\x7c\x9c\x37\x1b\x02\x7a\xcb\x8f\xf8\xd3\x0f\xf8\xcb\xc6\xd6\xf3\x3c\x39\x42\xd5\xca\xa5\x5e\x36\xd3\xe7\x82\x77\x4d\x9c\xbf\x5e\x44\x17\x6a\xe0\xf4\x92\x65\x52\x3d\x4e\xd5\xe7\x95\x50\x4c\x17\x29\xfe\x09\xae\xf9\xc6\xcd\x4c\x8a\x6c\x25\x62\xa6\x8b\x7c\xc4\x9e\x05\x5b\xf3\x2d\xba\xcd\x70\x27\x70\x7c\x9f\xb0\x64\xe0\x14\x31\xbf\x4e\xa4\x32\xd6\x62\x23\x2d\x46\xaa\x3a\xf5\xc7\xb8\x71\x59\x8e\x04\x7e\x38\x85\x51\xbf\x42\x90\xe7\x95\x00\x0c\xbc\xcf\x88\xdb\xd4\x0f\x59\x6e\x90\x14\xd1\xfa\xb1\xd8\x78\x36\x95\x57\x96\xb2\x10\x86\xfb\x49\xcb\x98\xc5\xc5\x26\x91\x91\xb3\xbb\xcf\x3a\x6d\xa5\x8c\x42\x30\xdf\x00\xca\xa8\x0a\x44\xb5\xeb\xc5\x1a\x90\x82\x41\x8e\xb4\x83\x3c\xea\x85\xe9\xb3\x02\x49\xf7\x22\x13\xe9\x49\x9e\xca\xe5\x12\x1c\x70\x8b\x3b\xfe\xf1\xf9\xb5\x3c\x7f\xc7\xe1\x10\xdb\xb0\x00\x26\xd1\x4b\x19\xf1\x24\x84\xad\xf8\x78\xb7\x23\xf0\xb1\xdb\x9e\xa4\x64\x4c\xbf\x5d\x87\x5a\x0b\x93\x37\xa9\x00\x0e\xa9\x19\xaa\xe4\x1f\xae\xde\x3f\x59\x30\x73\x41\xb7\x32\xb3\xbe\x42\xcc\x2a\x75\xdb\x13\xce\x3f\xdb\xf2\x89\xa3\xa0\xa0\x02\x30\xb6\x7e\x56\x22\x05\x0f\x16\x02\xfa\xe6\x4d\x95\x06\xdf\xc4\x71\x8c\x3b\xe4\x89\xe5\xd8\x5f\x38\x88\x0d\xa2\xf8\x97\xf2\x49\xa8\xef\xcf\x87\x16\x3c\x20\xe2\xd1\x4a\xcc\xac\x5f\x7e\x6c\x93\xe5\x0e\x80\x81\xc6\xca\x12\x7d\x86\xa6\x94\x49\xe0\xa0\x88\xf0\xea\x84\x3d\xae\xdb\x2e\x24\xb0\xee\x75\x28\x01\x05\x6a\x39\x3e\x57\x3d\x0e\x0e\x65\xf3\x76\x20\xb9\x7d\xbd\xff\xee\x40\xc0\x32\xd1\x73\xa8\xd6\xaa\xf3\x7c\x87\x27\x6c\x1b\x65\xf0\x93\x48\x53\x19\x0f\xb1\x4c\x76\x4c\xae\xdd\x4f\xbb\x3a\xe8\xc4\x1a\xdd\x93\xc0\x28\x48\x8c\xd5\x55\x3c\xf7\x6a\x35\xc0\xae\x6b\x02\xe4\x36\x32\x97\xdc\x70\x8e\x84\xe5\xea\x83\xc0\x84\xee\x50\xff\xac\xbf\xcb\x41\x13\x5d\xaf\x2f\xdb\x31\x96\xbe\x24\xad\x7b\x92\x0f\x28\x12\xc2\x8a\x26\x57\x29\x34\x84\x70\xc9\x4e\x1d\x26\x9e\x41\x59\xd5\x4d\x62\x09\x11\xd4\x6b\x46\xab\xe3\x7e\x4f\xe9\xae\x83\x2a\xe0\x5f\x60\x47\x15\xb9\xf6\xd1\x4a\x78\x9f\x09\xd0\x90\x84\x58\x43\x30\x1b\x93\xb8\x51\x31\xdf\x1f\x1f\x76\x6b\xb6\xb9\x2a\x87\x45\x9c\xc6\x6c\x93\x0a\x1b\xf7\xde\x8a\xdc\xd5\x48\x24\x96\xd9\x19\xc2\xba\xee\xad\xcb\x45\x62\xb6\x0e\xc4\x15\xf6\x42\x10\x56\x5b\x2d\xec\xf5\x46\x2b\xa1\x08\x1d\xa0\xf4\x54\x51\xe3\x56\xa3\xc7\x45\x86\x4b\x20\xcc\x11\x5d\xc8\x11\xd2\x23\x32\x9d\x3c\x51\x0a\x20\xe0\xef\x03\x66\x6f\xd3\xc1\x33\xe3\xdb\x18\x4f\x1e\x72\x53\x84\xc8\x03\x8c\x42\x45\xa8\x26\x15\x4b\x99\xe5\x22\xc4\xad\x86\xbf\x3f\x9a\x9e\x40\xc9\xf9\xef\x1a\xfa\x56\x3d\x81\x5d\xa7\xb8\xd9\xb5\x03\xfa\xb3\xdd\x88\x78\xe2\x7e\xd7\xbd\x18\x4a\xe0\xf3\x38\x30\x12\xa5\x53\x00\xd7\x00\x7a\x2f\x19\x96\xcd\x66\x8e\x79\xcf\x4d\x12\x15\x34\x72\x27\x04\x01\x53\xb4\x2c\x78\xca\x55\x2e\x44\x36\x55\x94\x38\xc1\xf2\xef\xb0\xc2\x69\x51\x12\x90\xf0\x67\x73\xa4\xb3\x1c\xab\x29\xe1\x27\x0b\x2e\x93\x22\x6d\x75\x97\x71\x55\xee\x55\xba\xd1\x35\x4a\x67\xd0\x2c\x6b\x9a\x34\x07\xad\x0e\x76\x91\xab\x40\xaa\xa6\x3d\xca\xc8\xe3\x96\x57\xb0\x26\xb7\xff\x7c\xbb\x58\x49\x0b\xda\xfa\x5f\xb3\xd9\x46\x0f\xb0\x78\xa4\x3b\xdc\xd8\x58\xf6\xb5\x76\xa7\xef\x48\xff\x7d\x6d\xe3\x22\xe4\xd9\x23\x44\xce\x77\x5d\x25\x76\xc7\x07\xff\xf8\x87\xdd\xf1\xf5\x56\xdb\x05\xab\x76\xc5\x55\x9c\x80\x46\x71\x5e\x39\x81\xdc\x1e\x00\x01\x80\xdc\x1a\xc7\x76\xb8\x21\xa0\x77\x66\x51\x0d\xfa\xb9\x6b\x9c\x2a\x98\xd1\x1d\x10\xc2\xd2\x53\xca\x48\xce\x26\x04\x91\x3f\xd9\x49\x88\xc2\x6d\xd8\xf6\x25\xb8\x90\xcb\xe3\x13\xf1\xf4\x55\xe6\x70\x5e\xf6\xc7\xba\xa5\x8c\x68\x2b\xd2\xf9\xe5\xc4\x38\x0e\xdc\x8c\x80\xfc\x32\xc6\x2c\xa4\x3b\x9a\x2a\xd2\xa9\xc1\xa4\x11\x64\x0b\xb0\xa4\x37\x63\xbf\x77\x70\xe0\xdf\xff\x8b\x2d\xe8\xdc\xb2\x05\x8c\x35\x54\x4d\xeb\x28\x2a\x52\xc8\xe8\xd0\xad\x93\x09\x3c\x9b\x86\xb0\xd2\x8d\xf1\x44\x76\x79\x78\x74\x9f\x9a\xbc\x07\x17\x66\x28\xbd\xd4\x3d\xdc\x2e\x51\x71\xc7\x9d\x85\xc4\x60\x9b\x66\x39\xcb\x72\xb1\x69\xb4\x4a\x25\xa7\xab\x2c\x2c\x75\x80\xdb\xd5\xa1\x0a\x7f\xb0\x8d\x1e\x07\x0a\x56\x7f\xbe\xbb\xbe\x62\x1b\xbe\x05\x48\x4b\xae\x49\x11\x0c\x38\x2d\xaa\xfb\x77\xd7\x0c\x94\x5f\xbe\xbc\xd9\x70\x4c\x53\xee\xed\x45\x3d\xec\xc4\x9d\xe2\x5f\xc5\x0e\xc1\x9a\xa1\x25\x69\xb6\x72\xaa\x93\x93\x4d\xc2\x95\x40\xfe\x41\x2c\xf0\x65\x95\xc7\x87\x69\x2a\x17\xb0\x26\x20\x00\x74\x20\x14\xcc\x4e\x0b\xd5\x84\x6b\x2b\x6b\x65\x1d\x94\x99\x6a\xb5\x11\x9d\x78\x9d\x8f\xc8\x4a\xc8\x23\xb3\x4d\xb0\xdc\xc5\x66\xdb\x5c\xc2\x96\x67\x80\xa5\x1a\x30\x51\xdd\xc2\x5e\x53\x65\x35\x5b\xf4\x73\xc6\x62\x2c\x08\x2a\x64\x86\x7a\x98\x18\xcb\x04\x5c\x03\xd9\x17\x4c\xba\xa6\x5c\x65\x66\x42\x21\x1c\x23\x9e\x84\x62\xf5\xf2\x92\xc9\xf9\xa5\x4b\x4d\xe2\x24\x11\x9f\x79\xcb\xd0\x07\x8e\xd9\x41\x14\x5e\x4d\x2a\x53\xbb\xa9\x02\x3f\xf2\x4d\xcb\x85\x1e\x25\x68\x0e\x6d\x71\xd7\x2c\xb9\x72\xc8\xaa\xd7\x09\xfa\x37\x40\x71\x4c\xda\x3d\xf5\xd1\x7b\x50\x07\x9a\x9f\x46\xee\xb0\x01\x4a\xba\xfb\x53\x77\x87\x22\xa2\x03\x6c\x4f\x50\x4b\xef\x60\x01\xce\x5f\x36\xbb\x1c\x08\x64\x51\xb1\x91\x14\xaa\xef\x84\x60\x5f\x9c\xe8\xe3\x17\x22\x28\xf7\x7a\xdb\x6d\xe3\x3a\x51\x0b\x7d\x98\x31\x48\x97\x35\x24\xcd\x41\xa3\xd2\xdc\xcf\x43\xb1\x3a\x50\x51\xa4\x5e\xb6\x28\xa4\xf1\xbd\x76\x20\x73\x6e\xfc\x9d\x9c\xe0\xc9\xb6\xa7\xe6\x7c\x86\x29\xde\x4f\x9c\xb0\xb4\x48\x72\xd0\xc1\x04\xf2\xa7\x47\xa5\x9f\x15\xfa\x02\xf4\x24\xf6\xda\xec\x3f\x38\xc0\x80\xc5\x89\xc0\x39\x05\x5a\xc3\x37\xc0\x46\x35\x76\xff\x66\x77\x18\xe6\xc6\x3e\x03\xdd\x6a\x06\xce\x0f\x11\xa5\x82\x35\x7f\x3d\x1e\xb1\xf7\x23\x76\x36\x62\xa7\xa7\xa7\x6f\x46\x4c\xf0\x68\x65\x7b\x84\x3f\x41\xd0\x4b\xce\x97\xa6\x6d\xa7\x95\xeb\x1f\x00\xec\xc1\xe6\xb0\x32\x47\xa6\x31\xd0\x3c\x50\xd4\xf5\x91\x07\xfb\x0a\x08\xe6\x46\x85\x0a\x9b\x12\x8c\x56\x5a\xfa\x4e\x01\xba\x4c\x44\x3a\xb5\xf8\xb4\x2c\xd7\xa9\xc5\xda\x3c\xf1\x94\x4b\x05\xf5\x06\xbc\x8e\x34\xa4\x27\x07\x1c\x59\xe2\x1b\x5f\xc3\xfb\x4b\xe5\x68\x42\xcc\x30\xdd\xbb\xfe\xe7\xdb\x8d\x8c\x60\x3c\x9f\x53\x99\xe7\xe6\x74\xce\xa6\xea\x8e\xbd\xfb\x37\x36\xde\x6c\x12\xc1\xc6\xec\xef\xec\x3d\x57\x5c\x71\xf6\x9e\xfd\x9d\x9d\x71\x95\xf3\x44\x17\x1b\xc1\xce\xd8\xdf\xcd\xb0\x99\xf6\xae\xb4\x39\x0e\xb7\x23\xc6\x99\x2a\x12\x3c\xf5\x5f\x5b\x1c\xcb\x1b\xf7\x5e\xdc\xcf\x8e\x15\x9c\xcc\xf4\x9a\x8e\xc2\x9f\xb1\x9a\xc1\x8c\x8c\x54\xcb\x44\xe4\x56\xe6\xb5\x84\x38\xc2\x07\x9c\xc0\x9b\xbe\x9b\x2a\x17\xcb\xfb\xd9\xf4\xf8\x67\xf6\x77\x76\x55\x24\x89\xe9\x92\x31\x34\x66\x21\xbd\x63\x16\x01\x2e\xd4\xe9\xb3\x7c\x94\x1b\x11\x4b\x0e\x18\x70\xf3\xaf\xb7\xf7\x30\xdb\xb3\xc2\x53\x0e\x84\x7b\xda\x51\xd8\x7e\x17\xde\x99\x21\x7a\xce\x8e\xc9\xd8\x4e\x7e\xc7\xcd\xaf\xfc\xd3\xe1\x1e\x91\x27\x5c\xa1\xfd\x40\x0e\x2b\xd2\x0f\x87\x8c\xc9\x7b\x99\x80\xca\x61\x6b\xdb\x6a\x38\x0a\xc2\x43\xfd\x50\x23\x0b\x04\xdc\x47\xbf\x43\xf6\x60\x43\xee\x6b\x72\x6b\x5c\xae\x4f\x21\x79\x35\xf8\x92\xbe\xfe\xb4\x57\x56\xc8\x71\xb8\x7e\x2a\x33\x90\x97\x86\x58\xcb\x5e\x54\xed\x95\xce\x3e\x50\xec\x22\x16\x4a\xe7\xe6\x22\xa3\x64\xf2\xd6\x6c\xd5\xb7\x57\x5a\x99\x6b\x6b\x26\x97\x58\x33\x0b\x08\x88\x0c\x78\x6d\xac\x53\x70\x5f\x76\x59\x83\x2d\x00\xfe\x81\xe9\x12\xa2\x72\x72\x63\x05\xcc\x14\x24\xdb\xa9\x32\xbf\xa0\x13\x09\x10\xba\xd2\x91\x01\xe1\xd3\xac\x28\x1c\x3d\x8b\x0c\x72\xd0\x78\xc3\x02\xeb\xd2\x51\x3b\x88\x84\x07\xaa\x4d\x0e\x88\x8a\x5f\x05\xb4\x02\xd4\x9a\xad\x39\x43\xf0\xcf\x5c\x24\x5a\x2d\xcd\xaa\x68\x33\x02\x7a\xcd\xe5\x21\x39\xf1\xb0\x0b\xd8\x58\x6b\x0f\xcc\x61\x49\x5f\xa1\x29\x09\x04\xad\x49\xcc\x06\x04\x31\x5d\x44\xd6\x9d\x86\xf4\x72\x2d\x2f\x31\x54\xa1\xa7\xbe\x4a\x41\xff\x9a\x92\xb3\x2e\xda\x8f\x07\xa7\x8d\xa6\xd9\x37\xea\xb7\xa9\x3a\x31\x7d\xcd\xa1\x10\xca\x26\xd8\x60\xb2\x0b\xea\xf5\x58\x8f\xbf\x24\xbc\xef\x25\x55\xf5\x1a\x25\xf4\xe0\x7b\xa6\x35\xfa\xd3\x50\x99\x3c\x3b\x7a\xc7\x40\x3e\x7d\x45\xd6\xdc\x99\x5e\xd8\x22\xb0\xfe\x67\x7a\x8d\xb7\xb8\x1f\xf4\x24\xe4\x2a\x0b\xf9\x7d\xeb\x0b\xa7\x2d\xdf\xa0\xd5\x8c\x32\x12\xfd\x3a\x5b\x1d\xb0\x6b\xf5\x01\x7f\x7e\xa3\x13\x19\x75\xe3\x75\xec\x71\x05\x22\xce\x35\x00\x04\x68\xaa\xbb\xf8\x0f\x75\x0a\x3d\xf4\x5c\x44\xb9\xcf\xb8\xd5\x5f\x6e\x50\x38\x8c\x02\xac\xae\x15\x90\x92\x70\x29\x2d\x38\x6a\x80\x04\x05\xd8\xea\x30\xf4\x08\x55\x31\x90\xea\x8d\x38\x45\x64\x4b\x1d\x01\x7b\xf5\xbc\xd2\x89\xb9\x9a\xa8\x98\x08\x65\xa6\x6a\x23\xd2\x48\x27\x3c\x37\xd6\xf0\x99\x48\x03\x64\x12\x7b\x4a\xd8\xd7\x80\xcd\x03\x04\xcd\x1b\xe2\xbd\x17\x2e\xe5\xea\xb4\xc8\x77\x2f\x5b\xab\x7d\x75\x58\x40\xe6\x78\x60\x9b\xae\x55\xf0\x99\x20\x30\x38\x14\x24\x1f\x5c\x49\x9e\x99\x41\x2f\xf5\x67\xd8\x0c\x0b\xc7\xf6\x19\xf9\x7b\x44\x5e\x99\x57\xba\x4a\x54\x87\x12\x88\x81\xb0\xae\x03\xf1\x14\x99\x80\xee\xac\x05\x47\xd7\xc4\xd3\x74\xd0\xa4\x4e\x95\x4f\x17\xbe\xca\x42\x37\xa5\x71\x9e\x91\xf7\xc6\xc2\x79\x46\xec\x55\xe9\x45\x5f\x01\x71\x8c\xd2\xf0\x3c\x4a\xe9\x94\x86\x06\x96\xeb\x88\xc9\x7c\xaa\x64\x86\x2b\x33\x15\x89\x78\x32\xbd\x0b\x63\xa7\x04\xfd\xb0\x57\x49\xfb\xda\x80\x08\xe5\xb6\x90\xd0\x49\xa6\x41\x89\x76\x1a\x12\x90\x70\x88\xd3\x82\xa6\x74\xa1\x80\xec\x53\x7c\x43\xe1\xee\x64\x6b\xd1\x10\xb1\x50\xb6\x7f\x00\x92\x40\x55\x96\xa9\x9a\x2c\xa0\x9a\x0b\x6a\xc8\xe2\x18\x2f\x65\x96\xfe\xd1\x55\x83\x4b\x8a\x95\x6a\xba\xa2\x3a\x45\x5e\x94\x6d\xc0\x9d\x24\x9e\x44\xba\xcd\x21\xc6\x09\xe3\xaa\x04\xcf\x57\x4c\xe6\x23\x28\xe3\xb7\x86\x63\xaa\x78\x4c\xaa\x57\xd4\x9c\x19\x1a\x58\xf7\x1d\xf3\x4c\x9f\xcf\xf5\x53\x97\x9f\x77\x28\x08\x0a\x77\xf5\x26\xe1\x6a\x86\x06\xf5\x17\x80\x41\x05\x8a\x1a\x6d\x99\xbf\x62\x3e\x73\x0a\xd7\x47\xe9\xa7\xf3\x7e\x6e\x4b\x3a\x37\xc6\xad\xb3\x0f\x1a\xe1\x62\xf0\xd4\x63\xd6\x5b\x77\x61\x0b\x4a\xb6\xa7\xcc\x26\x24\xfb\x5b\x01\x8f\x90\xe2\x95\xc4\xbc\x5d\xad\xbb\x20\x52\x76\x05\xfc\xa8\x70\x9d\x3e\x33\x5f\x39\x43\xaa\xd3\x3e\x1c\x29\x52\x73\x98\xf6\x42\x8b\xec\xe8\xd6\xcb\x22\x46\x5a\xc3\x0a\x75\xe4\x88\x7d\xdb\x20\xfb\x85\x30\x68\x81\x61\x29\x17\xf5\x68\x56\x4c\x09\xaf\x25\xba\x01\x6a\x78\xcc\x90\x6d\x59\x57\xb9\x77\x15\x25\xf4\xeb\x94\x4d\x14\xb3\xd1\x8b\x11\x9b\xfe\x16\x57\x56\x36\xfd\x2d\xc5\xe4\x48\x78\x87\x92\xc9\x31\xed\x1f\xaa\x3c\xab\x62\x13\x10\xff\xeb\x37\x1c\xa6\x46\xda\xfc\xcf\xe6\xac\xcd\x31\x47\xe6\xbd\x04\xfc\xf1\x3e\x25\xa6\x98\x56\x9b\x63\x03\x74\x4c\xe2\x3d\x74\x8b\x5e\xac\xf6\xe1\x5d\xff\xc2\x36\x01\xc4\xde\xdb\x1f\x9a\x21\xda\x14\x74\xa2\xda\xcf\x99\x4e\xa7\xca\xb6\x46\x31\xba\x0c\x39\x9a\xab\x4d\xd9\xcb\xaf\x77\x82\x83\xb5\x0a\x59\x7d\x4b\xcb\x0d\x6c\xef\x9e\x25\xa7\x6a\x07\x00\x25\x30\x17\x5e\x32\xec\x94\x8d\xfd\xd3\x8c\xeb\x61\x96\xf8\x1a\x0f\x7a\x62\x85\x13\x2a\xda\x02\xd1\x4d\x92\x98\x41\x91\x79\x46\x5e\x5b\x00\x55\xce\x0a\xa0\x9f\x59\x14\xc6\x1c\x05\x1c\x3d\x53\x65\x06\x8f\x2d\x24\x00\x61\x69\x5c\xa6\xea\xa3\xce\x6c\x65\x6c\xe6\xc7\xc3\x82\x2a\x69\xd8\x5e\x39\x76\x72\xfa\xc3\x39\x1c\xdb\x14\x04\xaf\xc8\xd5\x01\x46\x9d\xca\xdb\xb7\xba\x48\xfd\x4b\x45\x5c\x4d\xd5\x7f\x99\xe1\x41\xb1\x28\xa7\xb4\xa6\x17\xb8\x89\xad\xbc\x1f\x7b\xfd\x05\x1b\x7d\xfd\x2f\x6f\xbe\xbc\xc1\x0a\xf5\x22\x03\x41\x88\x51\xf9\x08\x71\x74\x6d\x45\x92\x40\x6a\xd6\xbe\x81\x2b\x2c\xf7\x8f\xe8\x14\x1f\xa7\x5b\xce\x4c\x95\x9d\x8c\x3e\x5b\xbd\x6b\x05\xfb\x68\xec\x98\x45\x3c\x8f\x56\x27\xd6\x9b\x23\x43\x66\xcf\x3f\x9a\x3e\x64\x86\x37\xbe\x56\x33\x63\x99\xb9\x81\xa5\x6b\x27\xb8\x56\x5a\x2f\xe6\x15\x00\x69\x72\x5f\x5a\x95\xa1\xac\x21\x2e\x4e\xaf\x75\xe6\x3d\x3d\xf7\x75\x4b\xf7\xee\x43\xa8\x14\x36\x56\x7c\x2d\x62\x36\x45\x76\xe4\xe9\x6f\xed\xf4\x4f\xd5\x66\x7e\x9a\x6c\x17\x39\x11\xb6\x98\x61\x39\x05\x4a\xe4\x1d\x27\xdd\x2c\xae\x5f\x95\x76\x0c\x77\xeb\x65\xab\xd9\xdf\x71\xa3\xe3\x9e\xd4\xdf\x69\xc1\xb0\x8f\x1b\x9f\xbb\x32\x6a\xa6\xcc\x78\xc7\xb3\xc7\x11\x9b\xa7\x5c\x01\x47\x68\x1c\x3a\x56\x7e\x7f\xa2\xa2\x39\xb0\xa1\x50\x12\x87\x2b\x9e\x6c\x01\x4e\x3d\x9a\x2a\xa4\x8e\x01\xf6\xa8\x6d\x94\xc8\x08\xd5\x15\x2b\xbe\x90\x78\x12\x2a\xbf\xa0\x5a\x69\x8b\xdb\x3e\x34\xdb\xea\x6a\xaf\x0f\x92\x89\x9c\x94\x3d\x1e\xee\x8b\xca\x7d\xd0\x31\x4a\x05\xe0\x99\xe7\xdb\x00\xe7\xe9\x96\xf8\x88\x48\xd6\x81\x5d\x87\xfd\xb5\x98\xeb\xc4\xd2\x13\x4d\xce\x99\x4e\x81\xf3\x31\xd7\xf4\x27\x19\xb7\x9d\x63\x52\xc5\xe2\xdb\x41\x35\xc2\xdd\x47\x92\x75\xf1\xcc\x63\x02\x6a\xc1\xea\xcb\xc2\x3e\x4a\x85\x39\x2e\x72\x7b\x8b\xab\x7d\x2b\xab\x82\xce\xc6\x49\xbe\x02\x24\x18\x62\x90\xfd\xa0\xae\xf9\x96\x45\x2b\xae\x96\xc1\x35\x1a\x80\x39\x62\xa3\x53\x64\xf3\x7f\x02\x32\x1e\x9d\xda\x1a\x2c\xaa\x2c\x22\x20\xb4\x8b\x01\x23\xfe\x50\xdb\xf2\x21\xbe\x5c\xa6\x62\x09\x65\xb1\x25\x11\x68\xb4\xa0\x8e\x96\x11\x9f\xd3\x55\x5a\x76\x9c\xfa\xec\xb6\x9b\x4b\x9e\x6e\x5d\x61\x0e\x49\x61\xb8\xa1\xab\x0d\xeb\x88\x49\x71\x3a\x62\x7f\xf0\x98\x4b\x11\x69\xe5\x2a\x7b\x9a\xdf\x61\x53\x89\xd6\xee\xb0\x45\x0d\x85\xdc\xcd\x7d\x87\xcf\x6a\x82\x1a\x8d\x8b\xa6\xb3\x34\x2a\xe7\x79\x31\xc0\x56\x92\x68\xd2\x99\xf9\xf1\x1d\xfe\xb6\x13\x96\xcc\x37\xc6\xbc\x59\x12\x0d\xf3\x7d\x63\xe1\xcd\xb3\x89\xdf\xab\x65\xac\x9b\x63\x7f\x41\xf7\x13\xbd\x7c\x51\xa7\xd2\x56\x4a\xb7\x3a\x95\x6e\x26\x92\x96\xea\xdf\x8e\x77\x1a\x1a\xce\xb4\xf8\x4c\x42\x5e\x67\xd5\x2b\x57\x83\x05\x70\x32\xb3\x3a\x45\xcf\x1d\xc1\x0c\xae\x08\xb9\x64\x24\x9b\x0e\x84\x12\x93\x02\x48\x67\x7d\xaf\xfb\x71\x1b\x87\x43\xf3\xf0\x3f\xb4\xdc\x8d\xad\x6f\xd2\x34\xe8\xe1\xfe\xc4\x71\x4a\x07\x9e\x53\x5e\x70\x1e\x88\x69\x6d\x80\x53\xa7\x72\x29\x15\xcf\x75\xca\x5e\xdf\x58\x36\xc7\x37\x8e\x81\x18\x46\xf1\x18\x66\xa2\x34\x44\x68\x26\x9a\x6f\x5f\x00\xf1\x15\xf1\x6c\x18\x13\x4e\x93\xf4\xe3\x4e\x08\xbb\xf9\x56\x96\xf3\xf5\x26\x24\x71\x73\x8a\x44\x34\x32\x09\x0e\x02\xb3\x1d\x83\x38\x9f\xcc\x7c\x59\xd2\x54\x51\x74\x1c\xe7\x4d\xa7\x0d\x9a\xc6\xd5\xb7\x04\x4f\x72\xb6\x27\x31\x01\x7a\xf2\x3d\x7e\xdd\x99\x55\xbc\xbd\xb4\x49\x03\x7f\x33\x28\xb9\xda\xf0\xa2\xc8\x29\x95\xc1\xa9\x8d\x97\x3c\x67\x36\xcc\x29\x69\xeb\xaf\xcf\x12\x5d\xc4\x8c\x8c\x06\x65\x28\xd3\x53\x3c\x7d\x80\xe4\xed\xf4\xb4\x8d\xf1\x66\xa0\xc6\x88\xdb\xdf\xf0\xbb\xe6\x15\x0e\x9f\xb5\x58\xb8\xce\xad\x45\x23\x3b\x2c\xfe\x44\xc9\xf9\x8f\x7c\xd3\x5d\x45\xcf\xed\xdd\x19\x6b\x5e\x42\x55\xed\x86\xbd\xdf\x32\x5c\x2e\x22\x0a\x8c\x33\xc3\x82\x65\x56\x43\x06\xd6\x73\x18\x4c\x6e\xe0\xc4\x0b\x51\x99\x3c\x7b\x3c\xf8\x71\xb6\xb8\xb3\xfb\x51\x1b\x9e\x0a\x95\xcf\xe0\x89\xc3\x1e\x06\x0f\xb9\x81\x9f\x97\x1c\x92\x5e\x41\xc1\xff\xb8\xd7\x18\xeb\xb5\xe5\xe5\xff\xc9\xee\x28\xba\x91\x59\x3d\x3a\x73\xfa\xbc\x96\x00\xc7\x08\xf2\x62\x6e\xe2\x5a\xa6\x8b\x5e\x68\x8f\xd1\x0b\x5e\xa8\x64\x3a\x7b\xbd\x90\xef\x3d\xb2\xb3\x9b\x56\x28\xd0\x43\x45\x85\xc6\x94\xd9\xbf\xf9\x35\x87\x85\xba\x3e\x43\xcb\x78\xce\xcc\xfc\x25\xec\x6f\x22\xd5\x1e\x29\x4f\x1a\xd7\x41\xc3\x9d\xfe\xf0\xfe\x3a\x28\xe8\xef\xa2\x02\x47\x48\x41\x0f\x7f\xa1\x0a\x7e\xbc\x59\xce\xb7\xd6\xdd\x6f\x49\x27\x6c\x44\x84\xf3\xb0\xe7\xb1\x19\x5c\xec\x02\xfb\x6e\x83\x5f\xee\xb0\xb0\x1b\xf4\x2d\xdc\x5b\x89\x23\x6b\xcd\x37\x04\x7d\x22\x94\x65\x35\x90\x7f\x0a\x2f\xf1\x1f\x3f\xff\xe7\x69\x9b\x16\x13\x74\x7d\x28\x92\xc4\x75\xfe\x43\x2a\x85\x8a\x21\x31\xc7\x63\x07\xc7\x72\x66\x51\x95\x22\xb5\x25\xf3\x6c\x96\xe1\x51\x0a\xca\x9a\xcf\xc1\x6c\x86\x8b\xe8\x3b\x64\x77\xbd\x91\x75\xdb\xb7\x94\xfb\x69\x3b\xaa\xb3\x59\xbc\x55\x7c\x5d\x57\xaf\x7a\xd1\x3e\x6e\xa5\x48\x62\xe8\x22\x3d\xbd\x31\x43\xf1\x9b\xf0\x7f\x4b\xce\x70\x97\xe9\x38\xc0\x2b\x3e\x64\x07\xd5\xfd\x5e\x27\x1f\xe1\x8d\x91\x8c\x43\xc9\x53\x67\x8a\x3c\xd9\x9c\xdb\x43\x10\x60\x6b\xf1\xbc\x4f\xa9\x9f\x0d\x4f\x18\x30\x7a\xcd\x27\xc9\x77\xba\x53\xb4\xd1\xde\xf5\xe9\xbe\x0d\x89\xdd\x68\x9d\x1c\x1a\x16\xe3\x89\x25\xed\x9d\x01\x0f\xfe\x21\x3e\x27\x2e\x00\x77\xbb\x9c\x9c\xbb\x14\x8d\xe3\x91\xa3\xcb\xb5\x53\xa1\x01\xfc\x00\x75\x01\xb2\xf6\xd0\x89\x0e\xa4\x5d\xb6\x69\xc8\xd2\x0d\x44\x0c\x42\x1b\x98\xde\x77\x7a\xb4\xb5\x38\x5d\x50\x03\xca\x7d\x1f\x81\x6b\xa7\xd2\xc3\x41\x37\x66\x64\xad\xaf\x3c\xca\xdd\x9e\x43\x4e\x2e\x37\x8e\xc1\xb3\xed\x78\xa2\x56\x8e\xb9\x7e\xd3\x51\x3f\x55\xc1\xb1\x8e\x6c\x14\x16\x92\xe9\x46\xad\xe9\x52\x5d\x5a\x86\x07\x5f\xaa\x0f\x21\x5e\xec\x8c\xba\x9e\x87\x9a\x08\x90\x3c\x8c\xf4\x7a\x6e\x2e\xb6\x58\xe2\x47\x91\x26\xf0\x47\xc6\x96\xd7\xc6\x45\x05\xad\x5f\x81\xc4\xba\x95\xb1\x77\x70\xc8\x90\x22\x28\x34\x59\xbb\x7c\xf6\xd0\x09\x3c\x2e\x47\x64\xb3\x9d\x1d\x57\xdf\x00\xb4\xc9\x9f\xf9\x36\x03\x01\x09\x61\xac\xe2\x02\xa3\x2b\xe5\xfe\x8f\xfc\x9d\xdf\x71\x26\x91\x1a\x53\x41\xba\x32\xf4\x2e\x12\xeb\x9e\x45\x62\xa5\x32\x3c\x9f\xc4\xab\xac\x79\x70\x7e\x99\x80\x69\xda\x19\x30\xc5\x8c\xc5\xff\x8c\x18\x69\x47\x24\xe6\xc0\x80\x50\x70\x4c\xa6\x3a\x22\x11\xe5\x9c\x81\xae\x14\x9a\x63\xf3\xec\x11\x5b\x73\xa9\x68\x1b\xe4\xa9\x31\x90\xb1\x98\x17\xcb\x65\x6b\x9c\xe2\xc7\x0f\x78\x96\xf7\xc9\x3f\x7d\x40\xaa\x93\x11\xe5\x18\x21\xa5\x89\x7d\x12\x66\x4a\x17\x32\x11\xdf\x27\x8a\x74\xa4\x90\xd8\xa4\x4f\x48\xcc\xa6\xda\xa1\x04\x80\x58\xaf\x6d\x32\xf4\xd7\x58\xd9\xf7\x89\x95\x35\x26\x03\xaa\x3d\xc4\xb2\xf3\x99\x2c\x3b\xc0\x1d\x3d\xdc\x93\xbd\xc6\xd1\x9c\x41\xaf\x48\x3a\x29\x13\x2a\xce\x40\xc6\xfc\xf8\x74\x36\x70\xfa\x1c\x7e\x29\xdf\x91\xe1\xbd\xd3\x6b\xc1\xe0\x51\x19\xd2\x09\x33\xaa\xb2\x18\x01\x78\xc8\xbc\xa0\x4f\x8b\x52\xd2\x15\x8e\x2b\x4c\xcf\xc6\xde\x69\x7d\xad\xc4\x33\x33\xa7\xc1\x28\x44\x53\x04\xd3\x03\x3c\xf3\x6f\x48\xfb\xd4\x83\x2f\x5d\x49\x69\x2a\x96\x3c\x8d\x01\xf2\x4b\x5b\x32\xe1\xd1\xa3\xf9\x6f\xe8\x1f\x3d\x91\x10\x1f\x96\xf2\x12\x51\x48\xbe\x35\xa9\x22\xd4\xa1\x24\x70\x89\xef\x1f\xfe\x3c\x63\x3c\x4a\x75\x86\x31\xb3\xb8\x48\x7d\x51\xb8\x02\x07\xf1\x49\xc6\x05\x4f\xf0\x89\xad\xe1\x2e\x9e\x1d\x44\xe1\x39\x0e\x98\xd4\xc5\xb7\x4d\xc2\x55\x79\x4f\xe2\xeb\x02\x87\x82\xec\x58\xf9\x8e\x0a\xe8\xbb\x52\x9a\x85\x7a\x86\x7e\x5b\xa1\xf7\x99\x0a\x1e\x6f\x43\xc2\x14\xa9\x48\xa4\x8c\xc7\x6b\xa9\xcc\xd4\x5b\xa1\x0c\x67\x5f\xa1\xe9\x88\x27\x88\x7b\x02\x3e\xe9\x24\xa9\x6c\xfd\x8c\x29\x61\x5c\x16\x9e\xca\x64\x0b\x5e\xea\x26\x15\x27\xc1\x73\x82\xfd\x4d\xc0\x6b\x99\x4d\x95\x2d\xee\x2d\x32\xb1\x28\x12\xf4\x65\xe1\xb6\xe7\x5e\x80\xf6\xe1\xc3\x64\x64\x8e\xb1\x9c\x58\x5c\x83\x07\xa3\x36\xc2\x31\x40\xac\xf5\x7b\x56\xaf\x20\xaf\x27\xf2\x49\x01\x61\xb7\xd2\xcf\x16\x69\xff\xcc\x3d\x90\xaa\xed\x2c\x39\x5a\x60\xaf\xdb\xab\xb1\xf7\x09\xbb\x2b\x71\xd0\xcb\x82\xa2\xf4\x99\x88\xdd\x4e\x94\x0a\x5e\x87\x64\x85\x08\x74\x21\x62\x56\x64\x08\xd8\x37\x73\x08\xd6\xda\x5e\x9b\xb1\x84\xc1\x4a\x52\x31\xf7\x76\x32\xd3\x8a\x4d\x8b\xdf\xfd\xee\x8f\x82\xfd\x8e\x44\xeb\xc0\xca\x60\x48\x16\xa8\x7c\xb0\x75\x30\x50\xee\x01\x02\x79\x7e\x6a\x33\xc2\x9a\x50\x47\xb6\x7a\x0e\x70\x3b\x3c\x5a\xb1\xac\x98\x23\x28\x85\x53\x54\x8f\x2b\xc7\x94\x77\xa9\x01\x5f\x82\xe7\x98\xed\xfd\x80\x60\xc1\x0d\x9d\x2f\x36\x10\x10\x40\xe3\x60\xa0\x43\x65\x1a\x18\x14\x7c\x49\x30\xe0\x37\x20\x4f\x33\x62\x3f\xc9\x27\x31\x62\x77\x1b\x9e\x3e\x8e\xd8\x39\xc6\x17\xff\xac\xe7\x3b\xef\xff\xc7\x88\x81\x39\x37\x75\x70\x34\xbb\x31\x9a\x34\x0a\xf8\x21\x83\x98\x76\x3d\x5a\x63\x21\x05\x20\xf8\x81\xd2\xa9\xbb\x44\x38\x5a\x49\x44\x8f\x75\x8b\x69\xc7\xb1\xb5\xde\x69\xaa\x56\xda\x9f\xa7\x54\x2a\xd4\x04\xad\x30\xe7\x18\xac\x44\xf3\xe2\x27\xe0\x99\xe8\x94\x6d\x12\x9e\x9b\xb5\x92\x91\x1a\x17\xae\x0a\x04\x9c\xe1\x89\x5c\x29\x00\xeb\xeb\x78\xd9\x07\xcf\x36\x5a\x27\x8d\xfe\xd7\x51\x07\xb0\x16\xed\xec\x3b\x78\x13\x04\xce\x67\xa1\x57\x62\x47\xd1\x47\xce\x7c\x9c\x2d\x10\xa0\x86\xd5\x14\x17\x40\x2c\xe0\x87\x23\xd4\x44\x31\x66\x05\x61\x7e\xe8\x88\x58\x09\x2d\x6e\x3d\x44\xe3\x44\x51\x08\x31\x84\x97\xd5\x62\x7a\x59\xfd\x39\x2d\x6e\x21\xb4\x3b\x93\x4d\xd5\xdf\x43\x37\xd7\xfd\xaa\x31\x50\x8f\x3d\xb7\x06\xdc\x42\xad\x77\x71\xdf\xd9\xca\xb2\x59\x94\xf0\xac\x27\x74\xab\xd1\xee\x4c\xa8\xa1\x33\x68\xa7\xbf\xcd\xfc\x09\x62\xaa\xeb\x9e\x07\xe6\x54\x8d\x1d\xf7\x9b\x77\xb5\x9c\x7b\x88\x66\x16\x1d\xe3\xda\xd4\x20\x7e\xdb\x13\x05\x8e\x58\x56\x44\x2b\x40\xa8\x97\xed\x54\x68\xb7\xea\x3b\x76\x34\x55\xc6\x59\x41\xe9\x04\x0e\x19\xd0\x67\x60\xd9\x96\x7f\x13\xce\x1b\x22\x18\x64\xe8\x00\xcd\xb9\x99\x1a\xd2\x4c\xaf\x3a\x8b\xb6\x58\x80\xa7\x8f\x22\x0e\x42\x7d\xc5\x26\xe6\xb9\xf1\x9e\xdd\x21\x07\xeb\xd7\x91\x66\x5a\xef\x33\x0b\x5f\x2c\x74\x96\x2b\x96\x36\x91\x0b\x11\x6d\xa3\x1a\x19\x46\x09\x77\x70\xbc\x98\xf2\x7e\x21\xd5\x2e\xd2\x84\xe6\x9b\xf2\xe7\x5a\x91\x2f\x6b\x4b\xd6\xfe\xcf\x84\x68\xb5\xd4\xed\xff\xb3\x47\xc5\x76\xe4\x7f\x7f\x45\x5b\xfd\x53\x46\x90\xfa\x95\xec\x97\xec\x97\x05\x34\xc1\x8d\x95\xbc\xe6\x46\x18\xd5\x8f\x55\x95\x29\xe3\x70\xdf\x20\xd3\x62\x4b\x22\x7e\xc7\x56\xa0\xda\xd7\xd8\xd5\xe5\x0e\x40\x61\xd3\x4f\xed\x78\x9d\x25\x3a\x2b\xd2\xee\xcd\x7f\x5b\xee\xb5\x7d\x7a\x03\x6d\x1f\x2c\xb6\xf5\x5c\x40\xc9\x75\x1f\xbc\x44\x9b\xa3\x60\xee\x4b\xd5\xdf\x13\xc0\xe8\x59\xb0\x08\xb1\xe1\x2d\x42\x38\xb5\xdf\x05\x31\x10\x38\x79\x97\x22\xf4\x02\x2a\x87\x63\x69\x71\x95\xf2\x7d\x3f\x14\x88\xb9\xf1\x0e\x56\xa1\x8a\x29\x85\xcb\x7a\x65\x48\x8f\x91\x7d\xb8\xe1\xf9\x0a\x03\x39\x20\x24\x8f\xd9\xf2\xdc\x38\x50\x28\x53\x86\x29\x89\x79\xa2\xe7\xa0\x6d\x05\xd2\xd3\x6d\xeb\x9c\x16\x67\xaf\xa1\xab\x4f\x58\x9f\xb5\x6d\xf6\x03\x94\xb9\xa5\x22\x03\xbe\x83\x7a\xce\xaf\x2f\x24\x74\x58\xb0\xa9\xde\x5d\x63\xb6\xce\x6b\xc1\xa6\x3a\x5f\xb4\xb1\xea\x80\x0f\xbc\xd8\xa3\x28\xe0\x22\x2c\x14\x33\xc7\x1b\x51\x67\x52\x52\x1d\xd9\xf3\x2a\xef\x6b\xc5\x03\xa7\x6a\x8c\x9f\x94\xa4\xb6\x9d\x2e\x82\x83\xe0\x91\x4e\x94\xdb\x7f\x58\x39\xc6\xc6\x21\xe8\x8b\xfc\xfa\x91\xbf\x71\x41\x78\x64\x04\x85\x5a\x2a\x97\xa9\xf1\xa7\x33\x70\x17\xb2\x62\x7e\xe2\x79\x01\x74\x0a\x0e\x06\xd0\x46\x6c\x78\x0a\x22\x7c\x2b\x99\xc4\x27\x0d\x07\x09\xc6\xa1\x3d\xbf\xb9\xa5\x93\xe2\x09\x99\x2f\xb8\x17\x62\x59\xaa\x7b\x77\xd7\x8e\x71\xef\x21\x8a\x64\x4b\x22\xd1\x5c\x77\xd9\x8b\xd2\x65\xe9\x97\x06\x28\xf5\x40\x00\xb5\xe8\xe2\xfc\xf3\xdb\x89\xd2\x98\xf5\xb1\x13\xf7\xe5\xab\x95\xdd\x35\xe6\x72\x48\x96\xa3\x1d\xb6\xf8\x7d\x91\x95\x30\x81\xd9\x86\x3f\x2b\xaa\xc6\xef\xe6\xf7\xdb\xcb\x3e\x34\x8b\x8b\x1a\xfb\x50\x83\x66\x79\x4b\xa1\x88\xd9\x26\x97\x4e\x44\x66\x14\x48\xc7\xf1\x24\x09\xa9\x92\x7d\x28\x68\xaa\x7c\xc0\xc0\x1c\xff\x49\x62\xfe\x37\xaa\x1a\x6e\x62\x5f\x88\x51\xdf\x7f\x64\x4b\xc7\x89\x76\x89\xd2\x48\x27\x78\x31\xf7\xd7\xe7\x5d\xbb\xf9\x58\xfe\xe4\x0f\x56\x33\xb7\x23\x61\x8b\x8f\x9d\x3d\x8a\xed\xe0\xbe\x36\xa7\x4c\xbc\xb6\x18\x48\x71\xbb\xe2\xe5\x88\xa7\xa9\x85\xc7\xd3\x53\x19\x4f\x73\xb9\xe0\x51\x29\x82\xde\x8b\x4c\xaf\x74\x42\x62\x8b\x19\xc0\x03\x2c\x74\xd0\xb3\xbb\x70\xe6\x54\xcc\xda\xe7\xff\xd8\x77\x0a\xe1\x8d\xf4\x0b\xc4\x47\xba\x03\x87\xb8\x7d\xeb\x67\x64\x29\xb2\xcc\x6b\x25\x04\x3d\x07\x9b\xb3\x12\x27\x52\xe3\x90\x82\x16\x08\x88\x58\x1f\x32\x86\x7b\x96\x6a\x0d\xa3\xd1\xc5\x6e\x0e\x24\x34\xaf\xa9\x0d\x91\x62\x37\x5c\x39\x62\x22\x96\xc9\xab\x4c\x08\x30\x84\x58\x30\xf1\x64\x59\xa0\x2b\x24\xfc\x56\x41\x7e\x2d\x62\x59\x54\x35\x2c\x4a\xc5\x3d\xbf\xde\x85\xff\xf7\xdd\x85\x01\xfe\xf1\x92\x17\xe1\xe6\xb2\xb1\x5f\x8f\xc2\x1f\xe0\x28\x2c\xa7\xfa\x44\xfa\x84\xe5\x01\x43\x86\x96\xba\x7a\xeb\x7f\x7e\xd8\xe0\x0a\x16\xf4\x24\xeb\x3f\xce\xb4\x56\x07\xee\xe2\xde\xd6\xaf\x3b\xfb\xe8\x9d\x05\xef\x41\x07\xb5\x49\xb5\x7d\x14\x86\xa0\xf2\x70\x0e\xcd\xc5\xa5\x77\xf8\xb2\xbd\xfc\xf3\x87\x4a\xc2\xf4\x71\x06\x8c\x89\x72\x69\x99\x2b\x6b\x9a\x94\xc0\xf4\x64\x87\x89\x0a\xa8\xf7\x78\xfe\x2a\x73\xa3\x5e\x36\x45\x16\x0f\x78\x29\xb3\xfc\x53\x45\xe7\x64\x3f\xa1\x94\x17\x43\x12\xd8\xae\x62\x37\x83\x5f\x74\x26\xc0\x6f\xcb\x29\x6a\xe3\x17\xe0\x9a\x03\x5e\x1e\xcb\x6c\x6f\xfa\x3d\xe4\xe0\xf8\xe2\xc6\xeb\x0b\xfa\xbc\xcf\x29\xdf\x6c\x44\x6a\xf3\xae\xb5\xd4\x38\xd0\xc4\xc3\x53\x40\xe7\x61\x25\x50\x6c\xaa\x72\xb6\x99\x3d\x5d\x69\x1a\xbe\x06\x43\x77\xda\x3c\x73\x57\x45\x92\xb4\xce\xdc\x6e\xf6\xe9\xab\x87\xcb\xcb\xd9\xa7\xf1\xe5\xc3\x45\x27\x9b\x73\xf0\xb5\xd6\x31\x71\x3d\xa1\x31\xf1\x7a\x11\xe6\xb1\xc2\x0a\x5e\x69\xff\xd6\x78\x71\x28\x92\xa4\xcc\xf4\x3d\x55\x5f\xa8\x1d\x00\xb1\xa1\x8a\x89\x19\x37\xd6\x39\x70\xe5\xe7\xc3\xd7\xbe\x98\xc6\xbf\xe0\x6f\x4f\x98\x7f\x89\x77\xa0\x47\x41\x3c\xf7\xcd\xe3\x4a\x08\xd9\x03\xb6\x03\x42\xa6\xda\xb6\xc3\xb1\xb5\x0c\xf6\xdb\x1e\x0f\x0a\x48\xe3\x44\x6c\x25\x08\x8e\xb2\x3b\x70\xec\xbe\x94\xa3\x99\xce\x96\xc7\xe8\x9a\x43\xbb\x23\x64\xa0\x07\x5d\x2d\x4f\xd2\x3e\x55\x78\xaf\x34\x7d\xca\x75\x7b\x9f\xd8\x84\xd0\x08\x09\x57\xcb\x82\x2f\x45\x36\x62\xf6\xe1\x53\xb5\x96\xcb\x15\xd0\xf3\x91\x00\xba\xbb\x89\xf1\x5c\x3e\x55\xa5\x91\x2a\xe8\x3a\xa9\xa6\x8a\xde\x49\x2d\x7d\xf3\x88\x31\xfb\xf3\x9d\x7b\x1d\x82\xee\x61\x43\x44\xa2\xaf\xa6\x0a\x27\x17\x59\x80\x6d\x98\x07\x1c\x57\x9e\x57\x97\x2e\x07\x91\x25\x14\x9a\x33\x36\x7d\x09\x01\xa7\xa9\x72\x65\x31\x08\x02\x0c\x45\xdc\x11\x1d\x8c\x5d\xda\x6d\x4f\xec\x64\xd8\x3d\x41\x7d\x6b\x5e\xf5\x07\x9f\x01\x66\xc3\xcd\x06\x28\x66\xd5\xcd\x58\xcf\x3b\x02\x0f\x0c\x47\x5b\xad\x24\xd4\x42\x35\xf7\xc6\xbe\x17\x7e\xa7\x35\x85\xaf\x8b\x79\x32\xa0\x4b\xf8\xfd\xce\x4e\xa1\x49\xee\xee\x54\x8f\x18\xef\x6d\x65\x6b\x99\x65\xda\xf5\xd8\xb9\xd6\x2d\xf3\x72\xc4\x68\x69\xa9\x53\xf4\x83\x5d\x83\x51\x44\xf9\x3e\xeb\xa5\x47\x01\x43\x75\x88\xac\xf5\xe9\xea\x50\x22\xb3\xbd\xba\xe3\xfd\xa7\xde\x3d\x72\x1e\x02\x1d\x76\x83\x2c\x2c\x9d\x73\x25\x03\xdb\x62\x26\x29\x46\x67\xa5\xa7\x24\x9a\x17\xb3\x79\x50\x17\xca\xac\xff\x91\x5b\x44\x23\x3f\x73\x23\xe8\x64\x54\xa4\x99\x31\x97\x64\xef\xc8\x6a\xeb\x94\xf1\xa9\xb2\x94\xad\xd6\x1c\x8f\x2d\x08\x21\x75\x7f\xc5\xa2\x90\x0d\x12\x1e\x82\xc7\x9a\x33\xad\x84\xb5\x86\x53\x65\xf5\xca\x46\x8c\xcf\x33\x2b\x03\xc6\xd5\xd6\x69\x73\x49\x27\xbc\xc0\x15\x03\x74\xc7\x6e\x9b\x57\x71\x03\x4a\xe7\xfc\x6f\xcc\xff\xfd\xe3\x37\xff\x3f\x00\x00\xff\xff\x30\x81\x52\xbf\x66\x53\x04\x00") func adminSwaggerJsonBytes() ([]byte, error) { return bindataRead( @@ -93,7 +93,7 @@ func adminSwaggerJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "admin.swagger.json", size: 276583, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} + info := bindataFileInfo{name: "admin.swagger.json", size: 283494, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/gen/pb-java/flyteidl/admin/EntityDescriptionOuterClass.java b/gen/pb-java/flyteidl/admin/EntityDescriptionOuterClass.java new file mode 100644 index 000000000..787987a98 --- /dev/null +++ b/gen/pb-java/flyteidl/admin/EntityDescriptionOuterClass.java @@ -0,0 +1,4321 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/admin/entity_description.proto + +package flyteidl.admin; + +public final class EntityDescriptionOuterClass { + private EntityDescriptionOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface EntityDescriptionOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.EntityDescription) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 1; + */ + java.lang.String getShortDescription(); + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 1; + */ + com.google.protobuf.ByteString + getShortDescriptionBytes(); + + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + boolean hasLongDescription(); + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + flyteidl.admin.EntityDescriptionOuterClass.LongDescription getLongDescription(); + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + flyteidl.admin.EntityDescriptionOuterClass.LongDescriptionOrBuilder getLongDescriptionOrBuilder(); + + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 3; + */ + java.util.List + getTagsList(); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 3; + */ + int getTagsCount(); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 3; + */ + java.lang.String getTags(int index); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 3; + */ + com.google.protobuf.ByteString + getTagsBytes(int index); + + /** + *
+     * User-defined free-form key-value pair attributes. These are arbitrary
+     * and can be used for searching, filtering and discovering entities.
+     * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + boolean hasLabels(); + /** + *
+     * User-defined free-form key-value pair attributes. These are arbitrary
+     * and can be used for searching, filtering and discovering entities.
+     * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + flyteidl.admin.Common.Labels getLabels(); + /** + *
+     * User-defined free-form key-value pair attributes. These are arbitrary
+     * and can be used for searching, filtering and discovering entities.
+     * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + flyteidl.admin.Common.LabelsOrBuilder getLabelsOrBuilder(); + + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + boolean hasSource(); + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + flyteidl.admin.EntityDescriptionOuterClass.SourceCode getSource(); + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + flyteidl.admin.EntityDescriptionOuterClass.SourceCodeOrBuilder getSourceOrBuilder(); + } + /** + *
+   * EntityDescription contains detailed description for the task/workflow/launch plan.
+   * Documentation could provide insight into the algorithms, business use case, etc.
+   * 
+ * + * Protobuf type {@code flyteidl.admin.EntityDescription} + */ + public static final class EntityDescription extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.EntityDescription) + EntityDescriptionOrBuilder { + private static final long serialVersionUID = 0L; + // Use EntityDescription.newBuilder() to construct. + private EntityDescription(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private EntityDescription() { + shortDescription_ = ""; + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private EntityDescription( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + shortDescription_ = s; + break; + } + case 18: { + flyteidl.admin.EntityDescriptionOuterClass.LongDescription.Builder subBuilder = null; + if (longDescription_ != null) { + subBuilder = longDescription_.toBuilder(); + } + longDescription_ = input.readMessage(flyteidl.admin.EntityDescriptionOuterClass.LongDescription.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(longDescription_); + longDescription_ = subBuilder.buildPartial(); + } + + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + if (!((mutable_bitField0_ & 0x00000004) != 0)) { + tags_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000004; + } + tags_.add(s); + break; + } + case 34: { + flyteidl.admin.Common.Labels.Builder subBuilder = null; + if (labels_ != null) { + subBuilder = labels_.toBuilder(); + } + labels_ = input.readMessage(flyteidl.admin.Common.Labels.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(labels_); + labels_ = subBuilder.buildPartial(); + } + + break; + } + case 42: { + flyteidl.admin.EntityDescriptionOuterClass.SourceCode.Builder subBuilder = null; + if (source_ != null) { + subBuilder = source_.toBuilder(); + } + source_ = input.readMessage(flyteidl.admin.EntityDescriptionOuterClass.SourceCode.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(source_); + source_ = subBuilder.buildPartial(); + } + + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000004) != 0)) { + tags_ = tags_.getUnmodifiableView(); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_EntityDescription_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_EntityDescription_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.class, flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder.class); + } + + private int bitField0_; + public static final int SHORT_DESCRIPTION_FIELD_NUMBER = 1; + private volatile java.lang.Object shortDescription_; + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 1; + */ + public java.lang.String getShortDescription() { + java.lang.Object ref = shortDescription_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + shortDescription_ = s; + return s; + } + } + /** + *
+     * One-liner overview of the entity.
+     * 
+ * + * string short_description = 1; + */ + public com.google.protobuf.ByteString + getShortDescriptionBytes() { + java.lang.Object ref = shortDescription_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + shortDescription_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LONG_DESCRIPTION_FIELD_NUMBER = 2; + private flyteidl.admin.EntityDescriptionOuterClass.LongDescription longDescription_; + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + public boolean hasLongDescription() { + return longDescription_ != null; + } + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + public flyteidl.admin.EntityDescriptionOuterClass.LongDescription getLongDescription() { + return longDescription_ == null ? flyteidl.admin.EntityDescriptionOuterClass.LongDescription.getDefaultInstance() : longDescription_; + } + /** + *
+     * Full user description with formatting preserved.
+     * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + public flyteidl.admin.EntityDescriptionOuterClass.LongDescriptionOrBuilder getLongDescriptionOrBuilder() { + return getLongDescription(); + } + + public static final int TAGS_FIELD_NUMBER = 3; + private com.google.protobuf.LazyStringList tags_; + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 3; + */ + public com.google.protobuf.ProtocolStringList + getTagsList() { + return tags_; + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 3; + */ + public int getTagsCount() { + return tags_.size(); + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 3; + */ + public java.lang.String getTags(int index) { + return tags_.get(index); + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 3; + */ + public com.google.protobuf.ByteString + getTagsBytes(int index) { + return tags_.getByteString(index); + } + + public static final int LABELS_FIELD_NUMBER = 4; + private flyteidl.admin.Common.Labels labels_; + /** + *
+     * User-defined free-form key-value pair attributes. These are arbitrary
+     * and can be used for searching, filtering and discovering entities.
+     * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + public boolean hasLabels() { + return labels_ != null; + } + /** + *
+     * User-defined free-form key-value pair attributes. These are arbitrary
+     * and can be used for searching, filtering and discovering entities.
+     * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + public flyteidl.admin.Common.Labels getLabels() { + return labels_ == null ? flyteidl.admin.Common.Labels.getDefaultInstance() : labels_; + } + /** + *
+     * User-defined free-form key-value pair attributes. These are arbitrary
+     * and can be used for searching, filtering and discovering entities.
+     * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + public flyteidl.admin.Common.LabelsOrBuilder getLabelsOrBuilder() { + return getLabels(); + } + + public static final int SOURCE_FIELD_NUMBER = 5; + private flyteidl.admin.EntityDescriptionOuterClass.SourceCode source_; + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + public boolean hasSource() { + return source_ != null; + } + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + public flyteidl.admin.EntityDescriptionOuterClass.SourceCode getSource() { + return source_ == null ? flyteidl.admin.EntityDescriptionOuterClass.SourceCode.getDefaultInstance() : source_; + } + /** + *
+     * Optional link to source code used to define this entity.
+     * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + public flyteidl.admin.EntityDescriptionOuterClass.SourceCodeOrBuilder getSourceOrBuilder() { + return getSource(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getShortDescriptionBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, shortDescription_); + } + if (longDescription_ != null) { + output.writeMessage(2, getLongDescription()); + } + for (int i = 0; i < tags_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, tags_.getRaw(i)); + } + if (labels_ != null) { + output.writeMessage(4, getLabels()); + } + if (source_ != null) { + output.writeMessage(5, getSource()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getShortDescriptionBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, shortDescription_); + } + if (longDescription_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getLongDescription()); + } + { + int dataSize = 0; + for (int i = 0; i < tags_.size(); i++) { + dataSize += computeStringSizeNoTag(tags_.getRaw(i)); + } + size += dataSize; + size += 1 * getTagsList().size(); + } + if (labels_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, getLabels()); + } + if (source_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, getSource()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.admin.EntityDescriptionOuterClass.EntityDescription)) { + return super.equals(obj); + } + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription other = (flyteidl.admin.EntityDescriptionOuterClass.EntityDescription) obj; + + if (!getShortDescription() + .equals(other.getShortDescription())) return false; + if (hasLongDescription() != other.hasLongDescription()) return false; + if (hasLongDescription()) { + if (!getLongDescription() + .equals(other.getLongDescription())) return false; + } + if (!getTagsList() + .equals(other.getTagsList())) return false; + if (hasLabels() != other.hasLabels()) return false; + if (hasLabels()) { + if (!getLabels() + .equals(other.getLabels())) return false; + } + if (hasSource() != other.hasSource()) return false; + if (hasSource()) { + if (!getSource() + .equals(other.getSource())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SHORT_DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getShortDescription().hashCode(); + if (hasLongDescription()) { + hash = (37 * hash) + LONG_DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getLongDescription().hashCode(); + } + if (getTagsCount() > 0) { + hash = (37 * hash) + TAGS_FIELD_NUMBER; + hash = (53 * hash) + getTagsList().hashCode(); + } + if (hasLabels()) { + hash = (37 * hash) + LABELS_FIELD_NUMBER; + hash = (53 * hash) + getLabels().hashCode(); + } + if (hasSource()) { + hash = (37 * hash) + SOURCE_FIELD_NUMBER; + hash = (53 * hash) + getSource().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.admin.EntityDescriptionOuterClass.EntityDescription 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; + } + /** + *
+     * EntityDescription contains detailed description for the task/workflow/launch plan.
+     * Documentation could provide insight into the algorithms, business use case, etc.
+     * 
+ * + * Protobuf type {@code flyteidl.admin.EntityDescription} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.EntityDescription) + flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_EntityDescription_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_EntityDescription_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.class, flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder.class); + } + + // Construct using flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.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(); + shortDescription_ = ""; + + if (longDescriptionBuilder_ == null) { + longDescription_ = null; + } else { + longDescription_ = null; + longDescriptionBuilder_ = null; + } + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); + if (labelsBuilder_ == null) { + labels_ = null; + } else { + labels_ = null; + labelsBuilder_ = null; + } + if (sourceBuilder_ == null) { + source_ = null; + } else { + source_ = null; + sourceBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_EntityDescription_descriptor; + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getDefaultInstanceForType() { + return flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription build() { + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription buildPartial() { + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription result = new flyteidl.admin.EntityDescriptionOuterClass.EntityDescription(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + result.shortDescription_ = shortDescription_; + if (longDescriptionBuilder_ == null) { + result.longDescription_ = longDescription_; + } else { + result.longDescription_ = longDescriptionBuilder_.build(); + } + if (((bitField0_ & 0x00000004) != 0)) { + tags_ = tags_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.tags_ = tags_; + if (labelsBuilder_ == null) { + result.labels_ = labels_; + } else { + result.labels_ = labelsBuilder_.build(); + } + if (sourceBuilder_ == null) { + result.source_ = source_; + } else { + result.source_ = sourceBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.admin.EntityDescriptionOuterClass.EntityDescription) { + return mergeFrom((flyteidl.admin.EntityDescriptionOuterClass.EntityDescription)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.EntityDescriptionOuterClass.EntityDescription other) { + if (other == flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.getDefaultInstance()) return this; + if (!other.getShortDescription().isEmpty()) { + shortDescription_ = other.shortDescription_; + onChanged(); + } + if (other.hasLongDescription()) { + mergeLongDescription(other.getLongDescription()); + } + if (!other.tags_.isEmpty()) { + if (tags_.isEmpty()) { + tags_ = other.tags_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureTagsIsMutable(); + tags_.addAll(other.tags_); + } + onChanged(); + } + if (other.hasLabels()) { + mergeLabels(other.getLabels()); + } + if (other.hasSource()) { + mergeSource(other.getSource()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.EntityDescriptionOuterClass.EntityDescription) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object shortDescription_ = ""; + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 1; + */ + public java.lang.String getShortDescription() { + java.lang.Object ref = shortDescription_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + shortDescription_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 1; + */ + public com.google.protobuf.ByteString + getShortDescriptionBytes() { + java.lang.Object ref = shortDescription_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + shortDescription_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 1; + */ + public Builder setShortDescription( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + shortDescription_ = value; + onChanged(); + return this; + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 1; + */ + public Builder clearShortDescription() { + + shortDescription_ = getDefaultInstance().getShortDescription(); + onChanged(); + return this; + } + /** + *
+       * One-liner overview of the entity.
+       * 
+ * + * string short_description = 1; + */ + public Builder setShortDescriptionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + shortDescription_ = value; + onChanged(); + return this; + } + + private flyteidl.admin.EntityDescriptionOuterClass.LongDescription longDescription_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.LongDescription, flyteidl.admin.EntityDescriptionOuterClass.LongDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.LongDescriptionOrBuilder> longDescriptionBuilder_; + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + public boolean hasLongDescription() { + return longDescriptionBuilder_ != null || longDescription_ != null; + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + public flyteidl.admin.EntityDescriptionOuterClass.LongDescription getLongDescription() { + if (longDescriptionBuilder_ == null) { + return longDescription_ == null ? flyteidl.admin.EntityDescriptionOuterClass.LongDescription.getDefaultInstance() : longDescription_; + } else { + return longDescriptionBuilder_.getMessage(); + } + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + public Builder setLongDescription(flyteidl.admin.EntityDescriptionOuterClass.LongDescription value) { + if (longDescriptionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + longDescription_ = value; + onChanged(); + } else { + longDescriptionBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + public Builder setLongDescription( + flyteidl.admin.EntityDescriptionOuterClass.LongDescription.Builder builderForValue) { + if (longDescriptionBuilder_ == null) { + longDescription_ = builderForValue.build(); + onChanged(); + } else { + longDescriptionBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + public Builder mergeLongDescription(flyteidl.admin.EntityDescriptionOuterClass.LongDescription value) { + if (longDescriptionBuilder_ == null) { + if (longDescription_ != null) { + longDescription_ = + flyteidl.admin.EntityDescriptionOuterClass.LongDescription.newBuilder(longDescription_).mergeFrom(value).buildPartial(); + } else { + longDescription_ = value; + } + onChanged(); + } else { + longDescriptionBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + public Builder clearLongDescription() { + if (longDescriptionBuilder_ == null) { + longDescription_ = null; + onChanged(); + } else { + longDescription_ = null; + longDescriptionBuilder_ = null; + } + + return this; + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + public flyteidl.admin.EntityDescriptionOuterClass.LongDescription.Builder getLongDescriptionBuilder() { + + onChanged(); + return getLongDescriptionFieldBuilder().getBuilder(); + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + public flyteidl.admin.EntityDescriptionOuterClass.LongDescriptionOrBuilder getLongDescriptionOrBuilder() { + if (longDescriptionBuilder_ != null) { + return longDescriptionBuilder_.getMessageOrBuilder(); + } else { + return longDescription_ == null ? + flyteidl.admin.EntityDescriptionOuterClass.LongDescription.getDefaultInstance() : longDescription_; + } + } + /** + *
+       * Full user description with formatting preserved.
+       * 
+ * + * .flyteidl.admin.LongDescription long_description = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.LongDescription, flyteidl.admin.EntityDescriptionOuterClass.LongDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.LongDescriptionOrBuilder> + getLongDescriptionFieldBuilder() { + if (longDescriptionBuilder_ == null) { + longDescriptionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.LongDescription, flyteidl.admin.EntityDescriptionOuterClass.LongDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.LongDescriptionOrBuilder>( + getLongDescription(), + getParentForChildren(), + isClean()); + longDescription_ = null; + } + return longDescriptionBuilder_; + } + + private com.google.protobuf.LazyStringList tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureTagsIsMutable() { + if (!((bitField0_ & 0x00000004) != 0)) { + tags_ = new com.google.protobuf.LazyStringArrayList(tags_); + bitField0_ |= 0x00000004; + } + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 3; + */ + public com.google.protobuf.ProtocolStringList + getTagsList() { + return tags_.getUnmodifiableView(); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 3; + */ + public int getTagsCount() { + return tags_.size(); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 3; + */ + public java.lang.String getTags(int index) { + return tags_.get(index); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 3; + */ + public com.google.protobuf.ByteString + getTagsBytes(int index) { + return tags_.getByteString(index); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 3; + */ + public Builder setTags( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.set(index, value); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 3; + */ + public Builder addTags( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.add(value); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 3; + */ + public Builder addAllTags( + java.lang.Iterable values) { + ensureTagsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, tags_); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 3; + */ + public Builder clearTags() { + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 3; + */ + public Builder addTagsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureTagsIsMutable(); + tags_.add(value); + onChanged(); + return this; + } + + private flyteidl.admin.Common.Labels labels_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.Labels, flyteidl.admin.Common.Labels.Builder, flyteidl.admin.Common.LabelsOrBuilder> labelsBuilder_; + /** + *
+       * User-defined free-form key-value pair attributes. These are arbitrary
+       * and can be used for searching, filtering and discovering entities.
+       * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + public boolean hasLabels() { + return labelsBuilder_ != null || labels_ != null; + } + /** + *
+       * User-defined free-form key-value pair attributes. These are arbitrary
+       * and can be used for searching, filtering and discovering entities.
+       * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + public flyteidl.admin.Common.Labels getLabels() { + if (labelsBuilder_ == null) { + return labels_ == null ? flyteidl.admin.Common.Labels.getDefaultInstance() : labels_; + } else { + return labelsBuilder_.getMessage(); + } + } + /** + *
+       * User-defined free-form key-value pair attributes. These are arbitrary
+       * and can be used for searching, filtering and discovering entities.
+       * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + public Builder setLabels(flyteidl.admin.Common.Labels value) { + if (labelsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + labels_ = value; + onChanged(); + } else { + labelsBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * User-defined free-form key-value pair attributes. These are arbitrary
+       * and can be used for searching, filtering and discovering entities.
+       * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + public Builder setLabels( + flyteidl.admin.Common.Labels.Builder builderForValue) { + if (labelsBuilder_ == null) { + labels_ = builderForValue.build(); + onChanged(); + } else { + labelsBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * User-defined free-form key-value pair attributes. These are arbitrary
+       * and can be used for searching, filtering and discovering entities.
+       * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + public Builder mergeLabels(flyteidl.admin.Common.Labels value) { + if (labelsBuilder_ == null) { + if (labels_ != null) { + labels_ = + flyteidl.admin.Common.Labels.newBuilder(labels_).mergeFrom(value).buildPartial(); + } else { + labels_ = value; + } + onChanged(); + } else { + labelsBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * User-defined free-form key-value pair attributes. These are arbitrary
+       * and can be used for searching, filtering and discovering entities.
+       * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + public Builder clearLabels() { + if (labelsBuilder_ == null) { + labels_ = null; + onChanged(); + } else { + labels_ = null; + labelsBuilder_ = null; + } + + return this; + } + /** + *
+       * User-defined free-form key-value pair attributes. These are arbitrary
+       * and can be used for searching, filtering and discovering entities.
+       * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + public flyteidl.admin.Common.Labels.Builder getLabelsBuilder() { + + onChanged(); + return getLabelsFieldBuilder().getBuilder(); + } + /** + *
+       * User-defined free-form key-value pair attributes. These are arbitrary
+       * and can be used for searching, filtering and discovering entities.
+       * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + public flyteidl.admin.Common.LabelsOrBuilder getLabelsOrBuilder() { + if (labelsBuilder_ != null) { + return labelsBuilder_.getMessageOrBuilder(); + } else { + return labels_ == null ? + flyteidl.admin.Common.Labels.getDefaultInstance() : labels_; + } + } + /** + *
+       * User-defined free-form key-value pair attributes. These are arbitrary
+       * and can be used for searching, filtering and discovering entities.
+       * 
+ * + * .flyteidl.admin.Labels labels = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.Labels, flyteidl.admin.Common.Labels.Builder, flyteidl.admin.Common.LabelsOrBuilder> + getLabelsFieldBuilder() { + if (labelsBuilder_ == null) { + labelsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.Common.Labels, flyteidl.admin.Common.Labels.Builder, flyteidl.admin.Common.LabelsOrBuilder>( + getLabels(), + getParentForChildren(), + isClean()); + labels_ = null; + } + return labelsBuilder_; + } + + private flyteidl.admin.EntityDescriptionOuterClass.SourceCode source_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.SourceCode, flyteidl.admin.EntityDescriptionOuterClass.SourceCode.Builder, flyteidl.admin.EntityDescriptionOuterClass.SourceCodeOrBuilder> sourceBuilder_; + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + public boolean hasSource() { + return sourceBuilder_ != null || source_ != null; + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + public flyteidl.admin.EntityDescriptionOuterClass.SourceCode getSource() { + if (sourceBuilder_ == null) { + return source_ == null ? flyteidl.admin.EntityDescriptionOuterClass.SourceCode.getDefaultInstance() : source_; + } else { + return sourceBuilder_.getMessage(); + } + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + public Builder setSource(flyteidl.admin.EntityDescriptionOuterClass.SourceCode value) { + if (sourceBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + source_ = value; + onChanged(); + } else { + sourceBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + public Builder setSource( + flyteidl.admin.EntityDescriptionOuterClass.SourceCode.Builder builderForValue) { + if (sourceBuilder_ == null) { + source_ = builderForValue.build(); + onChanged(); + } else { + sourceBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + public Builder mergeSource(flyteidl.admin.EntityDescriptionOuterClass.SourceCode value) { + if (sourceBuilder_ == null) { + if (source_ != null) { + source_ = + flyteidl.admin.EntityDescriptionOuterClass.SourceCode.newBuilder(source_).mergeFrom(value).buildPartial(); + } else { + source_ = value; + } + onChanged(); + } else { + sourceBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + public Builder clearSource() { + if (sourceBuilder_ == null) { + source_ = null; + onChanged(); + } else { + source_ = null; + sourceBuilder_ = null; + } + + return this; + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + public flyteidl.admin.EntityDescriptionOuterClass.SourceCode.Builder getSourceBuilder() { + + onChanged(); + return getSourceFieldBuilder().getBuilder(); + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + public flyteidl.admin.EntityDescriptionOuterClass.SourceCodeOrBuilder getSourceOrBuilder() { + if (sourceBuilder_ != null) { + return sourceBuilder_.getMessageOrBuilder(); + } else { + return source_ == null ? + flyteidl.admin.EntityDescriptionOuterClass.SourceCode.getDefaultInstance() : source_; + } + } + /** + *
+       * Optional link to source code used to define this entity.
+       * 
+ * + * .flyteidl.admin.SourceCode source = 5; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.SourceCode, flyteidl.admin.EntityDescriptionOuterClass.SourceCode.Builder, flyteidl.admin.EntityDescriptionOuterClass.SourceCodeOrBuilder> + getSourceFieldBuilder() { + if (sourceBuilder_ == null) { + sourceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.SourceCode, flyteidl.admin.EntityDescriptionOuterClass.SourceCode.Builder, flyteidl.admin.EntityDescriptionOuterClass.SourceCodeOrBuilder>( + getSource(), + getParentForChildren(), + isClean()); + source_ = null; + } + return sourceBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.admin.EntityDescription) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.EntityDescription) + private static final flyteidl.admin.EntityDescriptionOuterClass.EntityDescription DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.EntityDescriptionOuterClass.EntityDescription(); + } + + public static flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public EntityDescription parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new EntityDescription(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface LongDescriptionOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.LongDescription) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * long description - no more than 4KB
+     * 
+ * + * string values = 1; + */ + java.lang.String getValues(); + /** + *
+     * long description - no more than 4KB
+     * 
+ * + * string values = 1; + */ + com.google.protobuf.ByteString + getValuesBytes(); + + /** + *
+     * if the description sizes exceed some threshold we can offload the entire
+     * description proto altogether to an external data store, like S3 rather than store inline in the db
+     * 
+ * + * string uri = 2; + */ + java.lang.String getUri(); + /** + *
+     * if the description sizes exceed some threshold we can offload the entire
+     * description proto altogether to an external data store, like S3 rather than store inline in the db
+     * 
+ * + * string uri = 2; + */ + com.google.protobuf.ByteString + getUriBytes(); + + /** + *
+     * format of the long description
+     * 
+ * + * .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + */ + int getLongFormatValue(); + /** + *
+     * format of the long description
+     * 
+ * + * .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + */ + flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat getLongFormat(); + + /** + *
+     * Optional link to an icon for the entity
+     * 
+ * + * string icon_link = 4; + */ + java.lang.String getIconLink(); + /** + *
+     * Optional link to an icon for the entity
+     * 
+ * + * string icon_link = 4; + */ + com.google.protobuf.ByteString + getIconLinkBytes(); + } + /** + *
+   * Full user description with formatting preserved. This can be rendered
+   * by clients, such as the console or command line tools with in-tact
+   * formatting.
+   * 
+ * + * Protobuf type {@code flyteidl.admin.LongDescription} + */ + public static final class LongDescription extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.LongDescription) + LongDescriptionOrBuilder { + private static final long serialVersionUID = 0L; + // Use LongDescription.newBuilder() to construct. + private LongDescription(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private LongDescription() { + values_ = ""; + uri_ = ""; + longFormat_ = 0; + iconLink_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private LongDescription( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + values_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + uri_ = s; + break; + } + case 24: { + int rawValue = input.readEnum(); + + longFormat_ = rawValue; + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + + iconLink_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_LongDescription_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_LongDescription_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.EntityDescriptionOuterClass.LongDescription.class, flyteidl.admin.EntityDescriptionOuterClass.LongDescription.Builder.class); + } + + /** + * Protobuf enum {@code flyteidl.admin.LongDescription.DescriptionFormat} + */ + public enum DescriptionFormat + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UNKNOWN = 0; + */ + UNKNOWN(0), + /** + * MARKDOWN = 1; + */ + MARKDOWN(1), + /** + * HTML = 2; + */ + HTML(2), + /** + *
+       * python default documentation - comments is rst
+       * 
+ * + * RST = 3; + */ + RST(3), + UNRECOGNIZED(-1), + ; + + /** + * UNKNOWN = 0; + */ + public static final int UNKNOWN_VALUE = 0; + /** + * MARKDOWN = 1; + */ + public static final int MARKDOWN_VALUE = 1; + /** + * HTML = 2; + */ + public static final int HTML_VALUE = 2; + /** + *
+       * python default documentation - comments is rst
+       * 
+ * + * RST = 3; + */ + public static final int RST_VALUE = 3; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static DescriptionFormat valueOf(int value) { + return forNumber(value); + } + + public static DescriptionFormat forNumber(int value) { + switch (value) { + case 0: return UNKNOWN; + case 1: return MARKDOWN; + case 2: return HTML; + case 3: return RST; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + DescriptionFormat> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public DescriptionFormat findValueByNumber(int number) { + return DescriptionFormat.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return flyteidl.admin.EntityDescriptionOuterClass.LongDescription.getDescriptor().getEnumTypes().get(0); + } + + private static final DescriptionFormat[] VALUES = values(); + + public static DescriptionFormat valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private DescriptionFormat(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:flyteidl.admin.LongDescription.DescriptionFormat) + } + + public static final int VALUES_FIELD_NUMBER = 1; + private volatile java.lang.Object values_; + /** + *
+     * long description - no more than 4KB
+     * 
+ * + * string values = 1; + */ + public java.lang.String getValues() { + java.lang.Object ref = values_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + values_ = s; + return s; + } + } + /** + *
+     * long description - no more than 4KB
+     * 
+ * + * string values = 1; + */ + public com.google.protobuf.ByteString + getValuesBytes() { + java.lang.Object ref = values_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + values_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int URI_FIELD_NUMBER = 2; + private volatile java.lang.Object uri_; + /** + *
+     * if the description sizes exceed some threshold we can offload the entire
+     * description proto altogether to an external data store, like S3 rather than store inline in the db
+     * 
+ * + * string uri = 2; + */ + public java.lang.String getUri() { + java.lang.Object ref = uri_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + uri_ = s; + return s; + } + } + /** + *
+     * if the description sizes exceed some threshold we can offload the entire
+     * description proto altogether to an external data store, like S3 rather than store inline in the db
+     * 
+ * + * string uri = 2; + */ + public com.google.protobuf.ByteString + getUriBytes() { + java.lang.Object ref = uri_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uri_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LONG_FORMAT_FIELD_NUMBER = 3; + private int longFormat_; + /** + *
+     * format of the long description
+     * 
+ * + * .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + */ + public int getLongFormatValue() { + return longFormat_; + } + /** + *
+     * format of the long description
+     * 
+ * + * .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + */ + public flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat getLongFormat() { + @SuppressWarnings("deprecation") + flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat result = flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat.valueOf(longFormat_); + return result == null ? flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat.UNRECOGNIZED : result; + } + + public static final int ICON_LINK_FIELD_NUMBER = 4; + private volatile java.lang.Object iconLink_; + /** + *
+     * Optional link to an icon for the entity
+     * 
+ * + * string icon_link = 4; + */ + public java.lang.String getIconLink() { + java.lang.Object ref = iconLink_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + iconLink_ = s; + return s; + } + } + /** + *
+     * Optional link to an icon for the entity
+     * 
+ * + * string icon_link = 4; + */ + public com.google.protobuf.ByteString + getIconLinkBytes() { + java.lang.Object ref = iconLink_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + iconLink_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getValuesBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, values_); + } + if (!getUriBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, uri_); + } + if (longFormat_ != flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat.UNKNOWN.getNumber()) { + output.writeEnum(3, longFormat_); + } + if (!getIconLinkBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, iconLink_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getValuesBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, values_); + } + if (!getUriBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, uri_); + } + if (longFormat_ != flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat.UNKNOWN.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(3, longFormat_); + } + if (!getIconLinkBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, iconLink_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.admin.EntityDescriptionOuterClass.LongDescription)) { + return super.equals(obj); + } + flyteidl.admin.EntityDescriptionOuterClass.LongDescription other = (flyteidl.admin.EntityDescriptionOuterClass.LongDescription) obj; + + if (!getValues() + .equals(other.getValues())) return false; + if (!getUri() + .equals(other.getUri())) return false; + if (longFormat_ != other.longFormat_) return false; + if (!getIconLink() + .equals(other.getIconLink())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + VALUES_FIELD_NUMBER; + hash = (53 * hash) + getValues().hashCode(); + hash = (37 * hash) + URI_FIELD_NUMBER; + hash = (53 * hash) + getUri().hashCode(); + hash = (37 * hash) + LONG_FORMAT_FIELD_NUMBER; + hash = (53 * hash) + longFormat_; + hash = (37 * hash) + ICON_LINK_FIELD_NUMBER; + hash = (53 * hash) + getIconLink().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.admin.EntityDescriptionOuterClass.LongDescription 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; + } + /** + *
+     * Full user description with formatting preserved. This can be rendered
+     * by clients, such as the console or command line tools with in-tact
+     * formatting.
+     * 
+ * + * Protobuf type {@code flyteidl.admin.LongDescription} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.LongDescription) + flyteidl.admin.EntityDescriptionOuterClass.LongDescriptionOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_LongDescription_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_LongDescription_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.EntityDescriptionOuterClass.LongDescription.class, flyteidl.admin.EntityDescriptionOuterClass.LongDescription.Builder.class); + } + + // Construct using flyteidl.admin.EntityDescriptionOuterClass.LongDescription.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(); + values_ = ""; + + uri_ = ""; + + longFormat_ = 0; + + iconLink_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_LongDescription_descriptor; + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.LongDescription getDefaultInstanceForType() { + return flyteidl.admin.EntityDescriptionOuterClass.LongDescription.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.LongDescription build() { + flyteidl.admin.EntityDescriptionOuterClass.LongDescription result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.LongDescription buildPartial() { + flyteidl.admin.EntityDescriptionOuterClass.LongDescription result = new flyteidl.admin.EntityDescriptionOuterClass.LongDescription(this); + result.values_ = values_; + result.uri_ = uri_; + result.longFormat_ = longFormat_; + result.iconLink_ = iconLink_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.admin.EntityDescriptionOuterClass.LongDescription) { + return mergeFrom((flyteidl.admin.EntityDescriptionOuterClass.LongDescription)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.EntityDescriptionOuterClass.LongDescription other) { + if (other == flyteidl.admin.EntityDescriptionOuterClass.LongDescription.getDefaultInstance()) return this; + if (!other.getValues().isEmpty()) { + values_ = other.values_; + onChanged(); + } + if (!other.getUri().isEmpty()) { + uri_ = other.uri_; + onChanged(); + } + if (other.longFormat_ != 0) { + setLongFormatValue(other.getLongFormatValue()); + } + if (!other.getIconLink().isEmpty()) { + iconLink_ = other.iconLink_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.admin.EntityDescriptionOuterClass.LongDescription parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.EntityDescriptionOuterClass.LongDescription) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object values_ = ""; + /** + *
+       * long description - no more than 4KB
+       * 
+ * + * string values = 1; + */ + public java.lang.String getValues() { + java.lang.Object ref = values_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + values_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * long description - no more than 4KB
+       * 
+ * + * string values = 1; + */ + public com.google.protobuf.ByteString + getValuesBytes() { + java.lang.Object ref = values_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + values_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * long description - no more than 4KB
+       * 
+ * + * string values = 1; + */ + public Builder setValues( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + values_ = value; + onChanged(); + return this; + } + /** + *
+       * long description - no more than 4KB
+       * 
+ * + * string values = 1; + */ + public Builder clearValues() { + + values_ = getDefaultInstance().getValues(); + onChanged(); + return this; + } + /** + *
+       * long description - no more than 4KB
+       * 
+ * + * string values = 1; + */ + public Builder setValuesBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + values_ = value; + onChanged(); + return this; + } + + private java.lang.Object uri_ = ""; + /** + *
+       * if the description sizes exceed some threshold we can offload the entire
+       * description proto altogether to an external data store, like S3 rather than store inline in the db
+       * 
+ * + * string uri = 2; + */ + public java.lang.String getUri() { + java.lang.Object ref = uri_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + uri_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * if the description sizes exceed some threshold we can offload the entire
+       * description proto altogether to an external data store, like S3 rather than store inline in the db
+       * 
+ * + * string uri = 2; + */ + public com.google.protobuf.ByteString + getUriBytes() { + java.lang.Object ref = uri_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uri_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * if the description sizes exceed some threshold we can offload the entire
+       * description proto altogether to an external data store, like S3 rather than store inline in the db
+       * 
+ * + * string uri = 2; + */ + public Builder setUri( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + uri_ = value; + onChanged(); + return this; + } + /** + *
+       * if the description sizes exceed some threshold we can offload the entire
+       * description proto altogether to an external data store, like S3 rather than store inline in the db
+       * 
+ * + * string uri = 2; + */ + public Builder clearUri() { + + uri_ = getDefaultInstance().getUri(); + onChanged(); + return this; + } + /** + *
+       * if the description sizes exceed some threshold we can offload the entire
+       * description proto altogether to an external data store, like S3 rather than store inline in the db
+       * 
+ * + * string uri = 2; + */ + public Builder setUriBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + uri_ = value; + onChanged(); + return this; + } + + private int longFormat_ = 0; + /** + *
+       * format of the long description
+       * 
+ * + * .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + */ + public int getLongFormatValue() { + return longFormat_; + } + /** + *
+       * format of the long description
+       * 
+ * + * .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + */ + public Builder setLongFormatValue(int value) { + longFormat_ = value; + onChanged(); + return this; + } + /** + *
+       * format of the long description
+       * 
+ * + * .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + */ + public flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat getLongFormat() { + @SuppressWarnings("deprecation") + flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat result = flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat.valueOf(longFormat_); + return result == null ? flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat.UNRECOGNIZED : result; + } + /** + *
+       * format of the long description
+       * 
+ * + * .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + */ + public Builder setLongFormat(flyteidl.admin.EntityDescriptionOuterClass.LongDescription.DescriptionFormat value) { + if (value == null) { + throw new NullPointerException(); + } + + longFormat_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * format of the long description
+       * 
+ * + * .flyteidl.admin.LongDescription.DescriptionFormat long_format = 3; + */ + public Builder clearLongFormat() { + + longFormat_ = 0; + onChanged(); + return this; + } + + private java.lang.Object iconLink_ = ""; + /** + *
+       * Optional link to an icon for the entity
+       * 
+ * + * string icon_link = 4; + */ + public java.lang.String getIconLink() { + java.lang.Object ref = iconLink_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + iconLink_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Optional link to an icon for the entity
+       * 
+ * + * string icon_link = 4; + */ + public com.google.protobuf.ByteString + getIconLinkBytes() { + java.lang.Object ref = iconLink_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + iconLink_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Optional link to an icon for the entity
+       * 
+ * + * string icon_link = 4; + */ + public Builder setIconLink( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + iconLink_ = value; + onChanged(); + return this; + } + /** + *
+       * Optional link to an icon for the entity
+       * 
+ * + * string icon_link = 4; + */ + public Builder clearIconLink() { + + iconLink_ = getDefaultInstance().getIconLink(); + onChanged(); + return this; + } + /** + *
+       * Optional link to an icon for the entity
+       * 
+ * + * string icon_link = 4; + */ + public Builder setIconLinkBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + iconLink_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.admin.LongDescription) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.LongDescription) + private static final flyteidl.admin.EntityDescriptionOuterClass.LongDescription DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.EntityDescriptionOuterClass.LongDescription(); + } + + public static flyteidl.admin.EntityDescriptionOuterClass.LongDescription getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public LongDescription parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new LongDescription(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.LongDescription getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SourceCodeOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.SourceCode) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * File where the code is located
+     * 
+ * + * string file = 1; + */ + java.lang.String getFile(); + /** + *
+     * File where the code is located
+     * 
+ * + * string file = 1; + */ + com.google.protobuf.ByteString + getFileBytes(); + + /** + *
+     * Line number where the task definition, workflow definition, etc starts at
+     * 
+ * + * uint32 line_number = 2; + */ + int getLineNumber(); + + /** + *
+     * git repository
+     * 
+ * + * string repo = 3; + */ + java.lang.String getRepo(); + /** + *
+     * git repository
+     * 
+ * + * string repo = 3; + */ + com.google.protobuf.ByteString + getRepoBytes(); + + /** + *
+     * branch of the repository
+     * 
+ * + * string branch = 4; + */ + java.lang.String getBranch(); + /** + *
+     * branch of the repository
+     * 
+ * + * string branch = 4; + */ + com.google.protobuf.ByteString + getBranchBytes(); + + /** + *
+     * link to the original repository
+     * 
+ * + * string link = 5; + */ + java.lang.String getLink(); + /** + *
+     * link to the original repository
+     * 
+ * + * string link = 5; + */ + com.google.protobuf.ByteString + getLinkBytes(); + + /** + *
+     * language of the code
+     * 
+ * + * string language = 6; + */ + java.lang.String getLanguage(); + /** + *
+     * language of the code
+     * 
+ * + * string language = 6; + */ + com.google.protobuf.ByteString + getLanguageBytes(); + } + /** + *
+   * Link to source code used to define this entity
+   * 
+ * + * Protobuf type {@code flyteidl.admin.SourceCode} + */ + public static final class SourceCode extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.SourceCode) + SourceCodeOrBuilder { + private static final long serialVersionUID = 0L; + // Use SourceCode.newBuilder() to construct. + private SourceCode(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SourceCode() { + file_ = ""; + repo_ = ""; + branch_ = ""; + link_ = ""; + language_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private SourceCode( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + file_ = s; + break; + } + case 16: { + + lineNumber_ = input.readUInt32(); + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + repo_ = s; + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + + branch_ = s; + break; + } + case 42: { + java.lang.String s = input.readStringRequireUtf8(); + + link_ = s; + break; + } + case 50: { + java.lang.String s = input.readStringRequireUtf8(); + + language_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_SourceCode_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_SourceCode_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.EntityDescriptionOuterClass.SourceCode.class, flyteidl.admin.EntityDescriptionOuterClass.SourceCode.Builder.class); + } + + public static final int FILE_FIELD_NUMBER = 1; + private volatile java.lang.Object file_; + /** + *
+     * File where the code is located
+     * 
+ * + * string file = 1; + */ + public java.lang.String getFile() { + java.lang.Object ref = file_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + file_ = s; + return s; + } + } + /** + *
+     * File where the code is located
+     * 
+ * + * string file = 1; + */ + public com.google.protobuf.ByteString + getFileBytes() { + java.lang.Object ref = file_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + file_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LINE_NUMBER_FIELD_NUMBER = 2; + private int lineNumber_; + /** + *
+     * Line number where the task definition, workflow definition, etc starts at
+     * 
+ * + * uint32 line_number = 2; + */ + public int getLineNumber() { + return lineNumber_; + } + + public static final int REPO_FIELD_NUMBER = 3; + private volatile java.lang.Object repo_; + /** + *
+     * git repository
+     * 
+ * + * string repo = 3; + */ + public java.lang.String getRepo() { + java.lang.Object ref = repo_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + repo_ = s; + return s; + } + } + /** + *
+     * git repository
+     * 
+ * + * string repo = 3; + */ + public com.google.protobuf.ByteString + getRepoBytes() { + java.lang.Object ref = repo_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + repo_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int BRANCH_FIELD_NUMBER = 4; + private volatile java.lang.Object branch_; + /** + *
+     * branch of the repository
+     * 
+ * + * string branch = 4; + */ + public java.lang.String getBranch() { + java.lang.Object ref = branch_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + branch_ = s; + return s; + } + } + /** + *
+     * branch of the repository
+     * 
+ * + * string branch = 4; + */ + public com.google.protobuf.ByteString + getBranchBytes() { + java.lang.Object ref = branch_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + branch_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LINK_FIELD_NUMBER = 5; + private volatile java.lang.Object link_; + /** + *
+     * link to the original repository
+     * 
+ * + * string link = 5; + */ + public java.lang.String getLink() { + java.lang.Object ref = link_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + link_ = s; + return s; + } + } + /** + *
+     * link to the original repository
+     * 
+ * + * string link = 5; + */ + public com.google.protobuf.ByteString + getLinkBytes() { + java.lang.Object ref = link_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + link_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LANGUAGE_FIELD_NUMBER = 6; + private volatile java.lang.Object language_; + /** + *
+     * language of the code
+     * 
+ * + * string language = 6; + */ + public java.lang.String getLanguage() { + java.lang.Object ref = language_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + language_ = s; + return s; + } + } + /** + *
+     * language of the code
+     * 
+ * + * string language = 6; + */ + public com.google.protobuf.ByteString + getLanguageBytes() { + java.lang.Object ref = language_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + language_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getFileBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, file_); + } + if (lineNumber_ != 0) { + output.writeUInt32(2, lineNumber_); + } + if (!getRepoBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, repo_); + } + if (!getBranchBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, branch_); + } + if (!getLinkBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, link_); + } + if (!getLanguageBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, language_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getFileBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, file_); + } + if (lineNumber_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, lineNumber_); + } + if (!getRepoBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, repo_); + } + if (!getBranchBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, branch_); + } + if (!getLinkBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, link_); + } + if (!getLanguageBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, language_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.admin.EntityDescriptionOuterClass.SourceCode)) { + return super.equals(obj); + } + flyteidl.admin.EntityDescriptionOuterClass.SourceCode other = (flyteidl.admin.EntityDescriptionOuterClass.SourceCode) obj; + + if (!getFile() + .equals(other.getFile())) return false; + if (getLineNumber() + != other.getLineNumber()) return false; + if (!getRepo() + .equals(other.getRepo())) return false; + if (!getBranch() + .equals(other.getBranch())) return false; + if (!getLink() + .equals(other.getLink())) return false; + if (!getLanguage() + .equals(other.getLanguage())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + FILE_FIELD_NUMBER; + hash = (53 * hash) + getFile().hashCode(); + hash = (37 * hash) + LINE_NUMBER_FIELD_NUMBER; + hash = (53 * hash) + getLineNumber(); + hash = (37 * hash) + REPO_FIELD_NUMBER; + hash = (53 * hash) + getRepo().hashCode(); + hash = (37 * hash) + BRANCH_FIELD_NUMBER; + hash = (53 * hash) + getBranch().hashCode(); + hash = (37 * hash) + LINK_FIELD_NUMBER; + hash = (53 * hash) + getLink().hashCode(); + hash = (37 * hash) + LANGUAGE_FIELD_NUMBER; + hash = (53 * hash) + getLanguage().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.admin.EntityDescriptionOuterClass.SourceCode 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; + } + /** + *
+     * Link to source code used to define this entity
+     * 
+ * + * Protobuf type {@code flyteidl.admin.SourceCode} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.SourceCode) + flyteidl.admin.EntityDescriptionOuterClass.SourceCodeOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_SourceCode_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_SourceCode_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.EntityDescriptionOuterClass.SourceCode.class, flyteidl.admin.EntityDescriptionOuterClass.SourceCode.Builder.class); + } + + // Construct using flyteidl.admin.EntityDescriptionOuterClass.SourceCode.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(); + file_ = ""; + + lineNumber_ = 0; + + repo_ = ""; + + branch_ = ""; + + link_ = ""; + + language_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.EntityDescriptionOuterClass.internal_static_flyteidl_admin_SourceCode_descriptor; + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.SourceCode getDefaultInstanceForType() { + return flyteidl.admin.EntityDescriptionOuterClass.SourceCode.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.SourceCode build() { + flyteidl.admin.EntityDescriptionOuterClass.SourceCode result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.SourceCode buildPartial() { + flyteidl.admin.EntityDescriptionOuterClass.SourceCode result = new flyteidl.admin.EntityDescriptionOuterClass.SourceCode(this); + result.file_ = file_; + result.lineNumber_ = lineNumber_; + result.repo_ = repo_; + result.branch_ = branch_; + result.link_ = link_; + result.language_ = language_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.admin.EntityDescriptionOuterClass.SourceCode) { + return mergeFrom((flyteidl.admin.EntityDescriptionOuterClass.SourceCode)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.EntityDescriptionOuterClass.SourceCode other) { + if (other == flyteidl.admin.EntityDescriptionOuterClass.SourceCode.getDefaultInstance()) return this; + if (!other.getFile().isEmpty()) { + file_ = other.file_; + onChanged(); + } + if (other.getLineNumber() != 0) { + setLineNumber(other.getLineNumber()); + } + if (!other.getRepo().isEmpty()) { + repo_ = other.repo_; + onChanged(); + } + if (!other.getBranch().isEmpty()) { + branch_ = other.branch_; + onChanged(); + } + if (!other.getLink().isEmpty()) { + link_ = other.link_; + onChanged(); + } + if (!other.getLanguage().isEmpty()) { + language_ = other.language_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.admin.EntityDescriptionOuterClass.SourceCode parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.EntityDescriptionOuterClass.SourceCode) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object file_ = ""; + /** + *
+       * File where the code is located
+       * 
+ * + * string file = 1; + */ + public java.lang.String getFile() { + java.lang.Object ref = file_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + file_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * File where the code is located
+       * 
+ * + * string file = 1; + */ + public com.google.protobuf.ByteString + getFileBytes() { + java.lang.Object ref = file_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + file_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * File where the code is located
+       * 
+ * + * string file = 1; + */ + public Builder setFile( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + file_ = value; + onChanged(); + return this; + } + /** + *
+       * File where the code is located
+       * 
+ * + * string file = 1; + */ + public Builder clearFile() { + + file_ = getDefaultInstance().getFile(); + onChanged(); + return this; + } + /** + *
+       * File where the code is located
+       * 
+ * + * string file = 1; + */ + public Builder setFileBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + file_ = value; + onChanged(); + return this; + } + + private int lineNumber_ ; + /** + *
+       * Line number where the task definition, workflow definition, etc starts at
+       * 
+ * + * uint32 line_number = 2; + */ + public int getLineNumber() { + return lineNumber_; + } + /** + *
+       * Line number where the task definition, workflow definition, etc starts at
+       * 
+ * + * uint32 line_number = 2; + */ + public Builder setLineNumber(int value) { + + lineNumber_ = value; + onChanged(); + return this; + } + /** + *
+       * Line number where the task definition, workflow definition, etc starts at
+       * 
+ * + * uint32 line_number = 2; + */ + public Builder clearLineNumber() { + + lineNumber_ = 0; + onChanged(); + return this; + } + + private java.lang.Object repo_ = ""; + /** + *
+       * git repository
+       * 
+ * + * string repo = 3; + */ + public java.lang.String getRepo() { + java.lang.Object ref = repo_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + repo_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * git repository
+       * 
+ * + * string repo = 3; + */ + public com.google.protobuf.ByteString + getRepoBytes() { + java.lang.Object ref = repo_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + repo_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * git repository
+       * 
+ * + * string repo = 3; + */ + public Builder setRepo( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + repo_ = value; + onChanged(); + return this; + } + /** + *
+       * git repository
+       * 
+ * + * string repo = 3; + */ + public Builder clearRepo() { + + repo_ = getDefaultInstance().getRepo(); + onChanged(); + return this; + } + /** + *
+       * git repository
+       * 
+ * + * string repo = 3; + */ + public Builder setRepoBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + repo_ = value; + onChanged(); + return this; + } + + private java.lang.Object branch_ = ""; + /** + *
+       * branch of the repository
+       * 
+ * + * string branch = 4; + */ + public java.lang.String getBranch() { + java.lang.Object ref = branch_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + branch_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * branch of the repository
+       * 
+ * + * string branch = 4; + */ + public com.google.protobuf.ByteString + getBranchBytes() { + java.lang.Object ref = branch_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + branch_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * branch of the repository
+       * 
+ * + * string branch = 4; + */ + public Builder setBranch( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + branch_ = value; + onChanged(); + return this; + } + /** + *
+       * branch of the repository
+       * 
+ * + * string branch = 4; + */ + public Builder clearBranch() { + + branch_ = getDefaultInstance().getBranch(); + onChanged(); + return this; + } + /** + *
+       * branch of the repository
+       * 
+ * + * string branch = 4; + */ + public Builder setBranchBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + branch_ = value; + onChanged(); + return this; + } + + private java.lang.Object link_ = ""; + /** + *
+       * link to the original repository
+       * 
+ * + * string link = 5; + */ + public java.lang.String getLink() { + java.lang.Object ref = link_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + link_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * link to the original repository
+       * 
+ * + * string link = 5; + */ + public com.google.protobuf.ByteString + getLinkBytes() { + java.lang.Object ref = link_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + link_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * link to the original repository
+       * 
+ * + * string link = 5; + */ + public Builder setLink( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + link_ = value; + onChanged(); + return this; + } + /** + *
+       * link to the original repository
+       * 
+ * + * string link = 5; + */ + public Builder clearLink() { + + link_ = getDefaultInstance().getLink(); + onChanged(); + return this; + } + /** + *
+       * link to the original repository
+       * 
+ * + * string link = 5; + */ + public Builder setLinkBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + link_ = value; + onChanged(); + return this; + } + + private java.lang.Object language_ = ""; + /** + *
+       * language of the code
+       * 
+ * + * string language = 6; + */ + public java.lang.String getLanguage() { + java.lang.Object ref = language_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + language_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * language of the code
+       * 
+ * + * string language = 6; + */ + public com.google.protobuf.ByteString + getLanguageBytes() { + java.lang.Object ref = language_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + language_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * language of the code
+       * 
+ * + * string language = 6; + */ + public Builder setLanguage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + language_ = value; + onChanged(); + return this; + } + /** + *
+       * language of the code
+       * 
+ * + * string language = 6; + */ + public Builder clearLanguage() { + + language_ = getDefaultInstance().getLanguage(); + onChanged(); + return this; + } + /** + *
+       * language of the code
+       * 
+ * + * string language = 6; + */ + public Builder setLanguageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + language_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.admin.SourceCode) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.SourceCode) + private static final flyteidl.admin.EntityDescriptionOuterClass.SourceCode DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.EntityDescriptionOuterClass.SourceCode(); + } + + public static flyteidl.admin.EntityDescriptionOuterClass.SourceCode getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SourceCode parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new SourceCode(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.admin.EntityDescriptionOuterClass.SourceCode getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_EntityDescription_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_EntityDescription_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_LongDescription_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_LongDescription_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_SourceCode_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_SourceCode_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\'flyteidl/admin/entity_description.prot" + + "o\022\016flyteidl.admin\032\036flyteidl/core/identif" + + "ier.proto\032\033flyteidl/admin/common.proto\"\313" + + "\001\n\021EntityDescription\022\031\n\021short_descriptio" + + "n\030\001 \001(\t\0229\n\020long_description\030\002 \001(\0132\037.flyt" + + "eidl.admin.LongDescription\022\014\n\004tags\030\003 \003(\t" + + "\022&\n\006labels\030\004 \001(\0132\026.flyteidl.admin.Labels" + + "\022*\n\006source\030\005 \001(\0132\032.flyteidl.admin.Source" + + "Code\"\314\001\n\017LongDescription\022\016\n\006values\030\001 \001(\t" + + "\022\013\n\003uri\030\002 \001(\t\022F\n\013long_format\030\003 \001(\01621.fly" + + "teidl.admin.LongDescription.DescriptionF" + + "ormat\022\021\n\ticon_link\030\004 \001(\t\"A\n\021DescriptionF" + + "ormat\022\013\n\007UNKNOWN\020\000\022\014\n\010MARKDOWN\020\001\022\010\n\004HTML" + + "\020\002\022\007\n\003RST\020\003\"m\n\nSourceCode\022\014\n\004file\030\001 \001(\t\022" + + "\023\n\013line_number\030\002 \001(\r\022\014\n\004repo\030\003 \001(\t\022\016\n\006br" + + "anch\030\004 \001(\t\022\014\n\004link\030\005 \001(\t\022\020\n\010language\030\006 \001" + + "(\tB7Z5github.com/flyteorg/flyteidl/gen/p" + + "b-go/flyteidl/adminb\006proto3" + }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = + new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors( + com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + return null; + } + }; + com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + flyteidl.core.IdentifierOuterClass.getDescriptor(), + flyteidl.admin.Common.getDescriptor(), + }, assigner); + internal_static_flyteidl_admin_EntityDescription_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_flyteidl_admin_EntityDescription_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_EntityDescription_descriptor, + new java.lang.String[] { "ShortDescription", "LongDescription", "Tags", "Labels", "Source", }); + internal_static_flyteidl_admin_LongDescription_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_flyteidl_admin_LongDescription_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_LongDescription_descriptor, + new java.lang.String[] { "Values", "Uri", "LongFormat", "IconLink", }); + internal_static_flyteidl_admin_SourceCode_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_flyteidl_admin_SourceCode_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_SourceCode_descriptor, + new java.lang.String[] { "File", "LineNumber", "Repo", "Branch", "Link", "Language", }); + flyteidl.core.IdentifierOuterClass.getDescriptor(); + flyteidl.admin.Common.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java b/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java index 600b65353..4b3476104 100644 --- a/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java +++ b/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java @@ -16899,6 +16899,63 @@ public interface ExecutionSpecOrBuilder extends */ com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder(); + /** + *
+     * One-liner overview of the execution.
+     * 
+ * + * string description = 22; + */ + java.lang.String getDescription(); + /** + *
+     * One-liner overview of the execution.
+     * 
+ * + * string description = 22; + */ + com.google.protobuf.ByteString + getDescriptionBytes(); + + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 23; + */ + java.util.List + getTagsList(); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 23; + */ + int getTagsCount(); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 23; + */ + java.lang.String getTags(int index); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 23; + */ + com.google.protobuf.ByteString + getTagsBytes(int index); + public flyteidl.admin.ExecutionOuterClass.ExecutionSpec.NotificationOverridesCase getNotificationOverridesCase(); } /** @@ -16919,6 +16976,8 @@ private ExecutionSpec(com.google.protobuf.GeneratedMessageV3.Builder builder) super(builder); } private ExecutionSpec() { + description_ = ""; + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; } @java.lang.Override @@ -17112,6 +17171,21 @@ private ExecutionSpec( break; } + case 178: { + java.lang.String s = input.readStringRequireUtf8(); + + description_ = s; + break; + } + case 186: { + java.lang.String s = input.readStringRequireUtf8(); + if (!((mutable_bitField0_ & 0x00008000) != 0)) { + tags_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00008000; + } + tags_.add(s); + break; + } default: { if (!parseUnknownField( input, unknownFields, extensionRegistry, tag)) { @@ -17127,6 +17201,9 @@ private ExecutionSpec( throw new com.google.protobuf.InvalidProtocolBufferException( e).setUnfinishedMessage(this); } finally { + if (((mutable_bitField0_ & 0x00008000) != 0)) { + tags_ = tags_.getUnmodifiableView(); + } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } @@ -17144,6 +17221,7 @@ private ExecutionSpec( flyteidl.admin.ExecutionOuterClass.ExecutionSpec.class, flyteidl.admin.ExecutionOuterClass.ExecutionSpec.Builder.class); } + private int bitField0_; private int notificationOverridesCase_ = 0; private java.lang.Object notificationOverrides_; public enum NotificationOverridesCase @@ -17631,6 +17709,97 @@ public com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder() { return getInterruptible(); } + public static final int DESCRIPTION_FIELD_NUMBER = 22; + private volatile java.lang.Object description_; + /** + *
+     * One-liner overview of the execution.
+     * 
+ * + * string description = 22; + */ + public java.lang.String getDescription() { + java.lang.Object ref = description_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + description_ = s; + return s; + } + } + /** + *
+     * One-liner overview of the execution.
+     * 
+ * + * string description = 22; + */ + public com.google.protobuf.ByteString + getDescriptionBytes() { + java.lang.Object ref = description_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + description_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TAGS_FIELD_NUMBER = 23; + private com.google.protobuf.LazyStringList tags_; + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 23; + */ + public com.google.protobuf.ProtocolStringList + getTagsList() { + return tags_; + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 23; + */ + public int getTagsCount() { + return tags_.size(); + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 23; + */ + public java.lang.String getTags(int index) { + return tags_.get(index); + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 23; + */ + public com.google.protobuf.ByteString + getTagsBytes(int index) { + return tags_.getByteString(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -17688,6 +17857,12 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (interruptible_ != null) { output.writeMessage(21, getInterruptible()); } + if (!getDescriptionBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 22, description_); + } + for (int i = 0; i < tags_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 23, tags_.getRaw(i)); + } unknownFields.writeTo(output); } @@ -17754,6 +17929,17 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(21, getInterruptible()); } + if (!getDescriptionBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(22, description_); + } + { + int dataSize = 0; + for (int i = 0; i < tags_.size(); i++) { + dataSize += computeStringSizeNoTag(tags_.getRaw(i)); + } + size += dataSize; + size += 2 * getTagsList().size(); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -17826,6 +18012,10 @@ public boolean equals(final java.lang.Object obj) { if (!getInterruptible() .equals(other.getInterruptible())) return false; } + if (!getDescription() + .equals(other.getDescription())) return false; + if (!getTagsList() + .equals(other.getTagsList())) return false; if (!getNotificationOverridesCase().equals(other.getNotificationOverridesCase())) return false; switch (notificationOverridesCase_) { case 5: @@ -17896,6 +18086,12 @@ public int hashCode() { hash = (37 * hash) + INTERRUPTIBLE_FIELD_NUMBER; hash = (53 * hash) + getInterruptible().hashCode(); } + hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getDescription().hashCode(); + if (getTagsCount() > 0) { + hash = (37 * hash) + TAGS_FIELD_NUMBER; + hash = (53 * hash) + getTagsList().hashCode(); + } switch (notificationOverridesCase_) { case 5: hash = (37 * hash) + NOTIFICATIONS_FIELD_NUMBER; @@ -18115,6 +18311,10 @@ public Builder clear() { interruptible_ = null; interruptibleBuilder_ = null; } + description_ = ""; + + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00008000); notificationOverridesCase_ = 0; notificationOverrides_ = null; return this; @@ -18143,6 +18343,8 @@ public flyteidl.admin.ExecutionOuterClass.ExecutionSpec build() { @java.lang.Override public flyteidl.admin.ExecutionOuterClass.ExecutionSpec buildPartial() { flyteidl.admin.ExecutionOuterClass.ExecutionSpec result = new flyteidl.admin.ExecutionOuterClass.ExecutionSpec(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; if (launchPlanBuilder_ == null) { result.launchPlan_ = launchPlan_; } else { @@ -18209,6 +18411,13 @@ public flyteidl.admin.ExecutionOuterClass.ExecutionSpec buildPartial() { } else { result.interruptible_ = interruptibleBuilder_.build(); } + result.description_ = description_; + if (((bitField0_ & 0x00008000) != 0)) { + tags_ = tags_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00008000); + } + result.tags_ = tags_; + result.bitField0_ = to_bitField0_; result.notificationOverridesCase_ = notificationOverridesCase_; onBuilt(); return result; @@ -18294,6 +18503,20 @@ public Builder mergeFrom(flyteidl.admin.ExecutionOuterClass.ExecutionSpec other) if (other.hasInterruptible()) { mergeInterruptible(other.getInterruptible()); } + if (!other.getDescription().isEmpty()) { + description_ = other.description_; + onChanged(); + } + if (!other.tags_.isEmpty()) { + if (tags_.isEmpty()) { + tags_ = other.tags_; + bitField0_ = (bitField0_ & ~0x00008000); + } else { + ensureTagsIsMutable(); + tags_.addAll(other.tags_); + } + onChanged(); + } switch (other.getNotificationOverridesCase()) { case NOTIFICATIONS: { mergeNotifications(other.getNotifications()); @@ -18350,6 +18573,7 @@ public Builder clearNotificationOverrides() { return this; } + private int bitField0_; private flyteidl.core.IdentifierOuterClass.Identifier launchPlan_; private com.google.protobuf.SingleFieldBuilderV3< @@ -20345,6 +20569,234 @@ public com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder() { } return interruptibleBuilder_; } + + private java.lang.Object description_ = ""; + /** + *
+       * One-liner overview of the execution.
+       * 
+ * + * string description = 22; + */ + public java.lang.String getDescription() { + java.lang.Object ref = description_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + description_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * One-liner overview of the execution.
+       * 
+ * + * string description = 22; + */ + public com.google.protobuf.ByteString + getDescriptionBytes() { + java.lang.Object ref = description_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + description_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * One-liner overview of the execution.
+       * 
+ * + * string description = 22; + */ + public Builder setDescription( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + description_ = value; + onChanged(); + return this; + } + /** + *
+       * One-liner overview of the execution.
+       * 
+ * + * string description = 22; + */ + public Builder clearDescription() { + + description_ = getDefaultInstance().getDescription(); + onChanged(); + return this; + } + /** + *
+       * One-liner overview of the execution.
+       * 
+ * + * string description = 22; + */ + public Builder setDescriptionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + description_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringList tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureTagsIsMutable() { + if (!((bitField0_ & 0x00008000) != 0)) { + tags_ = new com.google.protobuf.LazyStringArrayList(tags_); + bitField0_ |= 0x00008000; + } + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 23; + */ + public com.google.protobuf.ProtocolStringList + getTagsList() { + return tags_.getUnmodifiableView(); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 23; + */ + public int getTagsCount() { + return tags_.size(); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 23; + */ + public java.lang.String getTags(int index) { + return tags_.get(index); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 23; + */ + public com.google.protobuf.ByteString + getTagsBytes(int index) { + return tags_.getByteString(index); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 23; + */ + public Builder setTags( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.set(index, value); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 23; + */ + public Builder addTags( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.add(value); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 23; + */ + public Builder addAllTags( + java.lang.Iterable values) { + ensureTagsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, tags_); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 23; + */ + public Builder clearTags() { + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00008000); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 23; + */ + public Builder addTagsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureTagsIsMutable(); + tags_.add(value); + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -26170,7 +26622,7 @@ public flyteidl.admin.ExecutionOuterClass.ExecutionUpdateResponse getDefaultInst "\001\022\n\n\006SYSTEM\020\002\022\014\n\010RELAUNCH\020\003\022\022\n\016CHILD_WOR" + "KFLOW\020\004\022\r\n\tRECOVERED\020\005\"G\n\020NotificationLi" + "st\0223\n\rnotifications\030\001 \003(\0132\034.flyteidl.adm" + - "in.Notification\"\347\005\n\rExecutionSpec\022.\n\013lau" + + "in.Notification\"\212\006\n\rExecutionSpec\022.\n\013lau" + "nch_plan\030\001 \001(\0132\031.flyteidl.core.Identifie" + "r\022-\n\006inputs\030\002 \001(\0132\031.flyteidl.core.Litera" + "lMapB\002\030\001\0223\n\010metadata\030\003 \001(\0132!.flyteidl.ad" + @@ -26188,29 +26640,30 @@ public flyteidl.admin.ExecutionOuterClass.ExecutionUpdateResponse getDefaultInst "utputDataConfig\022=\n\022cluster_assignment\030\024 " + "\001(\0132!.flyteidl.admin.ClusterAssignment\0221" + "\n\rinterruptible\030\025 \001(\0132\032.google.protobuf." + - "BoolValueB\030\n\026notification_overridesJ\004\010\004\020" + - "\005\"b\n\031ExecutionTerminateRequest\0226\n\002id\030\001 \001" + - "(\0132*.flyteidl.core.WorkflowExecutionIden" + - "tifier\022\r\n\005cause\030\002 \001(\t\"\034\n\032ExecutionTermin" + - "ateResponse\"Y\n\037WorkflowExecutionGetDataR" + - "equest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workf" + - "lowExecutionIdentifier\"\336\001\n WorkflowExecu" + - "tionGetDataResponse\022,\n\007outputs\030\001 \001(\0132\027.f" + - "lyteidl.admin.UrlBlobB\002\030\001\022+\n\006inputs\030\002 \001(" + - "\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022.\n\013full_i" + - "nputs\030\003 \001(\0132\031.flyteidl.core.LiteralMap\022/" + - "\n\014full_outputs\030\004 \001(\0132\031.flyteidl.core.Lit" + - "eralMap\"\177\n\026ExecutionUpdateRequest\0226\n\002id\030" + - "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" + - "dentifier\022-\n\005state\030\002 \001(\0162\036.flyteidl.admi" + - "n.ExecutionState\"\220\001\n\033ExecutionStateChang" + - "eDetails\022-\n\005state\030\001 \001(\0162\036.flyteidl.admin" + - ".ExecutionState\022/\n\013occurred_at\030\002 \001(\0132\032.g" + - "oogle.protobuf.Timestamp\022\021\n\tprincipal\030\003 " + - "\001(\t\"\031\n\027ExecutionUpdateResponse*>\n\016Execut" + - "ionState\022\024\n\020EXECUTION_ACTIVE\020\000\022\026\n\022EXECUT" + - "ION_ARCHIVED\020\001B7Z5github.com/flyteorg/fl" + - "yteidl/gen/pb-go/flyteidl/adminb\006proto3" + "BoolValue\022\023\n\013description\030\026 \001(\t\022\014\n\004tags\030\027" + + " \003(\tB\030\n\026notification_overridesJ\004\010\004\020\005\"b\n\031" + + "ExecutionTerminateRequest\0226\n\002id\030\001 \001(\0132*." + + "flyteidl.core.WorkflowExecutionIdentifie" + + "r\022\r\n\005cause\030\002 \001(\t\"\034\n\032ExecutionTerminateRe" + + "sponse\"Y\n\037WorkflowExecutionGetDataReques" + + "t\0226\n\002id\030\001 \001(\0132*.flyteidl.core.WorkflowEx" + + "ecutionIdentifier\"\336\001\n WorkflowExecutionG" + + "etDataResponse\022,\n\007outputs\030\001 \001(\0132\027.flytei" + + "dl.admin.UrlBlobB\002\030\001\022+\n\006inputs\030\002 \001(\0132\027.f" + + "lyteidl.admin.UrlBlobB\002\030\001\022.\n\013full_inputs" + + "\030\003 \001(\0132\031.flyteidl.core.LiteralMap\022/\n\014ful" + + "l_outputs\030\004 \001(\0132\031.flyteidl.core.LiteralM" + + "ap\"\177\n\026ExecutionUpdateRequest\0226\n\002id\030\001 \001(\013" + + "2*.flyteidl.core.WorkflowExecutionIdenti" + + "fier\022-\n\005state\030\002 \001(\0162\036.flyteidl.admin.Exe" + + "cutionState\"\220\001\n\033ExecutionStateChangeDeta" + + "ils\022-\n\005state\030\001 \001(\0162\036.flyteidl.admin.Exec" + + "utionState\022/\n\013occurred_at\030\002 \001(\0132\032.google" + + ".protobuf.Timestamp\022\021\n\tprincipal\030\003 \001(\t\"\031" + + "\n\027ExecutionUpdateResponse*>\n\016ExecutionSt" + + "ate\022\024\n\020EXECUTION_ACTIVE\020\000\022\026\n\022EXECUTION_A" + + "RCHIVED\020\001B7Z5github.com/flyteorg/flyteid" + + "l/gen/pb-go/flyteidl/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -26316,7 +26769,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_ExecutionSpec_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_ExecutionSpec_descriptor, - new java.lang.String[] { "LaunchPlan", "Inputs", "Metadata", "Notifications", "DisableAll", "Labels", "Annotations", "SecurityContext", "AuthRole", "QualityOfService", "MaxParallelism", "RawOutputDataConfig", "ClusterAssignment", "Interruptible", "NotificationOverrides", }); + new java.lang.String[] { "LaunchPlan", "Inputs", "Metadata", "Notifications", "DisableAll", "Labels", "Annotations", "SecurityContext", "AuthRole", "QualityOfService", "MaxParallelism", "RawOutputDataConfig", "ClusterAssignment", "Interruptible", "Description", "Tags", "NotificationOverrides", }); internal_static_flyteidl_admin_ExecutionTerminateRequest_descriptor = getDescriptor().getMessageTypes().get(14); internal_static_flyteidl_admin_ExecutionTerminateRequest_fieldAccessorTable = new diff --git a/gen/pb-java/flyteidl/admin/LaunchPlanOuterClass.java b/gen/pb-java/flyteidl/admin/LaunchPlanOuterClass.java index da61fa7f3..37137aaa3 100644 --- a/gen/pb-java/flyteidl/admin/LaunchPlanOuterClass.java +++ b/gen/pb-java/flyteidl/admin/LaunchPlanOuterClass.java @@ -4740,6 +4740,31 @@ public interface LaunchPlanSpecOrBuilder extends * .google.protobuf.BoolValue interruptible = 19; */ com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder(); + + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the launch plan.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + boolean hasEntityDescription(); + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the launch plan.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getEntityDescription(); + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the launch plan.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder getEntityDescriptionOrBuilder(); } /** *
@@ -4952,6 +4977,19 @@ private LaunchPlanSpec(
 
               break;
             }
+            case 162: {
+              flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder subBuilder = null;
+              if (entityDescription_ != null) {
+                subBuilder = entityDescription_.toBuilder();
+              }
+              entityDescription_ = input.readMessage(flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(entityDescription_);
+                entityDescription_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -5440,6 +5478,39 @@ public com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder() {
       return getInterruptible();
     }
 
+    public static final int ENTITY_DESCRIPTION_FIELD_NUMBER = 20;
+    private flyteidl.admin.EntityDescriptionOuterClass.EntityDescription entityDescription_;
+    /**
+     * 
+     * EntityDescription encapsulates all the detailed documentation for the launch plan.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + public boolean hasEntityDescription() { + return entityDescription_ != null; + } + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the launch plan.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getEntityDescription() { + return entityDescription_ == null ? flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.getDefaultInstance() : entityDescription_; + } + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the launch plan.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder getEntityDescriptionOrBuilder() { + return getEntityDescription(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -5496,6 +5567,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (interruptible_ != null) { output.writeMessage(19, getInterruptible()); } + if (entityDescription_ != null) { + output.writeMessage(20, getEntityDescription()); + } unknownFields.writeTo(output); } @@ -5560,6 +5634,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(19, getInterruptible()); } + if (entityDescription_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(20, getEntityDescription()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -5639,6 +5717,11 @@ public boolean equals(final java.lang.Object obj) { if (!getInterruptible() .equals(other.getInterruptible())) return false; } + if (hasEntityDescription() != other.hasEntityDescription()) return false; + if (hasEntityDescription()) { + if (!getEntityDescription() + .equals(other.getEntityDescription())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -5702,6 +5785,10 @@ public int hashCode() { hash = (37 * hash) + INTERRUPTIBLE_FIELD_NUMBER; hash = (53 * hash) + getInterruptible().hashCode(); } + if (hasEntityDescription()) { + hash = (37 * hash) + ENTITY_DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getEntityDescription().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -5915,6 +6002,12 @@ public Builder clear() { interruptible_ = null; interruptibleBuilder_ = null; } + if (entityDescriptionBuilder_ == null) { + entityDescription_ = null; + } else { + entityDescription_ = null; + entityDescriptionBuilder_ = null; + } return this; } @@ -6003,6 +6096,11 @@ public flyteidl.admin.LaunchPlanOuterClass.LaunchPlanSpec buildPartial() { } else { result.interruptible_ = interruptibleBuilder_.build(); } + if (entityDescriptionBuilder_ == null) { + result.entityDescription_ = entityDescription_; + } else { + result.entityDescription_ = entityDescriptionBuilder_.build(); + } onBuilt(); return result; } @@ -6094,6 +6192,9 @@ public Builder mergeFrom(flyteidl.admin.LaunchPlanOuterClass.LaunchPlanSpec othe if (other.hasInterruptible()) { mergeInterruptible(other.getInterruptible()); } + if (other.hasEntityDescription()) { + mergeEntityDescription(other.getEntityDescription()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -8100,6 +8201,159 @@ public com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder() { } return interruptibleBuilder_; } + + private flyteidl.admin.EntityDescriptionOuterClass.EntityDescription entityDescription_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription, flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder> entityDescriptionBuilder_; + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the launch plan.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + public boolean hasEntityDescription() { + return entityDescriptionBuilder_ != null || entityDescription_ != null; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the launch plan.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getEntityDescription() { + if (entityDescriptionBuilder_ == null) { + return entityDescription_ == null ? flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.getDefaultInstance() : entityDescription_; + } else { + return entityDescriptionBuilder_.getMessage(); + } + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the launch plan.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + public Builder setEntityDescription(flyteidl.admin.EntityDescriptionOuterClass.EntityDescription value) { + if (entityDescriptionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + entityDescription_ = value; + onChanged(); + } else { + entityDescriptionBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the launch plan.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + public Builder setEntityDescription( + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder builderForValue) { + if (entityDescriptionBuilder_ == null) { + entityDescription_ = builderForValue.build(); + onChanged(); + } else { + entityDescriptionBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the launch plan.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + public Builder mergeEntityDescription(flyteidl.admin.EntityDescriptionOuterClass.EntityDescription value) { + if (entityDescriptionBuilder_ == null) { + if (entityDescription_ != null) { + entityDescription_ = + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.newBuilder(entityDescription_).mergeFrom(value).buildPartial(); + } else { + entityDescription_ = value; + } + onChanged(); + } else { + entityDescriptionBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the launch plan.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + public Builder clearEntityDescription() { + if (entityDescriptionBuilder_ == null) { + entityDescription_ = null; + onChanged(); + } else { + entityDescription_ = null; + entityDescriptionBuilder_ = null; + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the launch plan.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder getEntityDescriptionBuilder() { + + onChanged(); + return getEntityDescriptionFieldBuilder().getBuilder(); + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the launch plan.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder getEntityDescriptionOrBuilder() { + if (entityDescriptionBuilder_ != null) { + return entityDescriptionBuilder_.getMessageOrBuilder(); + } else { + return entityDescription_ == null ? + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.getDefaultInstance() : entityDescription_; + } + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the launch plan.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 20; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription, flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder> + getEntityDescriptionFieldBuilder() { + if (entityDescriptionBuilder_ == null) { + entityDescriptionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription, flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder>( + getEntityDescription(), + getParentForChildren(), + isClean()); + entityDescription_ = null; + } + return entityDescriptionBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -14216,59 +14470,61 @@ public flyteidl.admin.LaunchPlanOuterClass.ActiveLaunchPlanListRequest getDefaul "l/core/identifier.proto\032\035flyteidl/core/i" + "nterface.proto\032\034flyteidl/core/security.p" + "roto\032\035flyteidl/admin/schedule.proto\032\033fly" + - "teidl/admin/common.proto\032\037google/protobu" + - "f/timestamp.proto\032\036google/protobuf/wrapp" + - "ers.proto\"n\n\027LaunchPlanCreateRequest\022%\n\002" + - "id\030\001 \001(\0132\031.flyteidl.core.Identifier\022,\n\004s" + - "pec\030\002 \001(\0132\036.flyteidl.admin.LaunchPlanSpe" + - "c\"\032\n\030LaunchPlanCreateResponse\"\225\001\n\nLaunch" + - "Plan\022%\n\002id\030\001 \001(\0132\031.flyteidl.core.Identif" + - "ier\022,\n\004spec\030\002 \001(\0132\036.flyteidl.admin.Launc" + - "hPlanSpec\0222\n\007closure\030\003 \001(\0132!.flyteidl.ad" + - "min.LaunchPlanClosure\"Q\n\016LaunchPlanList\022" + - "0\n\014launch_plans\030\001 \003(\0132\032.flyteidl.admin.L" + - "aunchPlan\022\r\n\005token\030\002 \001(\t\"J\n\004Auth\022\032\n\022assu" + - "mable_iam_role\030\001 \001(\t\022\"\n\032kubernetes_servi" + - "ce_account\030\002 \001(\t:\002\030\001\"\260\005\n\016LaunchPlanSpec\022" + - ".\n\013workflow_id\030\001 \001(\0132\031.flyteidl.core.Ide" + - "ntifier\022;\n\017entity_metadata\030\002 \001(\0132\".flyte" + - "idl.admin.LaunchPlanMetadata\0223\n\016default_" + - "inputs\030\003 \001(\0132\033.flyteidl.core.ParameterMa" + - "p\022/\n\014fixed_inputs\030\004 \001(\0132\031.flyteidl.core." + - "LiteralMap\022\020\n\004role\030\005 \001(\tB\002\030\001\022&\n\006labels\030\006" + - " \001(\0132\026.flyteidl.admin.Labels\0220\n\013annotati" + - "ons\030\007 \001(\0132\033.flyteidl.admin.Annotations\022&" + - "\n\004auth\030\010 \001(\0132\024.flyteidl.admin.AuthB\002\030\001\022/" + - "\n\tauth_role\030\t \001(\0132\030.flyteidl.admin.AuthR" + - "oleB\002\030\001\0228\n\020security_context\030\n \001(\0132\036.flyt" + - "eidl.core.SecurityContext\022;\n\022quality_of_" + - "service\030\020 \001(\0132\037.flyteidl.core.QualityOfS" + - "ervice\022C\n\026raw_output_data_config\030\021 \001(\0132#" + - ".flyteidl.admin.RawOutputDataConfig\022\027\n\017m" + - "ax_parallelism\030\022 \001(\005\0221\n\rinterruptible\030\023 " + - "\001(\0132\032.google.protobuf.BoolValue\"\217\002\n\021Laun" + - "chPlanClosure\022.\n\005state\030\001 \001(\0162\037.flyteidl." + - "admin.LaunchPlanState\0224\n\017expected_inputs" + - "\030\002 \001(\0132\033.flyteidl.core.ParameterMap\0224\n\020e" + - "xpected_outputs\030\003 \001(\0132\032.flyteidl.core.Va" + - "riableMap\022.\n\ncreated_at\030\004 \001(\0132\032.google.p" + - "rotobuf.Timestamp\022.\n\nupdated_at\030\005 \001(\0132\032." + - "google.protobuf.Timestamp\"u\n\022LaunchPlanM" + - "etadata\022*\n\010schedule\030\001 \001(\0132\030.flyteidl.adm" + - "in.Schedule\0223\n\rnotifications\030\002 \003(\0132\034.fly" + - "teidl.admin.Notification\"p\n\027LaunchPlanUp" + - "dateRequest\022%\n\002id\030\001 \001(\0132\031.flyteidl.core." + - "Identifier\022.\n\005state\030\002 \001(\0162\037.flyteidl.adm" + - "in.LaunchPlanState\"\032\n\030LaunchPlanUpdateRe" + - "sponse\"L\n\027ActiveLaunchPlanRequest\0221\n\002id\030" + - "\001 \001(\0132%.flyteidl.admin.NamedEntityIdenti" + - "fier\"\203\001\n\033ActiveLaunchPlanListRequest\022\017\n\007" + - "project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\r\n\005limit\030\003" + - " \001(\r\022\r\n\005token\030\004 \001(\t\022%\n\007sort_by\030\005 \001(\0132\024.f" + - "lyteidl.admin.Sort*+\n\017LaunchPlanState\022\014\n" + - "\010INACTIVE\020\000\022\n\n\006ACTIVE\020\001B7Z5github.com/fl" + - "yteorg/flyteidl/gen/pb-go/flyteidl/admin" + - "b\006proto3" + "teidl/admin/common.proto\032\'flyteidl/admin" + + "/entity_description.proto\032\037google/protob" + + "uf/timestamp.proto\032\036google/protobuf/wrap" + + "pers.proto\"n\n\027LaunchPlanCreateRequest\022%\n" + + "\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\022,\n\004" + + "spec\030\002 \001(\0132\036.flyteidl.admin.LaunchPlanSp" + + "ec\"\032\n\030LaunchPlanCreateResponse\"\225\001\n\nLaunc" + + "hPlan\022%\n\002id\030\001 \001(\0132\031.flyteidl.core.Identi" + + "fier\022,\n\004spec\030\002 \001(\0132\036.flyteidl.admin.Laun" + + "chPlanSpec\0222\n\007closure\030\003 \001(\0132!.flyteidl.a" + + "dmin.LaunchPlanClosure\"Q\n\016LaunchPlanList" + + "\0220\n\014launch_plans\030\001 \003(\0132\032.flyteidl.admin." + + "LaunchPlan\022\r\n\005token\030\002 \001(\t\"J\n\004Auth\022\032\n\022ass" + + "umable_iam_role\030\001 \001(\t\022\"\n\032kubernetes_serv" + + "ice_account\030\002 \001(\t:\002\030\001\"\357\005\n\016LaunchPlanSpec" + + "\022.\n\013workflow_id\030\001 \001(\0132\031.flyteidl.core.Id" + + "entifier\022;\n\017entity_metadata\030\002 \001(\0132\".flyt" + + "eidl.admin.LaunchPlanMetadata\0223\n\016default" + + "_inputs\030\003 \001(\0132\033.flyteidl.core.ParameterM" + + "ap\022/\n\014fixed_inputs\030\004 \001(\0132\031.flyteidl.core" + + ".LiteralMap\022\020\n\004role\030\005 \001(\tB\002\030\001\022&\n\006labels\030" + + "\006 \001(\0132\026.flyteidl.admin.Labels\0220\n\013annotat" + + "ions\030\007 \001(\0132\033.flyteidl.admin.Annotations\022" + + "&\n\004auth\030\010 \001(\0132\024.flyteidl.admin.AuthB\002\030\001\022" + + "/\n\tauth_role\030\t \001(\0132\030.flyteidl.admin.Auth" + + "RoleB\002\030\001\0228\n\020security_context\030\n \001(\0132\036.fly" + + "teidl.core.SecurityContext\022;\n\022quality_of" + + "_service\030\020 \001(\0132\037.flyteidl.core.QualityOf" + + "Service\022C\n\026raw_output_data_config\030\021 \001(\0132" + + "#.flyteidl.admin.RawOutputDataConfig\022\027\n\017" + + "max_parallelism\030\022 \001(\005\0221\n\rinterruptible\030\023" + + " \001(\0132\032.google.protobuf.BoolValue\022=\n\022enti" + + "ty_description\030\024 \001(\0132!.flyteidl.admin.En" + + "tityDescription\"\217\002\n\021LaunchPlanClosure\022.\n" + + "\005state\030\001 \001(\0162\037.flyteidl.admin.LaunchPlan" + + "State\0224\n\017expected_inputs\030\002 \001(\0132\033.flyteid" + + "l.core.ParameterMap\0224\n\020expected_outputs\030" + + "\003 \001(\0132\032.flyteidl.core.VariableMap\022.\n\ncre" + + "ated_at\030\004 \001(\0132\032.google.protobuf.Timestam" + + "p\022.\n\nupdated_at\030\005 \001(\0132\032.google.protobuf." + + "Timestamp\"u\n\022LaunchPlanMetadata\022*\n\010sched" + + "ule\030\001 \001(\0132\030.flyteidl.admin.Schedule\0223\n\rn" + + "otifications\030\002 \003(\0132\034.flyteidl.admin.Noti" + + "fication\"p\n\027LaunchPlanUpdateRequest\022%\n\002i" + + "d\030\001 \001(\0132\031.flyteidl.core.Identifier\022.\n\005st" + + "ate\030\002 \001(\0162\037.flyteidl.admin.LaunchPlanSta" + + "te\"\032\n\030LaunchPlanUpdateResponse\"L\n\027Active" + + "LaunchPlanRequest\0221\n\002id\030\001 \001(\0132%.flyteidl" + + ".admin.NamedEntityIdentifier\"\203\001\n\033ActiveL" + + "aunchPlanListRequest\022\017\n\007project\030\001 \001(\t\022\016\n" + + "\006domain\030\002 \001(\t\022\r\n\005limit\030\003 \001(\r\022\r\n\005token\030\004 " + + "\001(\t\022%\n\007sort_by\030\005 \001(\0132\024.flyteidl.admin.So" + + "rt*+\n\017LaunchPlanState\022\014\n\010INACTIVE\020\000\022\n\n\006A" + + "CTIVE\020\001B7Z5github.com/flyteorg/flyteidl/" + + "gen/pb-go/flyteidl/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -14288,6 +14544,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.core.Security.getDescriptor(), flyteidl.admin.ScheduleOuterClass.getDescriptor(), flyteidl.admin.Common.getDescriptor(), + flyteidl.admin.EntityDescriptionOuterClass.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), com.google.protobuf.WrappersProto.getDescriptor(), }, assigner); @@ -14326,7 +14583,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_LaunchPlanSpec_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_LaunchPlanSpec_descriptor, - new java.lang.String[] { "WorkflowId", "EntityMetadata", "DefaultInputs", "FixedInputs", "Role", "Labels", "Annotations", "Auth", "AuthRole", "SecurityContext", "QualityOfService", "RawOutputDataConfig", "MaxParallelism", "Interruptible", }); + new java.lang.String[] { "WorkflowId", "EntityMetadata", "DefaultInputs", "FixedInputs", "Role", "Labels", "Annotations", "Auth", "AuthRole", "SecurityContext", "QualityOfService", "RawOutputDataConfig", "MaxParallelism", "Interruptible", "EntityDescription", }); internal_static_flyteidl_admin_LaunchPlanClosure_descriptor = getDescriptor().getMessageTypes().get(6); internal_static_flyteidl_admin_LaunchPlanClosure_fieldAccessorTable = new @@ -14370,6 +14627,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.core.Security.getDescriptor(); flyteidl.admin.ScheduleOuterClass.getDescriptor(); flyteidl.admin.Common.getDescriptor(); + flyteidl.admin.EntityDescriptionOuterClass.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); com.google.protobuf.WrappersProto.getDescriptor(); } diff --git a/gen/pb-java/flyteidl/admin/ProjectOuterClass.java b/gen/pb-java/flyteidl/admin/ProjectOuterClass.java index 68484315d..aa32e1bd8 100644 --- a/gen/pb-java/flyteidl/admin/ProjectOuterClass.java +++ b/gen/pb-java/flyteidl/admin/ProjectOuterClass.java @@ -892,6 +892,45 @@ flyteidl.admin.ProjectOuterClass.DomainOrBuilder getDomainsOrBuilder( * .flyteidl.admin.Project.ProjectState state = 6; */ flyteidl.admin.ProjectOuterClass.Project.ProjectState getState(); + + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 7; + */ + java.util.List + getTagsList(); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 7; + */ + int getTagsCount(); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 7; + */ + java.lang.String getTags(int index); + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 7; + */ + com.google.protobuf.ByteString + getTagsBytes(int index); } /** *
@@ -915,6 +954,7 @@ private Project() {
       domains_ = java.util.Collections.emptyList();
       description_ = "";
       state_ = 0;
+      tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
     }
 
     @java.lang.Override
@@ -987,6 +1027,15 @@ private Project(
               state_ = rawValue;
               break;
             }
+            case 58: {
+              java.lang.String s = input.readStringRequireUtf8();
+              if (!((mutable_bitField0_ & 0x00000040) != 0)) {
+                tags_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00000040;
+              }
+              tags_.add(s);
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -1005,6 +1054,9 @@ private Project(
         if (((mutable_bitField0_ & 0x00000004) != 0)) {
           domains_ = java.util.Collections.unmodifiableList(domains_);
         }
+        if (((mutable_bitField0_ & 0x00000040) != 0)) {
+          tags_ = tags_.getUnmodifiableView();
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
@@ -1364,6 +1416,55 @@ public flyteidl.admin.ProjectOuterClass.Project.ProjectState getState() {
       return result == null ? flyteidl.admin.ProjectOuterClass.Project.ProjectState.UNRECOGNIZED : result;
     }
 
+    public static final int TAGS_FIELD_NUMBER = 7;
+    private com.google.protobuf.LazyStringList tags_;
+    /**
+     * 
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 7; + */ + public com.google.protobuf.ProtocolStringList + getTagsList() { + return tags_; + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 7; + */ + public int getTagsCount() { + return tags_.size(); + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 7; + */ + public java.lang.String getTags(int index) { + return tags_.get(index); + } + /** + *
+     * User-specified tags. These are arbitrary and can be used for searching
+     * filtering and discovering entities.
+     * 
+ * + * repeated string tags = 7; + */ + public com.google.protobuf.ByteString + getTagsBytes(int index) { + return tags_.getByteString(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -1396,6 +1497,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (state_ != flyteidl.admin.ProjectOuterClass.Project.ProjectState.ACTIVE.getNumber()) { output.writeEnum(6, state_); } + for (int i = 0; i < tags_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 7, tags_.getRaw(i)); + } unknownFields.writeTo(output); } @@ -1426,6 +1530,14 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeEnumSize(6, state_); } + { + int dataSize = 0; + for (int i = 0; i < tags_.size(); i++) { + dataSize += computeStringSizeNoTag(tags_.getRaw(i)); + } + size += dataSize; + size += 1 * getTagsList().size(); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -1455,6 +1567,8 @@ public boolean equals(final java.lang.Object obj) { .equals(other.getLabels())) return false; } if (state_ != other.state_) return false; + if (!getTagsList() + .equals(other.getTagsList())) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -1482,6 +1596,10 @@ public int hashCode() { } hash = (37 * hash) + STATE_FIELD_NUMBER; hash = (53 * hash) + state_; + if (getTagsCount() > 0) { + hash = (37 * hash) + TAGS_FIELD_NUMBER; + hash = (53 * hash) + getTagsList().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -1640,6 +1758,8 @@ public Builder clear() { } state_ = 0; + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000040); return this; } @@ -1686,6 +1806,11 @@ public flyteidl.admin.ProjectOuterClass.Project buildPartial() { result.labels_ = labelsBuilder_.build(); } result.state_ = state_; + if (((bitField0_ & 0x00000040) != 0)) { + tags_ = tags_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000040); + } + result.tags_ = tags_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -1779,6 +1904,16 @@ public Builder mergeFrom(flyteidl.admin.ProjectOuterClass.Project other) { if (other.state_ != 0) { setStateValue(other.getStateValue()); } + if (!other.tags_.isEmpty()) { + if (tags_.isEmpty()) { + tags_ = other.tags_; + bitField0_ = (bitField0_ & ~0x00000040); + } else { + ensureTagsIsMutable(); + tags_.addAll(other.tags_); + } + onChanged(); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -2502,6 +2637,145 @@ public Builder clearState() { onChanged(); return this; } + + private com.google.protobuf.LazyStringList tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureTagsIsMutable() { + if (!((bitField0_ & 0x00000040) != 0)) { + tags_ = new com.google.protobuf.LazyStringArrayList(tags_); + bitField0_ |= 0x00000040; + } + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 7; + */ + public com.google.protobuf.ProtocolStringList + getTagsList() { + return tags_.getUnmodifiableView(); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 7; + */ + public int getTagsCount() { + return tags_.size(); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 7; + */ + public java.lang.String getTags(int index) { + return tags_.get(index); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 7; + */ + public com.google.protobuf.ByteString + getTagsBytes(int index) { + return tags_.getByteString(index); + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 7; + */ + public Builder setTags( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.set(index, value); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 7; + */ + public Builder addTags( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.add(value); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 7; + */ + public Builder addAllTags( + java.lang.Iterable values) { + ensureTagsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, tags_); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 7; + */ + public Builder clearTags() { + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000040); + onChanged(); + return this; + } + /** + *
+       * User-specified tags. These are arbitrary and can be used for searching
+       * filtering and discovering entities.
+       * 
+ * + * repeated string tags = 7; + */ + public Builder addTagsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureTagsIsMutable(); + tags_.add(value); + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -6251,23 +6525,23 @@ public flyteidl.admin.ProjectOuterClass.ProjectUpdateResponse getDefaultInstance java.lang.String[] descriptorData = { "\n\034flyteidl/admin/project.proto\022\016flyteidl" + ".admin\032\033flyteidl/admin/common.proto\"\"\n\006D" + - "omain\022\n\n\002id\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\"\376\001\n\007Proj" + + "omain\022\n\n\002id\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\"\214\002\n\007Proj" + "ect\022\n\n\002id\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\'\n\007domains" + "\030\003 \003(\0132\026.flyteidl.admin.Domain\022\023\n\013descri" + "ption\030\004 \001(\t\022&\n\006labels\030\005 \001(\0132\026.flyteidl.a" + "dmin.Labels\0223\n\005state\030\006 \001(\0162$.flyteidl.ad" + - "min.Project.ProjectState\">\n\014ProjectState" + - "\022\n\n\006ACTIVE\020\000\022\014\n\010ARCHIVED\020\001\022\024\n\020SYSTEM_GEN" + - "ERATED\020\002\"D\n\010Projects\022)\n\010projects\030\001 \003(\0132\027" + - ".flyteidl.admin.Project\022\r\n\005token\030\002 \001(\t\"j" + - "\n\022ProjectListRequest\022\r\n\005limit\030\001 \001(\r\022\r\n\005t" + - "oken\030\002 \001(\t\022\017\n\007filters\030\003 \001(\t\022%\n\007sort_by\030\004" + - " \001(\0132\024.flyteidl.admin.Sort\"B\n\026ProjectReg" + - "isterRequest\022(\n\007project\030\001 \001(\0132\027.flyteidl" + - ".admin.Project\"\031\n\027ProjectRegisterRespons" + - "e\"\027\n\025ProjectUpdateResponseB7Z5github.com" + - "/flyteorg/flyteidl/gen/pb-go/flyteidl/ad" + - "minb\006proto3" + "min.Project.ProjectState\022\014\n\004tags\030\007 \003(\t\">" + + "\n\014ProjectState\022\n\n\006ACTIVE\020\000\022\014\n\010ARCHIVED\020\001" + + "\022\024\n\020SYSTEM_GENERATED\020\002\"D\n\010Projects\022)\n\010pr" + + "ojects\030\001 \003(\0132\027.flyteidl.admin.Project\022\r\n" + + "\005token\030\002 \001(\t\"j\n\022ProjectListRequest\022\r\n\005li" + + "mit\030\001 \001(\r\022\r\n\005token\030\002 \001(\t\022\017\n\007filters\030\003 \001(" + + "\t\022%\n\007sort_by\030\004 \001(\0132\024.flyteidl.admin.Sort" + + "\"B\n\026ProjectRegisterRequest\022(\n\007project\030\001 " + + "\001(\0132\027.flyteidl.admin.Project\"\031\n\027ProjectR" + + "egisterResponse\"\027\n\025ProjectUpdateResponse" + + "B7Z5github.com/flyteorg/flyteidl/gen/pb-" + + "go/flyteidl/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -6293,7 +6567,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_Project_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_Project_descriptor, - new java.lang.String[] { "Id", "Name", "Domains", "Description", "Labels", "State", }); + new java.lang.String[] { "Id", "Name", "Domains", "Description", "Labels", "State", "Tags", }); internal_static_flyteidl_admin_Projects_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_flyteidl_admin_Projects_fieldAccessorTable = new diff --git a/gen/pb-java/flyteidl/admin/TaskOuterClass.java b/gen/pb-java/flyteidl/admin/TaskOuterClass.java index 1c86850c9..f2d5c1720 100644 --- a/gen/pb-java/flyteidl/admin/TaskOuterClass.java +++ b/gen/pb-java/flyteidl/admin/TaskOuterClass.java @@ -3441,6 +3441,31 @@ public interface TaskSpecOrBuilder extends * .flyteidl.core.TaskTemplate template = 1; */ flyteidl.core.Tasks.TaskTemplateOrBuilder getTemplateOrBuilder(); + + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the task.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + boolean hasEntityDescription(); + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the task.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getEntityDescription(); + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the task.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder getEntityDescriptionOrBuilder(); } /** *
@@ -3498,6 +3523,19 @@ private TaskSpec(
 
               break;
             }
+            case 18: {
+              flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder subBuilder = null;
+              if (entityDescription_ != null) {
+                subBuilder = entityDescription_.toBuilder();
+              }
+              entityDescription_ = input.readMessage(flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(entityDescription_);
+                entityDescription_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -3563,6 +3601,39 @@ public flyteidl.core.Tasks.TaskTemplateOrBuilder getTemplateOrBuilder() {
       return getTemplate();
     }
 
+    public static final int ENTITY_DESCRIPTION_FIELD_NUMBER = 2;
+    private flyteidl.admin.EntityDescriptionOuterClass.EntityDescription entityDescription_;
+    /**
+     * 
+     * EntityDescription encapsulates all the detailed documentation for the task.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + public boolean hasEntityDescription() { + return entityDescription_ != null; + } + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the task.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getEntityDescription() { + return entityDescription_ == null ? flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.getDefaultInstance() : entityDescription_; + } + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the task.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder getEntityDescriptionOrBuilder() { + return getEntityDescription(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -3580,6 +3651,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (template_ != null) { output.writeMessage(1, getTemplate()); } + if (entityDescription_ != null) { + output.writeMessage(2, getEntityDescription()); + } unknownFields.writeTo(output); } @@ -3593,6 +3667,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(1, getTemplate()); } + if (entityDescription_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getEntityDescription()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -3613,6 +3691,11 @@ public boolean equals(final java.lang.Object obj) { if (!getTemplate() .equals(other.getTemplate())) return false; } + if (hasEntityDescription() != other.hasEntityDescription()) return false; + if (hasEntityDescription()) { + if (!getEntityDescription() + .equals(other.getEntityDescription())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -3628,6 +3711,10 @@ public int hashCode() { hash = (37 * hash) + TEMPLATE_FIELD_NUMBER; hash = (53 * hash) + getTemplate().hashCode(); } + if (hasEntityDescription()) { + hash = (37 * hash) + ENTITY_DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getEntityDescription().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -3771,6 +3858,12 @@ public Builder clear() { template_ = null; templateBuilder_ = null; } + if (entityDescriptionBuilder_ == null) { + entityDescription_ = null; + } else { + entityDescription_ = null; + entityDescriptionBuilder_ = null; + } return this; } @@ -3802,6 +3895,11 @@ public flyteidl.admin.TaskOuterClass.TaskSpec buildPartial() { } else { result.template_ = templateBuilder_.build(); } + if (entityDescriptionBuilder_ == null) { + result.entityDescription_ = entityDescription_; + } else { + result.entityDescription_ = entityDescriptionBuilder_.build(); + } onBuilt(); return result; } @@ -3853,6 +3951,9 @@ public Builder mergeFrom(flyteidl.admin.TaskOuterClass.TaskSpec other) { if (other.hasTemplate()) { mergeTemplate(other.getTemplate()); } + if (other.hasEntityDescription()) { + mergeEntityDescription(other.getEntityDescription()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -4034,6 +4135,159 @@ public flyteidl.core.Tasks.TaskTemplateOrBuilder getTemplateOrBuilder() { } return templateBuilder_; } + + private flyteidl.admin.EntityDescriptionOuterClass.EntityDescription entityDescription_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription, flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder> entityDescriptionBuilder_; + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the task.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + public boolean hasEntityDescription() { + return entityDescriptionBuilder_ != null || entityDescription_ != null; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the task.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getEntityDescription() { + if (entityDescriptionBuilder_ == null) { + return entityDescription_ == null ? flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.getDefaultInstance() : entityDescription_; + } else { + return entityDescriptionBuilder_.getMessage(); + } + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the task.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + public Builder setEntityDescription(flyteidl.admin.EntityDescriptionOuterClass.EntityDescription value) { + if (entityDescriptionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + entityDescription_ = value; + onChanged(); + } else { + entityDescriptionBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the task.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + public Builder setEntityDescription( + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder builderForValue) { + if (entityDescriptionBuilder_ == null) { + entityDescription_ = builderForValue.build(); + onChanged(); + } else { + entityDescriptionBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the task.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + public Builder mergeEntityDescription(flyteidl.admin.EntityDescriptionOuterClass.EntityDescription value) { + if (entityDescriptionBuilder_ == null) { + if (entityDescription_ != null) { + entityDescription_ = + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.newBuilder(entityDescription_).mergeFrom(value).buildPartial(); + } else { + entityDescription_ = value; + } + onChanged(); + } else { + entityDescriptionBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the task.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + public Builder clearEntityDescription() { + if (entityDescriptionBuilder_ == null) { + entityDescription_ = null; + onChanged(); + } else { + entityDescription_ = null; + entityDescriptionBuilder_ = null; + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the task.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder getEntityDescriptionBuilder() { + + onChanged(); + return getEntityDescriptionFieldBuilder().getBuilder(); + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the task.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder getEntityDescriptionOrBuilder() { + if (entityDescriptionBuilder_ != null) { + return entityDescriptionBuilder_.getMessageOrBuilder(); + } else { + return entityDescription_ == null ? + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.getDefaultInstance() : entityDescription_; + } + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the task.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription, flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder> + getEntityDescriptionFieldBuilder() { + if (entityDescriptionBuilder_ == null) { + entityDescriptionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription, flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder>( + getEntityDescription(), + getParentForChildren(), + isClean()); + entityDescription_ = null; + } + return entityDescriptionBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -5060,20 +5314,22 @@ public flyteidl.admin.TaskOuterClass.TaskClosure getDefaultInstanceForType() { "min\032\036flyteidl/core/identifier.proto\032\031fly" + "teidl/core/tasks.proto\032\034flyteidl/core/co" + "mpiler.proto\032\037google/protobuf/timestamp." + - "proto\"b\n\021TaskCreateRequest\022%\n\002id\030\001 \001(\0132\031" + - ".flyteidl.core.Identifier\022&\n\004spec\030\002 \001(\0132" + - "\030.flyteidl.admin.TaskSpec\"\024\n\022TaskCreateR" + - "esponse\"[\n\004Task\022%\n\002id\030\001 \001(\0132\031.flyteidl.c" + - "ore.Identifier\022,\n\007closure\030\002 \001(\0132\033.flytei" + - "dl.admin.TaskClosure\">\n\010TaskList\022#\n\005task" + - "s\030\001 \003(\0132\024.flyteidl.admin.Task\022\r\n\005token\030\002" + - " \001(\t\"9\n\010TaskSpec\022-\n\010template\030\001 \001(\0132\033.fly" + - "teidl.core.TaskTemplate\"q\n\013TaskClosure\0222" + - "\n\rcompiled_task\030\001 \001(\0132\033.flyteidl.core.Co" + - "mpiledTask\022.\n\ncreated_at\030\002 \001(\0132\032.google." + - "protobuf.TimestampB7Z5github.com/flyteor" + - "g/flyteidl/gen/pb-go/flyteidl/adminb\006pro" + - "to3" + "proto\032\'flyteidl/admin/entity_description" + + ".proto\"b\n\021TaskCreateRequest\022%\n\002id\030\001 \001(\0132" + + "\031.flyteidl.core.Identifier\022&\n\004spec\030\002 \001(\013" + + "2\030.flyteidl.admin.TaskSpec\"\024\n\022TaskCreate" + + "Response\"[\n\004Task\022%\n\002id\030\001 \001(\0132\031.flyteidl." + + "core.Identifier\022,\n\007closure\030\002 \001(\0132\033.flyte" + + "idl.admin.TaskClosure\">\n\010TaskList\022#\n\005tas" + + "ks\030\001 \003(\0132\024.flyteidl.admin.Task\022\r\n\005token\030" + + "\002 \001(\t\"x\n\010TaskSpec\022-\n\010template\030\001 \001(\0132\033.fl" + + "yteidl.core.TaskTemplate\022=\n\022entity_descr" + + "iption\030\002 \001(\0132!.flyteidl.admin.EntityDesc" + + "ription\"q\n\013TaskClosure\0222\n\rcompiled_task\030" + + "\001 \001(\0132\033.flyteidl.core.CompiledTask\022.\n\ncr" + + "eated_at\030\002 \001(\0132\032.google.protobuf.Timesta" + + "mpB7Z5github.com/flyteorg/flyteidl/gen/p" + + "b-go/flyteidl/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -5090,6 +5346,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.core.Tasks.getDescriptor(), flyteidl.core.Compiler.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), + flyteidl.admin.EntityDescriptionOuterClass.getDescriptor(), }, assigner); internal_static_flyteidl_admin_TaskCreateRequest_descriptor = getDescriptor().getMessageTypes().get(0); @@ -5120,7 +5377,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_TaskSpec_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_TaskSpec_descriptor, - new java.lang.String[] { "Template", }); + new java.lang.String[] { "Template", "EntityDescription", }); internal_static_flyteidl_admin_TaskClosure_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_flyteidl_admin_TaskClosure_fieldAccessorTable = new @@ -5131,6 +5388,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.core.Tasks.getDescriptor(); flyteidl.core.Compiler.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); + flyteidl.admin.EntityDescriptionOuterClass.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) diff --git a/gen/pb-java/flyteidl/admin/WorkflowOuterClass.java b/gen/pb-java/flyteidl/admin/WorkflowOuterClass.java index 50c0869ce..09a9f755c 100644 --- a/gen/pb-java/flyteidl/admin/WorkflowOuterClass.java +++ b/gen/pb-java/flyteidl/admin/WorkflowOuterClass.java @@ -3495,6 +3495,31 @@ public interface WorkflowSpecOrBuilder extends */ flyteidl.core.Workflow.WorkflowTemplateOrBuilder getSubWorkflowsOrBuilder( int index); + + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the workflow.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + boolean hasEntityDescription(); + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the workflow.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getEntityDescription(); + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the workflow.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder getEntityDescriptionOrBuilder(); } /** *
@@ -3562,6 +3587,19 @@ private WorkflowSpec(
                   input.readMessage(flyteidl.core.Workflow.WorkflowTemplate.parser(), extensionRegistry));
               break;
             }
+            case 26: {
+              flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder subBuilder = null;
+              if (entityDescription_ != null) {
+                subBuilder = entityDescription_.toBuilder();
+              }
+              entityDescription_ = input.readMessage(flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(entityDescription_);
+                entityDescription_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -3696,6 +3734,39 @@ public flyteidl.core.Workflow.WorkflowTemplateOrBuilder getSubWorkflowsOrBuilder
       return subWorkflows_.get(index);
     }
 
+    public static final int ENTITY_DESCRIPTION_FIELD_NUMBER = 3;
+    private flyteidl.admin.EntityDescriptionOuterClass.EntityDescription entityDescription_;
+    /**
+     * 
+     * EntityDescription encapsulates all the detailed documentation for the workflow.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + public boolean hasEntityDescription() { + return entityDescription_ != null; + } + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the workflow.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getEntityDescription() { + return entityDescription_ == null ? flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.getDefaultInstance() : entityDescription_; + } + /** + *
+     * EntityDescription encapsulates all the detailed documentation for the workflow.
+     * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder getEntityDescriptionOrBuilder() { + return getEntityDescription(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -3716,6 +3787,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) for (int i = 0; i < subWorkflows_.size(); i++) { output.writeMessage(2, subWorkflows_.get(i)); } + if (entityDescription_ != null) { + output.writeMessage(3, getEntityDescription()); + } unknownFields.writeTo(output); } @@ -3733,6 +3807,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(2, subWorkflows_.get(i)); } + if (entityDescription_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getEntityDescription()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -3755,6 +3833,11 @@ public boolean equals(final java.lang.Object obj) { } if (!getSubWorkflowsList() .equals(other.getSubWorkflowsList())) return false; + if (hasEntityDescription() != other.hasEntityDescription()) return false; + if (hasEntityDescription()) { + if (!getEntityDescription() + .equals(other.getEntityDescription())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -3774,6 +3857,10 @@ public int hashCode() { hash = (37 * hash) + SUB_WORKFLOWS_FIELD_NUMBER; hash = (53 * hash) + getSubWorkflowsList().hashCode(); } + if (hasEntityDescription()) { + hash = (37 * hash) + ENTITY_DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getEntityDescription().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -3924,6 +4011,12 @@ public Builder clear() { } else { subWorkflowsBuilder_.clear(); } + if (entityDescriptionBuilder_ == null) { + entityDescription_ = null; + } else { + entityDescription_ = null; + entityDescriptionBuilder_ = null; + } return this; } @@ -3966,6 +4059,11 @@ public flyteidl.admin.WorkflowOuterClass.WorkflowSpec buildPartial() { } else { result.subWorkflows_ = subWorkflowsBuilder_.build(); } + if (entityDescriptionBuilder_ == null) { + result.entityDescription_ = entityDescription_; + } else { + result.entityDescription_ = entityDescriptionBuilder_.build(); + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -4044,6 +4142,9 @@ public Builder mergeFrom(flyteidl.admin.WorkflowOuterClass.WorkflowSpec other) { } } } + if (other.hasEntityDescription()) { + mergeEntityDescription(other.getEntityDescription()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -4574,6 +4675,159 @@ public flyteidl.core.Workflow.WorkflowTemplate.Builder addSubWorkflowsBuilder( } return subWorkflowsBuilder_; } + + private flyteidl.admin.EntityDescriptionOuterClass.EntityDescription entityDescription_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription, flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder> entityDescriptionBuilder_; + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the workflow.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + public boolean hasEntityDescription() { + return entityDescriptionBuilder_ != null || entityDescription_ != null; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the workflow.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription getEntityDescription() { + if (entityDescriptionBuilder_ == null) { + return entityDescription_ == null ? flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.getDefaultInstance() : entityDescription_; + } else { + return entityDescriptionBuilder_.getMessage(); + } + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the workflow.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + public Builder setEntityDescription(flyteidl.admin.EntityDescriptionOuterClass.EntityDescription value) { + if (entityDescriptionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + entityDescription_ = value; + onChanged(); + } else { + entityDescriptionBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the workflow.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + public Builder setEntityDescription( + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder builderForValue) { + if (entityDescriptionBuilder_ == null) { + entityDescription_ = builderForValue.build(); + onChanged(); + } else { + entityDescriptionBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the workflow.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + public Builder mergeEntityDescription(flyteidl.admin.EntityDescriptionOuterClass.EntityDescription value) { + if (entityDescriptionBuilder_ == null) { + if (entityDescription_ != null) { + entityDescription_ = + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.newBuilder(entityDescription_).mergeFrom(value).buildPartial(); + } else { + entityDescription_ = value; + } + onChanged(); + } else { + entityDescriptionBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the workflow.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + public Builder clearEntityDescription() { + if (entityDescriptionBuilder_ == null) { + entityDescription_ = null; + onChanged(); + } else { + entityDescription_ = null; + entityDescriptionBuilder_ = null; + } + + return this; + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the workflow.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder getEntityDescriptionBuilder() { + + onChanged(); + return getEntityDescriptionFieldBuilder().getBuilder(); + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the workflow.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + public flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder getEntityDescriptionOrBuilder() { + if (entityDescriptionBuilder_ != null) { + return entityDescriptionBuilder_.getMessageOrBuilder(); + } else { + return entityDescription_ == null ? + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.getDefaultInstance() : entityDescription_; + } + } + /** + *
+       * EntityDescription encapsulates all the detailed documentation for the workflow.
+       * 
+ * + * .flyteidl.admin.EntityDescription entity_description = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription, flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder> + getEntityDescriptionFieldBuilder() { + if (entityDescriptionBuilder_ == null) { + entityDescriptionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.EntityDescriptionOuterClass.EntityDescription, flyteidl.admin.EntityDescriptionOuterClass.EntityDescription.Builder, flyteidl.admin.EntityDescriptionOuterClass.EntityDescriptionOrBuilder>( + getEntityDescription(), + getParentForChildren(), + isClean()); + entityDescription_ = null; + } + return entityDescriptionBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -5598,23 +5852,25 @@ public flyteidl.admin.WorkflowOuterClass.WorkflowClosure getDefaultInstanceForTy "l.admin\032\034flyteidl/core/compiler.proto\032\036f" + "lyteidl/core/identifier.proto\032\034flyteidl/" + "core/workflow.proto\032\037google/protobuf/tim" + - "estamp.proto\"j\n\025WorkflowCreateRequest\022%\n" + - "\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\022*\n\004" + - "spec\030\002 \001(\0132\034.flyteidl.admin.WorkflowSpec" + - "\"\030\n\026WorkflowCreateResponse\"c\n\010Workflow\022%" + - "\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\0220\n" + - "\007closure\030\002 \001(\0132\037.flyteidl.admin.Workflow" + - "Closure\"J\n\014WorkflowList\022+\n\tworkflows\030\001 \003" + - "(\0132\030.flyteidl.admin.Workflow\022\r\n\005token\030\002 " + - "\001(\t\"y\n\014WorkflowSpec\0221\n\010template\030\001 \001(\0132\037." + - "flyteidl.core.WorkflowTemplate\0226\n\rsub_wo" + - "rkflows\030\002 \003(\0132\037.flyteidl.core.WorkflowTe" + - "mplate\"\204\001\n\017WorkflowClosure\022A\n\021compiled_w" + - "orkflow\030\001 \001(\0132&.flyteidl.core.CompiledWo" + - "rkflowClosure\022.\n\ncreated_at\030\002 \001(\0132\032.goog" + - "le.protobuf.TimestampB7Z5github.com/flyt" + - "eorg/flyteidl/gen/pb-go/flyteidl/adminb\006" + - "proto3" + "estamp.proto\032\'flyteidl/admin/entity_desc" + + "ription.proto\"j\n\025WorkflowCreateRequest\022%" + + "\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\022*\n" + + "\004spec\030\002 \001(\0132\034.flyteidl.admin.WorkflowSpe" + + "c\"\030\n\026WorkflowCreateResponse\"c\n\010Workflow\022" + + "%\n\002id\030\001 \001(\0132\031.flyteidl.core.Identifier\0220" + + "\n\007closure\030\002 \001(\0132\037.flyteidl.admin.Workflo" + + "wClosure\"J\n\014WorkflowList\022+\n\tworkflows\030\001 " + + "\003(\0132\030.flyteidl.admin.Workflow\022\r\n\005token\030\002" + + " \001(\t\"\270\001\n\014WorkflowSpec\0221\n\010template\030\001 \001(\0132" + + "\037.flyteidl.core.WorkflowTemplate\0226\n\rsub_" + + "workflows\030\002 \003(\0132\037.flyteidl.core.Workflow" + + "Template\022=\n\022entity_description\030\003 \001(\0132!.f" + + "lyteidl.admin.EntityDescription\"\204\001\n\017Work" + + "flowClosure\022A\n\021compiled_workflow\030\001 \001(\0132&" + + ".flyteidl.core.CompiledWorkflowClosure\022." + + "\n\ncreated_at\030\002 \001(\0132\032.google.protobuf.Tim" + + "estampB7Z5github.com/flyteorg/flyteidl/g" + + "en/pb-go/flyteidl/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -5631,6 +5887,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.core.IdentifierOuterClass.getDescriptor(), flyteidl.core.Workflow.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), + flyteidl.admin.EntityDescriptionOuterClass.getDescriptor(), }, assigner); internal_static_flyteidl_admin_WorkflowCreateRequest_descriptor = getDescriptor().getMessageTypes().get(0); @@ -5661,7 +5918,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_WorkflowSpec_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_WorkflowSpec_descriptor, - new java.lang.String[] { "Template", "SubWorkflows", }); + new java.lang.String[] { "Template", "SubWorkflows", "EntityDescription", }); internal_static_flyteidl_admin_WorkflowClosure_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_flyteidl_admin_WorkflowClosure_fieldAccessorTable = new @@ -5672,6 +5929,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.core.IdentifierOuterClass.getDescriptor(); flyteidl.core.Workflow.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); + flyteidl.admin.EntityDescriptionOuterClass.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) diff --git a/gen/pb-java/flyteidl/service/Admin.java b/gen/pb-java/flyteidl/service/Admin.java index 86e569427..763ef8748 100644 --- a/gen/pb-java/flyteidl/service/Admin.java +++ b/gen/pb-java/flyteidl/service/Admin.java @@ -36,343 +36,349 @@ public static void registerAllExtensions( "l/admin/node_execution.proto\032#flyteidl/a" + "dmin/task_execution.proto\032\034flyteidl/admi" + "n/version.proto\032\033flyteidl/admin/common.p" + - "roto\032,protoc-gen-swagger/options/annotat" + - "ions.proto2\236h\n\014AdminService\022\305\002\n\nCreateTa" + - "sk\022!.flyteidl.admin.TaskCreateRequest\032\"." + - "flyteidl.admin.TaskCreateResponse\"\357\001\202\323\344\223" + - "\002\022\"\r/api/v1/tasks:\001*\222A\323\001\032&Create and reg" + - "ister a task definition.JB\n\003400\022;\n9Retur" + - "ned for bad request that may have failed" + - " validation.Je\n\003409\022^\n\\Returned for a re" + - "quest that references an identical entit" + - "y that has already been registered.\022\262\001\n\007" + - "GetTask\022 .flyteidl.admin.ObjectGetReques" + - "t\032\024.flyteidl.admin.Task\"o\202\323\344\223\002?\022=/api/v1" + - "/tasks/{id.project}/{id.domain}/{id.name" + - "}/{id.version}\222A\'\032%Retrieve an existing " + - "task definition.\022\336\001\n\013ListTaskIds\0220.flyte" + - "idl.admin.NamedEntityIdentifierListReque" + - "st\032).flyteidl.admin.NamedEntityIdentifie" + - "rList\"r\202\323\344\223\002%\022#/api/v1/task_ids/{project" + - "}/{domain}\222AD\032BFetch existing task defin" + - "ition identifiers matching input filters" + - ".\022\353\001\n\tListTasks\022#.flyteidl.admin.Resourc" + - "eListRequest\032\030.flyteidl.admin.TaskList\"\236" + - "\001\202\323\344\223\002\\\0220/api/v1/tasks/{id.project}/{id." + - "domain}/{id.name}Z(\022&/api/v1/tasks/{id.p" + - "roject}/{id.domain}\222A9\0327Fetch existing t" + - "ask definitions matching input filters.\022" + - "\331\002\n\016CreateWorkflow\022%.flyteidl.admin.Work" + - "flowCreateRequest\032&.flyteidl.admin.Workf" + - "lowCreateResponse\"\367\001\202\323\344\223\002\026\"\021/api/v1/work" + - "flows:\001*\222A\327\001\032*Create and register a work" + - "flow definition.JB\n\003400\022;\n9Returned for " + - "bad request that may have failed validat" + - "ion.Je\n\003409\022^\n\\Returned for a request th" + - "at references an identical entity that h" + - "as already been registered.\022\302\001\n\013GetWorkf" + - "low\022 .flyteidl.admin.ObjectGetRequest\032\030." + - "flyteidl.admin.Workflow\"w\202\323\344\223\002C\022A/api/v1" + - "/workflows/{id.project}/{id.domain}/{id." + - "name}/{id.version}\222A+\032)Retrieve an exist" + - "ing workflow definition.\022\355\001\n\017ListWorkflo" + - "wIds\0220.flyteidl.admin.NamedEntityIdentif" + - "ierListRequest\032).flyteidl.admin.NamedEnt" + - "ityIdentifierList\"}\202\323\344\223\002)\022\'/api/v1/workf" + - "low_ids/{project}/{domain}\222AK\032IFetch an " + - "existing workflow definition identifiers" + - " matching input filters.\022\377\001\n\rListWorkflo" + - "ws\022#.flyteidl.admin.ResourceListRequest\032" + - "\034.flyteidl.admin.WorkflowList\"\252\001\202\323\344\223\002d\0224" + - "/api/v1/workflows/{id.project}/{id.domai" + - "n}/{id.name}Z,\022*/api/v1/workflows/{id.pr" + - "oject}/{id.domain}\222A=\032;Fetch existing wo" + - "rkflow definitions matching input filter" + - "s.\022\345\002\n\020CreateLaunchPlan\022\'.flyteidl.admin" + - ".LaunchPlanCreateRequest\032(.flyteidl.admi" + - "n.LaunchPlanCreateResponse\"\375\001\202\323\344\223\002\031\"\024/ap" + - "i/v1/launch_plans:\001*\222A\332\001\032-Create and reg" + - "ister a launch plan definition.JB\n\003400\022;" + - "\n9Returned for bad request that may have" + - " failed validation.Je\n\003409\022^\n\\Returned f" + - "or a request that references an identica" + - "l entity that has already been registere" + - "d.\022\314\001\n\rGetLaunchPlan\022 .flyteidl.admin.Ob" + - "jectGetRequest\032\032.flyteidl.admin.LaunchPl" + - "an\"}\202\323\344\223\002F\022D/api/v1/launch_plans/{id.pro" + - "ject}/{id.domain}/{id.name}/{id.version}" + - "\222A.\032,Retrieve an existing launch plan de" + - "finition.\022\363\001\n\023GetActiveLaunchPlan\022\'.flyt" + - "eidl.admin.ActiveLaunchPlanRequest\032\032.fly" + - "teidl.admin.LaunchPlan\"\226\001\202\323\344\223\002@\022>/api/v1" + - "/active_launch_plans/{id.project}/{id.do" + - "main}/{id.name}\222AM\032KRetrieve the active " + - "launch plan version specified by input r" + - "equest filters.\022\353\001\n\025ListActiveLaunchPlan" + - "s\022+.flyteidl.admin.ActiveLaunchPlanListR" + - "equest\032\036.flyteidl.admin.LaunchPlanList\"\204" + - "\001\202\323\344\223\0020\022./api/v1/active_launch_plans/{pr" + - "oject}/{domain}\222AK\032IFetch the active lau" + - "nch plan versions specified by input req" + - "uest filters.\022\363\001\n\021ListLaunchPlanIds\0220.fl" + - "yteidl.admin.NamedEntityIdentifierListRe" + - "quest\032).flyteidl.admin.NamedEntityIdenti" + - "fierList\"\200\001\202\323\344\223\002,\022*/api/v1/launch_plan_i" + - "ds/{project}/{domain}\222AK\032IFetch existing" + - " launch plan definition identifiers matc" + - "hing input filters.\022\214\002\n\017ListLaunchPlans\022" + - "#.flyteidl.admin.ResourceListRequest\032\036.f" + - "lyteidl.admin.LaunchPlanList\"\263\001\202\323\344\223\002j\0227/" + - "api/v1/launch_plans/{id.project}/{id.dom" + - "ain}/{id.name}Z/\022-/api/v1/launch_plans/{" + - "id.project}/{id.domain}\222A@\032>Fetch existi" + - "ng launch plan definitions matching inpu" + - "t filters.\022\300\006\n\020UpdateLaunchPlan\022\'.flytei" + - "dl.admin.LaunchPlanUpdateRequest\032(.flyte" + - "idl.admin.LaunchPlanUpdateResponse\"\330\005\202\323\344" + - "\223\002I\032D/api/v1/launch_plans/{id.project}/{" + - "id.domain}/{id.name}/{id.version}:\001*\222A\205\005" + - "\032\202\005Update the status of an existing laun" + - "ch plan definition. At most one launch p" + - "lan version for a given {project, domain" + - ", name} can be active at a time. If this" + - " call sets a launch plan to active and e" + - "xisting version is already active, the r" + - "esult of this call will be that the form" + - "erly active launch plan will be made ina" + - "ctive and specified launch plan in this " + - "request will be made active. In the even" + - "t that the formerly active launch plan h" + - "ad a schedule associated it with it, thi" + - "s schedule will be disabled. If the refe" + - "rence launch plan in this request is bei" + - "ng set to active and has a schedule asso" + - "ciated with it, the schedule will be ena" + - "bled.\022\242\001\n\017CreateExecution\022&.flyteidl.adm" + - "in.ExecutionCreateRequest\032\'.flyteidl.adm" + - "in.ExecutionCreateResponse\">\202\323\344\223\002\027\"\022/api" + - "/v1/executions:\001*\222A\036\032\034Create a workflow " + - "execution.\022\261\001\n\021RelaunchExecution\022(.flyte" + - "idl.admin.ExecutionRelaunchRequest\032\'.fly" + - "teidl.admin.ExecutionCreateResponse\"I\202\323\344" + - "\223\002 \"\033/api/v1/executions/relaunch:\001*\222A \032\036" + - "Relaunch a workflow execution.\022\235\005\n\020Recov" + - "erExecution\022\'.flyteidl.admin.ExecutionRe" + - "coverRequest\032\'.flyteidl.admin.ExecutionC" + - "reateResponse\"\266\004\202\323\344\223\002\037\"\032/api/v1/executio" + - "ns/recover:\001*\222A\215\004\032\212\004Recreates a previous" + - "ly-run workflow execution that will only" + - " start executing from the last known fai" + - "lure point. In Recover mode, users canno" + - "t change any input parameters or update " + - "the version of the execution. This is ex" + - "tremely useful to recover from system er" + - "rors and byzantine faults like - Loss of" + - " K8s cluster, bugs in platform or instab" + - "ility, machine failures, downstream syst" + - "em failures (downstream services), or si" + - "mply to recover executions that failed b" + - "ecause of retry exhaustion and should co" + - "mplete if tried again.\022\302\001\n\014GetExecution\022" + - "+.flyteidl.admin.WorkflowExecutionGetReq" + - "uest\032\031.flyteidl.admin.Execution\"j\202\323\344\223\0027\022" + - "5/api/v1/executions/{id.project}/{id.dom" + - "ain}/{id.name}\222A*\032(Retrieve an existing " + - "workflow execution.\022\326\001\n\017UpdateExecution\022" + - "&.flyteidl.admin.ExecutionUpdateRequest\032" + - "\'.flyteidl.admin.ExecutionUpdateResponse" + - "\"r\202\323\344\223\002:\0325/api/v1/executions/{id.project" + - "}/{id.domain}/{id.name}:\001*\222A/\032-Update ex" + - "ecution belonging to project domain.\022\202\002\n" + - "\020GetExecutionData\022/.flyteidl.admin.Workf" + - "lowExecutionGetDataRequest\0320.flyteidl.ad" + - "min.WorkflowExecutionGetDataResponse\"\212\001\202" + - "\323\344\223\002<\022:/api/v1/data/executions/{id.proje" + - "ct}/{id.domain}/{id.name}\222AE\032CRetrieve i" + - "nput and output data from an existing wo" + - "rkflow execution.\022\310\001\n\016ListExecutions\022#.f" + - "lyteidl.admin.ResourceListRequest\032\035.flyt" + - "eidl.admin.ExecutionList\"r\202\323\344\223\002-\022+/api/v" + - "1/executions/{id.project}/{id.domain}\222A<" + - "\032:Fetch existing workflow executions mat" + - "ching input filters.\022\364\001\n\022TerminateExecut" + - "ion\022).flyteidl.admin.ExecutionTerminateR" + - "equest\032*.flyteidl.admin.ExecutionTermina" + - "teResponse\"\206\001\202\323\344\223\002:*5/api/v1/executions/" + - "{id.project}/{id.domain}/{id.name}:\001*\222AC" + - "\032ATerminate the active workflow executio" + - "n specified in the request.\022\374\001\n\020GetNodeE" + - "xecution\022\'.flyteidl.admin.NodeExecutionG" + - "etRequest\032\035.flyteidl.admin.NodeExecution" + - "\"\237\001\202\323\344\223\002p\022n/api/v1/node_executions/{id.e" + - "xecution_id.project}/{id.execution_id.do" + - "main}/{id.execution_id.name}/{id.node_id" + - "}\222A&\032$Retrieve an existing node executio" + - "n.\022\232\002\n\022ListNodeExecutions\022(.flyteidl.adm" + - "in.NodeExecutionListRequest\032!.flyteidl.a" + - "dmin.NodeExecutionList\"\266\001\202\323\344\223\002u\022s/api/v1" + - "/node_executions/{workflow_execution_id." + - "project}/{workflow_execution_id.domain}/" + - "{workflow_execution_id.name}\222A8\0326Fetch e" + - "xisting node executions matching input f" + - "ilters.\022\357\004\n\031ListNodeExecutionsForTask\022/." + - "flyteidl.admin.NodeExecutionForTaskListR" + - "equest\032!.flyteidl.admin.NodeExecutionLis" + - "t\"\375\003\202\323\344\223\002\254\003\022\251\003/api/v1/children/task_exec" + - "utions/{task_execution_id.node_execution" + - "_id.execution_id.project}/{task_executio" + - "n_id.node_execution_id.execution_id.doma" + - "in}/{task_execution_id.node_execution_id" + - ".execution_id.name}/{task_execution_id.n" + - "ode_execution_id.node_id}/{task_executio" + - "n_id.task_id.project}/{task_execution_id" + - ".task_id.domain}/{task_execution_id.task" + - "_id.name}/{task_execution_id.task_id.ver" + - "sion}/{task_execution_id.retry_attempt}\222" + - "AG\032EFetch child node executions launched" + - " by the specified task execution.\022\263\002\n\024Ge" + - "tNodeExecutionData\022+.flyteidl.admin.Node" + - "ExecutionGetDataRequest\032,.flyteidl.admin" + - ".NodeExecutionGetDataResponse\"\277\001\202\323\344\223\002u\022s" + - "/api/v1/data/node_executions/{id.executi" + - "on_id.project}/{id.execution_id.domain}/" + - "{id.execution_id.name}/{id.node_id}\222AA\032?" + - "Retrieve input and output data from an e" + - "xisting node execution.\022\227\001\n\017RegisterProj" + - "ect\022&.flyteidl.admin.ProjectRegisterRequ" + - "est\032\'.flyteidl.admin.ProjectRegisterResp" + - "onse\"3\202\323\344\223\002\025\"\020/api/v1/projects:\001*\222A\025\032\023Re" + - "gister a project.\022\207\001\n\rUpdateProject\022\027.fl" + - "yteidl.admin.Project\032%.flyteidl.admin.Pr" + - "ojectUpdateResponse\"6\202\323\344\223\002\032\032\025/api/v1/pro" + - "jects/{id}:\001*\222A\023\032\021Update a project.\022\205\001\n\014" + - "ListProjects\022\".flyteidl.admin.ProjectLis" + - "tRequest\032\030.flyteidl.admin.Projects\"7\202\323\344\223" + - "\002\022\022\020/api/v1/projects\222A\034\032\032Fetch registere" + - "d projects.\022\335\001\n\023CreateWorkflowEvent\022-.fl" + - "yteidl.admin.WorkflowExecutionEventReque" + - "st\032..flyteidl.admin.WorkflowExecutionEve" + - "ntResponse\"g\202\323\344\223\002\035\"\030/api/v1/events/workf" + - "lows:\001*\222AA\032?Create a workflow execution " + - "event recording a phase transition.\022\311\001\n\017" + - "CreateNodeEvent\022).flyteidl.admin.NodeExe" + - "cutionEventRequest\032*.flyteidl.admin.Node" + - "ExecutionEventResponse\"_\202\323\344\223\002\031\"\024/api/v1/" + - "events/nodes:\001*\222A=\032;Create a node execut" + - "ion event recording a phase transition.\022" + - "\311\001\n\017CreateTaskEvent\022).flyteidl.admin.Tas" + - "kExecutionEventRequest\032*.flyteidl.admin." + - "TaskExecutionEventResponse\"_\202\323\344\223\002\031\"\024/api" + - "/v1/events/tasks:\001*\222A=\032;Create a task ex" + - "ecution event recording a phase transiti" + - "on.\022\251\003\n\020GetTaskExecution\022\'.flyteidl.admi" + - "n.TaskExecutionGetRequest\032\035.flyteidl.adm" + - "in.TaskExecution\"\314\002\202\323\344\223\002\234\002\022\231\002/api/v1/tas" + - "k_executions/{id.node_execution_id.execu" + - "tion_id.project}/{id.node_execution_id.e" + - "xecution_id.domain}/{id.node_execution_i" + - "d.execution_id.name}/{id.node_execution_" + - "id.node_id}/{id.task_id.project}/{id.tas" + - "k_id.domain}/{id.task_id.name}/{id.task_" + - "id.version}/{id.retry_attempt}\222A&\032$Retri" + - "eve an existing task execution.\022\323\002\n\022List" + - "TaskExecutions\022(.flyteidl.admin.TaskExec" + - "utionListRequest\032!.flyteidl.admin.TaskEx" + - "ecutionList\"\357\001\202\323\344\223\002\255\001\022\252\001/api/v1/task_exe" + - "cutions/{node_execution_id.execution_id." + - "project}/{node_execution_id.execution_id" + - ".domain}/{node_execution_id.execution_id" + - ".name}/{node_execution_id.node_id}\222A8\0326F" + - "etch existing task executions matching i" + - "nput filters.\022\340\003\n\024GetTaskExecutionData\022+" + - ".flyteidl.admin.TaskExecutionGetDataRequ" + - "est\032,.flyteidl.admin.TaskExecutionGetDat" + - "aResponse\"\354\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/task_" + - "executions/{id.node_execution_id.executi" + - "on_id.project}/{id.node_execution_id.exe" + - "cution_id.domain}/{id.node_execution_id." + - "execution_id.name}/{id.node_execution_id" + - ".node_id}/{id.task_id.project}/{id.task_" + - "id.domain}/{id.task_id.name}/{id.task_id" + - ".version}/{id.retry_attempt}\222AA\032?Retriev" + - "e input and output data from an existing" + - " task execution.\022\277\002\n\035UpdateProjectDomain" + - "Attributes\0224.flyteidl.admin.ProjectDomai" + - "nAttributesUpdateRequest\0325.flyteidl.admi" + - "n.ProjectDomainAttributesUpdateResponse\"" + - "\260\001\202\323\344\223\002O\032J/api/v1/project_domain_attribu" + - "tes/{attributes.project}/{attributes.dom" + - "ain}:\001*\222AX\032VUpdate the customized resour" + - "ce attributes associated with a project-" + - "domain combination\022\237\002\n\032GetProjectDomainA" + - "ttributes\0221.flyteidl.admin.ProjectDomain" + - "AttributesGetRequest\0322.flyteidl.admin.Pr" + - "ojectDomainAttributesGetResponse\"\231\001\202\323\344\223\002" + - "6\0224/api/v1/project_domain_attributes/{pr" + - "oject}/{domain}\222AZ\032XRetrieve the customi" + - "zed resource attributes associated with " + - "a project-domain combination\022\251\002\n\035DeleteP" + - "rojectDomainAttributes\0224.flyteidl.admin." + - "ProjectDomainAttributesDeleteRequest\0325.f" + - "lyteidl.admin.ProjectDomainAttributesDel" + - "eteResponse\"\232\001\202\323\344\223\0029*4/api/v1/project_do" + - "main_attributes/{project}/{domain}:\001*\222AX" + - "\032VDelete the customized resource attribu" + - "tes associated with a project-domain com" + - "bination\022\316\002\n\030UpdateWorkflowAttributes\022/." + - "flyteidl.admin.WorkflowAttributesUpdateR" + - "equest\0320.flyteidl.admin.WorkflowAttribut" + - "esUpdateResponse\"\316\001\202\323\344\223\002_\032Z/api/v1/workf" + - "low_attributes/{attributes.project}/{att" + - "ributes.domain}/{attributes.workflow}:\001*" + - "\222Af\032dUpdate the customized resource attr" + - "ibutes associated with a project, domain" + - " and workflow combination\022\243\002\n\025GetWorkflo" + - "wAttributes\022,.flyteidl.admin.WorkflowAtt" + - "ributesGetRequest\032-.flyteidl.admin.Workf" + - "lowAttributesGetResponse\"\254\001\202\323\344\223\002;\0229/api/" + - "v1/workflow_attributes/{project}/{domain" + - "}/{workflow}\222Ah\032fRetrieve the customized" + - " resource attributes associated with a p" + - "roject, domain and workflow combination\022" + - "\255\002\n\030DeleteWorkflowAttributes\022/.flyteidl." + - "admin.WorkflowAttributesDeleteRequest\0320." + - "flyteidl.admin.WorkflowAttributesDeleteR" + - "esponse\"\255\001\202\323\344\223\002>*9/api/v1/workflow_attri" + - "butes/{project}/{domain}/{workflow}:\001*\222A" + - "f\032dDelete the customized resource attrib" + - "utes associated with a project, domain a" + - "nd workflow combination\022\341\001\n\027ListMatchabl" + - "eAttributes\022..flyteidl.admin.ListMatchab" + - "leAttributesRequest\032/.flyteidl.admin.Lis" + - "tMatchableAttributesResponse\"e\202\323\344\223\002\036\022\034/a" + - "pi/v1/matchable_attributes\222A>\032/api/v" + + "1/active_launch_plans/{id.project}/{id.d" + + "omain}/{id.name}\222AM\032KRetrieve the active" + + " launch plan version specified by input " + + "request filters.\022\353\001\n\025ListActiveLaunchPla" + + "ns\022+.flyteidl.admin.ActiveLaunchPlanList" + + "Request\032\036.flyteidl.admin.LaunchPlanList\"" + + "\204\001\202\323\344\223\0020\022./api/v1/active_launch_plans/{p" + + "roject}/{domain}\222AK\032IFetch the active la" + + "unch plan versions specified by input re" + + "quest filters.\022\363\001\n\021ListLaunchPlanIds\0220.f" + + "lyteidl.admin.NamedEntityIdentifierListR" + + "equest\032).flyteidl.admin.NamedEntityIdent" + + "ifierList\"\200\001\202\323\344\223\002,\022*/api/v1/launch_plan_" + + "ids/{project}/{domain}\222AK\032IFetch existin" + + "g launch plan definition identifiers mat" + + "ching input filters.\022\214\002\n\017ListLaunchPlans" + + "\022#.flyteidl.admin.ResourceListRequest\032\036." + + "flyteidl.admin.LaunchPlanList\"\263\001\202\323\344\223\002j\0227" + + "/api/v1/launch_plans/{id.project}/{id.do" + + "main}/{id.name}Z/\022-/api/v1/launch_plans/" + + "{id.project}/{id.domain}\222A@\032>Fetch exist" + + "ing launch plan definitions matching inp" + + "ut filters.\022\300\006\n\020UpdateLaunchPlan\022\'.flyte" + + "idl.admin.LaunchPlanUpdateRequest\032(.flyt" + + "eidl.admin.LaunchPlanUpdateResponse\"\330\005\202\323" + + "\344\223\002I\032D/api/v1/launch_plans/{id.project}/" + + "{id.domain}/{id.name}/{id.version}:\001*\222A\205" + + "\005\032\202\005Update the status of an existing lau" + + "nch plan definition. At most one launch " + + "plan version for a given {project, domai" + + "n, name} can be active at a time. If thi" + + "s call sets a launch plan to active and " + + "existing version is already active, the " + + "result of this call will be that the for" + + "merly active launch plan will be made in" + + "active and specified launch plan in this" + + " request will be made active. In the eve" + + "nt that the formerly active launch plan " + + "had a schedule associated it with it, th" + + "is schedule will be disabled. If the ref" + + "erence launch plan in this request is be" + + "ing set to active and has a schedule ass" + + "ociated with it, the schedule will be en" + + "abled.\022\242\001\n\017CreateExecution\022&.flyteidl.ad" + + "min.ExecutionCreateRequest\032\'.flyteidl.ad" + + "min.ExecutionCreateResponse\">\202\323\344\223\002\027\"\022/ap" + + "i/v1/executions:\001*\222A\036\032\034Create a workflow" + + " execution.\022\261\001\n\021RelaunchExecution\022(.flyt" + + "eidl.admin.ExecutionRelaunchRequest\032\'.fl" + + "yteidl.admin.ExecutionCreateResponse\"I\202\323" + + "\344\223\002 \"\033/api/v1/executions/relaunch:\001*\222A \032" + + "\036Relaunch a workflow execution.\022\235\005\n\020Reco" + + "verExecution\022\'.flyteidl.admin.ExecutionR" + + "ecoverRequest\032\'.flyteidl.admin.Execution" + + "CreateResponse\"\266\004\202\323\344\223\002\037\"\032/api/v1/executi" + + "ons/recover:\001*\222A\215\004\032\212\004Recreates a previou" + + "sly-run workflow execution that will onl" + + "y start executing from the last known fa" + + "ilure point. In Recover mode, users cann" + + "ot change any input parameters or update" + + " the version of the execution. This is e" + + "xtremely useful to recover from system e" + + "rrors and byzantine faults like - Loss o" + + "f K8s cluster, bugs in platform or insta" + + "bility, machine failures, downstream sys" + + "tem failures (downstream services), or s" + + "imply to recover executions that failed " + + "because of retry exhaustion and should c" + + "omplete if tried again.\022\302\001\n\014GetExecution" + + "\022+.flyteidl.admin.WorkflowExecutionGetRe" + + "quest\032\031.flyteidl.admin.Execution\"j\202\323\344\223\0027" + + "\0225/api/v1/executions/{id.project}/{id.do" + + "main}/{id.name}\222A*\032(Retrieve an existing" + + " workflow execution.\022\326\001\n\017UpdateExecution" + + "\022&.flyteidl.admin.ExecutionUpdateRequest" + + "\032\'.flyteidl.admin.ExecutionUpdateRespons" + + "e\"r\202\323\344\223\002:\0325/api/v1/executions/{id.projec" + + "t}/{id.domain}/{id.name}:\001*\222A/\032-Update e" + + "xecution belonging to project domain.\022\202\002" + + "\n\020GetExecutionData\022/.flyteidl.admin.Work" + + "flowExecutionGetDataRequest\0320.flyteidl.a" + + "dmin.WorkflowExecutionGetDataResponse\"\212\001" + + "\202\323\344\223\002<\022:/api/v1/data/executions/{id.proj" + + "ect}/{id.domain}/{id.name}\222AE\032CRetrieve " + + "input and output data from an existing w" + + "orkflow execution.\022\310\001\n\016ListExecutions\022#." + + "flyteidl.admin.ResourceListRequest\032\035.fly" + + "teidl.admin.ExecutionList\"r\202\323\344\223\002-\022+/api/" + + "v1/executions/{id.project}/{id.domain}\222A" + + "<\032:Fetch existing workflow executions ma" + + "tching input filters.\022\364\001\n\022TerminateExecu" + + "tion\022).flyteidl.admin.ExecutionTerminate" + + "Request\032*.flyteidl.admin.ExecutionTermin" + + "ateResponse\"\206\001\202\323\344\223\002:*5/api/v1/executions" + + "/{id.project}/{id.domain}/{id.name}:\001*\222A" + + "C\032ATerminate the active workflow executi" + + "on specified in the request.\022\374\001\n\020GetNode" + + "Execution\022\'.flyteidl.admin.NodeExecution" + + "GetRequest\032\035.flyteidl.admin.NodeExecutio" + + "n\"\237\001\202\323\344\223\002p\022n/api/v1/node_executions/{id." + + "execution_id.project}/{id.execution_id.d" + + "omain}/{id.execution_id.name}/{id.node_i" + + "d}\222A&\032$Retrieve an existing node executi" + + "on.\022\232\002\n\022ListNodeExecutions\022(.flyteidl.ad" + + "min.NodeExecutionListRequest\032!.flyteidl." + + "admin.NodeExecutionList\"\266\001\202\323\344\223\002u\022s/api/v" + + "1/node_executions/{workflow_execution_id" + + ".project}/{workflow_execution_id.domain}" + + "/{workflow_execution_id.name}\222A8\0326Fetch " + + "existing node executions matching input " + + "filters.\022\357\004\n\031ListNodeExecutionsForTask\022/" + + ".flyteidl.admin.NodeExecutionForTaskList" + + "Request\032!.flyteidl.admin.NodeExecutionLi" + + "st\"\375\003\202\323\344\223\002\254\003\022\251\003/api/v1/children/task_exe" + + "cutions/{task_execution_id.node_executio" + + "n_id.execution_id.project}/{task_executi" + + "on_id.node_execution_id.execution_id.dom" + + "ain}/{task_execution_id.node_execution_i" + + "d.execution_id.name}/{task_execution_id." + + "node_execution_id.node_id}/{task_executi" + + "on_id.task_id.project}/{task_execution_i" + + "d.task_id.domain}/{task_execution_id.tas" + + "k_id.name}/{task_execution_id.task_id.ve" + + "rsion}/{task_execution_id.retry_attempt}" + + "\222AG\032EFetch child node executions launche" + + "d by the specified task execution.\022\263\002\n\024G" + + "etNodeExecutionData\022+.flyteidl.admin.Nod" + + "eExecutionGetDataRequest\032,.flyteidl.admi" + + "n.NodeExecutionGetDataResponse\"\277\001\202\323\344\223\002u\022" + + "s/api/v1/data/node_executions/{id.execut" + + "ion_id.project}/{id.execution_id.domain}" + + "/{id.execution_id.name}/{id.node_id}\222AA\032" + + "?Retrieve input and output data from an " + + "existing node execution.\022\227\001\n\017RegisterPro" + + "ject\022&.flyteidl.admin.ProjectRegisterReq" + + "uest\032\'.flyteidl.admin.ProjectRegisterRes" + + "ponse\"3\202\323\344\223\002\025\"\020/api/v1/projects:\001*\222A\025\032\023R" + + "egister a project.\022\207\001\n\rUpdateProject\022\027.f" + + "lyteidl.admin.Project\032%.flyteidl.admin.P" + + "rojectUpdateResponse\"6\202\323\344\223\002\032\032\025/api/v1/pr" + + "ojects/{id}:\001*\222A\023\032\021Update a project.\022\205\001\n" + + "\014ListProjects\022\".flyteidl.admin.ProjectLi" + + "stRequest\032\030.flyteidl.admin.Projects\"7\202\323\344" + + "\223\002\022\022\020/api/v1/projects\222A\034\032\032Fetch register" + + "ed projects.\022\335\001\n\023CreateWorkflowEvent\022-.f" + + "lyteidl.admin.WorkflowExecutionEventRequ" + + "est\032..flyteidl.admin.WorkflowExecutionEv" + + "entResponse\"g\202\323\344\223\002\035\"\030/api/v1/events/work" + + "flows:\001*\222AA\032?Create a workflow execution" + + " event recording a phase transition.\022\311\001\n" + + "\017CreateNodeEvent\022).flyteidl.admin.NodeEx" + + "ecutionEventRequest\032*.flyteidl.admin.Nod" + + "eExecutionEventResponse\"_\202\323\344\223\002\031\"\024/api/v1" + + "/events/nodes:\001*\222A=\032;Create a node execu" + + "tion event recording a phase transition." + + "\022\311\001\n\017CreateTaskEvent\022).flyteidl.admin.Ta" + + "skExecutionEventRequest\032*.flyteidl.admin" + + ".TaskExecutionEventResponse\"_\202\323\344\223\002\031\"\024/ap" + + "i/v1/events/tasks:\001*\222A=\032;Create a task e" + + "xecution event recording a phase transit" + + "ion.\022\251\003\n\020GetTaskExecution\022\'.flyteidl.adm" + + "in.TaskExecutionGetRequest\032\035.flyteidl.ad" + + "min.TaskExecution\"\314\002\202\323\344\223\002\234\002\022\231\002/api/v1/ta" + + "sk_executions/{id.node_execution_id.exec" + + "ution_id.project}/{id.node_execution_id." + + "execution_id.domain}/{id.node_execution_" + + "id.execution_id.name}/{id.node_execution" + + "_id.node_id}/{id.task_id.project}/{id.ta" + + "sk_id.domain}/{id.task_id.name}/{id.task" + + "_id.version}/{id.retry_attempt}\222A&\032$Retr" + + "ieve an existing task execution.\022\323\002\n\022Lis" + + "tTaskExecutions\022(.flyteidl.admin.TaskExe" + + "cutionListRequest\032!.flyteidl.admin.TaskE" + + "xecutionList\"\357\001\202\323\344\223\002\255\001\022\252\001/api/v1/task_ex" + + "ecutions/{node_execution_id.execution_id" + + ".project}/{node_execution_id.execution_i" + + "d.domain}/{node_execution_id.execution_i" + + "d.name}/{node_execution_id.node_id}\222A8\0326" + + "Fetch existing task executions matching " + + "input filters.\022\340\003\n\024GetTaskExecutionData\022" + + "+.flyteidl.admin.TaskExecutionGetDataReq" + + "uest\032,.flyteidl.admin.TaskExecutionGetDa" + + "taResponse\"\354\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/task" + + "_executions/{id.node_execution_id.execut" + + "ion_id.project}/{id.node_execution_id.ex" + + "ecution_id.domain}/{id.node_execution_id" + + ".execution_id.name}/{id.node_execution_i" + + "d.node_id}/{id.task_id.project}/{id.task" + + "_id.domain}/{id.task_id.name}/{id.task_i" + + "d.version}/{id.retry_attempt}\222AA\032?Retrie" + + "ve input and output data from an existin" + + "g task execution.\022\277\002\n\035UpdateProjectDomai" + + "nAttributes\0224.flyteidl.admin.ProjectDoma" + + "inAttributesUpdateRequest\0325.flyteidl.adm" + + "in.ProjectDomainAttributesUpdateResponse" + + "\"\260\001\202\323\344\223\002O\032J/api/v1/project_domain_attrib" + + "utes/{attributes.project}/{attributes.do" + + "main}:\001*\222AX\032VUpdate the customized resou" + + "rce attributes associated with a project" + + "-domain combination\022\237\002\n\032GetProjectDomain" + + "Attributes\0221.flyteidl.admin.ProjectDomai" + + "nAttributesGetRequest\0322.flyteidl.admin.P" + + "rojectDomainAttributesGetResponse\"\231\001\202\323\344\223" + + "\0026\0224/api/v1/project_domain_attributes/{p" + + "roject}/{domain}\222AZ\032XRetrieve the custom" + + "ized resource attributes associated with" + + " a project-domain combination\022\251\002\n\035Delete" + + "ProjectDomainAttributes\0224.flyteidl.admin" + + ".ProjectDomainAttributesDeleteRequest\0325." + + "flyteidl.admin.ProjectDomainAttributesDe" + + "leteResponse\"\232\001\202\323\344\223\0029*4/api/v1/project_d" + + "omain_attributes/{project}/{domain}:\001*\222A" + + "X\032VDelete the customized resource attrib" + + "utes associated with a project-domain co" + + "mbination\022\316\002\n\030UpdateWorkflowAttributes\022/" + + ".flyteidl.admin.WorkflowAttributesUpdate" + + "Request\0320.flyteidl.admin.WorkflowAttribu" + + "tesUpdateResponse\"\316\001\202\323\344\223\002_\032Z/api/v1/work" + + "flow_attributes/{attributes.project}/{at" + + "tributes.domain}/{attributes.workflow}:\001" + + "*\222Af\032dUpdate the customized resource att" + + "ributes associated with a project, domai" + + "n and workflow combination\022\243\002\n\025GetWorkfl" + + "owAttributes\022,.flyteidl.admin.WorkflowAt" + + "tributesGetRequest\032-.flyteidl.admin.Work" + + "flowAttributesGetResponse\"\254\001\202\323\344\223\002;\0229/api" + + "/v1/workflow_attributes/{project}/{domai" + + "n}/{workflow}\222Ah\032fRetrieve the customize" + + "d resource attributes associated with a " + + "project, domain and workflow combination" + + "\022\255\002\n\030DeleteWorkflowAttributes\022/.flyteidl" + + ".admin.WorkflowAttributesDeleteRequest\0320" + + ".flyteidl.admin.WorkflowAttributesDelete" + + "Response\"\255\001\202\323\344\223\002>*9/api/v1/workflow_attr" + + "ibutes/{project}/{domain}/{workflow}:\001*\222" + + "Af\032dDelete the customized resource attri" + + "butes associated with a project, domain " + + "and workflow combination\022\341\001\n\027ListMatchab" + + "leAttributes\022..flyteidl.admin.ListMatcha" + + "bleAttributesRequest\032/.flyteidl.admin.Li" + + "stMatchableAttributesResponse\"e\202\323\344\223\002\036\022\034/" + + "api/v1/matchable_attributes\222A>\032; + + /** + * Calls GetDescription. + * @param request ObjectGetRequest message or plain object + * @param callback Node-style callback called with the error, if any, and EntityDescription + */ + public getDescription(request: flyteidl.admin.IObjectGetRequest, callback: flyteidl.service.AdminService.GetDescriptionCallback): void; + + /** + * Calls GetDescription. + * @param request ObjectGetRequest message or plain object + * @returns Promise + */ + public getDescription(request: flyteidl.admin.IObjectGetRequest): Promise; } namespace AdminService { @@ -16716,6 +17005,13 @@ export namespace flyteidl { * @param [response] GetVersionResponse */ type GetVersionCallback = (error: (Error|null), response?: flyteidl.admin.GetVersionResponse) => void; + + /** + * Callback as used by {@link flyteidl.service.AdminService#getDescription}. + * @param error Error, if any + * @param [response] EntityDescription + */ + type GetDescriptionCallback = (error: (Error|null), response?: flyteidl.admin.EntityDescription) => void; } /** Properties of a OAuth2MetadataRequest. */ diff --git a/gen/pb-js/flyteidl.js b/gen/pb-js/flyteidl.js index 3c9568e80..872e37463 100644 --- a/gen/pb-js/flyteidl.js +++ b/gen/pb-js/flyteidl.js @@ -20721,6 +20721,579 @@ export const flyteidl = $root.flyteidl = (() => { return RawOutputDataConfig; })(); + admin.EntityDescription = (function() { + + /** + * Properties of an EntityDescription. + * @memberof flyteidl.admin + * @interface IEntityDescription + * @property {string|null} [shortDescription] EntityDescription shortDescription + * @property {flyteidl.admin.ILongDescription|null} [longDescription] EntityDescription longDescription + * @property {Array.|null} [tags] EntityDescription tags + * @property {flyteidl.admin.ILabels|null} [labels] EntityDescription labels + * @property {flyteidl.admin.ISourceCode|null} [source] EntityDescription source + */ + + /** + * Constructs a new EntityDescription. + * @memberof flyteidl.admin + * @classdesc Represents an EntityDescription. + * @implements IEntityDescription + * @constructor + * @param {flyteidl.admin.IEntityDescription=} [properties] Properties to set + */ + function EntityDescription(properties) { + this.tags = []; + 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]]; + } + + /** + * EntityDescription shortDescription. + * @member {string} shortDescription + * @memberof flyteidl.admin.EntityDescription + * @instance + */ + EntityDescription.prototype.shortDescription = ""; + + /** + * EntityDescription longDescription. + * @member {flyteidl.admin.ILongDescription|null|undefined} longDescription + * @memberof flyteidl.admin.EntityDescription + * @instance + */ + EntityDescription.prototype.longDescription = null; + + /** + * EntityDescription tags. + * @member {Array.} tags + * @memberof flyteidl.admin.EntityDescription + * @instance + */ + EntityDescription.prototype.tags = $util.emptyArray; + + /** + * EntityDescription labels. + * @member {flyteidl.admin.ILabels|null|undefined} labels + * @memberof flyteidl.admin.EntityDescription + * @instance + */ + EntityDescription.prototype.labels = null; + + /** + * EntityDescription source. + * @member {flyteidl.admin.ISourceCode|null|undefined} source + * @memberof flyteidl.admin.EntityDescription + * @instance + */ + EntityDescription.prototype.source = null; + + /** + * Creates a new EntityDescription instance using the specified properties. + * @function create + * @memberof flyteidl.admin.EntityDescription + * @static + * @param {flyteidl.admin.IEntityDescription=} [properties] Properties to set + * @returns {flyteidl.admin.EntityDescription} EntityDescription instance + */ + EntityDescription.create = function create(properties) { + return new EntityDescription(properties); + }; + + /** + * Encodes the specified EntityDescription message. Does not implicitly {@link flyteidl.admin.EntityDescription.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.EntityDescription + * @static + * @param {flyteidl.admin.IEntityDescription} message EntityDescription message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EntityDescription.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.shortDescription != null && message.hasOwnProperty("shortDescription")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.shortDescription); + if (message.longDescription != null && message.hasOwnProperty("longDescription")) + $root.flyteidl.admin.LongDescription.encode(message.longDescription, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.tags != null && message.tags.length) + for (let i = 0; i < message.tags.length; ++i) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.tags[i]); + if (message.labels != null && message.hasOwnProperty("labels")) + $root.flyteidl.admin.Labels.encode(message.labels, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.source != null && message.hasOwnProperty("source")) + $root.flyteidl.admin.SourceCode.encode(message.source, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + return writer; + }; + + /** + * Decodes an EntityDescription message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.EntityDescription + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.EntityDescription} EntityDescription + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EntityDescription.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + let end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.EntityDescription(); + while (reader.pos < end) { + let tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.shortDescription = reader.string(); + break; + case 2: + message.longDescription = $root.flyteidl.admin.LongDescription.decode(reader, reader.uint32()); + break; + case 3: + if (!(message.tags && message.tags.length)) + message.tags = []; + message.tags.push(reader.string()); + break; + case 4: + message.labels = $root.flyteidl.admin.Labels.decode(reader, reader.uint32()); + break; + case 5: + message.source = $root.flyteidl.admin.SourceCode.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies an EntityDescription message. + * @function verify + * @memberof flyteidl.admin.EntityDescription + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EntityDescription.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.shortDescription != null && message.hasOwnProperty("shortDescription")) + if (!$util.isString(message.shortDescription)) + return "shortDescription: string expected"; + if (message.longDescription != null && message.hasOwnProperty("longDescription")) { + let error = $root.flyteidl.admin.LongDescription.verify(message.longDescription); + if (error) + return "longDescription." + error; + } + if (message.tags != null && message.hasOwnProperty("tags")) { + if (!Array.isArray(message.tags)) + return "tags: array expected"; + for (let i = 0; i < message.tags.length; ++i) + if (!$util.isString(message.tags[i])) + return "tags: string[] expected"; + } + if (message.labels != null && message.hasOwnProperty("labels")) { + let error = $root.flyteidl.admin.Labels.verify(message.labels); + if (error) + return "labels." + error; + } + if (message.source != null && message.hasOwnProperty("source")) { + let error = $root.flyteidl.admin.SourceCode.verify(message.source); + if (error) + return "source." + error; + } + return null; + }; + + return EntityDescription; + })(); + + admin.LongDescription = (function() { + + /** + * Properties of a LongDescription. + * @memberof flyteidl.admin + * @interface ILongDescription + * @property {string|null} [values] LongDescription values + * @property {string|null} [uri] LongDescription uri + * @property {flyteidl.admin.LongDescription.DescriptionFormat|null} [longFormat] LongDescription longFormat + * @property {string|null} [iconLink] LongDescription iconLink + */ + + /** + * Constructs a new LongDescription. + * @memberof flyteidl.admin + * @classdesc Represents a LongDescription. + * @implements ILongDescription + * @constructor + * @param {flyteidl.admin.ILongDescription=} [properties] Properties to set + */ + function LongDescription(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]]; + } + + /** + * LongDescription values. + * @member {string} values + * @memberof flyteidl.admin.LongDescription + * @instance + */ + LongDescription.prototype.values = ""; + + /** + * LongDescription uri. + * @member {string} uri + * @memberof flyteidl.admin.LongDescription + * @instance + */ + LongDescription.prototype.uri = ""; + + /** + * LongDescription longFormat. + * @member {flyteidl.admin.LongDescription.DescriptionFormat} longFormat + * @memberof flyteidl.admin.LongDescription + * @instance + */ + LongDescription.prototype.longFormat = 0; + + /** + * LongDescription iconLink. + * @member {string} iconLink + * @memberof flyteidl.admin.LongDescription + * @instance + */ + LongDescription.prototype.iconLink = ""; + + /** + * Creates a new LongDescription instance using the specified properties. + * @function create + * @memberof flyteidl.admin.LongDescription + * @static + * @param {flyteidl.admin.ILongDescription=} [properties] Properties to set + * @returns {flyteidl.admin.LongDescription} LongDescription instance + */ + LongDescription.create = function create(properties) { + return new LongDescription(properties); + }; + + /** + * Encodes the specified LongDescription message. Does not implicitly {@link flyteidl.admin.LongDescription.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.LongDescription + * @static + * @param {flyteidl.admin.ILongDescription} message LongDescription message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LongDescription.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.values != null && message.hasOwnProperty("values")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.values); + if (message.uri != null && message.hasOwnProperty("uri")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.uri); + if (message.longFormat != null && message.hasOwnProperty("longFormat")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.longFormat); + if (message.iconLink != null && message.hasOwnProperty("iconLink")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.iconLink); + return writer; + }; + + /** + * Decodes a LongDescription message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.LongDescription + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.LongDescription} LongDescription + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LongDescription.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + let end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.LongDescription(); + while (reader.pos < end) { + let tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.values = reader.string(); + break; + case 2: + message.uri = reader.string(); + break; + case 3: + message.longFormat = reader.int32(); + break; + case 4: + message.iconLink = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a LongDescription message. + * @function verify + * @memberof flyteidl.admin.LongDescription + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + LongDescription.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.values != null && message.hasOwnProperty("values")) + if (!$util.isString(message.values)) + return "values: string expected"; + if (message.uri != null && message.hasOwnProperty("uri")) + if (!$util.isString(message.uri)) + return "uri: string expected"; + if (message.longFormat != null && message.hasOwnProperty("longFormat")) + switch (message.longFormat) { + default: + return "longFormat: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.iconLink != null && message.hasOwnProperty("iconLink")) + if (!$util.isString(message.iconLink)) + return "iconLink: string expected"; + return null; + }; + + /** + * DescriptionFormat enum. + * @name flyteidl.admin.LongDescription.DescriptionFormat + * @enum {string} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} MARKDOWN=1 MARKDOWN value + * @property {number} HTML=2 HTML value + * @property {number} RST=3 RST value + */ + LongDescription.DescriptionFormat = (function() { + const valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN"] = 0; + values[valuesById[1] = "MARKDOWN"] = 1; + values[valuesById[2] = "HTML"] = 2; + values[valuesById[3] = "RST"] = 3; + return values; + })(); + + return LongDescription; + })(); + + admin.SourceCode = (function() { + + /** + * Properties of a SourceCode. + * @memberof flyteidl.admin + * @interface ISourceCode + * @property {string|null} [file] SourceCode file + * @property {number|null} [lineNumber] SourceCode lineNumber + * @property {string|null} [repo] SourceCode repo + * @property {string|null} [branch] SourceCode branch + * @property {string|null} [link] SourceCode link + * @property {string|null} [language] SourceCode language + */ + + /** + * Constructs a new SourceCode. + * @memberof flyteidl.admin + * @classdesc Represents a SourceCode. + * @implements ISourceCode + * @constructor + * @param {flyteidl.admin.ISourceCode=} [properties] Properties to set + */ + function SourceCode(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]]; + } + + /** + * SourceCode file. + * @member {string} file + * @memberof flyteidl.admin.SourceCode + * @instance + */ + SourceCode.prototype.file = ""; + + /** + * SourceCode lineNumber. + * @member {number} lineNumber + * @memberof flyteidl.admin.SourceCode + * @instance + */ + SourceCode.prototype.lineNumber = 0; + + /** + * SourceCode repo. + * @member {string} repo + * @memberof flyteidl.admin.SourceCode + * @instance + */ + SourceCode.prototype.repo = ""; + + /** + * SourceCode branch. + * @member {string} branch + * @memberof flyteidl.admin.SourceCode + * @instance + */ + SourceCode.prototype.branch = ""; + + /** + * SourceCode link. + * @member {string} link + * @memberof flyteidl.admin.SourceCode + * @instance + */ + SourceCode.prototype.link = ""; + + /** + * SourceCode language. + * @member {string} language + * @memberof flyteidl.admin.SourceCode + * @instance + */ + SourceCode.prototype.language = ""; + + /** + * Creates a new SourceCode instance using the specified properties. + * @function create + * @memberof flyteidl.admin.SourceCode + * @static + * @param {flyteidl.admin.ISourceCode=} [properties] Properties to set + * @returns {flyteidl.admin.SourceCode} SourceCode instance + */ + SourceCode.create = function create(properties) { + return new SourceCode(properties); + }; + + /** + * Encodes the specified SourceCode message. Does not implicitly {@link flyteidl.admin.SourceCode.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.SourceCode + * @static + * @param {flyteidl.admin.ISourceCode} message SourceCode message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SourceCode.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.file != null && message.hasOwnProperty("file")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.file); + if (message.lineNumber != null && message.hasOwnProperty("lineNumber")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.lineNumber); + if (message.repo != null && message.hasOwnProperty("repo")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.repo); + if (message.branch != null && message.hasOwnProperty("branch")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.branch); + if (message.link != null && message.hasOwnProperty("link")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.link); + if (message.language != null && message.hasOwnProperty("language")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.language); + return writer; + }; + + /** + * Decodes a SourceCode message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.SourceCode + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.SourceCode} SourceCode + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SourceCode.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + let end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.SourceCode(); + while (reader.pos < end) { + let tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.file = reader.string(); + break; + case 2: + message.lineNumber = reader.uint32(); + break; + case 3: + message.repo = reader.string(); + break; + case 4: + message.branch = reader.string(); + break; + case 5: + message.link = reader.string(); + break; + case 6: + message.language = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a SourceCode message. + * @function verify + * @memberof flyteidl.admin.SourceCode + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SourceCode.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.file != null && message.hasOwnProperty("file")) + if (!$util.isString(message.file)) + return "file: string expected"; + if (message.lineNumber != null && message.hasOwnProperty("lineNumber")) + if (!$util.isInteger(message.lineNumber)) + return "lineNumber: integer expected"; + if (message.repo != null && message.hasOwnProperty("repo")) + if (!$util.isString(message.repo)) + return "repo: string expected"; + if (message.branch != null && message.hasOwnProperty("branch")) + if (!$util.isString(message.branch)) + return "branch: string expected"; + if (message.link != null && message.hasOwnProperty("link")) + if (!$util.isString(message.link)) + return "link: string expected"; + if (message.language != null && message.hasOwnProperty("language")) + if (!$util.isString(message.language)) + return "language: string expected"; + return null; + }; + + return SourceCode; + })(); + admin.EventErrorAlreadyInTerminalState = (function() { /** @@ -23923,6 +24496,8 @@ export const flyteidl = $root.flyteidl = (() => { * @property {flyteidl.admin.IRawOutputDataConfig|null} [rawOutputDataConfig] ExecutionSpec rawOutputDataConfig * @property {flyteidl.admin.IClusterAssignment|null} [clusterAssignment] ExecutionSpec clusterAssignment * @property {google.protobuf.IBoolValue|null} [interruptible] ExecutionSpec interruptible + * @property {string|null} [description] ExecutionSpec description + * @property {Array.|null} [tags] ExecutionSpec tags */ /** @@ -23934,6 +24509,7 @@ export const flyteidl = $root.flyteidl = (() => { * @param {flyteidl.admin.IExecutionSpec=} [properties] Properties to set */ function ExecutionSpec(properties) { + this.tags = []; if (properties) for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -24052,6 +24628,22 @@ export const flyteidl = $root.flyteidl = (() => { */ ExecutionSpec.prototype.interruptible = null; + /** + * ExecutionSpec description. + * @member {string} description + * @memberof flyteidl.admin.ExecutionSpec + * @instance + */ + ExecutionSpec.prototype.description = ""; + + /** + * ExecutionSpec tags. + * @member {Array.} tags + * @memberof flyteidl.admin.ExecutionSpec + * @instance + */ + ExecutionSpec.prototype.tags = $util.emptyArray; + // OneOf field names bound to virtual getters and setters let $oneOfFields; @@ -24118,6 +24710,11 @@ export const flyteidl = $root.flyteidl = (() => { $root.flyteidl.admin.ClusterAssignment.encode(message.clusterAssignment, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); if (message.interruptible != null && message.hasOwnProperty("interruptible")) $root.google.protobuf.BoolValue.encode(message.interruptible, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); + if (message.description != null && message.hasOwnProperty("description")) + writer.uint32(/* id 22, wireType 2 =*/178).string(message.description); + if (message.tags != null && message.tags.length) + for (let i = 0; i < message.tags.length; ++i) + writer.uint32(/* id 23, wireType 2 =*/186).string(message.tags[i]); return writer; }; @@ -24181,6 +24778,14 @@ export const flyteidl = $root.flyteidl = (() => { case 21: message.interruptible = $root.google.protobuf.BoolValue.decode(reader, reader.uint32()); break; + case 22: + message.description = reader.string(); + break; + case 23: + if (!(message.tags && message.tags.length)) + message.tags = []; + message.tags.push(reader.string()); + break; default: reader.skipType(tag & 7); break; @@ -24274,6 +24879,16 @@ export const flyteidl = $root.flyteidl = (() => { if (error) return "interruptible." + error; } + if (message.description != null && message.hasOwnProperty("description")) + if (!$util.isString(message.description)) + return "description: string expected"; + if (message.tags != null && message.hasOwnProperty("tags")) { + if (!Array.isArray(message.tags)) + return "tags: array expected"; + for (let i = 0; i < message.tags.length; ++i) + if (!$util.isString(message.tags[i])) + return "tags: string[] expected"; + } return null; }; @@ -25847,6 +26462,7 @@ export const flyteidl = $root.flyteidl = (() => { * @property {flyteidl.admin.IRawOutputDataConfig|null} [rawOutputDataConfig] LaunchPlanSpec rawOutputDataConfig * @property {number|null} [maxParallelism] LaunchPlanSpec maxParallelism * @property {google.protobuf.IBoolValue|null} [interruptible] LaunchPlanSpec interruptible + * @property {flyteidl.admin.IEntityDescription|null} [entityDescription] LaunchPlanSpec entityDescription */ /** @@ -25976,6 +26592,14 @@ export const flyteidl = $root.flyteidl = (() => { */ LaunchPlanSpec.prototype.interruptible = null; + /** + * LaunchPlanSpec entityDescription. + * @member {flyteidl.admin.IEntityDescription|null|undefined} entityDescription + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance + */ + LaunchPlanSpec.prototype.entityDescription = null; + /** * Creates a new LaunchPlanSpec instance using the specified properties. * @function create @@ -26028,6 +26652,8 @@ export const flyteidl = $root.flyteidl = (() => { writer.uint32(/* id 18, wireType 0 =*/144).int32(message.maxParallelism); if (message.interruptible != null && message.hasOwnProperty("interruptible")) $root.google.protobuf.BoolValue.encode(message.interruptible, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim(); + if (message.entityDescription != null && message.hasOwnProperty("entityDescription")) + $root.flyteidl.admin.EntityDescription.encode(message.entityDescription, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); return writer; }; @@ -26091,6 +26717,9 @@ export const flyteidl = $root.flyteidl = (() => { case 19: message.interruptible = $root.google.protobuf.BoolValue.decode(reader, reader.uint32()); break; + case 20: + message.entityDescription = $root.flyteidl.admin.EntityDescription.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -26176,6 +26805,11 @@ export const flyteidl = $root.flyteidl = (() => { if (error) return "interruptible." + error; } + if (message.entityDescription != null && message.hasOwnProperty("entityDescription")) { + let error = $root.flyteidl.admin.EntityDescription.verify(message.entityDescription); + if (error) + return "entityDescription." + error; + } return null; }; @@ -31685,6 +32319,7 @@ export const flyteidl = $root.flyteidl = (() => { * @property {string|null} [description] Project description * @property {flyteidl.admin.ILabels|null} [labels] Project labels * @property {flyteidl.admin.Project.ProjectState|null} [state] Project state + * @property {Array.|null} [tags] Project tags */ /** @@ -31697,6 +32332,7 @@ export const flyteidl = $root.flyteidl = (() => { */ function Project(properties) { this.domains = []; + this.tags = []; if (properties) for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -31751,6 +32387,14 @@ export const flyteidl = $root.flyteidl = (() => { */ Project.prototype.state = 0; + /** + * Project tags. + * @member {Array.} tags + * @memberof flyteidl.admin.Project + * @instance + */ + Project.prototype.tags = $util.emptyArray; + /** * Creates a new Project instance using the specified properties. * @function create @@ -31788,6 +32432,9 @@ export const flyteidl = $root.flyteidl = (() => { $root.flyteidl.admin.Labels.encode(message.labels, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); if (message.state != null && message.hasOwnProperty("state")) writer.uint32(/* id 6, wireType 0 =*/48).int32(message.state); + if (message.tags != null && message.tags.length) + for (let i = 0; i < message.tags.length; ++i) + writer.uint32(/* id 7, wireType 2 =*/58).string(message.tags[i]); return writer; }; @@ -31829,6 +32476,11 @@ export const flyteidl = $root.flyteidl = (() => { case 6: message.state = reader.int32(); break; + case 7: + if (!(message.tags && message.tags.length)) + message.tags = []; + message.tags.push(reader.string()); + break; default: reader.skipType(tag & 7); break; @@ -31880,6 +32532,13 @@ export const flyteidl = $root.flyteidl = (() => { case 2: break; } + if (message.tags != null && message.hasOwnProperty("tags")) { + if (!Array.isArray(message.tags)) + return "tags: array expected"; + for (let i = 0; i < message.tags.length; ++i) + if (!$util.isString(message.tags[i])) + return "tags: string[] expected"; + } return null; }; @@ -33865,6 +34524,7 @@ export const flyteidl = $root.flyteidl = (() => { * @memberof flyteidl.admin * @interface ITaskSpec * @property {flyteidl.core.ITaskTemplate|null} [template] TaskSpec template + * @property {flyteidl.admin.IEntityDescription|null} [entityDescription] TaskSpec entityDescription */ /** @@ -33890,6 +34550,14 @@ export const flyteidl = $root.flyteidl = (() => { */ TaskSpec.prototype.template = null; + /** + * TaskSpec entityDescription. + * @member {flyteidl.admin.IEntityDescription|null|undefined} entityDescription + * @memberof flyteidl.admin.TaskSpec + * @instance + */ + TaskSpec.prototype.entityDescription = null; + /** * Creates a new TaskSpec instance using the specified properties. * @function create @@ -33916,6 +34584,8 @@ export const flyteidl = $root.flyteidl = (() => { writer = $Writer.create(); if (message.template != null && message.hasOwnProperty("template")) $root.flyteidl.core.TaskTemplate.encode(message.template, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.entityDescription != null && message.hasOwnProperty("entityDescription")) + $root.flyteidl.admin.EntityDescription.encode(message.entityDescription, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; @@ -33940,6 +34610,9 @@ export const flyteidl = $root.flyteidl = (() => { case 1: message.template = $root.flyteidl.core.TaskTemplate.decode(reader, reader.uint32()); break; + case 2: + message.entityDescription = $root.flyteidl.admin.EntityDescription.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -33964,6 +34637,11 @@ export const flyteidl = $root.flyteidl = (() => { if (error) return "template." + error; } + if (message.entityDescription != null && message.hasOwnProperty("entityDescription")) { + let error = $root.flyteidl.admin.EntityDescription.verify(message.entityDescription); + if (error) + return "entityDescription." + error; + } return null; }; @@ -36222,6 +36900,7 @@ export const flyteidl = $root.flyteidl = (() => { * @interface IWorkflowSpec * @property {flyteidl.core.IWorkflowTemplate|null} [template] WorkflowSpec template * @property {Array.|null} [subWorkflows] WorkflowSpec subWorkflows + * @property {flyteidl.admin.IEntityDescription|null} [entityDescription] WorkflowSpec entityDescription */ /** @@ -36256,6 +36935,14 @@ export const flyteidl = $root.flyteidl = (() => { */ WorkflowSpec.prototype.subWorkflows = $util.emptyArray; + /** + * WorkflowSpec entityDescription. + * @member {flyteidl.admin.IEntityDescription|null|undefined} entityDescription + * @memberof flyteidl.admin.WorkflowSpec + * @instance + */ + WorkflowSpec.prototype.entityDescription = null; + /** * Creates a new WorkflowSpec instance using the specified properties. * @function create @@ -36285,6 +36972,8 @@ export const flyteidl = $root.flyteidl = (() => { if (message.subWorkflows != null && message.subWorkflows.length) for (let i = 0; i < message.subWorkflows.length; ++i) $root.flyteidl.core.WorkflowTemplate.encode(message.subWorkflows[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.entityDescription != null && message.hasOwnProperty("entityDescription")) + $root.flyteidl.admin.EntityDescription.encode(message.entityDescription, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -36314,6 +37003,9 @@ export const flyteidl = $root.flyteidl = (() => { message.subWorkflows = []; message.subWorkflows.push($root.flyteidl.core.WorkflowTemplate.decode(reader, reader.uint32())); break; + case 3: + message.entityDescription = $root.flyteidl.admin.EntityDescription.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -36347,6 +37039,11 @@ export const flyteidl = $root.flyteidl = (() => { return "subWorkflows." + error; } } + if (message.entityDescription != null && message.hasOwnProperty("entityDescription")) { + let error = $root.flyteidl.admin.EntityDescription.verify(message.entityDescription); + if (error) + return "entityDescription." + error; + } return null; }; @@ -38996,6 +39693,39 @@ export const flyteidl = $root.flyteidl = (() => { * @variation 2 */ + /** + * Callback as used by {@link flyteidl.service.AdminService#getDescription}. + * @memberof flyteidl.service.AdminService + * @typedef GetDescriptionCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {flyteidl.admin.EntityDescription} [response] EntityDescription + */ + + /** + * Calls GetDescription. + * @function getDescription + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IObjectGetRequest} request ObjectGetRequest message or plain object + * @param {flyteidl.service.AdminService.GetDescriptionCallback} callback Node-style callback called with the error, if any, and EntityDescription + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(AdminService.prototype.getDescription = function getDescription(request, callback) { + return this.rpcCall(getDescription, $root.flyteidl.admin.ObjectGetRequest, $root.flyteidl.admin.EntityDescription, request, callback); + }, "name", { value: "GetDescription" }); + + /** + * Calls GetDescription. + * @function getDescription + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IObjectGetRequest} request ObjectGetRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + return AdminService; })(); diff --git a/gen/pb_python/flyteidl/admin/entity_description_pb2.py b/gen/pb_python/flyteidl/admin/entity_description_pb2.py new file mode 100644 index 000000000..f7521066b --- /dev/null +++ b/gen/pb_python/flyteidl/admin/entity_description_pb2.py @@ -0,0 +1,272 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: flyteidl/admin/entity_description.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 +from flyteidl.admin import common_pb2 as flyteidl_dot_admin_dot_common__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='flyteidl/admin/entity_description.proto', + package='flyteidl.admin', + syntax='proto3', + serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), + serialized_pb=_b('\n\'flyteidl/admin/entity_description.proto\x12\x0e\x66lyteidl.admin\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1b\x66lyteidl/admin/common.proto\"\xcb\x01\n\x11\x45ntityDescription\x12\x19\n\x11short_description\x18\x01 \x01(\t\x12\x39\n\x10long_description\x18\x02 \x01(\x0b\x32\x1f.flyteidl.admin.LongDescription\x12\x0c\n\x04tags\x18\x03 \x03(\t\x12&\n\x06labels\x18\x04 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12*\n\x06source\x18\x05 \x01(\x0b\x32\x1a.flyteidl.admin.SourceCode\"\xcc\x01\n\x0fLongDescription\x12\x0e\n\x06values\x18\x01 \x01(\t\x12\x0b\n\x03uri\x18\x02 \x01(\t\x12\x46\n\x0blong_format\x18\x03 \x01(\x0e\x32\x31.flyteidl.admin.LongDescription.DescriptionFormat\x12\x11\n\ticon_link\x18\x04 \x01(\t\"A\n\x11\x44\x65scriptionFormat\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0c\n\x08MARKDOWN\x10\x01\x12\x08\n\x04HTML\x10\x02\x12\x07\n\x03RST\x10\x03\"m\n\nSourceCode\x12\x0c\n\x04\x66ile\x18\x01 \x01(\t\x12\x13\n\x0bline_number\x18\x02 \x01(\r\x12\x0c\n\x04repo\x18\x03 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x04 \x01(\t\x12\x0c\n\x04link\x18\x05 \x01(\t\x12\x10\n\x08language\x18\x06 \x01(\tB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + , + dependencies=[flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_common__pb2.DESCRIPTOR,]) + + + +_LONGDESCRIPTION_DESCRIPTIONFORMAT = _descriptor.EnumDescriptor( + name='DescriptionFormat', + full_name='flyteidl.admin.LongDescription.DescriptionFormat', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='UNKNOWN', index=0, number=0, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MARKDOWN', index=1, number=1, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HTML', index=2, number=2, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RST', index=3, number=3, + serialized_options=None, + type=None), + ], + containing_type=None, + serialized_options=None, + serialized_start=466, + serialized_end=531, +) +_sym_db.RegisterEnumDescriptor(_LONGDESCRIPTION_DESCRIPTIONFORMAT) + + +_ENTITYDESCRIPTION = _descriptor.Descriptor( + name='EntityDescription', + full_name='flyteidl.admin.EntityDescription', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='short_description', full_name='flyteidl.admin.EntityDescription.short_description', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='long_description', full_name='flyteidl.admin.EntityDescription.long_description', 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, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='tags', full_name='flyteidl.admin.EntityDescription.tags', index=2, + number=3, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='labels', full_name='flyteidl.admin.EntityDescription.labels', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='source', full_name='flyteidl.admin.EntityDescription.source', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=121, + serialized_end=324, +) + + +_LONGDESCRIPTION = _descriptor.Descriptor( + name='LongDescription', + full_name='flyteidl.admin.LongDescription', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='values', full_name='flyteidl.admin.LongDescription.values', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='uri', full_name='flyteidl.admin.LongDescription.uri', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='long_format', full_name='flyteidl.admin.LongDescription.long_format', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='icon_link', full_name='flyteidl.admin.LongDescription.icon_link', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _LONGDESCRIPTION_DESCRIPTIONFORMAT, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=327, + serialized_end=531, +) + + +_SOURCECODE = _descriptor.Descriptor( + name='SourceCode', + full_name='flyteidl.admin.SourceCode', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='file', full_name='flyteidl.admin.SourceCode.file', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='line_number', full_name='flyteidl.admin.SourceCode.line_number', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='repo', full_name='flyteidl.admin.SourceCode.repo', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='branch', full_name='flyteidl.admin.SourceCode.branch', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='link', full_name='flyteidl.admin.SourceCode.link', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='language', full_name='flyteidl.admin.SourceCode.language', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=533, + serialized_end=642, +) + +_ENTITYDESCRIPTION.fields_by_name['long_description'].message_type = _LONGDESCRIPTION +_ENTITYDESCRIPTION.fields_by_name['labels'].message_type = flyteidl_dot_admin_dot_common__pb2._LABELS +_ENTITYDESCRIPTION.fields_by_name['source'].message_type = _SOURCECODE +_LONGDESCRIPTION.fields_by_name['long_format'].enum_type = _LONGDESCRIPTION_DESCRIPTIONFORMAT +_LONGDESCRIPTION_DESCRIPTIONFORMAT.containing_type = _LONGDESCRIPTION +DESCRIPTOR.message_types_by_name['EntityDescription'] = _ENTITYDESCRIPTION +DESCRIPTOR.message_types_by_name['LongDescription'] = _LONGDESCRIPTION +DESCRIPTOR.message_types_by_name['SourceCode'] = _SOURCECODE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +EntityDescription = _reflection.GeneratedProtocolMessageType('EntityDescription', (_message.Message,), dict( + DESCRIPTOR = _ENTITYDESCRIPTION, + __module__ = 'flyteidl.admin.entity_description_pb2' + # @@protoc_insertion_point(class_scope:flyteidl.admin.EntityDescription) + )) +_sym_db.RegisterMessage(EntityDescription) + +LongDescription = _reflection.GeneratedProtocolMessageType('LongDescription', (_message.Message,), dict( + DESCRIPTOR = _LONGDESCRIPTION, + __module__ = 'flyteidl.admin.entity_description_pb2' + # @@protoc_insertion_point(class_scope:flyteidl.admin.LongDescription) + )) +_sym_db.RegisterMessage(LongDescription) + +SourceCode = _reflection.GeneratedProtocolMessageType('SourceCode', (_message.Message,), dict( + DESCRIPTOR = _SOURCECODE, + __module__ = 'flyteidl.admin.entity_description_pb2' + # @@protoc_insertion_point(class_scope:flyteidl.admin.SourceCode) + )) +_sym_db.RegisterMessage(SourceCode) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/admin/entity_description_pb2_grpc.py b/gen/pb_python/flyteidl/admin/entity_description_pb2_grpc.py new file mode 100644 index 000000000..a89435267 --- /dev/null +++ b/gen/pb_python/flyteidl/admin/entity_description_pb2_grpc.py @@ -0,0 +1,3 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + diff --git a/gen/pb_python/flyteidl/admin/execution_pb2.py b/gen/pb_python/flyteidl/admin/execution_pb2.py index 574579851..999b35c2d 100644 --- a/gen/pb_python/flyteidl/admin/execution_pb2.py +++ b/gen/pb_python/flyteidl/admin/execution_pb2.py @@ -30,7 +30,7 @@ package='flyteidl.admin', syntax='proto3', serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), - serialized_pb=_b('\n\x1e\x66lyteidl/admin/execution.proto\x12\x0e\x66lyteidl.admin\x1a\'flyteidl/admin/cluster_assignment.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x9f\x01\n\x16\x45xecutionCreateRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x64omain\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12+\n\x04spec\x18\x04 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpec\x12)\n\x06inputs\x18\x05 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\"`\n\x18\x45xecutionRelaunchRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x0c\n\x04name\x18\x03 \x01(\t\"\x94\x01\n\x17\x45xecutionRecoverRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x33\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadata\"Q\n\x17\x45xecutionCreateResponse\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"U\n\x1bWorkflowExecutionGetRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"\xa3\x01\n\tExecution\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12+\n\x04spec\x18\x02 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpec\x12\x31\n\x07\x63losure\x18\x03 \x01(\x0b\x32 .flyteidl.admin.ExecutionClosure\"M\n\rExecutionList\x12-\n\nexecutions\x18\x01 \x03(\x0b\x32\x19.flyteidl.admin.Execution\x12\r\n\x05token\x18\x02 \x01(\t\"X\n\x0eLiteralMapBlob\x12/\n\x06values\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00\x12\r\n\x03uri\x18\x02 \x01(\tH\x00\x42\x06\n\x04\x64\x61ta\"1\n\rAbortMetadata\x12\r\n\x05\x63\x61use\x18\x01 \x01(\t\x12\x11\n\tprincipal\x18\x02 \x01(\t\"\xf0\x05\n\x10\x45xecutionClosure\x12\x35\n\x07outputs\x18\x01 \x01(\x0b\x32\x1e.flyteidl.admin.LiteralMapBlobB\x02\x18\x01H\x00\x12.\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00\x12\x19\n\x0b\x61\x62ort_cause\x18\n \x01(\tB\x02\x18\x01H\x00\x12\x37\n\x0e\x61\x62ort_metadata\x18\x0c \x01(\x0b\x32\x1d.flyteidl.admin.AbortMetadataH\x00\x12\x34\n\x0boutput_data\x18\r \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00\x12\x36\n\x0f\x63omputed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01\x12\x35\n\x05phase\x18\x04 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.Phase\x12.\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\rnotifications\x18\t \x03(\x0b\x32\x1c.flyteidl.admin.Notification\x12.\n\x0bworkflow_id\x18\x0b \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12I\n\x14state_change_details\x18\x0e \x01(\x0b\x32+.flyteidl.admin.ExecutionStateChangeDetailsB\x0f\n\routput_result\"+\n\x0eSystemMetadata\x12\x19\n\x11\x65xecution_cluster\x18\x01 \x01(\t\"\xda\x03\n\x11\x45xecutionMetadata\x12=\n\x04mode\x18\x01 \x01(\x0e\x32/.flyteidl.admin.ExecutionMetadata.ExecutionMode\x12\x11\n\tprincipal\x18\x02 \x01(\t\x12\x0f\n\x07nesting\x18\x03 \x01(\r\x12\x30\n\x0cscheduled_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x45\n\x15parent_node_execution\x18\x05 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifier\x12G\n\x13reference_execution\x18\x10 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x37\n\x0fsystem_metadata\x18\x11 \x01(\x0b\x32\x1e.flyteidl.admin.SystemMetadata\"g\n\rExecutionMode\x12\n\n\x06MANUAL\x10\x00\x12\r\n\tSCHEDULED\x10\x01\x12\n\n\x06SYSTEM\x10\x02\x12\x0c\n\x08RELAUNCH\x10\x03\x12\x12\n\x0e\x43HILD_WORKFLOW\x10\x04\x12\r\n\tRECOVERED\x10\x05\"G\n\x10NotificationList\x12\x33\n\rnotifications\x18\x01 \x03(\x0b\x32\x1c.flyteidl.admin.Notification\"\xe7\x05\n\rExecutionSpec\x12.\n\x0blaunch_plan\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12-\n\x06inputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01\x12\x33\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadata\x12\x39\n\rnotifications\x18\x05 \x01(\x0b\x32 .flyteidl.admin.NotificationListH\x00\x12\x15\n\x0b\x64isable_all\x18\x06 \x01(\x08H\x00\x12&\n\x06labels\x18\x07 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x30\n\x0b\x61nnotations\x18\x08 \x01(\x0b\x32\x1b.flyteidl.admin.Annotations\x12\x38\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContext\x12/\n\tauth_role\x18\x10 \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01\x12;\n\x12quality_of_service\x18\x11 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfService\x12\x17\n\x0fmax_parallelism\x18\x12 \x01(\x05\x12\x43\n\x16raw_output_data_config\x18\x13 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfig\x12=\n\x12\x63luster_assignment\x18\x14 \x01(\x0b\x32!.flyteidl.admin.ClusterAssignment\x12\x31\n\rinterruptible\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x18\n\x16notification_overridesJ\x04\x08\x04\x10\x05\"b\n\x19\x45xecutionTerminateRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\r\n\x05\x63\x61use\x18\x02 \x01(\t\"\x1c\n\x1a\x45xecutionTerminateResponse\"Y\n\x1fWorkflowExecutionGetDataRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"\xde\x01\n WorkflowExecutionGetDataResponse\x12,\n\x07outputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01\x12+\n\x06inputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01\x12.\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\x12/\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\"\x7f\n\x16\x45xecutionUpdateRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12-\n\x05state\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionState\"\x90\x01\n\x1b\x45xecutionStateChangeDetails\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionState\x12/\n\x0boccurred_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tprincipal\x18\x03 \x01(\t\"\x19\n\x17\x45xecutionUpdateResponse*>\n\x0e\x45xecutionState\x12\x14\n\x10\x45XECUTION_ACTIVE\x10\x00\x12\x16\n\x12\x45XECUTION_ARCHIVED\x10\x01\x42\x37Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + serialized_pb=_b('\n\x1e\x66lyteidl/admin/execution.proto\x12\x0e\x66lyteidl.admin\x1a\'flyteidl/admin/cluster_assignment.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x9f\x01\n\x16\x45xecutionCreateRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x64omain\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12+\n\x04spec\x18\x04 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpec\x12)\n\x06inputs\x18\x05 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\"`\n\x18\x45xecutionRelaunchRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x0c\n\x04name\x18\x03 \x01(\t\"\x94\x01\n\x17\x45xecutionRecoverRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x33\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadata\"Q\n\x17\x45xecutionCreateResponse\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"U\n\x1bWorkflowExecutionGetRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"\xa3\x01\n\tExecution\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12+\n\x04spec\x18\x02 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpec\x12\x31\n\x07\x63losure\x18\x03 \x01(\x0b\x32 .flyteidl.admin.ExecutionClosure\"M\n\rExecutionList\x12-\n\nexecutions\x18\x01 \x03(\x0b\x32\x19.flyteidl.admin.Execution\x12\r\n\x05token\x18\x02 \x01(\t\"X\n\x0eLiteralMapBlob\x12/\n\x06values\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00\x12\r\n\x03uri\x18\x02 \x01(\tH\x00\x42\x06\n\x04\x64\x61ta\"1\n\rAbortMetadata\x12\r\n\x05\x63\x61use\x18\x01 \x01(\t\x12\x11\n\tprincipal\x18\x02 \x01(\t\"\xf0\x05\n\x10\x45xecutionClosure\x12\x35\n\x07outputs\x18\x01 \x01(\x0b\x32\x1e.flyteidl.admin.LiteralMapBlobB\x02\x18\x01H\x00\x12.\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00\x12\x19\n\x0b\x61\x62ort_cause\x18\n \x01(\tB\x02\x18\x01H\x00\x12\x37\n\x0e\x61\x62ort_metadata\x18\x0c \x01(\x0b\x32\x1d.flyteidl.admin.AbortMetadataH\x00\x12\x34\n\x0boutput_data\x18\r \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00\x12\x36\n\x0f\x63omputed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01\x12\x35\n\x05phase\x18\x04 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.Phase\x12.\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\rnotifications\x18\t \x03(\x0b\x32\x1c.flyteidl.admin.Notification\x12.\n\x0bworkflow_id\x18\x0b \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12I\n\x14state_change_details\x18\x0e \x01(\x0b\x32+.flyteidl.admin.ExecutionStateChangeDetailsB\x0f\n\routput_result\"+\n\x0eSystemMetadata\x12\x19\n\x11\x65xecution_cluster\x18\x01 \x01(\t\"\xda\x03\n\x11\x45xecutionMetadata\x12=\n\x04mode\x18\x01 \x01(\x0e\x32/.flyteidl.admin.ExecutionMetadata.ExecutionMode\x12\x11\n\tprincipal\x18\x02 \x01(\t\x12\x0f\n\x07nesting\x18\x03 \x01(\r\x12\x30\n\x0cscheduled_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x45\n\x15parent_node_execution\x18\x05 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifier\x12G\n\x13reference_execution\x18\x10 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x37\n\x0fsystem_metadata\x18\x11 \x01(\x0b\x32\x1e.flyteidl.admin.SystemMetadata\"g\n\rExecutionMode\x12\n\n\x06MANUAL\x10\x00\x12\r\n\tSCHEDULED\x10\x01\x12\n\n\x06SYSTEM\x10\x02\x12\x0c\n\x08RELAUNCH\x10\x03\x12\x12\n\x0e\x43HILD_WORKFLOW\x10\x04\x12\r\n\tRECOVERED\x10\x05\"G\n\x10NotificationList\x12\x33\n\rnotifications\x18\x01 \x03(\x0b\x32\x1c.flyteidl.admin.Notification\"\x8a\x06\n\rExecutionSpec\x12.\n\x0blaunch_plan\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12-\n\x06inputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01\x12\x33\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadata\x12\x39\n\rnotifications\x18\x05 \x01(\x0b\x32 .flyteidl.admin.NotificationListH\x00\x12\x15\n\x0b\x64isable_all\x18\x06 \x01(\x08H\x00\x12&\n\x06labels\x18\x07 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x30\n\x0b\x61nnotations\x18\x08 \x01(\x0b\x32\x1b.flyteidl.admin.Annotations\x12\x38\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContext\x12/\n\tauth_role\x18\x10 \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01\x12;\n\x12quality_of_service\x18\x11 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfService\x12\x17\n\x0fmax_parallelism\x18\x12 \x01(\x05\x12\x43\n\x16raw_output_data_config\x18\x13 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfig\x12=\n\x12\x63luster_assignment\x18\x14 \x01(\x0b\x32!.flyteidl.admin.ClusterAssignment\x12\x31\n\rinterruptible\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x13\n\x0b\x64\x65scription\x18\x16 \x01(\t\x12\x0c\n\x04tags\x18\x17 \x03(\tB\x18\n\x16notification_overridesJ\x04\x08\x04\x10\x05\"b\n\x19\x45xecutionTerminateRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\r\n\x05\x63\x61use\x18\x02 \x01(\t\"\x1c\n\x1a\x45xecutionTerminateResponse\"Y\n\x1fWorkflowExecutionGetDataRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"\xde\x01\n WorkflowExecutionGetDataResponse\x12,\n\x07outputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01\x12+\n\x06inputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01\x12.\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\x12/\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\"\x7f\n\x16\x45xecutionUpdateRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12-\n\x05state\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionState\"\x90\x01\n\x1b\x45xecutionStateChangeDetails\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionState\x12/\n\x0boccurred_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tprincipal\x18\x03 \x01(\t\"\x19\n\x17\x45xecutionUpdateResponse*>\n\x0e\x45xecutionState\x12\x14\n\x10\x45XECUTION_ACTIVE\x10\x00\x12\x16\n\x12\x45XECUTION_ARCHIVED\x10\x01\x42\x37Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , dependencies=[flyteidl_dot_admin_dot_cluster__assignment__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_common__pb2.DESCRIPTOR,flyteidl_dot_core_dot_literals__pb2.DESCRIPTOR,flyteidl_dot_core_dot_execution__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_security__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) @@ -51,8 +51,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=4152, - serialized_end=4214, + serialized_start=4187, + serialized_end=4249, ) _sym_db.RegisterEnumDescriptor(_EXECUTIONSTATE) @@ -832,6 +832,20 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='description', full_name='flyteidl.admin.ExecutionSpec.description', index=14, + number=22, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='tags', full_name='flyteidl.admin.ExecutionSpec.tags', index=15, + number=23, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -848,7 +862,7 @@ index=0, containing_type=None, fields=[]), ], serialized_start=2658, - serialized_end=3401, + serialized_end=3436, ) @@ -885,8 +899,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3403, - serialized_end=3501, + serialized_start=3438, + serialized_end=3536, ) @@ -909,8 +923,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3503, - serialized_end=3531, + serialized_start=3538, + serialized_end=3566, ) @@ -940,8 +954,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3533, - serialized_end=3622, + serialized_start=3568, + serialized_end=3657, ) @@ -992,8 +1006,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3625, - serialized_end=3847, + serialized_start=3660, + serialized_end=3882, ) @@ -1030,8 +1044,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3849, - serialized_end=3976, + serialized_start=3884, + serialized_end=4011, ) @@ -1075,8 +1089,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3979, - serialized_end=4123, + serialized_start=4014, + serialized_end=4158, ) @@ -1099,8 +1113,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4125, - serialized_end=4150, + serialized_start=4160, + serialized_end=4185, ) _EXECUTIONCREATEREQUEST.fields_by_name['spec'].message_type = _EXECUTIONSPEC diff --git a/gen/pb_python/flyteidl/admin/launch_plan_pb2.py b/gen/pb_python/flyteidl/admin/launch_plan_pb2.py index 62b081e0f..118c4514e 100644 --- a/gen/pb_python/flyteidl/admin/launch_plan_pb2.py +++ b/gen/pb_python/flyteidl/admin/launch_plan_pb2.py @@ -21,6 +21,7 @@ from flyteidl.core import security_pb2 as flyteidl_dot_core_dot_security__pb2 from flyteidl.admin import schedule_pb2 as flyteidl_dot_admin_dot_schedule__pb2 from flyteidl.admin import common_pb2 as flyteidl_dot_admin_dot_common__pb2 +from flyteidl.admin import entity_description_pb2 as flyteidl_dot_admin_dot_entity__description__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 @@ -30,9 +31,9 @@ package='flyteidl.admin', syntax='proto3', serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), - serialized_pb=_b('\n flyteidl/admin/launch_plan.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1d\x66lyteidl/admin/schedule.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"n\n\x17LaunchPlanCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpec\"\x1a\n\x18LaunchPlanCreateResponse\"\x95\x01\n\nLaunchPlan\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpec\x12\x32\n\x07\x63losure\x18\x03 \x01(\x0b\x32!.flyteidl.admin.LaunchPlanClosure\"Q\n\x0eLaunchPlanList\x12\x30\n\x0claunch_plans\x18\x01 \x03(\x0b\x32\x1a.flyteidl.admin.LaunchPlan\x12\r\n\x05token\x18\x02 \x01(\t\"J\n\x04\x41uth\x12\x1a\n\x12\x61ssumable_iam_role\x18\x01 \x01(\t\x12\"\n\x1akubernetes_service_account\x18\x02 \x01(\t:\x02\x18\x01\"\xb0\x05\n\x0eLaunchPlanSpec\x12.\n\x0bworkflow_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12;\n\x0f\x65ntity_metadata\x18\x02 \x01(\x0b\x32\".flyteidl.admin.LaunchPlanMetadata\x12\x33\n\x0e\x64\x65\x66\x61ult_inputs\x18\x03 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMap\x12/\n\x0c\x66ixed_inputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\x12\x10\n\x04role\x18\x05 \x01(\tB\x02\x18\x01\x12&\n\x06labels\x18\x06 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x30\n\x0b\x61nnotations\x18\x07 \x01(\x0b\x32\x1b.flyteidl.admin.Annotations\x12&\n\x04\x61uth\x18\x08 \x01(\x0b\x32\x14.flyteidl.admin.AuthB\x02\x18\x01\x12/\n\tauth_role\x18\t \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01\x12\x38\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContext\x12;\n\x12quality_of_service\x18\x10 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfService\x12\x43\n\x16raw_output_data_config\x18\x11 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfig\x12\x17\n\x0fmax_parallelism\x18\x12 \x01(\x05\x12\x31\n\rinterruptible\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\x8f\x02\n\x11LaunchPlanClosure\x12.\n\x05state\x18\x01 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanState\x12\x34\n\x0f\x65xpected_inputs\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMap\x12\x34\n\x10\x65xpected_outputs\x18\x03 \x01(\x0b\x32\x1a.flyteidl.core.VariableMap\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"u\n\x12LaunchPlanMetadata\x12*\n\x08schedule\x18\x01 \x01(\x0b\x32\x18.flyteidl.admin.Schedule\x12\x33\n\rnotifications\x18\x02 \x03(\x0b\x32\x1c.flyteidl.admin.Notification\"p\n\x17LaunchPlanUpdateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12.\n\x05state\x18\x02 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanState\"\x1a\n\x18LaunchPlanUpdateResponse\"L\n\x17\x41\x63tiveLaunchPlanRequest\x12\x31\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifier\"\x83\x01\n\x1b\x41\x63tiveLaunchPlanListRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x64omain\x18\x02 \x01(\t\x12\r\n\x05limit\x18\x03 \x01(\r\x12\r\n\x05token\x18\x04 \x01(\t\x12%\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.Sort*+\n\x0fLaunchPlanState\x12\x0c\n\x08INACTIVE\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x42\x37Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + serialized_pb=_b('\n flyteidl/admin/launch_plan.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1d\x66lyteidl/admin/schedule.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\'flyteidl/admin/entity_description.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"n\n\x17LaunchPlanCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpec\"\x1a\n\x18LaunchPlanCreateResponse\"\x95\x01\n\nLaunchPlan\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpec\x12\x32\n\x07\x63losure\x18\x03 \x01(\x0b\x32!.flyteidl.admin.LaunchPlanClosure\"Q\n\x0eLaunchPlanList\x12\x30\n\x0claunch_plans\x18\x01 \x03(\x0b\x32\x1a.flyteidl.admin.LaunchPlan\x12\r\n\x05token\x18\x02 \x01(\t\"J\n\x04\x41uth\x12\x1a\n\x12\x61ssumable_iam_role\x18\x01 \x01(\t\x12\"\n\x1akubernetes_service_account\x18\x02 \x01(\t:\x02\x18\x01\"\xef\x05\n\x0eLaunchPlanSpec\x12.\n\x0bworkflow_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12;\n\x0f\x65ntity_metadata\x18\x02 \x01(\x0b\x32\".flyteidl.admin.LaunchPlanMetadata\x12\x33\n\x0e\x64\x65\x66\x61ult_inputs\x18\x03 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMap\x12/\n\x0c\x66ixed_inputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\x12\x10\n\x04role\x18\x05 \x01(\tB\x02\x18\x01\x12&\n\x06labels\x18\x06 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x30\n\x0b\x61nnotations\x18\x07 \x01(\x0b\x32\x1b.flyteidl.admin.Annotations\x12&\n\x04\x61uth\x18\x08 \x01(\x0b\x32\x14.flyteidl.admin.AuthB\x02\x18\x01\x12/\n\tauth_role\x18\t \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01\x12\x38\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContext\x12;\n\x12quality_of_service\x18\x10 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfService\x12\x43\n\x16raw_output_data_config\x18\x11 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfig\x12\x17\n\x0fmax_parallelism\x18\x12 \x01(\x05\x12\x31\n\rinterruptible\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12=\n\x12\x65ntity_description\x18\x14 \x01(\x0b\x32!.flyteidl.admin.EntityDescription\"\x8f\x02\n\x11LaunchPlanClosure\x12.\n\x05state\x18\x01 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanState\x12\x34\n\x0f\x65xpected_inputs\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMap\x12\x34\n\x10\x65xpected_outputs\x18\x03 \x01(\x0b\x32\x1a.flyteidl.core.VariableMap\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"u\n\x12LaunchPlanMetadata\x12*\n\x08schedule\x18\x01 \x01(\x0b\x32\x18.flyteidl.admin.Schedule\x12\x33\n\rnotifications\x18\x02 \x03(\x0b\x32\x1c.flyteidl.admin.Notification\"p\n\x17LaunchPlanUpdateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12.\n\x05state\x18\x02 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanState\"\x1a\n\x18LaunchPlanUpdateResponse\"L\n\x17\x41\x63tiveLaunchPlanRequest\x12\x31\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifier\"\x83\x01\n\x1b\x41\x63tiveLaunchPlanListRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x64omain\x18\x02 \x01(\t\x12\r\n\x05limit\x18\x03 \x01(\r\x12\r\n\x05token\x18\x04 \x01(\t\x12%\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.Sort*+\n\x0fLaunchPlanState\x12\x0c\n\x08INACTIVE\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x42\x37Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , - dependencies=[flyteidl_dot_core_dot_execution__pb2.DESCRIPTOR,flyteidl_dot_core_dot_literals__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_interface__pb2.DESCRIPTOR,flyteidl_dot_core_dot_security__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_schedule__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_common__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) + dependencies=[flyteidl_dot_core_dot_execution__pb2.DESCRIPTOR,flyteidl_dot_core_dot_literals__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_interface__pb2.DESCRIPTOR,flyteidl_dot_core_dot_security__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_schedule__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_common__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_entity__description__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) _LAUNCHPLANSTATE = _descriptor.EnumDescriptor( name='LaunchPlanState', @@ -51,8 +52,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=2220, - serialized_end=2263, + serialized_start=2324, + serialized_end=2367, ) _sym_db.RegisterEnumDescriptor(_LAUNCHPLANSTATE) @@ -95,8 +96,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=331, - serialized_end=441, + serialized_start=372, + serialized_end=482, ) @@ -119,8 +120,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=443, - serialized_end=469, + serialized_start=484, + serialized_end=510, ) @@ -164,8 +165,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=472, - serialized_end=621, + serialized_start=513, + serialized_end=662, ) @@ -202,8 +203,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=623, - serialized_end=704, + serialized_start=664, + serialized_end=745, ) @@ -240,8 +241,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=706, - serialized_end=780, + serialized_start=747, + serialized_end=821, ) @@ -350,6 +351,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='entity_description', full_name='flyteidl.admin.LaunchPlanSpec.entity_description', index=14, + number=20, 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=[ ], @@ -362,8 +370,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=783, - serialized_end=1471, + serialized_start=824, + serialized_end=1575, ) @@ -421,8 +429,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1474, - serialized_end=1745, + serialized_start=1578, + serialized_end=1849, ) @@ -459,8 +467,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1747, - serialized_end=1864, + serialized_start=1851, + serialized_end=1968, ) @@ -497,8 +505,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1866, - serialized_end=1978, + serialized_start=1970, + serialized_end=2082, ) @@ -521,8 +529,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1980, - serialized_end=2006, + serialized_start=2084, + serialized_end=2110, ) @@ -552,8 +560,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2008, - serialized_end=2084, + serialized_start=2112, + serialized_end=2188, ) @@ -611,8 +619,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2087, - serialized_end=2218, + serialized_start=2191, + serialized_end=2322, ) _LAUNCHPLANCREATEREQUEST.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._IDENTIFIER @@ -633,6 +641,7 @@ _LAUNCHPLANSPEC.fields_by_name['quality_of_service'].message_type = flyteidl_dot_core_dot_execution__pb2._QUALITYOFSERVICE _LAUNCHPLANSPEC.fields_by_name['raw_output_data_config'].message_type = flyteidl_dot_admin_dot_common__pb2._RAWOUTPUTDATACONFIG _LAUNCHPLANSPEC.fields_by_name['interruptible'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE +_LAUNCHPLANSPEC.fields_by_name['entity_description'].message_type = flyteidl_dot_admin_dot_entity__description__pb2._ENTITYDESCRIPTION _LAUNCHPLANCLOSURE.fields_by_name['state'].enum_type = _LAUNCHPLANSTATE _LAUNCHPLANCLOSURE.fields_by_name['expected_inputs'].message_type = flyteidl_dot_core_dot_interface__pb2._PARAMETERMAP _LAUNCHPLANCLOSURE.fields_by_name['expected_outputs'].message_type = flyteidl_dot_core_dot_interface__pb2._VARIABLEMAP diff --git a/gen/pb_python/flyteidl/admin/project_pb2.py b/gen/pb_python/flyteidl/admin/project_pb2.py index 8a7586af0..81442e960 100644 --- a/gen/pb_python/flyteidl/admin/project_pb2.py +++ b/gen/pb_python/flyteidl/admin/project_pb2.py @@ -21,7 +21,7 @@ package='flyteidl.admin', syntax='proto3', serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), - serialized_pb=_b('\n\x1c\x66lyteidl/admin/project.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\"\"\n\x06\x44omain\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xfe\x01\n\x07Project\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\'\n\x07\x64omains\x18\x03 \x03(\x0b\x32\x16.flyteidl.admin.Domain\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12&\n\x06labels\x18\x05 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x33\n\x05state\x18\x06 \x01(\x0e\x32$.flyteidl.admin.Project.ProjectState\">\n\x0cProjectState\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\x0c\n\x08\x41RCHIVED\x10\x01\x12\x14\n\x10SYSTEM_GENERATED\x10\x02\"D\n\x08Projects\x12)\n\x08projects\x18\x01 \x03(\x0b\x32\x17.flyteidl.admin.Project\x12\r\n\x05token\x18\x02 \x01(\t\"j\n\x12ProjectListRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\r\n\x05token\x18\x02 \x01(\t\x12\x0f\n\x07\x66ilters\x18\x03 \x01(\t\x12%\n\x07sort_by\x18\x04 \x01(\x0b\x32\x14.flyteidl.admin.Sort\"B\n\x16ProjectRegisterRequest\x12(\n\x07project\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.Project\"\x19\n\x17ProjectRegisterResponse\"\x17\n\x15ProjectUpdateResponseB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + serialized_pb=_b('\n\x1c\x66lyteidl/admin/project.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\"\"\n\x06\x44omain\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\x8c\x02\n\x07Project\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\'\n\x07\x64omains\x18\x03 \x03(\x0b\x32\x16.flyteidl.admin.Domain\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12&\n\x06labels\x18\x05 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x33\n\x05state\x18\x06 \x01(\x0e\x32$.flyteidl.admin.Project.ProjectState\x12\x0c\n\x04tags\x18\x07 \x03(\t\">\n\x0cProjectState\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\x0c\n\x08\x41RCHIVED\x10\x01\x12\x14\n\x10SYSTEM_GENERATED\x10\x02\"D\n\x08Projects\x12)\n\x08projects\x18\x01 \x03(\x0b\x32\x17.flyteidl.admin.Project\x12\r\n\x05token\x18\x02 \x01(\t\"j\n\x12ProjectListRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\r\n\x05token\x18\x02 \x01(\t\x12\x0f\n\x07\x66ilters\x18\x03 \x01(\t\x12%\n\x07sort_by\x18\x04 \x01(\x0b\x32\x14.flyteidl.admin.Sort\"B\n\x16ProjectRegisterRequest\x12(\n\x07project\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.Project\"\x19\n\x17ProjectRegisterResponse\"\x17\n\x15ProjectUpdateResponseB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , dependencies=[flyteidl_dot_admin_dot_common__pb2.DESCRIPTOR,]) @@ -48,8 +48,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=306, - serialized_end=368, + serialized_start=320, + serialized_end=382, ) _sym_db.RegisterEnumDescriptor(_PROJECT_PROJECTSTATE) @@ -141,6 +141,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='tags', full_name='flyteidl.admin.Project.tags', index=6, + number=7, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -155,7 +162,7 @@ oneofs=[ ], serialized_start=114, - serialized_end=368, + serialized_end=382, ) @@ -192,8 +199,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=370, - serialized_end=438, + serialized_start=384, + serialized_end=452, ) @@ -244,8 +251,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=440, - serialized_end=546, + serialized_start=454, + serialized_end=560, ) @@ -275,8 +282,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=548, - serialized_end=614, + serialized_start=562, + serialized_end=628, ) @@ -299,8 +306,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=616, - serialized_end=641, + serialized_start=630, + serialized_end=655, ) @@ -323,8 +330,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=643, - serialized_end=666, + serialized_start=657, + serialized_end=680, ) _PROJECT.fields_by_name['domains'].message_type = _DOMAIN diff --git a/gen/pb_python/flyteidl/admin/task_pb2.py b/gen/pb_python/flyteidl/admin/task_pb2.py index e9c341503..a89bd10a6 100644 --- a/gen/pb_python/flyteidl/admin/task_pb2.py +++ b/gen/pb_python/flyteidl/admin/task_pb2.py @@ -17,6 +17,7 @@ from flyteidl.core import tasks_pb2 as flyteidl_dot_core_dot_tasks__pb2 from flyteidl.core import compiler_pb2 as flyteidl_dot_core_dot_compiler__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from flyteidl.admin import entity_description_pb2 as flyteidl_dot_admin_dot_entity__description__pb2 DESCRIPTOR = _descriptor.FileDescriptor( @@ -24,9 +25,9 @@ package='flyteidl.admin', syntax='proto3', serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), - serialized_pb=_b('\n\x19\x66lyteidl/admin/task.proto\x12\x0e\x66lyteidl.admin\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"b\n\x11TaskCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12&\n\x04spec\x18\x02 \x01(\x0b\x32\x18.flyteidl.admin.TaskSpec\"\x14\n\x12TaskCreateResponse\"[\n\x04Task\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x07\x63losure\x18\x02 \x01(\x0b\x32\x1b.flyteidl.admin.TaskClosure\">\n\x08TaskList\x12#\n\x05tasks\x18\x01 \x03(\x0b\x32\x14.flyteidl.admin.Task\x12\r\n\x05token\x18\x02 \x01(\t\"9\n\x08TaskSpec\x12-\n\x08template\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplate\"q\n\x0bTaskClosure\x12\x32\n\rcompiled_task\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.CompiledTask\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + serialized_pb=_b('\n\x19\x66lyteidl/admin/task.proto\x12\x0e\x66lyteidl.admin\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x19\x66lyteidl/core/tasks.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\'flyteidl/admin/entity_description.proto\"b\n\x11TaskCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12&\n\x04spec\x18\x02 \x01(\x0b\x32\x18.flyteidl.admin.TaskSpec\"\x14\n\x12TaskCreateResponse\"[\n\x04Task\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x07\x63losure\x18\x02 \x01(\x0b\x32\x1b.flyteidl.admin.TaskClosure\">\n\x08TaskList\x12#\n\x05tasks\x18\x01 \x03(\x0b\x32\x14.flyteidl.admin.Task\x12\r\n\x05token\x18\x02 \x01(\t\"x\n\x08TaskSpec\x12-\n\x08template\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.TaskTemplate\x12=\n\x12\x65ntity_description\x18\x02 \x01(\x0b\x32!.flyteidl.admin.EntityDescription\"q\n\x0bTaskClosure\x12\x32\n\rcompiled_task\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.CompiledTask\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , - dependencies=[flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_tasks__pb2.DESCRIPTOR,flyteidl_dot_core_dot_compiler__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) + dependencies=[flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_tasks__pb2.DESCRIPTOR,flyteidl_dot_core_dot_compiler__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_entity__description__pb2.DESCRIPTOR,]) @@ -64,8 +65,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=167, - serialized_end=265, + serialized_start=208, + serialized_end=306, ) @@ -88,8 +89,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=267, - serialized_end=287, + serialized_start=308, + serialized_end=328, ) @@ -126,8 +127,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=289, - serialized_end=380, + serialized_start=330, + serialized_end=421, ) @@ -164,8 +165,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=382, - serialized_end=444, + serialized_start=423, + serialized_end=485, ) @@ -183,6 +184,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='entity_description', full_name='flyteidl.admin.TaskSpec.entity_description', 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, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -195,8 +203,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=446, - serialized_end=503, + serialized_start=487, + serialized_end=607, ) @@ -233,8 +241,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=505, - serialized_end=618, + serialized_start=609, + serialized_end=722, ) _TASKCREATEREQUEST.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._IDENTIFIER @@ -243,6 +251,7 @@ _TASK.fields_by_name['closure'].message_type = _TASKCLOSURE _TASKLIST.fields_by_name['tasks'].message_type = _TASK _TASKSPEC.fields_by_name['template'].message_type = flyteidl_dot_core_dot_tasks__pb2._TASKTEMPLATE +_TASKSPEC.fields_by_name['entity_description'].message_type = flyteidl_dot_admin_dot_entity__description__pb2._ENTITYDESCRIPTION _TASKCLOSURE.fields_by_name['compiled_task'].message_type = flyteidl_dot_core_dot_compiler__pb2._COMPILEDTASK _TASKCLOSURE.fields_by_name['created_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP DESCRIPTOR.message_types_by_name['TaskCreateRequest'] = _TASKCREATEREQUEST diff --git a/gen/pb_python/flyteidl/admin/workflow_pb2.py b/gen/pb_python/flyteidl/admin/workflow_pb2.py index 908941081..cd7548778 100644 --- a/gen/pb_python/flyteidl/admin/workflow_pb2.py +++ b/gen/pb_python/flyteidl/admin/workflow_pb2.py @@ -17,6 +17,7 @@ from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 from flyteidl.core import workflow_pb2 as flyteidl_dot_core_dot_workflow__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from flyteidl.admin import entity_description_pb2 as flyteidl_dot_admin_dot_entity__description__pb2 DESCRIPTOR = _descriptor.FileDescriptor( @@ -24,9 +25,9 @@ package='flyteidl.admin', syntax='proto3', serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), - serialized_pb=_b('\n\x1d\x66lyteidl/admin/workflow.proto\x12\x0e\x66lyteidl.admin\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/workflow.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"j\n\x15WorkflowCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12*\n\x04spec\x18\x02 \x01(\x0b\x32\x1c.flyteidl.admin.WorkflowSpec\"\x18\n\x16WorkflowCreateResponse\"c\n\x08Workflow\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12\x30\n\x07\x63losure\x18\x02 \x01(\x0b\x32\x1f.flyteidl.admin.WorkflowClosure\"J\n\x0cWorkflowList\x12+\n\tworkflows\x18\x01 \x03(\x0b\x32\x18.flyteidl.admin.Workflow\x12\r\n\x05token\x18\x02 \x01(\t\"y\n\x0cWorkflowSpec\x12\x31\n\x08template\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowTemplate\x12\x36\n\rsub_workflows\x18\x02 \x03(\x0b\x32\x1f.flyteidl.core.WorkflowTemplate\"\x84\x01\n\x0fWorkflowClosure\x12\x41\n\x11\x63ompiled_workflow\x18\x01 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosure\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + serialized_pb=_b('\n\x1d\x66lyteidl/admin/workflow.proto\x12\x0e\x66lyteidl.admin\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/workflow.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\'flyteidl/admin/entity_description.proto\"j\n\x15WorkflowCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12*\n\x04spec\x18\x02 \x01(\x0b\x32\x1c.flyteidl.admin.WorkflowSpec\"\x18\n\x16WorkflowCreateResponse\"c\n\x08Workflow\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12\x30\n\x07\x63losure\x18\x02 \x01(\x0b\x32\x1f.flyteidl.admin.WorkflowClosure\"J\n\x0cWorkflowList\x12+\n\tworkflows\x18\x01 \x03(\x0b\x32\x18.flyteidl.admin.Workflow\x12\r\n\x05token\x18\x02 \x01(\t\"\xb8\x01\n\x0cWorkflowSpec\x12\x31\n\x08template\x18\x01 \x01(\x0b\x32\x1f.flyteidl.core.WorkflowTemplate\x12\x36\n\rsub_workflows\x18\x02 \x03(\x0b\x32\x1f.flyteidl.core.WorkflowTemplate\x12=\n\x12\x65ntity_description\x18\x03 \x01(\x0b\x32!.flyteidl.admin.EntityDescription\"\x84\x01\n\x0fWorkflowClosure\x12\x41\n\x11\x63ompiled_workflow\x18\x01 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosure\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , - dependencies=[flyteidl_dot_core_dot_compiler__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_workflow__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) + dependencies=[flyteidl_dot_core_dot_compiler__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_workflow__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_entity__description__pb2.DESCRIPTOR,]) @@ -64,8 +65,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=174, - serialized_end=280, + serialized_start=215, + serialized_end=321, ) @@ -88,8 +89,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=282, - serialized_end=306, + serialized_start=323, + serialized_end=347, ) @@ -126,8 +127,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=308, - serialized_end=407, + serialized_start=349, + serialized_end=448, ) @@ -164,8 +165,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=409, - serialized_end=483, + serialized_start=450, + serialized_end=524, ) @@ -190,6 +191,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='entity_description', full_name='flyteidl.admin.WorkflowSpec.entity_description', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -202,8 +210,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=485, - serialized_end=606, + serialized_start=527, + serialized_end=711, ) @@ -240,8 +248,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=609, - serialized_end=741, + serialized_start=714, + serialized_end=846, ) _WORKFLOWCREATEREQUEST.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._IDENTIFIER @@ -251,6 +259,7 @@ _WORKFLOWLIST.fields_by_name['workflows'].message_type = _WORKFLOW _WORKFLOWSPEC.fields_by_name['template'].message_type = flyteidl_dot_core_dot_workflow__pb2._WORKFLOWTEMPLATE _WORKFLOWSPEC.fields_by_name['sub_workflows'].message_type = flyteidl_dot_core_dot_workflow__pb2._WORKFLOWTEMPLATE +_WORKFLOWSPEC.fields_by_name['entity_description'].message_type = flyteidl_dot_admin_dot_entity__description__pb2._ENTITYDESCRIPTION _WORKFLOWCLOSURE.fields_by_name['compiled_workflow'].message_type = flyteidl_dot_core_dot_compiler__pb2._COMPILEDWORKFLOWCLOSURE _WORKFLOWCLOSURE.fields_by_name['created_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP DESCRIPTOR.message_types_by_name['WorkflowCreateRequest'] = _WORKFLOWCREATEREQUEST diff --git a/gen/pb_python/flyteidl/service/admin_pb2.py b/gen/pb_python/flyteidl/service/admin_pb2.py index 4a94aba32..b280fc2c7 100644 --- a/gen/pb_python/flyteidl/service/admin_pb2.py +++ b/gen/pb_python/flyteidl/service/admin_pb2.py @@ -27,6 +27,7 @@ from flyteidl.admin import task_execution_pb2 as flyteidl_dot_admin_dot_task__execution__pb2 from flyteidl.admin import version_pb2 as flyteidl_dot_admin_dot_version__pb2 from flyteidl.admin import common_pb2 as flyteidl_dot_admin_dot_common__pb2 +from flyteidl.admin import entity_description_pb2 as flyteidl_dot_admin_dot_entity__description__pb2 from protoc_gen_swagger.options import annotations_pb2 as protoc__gen__swagger_dot_options_dot_annotations__pb2 @@ -35,9 +36,9 @@ package='flyteidl.service', syntax='proto3', serialized_options=_b('Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service'), - serialized_pb=_b('\n\x1c\x66lyteidl/service/admin.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a\x1c\x66lyteidl/admin/project.proto\x1a.flyteidl/admin/project_domain_attributes.proto\x1a\x19\x66lyteidl/admin/task.proto\x1a\x1d\x66lyteidl/admin/workflow.proto\x1a(flyteidl/admin/workflow_attributes.proto\x1a flyteidl/admin/launch_plan.proto\x1a\x1a\x66lyteidl/admin/event.proto\x1a\x1e\x66lyteidl/admin/execution.proto\x1a\'flyteidl/admin/matchable_resource.proto\x1a#flyteidl/admin/node_execution.proto\x1a#flyteidl/admin/task_execution.proto\x1a\x1c\x66lyteidl/admin/version.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a,protoc-gen-swagger/options/annotations.proto2\x9eh\n\x0c\x41\x64minService\x12\xc5\x02\n\nCreateTask\x12!.flyteidl.admin.TaskCreateRequest\x1a\".flyteidl.admin.TaskCreateResponse\"\xef\x01\x82\xd3\xe4\x93\x02\x12\"\r/api/v1/tasks:\x01*\x92\x41\xd3\x01\x1a&Create and register a task definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x12\xb2\x01\n\x07GetTask\x12 .flyteidl.admin.ObjectGetRequest\x1a\x14.flyteidl.admin.Task\"o\x82\xd3\xe4\x93\x02?\x12=/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}\x92\x41\'\x1a%Retrieve an existing task definition.\x12\xde\x01\n\x0bListTaskIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"r\x82\xd3\xe4\x93\x02%\x12#/api/v1/task_ids/{project}/{domain}\x92\x41\x44\x1a\x42\x46\x65tch existing task definition identifiers matching input filters.\x12\xeb\x01\n\tListTasks\x12#.flyteidl.admin.ResourceListRequest\x1a\x18.flyteidl.admin.TaskList\"\x9e\x01\x82\xd3\xe4\x93\x02\\\x12\x30/api/v1/tasks/{id.project}/{id.domain}/{id.name}Z(\x12&/api/v1/tasks/{id.project}/{id.domain}\x92\x41\x39\x1a\x37\x46\x65tch existing task definitions matching input filters.\x12\xd9\x02\n\x0e\x43reateWorkflow\x12%.flyteidl.admin.WorkflowCreateRequest\x1a&.flyteidl.admin.WorkflowCreateResponse\"\xf7\x01\x82\xd3\xe4\x93\x02\x16\"\x11/api/v1/workflows:\x01*\x92\x41\xd7\x01\x1a*Create and register a workflow definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x12\xc2\x01\n\x0bGetWorkflow\x12 .flyteidl.admin.ObjectGetRequest\x1a\x18.flyteidl.admin.Workflow\"w\x82\xd3\xe4\x93\x02\x43\x12\x41/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}\x92\x41+\x1a)Retrieve an existing workflow definition.\x12\xed\x01\n\x0fListWorkflowIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"}\x82\xd3\xe4\x93\x02)\x12\'/api/v1/workflow_ids/{project}/{domain}\x92\x41K\x1aIFetch an existing workflow definition identifiers matching input filters.\x12\xff\x01\n\rListWorkflows\x12#.flyteidl.admin.ResourceListRequest\x1a\x1c.flyteidl.admin.WorkflowList\"\xaa\x01\x82\xd3\xe4\x93\x02\x64\x12\x34/api/v1/workflows/{id.project}/{id.domain}/{id.name}Z,\x12*/api/v1/workflows/{id.project}/{id.domain}\x92\x41=\x1a;Fetch existing workflow definitions matching input filters.\x12\xe5\x02\n\x10\x43reateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanCreateRequest\x1a(.flyteidl.admin.LaunchPlanCreateResponse\"\xfd\x01\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/launch_plans:\x01*\x92\x41\xda\x01\x1a-Create and register a launch plan definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x12\xcc\x01\n\rGetLaunchPlan\x12 .flyteidl.admin.ObjectGetRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"}\x82\xd3\xe4\x93\x02\x46\x12\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x92\x41.\x1a,Retrieve an existing launch plan definition.\x12\xf3\x01\n\x13GetActiveLaunchPlan\x12\'.flyteidl.admin.ActiveLaunchPlanRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"\x96\x01\x82\xd3\xe4\x93\x02@\x12>/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x92\x41M\x1aKRetrieve the active launch plan version specified by input request filters.\x12\xeb\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\x84\x01\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x92\x41K\x1aIFetch the active launch plan versions specified by input request filters.\x12\xf3\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"\x80\x01\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x92\x41K\x1aIFetch existing launch plan definition identifiers matching input filters.\x12\x8c\x02\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\xb3\x01\x82\xd3\xe4\x93\x02j\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}Z/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x92\x41@\x1a>Fetch existing launch plan definitions matching input filters.\x12\xc0\x06\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"\xd8\x05\x82\xd3\xe4\x93\x02I\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}:\x01*\x92\x41\x85\x05\x1a\x82\x05Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\x12\xa2\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\">\x82\xd3\xe4\x93\x02\x17\"\x12/api/v1/executions:\x01*\x92\x41\x1e\x1a\x1c\x43reate a workflow execution.\x12\xb1\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"I\x82\xd3\xe4\x93\x02 \"\x1b/api/v1/executions/relaunch:\x01*\x92\x41 \x1a\x1eRelaunch a workflow execution.\x12\x9d\x05\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\xb6\x04\x82\xd3\xe4\x93\x02\x1f\"\x1a/api/v1/executions/recover:\x01*\x92\x41\x8d\x04\x1a\x8a\x04Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\x12\xc2\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"j\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x92\x41*\x1a(Retrieve an existing workflow execution.\x12\xd6\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"r\x82\xd3\xe4\x93\x02:\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}:\x01*\x92\x41/\x1a-Update execution belonging to project domain.\x12\x82\x02\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"\x8a\x01\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x92\x41\x45\x1a\x43Retrieve input and output data from an existing workflow execution.\x12\xc8\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"r\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x92\x41<\x1a:Fetch existing workflow executions matching input filters.\x12\xf4\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"\x86\x01\x82\xd3\xe4\x93\x02:*5/api/v1/executions/{id.project}/{id.domain}/{id.name}:\x01*\x92\x41\x43\x1a\x41Terminate the active workflow execution specified in the request.\x12\xfc\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"\x9f\x01\x82\xd3\xe4\x93\x02p\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41&\x1a$Retrieve an existing node execution.\x12\x9a\x02\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb6\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x92\x41\x38\x1a\x36\x46\x65tch existing node executions matching input filters.\x12\xef\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xfd\x03\x82\xd3\xe4\x93\x02\xac\x03\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x92\x41G\x1a\x45\x46\x65tch child node executions launched by the specified task execution.\x12\xb3\x02\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"\xbf\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41\x41\x1a?Retrieve input and output data from an existing node execution.\x12\x97\x01\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"3\x82\xd3\xe4\x93\x02\x15\"\x10/api/v1/projects:\x01*\x92\x41\x15\x1a\x13Register a project.\x12\x87\x01\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\"6\x82\xd3\xe4\x93\x02\x1a\x1a\x15/api/v1/projects/{id}:\x01*\x92\x41\x13\x1a\x11Update a project.\x12\x85\x01\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"7\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x92\x41\x1c\x1a\x1a\x46\x65tch registered projects.\x12\xdd\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"g\x82\xd3\xe4\x93\x02\x1d\"\x18/api/v1/events/workflows:\x01*\x92\x41\x41\x1a?Create a workflow execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/nodes:\x01*\x92\x41=\x1a;Create a node execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/tasks:\x01*\x92\x41=\x1a;Create a task execution event recording a phase transition.\x12\xa9\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xcc\x02\x82\xd3\xe4\x93\x02\x9c\x02\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41&\x1a$Retrieve an existing task execution.\x12\xd3\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xef\x01\x82\xd3\xe4\x93\x02\xad\x01\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x92\x41\x38\x1a\x36\x46\x65tch existing task executions matching input filters.\x12\xe0\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xec\x02\x82\xd3\xe4\x93\x02\xa1\x02\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41\x41\x1a?Retrieve input and output data from an existing task execution.\x12\xbf\x02\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"\xb0\x01\x82\xd3\xe4\x93\x02O\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}:\x01*\x92\x41X\x1aVUpdate the customized resource attributes associated with a project-domain combination\x12\x9f\x02\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"\x99\x01\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x92\x41Z\x1aXRetrieve the customized resource attributes associated with a project-domain combination\x12\xa9\x02\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"\x9a\x01\x82\xd3\xe4\x93\x02\x39*4/api/v1/project_domain_attributes/{project}/{domain}:\x01*\x92\x41X\x1aVDelete the customized resource attributes associated with a project-domain combination\x12\xce\x02\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"\xce\x01\x82\xd3\xe4\x93\x02_\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}:\x01*\x92\x41\x66\x1a\x64Update the customized resource attributes associated with a project, domain and workflow combination\x12\xa3\x02\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"\xac\x01\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x92\x41h\x1a\x66Retrieve the customized resource attributes associated with a project, domain and workflow combination\x12\xad\x02\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"\xad\x01\x82\xd3\xe4\x93\x02>*9/api/v1/workflow_attributes/{project}/{domain}/{workflow}:\x01*\x92\x41\x66\x1a\x64\x44\x65lete the customized resource attributes associated with a project, domain and workflow combination\x12\xe1\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"e\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/matchable_attributes\x92\x41>\x1a/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x92\x41M\x1aKRetrieve the active launch plan version specified by input request filters.\x12\xeb\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\x84\x01\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x92\x41K\x1aIFetch the active launch plan versions specified by input request filters.\x12\xf3\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"\x80\x01\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x92\x41K\x1aIFetch existing launch plan definition identifiers matching input filters.\x12\x8c\x02\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\xb3\x01\x82\xd3\xe4\x93\x02j\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}Z/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x92\x41@\x1a>Fetch existing launch plan definitions matching input filters.\x12\xc0\x06\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"\xd8\x05\x82\xd3\xe4\x93\x02I\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}:\x01*\x92\x41\x85\x05\x1a\x82\x05Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\x12\xa2\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\">\x82\xd3\xe4\x93\x02\x17\"\x12/api/v1/executions:\x01*\x92\x41\x1e\x1a\x1c\x43reate a workflow execution.\x12\xb1\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"I\x82\xd3\xe4\x93\x02 \"\x1b/api/v1/executions/relaunch:\x01*\x92\x41 \x1a\x1eRelaunch a workflow execution.\x12\x9d\x05\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\xb6\x04\x82\xd3\xe4\x93\x02\x1f\"\x1a/api/v1/executions/recover:\x01*\x92\x41\x8d\x04\x1a\x8a\x04Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\x12\xc2\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"j\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x92\x41*\x1a(Retrieve an existing workflow execution.\x12\xd6\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"r\x82\xd3\xe4\x93\x02:\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}:\x01*\x92\x41/\x1a-Update execution belonging to project domain.\x12\x82\x02\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"\x8a\x01\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x92\x41\x45\x1a\x43Retrieve input and output data from an existing workflow execution.\x12\xc8\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"r\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x92\x41<\x1a:Fetch existing workflow executions matching input filters.\x12\xf4\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"\x86\x01\x82\xd3\xe4\x93\x02:*5/api/v1/executions/{id.project}/{id.domain}/{id.name}:\x01*\x92\x41\x43\x1a\x41Terminate the active workflow execution specified in the request.\x12\xfc\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"\x9f\x01\x82\xd3\xe4\x93\x02p\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41&\x1a$Retrieve an existing node execution.\x12\x9a\x02\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb6\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x92\x41\x38\x1a\x36\x46\x65tch existing node executions matching input filters.\x12\xef\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xfd\x03\x82\xd3\xe4\x93\x02\xac\x03\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x92\x41G\x1a\x45\x46\x65tch child node executions launched by the specified task execution.\x12\xb3\x02\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"\xbf\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41\x41\x1a?Retrieve input and output data from an existing node execution.\x12\x97\x01\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"3\x82\xd3\xe4\x93\x02\x15\"\x10/api/v1/projects:\x01*\x92\x41\x15\x1a\x13Register a project.\x12\x87\x01\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\"6\x82\xd3\xe4\x93\x02\x1a\x1a\x15/api/v1/projects/{id}:\x01*\x92\x41\x13\x1a\x11Update a project.\x12\x85\x01\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"7\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x92\x41\x1c\x1a\x1a\x46\x65tch registered projects.\x12\xdd\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"g\x82\xd3\xe4\x93\x02\x1d\"\x18/api/v1/events/workflows:\x01*\x92\x41\x41\x1a?Create a workflow execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/nodes:\x01*\x92\x41=\x1a;Create a node execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/tasks:\x01*\x92\x41=\x1a;Create a task execution event recording a phase transition.\x12\xa9\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xcc\x02\x82\xd3\xe4\x93\x02\x9c\x02\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41&\x1a$Retrieve an existing task execution.\x12\xd3\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xef\x01\x82\xd3\xe4\x93\x02\xad\x01\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x92\x41\x38\x1a\x36\x46\x65tch existing task executions matching input filters.\x12\xe0\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xec\x02\x82\xd3\xe4\x93\x02\xa1\x02\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41\x41\x1a?Retrieve input and output data from an existing task execution.\x12\xbf\x02\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"\xb0\x01\x82\xd3\xe4\x93\x02O\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}:\x01*\x92\x41X\x1aVUpdate the customized resource attributes associated with a project-domain combination\x12\x9f\x02\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"\x99\x01\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x92\x41Z\x1aXRetrieve the customized resource attributes associated with a project-domain combination\x12\xa9\x02\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"\x9a\x01\x82\xd3\xe4\x93\x02\x39*4/api/v1/project_domain_attributes/{project}/{domain}:\x01*\x92\x41X\x1aVDelete the customized resource attributes associated with a project-domain combination\x12\xce\x02\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"\xce\x01\x82\xd3\xe4\x93\x02_\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}:\x01*\x92\x41\x66\x1a\x64Update the customized resource attributes associated with a project, domain and workflow combination\x12\xa3\x02\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"\xac\x01\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x92\x41h\x1a\x66Retrieve the customized resource attributes associated with a project, domain and workflow combination\x12\xad\x02\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"\xad\x01\x82\xd3\xe4\x93\x02>*9/api/v1/workflow_attributes/{project}/{domain}/{workflow}:\x01*\x92\x41\x66\x1a\x64\x44\x65lete the customized resource attributes associated with a project, domain and workflow combination\x12\xe1\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"e\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/matchable_attributes\x92\x41>\x1a>> thread = api.get_description(id_project, id_domain, id_name, id_version, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str id_project: Name of the project the resource belongs to. (required) + :param str id_domain: Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. (required) + :param str id_name: User provided value for the resource. (required) + :param str id_version: Specific version of the resource. (required) + :param str id_resource_type: Identifies the specific type of resource that this identifier corresponds to. - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects. Eventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects in a similar manner to other Flyte objects + :return: AdminEntityDescription + If the method is called asynchronously, + returns the request thread. + """ + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_description_with_http_info(id_project, id_domain, id_name, id_version, **kwargs) # noqa: E501 + else: + (data) = self.get_description_with_http_info(id_project, id_domain, id_name, id_version, **kwargs) # noqa: E501 + return data + + def get_description_with_http_info(self, id_project, id_domain, id_name, id_version, **kwargs): # noqa: E501 + """Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition. # noqa: E501 + + Retrieve an existing entity description. # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.get_description_with_http_info(id_project, id_domain, id_name, id_version, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str id_project: Name of the project the resource belongs to. (required) + :param str id_domain: Name of the domain the resource belongs to. A domain can be considered as a subset within a specific project. (required) + :param str id_name: User provided value for the resource. (required) + :param str id_version: Specific version of the resource. (required) + :param str id_resource_type: Identifies the specific type of resource that this identifier corresponds to. - DATASET: A dataset represents an entity modeled in Flyte DataCatalog. A Dataset is also a versioned entity and can be a compilation of multiple individual objects. Eventually all Catalog objects should be modeled similar to Flyte Objects. The Dataset entities makes it possible for the UI and CLI to act on the objects in a similar manner to other Flyte objects + :return: AdminEntityDescription + If the method is called asynchronously, + returns the request thread. + """ + + all_params = ['id_project', 'id_domain', 'id_name', 'id_version', 'id_resource_type'] # noqa: E501 + all_params.append('async_req') + all_params.append('_return_http_data_only') + all_params.append('_preload_content') + all_params.append('_request_timeout') + + params = locals() + for key, val in six.iteritems(params['kwargs']): + if key not in all_params: + raise TypeError( + "Got an unexpected keyword argument '%s'" + " to method get_description" % key + ) + params[key] = val + del params['kwargs'] + # verify the required parameter 'id_project' is set + if ('id_project' not in params or + params['id_project'] is None): + raise ValueError("Missing the required parameter `id_project` when calling `get_description`") # noqa: E501 + # verify the required parameter 'id_domain' is set + if ('id_domain' not in params or + params['id_domain'] is None): + raise ValueError("Missing the required parameter `id_domain` when calling `get_description`") # noqa: E501 + # verify the required parameter 'id_name' is set + if ('id_name' not in params or + params['id_name'] is None): + raise ValueError("Missing the required parameter `id_name` when calling `get_description`") # noqa: E501 + # verify the required parameter 'id_version' is set + if ('id_version' not in params or + params['id_version'] is None): + raise ValueError("Missing the required parameter `id_version` when calling `get_description`") # noqa: E501 + + collection_formats = {} + + path_params = {} + if 'id_project' in params: + path_params['id.project'] = params['id_project'] # noqa: E501 + if 'id_domain' in params: + path_params['id.domain'] = params['id_domain'] # noqa: E501 + if 'id_name' in params: + path_params['id.name'] = params['id_name'] # noqa: E501 + if 'id_version' in params: + path_params['id.version'] = params['id_version'] # noqa: E501 + + query_params = [] + if 'id_resource_type' in params: + query_params.append(('id.resource_type', params['id_resource_type'])) # noqa: E501 + + header_params = {} + + form_params = [] + local_var_files = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + # Authentication setting + auth_settings = [] # noqa: E501 + + return self.api_client.call_api( + '/api/v1/entity_description/{id.project}/{id.domain}/{id.name}/{id.version}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=local_var_files, + response_type='AdminEntityDescription', # noqa: E501 + auth_settings=auth_settings, + async_req=params.get('async_req'), + _return_http_data_only=params.get('_return_http_data_only'), + _preload_content=params.get('_preload_content', True), + _request_timeout=params.get('_request_timeout'), + collection_formats=collection_formats) + def get_execution(self, id_project, id_domain, id_name, **kwargs): # noqa: E501 """Fetches a :ref:`ref_flyteidl.admin.Execution`. # noqa: E501 diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py index 6d9846675..769c8cee9 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py @@ -25,6 +25,7 @@ from flyteadmin.models.admin_cron_schedule import AdminCronSchedule from flyteadmin.models.admin_domain import AdminDomain from flyteadmin.models.admin_email_notification import AdminEmailNotification +from flyteadmin.models.admin_entity_description import AdminEntityDescription from flyteadmin.models.admin_execution import AdminExecution from flyteadmin.models.admin_execution_closure import AdminExecutionClosure from flyteadmin.models.admin_execution_cluster_label import AdminExecutionClusterLabel @@ -58,6 +59,7 @@ from flyteadmin.models.admin_launch_plan_update_response import AdminLaunchPlanUpdateResponse from flyteadmin.models.admin_list_matchable_attributes_response import AdminListMatchableAttributesResponse from flyteadmin.models.admin_literal_map_blob import AdminLiteralMapBlob +from flyteadmin.models.admin_long_description import AdminLongDescription from flyteadmin.models.admin_matchable_attributes_configuration import AdminMatchableAttributesConfiguration from flyteadmin.models.admin_matchable_resource import AdminMatchableResource from flyteadmin.models.admin_matching_attributes import AdminMatchingAttributes @@ -97,6 +99,7 @@ from flyteadmin.models.admin_selector_operator import AdminSelectorOperator from flyteadmin.models.admin_slack_notification import AdminSlackNotification from flyteadmin.models.admin_sort import AdminSort +from flyteadmin.models.admin_source_code import AdminSourceCode from flyteadmin.models.admin_system_metadata import AdminSystemMetadata from flyteadmin.models.admin_task import AdminTask from flyteadmin.models.admin_task_closure import AdminTaskClosure @@ -245,6 +248,7 @@ from flyteadmin.models.flyteidlevent_workflow_node_metadata import FlyteidleventWorkflowNodeMetadata from flyteadmin.models.io_strategy_download_mode import IOStrategyDownloadMode from flyteadmin.models.io_strategy_upload_mode import IOStrategyUploadMode +from flyteadmin.models.long_description_description_format import LongDescriptionDescriptionFormat from flyteadmin.models.plugin_override_missing_plugin_behavior import PluginOverrideMissingPluginBehavior from flyteadmin.models.project_project_state import ProjectProjectState from flyteadmin.models.protobuf_list_value import ProtobufListValue diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_entity_description.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_entity_description.py new file mode 100644 index 000000000..585a028b2 --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_entity_description.py @@ -0,0 +1,233 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +import pprint +import re # noqa: F401 + +import six + +from flyteadmin.models.admin_labels import AdminLabels # noqa: F401,E501 +from flyteadmin.models.admin_long_description import AdminLongDescription # noqa: F401,E501 +from flyteadmin.models.admin_source_code import AdminSourceCode # noqa: F401,E501 + + +class AdminEntityDescription(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 = { + 'short_description': 'str', + 'long_description': 'AdminLongDescription', + 'tags': 'list[str]', + 'labels': 'AdminLabels', + 'source': 'AdminSourceCode' + } + + attribute_map = { + 'short_description': 'short_description', + 'long_description': 'long_description', + 'tags': 'tags', + 'labels': 'labels', + 'source': 'source' + } + + def __init__(self, short_description=None, long_description=None, tags=None, labels=None, source=None): # noqa: E501 + """AdminEntityDescription - a model defined in Swagger""" # noqa: E501 + + self._short_description = None + self._long_description = None + self._tags = None + self._labels = None + self._source = None + self.discriminator = None + + if short_description is not None: + self.short_description = short_description + if long_description is not None: + self.long_description = long_description + if tags is not None: + self.tags = tags + if labels is not None: + self.labels = labels + if source is not None: + self.source = source + + @property + def short_description(self): + """Gets the short_description of this AdminEntityDescription. # noqa: E501 + + One-liner overview of the entity. # noqa: E501 + + :return: The short_description of this AdminEntityDescription. # noqa: E501 + :rtype: str + """ + return self._short_description + + @short_description.setter + def short_description(self, short_description): + """Sets the short_description of this AdminEntityDescription. + + One-liner overview of the entity. # noqa: E501 + + :param short_description: The short_description of this AdminEntityDescription. # noqa: E501 + :type: str + """ + + self._short_description = short_description + + @property + def long_description(self): + """Gets the long_description of this AdminEntityDescription. # noqa: E501 + + Full user description with formatting preserved. # noqa: E501 + + :return: The long_description of this AdminEntityDescription. # noqa: E501 + :rtype: AdminLongDescription + """ + return self._long_description + + @long_description.setter + def long_description(self, long_description): + """Sets the long_description of this AdminEntityDescription. + + Full user description with formatting preserved. # noqa: E501 + + :param long_description: The long_description of this AdminEntityDescription. # noqa: E501 + :type: AdminLongDescription + """ + + self._long_description = long_description + + @property + def tags(self): + """Gets the tags of this AdminEntityDescription. # noqa: E501 + + User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities. # noqa: E501 + + :return: The tags of this AdminEntityDescription. # noqa: E501 + :rtype: list[str] + """ + return self._tags + + @tags.setter + def tags(self, tags): + """Sets the tags of this AdminEntityDescription. + + User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities. # noqa: E501 + + :param tags: The tags of this AdminEntityDescription. # noqa: E501 + :type: list[str] + """ + + self._tags = tags + + @property + def labels(self): + """Gets the labels of this AdminEntityDescription. # noqa: E501 + + User-defined free-form key-value pair attributes. These are arbitrary and can be used for searching, filtering and discovering entities. # noqa: E501 + + :return: The labels of this AdminEntityDescription. # noqa: E501 + :rtype: AdminLabels + """ + return self._labels + + @labels.setter + def labels(self, labels): + """Sets the labels of this AdminEntityDescription. + + User-defined free-form key-value pair attributes. These are arbitrary and can be used for searching, filtering and discovering entities. # noqa: E501 + + :param labels: The labels of this AdminEntityDescription. # noqa: E501 + :type: AdminLabels + """ + + self._labels = labels + + @property + def source(self): + """Gets the source of this AdminEntityDescription. # noqa: E501 + + Optional link to source code used to define this entity. # noqa: E501 + + :return: The source of this AdminEntityDescription. # noqa: E501 + :rtype: AdminSourceCode + """ + return self._source + + @source.setter + def source(self, source): + """Sets the source of this AdminEntityDescription. + + Optional link to source code used to define this entity. # noqa: E501 + + :param source: The source of this AdminEntityDescription. # noqa: E501 + :type: AdminSourceCode + """ + + self._source = source + + 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(AdminEntityDescription, 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, AdminEntityDescription): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_spec.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_spec.py index ed3cbd31c..61e324a1b 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_spec.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_spec.py @@ -56,7 +56,9 @@ class AdminExecutionSpec(object): 'max_parallelism': 'int', 'raw_output_data_config': 'AdminRawOutputDataConfig', 'cluster_assignment': 'AdminClusterAssignment', - 'interruptible': 'bool' + 'interruptible': 'bool', + 'description': 'str', + 'tags': 'list[str]' } attribute_map = { @@ -73,10 +75,12 @@ class AdminExecutionSpec(object): 'max_parallelism': 'max_parallelism', 'raw_output_data_config': 'raw_output_data_config', 'cluster_assignment': 'cluster_assignment', - 'interruptible': 'interruptible' + 'interruptible': 'interruptible', + 'description': 'description', + 'tags': 'tags' } - def __init__(self, launch_plan=None, inputs=None, metadata=None, notifications=None, disable_all=None, labels=None, annotations=None, security_context=None, auth_role=None, quality_of_service=None, max_parallelism=None, raw_output_data_config=None, cluster_assignment=None, interruptible=None): # noqa: E501 + def __init__(self, launch_plan=None, inputs=None, metadata=None, notifications=None, disable_all=None, labels=None, annotations=None, security_context=None, auth_role=None, quality_of_service=None, max_parallelism=None, raw_output_data_config=None, cluster_assignment=None, interruptible=None, description=None, tags=None): # noqa: E501 """AdminExecutionSpec - a model defined in Swagger""" # noqa: E501 self._launch_plan = None @@ -93,6 +97,8 @@ def __init__(self, launch_plan=None, inputs=None, metadata=None, notifications=N self._raw_output_data_config = None self._cluster_assignment = None self._interruptible = None + self._description = None + self._tags = None self.discriminator = None if launch_plan is not None: @@ -123,6 +129,10 @@ def __init__(self, launch_plan=None, inputs=None, metadata=None, notifications=N self.cluster_assignment = cluster_assignment if interruptible is not None: self.interruptible = interruptible + if description is not None: + self.description = description + if tags is not None: + self.tags = tags @property def launch_plan(self): @@ -438,6 +448,52 @@ def interruptible(self, interruptible): self._interruptible = interruptible + @property + def description(self): + """Gets the description of this AdminExecutionSpec. # noqa: E501 + + One-liner overview of the execution. # noqa: E501 + + :return: The description of this AdminExecutionSpec. # noqa: E501 + :rtype: str + """ + return self._description + + @description.setter + def description(self, description): + """Sets the description of this AdminExecutionSpec. + + One-liner overview of the execution. # noqa: E501 + + :param description: The description of this AdminExecutionSpec. # noqa: E501 + :type: str + """ + + self._description = description + + @property + def tags(self): + """Gets the tags of this AdminExecutionSpec. # noqa: E501 + + User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities. # noqa: E501 + + :return: The tags of this AdminExecutionSpec. # noqa: E501 + :rtype: list[str] + """ + return self._tags + + @tags.setter + def tags(self, tags): + """Sets the tags of this AdminExecutionSpec. + + User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities. # noqa: E501 + + :param tags: The tags of this AdminExecutionSpec. # noqa: E501 + :type: list[str] + """ + + self._tags = tags + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_launch_plan_spec.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_launch_plan_spec.py index 710d5a414..410ea22e2 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_launch_plan_spec.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_launch_plan_spec.py @@ -19,6 +19,7 @@ from flyteadmin.models.admin_annotations import AdminAnnotations # noqa: F401,E501 from flyteadmin.models.admin_auth import AdminAuth # noqa: F401,E501 from flyteadmin.models.admin_auth_role import AdminAuthRole # noqa: F401,E501 +from flyteadmin.models.admin_entity_description import AdminEntityDescription # noqa: F401,E501 from flyteadmin.models.admin_labels import AdminLabels # noqa: F401,E501 from flyteadmin.models.admin_launch_plan_metadata import AdminLaunchPlanMetadata # noqa: F401,E501 from flyteadmin.models.admin_raw_output_data_config import AdminRawOutputDataConfig # noqa: F401,E501 @@ -56,7 +57,8 @@ class AdminLaunchPlanSpec(object): 'quality_of_service': 'CoreQualityOfService', 'raw_output_data_config': 'AdminRawOutputDataConfig', 'max_parallelism': 'int', - 'interruptible': 'bool' + 'interruptible': 'bool', + 'entity_description': 'AdminEntityDescription' } attribute_map = { @@ -73,10 +75,11 @@ class AdminLaunchPlanSpec(object): 'quality_of_service': 'quality_of_service', 'raw_output_data_config': 'raw_output_data_config', 'max_parallelism': 'max_parallelism', - 'interruptible': 'interruptible' + 'interruptible': 'interruptible', + 'entity_description': 'entity_description' } - def __init__(self, workflow_id=None, entity_metadata=None, default_inputs=None, fixed_inputs=None, role=None, labels=None, annotations=None, auth=None, auth_role=None, security_context=None, quality_of_service=None, raw_output_data_config=None, max_parallelism=None, interruptible=None): # noqa: E501 + def __init__(self, workflow_id=None, entity_metadata=None, default_inputs=None, fixed_inputs=None, role=None, labels=None, annotations=None, auth=None, auth_role=None, security_context=None, quality_of_service=None, raw_output_data_config=None, max_parallelism=None, interruptible=None, entity_description=None): # noqa: E501 """AdminLaunchPlanSpec - a model defined in Swagger""" # noqa: E501 self._workflow_id = None @@ -93,6 +96,7 @@ def __init__(self, workflow_id=None, entity_metadata=None, default_inputs=None, self._raw_output_data_config = None self._max_parallelism = None self._interruptible = None + self._entity_description = None self.discriminator = None if workflow_id is not None: @@ -123,6 +127,8 @@ def __init__(self, workflow_id=None, entity_metadata=None, default_inputs=None, self.max_parallelism = max_parallelism if interruptible is not None: self.interruptible = interruptible + if entity_description is not None: + self.entity_description = entity_description @property def workflow_id(self): @@ -436,6 +442,29 @@ def interruptible(self, interruptible): self._interruptible = interruptible + @property + def entity_description(self): + """Gets the entity_description of this AdminLaunchPlanSpec. # noqa: E501 + + EntityDescription encapsulates all the detailed documentation for the launch plan. # noqa: E501 + + :return: The entity_description of this AdminLaunchPlanSpec. # noqa: E501 + :rtype: AdminEntityDescription + """ + return self._entity_description + + @entity_description.setter + def entity_description(self, entity_description): + """Sets the entity_description of this AdminLaunchPlanSpec. + + EntityDescription encapsulates all the detailed documentation for the launch plan. # noqa: E501 + + :param entity_description: The entity_description of this AdminLaunchPlanSpec. # noqa: E501 + :type: AdminEntityDescription + """ + + self._entity_description = entity_description + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_long_description.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_long_description.py new file mode 100644 index 000000000..9143508cb --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_long_description.py @@ -0,0 +1,195 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +import pprint +import re # noqa: F401 + +import six + +from flyteadmin.models.long_description_description_format import LongDescriptionDescriptionFormat # noqa: F401,E501 + + +class AdminLongDescription(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 = { + 'values': 'str', + 'uri': 'str', + 'long_format': 'LongDescriptionDescriptionFormat', + 'icon_link': 'str' + } + + attribute_map = { + 'values': 'values', + 'uri': 'uri', + 'long_format': 'long_format', + 'icon_link': 'icon_link' + } + + def __init__(self, values=None, uri=None, long_format=None, icon_link=None): # noqa: E501 + """AdminLongDescription - a model defined in Swagger""" # noqa: E501 + + self._values = None + self._uri = None + self._long_format = None + self._icon_link = None + self.discriminator = None + + if values is not None: + self.values = values + if uri is not None: + self.uri = uri + if long_format is not None: + self.long_format = long_format + if icon_link is not None: + self.icon_link = icon_link + + @property + def values(self): + """Gets the values of this AdminLongDescription. # noqa: E501 + + + :return: The values of this AdminLongDescription. # noqa: E501 + :rtype: str + """ + return self._values + + @values.setter + def values(self, values): + """Sets the values of this AdminLongDescription. + + + :param values: The values of this AdminLongDescription. # noqa: E501 + :type: str + """ + + self._values = values + + @property + def uri(self): + """Gets the uri of this AdminLongDescription. # noqa: E501 + + + :return: The uri of this AdminLongDescription. # noqa: E501 + :rtype: str + """ + return self._uri + + @uri.setter + def uri(self, uri): + """Sets the uri of this AdminLongDescription. + + + :param uri: The uri of this AdminLongDescription. # noqa: E501 + :type: str + """ + + self._uri = uri + + @property + def long_format(self): + """Gets the long_format of this AdminLongDescription. # noqa: E501 + + + :return: The long_format of this AdminLongDescription. # noqa: E501 + :rtype: LongDescriptionDescriptionFormat + """ + return self._long_format + + @long_format.setter + def long_format(self, long_format): + """Sets the long_format of this AdminLongDescription. + + + :param long_format: The long_format of this AdminLongDescription. # noqa: E501 + :type: LongDescriptionDescriptionFormat + """ + + self._long_format = long_format + + @property + def icon_link(self): + """Gets the icon_link of this AdminLongDescription. # noqa: E501 + + + :return: The icon_link of this AdminLongDescription. # noqa: E501 + :rtype: str + """ + return self._icon_link + + @icon_link.setter + def icon_link(self, icon_link): + """Sets the icon_link of this AdminLongDescription. + + + :param icon_link: The icon_link of this AdminLongDescription. # noqa: E501 + :type: str + """ + + self._icon_link = icon_link + + 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(AdminLongDescription, 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, AdminLongDescription): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_project.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_project.py index 325d97fd8..650e5de52 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_project.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_project.py @@ -40,7 +40,8 @@ class AdminProject(object): 'domains': 'list[AdminDomain]', 'description': 'str', 'labels': 'AdminLabels', - 'state': 'ProjectProjectState' + 'state': 'ProjectProjectState', + 'tags': 'list[str]' } attribute_map = { @@ -49,10 +50,11 @@ class AdminProject(object): 'domains': 'domains', 'description': 'description', 'labels': 'labels', - 'state': 'state' + 'state': 'state', + 'tags': 'tags' } - def __init__(self, id=None, name=None, domains=None, description=None, labels=None, state=None): # noqa: E501 + def __init__(self, id=None, name=None, domains=None, description=None, labels=None, state=None, tags=None): # noqa: E501 """AdminProject - a model defined in Swagger""" # noqa: E501 self._id = None @@ -61,6 +63,7 @@ def __init__(self, id=None, name=None, domains=None, description=None, labels=No self._description = None self._labels = None self._state = None + self._tags = None self.discriminator = None if id is not None: @@ -75,6 +78,8 @@ def __init__(self, id=None, name=None, domains=None, description=None, labels=No self.labels = labels if state is not None: self.state = state + if tags is not None: + self.tags = tags @property def id(self): @@ -208,6 +213,29 @@ def state(self, state): self._state = state + @property + def tags(self): + """Gets the tags of this AdminProject. # noqa: E501 + + User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities. # noqa: E501 + + :return: The tags of this AdminProject. # noqa: E501 + :rtype: list[str] + """ + return self._tags + + @tags.setter + def tags(self, tags): + """Sets the tags of this AdminProject. + + User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities. # noqa: E501 + + :param tags: The tags of this AdminProject. # noqa: E501 + :type: list[str] + """ + + self._tags = tags + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_source_code.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_source_code.py new file mode 100644 index 000000000..e3308e15c --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_source_code.py @@ -0,0 +1,245 @@ +# 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 AdminSourceCode(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 = { + 'file': 'str', + 'line_number': 'int', + 'repo': 'str', + 'branch': 'str', + 'link': 'str', + 'language': 'str' + } + + attribute_map = { + 'file': 'file', + 'line_number': 'line_number', + 'repo': 'repo', + 'branch': 'branch', + 'link': 'link', + 'language': 'language' + } + + def __init__(self, file=None, line_number=None, repo=None, branch=None, link=None, language=None): # noqa: E501 + """AdminSourceCode - a model defined in Swagger""" # noqa: E501 + + self._file = None + self._line_number = None + self._repo = None + self._branch = None + self._link = None + self._language = None + self.discriminator = None + + if file is not None: + self.file = file + if line_number is not None: + self.line_number = line_number + if repo is not None: + self.repo = repo + if branch is not None: + self.branch = branch + if link is not None: + self.link = link + if language is not None: + self.language = language + + @property + def file(self): + """Gets the file of this AdminSourceCode. # noqa: E501 + + + :return: The file of this AdminSourceCode. # noqa: E501 + :rtype: str + """ + return self._file + + @file.setter + def file(self, file): + """Sets the file of this AdminSourceCode. + + + :param file: The file of this AdminSourceCode. # noqa: E501 + :type: str + """ + + self._file = file + + @property + def line_number(self): + """Gets the line_number of this AdminSourceCode. # noqa: E501 + + + :return: The line_number of this AdminSourceCode. # noqa: E501 + :rtype: int + """ + return self._line_number + + @line_number.setter + def line_number(self, line_number): + """Sets the line_number of this AdminSourceCode. + + + :param line_number: The line_number of this AdminSourceCode. # noqa: E501 + :type: int + """ + + self._line_number = line_number + + @property + def repo(self): + """Gets the repo of this AdminSourceCode. # noqa: E501 + + + :return: The repo of this AdminSourceCode. # noqa: E501 + :rtype: str + """ + return self._repo + + @repo.setter + def repo(self, repo): + """Sets the repo of this AdminSourceCode. + + + :param repo: The repo of this AdminSourceCode. # noqa: E501 + :type: str + """ + + self._repo = repo + + @property + def branch(self): + """Gets the branch of this AdminSourceCode. # noqa: E501 + + + :return: The branch of this AdminSourceCode. # noqa: E501 + :rtype: str + """ + return self._branch + + @branch.setter + def branch(self, branch): + """Sets the branch of this AdminSourceCode. + + + :param branch: The branch of this AdminSourceCode. # noqa: E501 + :type: str + """ + + self._branch = branch + + @property + def link(self): + """Gets the link of this AdminSourceCode. # noqa: E501 + + + :return: The link of this AdminSourceCode. # noqa: E501 + :rtype: str + """ + return self._link + + @link.setter + def link(self, link): + """Sets the link of this AdminSourceCode. + + + :param link: The link of this AdminSourceCode. # noqa: E501 + :type: str + """ + + self._link = link + + @property + def language(self): + """Gets the language of this AdminSourceCode. # noqa: E501 + + + :return: The language of this AdminSourceCode. # noqa: E501 + :rtype: str + """ + return self._language + + @language.setter + def language(self, language): + """Sets the language of this AdminSourceCode. + + + :param language: The language of this AdminSourceCode. # noqa: E501 + :type: str + """ + + self._language = language + + 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(AdminSourceCode, 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, AdminSourceCode): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_spec.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_spec.py index b9fa4fddc..eb5c2d767 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_spec.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_task_spec.py @@ -16,6 +16,7 @@ import six +from flyteadmin.models.admin_entity_description import AdminEntityDescription # noqa: F401,E501 from flyteadmin.models.core_task_template import CoreTaskTemplate # noqa: F401,E501 @@ -33,21 +34,26 @@ class AdminTaskSpec(object): and the value is json key in definition. """ swagger_types = { - 'template': 'CoreTaskTemplate' + 'template': 'CoreTaskTemplate', + 'entity_description': 'AdminEntityDescription' } attribute_map = { - 'template': 'template' + 'template': 'template', + 'entity_description': 'entity_description' } - def __init__(self, template=None): # noqa: E501 + def __init__(self, template=None, entity_description=None): # noqa: E501 """AdminTaskSpec - a model defined in Swagger""" # noqa: E501 self._template = None + self._entity_description = None self.discriminator = None if template is not None: self.template = template + if entity_description is not None: + self.entity_description = entity_description @property def template(self): @@ -72,6 +78,29 @@ def template(self, template): self._template = template + @property + def entity_description(self): + """Gets the entity_description of this AdminTaskSpec. # noqa: E501 + + EntityDescription encapsulates all the detailed documentation for the task. # noqa: E501 + + :return: The entity_description of this AdminTaskSpec. # noqa: E501 + :rtype: AdminEntityDescription + """ + return self._entity_description + + @entity_description.setter + def entity_description(self, entity_description): + """Sets the entity_description of this AdminTaskSpec. + + EntityDescription encapsulates all the detailed documentation for the task. # noqa: E501 + + :param entity_description: The entity_description of this AdminTaskSpec. # noqa: E501 + :type: AdminEntityDescription + """ + + self._entity_description = entity_description + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_spec.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_spec.py index d49a6db68..716b1ba6a 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_spec.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_spec.py @@ -16,6 +16,7 @@ import six +from flyteadmin.models.admin_entity_description import AdminEntityDescription # noqa: F401,E501 from flyteadmin.models.core_workflow_template import CoreWorkflowTemplate # noqa: F401,E501 @@ -34,25 +35,30 @@ class AdminWorkflowSpec(object): """ swagger_types = { 'template': 'CoreWorkflowTemplate', - 'sub_workflows': 'list[CoreWorkflowTemplate]' + 'sub_workflows': 'list[CoreWorkflowTemplate]', + 'entity_description': 'AdminEntityDescription' } attribute_map = { 'template': 'template', - 'sub_workflows': 'sub_workflows' + 'sub_workflows': 'sub_workflows', + 'entity_description': 'entity_description' } - def __init__(self, template=None, sub_workflows=None): # noqa: E501 + def __init__(self, template=None, sub_workflows=None, entity_description=None): # noqa: E501 """AdminWorkflowSpec - a model defined in Swagger""" # noqa: E501 self._template = None self._sub_workflows = None + self._entity_description = None self.discriminator = None if template is not None: self.template = template if sub_workflows is not None: self.sub_workflows = sub_workflows + if entity_description is not None: + self.entity_description = entity_description @property def template(self): @@ -100,6 +106,29 @@ def sub_workflows(self, sub_workflows): self._sub_workflows = sub_workflows + @property + def entity_description(self): + """Gets the entity_description of this AdminWorkflowSpec. # noqa: E501 + + EntityDescription encapsulates all the detailed documentation for the workflow. # noqa: E501 + + :return: The entity_description of this AdminWorkflowSpec. # noqa: E501 + :rtype: AdminEntityDescription + """ + return self._entity_description + + @entity_description.setter + def entity_description(self, entity_description): + """Sets the entity_description of this AdminWorkflowSpec. + + EntityDescription encapsulates all the detailed documentation for the workflow. # noqa: E501 + + :param entity_description: The entity_description of this AdminWorkflowSpec. # noqa: E501 + :type: AdminEntityDescription + """ + + self._entity_description = entity_description + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/long_description_description_format.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/long_description_description_format.py new file mode 100644 index 000000000..c190a6029 --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/long_description_description_format.py @@ -0,0 +1,95 @@ +# 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 LongDescriptionDescriptionFormat(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + UNKNOWN = "UNKNOWN" + MARKDOWN = "MARKDOWN" + HTML = "HTML" + RST = "RST" + + """ + 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 + """LongDescriptionDescriptionFormat - 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(LongDescriptionDescriptionFormat, 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, LongDescriptionDescriptionFormat): + 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/test/test_admin_entity_description.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_entity_description.py new file mode 100644 index 000000000..ec32bee84 --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_entity_description.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +from __future__ import absolute_import + +import unittest + +import flyteadmin +from flyteadmin.models.admin_entity_description import AdminEntityDescription # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestAdminEntityDescription(unittest.TestCase): + """AdminEntityDescription unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAdminEntityDescription(self): + """Test AdminEntityDescription""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.admin_entity_description.AdminEntityDescription() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_long_description.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_long_description.py new file mode 100644 index 000000000..e04b91053 --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_long_description.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +from __future__ import absolute_import + +import unittest + +import flyteadmin +from flyteadmin.models.admin_long_description import AdminLongDescription # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestAdminLongDescription(unittest.TestCase): + """AdminLongDescription unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAdminLongDescription(self): + """Test AdminLongDescription""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.admin_long_description.AdminLongDescription() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py index 501d620a0..49f8e5df5 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py @@ -99,6 +99,13 @@ def test_get_active_launch_plan(self): """ pass + def test_get_description(self): + """Test case for get_description + + Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition. # noqa: E501 + """ + pass + def test_get_execution(self): """Test case for get_execution diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_source_code.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_source_code.py new file mode 100644 index 000000000..9c9a649de --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_source_code.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +from __future__ import absolute_import + +import unittest + +import flyteadmin +from flyteadmin.models.admin_source_code import AdminSourceCode # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestAdminSourceCode(unittest.TestCase): + """AdminSourceCode unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAdminSourceCode(self): + """Test AdminSourceCode""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.admin_source_code.AdminSourceCode() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_long_description_description_format.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_long_description_description_format.py new file mode 100644 index 000000000..e49ad1281 --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_long_description_description_format.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.long_description_description_format import LongDescriptionDescriptionFormat # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestLongDescriptionDescriptionFormat(unittest.TestCase): + """LongDescriptionDescriptionFormat unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testLongDescriptionDescriptionFormat(self): + """Test LongDescriptionDescriptionFormat""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.long_description_description_format.LongDescriptionDescriptionFormat() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/go.mod b/go.mod index 2f4b68f28..882371974 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/antihax/optional v1.0.0 github.com/flyteorg/flytestdlib v1.0.0 github.com/go-test/deep v1.0.7 + github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b github.com/golang/protobuf v1.4.3 github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 diff --git a/go.sum b/go.sum index 9ac47e8d9..877080b80 100644 --- a/go.sum +++ b/go.sum @@ -219,6 +219,7 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= diff --git a/protos/docs/admin/admin.rst b/protos/docs/admin/admin.rst index e01eb55c8..108546318 100644 --- a/protos/docs/admin/admin.rst +++ b/protos/docs/admin/admin.rst @@ -726,6 +726,120 @@ Sort.Direction +.. _ref_flyteidl/admin/entity_description.proto: + +flyteidl/admin/entity_description.proto +================================================================== + + + + + +.. _ref_flyteidl.admin.EntityDescription: + +EntityDescription +------------------------------------------------------------------ + +EntityDescription contains detailed description for the task/workflow/launch plan. +Documentation could provide insight into the algorithms, business use case, etc. + + + +.. csv-table:: EntityDescription type fields + :header: "Field", "Type", "Label", "Description" + :widths: auto + + "short_description", ":ref:`ref_string`", "", "One-liner overview of the entity." + "long_description", ":ref:`ref_flyteidl.admin.LongDescription`", "", "Full user description with formatting preserved." + "tags", ":ref:`ref_string`", "repeated", "User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities." + "labels", ":ref:`ref_flyteidl.admin.Labels`", "", "User-defined free-form key-value pair attributes. These are arbitrary and can be used for searching, filtering and discovering entities." + "source", ":ref:`ref_flyteidl.admin.SourceCode`", "", "Optional link to source code used to define this entity." + + + + + + + +.. _ref_flyteidl.admin.LongDescription: + +LongDescription +------------------------------------------------------------------ + +Full user description with formatting preserved. This can be rendered +by clients, such as the console or command line tools with in-tact +formatting. + + + +.. csv-table:: LongDescription type fields + :header: "Field", "Type", "Label", "Description" + :widths: auto + + "values", ":ref:`ref_string`", "", "long description - no more than 4KB" + "uri", ":ref:`ref_string`", "", "if the description sizes exceed some threshold we can offload the entire description proto altogether to an external data store, like S3 rather than store inline in the db" + "long_format", ":ref:`ref_flyteidl.admin.LongDescription.DescriptionFormat`", "", "format of the long description" + "icon_link", ":ref:`ref_string`", "", "Optional link to an icon for the entity" + + + + + + + +.. _ref_flyteidl.admin.SourceCode: + +SourceCode +------------------------------------------------------------------ + +Link to source code used to define this entity + + + +.. csv-table:: SourceCode type fields + :header: "Field", "Type", "Label", "Description" + :widths: auto + + "file", ":ref:`ref_string`", "", "File where the code is located" + "line_number", ":ref:`ref_uint32`", "", "Line number where the task definition, workflow definition, etc starts at" + "repo", ":ref:`ref_string`", "", "git repository" + "branch", ":ref:`ref_string`", "", "branch of the repository" + "link", ":ref:`ref_string`", "", "link to the original repository" + "language", ":ref:`ref_string`", "", "language of the code" + + + + + + + + + +.. _ref_flyteidl.admin.LongDescription.DescriptionFormat: + +LongDescription.DescriptionFormat +------------------------------------------------------------------ + + + +.. csv-table:: Enum LongDescription.DescriptionFormat values + :header: "Name", "Number", "Description" + :widths: auto + + "UNKNOWN", "0", "" + "MARKDOWN", "1", "" + "HTML", "2", "" + "RST", "3", "python default documentation - comments is rst" + + + + + + + + + + .. _ref_flyteidl/admin/event.proto: flyteidl/admin/event.proto @@ -1180,6 +1294,8 @@ of an execution as it progresses across phase changes. "raw_output_data_config", ":ref:`ref_flyteidl.admin.RawOutputDataConfig`", "", "User setting to configure where to store offloaded data (i.e. Blobs, structured datasets, query data, etc.). This should be a prefix like s3://my-bucket/my-data" "cluster_assignment", ":ref:`ref_flyteidl.admin.ClusterAssignment`", "", "Controls how to select an available cluster on which this execution should run." "interruptible", ":ref:`ref_google.protobuf.BoolValue`", "", "Allows for the interruptible flag of a workflow to be overwritten for a single execution. Omitting this field uses the workflow's value as a default. As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper around the bool field." + "description", ":ref:`ref_string`", "", "One-liner overview of the execution." + "tags", ":ref:`ref_string`", "repeated", "User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities." @@ -1708,6 +1824,7 @@ User-provided launch plan definition and configuration values. "raw_output_data_config", ":ref:`ref_flyteidl.admin.RawOutputDataConfig`", "", "Encapsulates user settings pertaining to offloaded data (i.e. Blobs, Schema, query data, etc.)." "max_parallelism", ":ref:`ref_int32`", "", "Controls the maximum number of tasknodes that can be run in parallel for the entire workflow. This is useful to achieve fairness. Note: MapTasks are regarded as one unit, and parallelism/concurrency of MapTasks is independent from this." "interruptible", ":ref:`ref_google.protobuf.BoolValue`", "", "Allows for the interruptible flag of a workflow to be overwritten for a single execution. Omitting this field uses the workflow's value as a default. As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper around the bool field." + "entity_description", ":ref:`ref_flyteidl.admin.EntityDescription`", "", "EntityDescription encapsulates all the detailed documentation for the launch plan." @@ -2546,6 +2663,7 @@ Top-level namespace used to classify different entities like workflows and execu "description", ":ref:`ref_string`", "", "" "labels", ":ref:`ref_flyteidl.admin.Labels`", "", "Leverage Labels from flyteidel.admin.common.proto to tag projects with ownership information." "state", ":ref:`ref_flyteidl.admin.Project.ProjectState`", "", "" + "tags", ":ref:`ref_string`", "repeated", "User-specified tags. These are arbitrary and can be used for searching filtering and discovering entities." @@ -3074,6 +3192,7 @@ Represents a structure that encapsulates the user-configured specification of th :widths: auto "template", ":ref:`ref_flyteidl.core.TaskTemplate`", "", "Template of the task that encapsulates all the metadata of the task." + "entity_description", ":ref:`ref_flyteidl.admin.EntityDescription`", "", "EntityDescription encapsulates all the detailed documentation for the task." @@ -3491,6 +3610,7 @@ Represents a structure that encapsulates the specification of the workflow. "template", ":ref:`ref_flyteidl.core.WorkflowTemplate`", "", "Template of the task that encapsulates all the metadata of the workflow." "sub_workflows", ":ref:`ref_flyteidl.core.WorkflowTemplate`", "repeated", "Workflows that are embedded into other workflows need to be passed alongside the parent workflow to the propeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out to Admin to see other registered workflows). In fact, subworkflows do not even need to be registered." + "entity_description", ":ref:`ref_flyteidl.admin.EntityDescription`", "", "EntityDescription encapsulates all the detailed documentation for the workflow." diff --git a/protos/docs/service/service.rst b/protos/docs/service/service.rst index 39a646a65..d7b9e9507 100644 --- a/protos/docs/service/service.rst +++ b/protos/docs/service/service.rst @@ -79,6 +79,7 @@ Standard response codes for both are defined here: https://github.com/grpc-ecosy "GetNamedEntity", ":ref:`ref_flyteidl.admin.NamedEntityGetRequest`", ":ref:`ref_flyteidl.admin.NamedEntity`", "Returns a :ref:`ref_flyteidl.admin.NamedEntity` object." "UpdateNamedEntity", ":ref:`ref_flyteidl.admin.NamedEntityUpdateRequest`", ":ref:`ref_flyteidl.admin.NamedEntityUpdateResponse`", "Updates a :ref:`ref_flyteidl.admin.NamedEntity` object." "GetVersion", ":ref:`ref_flyteidl.admin.GetVersionRequest`", ":ref:`ref_flyteidl.admin.GetVersionResponse`", "" + "GetDescription", ":ref:`ref_flyteidl.admin.ObjectGetRequest`", ":ref:`ref_flyteidl.admin.EntityDescription`", "Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition." diff --git a/protos/flyteidl/admin/entity_description.proto b/protos/flyteidl/admin/entity_description.proto new file mode 100644 index 000000000..4e688765b --- /dev/null +++ b/protos/flyteidl/admin/entity_description.proto @@ -0,0 +1,63 @@ +syntax = "proto3"; + +package flyteidl.admin; +option go_package = "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin"; + +import "flyteidl/core/identifier.proto"; +import "flyteidl/admin/common.proto"; + +// EntityDescription contains detailed description for the task/workflow/launch plan. +// Documentation could provide insight into the algorithms, business use case, etc. +message EntityDescription { + // One-liner overview of the entity. + string short_description = 1; + // Full user description with formatting preserved. + LongDescription long_description = 2; + // User-specified tags. These are arbitrary and can be used for searching + // filtering and discovering entities. + repeated string tags = 3; + // User-defined free-form key-value pair attributes. These are arbitrary + // and can be used for searching, filtering and discovering entities. + Labels labels = 4; + // Optional link to source code used to define this entity. + SourceCode source = 5; +} + +// Full user description with formatting preserved. This can be rendered +// by clients, such as the console or command line tools with in-tact +// formatting. +message LongDescription { + // long description - no more than 4KB + string values = 1; + // if the description sizes exceed some threshold we can offload the entire + // description proto altogether to an external data store, like S3 rather than store inline in the db + string uri = 2; + + enum DescriptionFormat { + UNKNOWN = 0; + MARKDOWN = 1; + HTML = 2; + // python default documentation - comments is rst + RST = 3; + } + // format of the long description + DescriptionFormat long_format = 3; + // Optional link to an icon for the entity + string icon_link = 4; +} + +// Link to source code used to define this entity +message SourceCode { + // File where the code is located + string file = 1; + // Line number where the task definition, workflow definition, etc starts at + uint32 line_number = 2; + // git repository + string repo = 3; + // branch of the repository + string branch = 4; + // link to the original repository + string link = 5; + // language of the code + string language = 6; +} diff --git a/protos/flyteidl/admin/execution.proto b/protos/flyteidl/admin/execution.proto index a08c9bbd1..cecf30376 100644 --- a/protos/flyteidl/admin/execution.proto +++ b/protos/flyteidl/admin/execution.proto @@ -296,6 +296,13 @@ message ExecutionSpec { // As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper // around the bool field. google.protobuf.BoolValue interruptible = 21; + + // One-liner overview of the execution. + string description = 22; + + // User-specified tags. These are arbitrary and can be used for searching + // filtering and discovering entities. + repeated string tags = 23; } // Request to terminate an in-progress execution. This action is irreversible. diff --git a/protos/flyteidl/admin/launch_plan.proto b/protos/flyteidl/admin/launch_plan.proto index 13d87fd97..f5570bc80 100644 --- a/protos/flyteidl/admin/launch_plan.proto +++ b/protos/flyteidl/admin/launch_plan.proto @@ -10,6 +10,7 @@ import "flyteidl/core/interface.proto"; import "flyteidl/core/security.proto"; import "flyteidl/admin/schedule.proto"; import "flyteidl/admin/common.proto"; +import "flyteidl/admin/entity_description.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; @@ -125,6 +126,9 @@ message LaunchPlanSpec { // As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper // around the bool field. google.protobuf.BoolValue interruptible = 19; + + // EntityDescription encapsulates all the detailed documentation for the launch plan. + EntityDescription entity_description = 20; } // Values computed by the flyte platform after launch plan registration. diff --git a/protos/flyteidl/admin/project.proto b/protos/flyteidl/admin/project.proto index 80c3da86a..dfa1546a8 100644 --- a/protos/flyteidl/admin/project.proto +++ b/protos/flyteidl/admin/project.proto @@ -45,6 +45,10 @@ message Project { SYSTEM_GENERATED = 2; } ProjectState state = 6; + + // User-specified tags. These are arbitrary and can be used for searching + // filtering and discovering entities. + repeated string tags = 7; } // Represents a list of projects. diff --git a/protos/flyteidl/admin/task.proto b/protos/flyteidl/admin/task.proto index 1a5ea8dce..77f68fcd7 100644 --- a/protos/flyteidl/admin/task.proto +++ b/protos/flyteidl/admin/task.proto @@ -7,6 +7,7 @@ import "flyteidl/core/identifier.proto"; import "flyteidl/core/tasks.proto"; import "flyteidl/core/compiler.proto"; import "google/protobuf/timestamp.proto"; +import "flyteidl/admin/entity_description.proto"; // Represents a request structure to create a revision of a task. // See :ref:`ref_flyteidl.admin.Task` for more details @@ -51,6 +52,9 @@ message TaskList { message TaskSpec { // Template of the task that encapsulates all the metadata of the task. core.TaskTemplate template = 1; + + // EntityDescription encapsulates all the detailed documentation for the task. + EntityDescription entity_description = 2; } // Compute task attributes which include values derived from the TaskSpec, as well as plugin-specific data diff --git a/protos/flyteidl/admin/workflow.proto b/protos/flyteidl/admin/workflow.proto index 895e33b77..9b6722623 100644 --- a/protos/flyteidl/admin/workflow.proto +++ b/protos/flyteidl/admin/workflow.proto @@ -7,6 +7,7 @@ import "flyteidl/core/compiler.proto"; import "flyteidl/core/identifier.proto"; import "flyteidl/core/workflow.proto"; import "google/protobuf/timestamp.proto"; +import "flyteidl/admin/entity_description.proto"; // Represents a request structure to create a revision of a workflow. // See :ref:`ref_flyteidl.admin.Workflow` for more details @@ -55,6 +56,9 @@ message WorkflowSpec { // propeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out // to Admin to see other registered workflows). In fact, subworkflows do not even need to be registered. repeated core.WorkflowTemplate sub_workflows = 2; + + // EntityDescription encapsulates all the detailed documentation for the workflow. + EntityDescription entity_description = 3; } // A container holding the compiled workflow produced from the WorkflowSpec and additional metadata. diff --git a/protos/flyteidl/service/admin.proto b/protos/flyteidl/service/admin.proto index ca612515b..e561e2e83 100644 --- a/protos/flyteidl/service/admin.proto +++ b/protos/flyteidl/service/admin.proto @@ -17,6 +17,7 @@ import "flyteidl/admin/node_execution.proto"; import "flyteidl/admin/task_execution.proto"; import "flyteidl/admin/version.proto"; import "flyteidl/admin/common.proto"; +import "flyteidl/admin/entity_description.proto"; import "protoc-gen-swagger/options/annotations.proto"; // The following defines an RPC service that is also served over HTTP via grpc-gateway. @@ -571,5 +572,14 @@ service AdminService { }; } + // Fetch a :ref:`ref_flyteidl.admin.EntityDescription` definition. + rpc GetDescription (flyteidl.admin.ObjectGetRequest) returns (flyteidl.admin.EntityDescription) { + option (google.api.http) = { + get: "/api/v1/entity_description/{id.project}/{id.domain}/{id.name}/{id.version}" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + description: "Retrieve an existing entity description." + }; + } }