From bdb76306558b64645f095bc34b32ac487222fc3f Mon Sep 17 00:00:00 2001 From: Dan Rammer Date: Tue, 21 Mar 2023 16:52:00 -0500 Subject: [PATCH] Create service for runtime metrics (#367) * added span messages Signed-off-by: Daniel Rammer * added endpoints to service Signed-off-by: Daniel Rammer * generated mocks Signed-off-by: Daniel Rammer * removed get task execution metrics rpc Signed-off-by: Daniel Rammer * added EXECUTION_IDLE category Signed-off-by: Daniel Rammer * updated PLUGIN_EXECUTION to PLUGIN_RUNTIME Signed-off-by: Daniel Rammer * removed recorded_at on workflow and node level events Signed-off-by: Daniel Rammer * added docs for task event reported_at field Signed-off-by: Daniel Rammer * removed GetNodeExecutionMetrics endpoint - will implement later if necessary Signed-off-by: Daniel Rammer * updated docs Signed-off-by: Daniel Rammer * added reported_at for node execution events Signed-off-by: Daniel Rammer * fixed typo Signed-off-by: Daniel Rammer * fixed typos and removed dead code Signed-off-by: Daniel Rammer * updated categories Signed-off-by: Daniel Rammer * added workflow setup and teardown categories Signed-off-by: Daniel Rammer * simplified span message and moved to flyteidl.core Signed-off-by: Daniel Rammer --------- Signed-off-by: Daniel Rammer --- clients/go/admin/mocks/AdminServiceClient.go | 48 + clients/go/admin/mocks/AdminServiceServer.go | 41 + gen/pb-cpp/flyteidl/admin/common.pb.cc | 130 +- gen/pb-cpp/flyteidl/admin/common.pb.h | 1 + gen/pb-cpp/flyteidl/admin/execution.pb.cc | 918 +++++- gen/pb-cpp/flyteidl/admin/execution.pb.h | 364 ++- gen/pb-cpp/flyteidl/core/metrics.grpc.pb.cc | 24 + gen/pb-cpp/flyteidl/core/metrics.grpc.pb.h | 47 + gen/pb-cpp/flyteidl/core/metrics.pb.cc | 930 ++++++ gen/pb-cpp/flyteidl/core/metrics.pb.h | 627 ++++ gen/pb-cpp/flyteidl/event/event.pb.cc | 279 +- gen/pb-cpp/flyteidl/event/event.pb.h | 112 + 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 | 505 ++-- gen/pb-cpp/flyteidl/service/admin.pb.h | 1 + gen/pb-go/flyteidl/admin/common.pb.go | 142 +- gen/pb-go/flyteidl/admin/execution.pb.go | 315 +- .../flyteidl/admin/execution.pb.validate.go | 158 + gen/pb-go/flyteidl/core/metrics.pb.go | 194 ++ .../flyteidl/core/metrics.pb.validate.go | 179 ++ gen/pb-go/flyteidl/core/metrics.swagger.json | 19 + gen/pb-go/flyteidl/event/event.pb.go | 228 +- gen/pb-go/flyteidl/event/event.pb.validate.go | 20 + gen/pb-go/flyteidl/service/admin.pb.go | 307 +- gen/pb-go/flyteidl/service/admin.pb.gw.go | 84 + gen/pb-go/flyteidl/service/admin.swagger.json | 107 + .../flyteidl/service/flyteadmin/README.md | 3 + .../service/flyteadmin/api/swagger.yaml | 164 ++ .../service/flyteadmin/api_admin_service.go | 102 + ...workflow_execution_get_metrics_response.go | 16 + .../service/flyteadmin/model_core_span.go | 32 + .../model_event_node_execution_event.go | 2 + .../model_event_task_execution_event.go | 2 + gen/pb-go/flyteidl/service/openapi.go | 4 +- gen/pb-java/flyteidl/admin/Common.java | 125 +- .../flyteidl/admin/ExecutionOuterClass.java | 1680 ++++++++++- gen/pb-java/flyteidl/core/Metrics.java | 2586 +++++++++++++++++ gen/pb-java/flyteidl/event/Event.java | 715 ++++- gen/pb-java/flyteidl/service/Admin.java | 500 ++-- gen/pb-js/flyteidl.d.ts | 234 ++ gen/pb-js/flyteidl.js | 576 ++++ gen/pb_python/flyteidl/admin/common_pb2.py | 107 +- gen/pb_python/flyteidl/admin/common_pb2.pyi | 1 + gen/pb_python/flyteidl/admin/execution_pb2.py | 99 +- .../flyteidl/admin/execution_pb2.pyi | 15 + gen/pb_python/flyteidl/core/metrics_pb2.py | 28 + gen/pb_python/flyteidl/core/metrics_pb2.pyi | 26 + .../flyteidl/core/metrics_pb2_grpc.py | 4 + gen/pb_python/flyteidl/event/event_pb2.py | 44 +- gen/pb_python/flyteidl/event/event_pb2.pyi | 12 +- gen/pb_python/flyteidl/service/admin_pb2.py | 9 +- gen/pb_python/flyteidl/service/admin_pb2.pyi | 1 + .../flyteidl/service/admin_pb2_grpc.py | 34 + .../flyteidl/service/flyteadmin/README.md | 3 + .../service/flyteadmin/flyteadmin/__init__.py | 2 + .../flyteadmin/api/admin_service_api.py | 117 + .../flyteadmin/flyteadmin/models/__init__.py | 2 + ...workflow_execution_get_metrics_response.py | 119 + .../flyteadmin/flyteadmin/models/core_span.py | 290 ++ .../models/event_node_execution_event.py | 34 +- .../models/event_task_execution_event.py | 34 +- .../flyteadmin/test/test_admin_service_api.py | 7 + ...workflow_execution_get_metrics_response.py | 40 + .../service/flyteadmin/test/test_core_span.py | 40 + protos/flyteidl/admin/common.proto | 1 + protos/flyteidl/admin/execution.proto | 17 + protos/flyteidl/admin/node_execution.proto | 1 - protos/flyteidl/core/metrics.proto | 36 + protos/flyteidl/event/event.proto | 12 + protos/flyteidl/service/admin.proto | 11 + 71 files changed, 12372 insertions(+), 1509 deletions(-) create mode 100644 gen/pb-cpp/flyteidl/core/metrics.grpc.pb.cc create mode 100644 gen/pb-cpp/flyteidl/core/metrics.grpc.pb.h create mode 100644 gen/pb-cpp/flyteidl/core/metrics.pb.cc create mode 100644 gen/pb-cpp/flyteidl/core/metrics.pb.h create mode 100644 gen/pb-go/flyteidl/core/metrics.pb.go create mode 100644 gen/pb-go/flyteidl/core/metrics.pb.validate.go create mode 100644 gen/pb-go/flyteidl/core/metrics.swagger.json create mode 100644 gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_execution_get_metrics_response.go create mode 100644 gen/pb-go/flyteidl/service/flyteadmin/model_core_span.go create mode 100644 gen/pb-java/flyteidl/core/Metrics.java create mode 100644 gen/pb_python/flyteidl/core/metrics_pb2.py create mode 100644 gen/pb_python/flyteidl/core/metrics_pb2.pyi create mode 100644 gen/pb_python/flyteidl/core/metrics_pb2_grpc.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_execution_get_metrics_response.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_span.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_workflow_execution_get_metrics_response.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/test/test_core_span.py create mode 100644 protos/flyteidl/core/metrics.proto diff --git a/clients/go/admin/mocks/AdminServiceClient.go b/clients/go/admin/mocks/AdminServiceClient.go index 3858c5a69..2a6b65b64 100644 --- a/clients/go/admin/mocks/AdminServiceClient.go +++ b/clients/go/admin/mocks/AdminServiceClient.go @@ -689,6 +689,54 @@ func (_m *AdminServiceClient) GetExecutionData(ctx context.Context, in *admin.Wo return r0, r1 } +type AdminServiceClient_GetExecutionMetrics struct { + *mock.Call +} + +func (_m AdminServiceClient_GetExecutionMetrics) Return(_a0 *admin.WorkflowExecutionGetMetricsResponse, _a1 error) *AdminServiceClient_GetExecutionMetrics { + return &AdminServiceClient_GetExecutionMetrics{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceClient) OnGetExecutionMetrics(ctx context.Context, in *admin.WorkflowExecutionGetMetricsRequest, opts ...grpc.CallOption) *AdminServiceClient_GetExecutionMetrics { + c_call := _m.On("GetExecutionMetrics", ctx, in, opts) + return &AdminServiceClient_GetExecutionMetrics{Call: c_call} +} + +func (_m *AdminServiceClient) OnGetExecutionMetricsMatch(matchers ...interface{}) *AdminServiceClient_GetExecutionMetrics { + c_call := _m.On("GetExecutionMetrics", matchers...) + return &AdminServiceClient_GetExecutionMetrics{Call: c_call} +} + +// GetExecutionMetrics provides a mock function with given fields: ctx, in, opts +func (_m *AdminServiceClient) GetExecutionMetrics(ctx context.Context, in *admin.WorkflowExecutionGetMetricsRequest, opts ...grpc.CallOption) (*admin.WorkflowExecutionGetMetricsResponse, 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.WorkflowExecutionGetMetricsResponse + if rf, ok := ret.Get(0).(func(context.Context, *admin.WorkflowExecutionGetMetricsRequest, ...grpc.CallOption) *admin.WorkflowExecutionGetMetricsResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.WorkflowExecutionGetMetricsResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.WorkflowExecutionGetMetricsRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceClient_GetLaunchPlan struct { *mock.Call } diff --git a/clients/go/admin/mocks/AdminServiceServer.go b/clients/go/admin/mocks/AdminServiceServer.go index 67bc38378..cf06b26b1 100644 --- a/clients/go/admin/mocks/AdminServiceServer.go +++ b/clients/go/admin/mocks/AdminServiceServer.go @@ -589,6 +589,47 @@ func (_m *AdminServiceServer) GetExecutionData(_a0 context.Context, _a1 *admin.W return r0, r1 } +type AdminServiceServer_GetExecutionMetrics struct { + *mock.Call +} + +func (_m AdminServiceServer_GetExecutionMetrics) Return(_a0 *admin.WorkflowExecutionGetMetricsResponse, _a1 error) *AdminServiceServer_GetExecutionMetrics { + return &AdminServiceServer_GetExecutionMetrics{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceServer) OnGetExecutionMetrics(_a0 context.Context, _a1 *admin.WorkflowExecutionGetMetricsRequest) *AdminServiceServer_GetExecutionMetrics { + c_call := _m.On("GetExecutionMetrics", _a0, _a1) + return &AdminServiceServer_GetExecutionMetrics{Call: c_call} +} + +func (_m *AdminServiceServer) OnGetExecutionMetricsMatch(matchers ...interface{}) *AdminServiceServer_GetExecutionMetrics { + c_call := _m.On("GetExecutionMetrics", matchers...) + return &AdminServiceServer_GetExecutionMetrics{Call: c_call} +} + +// GetExecutionMetrics provides a mock function with given fields: _a0, _a1 +func (_m *AdminServiceServer) GetExecutionMetrics(_a0 context.Context, _a1 *admin.WorkflowExecutionGetMetricsRequest) (*admin.WorkflowExecutionGetMetricsResponse, error) { + ret := _m.Called(_a0, _a1) + + var r0 *admin.WorkflowExecutionGetMetricsResponse + if rf, ok := ret.Get(0).(func(context.Context, *admin.WorkflowExecutionGetMetricsRequest) *admin.WorkflowExecutionGetMetricsResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.WorkflowExecutionGetMetricsResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.WorkflowExecutionGetMetricsRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceServer_GetLaunchPlan struct { *mock.Call } diff --git a/gen/pb-cpp/flyteidl/admin/common.pb.cc b/gen/pb-cpp/flyteidl/admin/common.pb.cc index 8b88e9a96..a64ea9629 100644 --- a/gen/pb-cpp/flyteidl/admin/common.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/common.pb.cc @@ -757,84 +757,86 @@ ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_fl const char descriptor_table_protodef_flyteidl_2fadmin_2fcommon_2eproto[] = "\n\033flyteidl/admin/common.proto\022\016flyteidl." "admin\032\035flyteidl/core/execution.proto\032\036fl" - "yteidl/core/identifier.proto\"F\n\025NamedEnt" - "ityIdentifier\022\017\n\007project\030\001 \001(\t\022\016\n\006domain" - "\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\"[\n\023NamedEntityMetad" - "ata\022\023\n\013description\030\001 \001(\t\022/\n\005state\030\002 \001(\0162" - " .flyteidl.admin.NamedEntityState\"\253\001\n\013Na" - "medEntity\0222\n\rresource_type\030\001 \001(\0162\033.flyte" + "yteidl/core/identifier.proto\032\037google/pro" + "tobuf/timestamp.proto\"F\n\025NamedEntityIden" + "tifier\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022" + "\014\n\004name\030\003 \001(\t\"[\n\023NamedEntityMetadata\022\023\n\013" + "description\030\001 \001(\t\022/\n\005state\030\002 \001(\0162 .flyte" + "idl.admin.NamedEntityState\"\253\001\n\013NamedEnti" + "ty\0222\n\rresource_type\030\001 \001(\0162\033.flyteidl.cor" + "e.ResourceType\0221\n\002id\030\002 \001(\0132%.flyteidl.ad" + "min.NamedEntityIdentifier\0225\n\010metadata\030\003 " + "\001(\0132#.flyteidl.admin.NamedEntityMetadata" + "\"r\n\004Sort\022\013\n\003key\030\001 \001(\t\0221\n\tdirection\030\002 \001(\016" + "2\036.flyteidl.admin.Sort.Direction\"*\n\tDire" + "ction\022\016\n\nDESCENDING\020\000\022\r\n\tASCENDING\020\001\"\231\001\n" + " NamedEntityIdentifierListRequest\022\017\n\007pro" + "ject\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.flyt" + "eidl.admin.Sort\022\017\n\007filters\030\006 \001(\t\"\303\001\n\026Nam" + "edEntityListRequest\0222\n\rresource_type\030\001 \001" + "(\0162\033.flyteidl.core.ResourceType\022\017\n\007proje" + "ct\030\002 \001(\t\022\016\n\006domain\030\003 \001(\t\022\r\n\005limit\030\004 \001(\r\022" + "\r\n\005token\030\005 \001(\t\022%\n\007sort_by\030\006 \001(\0132\024.flytei" + "dl.admin.Sort\022\017\n\007filters\030\007 \001(\t\"c\n\031NamedE" + "ntityIdentifierList\0227\n\010entities\030\001 \003(\0132%." + "flyteidl.admin.NamedEntityIdentifier\022\r\n\005" + "token\030\002 \001(\t\"O\n\017NamedEntityList\022-\n\010entiti" + "es\030\001 \003(\0132\033.flyteidl.admin.NamedEntity\022\r\n" + "\005token\030\002 \001(\t\"~\n\025NamedEntityGetRequest\0222\n" + "\rresource_type\030\001 \001(\0162\033.flyteidl.core.Res" + "ourceType\0221\n\002id\030\002 \001(\0132%.flyteidl.admin.N" + "amedEntityIdentifier\"\270\001\n\030NamedEntityUpda" + "teRequest\0222\n\rresource_type\030\001 \001(\0162\033.flyte" "idl.core.ResourceType\0221\n\002id\030\002 \001(\0132%.flyt" "eidl.admin.NamedEntityIdentifier\0225\n\010meta" "data\030\003 \001(\0132#.flyteidl.admin.NamedEntityM" - "etadata\"r\n\004Sort\022\013\n\003key\030\001 \001(\t\0221\n\tdirectio" - "n\030\002 \001(\0162\036.flyteidl.admin.Sort.Direction\"" - "*\n\tDirection\022\016\n\nDESCENDING\020\000\022\r\n\tASCENDIN" - "G\020\001\"\231\001\n NamedEntityIdentifierListRequest" - "\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\r\n\005lim" - "it\030\003 \001(\r\022\r\n\005token\030\004 \001(\t\022%\n\007sort_by\030\005 \001(\013" - "2\024.flyteidl.admin.Sort\022\017\n\007filters\030\006 \001(\t\"" - "\303\001\n\026NamedEntityListRequest\0222\n\rresource_t" - "ype\030\001 \001(\0162\033.flyteidl.core.ResourceType\022\017" - "\n\007project\030\002 \001(\t\022\016\n\006domain\030\003 \001(\t\022\r\n\005limit" - "\030\004 \001(\r\022\r\n\005token\030\005 \001(\t\022%\n\007sort_by\030\006 \001(\0132\024" - ".flyteidl.admin.Sort\022\017\n\007filters\030\007 \001(\t\"c\n" - "\031NamedEntityIdentifierList\0227\n\010entities\030\001" - " \003(\0132%.flyteidl.admin.NamedEntityIdentif" - "ier\022\r\n\005token\030\002 \001(\t\"O\n\017NamedEntityList\022-\n" - "\010entities\030\001 \003(\0132\033.flyteidl.admin.NamedEn" - "tity\022\r\n\005token\030\002 \001(\t\"~\n\025NamedEntityGetReq" - "uest\0222\n\rresource_type\030\001 \001(\0162\033.flyteidl.c" - "ore.ResourceType\0221\n\002id\030\002 \001(\0132%.flyteidl." - "admin.NamedEntityIdentifier\"\270\001\n\030NamedEnt" - "ityUpdateRequest\0222\n\rresource_type\030\001 \001(\0162" - "\033.flyteidl.core.ResourceType\0221\n\002id\030\002 \001(\013" - "2%.flyteidl.admin.NamedEntityIdentifier\022" - "5\n\010metadata\030\003 \001(\0132#.flyteidl.admin.Named" - "EntityMetadata\"\033\n\031NamedEntityUpdateRespo" - "nse\"9\n\020ObjectGetRequest\022%\n\002id\030\001 \001(\0132\031.fl" - "yteidl.core.Identifier\"\236\001\n\023ResourceListR" - "equest\0221\n\002id\030\001 \001(\0132%.flyteidl.admin.Name" - "dEntityIdentifier\022\r\n\005limit\030\002 \001(\r\022\r\n\005toke" - "n\030\003 \001(\t\022\017\n\007filters\030\004 \001(\t\022%\n\007sort_by\030\005 \001(" - "\0132\024.flyteidl.admin.Sort\"-\n\021EmailNotifica" - "tion\022\030\n\020recipients_email\030\001 \003(\t\"1\n\025PagerD" - "utyNotification\022\030\n\020recipients_email\030\001 \003(" - "\t\"-\n\021SlackNotification\022\030\n\020recipients_ema" - "il\030\001 \003(\t\"\363\001\n\014Notification\0226\n\006phases\030\001 \003(" - "\0162&.flyteidl.core.WorkflowExecution.Phas" - "e\0222\n\005email\030\002 \001(\0132!.flyteidl.admin.EmailN" - "otificationH\000\022;\n\npager_duty\030\003 \001(\0132%.flyt" - "eidl.admin.PagerDutyNotificationH\000\0222\n\005sl" - "ack\030\004 \001(\0132!.flyteidl.admin.SlackNotifica" - "tionH\000B\006\n\004type\")\n\007UrlBlob\022\013\n\003url\030\001 \001(\t\022\r" - "\n\005bytes\030\002 \001(\003:\002\030\001\"k\n\006Labels\0222\n\006values\030\001 " - "\003(\0132\".flyteidl.admin.Labels.ValuesEntry\032" - "-\n\013ValuesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001" - "(\t:\0028\001\"u\n\013Annotations\0227\n\006values\030\001 \003(\0132\'." - "flyteidl.admin.Annotations.ValuesEntry\032-" - "\n\013ValuesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(" - "\t:\0028\001\"N\n\010AuthRole\022\032\n\022assumable_iam_role\030" - "\001 \001(\t\022\"\n\032kubernetes_service_account\030\002 \001(" - "\t:\002\030\001\"5\n\023RawOutputDataConfig\022\036\n\026output_l" - "ocation_prefix\030\001 \001(\t*\\\n\020NamedEntityState" - "\022\027\n\023NAMED_ENTITY_ACTIVE\020\000\022\031\n\025NAMED_ENTIT" - "Y_ARCHIVED\020\001\022\024\n\020SYSTEM_GENERATED\020\002B7Z5gi" - "thub.com/flyteorg/flyteidl/gen/pb-go/fly" - "teidl/adminb\006proto3" + "etadata\"\033\n\031NamedEntityUpdateResponse\"9\n\020" + "ObjectGetRequest\022%\n\002id\030\001 \001(\0132\031.flyteidl." + "core.Identifier\"\236\001\n\023ResourceListRequest\022" + "1\n\002id\030\001 \001(\0132%.flyteidl.admin.NamedEntity" + "Identifier\022\r\n\005limit\030\002 \001(\r\022\r\n\005token\030\003 \001(\t" + "\022\017\n\007filters\030\004 \001(\t\022%\n\007sort_by\030\005 \001(\0132\024.fly" + "teidl.admin.Sort\"-\n\021EmailNotification\022\030\n" + "\020recipients_email\030\001 \003(\t\"1\n\025PagerDutyNoti" + "fication\022\030\n\020recipients_email\030\001 \003(\t\"-\n\021Sl" + "ackNotification\022\030\n\020recipients_email\030\001 \003(" + "\t\"\363\001\n\014Notification\0226\n\006phases\030\001 \003(\0162&.fly" + "teidl.core.WorkflowExecution.Phase\0222\n\005em" + "ail\030\002 \001(\0132!.flyteidl.admin.EmailNotifica" + "tionH\000\022;\n\npager_duty\030\003 \001(\0132%.flyteidl.ad" + "min.PagerDutyNotificationH\000\0222\n\005slack\030\004 \001" + "(\0132!.flyteidl.admin.SlackNotificationH\000B" + "\006\n\004type\")\n\007UrlBlob\022\013\n\003url\030\001 \001(\t\022\r\n\005bytes" + "\030\002 \001(\003:\002\030\001\"k\n\006Labels\0222\n\006values\030\001 \003(\0132\".f" + "lyteidl.admin.Labels.ValuesEntry\032-\n\013Valu" + "esEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"" + "u\n\013Annotations\0227\n\006values\030\001 \003(\0132\'.flyteid" + "l.admin.Annotations.ValuesEntry\032-\n\013Value" + "sEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"N" + "\n\010AuthRole\022\032\n\022assumable_iam_role\030\001 \001(\t\022\"" + "\n\032kubernetes_service_account\030\002 \001(\t:\002\030\001\"5" + "\n\023RawOutputDataConfig\022\036\n\026output_location" + "_prefix\030\001 \001(\t*\\\n\020NamedEntityState\022\027\n\023NAM" + "ED_ENTITY_ACTIVE\020\000\022\031\n\025NAMED_ENTITY_ARCHI" + "VED\020\001\022\024\n\020SYSTEM_GENERATED\020\002B7Z5github.co" + "m/flyteorg/flyteidl/gen/pb-go/flyteidl/a" + "dminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2fcommon_2eproto = { false, InitDefaults_flyteidl_2fadmin_2fcommon_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2fcommon_2eproto, - "flyteidl/admin/common.proto", &assign_descriptors_table_flyteidl_2fadmin_2fcommon_2eproto, 2619, + "flyteidl/admin/common.proto", &assign_descriptors_table_flyteidl_2fadmin_2fcommon_2eproto, 2652, }; void AddDescriptors_flyteidl_2fadmin_2fcommon_2eproto() { - static constexpr ::google::protobuf::internal::InitFunc deps[2] = + static constexpr ::google::protobuf::internal::InitFunc deps[3] = { ::AddDescriptors_flyteidl_2fcore_2fexecution_2eproto, ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, + ::AddDescriptors_google_2fprotobuf_2ftimestamp_2eproto, }; - ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2fcommon_2eproto, deps, 2); + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2fcommon_2eproto, deps, 3); } // Force running AddDescriptors() at dynamic initialization time. diff --git a/gen/pb-cpp/flyteidl/admin/common.pb.h b/gen/pb-cpp/flyteidl/admin/common.pb.h index 154571bb2..22e490356 100644 --- a/gen/pb-cpp/flyteidl/admin/common.pb.h +++ b/gen/pb-cpp/flyteidl/admin/common.pb.h @@ -37,6 +37,7 @@ #include #include "flyteidl/core/execution.pb.h" #include "flyteidl/core/identifier.pb.h" +#include // @@protoc_insertion_point(includes) #include #define PROTOBUF_INTERNAL_EXPORT_flyteidl_2fadmin_2fcommon_2eproto diff --git a/gen/pb-cpp/flyteidl/admin/execution.pb.cc b/gen/pb-cpp/flyteidl/admin/execution.pb.cc index caba0518a..34f682e03 100644 --- a/gen/pb-cpp/flyteidl/admin/execution.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/execution.pb.cc @@ -38,6 +38,7 @@ extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::p extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_WorkflowExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_NodeExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fliterals_2eproto ::google::protobuf::internal::SCCInfo<9> scc_info_Literal_flyteidl_2fcore_2fliterals_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fmetrics_2eproto ::google::protobuf::internal::SCCInfo<4> scc_info_Span_flyteidl_2fcore_2fmetrics_2eproto; extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fsecurity_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_SecurityContext_flyteidl_2fcore_2fsecurity_2eproto; extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fduration_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Duration_google_2fprotobuf_2fduration_2eproto; extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2ftimestamp_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto; @@ -137,6 +138,14 @@ class ExecutionUpdateResponseDefaultTypeInternal { public: ::google::protobuf::internal::ExplicitlyConstructed _instance; } _ExecutionUpdateResponse_default_instance_; +class WorkflowExecutionGetMetricsRequestDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _WorkflowExecutionGetMetricsRequest_default_instance_; +class WorkflowExecutionGetMetricsResponseDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _WorkflowExecutionGetMetricsResponse_default_instance_; } // namespace admin } // namespace flyteidl static void InitDefaultsExecutionCreateRequest_flyteidl_2fadmin_2fexecution_2eproto() { @@ -477,6 +486,36 @@ static void InitDefaultsExecutionUpdateResponse_flyteidl_2fadmin_2fexecution_2ep ::google::protobuf::internal::SCCInfo<0> scc_info_ExecutionUpdateResponse_flyteidl_2fadmin_2fexecution_2eproto = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsExecutionUpdateResponse_flyteidl_2fadmin_2fexecution_2eproto}, {}}; +static void InitDefaultsWorkflowExecutionGetMetricsRequest_flyteidl_2fadmin_2fexecution_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_WorkflowExecutionGetMetricsRequest_default_instance_; + new (ptr) ::flyteidl::admin::WorkflowExecutionGetMetricsRequest(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::WorkflowExecutionGetMetricsRequest::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<1> scc_info_WorkflowExecutionGetMetricsRequest_flyteidl_2fadmin_2fexecution_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsWorkflowExecutionGetMetricsRequest_flyteidl_2fadmin_2fexecution_2eproto}, { + &scc_info_WorkflowExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto.base,}}; + +static void InitDefaultsWorkflowExecutionGetMetricsResponse_flyteidl_2fadmin_2fexecution_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_WorkflowExecutionGetMetricsResponse_default_instance_; + new (ptr) ::flyteidl::admin::WorkflowExecutionGetMetricsResponse(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::WorkflowExecutionGetMetricsResponse::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<1> scc_info_WorkflowExecutionGetMetricsResponse_flyteidl_2fadmin_2fexecution_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsWorkflowExecutionGetMetricsResponse_flyteidl_2fadmin_2fexecution_2eproto}, { + &scc_info_Span_flyteidl_2fcore_2fmetrics_2eproto.base,}}; + void InitDefaults_flyteidl_2fadmin_2fexecution_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_ExecutionCreateRequest_flyteidl_2fadmin_2fexecution_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_ExecutionRelaunchRequest_flyteidl_2fadmin_2fexecution_2eproto.base); @@ -499,9 +538,11 @@ void InitDefaults_flyteidl_2fadmin_2fexecution_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_ExecutionUpdateRequest_flyteidl_2fadmin_2fexecution_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_ExecutionStateChangeDetails_flyteidl_2fadmin_2fexecution_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_ExecutionUpdateResponse_flyteidl_2fadmin_2fexecution_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_WorkflowExecutionGetMetricsRequest_flyteidl_2fadmin_2fexecution_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_WorkflowExecutionGetMetricsResponse_flyteidl_2fadmin_2fexecution_2eproto.base); } -::google::protobuf::Metadata file_level_metadata_flyteidl_2fadmin_2fexecution_2eproto[21]; +::google::protobuf::Metadata file_level_metadata_flyteidl_2fadmin_2fexecution_2eproto[23]; const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_flyteidl_2fadmin_2fexecution_2eproto[2]; constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_flyteidl_2fadmin_2fexecution_2eproto = nullptr; @@ -686,6 +727,19 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fexecution_2eprot ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowExecutionGetMetricsRequest, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowExecutionGetMetricsRequest, id_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowExecutionGetMetricsRequest, depth_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowExecutionGetMetricsResponse, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowExecutionGetMetricsResponse, span_), }; static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, sizeof(::flyteidl::admin::ExecutionCreateRequest)}, @@ -709,6 +763,8 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 160, -1, sizeof(::flyteidl::admin::ExecutionUpdateRequest)}, { 167, -1, sizeof(::flyteidl::admin::ExecutionStateChangeDetails)}, { 175, -1, sizeof(::flyteidl::admin::ExecutionUpdateResponse)}, + { 180, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetMetricsRequest)}, + { 187, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetMetricsResponse)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -733,12 +789,14 @@ static ::google::protobuf::Message const * const file_default_instances[] = { reinterpret_cast(&::flyteidl::admin::_ExecutionUpdateRequest_default_instance_), reinterpret_cast(&::flyteidl::admin::_ExecutionStateChangeDetails_default_instance_), reinterpret_cast(&::flyteidl::admin::_ExecutionUpdateResponse_default_instance_), + reinterpret_cast(&::flyteidl::admin::_WorkflowExecutionGetMetricsRequest_default_instance_), + reinterpret_cast(&::flyteidl::admin::_WorkflowExecutionGetMetricsResponse_default_instance_), }; ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_flyteidl_2fadmin_2fexecution_2eproto = { {}, AddDescriptors_flyteidl_2fadmin_2fexecution_2eproto, "flyteidl/admin/execution.proto", schemas, file_default_instances, TableStruct_flyteidl_2fadmin_2fexecution_2eproto::offsets, - file_level_metadata_flyteidl_2fadmin_2fexecution_2eproto, 21, file_level_enum_descriptors_flyteidl_2fadmin_2fexecution_2eproto, file_level_service_descriptors_flyteidl_2fadmin_2fexecution_2eproto, + file_level_metadata_flyteidl_2fadmin_2fexecution_2eproto, 23, file_level_enum_descriptors_flyteidl_2fadmin_2fexecution_2eproto, file_level_service_descriptors_flyteidl_2fadmin_2fexecution_2eproto, }; const char descriptor_table_protodef_flyteidl_2fadmin_2fexecution_2eproto[] = @@ -747,131 +805,137 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2fexecution_2eproto[] = "ent.proto\032\033flyteidl/admin/common.proto\032\034" "flyteidl/core/literals.proto\032\035flyteidl/c" "ore/execution.proto\032\036flyteidl/core/ident" - "ifier.proto\032\034flyteidl/core/security.prot" - "o\032\036google/protobuf/duration.proto\032\037googl" - "e/protobuf/timestamp.proto\032\036google/proto" - "buf/wrappers.proto\"\237\001\n\026ExecutionCreateRe" - "quest\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\014" - "\n\004name\030\003 \001(\t\022+\n\004spec\030\004 \001(\0132\035.flyteidl.ad" - "min.ExecutionSpec\022)\n\006inputs\030\005 \001(\0132\031.flyt" - "eidl.core.LiteralMap\"\177\n\030ExecutionRelaunc" - "hRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Wor" - "kflowExecutionIdentifier\022\014\n\004name\030\003 \001(\t\022\027" - "\n\017overwrite_cache\030\004 \001(\010J\004\010\002\020\003\"\224\001\n\027Execut" - "ionRecoverRequest\0226\n\002id\030\001 \001(\0132*.flyteidl" - ".core.WorkflowExecutionIdentifier\022\014\n\004nam" - "e\030\002 \001(\t\0223\n\010metadata\030\003 \001(\0132!.flyteidl.adm" - "in.ExecutionMetadata\"Q\n\027ExecutionCreateR" - "esponse\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Work" - "flowExecutionIdentifier\"U\n\033WorkflowExecu" - "tionGetRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.co" - "re.WorkflowExecutionIdentifier\"\243\001\n\tExecu" - "tion\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workflo" - "wExecutionIdentifier\022+\n\004spec\030\002 \001(\0132\035.fly" - "teidl.admin.ExecutionSpec\0221\n\007closure\030\003 \001" - "(\0132 .flyteidl.admin.ExecutionClosure\"M\n\r" - "ExecutionList\022-\n\nexecutions\030\001 \003(\0132\031.flyt" - "eidl.admin.Execution\022\r\n\005token\030\002 \001(\t\"X\n\016L" - "iteralMapBlob\022/\n\006values\030\001 \001(\0132\031.flyteidl" - ".core.LiteralMapB\002\030\001H\000\022\r\n\003uri\030\002 \001(\tH\000B\006\n" - "\004data\"1\n\rAbortMetadata\022\r\n\005cause\030\001 \001(\t\022\021\n" - "\tprincipal\030\002 \001(\t\"\360\005\n\020ExecutionClosure\0225\n" - "\007outputs\030\001 \001(\0132\036.flyteidl.admin.LiteralM" - "apBlobB\002\030\001H\000\022.\n\005error\030\002 \001(\0132\035.flyteidl.c" - "ore.ExecutionErrorH\000\022\031\n\013abort_cause\030\n \001(" - "\tB\002\030\001H\000\0227\n\016abort_metadata\030\014 \001(\0132\035.flytei" - "dl.admin.AbortMetadataH\000\0224\n\013output_data\030" - "\r \001(\0132\031.flyteidl.core.LiteralMapB\002\030\001H\000\0226" - "\n\017computed_inputs\030\003 \001(\0132\031.flyteidl.core." - "LiteralMapB\002\030\001\0225\n\005phase\030\004 \001(\0162&.flyteidl" - ".core.WorkflowExecution.Phase\022.\n\nstarted" - "_at\030\005 \001(\0132\032.google.protobuf.Timestamp\022+\n" - "\010duration\030\006 \001(\0132\031.google.protobuf.Durati" - "on\022.\n\ncreated_at\030\007 \001(\0132\032.google.protobuf" - ".Timestamp\022.\n\nupdated_at\030\010 \001(\0132\032.google." - "protobuf.Timestamp\0223\n\rnotifications\030\t \003(" - "\0132\034.flyteidl.admin.Notification\022.\n\013workf" - "low_id\030\013 \001(\0132\031.flyteidl.core.Identifier\022" - "I\n\024state_change_details\030\016 \001(\0132+.flyteidl" - ".admin.ExecutionStateChangeDetailsB\017\n\rou" - "tput_result\"+\n\016SystemMetadata\022\031\n\021executi" - "on_cluster\030\001 \001(\t\"\332\003\n\021ExecutionMetadata\022=" - "\n\004mode\030\001 \001(\0162/.flyteidl.admin.ExecutionM" - "etadata.ExecutionMode\022\021\n\tprincipal\030\002 \001(\t" - "\022\017\n\007nesting\030\003 \001(\r\0220\n\014scheduled_at\030\004 \001(\0132" - "\032.google.protobuf.Timestamp\022E\n\025parent_no" - "de_execution\030\005 \001(\0132&.flyteidl.core.NodeE" - "xecutionIdentifier\022G\n\023reference_executio" - "n\030\020 \001(\0132*.flyteidl.core.WorkflowExecutio" - "nIdentifier\0227\n\017system_metadata\030\021 \001(\0132\036.f" - "lyteidl.admin.SystemMetadata\"g\n\rExecutio" - "nMode\022\n\n\006MANUAL\020\000\022\r\n\tSCHEDULED\020\001\022\n\n\006SYST" - "EM\020\002\022\014\n\010RELAUNCH\020\003\022\022\n\016CHILD_WORKFLOW\020\004\022\r" - "\n\tRECOVERED\020\005\"G\n\020NotificationList\0223\n\rnot" - "ifications\030\001 \003(\0132\034.flyteidl.admin.Notifi" - "cation\"\200\006\n\rExecutionSpec\022.\n\013launch_plan\030" - "\001 \001(\0132\031.flyteidl.core.Identifier\022-\n\006inpu" - "ts\030\002 \001(\0132\031.flyteidl.core.LiteralMapB\002\030\001\022" - "3\n\010metadata\030\003 \001(\0132!.flyteidl.admin.Execu" - "tionMetadata\0229\n\rnotifications\030\005 \001(\0132 .fl" - "yteidl.admin.NotificationListH\000\022\025\n\013disab" - "le_all\030\006 \001(\010H\000\022&\n\006labels\030\007 \001(\0132\026.flyteid" - "l.admin.Labels\0220\n\013annotations\030\010 \001(\0132\033.fl" - "yteidl.admin.Annotations\0228\n\020security_con" - "text\030\n \001(\0132\036.flyteidl.core.SecurityConte" - "xt\022/\n\tauth_role\030\020 \001(\0132\030.flyteidl.admin.A" - "uthRoleB\002\030\001\022;\n\022quality_of_service\030\021 \001(\0132" - "\037.flyteidl.core.QualityOfService\022\027\n\017max_" - "parallelism\030\022 \001(\005\022C\n\026raw_output_data_con" - "fig\030\023 \001(\0132#.flyteidl.admin.RawOutputData" - "Config\022=\n\022cluster_assignment\030\024 \001(\0132!.fly" - "teidl.admin.ClusterAssignment\0221\n\rinterru" - "ptible\030\025 \001(\0132\032.google.protobuf.BoolValue" - "\022\027\n\017overwrite_cache\030\026 \001(\010B\030\n\026notificatio" - "n_overridesJ\004\010\004\020\005\"b\n\031ExecutionTerminateR" + "ifier.proto\032\033flyteidl/core/metrics.proto" + "\032\034flyteidl/core/security.proto\032\036google/p" + "rotobuf/duration.proto\032\037google/protobuf/" + "timestamp.proto\032\036google/protobuf/wrapper" + "s.proto\"\237\001\n\026ExecutionCreateRequest\022\017\n\007pr" + "oject\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\014\n\004name\030\003 \001(" + "\t\022+\n\004spec\030\004 \001(\0132\035.flyteidl.admin.Executi" + "onSpec\022)\n\006inputs\030\005 \001(\0132\031.flyteidl.core.L" + "iteralMap\"\177\n\030ExecutionRelaunchRequest\0226\n" + "\002id\030\001 \001(\0132*.flyteidl.core.WorkflowExecut" + "ionIdentifier\022\014\n\004name\030\003 \001(\t\022\027\n\017overwrite" + "_cache\030\004 \001(\010J\004\010\002\020\003\"\224\001\n\027ExecutionRecoverR" "equest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workf" - "lowExecutionIdentifier\022\r\n\005cause\030\002 \001(\t\"\034\n" - "\032ExecutionTerminateResponse\"Y\n\037WorkflowE" - "xecutionGetDataRequest\0226\n\002id\030\001 \001(\0132*.fly" - "teidl.core.WorkflowExecutionIdentifier\"\336" - "\001\n WorkflowExecutionGetDataResponse\022,\n\007o" - "utputs\030\001 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030" - "\001\022+\n\006inputs\030\002 \001(\0132\027.flyteidl.admin.UrlBl" - "obB\002\030\001\022.\n\013full_inputs\030\003 \001(\0132\031.flyteidl.c" - "ore.LiteralMap\022/\n\014full_outputs\030\004 \001(\0132\031.f" - "lyteidl.core.LiteralMap\"\177\n\026ExecutionUpda" - "teRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Wo" - "rkflowExecutionIdentifier\022-\n\005state\030\002 \001(\016" - "2\036.flyteidl.admin.ExecutionState\"\220\001\n\033Exe" - "cutionStateChangeDetails\022-\n\005state\030\001 \001(\0162" - "\036.flyteidl.admin.ExecutionState\022/\n\013occur" - "red_at\030\002 \001(\0132\032.google.protobuf.Timestamp" - "\022\021\n\tprincipal\030\003 \001(\t\"\031\n\027ExecutionUpdateRe" - "sponse*>\n\016ExecutionState\022\024\n\020EXECUTION_AC" - "TIVE\020\000\022\026\n\022EXECUTION_ARCHIVED\020\001B7Z5github" - ".com/flyteorg/flyteidl/gen/pb-go/flyteid" - "l/adminb\006proto3" + "lowExecutionIdentifier\022\014\n\004name\030\002 \001(\t\0223\n\010" + "metadata\030\003 \001(\0132!.flyteidl.admin.Executio" + "nMetadata\"Q\n\027ExecutionCreateResponse\0226\n\002" + "id\030\001 \001(\0132*.flyteidl.core.WorkflowExecuti" + "onIdentifier\"U\n\033WorkflowExecutionGetRequ" + "est\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workflow" + "ExecutionIdentifier\"\243\001\n\tExecution\0226\n\002id\030" + "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" + "dentifier\022+\n\004spec\030\002 \001(\0132\035.flyteidl.admin" + ".ExecutionSpec\0221\n\007closure\030\003 \001(\0132 .flytei" + "dl.admin.ExecutionClosure\"M\n\rExecutionLi" + "st\022-\n\nexecutions\030\001 \003(\0132\031.flyteidl.admin." + "Execution\022\r\n\005token\030\002 \001(\t\"X\n\016LiteralMapBl" + "ob\022/\n\006values\030\001 \001(\0132\031.flyteidl.core.Liter" + "alMapB\002\030\001H\000\022\r\n\003uri\030\002 \001(\tH\000B\006\n\004data\"1\n\rAb" + "ortMetadata\022\r\n\005cause\030\001 \001(\t\022\021\n\tprincipal\030" + "\002 \001(\t\"\360\005\n\020ExecutionClosure\0225\n\007outputs\030\001 " + "\001(\0132\036.flyteidl.admin.LiteralMapBlobB\002\030\001H" + "\000\022.\n\005error\030\002 \001(\0132\035.flyteidl.core.Executi" + "onErrorH\000\022\031\n\013abort_cause\030\n \001(\tB\002\030\001H\000\0227\n\016" + "abort_metadata\030\014 \001(\0132\035.flyteidl.admin.Ab" + "ortMetadataH\000\0224\n\013output_data\030\r \001(\0132\031.fly" + "teidl.core.LiteralMapB\002\030\001H\000\0226\n\017computed_" + "inputs\030\003 \001(\0132\031.flyteidl.core.LiteralMapB" + "\002\030\001\0225\n\005phase\030\004 \001(\0162&.flyteidl.core.Workf" + "lowExecution.Phase\022.\n\nstarted_at\030\005 \001(\0132\032" + ".google.protobuf.Timestamp\022+\n\010duration\030\006" + " \001(\0132\031.google.protobuf.Duration\022.\n\ncreat" + "ed_at\030\007 \001(\0132\032.google.protobuf.Timestamp\022" + ".\n\nupdated_at\030\010 \001(\0132\032.google.protobuf.Ti" + "mestamp\0223\n\rnotifications\030\t \003(\0132\034.flyteid" + "l.admin.Notification\022.\n\013workflow_id\030\013 \001(" + "\0132\031.flyteidl.core.Identifier\022I\n\024state_ch" + "ange_details\030\016 \001(\0132+.flyteidl.admin.Exec" + "utionStateChangeDetailsB\017\n\routput_result" + "\"+\n\016SystemMetadata\022\031\n\021execution_cluster\030" + "\001 \001(\t\"\332\003\n\021ExecutionMetadata\022=\n\004mode\030\001 \001(" + "\0162/.flyteidl.admin.ExecutionMetadata.Exe" + "cutionMode\022\021\n\tprincipal\030\002 \001(\t\022\017\n\007nesting" + "\030\003 \001(\r\0220\n\014scheduled_at\030\004 \001(\0132\032.google.pr" + "otobuf.Timestamp\022E\n\025parent_node_executio" + "n\030\005 \001(\0132&.flyteidl.core.NodeExecutionIde" + "ntifier\022G\n\023reference_execution\030\020 \001(\0132*.f" + "lyteidl.core.WorkflowExecutionIdentifier" + "\0227\n\017system_metadata\030\021 \001(\0132\036.flyteidl.adm" + "in.SystemMetadata\"g\n\rExecutionMode\022\n\n\006MA" + "NUAL\020\000\022\r\n\tSCHEDULED\020\001\022\n\n\006SYSTEM\020\002\022\014\n\010REL" + "AUNCH\020\003\022\022\n\016CHILD_WORKFLOW\020\004\022\r\n\tRECOVERED" + "\020\005\"G\n\020NotificationList\0223\n\rnotifications\030" + "\001 \003(\0132\034.flyteidl.admin.Notification\"\200\006\n\r" + "ExecutionSpec\022.\n\013launch_plan\030\001 \001(\0132\031.fly" + "teidl.core.Identifier\022-\n\006inputs\030\002 \001(\0132\031." + "flyteidl.core.LiteralMapB\002\030\001\0223\n\010metadata" + "\030\003 \001(\0132!.flyteidl.admin.ExecutionMetadat" + "a\0229\n\rnotifications\030\005 \001(\0132 .flyteidl.admi" + "n.NotificationListH\000\022\025\n\013disable_all\030\006 \001(" + "\010H\000\022&\n\006labels\030\007 \001(\0132\026.flyteidl.admin.Lab" + "els\0220\n\013annotations\030\010 \001(\0132\033.flyteidl.admi" + "n.Annotations\0228\n\020security_context\030\n \001(\0132" + "\036.flyteidl.core.SecurityContext\022/\n\tauth_" + "role\030\020 \001(\0132\030.flyteidl.admin.AuthRoleB\002\030\001" + "\022;\n\022quality_of_service\030\021 \001(\0132\037.flyteidl." + "core.QualityOfService\022\027\n\017max_parallelism" + "\030\022 \001(\005\022C\n\026raw_output_data_config\030\023 \001(\0132#" + ".flyteidl.admin.RawOutputDataConfig\022=\n\022c" + "luster_assignment\030\024 \001(\0132!.flyteidl.admin" + ".ClusterAssignment\0221\n\rinterruptible\030\025 \001(" + "\0132\032.google.protobuf.BoolValue\022\027\n\017overwri" + "te_cache\030\026 \001(\010B\030\n\026notification_overrides" + "J\004\010\004\020\005\"b\n\031ExecutionTerminateRequest\0226\n\002i" + "d\030\001 \001(\0132*.flyteidl.core.WorkflowExecutio" + "nIdentifier\022\r\n\005cause\030\002 \001(\t\"\034\n\032ExecutionT" + "erminateResponse\"Y\n\037WorkflowExecutionGet" + "DataRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core." + "WorkflowExecutionIdentifier\"\336\001\n Workflow" + "ExecutionGetDataResponse\022,\n\007outputs\030\001 \001(" + "\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022+\n\006inputs" + "\030\002 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022.\n\013f" + "ull_inputs\030\003 \001(\0132\031.flyteidl.core.Literal" + "Map\022/\n\014full_outputs\030\004 \001(\0132\031.flyteidl.cor" + "e.LiteralMap\"\177\n\026ExecutionUpdateRequest\0226" + "\n\002id\030\001 \001(\0132*.flyteidl.core.WorkflowExecu" + "tionIdentifier\022-\n\005state\030\002 \001(\0162\036.flyteidl" + ".admin.ExecutionState\"\220\001\n\033ExecutionState" + "ChangeDetails\022-\n\005state\030\001 \001(\0162\036.flyteidl." + "admin.ExecutionState\022/\n\013occurred_at\030\002 \001(" + "\0132\032.google.protobuf.Timestamp\022\021\n\tprincip" + "al\030\003 \001(\t\"\031\n\027ExecutionUpdateResponse\"k\n\"W" + "orkflowExecutionGetMetricsRequest\0226\n\002id\030" + "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" + "dentifier\022\r\n\005depth\030\002 \001(\005\"H\n#WorkflowExec" + "utionGetMetricsResponse\022!\n\004span\030\001 \001(\0132\023." + "flyteidl.core.Span*>\n\016ExecutionState\022\024\n\020" + "EXECUTION_ACTIVE\020\000\022\026\n\022EXECUTION_ARCHIVED" + "\020\001B7Z5github.com/flyteorg/flyteidl/gen/p" + "b-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, 4335, + "flyteidl/admin/execution.proto", &assign_descriptors_table_flyteidl_2fadmin_2fexecution_2eproto, 4547, }; void AddDescriptors_flyteidl_2fadmin_2fexecution_2eproto() { - static constexpr ::google::protobuf::internal::InitFunc deps[9] = + static constexpr ::google::protobuf::internal::InitFunc deps[10] = { ::AddDescriptors_flyteidl_2fadmin_2fcluster_5fassignment_2eproto, ::AddDescriptors_flyteidl_2fadmin_2fcommon_2eproto, ::AddDescriptors_flyteidl_2fcore_2fliterals_2eproto, ::AddDescriptors_flyteidl_2fcore_2fexecution_2eproto, ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, + ::AddDescriptors_flyteidl_2fcore_2fmetrics_2eproto, ::AddDescriptors_flyteidl_2fcore_2fsecurity_2eproto, ::AddDescriptors_google_2fprotobuf_2fduration_2eproto, ::AddDescriptors_google_2fprotobuf_2ftimestamp_2eproto, ::AddDescriptors_google_2fprotobuf_2fwrappers_2eproto, }; - ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2fexecution_2eproto, deps, 9); + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fadmin_2fexecution_2eproto, deps, 10); } // Force running AddDescriptors() at dynamic initialization time. @@ -10648,6 +10712,638 @@ ::google::protobuf::Metadata ExecutionUpdateResponse::GetMetadata() const { } +// =================================================================== + +void WorkflowExecutionGetMetricsRequest::InitAsDefaultInstance() { + ::flyteidl::admin::_WorkflowExecutionGetMetricsRequest_default_instance_._instance.get_mutable()->id_ = const_cast< ::flyteidl::core::WorkflowExecutionIdentifier*>( + ::flyteidl::core::WorkflowExecutionIdentifier::internal_default_instance()); +} +class WorkflowExecutionGetMetricsRequest::HasBitSetters { + public: + static const ::flyteidl::core::WorkflowExecutionIdentifier& id(const WorkflowExecutionGetMetricsRequest* msg); +}; + +const ::flyteidl::core::WorkflowExecutionIdentifier& +WorkflowExecutionGetMetricsRequest::HasBitSetters::id(const WorkflowExecutionGetMetricsRequest* msg) { + return *msg->id_; +} +void WorkflowExecutionGetMetricsRequest::clear_id() { + if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { + delete id_; + } + id_ = nullptr; +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int WorkflowExecutionGetMetricsRequest::kIdFieldNumber; +const int WorkflowExecutionGetMetricsRequest::kDepthFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +WorkflowExecutionGetMetricsRequest::WorkflowExecutionGetMetricsRequest() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.WorkflowExecutionGetMetricsRequest) +} +WorkflowExecutionGetMetricsRequest::WorkflowExecutionGetMetricsRequest(const WorkflowExecutionGetMetricsRequest& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + if (from.has_id()) { + id_ = new ::flyteidl::core::WorkflowExecutionIdentifier(*from.id_); + } else { + id_ = nullptr; + } + depth_ = from.depth_; + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.WorkflowExecutionGetMetricsRequest) +} + +void WorkflowExecutionGetMetricsRequest::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_WorkflowExecutionGetMetricsRequest_flyteidl_2fadmin_2fexecution_2eproto.base); + ::memset(&id_, 0, static_cast( + reinterpret_cast(&depth_) - + reinterpret_cast(&id_)) + sizeof(depth_)); +} + +WorkflowExecutionGetMetricsRequest::~WorkflowExecutionGetMetricsRequest() { + // @@protoc_insertion_point(destructor:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + SharedDtor(); +} + +void WorkflowExecutionGetMetricsRequest::SharedDtor() { + if (this != internal_default_instance()) delete id_; +} + +void WorkflowExecutionGetMetricsRequest::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const WorkflowExecutionGetMetricsRequest& WorkflowExecutionGetMetricsRequest::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_WorkflowExecutionGetMetricsRequest_flyteidl_2fadmin_2fexecution_2eproto.base); + return *internal_default_instance(); +} + + +void WorkflowExecutionGetMetricsRequest::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { + delete id_; + } + id_ = nullptr; + depth_ = 0; + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* WorkflowExecutionGetMetricsRequest::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // .flyteidl.core.WorkflowExecutionIdentifier id = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::core::WorkflowExecutionIdentifier::_InternalParse; + object = msg->mutable_id(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // int32 depth = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual; + msg->set_depth(::google::protobuf::internal::ReadVarint(&ptr)); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool WorkflowExecutionGetMetricsRequest::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.WorkflowExecutionGetMetricsRequest) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // .flyteidl.core.WorkflowExecutionIdentifier id = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_id())); + } else { + goto handle_unusual; + } + break; + } + + // int32 depth = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) { + + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &depth_))); + } 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.WorkflowExecutionGetMetricsRequest) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void WorkflowExecutionGetMetricsRequest::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.WorkflowExecutionIdentifier id = 1; + if (this->has_id()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, HasBitSetters::id(this), output); + } + + // int32 depth = 2; + if (this->depth() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->depth(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.admin.WorkflowExecutionGetMetricsRequest) +} + +::google::protobuf::uint8* WorkflowExecutionGetMetricsRequest::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.WorkflowExecutionIdentifier id = 1; + if (this->has_id()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 1, HasBitSetters::id(this), target); + } + + // int32 depth = 2; + if (this->depth() != 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->depth(), 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.WorkflowExecutionGetMetricsRequest) + return target; +} + +size_t WorkflowExecutionGetMetricsRequest::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + 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; + + // .flyteidl.core.WorkflowExecutionIdentifier id = 1; + if (this->has_id()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *id_); + } + + // int32 depth = 2; + if (this->depth() != 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->depth()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void WorkflowExecutionGetMetricsRequest::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + GOOGLE_DCHECK_NE(&from, this); + const WorkflowExecutionGetMetricsRequest* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + MergeFrom(*source); + } +} + +void WorkflowExecutionGetMetricsRequest::MergeFrom(const WorkflowExecutionGetMetricsRequest& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.has_id()) { + mutable_id()->::flyteidl::core::WorkflowExecutionIdentifier::MergeFrom(from.id()); + } + if (from.depth() != 0) { + set_depth(from.depth()); + } +} + +void WorkflowExecutionGetMetricsRequest::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void WorkflowExecutionGetMetricsRequest::CopyFrom(const WorkflowExecutionGetMetricsRequest& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool WorkflowExecutionGetMetricsRequest::IsInitialized() const { + return true; +} + +void WorkflowExecutionGetMetricsRequest::Swap(WorkflowExecutionGetMetricsRequest* other) { + if (other == this) return; + InternalSwap(other); +} +void WorkflowExecutionGetMetricsRequest::InternalSwap(WorkflowExecutionGetMetricsRequest* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + swap(id_, other->id_); + swap(depth_, other->depth_); +} + +::google::protobuf::Metadata WorkflowExecutionGetMetricsRequest::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fexecution_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fexecution_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void WorkflowExecutionGetMetricsResponse::InitAsDefaultInstance() { + ::flyteidl::admin::_WorkflowExecutionGetMetricsResponse_default_instance_._instance.get_mutable()->span_ = const_cast< ::flyteidl::core::Span*>( + ::flyteidl::core::Span::internal_default_instance()); +} +class WorkflowExecutionGetMetricsResponse::HasBitSetters { + public: + static const ::flyteidl::core::Span& span(const WorkflowExecutionGetMetricsResponse* msg); +}; + +const ::flyteidl::core::Span& +WorkflowExecutionGetMetricsResponse::HasBitSetters::span(const WorkflowExecutionGetMetricsResponse* msg) { + return *msg->span_; +} +void WorkflowExecutionGetMetricsResponse::clear_span() { + if (GetArenaNoVirtual() == nullptr && span_ != nullptr) { + delete span_; + } + span_ = nullptr; +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int WorkflowExecutionGetMetricsResponse::kSpanFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +WorkflowExecutionGetMetricsResponse::WorkflowExecutionGetMetricsResponse() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.WorkflowExecutionGetMetricsResponse) +} +WorkflowExecutionGetMetricsResponse::WorkflowExecutionGetMetricsResponse(const WorkflowExecutionGetMetricsResponse& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + if (from.has_span()) { + span_ = new ::flyteidl::core::Span(*from.span_); + } else { + span_ = nullptr; + } + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.WorkflowExecutionGetMetricsResponse) +} + +void WorkflowExecutionGetMetricsResponse::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_WorkflowExecutionGetMetricsResponse_flyteidl_2fadmin_2fexecution_2eproto.base); + span_ = nullptr; +} + +WorkflowExecutionGetMetricsResponse::~WorkflowExecutionGetMetricsResponse() { + // @@protoc_insertion_point(destructor:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + SharedDtor(); +} + +void WorkflowExecutionGetMetricsResponse::SharedDtor() { + if (this != internal_default_instance()) delete span_; +} + +void WorkflowExecutionGetMetricsResponse::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const WorkflowExecutionGetMetricsResponse& WorkflowExecutionGetMetricsResponse::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_WorkflowExecutionGetMetricsResponse_flyteidl_2fadmin_2fexecution_2eproto.base); + return *internal_default_instance(); +} + + +void WorkflowExecutionGetMetricsResponse::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + if (GetArenaNoVirtual() == nullptr && span_ != nullptr) { + delete span_; + } + span_ = nullptr; + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* WorkflowExecutionGetMetricsResponse::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // .flyteidl.core.Span span = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::flyteidl::core::Span::_InternalParse; + object = msg->mutable_span(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool WorkflowExecutionGetMetricsResponse::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.WorkflowExecutionGetMetricsResponse) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // .flyteidl.core.Span span = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_span())); + } 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.WorkflowExecutionGetMetricsResponse) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void WorkflowExecutionGetMetricsResponse::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.Span span = 1; + if (this->has_span()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, HasBitSetters::span(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.WorkflowExecutionGetMetricsResponse) +} + +::google::protobuf::uint8* WorkflowExecutionGetMetricsResponse::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.Span span = 1; + if (this->has_span()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 1, HasBitSetters::span(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.WorkflowExecutionGetMetricsResponse) + return target; +} + +size_t WorkflowExecutionGetMetricsResponse::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + 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; + + // .flyteidl.core.Span span = 1; + if (this->has_span()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *span_); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void WorkflowExecutionGetMetricsResponse::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + GOOGLE_DCHECK_NE(&from, this); + const WorkflowExecutionGetMetricsResponse* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + MergeFrom(*source); + } +} + +void WorkflowExecutionGetMetricsResponse::MergeFrom(const WorkflowExecutionGetMetricsResponse& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.has_span()) { + mutable_span()->::flyteidl::core::Span::MergeFrom(from.span()); + } +} + +void WorkflowExecutionGetMetricsResponse::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void WorkflowExecutionGetMetricsResponse::CopyFrom(const WorkflowExecutionGetMetricsResponse& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool WorkflowExecutionGetMetricsResponse::IsInitialized() const { + return true; +} + +void WorkflowExecutionGetMetricsResponse::Swap(WorkflowExecutionGetMetricsResponse* other) { + if (other == this) return; + InternalSwap(other); +} +void WorkflowExecutionGetMetricsResponse::InternalSwap(WorkflowExecutionGetMetricsResponse* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + swap(span_, other->span_); +} + +::google::protobuf::Metadata WorkflowExecutionGetMetricsResponse::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fexecution_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fexecution_2eproto[kIndexInFileMessages]; +} + + // @@protoc_insertion_point(namespace_scope) } // namespace admin } // namespace flyteidl @@ -10716,6 +11412,12 @@ template<> PROTOBUF_NOINLINE ::flyteidl::admin::ExecutionStateChangeDetails* Are template<> PROTOBUF_NOINLINE ::flyteidl::admin::ExecutionUpdateResponse* Arena::CreateMaybeMessage< ::flyteidl::admin::ExecutionUpdateResponse >(Arena* arena) { return Arena::CreateInternal< ::flyteidl::admin::ExecutionUpdateResponse >(arena); } +template<> PROTOBUF_NOINLINE ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* Arena::CreateMaybeMessage< ::flyteidl::admin::WorkflowExecutionGetMetricsRequest >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::WorkflowExecutionGetMetricsRequest >(arena); +} +template<> PROTOBUF_NOINLINE ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* Arena::CreateMaybeMessage< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse >(arena); +} } // namespace protobuf } // namespace google diff --git a/gen/pb-cpp/flyteidl/admin/execution.pb.h b/gen/pb-cpp/flyteidl/admin/execution.pb.h index b333e1c4b..2a6c047cf 100644 --- a/gen/pb-cpp/flyteidl/admin/execution.pb.h +++ b/gen/pb-cpp/flyteidl/admin/execution.pb.h @@ -37,6 +37,7 @@ #include "flyteidl/core/literals.pb.h" #include "flyteidl/core/execution.pb.h" #include "flyteidl/core/identifier.pb.h" +#include "flyteidl/core/metrics.pb.h" #include "flyteidl/core/security.pb.h" #include #include @@ -51,7 +52,7 @@ struct TableStruct_flyteidl_2fadmin_2fexecution_2eproto { PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::google::protobuf::internal::AuxillaryParseTableField aux[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); - static const ::google::protobuf::internal::ParseTable schema[21] + static const ::google::protobuf::internal::ParseTable schema[23] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::google::protobuf::internal::FieldMetadata field_metadata[]; static const ::google::protobuf::internal::SerializationTable serialization_table[]; @@ -120,6 +121,12 @@ extern WorkflowExecutionGetDataRequestDefaultTypeInternal _WorkflowExecutionGetD class WorkflowExecutionGetDataResponse; class WorkflowExecutionGetDataResponseDefaultTypeInternal; extern WorkflowExecutionGetDataResponseDefaultTypeInternal _WorkflowExecutionGetDataResponse_default_instance_; +class WorkflowExecutionGetMetricsRequest; +class WorkflowExecutionGetMetricsRequestDefaultTypeInternal; +extern WorkflowExecutionGetMetricsRequestDefaultTypeInternal _WorkflowExecutionGetMetricsRequest_default_instance_; +class WorkflowExecutionGetMetricsResponse; +class WorkflowExecutionGetMetricsResponseDefaultTypeInternal; +extern WorkflowExecutionGetMetricsResponseDefaultTypeInternal _WorkflowExecutionGetMetricsResponse_default_instance_; class WorkflowExecutionGetRequest; class WorkflowExecutionGetRequestDefaultTypeInternal; extern WorkflowExecutionGetRequestDefaultTypeInternal _WorkflowExecutionGetRequest_default_instance_; @@ -147,6 +154,8 @@ template<> ::flyteidl::admin::NotificationList* Arena::CreateMaybeMessage<::flyt template<> ::flyteidl::admin::SystemMetadata* Arena::CreateMaybeMessage<::flyteidl::admin::SystemMetadata>(Arena*); template<> ::flyteidl::admin::WorkflowExecutionGetDataRequest* Arena::CreateMaybeMessage<::flyteidl::admin::WorkflowExecutionGetDataRequest>(Arena*); template<> ::flyteidl::admin::WorkflowExecutionGetDataResponse* Arena::CreateMaybeMessage<::flyteidl::admin::WorkflowExecutionGetDataResponse>(Arena*); +template<> ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* Arena::CreateMaybeMessage<::flyteidl::admin::WorkflowExecutionGetMetricsRequest>(Arena*); +template<> ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* Arena::CreateMaybeMessage<::flyteidl::admin::WorkflowExecutionGetMetricsResponse>(Arena*); template<> ::flyteidl::admin::WorkflowExecutionGetRequest* Arena::CreateMaybeMessage<::flyteidl::admin::WorkflowExecutionGetRequest>(Arena*); } // namespace protobuf } // namespace google @@ -3279,6 +3288,243 @@ class ExecutionUpdateResponse final : mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2fexecution_2eproto; }; +// ------------------------------------------------------------------- + +class WorkflowExecutionGetMetricsRequest final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.WorkflowExecutionGetMetricsRequest) */ { + public: + WorkflowExecutionGetMetricsRequest(); + virtual ~WorkflowExecutionGetMetricsRequest(); + + WorkflowExecutionGetMetricsRequest(const WorkflowExecutionGetMetricsRequest& from); + + inline WorkflowExecutionGetMetricsRequest& operator=(const WorkflowExecutionGetMetricsRequest& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + WorkflowExecutionGetMetricsRequest(WorkflowExecutionGetMetricsRequest&& from) noexcept + : WorkflowExecutionGetMetricsRequest() { + *this = ::std::move(from); + } + + inline WorkflowExecutionGetMetricsRequest& operator=(WorkflowExecutionGetMetricsRequest&& 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 WorkflowExecutionGetMetricsRequest& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const WorkflowExecutionGetMetricsRequest* internal_default_instance() { + return reinterpret_cast( + &_WorkflowExecutionGetMetricsRequest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 21; + + void Swap(WorkflowExecutionGetMetricsRequest* other); + friend void swap(WorkflowExecutionGetMetricsRequest& a, WorkflowExecutionGetMetricsRequest& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline WorkflowExecutionGetMetricsRequest* New() const final { + return CreateMaybeMessage(nullptr); + } + + WorkflowExecutionGetMetricsRequest* 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 WorkflowExecutionGetMetricsRequest& from); + void MergeFrom(const WorkflowExecutionGetMetricsRequest& 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(WorkflowExecutionGetMetricsRequest* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // .flyteidl.core.WorkflowExecutionIdentifier id = 1; + bool has_id() const; + void clear_id(); + static const int kIdFieldNumber = 1; + const ::flyteidl::core::WorkflowExecutionIdentifier& id() const; + ::flyteidl::core::WorkflowExecutionIdentifier* release_id(); + ::flyteidl::core::WorkflowExecutionIdentifier* mutable_id(); + void set_allocated_id(::flyteidl::core::WorkflowExecutionIdentifier* id); + + // int32 depth = 2; + void clear_depth(); + static const int kDepthFieldNumber = 2; + ::google::protobuf::int32 depth() const; + void set_depth(::google::protobuf::int32 value); + + // @@protoc_insertion_point(class_scope:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::flyteidl::core::WorkflowExecutionIdentifier* id_; + ::google::protobuf::int32 depth_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fadmin_2fexecution_2eproto; +}; +// ------------------------------------------------------------------- + +class WorkflowExecutionGetMetricsResponse final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.WorkflowExecutionGetMetricsResponse) */ { + public: + WorkflowExecutionGetMetricsResponse(); + virtual ~WorkflowExecutionGetMetricsResponse(); + + WorkflowExecutionGetMetricsResponse(const WorkflowExecutionGetMetricsResponse& from); + + inline WorkflowExecutionGetMetricsResponse& operator=(const WorkflowExecutionGetMetricsResponse& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + WorkflowExecutionGetMetricsResponse(WorkflowExecutionGetMetricsResponse&& from) noexcept + : WorkflowExecutionGetMetricsResponse() { + *this = ::std::move(from); + } + + inline WorkflowExecutionGetMetricsResponse& operator=(WorkflowExecutionGetMetricsResponse&& 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 WorkflowExecutionGetMetricsResponse& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const WorkflowExecutionGetMetricsResponse* internal_default_instance() { + return reinterpret_cast( + &_WorkflowExecutionGetMetricsResponse_default_instance_); + } + static constexpr int kIndexInFileMessages = + 22; + + void Swap(WorkflowExecutionGetMetricsResponse* other); + friend void swap(WorkflowExecutionGetMetricsResponse& a, WorkflowExecutionGetMetricsResponse& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline WorkflowExecutionGetMetricsResponse* New() const final { + return CreateMaybeMessage(nullptr); + } + + WorkflowExecutionGetMetricsResponse* 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 WorkflowExecutionGetMetricsResponse& from); + void MergeFrom(const WorkflowExecutionGetMetricsResponse& 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(WorkflowExecutionGetMetricsResponse* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // .flyteidl.core.Span span = 1; + bool has_span() const; + void clear_span(); + static const int kSpanFieldNumber = 1; + const ::flyteidl::core::Span& span() const; + ::flyteidl::core::Span* release_span(); + ::flyteidl::core::Span* mutable_span(); + void set_allocated_span(::flyteidl::core::Span* span); + + // @@protoc_insertion_point(class_scope:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::flyteidl::core::Span* span_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fadmin_2fexecution_2eproto; +}; // =================================================================== @@ -6519,6 +6765,118 @@ inline void ExecutionStateChangeDetails::set_allocated_principal(::std::string* // ExecutionUpdateResponse +// ------------------------------------------------------------------- + +// WorkflowExecutionGetMetricsRequest + +// .flyteidl.core.WorkflowExecutionIdentifier id = 1; +inline bool WorkflowExecutionGetMetricsRequest::has_id() const { + return this != internal_default_instance() && id_ != nullptr; +} +inline const ::flyteidl::core::WorkflowExecutionIdentifier& WorkflowExecutionGetMetricsRequest::id() const { + const ::flyteidl::core::WorkflowExecutionIdentifier* p = id_; + // @@protoc_insertion_point(field_get:flyteidl.admin.WorkflowExecutionGetMetricsRequest.id) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::core::_WorkflowExecutionIdentifier_default_instance_); +} +inline ::flyteidl::core::WorkflowExecutionIdentifier* WorkflowExecutionGetMetricsRequest::release_id() { + // @@protoc_insertion_point(field_release:flyteidl.admin.WorkflowExecutionGetMetricsRequest.id) + + ::flyteidl::core::WorkflowExecutionIdentifier* temp = id_; + id_ = nullptr; + return temp; +} +inline ::flyteidl::core::WorkflowExecutionIdentifier* WorkflowExecutionGetMetricsRequest::mutable_id() { + + if (id_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::core::WorkflowExecutionIdentifier>(GetArenaNoVirtual()); + id_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.WorkflowExecutionGetMetricsRequest.id) + return id_; +} +inline void WorkflowExecutionGetMetricsRequest::set_allocated_id(::flyteidl::core::WorkflowExecutionIdentifier* id) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(id_); + } + if (id) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + id = ::google::protobuf::internal::GetOwnedMessage( + message_arena, id, submessage_arena); + } + + } else { + + } + id_ = id; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.WorkflowExecutionGetMetricsRequest.id) +} + +// int32 depth = 2; +inline void WorkflowExecutionGetMetricsRequest::clear_depth() { + depth_ = 0; +} +inline ::google::protobuf::int32 WorkflowExecutionGetMetricsRequest::depth() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.WorkflowExecutionGetMetricsRequest.depth) + return depth_; +} +inline void WorkflowExecutionGetMetricsRequest::set_depth(::google::protobuf::int32 value) { + + depth_ = value; + // @@protoc_insertion_point(field_set:flyteidl.admin.WorkflowExecutionGetMetricsRequest.depth) +} + +// ------------------------------------------------------------------- + +// WorkflowExecutionGetMetricsResponse + +// .flyteidl.core.Span span = 1; +inline bool WorkflowExecutionGetMetricsResponse::has_span() const { + return this != internal_default_instance() && span_ != nullptr; +} +inline const ::flyteidl::core::Span& WorkflowExecutionGetMetricsResponse::span() const { + const ::flyteidl::core::Span* p = span_; + // @@protoc_insertion_point(field_get:flyteidl.admin.WorkflowExecutionGetMetricsResponse.span) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::core::_Span_default_instance_); +} +inline ::flyteidl::core::Span* WorkflowExecutionGetMetricsResponse::release_span() { + // @@protoc_insertion_point(field_release:flyteidl.admin.WorkflowExecutionGetMetricsResponse.span) + + ::flyteidl::core::Span* temp = span_; + span_ = nullptr; + return temp; +} +inline ::flyteidl::core::Span* WorkflowExecutionGetMetricsResponse::mutable_span() { + + if (span_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::core::Span>(GetArenaNoVirtual()); + span_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.WorkflowExecutionGetMetricsResponse.span) + return span_; +} +inline void WorkflowExecutionGetMetricsResponse::set_allocated_span(::flyteidl::core::Span* span) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(span_); + } + if (span) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + span = ::google::protobuf::internal::GetOwnedMessage( + message_arena, span, submessage_arena); + } + + } else { + + } + span_ = span; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.WorkflowExecutionGetMetricsResponse.span) +} + #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ @@ -6562,6 +6920,10 @@ inline void ExecutionStateChangeDetails::set_allocated_principal(::std::string* // ------------------------------------------------------------------- +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + // @@protoc_insertion_point(namespace_scope) diff --git a/gen/pb-cpp/flyteidl/core/metrics.grpc.pb.cc b/gen/pb-cpp/flyteidl/core/metrics.grpc.pb.cc new file mode 100644 index 000000000..e48bb1256 --- /dev/null +++ b/gen/pb-cpp/flyteidl/core/metrics.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/core/metrics.proto + +#include "flyteidl/core/metrics.pb.h" +#include "flyteidl/core/metrics.grpc.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace flyteidl { +namespace core { + +} // namespace flyteidl +} // namespace core + diff --git a/gen/pb-cpp/flyteidl/core/metrics.grpc.pb.h b/gen/pb-cpp/flyteidl/core/metrics.grpc.pb.h new file mode 100644 index 000000000..1bd56797b --- /dev/null +++ b/gen/pb-cpp/flyteidl/core/metrics.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/core/metrics.proto +#ifndef GRPC_flyteidl_2fcore_2fmetrics_2eproto__INCLUDED +#define GRPC_flyteidl_2fcore_2fmetrics_2eproto__INCLUDED + +#include "flyteidl/core/metrics.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 core { + +} // namespace core +} // namespace flyteidl + + +#endif // GRPC_flyteidl_2fcore_2fmetrics_2eproto__INCLUDED diff --git a/gen/pb-cpp/flyteidl/core/metrics.pb.cc b/gen/pb-cpp/flyteidl/core/metrics.pb.cc new file mode 100644 index 000000000..703bda83c --- /dev/null +++ b/gen/pb-cpp/flyteidl/core/metrics.pb.cc @@ -0,0 +1,930 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/core/metrics.proto + +#include "flyteidl/core/metrics.pb.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +// @@protoc_insertion_point(includes) +#include + +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_WorkflowExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_NodeExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fidentifier_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TaskExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fmetrics_2eproto ::google::protobuf::internal::SCCInfo<4> scc_info_Span_flyteidl_2fcore_2fmetrics_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2ftimestamp_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto; +namespace flyteidl { +namespace core { +class SpanDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; + const ::flyteidl::core::WorkflowExecutionIdentifier* workflow_id_; + const ::flyteidl::core::NodeExecutionIdentifier* node_id_; + const ::flyteidl::core::TaskExecutionIdentifier* task_id_; + ::google::protobuf::internal::ArenaStringPtr operation_id_; +} _Span_default_instance_; +} // namespace core +} // namespace flyteidl +static void InitDefaultsSpan_flyteidl_2fcore_2fmetrics_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::core::_Span_default_instance_; + new (ptr) ::flyteidl::core::Span(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::core::Span::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<4> scc_info_Span_flyteidl_2fcore_2fmetrics_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsSpan_flyteidl_2fcore_2fmetrics_2eproto}, { + &scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto.base, + &scc_info_WorkflowExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto.base, + &scc_info_NodeExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto.base, + &scc_info_TaskExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto.base,}}; + +void InitDefaults_flyteidl_2fcore_2fmetrics_2eproto() { + ::google::protobuf::internal::InitSCC(&scc_info_Span_flyteidl_2fcore_2fmetrics_2eproto.base); +} + +::google::protobuf::Metadata file_level_metadata_flyteidl_2fcore_2fmetrics_2eproto[1]; +constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_flyteidl_2fcore_2fmetrics_2eproto = nullptr; +constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_flyteidl_2fcore_2fmetrics_2eproto = nullptr; + +const ::google::protobuf::uint32 TableStruct_flyteidl_2fcore_2fmetrics_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::core::Span, _internal_metadata_), + ~0u, // no _extensions_ + PROTOBUF_FIELD_OFFSET(::flyteidl::core::Span, _oneof_case_[0]), + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::core::Span, start_time_), + PROTOBUF_FIELD_OFFSET(::flyteidl::core::Span, end_time_), + offsetof(::flyteidl::core::SpanDefaultTypeInternal, workflow_id_), + offsetof(::flyteidl::core::SpanDefaultTypeInternal, node_id_), + offsetof(::flyteidl::core::SpanDefaultTypeInternal, task_id_), + offsetof(::flyteidl::core::SpanDefaultTypeInternal, operation_id_), + PROTOBUF_FIELD_OFFSET(::flyteidl::core::Span, spans_), + PROTOBUF_FIELD_OFFSET(::flyteidl::core::Span, id_), +}; +static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { + { 0, -1, sizeof(::flyteidl::core::Span)}, +}; + +static ::google::protobuf::Message const * const file_default_instances[] = { + reinterpret_cast(&::flyteidl::core::_Span_default_instance_), +}; + +::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_flyteidl_2fcore_2fmetrics_2eproto = { + {}, AddDescriptors_flyteidl_2fcore_2fmetrics_2eproto, "flyteidl/core/metrics.proto", schemas, + file_default_instances, TableStruct_flyteidl_2fcore_2fmetrics_2eproto::offsets, + file_level_metadata_flyteidl_2fcore_2fmetrics_2eproto, 1, file_level_enum_descriptors_flyteidl_2fcore_2fmetrics_2eproto, file_level_service_descriptors_flyteidl_2fcore_2fmetrics_2eproto, +}; + +const char descriptor_table_protodef_flyteidl_2fcore_2fmetrics_2eproto[] = + "\n\033flyteidl/core/metrics.proto\022\rflyteidl." + "core\032\036flyteidl/core/identifier.proto\032\037go" + "ogle/protobuf/timestamp.proto\"\337\002\n\004Span\022." + "\n\nstart_time\030\001 \001(\0132\032.google.protobuf.Tim" + "estamp\022,\n\010end_time\030\002 \001(\0132\032.google.protob" + "uf.Timestamp\022A\n\013workflow_id\030\003 \001(\0132*.flyt" + "eidl.core.WorkflowExecutionIdentifierH\000\022" + "9\n\007node_id\030\004 \001(\0132&.flyteidl.core.NodeExe" + "cutionIdentifierH\000\0229\n\007task_id\030\005 \001(\0132&.fl" + "yteidl.core.TaskExecutionIdentifierH\000\022\026\n" + "\014operation_id\030\006 \001(\tH\000\022\"\n\005spans\030\007 \003(\0132\023.f" + "lyteidl.core.SpanB\004\n\002idB6Z4github.com/fl" + "yteorg/flyteidl/gen/pb-go/flyteidl/coreb" + "\006proto3" + ; +::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fcore_2fmetrics_2eproto = { + false, InitDefaults_flyteidl_2fcore_2fmetrics_2eproto, + descriptor_table_protodef_flyteidl_2fcore_2fmetrics_2eproto, + "flyteidl/core/metrics.proto", &assign_descriptors_table_flyteidl_2fcore_2fmetrics_2eproto, 527, +}; + +void AddDescriptors_flyteidl_2fcore_2fmetrics_2eproto() { + static constexpr ::google::protobuf::internal::InitFunc deps[2] = + { + ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, + ::AddDescriptors_google_2fprotobuf_2ftimestamp_2eproto, + }; + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fcore_2fmetrics_2eproto, deps, 2); +} + +// Force running AddDescriptors() at dynamic initialization time. +static bool dynamic_init_dummy_flyteidl_2fcore_2fmetrics_2eproto = []() { AddDescriptors_flyteidl_2fcore_2fmetrics_2eproto(); return true; }(); +namespace flyteidl { +namespace core { + +// =================================================================== + +void Span::InitAsDefaultInstance() { + ::flyteidl::core::_Span_default_instance_._instance.get_mutable()->start_time_ = const_cast< ::google::protobuf::Timestamp*>( + ::google::protobuf::Timestamp::internal_default_instance()); + ::flyteidl::core::_Span_default_instance_._instance.get_mutable()->end_time_ = const_cast< ::google::protobuf::Timestamp*>( + ::google::protobuf::Timestamp::internal_default_instance()); + ::flyteidl::core::_Span_default_instance_.workflow_id_ = const_cast< ::flyteidl::core::WorkflowExecutionIdentifier*>( + ::flyteidl::core::WorkflowExecutionIdentifier::internal_default_instance()); + ::flyteidl::core::_Span_default_instance_.node_id_ = const_cast< ::flyteidl::core::NodeExecutionIdentifier*>( + ::flyteidl::core::NodeExecutionIdentifier::internal_default_instance()); + ::flyteidl::core::_Span_default_instance_.task_id_ = const_cast< ::flyteidl::core::TaskExecutionIdentifier*>( + ::flyteidl::core::TaskExecutionIdentifier::internal_default_instance()); + ::flyteidl::core::_Span_default_instance_.operation_id_.UnsafeSetDefault( + &::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +class Span::HasBitSetters { + public: + static const ::google::protobuf::Timestamp& start_time(const Span* msg); + static const ::google::protobuf::Timestamp& end_time(const Span* msg); + static const ::flyteidl::core::WorkflowExecutionIdentifier& workflow_id(const Span* msg); + static const ::flyteidl::core::NodeExecutionIdentifier& node_id(const Span* msg); + static const ::flyteidl::core::TaskExecutionIdentifier& task_id(const Span* msg); +}; + +const ::google::protobuf::Timestamp& +Span::HasBitSetters::start_time(const Span* msg) { + return *msg->start_time_; +} +const ::google::protobuf::Timestamp& +Span::HasBitSetters::end_time(const Span* msg) { + return *msg->end_time_; +} +const ::flyteidl::core::WorkflowExecutionIdentifier& +Span::HasBitSetters::workflow_id(const Span* msg) { + return *msg->id_.workflow_id_; +} +const ::flyteidl::core::NodeExecutionIdentifier& +Span::HasBitSetters::node_id(const Span* msg) { + return *msg->id_.node_id_; +} +const ::flyteidl::core::TaskExecutionIdentifier& +Span::HasBitSetters::task_id(const Span* msg) { + return *msg->id_.task_id_; +} +void Span::clear_start_time() { + if (GetArenaNoVirtual() == nullptr && start_time_ != nullptr) { + delete start_time_; + } + start_time_ = nullptr; +} +void Span::clear_end_time() { + if (GetArenaNoVirtual() == nullptr && end_time_ != nullptr) { + delete end_time_; + } + end_time_ = nullptr; +} +void Span::set_allocated_workflow_id(::flyteidl::core::WorkflowExecutionIdentifier* workflow_id) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + clear_id(); + if (workflow_id) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + workflow_id = ::google::protobuf::internal::GetOwnedMessage( + message_arena, workflow_id, submessage_arena); + } + set_has_workflow_id(); + id_.workflow_id_ = workflow_id; + } + // @@protoc_insertion_point(field_set_allocated:flyteidl.core.Span.workflow_id) +} +void Span::clear_workflow_id() { + if (has_workflow_id()) { + delete id_.workflow_id_; + clear_has_id(); + } +} +void Span::set_allocated_node_id(::flyteidl::core::NodeExecutionIdentifier* node_id) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + clear_id(); + if (node_id) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + node_id = ::google::protobuf::internal::GetOwnedMessage( + message_arena, node_id, submessage_arena); + } + set_has_node_id(); + id_.node_id_ = node_id; + } + // @@protoc_insertion_point(field_set_allocated:flyteidl.core.Span.node_id) +} +void Span::clear_node_id() { + if (has_node_id()) { + delete id_.node_id_; + clear_has_id(); + } +} +void Span::set_allocated_task_id(::flyteidl::core::TaskExecutionIdentifier* task_id) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + clear_id(); + if (task_id) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + task_id = ::google::protobuf::internal::GetOwnedMessage( + message_arena, task_id, submessage_arena); + } + set_has_task_id(); + id_.task_id_ = task_id; + } + // @@protoc_insertion_point(field_set_allocated:flyteidl.core.Span.task_id) +} +void Span::clear_task_id() { + if (has_task_id()) { + delete id_.task_id_; + clear_has_id(); + } +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int Span::kStartTimeFieldNumber; +const int Span::kEndTimeFieldNumber; +const int Span::kWorkflowIdFieldNumber; +const int Span::kNodeIdFieldNumber; +const int Span::kTaskIdFieldNumber; +const int Span::kOperationIdFieldNumber; +const int Span::kSpansFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +Span::Span() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.core.Span) +} +Span::Span(const Span& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr), + spans_(from.spans_) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + if (from.has_start_time()) { + start_time_ = new ::google::protobuf::Timestamp(*from.start_time_); + } else { + start_time_ = nullptr; + } + if (from.has_end_time()) { + end_time_ = new ::google::protobuf::Timestamp(*from.end_time_); + } else { + end_time_ = nullptr; + } + clear_has_id(); + switch (from.id_case()) { + case kWorkflowId: { + mutable_workflow_id()->::flyteidl::core::WorkflowExecutionIdentifier::MergeFrom(from.workflow_id()); + break; + } + case kNodeId: { + mutable_node_id()->::flyteidl::core::NodeExecutionIdentifier::MergeFrom(from.node_id()); + break; + } + case kTaskId: { + mutable_task_id()->::flyteidl::core::TaskExecutionIdentifier::MergeFrom(from.task_id()); + break; + } + case kOperationId: { + set_operation_id(from.operation_id()); + break; + } + case ID_NOT_SET: { + break; + } + } + // @@protoc_insertion_point(copy_constructor:flyteidl.core.Span) +} + +void Span::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_Span_flyteidl_2fcore_2fmetrics_2eproto.base); + ::memset(&start_time_, 0, static_cast( + reinterpret_cast(&end_time_) - + reinterpret_cast(&start_time_)) + sizeof(end_time_)); + clear_has_id(); +} + +Span::~Span() { + // @@protoc_insertion_point(destructor:flyteidl.core.Span) + SharedDtor(); +} + +void Span::SharedDtor() { + if (this != internal_default_instance()) delete start_time_; + if (this != internal_default_instance()) delete end_time_; + if (has_id()) { + clear_id(); + } +} + +void Span::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const Span& Span::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_Span_flyteidl_2fcore_2fmetrics_2eproto.base); + return *internal_default_instance(); +} + + +void Span::clear_id() { +// @@protoc_insertion_point(one_of_clear_start:flyteidl.core.Span) + switch (id_case()) { + case kWorkflowId: { + delete id_.workflow_id_; + break; + } + case kNodeId: { + delete id_.node_id_; + break; + } + case kTaskId: { + delete id_.task_id_; + break; + } + case kOperationId: { + id_.operation_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + break; + } + case ID_NOT_SET: { + break; + } + } + _oneof_case_[0] = ID_NOT_SET; +} + + +void Span::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.core.Span) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + spans_.Clear(); + if (GetArenaNoVirtual() == nullptr && start_time_ != nullptr) { + delete start_time_; + } + start_time_ = nullptr; + if (GetArenaNoVirtual() == nullptr && end_time_ != nullptr) { + delete end_time_; + } + end_time_ = nullptr; + clear_id(); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* Span::_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) { + // .google.protobuf.Timestamp start_time = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::google::protobuf::Timestamp::_InternalParse; + object = msg->mutable_start_time(); + 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; + } + // .google.protobuf.Timestamp end_time = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::google::protobuf::Timestamp::_InternalParse; + object = msg->mutable_end_time(); + 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.core.WorkflowExecutionIdentifier workflow_id = 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::core::WorkflowExecutionIdentifier::_InternalParse; + object = msg->mutable_workflow_id(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // .flyteidl.core.NodeExecutionIdentifier node_id = 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::core::NodeExecutionIdentifier::_InternalParse; + object = msg->mutable_node_id(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // .flyteidl.core.TaskExecutionIdentifier task_id = 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::core::TaskExecutionIdentifier::_InternalParse; + object = msg->mutable_task_id(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // string operation_id = 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.core.Span.operation_id"); + object = msg->mutable_operation_id(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // repeated .flyteidl.core.Span spans = 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); + parser_till_end = ::flyteidl::core::Span::_InternalParse; + object = msg->add_spans(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + if (ptr >= end) break; + } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 58 && (ptr += 1)); + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool Span::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:flyteidl.core.Span) + 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)) { + // .google.protobuf.Timestamp start_time = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_start_time())); + } else { + goto handle_unusual; + } + break; + } + + // .google.protobuf.Timestamp end_time = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_end_time())); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_workflow_id())); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.core.NodeExecutionIdentifier node_id = 4; + case 4: { + if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_node_id())); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.core.TaskExecutionIdentifier task_id = 5; + case 5: { + if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_task_id())); + } else { + goto handle_unusual; + } + break; + } + + // string operation_id = 6; + case 6: { + if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_operation_id())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->operation_id().data(), static_cast(this->operation_id().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.core.Span.operation_id")); + } else { + goto handle_unusual; + } + break; + } + + // repeated .flyteidl.core.Span spans = 7; + case 7: { + if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, add_spans())); + } 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.core.Span) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.core.Span) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void Span::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.core.Span) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .google.protobuf.Timestamp start_time = 1; + if (this->has_start_time()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, HasBitSetters::start_time(this), output); + } + + // .google.protobuf.Timestamp end_time = 2; + if (this->has_end_time()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 2, HasBitSetters::end_time(this), output); + } + + // .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + if (has_workflow_id()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 3, HasBitSetters::workflow_id(this), output); + } + + // .flyteidl.core.NodeExecutionIdentifier node_id = 4; + if (has_node_id()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 4, HasBitSetters::node_id(this), output); + } + + // .flyteidl.core.TaskExecutionIdentifier task_id = 5; + if (has_task_id()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 5, HasBitSetters::task_id(this), output); + } + + // string operation_id = 6; + if (has_operation_id()) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->operation_id().data(), static_cast(this->operation_id().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.core.Span.operation_id"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 6, this->operation_id(), output); + } + + // repeated .flyteidl.core.Span spans = 7; + for (unsigned int i = 0, + n = static_cast(this->spans_size()); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 7, + this->spans(static_cast(i)), + output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.core.Span) +} + +::google::protobuf::uint8* Span::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.core.Span) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .google.protobuf.Timestamp start_time = 1; + if (this->has_start_time()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 1, HasBitSetters::start_time(this), target); + } + + // .google.protobuf.Timestamp end_time = 2; + if (this->has_end_time()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 2, HasBitSetters::end_time(this), target); + } + + // .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + if (has_workflow_id()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 3, HasBitSetters::workflow_id(this), target); + } + + // .flyteidl.core.NodeExecutionIdentifier node_id = 4; + if (has_node_id()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 4, HasBitSetters::node_id(this), target); + } + + // .flyteidl.core.TaskExecutionIdentifier task_id = 5; + if (has_task_id()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 5, HasBitSetters::task_id(this), target); + } + + // string operation_id = 6; + if (has_operation_id()) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->operation_id().data(), static_cast(this->operation_id().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.core.Span.operation_id"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 6, this->operation_id(), target); + } + + // repeated .flyteidl.core.Span spans = 7; + for (unsigned int i = 0, + n = static_cast(this->spans_size()); i < n; i++) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 7, this->spans(static_cast(i)), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:flyteidl.core.Span) + return target; +} + +size_t Span::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.core.Span) + 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 .flyteidl.core.Span spans = 7; + { + unsigned int count = static_cast(this->spans_size()); + total_size += 1UL * count; + for (unsigned int i = 0; i < count; i++) { + total_size += + ::google::protobuf::internal::WireFormatLite::MessageSize( + this->spans(static_cast(i))); + } + } + + // .google.protobuf.Timestamp start_time = 1; + if (this->has_start_time()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *start_time_); + } + + // .google.protobuf.Timestamp end_time = 2; + if (this->has_end_time()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *end_time_); + } + + switch (id_case()) { + // .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + case kWorkflowId: { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *id_.workflow_id_); + break; + } + // .flyteidl.core.NodeExecutionIdentifier node_id = 4; + case kNodeId: { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *id_.node_id_); + break; + } + // .flyteidl.core.TaskExecutionIdentifier task_id = 5; + case kTaskId: { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *id_.task_id_); + break; + } + // string operation_id = 6; + case kOperationId: { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->operation_id()); + break; + } + case ID_NOT_SET: { + break; + } + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void Span::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.core.Span) + GOOGLE_DCHECK_NE(&from, this); + const Span* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.core.Span) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.core.Span) + MergeFrom(*source); + } +} + +void Span::MergeFrom(const Span& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.core.Span) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + spans_.MergeFrom(from.spans_); + if (from.has_start_time()) { + mutable_start_time()->::google::protobuf::Timestamp::MergeFrom(from.start_time()); + } + if (from.has_end_time()) { + mutable_end_time()->::google::protobuf::Timestamp::MergeFrom(from.end_time()); + } + switch (from.id_case()) { + case kWorkflowId: { + mutable_workflow_id()->::flyteidl::core::WorkflowExecutionIdentifier::MergeFrom(from.workflow_id()); + break; + } + case kNodeId: { + mutable_node_id()->::flyteidl::core::NodeExecutionIdentifier::MergeFrom(from.node_id()); + break; + } + case kTaskId: { + mutable_task_id()->::flyteidl::core::TaskExecutionIdentifier::MergeFrom(from.task_id()); + break; + } + case kOperationId: { + set_operation_id(from.operation_id()); + break; + } + case ID_NOT_SET: { + break; + } + } +} + +void Span::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.core.Span) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void Span::CopyFrom(const Span& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.core.Span) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool Span::IsInitialized() const { + return true; +} + +void Span::Swap(Span* other) { + if (other == this) return; + InternalSwap(other); +} +void Span::InternalSwap(Span* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + CastToBase(&spans_)->InternalSwap(CastToBase(&other->spans_)); + swap(start_time_, other->start_time_); + swap(end_time_, other->end_time_); + swap(id_, other->id_); + swap(_oneof_case_[0], other->_oneof_case_[0]); +} + +::google::protobuf::Metadata Span::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fcore_2fmetrics_2eproto); + return ::file_level_metadata_flyteidl_2fcore_2fmetrics_2eproto[kIndexInFileMessages]; +} + + +// @@protoc_insertion_point(namespace_scope) +} // namespace core +} // namespace flyteidl +namespace google { +namespace protobuf { +template<> PROTOBUF_NOINLINE ::flyteidl::core::Span* Arena::CreateMaybeMessage< ::flyteidl::core::Span >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::core::Span >(arena); +} +} // namespace protobuf +} // namespace google + +// @@protoc_insertion_point(global_scope) +#include diff --git a/gen/pb-cpp/flyteidl/core/metrics.pb.h b/gen/pb-cpp/flyteidl/core/metrics.pb.h new file mode 100644 index 000000000..c19d6f944 --- /dev/null +++ b/gen/pb-cpp/flyteidl/core/metrics.pb.h @@ -0,0 +1,627 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/core/metrics.proto + +#ifndef PROTOBUF_INCLUDED_flyteidl_2fcore_2fmetrics_2eproto +#define PROTOBUF_INCLUDED_flyteidl_2fcore_2fmetrics_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 "flyteidl/core/identifier.pb.h" +#include +// @@protoc_insertion_point(includes) +#include +#define PROTOBUF_INTERNAL_EXPORT_flyteidl_2fcore_2fmetrics_2eproto + +// Internal implementation detail -- do not use these members. +struct TableStruct_flyteidl_2fcore_2fmetrics_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[1] + 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_2fcore_2fmetrics_2eproto(); +namespace flyteidl { +namespace core { +class Span; +class SpanDefaultTypeInternal; +extern SpanDefaultTypeInternal _Span_default_instance_; +} // namespace core +} // namespace flyteidl +namespace google { +namespace protobuf { +template<> ::flyteidl::core::Span* Arena::CreateMaybeMessage<::flyteidl::core::Span>(Arena*); +} // namespace protobuf +} // namespace google +namespace flyteidl { +namespace core { + +// =================================================================== + +class Span final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.core.Span) */ { + public: + Span(); + virtual ~Span(); + + Span(const Span& from); + + inline Span& operator=(const Span& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + Span(Span&& from) noexcept + : Span() { + *this = ::std::move(from); + } + + inline Span& operator=(Span&& 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 Span& default_instance(); + + enum IdCase { + kWorkflowId = 3, + kNodeId = 4, + kTaskId = 5, + kOperationId = 6, + ID_NOT_SET = 0, + }; + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const Span* internal_default_instance() { + return reinterpret_cast( + &_Span_default_instance_); + } + static constexpr int kIndexInFileMessages = + 0; + + void Swap(Span* other); + friend void swap(Span& a, Span& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline Span* New() const final { + return CreateMaybeMessage(nullptr); + } + + Span* 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 Span& from); + void MergeFrom(const Span& 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(Span* 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 .flyteidl.core.Span spans = 7; + int spans_size() const; + void clear_spans(); + static const int kSpansFieldNumber = 7; + ::flyteidl::core::Span* mutable_spans(int index); + ::google::protobuf::RepeatedPtrField< ::flyteidl::core::Span >* + mutable_spans(); + const ::flyteidl::core::Span& spans(int index) const; + ::flyteidl::core::Span* add_spans(); + const ::google::protobuf::RepeatedPtrField< ::flyteidl::core::Span >& + spans() const; + + // .google.protobuf.Timestamp start_time = 1; + bool has_start_time() const; + void clear_start_time(); + static const int kStartTimeFieldNumber = 1; + const ::google::protobuf::Timestamp& start_time() const; + ::google::protobuf::Timestamp* release_start_time(); + ::google::protobuf::Timestamp* mutable_start_time(); + void set_allocated_start_time(::google::protobuf::Timestamp* start_time); + + // .google.protobuf.Timestamp end_time = 2; + bool has_end_time() const; + void clear_end_time(); + static const int kEndTimeFieldNumber = 2; + const ::google::protobuf::Timestamp& end_time() const; + ::google::protobuf::Timestamp* release_end_time(); + ::google::protobuf::Timestamp* mutable_end_time(); + void set_allocated_end_time(::google::protobuf::Timestamp* end_time); + + // .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + bool has_workflow_id() const; + void clear_workflow_id(); + static const int kWorkflowIdFieldNumber = 3; + const ::flyteidl::core::WorkflowExecutionIdentifier& workflow_id() const; + ::flyteidl::core::WorkflowExecutionIdentifier* release_workflow_id(); + ::flyteidl::core::WorkflowExecutionIdentifier* mutable_workflow_id(); + void set_allocated_workflow_id(::flyteidl::core::WorkflowExecutionIdentifier* workflow_id); + + // .flyteidl.core.NodeExecutionIdentifier node_id = 4; + bool has_node_id() const; + void clear_node_id(); + static const int kNodeIdFieldNumber = 4; + const ::flyteidl::core::NodeExecutionIdentifier& node_id() const; + ::flyteidl::core::NodeExecutionIdentifier* release_node_id(); + ::flyteidl::core::NodeExecutionIdentifier* mutable_node_id(); + void set_allocated_node_id(::flyteidl::core::NodeExecutionIdentifier* node_id); + + // .flyteidl.core.TaskExecutionIdentifier task_id = 5; + bool has_task_id() const; + void clear_task_id(); + static const int kTaskIdFieldNumber = 5; + const ::flyteidl::core::TaskExecutionIdentifier& task_id() const; + ::flyteidl::core::TaskExecutionIdentifier* release_task_id(); + ::flyteidl::core::TaskExecutionIdentifier* mutable_task_id(); + void set_allocated_task_id(::flyteidl::core::TaskExecutionIdentifier* task_id); + + // string operation_id = 6; + private: + bool has_operation_id() const; + public: + void clear_operation_id(); + static const int kOperationIdFieldNumber = 6; + const ::std::string& operation_id() const; + void set_operation_id(const ::std::string& value); + #if LANG_CXX11 + void set_operation_id(::std::string&& value); + #endif + void set_operation_id(const char* value); + void set_operation_id(const char* value, size_t size); + ::std::string* mutable_operation_id(); + ::std::string* release_operation_id(); + void set_allocated_operation_id(::std::string* operation_id); + + void clear_id(); + IdCase id_case() const; + // @@protoc_insertion_point(class_scope:flyteidl.core.Span) + private: + class HasBitSetters; + void set_has_workflow_id(); + void set_has_node_id(); + void set_has_task_id(); + void set_has_operation_id(); + + inline bool has_id() const; + inline void clear_has_id(); + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::RepeatedPtrField< ::flyteidl::core::Span > spans_; + ::google::protobuf::Timestamp* start_time_; + ::google::protobuf::Timestamp* end_time_; + union IdUnion { + IdUnion() {} + ::flyteidl::core::WorkflowExecutionIdentifier* workflow_id_; + ::flyteidl::core::NodeExecutionIdentifier* node_id_; + ::flyteidl::core::TaskExecutionIdentifier* task_id_; + ::google::protobuf::internal::ArenaStringPtr operation_id_; + } id_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + ::google::protobuf::uint32 _oneof_case_[1]; + + friend struct ::TableStruct_flyteidl_2fcore_2fmetrics_2eproto; +}; +// =================================================================== + + +// =================================================================== + +#ifdef __GNUC__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif // __GNUC__ +// Span + +// .google.protobuf.Timestamp start_time = 1; +inline bool Span::has_start_time() const { + return this != internal_default_instance() && start_time_ != nullptr; +} +inline const ::google::protobuf::Timestamp& Span::start_time() const { + const ::google::protobuf::Timestamp* p = start_time_; + // @@protoc_insertion_point(field_get:flyteidl.core.Span.start_time) + return p != nullptr ? *p : *reinterpret_cast( + &::google::protobuf::_Timestamp_default_instance_); +} +inline ::google::protobuf::Timestamp* Span::release_start_time() { + // @@protoc_insertion_point(field_release:flyteidl.core.Span.start_time) + + ::google::protobuf::Timestamp* temp = start_time_; + start_time_ = nullptr; + return temp; +} +inline ::google::protobuf::Timestamp* Span::mutable_start_time() { + + if (start_time_ == nullptr) { + auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArenaNoVirtual()); + start_time_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.core.Span.start_time) + return start_time_; +} +inline void Span::set_allocated_start_time(::google::protobuf::Timestamp* start_time) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(start_time_); + } + if (start_time) { + ::google::protobuf::Arena* submessage_arena = + reinterpret_cast<::google::protobuf::MessageLite*>(start_time)->GetArena(); + if (message_arena != submessage_arena) { + start_time = ::google::protobuf::internal::GetOwnedMessage( + message_arena, start_time, submessage_arena); + } + + } else { + + } + start_time_ = start_time; + // @@protoc_insertion_point(field_set_allocated:flyteidl.core.Span.start_time) +} + +// .google.protobuf.Timestamp end_time = 2; +inline bool Span::has_end_time() const { + return this != internal_default_instance() && end_time_ != nullptr; +} +inline const ::google::protobuf::Timestamp& Span::end_time() const { + const ::google::protobuf::Timestamp* p = end_time_; + // @@protoc_insertion_point(field_get:flyteidl.core.Span.end_time) + return p != nullptr ? *p : *reinterpret_cast( + &::google::protobuf::_Timestamp_default_instance_); +} +inline ::google::protobuf::Timestamp* Span::release_end_time() { + // @@protoc_insertion_point(field_release:flyteidl.core.Span.end_time) + + ::google::protobuf::Timestamp* temp = end_time_; + end_time_ = nullptr; + return temp; +} +inline ::google::protobuf::Timestamp* Span::mutable_end_time() { + + if (end_time_ == nullptr) { + auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArenaNoVirtual()); + end_time_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.core.Span.end_time) + return end_time_; +} +inline void Span::set_allocated_end_time(::google::protobuf::Timestamp* end_time) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(end_time_); + } + if (end_time) { + ::google::protobuf::Arena* submessage_arena = + reinterpret_cast<::google::protobuf::MessageLite*>(end_time)->GetArena(); + if (message_arena != submessage_arena) { + end_time = ::google::protobuf::internal::GetOwnedMessage( + message_arena, end_time, submessage_arena); + } + + } else { + + } + end_time_ = end_time; + // @@protoc_insertion_point(field_set_allocated:flyteidl.core.Span.end_time) +} + +// .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; +inline bool Span::has_workflow_id() const { + return id_case() == kWorkflowId; +} +inline void Span::set_has_workflow_id() { + _oneof_case_[0] = kWorkflowId; +} +inline ::flyteidl::core::WorkflowExecutionIdentifier* Span::release_workflow_id() { + // @@protoc_insertion_point(field_release:flyteidl.core.Span.workflow_id) + if (has_workflow_id()) { + clear_has_id(); + ::flyteidl::core::WorkflowExecutionIdentifier* temp = id_.workflow_id_; + id_.workflow_id_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::flyteidl::core::WorkflowExecutionIdentifier& Span::workflow_id() const { + // @@protoc_insertion_point(field_get:flyteidl.core.Span.workflow_id) + return has_workflow_id() + ? *id_.workflow_id_ + : *reinterpret_cast< ::flyteidl::core::WorkflowExecutionIdentifier*>(&::flyteidl::core::_WorkflowExecutionIdentifier_default_instance_); +} +inline ::flyteidl::core::WorkflowExecutionIdentifier* Span::mutable_workflow_id() { + if (!has_workflow_id()) { + clear_id(); + set_has_workflow_id(); + id_.workflow_id_ = CreateMaybeMessage< ::flyteidl::core::WorkflowExecutionIdentifier >( + GetArenaNoVirtual()); + } + // @@protoc_insertion_point(field_mutable:flyteidl.core.Span.workflow_id) + return id_.workflow_id_; +} + +// .flyteidl.core.NodeExecutionIdentifier node_id = 4; +inline bool Span::has_node_id() const { + return id_case() == kNodeId; +} +inline void Span::set_has_node_id() { + _oneof_case_[0] = kNodeId; +} +inline ::flyteidl::core::NodeExecutionIdentifier* Span::release_node_id() { + // @@protoc_insertion_point(field_release:flyteidl.core.Span.node_id) + if (has_node_id()) { + clear_has_id(); + ::flyteidl::core::NodeExecutionIdentifier* temp = id_.node_id_; + id_.node_id_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::flyteidl::core::NodeExecutionIdentifier& Span::node_id() const { + // @@protoc_insertion_point(field_get:flyteidl.core.Span.node_id) + return has_node_id() + ? *id_.node_id_ + : *reinterpret_cast< ::flyteidl::core::NodeExecutionIdentifier*>(&::flyteidl::core::_NodeExecutionIdentifier_default_instance_); +} +inline ::flyteidl::core::NodeExecutionIdentifier* Span::mutable_node_id() { + if (!has_node_id()) { + clear_id(); + set_has_node_id(); + id_.node_id_ = CreateMaybeMessage< ::flyteidl::core::NodeExecutionIdentifier >( + GetArenaNoVirtual()); + } + // @@protoc_insertion_point(field_mutable:flyteidl.core.Span.node_id) + return id_.node_id_; +} + +// .flyteidl.core.TaskExecutionIdentifier task_id = 5; +inline bool Span::has_task_id() const { + return id_case() == kTaskId; +} +inline void Span::set_has_task_id() { + _oneof_case_[0] = kTaskId; +} +inline ::flyteidl::core::TaskExecutionIdentifier* Span::release_task_id() { + // @@protoc_insertion_point(field_release:flyteidl.core.Span.task_id) + if (has_task_id()) { + clear_has_id(); + ::flyteidl::core::TaskExecutionIdentifier* temp = id_.task_id_; + id_.task_id_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::flyteidl::core::TaskExecutionIdentifier& Span::task_id() const { + // @@protoc_insertion_point(field_get:flyteidl.core.Span.task_id) + return has_task_id() + ? *id_.task_id_ + : *reinterpret_cast< ::flyteidl::core::TaskExecutionIdentifier*>(&::flyteidl::core::_TaskExecutionIdentifier_default_instance_); +} +inline ::flyteidl::core::TaskExecutionIdentifier* Span::mutable_task_id() { + if (!has_task_id()) { + clear_id(); + set_has_task_id(); + id_.task_id_ = CreateMaybeMessage< ::flyteidl::core::TaskExecutionIdentifier >( + GetArenaNoVirtual()); + } + // @@protoc_insertion_point(field_mutable:flyteidl.core.Span.task_id) + return id_.task_id_; +} + +// string operation_id = 6; +inline bool Span::has_operation_id() const { + return id_case() == kOperationId; +} +inline void Span::set_has_operation_id() { + _oneof_case_[0] = kOperationId; +} +inline void Span::clear_operation_id() { + if (has_operation_id()) { + id_.operation_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + clear_has_id(); + } +} +inline const ::std::string& Span::operation_id() const { + // @@protoc_insertion_point(field_get:flyteidl.core.Span.operation_id) + if (has_operation_id()) { + return id_.operation_id_.GetNoArena(); + } + return *&::google::protobuf::internal::GetEmptyStringAlreadyInited(); +} +inline void Span::set_operation_id(const ::std::string& value) { + // @@protoc_insertion_point(field_set:flyteidl.core.Span.operation_id) + if (!has_operation_id()) { + clear_id(); + set_has_operation_id(); + id_.operation_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + id_.operation_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.core.Span.operation_id) +} +#if LANG_CXX11 +inline void Span::set_operation_id(::std::string&& value) { + // @@protoc_insertion_point(field_set:flyteidl.core.Span.operation_id) + if (!has_operation_id()) { + clear_id(); + set_has_operation_id(); + id_.operation_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + id_.operation_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.core.Span.operation_id) +} +#endif +inline void Span::set_operation_id(const char* value) { + GOOGLE_DCHECK(value != nullptr); + if (!has_operation_id()) { + clear_id(); + set_has_operation_id(); + id_.operation_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + id_.operation_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.core.Span.operation_id) +} +inline void Span::set_operation_id(const char* value, size_t size) { + if (!has_operation_id()) { + clear_id(); + set_has_operation_id(); + id_.operation_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + id_.operation_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string( + reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.core.Span.operation_id) +} +inline ::std::string* Span::mutable_operation_id() { + if (!has_operation_id()) { + clear_id(); + set_has_operation_id(); + id_.operation_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_mutable:flyteidl.core.Span.operation_id) + return id_.operation_id_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* Span::release_operation_id() { + // @@protoc_insertion_point(field_release:flyteidl.core.Span.operation_id) + if (has_operation_id()) { + clear_has_id(); + return id_.operation_id_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } else { + return nullptr; + } +} +inline void Span::set_allocated_operation_id(::std::string* operation_id) { + if (has_id()) { + clear_id(); + } + if (operation_id != nullptr) { + set_has_operation_id(); + id_.operation_id_.UnsafeSetDefault(operation_id); + } + // @@protoc_insertion_point(field_set_allocated:flyteidl.core.Span.operation_id) +} + +// repeated .flyteidl.core.Span spans = 7; +inline int Span::spans_size() const { + return spans_.size(); +} +inline void Span::clear_spans() { + spans_.Clear(); +} +inline ::flyteidl::core::Span* Span::mutable_spans(int index) { + // @@protoc_insertion_point(field_mutable:flyteidl.core.Span.spans) + return spans_.Mutable(index); +} +inline ::google::protobuf::RepeatedPtrField< ::flyteidl::core::Span >* +Span::mutable_spans() { + // @@protoc_insertion_point(field_mutable_list:flyteidl.core.Span.spans) + return &spans_; +} +inline const ::flyteidl::core::Span& Span::spans(int index) const { + // @@protoc_insertion_point(field_get:flyteidl.core.Span.spans) + return spans_.Get(index); +} +inline ::flyteidl::core::Span* Span::add_spans() { + // @@protoc_insertion_point(field_add:flyteidl.core.Span.spans) + return spans_.Add(); +} +inline const ::google::protobuf::RepeatedPtrField< ::flyteidl::core::Span >& +Span::spans() const { + // @@protoc_insertion_point(field_list:flyteidl.core.Span.spans) + return spans_; +} + +inline bool Span::has_id() const { + return id_case() != ID_NOT_SET; +} +inline void Span::clear_has_id() { + _oneof_case_[0] = ID_NOT_SET; +} +inline Span::IdCase Span::id_case() const { + return Span::IdCase(_oneof_case_[0]); +} +#ifdef __GNUC__ + #pragma GCC diagnostic pop +#endif // __GNUC__ + +// @@protoc_insertion_point(namespace_scope) + +} // namespace core +} // namespace flyteidl + +// @@protoc_insertion_point(global_scope) + +#include +#endif // PROTOBUF_INCLUDED_flyteidl_2fcore_2fmetrics_2eproto diff --git a/gen/pb-cpp/flyteidl/event/event.pb.cc b/gen/pb-cpp/flyteidl/event/event.pb.cc index 9ce327dc3..7f7275900 100644 --- a/gen/pb-cpp/flyteidl/event/event.pb.cc +++ b/gen/pb-cpp/flyteidl/event/event.pb.cc @@ -338,6 +338,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fevent_2fevent_2eproto::o PROTOBUF_FIELD_OFFSET(::flyteidl::event::NodeExecutionEvent, is_parent_), PROTOBUF_FIELD_OFFSET(::flyteidl::event::NodeExecutionEvent, is_dynamic_), PROTOBUF_FIELD_OFFSET(::flyteidl::event::NodeExecutionEvent, deck_uri_), + PROTOBUF_FIELD_OFFSET(::flyteidl::event::NodeExecutionEvent, reported_at_), PROTOBUF_FIELD_OFFSET(::flyteidl::event::NodeExecutionEvent, input_value_), PROTOBUF_FIELD_OFFSET(::flyteidl::event::NodeExecutionEvent, output_result_), PROTOBUF_FIELD_OFFSET(::flyteidl::event::NodeExecutionEvent, target_metadata_), @@ -400,6 +401,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fevent_2fevent_2eproto::o PROTOBUF_FIELD_OFFSET(::flyteidl::event::TaskExecutionEvent, task_type_), PROTOBUF_FIELD_OFFSET(::flyteidl::event::TaskExecutionEvent, metadata_), PROTOBUF_FIELD_OFFSET(::flyteidl::event::TaskExecutionEvent, event_version_), + PROTOBUF_FIELD_OFFSET(::flyteidl::event::TaskExecutionEvent, reported_at_), PROTOBUF_FIELD_OFFSET(::flyteidl::event::TaskExecutionEvent, input_value_), PROTOBUF_FIELD_OFFSET(::flyteidl::event::TaskExecutionEvent, output_result_), ~0u, // no _has_bits_ @@ -434,15 +436,15 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fevent_2fevent_2eproto::o static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, sizeof(::flyteidl::event::WorkflowExecutionEvent)}, { 13, -1, sizeof(::flyteidl::event::NodeExecutionEvent)}, - { 41, -1, sizeof(::flyteidl::event::WorkflowNodeMetadata)}, - { 47, -1, sizeof(::flyteidl::event::TaskNodeMetadata)}, - { 57, -1, sizeof(::flyteidl::event::DynamicWorkflowNodeMetadata)}, - { 65, -1, sizeof(::flyteidl::event::ParentTaskExecutionMetadata)}, - { 71, -1, sizeof(::flyteidl::event::ParentNodeExecutionMetadata)}, - { 77, -1, sizeof(::flyteidl::event::TaskExecutionEvent)}, - { 102, -1, sizeof(::flyteidl::event::ExternalResourceInfo)}, - { 113, -1, sizeof(::flyteidl::event::ResourcePoolInfo)}, - { 120, -1, sizeof(::flyteidl::event::TaskExecutionMetadata)}, + { 42, -1, sizeof(::flyteidl::event::WorkflowNodeMetadata)}, + { 48, -1, sizeof(::flyteidl::event::TaskNodeMetadata)}, + { 58, -1, sizeof(::flyteidl::event::DynamicWorkflowNodeMetadata)}, + { 66, -1, sizeof(::flyteidl::event::ParentTaskExecutionMetadata)}, + { 72, -1, sizeof(::flyteidl::event::ParentNodeExecutionMetadata)}, + { 78, -1, sizeof(::flyteidl::event::TaskExecutionEvent)}, + { 104, -1, sizeof(::flyteidl::event::ExternalResourceInfo)}, + { 115, -1, sizeof(::flyteidl::event::ResourcePoolInfo)}, + { 122, -1, sizeof(::flyteidl::event::TaskExecutionMetadata)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -481,7 +483,7 @@ const char descriptor_table_protodef_flyteidl_2fevent_2fevent_2eproto[] = "\noutput_uri\030\005 \001(\tH\000\022.\n\005error\030\006 \001(\0132\035.fly" "teidl.core.ExecutionErrorH\000\0220\n\013output_da" "ta\030\007 \001(\0132\031.flyteidl.core.LiteralMapH\000B\017\n" - "\routput_result\"\336\006\n\022NodeExecutionEvent\0222\n" + "\routput_result\"\217\007\n\022NodeExecutionEvent\0222\n" "\002id\030\001 \001(\0132&.flyteidl.core.NodeExecutionI" "dentifier\022\023\n\013producer_id\030\002 \001(\t\0221\n\005phase\030" "\003 \001(\0162\".flyteidl.core.NodeExecution.Phas" @@ -501,66 +503,69 @@ const char descriptor_table_protodef_flyteidl_2fevent_2fevent_2eproto[] = "tadata\022\023\n\013retry_group\030\013 \001(\t\022\024\n\014spec_node" "_id\030\014 \001(\t\022\021\n\tnode_name\030\r \001(\t\022\025\n\revent_ve" "rsion\030\020 \001(\005\022\021\n\tis_parent\030\021 \001(\010\022\022\n\nis_dyn" - "amic\030\022 \001(\010\022\020\n\010deck_uri\030\023 \001(\tB\r\n\013input_va" - "lueB\017\n\routput_resultB\021\n\017target_metadata\"" - "X\n\024WorkflowNodeMetadata\022@\n\014execution_id\030" - "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" - "dentifier\"\245\002\n\020TaskNodeMetadata\0227\n\014cache_" - "status\030\001 \001(\0162!.flyteidl.core.CatalogCach" - "eStatus\0223\n\013catalog_key\030\002 \001(\0132\036.flyteidl." - "core.CatalogMetadata\022D\n\022reservation_stat" - "us\030\003 \001(\0162(.flyteidl.core.CatalogReservat" - "ion.Status\022\026\n\016checkpoint_uri\030\004 \001(\t\022E\n\020dy" - "namic_workflow\030\020 \001(\0132+.flyteidl.event.Dy" - "namicWorkflowNodeMetadata\"\245\001\n\033DynamicWor" - "kflowNodeMetadata\022%\n\002id\030\001 \001(\0132\031.flyteidl" - ".core.Identifier\022A\n\021compiled_workflow\030\002 " - "\001(\0132&.flyteidl.core.CompiledWorkflowClos" - "ure\022\034\n\024dynamic_job_spec_uri\030\003 \001(\t\"Q\n\033Par" - "entTaskExecutionMetadata\0222\n\002id\030\001 \001(\0132&.f" - "lyteidl.core.TaskExecutionIdentifier\".\n\033" - "ParentNodeExecutionMetadata\022\017\n\007node_id\030\001" - " \001(\t\"\326\005\n\022TaskExecutionEvent\022*\n\007task_id\030\001" - " \001(\0132\031.flyteidl.core.Identifier\022H\n\030paren" - "t_node_execution_id\030\002 \001(\0132&.flyteidl.cor" - "e.NodeExecutionIdentifier\022\025\n\rretry_attem" - "pt\030\003 \001(\r\0221\n\005phase\030\004 \001(\0162\".flyteidl.core." - "TaskExecution.Phase\022\023\n\013producer_id\030\005 \001(\t" - "\022$\n\004logs\030\006 \003(\0132\026.flyteidl.core.TaskLog\022/" - "\n\013occurred_at\030\007 \001(\0132\032.google.protobuf.Ti" - "mestamp\022\023\n\tinput_uri\030\010 \001(\tH\000\022/\n\ninput_da" - "ta\030\023 \001(\0132\031.flyteidl.core.LiteralMapH\000\022\024\n" - "\noutput_uri\030\t \001(\tH\001\022.\n\005error\030\n \001(\0132\035.fly" - "teidl.core.ExecutionErrorH\001\0220\n\013output_da" - "ta\030\021 \001(\0132\031.flyteidl.core.LiteralMapH\001\022,\n" - "\013custom_info\030\013 \001(\0132\027.google.protobuf.Str" - "uct\022\025\n\rphase_version\030\014 \001(\r\022\016\n\006reason\030\r \001" - "(\t\022\021\n\ttask_type\030\016 \001(\t\0227\n\010metadata\030\020 \001(\0132" - "%.flyteidl.event.TaskExecutionMetadata\022\025" - "\n\revent_version\030\022 \001(\005B\r\n\013input_valueB\017\n\r" - "output_result\"\343\001\n\024ExternalResourceInfo\022\023" - "\n\013external_id\030\001 \001(\t\022\r\n\005index\030\002 \001(\r\022\025\n\rre" + "amic\030\022 \001(\010\022\020\n\010deck_uri\030\023 \001(\t\022/\n\013reported" + "_at\030\025 \001(\0132\032.google.protobuf.TimestampB\r\n" + "\013input_valueB\017\n\routput_resultB\021\n\017target_" + "metadata\"X\n\024WorkflowNodeMetadata\022@\n\014exec" + "ution_id\030\001 \001(\0132*.flyteidl.core.WorkflowE" + "xecutionIdentifier\"\245\002\n\020TaskNodeMetadata\022" + "7\n\014cache_status\030\001 \001(\0162!.flyteidl.core.Ca" + "talogCacheStatus\0223\n\013catalog_key\030\002 \001(\0132\036." + "flyteidl.core.CatalogMetadata\022D\n\022reserva" + "tion_status\030\003 \001(\0162(.flyteidl.core.Catalo" + "gReservation.Status\022\026\n\016checkpoint_uri\030\004 " + "\001(\t\022E\n\020dynamic_workflow\030\020 \001(\0132+.flyteidl" + ".event.DynamicWorkflowNodeMetadata\"\245\001\n\033D" + "ynamicWorkflowNodeMetadata\022%\n\002id\030\001 \001(\0132\031" + ".flyteidl.core.Identifier\022A\n\021compiled_wo" + "rkflow\030\002 \001(\0132&.flyteidl.core.CompiledWor" + "kflowClosure\022\034\n\024dynamic_job_spec_uri\030\003 \001" + "(\t\"Q\n\033ParentTaskExecutionMetadata\0222\n\002id\030" + "\001 \001(\0132&.flyteidl.core.TaskExecutionIdent" + "ifier\".\n\033ParentNodeExecutionMetadata\022\017\n\007" + "node_id\030\001 \001(\t\"\207\006\n\022TaskExecutionEvent\022*\n\007" + "task_id\030\001 \001(\0132\031.flyteidl.core.Identifier" + "\022H\n\030parent_node_execution_id\030\002 \001(\0132&.fly" + "teidl.core.NodeExecutionIdentifier\022\025\n\rre" "try_attempt\030\003 \001(\r\0221\n\005phase\030\004 \001(\0162\".flyte" - "idl.core.TaskExecution.Phase\0227\n\014cache_st" - "atus\030\005 \001(\0162!.flyteidl.core.CatalogCacheS" - "tatus\022$\n\004logs\030\006 \003(\0132\026.flyteidl.core.Task" - "Log\"\?\n\020ResourcePoolInfo\022\030\n\020allocation_to" - "ken\030\001 \001(\t\022\021\n\tnamespace\030\002 \001(\t\"\310\002\n\025TaskExe" - "cutionMetadata\022\026\n\016generated_name\030\001 \001(\t\022@" - "\n\022external_resources\030\002 \003(\0132$.flyteidl.ev" - "ent.ExternalResourceInfo\022<\n\022resource_poo" - "l_info\030\003 \003(\0132 .flyteidl.event.ResourcePo" - "olInfo\022\031\n\021plugin_identifier\030\004 \001(\t\022K\n\016ins" - "tance_class\030\020 \001(\01623.flyteidl.event.TaskE" - "xecutionMetadata.InstanceClass\"/\n\rInstan" - "ceClass\022\013\n\007DEFAULT\020\000\022\021\n\rINTERRUPTIBLE\020\001B" - "7Z5github.com/flyteorg/flyteidl/gen/pb-g" - "o/flyteidl/eventb\006proto3" + "idl.core.TaskExecution.Phase\022\023\n\013producer" + "_id\030\005 \001(\t\022$\n\004logs\030\006 \003(\0132\026.flyteidl.core." + "TaskLog\022/\n\013occurred_at\030\007 \001(\0132\032.google.pr" + "otobuf.Timestamp\022\023\n\tinput_uri\030\010 \001(\tH\000\022/\n" + "\ninput_data\030\023 \001(\0132\031.flyteidl.core.Litera" + "lMapH\000\022\024\n\noutput_uri\030\t \001(\tH\001\022.\n\005error\030\n " + "\001(\0132\035.flyteidl.core.ExecutionErrorH\001\0220\n\013" + "output_data\030\021 \001(\0132\031.flyteidl.core.Litera" + "lMapH\001\022,\n\013custom_info\030\013 \001(\0132\027.google.pro" + "tobuf.Struct\022\025\n\rphase_version\030\014 \001(\r\022\016\n\006r" + "eason\030\r \001(\t\022\021\n\ttask_type\030\016 \001(\t\0227\n\010metada" + "ta\030\020 \001(\0132%.flyteidl.event.TaskExecutionM" + "etadata\022\025\n\revent_version\030\022 \001(\005\022/\n\013report" + "ed_at\030\024 \001(\0132\032.google.protobuf.TimestampB" + "\r\n\013input_valueB\017\n\routput_result\"\343\001\n\024Exte" + "rnalResourceInfo\022\023\n\013external_id\030\001 \001(\t\022\r\n" + "\005index\030\002 \001(\r\022\025\n\rretry_attempt\030\003 \001(\r\0221\n\005p" + "hase\030\004 \001(\0162\".flyteidl.core.TaskExecution" + ".Phase\0227\n\014cache_status\030\005 \001(\0162!.flyteidl." + "core.CatalogCacheStatus\022$\n\004logs\030\006 \003(\0132\026." + "flyteidl.core.TaskLog\"\?\n\020ResourcePoolInf" + "o\022\030\n\020allocation_token\030\001 \001(\t\022\021\n\tnamespace" + "\030\002 \001(\t\"\310\002\n\025TaskExecutionMetadata\022\026\n\016gene" + "rated_name\030\001 \001(\t\022@\n\022external_resources\030\002" + " \003(\0132$.flyteidl.event.ExternalResourceIn" + "fo\022<\n\022resource_pool_info\030\003 \003(\0132 .flyteid" + "l.event.ResourcePoolInfo\022\031\n\021plugin_ident" + "ifier\030\004 \001(\t\022K\n\016instance_class\030\020 \001(\01623.fl" + "yteidl.event.TaskExecutionMetadata.Insta" + "nceClass\"/\n\rInstanceClass\022\013\n\007DEFAULT\020\000\022\021" + "\n\rINTERRUPTIBLE\020\001B7Z5github.com/flyteorg" + "/flyteidl/gen/pb-go/flyteidl/eventb\006prot" + "o3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fevent_2fevent_2eproto = { false, InitDefaults_flyteidl_2fevent_2fevent_2eproto, descriptor_table_protodef_flyteidl_2fevent_2fevent_2eproto, - "flyteidl/event/event.proto", &assign_descriptors_table_flyteidl_2fevent_2fevent_2eproto, 3584, + "flyteidl/event/event.proto", &assign_descriptors_table_flyteidl_2fevent_2fevent_2eproto, 3682, }; void AddDescriptors_flyteidl_2fevent_2fevent_2eproto() { @@ -1395,6 +1400,8 @@ void NodeExecutionEvent::InitAsDefaultInstance() { ::flyteidl::event::ParentTaskExecutionMetadata::internal_default_instance()); ::flyteidl::event::_NodeExecutionEvent_default_instance_._instance.get_mutable()->parent_node_metadata_ = const_cast< ::flyteidl::event::ParentNodeExecutionMetadata*>( ::flyteidl::event::ParentNodeExecutionMetadata::internal_default_instance()); + ::flyteidl::event::_NodeExecutionEvent_default_instance_._instance.get_mutable()->reported_at_ = const_cast< ::google::protobuf::Timestamp*>( + ::google::protobuf::Timestamp::internal_default_instance()); } class NodeExecutionEvent::HasBitSetters { public: @@ -1407,6 +1414,7 @@ class NodeExecutionEvent::HasBitSetters { static const ::flyteidl::event::TaskNodeMetadata& task_node_metadata(const NodeExecutionEvent* msg); static const ::flyteidl::event::ParentTaskExecutionMetadata& parent_task_metadata(const NodeExecutionEvent* msg); static const ::flyteidl::event::ParentNodeExecutionMetadata& parent_node_metadata(const NodeExecutionEvent* msg); + static const ::google::protobuf::Timestamp& reported_at(const NodeExecutionEvent* msg); }; const ::flyteidl::core::NodeExecutionIdentifier& @@ -1445,6 +1453,10 @@ const ::flyteidl::event::ParentNodeExecutionMetadata& NodeExecutionEvent::HasBitSetters::parent_node_metadata(const NodeExecutionEvent* msg) { return *msg->parent_node_metadata_; } +const ::google::protobuf::Timestamp& +NodeExecutionEvent::HasBitSetters::reported_at(const NodeExecutionEvent* msg) { + return *msg->reported_at_; +} void NodeExecutionEvent::clear_id() { if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { delete id_; @@ -1545,6 +1557,12 @@ void NodeExecutionEvent::set_allocated_task_node_metadata(::flyteidl::event::Tas } // @@protoc_insertion_point(field_set_allocated:flyteidl.event.NodeExecutionEvent.task_node_metadata) } +void NodeExecutionEvent::clear_reported_at() { + if (GetArenaNoVirtual() == nullptr && reported_at_ != nullptr) { + delete reported_at_; + } + reported_at_ = nullptr; +} #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int NodeExecutionEvent::kIdFieldNumber; const int NodeExecutionEvent::kProducerIdFieldNumber; @@ -1566,6 +1584,7 @@ const int NodeExecutionEvent::kEventVersionFieldNumber; const int NodeExecutionEvent::kIsParentFieldNumber; const int NodeExecutionEvent::kIsDynamicFieldNumber; const int NodeExecutionEvent::kDeckUriFieldNumber; +const int NodeExecutionEvent::kReportedAtFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 NodeExecutionEvent::NodeExecutionEvent() @@ -1617,6 +1636,11 @@ NodeExecutionEvent::NodeExecutionEvent(const NodeExecutionEvent& from) } else { parent_node_metadata_ = nullptr; } + if (from.has_reported_at()) { + reported_at_ = new ::google::protobuf::Timestamp(*from.reported_at_); + } else { + reported_at_ = nullptr; + } ::memcpy(&phase_, &from.phase_, static_cast(reinterpret_cast(&is_dynamic_) - reinterpret_cast(&phase_)) + sizeof(is_dynamic_)); @@ -1700,6 +1724,7 @@ void NodeExecutionEvent::SharedDtor() { if (this != internal_default_instance()) delete occurred_at_; if (this != internal_default_instance()) delete parent_task_metadata_; if (this != internal_default_instance()) delete parent_node_metadata_; + if (this != internal_default_instance()) delete reported_at_; if (has_input_value()) { clear_input_value(); } @@ -1806,6 +1831,10 @@ void NodeExecutionEvent::Clear() { delete parent_node_metadata_; } parent_node_metadata_ = nullptr; + if (GetArenaNoVirtual() == nullptr && reported_at_ != nullptr) { + delete reported_at_; + } + reported_at_ = nullptr; ::memset(&phase_, 0, static_cast( reinterpret_cast(&is_dynamic_) - reinterpret_cast(&phase_)) + sizeof(is_dynamic_)); @@ -2086,6 +2115,19 @@ const char* NodeExecutionEvent::_InternalParse(const char* begin, const char* en {parser_till_end, object}, ptr - size, ptr)); break; } + // .google.protobuf.Timestamp reported_at = 21; + case 21: { + if (static_cast<::google::protobuf::uint8>(tag) != 170) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::google::protobuf::Timestamp::_InternalParse; + object = msg->mutable_reported_at(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -2377,6 +2419,17 @@ bool NodeExecutionEvent::MergePartialFromCodedStream( break; } + // .google.protobuf.Timestamp reported_at = 21; + case 21: { + if (static_cast< ::google::protobuf::uint8>(tag) == (170 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_reported_at())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -2549,6 +2602,12 @@ void NodeExecutionEvent::SerializeWithCachedSizes( 20, HasBitSetters::input_data(this), output); } + // .google.protobuf.Timestamp reported_at = 21; + if (this->has_reported_at()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 21, HasBitSetters::reported_at(this), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -2723,6 +2782,13 @@ ::google::protobuf::uint8* NodeExecutionEvent::InternalSerializeWithCachedSizesT 20, HasBitSetters::input_data(this), target); } + // .google.protobuf.Timestamp reported_at = 21; + if (this->has_reported_at()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 21, HasBitSetters::reported_at(this), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -2807,6 +2873,13 @@ size_t NodeExecutionEvent::ByteSizeLong() const { *parent_node_metadata_); } + // .google.protobuf.Timestamp reported_at = 21; + if (this->has_reported_at()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *reported_at_); + } + // .flyteidl.core.NodeExecution.Phase phase = 3; if (this->phase() != 0) { total_size += 1 + @@ -2953,6 +3026,9 @@ void NodeExecutionEvent::MergeFrom(const NodeExecutionEvent& from) { if (from.has_parent_node_metadata()) { mutable_parent_node_metadata()->::flyteidl::event::ParentNodeExecutionMetadata::MergeFrom(from.parent_node_metadata()); } + if (from.has_reported_at()) { + mutable_reported_at()->::google::protobuf::Timestamp::MergeFrom(from.reported_at()); + } if (from.phase() != 0) { set_phase(from.phase()); } @@ -3049,6 +3125,7 @@ void NodeExecutionEvent::InternalSwap(NodeExecutionEvent* other) { swap(occurred_at_, other->occurred_at_); swap(parent_task_metadata_, other->parent_task_metadata_); swap(parent_node_metadata_, other->parent_node_metadata_); + swap(reported_at_, other->reported_at_); swap(phase_, other->phase_); swap(event_version_, other->event_version_); swap(is_parent_, other->is_parent_); @@ -4951,6 +5028,8 @@ void TaskExecutionEvent::InitAsDefaultInstance() { ::google::protobuf::Struct::internal_default_instance()); ::flyteidl::event::_TaskExecutionEvent_default_instance_._instance.get_mutable()->metadata_ = const_cast< ::flyteidl::event::TaskExecutionMetadata*>( ::flyteidl::event::TaskExecutionMetadata::internal_default_instance()); + ::flyteidl::event::_TaskExecutionEvent_default_instance_._instance.get_mutable()->reported_at_ = const_cast< ::google::protobuf::Timestamp*>( + ::google::protobuf::Timestamp::internal_default_instance()); } class TaskExecutionEvent::HasBitSetters { public: @@ -4962,6 +5041,7 @@ class TaskExecutionEvent::HasBitSetters { static const ::flyteidl::core::LiteralMap& output_data(const TaskExecutionEvent* msg); static const ::google::protobuf::Struct& custom_info(const TaskExecutionEvent* msg); static const ::flyteidl::event::TaskExecutionMetadata& metadata(const TaskExecutionEvent* msg); + static const ::google::protobuf::Timestamp& reported_at(const TaskExecutionEvent* msg); }; const ::flyteidl::core::Identifier& @@ -4996,6 +5076,10 @@ const ::flyteidl::event::TaskExecutionMetadata& TaskExecutionEvent::HasBitSetters::metadata(const TaskExecutionEvent* msg) { return *msg->metadata_; } +const ::google::protobuf::Timestamp& +TaskExecutionEvent::HasBitSetters::reported_at(const TaskExecutionEvent* msg) { + return *msg->reported_at_; +} void TaskExecutionEvent::clear_task_id() { if (GetArenaNoVirtual() == nullptr && task_id_ != nullptr) { delete task_id_; @@ -5083,6 +5167,12 @@ void TaskExecutionEvent::clear_custom_info() { } custom_info_ = nullptr; } +void TaskExecutionEvent::clear_reported_at() { + if (GetArenaNoVirtual() == nullptr && reported_at_ != nullptr) { + delete reported_at_; + } + reported_at_ = nullptr; +} #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int TaskExecutionEvent::kTaskIdFieldNumber; const int TaskExecutionEvent::kParentNodeExecutionIdFieldNumber; @@ -5102,6 +5192,7 @@ const int TaskExecutionEvent::kReasonFieldNumber; const int TaskExecutionEvent::kTaskTypeFieldNumber; const int TaskExecutionEvent::kMetadataFieldNumber; const int TaskExecutionEvent::kEventVersionFieldNumber; +const int TaskExecutionEvent::kReportedAtFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 TaskExecutionEvent::TaskExecutionEvent() @@ -5151,6 +5242,11 @@ TaskExecutionEvent::TaskExecutionEvent(const TaskExecutionEvent& from) } else { metadata_ = nullptr; } + if (from.has_reported_at()) { + reported_at_ = new ::google::protobuf::Timestamp(*from.reported_at_); + } else { + reported_at_ = nullptr; + } ::memcpy(&retry_attempt_, &from.retry_attempt_, static_cast(reinterpret_cast(&event_version_) - reinterpret_cast(&retry_attempt_)) + sizeof(event_version_)); @@ -5216,6 +5312,7 @@ void TaskExecutionEvent::SharedDtor() { if (this != internal_default_instance()) delete occurred_at_; if (this != internal_default_instance()) delete custom_info_; if (this != internal_default_instance()) delete metadata_; + if (this != internal_default_instance()) delete reported_at_; if (has_input_value()) { clear_input_value(); } @@ -5304,6 +5401,10 @@ void TaskExecutionEvent::Clear() { delete metadata_; } metadata_ = nullptr; + if (GetArenaNoVirtual() == nullptr && reported_at_ != nullptr) { + delete reported_at_; + } + reported_at_ = nullptr; ::memset(&retry_attempt_, 0, static_cast( reinterpret_cast(&event_version_) - reinterpret_cast(&retry_attempt_)) + sizeof(event_version_)); @@ -5554,6 +5655,19 @@ const char* TaskExecutionEvent::_InternalParse(const char* begin, const char* en {parser_till_end, object}, ptr - size, ptr)); break; } + // .google.protobuf.Timestamp reported_at = 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 = ::google::protobuf::Timestamp::_InternalParse; + object = msg->mutable_reported_at(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -5815,6 +5929,17 @@ bool TaskExecutionEvent::MergePartialFromCodedStream( break; } + // .google.protobuf.Timestamp reported_at = 20; + case 20: { + if (static_cast< ::google::protobuf::uint8>(tag) == (162 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_reported_at())); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -5970,6 +6095,12 @@ void TaskExecutionEvent::SerializeWithCachedSizes( 19, HasBitSetters::input_data(this), output); } + // .google.protobuf.Timestamp reported_at = 20; + if (this->has_reported_at()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 20, HasBitSetters::reported_at(this), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -6123,6 +6254,13 @@ ::google::protobuf::uint8* TaskExecutionEvent::InternalSerializeWithCachedSizesT 19, HasBitSetters::input_data(this), target); } + // .google.protobuf.Timestamp reported_at = 20; + if (this->has_reported_at()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 20, HasBitSetters::reported_at(this), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -6211,6 +6349,13 @@ size_t TaskExecutionEvent::ByteSizeLong() const { *metadata_); } + // .google.protobuf.Timestamp reported_at = 20; + if (this->has_reported_at()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *reported_at_); + } + // uint32 retry_attempt = 3; if (this->retry_attempt() != 0) { total_size += 1 + @@ -6338,6 +6483,9 @@ void TaskExecutionEvent::MergeFrom(const TaskExecutionEvent& from) { if (from.has_metadata()) { mutable_metadata()->::flyteidl::event::TaskExecutionMetadata::MergeFrom(from.metadata()); } + if (from.has_reported_at()) { + mutable_reported_at()->::google::protobuf::Timestamp::MergeFrom(from.reported_at()); + } if (from.retry_attempt() != 0) { set_retry_attempt(from.retry_attempt()); } @@ -6419,6 +6567,7 @@ void TaskExecutionEvent::InternalSwap(TaskExecutionEvent* other) { swap(occurred_at_, other->occurred_at_); swap(custom_info_, other->custom_info_); swap(metadata_, other->metadata_); + swap(reported_at_, other->reported_at_); swap(retry_attempt_, other->retry_attempt_); swap(phase_, other->phase_); swap(phase_version_, other->phase_version_); diff --git a/gen/pb-cpp/flyteidl/event/event.pb.h b/gen/pb-cpp/flyteidl/event/event.pb.h index b9094efe9..ef79dac7d 100644 --- a/gen/pb-cpp/flyteidl/event/event.pb.h +++ b/gen/pb-cpp/flyteidl/event/event.pb.h @@ -559,6 +559,15 @@ class NodeExecutionEvent final : ::flyteidl::event::ParentNodeExecutionMetadata* mutable_parent_node_metadata(); void set_allocated_parent_node_metadata(::flyteidl::event::ParentNodeExecutionMetadata* parent_node_metadata); + // .google.protobuf.Timestamp reported_at = 21; + bool has_reported_at() const; + void clear_reported_at(); + static const int kReportedAtFieldNumber = 21; + const ::google::protobuf::Timestamp& reported_at() const; + ::google::protobuf::Timestamp* release_reported_at(); + ::google::protobuf::Timestamp* mutable_reported_at(); + void set_allocated_reported_at(::google::protobuf::Timestamp* reported_at); + // .flyteidl.core.NodeExecution.Phase phase = 3; void clear_phase(); static const int kPhaseFieldNumber = 3; @@ -698,6 +707,7 @@ class NodeExecutionEvent final : ::google::protobuf::Timestamp* occurred_at_; ::flyteidl::event::ParentTaskExecutionMetadata* parent_task_metadata_; ::flyteidl::event::ParentNodeExecutionMetadata* parent_node_metadata_; + ::google::protobuf::Timestamp* reported_at_; int phase_; ::google::protobuf::int32 event_version_; bool is_parent_; @@ -1576,6 +1586,15 @@ class TaskExecutionEvent final : ::flyteidl::event::TaskExecutionMetadata* mutable_metadata(); void set_allocated_metadata(::flyteidl::event::TaskExecutionMetadata* metadata); + // .google.protobuf.Timestamp reported_at = 20; + bool has_reported_at() const; + void clear_reported_at(); + static const int kReportedAtFieldNumber = 20; + const ::google::protobuf::Timestamp& reported_at() const; + ::google::protobuf::Timestamp* release_reported_at(); + ::google::protobuf::Timestamp* mutable_reported_at(); + void set_allocated_reported_at(::google::protobuf::Timestamp* reported_at); + // uint32 retry_attempt = 3; void clear_retry_attempt(); static const int kRetryAttemptFieldNumber = 3; @@ -1690,6 +1709,7 @@ class TaskExecutionEvent final : ::google::protobuf::Timestamp* occurred_at_; ::google::protobuf::Struct* custom_info_; ::flyteidl::event::TaskExecutionMetadata* metadata_; + ::google::protobuf::Timestamp* reported_at_; ::google::protobuf::uint32 retry_attempt_; int phase_; ::google::protobuf::uint32 phase_version_; @@ -3429,6 +3449,52 @@ inline void NodeExecutionEvent::set_allocated_deck_uri(::std::string* deck_uri) // @@protoc_insertion_point(field_set_allocated:flyteidl.event.NodeExecutionEvent.deck_uri) } +// .google.protobuf.Timestamp reported_at = 21; +inline bool NodeExecutionEvent::has_reported_at() const { + return this != internal_default_instance() && reported_at_ != nullptr; +} +inline const ::google::protobuf::Timestamp& NodeExecutionEvent::reported_at() const { + const ::google::protobuf::Timestamp* p = reported_at_; + // @@protoc_insertion_point(field_get:flyteidl.event.NodeExecutionEvent.reported_at) + return p != nullptr ? *p : *reinterpret_cast( + &::google::protobuf::_Timestamp_default_instance_); +} +inline ::google::protobuf::Timestamp* NodeExecutionEvent::release_reported_at() { + // @@protoc_insertion_point(field_release:flyteidl.event.NodeExecutionEvent.reported_at) + + ::google::protobuf::Timestamp* temp = reported_at_; + reported_at_ = nullptr; + return temp; +} +inline ::google::protobuf::Timestamp* NodeExecutionEvent::mutable_reported_at() { + + if (reported_at_ == nullptr) { + auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArenaNoVirtual()); + reported_at_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.event.NodeExecutionEvent.reported_at) + return reported_at_; +} +inline void NodeExecutionEvent::set_allocated_reported_at(::google::protobuf::Timestamp* reported_at) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(reported_at_); + } + if (reported_at) { + ::google::protobuf::Arena* submessage_arena = + reinterpret_cast<::google::protobuf::MessageLite*>(reported_at)->GetArena(); + if (message_arena != submessage_arena) { + reported_at = ::google::protobuf::internal::GetOwnedMessage( + message_arena, reported_at, submessage_arena); + } + + } else { + + } + reported_at_ = reported_at; + // @@protoc_insertion_point(field_set_allocated:flyteidl.event.NodeExecutionEvent.reported_at) +} + inline bool NodeExecutionEvent::has_input_value() const { return input_value_case() != INPUT_VALUE_NOT_SET; } @@ -4707,6 +4773,52 @@ inline void TaskExecutionEvent::set_event_version(::google::protobuf::int32 valu // @@protoc_insertion_point(field_set:flyteidl.event.TaskExecutionEvent.event_version) } +// .google.protobuf.Timestamp reported_at = 20; +inline bool TaskExecutionEvent::has_reported_at() const { + return this != internal_default_instance() && reported_at_ != nullptr; +} +inline const ::google::protobuf::Timestamp& TaskExecutionEvent::reported_at() const { + const ::google::protobuf::Timestamp* p = reported_at_; + // @@protoc_insertion_point(field_get:flyteidl.event.TaskExecutionEvent.reported_at) + return p != nullptr ? *p : *reinterpret_cast( + &::google::protobuf::_Timestamp_default_instance_); +} +inline ::google::protobuf::Timestamp* TaskExecutionEvent::release_reported_at() { + // @@protoc_insertion_point(field_release:flyteidl.event.TaskExecutionEvent.reported_at) + + ::google::protobuf::Timestamp* temp = reported_at_; + reported_at_ = nullptr; + return temp; +} +inline ::google::protobuf::Timestamp* TaskExecutionEvent::mutable_reported_at() { + + if (reported_at_ == nullptr) { + auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArenaNoVirtual()); + reported_at_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.event.TaskExecutionEvent.reported_at) + return reported_at_; +} +inline void TaskExecutionEvent::set_allocated_reported_at(::google::protobuf::Timestamp* reported_at) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(reported_at_); + } + if (reported_at) { + ::google::protobuf::Arena* submessage_arena = + reinterpret_cast<::google::protobuf::MessageLite*>(reported_at)->GetArena(); + if (message_arena != submessage_arena) { + reported_at = ::google::protobuf::internal::GetOwnedMessage( + message_arena, reported_at, submessage_arena); + } + + } else { + + } + reported_at_ = reported_at; + // @@protoc_insertion_point(field_set_allocated:flyteidl.event.TaskExecutionEvent.reported_at) +} + inline bool TaskExecutionEvent::has_input_value() const { return input_value_case() != INPUT_VALUE_NOT_SET; } diff --git a/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc b/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc index e3d019e88..cf8c19b8a 100644 --- a/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc +++ b/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc @@ -72,6 +72,7 @@ static const char* AdminService_method_names[] = { "/flyteidl.service.AdminService/GetVersion", "/flyteidl.service.AdminService/GetDescriptionEntity", "/flyteidl.service.AdminService/ListDescriptionEntities", + "/flyteidl.service.AdminService/GetExecutionMetrics", }; std::unique_ptr< AdminService::Stub> AdminService::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) { @@ -133,6 +134,7 @@ AdminService::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& chann , rpcmethod_GetVersion_(AdminService_method_names[49], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_GetDescriptionEntity_(AdminService_method_names[50], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_ListDescriptionEntities_(AdminService_method_names[51], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetExecutionMetrics_(AdminService_method_names[52], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) {} ::grpc::Status AdminService::Stub::CreateTask(::grpc::ClientContext* context, const ::flyteidl::admin::TaskCreateRequest& request, ::flyteidl::admin::TaskCreateResponse* response) { @@ -1591,6 +1593,34 @@ ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>* Ad return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::DescriptionEntityList>::Create(channel_.get(), cq, rpcmethod_ListDescriptionEntities_, context, request, false); } +::grpc::Status AdminService::Stub::GetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response) { + return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_GetExecutionMetrics_, context, request, response); +} + +void AdminService::Stub::experimental_async::GetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetExecutionMetrics_, context, request, response, std::move(f)); +} + +void AdminService::Stub::experimental_async::GetExecutionMetrics(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetExecutionMetrics_, context, request, response, std::move(f)); +} + +void AdminService::Stub::experimental_async::GetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetExecutionMetrics_, context, request, response, reactor); +} + +void AdminService::Stub::experimental_async::GetExecutionMetrics(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetExecutionMetrics_, context, request, response, reactor); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>* AdminService::Stub::AsyncGetExecutionMetricsRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>::Create(channel_.get(), cq, rpcmethod_GetExecutionMetrics_, context, request, true); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>* AdminService::Stub::PrepareAsyncGetExecutionMetricsRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>::Create(channel_.get(), cq, rpcmethod_GetExecutionMetrics_, context, request, false); +} + AdminService::Service::Service() { AddMethod(new ::grpc::internal::RpcServiceMethod( AdminService_method_names[0], @@ -1852,6 +1882,11 @@ AdminService::Service::Service() { ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::DescriptionEntityListRequest, ::flyteidl::admin::DescriptionEntityList>( std::mem_fn(&AdminService::Service::ListDescriptionEntities), this))); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AdminService_method_names[52], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::WorkflowExecutionGetMetricsRequest, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>( + std::mem_fn(&AdminService::Service::GetExecutionMetrics), this))); } AdminService::Service::~Service() { @@ -2221,6 +2256,13 @@ ::grpc::Status AdminService::Service::ListDescriptionEntities(::grpc::ServerCont return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } +::grpc::Status AdminService::Service::GetExecutionMetrics(::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* 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 57ff8aa59..77f3dc148 100644 --- a/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h +++ b/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h @@ -471,6 +471,14 @@ class AdminService final { std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntityList>> PrepareAsyncListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntityList>>(PrepareAsyncListDescriptionEntitiesRaw(context, request, cq)); } + // Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. + virtual ::grpc::Status GetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response) = 0; + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>> AsyncGetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>>(AsyncGetExecutionMetricsRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>> PrepareAsyncGetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>>(PrepareAsyncGetExecutionMetricsRaw(context, request, cq)); + } class experimental_async_interface { public: virtual ~experimental_async_interface() {} @@ -739,6 +747,11 @@ class AdminService final { virtual void ListDescriptionEntities(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntityList* response, std::function) = 0; virtual void ListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; virtual void ListDescriptionEntities(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + // Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. + virtual void GetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, std::function) = 0; + virtual void GetExecutionMetrics(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, std::function) = 0; + virtual void GetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + virtual void GetExecutionMetrics(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; }; virtual class experimental_async_interface* experimental_async() { return nullptr; } private: @@ -846,6 +859,8 @@ class AdminService final { virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntity>* PrepareAsyncGetDescriptionEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntityList>* AsyncListDescriptionEntitiesRaw(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::DescriptionEntityList>* PrepareAsyncListDescriptionEntitiesRaw(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>* AsyncGetExecutionMetricsRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>* PrepareAsyncGetExecutionMetricsRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::grpc::CompletionQueue* cq) = 0; }; class Stub final : public StubInterface { public: @@ -1214,6 +1229,13 @@ class AdminService final { std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>> PrepareAsyncListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>>(PrepareAsyncListDescriptionEntitiesRaw(context, request, cq)); } + ::grpc::Status GetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response) override; + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>> AsyncGetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>>(AsyncGetExecutionMetricsRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>> PrepareAsyncGetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>>(PrepareAsyncGetExecutionMetricsRaw(context, request, cq)); + } class experimental_async final : public StubInterface::experimental_async_interface { public: @@ -1425,6 +1447,10 @@ class AdminService final { void ListDescriptionEntities(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntityList* response, std::function) override; void ListDescriptionEntities(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; void ListDescriptionEntities(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void GetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, std::function) override; + void GetExecutionMetrics(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, std::function) override; + void GetExecutionMetrics(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void GetExecutionMetrics(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; private: friend class Stub; explicit experimental_async(Stub* stub): stub_(stub) { } @@ -1540,6 +1566,8 @@ class AdminService final { ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntity>* PrepareAsyncGetDescriptionEntityRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ObjectGetRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>* AsyncListDescriptionEntitiesRaw(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::DescriptionEntityList>* PrepareAsyncListDescriptionEntitiesRaw(::grpc::ClientContext* context, const ::flyteidl::admin::DescriptionEntityListRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>* AsyncGetExecutionMetricsRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>* PrepareAsyncGetExecutionMetricsRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest& request, ::grpc::CompletionQueue* cq) override; const ::grpc::internal::RpcMethod rpcmethod_CreateTask_; const ::grpc::internal::RpcMethod rpcmethod_GetTask_; const ::grpc::internal::RpcMethod rpcmethod_ListTaskIds_; @@ -1592,6 +1620,7 @@ class AdminService final { const ::grpc::internal::RpcMethod rpcmethod_GetVersion_; const ::grpc::internal::RpcMethod rpcmethod_GetDescriptionEntity_; const ::grpc::internal::RpcMethod rpcmethod_ListDescriptionEntities_; + const ::grpc::internal::RpcMethod rpcmethod_GetExecutionMetrics_; }; static std::unique_ptr NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions()); @@ -1708,6 +1737,8 @@ class AdminService final { virtual ::grpc::Status GetDescriptionEntity(::grpc::ServerContext* context, const ::flyteidl::admin::ObjectGetRequest* request, ::flyteidl::admin::DescriptionEntity* response); // Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. virtual ::grpc::Status ListDescriptionEntities(::grpc::ServerContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response); + // Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. + virtual ::grpc::Status GetExecutionMetrics(::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response); }; template class WithAsyncMethod_CreateTask : public BaseClass { @@ -2749,7 +2780,27 @@ class AdminService final { ::grpc::Service::RequestAsyncUnary(51, context, request, response, new_call_cq, notification_cq, tag); } }; - typedef WithAsyncMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > AsyncService; + template + class WithAsyncMethod_GetExecutionMetrics : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithAsyncMethod_GetExecutionMetrics() { + ::grpc::Service::MarkMethodAsync(52); + } + ~WithAsyncMethod_GetExecutionMetrics() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetExecutionMetrics(::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetExecutionMetrics(::grpc::ServerContext* context, ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(52, context, request, response, new_call_cq, notification_cq, tag); + } + }; + typedef WithAsyncMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > AsyncService; template class ExperimentalWithCallbackMethod_CreateTask : public BaseClass { private: @@ -4362,7 +4413,38 @@ class AdminService final { } virtual void ListDescriptionEntities(::grpc::ServerContext* context, const ::flyteidl::admin::DescriptionEntityListRequest* request, ::flyteidl::admin::DescriptionEntityList* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; - typedef ExperimentalWithCallbackMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ExperimentalCallbackService; + template + class ExperimentalWithCallbackMethod_GetExecutionMetrics : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithCallbackMethod_GetExecutionMetrics() { + ::grpc::Service::experimental().MarkMethodCallback(52, + new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowExecutionGetMetricsRequest, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>( + [this](::grpc::ServerContext* context, + const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, + ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + return this->GetExecutionMetrics(context, request, response, controller); + })); + } + void SetMessageAllocatorFor_GetExecutionMetrics( + ::grpc::experimental::MessageAllocator< ::flyteidl::admin::WorkflowExecutionGetMetricsRequest, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>* allocator) { + static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowExecutionGetMetricsRequest, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>*>( + ::grpc::Service::experimental().GetHandler(52)) + ->SetMessageAllocator(allocator); + } + ~ExperimentalWithCallbackMethod_GetExecutionMetrics() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetExecutionMetrics(::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void GetExecutionMetrics(::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + typedef ExperimentalWithCallbackMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ExperimentalCallbackService; template class WithGenericMethod_CreateTask : public BaseClass { private: @@ -5248,6 +5330,23 @@ class AdminService final { } }; template + class WithGenericMethod_GetExecutionMetrics : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithGenericMethod_GetExecutionMetrics() { + ::grpc::Service::MarkMethodGeneric(52); + } + ~WithGenericMethod_GetExecutionMetrics() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetExecutionMetrics(::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template class WithRawMethod_CreateTask : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} @@ -6288,6 +6387,26 @@ class AdminService final { } }; template + class WithRawMethod_GetExecutionMetrics : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithRawMethod_GetExecutionMetrics() { + ::grpc::Service::MarkMethodRaw(52); + } + ~WithRawMethod_GetExecutionMetrics() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetExecutionMetrics(::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestGetExecutionMetrics(::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(52, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template class ExperimentalWithRawCallbackMethod_CreateTask : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} @@ -7588,6 +7707,31 @@ class AdminService final { virtual void ListDescriptionEntities(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; template + class ExperimentalWithRawCallbackMethod_GetExecutionMetrics : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithRawCallbackMethod_GetExecutionMetrics() { + ::grpc::Service::experimental().MarkMethodRawCallback(52, + new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( + [this](::grpc::ServerContext* context, + const ::grpc::ByteBuffer* request, + ::grpc::ByteBuffer* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + this->GetExecutionMetrics(context, request, response, controller); + })); + } + ~ExperimentalWithRawCallbackMethod_GetExecutionMetrics() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status GetExecutionMetrics(::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void GetExecutionMetrics(::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) {} @@ -8627,9 +8771,29 @@ class AdminService final { // replace default version of method with streamed unary virtual ::grpc::Status StreamedListDescriptionEntities(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::admin::DescriptionEntityListRequest,::flyteidl::admin::DescriptionEntityList>* server_unary_streamer) = 0; }; - typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedUnaryService; + template + class WithStreamedUnaryMethod_GetExecutionMetrics : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithStreamedUnaryMethod_GetExecutionMetrics() { + ::grpc::Service::MarkMethodStreamed(52, + new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::WorkflowExecutionGetMetricsRequest, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse>(std::bind(&WithStreamedUnaryMethod_GetExecutionMetrics::StreamedGetExecutionMetrics, this, std::placeholders::_1, std::placeholders::_2))); + } + ~WithStreamedUnaryMethod_GetExecutionMetrics() override { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status GetExecutionMetrics(::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetMetricsRequest* request, ::flyteidl::admin::WorkflowExecutionGetMetricsResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedGetExecutionMetrics(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::admin::WorkflowExecutionGetMetricsRequest,::flyteidl::admin::WorkflowExecutionGetMetricsResponse>* 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 6d96c762a..c1b490d2f 100644 --- a/gen/pb-cpp/flyteidl/service/admin.pb.cc +++ b/gen/pb-cpp/flyteidl/service/admin.pb.cc @@ -52,263 +52,269 @@ const char descriptor_table_protodef_flyteidl_2fservice_2fadmin_2eproto[] = "admin/task_execution.proto\032\034flyteidl/adm" "in/version.proto\032\033flyteidl/admin/common." "proto\032\'flyteidl/admin/description_entity" - ".proto\032\036flyteidl/core/identifier.proto2\274" - "L\n\014AdminService\022m\n\nCreateTask\022!.flyteidl" - ".admin.TaskCreateRequest\032\".flyteidl.admi" - "n.TaskCreateResponse\"\030\202\323\344\223\002\022\"\r/api/v1/ta" - "sks:\001*\022\210\001\n\007GetTask\022 .flyteidl.admin.Obje" - "ctGetRequest\032\024.flyteidl.admin.Task\"E\202\323\344\223" - "\002\?\022=/api/v1/tasks/{id.project}/{id.domai" - "n}/{id.name}/{id.version}\022\227\001\n\013ListTaskId" - "s\0220.flyteidl.admin.NamedEntityIdentifier" - "ListRequest\032).flyteidl.admin.NamedEntity" - "IdentifierList\"+\202\323\344\223\002%\022#/api/v1/task_ids" - "/{project}/{domain}\022\256\001\n\tListTasks\022#.flyt" - "eidl.admin.ResourceListRequest\032\030.flyteid" - "l.admin.TaskList\"b\202\323\344\223\002\\\0220/api/v1/tasks/" - "{id.project}/{id.domain}/{id.name}Z(\022&/a" - "pi/v1/tasks/{id.project}/{id.domain}\022}\n\016" - "CreateWorkflow\022%.flyteidl.admin.Workflow" - "CreateRequest\032&.flyteidl.admin.WorkflowC" - "reateResponse\"\034\202\323\344\223\002\026\"\021/api/v1/workflows" - ":\001*\022\224\001\n\013GetWorkflow\022 .flyteidl.admin.Obj" - "ectGetRequest\032\030.flyteidl.admin.Workflow\"" - "I\202\323\344\223\002C\022A/api/v1/workflows/{id.project}/" - "{id.domain}/{id.name}/{id.version}\022\237\001\n\017L" - "istWorkflowIds\0220.flyteidl.admin.NamedEnt" - "ityIdentifierListRequest\032).flyteidl.admi" - "n.NamedEntityIdentifierList\"/\202\323\344\223\002)\022\'/ap" - "i/v1/workflow_ids/{project}/{domain}\022\276\001\n" - "\rListWorkflows\022#.flyteidl.admin.Resource" - "ListRequest\032\034.flyteidl.admin.WorkflowLis" - "t\"j\202\323\344\223\002d\0224/api/v1/workflows/{id.project" - "}/{id.domain}/{id.name}Z,\022*/api/v1/workf" - "lows/{id.project}/{id.domain}\022\206\001\n\020Create" - "LaunchPlan\022\'.flyteidl.admin.LaunchPlanCr" - "eateRequest\032(.flyteidl.admin.LaunchPlanC" - "reateResponse\"\037\202\323\344\223\002\031\"\024/api/v1/launch_pl" - "ans:\001*\022\233\001\n\rGetLaunchPlan\022 .flyteidl.admi" - "n.ObjectGetRequest\032\032.flyteidl.admin.Laun" - "chPlan\"L\202\323\344\223\002F\022D/api/v1/launch_plans/{id" - ".project}/{id.domain}/{id.name}/{id.vers" - "ion}\022\242\001\n\023GetActiveLaunchPlan\022\'.flyteidl." - "admin.ActiveLaunchPlanRequest\032\032.flyteidl" - ".admin.LaunchPlan\"F\202\323\344\223\002@\022>/api/v1/activ" - "e_launch_plans/{id.project}/{id.domain}/" - "{id.name}\022\234\001\n\025ListActiveLaunchPlans\022+.fl" - "yteidl.admin.ActiveLaunchPlanListRequest" - "\032\036.flyteidl.admin.LaunchPlanList\"6\202\323\344\223\0020" - "\022./api/v1/active_launch_plans/{project}/" - "{domain}\022\244\001\n\021ListLaunchPlanIds\0220.flyteid" + ".proto\032\036flyteidl/core/identifier.proto\032\033" + "flyteidl/core/metrics.proto2\204N\n\014AdminSer" + "vice\022m\n\nCreateTask\022!.flyteidl.admin.Task" + "CreateRequest\032\".flyteidl.admin.TaskCreat" + "eResponse\"\030\202\323\344\223\002\022\"\r/api/v1/tasks:\001*\022\210\001\n\007" + "GetTask\022 .flyteidl.admin.ObjectGetReques" + "t\032\024.flyteidl.admin.Task\"E\202\323\344\223\002\?\022=/api/v1" + "/tasks/{id.project}/{id.domain}/{id.name" + "}/{id.version}\022\227\001\n\013ListTaskIds\0220.flyteid" "l.admin.NamedEntityIdentifierListRequest" "\032).flyteidl.admin.NamedEntityIdentifierL" - "ist\"2\202\323\344\223\002,\022*/api/v1/launch_plan_ids/{pr" - "oject}/{domain}\022\310\001\n\017ListLaunchPlans\022#.fl" - "yteidl.admin.ResourceListRequest\032\036.flyte" - "idl.admin.LaunchPlanList\"p\202\323\344\223\002j\0227/api/v" - "1/launch_plans/{id.project}/{id.domain}/" - "{id.name}Z/\022-/api/v1/launch_plans/{id.pr" - "oject}/{id.domain}\022\266\001\n\020UpdateLaunchPlan\022" - "\'.flyteidl.admin.LaunchPlanUpdateRequest" - "\032(.flyteidl.admin.LaunchPlanUpdateRespon" - "se\"O\202\323\344\223\002I\032D/api/v1/launch_plans/{id.pro" - "ject}/{id.domain}/{id.name}/{id.version}" - ":\001*\022\201\001\n\017CreateExecution\022&.flyteidl.admin" - ".ExecutionCreateRequest\032\'.flyteidl.admin" - ".ExecutionCreateResponse\"\035\202\323\344\223\002\027\"\022/api/v" - "1/executions:\001*\022\216\001\n\021RelaunchExecution\022(." - "flyteidl.admin.ExecutionRelaunchRequest\032" - "\'.flyteidl.admin.ExecutionCreateResponse" - "\"&\202\323\344\223\002 \"\033/api/v1/executions/relaunch:\001*" - "\022\213\001\n\020RecoverExecution\022\'.flyteidl.admin.E" - "xecutionRecoverRequest\032\'.flyteidl.admin." - "ExecutionCreateResponse\"%\202\323\344\223\002\037\"\032/api/v1" - "/executions/recover:\001*\022\225\001\n\014GetExecution\022" - "+.flyteidl.admin.WorkflowExecutionGetReq" - "uest\032\031.flyteidl.admin.Execution\"=\202\323\344\223\0027\022" - "5/api/v1/executions/{id.project}/{id.dom" - "ain}/{id.name}\022\244\001\n\017UpdateExecution\022&.fly" - "teidl.admin.ExecutionUpdateRequest\032\'.fly" - "teidl.admin.ExecutionUpdateResponse\"@\202\323\344" - "\223\002:\0325/api/v1/executions/{id.project}/{id" - ".domain}/{id.name}:\001*\022\271\001\n\020GetExecutionDa" - "ta\022/.flyteidl.admin.WorkflowExecutionGet" - "DataRequest\0320.flyteidl.admin.WorkflowExe" - "cutionGetDataResponse\"B\202\323\344\223\002<\022:/api/v1/d" - "ata/executions/{id.project}/{id.domain}/" - "{id.name}\022\211\001\n\016ListExecutions\022#.flyteidl." - "admin.ResourceListRequest\032\035.flyteidl.adm" - "in.ExecutionList\"3\202\323\344\223\002-\022+/api/v1/execut" - "ions/{id.project}/{id.domain}\022\255\001\n\022Termin" - "ateExecution\022).flyteidl.admin.ExecutionT" - "erminateRequest\032*.flyteidl.admin.Executi" - "onTerminateResponse\"@\202\323\344\223\002:*5/api/v1/exe" - "cutions/{id.project}/{id.domain}/{id.nam" - "e}:\001*\022\322\001\n\020GetNodeExecution\022\'.flyteidl.ad" - "min.NodeExecutionGetRequest\032\035.flyteidl.a" - "dmin.NodeExecution\"v\202\323\344\223\002p\022n/api/v1/node" - "_executions/{id.execution_id.project}/{i" - "d.execution_id.domain}/{id.execution_id." - "name}/{id.node_id}\022\336\001\n\022ListNodeExecution" - "s\022(.flyteidl.admin.NodeExecutionListRequ" - "est\032!.flyteidl.admin.NodeExecutionList\"{" - "\202\323\344\223\002u\022s/api/v1/node_executions/{workflo" - "w_execution_id.project}/{workflow_execut" - "ion_id.domain}/{workflow_execution_id.na" - "me}\022\245\004\n\031ListNodeExecutionsForTask\022/.flyt" - "eidl.admin.NodeExecutionForTaskListReque" - "st\032!.flyteidl.admin.NodeExecutionList\"\263\003" - "\202\323\344\223\002\254\003\022\251\003/api/v1/children/task_executio" - "ns/{task_execution_id.node_execution_id." - "execution_id.project}/{task_execution_id" - ".node_execution_id.execution_id.domain}/" - "{task_execution_id.node_execution_id.exe" - "cution_id.name}/{task_execution_id.node_" - "execution_id.node_id}/{task_execution_id" - ".task_id.project}/{task_execution_id.tas" - "k_id.domain}/{task_execution_id.task_id." - "name}/{task_execution_id.task_id.version" - "}/{task_execution_id.retry_attempt}\022\356\001\n\024" - "GetNodeExecutionData\022+.flyteidl.admin.No" - "deExecutionGetDataRequest\032,.flyteidl.adm" - "in.NodeExecutionGetDataResponse\"{\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}\022\177\n\017" - "RegisterProject\022&.flyteidl.admin.Project" - "RegisterRequest\032\'.flyteidl.admin.Project" - "RegisterResponse\"\033\202\323\344\223\002\025\"\020/api/v1/projec" - "ts:\001*\022q\n\rUpdateProject\022\027.flyteidl.admin." - "Project\032%.flyteidl.admin.ProjectUpdateRe" - "sponse\" \202\323\344\223\002\032\032\025/api/v1/projects/{id}:\001*" - "\022f\n\014ListProjects\022\".flyteidl.admin.Projec" - "tListRequest\032\030.flyteidl.admin.Projects\"\030" - "\202\323\344\223\002\022\022\020/api/v1/projects\022\231\001\n\023CreateWorkf" - "lowEvent\022-.flyteidl.admin.WorkflowExecut" - "ionEventRequest\032..flyteidl.admin.Workflo" - "wExecutionEventResponse\"#\202\323\344\223\002\035\"\030/api/v1" - "/events/workflows:\001*\022\211\001\n\017CreateNodeEvent" - "\022).flyteidl.admin.NodeExecutionEventRequ" - "est\032*.flyteidl.admin.NodeExecutionEventR" - "esponse\"\037\202\323\344\223\002\031\"\024/api/v1/events/nodes:\001*" - "\022\211\001\n\017CreateTaskEvent\022).flyteidl.admin.Ta" - "skExecutionEventRequest\032*.flyteidl.admin" - ".TaskExecutionEventResponse\"\037\202\323\344\223\002\031\"\024/ap" - "i/v1/events/tasks:\001*\022\200\003\n\020GetTaskExecutio" - "n\022\'.flyteidl.admin.TaskExecutionGetReque" - "st\032\035.flyteidl.admin.TaskExecution\"\243\002\202\323\344\223" - "\002\234\002\022\231\002/api/v1/task_executions/{id.node_e" - "xecution_id.execution_id.project}/{id.no" - "de_execution_id.execution_id.domain}/{id" - ".node_execution_id.execution_id.name}/{i" - "d.node_execution_id.node_id}/{id.task_id" - ".project}/{id.task_id.domain}/{id.task_i" - "d.name}/{id.task_id.version}/{id.retry_a" - "ttempt}\022\230\002\n\022ListTaskExecutions\022(.flyteid" - "l.admin.TaskExecutionListRequest\032!.flyte" - "idl.admin.TaskExecutionList\"\264\001\202\323\344\223\002\255\001\022\252\001" - "/api/v1/task_executions/{node_execution_" - "id.execution_id.project}/{node_execution" - "_id.execution_id.domain}/{node_execution" - "_id.execution_id.name}/{node_execution_i" - "d.node_id}\022\234\003\n\024GetTaskExecutionData\022+.fl" - "yteidl.admin.TaskExecutionGetDataRequest" - "\032,.flyteidl.admin.TaskExecutionGetDataRe" - "sponse\"\250\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/task_exe" - "cutions/{id.node_execution_id.execution_" - "id.project}/{id.node_execution_id.execut" - "ion_id.domain}/{id.node_execution_id.exe" - "cution_id.name}/{id.node_execution_id.no" - "de_id}/{id.task_id.project}/{id.task_id." - "domain}/{id.task_id.name}/{id.task_id.ve" - "rsion}/{id.retry_attempt}\022\343\001\n\035UpdateProj" - "ectDomainAttributes\0224.flyteidl.admin.Pro" - "jectDomainAttributesUpdateRequest\0325.flyt" - "eidl.admin.ProjectDomainAttributesUpdate" - "Response\"U\202\323\344\223\002O\032J/api/v1/project_domain" - "_attributes/{attributes.project}/{attrib" - "utes.domain}:\001*\022\301\001\n\032GetProjectDomainAttr" - "ibutes\0221.flyteidl.admin.ProjectDomainAtt" - "ributesGetRequest\0322.flyteidl.admin.Proje" - "ctDomainAttributesGetResponse\"<\202\323\344\223\0026\0224/" - "api/v1/project_domain_attributes/{projec" - "t}/{domain}\022\315\001\n\035DeleteProjectDomainAttri" - "butes\0224.flyteidl.admin.ProjectDomainAttr" - "ibutesDeleteRequest\0325.flyteidl.admin.Pro" - "jectDomainAttributesDeleteResponse\"\?\202\323\344\223" - "\0029*4/api/v1/project_domain_attributes/{p" - "roject}/{domain}:\001*\022\266\001\n\027UpdateProjectAtt" - "ributes\022..flyteidl.admin.ProjectAttribut" - "esUpdateRequest\032/.flyteidl.admin.Project" - "AttributesUpdateResponse\":\202\323\344\223\0024\032//api/v" - "1/project_attributes/{attributes.project" - "}:\001*\022\237\001\n\024GetProjectAttributes\022+.flyteidl" - ".admin.ProjectAttributesGetRequest\032,.fly" - "teidl.admin.ProjectAttributesGetResponse" - "\",\202\323\344\223\002&\022$/api/v1/project_attributes/{pr" - "oject}\022\253\001\n\027DeleteProjectAttributes\022..fly" - "teidl.admin.ProjectAttributesDeleteReque" - "st\032/.flyteidl.admin.ProjectAttributesDel" - "eteResponse\"/\202\323\344\223\002)*$/api/v1/project_att" - "ributes/{project}:\001*\022\344\001\n\030UpdateWorkflowA" - "ttributes\022/.flyteidl.admin.WorkflowAttri" - "butesUpdateRequest\0320.flyteidl.admin.Work" - "flowAttributesUpdateResponse\"e\202\323\344\223\002_\032Z/a" - "pi/v1/workflow_attributes/{attributes.pr" - "oject}/{attributes.domain}/{attributes.w" - "orkflow}:\001*\022\267\001\n\025GetWorkflowAttributes\022,." - "flyteidl.admin.WorkflowAttributesGetRequ" - "est\032-.flyteidl.admin.WorkflowAttributesG" - "etResponse\"A\202\323\344\223\002;\0229/api/v1/workflow_att" - "ributes/{project}/{domain}/{workflow}\022\303\001" - "\n\030DeleteWorkflowAttributes\022/.flyteidl.ad" - "min.WorkflowAttributesDeleteRequest\0320.fl" - "yteidl.admin.WorkflowAttributesDeleteRes" - "ponse\"D\202\323\344\223\002>*9/api/v1/workflow_attribut" - "es/{project}/{domain}/{workflow}:\001*\022\240\001\n\027" - "ListMatchableAttributes\022..flyteidl.admin" - ".ListMatchableAttributesRequest\032/.flytei" - "dl.admin.ListMatchableAttributesResponse" - "\"$\202\323\344\223\002\036\022\034/api/v1/matchable_attributes\022\237" - "\001\n\021ListNamedEntities\022&.flyteidl.admin.Na" - "medEntityListRequest\032\037.flyteidl.admin.Na" - "medEntityList\"A\202\323\344\223\002;\0229/api/v1/named_ent" - "ities/{resource_type}/{project}/{domain}" - "\022\247\001\n\016GetNamedEntity\022%.flyteidl.admin.Nam" - "edEntityGetRequest\032\033.flyteidl.admin.Name" - "dEntity\"Q\202\323\344\223\002K\022I/api/v1/named_entities/" - "{resource_type}/{id.project}/{id.domain}" - "/{id.name}\022\276\001\n\021UpdateNamedEntity\022(.flyte" - "idl.admin.NamedEntityUpdateRequest\032).fly" - "teidl.admin.NamedEntityUpdateResponse\"T\202" - "\323\344\223\002N\032I/api/v1/named_entities/{resource_" - "type}/{id.project}/{id.domain}/{id.name}" - ":\001*\022l\n\nGetVersion\022!.flyteidl.admin.GetVe" - "rsionRequest\032\".flyteidl.admin.GetVersion" - "Response\"\027\202\323\344\223\002\021\022\017/api/v1/version\022\304\001\n\024Ge" - "tDescriptionEntity\022 .flyteidl.admin.Obje" - "ctGetRequest\032!.flyteidl.admin.Descriptio" - "nEntity\"g\202\323\344\223\002a\022_/api/v1/description_ent" - "ities/{id.resource_type}/{id.project}/{i" - "d.domain}/{id.name}/{id.version}\022\222\002\n\027Lis" - "tDescriptionEntities\022,.flyteidl.admin.De" - "scriptionEntityListRequest\032%.flyteidl.ad" - "min.DescriptionEntityList\"\241\001\202\323\344\223\002\232\001\022O/ap" - "i/v1/description_entities/{resource_type" - "}/{id.project}/{id.domain}/{id.name}ZG\022E" - "/api/v1/description_entities/{resource_t" - "ype}/{id.project}/{id.domain}B9Z7github." - "com/flyteorg/flyteidl/gen/pb-go/flyteidl" - "/serviceb\006proto3" + "ist\"+\202\323\344\223\002%\022#/api/v1/task_ids/{project}/" + "{domain}\022\256\001\n\tListTasks\022#.flyteidl.admin." + "ResourceListRequest\032\030.flyteidl.admin.Tas" + "kList\"b\202\323\344\223\002\\\0220/api/v1/tasks/{id.project" + "}/{id.domain}/{id.name}Z(\022&/api/v1/tasks" + "/{id.project}/{id.domain}\022}\n\016CreateWorkf" + "low\022%.flyteidl.admin.WorkflowCreateReque" + "st\032&.flyteidl.admin.WorkflowCreateRespon" + "se\"\034\202\323\344\223\002\026\"\021/api/v1/workflows:\001*\022\224\001\n\013Get" + "Workflow\022 .flyteidl.admin.ObjectGetReque" + "st\032\030.flyteidl.admin.Workflow\"I\202\323\344\223\002C\022A/a" + "pi/v1/workflows/{id.project}/{id.domain}" + "/{id.name}/{id.version}\022\237\001\n\017ListWorkflow" + "Ids\0220.flyteidl.admin.NamedEntityIdentifi" + "erListRequest\032).flyteidl.admin.NamedEnti" + "tyIdentifierList\"/\202\323\344\223\002)\022\'/api/v1/workfl" + "ow_ids/{project}/{domain}\022\276\001\n\rListWorkfl" + "ows\022#.flyteidl.admin.ResourceListRequest" + "\032\034.flyteidl.admin.WorkflowList\"j\202\323\344\223\002d\0224" + "/api/v1/workflows/{id.project}/{id.domai" + "n}/{id.name}Z,\022*/api/v1/workflows/{id.pr" + "oject}/{id.domain}\022\206\001\n\020CreateLaunchPlan\022" + "\'.flyteidl.admin.LaunchPlanCreateRequest" + "\032(.flyteidl.admin.LaunchPlanCreateRespon" + "se\"\037\202\323\344\223\002\031\"\024/api/v1/launch_plans:\001*\022\233\001\n\r" + "GetLaunchPlan\022 .flyteidl.admin.ObjectGet" + "Request\032\032.flyteidl.admin.LaunchPlan\"L\202\323\344" + "\223\002F\022D/api/v1/launch_plans/{id.project}/{" + "id.domain}/{id.name}/{id.version}\022\242\001\n\023Ge" + "tActiveLaunchPlan\022\'.flyteidl.admin.Activ" + "eLaunchPlanRequest\032\032.flyteidl.admin.Laun" + "chPlan\"F\202\323\344\223\002@\022>/api/v1/active_launch_pl" + "ans/{id.project}/{id.domain}/{id.name}\022\234" + "\001\n\025ListActiveLaunchPlans\022+.flyteidl.admi" + "n.ActiveLaunchPlanListRequest\032\036.flyteidl" + ".admin.LaunchPlanList\"6\202\323\344\223\0020\022./api/v1/a" + "ctive_launch_plans/{project}/{domain}\022\244\001" + "\n\021ListLaunchPlanIds\0220.flyteidl.admin.Nam" + "edEntityIdentifierListRequest\032).flyteidl" + ".admin.NamedEntityIdentifierList\"2\202\323\344\223\002," + "\022*/api/v1/launch_plan_ids/{project}/{dom" + "ain}\022\310\001\n\017ListLaunchPlans\022#.flyteidl.admi" + "n.ResourceListRequest\032\036.flyteidl.admin.L" + "aunchPlanList\"p\202\323\344\223\002j\0227/api/v1/launch_pl" + "ans/{id.project}/{id.domain}/{id.name}Z/" + "\022-/api/v1/launch_plans/{id.project}/{id." + "domain}\022\266\001\n\020UpdateLaunchPlan\022\'.flyteidl." + "admin.LaunchPlanUpdateRequest\032(.flyteidl" + ".admin.LaunchPlanUpdateResponse\"O\202\323\344\223\002I\032" + "D/api/v1/launch_plans/{id.project}/{id.d" + "omain}/{id.name}/{id.version}:\001*\022\201\001\n\017Cre" + "ateExecution\022&.flyteidl.admin.ExecutionC" + "reateRequest\032\'.flyteidl.admin.ExecutionC" + "reateResponse\"\035\202\323\344\223\002\027\"\022/api/v1/execution" + "s:\001*\022\216\001\n\021RelaunchExecution\022(.flyteidl.ad" + "min.ExecutionRelaunchRequest\032\'.flyteidl." + "admin.ExecutionCreateResponse\"&\202\323\344\223\002 \"\033/" + "api/v1/executions/relaunch:\001*\022\213\001\n\020Recove" + "rExecution\022\'.flyteidl.admin.ExecutionRec" + "overRequest\032\'.flyteidl.admin.ExecutionCr" + "eateResponse\"%\202\323\344\223\002\037\"\032/api/v1/executions" + "/recover:\001*\022\225\001\n\014GetExecution\022+.flyteidl." + "admin.WorkflowExecutionGetRequest\032\031.flyt" + "eidl.admin.Execution\"=\202\323\344\223\0027\0225/api/v1/ex" + "ecutions/{id.project}/{id.domain}/{id.na" + "me}\022\244\001\n\017UpdateExecution\022&.flyteidl.admin" + ".ExecutionUpdateRequest\032\'.flyteidl.admin" + ".ExecutionUpdateResponse\"@\202\323\344\223\002:\0325/api/v" + "1/executions/{id.project}/{id.domain}/{i" + "d.name}:\001*\022\271\001\n\020GetExecutionData\022/.flytei" + "dl.admin.WorkflowExecutionGetDataRequest" + "\0320.flyteidl.admin.WorkflowExecutionGetDa" + "taResponse\"B\202\323\344\223\002<\022:/api/v1/data/executi" + "ons/{id.project}/{id.domain}/{id.name}\022\211" + "\001\n\016ListExecutions\022#.flyteidl.admin.Resou" + "rceListRequest\032\035.flyteidl.admin.Executio" + "nList\"3\202\323\344\223\002-\022+/api/v1/executions/{id.pr" + "oject}/{id.domain}\022\255\001\n\022TerminateExecutio" + "n\022).flyteidl.admin.ExecutionTerminateReq" + "uest\032*.flyteidl.admin.ExecutionTerminate" + "Response\"@\202\323\344\223\002:*5/api/v1/executions/{id" + ".project}/{id.domain}/{id.name}:\001*\022\322\001\n\020G" + "etNodeExecution\022\'.flyteidl.admin.NodeExe" + "cutionGetRequest\032\035.flyteidl.admin.NodeEx" + "ecution\"v\202\323\344\223\002p\022n/api/v1/node_executions" + "/{id.execution_id.project}/{id.execution" + "_id.domain}/{id.execution_id.name}/{id.n" + "ode_id}\022\336\001\n\022ListNodeExecutions\022(.flyteid" + "l.admin.NodeExecutionListRequest\032!.flyte" + "idl.admin.NodeExecutionList\"{\202\323\344\223\002u\022s/ap" + "i/v1/node_executions/{workflow_execution" + "_id.project}/{workflow_execution_id.doma" + "in}/{workflow_execution_id.name}\022\245\004\n\031Lis" + "tNodeExecutionsForTask\022/.flyteidl.admin." + "NodeExecutionForTaskListRequest\032!.flytei" + "dl.admin.NodeExecutionList\"\263\003\202\323\344\223\002\254\003\022\251\003/" + "api/v1/children/task_executions/{task_ex" + "ecution_id.node_execution_id.execution_i" + "d.project}/{task_execution_id.node_execu" + "tion_id.execution_id.domain}/{task_execu" + "tion_id.node_execution_id.execution_id.n" + "ame}/{task_execution_id.node_execution_i" + "d.node_id}/{task_execution_id.task_id.pr" + "oject}/{task_execution_id.task_id.domain" + "}/{task_execution_id.task_id.name}/{task" + "_execution_id.task_id.version}/{task_exe" + "cution_id.retry_attempt}\022\356\001\n\024GetNodeExec" + "utionData\022+.flyteidl.admin.NodeExecution" + "GetDataRequest\032,.flyteidl.admin.NodeExec" + "utionGetDataResponse\"{\202\323\344\223\002u\022s/api/v1/da" + "ta/node_executions/{id.execution_id.proj" + "ect}/{id.execution_id.domain}/{id.execut" + "ion_id.name}/{id.node_id}\022\177\n\017RegisterPro" + "ject\022&.flyteidl.admin.ProjectRegisterReq" + "uest\032\'.flyteidl.admin.ProjectRegisterRes" + "ponse\"\033\202\323\344\223\002\025\"\020/api/v1/projects:\001*\022q\n\rUp" + "dateProject\022\027.flyteidl.admin.Project\032%.f" + "lyteidl.admin.ProjectUpdateResponse\" \202\323\344" + "\223\002\032\032\025/api/v1/projects/{id}:\001*\022f\n\014ListPro" + "jects\022\".flyteidl.admin.ProjectListReques" + "t\032\030.flyteidl.admin.Projects\"\030\202\323\344\223\002\022\022\020/ap" + "i/v1/projects\022\231\001\n\023CreateWorkflowEvent\022-." + "flyteidl.admin.WorkflowExecutionEventReq" + "uest\032..flyteidl.admin.WorkflowExecutionE" + "ventResponse\"#\202\323\344\223\002\035\"\030/api/v1/events/wor" + "kflows:\001*\022\211\001\n\017CreateNodeEvent\022).flyteidl" + ".admin.NodeExecutionEventRequest\032*.flyte" + "idl.admin.NodeExecutionEventResponse\"\037\202\323" + "\344\223\002\031\"\024/api/v1/events/nodes:\001*\022\211\001\n\017Create" + "TaskEvent\022).flyteidl.admin.TaskExecution" + "EventRequest\032*.flyteidl.admin.TaskExecut" + "ionEventResponse\"\037\202\323\344\223\002\031\"\024/api/v1/events" + "/tasks:\001*\022\200\003\n\020GetTaskExecution\022\'.flyteid" + "l.admin.TaskExecutionGetRequest\032\035.flytei" + "dl.admin.TaskExecution\"\243\002\202\323\344\223\002\234\002\022\231\002/api/" + "v1/task_executions/{id.node_execution_id" + ".execution_id.project}/{id.node_executio" + "n_id.execution_id.domain}/{id.node_execu" + "tion_id.execution_id.name}/{id.node_exec" + "ution_id.node_id}/{id.task_id.project}/{" + "id.task_id.domain}/{id.task_id.name}/{id" + ".task_id.version}/{id.retry_attempt}\022\230\002\n" + "\022ListTaskExecutions\022(.flyteidl.admin.Tas" + "kExecutionListRequest\032!.flyteidl.admin.T" + "askExecutionList\"\264\001\202\323\344\223\002\255\001\022\252\001/api/v1/tas" + "k_executions/{node_execution_id.executio" + "n_id.project}/{node_execution_id.executi" + "on_id.domain}/{node_execution_id.executi" + "on_id.name}/{node_execution_id.node_id}\022" + "\234\003\n\024GetTaskExecutionData\022+.flyteidl.admi" + "n.TaskExecutionGetDataRequest\032,.flyteidl" + ".admin.TaskExecutionGetDataResponse\"\250\002\202\323" + "\344\223\002\241\002\022\236\002/api/v1/data/task_executions/{id" + ".node_execution_id.execution_id.project}" + "/{id.node_execution_id.execution_id.doma" + "in}/{id.node_execution_id.execution_id.n" + "ame}/{id.node_execution_id.node_id}/{id." + "task_id.project}/{id.task_id.domain}/{id" + ".task_id.name}/{id.task_id.version}/{id." + "retry_attempt}\022\343\001\n\035UpdateProjectDomainAt" + "tributes\0224.flyteidl.admin.ProjectDomainA" + "ttributesUpdateRequest\0325.flyteidl.admin." + "ProjectDomainAttributesUpdateResponse\"U\202" + "\323\344\223\002O\032J/api/v1/project_domain_attributes" + "/{attributes.project}/{attributes.domain" + "}:\001*\022\301\001\n\032GetProjectDomainAttributes\0221.fl" + "yteidl.admin.ProjectDomainAttributesGetR" + "equest\0322.flyteidl.admin.ProjectDomainAtt" + "ributesGetResponse\"<\202\323\344\223\0026\0224/api/v1/proj" + "ect_domain_attributes/{project}/{domain}" + "\022\315\001\n\035DeleteProjectDomainAttributes\0224.fly" + "teidl.admin.ProjectDomainAttributesDelet" + "eRequest\0325.flyteidl.admin.ProjectDomainA" + "ttributesDeleteResponse\"\?\202\323\344\223\0029*4/api/v1" + "/project_domain_attributes/{project}/{do" + "main}:\001*\022\266\001\n\027UpdateProjectAttributes\022..f" + "lyteidl.admin.ProjectAttributesUpdateReq" + "uest\032/.flyteidl.admin.ProjectAttributesU" + "pdateResponse\":\202\323\344\223\0024\032//api/v1/project_a" + "ttributes/{attributes.project}:\001*\022\237\001\n\024Ge" + "tProjectAttributes\022+.flyteidl.admin.Proj" + "ectAttributesGetRequest\032,.flyteidl.admin" + ".ProjectAttributesGetResponse\",\202\323\344\223\002&\022$/" + "api/v1/project_attributes/{project}\022\253\001\n\027" + "DeleteProjectAttributes\022..flyteidl.admin" + ".ProjectAttributesDeleteRequest\032/.flytei" + "dl.admin.ProjectAttributesDeleteResponse" + "\"/\202\323\344\223\002)*$/api/v1/project_attributes/{pr" + "oject}:\001*\022\344\001\n\030UpdateWorkflowAttributes\022/" + ".flyteidl.admin.WorkflowAttributesUpdate" + "Request\0320.flyteidl.admin.WorkflowAttribu" + "tesUpdateResponse\"e\202\323\344\223\002_\032Z/api/v1/workf" + "low_attributes/{attributes.project}/{att" + "ributes.domain}/{attributes.workflow}:\001*" + "\022\267\001\n\025GetWorkflowAttributes\022,.flyteidl.ad" + "min.WorkflowAttributesGetRequest\032-.flyte" + "idl.admin.WorkflowAttributesGetResponse\"" + "A\202\323\344\223\002;\0229/api/v1/workflow_attributes/{pr" + "oject}/{domain}/{workflow}\022\303\001\n\030DeleteWor" + "kflowAttributes\022/.flyteidl.admin.Workflo" + "wAttributesDeleteRequest\0320.flyteidl.admi" + "n.WorkflowAttributesDeleteResponse\"D\202\323\344\223" + "\002>*9/api/v1/workflow_attributes/{project" + "}/{domain}/{workflow}:\001*\022\240\001\n\027ListMatchab" + "leAttributes\022..flyteidl.admin.ListMatcha" + "bleAttributesRequest\032/.flyteidl.admin.Li" + "stMatchableAttributesResponse\"$\202\323\344\223\002\036\022\034/" + "api/v1/matchable_attributes\022\237\001\n\021ListName" + "dEntities\022&.flyteidl.admin.NamedEntityLi" + "stRequest\032\037.flyteidl.admin.NamedEntityLi" + "st\"A\202\323\344\223\002;\0229/api/v1/named_entities/{reso" + "urce_type}/{project}/{domain}\022\247\001\n\016GetNam" + "edEntity\022%.flyteidl.admin.NamedEntityGet" + "Request\032\033.flyteidl.admin.NamedEntity\"Q\202\323" + "\344\223\002K\022I/api/v1/named_entities/{resource_t" + "ype}/{id.project}/{id.domain}/{id.name}\022" + "\276\001\n\021UpdateNamedEntity\022(.flyteidl.admin.N" + "amedEntityUpdateRequest\032).flyteidl.admin" + ".NamedEntityUpdateResponse\"T\202\323\344\223\002N\032I/api" + "/v1/named_entities/{resource_type}/{id.p" + "roject}/{id.domain}/{id.name}:\001*\022l\n\nGetV" + "ersion\022!.flyteidl.admin.GetVersionReques" + "t\032\".flyteidl.admin.GetVersionResponse\"\027\202" + "\323\344\223\002\021\022\017/api/v1/version\022\304\001\n\024GetDescriptio" + "nEntity\022 .flyteidl.admin.ObjectGetReques" + "t\032!.flyteidl.admin.DescriptionEntity\"g\202\323" + "\344\223\002a\022_/api/v1/description_entities/{id.r" + "esource_type}/{id.project}/{id.domain}/{" + "id.name}/{id.version}\022\222\002\n\027ListDescriptio" + "nEntities\022,.flyteidl.admin.DescriptionEn" + "tityListRequest\032%.flyteidl.admin.Descrip" + "tionEntityList\"\241\001\202\323\344\223\002\232\001\022O/api/v1/descri" + "ption_entities/{resource_type}/{id.proje" + "ct}/{id.domain}/{id.name}ZG\022E/api/v1/des" + "cription_entities/{resource_type}/{id.pr" + "oject}/{id.domain}\022\305\001\n\023GetExecutionMetri" + "cs\0222.flyteidl.admin.WorkflowExecutionGet" + "MetricsRequest\0323.flyteidl.admin.Workflow" + "ExecutionGetMetricsResponse\"E\202\323\344\223\002\?\022=/ap" + "i/v1/metrics/executions/{id.project}/{id" + ".domain}/{id.name}B9Z7github.com/flyteor" + "g/flyteidl/gen/pb-go/flyteidl/serviceb\006p" + "roto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fservice_2fadmin_2eproto = { false, InitDefaults_flyteidl_2fservice_2fadmin_2eproto, descriptor_table_protodef_flyteidl_2fservice_2fadmin_2eproto, - "flyteidl/service/admin.proto", &assign_descriptors_table_flyteidl_2fservice_2fadmin_2eproto, 10496, + "flyteidl/service/admin.proto", &assign_descriptors_table_flyteidl_2fservice_2fadmin_2eproto, 10725, }; void AddDescriptors_flyteidl_2fservice_2fadmin_2eproto() { - static constexpr ::google::protobuf::internal::InitFunc deps[17] = + static constexpr ::google::protobuf::internal::InitFunc deps[18] = { ::AddDescriptors_google_2fapi_2fannotations_2eproto, ::AddDescriptors_flyteidl_2fadmin_2fproject_2eproto, @@ -327,8 +333,9 @@ void AddDescriptors_flyteidl_2fservice_2fadmin_2eproto() { ::AddDescriptors_flyteidl_2fadmin_2fcommon_2eproto, ::AddDescriptors_flyteidl_2fadmin_2fdescription_5fentity_2eproto, ::AddDescriptors_flyteidl_2fcore_2fidentifier_2eproto, + ::AddDescriptors_flyteidl_2fcore_2fmetrics_2eproto, }; - ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fservice_2fadmin_2eproto, deps, 17); + ::google::protobuf::internal::AddDescriptors(&descriptor_table_flyteidl_2fservice_2fadmin_2eproto, deps, 18); } // Force running AddDescriptors() at dynamic initialization time. diff --git a/gen/pb-cpp/flyteidl/service/admin.pb.h b/gen/pb-cpp/flyteidl/service/admin.pb.h index 0a6aec1ea..fff2ff113 100644 --- a/gen/pb-cpp/flyteidl/service/admin.pb.h +++ b/gen/pb-cpp/flyteidl/service/admin.pb.h @@ -46,6 +46,7 @@ #include "flyteidl/admin/common.pb.h" #include "flyteidl/admin/description_entity.pb.h" #include "flyteidl/core/identifier.pb.h" +#include "flyteidl/core/metrics.pb.h" // @@protoc_insertion_point(includes) #include #define PROTOBUF_INTERNAL_EXPORT_flyteidl_2fservice_2fadmin_2eproto diff --git a/gen/pb-go/flyteidl/admin/common.pb.go b/gen/pb-go/flyteidl/admin/common.pb.go index 40c5d2d93..e450b7661 100644 --- a/gen/pb-go/flyteidl/admin/common.pb.go +++ b/gen/pb-go/flyteidl/admin/common.pb.go @@ -7,6 +7,7 @@ import ( fmt "fmt" core "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core" proto "github.com/golang/protobuf/proto" + _ "github.com/golang/protobuf/ptypes/timestamp" math "math" ) @@ -1382,74 +1383,75 @@ func init() { func init() { proto.RegisterFile("flyteidl/admin/common.proto", fileDescriptor_7c2cf612a185829c) } var fileDescriptor_7c2cf612a185829c = []byte{ - // 1099 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdb, 0x73, 0xdb, 0xc4, - 0x17, 0x8e, 0x7c, 0x4b, 0x7d, 0xdc, 0xa6, 0xee, 0xe6, 0xf2, 0x73, 0x92, 0xf9, 0x75, 0x82, 0x18, - 0x2e, 0xed, 0x50, 0x7b, 0x26, 0x10, 0x4a, 0x33, 0x25, 0xc5, 0x89, 0x45, 0xe2, 0x21, 0x71, 0x33, - 0xb2, 0x1b, 0xa6, 0x0c, 0x8c, 0x58, 0x4b, 0x6b, 0x67, 0x89, 0xa4, 0x15, 0xab, 0x55, 0x5b, 0xf3, - 0xc2, 0xc0, 0x1b, 0x6f, 0x3c, 0xf0, 0x0f, 0xf1, 0xc4, 0xf0, 0xce, 0x1f, 0xc4, 0x68, 0x75, 0xb1, - 0xec, 0x38, 0x81, 0xa4, 0x9d, 0xe1, 0xcd, 0x67, 0xbf, 0xef, 0xec, 0x7e, 0xe7, 0xdb, 0xb3, 0xab, - 0x35, 0xac, 0x0f, 0xec, 0x91, 0x20, 0xd4, 0xb2, 0x1b, 0xd8, 0x72, 0xa8, 0xdb, 0x30, 0x99, 0xe3, - 0x30, 0xb7, 0xee, 0x71, 0x26, 0x18, 0x5a, 0x48, 0xc0, 0xba, 0x04, 0xd7, 0xfe, 0x9f, 0x92, 0x4d, - 0xc6, 0x49, 0x83, 0xbc, 0x22, 0x66, 0x20, 0x68, 0x42, 0x5f, 0xbb, 0x3b, 0x09, 0x53, 0x8b, 0xb8, - 0x82, 0x0e, 0x28, 0xe1, 0x11, 0xae, 0x7e, 0x03, 0xcb, 0x1d, 0xec, 0x10, 0x4b, 0x73, 0x05, 0x15, - 0xa3, 0x76, 0x0a, 0xa3, 0x1a, 0xcc, 0x7b, 0x9c, 0x7d, 0x47, 0x4c, 0x51, 0x53, 0x36, 0x94, 0xf7, - 0xcb, 0x7a, 0x12, 0xa2, 0x15, 0x28, 0x59, 0xcc, 0xc1, 0xd4, 0xad, 0xe5, 0x24, 0x10, 0x47, 0x08, - 0x41, 0xc1, 0xc5, 0x0e, 0xa9, 0xe5, 0xe5, 0xa8, 0xfc, 0xad, 0x32, 0x58, 0xcc, 0x4c, 0x7f, 0x44, - 0x04, 0xb6, 0xb0, 0xc0, 0x68, 0x03, 0x2a, 0x16, 0xf1, 0x4d, 0x4e, 0xbd, 0x50, 0x6a, 0xbc, 0x40, - 0x76, 0x08, 0x7d, 0x0c, 0x45, 0x5f, 0x60, 0x41, 0xe4, 0x1a, 0x0b, 0x9b, 0x1b, 0xf5, 0xc9, 0xb2, - 0xeb, 0x99, 0x59, 0xbb, 0x21, 0x4f, 0x8f, 0xe8, 0xea, 0x1f, 0x0a, 0x54, 0x32, 0x18, 0xfa, 0x0c, - 0x6e, 0x71, 0xe2, 0xb3, 0x80, 0x9b, 0xc4, 0x10, 0x23, 0x8f, 0xc8, 0xb5, 0x16, 0x36, 0xd7, 0xc7, - 0xf3, 0x85, 0xbe, 0xd4, 0xf5, 0x98, 0xd3, 0x1b, 0x79, 0x44, 0xbf, 0xc9, 0x33, 0x11, 0xda, 0x82, - 0x1c, 0xb5, 0xa4, 0x8c, 0xca, 0xe6, 0x3b, 0x97, 0xc8, 0x18, 0x7b, 0xa7, 0xe7, 0xa8, 0x85, 0x9e, - 0xc0, 0x0d, 0x27, 0x2e, 0x57, 0x3a, 0x52, 0xd9, 0x7c, 0xfb, 0x92, 0xe4, 0xc4, 0x19, 0x3d, 0x4d, - 0x52, 0x7f, 0x56, 0xa0, 0xd0, 0x65, 0x5c, 0xa0, 0x2a, 0xe4, 0xcf, 0xc8, 0x28, 0x36, 0x29, 0xfc, - 0x89, 0x1e, 0x43, 0xd9, 0xa2, 0x9c, 0x98, 0xd2, 0xbc, 0xc8, 0xa0, 0xbb, 0xd3, 0x93, 0x87, 0xa9, - 0xf5, 0x56, 0xc2, 0xd2, 0xc7, 0x09, 0xea, 0x7d, 0x28, 0xa7, 0xe3, 0x68, 0x01, 0xa0, 0xa5, 0x75, - 0xf7, 0xb4, 0x4e, 0xab, 0xdd, 0xd9, 0xaf, 0xce, 0xa1, 0x5b, 0x50, 0x6e, 0xa6, 0xa1, 0xa2, 0xfe, - 0xa9, 0xc0, 0xc6, 0xcc, 0x1a, 0x0f, 0xa9, 0x2f, 0x74, 0xf2, 0x7d, 0x40, 0x7c, 0x71, 0x8d, 0x56, - 0x59, 0x82, 0xa2, 0x4d, 0x1d, 0x2a, 0xa4, 0x33, 0xb7, 0xf4, 0x28, 0x08, 0x47, 0x05, 0x3b, 0x23, - 0x6e, 0xad, 0x20, 0xc9, 0x51, 0x80, 0x1e, 0xc0, 0xbc, 0xcf, 0xb8, 0x30, 0xfa, 0xa3, 0x5a, 0x51, - 0xfa, 0xb8, 0x34, 0xab, 0x54, 0xbd, 0x14, 0x92, 0x76, 0x47, 0xa1, 0x98, 0x01, 0xb5, 0x05, 0xe1, - 0x7e, 0xad, 0x14, 0x89, 0x89, 0x43, 0xf5, 0xa7, 0x1c, 0xac, 0x64, 0x6a, 0xc9, 0x56, 0xf0, 0xfa, - 0x5d, 0x92, 0xf1, 0x20, 0x77, 0x91, 0x07, 0xf9, 0xd9, 0x1e, 0x14, 0x66, 0x7a, 0x50, 0xbc, 0xc0, - 0x83, 0xd2, 0xd5, 0x3c, 0x98, 0x9f, 0xf4, 0x40, 0xc0, 0xea, 0x85, 0xdb, 0x89, 0x9a, 0x70, 0x23, - 0x8c, 0x05, 0x25, 0x7e, 0x4d, 0xd9, 0xc8, 0xff, 0xfb, 0x7e, 0x4f, 0xd3, 0xc6, 0xf2, 0x73, 0x19, - 0xf9, 0xea, 0xb7, 0x70, 0x7b, 0xca, 0x78, 0xf4, 0xf0, 0xdc, 0x5a, 0xeb, 0x97, 0xac, 0xf5, 0x8f, - 0x2b, 0xfc, 0xaa, 0x4c, 0xdc, 0x63, 0xfb, 0xe4, 0x0d, 0x6e, 0xed, 0xf5, 0x2e, 0x00, 0xf5, 0x2f, - 0x05, 0x6a, 0x19, 0xf4, 0x99, 0x67, 0x85, 0xd7, 0xd4, 0x7f, 0xac, 0xea, 0xf5, 0xaf, 0xa5, 0xf5, - 0x89, 0x0e, 0x4a, 0xaa, 0xf2, 0x3d, 0xe6, 0xfa, 0x44, 0xfd, 0x14, 0xaa, 0x4f, 0xfb, 0x61, 0xd7, - 0x67, 0x36, 0xe0, 0x9e, 0x14, 0xaa, 0xc8, 0xb5, 0x56, 0xa7, 0xea, 0x9b, 0xb2, 0xec, 0x77, 0x05, - 0x16, 0x93, 0x92, 0xb3, 0xc7, 0x73, 0x2b, 0x33, 0xc5, 0x15, 0x6a, 0x4d, 0x4f, 0x58, 0x6e, 0xe6, - 0x09, 0xcb, 0x67, 0x4f, 0x58, 0xe6, 0xc8, 0x14, 0x26, 0x8e, 0xcc, 0x15, 0xef, 0x1f, 0x75, 0x07, - 0xee, 0x68, 0x0e, 0xa6, 0x76, 0x87, 0x85, 0x4a, 0x4c, 0x2c, 0x6f, 0xd9, 0x7b, 0x50, 0xe5, 0xc4, - 0xa4, 0x1e, 0x25, 0xae, 0xf0, 0x0d, 0x12, 0xe2, 0xb2, 0xeb, 0xcb, 0xfa, 0xed, 0xf1, 0xb8, 0x4c, - 0x53, 0x77, 0x61, 0xf9, 0x18, 0x0f, 0x09, 0x6f, 0x05, 0x62, 0x74, 0xdd, 0x39, 0x76, 0xe0, 0x4e, - 0xd7, 0xc6, 0xe6, 0xd9, 0x75, 0xf3, 0x7f, 0xcb, 0xc1, 0xcd, 0x89, 0xdc, 0x1d, 0x28, 0x79, 0xa7, - 0xd8, 0x8f, 0xcf, 0xea, 0xc2, 0xe6, 0xbb, 0x53, 0xfb, 0xf8, 0x25, 0xe3, 0x67, 0x03, 0x9b, 0xbd, - 0xd4, 0xd2, 0xd7, 0xc7, 0x71, 0x48, 0xd7, 0xe3, 0x2c, 0xf4, 0x08, 0x8a, 0xd1, 0x82, 0x51, 0xbf, - 0xbe, 0x35, 0xed, 0xe0, 0x39, 0xc7, 0x0e, 0xe6, 0xf4, 0x28, 0x03, 0x7d, 0x0e, 0xe0, 0x85, 0x7e, - 0x18, 0x56, 0x20, 0x46, 0x71, 0xcb, 0x9e, 0xeb, 0x81, 0x99, 0x8e, 0x1d, 0xcc, 0xe9, 0x65, 0x2f, - 0x01, 0x42, 0x09, 0x7e, 0xe8, 0x89, 0xdc, 0xde, 0x19, 0x12, 0xce, 0x19, 0x16, 0x4a, 0x90, 0x19, - 0xbb, 0x25, 0x28, 0x84, 0x67, 0x54, 0xdd, 0x82, 0xf9, 0x67, 0xdc, 0xde, 0xb5, 0x59, 0x3f, 0xfc, - 0x26, 0x07, 0xdc, 0x4e, 0xbe, 0xc9, 0x01, 0xb7, 0xc3, 0xb6, 0xea, 0x8f, 0x04, 0xf1, 0x65, 0x89, - 0x79, 0x3d, 0x0a, 0xb6, 0x73, 0x35, 0x45, 0xfd, 0x11, 0x4a, 0x87, 0xb8, 0x4f, 0x6c, 0x1f, 0x6d, - 0x43, 0xe9, 0x05, 0xb6, 0x83, 0xf4, 0xca, 0x53, 0xa7, 0x45, 0x44, 0xbc, 0xfa, 0x89, 0x24, 0x69, - 0xae, 0xe0, 0x23, 0x3d, 0xce, 0x58, 0x7b, 0x04, 0x95, 0xcc, 0xf0, 0x8c, 0x47, 0xc1, 0x12, 0x14, - 0x25, 0x35, 0xb9, 0x18, 0x65, 0xb0, 0x9d, 0xfb, 0x44, 0x51, 0x7f, 0x51, 0xa0, 0xd2, 0x74, 0x5d, - 0x26, 0x64, 0x5d, 0x3e, 0x7a, 0x32, 0x25, 0xe3, 0xbd, 0x69, 0x19, 0x19, 0xf2, 0x9b, 0xd6, 0xf2, - 0x03, 0xdc, 0x68, 0x06, 0xe2, 0x54, 0x67, 0x36, 0x41, 0x1f, 0x00, 0xc2, 0xbe, 0x1f, 0x38, 0xb8, - 0x6f, 0x13, 0x83, 0x62, 0xc7, 0xe0, 0xcc, 0x26, 0xf1, 0x34, 0xd5, 0x14, 0x69, 0x63, 0x47, 0xb2, - 0x1f, 0xc3, 0xda, 0x59, 0xd0, 0x27, 0xdc, 0x25, 0x82, 0xf8, 0x86, 0x4f, 0xf8, 0x0b, 0x6a, 0x12, - 0x03, 0x9b, 0x26, 0x0b, 0xdc, 0xe4, 0xa3, 0x5b, 0x1b, 0x33, 0xba, 0x11, 0xa1, 0x19, 0xe1, 0x72, - 0x23, 0xbe, 0x80, 0x45, 0x1d, 0xbf, 0x7c, 0x1a, 0x08, 0x2f, 0x10, 0x2d, 0x2c, 0xf0, 0x1e, 0x73, - 0x07, 0x74, 0x88, 0x3e, 0x82, 0x15, 0x26, 0xc7, 0x0c, 0x9b, 0x45, 0x5b, 0x6f, 0x78, 0x9c, 0x0c, - 0xe8, 0xab, 0x58, 0xca, 0x52, 0x84, 0x1e, 0xc6, 0xe0, 0xb1, 0xc4, 0xee, 0x7f, 0x0d, 0xd5, 0xe9, - 0x37, 0x28, 0xfa, 0x1f, 0x2c, 0x76, 0x9a, 0x47, 0x5a, 0xcb, 0xd0, 0x3a, 0xbd, 0x76, 0xef, 0xb9, - 0xd1, 0xdc, 0xeb, 0xb5, 0x4f, 0xb4, 0xea, 0x1c, 0x5a, 0x85, 0xe5, 0x49, 0x40, 0xdf, 0x3b, 0x68, - 0x9f, 0x68, 0xad, 0xaa, 0x82, 0x96, 0xa0, 0xda, 0x7d, 0xde, 0xed, 0x69, 0x47, 0xc6, 0xbe, 0xd6, - 0xd1, 0xf4, 0x66, 0x4f, 0x6b, 0x55, 0x73, 0xbb, 0x0f, 0xbf, 0xda, 0x1a, 0x52, 0x71, 0x1a, 0xf4, - 0xeb, 0x26, 0x73, 0x1a, 0x72, 0x7b, 0x18, 0x1f, 0x36, 0xd2, 0xc7, 0xfc, 0x90, 0xb8, 0x0d, 0xaf, - 0xff, 0x60, 0xc8, 0x1a, 0x93, 0xff, 0x15, 0xfa, 0x25, 0xf9, 0xac, 0xff, 0xf0, 0xef, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x93, 0xd6, 0x95, 0x4d, 0x44, 0x0c, 0x00, 0x00, + // 1117 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdd, 0x73, 0xdb, 0x44, + 0x10, 0x8f, 0xfc, 0x95, 0x7a, 0xdd, 0xa6, 0xee, 0x25, 0x0d, 0x4e, 0x32, 0x94, 0x20, 0x86, 0x8f, + 0x76, 0xa8, 0x3d, 0x13, 0x08, 0xa5, 0x99, 0x92, 0xe2, 0xc4, 0x22, 0xf1, 0x90, 0xb8, 0x19, 0xd9, + 0x0d, 0x53, 0x06, 0x46, 0x9c, 0xa5, 0xb3, 0x73, 0x44, 0xd2, 0x89, 0xd3, 0xa9, 0xad, 0x79, 0x61, + 0xe0, 0x8d, 0x37, 0x1e, 0xf8, 0x87, 0x78, 0x62, 0x78, 0xe7, 0x0f, 0x62, 0x74, 0xfa, 0xb0, 0xec, + 0x38, 0x81, 0xa4, 0x9d, 0xe1, 0xcd, 0x7b, 0xfb, 0xdb, 0xbb, 0xdf, 0xfe, 0x6e, 0x77, 0x75, 0x86, + 0xb5, 0x81, 0x3d, 0x12, 0x84, 0x5a, 0x76, 0x03, 0x5b, 0x0e, 0x75, 0x1b, 0x26, 0x73, 0x1c, 0xe6, + 0xd6, 0x3d, 0xce, 0x04, 0x43, 0x0b, 0x89, 0xb3, 0x2e, 0x9d, 0xab, 0x6f, 0xa6, 0x60, 0x93, 0x71, + 0xd2, 0x20, 0x2f, 0x89, 0x19, 0x08, 0x9a, 0xc0, 0x57, 0xef, 0x4c, 0xba, 0xa9, 0x45, 0x5c, 0x41, + 0x07, 0x94, 0xf0, 0xd8, 0xff, 0xd6, 0x90, 0xb1, 0xa1, 0x4d, 0x1a, 0xd2, 0xea, 0x07, 0x83, 0x86, + 0xa0, 0x0e, 0xf1, 0x05, 0x76, 0xbc, 0x08, 0xa0, 0x7e, 0x0b, 0xb7, 0x3b, 0xd8, 0x21, 0x96, 0xe6, + 0x0a, 0x2a, 0x46, 0xed, 0x34, 0x1e, 0xd5, 0x60, 0xde, 0xe3, 0xec, 0x7b, 0x62, 0x8a, 0x9a, 0xb2, + 0xae, 0x7c, 0x50, 0xd6, 0x13, 0x13, 0x2d, 0x43, 0xc9, 0x62, 0x0e, 0xa6, 0x6e, 0x2d, 0x27, 0x1d, + 0xb1, 0x85, 0x10, 0x14, 0x5c, 0xec, 0x90, 0x5a, 0x5e, 0xae, 0xca, 0xdf, 0x2a, 0x83, 0xc5, 0xcc, + 0xf6, 0x87, 0x44, 0x60, 0x0b, 0x0b, 0x8c, 0xd6, 0xa1, 0x62, 0x11, 0xdf, 0xe4, 0xd4, 0x0b, 0x73, + 0x89, 0x0f, 0xc8, 0x2e, 0xa1, 0x4f, 0xa0, 0xe8, 0x0b, 0x2c, 0x88, 0x3c, 0x63, 0x61, 0x63, 0xbd, + 0x3e, 0xa9, 0x4b, 0x3d, 0xb3, 0x6b, 0x37, 0xc4, 0xe9, 0x11, 0x5c, 0xfd, 0x53, 0x81, 0x4a, 0xc6, + 0x87, 0x3e, 0x87, 0x1b, 0x9c, 0xf8, 0x2c, 0xe0, 0x26, 0x31, 0xc4, 0xc8, 0x23, 0xf2, 0xac, 0x85, + 0x8d, 0xb5, 0xf1, 0x7e, 0xa1, 0x70, 0x75, 0x3d, 0xc6, 0xf4, 0x46, 0x1e, 0xd1, 0xaf, 0xf3, 0x8c, + 0x85, 0x36, 0x21, 0x47, 0x2d, 0x49, 0xa3, 0xb2, 0xf1, 0xee, 0x05, 0x34, 0xc6, 0xda, 0xe9, 0x39, + 0x6a, 0xa1, 0xc7, 0x70, 0xcd, 0x89, 0xd3, 0x95, 0x8a, 0x54, 0x36, 0xde, 0xb9, 0x20, 0x38, 0x51, + 0x46, 0x4f, 0x83, 0xd4, 0x5f, 0x14, 0x28, 0x74, 0x19, 0x17, 0xa8, 0x0a, 0xf9, 0x53, 0x32, 0x8a, + 0x45, 0x0a, 0x7f, 0xa2, 0x47, 0x50, 0xb6, 0x28, 0x27, 0xa6, 0x14, 0x2f, 0x12, 0xe8, 0xce, 0xf4, + 0xe6, 0x61, 0x68, 0xbd, 0x95, 0xa0, 0xf4, 0x71, 0x80, 0x7a, 0x0f, 0xca, 0xe9, 0x3a, 0x5a, 0x00, + 0x68, 0x69, 0xdd, 0x5d, 0xad, 0xd3, 0x6a, 0x77, 0xf6, 0xaa, 0x73, 0xe8, 0x06, 0x94, 0x9b, 0xa9, + 0xa9, 0xa8, 0x7f, 0x29, 0xb0, 0x3e, 0x33, 0xc7, 0x03, 0xea, 0x0b, 0x9d, 0xfc, 0x10, 0x10, 0x5f, + 0x5c, 0xa1, 0x54, 0x96, 0xa0, 0x68, 0x53, 0x87, 0x0a, 0xa9, 0xcc, 0x0d, 0x3d, 0x32, 0xc2, 0x55, + 0xc1, 0x4e, 0x89, 0x5b, 0x2b, 0x48, 0x70, 0x64, 0xa0, 0xfb, 0x30, 0xef, 0x33, 0x2e, 0x8c, 0xfe, + 0xa8, 0x56, 0x94, 0x3a, 0x2e, 0xcd, 0x4a, 0x55, 0x2f, 0x85, 0xa0, 0x9d, 0x51, 0x48, 0x66, 0x40, + 0x6d, 0x41, 0xb8, 0x5f, 0x2b, 0x45, 0x64, 0x62, 0x53, 0xfd, 0x39, 0x07, 0xcb, 0x99, 0x5c, 0xb2, + 0x19, 0xbc, 0x7a, 0x95, 0x64, 0x34, 0xc8, 0x9d, 0xa7, 0x41, 0x7e, 0xb6, 0x06, 0x85, 0x99, 0x1a, + 0x14, 0xcf, 0xd1, 0xa0, 0x74, 0x39, 0x0d, 0xe6, 0x27, 0x35, 0x10, 0xb0, 0x72, 0xee, 0x75, 0xa2, + 0x26, 0x5c, 0x0b, 0x6d, 0x41, 0x89, 0x5f, 0x53, 0xd6, 0xf3, 0xff, 0xbd, 0xde, 0xd3, 0xb0, 0x31, + 0xfd, 0x5c, 0x86, 0xbe, 0xfa, 0x1d, 0xdc, 0x9c, 0x12, 0x1e, 0x3d, 0x38, 0x73, 0xd6, 0xda, 0x05, + 0x67, 0xfd, 0xeb, 0x09, 0xbf, 0x29, 0x13, 0x73, 0x6c, 0x8f, 0xbc, 0xc6, 0xab, 0xbd, 0xda, 0x00, + 0x50, 0xff, 0x56, 0xa0, 0x96, 0xf1, 0x3e, 0xf5, 0xac, 0x70, 0x4c, 0xfd, 0xcf, 0xac, 0x5e, 0x7d, + 0x2c, 0xad, 0x4d, 0x54, 0x50, 0x92, 0x95, 0xef, 0x31, 0xd7, 0x27, 0xea, 0x67, 0x50, 0x7d, 0xd2, + 0x0f, 0xab, 0x3e, 0x73, 0x01, 0x77, 0x25, 0x51, 0x45, 0x9e, 0xb5, 0x32, 0x95, 0xdf, 0x94, 0x64, + 0x7f, 0x28, 0xb0, 0x98, 0xa4, 0x9c, 0x6d, 0xcf, 0xcd, 0xcc, 0x16, 0x97, 0xc8, 0x35, 0xed, 0xb0, + 0xdc, 0xcc, 0x0e, 0xcb, 0x67, 0x3b, 0x2c, 0xd3, 0x32, 0x85, 0x89, 0x96, 0xb9, 0xe4, 0xfc, 0x51, + 0xb7, 0xe1, 0x96, 0xe6, 0x60, 0x6a, 0x77, 0x58, 0xc8, 0xc4, 0xc4, 0x72, 0xca, 0xde, 0x85, 0x2a, + 0x27, 0x26, 0xf5, 0x28, 0x71, 0x85, 0x6f, 0x90, 0xd0, 0x2f, 0xab, 0xbe, 0xac, 0xdf, 0x1c, 0xaf, + 0xcb, 0x30, 0x75, 0x07, 0x6e, 0x1f, 0xe1, 0x21, 0xe1, 0xad, 0x40, 0x8c, 0xae, 0xba, 0xc7, 0x36, + 0xdc, 0xea, 0xda, 0xd8, 0x3c, 0xbd, 0x6a, 0xfc, 0xef, 0x39, 0xb8, 0x3e, 0x11, 0xbb, 0x0d, 0x25, + 0xef, 0x04, 0xfb, 0x71, 0xaf, 0x2e, 0x6c, 0xbc, 0x37, 0x75, 0x8f, 0x5f, 0x31, 0x7e, 0x3a, 0xb0, + 0xd9, 0x0b, 0x2d, 0x7d, 0x9e, 0x1c, 0x85, 0x70, 0x3d, 0x8e, 0x42, 0x0f, 0xa1, 0x18, 0x1d, 0x18, + 0xd5, 0xeb, 0xdb, 0xd3, 0x0a, 0x9e, 0x51, 0x6c, 0x7f, 0x4e, 0x8f, 0x22, 0xd0, 0x17, 0x00, 0x5e, + 0xa8, 0x87, 0x61, 0x05, 0x62, 0x14, 0x97, 0xec, 0x99, 0x1a, 0x98, 0xa9, 0xd8, 0xfe, 0x9c, 0x5e, + 0xf6, 0x12, 0x47, 0x48, 0xc1, 0x0f, 0x35, 0x91, 0xd7, 0x3b, 0x83, 0xc2, 0x19, 0xc1, 0x42, 0x0a, + 0x32, 0x62, 0xa7, 0x04, 0x85, 0xb0, 0x47, 0xd5, 0x4d, 0x98, 0x7f, 0xca, 0xed, 0x1d, 0x9b, 0xf5, + 0xc3, 0x6f, 0x72, 0xc0, 0xed, 0xe4, 0x9b, 0x1c, 0x70, 0x3b, 0x2c, 0xab, 0xfe, 0x48, 0x10, 0x5f, + 0xa6, 0x98, 0xd7, 0x23, 0x63, 0x2b, 0x57, 0x53, 0xd4, 0x9f, 0xa0, 0x74, 0x80, 0xfb, 0xc4, 0xf6, + 0xd1, 0x16, 0x94, 0x9e, 0x63, 0x3b, 0x48, 0x47, 0x9e, 0x3a, 0x4d, 0x22, 0xc2, 0xd5, 0x8f, 0x25, + 0x48, 0x73, 0x05, 0x1f, 0xe9, 0x71, 0xc4, 0xea, 0x43, 0xa8, 0x64, 0x96, 0x67, 0x3c, 0x0a, 0x96, + 0xa0, 0x28, 0xa1, 0xc9, 0x60, 0x94, 0xc6, 0x56, 0xee, 0x53, 0x45, 0xfd, 0x55, 0x81, 0x4a, 0xd3, + 0x75, 0x99, 0x90, 0x79, 0xf9, 0xe8, 0xf1, 0x14, 0x8d, 0xf7, 0xa7, 0x69, 0x64, 0xc0, 0xaf, 0x9b, + 0xcb, 0x8f, 0x70, 0xad, 0x19, 0x88, 0x13, 0x9d, 0xd9, 0x04, 0x7d, 0x08, 0x08, 0xfb, 0x7e, 0xe0, + 0xe0, 0xbe, 0x4d, 0x0c, 0x8a, 0x1d, 0x83, 0x33, 0x9b, 0xc4, 0xdb, 0x54, 0x53, 0x4f, 0x1b, 0x3b, + 0x12, 0xfd, 0x08, 0x56, 0x4f, 0x83, 0x3e, 0xe1, 0x2e, 0x11, 0xc4, 0x37, 0x7c, 0xc2, 0x9f, 0x53, + 0x93, 0x18, 0xd8, 0x34, 0x59, 0xe0, 0x26, 0x1f, 0xdd, 0xda, 0x18, 0xd1, 0x8d, 0x00, 0xcd, 0xc8, + 0x2f, 0x2f, 0xe2, 0x4b, 0x58, 0xd4, 0xf1, 0x8b, 0x27, 0x81, 0xf0, 0x02, 0xd1, 0xc2, 0x02, 0xef, + 0x32, 0x77, 0x40, 0x87, 0xe8, 0x63, 0x58, 0x66, 0x72, 0xcd, 0xb0, 0x59, 0x74, 0xf5, 0x86, 0xc7, + 0xc9, 0x80, 0xbe, 0x8c, 0xa9, 0x2c, 0x45, 0xde, 0x83, 0xd8, 0x79, 0x24, 0x7d, 0xf7, 0xbe, 0x81, + 0xea, 0xf4, 0x1b, 0x14, 0xbd, 0x01, 0x8b, 0x9d, 0xe6, 0xa1, 0xd6, 0x32, 0xb4, 0x4e, 0xaf, 0xdd, + 0x7b, 0x66, 0x34, 0x77, 0x7b, 0xed, 0x63, 0xad, 0x3a, 0x87, 0x56, 0xe0, 0xf6, 0xa4, 0x43, 0xdf, + 0xdd, 0x6f, 0x1f, 0x6b, 0xad, 0xaa, 0x82, 0x96, 0xa0, 0xda, 0x7d, 0xd6, 0xed, 0x69, 0x87, 0xc6, + 0x9e, 0xd6, 0xd1, 0xf4, 0x66, 0x4f, 0x6b, 0x55, 0x73, 0x3b, 0x0f, 0xbe, 0xde, 0x1c, 0x52, 0x71, + 0x12, 0xf4, 0xeb, 0x26, 0x73, 0x1a, 0xf2, 0x7a, 0x18, 0x1f, 0x36, 0xd2, 0xd7, 0xfe, 0x90, 0xb8, + 0x0d, 0xaf, 0x7f, 0x7f, 0xc8, 0x1a, 0x93, 0x7f, 0x26, 0xfa, 0x25, 0xf9, 0xac, 0xff, 0xe8, 0x9f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x5f, 0xa6, 0x64, 0x65, 0x0c, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/execution.pb.go b/gen/pb-go/flyteidl/admin/execution.pb.go index 97f79a51e..815df9754 100644 --- a/gen/pb-go/flyteidl/admin/execution.pb.go +++ b/gen/pb-go/flyteidl/admin/execution.pb.go @@ -1579,6 +1579,98 @@ func (m *ExecutionUpdateResponse) XXX_DiscardUnknown() { var xxx_messageInfo_ExecutionUpdateResponse proto.InternalMessageInfo +// WorkflowExecutionGetMetricsRequest represents a request to retrieve metrics for the specified workflow execution. +type WorkflowExecutionGetMetricsRequest struct { + // id defines the workflow execution to query for. + Id *core.WorkflowExecutionIdentifier `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // depth defines the number of Flyte entity levels to traverse when breaking down execution details. + Depth int32 `protobuf:"varint,2,opt,name=depth,proto3" json:"depth,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WorkflowExecutionGetMetricsRequest) Reset() { *m = WorkflowExecutionGetMetricsRequest{} } +func (m *WorkflowExecutionGetMetricsRequest) String() string { return proto.CompactTextString(m) } +func (*WorkflowExecutionGetMetricsRequest) ProtoMessage() {} +func (*WorkflowExecutionGetMetricsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_4e2785d91b3809ec, []int{21} +} + +func (m *WorkflowExecutionGetMetricsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WorkflowExecutionGetMetricsRequest.Unmarshal(m, b) +} +func (m *WorkflowExecutionGetMetricsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WorkflowExecutionGetMetricsRequest.Marshal(b, m, deterministic) +} +func (m *WorkflowExecutionGetMetricsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkflowExecutionGetMetricsRequest.Merge(m, src) +} +func (m *WorkflowExecutionGetMetricsRequest) XXX_Size() int { + return xxx_messageInfo_WorkflowExecutionGetMetricsRequest.Size(m) +} +func (m *WorkflowExecutionGetMetricsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_WorkflowExecutionGetMetricsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkflowExecutionGetMetricsRequest proto.InternalMessageInfo + +func (m *WorkflowExecutionGetMetricsRequest) GetId() *core.WorkflowExecutionIdentifier { + if m != nil { + return m.Id + } + return nil +} + +func (m *WorkflowExecutionGetMetricsRequest) GetDepth() int32 { + if m != nil { + return m.Depth + } + return 0 +} + +// WorkflowExecutionGetMetricsResponse represents the response containing metrics for the specified workflow execution. +type WorkflowExecutionGetMetricsResponse struct { + // Span defines the top-level breakdown of the workflows execution. More precise information is nested in a + // hierarchical structure using Flyte entity references. + Span *core.Span `protobuf:"bytes,1,opt,name=span,proto3" json:"span,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WorkflowExecutionGetMetricsResponse) Reset() { *m = WorkflowExecutionGetMetricsResponse{} } +func (m *WorkflowExecutionGetMetricsResponse) String() string { return proto.CompactTextString(m) } +func (*WorkflowExecutionGetMetricsResponse) ProtoMessage() {} +func (*WorkflowExecutionGetMetricsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_4e2785d91b3809ec, []int{22} +} + +func (m *WorkflowExecutionGetMetricsResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WorkflowExecutionGetMetricsResponse.Unmarshal(m, b) +} +func (m *WorkflowExecutionGetMetricsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WorkflowExecutionGetMetricsResponse.Marshal(b, m, deterministic) +} +func (m *WorkflowExecutionGetMetricsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkflowExecutionGetMetricsResponse.Merge(m, src) +} +func (m *WorkflowExecutionGetMetricsResponse) XXX_Size() int { + return xxx_messageInfo_WorkflowExecutionGetMetricsResponse.Size(m) +} +func (m *WorkflowExecutionGetMetricsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_WorkflowExecutionGetMetricsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkflowExecutionGetMetricsResponse proto.InternalMessageInfo + +func (m *WorkflowExecutionGetMetricsResponse) GetSpan() *core.Span { + if m != nil { + return m.Span + } + return nil +} + func init() { proto.RegisterEnum("flyteidl.admin.ExecutionState", ExecutionState_name, ExecutionState_value) proto.RegisterEnum("flyteidl.admin.ExecutionMetadata_ExecutionMode", ExecutionMetadata_ExecutionMode_name, ExecutionMetadata_ExecutionMode_value) @@ -1603,119 +1695,124 @@ func init() { proto.RegisterType((*ExecutionUpdateRequest)(nil), "flyteidl.admin.ExecutionUpdateRequest") proto.RegisterType((*ExecutionStateChangeDetails)(nil), "flyteidl.admin.ExecutionStateChangeDetails") proto.RegisterType((*ExecutionUpdateResponse)(nil), "flyteidl.admin.ExecutionUpdateResponse") + proto.RegisterType((*WorkflowExecutionGetMetricsRequest)(nil), "flyteidl.admin.WorkflowExecutionGetMetricsRequest") + proto.RegisterType((*WorkflowExecutionGetMetricsResponse)(nil), "flyteidl.admin.WorkflowExecutionGetMetricsResponse") } func init() { proto.RegisterFile("flyteidl/admin/execution.proto", fileDescriptor_4e2785d91b3809ec) } var fileDescriptor_4e2785d91b3809ec = []byte{ - // 1730 bytes of a gzipped FileDescriptorProto + // 1783 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, 0xa2, 0x0e, 0x4d, 0x9a, 0x5e, 0x3b, 0x0a, 0x2c, 0x3b, 0xb6, 0x82, 0x4e, - 0x1b, 0x4f, 0x32, 0x25, 0x27, 0x4a, 0x35, 0x99, 0xb8, 0x75, 0x26, 0x14, 0x45, 0x87, 0x4a, 0xf5, - 0xe3, 0xae, 0x7e, 0x9c, 0xa4, 0x93, 0x41, 0x97, 0xc0, 0x92, 0x42, 0xb3, 0xc0, 0xc2, 0x8b, 0x85, - 0x65, 0xbf, 0x41, 0xa7, 0x4f, 0xd0, 0xbe, 0x41, 0xaf, 0x7a, 0xd9, 0x8b, 0x5e, 0xf7, 0x09, 0xfa, - 0x44, 0x19, 0x2c, 0x16, 0x20, 0x00, 0x52, 0x96, 0x3c, 0xf6, 0x1d, 0xf7, 0x9c, 0xef, 0x1c, 0x9c, - 0x3d, 0xff, 0x4b, 0x78, 0x30, 0x61, 0xaf, 0x25, 0x75, 0x1d, 0xd6, 0x23, 0x8e, 0xe7, 0xfa, 0x3d, - 0xfa, 0x8a, 0xda, 0x91, 0x74, 0xb9, 0xdf, 0x0d, 0x04, 0x97, 0x1c, 0xb5, 0x53, 0x7e, 0x57, 0xf1, - 0x37, 0x3e, 0x29, 0xe1, 0x6d, 0x16, 0x85, 0x92, 0x0a, 0x8b, 0x84, 0xa1, 0x3b, 0xf5, 0x3d, 0xea, - 0xcb, 0x44, 0x70, 0xe3, 0x5e, 0x19, 0xc8, 0x3d, 0x2f, 0xd5, 0xba, 0x71, 0x3f, 0x63, 0xda, 0x5c, - 0xd0, 0x1e, 0x73, 0x25, 0x15, 0x84, 0x85, 0x9a, 0xfb, 0x51, 0x91, 0x5b, 0x32, 0x69, 0xe3, 0x41, - 0x91, 0xed, 0x3a, 0xd4, 0x97, 0xee, 0xc4, 0xa5, 0x62, 0xb1, 0xf2, 0x90, 0xda, 0x91, 0x70, 0xe5, - 0xeb, 0x54, 0x7a, 0xca, 0xf9, 0x94, 0xd1, 0x9e, 0x3a, 0x8d, 0xa3, 0x49, 0xcf, 0x89, 0x04, 0xc9, - 0x69, 0x7f, 0x58, 0xe6, 0x4b, 0xd7, 0xa3, 0xa1, 0x24, 0x5e, 0x70, 0x99, 0x82, 0x0b, 0x41, 0x82, - 0x80, 0x0a, 0x6d, 0xbd, 0xf9, 0xbf, 0x0a, 0xac, 0x0f, 0x53, 0x93, 0x07, 0x82, 0x12, 0x49, 0x31, - 0x7d, 0x11, 0xd1, 0x50, 0x22, 0x03, 0x56, 0x03, 0xc1, 0xff, 0x4a, 0x6d, 0x69, 0x54, 0x36, 0x2b, - 0x8f, 0xd6, 0x70, 0x7a, 0x44, 0xeb, 0xb0, 0xe2, 0x70, 0x8f, 0xb8, 0xbe, 0x51, 0x55, 0x0c, 0x7d, - 0x42, 0x08, 0x6a, 0x3e, 0xf1, 0xa8, 0xb1, 0xac, 0xa8, 0xea, 0x37, 0xfa, 0x1c, 0x6a, 0x61, 0x40, - 0x6d, 0xa3, 0xb6, 0x59, 0x79, 0xd4, 0xdc, 0xfa, 0xa8, 0x5b, 0x8c, 0x50, 0x37, 0xfb, 0xf6, 0x71, - 0x40, 0x6d, 0xac, 0xa0, 0xe8, 0x73, 0x58, 0x71, 0xfd, 0x20, 0x92, 0xa1, 0x51, 0x57, 0x42, 0x77, - 0x67, 0x42, 0xb1, 0x8f, 0xba, 0xfb, 0x49, 0x00, 0x0e, 0x48, 0x80, 0x35, 0xd0, 0xfc, 0x67, 0x05, - 0x8c, 0x4c, 0x15, 0xa6, 0x8c, 0x44, 0xbe, 0x7d, 0x9e, 0x5e, 0xe4, 0x31, 0x54, 0x5d, 0x47, 0xdd, - 0xa1, 0xb9, 0xf5, 0x69, 0x49, 0xd7, 0x73, 0x2e, 0x7e, 0x9e, 0x30, 0x7e, 0x91, 0x09, 0xef, 0x65, - 0x01, 0xc2, 0x55, 0xd7, 0x59, 0x78, 0xa5, 0x4f, 0xe0, 0x26, 0x7f, 0x49, 0xc5, 0x85, 0x70, 0x25, - 0xb5, 0x6c, 0x62, 0x9f, 0x53, 0x75, 0xbb, 0x06, 0x6e, 0x67, 0xe4, 0x41, 0x4c, 0xfd, 0xae, 0xd6, - 0xa8, 0x76, 0x96, 0xcd, 0x7f, 0x55, 0xe0, 0xc3, 0x9c, 0x6d, 0x76, 0x0c, 0x7a, 0x9f, 0xa6, 0x55, - 0x73, 0xa6, 0x3d, 0x81, 0x86, 0x47, 0x25, 0x71, 0x88, 0x24, 0xca, 0xe4, 0xe6, 0xd6, 0xc7, 0x97, - 0x7a, 0xfc, 0x40, 0x03, 0x71, 0x26, 0x62, 0x9e, 0xe6, 0x2c, 0x4d, 0x93, 0x21, 0x0c, 0xb8, 0x1f, - 0xd2, 0x77, 0xb1, 0xd4, 0xfc, 0x01, 0xee, 0xcd, 0x41, 0xbe, 0xa5, 0xf2, 0x3d, 0x38, 0xc1, 0xfc, - 0x4f, 0x05, 0xd6, 0x32, 0xde, 0x3b, 0xb9, 0x33, 0x4d, 0xd4, 0xea, 0xf5, 0x13, 0xf5, 0x31, 0xac, - 0xda, 0x8c, 0x87, 0x91, 0xa0, 0xda, 0xd9, 0x9b, 0x97, 0x4a, 0x0d, 0x12, 0x1c, 0x4e, 0x05, 0xcc, - 0xbf, 0x40, 0x2b, 0x63, 0xee, 0xbb, 0xa1, 0x44, 0x5f, 0x01, 0x64, 0xbd, 0x23, 0x34, 0x2a, 0x9b, - 0xcb, 0xc5, 0xcc, 0x2f, 0xe9, 0xc3, 0x39, 0x30, 0xba, 0x03, 0x75, 0xc9, 0x7f, 0xa6, 0x69, 0x39, - 0x26, 0x07, 0x93, 0x42, 0x7b, 0x56, 0x29, 0x3b, 0x8c, 0x8f, 0xd1, 0x97, 0xb0, 0xf2, 0x92, 0xb0, - 0x88, 0x86, 0xda, 0x45, 0x97, 0x17, 0xd6, 0x4e, 0xd5, 0xa8, 0x8c, 0x96, 0xb0, 0x86, 0x23, 0x04, - 0xcb, 0x91, 0x70, 0x13, 0xf5, 0xa3, 0x25, 0x1c, 0x1f, 0x76, 0x56, 0xa0, 0xa6, 0x72, 0x66, 0x00, - 0xad, 0xfe, 0x98, 0x0b, 0x99, 0xa6, 0x53, 0x6c, 0x8d, 0x4d, 0xa2, 0x90, 0xea, 0xae, 0x91, 0x1c, - 0xd0, 0x7d, 0x58, 0x0b, 0x84, 0xeb, 0xdb, 0x6e, 0x40, 0x98, 0xb6, 0x73, 0x46, 0x30, 0xff, 0xb1, - 0x0a, 0x9d, 0xb2, 0xaf, 0xd0, 0xd7, 0xb0, 0xca, 0x23, 0xa9, 0x1a, 0x41, 0x62, 0xef, 0x83, 0xb2, - 0x3b, 0x8a, 0xf7, 0xd3, 0x46, 0xa7, 0x42, 0x68, 0x1b, 0xea, 0x54, 0x08, 0x2e, 0xe6, 0x43, 0xaa, - 0x6e, 0x9b, 0x7d, 0x6f, 0x18, 0x83, 0x46, 0x4b, 0x38, 0x41, 0xa3, 0x5f, 0x43, 0x93, 0xc4, 0x17, - 0xb2, 0x92, 0x5b, 0x40, 0x6c, 0xab, 0x56, 0x0d, 0x8a, 0x31, 0x50, 0x17, 0x7a, 0x0a, 0xed, 0x04, - 0x96, 0x15, 0xdc, 0x8d, 0xc5, 0x99, 0x53, 0xf0, 0xce, 0x68, 0x09, 0xb7, 0x48, 0xc1, 0x5d, 0xdf, - 0x40, 0x33, 0x31, 0xd8, 0x52, 0x4a, 0x5a, 0xd7, 0x8b, 0x0c, 0x24, 0x32, 0xbb, 0xb1, 0x86, 0xa7, - 0x70, 0xd3, 0xe6, 0x5e, 0x10, 0x49, 0xea, 0x58, 0xba, 0x71, 0x2e, 0x5f, 0x43, 0x0b, 0x6e, 0xa7, - 0x52, 0x7b, 0x4a, 0x08, 0xfd, 0x01, 0xea, 0xc1, 0x39, 0x09, 0x93, 0x6e, 0xd6, 0xde, 0xfa, 0xcd, - 0x55, 0x05, 0xd4, 0x7d, 0x16, 0xa3, 0x71, 0x22, 0x14, 0xe7, 0x6f, 0x28, 0x89, 0x88, 0x8d, 0x20, - 0x52, 0x77, 0xee, 0x8d, 0x6e, 0x32, 0x7e, 0xba, 0xe9, 0xf8, 0xe9, 0x9e, 0xa4, 0xf3, 0x09, 0xaf, - 0x69, 0x74, 0x5f, 0xa2, 0x6d, 0x68, 0xa4, 0x73, 0xcd, 0x58, 0xd1, 0x96, 0x97, 0x05, 0x77, 0x35, - 0x00, 0x67, 0xd0, 0xf8, 0x8b, 0xb6, 0x6a, 0x52, 0xea, 0x8b, 0xab, 0x57, 0x7f, 0x51, 0xa3, 0xfb, - 0xaa, 0xd8, 0xa2, 0xc0, 0x49, 0x45, 0x1b, 0x57, 0x8b, 0x6a, 0x74, 0x5f, 0xa2, 0x1d, 0x68, 0xf9, - 0x3c, 0xee, 0x1b, 0x36, 0x49, 0x4a, 0x75, 0x4d, 0x95, 0xea, 0xfd, 0x72, 0xd8, 0x0f, 0x73, 0x20, - 0x5c, 0x14, 0x41, 0x8f, 0xa1, 0x79, 0xa1, 0xbd, 0x69, 0xb9, 0x8e, 0xd1, 0x5c, 0x18, 0xad, 0x5c, - 0x7f, 0x82, 0x14, 0xbd, 0xe7, 0xa0, 0x9f, 0xe0, 0x4e, 0x28, 0x49, 0x3c, 0x79, 0xce, 0x89, 0x3f, - 0xa5, 0x96, 0x43, 0x25, 0x71, 0x59, 0x68, 0xb4, 0x95, 0x92, 0xcf, 0x2e, 0xef, 0x5b, 0xb1, 0xd0, - 0x40, 0xc9, 0xec, 0x26, 0x22, 0x18, 0x85, 0x73, 0xb4, 0x9d, 0x9b, 0xd0, 0xd2, 0xe9, 0x28, 0x68, - 0x18, 0x31, 0x69, 0x3e, 0x81, 0xf6, 0xf1, 0xeb, 0x50, 0x52, 0x2f, 0xcb, 0xd8, 0xcf, 0xe0, 0x56, - 0xd6, 0x7c, 0x2c, 0xbd, 0x52, 0xe9, 0x62, 0xef, 0xd0, 0x59, 0x11, 0x2b, 0xba, 0xf9, 0xdf, 0x1a, - 0xdc, 0x9a, 0x1b, 0x39, 0x68, 0x00, 0x35, 0x8f, 0x3b, 0x49, 0x8b, 0x68, 0x6f, 0xf5, 0xae, 0x9c, - 0x51, 0x39, 0x0a, 0x77, 0x28, 0x56, 0xc2, 0x6f, 0x6e, 0x29, 0xf1, 0xfa, 0xe2, 0xd3, 0x50, 0xba, - 0xfe, 0x54, 0x55, 0x43, 0x0b, 0xa7, 0x47, 0xf4, 0x04, 0x6e, 0x84, 0xf6, 0x39, 0x75, 0x22, 0x96, - 0x84, 0xbf, 0x76, 0x65, 0xf8, 0x9b, 0x19, 0xbe, 0x2f, 0xd1, 0x8f, 0xf0, 0x41, 0x40, 0x04, 0xf5, - 0xa5, 0xe5, 0x73, 0x87, 0x5a, 0xd9, 0x8d, 0x75, 0xce, 0x97, 0xcb, 0xe6, 0x90, 0x3b, 0x74, 0xd1, - 0xcc, 0xb9, 0x9d, 0x28, 0x29, 0xb0, 0xd1, 0x9f, 0xe1, 0xb6, 0xa0, 0x13, 0x2a, 0xa8, 0x6f, 0xe7, - 0x35, 0x77, 0xde, 0x7a, 0xa2, 0xa1, 0x4c, 0xcd, 0x4c, 0xf9, 0xb7, 0x70, 0x33, 0x54, 0x91, 0x9c, - 0xb5, 0xac, 0x5b, 0x8b, 0xfb, 0x6a, 0x31, 0xe0, 0xb8, 0x1d, 0x16, 0xce, 0xe6, 0x34, 0x37, 0xbb, - 0xe2, 0x78, 0x20, 0x80, 0x95, 0x83, 0xfe, 0xe1, 0x69, 0x7f, 0xbf, 0xb3, 0x84, 0x5a, 0xb0, 0x76, - 0x3c, 0x18, 0x0d, 0x77, 0x4f, 0xf7, 0x87, 0xbb, 0x9d, 0x4a, 0xcc, 0x3a, 0xfe, 0xe1, 0xf8, 0x64, - 0x78, 0xd0, 0xa9, 0xa2, 0x1b, 0xd0, 0xc0, 0xc3, 0xfd, 0xfe, 0xe9, 0xe1, 0x60, 0xd4, 0x59, 0x46, - 0x08, 0xda, 0x83, 0xd1, 0xde, 0xfe, 0xae, 0xf5, 0xfc, 0x08, 0xff, 0xf1, 0xe9, 0xfe, 0xd1, 0xf3, - 0x4e, 0x2d, 0x16, 0xc6, 0xc3, 0xc1, 0xd1, 0xd9, 0x10, 0x0f, 0x77, 0x3b, 0x75, 0xf3, 0x0c, 0x3a, - 0xf9, 0x32, 0x52, 0x73, 0x72, 0xae, 0xfe, 0x2a, 0x6f, 0x5d, 0x7f, 0xe6, 0xff, 0x57, 0x73, 0x37, - 0x38, 0x4e, 0x46, 0x79, 0x33, 0x59, 0x1a, 0xad, 0x80, 0x11, 0xff, 0x92, 0xf9, 0x98, 0xaf, 0xc8, - 0x04, 0xfd, 0x8c, 0x11, 0x1f, 0x6d, 0x67, 0xfb, 0x6a, 0xf5, 0x3a, 0x6d, 0x57, 0x83, 0xdf, 0x71, - 0x57, 0x43, 0xa3, 0xb2, 0x1f, 0xea, 0x8b, 0x57, 0x90, 0xb2, 0x03, 0xe3, 0x09, 0x54, 0xec, 0x46, - 0x1f, 0x43, 0xd3, 0x71, 0x43, 0x32, 0x66, 0xd4, 0x22, 0x8c, 0xa9, 0x0e, 0xdc, 0x88, 0x47, 0x8c, - 0x26, 0xf6, 0x19, 0x43, 0x5d, 0x58, 0x61, 0x64, 0x4c, 0x59, 0xa8, 0xdb, 0xec, 0xfa, 0xdc, 0x24, - 0x56, 0x5c, 0xac, 0x51, 0xe8, 0x09, 0x34, 0x89, 0xef, 0x73, 0xa9, 0x4d, 0x4b, 0x1a, 0xec, 0xbd, - 0xb9, 0xc9, 0x38, 0x83, 0xe0, 0x3c, 0x1e, 0xed, 0x41, 0x27, 0x7d, 0x08, 0x59, 0x36, 0xf7, 0x25, - 0x7d, 0x25, 0xd5, 0x1c, 0x2e, 0xa4, 0xaa, 0xf2, 0xed, 0xb1, 0x86, 0x0d, 0x12, 0x14, 0xbe, 0x19, - 0x16, 0x09, 0xe8, 0x2b, 0x58, 0x23, 0x91, 0x3c, 0xb7, 0x04, 0x67, 0x54, 0xd7, 0x91, 0x31, 0x67, - 0x47, 0x24, 0xcf, 0x31, 0x67, 0x54, 0x85, 0xa7, 0x41, 0xf4, 0x09, 0x1d, 0x00, 0x7a, 0x11, 0x11, - 0x16, 0x1b, 0xc1, 0x27, 0x56, 0x48, 0xc5, 0x4b, 0xd7, 0xa6, 0xba, 0x64, 0x1e, 0x96, 0xec, 0xf8, - 0x53, 0x02, 0x3c, 0x9a, 0x1c, 0x27, 0x30, 0xdc, 0x79, 0x51, 0xa2, 0xc4, 0xcf, 0x06, 0x8f, 0xbc, - 0xb2, 0x02, 0x22, 0x08, 0x63, 0x94, 0xb9, 0xa1, 0x67, 0xa0, 0xcd, 0xca, 0xa3, 0x3a, 0x6e, 0x7b, - 0xe4, 0xd5, 0xb3, 0x19, 0x15, 0x7d, 0x0f, 0xeb, 0x82, 0x5c, 0x58, 0xb9, 0xad, 0x20, 0x76, 0xc2, - 0xc4, 0x9d, 0x1a, 0xb7, 0xd5, 0xb7, 0x7f, 0x55, 0xb6, 0x1f, 0x93, 0x8b, 0xa3, 0x6c, 0x1d, 0x18, - 0x28, 0x28, 0xbe, 0x2d, 0xe6, 0x89, 0xe8, 0x19, 0xa0, 0xf9, 0x27, 0xb0, 0x71, 0x67, 0x71, 0xf2, - 0xe9, 0x0e, 0xde, 0xcf, 0x80, 0xf8, 0x96, 0x5d, 0x26, 0xa1, 0x6f, 0xa0, 0xe5, 0xfa, 0x92, 0x0a, - 0x11, 0x05, 0xd2, 0x1d, 0x33, 0x6a, 0x7c, 0x70, 0x49, 0x33, 0xdd, 0xe1, 0x9c, 0x9d, 0xc5, 0xdb, - 0x24, 0x2e, 0x0a, 0x2c, 0x7a, 0x4d, 0xad, 0x2f, 0x7a, 0x4d, 0xed, 0x18, 0xb0, 0x9e, 0xcf, 0x5b, - 0x2b, 0x66, 0x0b, 0xd7, 0xa1, 0xe1, 0x77, 0xb5, 0x46, 0xad, 0x53, 0x37, 0x3d, 0xb8, 0x9b, 0xd5, - 0xcb, 0x09, 0x15, 0x9e, 0xeb, 0xe7, 0x1e, 0xb3, 0xef, 0xf2, 0x32, 0xc8, 0x16, 0xda, 0x6a, 0x6e, - 0xa1, 0x35, 0xef, 0xc3, 0xc6, 0xa2, 0xcf, 0x25, 0xcf, 0x25, 0xf3, 0x27, 0x78, 0xb8, 0xe8, 0xc9, - 0x13, 0xc7, 0xe2, 0x7d, 0x3c, 0x7b, 0xfe, 0x56, 0x85, 0xcd, 0xcb, 0xf5, 0xeb, 0x27, 0xdb, 0x76, - 0x79, 0x7f, 0xfe, 0xb0, 0x1c, 0xe2, 0x53, 0xc1, 0xd2, 0xc5, 0x79, 0xb6, 0x36, 0x7f, 0x51, 0x6a, - 0x67, 0x6f, 0x94, 0x4a, 0x9b, 0xd9, 0x63, 0x68, 0x4e, 0x22, 0xc6, 0xae, 0xbb, 0x7f, 0x62, 0x88, - 0xd1, 0xd9, 0xde, 0x79, 0x43, 0xc9, 0xa6, 0xc6, 0xd6, 0xae, 0x12, 0x56, 0x9f, 0x4a, 0x92, 0x3b, - 0x34, 0xff, 0x9e, 0xff, 0x07, 0xe3, 0x54, 0xad, 0x69, 0xef, 0x23, 0xe8, 0xbf, 0x83, 0xba, 0xda, - 0x8e, 0x94, 0x13, 0xda, 0xf3, 0x23, 0xb2, 0xb8, 0x57, 0xe1, 0x04, 0x6c, 0xfe, 0xbb, 0x02, 0xf7, - 0xde, 0xb0, 0x71, 0xcd, 0xb4, 0x56, 0xde, 0x42, 0x2b, 0xfa, 0x3d, 0x34, 0xb9, 0x6d, 0x47, 0x42, - 0x24, 0xfb, 0x4a, 0xf5, 0xca, 0x7d, 0x05, 0x52, 0x78, 0x5f, 0x16, 0xb7, 0xa4, 0xe5, 0xf2, 0xc3, - 0xeb, 0x6e, 0xee, 0xc5, 0x9f, 0x3a, 0x2f, 0x49, 0x9f, 0x4f, 0xbf, 0x86, 0x76, 0xd1, 0x1c, 0x74, - 0x07, 0x3a, 0xc3, 0xef, 0x87, 0x83, 0xd3, 0x93, 0xbd, 0xa3, 0x43, 0xab, 0x3f, 0x38, 0xd9, 0x3b, - 0x1b, 0x76, 0x96, 0xd0, 0x3a, 0xa0, 0x1c, 0x15, 0x0f, 0x46, 0x7b, 0x67, 0xf1, 0xe4, 0xdf, 0xf9, - 0xf2, 0xc7, 0xed, 0xa9, 0x2b, 0xcf, 0xa3, 0x71, 0xd7, 0xe6, 0x5e, 0x4f, 0x5d, 0x94, 0x8b, 0x69, - 0x2f, 0xfb, 0xbf, 0x6b, 0x4a, 0xfd, 0x5e, 0x30, 0xfe, 0xed, 0x94, 0xf7, 0x8a, 0x7f, 0xbe, 0x8d, - 0x57, 0xd4, 0x8d, 0xbe, 0xf8, 0x25, 0x00, 0x00, 0xff, 0xff, 0x26, 0xb3, 0xd4, 0x61, 0xee, 0x13, - 0x00, 0x00, + 0x15, 0x16, 0x29, 0x52, 0x3f, 0x87, 0x16, 0x45, 0xaf, 0x1c, 0x05, 0x96, 0x1d, 0x5b, 0x41, 0xa6, + 0xb5, 0x27, 0x99, 0x92, 0x13, 0xa5, 0x9a, 0x4c, 0xdc, 0x3a, 0x13, 0x8a, 0xa2, 0x23, 0xa5, 0xfa, + 0x71, 0x57, 0x3f, 0x4e, 0xd2, 0xc9, 0xa0, 0x4b, 0x60, 0x49, 0xa2, 0x06, 0xb0, 0xf0, 0xee, 0xc2, + 0xb2, 0xdf, 0xa0, 0xd3, 0x27, 0x68, 0xdf, 0xa0, 0x57, 0xbd, 0xec, 0x45, 0xaf, 0xfb, 0x04, 0x7d, + 0xa2, 0x0e, 0x16, 0x0b, 0x10, 0x00, 0x29, 0x4b, 0x1e, 0xeb, 0x0e, 0xbb, 0xe7, 0x3b, 0x67, 0xcf, + 0x9e, 0xff, 0x05, 0x3c, 0x18, 0x7a, 0x6f, 0x25, 0x75, 0x1d, 0xaf, 0x43, 0x1c, 0xdf, 0x0d, 0x3a, + 0xf4, 0x0d, 0xb5, 0x23, 0xe9, 0xb2, 0xa0, 0x1d, 0x72, 0x26, 0x19, 0x6a, 0xa6, 0xf4, 0xb6, 0xa2, + 0x6f, 0x3c, 0x2a, 0xe1, 0x6d, 0x2f, 0x12, 0x92, 0x72, 0x8b, 0x08, 0xe1, 0x8e, 0x02, 0x9f, 0x06, + 0x32, 0x61, 0xdc, 0xb8, 0x57, 0x06, 0x32, 0xdf, 0x4f, 0xa5, 0x6e, 0xdc, 0xcf, 0x88, 0x36, 0xe3, + 0xb4, 0xe3, 0xb9, 0x92, 0x72, 0xe2, 0x09, 0x4d, 0xfd, 0xa4, 0x48, 0x2d, 0xa9, 0xb4, 0xf1, 0xa0, + 0x48, 0x76, 0x1d, 0x1a, 0x48, 0x77, 0xe8, 0x52, 0x3e, 0x75, 0xb2, 0xa2, 0xfb, 0x54, 0x72, 0xd7, + 0x16, 0xb3, 0x4f, 0x16, 0xd4, 0x8e, 0xb8, 0x2b, 0xdf, 0xa6, 0xa2, 0x47, 0x8c, 0x8d, 0x3c, 0xda, + 0x51, 0xab, 0x41, 0x34, 0xec, 0x38, 0x11, 0x27, 0xb9, 0xa3, 0x1f, 0x96, 0xe9, 0xd2, 0xf5, 0xa9, + 0x90, 0xc4, 0x0f, 0x2f, 0x13, 0x70, 0xc1, 0x49, 0x18, 0x52, 0xae, 0x8f, 0x37, 0xff, 0x5b, 0x81, + 0xf5, 0x7e, 0x7a, 0x9f, 0x1e, 0xa7, 0x44, 0x52, 0x4c, 0x5f, 0x45, 0x54, 0x48, 0x64, 0xc0, 0x62, + 0xc8, 0xd9, 0x5f, 0xa8, 0x2d, 0x8d, 0xca, 0x66, 0xe5, 0xf1, 0x32, 0x4e, 0x97, 0x68, 0x1d, 0x16, + 0x1c, 0xe6, 0x13, 0x37, 0x30, 0xaa, 0x8a, 0xa0, 0x57, 0x08, 0x41, 0x2d, 0x20, 0x3e, 0x35, 0xe6, + 0xd5, 0xae, 0xfa, 0x46, 0x5f, 0x42, 0x4d, 0x84, 0xd4, 0x36, 0x6a, 0x9b, 0x95, 0xc7, 0x8d, 0xad, + 0x4f, 0xda, 0x45, 0xf7, 0xb5, 0xb3, 0xb3, 0x4f, 0x42, 0x6a, 0x63, 0x05, 0x45, 0x5f, 0xc2, 0x82, + 0x1b, 0x84, 0x91, 0x14, 0x46, 0x5d, 0x31, 0xdd, 0x9d, 0x30, 0xc5, 0x36, 0x6a, 0x1f, 0x24, 0xde, + 0x39, 0x24, 0x21, 0xd6, 0x40, 0xf3, 0x1f, 0x15, 0x30, 0x32, 0x51, 0x98, 0x7a, 0x24, 0x0a, 0xec, + 0x71, 0x7a, 0x91, 0x27, 0x50, 0x75, 0x1d, 0x75, 0x87, 0xc6, 0xd6, 0xe7, 0x25, 0x59, 0x2f, 0x18, + 0x7f, 0x39, 0xf4, 0xd8, 0x45, 0xc6, 0xbc, 0x9f, 0x79, 0x0f, 0x57, 0x5d, 0x67, 0xe6, 0x95, 0x1e, + 0xc1, 0x2a, 0x7b, 0x4d, 0xf9, 0x05, 0x77, 0x25, 0xb5, 0x6c, 0x62, 0x8f, 0xa9, 0xba, 0xdd, 0x12, + 0x6e, 0x66, 0xdb, 0xbd, 0x78, 0xf7, 0x87, 0xda, 0x52, 0xb5, 0x35, 0x6f, 0xfe, 0xb3, 0x02, 0x1f, + 0xe7, 0x74, 0xb3, 0x63, 0xd0, 0x4d, 0xaa, 0x56, 0xcd, 0xa9, 0xf6, 0x14, 0x96, 0x7c, 0x2a, 0x89, + 0x43, 0x24, 0x51, 0x2a, 0x37, 0xb6, 0x3e, 0xbd, 0xd4, 0xe2, 0x87, 0x1a, 0x88, 0x33, 0x16, 0xf3, + 0x2c, 0xa7, 0x69, 0x1a, 0x0c, 0x22, 0x64, 0x81, 0xa0, 0x1f, 0xa2, 0xa9, 0xf9, 0x13, 0xdc, 0x9b, + 0x82, 0x7c, 0x4f, 0xe5, 0x0d, 0x18, 0xc1, 0xfc, 0x77, 0x05, 0x96, 0x33, 0xda, 0x07, 0x99, 0x33, + 0x0d, 0xd4, 0xea, 0xf5, 0x03, 0xf5, 0x09, 0x2c, 0xda, 0x1e, 0x13, 0x11, 0xa7, 0xda, 0xd8, 0x9b, + 0x97, 0x72, 0xf5, 0x12, 0x1c, 0x4e, 0x19, 0xcc, 0x3f, 0xc3, 0x4a, 0x46, 0x3c, 0x70, 0x85, 0x44, + 0xdf, 0x00, 0x64, 0x85, 0x45, 0x18, 0x95, 0xcd, 0xf9, 0x62, 0xe4, 0x97, 0xe4, 0xe1, 0x1c, 0x18, + 0xdd, 0x81, 0xba, 0x64, 0x2f, 0x69, 0x9a, 0x8e, 0xc9, 0xc2, 0xa4, 0xd0, 0x9c, 0x64, 0xca, 0x8e, + 0xc7, 0x06, 0xe8, 0x6b, 0x58, 0x78, 0x4d, 0xbc, 0x88, 0x0a, 0x6d, 0xa2, 0xcb, 0x13, 0x6b, 0xa7, + 0x6a, 0x54, 0xf6, 0xe6, 0xb0, 0x86, 0x23, 0x04, 0xf3, 0x11, 0x77, 0x13, 0xf1, 0x7b, 0x73, 0x38, + 0x5e, 0xec, 0x2c, 0x40, 0x4d, 0xc5, 0x4c, 0x0f, 0x56, 0xba, 0x03, 0xc6, 0x65, 0x1a, 0x4e, 0xb1, + 0x36, 0x36, 0x89, 0x04, 0xd5, 0x55, 0x23, 0x59, 0xa0, 0xfb, 0xb0, 0x1c, 0x72, 0x37, 0xb0, 0xdd, + 0x90, 0x78, 0x5a, 0xcf, 0xc9, 0x86, 0xf9, 0xf7, 0x45, 0x68, 0x95, 0x6d, 0x85, 0xbe, 0x85, 0x45, + 0x16, 0x49, 0x55, 0x08, 0x12, 0x7d, 0x1f, 0x94, 0xcd, 0x51, 0xbc, 0x9f, 0x56, 0x3a, 0x65, 0x42, + 0xdb, 0x50, 0xa7, 0x9c, 0x33, 0x3e, 0xed, 0x52, 0x75, 0xdb, 0xec, 0xbc, 0x7e, 0x0c, 0xda, 0x9b, + 0xc3, 0x09, 0x1a, 0xfd, 0x0a, 0x1a, 0x24, 0xbe, 0x90, 0x95, 0xdc, 0x02, 0x62, 0x5d, 0xb5, 0x68, + 0x50, 0x84, 0x9e, 0xba, 0xd0, 0x33, 0x68, 0x26, 0xb0, 0x2c, 0xe1, 0x6e, 0xcd, 0x8e, 0x9c, 0x82, + 0x75, 0xf6, 0xe6, 0xf0, 0x0a, 0x29, 0x98, 0xeb, 0x3b, 0x68, 0x24, 0x0a, 0x5b, 0x4a, 0xc8, 0xca, + 0xf5, 0x3c, 0x03, 0x09, 0xcf, 0x6e, 0x2c, 0xe1, 0x19, 0xac, 0xda, 0xcc, 0x0f, 0x23, 0x49, 0x1d, + 0x4b, 0x17, 0xce, 0xf9, 0x6b, 0x48, 0xc1, 0xcd, 0x94, 0x6b, 0x5f, 0x31, 0xa1, 0xdf, 0x43, 0x3d, + 0x1c, 0x13, 0x91, 0x54, 0xb3, 0xe6, 0xd6, 0xaf, 0xaf, 0x4a, 0xa0, 0xf6, 0xf3, 0x18, 0x8d, 0x13, + 0xa6, 0x38, 0x7e, 0x85, 0x24, 0x3c, 0x56, 0x82, 0x48, 0x5d, 0xb9, 0x37, 0xda, 0x49, 0xfb, 0x69, + 0xa7, 0xed, 0xa7, 0x7d, 0x9a, 0xf6, 0x27, 0xbc, 0xac, 0xd1, 0x5d, 0x89, 0xb6, 0x61, 0x29, 0xed, + 0x6b, 0xc6, 0x82, 0xd6, 0xbc, 0xcc, 0xb8, 0xab, 0x01, 0x38, 0x83, 0xc6, 0x27, 0xda, 0xaa, 0x48, + 0xa9, 0x13, 0x17, 0xaf, 0x3e, 0x51, 0xa3, 0xbb, 0x2a, 0xd9, 0xa2, 0xd0, 0x49, 0x59, 0x97, 0xae, + 0x66, 0xd5, 0xe8, 0xae, 0x44, 0x3b, 0xb0, 0x12, 0xb0, 0xb8, 0x6e, 0xd8, 0x24, 0x49, 0xd5, 0x65, + 0x95, 0xaa, 0xf7, 0xcb, 0x6e, 0x3f, 0xca, 0x81, 0x70, 0x91, 0x05, 0x3d, 0x81, 0xc6, 0x85, 0xb6, + 0xa6, 0xe5, 0x3a, 0x46, 0x63, 0xa6, 0xb7, 0x72, 0xf5, 0x09, 0x52, 0xf4, 0xbe, 0x83, 0x7e, 0x81, + 0x3b, 0x42, 0x92, 0xb8, 0xf3, 0x8c, 0x49, 0x30, 0xa2, 0x96, 0x43, 0x25, 0x71, 0x3d, 0x61, 0x34, + 0x95, 0x90, 0x2f, 0x2e, 0xaf, 0x5b, 0x31, 0x53, 0x4f, 0xf1, 0xec, 0x26, 0x2c, 0x18, 0x89, 0xa9, + 0xbd, 0x9d, 0x55, 0x58, 0xd1, 0xe1, 0xc8, 0xa9, 0x88, 0x3c, 0x69, 0x3e, 0x85, 0xe6, 0xc9, 0x5b, + 0x21, 0xa9, 0x9f, 0x45, 0xec, 0x17, 0x70, 0x3b, 0x2b, 0x3e, 0x96, 0x9e, 0xb7, 0x74, 0xb2, 0xb7, + 0xe8, 0x24, 0x89, 0xd5, 0xbe, 0xf9, 0x9f, 0x1a, 0xdc, 0x9e, 0x6a, 0x39, 0xa8, 0x07, 0x35, 0x9f, + 0x39, 0x49, 0x89, 0x68, 0x6e, 0x75, 0xae, 0xec, 0x51, 0xb9, 0x1d, 0xe6, 0x50, 0xac, 0x98, 0xdf, + 0x5d, 0x52, 0xe2, 0xf1, 0x25, 0xa0, 0x42, 0xba, 0xc1, 0x48, 0x65, 0xc3, 0x0a, 0x4e, 0x97, 0xe8, + 0x29, 0xdc, 0x12, 0xf6, 0x98, 0x3a, 0x91, 0x97, 0xb8, 0xbf, 0x76, 0xa5, 0xfb, 0x1b, 0x19, 0xbe, + 0x2b, 0xd1, 0xcf, 0xf0, 0x51, 0x48, 0x38, 0x0d, 0xa4, 0x15, 0x30, 0x87, 0x5a, 0xd9, 0x8d, 0x75, + 0xcc, 0x97, 0xd3, 0xe6, 0x88, 0x39, 0x74, 0x56, 0xcf, 0x59, 0x4b, 0x84, 0x14, 0xc8, 0xe8, 0x4f, + 0xb0, 0xc6, 0xe9, 0x90, 0x72, 0x1a, 0xd8, 0x79, 0xc9, 0xad, 0xf7, 0xee, 0x68, 0x28, 0x13, 0x33, + 0x11, 0xfe, 0x3d, 0xac, 0x0a, 0xe5, 0xc9, 0x49, 0xc9, 0xba, 0x3d, 0xbb, 0xae, 0x16, 0x1d, 0x8e, + 0x9b, 0xa2, 0xb0, 0x36, 0x47, 0xb9, 0xde, 0x15, 0xfb, 0x03, 0x01, 0x2c, 0x1c, 0x76, 0x8f, 0xce, + 0xba, 0x07, 0xad, 0x39, 0xb4, 0x02, 0xcb, 0x27, 0xbd, 0xbd, 0xfe, 0xee, 0xd9, 0x41, 0x7f, 0xb7, + 0x55, 0x89, 0x49, 0x27, 0x3f, 0x9d, 0x9c, 0xf6, 0x0f, 0x5b, 0x55, 0x74, 0x0b, 0x96, 0x70, 0xff, + 0xa0, 0x7b, 0x76, 0xd4, 0xdb, 0x6b, 0xcd, 0x23, 0x04, 0xcd, 0xde, 0xde, 0xfe, 0xc1, 0xae, 0xf5, + 0xe2, 0x18, 0xff, 0xe1, 0xd9, 0xc1, 0xf1, 0x8b, 0x56, 0x2d, 0x66, 0xc6, 0xfd, 0xde, 0xf1, 0x79, + 0x1f, 0xf7, 0x77, 0x5b, 0x75, 0xf3, 0x1c, 0x5a, 0xf9, 0x34, 0x52, 0x7d, 0x72, 0x2a, 0xff, 0x2a, + 0xef, 0x9d, 0x7f, 0xe6, 0xff, 0x16, 0x73, 0x37, 0x38, 0x49, 0x5a, 0x79, 0x23, 0x19, 0x1a, 0xad, + 0xd0, 0x23, 0xc1, 0x25, 0xfd, 0x31, 0x9f, 0x91, 0x09, 0xfa, 0xb9, 0x47, 0x02, 0xb4, 0x9d, 0xcd, + 0xab, 0xd5, 0xeb, 0x94, 0x5d, 0x0d, 0xfe, 0xc0, 0x59, 0x0d, 0xed, 0x95, 0xed, 0x50, 0x9f, 0x3d, + 0x82, 0x94, 0x0d, 0x18, 0x77, 0xa0, 0x62, 0x35, 0xfa, 0x14, 0x1a, 0x8e, 0x2b, 0xc8, 0xc0, 0xa3, + 0x16, 0xf1, 0x3c, 0x55, 0x81, 0x97, 0xe2, 0x16, 0xa3, 0x37, 0xbb, 0x9e, 0x87, 0xda, 0xb0, 0xe0, + 0x91, 0x01, 0xf5, 0x84, 0x2e, 0xb3, 0xeb, 0x53, 0x9d, 0x58, 0x51, 0xb1, 0x46, 0xa1, 0xa7, 0xd0, + 0x20, 0x41, 0xc0, 0xa4, 0x56, 0x2d, 0x29, 0xb0, 0xf7, 0xa6, 0x3a, 0xe3, 0x04, 0x82, 0xf3, 0x78, + 0xb4, 0x0f, 0xad, 0xf4, 0x21, 0x64, 0xd9, 0x2c, 0x90, 0xf4, 0x8d, 0x54, 0x7d, 0xb8, 0x10, 0xaa, + 0xca, 0xb6, 0x27, 0x1a, 0xd6, 0x4b, 0x50, 0x78, 0x55, 0x14, 0x37, 0xd0, 0x37, 0xb0, 0x4c, 0x22, + 0x39, 0xb6, 0x38, 0xf3, 0xa8, 0xce, 0x23, 0x63, 0x4a, 0x8f, 0x48, 0x8e, 0x31, 0xf3, 0xa8, 0x72, + 0xcf, 0x12, 0xd1, 0x2b, 0x74, 0x08, 0xe8, 0x55, 0x44, 0xbc, 0x58, 0x09, 0x36, 0xb4, 0x04, 0xe5, + 0xaf, 0x5d, 0x9b, 0xea, 0x94, 0x79, 0x58, 0xd2, 0xe3, 0x8f, 0x09, 0xf0, 0x78, 0x78, 0x92, 0xc0, + 0x70, 0xeb, 0x55, 0x69, 0x27, 0x7e, 0x36, 0xf8, 0xe4, 0x8d, 0x15, 0x12, 0x4e, 0x3c, 0x8f, 0x7a, + 0xae, 0xf0, 0x0d, 0xb4, 0x59, 0x79, 0x5c, 0xc7, 0x4d, 0x9f, 0xbc, 0x79, 0x3e, 0xd9, 0x45, 0x3f, + 0xc2, 0x3a, 0x27, 0x17, 0x56, 0x6e, 0x2a, 0x88, 0x8d, 0x30, 0x74, 0x47, 0xc6, 0x9a, 0x3a, 0xfb, + 0xb3, 0xb2, 0xfe, 0x98, 0x5c, 0x1c, 0x67, 0xe3, 0x40, 0x4f, 0x41, 0xf1, 0x1a, 0x9f, 0xde, 0x44, + 0xcf, 0x01, 0x4d, 0xbf, 0x8f, 0x8d, 0x3b, 0xb3, 0x83, 0x4f, 0x57, 0xf0, 0x6e, 0x06, 0xc4, 0xb7, + 0xed, 0xf2, 0x16, 0xfa, 0x0e, 0x56, 0xdc, 0x40, 0x52, 0xce, 0xa3, 0x50, 0xba, 0x03, 0x8f, 0x1a, + 0x1f, 0x5d, 0x52, 0x4c, 0x77, 0x18, 0xf3, 0xce, 0xe3, 0x69, 0x12, 0x17, 0x19, 0x66, 0xbd, 0xa6, + 0xd6, 0x67, 0xbd, 0xa6, 0x76, 0x0c, 0x58, 0xcf, 0xc7, 0xad, 0x15, 0x93, 0xb9, 0xeb, 0x50, 0xf1, + 0x43, 0x6d, 0xa9, 0xd6, 0xaa, 0x9b, 0x3e, 0xdc, 0xcd, 0xf2, 0xe5, 0x94, 0x72, 0xdf, 0x0d, 0x72, + 0x8f, 0xd9, 0x0f, 0x79, 0x19, 0x64, 0x03, 0x6d, 0x35, 0x37, 0xd0, 0x9a, 0xf7, 0x61, 0x63, 0xd6, + 0x71, 0xc9, 0x73, 0xc9, 0xfc, 0x05, 0x1e, 0xce, 0x7a, 0xf2, 0xc4, 0xbe, 0xb8, 0x89, 0x67, 0xcf, + 0x5f, 0xab, 0xb0, 0x79, 0xb9, 0x7c, 0xfd, 0x64, 0xdb, 0x2e, 0xcf, 0xcf, 0x1f, 0x97, 0x5d, 0x7c, + 0xc6, 0xbd, 0x74, 0x70, 0x9e, 0x8c, 0xcd, 0x5f, 0x95, 0xca, 0xd9, 0x3b, 0xb9, 0xd2, 0x62, 0xf6, + 0x04, 0x1a, 0xc3, 0xc8, 0xf3, 0xae, 0x3b, 0x7f, 0x62, 0x88, 0xd1, 0xd9, 0xdc, 0x79, 0x4b, 0xf1, + 0xa6, 0xca, 0xd6, 0xae, 0x62, 0x56, 0x47, 0x25, 0xc1, 0x2d, 0xcc, 0xbf, 0xe5, 0xff, 0x60, 0x9c, + 0xa9, 0x31, 0xed, 0x26, 0x9c, 0xfe, 0x5b, 0xa8, 0xab, 0xe9, 0x48, 0x19, 0xa1, 0x39, 0xdd, 0x22, + 0x8b, 0x73, 0x15, 0x4e, 0xc0, 0xe6, 0xbf, 0x2a, 0x70, 0xef, 0x1d, 0x13, 0xd7, 0x44, 0x6a, 0xe5, + 0x3d, 0xa4, 0xa2, 0xdf, 0x41, 0x83, 0xd9, 0x76, 0xc4, 0x79, 0x32, 0xaf, 0x54, 0xaf, 0x9c, 0x57, + 0x20, 0x85, 0x77, 0x65, 0x71, 0x4a, 0x9a, 0x2f, 0x3f, 0xbc, 0xee, 0xe6, 0x5e, 0xfc, 0xa9, 0xf1, + 0x74, 0x08, 0xbf, 0x06, 0x73, 0x56, 0x88, 0x1d, 0x26, 0xbf, 0xaf, 0x6e, 0x28, 0xb1, 0x1c, 0x1a, + 0xca, 0xb1, 0xba, 0x51, 0x1d, 0x27, 0x0b, 0xf3, 0x08, 0x3e, 0x7b, 0xe7, 0xb9, 0x3a, 0xba, 0x1f, + 0xc5, 0xef, 0xf5, 0xac, 0x55, 0xaf, 0x95, 0xfb, 0x42, 0x48, 0x02, 0xac, 0x00, 0x9f, 0x7f, 0x0b, + 0xcd, 0xa2, 0x59, 0xd1, 0x1d, 0x68, 0xf5, 0x7f, 0xec, 0xf7, 0xce, 0x4e, 0xf7, 0x8f, 0x8f, 0xac, + 0x6e, 0xef, 0x74, 0xff, 0xbc, 0xdf, 0x9a, 0x43, 0xeb, 0x80, 0x72, 0xbb, 0xb8, 0xb7, 0xb7, 0x7f, + 0x1e, 0x4f, 0x30, 0x3b, 0x5f, 0xff, 0xbc, 0x3d, 0x72, 0xe5, 0x38, 0x1a, 0xb4, 0x6d, 0xe6, 0x77, + 0xd4, 0x31, 0x8c, 0x8f, 0x3a, 0xd9, 0x7f, 0xbb, 0x11, 0x0d, 0x3a, 0xe1, 0xe0, 0x37, 0x23, 0xd6, + 0x29, 0xfe, 0x61, 0x1c, 0x2c, 0x28, 0xcf, 0x7c, 0xf5, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6c, + 0xa8, 0xea, 0x60, 0xd3, 0x14, 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 4b6bbe524..f3178e9cc 100644 --- a/gen/pb-go/flyteidl/admin/execution.pb.validate.go +++ b/gen/pb-go/flyteidl/admin/execution.pb.validate.go @@ -2011,3 +2011,161 @@ var _ interface { Cause() error ErrorName() string } = ExecutionUpdateResponseValidationError{} + +// Validate checks the field values on WorkflowExecutionGetMetricsRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, an error is returned. +func (m *WorkflowExecutionGetMetricsRequest) Validate() error { + if m == nil { + return nil + } + + if v, ok := interface{}(m.GetId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WorkflowExecutionGetMetricsRequestValidationError{ + field: "Id", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Depth + + return nil +} + +// WorkflowExecutionGetMetricsRequestValidationError is the validation error +// returned by WorkflowExecutionGetMetricsRequest.Validate if the designated +// constraints aren't met. +type WorkflowExecutionGetMetricsRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WorkflowExecutionGetMetricsRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WorkflowExecutionGetMetricsRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WorkflowExecutionGetMetricsRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WorkflowExecutionGetMetricsRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WorkflowExecutionGetMetricsRequestValidationError) ErrorName() string { + return "WorkflowExecutionGetMetricsRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e WorkflowExecutionGetMetricsRequestValidationError) 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 %sWorkflowExecutionGetMetricsRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WorkflowExecutionGetMetricsRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WorkflowExecutionGetMetricsRequestValidationError{} + +// Validate checks the field values on WorkflowExecutionGetMetricsResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, an error is returned. +func (m *WorkflowExecutionGetMetricsResponse) Validate() error { + if m == nil { + return nil + } + + if v, ok := interface{}(m.GetSpan()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WorkflowExecutionGetMetricsResponseValidationError{ + field: "Span", + reason: "embedded message failed validation", + cause: err, + } + } + } + + return nil +} + +// WorkflowExecutionGetMetricsResponseValidationError is the validation error +// returned by WorkflowExecutionGetMetricsResponse.Validate if the designated +// constraints aren't met. +type WorkflowExecutionGetMetricsResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WorkflowExecutionGetMetricsResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WorkflowExecutionGetMetricsResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WorkflowExecutionGetMetricsResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WorkflowExecutionGetMetricsResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WorkflowExecutionGetMetricsResponseValidationError) ErrorName() string { + return "WorkflowExecutionGetMetricsResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e WorkflowExecutionGetMetricsResponseValidationError) 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 %sWorkflowExecutionGetMetricsResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WorkflowExecutionGetMetricsResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WorkflowExecutionGetMetricsResponseValidationError{} diff --git a/gen/pb-go/flyteidl/core/metrics.pb.go b/gen/pb-go/flyteidl/core/metrics.pb.go new file mode 100644 index 000000000..981e8ef84 --- /dev/null +++ b/gen/pb-go/flyteidl/core/metrics.pb.go @@ -0,0 +1,194 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: flyteidl/core/metrics.proto + +package core + +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + timestamp "github.com/golang/protobuf/ptypes/timestamp" + 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 + +// Span represents a duration trace of Flyte execution. The id field denotes a Flyte execution entity or an operation +// which uniquely identifies the Span. The spans attribute allows this Span to be further broken down into more +// precise definitions. +type Span struct { + // start_time defines the instance this span began. + StartTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // end_time defines the instance this span completed. + EndTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + // Types that are valid to be assigned to Id: + // *Span_WorkflowId + // *Span_NodeId + // *Span_TaskId + // *Span_OperationId + Id isSpan_Id `protobuf_oneof:"id"` + // spans defines a collection of Spans that breakdown this execution. + Spans []*Span `protobuf:"bytes,7,rep,name=spans,proto3" json:"spans,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Span) Reset() { *m = Span{} } +func (m *Span) String() string { return proto.CompactTextString(m) } +func (*Span) ProtoMessage() {} +func (*Span) Descriptor() ([]byte, []int) { + return fileDescriptor_756935f796ae3119, []int{0} +} + +func (m *Span) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Span.Unmarshal(m, b) +} +func (m *Span) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Span.Marshal(b, m, deterministic) +} +func (m *Span) XXX_Merge(src proto.Message) { + xxx_messageInfo_Span.Merge(m, src) +} +func (m *Span) XXX_Size() int { + return xxx_messageInfo_Span.Size(m) +} +func (m *Span) XXX_DiscardUnknown() { + xxx_messageInfo_Span.DiscardUnknown(m) +} + +var xxx_messageInfo_Span proto.InternalMessageInfo + +func (m *Span) GetStartTime() *timestamp.Timestamp { + if m != nil { + return m.StartTime + } + return nil +} + +func (m *Span) GetEndTime() *timestamp.Timestamp { + if m != nil { + return m.EndTime + } + return nil +} + +type isSpan_Id interface { + isSpan_Id() +} + +type Span_WorkflowId struct { + WorkflowId *WorkflowExecutionIdentifier `protobuf:"bytes,3,opt,name=workflow_id,json=workflowId,proto3,oneof"` +} + +type Span_NodeId struct { + NodeId *NodeExecutionIdentifier `protobuf:"bytes,4,opt,name=node_id,json=nodeId,proto3,oneof"` +} + +type Span_TaskId struct { + TaskId *TaskExecutionIdentifier `protobuf:"bytes,5,opt,name=task_id,json=taskId,proto3,oneof"` +} + +type Span_OperationId struct { + OperationId string `protobuf:"bytes,6,opt,name=operation_id,json=operationId,proto3,oneof"` +} + +func (*Span_WorkflowId) isSpan_Id() {} + +func (*Span_NodeId) isSpan_Id() {} + +func (*Span_TaskId) isSpan_Id() {} + +func (*Span_OperationId) isSpan_Id() {} + +func (m *Span) GetId() isSpan_Id { + if m != nil { + return m.Id + } + return nil +} + +func (m *Span) GetWorkflowId() *WorkflowExecutionIdentifier { + if x, ok := m.GetId().(*Span_WorkflowId); ok { + return x.WorkflowId + } + return nil +} + +func (m *Span) GetNodeId() *NodeExecutionIdentifier { + if x, ok := m.GetId().(*Span_NodeId); ok { + return x.NodeId + } + return nil +} + +func (m *Span) GetTaskId() *TaskExecutionIdentifier { + if x, ok := m.GetId().(*Span_TaskId); ok { + return x.TaskId + } + return nil +} + +func (m *Span) GetOperationId() string { + if x, ok := m.GetId().(*Span_OperationId); ok { + return x.OperationId + } + return "" +} + +func (m *Span) GetSpans() []*Span { + if m != nil { + return m.Spans + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*Span) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*Span_WorkflowId)(nil), + (*Span_NodeId)(nil), + (*Span_TaskId)(nil), + (*Span_OperationId)(nil), + } +} + +func init() { + proto.RegisterType((*Span)(nil), "flyteidl.core.Span") +} + +func init() { proto.RegisterFile("flyteidl/core/metrics.proto", fileDescriptor_756935f796ae3119) } + +var fileDescriptor_756935f796ae3119 = []byte{ + // 338 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x4d, 0x4b, 0xeb, 0x40, + 0x14, 0x40, 0xfb, 0xdd, 0xd7, 0xc9, 0x7b, 0x9b, 0xbc, 0x4d, 0xe9, 0x83, 0x67, 0x51, 0x90, 0x2a, + 0x38, 0x03, 0xf5, 0x03, 0x5c, 0x5a, 0x10, 0x9a, 0x85, 0x2e, 0x62, 0x41, 0x70, 0x53, 0x92, 0xcc, + 0x4d, 0x1c, 0x9a, 0xcc, 0x0d, 0x33, 0x53, 0xaa, 0xbf, 0xc7, 0x3f, 0x2a, 0x33, 0x31, 0x85, 0x96, + 0x8a, 0xcb, 0xc9, 0x9c, 0x73, 0xc2, 0xcd, 0x0d, 0xf9, 0x97, 0xe6, 0xef, 0x06, 0x04, 0xcf, 0x59, + 0x82, 0x0a, 0x58, 0x01, 0x46, 0x89, 0x44, 0xd3, 0x52, 0xa1, 0x41, 0xff, 0x4f, 0x7d, 0x49, 0xed, + 0xe5, 0xe8, 0xff, 0x2e, 0x2b, 0x38, 0x48, 0x23, 0x52, 0x01, 0xaa, 0xc2, 0x47, 0x47, 0x19, 0x62, + 0x96, 0x03, 0x73, 0xa7, 0x78, 0x9d, 0x32, 0x23, 0x0a, 0xd0, 0x26, 0x2a, 0xca, 0x0a, 0x38, 0xfe, + 0x68, 0x93, 0xce, 0x53, 0x19, 0x49, 0xff, 0x96, 0x10, 0x6d, 0x22, 0x65, 0x96, 0x96, 0x18, 0x36, + 0xc7, 0xcd, 0x89, 0x37, 0x1d, 0xd1, 0x4a, 0xa7, 0xb5, 0x4e, 0x17, 0xb5, 0x1e, 0x0e, 0x1c, 0x6d, + 0xcf, 0xfe, 0x35, 0xf9, 0x05, 0x92, 0x57, 0x62, 0xeb, 0x47, 0xb1, 0x0f, 0x92, 0x3b, 0xed, 0x81, + 0x78, 0x1b, 0x54, 0xab, 0x34, 0xc7, 0xcd, 0x52, 0xf0, 0x61, 0xdb, 0x99, 0xe7, 0x74, 0x67, 0x40, + 0xfa, 0xfc, 0x45, 0xdc, 0xbf, 0x41, 0xb2, 0x36, 0x02, 0x65, 0xb0, 0x1d, 0x71, 0xde, 0x08, 0x49, + 0x1d, 0x08, 0xb8, 0x7f, 0x47, 0xfa, 0x12, 0x39, 0xd8, 0x54, 0xc7, 0xa5, 0x4e, 0xf7, 0x52, 0x8f, + 0xc8, 0xe1, 0x70, 0xa6, 0x67, 0xc5, 0x2a, 0x61, 0x22, 0xbd, 0xb2, 0x89, 0xee, 0xc1, 0xc4, 0x22, + 0xd2, 0xab, 0x6f, 0x12, 0x56, 0x0c, 0xb8, 0x7f, 0x42, 0x7e, 0x63, 0x09, 0x2a, 0xb2, 0x80, 0xed, + 0xf4, 0xc6, 0xcd, 0xc9, 0x60, 0xde, 0x08, 0xbd, 0xed, 0xd3, 0x80, 0xfb, 0x67, 0xa4, 0xab, 0xcb, + 0x48, 0xea, 0x61, 0x7f, 0xdc, 0x9e, 0x78, 0xd3, 0xbf, 0x7b, 0x6f, 0xb1, 0xfb, 0x08, 0x2b, 0x62, + 0xd6, 0x21, 0x2d, 0xc1, 0x67, 0x37, 0x2f, 0x57, 0x99, 0x30, 0xaf, 0xeb, 0x98, 0x26, 0x58, 0x30, + 0x47, 0xa3, 0xca, 0xd8, 0x76, 0xf9, 0x19, 0x48, 0x56, 0xc6, 0x17, 0x19, 0xb2, 0x9d, 0xff, 0x21, + 0xee, 0xb9, 0xef, 0x7f, 0xf9, 0x19, 0x00, 0x00, 0xff, 0xff, 0x2c, 0x94, 0xbf, 0x5a, 0x53, 0x02, + 0x00, 0x00, +} diff --git a/gen/pb-go/flyteidl/core/metrics.pb.validate.go b/gen/pb-go/flyteidl/core/metrics.pb.validate.go new file mode 100644 index 000000000..3c14669ee --- /dev/null +++ b/gen/pb-go/flyteidl/core/metrics.pb.validate.go @@ -0,0 +1,179 @@ +// Code generated by protoc-gen-validate. DO NOT EDIT. +// source: flyteidl/core/metrics.proto + +package core + +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 _metrics_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 Span with the rules defined in the proto +// definition for this message. If any rules are violated, an error is returned. +func (m *Span) Validate() error { + if m == nil { + return nil + } + + if v, ok := interface{}(m.GetStartTime()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return SpanValidationError{ + field: "StartTime", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if v, ok := interface{}(m.GetEndTime()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return SpanValidationError{ + field: "EndTime", + reason: "embedded message failed validation", + cause: err, + } + } + } + + for idx, item := range m.GetSpans() { + _, _ = idx, item + + if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return SpanValidationError{ + field: fmt.Sprintf("Spans[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + switch m.Id.(type) { + + case *Span_WorkflowId: + + if v, ok := interface{}(m.GetWorkflowId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return SpanValidationError{ + field: "WorkflowId", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *Span_NodeId: + + if v, ok := interface{}(m.GetNodeId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return SpanValidationError{ + field: "NodeId", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *Span_TaskId: + + if v, ok := interface{}(m.GetTaskId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return SpanValidationError{ + field: "TaskId", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *Span_OperationId: + // no validation rules for OperationId + + } + + return nil +} + +// SpanValidationError is the validation error returned by Span.Validate if the +// designated constraints aren't met. +type SpanValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e SpanValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e SpanValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e SpanValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e SpanValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e SpanValidationError) ErrorName() string { return "SpanValidationError" } + +// Error satisfies the builtin error interface +func (e SpanValidationError) 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 %sSpan.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = SpanValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = SpanValidationError{} diff --git a/gen/pb-go/flyteidl/core/metrics.swagger.json b/gen/pb-go/flyteidl/core/metrics.swagger.json new file mode 100644 index 000000000..f6b3727f9 --- /dev/null +++ b/gen/pb-go/flyteidl/core/metrics.swagger.json @@ -0,0 +1,19 @@ +{ + "swagger": "2.0", + "info": { + "title": "flyteidl/core/metrics.proto", + "version": "version not set" + }, + "schemes": [ + "http", + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": {}, + "definitions": {} +} diff --git a/gen/pb-go/flyteidl/event/event.pb.go b/gen/pb-go/flyteidl/event/event.pb.go index 99259200a..62b7a12e6 100644 --- a/gen/pb-go/flyteidl/event/event.pb.go +++ b/gen/pb-go/flyteidl/event/event.pb.go @@ -225,10 +225,15 @@ type NodeExecutionEvent struct { IsDynamic bool `protobuf:"varint,18,opt,name=is_dynamic,json=isDynamic,proto3" json:"is_dynamic,omitempty"` // String location uniquely identifying where the deck HTML file is // NativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar) - DeckUri string `protobuf:"bytes,19,opt,name=deck_uri,json=deckUri,proto3" json:"deck_uri,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DeckUri string `protobuf:"bytes,19,opt,name=deck_uri,json=deckUri,proto3" json:"deck_uri,omitempty"` + // This timestamp represents the instant when the event was reported by the executing framework. For example, + // when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when + // literal inputs are initially copied. The event however will not be sent until after the copy completes. + // Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series. + ReportedAt *timestamp.Timestamp `protobuf:"bytes,21,opt,name=reported_at,json=reportedAt,proto3" json:"reported_at,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *NodeExecutionEvent) Reset() { *m = NodeExecutionEvent{} } @@ -471,6 +476,13 @@ func (m *NodeExecutionEvent) GetDeckUri() string { return "" } +func (m *NodeExecutionEvent) GetReportedAt() *timestamp.Timestamp { + if m != nil { + return m.ReportedAt + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*NodeExecutionEvent) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -786,10 +798,15 @@ type TaskExecutionEvent struct { // proto message. For example, event_verison > 0 means that maps tasks report logs using the // TaskExecutionMetadata ExternalResourceInfo fields for each subtask rather than the TaskLog // in this message. - EventVersion int32 `protobuf:"varint,18,opt,name=event_version,json=eventVersion,proto3" json:"event_version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + EventVersion int32 `protobuf:"varint,18,opt,name=event_version,json=eventVersion,proto3" json:"event_version,omitempty"` + // This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s + // pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes, + // but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps + // facilitates a more accurate portrayal of the evaluation time-series. + ReportedAt *timestamp.Timestamp `protobuf:"bytes,20,opt,name=reported_at,json=reportedAt,proto3" json:"reported_at,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *TaskExecutionEvent) Reset() { *m = TaskExecutionEvent{} } @@ -995,6 +1012,13 @@ func (m *TaskExecutionEvent) GetEventVersion() int32 { return 0 } +func (m *TaskExecutionEvent) GetReportedAt() *timestamp.Timestamp { + if m != nil { + return m.ReportedAt + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*TaskExecutionEvent) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -1243,97 +1267,99 @@ func init() { func init() { proto.RegisterFile("flyteidl/event/event.proto", fileDescriptor_4b035d24120b1b12) } var fileDescriptor_4b035d24120b1b12 = []byte{ - // 1472 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x6d, 0x6f, 0xdb, 0xb6, - 0x16, 0x8e, 0x9d, 0x17, 0xdb, 0x47, 0xb1, 0x63, 0xb3, 0x69, 0xaa, 0x36, 0x4d, 0xe3, 0xeb, 0x7b, - 0x7b, 0x91, 0xb6, 0xb8, 0x36, 0xe0, 0xa2, 0xbd, 0xc5, 0x56, 0x60, 0xc8, 0xdb, 0x16, 0x6f, 0x69, - 0x10, 0x28, 0x49, 0x0b, 0x74, 0x1b, 0x04, 0x46, 0x62, 0x1c, 0x2e, 0xb2, 0x28, 0x50, 0x54, 0xda, - 0xfc, 0x98, 0x6d, 0xdf, 0xf7, 0x63, 0xf6, 0x61, 0xff, 0x64, 0xff, 0x60, 0x20, 0x29, 0xc9, 0x91, - 0xac, 0x25, 0xe9, 0xcb, 0xbe, 0x04, 0xd0, 0x73, 0x0e, 0x1f, 0x1e, 0x9e, 0x43, 0x9e, 0xe7, 0xc4, - 0x70, 0xef, 0xc4, 0xbb, 0x10, 0x84, 0xba, 0x5e, 0x8f, 0x9c, 0x13, 0x5f, 0xe8, 0xbf, 0xdd, 0x80, - 0x33, 0xc1, 0x50, 0x23, 0xb1, 0x75, 0x15, 0x7a, 0xef, 0x7e, 0xea, 0xeb, 0x30, 0x4e, 0x7a, 0x1e, - 0x15, 0x84, 0x63, 0x2f, 0xd4, 0xde, 0x79, 0xab, 0xc3, 0x46, 0x01, 0xf5, 0x08, 0x8f, 0xad, 0x2b, - 0x59, 0x2b, 0x79, 0x4f, 0x9c, 0x48, 0x50, 0xe6, 0xc7, 0xe6, 0x07, 0x59, 0x33, 0x75, 0x89, 0x2f, - 0xe8, 0x09, 0x4d, 0x97, 0x2f, 0xe7, 0xc8, 0xb1, 0xc0, 0x1e, 0x1b, 0xc6, 0xc6, 0xd5, 0x21, 0x63, - 0x43, 0x8f, 0xf4, 0xd4, 0xd7, 0x71, 0x74, 0xd2, 0x13, 0x74, 0x44, 0x42, 0x81, 0x47, 0x41, 0x12, - 0x5a, 0xde, 0x21, 0x14, 0x3c, 0x72, 0xe2, 0x63, 0x76, 0x7e, 0x9b, 0x86, 0xa5, 0x37, 0x8c, 0x9f, - 0x9d, 0x78, 0xec, 0xdd, 0x76, 0x12, 0xd7, 0xb6, 0x3c, 0x31, 0x7a, 0x05, 0xf3, 0x69, 0xa4, 0x36, - 0x75, 0xcd, 0x52, 0xbb, 0xb4, 0x66, 0xf4, 0x1f, 0x77, 0xd3, 0xc4, 0xc8, 0x68, 0xba, 0x13, 0x8b, - 0x07, 0x69, 0xf8, 0x96, 0x41, 0xc6, 0x20, 0x5a, 0x05, 0x23, 0xe0, 0xcc, 0x8d, 0x1c, 0xc2, 0x25, - 0x5b, 0xb9, 0x5d, 0x5a, 0xab, 0x59, 0x90, 0x40, 0x03, 0x17, 0xbd, 0x84, 0xd9, 0xe0, 0x14, 0x87, - 0xc4, 0x9c, 0x6e, 0x97, 0xd6, 0x1a, 0xfd, 0xff, 0x5e, 0xb7, 0x51, 0x77, 0x5f, 0x7a, 0x5b, 0x7a, - 0x11, 0xfa, 0x12, 0x0c, 0xe6, 0x38, 0x11, 0xe7, 0xc4, 0xb5, 0xb1, 0x30, 0x67, 0x54, 0xb0, 0xf7, - 0xba, 0xfa, 0xf0, 0xdd, 0xe4, 0xf0, 0xdd, 0xc3, 0x24, 0x3b, 0x16, 0x24, 0xee, 0xeb, 0x02, 0xad, - 0x02, 0xb0, 0x48, 0x04, 0x91, 0xb0, 0x23, 0x4e, 0xcd, 0x59, 0x19, 0xda, 0xce, 0x94, 0x55, 0xd3, - 0xd8, 0x11, 0xa7, 0xe8, 0x19, 0xcc, 0x12, 0xce, 0x19, 0x37, 0xe7, 0x14, 0xef, 0x4a, 0x2e, 0xb6, - 0x71, 0xe6, 0xa4, 0xd3, 0xce, 0x94, 0xa5, 0xbd, 0xd1, 0x4b, 0x30, 0x62, 0x5e, 0x17, 0x0b, 0x6c, - 0x56, 0xd4, 0xe2, 0xbb, 0xb9, 0xc5, 0xbb, 0xfa, 0x2a, 0xbd, 0xc2, 0xc1, 0xce, 0x94, 0x15, 0xc7, - 0xb1, 0x85, 0x05, 0xde, 0x58, 0x80, 0x7a, 0xbc, 0x9a, 0x93, 0x30, 0xf2, 0x44, 0xe7, 0x8f, 0x2a, - 0xa0, 0x3d, 0xe6, 0x92, 0x5c, 0xa1, 0x9e, 0x43, 0x39, 0x2d, 0x4f, 0x3e, 0x6b, 0x19, 0xf7, 0x4b, - 0xa5, 0x29, 0xd3, 0x1b, 0x54, 0xe4, 0x45, 0xb6, 0x22, 0x9d, 0xab, 0xb8, 0x3f, 0x63, 0x35, 0x56, - 0xa0, 0x46, 0xfd, 0x7c, 0x31, 0xaa, 0x0a, 0x92, 0xb5, 0xf8, 0x02, 0x40, 0x9b, 0x55, 0x4e, 0x17, - 0xaf, 0xcf, 0xa9, 0x66, 0x93, 0x29, 0xcd, 0x15, 0x7a, 0x4e, 0x71, 0x97, 0x0a, 0x0b, 0x5d, 0xb9, - 0x49, 0xa1, 0x4b, 0x7f, 0x53, 0xe8, 0x85, 0xeb, 0x82, 0x2a, 0x5d, 0x2e, 0x34, 0xfa, 0x01, 0x96, - 0xde, 0xc5, 0xb7, 0xdb, 0xf6, 0x99, 0x4b, 0xec, 0x11, 0x11, 0x58, 0x11, 0x55, 0x15, 0xd1, 0x7f, - 0xba, 0xd9, 0x66, 0x94, 0xbe, 0x05, 0x59, 0x81, 0x57, 0xb1, 0xef, 0x4e, 0xd9, 0x5a, 0x7c, 0x57, - 0x80, 0xa3, 0x7d, 0x40, 0x02, 0x87, 0x67, 0x39, 0xe6, 0x86, 0x62, 0x6e, 0xe7, 0x99, 0x0f, 0x71, - 0x78, 0x96, 0x63, 0x6d, 0x8a, 0x1c, 0x86, 0x7e, 0x84, 0xc5, 0x00, 0x73, 0xe2, 0x0b, 0x5b, 0x11, - 0xa7, 0x9c, 0x35, 0xc5, 0xf9, 0x24, 0xcf, 0xb9, 0xaf, 0x7c, 0x25, 0x73, 0x9a, 0xbe, 0x84, 0xca, - 0x42, 0x41, 0x6a, 0x2c, 0xa0, 0xcf, 0x86, 0x0c, 0x57, 0xd1, 0x67, 0x2e, 0x63, 0x9e, 0x3e, 0x13, - 0xfd, 0x2a, 0x18, 0x9c, 0x08, 0x7e, 0x61, 0x0f, 0x39, 0x8b, 0x02, 0xd3, 0xd0, 0xd7, 0x5e, 0x41, - 0xdf, 0x48, 0x04, 0xb5, 0x61, 0x3e, 0x0c, 0x88, 0xa3, 0x77, 0xa7, 0xae, 0x39, 0xaf, 0x3d, 0x24, - 0x26, 0x89, 0x06, 0x2e, 0x5a, 0x86, 0x9a, 0x32, 0xfa, 0x78, 0x44, 0xcc, 0xba, 0x32, 0x57, 0x25, - 0xb0, 0x87, 0x47, 0x04, 0xfd, 0x1b, 0xea, 0x2a, 0x30, 0xfb, 0x9c, 0xf0, 0x90, 0x32, 0xdf, 0x6c, - 0xb6, 0x4b, 0x6b, 0xb3, 0xd6, 0xbc, 0x02, 0x5f, 0x6b, 0x4c, 0x32, 0xd0, 0xd0, 0xd6, 0xd1, 0x99, - 0xad, 0x76, 0x69, 0xad, 0x6a, 0x55, 0x69, 0xa8, 0x8f, 0x82, 0x56, 0x00, 0x68, 0x68, 0xbb, 0x17, - 0x3e, 0x1e, 0x51, 0xc7, 0x44, 0xca, 0x5a, 0xa3, 0xe1, 0x96, 0x06, 0xd0, 0x5d, 0xa8, 0xba, 0xc4, - 0x39, 0x53, 0x57, 0xf8, 0x96, 0xda, 0xbc, 0x22, 0xbf, 0x8f, 0x38, 0xdd, 0xa8, 0x83, 0xa1, 0xdf, - 0xc6, 0x39, 0xf6, 0x22, 0x32, 0xd1, 0x41, 0x36, 0x5a, 0xb0, 0x20, 0x30, 0x1f, 0x12, 0x91, 0x66, - 0xb5, 0x43, 0x60, 0xb1, 0xe8, 0x3a, 0x7d, 0xe6, 0xf6, 0xdf, 0xf9, 0xb3, 0x0c, 0xcd, 0xfc, 0xe5, - 0x42, 0x5b, 0x30, 0xef, 0x60, 0xe7, 0x94, 0xd8, 0xa1, 0xc0, 0x22, 0x0a, 0xd5, 0x1e, 0x8d, 0xfe, - 0xbf, 0x72, 0x7b, 0x6c, 0x6a, 0xc1, 0xdb, 0x94, 0x9e, 0x07, 0xca, 0xd1, 0x32, 0x9c, 0xf1, 0x07, - 0xfa, 0x0a, 0x8c, 0x58, 0x13, 0xed, 0x33, 0x72, 0xa1, 0xfa, 0x98, 0xd1, 0x7f, 0x50, 0x4c, 0x92, - 0xde, 0x0c, 0x88, 0x97, 0x7c, 0x47, 0x2e, 0xd0, 0x1b, 0x40, 0x9c, 0x84, 0x84, 0x9f, 0x63, 0x75, - 0xd8, 0x38, 0x18, 0xdd, 0xf4, 0xd6, 0x8a, 0x79, 0xac, 0xb1, 0x7f, 0x37, 0x8e, 0xa9, 0x75, 0x89, - 0x23, 0x8e, 0xec, 0x21, 0x34, 0x9c, 0x53, 0xe2, 0x9c, 0x05, 0x8c, 0xfa, 0xba, 0xe5, 0xcc, 0xa8, - 0x7a, 0xd5, 0xc7, 0xa8, 0x6c, 0x3a, 0xaf, 0xa1, 0x19, 0x17, 0xdb, 0x4e, 0x5e, 0xb0, 0xba, 0x34, - 0x05, 0x97, 0x3d, 0xbe, 0x03, 0x45, 0x15, 0xb3, 0x16, 0xdc, 0xac, 0xb1, 0xf3, 0x7b, 0x09, 0x96, - 0xaf, 0x58, 0x80, 0x1e, 0x5d, 0x12, 0x8e, 0x7c, 0xb3, 0xca, 0x69, 0xc5, 0x01, 0xb4, 0xe2, 0xa1, - 0xc6, 0x1d, 0xc7, 0x58, 0x2e, 0x94, 0x9c, 0xcd, 0xd8, 0x2f, 0xd9, 0x72, 0xd3, 0x63, 0x61, 0xc4, - 0x89, 0xd5, 0x74, 0x72, 0x06, 0xd4, 0x83, 0xc5, 0xe4, 0xdc, 0x3f, 0xb1, 0x63, 0x5b, 0x3d, 0x3a, - 0x99, 0xa4, 0x69, 0x95, 0xa4, 0x56, 0x6c, 0xfb, 0x96, 0x1d, 0x1f, 0x04, 0xc4, 0x39, 0xe2, 0xb4, - 0x73, 0x04, 0xcb, 0x57, 0x34, 0x93, 0x2b, 0x85, 0x30, 0xb3, 0x22, 0x7b, 0xb8, 0xce, 0xf3, 0x84, - 0xb6, 0xb0, 0x89, 0xa0, 0x3b, 0x50, 0x49, 0x5a, 0x41, 0x49, 0x45, 0x36, 0xe7, 0xab, 0x36, 0xd0, - 0xf9, 0xb5, 0x02, 0x28, 0xc3, 0xab, 0xf5, 0xb8, 0x0f, 0x15, 0xd5, 0x17, 0x6f, 0x92, 0xdb, 0x39, - 0xe9, 0x39, 0x70, 0x91, 0x0d, 0xe6, 0xe5, 0x9e, 0x97, 0x79, 0x79, 0xe5, 0x0f, 0x52, 0xf6, 0xdb, - 0xc1, 0xe4, 0x51, 0x06, 0xae, 0xec, 0x4a, 0xba, 0xeb, 0x61, 0x21, 0xc8, 0x28, 0x10, 0x2a, 0xc9, - 0x75, 0x6b, 0x5e, 0x81, 0xeb, 0x1a, 0x1b, 0x0b, 0xfe, 0x4c, 0xa1, 0xe0, 0x67, 0xce, 0x9a, 0x15, - 0xfc, 0xdc, 0x2c, 0x31, 0x3b, 0x31, 0x4b, 0x3c, 0x86, 0x19, 0x8f, 0x0d, 0x43, 0x73, 0xae, 0x3d, - 0xbd, 0x66, 0xf4, 0x97, 0x0a, 0x98, 0x77, 0xd9, 0xd0, 0x52, 0x3e, 0xf9, 0xe9, 0xa1, 0xf2, 0xf1, - 0xd3, 0x43, 0xf5, 0x9a, 0xe9, 0xe1, 0xd6, 0x27, 0x4c, 0x0f, 0xb5, 0x2b, 0xa6, 0x07, 0xf8, 0x94, - 0xe9, 0xa1, 0xf5, 0x61, 0xd3, 0xc3, 0x0b, 0x30, 0x9c, 0x28, 0x14, 0x6c, 0x64, 0x53, 0xff, 0x84, - 0x29, 0x3d, 0x33, 0xfa, 0x77, 0x26, 0xb2, 0x75, 0xa0, 0xc6, 0x7e, 0x0b, 0xb4, 0xef, 0xc0, 0x3f, - 0x61, 0xf2, 0x4e, 0xa8, 0xea, 0xa5, 0x4a, 0x35, 0xaf, 0xef, 0x84, 0x02, 0x13, 0xa5, 0x5a, 0x82, - 0x39, 0x4e, 0x70, 0xc8, 0xfc, 0x58, 0xe8, 0xe2, 0x2f, 0xa9, 0x60, 0xea, 0x96, 0x8b, 0x8b, 0x80, - 0xa8, 0x69, 0xa2, 0x66, 0x55, 0x25, 0x70, 0x78, 0x11, 0x10, 0xb4, 0x0e, 0xd5, 0x54, 0xb6, 0x75, - 0x27, 0x7b, 0x58, 0x34, 0x69, 0x4c, 0x0a, 0x76, 0xba, 0x6c, 0x52, 0x46, 0xd1, 0xa4, 0x8c, 0x5e, - 0xa7, 0x77, 0x9d, 0x5f, 0xca, 0xb0, 0xb8, 0xfd, 0x5e, 0x10, 0xee, 0x63, 0xcf, 0x22, 0x21, 0x8b, - 0xb8, 0x43, 0xd4, 0xd1, 0x57, 0xc1, 0x20, 0x31, 0x3e, 0x7e, 0xd7, 0x90, 0x40, 0x03, 0x17, 0x2d, - 0xc2, 0x2c, 0xf5, 0x5d, 0xf2, 0x5e, 0xbd, 0xbe, 0xba, 0xa5, 0x3f, 0xfe, 0xe9, 0x57, 0x94, 0xd7, - 0xc3, 0xd9, 0x8f, 0xd2, 0xc3, 0x0f, 0x78, 0x6a, 0x9d, 0xef, 0xa1, 0x99, 0xe4, 0x65, 0x9f, 0x31, - 0x4f, 0xe5, 0xe6, 0x11, 0x34, 0xb1, 0xe7, 0x31, 0x47, 0xab, 0xa1, 0x60, 0x67, 0xc4, 0x8f, 0x13, - 0xb4, 0x30, 0xc6, 0x0f, 0x25, 0x8c, 0xee, 0x43, 0x4d, 0xce, 0x40, 0x61, 0x80, 0x1d, 0x12, 0xff, - 0x03, 0x31, 0x06, 0x3a, 0x3f, 0x4f, 0xc3, 0xed, 0xe2, 0x4e, 0xfd, 0x10, 0x1a, 0x43, 0xe2, 0x13, - 0x8e, 0x05, 0x71, 0xf5, 0x14, 0xa5, 0x37, 0xa8, 0xa7, 0xa8, 0x1a, 0xa5, 0x0e, 0x00, 0xa5, 0x55, - 0xe2, 0x71, 0x98, 0xa1, 0x59, 0x56, 0xe7, 0x9a, 0x18, 0x8a, 0x8b, 0xea, 0x6c, 0xb5, 0x48, 0x0e, - 0x0d, 0xd1, 0x9e, 0x52, 0x7b, 0xf5, 0x61, 0x07, 0x8c, 0x79, 0xfa, 0xd9, 0x4c, 0x2b, 0xd2, 0x89, - 0x79, 0x38, 0x9f, 0x1c, 0xab, 0xc9, 0xf3, 0xe9, 0x7a, 0x02, 0xad, 0xc0, 0x8b, 0x86, 0x54, 0xf6, - 0xea, 0xa4, 0x0b, 0xc7, 0x3a, 0xdf, 0xd4, 0x86, 0x71, 0x77, 0x46, 0x6f, 0xa1, 0x41, 0xfd, 0x50, - 0x60, 0xdf, 0x21, 0xb6, 0xe3, 0xe1, 0x30, 0x54, 0xcf, 0xa3, 0xd1, 0x7f, 0x7a, 0xa3, 0xe7, 0xd1, - 0x1d, 0xc4, 0x6b, 0x37, 0xe5, 0x52, 0xab, 0x4e, 0x2f, 0x7f, 0x76, 0x7a, 0x50, 0xcf, 0xd8, 0x91, - 0x01, 0x95, 0xad, 0xed, 0xaf, 0xd7, 0x8f, 0x76, 0x0f, 0x9b, 0x53, 0xa8, 0x05, 0xf5, 0xc1, 0xde, - 0xe1, 0xb6, 0x65, 0x1d, 0xed, 0x1f, 0x0e, 0x36, 0x76, 0xb7, 0x9b, 0xa5, 0x8d, 0xff, 0xbf, 0x7d, - 0x36, 0xa4, 0xe2, 0x34, 0x3a, 0xee, 0x3a, 0x6c, 0xd4, 0x53, 0x01, 0x30, 0x3e, 0xec, 0xa5, 0x3f, - 0x37, 0x0c, 0x89, 0xdf, 0x0b, 0x8e, 0xff, 0x37, 0x64, 0xbd, 0xec, 0x0f, 0x25, 0xc7, 0x73, 0xaa, - 0xab, 0x3c, 0xfd, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x82, 0xe6, 0xc6, 0xe5, 0x41, 0x11, 0x00, 0x00, + // 1490 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x7d, 0x6e, 0xdb, 0x36, + 0x14, 0x8f, 0x9d, 0x0f, 0xdb, 0x4f, 0xb1, 0x63, 0xb3, 0x6e, 0xaa, 0x36, 0x4d, 0xe3, 0x79, 0xeb, + 0x90, 0xb6, 0x98, 0x0d, 0xb8, 0x68, 0x57, 0xac, 0x05, 0x86, 0x7c, 0x6d, 0xf1, 0x96, 0x06, 0x81, + 0x92, 0xb4, 0x40, 0xb7, 0x41, 0x60, 0x24, 0xc6, 0xd1, 0x2c, 0x8b, 0x02, 0x45, 0xa5, 0xf5, 0x29, + 0x76, 0x82, 0xed, 0x00, 0x3b, 0xcc, 0x4e, 0xb0, 0x4b, 0xec, 0x06, 0x03, 0x49, 0x49, 0x8e, 0x64, + 0x2d, 0x49, 0x3f, 0xf6, 0x4f, 0x00, 0xfd, 0xde, 0xe3, 0x8f, 0x8f, 0xef, 0x3b, 0x86, 0x3b, 0xa7, + 0xee, 0x98, 0x13, 0xc7, 0x76, 0xbb, 0xe4, 0x9c, 0x78, 0x5c, 0xfd, 0xed, 0xf8, 0x8c, 0x72, 0x8a, + 0x6a, 0xb1, 0xac, 0x23, 0xd1, 0x3b, 0x77, 0x13, 0x5d, 0x8b, 0x32, 0xd2, 0x75, 0x1d, 0x4e, 0x18, + 0x76, 0x03, 0xa5, 0x9d, 0x95, 0x5a, 0x74, 0xe4, 0x3b, 0x2e, 0x61, 0x91, 0x74, 0x35, 0x2d, 0x25, + 0xef, 0x88, 0x15, 0x72, 0x87, 0x7a, 0x91, 0xf8, 0x5e, 0x5a, 0xec, 0xd8, 0xc4, 0xe3, 0xce, 0xa9, + 0x93, 0x1c, 0x5f, 0xc9, 0x90, 0x63, 0x8e, 0x5d, 0x3a, 0x88, 0x84, 0x6b, 0x03, 0x4a, 0x07, 0x2e, + 0xe9, 0xca, 0xaf, 0x93, 0xf0, 0xb4, 0xcb, 0x9d, 0x11, 0x09, 0x38, 0x1e, 0xf9, 0xb1, 0x69, 0x59, + 0x85, 0x80, 0xb3, 0xd0, 0x8a, 0x9e, 0xd9, 0xfe, 0x73, 0x16, 0x96, 0x5f, 0x53, 0x36, 0x3c, 0x75, + 0xe9, 0xdb, 0x9d, 0xd8, 0xae, 0x1d, 0xf1, 0x62, 0xf4, 0x12, 0x16, 0x13, 0x4b, 0x4d, 0xc7, 0xd6, + 0x0b, 0xad, 0xc2, 0xba, 0xd6, 0x7b, 0xd8, 0x49, 0x1c, 0x23, 0xac, 0xe9, 0x4c, 0x1d, 0xee, 0x27, + 0xe6, 0x1b, 0x1a, 0x99, 0x80, 0x68, 0x0d, 0x34, 0x9f, 0x51, 0x3b, 0xb4, 0x08, 0x13, 0x6c, 0xc5, + 0x56, 0x61, 0xbd, 0x62, 0x40, 0x0c, 0xf5, 0x6d, 0xf4, 0x02, 0xe6, 0xfd, 0x33, 0x1c, 0x10, 0x7d, + 0xb6, 0x55, 0x58, 0xaf, 0xf5, 0xbe, 0xbc, 0xea, 0xa2, 0xce, 0x81, 0xd0, 0x36, 0xd4, 0x21, 0xf4, + 0x1c, 0x34, 0x6a, 0x59, 0x21, 0x63, 0xc4, 0x36, 0x31, 0xd7, 0xe7, 0xa4, 0xb1, 0x77, 0x3a, 0xea, + 0xf1, 0x9d, 0xf8, 0xf1, 0x9d, 0xa3, 0xd8, 0x3b, 0x06, 0xc4, 0xea, 0x1b, 0x1c, 0xad, 0x01, 0xd0, + 0x90, 0xfb, 0x21, 0x37, 0x43, 0xe6, 0xe8, 0xf3, 0xc2, 0xb4, 0xdd, 0x19, 0xa3, 0xa2, 0xb0, 0x63, + 0xe6, 0xa0, 0x27, 0x30, 0x4f, 0x18, 0xa3, 0x4c, 0x5f, 0x90, 0xbc, 0xab, 0x19, 0xdb, 0x26, 0x9e, + 0x13, 0x4a, 0xbb, 0x33, 0x86, 0xd2, 0x46, 0x2f, 0x40, 0x8b, 0x78, 0x6d, 0xcc, 0xb1, 0x5e, 0x92, + 0x87, 0x6f, 0x67, 0x0e, 0xef, 0xa9, 0x54, 0x7a, 0x89, 0xfd, 0xdd, 0x19, 0x23, 0xb2, 0x63, 0x1b, + 0x73, 0xbc, 0xb9, 0x04, 0xd5, 0xe8, 0x34, 0x23, 0x41, 0xe8, 0xf2, 0xf6, 0x6f, 0x15, 0x40, 0xfb, + 0xd4, 0x26, 0x99, 0x40, 0x3d, 0x85, 0x62, 0x12, 0x9e, 0xac, 0xd7, 0x52, 0xea, 0x17, 0x42, 0x53, + 0x74, 0xae, 0x11, 0x91, 0x67, 0xe9, 0x88, 0xb4, 0x2f, 0xe3, 0xfe, 0x84, 0xd1, 0x58, 0x85, 0x8a, + 0xe3, 0x65, 0x83, 0x51, 0x96, 0x90, 0x88, 0xc5, 0x37, 0x00, 0x4a, 0x2c, 0x7d, 0xda, 0xbc, 0xda, + 0xa7, 0x8a, 0x4d, 0xb8, 0x34, 0x13, 0xe8, 0x05, 0xc9, 0x5d, 0xc8, 0x0d, 0x74, 0xe9, 0x3a, 0x81, + 0x2e, 0xfc, 0x47, 0xa0, 0x97, 0xae, 0x32, 0xaa, 0x70, 0x31, 0xd0, 0xe8, 0x67, 0x58, 0x7e, 0x1b, + 0x65, 0xb7, 0xe9, 0x51, 0x9b, 0x98, 0x23, 0xc2, 0xb1, 0x24, 0x2a, 0x4b, 0xa2, 0x2f, 0x3a, 0xe9, + 0x66, 0x94, 0xd4, 0x82, 0x88, 0xc0, 0xcb, 0x48, 0x77, 0xb7, 0x68, 0x34, 0xdf, 0xe6, 0xe0, 0xe8, + 0x00, 0x10, 0xc7, 0xc1, 0x30, 0xc3, 0x5c, 0x93, 0xcc, 0xad, 0x2c, 0xf3, 0x11, 0x0e, 0x86, 0x19, + 0xd6, 0x3a, 0xcf, 0x60, 0xe8, 0x17, 0x68, 0xfa, 0x98, 0x11, 0x8f, 0x9b, 0x92, 0x38, 0xe1, 0xac, + 0x48, 0xce, 0x47, 0x59, 0xce, 0x03, 0xa9, 0x2b, 0x98, 0x13, 0xf7, 0xc5, 0x54, 0x06, 0xf2, 0x13, + 0x61, 0x0e, 0x7d, 0xda, 0x64, 0xb8, 0x8c, 0x3e, 0x95, 0x8c, 0x59, 0xfa, 0x94, 0xf5, 0x6b, 0xa0, + 0x31, 0xc2, 0xd9, 0xd8, 0x1c, 0x30, 0x1a, 0xfa, 0xba, 0xa6, 0xd2, 0x5e, 0x42, 0xdf, 0x0b, 0x04, + 0xb5, 0x60, 0x31, 0xf0, 0x89, 0xa5, 0x6e, 0x77, 0x6c, 0x7d, 0x51, 0x69, 0x08, 0x4c, 0x10, 0xf5, + 0x6d, 0xb4, 0x02, 0x15, 0x29, 0xf4, 0xf0, 0x88, 0xe8, 0x55, 0x29, 0x2e, 0x0b, 0x60, 0x1f, 0x8f, + 0x08, 0xfa, 0x1c, 0xaa, 0xd2, 0x30, 0xf3, 0x9c, 0xb0, 0xc0, 0xa1, 0x9e, 0x5e, 0x6f, 0x15, 0xd6, + 0xe7, 0x8d, 0x45, 0x09, 0xbe, 0x52, 0x98, 0x60, 0x70, 0x02, 0x53, 0x59, 0xa7, 0x37, 0x5a, 0x85, + 0xf5, 0xb2, 0x51, 0x76, 0x02, 0xf5, 0x14, 0xb4, 0x0a, 0xe0, 0x04, 0xa6, 0x3d, 0xf6, 0xf0, 0xc8, + 0xb1, 0x74, 0x24, 0xa5, 0x15, 0x27, 0xd8, 0x56, 0x00, 0xba, 0x0d, 0x65, 0x9b, 0x58, 0x43, 0x99, + 0xc2, 0x37, 0xe4, 0xe5, 0x25, 0xf1, 0x2d, 0xd2, 0xf7, 0xb9, 0x78, 0x9b, 0x4f, 0x19, 0x57, 0x75, + 0x77, 0xf3, 0xea, 0xba, 0x8b, 0xd5, 0x37, 0xf8, 0x66, 0x15, 0x34, 0x55, 0x58, 0xe7, 0xd8, 0x0d, + 0xc9, 0x54, 0xfb, 0xd9, 0x6c, 0xc0, 0x12, 0xc7, 0x6c, 0x40, 0x78, 0x12, 0x92, 0x36, 0x81, 0x66, + 0x5e, 0x2e, 0x7e, 0xe2, 0xd9, 0xd1, 0xfe, 0xa7, 0x08, 0xf5, 0x6c, 0x66, 0xa2, 0x6d, 0x58, 0xb4, + 0xb0, 0x75, 0x46, 0xcc, 0x80, 0x63, 0x1e, 0x06, 0xf2, 0x8e, 0x5a, 0xef, 0xb3, 0xcc, 0x1d, 0x5b, + 0x6a, 0x5a, 0x6e, 0x09, 0xcd, 0x43, 0xa9, 0x68, 0x68, 0xd6, 0xe4, 0x03, 0x7d, 0x0b, 0x5a, 0x34, + 0x50, 0xcd, 0x21, 0x19, 0xcb, 0x26, 0xa8, 0xf5, 0xee, 0xe5, 0x93, 0x24, 0x69, 0x05, 0xd1, 0x91, + 0x1f, 0xc9, 0x18, 0xbd, 0x06, 0xc4, 0x48, 0x40, 0xd8, 0x39, 0x96, 0x8f, 0x8d, 0x8c, 0x51, 0x1d, + 0x73, 0x3d, 0x9f, 0xc7, 0x98, 0xe8, 0x77, 0x22, 0x9b, 0x1a, 0x17, 0x38, 0x22, 0xcb, 0xee, 0x43, + 0xcd, 0x3a, 0x23, 0xd6, 0xd0, 0xa7, 0x8e, 0xa7, 0xfa, 0xd5, 0x9c, 0x0c, 0x76, 0x75, 0x82, 0x8a, + 0x90, 0xbf, 0x82, 0x7a, 0x94, 0x29, 0x66, 0x5c, 0xfe, 0x32, 0xe3, 0x72, 0x2a, 0x25, 0x4a, 0xa0, + 0xbc, 0x88, 0x19, 0x4b, 0x76, 0x5a, 0xd8, 0xfe, 0xab, 0x00, 0x2b, 0x97, 0x1c, 0x40, 0x0f, 0x2e, + 0x4c, 0x9d, 0x6c, 0xa7, 0xcb, 0x0c, 0x9a, 0x43, 0x68, 0x44, 0x1b, 0x91, 0x3d, 0xb1, 0xb1, 0x98, + 0x3b, 0xaf, 0xb6, 0x22, 0xbd, 0xf8, 0xca, 0x2d, 0x97, 0x06, 0x21, 0x23, 0x46, 0xdd, 0xca, 0x08, + 0x50, 0x17, 0x9a, 0xf1, 0xbb, 0x7f, 0xa5, 0x27, 0xa6, 0xac, 0x58, 0xe1, 0xa4, 0x59, 0xe9, 0xa4, + 0x46, 0x24, 0xfb, 0x81, 0x9e, 0x1c, 0xfa, 0xc4, 0x3a, 0x66, 0x4e, 0xfb, 0x18, 0x56, 0x2e, 0xe9, + 0x44, 0x97, 0x4e, 0xd1, 0xd4, 0x89, 0xf4, 0xe3, 0xda, 0x4f, 0x63, 0xda, 0xdc, 0x0e, 0x84, 0x6e, + 0x41, 0x29, 0xee, 0x23, 0x05, 0x69, 0xd9, 0x82, 0x27, 0x7b, 0x48, 0xfb, 0xef, 0x12, 0xa0, 0x14, + 0xaf, 0x1a, 0xe6, 0x3d, 0x28, 0xc9, 0xa6, 0x7a, 0x1d, 0xdf, 0x2e, 0x08, 0xcd, 0xbe, 0x8d, 0x4c, + 0xd0, 0x2f, 0x36, 0xcc, 0x54, 0xe5, 0x15, 0xdf, 0x6b, 0x2d, 0xb8, 0xe9, 0x4f, 0x3f, 0xa5, 0x6f, + 0x8b, 0x96, 0xa6, 0x5a, 0x26, 0xe6, 0x9c, 0x8c, 0x7c, 0x2e, 0x9d, 0x5c, 0x35, 0x16, 0x25, 0xb8, + 0xa1, 0xb0, 0xc9, 0xb6, 0x30, 0x97, 0xbb, 0x2d, 0xa4, 0xde, 0x9a, 0xde, 0x16, 0x32, 0x8b, 0xc8, + 0xfc, 0xd4, 0x22, 0xf2, 0x10, 0xe6, 0x5c, 0x3a, 0x08, 0xf4, 0x85, 0xd6, 0xec, 0xba, 0xd6, 0x5b, + 0xce, 0x61, 0xde, 0xa3, 0x03, 0x43, 0xea, 0x64, 0x57, 0x8f, 0xd2, 0x87, 0xaf, 0x1e, 0xe5, 0x2b, + 0x56, 0x8f, 0x1b, 0x1f, 0xb1, 0x7a, 0x54, 0x2e, 0x59, 0x3d, 0xe0, 0x63, 0x56, 0x8f, 0xc6, 0xfb, + 0xad, 0x1e, 0xcf, 0x40, 0xb3, 0xc2, 0x80, 0xd3, 0x91, 0xe9, 0x78, 0xa7, 0x54, 0x0e, 0x43, 0xad, + 0x77, 0x6b, 0xca, 0x5b, 0x87, 0xf2, 0x7f, 0x06, 0x03, 0x94, 0x6e, 0xdf, 0x3b, 0xa5, 0x22, 0x27, + 0x64, 0xf4, 0x92, 0x31, 0xb7, 0xa8, 0x72, 0x42, 0x82, 0xf1, 0x98, 0x5b, 0x86, 0x05, 0x46, 0x70, + 0x40, 0xbd, 0x68, 0x4a, 0x46, 0x5f, 0x62, 0xfc, 0xc9, 0x2c, 0xe7, 0x63, 0x9f, 0xc8, 0x55, 0xa4, + 0x62, 0x94, 0x05, 0x70, 0x34, 0xf6, 0x09, 0xda, 0x80, 0x72, 0x32, 0xf3, 0x55, 0x27, 0xbb, 0x9f, + 0xb7, 0xa6, 0x4c, 0x4f, 0xfb, 0xe4, 0xd8, 0xf4, 0x0c, 0x46, 0x39, 0x33, 0x38, 0x33, 0x2c, 0x9b, + 0x9f, 0x72, 0x58, 0xb6, 0xff, 0x28, 0x42, 0x73, 0xe7, 0x1d, 0x27, 0xcc, 0xc3, 0xae, 0x41, 0x02, + 0x1a, 0x32, 0x8b, 0x48, 0xbf, 0xad, 0x81, 0x46, 0x22, 0x7c, 0xd2, 0x14, 0x20, 0x86, 0xfa, 0x36, + 0x6a, 0xc2, 0xbc, 0xe3, 0xd9, 0xe4, 0x9d, 0x2c, 0xdd, 0xaa, 0xa1, 0x3e, 0xfe, 0xef, 0x12, 0xcc, + 0x0e, 0xd3, 0xf9, 0x0f, 0x1a, 0xa6, 0xef, 0x51, 0xa7, 0xed, 0x9f, 0xa0, 0x1e, 0xfb, 0xe5, 0x80, + 0x52, 0x57, 0xfa, 0xe6, 0x01, 0xd4, 0xb1, 0xeb, 0x52, 0x4b, 0x8d, 0x52, 0x4e, 0x87, 0xc4, 0x8b, + 0x1c, 0xb4, 0x34, 0xc1, 0x8f, 0x04, 0x8c, 0xee, 0x42, 0x45, 0x6c, 0x5f, 0x81, 0x8f, 0x2d, 0x12, + 0xfd, 0xeb, 0x32, 0x01, 0xda, 0xbf, 0xcf, 0xc2, 0xcd, 0xfc, 0x36, 0x7f, 0x1f, 0x6a, 0x03, 0xe2, + 0x11, 0x86, 0x45, 0xd4, 0xe5, 0xfe, 0xa6, 0x2e, 0xa8, 0x26, 0xa8, 0x5c, 0xe2, 0x0e, 0x01, 0x25, + 0x51, 0x62, 0x91, 0x99, 0x81, 0x5e, 0x94, 0xef, 0x9a, 0x5a, 0xc7, 0xf3, 0xe2, 0x6c, 0x34, 0x48, + 0x06, 0x0d, 0xd0, 0xbe, 0x5c, 0x15, 0xe4, 0x87, 0xe9, 0x53, 0xea, 0xaa, 0x9a, 0x9b, 0x95, 0xa4, + 0x53, 0x9b, 0x78, 0xd6, 0x39, 0x46, 0x9d, 0x65, 0xdd, 0xf5, 0x08, 0x1a, 0xbe, 0x1b, 0x0e, 0x1c, + 0xd1, 0xe8, 0xe3, 0x16, 0x1e, 0x2d, 0x09, 0x75, 0x25, 0x98, 0xb4, 0x76, 0xf4, 0x06, 0x6a, 0x8e, + 0x17, 0x70, 0xec, 0x59, 0xc4, 0xb4, 0x5c, 0x1c, 0x04, 0xb2, 0xb6, 0x6a, 0xbd, 0xc7, 0xd7, 0xaa, + 0xad, 0x4e, 0x3f, 0x3a, 0xbb, 0x25, 0x8e, 0x1a, 0x55, 0xe7, 0xe2, 0x67, 0xbb, 0x0b, 0xd5, 0x94, + 0x1c, 0x69, 0x50, 0xda, 0xde, 0xf9, 0x6e, 0xe3, 0x78, 0xef, 0xa8, 0x3e, 0x83, 0x1a, 0x50, 0xed, + 0xef, 0x1f, 0xed, 0x18, 0xc6, 0xf1, 0xc1, 0x51, 0x7f, 0x73, 0x6f, 0xa7, 0x5e, 0xd8, 0xfc, 0xfa, + 0xcd, 0x93, 0x81, 0xc3, 0xcf, 0xc2, 0x93, 0x8e, 0x45, 0x47, 0x5d, 0x69, 0x00, 0x65, 0x83, 0x6e, + 0xf2, 0x43, 0xc7, 0x80, 0x78, 0x5d, 0xff, 0xe4, 0xab, 0x01, 0xed, 0xa6, 0x7f, 0xa2, 0x39, 0x59, + 0x90, 0x65, 0xf9, 0xf8, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x21, 0x33, 0xa4, 0xbb, 0x11, + 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/event/event.pb.validate.go b/gen/pb-go/flyteidl/event/event.pb.validate.go index 0684e96c1..c1ffac146 100644 --- a/gen/pb-go/flyteidl/event/event.pb.validate.go +++ b/gen/pb-go/flyteidl/event/event.pb.validate.go @@ -240,6 +240,16 @@ func (m *NodeExecutionEvent) Validate() error { // no validation rules for DeckUri + if v, ok := interface{}(m.GetReportedAt()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return NodeExecutionEventValidationError{ + field: "ReportedAt", + reason: "embedded message failed validation", + cause: err, + } + } + } + switch m.InputValue.(type) { case *NodeExecutionEvent_InputUri: @@ -870,6 +880,16 @@ func (m *TaskExecutionEvent) Validate() error { // no validation rules for EventVersion + if v, ok := interface{}(m.GetReportedAt()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TaskExecutionEventValidationError{ + field: "ReportedAt", + reason: "embedded message failed validation", + cause: err, + } + } + } + switch m.InputValue.(type) { case *TaskExecutionEvent_InputUri: diff --git a/gen/pb-go/flyteidl/service/admin.pb.go b/gen/pb-go/flyteidl/service/admin.pb.go index cf6f18c3d..06c565ded 100644 --- a/gen/pb-go/flyteidl/service/admin.pb.go +++ b/gen/pb-go/flyteidl/service/admin.pb.go @@ -30,141 +30,144 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("flyteidl/service/admin.proto", fileDescriptor_5cfa31da1d67295d) } var fileDescriptor_5cfa31da1d67295d = []byte{ - // 2136 bytes of a gzipped FileDescriptorProto + // 2179 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x9a, 0xdf, 0x6f, 0x1d, 0x47, 0x15, 0xc7, 0x35, 0x36, 0x02, 0x31, 0x4d, 0x62, 0x7b, 0x9a, 0x60, 0x67, 0x63, 0x27, 0xe9, 0xba, - 0x8e, 0x7f, 0xdf, 0x75, 0xd3, 0xb4, 0x51, 0x42, 0x7f, 0xb9, 0xb5, 0x73, 0x65, 0x08, 0x49, 0x31, - 0x29, 0x48, 0x16, 0xd2, 0xd5, 0xfa, 0xee, 0xc4, 0xde, 0xe4, 0xde, 0xbb, 0xb7, 0xbb, 0x63, 0x17, - 0xcb, 0xb2, 0xf8, 0xf1, 0x80, 0xa8, 0x90, 0x78, 0xe0, 0x87, 0xa0, 0x10, 0x51, 0x0a, 0x45, 0xfc, - 0x2c, 0x2f, 0xa0, 0x22, 0x24, 0x54, 0x09, 0xc1, 0x03, 0x2f, 0xbc, 0xc0, 0x3b, 0x2f, 0xf4, 0x99, - 0xbf, 0x01, 0xcd, 0xd9, 0x99, 0xbd, 0x3b, 0xbb, 0x3b, 0xbb, 0xb3, 0x26, 0xe5, 0x89, 0x37, 0xfb, - 0x9e, 0x33, 0x33, 0x9f, 0x73, 0xe6, 0x3b, 0x67, 0x66, 0x67, 0x17, 0x4f, 0xde, 0xed, 0x1c, 0x30, - 0xea, 0x7b, 0x1d, 0x27, 0xa2, 0xe1, 0xbe, 0xdf, 0xa6, 0x8e, 0xeb, 0x75, 0xfd, 0x5e, 0xa3, 0x1f, - 0x06, 0x2c, 0x20, 0xa3, 0xd2, 0xda, 0x10, 0x56, 0x6b, 0x72, 0x27, 0x08, 0x76, 0x3a, 0xd4, 0x71, - 0xfb, 0xbe, 0xe3, 0xf6, 0x7a, 0x01, 0x73, 0x99, 0x1f, 0xf4, 0xa2, 0xd8, 0xdf, 0x1a, 0xf4, 0x06, - 0xbd, 0x38, 0xfd, 0x30, 0xb8, 0x47, 0xdb, 0x4c, 0x58, 0x1b, 0xc5, 0xd6, 0x96, 0x17, 0x74, 0x5d, - 0xbf, 0xd7, 0x72, 0x19, 0x0b, 0xfd, 0xed, 0x3d, 0x46, 0x65, 0x6f, 0xb3, 0x1a, 0xff, 0x9c, 0xe3, - 0xd9, 0x8c, 0x23, 0x73, 0xa3, 0xfb, 0xc2, 0x34, 0x95, 0x31, 0xbd, 0x16, 0x84, 0xf7, 0xef, 0x76, - 0x82, 0xd7, 0x84, 0x79, 0x4e, 0x63, 0xce, 0x8f, 0x71, 0x31, 0xe3, 0xd9, 0x71, 0xf7, 0x7a, 0xed, - 0xdd, 0x56, 0xbf, 0xe3, 0x8a, 0x64, 0x59, 0x56, 0xc6, 0x83, 0xee, 0xd3, 0x9e, 0x0c, 0xfd, 0x7c, - 0xd6, 0xf6, 0x05, 0xda, 0xde, 0xe3, 0x99, 0xd3, 0x84, 0xda, 0x75, 0x59, 0x7b, 0xd7, 0xdd, 0xee, - 0xd0, 0x56, 0x48, 0xa3, 0x60, 0x2f, 0x6c, 0x53, 0xe1, 0x38, 0x9d, 0x71, 0xec, 0x05, 0x1e, 0x6d, - 0x65, 0x7b, 0x9b, 0x2e, 0xc8, 0x47, 0xce, 0x29, 0x3b, 0x57, 0xfb, 0x34, 0x8c, 0x06, 0xd6, 0x73, - 0x19, 0x6b, 0x3b, 0xe8, 0x76, 0xb5, 0xb4, 0x1e, 0x8d, 0xda, 0xa1, 0xdf, 0xe7, 0x9d, 0xb7, 0x68, - 0x8f, 0xf9, 0xec, 0x20, 0x17, 0x76, 0x3b, 0x08, 0xa9, 0xe3, 0x7b, 0xdc, 0x7a, 0xd7, 0xa7, 0x61, - 0x6c, 0xbf, 0xfc, 0xc7, 0x9b, 0xf8, 0xc4, 0x2a, 0xef, 0xe2, 0x33, 0xb1, 0xbc, 0x48, 0x17, 0xe3, - 0x97, 0x42, 0xea, 0x32, 0x7a, 0xc7, 0x8d, 0xee, 0x93, 0xc7, 0x12, 0xc5, 0x34, 0x62, 0x55, 0xf2, - 0x5f, 0x63, 0xfb, 0x26, 0x7d, 0x75, 0x8f, 0x46, 0xcc, 0xb2, 0xcb, 0x5c, 0xa2, 0x7e, 0xd0, 0x8b, - 0xa8, 0x3d, 0xf1, 0x95, 0x7f, 0xbc, 0xff, 0xad, 0x21, 0x62, 0x9f, 0x04, 0xd5, 0xee, 0x3f, 0x01, - 0xf9, 0x88, 0xae, 0xa3, 0x05, 0xf2, 0x35, 0x84, 0x3f, 0xd2, 0xa4, 0x0c, 0x06, 0xbb, 0x98, 0xed, - 0xe9, 0xf6, 0x36, 0x57, 0x5b, 0x93, 0x32, 0x39, 0xd6, 0xe9, 0xa2, 0xb1, 0xec, 0x75, 0xe8, 0xfd, - 0x79, 0xf2, 0xac, 0xd2, 0xbb, 0x73, 0xe8, 0x7b, 0x0d, 0x21, 0xd8, 0x23, 0xf8, 0x27, 0x56, 0x79, - 0xfc, 0x77, 0xcf, 0xed, 0xd2, 0xf8, 0x2f, 0x91, 0xf5, 0x23, 0xf2, 0x5d, 0x84, 0x1f, 0xb9, 0xe9, - 0x47, 0xc0, 0xb2, 0xe1, 0x45, 0x64, 0x25, 0x3b, 0xd8, 0x2d, 0xb7, 0x4b, 0xbd, 0x75, 0xc8, 0xee, - 0x46, 0x92, 0x47, 0xde, 0x42, 0xe2, 0xcd, 0x1b, 0xb7, 0xb0, 0x17, 0x81, 0x79, 0x86, 0x4c, 0xa7, - 0x99, 0x5b, 0xbe, 0x17, 0x39, 0x87, 0x03, 0x66, 0x01, 0x4c, 0x7e, 0x83, 0xf0, 0x47, 0x25, 0x59, - 0x44, 0xa6, 0xb3, 0xa3, 0x6c, 0x0a, 0x81, 0xa6, 0x51, 0x26, 0x8a, 0x32, 0x05, 0x23, 0x6f, 0xc3, - 0xc8, 0x9f, 0x27, 0x2b, 0x75, 0xb3, 0xb5, 0x35, 0x47, 0x2e, 0x99, 0xb5, 0x21, 0x47, 0xf8, 0x54, - 0xac, 0x80, 0xcf, 0x89, 0xd5, 0x4c, 0x66, 0xb2, 0x3c, 0xd2, 0xa2, 0x8a, 0xe9, 0x52, 0x95, 0x9b, - 0x10, 0xd4, 0x24, 0x04, 0xf1, 0x31, 0x7b, 0x4c, 0x02, 0xc9, 0xb2, 0x01, 0xa2, 0xfa, 0x36, 0xc2, - 0x8f, 0x34, 0x29, 0x4b, 0x06, 0xaf, 0x16, 0xd6, 0x84, 0x6e, 0x5c, 0x7b, 0x03, 0x46, 0x7a, 0x89, - 0xac, 0xe6, 0x46, 0xaa, 0x2d, 0xb0, 0x37, 0x11, 0x1e, 0xe1, 0x53, 0x20, 0xfb, 0xfe, 0xc0, 0x45, - 0xe6, 0x00, 0xfb, 0x3c, 0x99, 0xcd, 0xb2, 0xeb, 0x84, 0xf6, 0x1e, 0xc2, 0x27, 0xd3, 0x84, 0x86, - 0x62, 0x9b, 0xd4, 0x65, 0x0f, 0x28, 0xee, 0x01, 0x85, 0x47, 0xae, 0x1c, 0x27, 0x83, 0x5b, 0x4b, - 0x64, 0xc1, 0xbc, 0x1d, 0xf9, 0x2a, 0xc2, 0xa3, 0xb1, 0x54, 0x6e, 0xc2, 0xee, 0xf0, 0x72, 0xc7, - 0xed, 0x91, 0xd9, 0x2c, 0xde, 0xc0, 0xa6, 0xaa, 0x6f, 0xae, 0xda, 0x51, 0xe8, 0xef, 0x02, 0xc4, - 0x74, 0xd6, 0x3e, 0x2d, 0xd9, 0x52, 0x9b, 0x11, 0x48, 0xf0, 0x07, 0x08, 0x9f, 0x6c, 0x52, 0x96, - 0xa2, 0xa8, 0x16, 0xa1, 0xa5, 0x1f, 0xde, 0xbe, 0x09, 0x03, 0xde, 0x20, 0x6b, 0x45, 0x03, 0xd6, - 0x56, 0xe2, 0x8f, 0x11, 0x7e, 0xb4, 0x49, 0xd9, 0x6a, 0x9b, 0xf9, 0xfb, 0xa5, 0x99, 0xca, 0x7a, - 0x98, 0xa0, 0xde, 0x00, 0xd4, 0x17, 0xc8, 0x73, 0x12, 0xd5, 0x85, 0x4e, 0x5a, 0x35, 0x89, 0xc9, - 0x03, 0x84, 0xcf, 0x70, 0x01, 0x65, 0x19, 0x22, 0xb2, 0x58, 0x85, 0x99, 0x16, 0xe7, 0x79, 0x3d, - 0x2a, 0xc8, 0xf3, 0x69, 0xc0, 0x5d, 0x21, 0x8d, 0x52, 0xdc, 0xfc, 0x5a, 0x79, 0x1b, 0xe1, 0x31, - 0xde, 0xc1, 0xa0, 0xbb, 0x0f, 0x7c, 0x3d, 0x5f, 0x06, 0xd4, 0xd4, 0x8a, 0x48, 0x31, 0xea, 0x96, - 0xf4, 0x5f, 0x45, 0xd1, 0x49, 0xe7, 0xcf, 0x68, 0x51, 0x57, 0xe5, 0xad, 0x0f, 0x30, 0xf7, 0xc8, - 0xd5, 0x63, 0x2a, 0x72, 0xcb, 0x21, 0xcb, 0xb5, 0x9a, 0x92, 0x77, 0x11, 0x1e, 0x7d, 0xa5, 0xef, - 0x19, 0x2f, 0xee, 0xd8, 0xd7, 0x60, 0x71, 0x4b, 0x47, 0xb1, 0xb8, 0x6f, 0x43, 0x64, 0x1b, 0xd6, - 0x43, 0x59, 0x6b, 0xbc, 0x18, 0x7c, 0x19, 0xe1, 0x91, 0xb8, 0x80, 0xac, 0xcb, 0x23, 0x20, 0xc9, - 0xed, 0x74, 0x89, 0x49, 0xad, 0x49, 0xb3, 0x95, 0x7e, 0x82, 0x7a, 0x0a, 0xa8, 0xc7, 0x6d, 0x22, - 0xa9, 0x93, 0xe3, 0x26, 0x14, 0xa4, 0x6f, 0x20, 0x3c, 0xb6, 0x49, 0xe3, 0x48, 0x06, 0x14, 0x73, - 0xda, 0xde, 0xa5, 0x6f, 0x6d, 0x8e, 0x4b, 0xc0, 0x71, 0xd1, 0x3e, 0x97, 0xe7, 0x70, 0x42, 0xd1, - 0x29, 0x07, 0xfa, 0x3a, 0xc2, 0xa3, 0x9b, 0xb4, 0x1d, 0xec, 0xd3, 0x70, 0xc0, 0x33, 0x5b, 0xc2, - 0x03, 0xae, 0xb5, 0x71, 0x66, 0x00, 0xe7, 0x82, 0x6d, 0x15, 0xe2, 0x40, 0x9f, 0x9c, 0xe6, 0x3b, - 0x08, 0x9f, 0x68, 0x52, 0x36, 0x20, 0x59, 0xd4, 0xed, 0x69, 0x89, 0x4b, 0xaa, 0x72, 0x9f, 0xd5, - 0xd2, 0xd8, 0xcf, 0xc2, 0xf8, 0x57, 0xc9, 0x53, 0x05, 0xe3, 0x1b, 0x14, 0xc1, 0xb7, 0x11, 0x1e, - 0x89, 0xe5, 0x69, 0x22, 0x1d, 0x55, 0xf1, 0xb3, 0x95, 0x7e, 0x22, 0x47, 0x2f, 0x00, 0xe3, 0x75, - 0xeb, 0x78, 0x8c, 0x3c, 0x7d, 0x7f, 0x40, 0x78, 0x34, 0x9d, 0xbe, 0x35, 0x97, 0xb9, 0xc4, 0x31, - 0x49, 0x21, 0xf7, 0x94, 0xc0, 0x2b, 0xe6, 0x0d, 0x04, 0xf9, 0x8b, 0x40, 0xfe, 0x0c, 0xb9, 0x2e, - 0xc9, 0x3d, 0x97, 0xb9, 0x35, 0x53, 0xfc, 0x3a, 0xc2, 0xa7, 0x78, 0x45, 0x4b, 0x06, 0x31, 0x2c, - 0x90, 0x53, 0xda, 0xf4, 0x42, 0x7d, 0x7c, 0x12, 0xd0, 0x96, 0xc9, 0x62, 0x8d, 0xa4, 0x92, 0x77, - 0x10, 0x26, 0x77, 0x68, 0xd8, 0xf5, 0x7b, 0xca, 0x8c, 0xcf, 0x6b, 0x87, 0x4a, 0x9c, 0x25, 0xd5, - 0x82, 0x89, 0xab, 0x3a, 0xef, 0x0b, 0xc7, 0x9f, 0xf7, 0xbf, 0xc7, 0xf3, 0x7e, 0x2b, 0xf0, 0x68, - 0xc9, 0x22, 0x56, 0xcc, 0xa9, 0x65, 0x33, 0x55, 0xea, 0x68, 0xef, 0x03, 0x5e, 0x9f, 0xf4, 0x24, - 0x9e, 0xfa, 0xa8, 0x1d, 0x33, 0x26, 0xff, 0xb6, 0xb2, 0xc0, 0x8a, 0x25, 0x4d, 0xaf, 0x18, 0x06, - 0x15, 0x1b, 0x7a, 0xf7, 0xbd, 0x23, 0xf2, 0x4f, 0x84, 0x09, 0x9f, 0x42, 0x85, 0x26, 0xca, 0xd7, - 0x4a, 0xc5, 0x9e, 0x56, 0xc6, 0x63, 0x95, 0x9e, 0xf6, 0x21, 0xc4, 0xb6, 0x47, 0x22, 0x6d, 0x6c, - 0xc9, 0x59, 0x5d, 0x13, 0x61, 0xb1, 0x3d, 0x89, 0xb3, 0xd8, 0x1c, 0x2b, 0xfe, 0xa7, 0x1f, 0xc2, - 0x67, 0xf3, 0x01, 0xde, 0x08, 0x42, 0x78, 0x0c, 0x77, 0x4a, 0xe9, 0x85, 0x57, 0xcd, 0x70, 0x7f, - 0x3b, 0x0c, 0xf1, 0xfe, 0x7a, 0x98, 0xfc, 0x62, 0x58, 0x46, 0xdc, 0xde, 0xf5, 0x3b, 0x5e, 0x48, - 0xb3, 0x97, 0x23, 0x91, 0x73, 0xa8, 0xfe, 0xd0, 0x92, 0x73, 0xa3, 0xfc, 0xa2, 0xc9, 0x4a, 0xed, - 0xa6, 0x49, 0xc2, 0x6a, 0xb7, 0x14, 0xca, 0x31, 0x69, 0x27, 0xa5, 0x55, 0xe4, 0x2d, 0x1e, 0xfc, - 0x4b, 0x63, 0x90, 0x3e, 0x25, 0xb0, 0xd2, 0x45, 0x4b, 0x25, 0x1d, 0xe4, 0xc1, 0xa4, 0xc8, 0x27, - 0xa4, 0x2c, 0x3c, 0x68, 0xb9, 0x8c, 0xd1, 0x6e, 0x9f, 0x1d, 0x91, 0x7f, 0x23, 0x7c, 0x3a, 0xbb, - 0xba, 0xa1, 0xb2, 0x2f, 0x56, 0xad, 0xf0, 0x74, 0x55, 0x5f, 0x32, 0x73, 0x16, 0x35, 0x29, 0xb7, - 0x30, 0xa0, 0xa2, 0xff, 0x8f, 0x56, 0xfe, 0x17, 0xf1, 0xc8, 0x26, 0xdd, 0xf1, 0x23, 0x46, 0xc3, - 0x97, 0xe3, 0x0e, 0xf3, 0x9b, 0xad, 0x30, 0x48, 0x3f, 0xed, 0x66, 0x9b, 0xf3, 0x13, 0x01, 0x9e, - 0x83, 0x00, 0xcf, 0xd8, 0xa3, 0x32, 0x40, 0x81, 0x0e, 0xa7, 0xb4, 0x57, 0xf1, 0xc9, 0x78, 0x6f, - 0x96, 0xc3, 0x8f, 0x6b, 0xba, 0xb5, 0x66, 0x34, 0x86, 0xcc, 0xd6, 0x7e, 0x11, 0x46, 0xb3, 0xac, - 0x33, 0xd9, 0xd1, 0x78, 0xe0, 0x50, 0xc2, 0xef, 0xe2, 0x13, 0x7c, 0x89, 0x8a, 0xe6, 0x11, 0xb1, - 0x35, 0x1d, 0x97, 0xde, 0x2e, 0xc9, 0xd6, 0xf2, 0xa6, 0x8f, 0xe4, 0xa2, 0x23, 0x6f, 0x20, 0xfc, - 0xa8, 0x7a, 0x29, 0xb4, 0xbe, 0x4f, 0x7b, 0x8c, 0x2c, 0x57, 0x6e, 0xfa, 0xe0, 0x27, 0x87, 0x6e, - 0x98, 0xba, 0x8b, 0x04, 0x4c, 0x03, 0xd0, 0x94, 0x3d, 0x91, 0xec, 0x71, 0xdc, 0x1c, 0xa9, 0x17, - 0x46, 0xaf, 0x27, 0x07, 0x74, 0xd0, 0x26, 0x70, 0xcd, 0x97, 0xca, 0x56, 0x61, 0x5a, 0x30, 0x71, - 0xd5, 0xdd, 0x1c, 0x08, 0x1e, 0xae, 0xc1, 0x0c, 0x0b, 0xaf, 0xb3, 0x1a, 0x16, 0x30, 0x99, 0xb1, - 0x14, 0xb9, 0x56, 0xb0, 0x24, 0xb7, 0xb3, 0x5f, 0x1a, 0x86, 0xed, 0x5d, 0xe9, 0x22, 0xbf, 0xbd, - 0x2b, 0xe6, 0xb2, 0xed, 0x5d, 0x71, 0xb4, 0x7f, 0x32, 0x04, 0xc3, 0x3f, 0x18, 0x22, 0x6f, 0x0c, - 0x29, 0xb7, 0xa0, 0x99, 0x75, 0x6e, 0x5c, 0xfb, 0x6b, 0x14, 0x7b, 0xe3, 0xea, 0x5e, 0x51, 0xce, - 0x0b, 0xeb, 0x77, 0x51, 0xc1, 0xce, 0x57, 0xe8, 0xc2, 0x92, 0x9c, 0xaf, 0xc1, 0xdf, 0x1b, 0x8a, - 0x0f, 0x23, 0x4a, 0xee, 0x0a, 0x0e, 0x23, 0x8a, 0xbd, 0x74, 0x77, 0xce, 0x79, 0xda, 0xbf, 0x43, - 0x30, 0x13, 0xef, 0x20, 0xf2, 0x4b, 0xa4, 0x9d, 0x09, 0xe3, 0x69, 0x30, 0x9d, 0x03, 0xb3, 0x09, - 0xd0, 0x67, 0x9f, 0x3c, 0x18, 0x86, 0xed, 0x49, 0x89, 0xa7, 0x78, 0x7b, 0xca, 0x2a, 0xb4, 0x74, - 0x7b, 0x2a, 0x76, 0x16, 0x4b, 0xe6, 0xe7, 0xb1, 0x68, 0xdf, 0x1a, 0x22, 0x3f, 0x1c, 0x52, 0x76, - 0xa8, 0xff, 0x2b, 0x37, 0xab, 0xdc, 0x7f, 0x21, 0x3c, 0xa5, 0x6c, 0x66, 0x6b, 0xd0, 0xe5, 0x6a, - 0xf2, 0x5e, 0x8f, 0x5c, 0xd1, 0x6c, 0x23, 0x59, 0x47, 0xf5, 0xb1, 0xf6, 0xa9, 0x9a, 0xad, 0xc4, - 0xcc, 0xbd, 0x02, 0x13, 0x77, 0xdb, 0xfa, 0x44, 0x66, 0x67, 0xca, 0xbf, 0xfc, 0x74, 0x0e, 0xd5, - 0x77, 0x8f, 0x22, 0x39, 0xa9, 0x1f, 0x45, 0x72, 0x78, 0x89, 0xfc, 0x13, 0xc2, 0x56, 0x93, 0x32, - 0x5d, 0x88, 0x4f, 0x18, 0xc2, 0xa6, 0xca, 0xe6, 0xe5, 0x3a, 0x4d, 0x44, 0x70, 0xcf, 0x40, 0x70, - 0x4f, 0x0f, 0xee, 0xd8, 0x4b, 0x82, 0xcb, 0xdf, 0x11, 0xfe, 0x0d, 0xe1, 0xa9, 0x35, 0xda, 0xa1, - 0xff, 0xfd, 0x4c, 0xc5, 0xbd, 0xd4, 0x9d, 0x29, 0xd9, 0x4a, 0x04, 0xf3, 0x3c, 0x04, 0x73, 0x6d, - 0xe1, 0x58, 0xc1, 0xf0, 0x39, 0x79, 0x17, 0xe1, 0x71, 0x45, 0x79, 0xa9, 0x48, 0x1a, 0x1a, 0x26, - 0x9d, 0xda, 0x1c, 0x63, 0x7f, 0x41, 0x7f, 0x1d, 0xe8, 0xaf, 0x58, 0x4e, 0x96, 0xbe, 0x42, 0x60, - 0x1c, 0xfc, 0xcd, 0xf8, 0xc0, 0x9d, 0xa7, 0x5e, 0xac, 0xa4, 0x48, 0x09, 0x68, 0xc9, 0xcc, 0x59, - 0xf0, 0x2e, 0x01, 0xef, 0x25, 0xf2, 0x78, 0x19, 0xaf, 0x84, 0x24, 0xbf, 0x42, 0x78, 0x5c, 0x91, - 0x4a, 0xad, 0xd4, 0xaa, 0xf2, 0x70, 0x8c, 0xfd, 0x05, 0xaa, 0x78, 0x9f, 0xb5, 0x60, 0x84, 0xca, - 0xf3, 0xf9, 0x3e, 0xc2, 0x13, 0xf1, 0xf4, 0xc8, 0x53, 0x62, 0x0a, 0x57, 0x7b, 0x3d, 0xa5, 0x93, - 0xc2, 0x8a, 0x79, 0x03, 0x01, 0x4c, 0x01, 0xb8, 0x65, 0x6d, 0xe5, 0x5e, 0xc0, 0x1d, 0xa3, 0xda, - 0x28, 0xbf, 0xc9, 0x8e, 0x20, 0xcc, 0xdf, 0x23, 0x7c, 0x26, 0xf5, 0xbe, 0x33, 0x15, 0xe3, 0x52, - 0x35, 0x72, 0x4a, 0x38, 0xcb, 0x86, 0xde, 0x22, 0xba, 0x55, 0x88, 0xee, 0xe3, 0xe4, 0x5a, 0x69, - 0x74, 0xb9, 0x15, 0x3a, 0xb8, 0x9b, 0x38, 0x22, 0x7f, 0x46, 0x78, 0x22, 0x9e, 0xe4, 0xe3, 0x4d, - 0x90, 0x2a, 0xa8, 0x15, 0xf3, 0x06, 0x22, 0x84, 0x35, 0x08, 0xe1, 0xb9, 0x85, 0xe3, 0x87, 0xc0, - 0xf3, 0xff, 0x23, 0x84, 0xc7, 0xf9, 0x41, 0xea, 0x53, 0xf2, 0x9b, 0x91, 0xb2, 0x45, 0xa1, 0x71, - 0xd4, 0x2e, 0x0a, 0xad, 0xbf, 0x08, 0xe1, 0x71, 0x08, 0xe1, 0x3c, 0x99, 0x94, 0x21, 0x0c, 0xbe, - 0x5c, 0x19, 0xc4, 0xc0, 0x2b, 0x0b, 0xbc, 0xad, 0x1a, 0xbc, 0x5c, 0xf2, 0x69, 0x94, 0x7f, 0xb8, - 0x4d, 0xbd, 0x7b, 0x4a, 0x9f, 0x21, 0x2f, 0x54, 0xf8, 0xe5, 0xa5, 0xc0, 0x8f, 0x0a, 0x5e, 0xfc, - 0x29, 0x8a, 0xcf, 0x53, 0x28, 0x3f, 0xa2, 0x69, 0xb1, 0x83, 0x3e, 0x3f, 0x43, 0xe4, 0x37, 0xa1, - 0x9f, 0x21, 0x7c, 0xaa, 0x49, 0x53, 0x80, 0x07, 0xf9, 0x8f, 0x06, 0x52, 0xc6, 0x94, 0x6c, 0xcf, - 0x95, 0xb8, 0xd9, 0x9f, 0x06, 0xb2, 0x4f, 0x92, 0x0d, 0x53, 0xb2, 0xea, 0x0b, 0xe3, 0xf7, 0x10, - 0x1e, 0x8b, 0x17, 0x7a, 0x1a, 0x76, 0xae, 0x84, 0x42, 0xad, 0x23, 0xf3, 0x06, 0x9e, 0x62, 0x72, - 0xef, 0x00, 0xfd, 0x2d, 0xeb, 0xe1, 0xd1, 0x73, 0xbd, 0x76, 0x30, 0x6e, 0x52, 0xf6, 0xd9, 0xf8, - 0xec, 0x96, 0xff, 0xc6, 0x67, 0x60, 0xd3, 0x7e, 0xe3, 0x93, 0x76, 0x11, 0xa8, 0xe3, 0x80, 0x3a, - 0x46, 0x46, 0x24, 0xaa, 0x38, 0x1b, 0x92, 0xbf, 0xc4, 0x9b, 0xda, 0xda, 0xe0, 0x13, 0x25, 0x91, - 0xb1, 0xea, 0x37, 0xe2, 0x39, 0xb4, 0x5c, 0x27, 0xf6, 0x0e, 0x0c, 0xeb, 0x92, 0x56, 0x72, 0x1a, - 0xcf, 0x7e, 0x0a, 0x05, 0x79, 0x82, 0xe3, 0x69, 0xcd, 0x54, 0xa9, 0xef, 0xcc, 0xbf, 0x39, 0x14, - 0x2f, 0xf2, 0x2c, 0x82, 0x5f, 0x54, 0x66, 0x73, 0x9c, 0xe9, 0xd5, 0x34, 0x63, 0xe4, 0x6d, 0xbf, - 0x15, 0x3f, 0x95, 0x7d, 0x1f, 0x91, 0xdb, 0xe5, 0xb1, 0xd5, 0x0e, 0x6c, 0xab, 0x49, 0xd6, 0x1f, - 0x4a, 0x97, 0x2f, 0x5e, 0xdb, 0xba, 0xba, 0xe3, 0xb3, 0xdd, 0xbd, 0xed, 0x46, 0x3b, 0xe8, 0x3a, - 0x10, 0x56, 0x10, 0xee, 0x38, 0xc9, 0x47, 0x67, 0x3b, 0xb4, 0xe7, 0xf4, 0xb7, 0x97, 0x77, 0x02, - 0x27, 0xfb, 0x95, 0xe3, 0xf6, 0x87, 0xe1, 0x03, 0xb4, 0x27, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, - 0x20, 0x80, 0x65, 0x97, 0x00, 0x29, 0x00, 0x00, + 0x8e, 0x7f, 0xdf, 0x75, 0x93, 0xb4, 0x51, 0x42, 0x7f, 0xb9, 0xb5, 0x73, 0x65, 0x48, 0x93, 0x62, + 0x52, 0x90, 0x2c, 0xa4, 0xab, 0xf5, 0xdd, 0x89, 0xb3, 0xc9, 0xbd, 0x77, 0x6f, 0x77, 0xc7, 0x2e, + 0x96, 0x65, 0xf1, 0x43, 0x08, 0x51, 0x21, 0xf1, 0xc0, 0x0f, 0x41, 0x21, 0xa2, 0x14, 0x8a, 0xf8, + 0x59, 0x5e, 0x40, 0x45, 0xbc, 0x54, 0x42, 0x80, 0xc4, 0x0b, 0x2f, 0xf0, 0xce, 0x0b, 0x7d, 0xe6, + 0x6f, 0x40, 0x7b, 0x76, 0x66, 0xef, 0xce, 0xce, 0xce, 0xee, 0xac, 0x49, 0x79, 0xe2, 0xcd, 0xbe, + 0xe7, 0x3b, 0x33, 0x9f, 0x73, 0xe6, 0xcc, 0x99, 0xd9, 0xdd, 0xc1, 0x93, 0x77, 0x3a, 0xfb, 0x8c, + 0xfa, 0x5e, 0xc7, 0x89, 0x68, 0xb8, 0xe7, 0xb7, 0xa9, 0xe3, 0x7a, 0x5d, 0xbf, 0xd7, 0xe8, 0x87, + 0x01, 0x0b, 0xc8, 0xa8, 0xb0, 0x36, 0xb8, 0xd5, 0x9a, 0xdc, 0x09, 0x82, 0x9d, 0x0e, 0x75, 0xdc, + 0xbe, 0xef, 0xb8, 0xbd, 0x5e, 0xc0, 0x5c, 0xe6, 0x07, 0xbd, 0x28, 0xd1, 0x5b, 0x83, 0xde, 0xa0, + 0x17, 0xa7, 0x1f, 0x06, 0xf7, 0x68, 0x9b, 0x71, 0x6b, 0xa3, 0xd8, 0xda, 0xf2, 0x82, 0xae, 0xeb, + 0xf7, 0x5a, 0x2e, 0x63, 0xa1, 0xbf, 0xbd, 0xcb, 0xa8, 0xe8, 0x6d, 0x56, 0xa3, 0x57, 0x84, 0xa7, + 0x73, 0x42, 0xe6, 0x46, 0xf7, 0xb9, 0x69, 0x2a, 0x67, 0x7a, 0x2d, 0x08, 0xef, 0xdf, 0xe9, 0x04, + 0xaf, 0x71, 0xf3, 0x9c, 0xc6, 0xac, 0x8e, 0x71, 0x3e, 0xa7, 0xec, 0xb8, 0xbb, 0xbd, 0xf6, 0xdd, + 0x56, 0xbf, 0xe3, 0xf2, 0x60, 0x59, 0x56, 0x4e, 0x41, 0xf7, 0x68, 0x4f, 0xb8, 0x7e, 0x36, 0x6f, + 0xfb, 0x3c, 0x6d, 0xef, 0xc6, 0x91, 0xd3, 0xb8, 0xda, 0x75, 0x59, 0xfb, 0xae, 0xbb, 0xdd, 0xa1, + 0xad, 0x90, 0x46, 0xc1, 0x6e, 0xd8, 0xa6, 0x5c, 0x38, 0x9d, 0x13, 0xf6, 0x02, 0x8f, 0xb6, 0xf2, + 0xbd, 0x4d, 0x17, 0xc4, 0x43, 0x11, 0xe5, 0xe7, 0x6a, 0x8f, 0x86, 0xd1, 0xc0, 0x7a, 0x26, 0x67, + 0x6d, 0x07, 0xdd, 0xae, 0x96, 0xd6, 0xa3, 0x51, 0x3b, 0xf4, 0xfb, 0x71, 0xe7, 0x2d, 0xda, 0x63, + 0x3e, 0xdb, 0x57, 0xdc, 0x6e, 0x07, 0x21, 0x75, 0x7c, 0x2f, 0xb6, 0xde, 0xf1, 0x69, 0xa8, 0x8c, + 0x02, 0xf6, 0x2e, 0x65, 0xa1, 0xdf, 0xe6, 0x11, 0xbf, 0xf8, 0x95, 0x9b, 0xf8, 0xd8, 0x6a, 0xdc, + 0xff, 0xa7, 0x93, 0xdc, 0x23, 0x5d, 0x8c, 0x5f, 0x0c, 0xa9, 0xcb, 0xe8, 0x6d, 0x37, 0xba, 0x4f, + 0x1e, 0x4b, 0xd3, 0xa9, 0x91, 0xa4, 0x6c, 0xfc, 0x6b, 0x62, 0xdf, 0xa4, 0xaf, 0xee, 0xd2, 0x88, + 0x59, 0x76, 0x99, 0x24, 0xea, 0x07, 0xbd, 0x88, 0xda, 0x13, 0x5f, 0xfe, 0xc7, 0xfb, 0xdf, 0x1a, + 0x22, 0xf6, 0x71, 0x48, 0xe9, 0xbd, 0x27, 0x20, 0x58, 0xd1, 0x35, 0xb4, 0x40, 0xbe, 0x86, 0xf0, + 0x47, 0x9a, 0x94, 0xc1, 0x60, 0xe7, 0xf3, 0x3d, 0xdd, 0xda, 0x8e, 0x53, 0xb1, 0x49, 0x99, 0x18, + 0xeb, 0x64, 0xd1, 0x58, 0xf6, 0x3a, 0xf4, 0xfe, 0x1c, 0x79, 0x46, 0xea, 0xdd, 0x39, 0xf0, 0xbd, + 0x06, 0xcf, 0xe6, 0x43, 0xf8, 0x27, 0x59, 0x02, 0xc9, 0xdf, 0x3d, 0xb7, 0x4b, 0x93, 0xbf, 0xf8, + 0x94, 0x1c, 0x92, 0xef, 0x22, 0xfc, 0xc8, 0x0d, 0x3f, 0x02, 0x96, 0x0d, 0x2f, 0x22, 0x2b, 0xf9, + 0xc1, 0x6e, 0xba, 0x5d, 0xea, 0xad, 0x43, 0xe8, 0x37, 0xd2, 0x20, 0xc7, 0x2d, 0x04, 0xde, 0xbc, + 0x71, 0x0b, 0x7b, 0x11, 0x98, 0x67, 0xc8, 0x74, 0x96, 0xb9, 0xe5, 0x7b, 0x91, 0x73, 0x30, 0x60, + 0xe6, 0xc0, 0xe4, 0x37, 0x08, 0x7f, 0x54, 0x90, 0x45, 0x64, 0x3a, 0x3f, 0xca, 0x26, 0xcf, 0xde, + 0x2c, 0xca, 0x44, 0x51, 0xa4, 0x60, 0xe4, 0x6d, 0x18, 0xf9, 0x73, 0x64, 0xa5, 0x6e, 0xb4, 0xb6, + 0xe6, 0xc8, 0x05, 0xb3, 0x36, 0xe4, 0x10, 0x9f, 0x48, 0x32, 0xe0, 0xb3, 0x7c, 0xa9, 0x93, 0x99, + 0x3c, 0x8f, 0xb0, 0xc8, 0xc9, 0x74, 0xa1, 0x4a, 0xc6, 0x13, 0x6a, 0x12, 0x9c, 0xf8, 0x98, 0x3d, + 0x26, 0x80, 0x44, 0x4d, 0x81, 0xa4, 0xfa, 0x36, 0xc2, 0x8f, 0x34, 0x29, 0x4b, 0x07, 0xaf, 0x4e, + 0xac, 0x09, 0xdd, 0xb8, 0xf6, 0x06, 0x8c, 0xf4, 0x22, 0x59, 0x55, 0x46, 0xaa, 0x9d, 0x60, 0x6f, + 0x22, 0x3c, 0x12, 0x4f, 0x81, 0xe8, 0xfb, 0x03, 0x4f, 0x32, 0x07, 0xd8, 0xe7, 0xc9, 0x6c, 0x9e, + 0x5d, 0x97, 0x68, 0xef, 0x21, 0x7c, 0x3c, 0x4b, 0x68, 0x98, 0x6c, 0x93, 0xba, 0xe8, 0x01, 0xc5, + 0x3d, 0xa0, 0xf0, 0xc8, 0xe5, 0xa3, 0x44, 0x70, 0x6b, 0x89, 0x2c, 0x98, 0xb7, 0x23, 0x5f, 0x45, + 0x78, 0x34, 0x49, 0x95, 0x1b, 0xb0, 0x75, 0xbc, 0xdc, 0x71, 0x7b, 0x64, 0x36, 0x8f, 0x37, 0xb0, + 0xc9, 0xd9, 0x37, 0x57, 0x2d, 0xe4, 0xf9, 0x77, 0x0e, 0x7c, 0x3a, 0x6d, 0x9f, 0x14, 0x6c, 0x99, + 0x9d, 0x0a, 0x52, 0xf0, 0x07, 0x08, 0x1f, 0x6f, 0x52, 0x96, 0xa1, 0xa8, 0x4e, 0x42, 0x4b, 0x3f, + 0xbc, 0x7d, 0x03, 0x06, 0xbc, 0x4e, 0xd6, 0x8a, 0x06, 0xac, 0x9d, 0x89, 0x3f, 0x46, 0xf8, 0xd1, + 0x26, 0x65, 0xab, 0x6d, 0xe6, 0xef, 0x95, 0x46, 0x2a, 0xaf, 0x30, 0x41, 0xbd, 0x0e, 0xa8, 0xcf, + 0x93, 0x67, 0x05, 0xaa, 0x0b, 0x9d, 0xb4, 0x6a, 0x12, 0x93, 0x07, 0x08, 0x9f, 0x8a, 0x13, 0x28, + 0xcf, 0x10, 0x91, 0xc5, 0x2a, 0xcc, 0x6c, 0x72, 0x9e, 0xd5, 0xa3, 0x42, 0x7a, 0x3e, 0x05, 0xb8, + 0x2b, 0xa4, 0x51, 0x8a, 0xab, 0xae, 0x95, 0xb7, 0x11, 0x1e, 0x8b, 0x3b, 0x18, 0x74, 0xf7, 0x81, + 0xaf, 0xe7, 0x8b, 0x80, 0x9a, 0x59, 0x11, 0x19, 0x46, 0xdd, 0x92, 0xfe, 0x2b, 0x2f, 0x3a, 0xd9, + 0xf8, 0x19, 0x2d, 0xea, 0xaa, 0xb8, 0xf5, 0x01, 0xe6, 0x1e, 0xb9, 0x72, 0xc4, 0x8c, 0xdc, 0x72, + 0xc8, 0x72, 0xad, 0xa6, 0xe4, 0x5d, 0x84, 0x47, 0x5f, 0xe9, 0x7b, 0xc6, 0x8b, 0x3b, 0xd1, 0x1a, + 0x2c, 0x6e, 0x21, 0xe4, 0x8b, 0xfb, 0x16, 0x78, 0xb6, 0x61, 0x3d, 0x94, 0xb5, 0x16, 0x17, 0x83, + 0x2f, 0x21, 0x3c, 0x92, 0x14, 0x90, 0x75, 0x71, 0x3e, 0x24, 0xca, 0x4e, 0x97, 0x9a, 0xe4, 0x9a, + 0x34, 0x5b, 0xa9, 0xe3, 0xd4, 0x53, 0x40, 0x3d, 0x6e, 0x13, 0x41, 0x9d, 0x9e, 0x45, 0xa1, 0x20, + 0x7d, 0x03, 0xe1, 0xb1, 0x4d, 0x9a, 0x78, 0x32, 0xa0, 0x98, 0xd3, 0xf6, 0x2e, 0xb4, 0xb5, 0x39, + 0x2e, 0x00, 0xc7, 0x79, 0xfb, 0x8c, 0xca, 0xe1, 0x84, 0xbc, 0xd3, 0x18, 0xe8, 0xeb, 0x08, 0x8f, + 0x6e, 0xd2, 0x76, 0xb0, 0x47, 0xc3, 0x01, 0xcf, 0x6c, 0x09, 0x0f, 0x48, 0x6b, 0xe3, 0xcc, 0x00, + 0xce, 0x39, 0xdb, 0x2a, 0xc4, 0x81, 0x3e, 0x63, 0x9a, 0xef, 0x20, 0x7c, 0xac, 0x49, 0xd9, 0x80, + 0x64, 0x51, 0xb7, 0xa7, 0xa5, 0x92, 0x4c, 0xe5, 0x3e, 0xad, 0xa5, 0xb1, 0x9f, 0x81, 0xf1, 0xaf, + 0x90, 0x27, 0x0b, 0xc6, 0x37, 0x28, 0x82, 0x6f, 0x23, 0x3c, 0x92, 0xa4, 0xa7, 0x49, 0xea, 0xc8, + 0x19, 0x3f, 0x5b, 0xa9, 0xe3, 0x31, 0x7a, 0x1e, 0x18, 0xaf, 0x59, 0x47, 0x63, 0x8c, 0xc3, 0xf7, + 0x07, 0x84, 0x47, 0xb3, 0xe1, 0x5b, 0x73, 0x99, 0x4b, 0x1c, 0x93, 0x10, 0xc6, 0x4a, 0x01, 0xbc, + 0x62, 0xde, 0x80, 0x93, 0xbf, 0x00, 0xe4, 0x4f, 0x93, 0x6b, 0x82, 0xdc, 0x73, 0x99, 0x5b, 0x33, + 0xc4, 0xaf, 0x23, 0x7c, 0x22, 0xae, 0x68, 0xe9, 0x20, 0x86, 0x05, 0x72, 0x4a, 0x1b, 0x5e, 0xa8, + 0x8f, 0x97, 0x00, 0x6d, 0x99, 0x2c, 0xd6, 0x08, 0x2a, 0x79, 0x07, 0x61, 0x72, 0x9b, 0x86, 0x5d, + 0xbf, 0x27, 0xcd, 0xf8, 0xbc, 0x76, 0xa8, 0x54, 0x2c, 0xa8, 0x16, 0x4c, 0xa4, 0xf2, 0xbc, 0x2f, + 0x1c, 0x7d, 0xde, 0xff, 0x9e, 0xcc, 0xfb, 0xcd, 0xc0, 0xa3, 0x25, 0x8b, 0x58, 0x32, 0x67, 0x96, + 0xcd, 0x54, 0xa9, 0xd0, 0xde, 0x03, 0xbc, 0x3e, 0xe9, 0x09, 0x3c, 0xf9, 0x39, 0x3c, 0x61, 0x4c, + 0xff, 0x6d, 0xe5, 0x81, 0x25, 0x4b, 0x96, 0x5e, 0x32, 0x0c, 0x2a, 0x36, 0xf4, 0xee, 0x7b, 0x87, + 0xe4, 0x9f, 0x08, 0x93, 0x78, 0x0a, 0x25, 0x9a, 0x48, 0xad, 0x95, 0x92, 0x3d, 0x9b, 0x19, 0x8f, + 0x55, 0x2a, 0xed, 0x03, 0xf0, 0x6d, 0x97, 0x44, 0x5a, 0xdf, 0xd2, 0xb3, 0xba, 0xc6, 0xc3, 0x62, + 0x7b, 0xea, 0x67, 0xb1, 0x39, 0xc9, 0xf8, 0x9f, 0x7e, 0x08, 0x9f, 0x56, 0x1d, 0xbc, 0x1e, 0x84, + 0xf0, 0x18, 0xee, 0x94, 0xd2, 0x73, 0x55, 0x4d, 0x77, 0x7f, 0x3b, 0x0c, 0xfe, 0xfe, 0x7a, 0x98, + 0xfc, 0x62, 0x58, 0x78, 0xdc, 0xbe, 0xeb, 0x77, 0xbc, 0x90, 0xe6, 0xdf, 0x9c, 0x44, 0xce, 0x81, + 0xfc, 0x43, 0x4b, 0xcc, 0x8d, 0xf4, 0x8b, 0x26, 0x2a, 0xb5, 0x9b, 0xa6, 0x01, 0xab, 0xdd, 0x92, + 0x67, 0x8e, 0x49, 0x3b, 0x91, 0x5a, 0x45, 0x6a, 0xfe, 0xe0, 0x5f, 0xea, 0x83, 0xd0, 0x94, 0xc0, + 0x0a, 0x89, 0x96, 0x4a, 0x08, 0xc4, 0xc1, 0xa4, 0x48, 0x13, 0x52, 0x16, 0xee, 0xb7, 0x5c, 0xc6, + 0x68, 0xb7, 0xcf, 0x0e, 0xc9, 0xbf, 0x11, 0x3e, 0x99, 0x5f, 0xdd, 0x50, 0xd9, 0x17, 0xab, 0x56, + 0x78, 0xb6, 0xaa, 0x2f, 0x99, 0x89, 0x79, 0x4d, 0x52, 0x16, 0x06, 0x54, 0xf4, 0xff, 0xd1, 0xca, + 0xff, 0x02, 0x1e, 0xd9, 0xa4, 0x3b, 0x7e, 0xc4, 0x68, 0xf8, 0x72, 0xd2, 0xa1, 0xba, 0xd9, 0x72, + 0x83, 0xd0, 0x69, 0x37, 0x5b, 0x45, 0xc7, 0x1d, 0x3c, 0x03, 0x0e, 0x9e, 0xb2, 0x47, 0x85, 0x83, + 0x1c, 0x1d, 0x4e, 0x69, 0xaf, 0xe2, 0xe3, 0xc9, 0xde, 0x2c, 0x86, 0x1f, 0xd7, 0x74, 0x6b, 0xcd, + 0x68, 0x0c, 0xb9, 0xad, 0xfd, 0x3c, 0x8c, 0x66, 0x59, 0xa7, 0xf2, 0xa3, 0xc5, 0x8e, 0x43, 0x09, + 0xbf, 0x83, 0x8f, 0xc5, 0x4b, 0x94, 0x37, 0x8f, 0x88, 0xad, 0xe9, 0xb8, 0xf4, 0xed, 0x92, 0x68, + 0x2d, 0xde, 0xf4, 0x11, 0xc5, 0x3b, 0xf2, 0x06, 0xc2, 0x8f, 0xca, 0x2f, 0x85, 0xd6, 0xf7, 0x68, + 0x8f, 0x91, 0xe5, 0xca, 0x4d, 0x1f, 0x74, 0x62, 0xe8, 0x86, 0xa9, 0x9c, 0x07, 0x60, 0x1a, 0x80, + 0xa6, 0xec, 0x89, 0x74, 0x8f, 0x8b, 0xcd, 0x91, 0xfc, 0xc2, 0xe8, 0xf5, 0xf4, 0x80, 0x0e, 0xb9, + 0x09, 0x5c, 0xf3, 0xa5, 0x69, 0x2b, 0x31, 0x2d, 0x98, 0x48, 0x75, 0x6f, 0x0e, 0x38, 0x4f, 0x9c, + 0x83, 0x39, 0x96, 0xb8, 0xce, 0x6a, 0x58, 0xc0, 0x64, 0xc6, 0x52, 0x24, 0xad, 0x60, 0x49, 0xdf, + 0xce, 0x7e, 0x71, 0x18, 0xb6, 0x77, 0xa9, 0x0b, 0x75, 0x7b, 0x97, 0xcc, 0x65, 0xdb, 0xbb, 0x24, + 0xb4, 0x7f, 0x32, 0x04, 0xc3, 0x3f, 0x18, 0x22, 0x6f, 0x0c, 0x49, 0x6f, 0x41, 0x73, 0xeb, 0xdc, + 0xb8, 0xf6, 0xd7, 0x28, 0xf6, 0xc6, 0xd5, 0xbd, 0xa2, 0x9c, 0x17, 0xd6, 0xef, 0xa2, 0x82, 0xad, + 0x56, 0xe8, 0xc2, 0x92, 0xac, 0xd6, 0xe0, 0xef, 0x0d, 0x25, 0x87, 0x11, 0x29, 0x76, 0x05, 0x87, + 0x11, 0xc9, 0x5e, 0xba, 0x3b, 0x2b, 0x4a, 0xfb, 0x77, 0x08, 0x66, 0xe2, 0x1d, 0x44, 0x7e, 0x89, + 0xb4, 0x33, 0x61, 0x3c, 0x0d, 0xa6, 0x73, 0x60, 0x36, 0x01, 0xfa, 0xe8, 0x93, 0x07, 0xc3, 0xb0, + 0x3d, 0x49, 0xfe, 0x14, 0x6f, 0x4f, 0xf9, 0x0c, 0x2d, 0xdd, 0x9e, 0x8a, 0xc5, 0x7c, 0xc9, 0xfc, + 0x3c, 0x49, 0xda, 0xb7, 0x86, 0xc8, 0x0f, 0x87, 0xa4, 0x1d, 0xea, 0xff, 0x99, 0x9b, 0xcf, 0xdc, + 0x7f, 0x21, 0x3c, 0x25, 0x6d, 0x66, 0x6b, 0xd0, 0xe5, 0x6a, 0xfa, 0xd1, 0x8f, 0x5c, 0xd6, 0x6c, + 0x23, 0x79, 0xa1, 0xfc, 0x58, 0xfb, 0x64, 0xcd, 0x56, 0x7c, 0xe6, 0x5e, 0x81, 0x89, 0xbb, 0x65, + 0x7d, 0x22, 0xb7, 0x33, 0xa9, 0x5f, 0x46, 0x9d, 0x03, 0xf9, 0xc3, 0x24, 0x0f, 0x4e, 0xe6, 0x47, + 0x1e, 0x9c, 0xb8, 0x44, 0xfe, 0x11, 0x61, 0xab, 0x49, 0x99, 0xce, 0xc5, 0x27, 0x0c, 0x61, 0x33, + 0x65, 0xf3, 0x62, 0x9d, 0x26, 0xdc, 0xb9, 0xa7, 0xc1, 0xb9, 0xa7, 0x06, 0xef, 0xd8, 0x4b, 0x9c, + 0x53, 0xdf, 0x11, 0xfe, 0x0d, 0xe1, 0xa9, 0x35, 0xda, 0xa1, 0xff, 0xfd, 0x4c, 0x25, 0xbd, 0xd4, + 0x9d, 0x29, 0xd1, 0x8a, 0x3b, 0xf3, 0x1c, 0x38, 0x73, 0x75, 0xe1, 0x48, 0xce, 0xc4, 0x73, 0xf2, + 0x2e, 0xc2, 0xe3, 0x52, 0xe6, 0x65, 0x3c, 0x69, 0x68, 0x98, 0x74, 0xd9, 0xe6, 0x18, 0xeb, 0x39, + 0xfd, 0x35, 0xa0, 0xbf, 0x6c, 0x39, 0x79, 0xfa, 0x8a, 0x04, 0x8b, 0xc1, 0xdf, 0x4c, 0x0e, 0xdc, + 0x2a, 0xf5, 0x62, 0x25, 0x45, 0x26, 0x81, 0x96, 0xcc, 0xc4, 0x9c, 0x77, 0x09, 0x78, 0x2f, 0x90, + 0xc7, 0xcb, 0x78, 0x05, 0x24, 0xf9, 0x15, 0xc2, 0xe3, 0x52, 0xaa, 0xd4, 0x0a, 0xad, 0x9c, 0x1e, + 0x8e, 0xb1, 0x9e, 0xa3, 0xf2, 0xef, 0x59, 0x0b, 0x46, 0xa8, 0x71, 0x3c, 0xdf, 0x47, 0x78, 0x22, + 0x99, 0x1e, 0x71, 0x4a, 0xcc, 0xe0, 0x6a, 0x5f, 0x4f, 0xe9, 0x52, 0x61, 0xc5, 0xbc, 0x01, 0x07, + 0xa6, 0x00, 0xdc, 0xb2, 0xb6, 0x94, 0x0f, 0x70, 0x47, 0xa8, 0x36, 0xd2, 0x6f, 0xa2, 0x23, 0x70, + 0xf3, 0xf7, 0x08, 0x9f, 0xca, 0x7c, 0xef, 0xcc, 0xf8, 0xb8, 0x54, 0x8d, 0x9c, 0x49, 0x9c, 0x65, + 0x43, 0x35, 0xf7, 0x6e, 0x15, 0xbc, 0xfb, 0x38, 0xb9, 0x5a, 0xea, 0x9d, 0xb2, 0x42, 0x07, 0xef, + 0x26, 0x0e, 0xc9, 0x9f, 0x10, 0x9e, 0x48, 0x26, 0xf9, 0x68, 0x13, 0x24, 0x27, 0xd4, 0x8a, 0x79, + 0x03, 0xee, 0xc2, 0x1a, 0xb8, 0xf0, 0xec, 0xc2, 0xd1, 0x5d, 0x88, 0xe3, 0xff, 0x23, 0x84, 0xc7, + 0xe3, 0x83, 0xd4, 0x4b, 0xe2, 0x42, 0x49, 0xd9, 0xa2, 0xd0, 0x08, 0xb5, 0x8b, 0x42, 0xab, 0xe7, + 0x2e, 0x3c, 0x0e, 0x2e, 0x9c, 0x25, 0x93, 0xc2, 0x85, 0xc1, 0xb5, 0x96, 0x81, 0x0f, 0x71, 0x65, + 0x81, 0xaf, 0x55, 0x83, 0x8f, 0x4b, 0x3e, 0x8d, 0xd4, 0x87, 0xdb, 0xcc, 0xb7, 0xa7, 0xec, 0x19, + 0xf2, 0x5c, 0x85, 0x4e, 0x4d, 0x85, 0xf8, 0xa8, 0xe0, 0x25, 0xf7, 0x54, 0xfc, 0x38, 0x84, 0xe2, + 0x86, 0x4d, 0x8b, 0xed, 0xf7, 0xe3, 0x33, 0x84, 0xba, 0x09, 0xfd, 0x0c, 0xe1, 0x13, 0x4d, 0x9a, + 0x01, 0xdc, 0x57, 0x2f, 0x0d, 0x64, 0x8c, 0x99, 0xb4, 0x3d, 0x53, 0x22, 0xb3, 0x3f, 0x05, 0x64, + 0x9f, 0x24, 0x1b, 0xa6, 0x64, 0xd5, 0x2f, 0x8c, 0xdf, 0x43, 0x78, 0x2c, 0x59, 0xe8, 0x59, 0xd8, + 0xb9, 0x12, 0x0a, 0xb9, 0x8e, 0xcc, 0x1b, 0x28, 0xf9, 0xe4, 0xde, 0x06, 0xfa, 0x9b, 0xd6, 0xc3, + 0xa3, 0x8f, 0xf3, 0xb5, 0x83, 0x71, 0x93, 0xb2, 0xcf, 0x24, 0x67, 0x37, 0xf5, 0x8e, 0xcf, 0xc0, + 0xa6, 0xbd, 0xe3, 0x93, 0x95, 0x70, 0xd4, 0x71, 0x40, 0x1d, 0x23, 0x23, 0x02, 0x95, 0x9f, 0x0d, + 0xc9, 0x9f, 0x93, 0x4d, 0x6d, 0x6d, 0x70, 0x7f, 0x89, 0x47, 0xac, 0xfa, 0x8b, 0xb8, 0x82, 0xa6, + 0x74, 0x62, 0xef, 0xc0, 0xb0, 0x2e, 0x69, 0xa5, 0xa7, 0xf1, 0xfc, 0x3d, 0x29, 0x88, 0x13, 0x1c, + 0x4f, 0x6b, 0x86, 0x4a, 0xfe, 0x66, 0xfe, 0xcd, 0xa1, 0x64, 0x91, 0xe7, 0x11, 0xfc, 0xa2, 0x32, + 0xab, 0x70, 0x66, 0x57, 0xd3, 0x8c, 0x91, 0xda, 0x7e, 0x2b, 0x79, 0x2a, 0xfb, 0x3e, 0x22, 0xb7, + 0xca, 0x7d, 0xab, 0xed, 0xd8, 0x56, 0x93, 0xac, 0x3f, 0x94, 0x2e, 0xc9, 0x5f, 0x92, 0x8b, 0x04, + 0xe9, 0xe3, 0xd2, 0x4b, 0xc9, 0xe5, 0x32, 0x72, 0xd1, 0xe4, 0x4b, 0x0e, 0x17, 0x8b, 0xb0, 0x5c, + 0xaa, 0xd5, 0x86, 0x67, 0x9d, 0x72, 0xf7, 0x8b, 0x5f, 0x6f, 0xab, 0xf7, 0x29, 0xe3, 0x85, 0xab, + 0x5b, 0x57, 0x76, 0x7c, 0x76, 0x77, 0x77, 0xbb, 0xd1, 0x0e, 0xba, 0x0e, 0x70, 0x04, 0xe1, 0x8e, + 0x93, 0xde, 0x9c, 0xdb, 0xa1, 0x3d, 0xa7, 0xbf, 0xbd, 0xbc, 0x13, 0x38, 0xf9, 0xab, 0x9c, 0xdb, + 0x1f, 0x86, 0x8b, 0x74, 0x97, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x01, 0x50, 0xd6, 0xe5, + 0x29, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -288,6 +291,8 @@ type AdminServiceClient interface { GetDescriptionEntity(ctx context.Context, in *admin.ObjectGetRequest, opts ...grpc.CallOption) (*admin.DescriptionEntity, error) // Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. ListDescriptionEntities(ctx context.Context, in *admin.DescriptionEntityListRequest, opts ...grpc.CallOption) (*admin.DescriptionEntityList, error) + // Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. + GetExecutionMetrics(ctx context.Context, in *admin.WorkflowExecutionGetMetricsRequest, opts ...grpc.CallOption) (*admin.WorkflowExecutionGetMetricsResponse, error) } type adminServiceClient struct { @@ -766,6 +771,15 @@ func (c *adminServiceClient) ListDescriptionEntities(ctx context.Context, in *ad return out, nil } +func (c *adminServiceClient) GetExecutionMetrics(ctx context.Context, in *admin.WorkflowExecutionGetMetricsRequest, opts ...grpc.CallOption) (*admin.WorkflowExecutionGetMetricsResponse, error) { + out := new(admin.WorkflowExecutionGetMetricsResponse) + err := c.cc.Invoke(ctx, "/flyteidl.service.AdminService/GetExecutionMetrics", 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 @@ -877,6 +891,8 @@ type AdminServiceServer interface { GetDescriptionEntity(context.Context, *admin.ObjectGetRequest) (*admin.DescriptionEntity, error) // Fetch a list of :ref:`ref_flyteidl.admin.DescriptionEntity` definitions. ListDescriptionEntities(context.Context, *admin.DescriptionEntityListRequest) (*admin.DescriptionEntityList, error) + // Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. + GetExecutionMetrics(context.Context, *admin.WorkflowExecutionGetMetricsRequest) (*admin.WorkflowExecutionGetMetricsResponse, error) } // UnimplementedAdminServiceServer can be embedded to have forward compatible implementations. @@ -1039,6 +1055,9 @@ func (*UnimplementedAdminServiceServer) GetDescriptionEntity(ctx context.Context func (*UnimplementedAdminServiceServer) ListDescriptionEntities(ctx context.Context, req *admin.DescriptionEntityListRequest) (*admin.DescriptionEntityList, error) { return nil, status.Errorf(codes.Unimplemented, "method ListDescriptionEntities not implemented") } +func (*UnimplementedAdminServiceServer) GetExecutionMetrics(ctx context.Context, req *admin.WorkflowExecutionGetMetricsRequest) (*admin.WorkflowExecutionGetMetricsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetExecutionMetrics not implemented") +} func RegisterAdminServiceServer(s *grpc.Server, srv AdminServiceServer) { s.RegisterService(&_AdminService_serviceDesc, srv) @@ -1980,6 +1999,24 @@ func _AdminService_ListDescriptionEntities_Handler(srv interface{}, ctx context. return interceptor(ctx, in, info, handler) } +func _AdminService_GetExecutionMetrics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(admin.WorkflowExecutionGetMetricsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).GetExecutionMetrics(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/flyteidl.service.AdminService/GetExecutionMetrics", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).GetExecutionMetrics(ctx, req.(*admin.WorkflowExecutionGetMetricsRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _AdminService_serviceDesc = grpc.ServiceDesc{ ServiceName: "flyteidl.service.AdminService", HandlerType: (*AdminServiceServer)(nil), @@ -2192,6 +2229,10 @@ var _AdminService_serviceDesc = grpc.ServiceDesc{ MethodName: "ListDescriptionEntities", Handler: _AdminService_ListDescriptionEntities_Handler, }, + { + MethodName: "GetExecutionMetrics", + Handler: _AdminService_GetExecutionMetrics_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 796ed9f93..fa3a3110d 100644 --- a/gen/pb-go/flyteidl/service/admin.pb.gw.go +++ b/gen/pb-go/flyteidl/service/admin.pb.gw.go @@ -2935,6 +2935,66 @@ func request_AdminService_ListDescriptionEntities_1(ctx context.Context, marshal } +var ( + filter_AdminService_GetExecutionMetrics_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0, "project": 1, "domain": 2, "name": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 3, 4, 5}} +) + +func request_AdminService_GetExecutionMetrics_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq admin.WorkflowExecutionGetMetricsRequest + 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) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_GetExecutionMetrics_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetExecutionMetrics(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) { @@ -4093,6 +4153,26 @@ func RegisterAdminServiceHandlerClient(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("GET", pattern_AdminService_GetExecutionMetrics_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_GetExecutionMetrics_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_GetExecutionMetrics_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -4208,6 +4288,8 @@ var ( pattern_AdminService_ListDescriptionEntities_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", "description_entities", "resource_type", "id.project", "id.domain", "id.name"}, "")) pattern_AdminService_ListDescriptionEntities_1 = 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}, []string{"api", "v1", "description_entities", "resource_type", "id.project", "id.domain"}, "")) + + pattern_AdminService_GetExecutionMetrics_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "v1", "metrics", "executions", "id.project", "id.domain", "id.name"}, "")) ) var ( @@ -4322,4 +4404,6 @@ var ( forward_AdminService_ListDescriptionEntities_0 = runtime.ForwardResponseMessage forward_AdminService_ListDescriptionEntities_1 = runtime.ForwardResponseMessage + + forward_AdminService_GetExecutionMetrics_0 = runtime.ForwardResponseMessage ) diff --git a/gen/pb-go/flyteidl/service/admin.swagger.json b/gen/pb-go/flyteidl/service/admin.swagger.json index 4f73a314a..75700b081 100644 --- a/gen/pb-go/flyteidl/service/admin.swagger.json +++ b/gen/pb-go/flyteidl/service/admin.swagger.json @@ -1482,6 +1482,54 @@ ] } }, + "/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}": { + "get": { + "summary": "Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`.", + "operationId": "GetExecutionMetrics", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/adminWorkflowExecutionGetMetricsResponse" + } + } + }, + "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 or system provided value for the resource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "depth", + "description": "depth defines the number of Flyte entity levels to traverse when breaking down execution details.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "AdminService" + ] + } + }, "/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}": { "get": { "summary": "Returns a :ref:`ref_flyteidl.admin.NamedEntity` object.", @@ -5426,6 +5474,16 @@ }, "description": "Response structure for WorkflowExecutionGetDataRequest which contains inputs and outputs for an execution." }, + "adminWorkflowExecutionGetMetricsResponse": { + "type": "object", + "properties": { + "span": { + "$ref": "#/definitions/coreSpan", + "description": "Span defines the top-level breakdown of the workflows execution. More precise information is nested in a\nhierarchical structure using Flyte entity references." + } + }, + "description": "WorkflowExecutionGetMetricsResponse represents the response containing metrics for the specified workflow execution." + }, "adminWorkflowList": { "type": "object", "properties": { @@ -6633,6 +6691,45 @@ }, "description": "SleepCondition represents a dependency on waiting for the specified duration." }, + "coreSpan": { + "type": "object", + "properties": { + "start_time": { + "type": "string", + "format": "date-time", + "description": "start_time defines the instance this span began." + }, + "end_time": { + "type": "string", + "format": "date-time", + "description": "end_time defines the instance this span completed." + }, + "workflow_id": { + "$ref": "#/definitions/coreWorkflowExecutionIdentifier", + "description": "workflow_id is the id of the workflow execution this Span represents." + }, + "node_id": { + "$ref": "#/definitions/coreNodeExecutionIdentifier", + "description": "node_id is the id of the node execution this Span represents." + }, + "task_id": { + "$ref": "#/definitions/coreTaskExecutionIdentifier", + "description": "task_id is the id of the task execution this Span represents." + }, + "operation_id": { + "type": "string", + "description": "operation_id is the id of a unique operation that this Span represents." + }, + "spans": { + "type": "array", + "items": { + "$ref": "#/definitions/coreSpan" + }, + "description": "spans defines a collection of Spans that breakdown this execution." + } + }, + "description": "Span represents a duration trace of Flyte execution. The id field denotes a Flyte execution entity or an operation\nwhich uniquely identifies the Span. The spans attribute allows this Span to be further broken down into more\nprecise definitions." + }, "coreSql": { "type": "object", "properties": { @@ -7204,6 +7301,11 @@ "deck_uri": { "type": "string", "title": "String location uniquely identifying where the deck HTML file is\nNativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar)" + }, + "reported_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents the instant when the event was reported by the executing framework. For example,\nwhen first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when\nliteral inputs are initially copied. The event however will not be sent until after the copy completes.\nExtracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series." } } }, @@ -7319,6 +7421,11 @@ "type": "integer", "format": "int32", "description": "The event version is used to indicate versioned changes in how data is reported using this\nproto message. For example, event_verison \u003e 0 means that maps tasks report logs using the\nTaskExecutionMetadata ExternalResourceInfo fields for each subtask rather than the TaskLog\nin this message." + }, + "reported_at": { + "type": "string", + "format": "date-time", + "description": "This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s\npod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,\nbut this event will not be reported until the pod is marked as completed. Extracting both of these timestamps\nfacilitates a more accurate portrayal of the evaluation time-series." } }, "description": "Plugin specific execution event information. For tasks like Python, Hive, Spark, DynamicJob." diff --git a/gen/pb-go/flyteidl/service/flyteadmin/README.md b/gen/pb-go/flyteidl/service/flyteadmin/README.md index c04535410..538a3e478 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/README.md +++ b/gen/pb-go/flyteidl/service/flyteadmin/README.md @@ -35,6 +35,7 @@ Class | Method | HTTP request | Description *AdminServiceApi* | [**GetDescriptionEntity**](docs/AdminServiceApi.md#getdescriptionentity) | **Get** /api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version} | Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. *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* | [**GetExecutionMetrics**](docs/AdminServiceApi.md#getexecutionmetrics) | **Get** /api/v1/metrics/executions/{id.project}/{id.domain}/{id.name} | Fetches runtime metrics 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. *AdminServiceApi* | [**GetNamedEntity**](docs/AdminServiceApi.md#getnamedentity) | **Get** /api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name} | Returns a :ref:`ref_flyteidl.admin.NamedEntity` object. *AdminServiceApi* | [**GetNodeExecution**](docs/AdminServiceApi.md#getnodeexecution) | **Get** /api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id} | Fetches a :ref:`ref_flyteidl.admin.NodeExecution`. @@ -202,6 +203,7 @@ Class | Method | HTTP request | Description - [AdminWorkflowExecutionEventRequest](docs/AdminWorkflowExecutionEventRequest.md) - [AdminWorkflowExecutionEventResponse](docs/AdminWorkflowExecutionEventResponse.md) - [AdminWorkflowExecutionGetDataResponse](docs/AdminWorkflowExecutionGetDataResponse.md) + - [AdminWorkflowExecutionGetMetricsResponse](docs/AdminWorkflowExecutionGetMetricsResponse.md) - [AdminWorkflowList](docs/AdminWorkflowList.md) - [AdminWorkflowSpec](docs/AdminWorkflowSpec.md) - [BlobTypeBlobDimensionality](docs/BlobTypeBlobDimensionality.md) @@ -276,6 +278,7 @@ Class | Method | HTTP request | Description - [CoreSignalCondition](docs/CoreSignalCondition.md) - [CoreSimpleType](docs/CoreSimpleType.md) - [CoreSleepCondition](docs/CoreSleepCondition.md) + - [CoreSpan](docs/CoreSpan.md) - [CoreSql](docs/CoreSql.md) - [CoreStructuredDataset](docs/CoreStructuredDataset.md) - [CoreStructuredDatasetMetadata](docs/CoreStructuredDatasetMetadata.md) diff --git a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml index 3e50b6eea..4116e07c7 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml +++ b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml @@ -1299,6 +1299,46 @@ paths: description: "A successful response." schema: $ref: "#/definitions/adminListMatchableAttributesResponse" + /api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}: + get: + tags: + - "AdminService" + summary: "Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`." + operationId: "GetExecutionMetrics" + 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 or system provided value for the resource." + required: true + type: "string" + x-exportParamName: "IdName" + - name: "depth" + in: "query" + description: "depth defines the number of Flyte entity levels to traverse\ + \ when breaking down execution details." + required: false + type: "integer" + format: "int32" + x-exportParamName: "Depth" + x-optionalDataType: "Int32" + responses: + 200: + description: "A successful response." + schema: + $ref: "#/definitions/adminWorkflowExecutionGetMetricsResponse" /api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}: get: tags: @@ -30322,6 +30362,48 @@ definitions: url: "url" full_outputs: literals: {} + adminWorkflowExecutionGetMetricsResponse: + type: "object" + properties: + span: + description: "Span defines the top-level breakdown of the workflows execution.\ + \ More precise information is nested in a\nhierarchical structure using\ + \ Flyte entity references." + $ref: "#/definitions/coreSpan" + description: "WorkflowExecutionGetMetricsResponse represents the response containing\ + \ metrics for the specified workflow execution." + example: + span: + start_time: "2000-01-23T04:56:07.000+00:00" + spans: + - null + - null + workflow_id: + domain: "domain" + name: "name" + project: "project" + end_time: "2000-01-23T04:56:07.000+00:00" + task_id: + task_id: + domain: "domain" + resource_type: {} + name: "name" + project: "project" + version: "version" + node_execution_id: + execution_id: + domain: "domain" + name: "name" + project: "project" + node_id: "node_id" + retry_attempt: 0 + operation_id: "operation_id" + node_id: + execution_id: + domain: "domain" + name: "name" + project: "project" + node_id: "node_id" adminWorkflowList: type: "object" properties: @@ -55463,6 +55545,70 @@ definitions: \ duration." example: duration: "duration" + coreSpan: + type: "object" + properties: + start_time: + type: "string" + format: "date-time" + description: "start_time defines the instance this span began." + end_time: + type: "string" + format: "date-time" + description: "end_time defines the instance this span completed." + workflow_id: + description: "workflow_id is the id of the workflow execution this Span represents." + $ref: "#/definitions/coreWorkflowExecutionIdentifier" + node_id: + description: "node_id is the id of the node execution this Span represents." + $ref: "#/definitions/coreNodeExecutionIdentifier" + task_id: + description: "task_id is the id of the task execution this Span represents." + $ref: "#/definitions/coreTaskExecutionIdentifier" + operation_id: + type: "string" + description: "operation_id is the id of a unique operation that this Span\ + \ represents." + spans: + type: "array" + description: "spans defines a collection of Spans that breakdown this execution." + items: + $ref: "#/definitions/coreSpan" + description: "Span represents a duration trace of Flyte execution. The id field\ + \ denotes a Flyte execution entity or an operation\nwhich uniquely identifies\ + \ the Span. The spans attribute allows this Span to be further broken down into\ + \ more\nprecise definitions." + example: + start_time: "2000-01-23T04:56:07.000+00:00" + spans: + - null + - null + workflow_id: + domain: "domain" + name: "name" + project: "project" + end_time: "2000-01-23T04:56:07.000+00:00" + task_id: + task_id: + domain: "domain" + resource_type: {} + name: "name" + project: "project" + version: "version" + node_execution_id: + execution_id: + domain: "domain" + name: "name" + project: "project" + node_id: "node_id" + retry_attempt: 0 + operation_id: "operation_id" + node_id: + execution_id: + domain: "domain" + name: "name" + project: "project" + node_id: "node_id" coreSql: type: "object" properties: @@ -58718,6 +58864,15 @@ definitions: title: "String location uniquely identifying where the deck HTML file is\n\ NativeUrl specifies the url in the format of the configured storage provider\ \ (e.g. s3://my-bucket/randomstring/suffix.tar)" + reported_at: + type: "string" + format: "date-time" + description: "This timestamp represents the instant when the event was reported\ + \ by the executing framework. For example,\nwhen first processing a node\ + \ the `occurred_at` timestamp should be the instant propeller makes progress,\ + \ so when\nliteral inputs are initially copied. The event however will not\ + \ be sent until after the copy completes.\nExtracting both of these timestamps\ + \ facilitates a more accurate portrayal of the evaluation time-series." eventParentNodeExecutionMetadata: type: "object" properties: @@ -58827,6 +58982,15 @@ definitions: \ > 0 means that maps tasks report logs using the\nTaskExecutionMetadata\ \ ExternalResourceInfo fields for each subtask rather than the TaskLog\n\ in this message." + reported_at: + type: "string" + format: "date-time" + description: "This timestamp represents the instant when the event was reported\ + \ by the executing framework. For example, a k8s\npod task may be marked\ + \ completed at (ie. `occurred_at`) the instant the container running user\ + \ code completes,\nbut this event will not be reported until the pod is\ + \ marked as completed. Extracting both of these timestamps\nfacilitates\ + \ a more accurate portrayal of the evaluation time-series." description: "Plugin specific execution event information. For tasks like Python,\ \ Hive, Spark, DynamicJob." eventTaskExecutionMetadata: 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 dab31c18d..1fcd56030 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/api_admin_service.go @@ -1300,6 +1300,108 @@ func (a *AdminServiceApiService) GetExecutionData(ctx context.Context, idProject return localVarReturnValue, localVarHttpResponse, nil } +/* +AdminServiceApiService Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. + * @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 or system provided value for the resource. + * @param optional nil or *GetExecutionMetricsOpts - Optional Parameters: + * @param "Depth" (optional.Int32) - depth defines the number of Flyte entity levels to traverse when breaking down execution details. + +@return AdminWorkflowExecutionGetMetricsResponse +*/ + +type GetExecutionMetricsOpts struct { + Depth optional.Int32 +} + +func (a *AdminServiceApiService) GetExecutionMetrics(ctx context.Context, idProject string, idDomain string, idName string, localVarOptionals *GetExecutionMetricsOpts) (AdminWorkflowExecutionGetMetricsResponse, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue AdminWorkflowExecutionGetMetricsResponse + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}" + 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) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.Depth.IsSet() { + localVarQueryParams.Add("depth", parameterToString(localVarOptionals.Depth.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 AdminWorkflowExecutionGetMetricsResponse + 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 Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_execution_get_metrics_response.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_execution_get_metrics_response.go new file mode 100644 index 000000000..a64dbca99 --- /dev/null +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_execution_get_metrics_response.go @@ -0,0 +1,16 @@ +/* + * 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 + +// WorkflowExecutionGetMetricsResponse represents the response containing metrics for the specified workflow execution. +type AdminWorkflowExecutionGetMetricsResponse struct { + // Span defines the top-level breakdown of the workflows execution. More precise information is nested in a hierarchical structure using Flyte entity references. + Span *CoreSpan `json:"span,omitempty"` +} diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_core_span.go b/gen/pb-go/flyteidl/service/flyteadmin/model_core_span.go new file mode 100644 index 000000000..c050250df --- /dev/null +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_core_span.go @@ -0,0 +1,32 @@ +/* + * 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 + +import ( + "time" +) + +// Span represents a duration trace of Flyte execution. The id field denotes a Flyte execution entity or an operation which uniquely identifies the Span. The spans attribute allows this Span to be further broken down into more precise definitions. +type CoreSpan struct { + // start_time defines the instance this span began. + StartTime time.Time `json:"start_time,omitempty"` + // end_time defines the instance this span completed. + EndTime time.Time `json:"end_time,omitempty"` + // workflow_id is the id of the workflow execution this Span represents. + WorkflowId *CoreWorkflowExecutionIdentifier `json:"workflow_id,omitempty"` + // node_id is the id of the node execution this Span represents. + NodeId *CoreNodeExecutionIdentifier `json:"node_id,omitempty"` + // task_id is the id of the task execution this Span represents. + TaskId *CoreTaskExecutionIdentifier `json:"task_id,omitempty"` + // operation_id is the id of a unique operation that this Span represents. + OperationId string `json:"operation_id,omitempty"` + // spans defines a collection of Spans that breakdown this execution. + Spans []CoreSpan `json:"spans,omitempty"` +} diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_event_node_execution_event.go b/gen/pb-go/flyteidl/service/flyteadmin/model_event_node_execution_event.go index d9c0e14d1..8d80e2a1e 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_event_node_execution_event.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_event_node_execution_event.go @@ -42,4 +42,6 @@ type EventNodeExecutionEvent struct { // Whether this node yielded a dynamic workflow. IsDynamic bool `json:"is_dynamic,omitempty"` DeckUri string `json:"deck_uri,omitempty"` + // This timestamp represents the instant when the event was reported by the executing framework. For example, when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when literal inputs are initially copied. The event however will not be sent until after the copy completes. Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series. + ReportedAt time.Time `json:"reported_at,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_event_task_execution_event.go b/gen/pb-go/flyteidl/service/flyteadmin/model_event_task_execution_event.go index d0595d00b..93dcdbebd 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_event_task_execution_event.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_event_task_execution_event.go @@ -45,4 +45,6 @@ type EventTaskExecutionEvent struct { Metadata *EventTaskExecutionMetadata `json:"metadata,omitempty"` // The event version is used to indicate versioned changes in how data is reported using this proto message. For example, event_verison > 0 means that maps tasks report logs using the TaskExecutionMetadata ExternalResourceInfo fields for each subtask rather than the TaskLog in this message. EventVersion int32 `json:"event_version,omitempty"` + // This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes, but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series. + ReportedAt time.Time `json:"reported_at,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/openapi.go b/gen/pb-go/flyteidl/service/openapi.go index 455ec169f..5216ad8ef 100644 --- a/gen/pb-go/flyteidl/service/openapi.go +++ b/gen/pb-go/flyteidl/service/openapi.go @@ -78,7 +78,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x23\x37\x96\x2f\x0c\xff\x3f\x9f\x02\xb7\xfa\x46\xd8\xee\xd6\x62\xbb\x67\xfa\xed\xab\x89\x1b\xef\x43\x4b\xac\xb2\xc6\x2a\x49\xad\xc5\x1e\x3f\xc3\x0e\x1a\xcc\x04\x49\xb4\x32\x81\x34\x80\x94\x8a\xee\xe8\xef\xfe\x04\x0e\x96\x44\x6e\x64\x72\x91\x44\x95\x73\x26\xa2\xad\x62\x66\x62\x3d\x38\x38\xeb\xef\xfc\xf3\xdf\x10\x7a\x27\x9f\xf0\x6c\x46\xc4\xbb\x13\xf4\xee\xdb\xa3\xaf\xdf\x1d\xe8\xdf\x28\x9b\xf2\x77\x27\x48\x3f\x47\xe8\x9d\xa2\x2a\x21\xfa\xf9\x34\x59\x28\x42\xe3\xe4\x58\x12\xf1\x48\x23\x72\x8c\xe3\x94\xb2\xa3\x4c\x70\xc5\xe1\x43\x84\xde\x3d\x12\x21\x29\x67\xfa\x75\xfb\x27\x62\x5c\x21\x49\xd4\xbb\x7f\x43\xe8\x5f\xd0\xbc\x8c\xe6\x24\x25\xf2\xdd\x09\xfa\x1f\xf3\xd1\x5c\xa9\xcc\x35\xa0\xff\x96\xfa\xdd\xbf\xc3\xbb\x11\x67\x32\x2f\xbd\x8c\xb3\x2c\xa1\x11\x56\x94\xb3\xe3\x7f\x48\xce\x8a\x77\x33\xc1\xe3\x3c\xea\xf8\x2e\x56\x73\x59\xcc\xf1\x18\x67\xf4\xf8\xf1\x9b\x63\x1c\x29\xfa\x48\xc6\x09\xce\x59\x34\x1f\x67\x09\x66\xf2\xf8\x9f\x34\xd6\x73\xfc\x07\x89\xd4\xbf\xe0\x1f\x31\x4f\x31\x65\xe6\x6f\x86\x53\xf2\x2f\xdf\x0e\x42\xef\x66\x44\x05\xff\xd4\xb3\xcd\xd3\x14\x8b\x85\x5e\x91\xf7\x44\x45\x73\xa4\xe6\x04\x99\x7e\x90\x5b\x22\x3e\x45\x18\x9d\x08\x32\x3d\xf9\x45\x90\xe9\xd8\x2d\xf4\x91\x59\xe0\x0b\x18\xcd\x75\x82\xd9\x2f\x47\x76\x99\xa0\x65\x9e\x11\x01\x73\x3b\x8f\x75\xeb\x1f\x88\x1a\x40\xb3\xc5\xfb\xe1\xdb\x82\xc8\x8c\x33\x49\x64\x69\x78\x08\xbd\xfb\xf6\xeb\xaf\x2b\x3f\x21\xf4\x2e\x26\x32\x12\x34\x53\x76\x2f\x07\x48\xe6\x51\x44\xa4\x9c\xe6\x09\x72\x2d\x85\x83\x31\x53\xd5\x1b\x8b\x6b\x8d\x21\xf4\xee\x7f\x0b\x32\xd5\xed\xfc\xe1\x38\x26\x53\xca\xa8\x6e\x57\x1a\xfa\x09\x46\x5b\xfa\xea\x5f\xff\xd6\xf4\xf7\xbf\x82\x19\x65\x58\xe0\x94\x28\x22\x8a\x1d\x37\xff\x57\x99\x8b\xde\x23\xdd\x79\xb1\x8f\xd5\x81\x57\x66\x7b\x89\x53\xa2\xf7\x44\xef\x94\xfd\x02\xfe\x16\x44\xf2\x5c\x44\x04\x4d\x48\xc2\xd9\x4c\x22\xc5\x6b\x6b\x40\xa1\x05\x4d\x5e\xd5\x27\x82\xfc\x9a\x53\x41\xf4\x5e\x29\x91\x93\xca\x53\xb5\xc8\x60\x90\x52\x09\xca\x66\xe1\x52\xfc\xeb\xa0\xd3\xd4\x0c\x55\xae\x31\x33\xf3\x41\xeb\xc4\x46\x6c\xe0\x5e\x89\x30\x43\x13\x82\xf4\x59\xa4\x31\x11\x24\x46\x58\x22\x8c\x64\x3e\x91\x44\xa1\x27\xaa\xe6\x94\xe9\x7f\x67\x24\xa2\x53\x1a\xb9\x35\xdb\x9f\xb5\x81\x3f\x97\xaf\xcc\xbd\x24\x42\x0f\xfc\x91\xc6\x24\x46\x8f\x38\xc9\x09\x9a\x72\x51\x5a\x9e\xa3\x11\xbb\x9b\xeb\x75\x48\x27\x94\xc1\xc9\xd3\x6b\xe9\x28\xe4\x4f\x6e\xb9\xfe\x84\x74\x7f\x28\x67\xf4\xd7\x9c\x24\x0b\x44\x63\xc2\x14\x9d\x52\x22\xab\xad\xfd\x89\x43\xff\x38\x41\x87\x48\xaf\x33\x11\x0a\xd6\x9b\x33\x45\x3e\x29\x89\x0e\x51\x42\x1f\x08\xfa\xe2\x82\x4a\x85\x06\xd7\xe7\x5f\x1c\xa0\x2f\xcc\x79\x41\xc0\x9b\xbe\x78\x81\x15\xf6\x7f\xff\x3d\x38\x7a\x0a\xcf\xaa\x87\xee\xdd\x40\x9f\xe6\x5b\x73\x35\x14\x2d\xfc\xfd\xdf\xc2\x76\xec\x7e\x2d\xe7\xb7\x05\xb3\xb5\x9c\xb6\x2b\x7f\x85\x65\x2a\xb3\x56\xa9\x77\x68\x5b\xce\xaa\xdb\xad\xb2\x56\xf9\xb6\x78\xab\x9e\xc2\x73\xf3\xd7\x6d\x98\x2b\x56\x40\xf5\x98\x32\x73\x48\xfc\x99\x11\x52\x9f\x13\x47\xbd\x7b\xc2\x52\xb6\xe1\xb5\xc1\xcc\x02\x76\xeb\xb8\x68\xb0\x2a\x7b\x38\xef\x84\xa6\x74\xd5\xfe\x9e\xb3\x58\x8b\x5c\x96\xd9\xb1\x3c\x9d\x10\xa1\x97\xc1\xb1\x3d\x98\xed\x44\xb3\x41\x95\x0b\x46\xe2\x0e\xd3\xfc\x35\x27\x62\xb1\x64\x9e\x53\x9c\xc8\xb6\x89\x52\xa6\x88\x96\x6f\x2b\x8f\xa7\x5c\xa4\x58\xd9\x17\xfe\xf2\xef\xeb\x2e\x84\xe2\x0f\x64\xd5\xfe\x9f\x9b\xdd\x8c\xb0\x04\x32\x48\xf3\x44\xd1\x2c\x21\x28\xc3\x33\x22\xed\x8a\xe4\x89\x92\x07\xf0\x9a\x96\xa9\x89\x38\xf4\x37\x10\xf4\xe0\x6e\xde\x5c\xc2\x2f\x68\xea\x05\x48\x46\x3e\x29\x68\x69\xc4\xe0\xee\x85\x25\x0a\x6f\x94\x67\x58\xca\xcd\x68\x46\x72\xa1\xc6\x93\xc5\xd1\x03\xa9\xf5\xdb\x4a\x39\x98\x21\xac\x94\xa0\x93\x5c\x11\x3d\x6f\xdd\x86\xbb\x3b\x81\x3d\x9a\x0b\xba\x0b\x6b\x78\xbd\x09\xc7\x54\x90\x08\xe6\xb6\xce\x81\xf1\x5f\xe9\x79\x6b\xfd\x65\x61\x66\xff\x40\x16\x20\x8f\x34\xac\x80\xdf\xf2\x11\x1b\x31\x74\x88\xce\x86\xb7\xa7\xc3\xcb\xb3\xf3\xcb\x0f\x27\xe8\xbb\x05\x8a\xc9\x14\xe7\x89\x3a\x40\x53\x4a\x92\x58\x22\x2c\x08\x34\x49\x62\x2d\x73\xe8\xc1\x10\x16\x53\x36\x43\x5c\xc4\x44\x3c\xdf\x32\x56\x9e\x12\x96\xa7\x95\x7b\x05\x7e\x2f\x46\x5f\xf9\x42\x8b\x18\xfe\x51\xe9\xc9\xdf\x6b\x0b\x0c\x33\xd6\x7d\x07\xad\xbd\x98\x50\x13\xcd\x69\x12\x0b\xc2\x8e\x15\x96\x0f\x63\xf2\x89\x44\xb9\xb9\x93\xff\x59\xfe\x61\xac\x25\x53\x1e\x93\xf2\x2f\xa5\x7f\x14\xa2\xd0\xda\x9f\x7a\x2d\x75\xed\x2f\x41\xa7\xed\xf6\x1d\xfc\x42\xe3\xc6\xb7\xe1\x97\x15\x73\x70\xef\x2c\x19\xac\x7b\xa5\x75\x54\xee\x05\x2b\xf1\x35\xbe\x23\x88\x12\x8b\x31\x56\x8a\xa4\x99\x5a\x53\x5f\xc7\x28\xd1\x72\xe5\x32\x39\xf2\x92\xc7\x64\xe8\xfa\xfb\x05\x19\x71\x96\xc4\x68\xb2\xb0\x5c\x6b\x4a\x04\x61\x11\x69\x6f\xe1\x0e\xcb\x87\xa2\x85\x55\xc2\x68\xa9\x3f\xf9\x9e\x0b\xfd\xf9\x5b\x10\x48\x4b\x03\x7f\x09\x99\x74\xd3\x13\xf7\xd9\x59\x08\x36\xe4\x1f\xbd\x3d\x61\xfb\x95\xec\x6a\x7d\xe0\x02\xc9\x85\x54\x24\x5d\x69\x87\x78\x3b\x0b\x61\x2f\x88\x7d\x1d\x70\xe5\x8e\xfa\x1d\x9c\xfa\xf2\x8d\xdb\x1f\xef\x35\x96\x6c\x57\x56\xc4\x7d\x9f\xa7\xf3\xe1\x2c\x9f\xea\xad\xdb\xbe\xc0\x89\xf1\x26\xa6\x59\x92\x05\x77\x3d\xc8\x67\x32\x37\xb4\xee\x95\x5b\xed\x31\x0c\x60\x85\xa2\x59\xb6\x43\xfb\xf3\xa7\x3f\x0d\x2d\x34\xc6\x1c\xa7\xe6\x54\x06\xc6\x2a\x14\x71\x61\x64\xc1\xd8\x9e\x77\xa3\x6b\x0e\xee\x06\xb7\xc3\xbb\x13\x34\x40\x31\x56\x58\x1f\x70\x41\x32\x41\x24\x61\x0a\xf4\x78\xfd\xbd\x5a\xa0\x94\xc7\x24\x31\x1a\xe7\x7b\x2d\xf9\xa2\x33\xac\xf0\x29\x56\x38\xe1\xb3\x23\x34\x80\x7f\xea\x8f\xa9\x44\x38\x91\x1c\x61\x47\x56\x24\x76\x4d\x60\x16\x3b\xd6\x82\x51\xc4\xd3\x8c\x26\xde\x06\xef\x8d\x2b\x94\xc5\xf4\x91\xc6\x39\x4e\x10\x9f\x68\xae\xa2\x35\xe4\xe1\x23\x61\x2a\xc7\x49\xb2\x40\x38\x49\x90\xed\xd6\xbd\x80\xe4\x9c\xe7\x49\xac\xdb\x75\xa3\x94\x34\xa5\x09\x16\x5a\x05\x37\xa3\xbd\xb2\x6d\xa1\xbb\x39\xf1\x63\x85\x71\xe9\xd5\x4c\xf1\x03\x91\x88\x2a\x94\x71\x29\xe9\x24\x29\xce\xfc\xfd\x39\x82\x71\x9f\x5e\x9c\x83\x3e\x1f\x29\xc4\x0d\x0f\x75\x9d\x5b\xfb\x8d\xeb\x31\xc5\x8c\x11\xe8\x98\xab\x39\x11\xb6\x7b\xfb\xf2\x6b\xab\xe6\xf7\x97\xb7\xd7\xc3\xd3\xf3\xf7\xe7\xc3\xb3\xba\x6e\x7e\x37\xb8\xfd\xa1\xfe\xeb\x4f\x57\x37\x3f\xbc\xbf\xb8\xfa\xa9\xfe\xe4\x62\x70\x7f\x79\xfa\xfd\xf8\xfa\x62\x70\x59\x7f\x68\xc9\xaa\xb3\x9a\x1f\x8e\x6c\xcd\xb3\xd5\xdb\x34\x9f\xcb\xa6\x79\xf0\xf9\x1a\x35\xa7\x34\x01\x1d\xb4\xb3\x41\xd3\xdb\x10\xec\x97\x28\xc3\x52\x1a\xc9\xc8\x8c\xe0\x68\xc4\x3e\x72\xa1\x19\xd8\x94\x6b\x1e\xa1\xa5\x27\x25\xf2\x48\x51\x36\xf3\x1f\x9d\xa0\x51\xfe\xf5\xd7\x7f\x8e\x2e\x28\x7b\x80\xbf\xc8\x3e\x2e\x4e\x6f\xf1\xed\x2d\xbe\xbf\x2f\x8b\xaf\x16\x7d\x8e\x43\x43\xef\x6e\x43\x86\xb4\x70\xc1\xb2\x5c\x81\x28\xc1\x73\xa5\xff\xd4\x5d\x02\x79\x2c\x09\x1c\xea\x66\x50\xfc\x40\x94\x7f\x51\x8b\x36\x6f\xc1\x8e\xf8\x13\x17\x0f\xd3\x84\x3f\xf9\x81\x7f\x20\x4a\x8f\xfd\xc6\xf6\xd2\x87\x12\xf5\xa1\x44\xaf\x1b\x4a\xb4\x57\xc6\xbc\xe7\x67\x7e\x65\xcb\x9f\xe1\x80\x2d\x9e\xac\x56\x47\x55\x8b\x1f\x2a\x70\x33\xbd\x08\xd7\x2c\x3b\x73\x56\x70\xce\xd2\xcb\x6f\x85\x7b\x96\x06\xfd\xf2\x9c\xf3\x77\xe1\x6f\xe9\xdd\x29\x1b\x2e\xd4\x9b\x64\xb0\x1d\xef\x8e\x17\x73\x86\x3c\x3f\xc3\xaf\xc5\x36\xac\x13\xcc\xb0\x46\xf4\x42\xe7\x70\x85\x15\xf1\x09\x8d\x01\x09\x4d\x11\x08\xf5\x90\x83\xc6\x18\x83\xed\x82\x0a\x36\xbd\x9b\xba\x87\x09\x7c\x20\xaa\xf4\xf2\x5b\xb9\x9b\x4a\x83\x7e\xf9\xbb\xe9\x77\x1a\x1d\xd0\x87\x03\x3c\xe3\xd2\x7d\xee\x37\xda\xfe\x3a\xfc\x7f\x07\x1e\xfe\xde\xa5\xbf\xd6\x1a\x7d\x5e\x3e\xfc\xcf\xd5\x69\xff\x36\xbd\xf4\xbd\x5b\xbe\x77\xcb\xbf\x86\xff\xe4\xed\xb9\xe5\x9f\x57\x3d\x2d\x8e\xd7\xd8\xd1\x82\xd5\xd7\x82\x43\xf9\xaf\x0e\x4e\x1a\xf8\xcb\xa9\x7c\xeb\x06\x8d\xb7\xea\x70\x67\xc5\xf8\x86\x70\x84\x7e\xb1\x84\xb4\x42\x9d\xab\x7d\xf7\x16\xd4\xb9\xfa\xa0\x9f\x5f\x87\x7b\x35\xe6\xfb\x4c\x97\xe7\x1b\x61\x03\xeb\xdf\x96\x9f\xb1\x4c\xde\xcb\xe2\xcf\x9f\x8d\xbf\x37\x13\x7a\x3b\xb2\xf7\x2b\x5c\xbc\x1d\x6f\xdd\x9d\xe7\x64\x35\x5c\xb3\xc1\xed\xb4\x2a\xc3\xaa\xfa\x35\x25\xf2\xdb\x37\x79\xdf\xbe\x44\x92\x55\x7f\xe1\xf6\x17\xae\x6d\xaa\xbf\x70\x3f\xe3\x0b\x77\xef\xe0\x6f\xf6\x26\x02\xb4\x0f\x22\xef\x81\x31\xfa\x18\xf2\x1d\x2e\x4e\x1f\x43\xde\xc7\x90\xff\xce\x62\xc8\xb7\xd1\x9e\x36\xc5\xa2\x7c\x0d\x3d\xaa\x57\xa3\x7a\x35\x2a\xfc\xbd\x57\xa3\x7a\x35\xaa\x57\xa3\x3e\x73\x14\xd1\x5e\x87\xea\xbe\x10\xbd\x0e\xd5\x79\xa9\x7a\x1d\x6a\xc9\xe2\xf4\x3a\x54\xaf\x43\xfd\xbe\x74\x28\xf2\x48\x98\x92\x90\x8c\x16\x6a\x14\xef\x32\x2e\xdb\x35\xa1\x90\x3b\x34\x68\x41\xd0\x66\x39\x29\x0c\x02\x97\x7e\x41\x73\x2c\x11\x8f\xa2\x5c\x54\xce\x40\x55\x0f\x3a\x15\x04\x2b\x02\x2d\xe8\x0f\xdf\x82\xfe\x53\x9f\xee\x4b\xc5\xe0\x4f\x78\x5c\xa3\x76\x73\x10\x9a\x9e\x2c\x97\x47\x76\x36\xf5\x5f\x73\xd2\x4d\xfd\x7b\x46\xa2\x56\x58\x3e\xec\x98\xa8\x4b\xb9\x16\x1b\x11\x35\xb4\xf0\x56\x88\xba\x3e\xdd\xdf\x0d\x51\x37\x4d\x7d\x1f\x88\xfa\xc9\xe6\xf1\xef\x98\xb0\x6b\xf0\x00\x1b\x11\xb7\x6f\xe5\xad\x10\x78\xf3\xb4\x7f\x37\x44\xde\x36\xfd\xd7\x25\x74\x9f\x22\xd9\x99\xc4\xef\x04\x9d\xcd\xb4\x9a\x01\x1a\x9e\x26\xc5\xd5\x35\x82\x8a\xa4\xc0\x95\x64\xed\x5f\x7d\x0b\x24\xed\x07\x6b\xc6\xfe\xbb\xa1\xe5\xda\xbc\xf7\x84\x88\x8f\x05\x89\xf8\x23\xd4\x0b\xeb\x46\xcc\x37\x04\x28\x18\xf8\x75\x26\xc8\x23\xe5\xb9\x4c\x16\x87\x22\x67\xc8\x31\x7f\xe4\x9b\x37\xd6\xea\x27\x9a\x24\x88\x33\xad\x7f\x29\x2c\x94\x7b\xac\xf5\x6f\xc1\x53\x38\x15\x09\x96\x0a\x3d\x30\xfe\xc4\xd0\x14\xd3\x24\x17\x04\x65\x9c\x32\x75\x34\x62\xe7\x0c\xdd\x98\x31\x42\xde\xc0\x01\xca\xa5\x3e\x4b\x11\x66\x8c\x2b\x14\xcd\x31\x9b\x11\x84\xd9\xc2\x26\xe0\x16\x94\x81\xb8\x40\x79\x16\x63\xad\xf8\xce\x49\x35\x4a\xcf\x8f\x11\xcc\x77\x54\x22\x2a\x11\xf9\xa4\x04\x49\x49\xb2\xd0\x7d\x68\xda\x57\x1c\xd9\xf5\x31\x43\xb5\xe9\x7c\x44\x08\x2e\x24\x64\x1c\x4c\x16\xbf\x61\xa6\x28\x23\x08\x14\x25\x69\x4c\x73\x87\xe8\x82\x4b\x30\xdb\xfc\xf0\x57\x89\xa2\x24\x97\x8a\x88\x03\x34\xc9\x67\x52\x6b\x8a\x59\x82\xd5\x94\x8b\x54\x8f\x90\x32\xa9\xf0\x84\x26\x54\x2d\x0e\x50\x8a\xa3\xb9\x69\x0b\xd6\x40\x1e\x8c\x58\xcc\x9f\x98\x54\x82\x60\xdf\xbb\x7b\x88\xbe\x0c\x9f\x19\x02\x90\x5f\x1d\x40\xda\x21\x4d\xb5\xba\x1b\x0c\xbf\xd8\x71\xb3\x27\xba\x11\x12\xa3\x09\x89\x70\x2e\xad\x87\x41\x89\x05\x22\x9f\xe6\x38\x97\xb0\x77\x7a\x7a\x36\x67\x23\xe2\x69\x96\x10\x45\x10\x9d\x22\x25\x28\x89\x11\x9e\x61\xaa\x97\xee\x96\x2c\x01\x41\xf7\x44\x6f\x37\xd0\x52\xfd\x2f\xa0\x7e\xa7\x5c\x10\x14\x13\x85\x69\xb2\xd4\xeb\x64\xbf\xed\xb9\xdc\x5b\xe2\x72\xe5\x0d\xdf\x0b\x36\x67\x40\xfc\x77\x70\x69\x33\x6b\xba\x8f\x70\xb2\xe5\xfd\x7d\x63\x07\xd5\xd3\xf6\xdb\xa2\x6d\xb3\x6b\xfb\x43\xdc\x2f\x16\x83\xdd\xbd\xa2\x45\x51\xcd\xe2\x4d\xd1\xf4\x4b\x84\x05\xf4\x0e\xe7\xde\xe1\xdc\xba\x32\x6f\xd3\xe1\xbc\x37\x1e\xa3\xde\xe7\xfc\x4c\x3e\x67\x2a\x7b\xa7\x73\xef\x74\xee\xba\x40\xbd\xd3\xb9\x77\x3a\xbf\x5d\xa7\xf3\x73\xe2\x3e\xef\x14\xdd\xf9\x4d\x89\xd6\xbd\x58\xdd\x8b\xd5\x3d\x84\xb3\x9f\xda\xae\x58\x98\xfb\xfa\x5d\x4c\x12\xa2\x48\xbb\x3d\x8b\x88\x54\x6b\x0b\xe6\x7a\xa6\x4c\xcb\x71\x33\x41\xa4\xdc\x96\x21\xf9\x86\xdf\x26\x5b\xf2\xc3\xef\xa1\xe6\x7b\x3e\xd5\xf3\xa9\x4d\xa6\xb6\x3f\xa6\xd9\xe0\x30\xbf\x94\x6d\xd6\xf3\xdf\x2c\x6f\x97\xfe\xee\x8d\x1b\xb2\xf0\x8b\x1a\x0a\xd7\x52\xbb\xe2\xfe\x70\x5b\x3a\xdf\x92\x1f\x9b\xbe\xde\x26\x33\x36\x63\xef\x39\x71\xcf\x89\x7b\x4e\xfc\xb6\x39\xb1\x3b\xc9\xaf\xea\x22\x33\x7e\xba\x71\x96\x60\x36\xa6\xb1\x3c\xfe\x67\xa1\xcb\x3f\x97\x87\x4c\x1f\xa8\xd8\xa4\x98\xfa\x94\x4e\xf1\x8b\xfe\x24\x29\x0c\xe6\x1e\x33\x73\x85\x13\xcd\xd8\xd8\xaf\x13\xcc\xce\xe3\x37\xe1\x47\x6b\x9c\xfd\x4b\xf8\xd4\xb6\xe1\xe3\x58\x81\xa7\x03\x53\x66\x4c\x78\x45\x5e\x6d\xc9\x40\xb9\x1f\x27\x7c\x1b\xae\x1e\x4c\x2c\x60\xec\x8e\x5f\x07\x8b\xb2\x7f\xd3\xee\xfd\x3a\x7d\x2e\x61\xef\xb9\xe8\x38\xe1\xde\x73\xb1\xbf\x9e\x8b\xd7\x72\x47\xbe\xf0\xf1\x7c\x29\xb1\xae\x7b\x10\xbe\x89\x56\x83\xa0\xd6\x3c\x4b\x38\x8e\x97\xb9\x62\x0a\xc1\x2b\x04\x47\x59\x19\x89\x5f\x7c\xf6\x16\x84\xb5\x62\xb4\xbf\xb3\x48\xbe\xfa\xc4\xf7\x45\x4b\x79\xc1\x50\xbe\x66\x12\x5f\x43\x25\x79\x1b\xf8\xa9\xc5\x78\xfb\xd0\xbe\xde\xa2\xf4\xfa\x16\xa5\x3e\xb4\xaf\x57\x01\xf7\x4c\x05\xec\x43\xfb\xfa\xd0\xbe\x5e\x41\x5e\x3e\xed\x5e\x41\xfe\x2c\x42\xfb\x3a\x89\xda\xcf\x88\xbd\xb9\xbd\xd0\xdd\xcb\xdc\xee\xbd\x5e\xe6\xee\x65\xee\xcf\x54\xe6\xde\x8f\x15\xee\x05\xee\x5e\xe0\xee\x05\xee\x5e\xe0\xee\x05\xee\x9d\x2f\x63\x2f\x70\xbf\x64\x81\xce\x66\xa9\x7b\x45\x92\xcd\x5b\xf5\xe5\xf4\xe2\x76\x2f\x6e\xef\xb7\xb8\xbd\x37\x13\x7a\x3b\x65\x1e\xbb\xcd\xa7\x2f\x52\xde\x17\x29\xef\x8b\x94\x3f\x7b\x91\x72\xf7\x75\x87\x8c\x0f\x7b\xb8\x14\x56\xb9\x34\x80\x8f\x82\xcc\xa8\x54\xc0\xfe\xbb\xc8\x2b\xab\x13\x3d\xde\xaa\x9c\xd2\xa7\x7a\xf8\xa7\xbd\xd4\xd2\x4b\x2d\xbf\x53\xa9\x65\x8f\x62\xc1\xf6\x22\x63\x25\xc5\x2a\x9a\xe3\x49\x42\xc6\xde\xe8\x23\xbb\xea\xc1\x17\x54\x2a\x89\xa2\x5c\x2a\x9e\xb6\x5f\x2e\x1f\x5d\x0f\x03\xdf\xc1\x29\x67\x53\x3a\xcb\xcd\xdd\x62\xc0\x39\x83\x13\x5d\x48\x82\x8b\x8c\xac\xf2\x54\x35\xb4\xfe\x26\xae\xa5\xe6\xa1\xbf\xd4\xed\xb4\x8e\xe0\x5e\x18\xf9\xac\xd4\xad\x65\xad\xf1\xcd\xf0\xf6\xea\xfe\xe6\x74\x78\x82\x06\x59\x96\x50\x63\x77\x37\xa4\x40\x7f\xd3\x93\x42\x0a\xcb\x87\x62\x2f\x85\x21\x73\x83\x61\x0b\x86\x7e\x2d\x1b\xa3\x43\x74\x7a\x71\x7f\x7b\x37\xbc\x69\x69\xd0\x12\x0a\xe4\xad\x92\x34\x4b\xb0\x22\x31\x7a\xc8\x27\x44\x30\xa2\xa5\x1d\x8b\x74\x5b\x98\xff\x4d\xa3\xc3\xff\x1e\x9e\xde\xdf\x9d\x5f\x5d\x8e\xff\x76\x3f\xbc\x1f\x9e\x20\x47\x71\xba\x59\x3d\x2e\x3d\x8a\x78\xc1\x70\xaa\x35\x10\xfd\x43\x91\x29\xfb\x6b\x4e\x72\x82\xb0\x94\x74\xc6\x52\x02\x88\xc0\xa5\x16\xdd\x80\x2f\x06\xdf\x0d\x2f\xca\x2d\xcf\x49\x08\xbf\x8b\x12\x3c\x21\x89\xf5\x47\x80\x89\x5d\x13\x7a\x00\x55\x6c\x1c\x15\xb9\x59\xd5\xbf\xdd\x0f\x2e\xce\xef\x7e\x1e\x5f\xbd\x1f\xdf\x0e\x6f\x7e\x3c\x3f\x1d\x8e\xad\x54\x79\x3a\xd0\xfd\x96\x7a\xb2\xc2\x27\xfa\x35\xc7\x89\xd6\x4e\xf8\xd4\xe1\xf1\xa2\xa7\x39\x61\x28\x67\x40\x71\x46\xe5\xd1\x7a\x90\xef\x54\x9f\x32\x33\xa3\xeb\x8b\xfb\x0f\xe7\x97\xe3\xab\x1f\x87\x37\x37\xe7\x67\xc3\x13\x74\x4b\x12\x50\x0a\xdc\xa2\xc3\x2e\x66\x49\x3e\xa3\x0c\xd1\x34\x4b\x88\x5e\x0d\x6c\xb3\x89\xe7\xf8\x91\x72\x61\x8f\xee\x8c\x3e\x12\x66\xd6\x11\xce\x2c\xb4\xef\x84\xef\x71\xb0\x74\x57\x97\xef\xcf\x3f\x9c\xa0\x41\x1c\xfb\x39\x48\x68\xa3\x44\x39\x0e\xd6\xf9\xb0\x3c\x6c\xcd\x1c\xa0\x7b\x43\x44\xfc\x91\x08\x41\x63\x52\xa1\xa3\xc1\xed\xed\xf9\x87\xcb\x8f\xc3\xcb\x3b\x58\x31\x25\x78\x22\xd1\x9c\x3f\x81\x29\x1b\x66\x08\x16\xee\x47\x4c\x13\xe8\xcc\x6d\x16\x67\xe8\x69\x4e\xc1\xfd\x01\xc0\xcc\xbe\x67\xa3\x9f\x89\x9c\xbd\xba\x75\xb6\x74\xf0\xea\x6a\x4b\xf5\x24\xd5\xdf\xa8\x1c\x8b\x65\x2f\x94\xa8\xbc\xfe\xe2\x2a\x6a\xad\x7f\x51\x21\xb7\x76\x65\xad\x46\x2f\xed\x33\x2d\xf6\xba\xb3\xae\x56\x5e\xc3\x17\xbb\x66\x35\xe3\x8d\x5f\xa2\x2a\xeb\x0d\xf8\x3d\x97\xc2\x3e\x05\x39\x93\xbf\x58\xe5\x7e\x85\x69\x3a\xf8\xe2\x2d\x5c\xae\xe1\x70\xf7\xe8\x22\xbd\x09\xe5\x1a\x27\x1e\xa7\x44\xe1\x18\x2b\xac\xd9\xd3\x8c\xa8\x23\x74\xc5\xe0\xd9\x1d\x96\x0f\x07\xc8\x15\xa4\x40\x5c\xa0\x42\x70\x7c\x81\x6c\xc9\x37\x62\x93\x59\x5f\x99\xe9\x95\xf2\x5e\x29\x6f\x5e\x99\x3e\x72\xa7\x65\x85\x77\x75\x31\xae\x65\xc6\xdc\xdd\xfd\x65\x5a\x7c\xbb\x57\xd8\xcb\xda\x2d\x77\x7a\xa1\x99\x62\x28\xfd\x6d\x65\xfe\xaf\xbf\xad\xfa\xdb\xaa\xbf\xad\xf6\x60\x85\x5f\xdd\x06\xdc\xc0\xdd\x5f\xd5\x08\xbc\x4a\x3b\xdd\x18\xc5\xa8\xd0\x46\xd7\xc1\x31\xfa\xa5\x2b\x5c\x51\xf1\x0d\x7d\x1b\x66\xdf\x60\x92\x2f\x91\xa9\xb0\xd3\xcb\xdc\x84\x00\xf7\xfa\xe9\x33\xde\xf8\x3d\xa8\xd4\x4e\x41\xa5\xf6\x63\xae\xcf\x92\xd5\xb0\x7b\x53\xf4\xdb\xc8\x64\xe8\xd1\xa3\xfa\x58\xfd\x3e\x56\x1f\x7e\xef\xd1\xa3\x76\x47\xad\xcf\x2b\x5d\xf3\x98\x8c\x2b\x35\x3e\xfc\x3f\xc7\x55\xcf\x4f\xe9\x49\xe8\x06\x2a\x3d\x28\x92\x17\xa0\x75\x1a\xef\xb2\x2e\xc8\x25\x8f\x49\xe7\xda\x20\xa5\x97\xf7\x5c\x06\x77\xf3\x34\xb2\x78\x69\xe0\xcf\x2c\x89\xb7\x6c\xf9\xe7\x68\xd8\x69\x20\xe0\xde\xca\xb3\x72\xa1\x3e\x57\x80\xe8\x82\x43\xbd\x21\x4f\x45\x37\x36\xee\xc2\x54\xc6\x2d\xcc\xbc\xf9\xb9\x67\xe9\xcd\x8f\x9f\x07\x06\xa2\x3b\x47\x07\xb3\x4a\xf8\xf6\xdb\xb0\xab\x84\x23\x7e\x09\xcb\xca\xd2\xbd\xff\xec\xb8\xfa\x32\x4a\xee\x79\x7b\xc7\xe5\xfa\x5c\x39\x7c\x8f\xda\xb0\xcc\xd6\xd1\xc3\x22\xf4\xa6\x96\xfd\x99\x70\x6f\x6a\x79\xd3\xa6\x16\xe3\xa2\x1d\x67\x58\x10\xa6\x1a\x44\xea\xea\x75\x02\xaf\x87\x69\xb4\x4e\xea\x80\x06\x90\x96\x68\x91\xbd\x90\xfd\x55\xf5\x79\xd9\x5e\xac\x60\x10\x24\xb7\x1c\xff\xb3\xf8\xdb\x0b\xeb\x25\x50\xef\x25\xd1\x49\x06\xbe\x59\xea\x3b\x3a\xb7\x81\x4a\xdb\xa7\xbf\x60\x55\x12\x05\x13\xf2\x48\x92\x95\xf1\x4c\xd7\xe6\xed\xb7\x95\xf5\x52\x1b\xf4\xcb\xc6\x36\xd5\x37\xbe\xdb\x01\x72\x3b\x43\x4d\x06\x47\x90\x26\xa0\xa5\x51\x3e\x2d\x2e\x06\x89\x9e\x68\x92\x40\x92\x38\x24\xb1\xb4\xdd\x00\xbf\xbb\x88\x87\xd6\x9d\x7f\xd5\xb8\x87\x26\xee\xd0\xc4\x12\xba\xd8\x53\x77\x95\x06\xe7\x88\x0d\x32\x94\x40\x1b\x5a\x61\x80\xfd\x3c\x38\xc1\x07\xa2\x5e\x8a\x0d\x6c\x7a\xf6\x97\x9e\x7b\x41\xa6\x44\x10\x16\x91\x3d\xf4\xb6\xaf\x13\x06\xf2\x93\x99\xa4\x8d\x01\xf1\xd9\xa1\xe1\x54\x15\xb7\x7a\x5a\x49\xd4\xed\x93\x03\xfb\xe4\xc0\x3e\x39\xb0\x7a\xd4\xfb\xe4\xc0\x3e\x39\x70\x93\xe2\xe9\x67\xf0\xf8\xb5\xa4\x0a\xd3\xfb\xe7\x21\x58\x98\xb9\xf4\xb2\xc5\xef\x46\xb3\x70\x1b\xbe\x17\x9a\x85\x39\x6b\xab\xcc\x0f\xa5\x1f\x1b\x42\xac\x5f\xdc\x24\xb1\x09\xd3\x28\xd9\x25\xce\xe0\xf5\x37\xc9\x3a\xaa\x43\xef\x6d\x14\x28\xd8\xba\xe7\xe3\x24\xb5\x23\xd0\x6d\xe2\xd6\x63\xf8\x76\xe7\xbd\x2f\x1c\xb4\x8d\xee\xf7\x95\x8f\x6e\x57\x5a\x7b\x0f\x2c\x36\x9f\x11\x8f\xec\xad\x37\xaf\x9c\x2b\x51\x63\x86\x6f\x76\xba\xbd\xb1\xaa\x37\x56\xf5\xc6\xaa\xde\x58\xd5\x1b\xab\x50\x6f\xac\x5a\xdb\x58\xf5\x19\xc9\x54\xbd\xe1\xaa\x17\xab\x76\x37\xdd\x7d\xd5\x32\xf7\xc9\x5a\xd7\x19\xf8\xb6\xc8\xa1\x5a\x19\x79\x6f\xa7\xfd\xcb\x8a\x90\xfb\x6b\x37\x82\xb7\xc3\xaf\xe4\x73\xb3\xa4\x6d\x02\x8b\xdd\x8e\x7e\xb6\x71\xc5\x7d\x35\xb8\xc6\xb5\xea\xc3\x9e\x97\x2c\x4e\x1f\xf6\xdc\x87\x3d\xef\x5d\xd8\xf3\xce\x95\x95\x8c\xcb\x65\x80\x44\xa6\x1a\xca\xd2\xfc\x67\x77\x67\x43\xa2\x11\x90\x82\x29\x84\x13\x93\x2c\xe1\x0b\xb0\xa4\x2c\xb9\xce\x5d\x17\xd7\x35\x89\x7a\xdf\x6f\x74\x37\xf2\x97\xd2\x39\xf6\x45\x26\x2d\xe6\xbd\x17\x52\xe8\xf1\x3f\x2b\xe9\xfc\x9d\xf0\x32\x19\x22\x9f\xa8\x84\x5b\x69\x35\x61\x8f\x58\xf3\x93\xa0\x1a\x95\xbd\x07\x27\xb9\x0a\x72\xf7\xa4\x16\xac\x32\x22\xd4\x22\x78\x93\xa4\x99\x5a\xfc\xe7\x88\x51\xe5\x3d\x6c\x74\xc6\xb8\x30\x5c\x4d\x7f\x3c\xc7\x2c\x4e\x88\xd0\x97\xaa\x6b\x27\xc2\x8c\x71\x05\xe2\x06\xcc\x20\x46\x8f\x14\x1b\xe1\x64\x70\x7d\xde\xd9\xcf\xfc\x86\x4e\xd7\x4b\xd7\x1f\x5a\x71\xd7\x7d\x48\xf8\x04\x8a\x92\xe5\x65\x9d\x5e\x37\xd0\x7b\x46\x4b\x3b\xf7\x5a\x0c\x41\x61\xf9\x50\x05\x0e\x29\x67\xa1\x8f\x97\x42\x89\xac\x78\xb7\x84\x31\xbf\xfc\xd5\x0a\xdc\x48\xf9\x99\x05\x20\x81\xc7\x30\xe4\xea\x38\xdc\x8f\x61\x87\xee\xb7\xa2\x65\xf7\x8b\xab\xc6\x0a\x3f\x0a\xa2\xc4\x62\x8c\x95\xd2\x4c\x66\x97\x18\x27\x77\x58\x3e\x74\xc6\x38\x29\xbd\xbc\xe7\x2c\xa7\x84\x71\x52\x1e\xf8\xb3\xb3\x9c\x8e\xd4\xb9\x82\x33\xbd\xbd\xfc\xf8\xae\x67\x6d\x8d\x89\xff\x5e\x72\xe5\xbb\xf1\x9e\x55\x66\xda\xb7\x98\x37\xbf\x8c\x99\xee\xcd\x08\x2b\xfc\xfc\x73\x3c\xb9\xe5\xdb\xa9\x3f\xa2\xcb\xd6\xe8\xb3\xab\x6d\x58\x11\x3a\x56\xcc\xed\x8d\xd4\x38\xac\xca\x4d\xbb\x1e\xd5\xf3\x98\xb9\x83\xdd\xe8\xeb\x4a\xf7\x75\xa5\xfb\xba\xd2\xcf\x5e\x57\xba\x9b\xd2\xd9\x59\xe3\xec\xaa\x6e\x76\xd3\x35\xdb\x15\xcd\x67\xf0\xd2\x76\xd7\x06\x2f\xa8\x2c\xab\x83\x6f\xc2\x65\x5b\x1a\xf1\x4b\xe0\xa3\xfd\x4e\x15\xc1\x5e\x0b\x7c\x96\x75\xfb\x5c\x55\xc0\x3d\xd7\xff\x7a\x64\xb7\x1e\xc5\xbe\x0f\xc0\xd8\xe1\xe2\xf4\x01\x18\x7d\x00\xc6\x67\x1b\x80\xd1\xae\x4d\xd0\x78\xeb\x74\xbd\x35\x2b\x48\x79\xa3\x80\xf8\x05\x44\x29\x2c\x1f\xba\xd6\x94\xd2\xa2\xf2\x79\xfc\x26\xa4\xfa\xc6\x09\xbf\x84\x74\xdf\xd7\x29\xda\x69\x9d\xa2\xbd\x9b\x76\x2f\xf8\xf5\x82\x5f\x2f\xdb\x74\x9c\x70\x2f\xdb\xec\xaf\x6c\xf3\x5a\x0a\xcb\xe7\x04\xa1\xab\x85\xa7\x52\x66\xcc\xd2\x00\x5b\x03\x47\x03\xee\x81\x3c\x4b\x38\x8e\x57\x05\xe1\xfc\x82\x0a\xb9\x66\x89\x68\x66\xda\xd5\x1f\xbc\x05\xc9\x4c\x8f\xd3\x8c\xf8\x77\x13\x4b\x1b\x4e\xf9\x55\xc3\x68\x81\x5e\x21\x78\xac\x14\x84\xf6\x5c\x5a\x47\x95\x86\x3b\x29\x18\xf2\xdb\xb7\x42\xc5\x2f\xa1\x4e\x7c\xc6\x0e\x81\xde\xe8\xff\xfb\x2c\x74\xbe\x37\x52\x6a\xaf\xca\xf5\x59\x94\xbd\x11\xbf\x57\x74\x7b\x45\x77\xe7\xcb\xb8\x4f\x8a\xee\x2b\x4a\xd4\x26\x2d\xe4\x59\xca\x16\x6e\x26\x5b\xf7\xa2\x75\x2f\x5a\xf7\xa2\xf5\x67\x2b\x5a\xef\xc7\x0a\xf7\x72\x75\x2f\x57\xf7\x72\x75\x2f\x57\xf7\x72\xf5\xce\x97\xb1\x97\xab\x2b\x72\x35\xfc\xe5\xd2\xa2\xd7\x15\xb2\x3b\x0b\xd7\x1d\x72\xa0\xdf\x8a\x64\xdd\x4b\xd5\xbd\x54\xbd\xdf\x52\xf5\xde\x4c\xe8\xf3\x4b\x7c\xec\x53\x07\xfb\xd4\xc1\x3e\x75\xf0\x35\x52\x07\x1d\x2f\x59\x26\xa1\xd4\x05\x8b\x1f\x6b\x1c\x68\x6f\x65\x8b\x62\xb4\x9b\x86\x75\xec\x6a\xa9\x1d\xb0\xfc\x26\x95\xa5\x4a\xbf\xb9\x86\xf6\xa8\xde\xd4\x81\x93\x16\x34\xa3\x70\xe3\x5b\x8d\x08\xf6\x93\x7d\xf3\x6d\x81\x7f\xd7\x47\xdd\xd7\x9b\x42\xc1\xae\xf5\xf5\xa6\x9e\x71\xde\xee\x70\xad\x98\xb9\xa3\x51\x63\xe3\x7d\xa3\xd3\x7e\xf5\x00\xb9\xf6\x93\xfe\xaa\xe1\x72\x8d\x37\x49\x2d\x59\xe7\xf8\x9f\x8d\x17\xc5\x2b\x94\xd9\x5a\xfb\x76\xf8\x40\xd4\xe7\x72\x35\xf4\x65\xb6\xfa\x7a\x10\x3b\x9a\xee\x46\xac\xff\xcd\xce\xb6\x2f\x2a\xd6\x17\x15\xeb\x8b\x8a\xf5\x45\xc5\xfa\xa2\x62\xe8\x77\x5e\x54\x6c\x6d\xf1\xd1\x8c\xe3\x73\x91\x20\xfb\xa2\x62\xbd\x10\xb9\xbb\xe9\xfe\xbe\x84\xc8\x3d\xb4\x20\xec\x45\xf5\x34\x6f\x41\x78\x75\x9c\x0f\x37\x92\xae\x58\x1f\x6e\x41\x7b\xbc\x0f\xfb\x7f\x3d\xde\x47\x8f\xf7\xd1\x32\xeb\x3e\x98\xb5\xc7\xfb\x40\x7d\xb8\x66\x1f\xae\xb9\xcf\xe1\x9a\x1d\xb6\xb1\xc7\xfb\xe8\x28\xce\x3d\x13\xe6\x87\x93\xb9\xd6\xc2\xfd\xf8\xa9\xae\x68\xec\xad\x94\xe6\xc6\xfa\x3b\xc3\xff\xa8\x4e\x7b\x2f\x54\x92\x17\xc4\x01\x69\xa2\xeb\xce\x0a\xc8\xdb\xc0\x03\x71\xa3\xed\x13\x17\xfb\x10\xeb\xfd\x0f\xb1\xde\xbb\xc4\xc5\xbd\x91\x64\x7b\x75\xaf\xcf\x5d\xec\x73\x17\x7b\x65\xb8\x57\x86\x77\xbe\x8c\xfb\xa4\x0c\xbf\xb2\x84\xfd\x8c\xb8\x20\xdb\xc9\xda\xbd\xa8\x6d\xde\xeb\x45\xed\x5e\xd4\xfe\x4c\x45\xed\xfd\x58\xe1\x5e\xce\xee\xe5\xec\x5e\xce\xee\xe5\xec\x5e\xce\xde\xf9\x32\xf6\x72\xf6\x8b\xe1\x84\x34\x09\xdb\x1d\xf3\x6d\xde\x92\xa4\xdd\x4b\xd9\xbd\x94\xbd\xdf\x52\xf6\xde\x4c\xa8\xc7\x0c\xe9\x31\x43\x7a\xcc\x90\x1e\x33\x64\x23\xf9\xe6\xdf\xec\xb1\x7c\x17\xdc\xc4\xfe\xca\x7e\xf7\x5d\xc2\x27\x77\x8b\x8c\xe8\xff\x9e\xd1\x94\x30\x09\xd2\x28\x55\x8b\x50\x9e\x69\x59\xf9\xfa\x9a\xbf\xbb\x3d\xbf\xfc\x70\x11\x66\xd3\xbc\xfb\x78\x7f\x71\x77\x7e\x3d\xb8\xf1\xeb\xe2\x67\x15\xae\x85\xfd\xae\x24\x92\x59\x92\xbf\x21\x5a\xf7\x84\x53\x73\xab\xb0\xca\xe5\x66\x23\xbb\x19\xde\x0e\x6f\x7e\x84\x6c\xa0\xf1\xd9\xf9\xed\xe0\xbb\x8b\x12\x41\x94\x9e\x0f\x4e\xff\x76\x7f\x7e\xd3\xfe\x7c\xf8\xdf\xe7\xb7\x77\xb7\x6d\x4f\x6f\x86\x17\xc3\xc1\x6d\xfb\xd7\xef\x07\xe7\x17\xf7\x37\xc3\xa5\xeb\xb1\x74\xb4\xcb\x95\x10\x09\x8b\x04\x71\xfe\x28\xb2\x5c\x43\x14\x6b\x88\xbc\xf8\xe8\xd8\x61\x53\x5f\x27\xe8\xde\xea\xf4\xd4\x36\x6e\x18\x6c\xd0\x90\x51\x46\x62\x2a\xf1\x24\x21\x71\xad\x25\xb7\x86\x6d\x2d\xe1\xd2\xa0\x9e\xb4\xf6\xec\x45\x4e\xcd\xf3\x22\xc3\x0b\x10\xe4\x28\x2a\xc2\xe2\x86\x3e\xcc\x3e\xb4\xf6\xc0\x34\xef\xa2\x8f\xa4\xd4\x53\x94\x0b\x41\x98\x4a\x16\x88\x7c\xa2\x52\xc9\x5a\xa3\x6e\xfb\xda\x9a\xb5\x77\xaa\x6f\x70\x8e\x25\x9a\x10\xc2\xca\xe3\x17\x24\x21\x58\x36\x8c\xd9\xee\x7e\xb7\x65\xf1\x7b\x65\xad\x31\xe6\x32\x9a\x62\x9a\xe4\x82\x54\x4e\x0b\x4f\x33\x2c\xa8\xe4\x6c\xf8\x49\xdf\x65\xfa\x20\x5f\xc1\xe7\x5c\x6c\x76\x62\x86\x7f\x0b\x29\xf8\xb2\xfc\xcf\x0f\x77\xe5\x7f\x95\xce\xfc\xc5\x5d\xf9\x5f\xcb\x69\x3d\x68\xb8\x4a\xd9\x87\xe8\xc3\xdd\x09\xfa\x00\x21\x4e\x02\xdd\xcd\xb1\xa1\xd8\x8b\xbb\x13\x74\x41\xa4\x84\x5f\x8a\x8f\x15\x55\x09\xcc\xed\x3b\xca\xb0\x58\x20\x37\x7d\x93\xe8\x8a\xa3\x39\x22\x7e\x69\xaa\x8b\xc7\xfe\x91\x33\x50\xdd\x8b\xd5\xbb\xe0\x33\x1a\xe1\x64\xbb\x45\x1c\x5c\x96\xf8\xc0\xd5\xcd\xd2\xa5\x08\xdf\xae\xaf\xc5\xe0\xf2\x0c\x92\x48\xdd\x50\x1b\x66\x7e\x49\xa4\x26\x92\x88\xb3\xd8\x7a\x69\xf4\xed\xbf\x08\x84\xfa\x7f\x70\x48\xc4\xcd\x25\x65\x33\xdd\x22\x3a\x46\x57\x37\x23\x76\x25\x62\x63\x08\x25\x5a\x1a\x36\x34\x47\x25\x62\x5c\x21\x9a\x66\x5c\x28\xcc\x94\x56\x04\x40\x0c\xb0\x2b\x62\x38\xc0\x29\x4f\xd3\x5c\x61\x7d\xd0\x6a\x8b\xca\x8c\x39\xe4\x96\xa8\xf3\x18\x5c\x2b\x0d\x6b\x68\xe4\x84\x62\x2e\x99\xd0\xed\x6b\x19\xa5\xac\x43\xd3\xb8\xa6\xca\xba\x26\xb0\x10\xb8\x2c\x4d\xbc\xa3\x8a\xa4\xd5\xf7\x3b\x06\x79\xfe\xab\xd1\x40\x70\x6a\x92\x2a\x88\x18\x88\x68\x4e\x15\x89\x94\x3e\x82\x1b\xd1\xc4\xfd\xe5\x0f\x97\x57\x3f\x85\x12\xc4\xbb\xc1\xc7\xb3\xbf\xfc\x7b\xe9\x87\x9b\x8f\xb5\x1f\xc6\x3f\xfe\xa5\xf6\xcb\xff\x6f\x29\x3d\x55\x7b\xaa\xe9\xf9\xc1\x5c\x0e\x41\xa4\x06\x9b\xb0\x9b\x2a\xa2\x29\x9e\x11\x24\xf3\x4c\x53\x80\x3c\x2a\xef\xaf\x16\x29\x2f\x38\x8e\x29\x9b\x99\x0c\xd0\x0b\xaa\x88\xc0\xc9\x47\x9c\xbd\x77\xf6\xeb\x0d\x56\xe7\xbf\x6e\x4b\xf9\xba\xef\x7e\x1e\x7c\x0c\x33\x7e\xdf\x5d\xdf\x5c\xdd\x5d\x2d\x9d\x75\xa9\x85\xfa\x31\xd2\x8f\x4f\xe0\x7f\xd1\x31\xd2\xad\x7b\xc9\x37\x25\x0a\x6b\x8d\x00\x7d\x69\x92\xe6\x7c\x22\x0d\x65\x09\x9c\x9a\x4c\xd0\x94\xc2\x95\x62\x2c\x78\x5f\x19\xe1\xda\x6b\x0f\xfe\xdc\x98\x0f\x40\x5b\x76\x97\x32\x8b\xb1\x88\xd1\x3f\x64\x35\x7d\x1c\x0c\xc7\xe6\x07\x12\xa3\x43\x34\x57\x2a\x93\x27\xc7\xc7\x4f\x4f\x4f\x47\xfa\xed\x23\x2e\x66\xc7\xfa\x8f\x43\xc2\x8e\xe6\x2a\x4d\x4c\xba\xbc\x5e\x85\x13\x74\x2d\xb8\xbe\x42\x40\x41\x27\x82\xe2\x84\xfe\x46\x62\x34\x31\xfc\x8f\x4f\xd1\x2f\x11\x17\xe4\xa8\xd8\x18\x6b\x54\xb2\xf7\x88\x35\x3c\x1d\xeb\x97\x1a\x98\x49\x75\x3f\x51\x4c\x22\x1a\x5b\x31\x83\xb0\x88\x83\xe5\xd1\xf8\x2a\x74\x7b\x2e\xd3\x50\x6b\x34\x59\xae\x8a\xe5\x0c\x94\x15\x1c\x93\x20\xdb\x5d\xf1\x32\xc1\x69\xc5\xe7\xdc\xa8\xad\xb9\x56\xd1\xf5\xdd\x8a\xe1\x56\x75\xaf\x66\x7a\xc2\x11\x4f\xd0\x24\x9f\x4e\x89\x08\x1d\xd2\x07\x5a\x9b\xa1\x12\x09\x12\xf1\x34\x05\x89\x41\x7f\x95\x4b\x43\xd5\xb0\x62\x76\xb4\x47\x23\x06\xfb\xaf\xd5\x1c\xa0\x80\x98\x03\xab\x63\x84\xc4\x08\xb3\x85\xe9\x66\x92\x4f\xc3\xf6\x0d\x0c\x05\x8e\x11\x55\x23\x36\x48\x12\x24\x48\xca\x15\x09\x72\x28\xc1\x79\x56\x5e\x70\x60\x91\x82\x64\x09\x8e\x48\x6c\xe8\x21\xe1\x11\x4e\xd0\x94\x26\x44\x2e\xa4\x22\x69\xd8\xc0\x97\x60\xab\xd1\x6b\x46\x25\x8a\xf9\x13\x4b\x38\xb6\xf3\xa8\x7e\xf6\x55\xf9\x34\x0e\x1d\x44\xc0\x50\x08\x2e\xe0\x7f\x7e\xa0\x2c\xde\x19\x87\xba\xbf\x1d\xde\x84\xff\xbe\xfd\xf9\xf6\x6e\xf8\x71\x3d\xee\xe3\x29\x0b\x86\x07\x3a\xfc\x09\xba\x35\x8b\xc0\x85\x96\x88\x44\xcb\xa4\x3e\x5a\x52\x2a\x7e\xe0\xf1\x86\xdc\xf7\xe3\xe0\xf2\x7e\x50\xe2\x28\xb7\xa7\xdf\x0f\xcf\xee\x2b\xfa\x80\x9d\x5f\x49\x86\x37\xea\x5f\xf8\xdb\xe9\xf7\xe7\x17\x67\xe3\x06\x85\xf1\xdd\xcd\xf0\xf4\xea\xc7\xe1\x4d\xa1\xdb\x35\x2e\x51\x65\x30\x55\x66\x75\x67\x98\xd2\x9c\xc7\x68\xb2\x68\x06\x84\xd0\x92\x73\x02\xbe\xd8\x02\x12\xc5\xb4\x7a\x02\xbc\xc9\x61\x73\x14\x5f\xa4\x3c\x26\x07\xf6\x1d\x40\xd2\x30\xc6\x15\x23\x31\x37\x37\xac\x7b\xc7\x2c\x30\x54\x18\x90\x0b\xbf\x70\x27\x68\x80\xa4\x7e\x31\xd7\x87\x5a\xd0\xd9\x0c\x0c\x87\x95\xa1\x9a\xd6\xec\xa7\xb0\xbc\xf0\x9d\xd9\xff\x4c\x70\x38\xe7\xba\x5b\x6b\x71\xf6\x56\x09\xf3\x21\xa0\xae\x94\x5b\x14\x18\x0c\x0e\x0d\x43\x73\x9b\xa5\x17\xa1\x75\xbd\xcc\x79\x34\xf6\x22\x7d\xb8\x80\x6d\x49\x63\xef\xcc\x04\x79\xa4\x3c\x0f\x3e\xb5\xc0\x1e\xa5\x1d\x6f\x6c\xbe\x58\x00\x58\x36\x63\x14\xa9\x34\xe3\xc9\xa3\xb1\x05\xcd\xc2\x1e\xa1\x85\xa9\xe0\x69\x43\x1b\xe5\x63\x72\x7e\x75\xab\x04\x56\x64\xb6\x38\xb3\x2c\x63\xf3\xe3\x71\x76\xf5\xd3\xe5\xc5\xd5\xe0\x6c\x3c\x1c\x7c\x28\x9f\x78\xff\xe4\xf6\xee\x66\x38\xf8\x58\x7e\x34\xbe\xbc\xba\x1b\xbb\x37\x96\x92\x7c\x4b\x07\xf5\x7b\xba\xfc\xe2\x09\xd2\x2c\x17\x58\xa3\x03\xbc\x0b\xf8\xe3\x84\x4c\xb9\x30\x7c\x3e\x75\xa1\x0b\x56\x84\x71\x6b\x6b\x75\xb1\xca\x2c\x4e\xc0\x32\xd6\xd4\xa4\xb1\x7a\x2b\x41\x70\x0a\xf7\x04\x66\x68\xc8\xe2\xc3\xab\xe9\xe1\xad\xf9\x31\xc5\xe2\x81\x08\xff\xe9\x93\xa0\x4a\x11\x56\x52\xe9\xb0\x1b\xb2\x57\x12\x8b\x0e\x8e\xd0\x8d\xe6\xfb\xfa\x7d\x7f\xa9\x69\x62\x8f\x89\xc2\x34\x91\x76\xb0\xa5\x75\x3d\x41\x17\x58\xcc\x0a\x3b\xdc\x97\x7c\x3a\x35\x8d\x7d\x65\x86\xa1\xef\xb0\xd2\x2c\x1a\x78\xaf\x26\x0d\x77\x2f\x42\x7f\xf6\x65\x2f\x0f\xd7\xa9\xea\x3e\xdb\x8e\xa6\xee\xaf\x61\xc5\x8d\xc6\x5e\xd2\x0d\xed\x93\x06\x5a\x83\x89\x9b\xc7\xcb\x2f\x99\xe6\xb6\xeb\xe4\x54\x7e\xb1\x81\x9c\x4c\x2e\x95\xde\xf9\xa9\xd6\x36\x1b\x68\x89\x7c\xa2\xd6\x60\x10\x8e\xbb\x42\x42\x45\x33\x60\x5e\xc5\x59\x46\xb0\x90\x4d\xbb\x5d\x16\x03\x5b\xf6\xde\xf4\x14\xf6\x61\x37\xd9\xf5\x73\x80\x38\x03\x83\x83\x17\x22\x2a\x14\xd9\x81\x06\x4c\x5b\x35\x0a\xb8\x06\xb4\xa5\x2b\x8b\x6c\xf4\x91\x4a\xad\x34\x9a\x1f\xbf\xb3\x90\x4b\x9b\x11\xc4\xfb\xc1\xf9\x45\x45\xb8\x18\x9f\x0d\xdf\x0f\xee\x2f\x96\x9b\x09\x4b\xdf\x55\xb7\x18\x1d\x22\xfd\xbc\xec\x37\xa7\x53\x73\x67\x38\xe0\x28\xa3\xd2\x12\x06\x46\x2b\x0b\x55\x63\xec\xd5\x31\xc9\x12\xbe\x48\x09\x03\x13\x4f\xe9\x26\xd4\xeb\x39\xc5\xd4\x5e\x2d\xc1\x60\xc1\x8a\x63\xcd\x6e\x70\x8d\x1d\x3a\xb4\x2a\x12\xfb\x9b\xb7\x0c\x56\x55\x61\xdd\xd7\xc6\x7b\x66\xff\x73\xab\xb0\xda\xf0\x8c\x0d\x4e\xef\xce\x7f\x1c\x96\xf5\xc3\xd3\xef\xcf\x7f\x6c\x92\x6a\xc6\x1f\x86\x97\xc3\x9b\xc1\xdd\x0a\xe1\xa4\xd2\x64\x93\x70\x22\xf5\x80\xab\xde\x53\x2a\x7d\x44\x50\x64\x20\xaf\x10\x55\x12\x3d\x52\x49\x27\x14\x00\xc2\xac\x27\xf2\xfe\x1c\x38\xeb\x23\x4e\x68\x4c\xd5\xc2\x89\x2f\xa6\xdf\xf2\x3e\x6a\x4e\x6a\xdb\x37\x66\x87\xd0\x3f\x09\x56\x3e\xb3\x39\x6e\xd2\x27\x08\x74\xdb\x47\x50\xda\x82\xcf\x98\x16\xa4\xd9\x8c\x08\x33\x1c\xf0\xbe\x84\x63\x09\x9e\xeb\x51\x85\xc2\x4a\xb1\x6a\x5e\x68\x9d\x11\x46\x04\x80\xc0\xf9\x4e\x8c\x20\x25\x08\xfb\x42\xcb\x5c\x59\x42\x23\xaa\x92\x05\x8a\xc0\x86\x05\xe6\xcc\x14\x33\x3c\xb3\xc2\x01\xa8\x39\x15\x92\xf8\x9b\x41\x51\xbb\x9a\x5a\xd3\xfe\x1d\x25\x1b\x1e\xb3\xfb\xcb\xb3\xe1\xfb\xf3\xcb\x32\x09\x7c\x7f\xfe\xa1\x24\xc2\x7e\x1c\x9e\x9d\xdf\x97\x6e\x73\x2d\xc9\x2e\x97\xeb\xab\xcd\x36\x1c\x45\xff\xd2\x09\x3a\x33\x9f\x9e\xe8\xc5\x6d\x80\x88\xf3\xca\x6f\x65\x1d\x6e\x5c\x48\x9e\xfb\x63\xc8\x94\x68\xf4\x4b\x74\x35\x21\x59\x1f\x64\xc9\x86\xd4\x1c\xaa\x50\xeb\xfb\xb2\xea\x54\xae\x4e\xd9\xbd\x08\x41\x97\x47\x85\x65\x29\x8c\x61\x00\xa3\x41\x9b\x11\xab\xc1\xad\x55\x30\xec\x1f\xc1\x45\x9d\xe6\x52\x19\x57\x22\x10\x27\x7a\xf8\xab\xd4\x0b\x0a\xae\xc6\x23\x74\x4b\xc8\x88\x39\xeb\xc1\x8c\xaa\x79\x3e\x39\x8a\x78\x7a\x5c\xe0\x13\x1e\xe3\x8c\xa6\x58\x4b\xd2\x44\x2c\x8e\x27\x09\x9f\x1c\xa7\x58\x2a\x22\x8e\xb3\x87\x19\x44\xc0\x38\x77\xea\xb1\x6f\x76\xc6\xff\x70\xf1\xe7\xaf\x0f\x2f\xfe\xfa\xf5\xbb\xba\x85\xac\x6d\xff\x87\x2c\xc2\x99\xcc\x13\x1b\x31\x27\xc2\xb5\x71\x47\x3e\x27\xab\xf6\xfb\xb2\xbc\x5d\xdb\xe9\xaf\xa7\xd7\xf7\x25\x8b\x75\xf9\x9f\x1f\x87\x1f\xaf\x6e\x7e\x2e\x71\xca\xbb\xab\x9b\xc1\x87\x12\x43\x1d\x5e\x7f\x3f\xfc\x38\xbc\x19\x5c\x8c\xdd\xc3\x6d\x6c\x6f\x3f\x30\xfe\xc4\xca\x4b\x23\x1d\x07\xac\xf5\x74\x82\xde\x73\x81\x7e\xf0\x3b\x79\x38\xc1\x12\xae\x18\x77\x67\xc9\x03\x94\xf1\x18\x18\x2f\x22\xd9\x9c\xa4\x44\xe0\xc4\xda\x0c\xa4\xe2\x02\xcf\xcc\x4d\x2f\x23\x81\x55\x34\x47\x32\xc3\x11\x39\x40\x11\x50\xc3\xec\x00\x36\x05\x54\x2d\x3e\xab\xda\xf9\x6e\x72\xa6\x68\x4a\x9c\x0a\x6e\xff\x79\x67\x36\x63\x83\xcd\xb9\xba\xfb\xbe\x2c\xec\xbd\xbf\xf8\xf9\x6e\x38\xbe\x3d\xfb\x61\xe9\x7a\x9a\xcf\x4a\x23\xbb\x85\x00\xa4\x53\x9e\xe4\x29\x0b\xff\xde\x7c\x6c\xe7\x97\x77\xc3\x0f\xd5\xd1\x5d\x0d\xee\xca\x94\x71\x53\x0e\x70\x7b\xf7\xdd\xd5\xd5\xc5\xb0\xe4\x12\x7e\x77\x36\xb8\x1b\xde\x9d\x7f\x2c\xd1\xcf\xd9\xfd\x8d\x41\x23\x5c\x36\x4d\x37\x82\x86\x89\xea\x69\x85\xd3\xdc\x35\x2b\xec\xc4\x89\x06\x36\xa0\xdc\x9c\xe5\xc3\x00\x6e\xc7\x84\x83\x81\x55\xe7\xd0\x9b\x54\x23\x33\xd2\x46\x76\xa8\xca\xdb\x84\xda\xd9\xf1\xd2\x8d\x5e\xc6\x95\xef\xfc\x10\x0c\x14\xa8\x51\xb6\x71\x92\xf0\x27\x13\xca\x9b\x52\x7d\x2b\x5b\x60\x34\xfd\x8a\x2c\x3c\x84\x47\x0d\x1c\xaf\xbc\x2d\x24\x12\x44\x7d\xe4\x39\x53\x9b\x93\xdc\xe0\xb2\xc4\x77\x86\x97\x3f\x8e\x7f\x1c\x94\x29\xf0\xfc\x62\x39\xab\x09\x9b\x68\xb8\x8a\x07\x97\x3f\xfb\x4b\x18\x02\xbe\x0f\xbc\x86\x6a\x64\xd7\x28\xa1\x5a\xec\x8d\xb0\xd6\x5e\x13\x90\x68\x10\xa1\x60\x72\x48\xf5\xe4\x20\xc0\x34\x33\xfe\x24\xc3\x9f\xcc\x20\x4f\xdc\x1f\x95\xf6\x24\xac\x0b\x58\x53\x5d\x3c\x3d\xb4\x63\xb5\x6a\x86\x08\x7b\xa4\x82\x03\x9e\x2d\x7a\xc4\x82\x6a\x69\xdc\xb4\xac\xe7\x7a\x02\xff\xbb\x5e\x9b\x60\x18\xad\x30\xae\x5b\x2e\xd4\x99\x0f\xe4\xdd\xcc\x1a\xd2\x14\xd0\x5a\x0f\x65\x6d\x36\x74\xd4\xbf\x6d\xd8\x9c\x2d\x03\x7e\xcb\x13\xfe\x35\x39\xa3\x38\xd1\x0c\x60\x77\xf2\xe2\xe0\xf2\xf6\xbc\x2c\x3f\x96\xd5\x8c\x80\x2f\x6f\x2c\x2f\x82\xa1\xd2\x8c\xdc\x29\x13\xb7\x7f\xbb\x30\xda\x05\x80\x1e\x9b\x73\x1b\x28\x16\x20\x00\x39\x14\x94\x0c\x0b\x59\xf9\x42\x22\x00\x42\x2b\x02\xae\xf4\x9d\x05\xe1\x4c\x8f\x9c\xc6\x23\x46\x3e\x65\x84\x49\x08\x0e\x30\xf7\x59\xe1\x6b\x97\x47\xe8\x7c\x0a\x2c\x41\xbf\xce\x50\xce\xac\x03\x4c\x5f\xb8\x66\x90\x07\x5a\x94\xb5\x43\xf0\x1a\x22\x18\x5e\x18\x71\xc1\x52\xc5\xe0\x47\xec\x27\xef\x44\x83\x47\x53\xae\x19\x90\xde\x45\xdb\xde\x09\xc2\x4c\xd2\x03\xa4\x15\x96\xea\x9e\x42\xea\x80\x56\x28\x6d\x08\x97\xe6\x34\xf6\xcf\x97\xbf\x06\x6a\x71\xc2\xe1\x65\xd0\x7c\x17\x54\xae\x82\x16\xd1\x38\x31\x1e\x93\x71\xf7\x3b\x21\xe2\x82\x58\x3f\xcb\xda\xd7\xc0\x2a\xc6\x7e\x87\xe5\x43\xcd\xf7\x70\xce\xa4\xc2\x2c\x22\xa7\x09\x96\x1b\x06\x21\x39\x1b\xc7\x41\x59\xe2\xb8\xb9\xb9\xbf\xbe\x3b\xff\x6e\x05\x97\xaf\x7e\x5c\x0f\x03\x8a\x92\xdc\xb9\xe7\x26\x82\xe3\x18\x69\xf6\x39\xe3\xc6\x15\x68\x05\xff\x02\xfa\xdb\xe4\xf5\xf8\x80\xca\x12\xec\x78\x91\x8e\x60\xed\x1c\xa1\x2b\x81\xda\x85\x40\x91\x5e\x09\x14\x98\x3c\xdc\x56\x83\x67\xd1\x14\x24\xb1\xd6\xad\x2c\xc1\x6a\xca\x45\x6a\xb8\x7c\x69\xd2\xa6\xf1\xe5\x8d\x52\xa6\x88\x10\x79\xa6\xa8\xc3\x72\xaf\x4a\xa9\x50\xe1\x9d\xcf\x3e\x12\x29\xf1\x8c\x6c\xe3\x80\x6e\x52\x1e\x6e\x7f\x0c\xff\x09\x0e\xe6\x2e\xb2\x7f\x69\x84\x2e\xf2\xdd\xd1\xd3\x15\x7b\x6f\x02\x79\xae\x79\x42\xa3\x0d\x03\xee\xde\x0f\xce\x2f\xc6\xe7\x1f\xb5\x12\x3f\xb8\x1b\x5e\x94\x44\x09\x78\x36\x78\x7f\x37\xbc\xb1\x20\xd6\x83\xef\x2e\x86\xe3\xcb\xab\xb3\xe1\xed\xf8\xf4\xea\xe3\xf5\xc5\x70\x45\x64\x4e\x6b\xe3\x75\xeb\x6a\xf5\xd5\x93\xda\x2f\xb0\xc3\x9a\x97\x85\xf6\x32\xc8\x1a\xc3\x34\x01\x27\x38\x37\xce\x70\x8c\x18\x8f\x09\xfc\x2c\x9d\x75\xc6\x23\x47\xa3\x73\xf5\x45\x92\x20\x9c\x2b\x9e\x62\xf0\xda\x24\x8b\x11\xc3\x13\xcd\x5a\x71\x92\x04\xe1\x5d\x22\x67\x4c\xb3\x58\xdd\x98\x81\x68\x8f\x12\xa2\xd9\x79\x16\x24\xfb\x59\xbf\xc1\x94\x32\x88\xb4\x4d\xb1\x78\x30\x6e\xa6\xa2\xcb\xe2\x50\x48\x84\xe5\x88\xe9\x71\x11\x6b\x18\xea\xb2\xc2\x27\x9d\xde\x6a\x5d\x9d\x14\x3f\x10\xbd\x2a\x69\x1e\xcd\x51\x26\xf8\x4c\x10\x29\xad\x6d\x39\xc2\xcc\x04\x20\xd8\xd7\xf5\x35\x34\x62\x8c\xeb\xa5\x70\x26\xec\x98\x64\x84\xc5\x84\x45\xd4\xa4\xf5\x81\xef\xde\x9b\x36\x67\x02\x67\x73\x24\x39\x38\xbd\x61\xd9\xc1\x7e\x65\x3e\x72\x37\x99\x99\xb1\x79\x1c\x5a\xa0\x45\xae\xf9\xc4\x15\xc8\x89\x66\x95\xe1\x63\x77\x19\x3a\xb7\x8b\xb1\x03\xa6\x59\x42\x94\x01\xeb\x87\x25\x87\xcd\xd0\x6b\x5d\xda\x0f\xbd\x4d\x4d\x9b\xa0\x2f\x6c\x37\x66\x2c\xed\x88\x8e\x1a\x2c\xdb\xf6\x48\xa1\xef\x31\x8b\x13\xdd\x8a\xf3\x61\x94\xcf\x22\xa4\xa2\x0c\x34\xd5\xb8\xd3\xb8\xcd\x2d\x1a\xe1\x5c\x6e\x73\x8d\x56\x72\x31\x8d\x55\xf0\xb0\x08\x0a\x01\xf2\xb6\x89\x98\xb0\xba\x99\x66\x91\x38\xe1\x76\x95\xcc\xeb\xb9\xa9\xff\x84\x60\x34\x2d\xd7\x6c\x26\x28\x8b\x68\x86\x93\x8d\x74\xbf\x4a\x30\xbe\x8d\x71\xff\x92\x4e\x35\xf9\x7c\x55\x73\xdb\x2a\x22\x52\x48\x50\xb6\xc3\xf4\x5b\xb8\x86\x25\xc9\x66\x35\x10\x59\x44\x93\x60\xc1\x73\xe3\x8f\x83\x75\x21\x71\xc3\x51\x3d\x6a\xda\x6e\x7d\x32\x70\x39\x00\x7a\x83\xcd\x36\x91\x3f\x6d\xeb\x57\x69\xc5\xf6\x6e\x82\xf1\x70\x72\xdd\xdc\x66\xd3\x0e\x04\x0f\xff\xb5\x8c\x76\x3e\xe2\x4c\xd3\x8c\x85\xed\xc7\xc5\x1c\xad\x92\x64\xab\x82\xb9\xf8\x99\xc0\x77\xee\xf3\x42\xba\xef\x46\xb1\x84\x36\x00\xaa\xde\x49\x29\x86\x20\xc8\x31\xb7\x34\x3e\xcd\xb5\x2c\x8b\x30\x44\x21\xa0\x2f\xc9\xd1\xec\x08\xb9\x22\x0c\x07\x68\x70\x7d\x3d\xbc\x3c\x3b\x40\x44\x45\x5f\xb9\x98\x45\x1b\xb0\x34\x62\x8a\x5b\x69\x65\xe1\x0a\x68\xa4\x44\xcc\x48\x69\xce\x2e\xba\x09\x42\x95\x67\x54\x2a\x1b\x3e\xab\xf9\x4a\x50\xea\x84\xa6\x55\x31\xdb\x50\x48\xae\xe6\xdb\x90\x06\x96\x32\x4f\xb5\x2e\x3b\xa6\x38\x1d\x0b\x9e\x6c\xc3\x14\xce\x60\x2a\xa0\x2e\xfb\xf4\x7c\x8a\x53\xa4\x9b\xb5\xa1\x20\xde\xe5\xe8\x45\x3a\x2d\x18\x69\xbe\xac\xef\xcd\xe0\xde\x72\xde\x07\x1b\x8f\x46\x5d\x08\x04\xa4\xef\xb7\xb0\x8a\xc2\x6c\x3c\xb6\x96\xfa\x31\x8e\x22\xad\x72\xef\x78\x52\x41\xfd\x1c\xe7\x12\xb0\x1d\x3d\xdb\x34\x57\xd1\xb9\x1b\x66\xa6\x39\x18\x04\x03\xeb\x2b\x57\xf2\x88\x16\xed\x37\xf4\x3b\x59\xd4\x7a\x75\x15\x6e\xee\xa5\x37\xa9\x98\x4b\x58\x12\xd8\x49\x69\x2a\xe4\xa8\x39\x59\xa0\x39\x7e\x24\xa5\x2e\x5d\x42\x8c\x6e\x78\xc1\x73\xd1\xc4\xe8\x46\xec\x8c\x64\x82\x68\x49\xbf\xea\x40\xf1\x34\x7d\x53\xa6\xc4\x9e\xae\x7b\xba\x7e\xf3\x74\x7d\x6a\x0a\x25\x0d\x7c\x61\xac\xad\x04\x38\xd3\xd8\x38\xe3\x3c\x19\x77\xb0\x89\x74\x5f\xf1\x92\x27\xac\x52\x36\x0a\x20\x01\x78\x0e\xf2\x51\xe9\xda\xe4\xfa\xae\x0b\x52\x6c\xed\xf0\x96\x2c\x83\x73\x99\x05\xf5\x72\xb6\x39\xef\x4d\xad\x2c\x6b\x09\x3d\xbb\x98\x73\x6a\xe4\x1b\xef\x2e\x0b\xeb\x9f\x96\x0e\x93\x13\x45\x28\xab\x55\x63\x33\xf4\xac\x17\xd8\xc8\x1d\xbf\xe6\x5c\x61\xf9\xd5\xd1\x88\x69\x21\xea\x81\x2c\x8c\xb9\x55\x8b\x29\x7f\xd4\xb2\xf8\xa1\x24\x4c\x42\xb8\xf7\x1f\x8d\x7b\x4e\x93\xb8\x33\x57\x1b\xd5\xd4\x14\x81\x83\xa0\x6b\xdf\x0b\x84\xe8\xda\x46\xad\x94\x54\x04\x40\x83\x9c\x6f\xe6\x62\x9f\x99\xe1\xcf\x88\x82\x14\x6b\x45\x15\xe8\x4c\xb1\xa9\x32\x57\x1b\xfa\x4a\xd3\x95\xa1\x0a\xc1\xc1\x4f\x12\xe7\xdb\x31\x7e\x59\x6f\x63\x25\x67\xf4\xda\xc2\xad\x8d\x79\x3f\x76\x76\xa3\x48\xf0\x5a\xe9\x36\x2c\x91\xd9\xe9\x89\x61\x07\xce\x7f\x4d\xd8\xd1\x13\x7d\xa0\x19\x89\x29\x86\x08\x78\xfd\xaf\x63\x3d\xaf\x3f\x9c\xde\x5c\x5d\x8e\x8b\x4c\x9e\xff\x1c\xb1\x41\x22\xb9\xcf\x52\x40\x8c\x33\x1f\x6e\x9f\x09\xe2\x44\x42\x3b\x17\xb0\xba\x16\x66\xc4\x11\x6b\x1b\x41\xcc\x23\x79\x84\x9f\xe4\x11\x4e\xf1\x6f\x9c\x81\x2b\x7d\x00\x7f\x9e\x26\x3c\x8f\x7f\xc2\x2a\x9a\x1f\xc3\xb9\x56\xc7\xe4\x91\x30\x65\xdc\x54\x7a\xb9\x62\x48\xde\x95\x10\xad\xff\x07\x3d\xe6\x22\xa9\x48\x6a\x4d\x36\x22\x99\x42\xff\x8f\x20\x13\xce\x55\xf3\x25\xc5\xa7\x53\x49\xd6\xba\x90\x0a\x25\xed\xf6\x0a\xfd\xf5\x2f\x5f\x7f\xa3\x49\x68\x93\x35\x3e\xbf\xbd\x1a\xeb\xef\xff\x70\x66\xbf\x97\x6b\xb0\xbb\xab\xac\x60\x6d\x8e\x78\x4c\xe0\x7c\xce\xe0\xf6\x13\xe0\xbc\x00\xf6\x06\xe4\x50\xec\x63\x13\x77\x3b\x2b\xb5\xbe\x9d\xca\xb6\xd1\x62\x82\x8a\x1d\xcc\x11\x1d\x22\xc6\x51\x6a\x62\x4d\x31\x43\xff\xfe\xc3\x77\xcd\x1b\x98\x0b\xba\x51\x87\xd4\xc2\x35\x04\x5d\x4a\xfa\x1b\x91\x48\x53\x8d\xa6\x62\x9e\xea\xae\x05\x91\x73\x9e\xc4\xe8\x89\x80\x9a\x64\xe3\x40\xbd\x56\x2e\xc8\x88\x85\x4d\x40\xc8\x21\xc2\x89\xe2\x33\x02\x77\xb5\x53\xd4\x14\x11\x5a\x54\x31\x59\x1a\x8a\x0b\x72\x60\xa0\xbe\x6e\xff\xec\x62\xab\x61\x9a\xf0\xc8\x25\xb5\x58\x93\x5c\x3c\x69\x9e\xf9\xb4\x6a\x7a\x45\xed\x36\xfc\xea\x26\x5b\xb3\x6d\xf3\xd2\xd8\x24\x14\x6b\xc3\xaa\xee\x4c\xf3\x60\x68\xc4\xd9\x38\xa1\xec\x61\xa3\xcd\xb8\x72\xa2\x9c\x6e\xc1\xae\x99\x6e\xd1\xdb\xb9\x8d\x05\x64\x8d\xf3\xf1\x3e\x4f\x12\x93\xda\x12\x6e\x0f\xc8\x5d\x66\xdd\x40\x18\xc8\x4c\x0e\x28\x89\xad\xdf\xcb\x6a\xc2\x82\x30\x08\x78\x1b\xb1\xc9\xc2\xfa\x6c\xe5\x01\x92\x79\x34\x77\x99\x79\x11\x67\x52\x8b\xd1\x5c\xa0\x88\xa7\xa9\x29\x6e\xca\x08\x52\x9c\x27\xd2\x46\xbb\xb3\x43\x85\x23\x35\x62\x45\x7f\x2b\x4e\x9e\xa9\x80\xb4\x5d\xea\x5e\x77\x97\x4e\x51\x69\x69\xa9\xc0\x4d\xe3\x10\xb3\x01\x8c\x60\xc6\x13\x15\xa0\x3f\xf0\xfa\x59\x32\x1b\xd6\xa2\x19\xc8\x39\x17\x6a\x1c\x37\xf2\x9c\x95\x44\x53\x65\x84\x8c\x1c\x26\x10\x34\xcc\x1f\xb5\xf0\x4f\x9e\xbc\xf1\x75\xd9\x10\x34\x55\x2f\x1b\x41\xb7\x63\xb4\x74\x64\xeb\x92\x60\xcb\x5a\x19\x04\x8f\xa8\x1c\x13\xbe\x6a\x8c\xb7\xf0\xd5\xa9\xfe\x68\xe9\xe2\x55\xcf\x9d\x13\x82\x78\x5c\x80\xcd\x99\x7b\xdd\x66\x84\x2c\x5b\x53\x0b\x9d\xf0\x7c\x99\xa3\xcb\xa6\x72\x5f\xb6\xe4\xea\xb1\x80\xc9\x5e\x12\x90\x35\xb1\x98\x50\x25\xb0\x28\x21\x85\x78\x7d\x50\x12\x2c\x20\x3e\x6b\xc4\x0c\x6e\x9c\xd1\x14\x62\x14\x53\x09\x09\x22\x70\x97\x06\xce\x30\xd4\x4d\x09\xac\x1c\xed\x22\xcf\xd1\xc4\x9f\x43\x60\x59\x41\x1a\x8e\xd9\xe9\x8e\x3c\x3e\x96\xd6\xcf\x78\x94\x17\x82\x5c\x04\x12\xae\xc5\xd4\x41\x94\x49\x3a\x9b\x2b\x44\x99\xb5\x3b\xe2\x64\xc6\x05\x55\xf3\x54\x1e\xa0\x49\x2e\xb5\x16\x6a\x82\xd5\x4c\x3c\x0a\x51\x51\x27\x2e\xb4\x6d\x12\x71\x5c\x69\xb0\xae\xa2\x6c\x40\x1a\xdd\x0e\xe5\xb0\x72\x57\xac\x20\x9c\x81\xc7\x19\xac\xb6\x41\xa1\x6e\xa3\x81\xa7\x44\x26\x0e\x90\x3b\x64\x27\xa8\x02\xd2\x76\x0e\x00\x15\x72\x67\x5e\x8a\x97\x28\xc4\x85\x4c\x32\xa8\x20\x2e\x76\x1b\x24\xaf\x32\x32\xa5\x41\x6f\xf2\x4e\xa7\x34\x53\x8d\x81\x5b\x75\x57\xd1\x4d\x80\xf9\xd3\x6d\xb1\x21\x19\x0b\xa8\x19\x90\xda\x46\xec\x96\x90\x76\x20\xb7\xda\xde\x9b\xd2\xb8\x30\x05\x9b\xe8\xb1\x9c\xe4\xb7\x71\x62\x9f\x0d\x6f\x4f\x6f\xce\xaf\x0d\xe4\xc4\xd5\xcd\xc7\xc1\xdd\xb8\xc1\xaf\xdd\xf0\xd6\xc7\xc1\xcd\x0f\x67\xab\x5f\xfb\xfe\xae\x9c\x95\xdd\xf0\xca\xcd\xed\xf2\x64\x8e\x0e\x43\x6c\x48\x0a\x6b\xec\xe7\x04\x65\x0b\x35\xe7\xcc\x87\x28\xc4\x25\xde\x74\x88\x4c\x46\xb0\x82\x10\x22\x21\x55\x83\xe3\xf0\x0e\xe2\x72\x56\x4b\x98\xe5\xcd\x32\x30\x6c\x3b\x15\x8d\xd6\x38\x91\x1f\x12\x3e\x01\xbf\x75\x5e\x2a\x71\xbb\x24\x02\x7d\xcb\x78\x9f\x33\x2a\xb3\x04\x2f\x6a\x3d\xac\xba\x72\x2e\x71\x4a\x20\xe2\xb8\xc0\x8f\x73\xc9\x22\x7a\x67\x20\x81\xc9\xdf\xeb\x74\x0a\x99\x4c\x8a\x62\x45\xd0\x84\xa8\x27\xc8\x9b\x73\xbf\x7a\x5b\xaa\x0b\x18\x91\x47\x23\x06\xe6\x9c\x91\x5e\xe4\x38\x87\x68\xbf\xd1\xbb\x03\x34\x7a\x17\x93\x47\x92\xf0\x4c\xef\xbc\xfe\xa1\xe5\x92\x19\xa6\x98\x26\x97\x5c\x79\xcb\xdc\x36\xfb\x29\x48\x44\x33\x90\xcc\xc7\x44\xb7\xfb\x72\x82\x47\x89\x92\x1d\x3b\x83\x31\x20\x1c\xc7\x5a\xc9\x06\x56\xe6\x86\x57\x84\x00\xb1\x60\xea\xa5\x5a\x99\xeb\x88\x14\xde\xfc\x6d\x7a\x0c\xdb\x2c\x9b\x3d\x1b\x77\xc0\x3b\x86\x5f\x48\xc9\x70\xa1\x38\xbe\xe3\x8e\x5a\xc7\x7d\x9b\x8e\xd1\xea\x81\xae\x1e\x40\xbd\x16\x6b\x08\xcc\x7e\x80\xb7\xfa\xbb\x95\x82\xa6\xbf\x6d\xa3\xb0\x24\x3b\x88\x8c\x36\xb7\xb9\x9a\x4e\x4d\x56\x8e\x38\x4a\xb8\x2c\x43\x9d\x74\x1e\xf4\xa9\xfd\x74\xd9\xb8\x87\xa1\xb3\x58\x5f\xeb\x6b\xf9\xa3\x1b\x16\xbe\x82\xe5\x67\xd8\x84\xb2\x0e\x0e\xfb\xf6\x01\xa2\x10\x2c\x07\xf2\x74\x52\x24\x7e\xb3\x18\x15\x56\xec\x11\x2b\x42\x0e\x24\x7a\x22\x09\x44\x29\x45\x3c\xcd\xc0\x42\x6b\x87\x6b\x5b\x22\xb1\x09\xf8\x3c\x40\x3c\x57\xba\x31\x93\x52\xe1\x6c\x70\x36\x5f\xa3\xb0\x5a\x1b\xd7\x89\x8d\x5d\xf6\xb8\xc0\x86\xd6\x0d\x2b\xa4\x0c\x7d\x20\x0a\x5a\x01\xdc\xf5\x70\x82\x20\xe6\x55\x23\xe0\x9a\xd7\x7e\x8b\x13\x65\x67\xb2\xc6\xce\x17\xb8\x17\xdf\x25\x7c\xb2\x5c\xc7\x83\xc6\xd1\xfd\xcd\xb9\x33\x28\x15\xe1\x2f\x01\xf8\x6c\xc9\x21\x34\xbc\xbe\x19\x9e\x0e\xee\x86\x67\x47\xe8\x5e\x12\xbd\x3c\x7e\xba\x90\x1e\xeb\x25\x4a\x33\x72\x0b\xa4\xc1\xa4\x22\xb8\x4d\x8f\x25\x42\x94\x92\x58\x57\x30\x8e\x32\xca\xc6\x72\xc2\x06\x8c\x0b\x6a\xed\x2c\x80\x0b\x53\x9d\xa7\x0d\xac\x5a\x75\x02\x21\xcc\x65\xfc\x76\x82\x8c\xcc\x78\xd3\x7a\x60\xd5\x2a\xf2\x29\x07\x64\x3d\xf7\x64\xe0\x68\xa9\x39\xa1\x02\x75\x9a\x96\x21\xaa\x71\xf7\x39\x05\x11\xca\x1f\x71\xb6\x3c\x7b\x10\x3f\x95\x88\xd6\x48\x32\x81\xeb\xf5\xb9\xcf\x81\x63\x6b\x63\xc3\x0a\xb7\x9f\x60\xe1\x8f\x30\xbc\xd5\xf3\x4d\x13\xb0\x2f\x9d\x8d\x23\x9c\x58\x65\x10\x36\x0c\x51\x22\x38\x3b\xf0\x0b\x65\xa8\x74\x25\x1e\xa0\x29\xfd\x64\x1b\x2d\xc2\x93\xdd\xab\x81\xbf\xba\x25\x1c\x6e\x8e\xeb\x67\x6a\x0d\xb1\xe1\x1a\xbe\x5f\x1a\x9e\xc5\xa5\xd2\x52\x97\x96\x5c\x05\x89\xb8\xd0\x37\x05\x74\x5b\x18\x91\x57\x89\x0c\x0a\x0b\xbd\x28\x75\xa3\xfa\xb2\xd3\x5f\x94\x90\x88\xb1\x22\x87\x8a\xae\xcc\x5f\xb5\x29\x0e\x90\x0c\x81\x55\x80\xe6\x54\xdc\x3c\x13\x32\xc3\xcc\x45\xd6\xb6\x0c\xd7\x5d\x79\x5b\xb0\x2a\x2d\xc1\x62\xc8\xee\x01\xf9\x0a\x32\x37\x4a\xe3\x90\x19\xac\xe7\xd2\x71\xd8\xe0\x85\x7d\x58\xb6\x27\xec\x63\x29\x5a\x06\x9b\x67\xf1\x3e\x0d\x36\xc1\x52\x21\x3b\xa6\x36\x4d\x32\x90\xf0\x9f\xd7\x86\x56\x52\xcd\xba\x9a\xcf\x34\x09\x95\x95\x10\x02\x86\x6d\xe9\x60\x2f\x0c\xc8\x47\x4a\xc4\xcc\x09\xc2\xa6\x92\xae\x3f\xdb\xb6\xa4\xae\xbb\x25\x42\x66\x02\x31\xd6\xf5\xa6\x8f\xd0\x80\xd5\xe0\x8e\x5c\x58\x4d\x69\xbd\xcc\x9d\x84\x93\x27\xbc\x90\x28\x13\x06\x19\xc4\x04\x5e\xbb\xc9\x43\xbc\x63\xf9\x23\xef\xc9\x56\x2e\xf2\x1d\x81\x2a\xbd\x3a\xe6\xc9\xc9\xbd\xe3\x67\xf0\xc4\x54\x82\x82\xbd\x40\x5e\x34\x57\xa8\x9a\x1d\x58\x9d\x22\xe3\x68\x8e\xd9\x8c\x8c\x9d\x8d\x6c\x13\x6d\x49\xb7\x73\x0a\xcd\x9c\xd9\x56\x9a\x2f\xa7\x6b\xa3\x30\xd9\xf2\x1d\xe6\x55\x6f\xff\xd1\x87\x40\x2a\x3c\x23\xc8\x8c\xa8\x93\x55\xb1\x14\xf0\x63\xb1\x62\x41\x4f\xb0\xad\x0e\xcb\x41\xd0\x6d\xc2\x3b\x44\xae\x5c\xe0\x09\x49\x5e\xc7\xf1\x0d\x5d\x5b\xdb\x2a\x38\x5b\x4c\x30\x37\x41\x4f\x60\x8e\xad\xb0\x0c\x6b\x7c\x15\x79\x53\x68\xf7\xb2\x79\x96\x8a\x57\x6f\x31\x51\x57\xea\x61\x93\xa9\xb6\x15\x80\x08\xaf\xbd\xa0\x50\x42\x93\x7d\x24\xbc\xfe\xaa\x26\xc1\xcd\x06\x12\xd4\x6b\x68\x19\xc7\xd6\x05\x1b\x56\x4e\x65\xe3\x1c\xf1\x8e\x45\xcc\xce\xa7\x88\x71\x46\x10\x95\xc5\xcb\xaa\x9c\xcd\xe2\x11\x56\xb4\x88\x6f\x8c\x2f\xbe\xc8\x92\xaf\x9d\xf3\xdc\x96\x96\x22\xf7\xdd\xdb\x06\x5c\x7a\x2e\x23\x5a\x51\xc5\x62\x01\x08\x8d\x86\x0f\x97\x65\xba\x95\xe3\xdc\xb9\xc0\x7d\xe7\x00\x38\x83\x40\x4b\xc5\x11\x88\x91\x95\xc1\x21\x03\x63\x69\x5f\xb2\x1f\x59\x94\x91\x11\xf3\x96\x0d\x20\x44\x2a\x51\x8a\x33\x70\xc9\x30\xae\x8a\xaf\x0c\x6a\x8e\xf2\x5b\x78\xe0\x04\x71\x69\x4a\x20\xb5\xac\xc0\x2a\xd3\x8e\xbb\x7e\x8b\x75\x2d\xa3\x13\x3a\x64\xd5\x19\x7d\x24\xcc\xd1\xf4\x81\x3b\x13\x7a\x50\xae\xd3\x64\x71\x88\x21\x4a\x94\xc4\xa1\xe1\x7a\x39\x47\x32\x06\x99\x7d\xb0\x47\x76\x5f\xb2\xbb\xc6\x28\x08\x83\x71\x55\x02\x27\x77\x71\xbd\x21\x95\x5a\xd8\x55\x93\xc8\x8b\x25\xfa\x23\xe3\xea\x8f\x01\x30\xad\x33\x5e\xc0\xa7\xce\x04\x75\x50\xab\xb8\x01\x87\xd6\x12\x0e\xc2\x01\x40\xd2\xca\x95\xdf\xd6\xb5\x5b\xc4\x2d\x3f\xab\x34\x3a\xac\x27\x31\xb5\x95\x2c\xea\x1d\xae\xa8\x7a\x2d\x54\x0d\x9e\xa6\x2a\x5a\x71\xd2\x4b\x86\x4e\xb9\xca\xc3\xea\xf7\xa2\x93\x67\xb5\x96\xd0\xbd\x0d\xb5\xa5\x9d\x03\x5f\x56\x60\xd8\x36\xdb\x25\x36\x49\xd3\x6b\x93\xcb\x45\x39\xf2\xc8\x56\x31\x68\x01\x69\x3d\x1a\xb1\xf7\x5c\xd8\x2b\x58\x5a\x98\xf8\x09\x8e\x1e\x0e\x09\x8b\x11\xce\xd5\xdc\x80\xa5\x5a\xbf\xc2\xc2\x52\x83\x96\x34\x80\x6c\x3c\x12\x02\x95\x11\x16\xb1\x2b\x58\xf0\xc8\xdd\x28\x46\x2c\x68\x04\x80\xe8\xa1\x4e\x0f\x54\x1a\x6d\x53\x35\x89\xd4\xfa\x55\xdb\x5a\x34\xd5\xd0\xac\x55\xd0\x5c\x7e\xce\x4a\x35\x41\x01\x42\x1f\xe2\x53\xf8\xb4\xbe\x3a\xe7\xce\xda\xe8\xf4\x3b\x4d\xcf\x75\x2f\xc4\x81\xd5\x28\x8c\x49\xca\xce\x40\x4b\x3a\x5f\x3b\x5e\x5b\x02\x7d\x9d\xe6\x02\xa2\x2d\x9b\xda\xfc\x32\x9a\xd3\xa4\xf0\x5d\x7c\x75\xe0\x87\xa9\x9b\x4c\xc8\x23\x49\x0c\xe4\x78\x24\x20\xb0\xda\x58\x0d\xbf\x46\xff\xd7\xd4\x95\x44\xdf\x8c\xd8\x07\x60\xc3\x49\xb2\x00\x40\x44\xdf\x32\x56\x95\x66\x1e\x1a\x07\xa0\x6c\x26\x07\x2a\x0f\xc4\xec\xf5\x1c\x3f\x92\x11\x73\xcd\xfc\x5f\xf4\x80\xfe\x84\xbe\x69\x53\xef\x5c\x7c\xf4\x33\xdb\x39\xde\x07\xd1\xc7\xc1\x2d\x67\x19\xa5\xe5\x37\xce\x0c\x52\x32\x42\x36\x00\x23\x78\x5c\x63\xca\x1e\x79\x54\x0b\xc2\x0f\x4f\x2d\x16\x84\xa9\x31\xe3\x31\x19\x93\x06\x97\xe6\x12\x26\xa1\x85\x80\x4b\x1e\x93\x95\x0e\x49\xcf\x4c\x7f\x02\xd3\x8d\xcc\x27\x7e\x3b\x20\x3f\xdb\x27\xe3\x7a\xeb\x43\x99\xd2\x9a\x47\xee\xc1\x43\x37\x19\xf7\xa6\xce\x54\x17\xe5\x77\x00\x17\x82\x1d\x40\xb3\x43\x2f\xc1\xca\xa5\xb0\x56\x8f\x63\xd5\x11\xa0\x5f\xd6\x33\xb7\x97\x55\x00\x8b\x0a\xa5\x2b\x04\x9d\x51\x2d\xbf\x77\x77\xd8\x02\x27\xdc\xc4\x9b\x61\x30\x22\x3b\xb9\x33\x8a\xa5\x70\x38\x19\x87\x9e\xfe\x0a\x27\xe4\x84\xe7\x55\x01\xde\x2e\x00\x95\x61\x72\xad\x95\xd5\x17\x9a\x0f\xcf\x4c\x02\x17\x99\x53\x93\x32\x3d\x38\xbd\x40\xfa\x74\xf0\xd4\xe0\x0a\xc1\xa2\xe5\x6a\xce\x05\xfd\xad\x35\xc1\xa4\x5d\x46\x2f\x3c\xad\x45\x3e\x8e\x19\x67\x59\x5a\x07\x62\x35\x22\x85\x2a\x69\x25\x4d\x3a\x13\x9a\xe4\x00\xa1\xa9\xd9\xec\x34\x4f\x0c\xee\x7e\xc4\x45\x6c\x0a\x5f\xcb\x52\xf6\x0f\x44\x51\x3a\xf1\x1e\x2b\xdf\x20\xb5\x48\x83\x16\xd9\xdf\x58\x70\x96\x0a\xa0\x7f\xcb\x49\xbe\xa3\x04\xaa\x57\x0d\x39\xbd\xc3\x33\x59\xc4\x90\x9a\xb5\xd1\xbc\xb9\x58\xdf\x5f\xf5\x4c\x65\x90\x72\xe8\x2c\x8b\x1e\xc1\xc7\xa8\xe4\xa6\xae\xe3\x5a\x16\x9d\x1b\x83\x5c\xbe\x03\x93\xce\x4b\xc4\x73\xd4\x65\xa4\x06\xf6\x63\xc9\xef\xd1\x27\xe0\x55\x59\xc4\x33\xd9\x49\x1c\x04\x7c\x45\xfa\x78\x46\x93\xc9\x06\x4c\xae\x2e\x54\x2f\x0d\x6a\x2d\x0c\x28\x9e\xad\x35\xe4\xc2\x2a\x0e\x51\xf3\x4f\x82\x02\xc0\xd7\xa2\x78\xd9\x97\x30\x75\xd7\x45\xc8\x63\xb4\x94\x62\xc4\x5a\x88\xeb\x70\x4b\xb8\x68\xe6\xf1\x6b\x18\x20\x6c\x43\xe5\xae\xeb\x7e\xfb\xb6\x13\x61\x58\xd2\xbe\x1e\x89\x3a\xba\xc7\xca\xc3\xe0\x0b\x39\xbc\x8e\x01\xd1\x8b\x36\x2f\x77\x32\x3c\x39\x8e\x23\x1c\xcd\x5b\x27\x35\xe1\x3c\x21\x98\xb5\x49\xaf\x8d\x8f\xab\x47\xc4\x60\x53\x02\xeb\x4e\x12\x00\x68\x75\x4b\x60\x8b\xfa\x15\xe2\x3b\x8b\x01\x58\xdb\xf0\x70\x83\xc4\xe1\x06\xaa\x08\x73\x96\x1f\xca\x66\x09\xa9\xae\x95\x45\x40\x3f\xb0\x9d\x24\x51\x9e\x04\x55\xfd\x32\x22\xf4\xa8\xf5\x12\x3f\x12\xa6\x75\x06\x3b\x0e\xe7\xcc\x78\x72\xf9\xac\xbe\x96\xcf\x81\xef\xda\xf9\xd3\x20\x69\x2c\x1e\x31\x38\xb8\xbc\x7c\x58\x35\xad\x4a\xad\x66\x84\x76\xa9\x8d\x4f\x67\x20\x44\xac\x7d\x3c\x6f\xcb\x66\xe2\xb5\xcf\xa4\xe9\x7b\x0c\x31\x06\x5b\xbb\xd6\x02\xf7\x4b\x91\x69\x6f\x36\xd6\xa1\x29\xbd\x90\x11\x19\xa2\x36\xca\x20\x2f\x41\xd0\x46\x1b\x9a\xcf\xb3\xde\x25\x45\xf5\x02\x77\x1b\x74\x1c\xca\x52\x57\x75\x47\xc7\x33\x58\x27\x97\x9d\xdb\x0b\x1b\x71\x5b\x76\xd9\xfa\xf4\x8c\x22\xcc\xd1\xd6\xe7\x54\x02\x43\x72\x39\xa4\x04\xff\x64\x34\x6c\x2a\x8d\x05\xcc\x55\x29\x48\x33\xb5\xb0\x45\xad\xe0\x5e\x0c\x53\x32\x0d\x60\x57\x93\x7b\xb8\x7a\x47\xc6\x25\x07\x71\x53\x67\xd0\x91\x35\x2b\x34\x36\xe9\x16\x3a\x04\x80\xa8\x24\xdc\xb7\x45\x83\x98\xfa\xa0\x63\x9c\xb4\xda\xb2\x76\xc0\x34\x21\x4b\xb2\x48\xb2\xb7\xd8\x9d\x4a\xe4\x44\xf3\x2e\x9c\x24\x95\x79\x61\xc8\x66\x55\xbe\x46\xd8\xa4\x28\x64\xda\xdd\x59\x9d\xe0\x09\x59\xcb\x3d\x7d\x61\x3e\x58\x4a\x45\xf0\x0a\xa4\x9a\x66\x59\xb2\xe8\x86\xda\x14\x86\xde\x35\x62\x5c\xad\x1a\x58\x88\x8c\xb5\xf4\x6e\x2a\xa3\x4b\x6d\x36\x44\x49\xa2\x5c\x50\xb5\x18\x5b\xa3\x5f\x77\xa6\x75\x6b\xbf\x3c\xb5\x1f\x76\xd1\xa8\x4f\x90\xeb\xcf\x19\x19\xe1\x9e\x12\xd4\x14\x40\xb1\x53\xe8\xb2\xdd\x5a\x4b\x6e\xc4\xbe\x59\xb6\xb0\x0e\x7c\xa7\xdb\x50\x75\x17\x9b\x0e\xcf\x16\x56\x18\xf3\xa9\x83\xb5\xe9\xbe\xb0\xd5\x8a\x13\x6b\x58\x4b\x1d\x7a\x6e\x26\x28\x17\xb6\xb0\x43\x97\xa0\xb6\x14\x7f\x1a\x67\x58\xe0\x24\x21\x09\x95\xe9\xe6\xb6\xdd\x3f\x7f\xbb\x74\xb4\xa7\xa6\x00\x89\xb4\xe5\x7c\x3e\xd1\x34\x4f\x11\xcb\xd3\x89\x95\x72\xb1\x7c\x08\xb1\x0b\x5d\xa6\xb5\x81\xe0\x71\x03\x2c\xe5\x7b\x8b\x00\x8d\x72\xc4\x02\x5c\x62\x6b\xaa\xc0\xd1\x9c\x92\x47\x40\x4d\x14\x8c\x48\x79\x84\x2e\xb9\x22\x27\xe8\x23\xce\xee\x40\x50\x33\x15\x01\x67\xc6\x3a\x8e\x25\xd2\x52\x6b\xce\xa8\x3a\x18\x31\x0b\x66\xec\x56\xe5\x38\xe2\xcc\x00\x5a\x46\xb0\xb0\xbe\x09\x30\xf7\x3a\x64\x47\xe5\xf2\xd2\xa8\x6c\x59\x6c\x81\x9f\xc6\x41\xf4\xea\xd8\x64\x07\xac\x41\xc7\x37\xf8\xc9\xc4\x6b\x43\x05\x7c\xf3\xf5\x12\xc9\xdd\x06\x44\xd9\x02\x30\x06\xc7\xd5\x05\x8e\x70\x0b\x26\xe0\x4b\x57\x99\xe8\xd4\x2f\xe9\x11\x39\x42\xdf\x25\x7c\x22\x0f\x90\xf4\x98\xc7\xae\x40\xbf\x3c\x30\x0e\x2a\xf8\xb7\xc9\xe4\xf9\xca\xad\x7e\xc1\xf7\xa1\x6a\xdb\x94\x7e\x32\x18\x06\xf2\xcf\x27\xc7\xc7\xe9\xe2\x70\x92\x47\x0f\x44\xe9\xbf\x40\xa6\x68\x5c\x21\x07\x00\x84\x9b\xe0\x84\x56\xad\x4e\x1d\x8a\xa8\x13\x45\x5a\x10\x3b\x49\x00\xf6\x5a\x5f\xe9\xbe\x2e\xa6\x43\xae\xe1\xac\xb9\xe8\x9f\x9d\xb2\xc8\xdb\x8e\x57\x09\x2f\xf7\x65\xb4\x15\x53\xf7\x33\x84\xe9\x9d\x26\x78\x56\x51\x59\xd6\x50\x52\xae\x52\x6a\xa9\x48\xcf\x1d\xe2\x2d\xf4\x29\x2b\x47\x99\x7d\xe1\xdc\x91\xe0\x56\xb4\xee\x96\xa3\x11\x1b\x48\xf4\x44\x4c\x39\x4f\x48\x29\x03\xef\x44\x4e\xe5\xdc\x27\x94\x81\xbd\x14\x1a\x35\x68\xa6\x26\xe9\xdd\x2a\x8e\x4e\xb3\x72\xfe\x1b\xab\x81\xe2\x44\x92\x03\xdd\x30\x20\x5a\xb9\x40\x42\xf4\x24\x70\x96\x11\x31\x62\x16\x99\x12\xf0\x97\x39\xb7\x41\x22\x6d\xd1\xe4\xbd\x46\xb9\x5f\x1a\xe5\xa0\x12\x5a\x0e\x15\x6e\x53\x50\x7a\x64\x51\xc8\xcf\xd9\xa7\xbc\xca\x59\xba\x9a\x01\x8c\x17\x3e\x8e\x39\x91\x81\xe1\x19\x79\xfb\x51\x42\xa7\x44\xdf\x98\x23\xa6\x97\x3e\x34\x92\x1b\x4c\x5f\x07\xf1\xab\x3b\x8d\x04\x97\xd2\x46\x8b\x9b\x76\x96\xe7\xfc\x6c\x51\x3e\xcc\x00\x13\x9b\xc2\xfd\xd5\x42\x62\xc1\x33\x57\x52\xcc\x3e\x6c\xae\xe7\xde\xd6\xd4\xca\x02\x62\xc5\x5a\xac\x51\x42\xec\xf8\xf4\xe2\xdc\xd7\xcd\xa9\x74\x5d\xaf\x21\x16\x82\x39\xb7\x57\x11\xab\xcf\x38\xa8\x27\x56\x69\x62\x49\x45\xb1\xd5\x9b\x55\x8e\x51\xdd\x06\xa9\xab\xb2\xf5\xab\xee\xac\x0a\xcd\xac\x0a\xa5\xde\xd1\x36\xb5\xb0\xc2\x08\x84\x9c\xe7\xf6\x0a\x83\xb0\xa0\xdf\x92\x0a\xa7\x59\x98\x26\xe8\xa0\x0a\xed\x34\xcd\x51\x6b\x63\xdc\x2f\x0a\xa1\x1c\x61\x13\x81\x51\x1d\x5c\x6d\x2b\xd6\xf3\xd2\xdc\x59\x64\xe6\x5d\x84\xde\xbe\x5c\xde\x6d\xb2\x28\x22\xcd\xa4\x95\x37\x5c\xd5\xdf\x16\x5b\xf5\x84\x78\x14\xea\xd6\x0d\xdd\x36\xb1\xce\xa3\xd5\x08\x82\xa5\x0d\x21\x80\xfc\xb3\x4a\x6e\xca\x1a\x26\x4d\x3f\x66\x93\xc1\x7a\xe8\x71\xdf\x83\xab\xc6\x96\x32\x8a\xdc\x41\xa4\x42\x90\x47\x22\x80\x76\x6c\x9c\x0a\x2b\x1f\x55\x9c\x08\x82\xe3\x45\xb0\x22\xde\x49\x6e\x7a\x06\x93\x8e\xa4\xa9\x56\x3a\x41\x9c\x66\xfc\x90\x67\x4e\xce\x2e\xbd\x05\xa0\xfd\x74\xaa\x6f\xac\xc0\xc5\xae\xbf\x60\x87\xe4\x13\x95\x4a\xeb\x25\x0d\xf1\x85\xae\x11\xb8\xa5\xa1\x94\xcf\x9c\xd8\x1b\x6e\xf4\x6e\xf0\xdd\xd5\xcd\xdd\xf0\x6c\xf4\xae\x88\x28\x77\x29\x53\x1e\x84\xc6\x61\x8a\x73\x36\x62\x3e\x08\xd4\x63\xae\xc2\x5e\x22\x1c\xc7\x05\xe2\xb5\x55\x7c\x8c\x9c\xb1\x94\x23\x07\xa7\x62\x65\xf8\xe7\x92\x66\xee\x21\x6f\x66\x5f\x4f\xd6\x12\x77\x4f\xe9\xe4\x98\xec\x9f\x25\x69\x1a\x3b\xba\x6c\x42\xb8\x48\x65\xf4\x43\xa2\x1c\x9e\x19\x23\x4f\x4e\xbe\x87\xdb\xf9\x18\x9b\x4b\x78\x3d\x6e\xe7\x36\x64\x83\x4d\x7d\x4f\x3f\x91\xf8\xa6\x45\xaa\xda\x49\x16\x46\xa7\xe8\xb5\xc6\x5d\xc8\x19\x5d\x47\x4b\xf5\x53\xb9\xd7\xdf\x75\x67\x4b\x57\x05\x0a\x54\x81\xe8\x08\x70\x8e\x0a\x61\x14\x11\xa1\x30\x65\x68\x0a\x07\x9b\x45\x0b\x04\x58\x1c\x04\xfc\xae\xdf\xa2\x94\x32\xc8\x76\x5f\xb6\xb4\xf7\xe5\x79\xac\x53\xca\xff\xfc\xf2\xfe\xae\x24\xaa\x7e\x7f\x75\x5f\xae\x23\x3d\xf8\x79\xa9\xac\x5a\x69\x61\x59\x80\x4b\x30\xc5\x22\x73\xce\x02\x5b\xfa\x95\x69\x9a\xe8\x07\xa2\x7e\xd4\x7c\x99\xb3\x5d\x84\x95\x5b\x39\x0b\x1c\x4e\x64\xfc\x68\x1a\x5e\x83\x0c\xec\x50\x96\xe4\x0e\x38\x49\x0e\x7a\x40\xb6\x87\x30\x91\xfd\xc8\x54\x4c\x1e\xe8\xe6\x40\x65\x74\x01\x5a\x5a\x5f\xe2\x4c\x2f\x97\x81\x17\x74\x98\x84\x41\x73\x7c\x6a\x3e\xee\x88\xd0\x14\x84\x09\xeb\xb6\x8a\xa5\x44\x83\xeb\xf3\x86\xb5\xbe\xa8\xda\xe4\x3f\xaf\xf2\x0e\x89\x77\x0f\xec\xba\xb2\x43\x90\xef\xb5\x17\x45\x1d\xec\x4c\xb7\xab\xe7\x60\xbc\xa8\xd7\x65\xd7\xec\x3e\xa0\x57\x36\xc9\xb3\xa5\x3c\xce\x15\x40\x95\xeb\xa5\x36\x15\xcb\xb0\x26\x8a\x4c\x38\x20\x1b\x57\x1f\x22\xa7\xd4\x83\x36\x0f\x42\x24\x15\x6e\x0a\x48\x5a\x67\xed\xce\xd0\x65\x8a\xd9\x74\x81\x97\xf9\xd1\x50\xb4\x47\x1f\x00\x3c\x05\x57\xa0\xcc\x05\x5b\xda\x64\xe0\x70\xba\x21\xb5\xad\x87\x48\x53\x8c\xcf\xd9\x13\x2d\x36\x2b\xce\xb0\x55\x8a\x41\xc2\x77\xc8\xe1\x4d\x85\xa6\x8e\x46\x2c\x88\x00\x90\x46\x26\xd7\x67\xc4\x81\xf5\x43\x05\x48\x06\x40\xaf\x90\xf5\xe0\x6f\xe6\xd2\x0e\x54\x73\x8e\xd5\xbc\x0c\xb7\x5f\xeb\xc7\x9e\x4e\x39\xc7\x2e\xb3\xcb\xa9\xf7\x36\xb0\x2a\x34\x7e\x40\x7b\x01\xc0\xb6\xed\x18\xec\x7b\xa0\x51\xe3\xa0\x7c\x53\x90\x0d\x1c\x73\x22\xd9\x17\xca\xe7\xce\xd1\xc4\x96\x08\xc0\x55\x7b\xab\x16\x39\x30\xb5\x2d\x2f\x3f\xe0\x3b\x80\xbb\x59\x57\xaa\x0d\x8e\xd5\x4a\x1b\x8a\x73\x9a\x01\x25\x84\xc1\x1d\xd0\x69\x1b\x36\xcd\xa7\x8c\x44\x9b\x60\x72\x5c\x63\x81\x53\xa2\x88\x58\x16\xdf\x51\x2e\xae\x0a\xb1\x0b\x6e\x07\x6d\xbf\x66\x17\x0d\xf2\x7c\xb5\x44\x81\x57\xbd\x2e\x56\x61\x6c\xf8\x59\xac\x05\x27\xa4\xa7\xf1\xa3\x85\xda\x5f\x73\x16\xb6\x9f\x62\x1a\x36\x7c\x25\x80\x54\xd9\x76\x4e\x2f\x83\x2d\x71\x57\x43\x69\x28\xc5\x5f\xec\x09\xa8\xc4\xea\x51\xb6\xa1\x49\xac\xe2\xa5\x3b\xe1\xdd\x2e\x64\xdc\xe5\x24\x56\x0e\x55\x29\x18\x1d\xa8\x04\xe4\x7d\x03\xac\xd0\x8c\x08\x01\x42\x4b\x53\xc8\x59\xe0\x47\xb1\x78\x61\x85\xb5\xd1\x4a\x56\xd5\x62\x2b\x95\xe5\x5a\xc1\xe3\x76\x95\x2d\xdf\x4b\x34\xbb\x96\x68\xd6\xb0\xed\x19\xea\x24\xa2\x02\xdc\x61\x8b\xa0\xda\x8c\xeb\xf2\x04\x21\x99\xc3\x5e\x91\xb6\x92\x22\x5c\xfd\x94\xf9\x7f\x95\x39\xb8\x23\xea\x90\x54\x9b\xb2\xd4\x8e\x02\xff\x08\xb8\x47\x92\x50\x1a\xb0\x81\x0a\x30\x5a\x13\x57\x66\x4c\xd0\xe7\x97\xc6\xbb\x02\xd9\xa2\x0b\x9e\xa3\x27\x2a\xb5\x2e\x3c\x62\x10\x78\xe5\x4d\xd5\x8a\x23\xf3\xe2\x01\xbc\x05\x79\xe5\x32\x9f\xa4\x54\x21\x1c\xcc\xb0\x64\x2f\x3b\xb0\xe7\x59\x7f\x00\x33\x6e\x4c\x5c\x6e\xc2\x3c\x59\x71\x68\x36\x30\xfe\x14\x8d\x6c\x9b\x9b\x1c\x04\x89\x3e\x6f\x76\x72\xa0\xf1\x84\x1a\x66\xe3\x99\xeb\xd3\x93\x51\xb3\xb5\xc1\xa2\x30\x02\x54\x26\x95\xaa\x72\xb7\x58\xec\xc5\x15\xa9\xc9\xc5\x46\x74\xca\x4d\x2e\x5e\xdf\x45\x72\x72\x5b\xd9\x9e\x65\xc9\x6a\xee\x93\x16\xe3\xac\x4b\x82\x54\xdc\x45\x22\x87\x92\xd2\x75\xab\xa4\xb4\x6f\x30\x51\x45\x84\xf5\xe6\xf1\xba\xeb\xa8\x83\x45\xc2\x4b\x48\x45\x41\xfe\x5a\x19\x64\x83\x54\x39\x3f\xe3\x0a\x92\x14\x22\x28\x69\x5c\x4b\x9c\x1b\xb1\x66\x09\x64\x39\x4f\xdc\x36\xe6\x7d\xa7\x70\x52\xc1\xf9\x73\xb3\xb0\x16\xad\x9f\x7c\xd4\x90\x51\x96\x6d\x71\xe2\xaa\x88\x59\xf8\x9f\x5a\x14\x10\x10\x3c\x36\xc9\xe0\x6c\x38\x95\x1d\x23\xd2\x57\x9e\x0b\x7b\xe9\xee\x50\xb5\xab\x71\xe7\xce\x01\xfc\x5e\x46\xb6\xdc\xd8\x45\xa0\x3a\x35\xbe\xe2\x46\xdc\xa4\xe8\x22\xa0\x34\xee\x0c\x5b\xb2\x9a\xee\xad\x1b\x3f\x00\xd7\xa3\x1d\x3a\x36\x61\x18\x1e\xf1\xb8\xb2\x25\xa5\x09\xdb\x62\xd6\xcf\x30\xe9\x75\x0b\x65\x06\xae\x30\x61\xc3\x27\x69\x68\x37\x80\x0a\x99\x36\xea\xac\xc2\x87\xbd\x68\x97\xb3\x98\x08\x46\xb0\x9a\xbf\x5c\xd0\xfa\xe9\xb6\xc6\xe9\x17\x0b\x60\x3f\xdd\x49\x95\xe4\x4a\x50\xf8\x9a\xf1\xe0\x6b\x04\x57\x17\x35\x33\x6b\x8a\x63\x53\x75\xfa\x02\xd3\x63\x1d\x2a\xdd\x2a\xae\xbd\x59\x99\x7b\x9e\x08\xff\x06\xab\x4f\x2d\xb6\x5f\x1f\xf6\xb0\xd2\xe8\x8a\x25\xf9\x2c\x42\xe9\x9f\x3f\xba\x7b\x59\x4d\xd3\x3c\x08\xf8\x86\xc2\xb2\x0a\x53\x66\xb9\xd7\xb2\x18\x6f\x2d\x51\xa6\xb8\x29\xac\x7b\xef\x13\x06\x3e\xfb\x7c\x81\x3e\x7a\xbc\x8f\x1e\xef\xa3\xc7\xd7\x8a\x1e\x5f\x66\x66\xf4\x9e\x2f\xa8\xf1\x56\xaa\xcc\x61\xd6\x71\x85\xb6\xb6\x79\x54\xb7\xb3\xd4\x85\x21\x31\xf6\x17\xfb\x43\x63\x54\x4c\xed\xb3\xea\x6c\x43\xab\x21\x5b\x54\x8d\xef\x58\xc4\x89\x85\xcf\xb2\x31\xab\x65\x2b\xcf\x32\x83\xe4\x88\x7d\xcf\x9f\xc8\x23\x11\x07\x08\x2b\x94\x72\xad\xa4\x07\x51\x28\x40\x70\x25\x24\x66\x13\x6d\x80\xd1\x25\x4e\x49\x6c\xea\x6c\x05\x91\x6d\xd6\x2c\x6a\x1d\x9a\x4d\x28\x91\x00\x78\x68\xb6\xc1\x45\x27\x8c\x98\x89\x36\x33\x11\x4e\x70\x27\x53\x37\x31\xa0\xeb\x3f\x7a\x77\xeb\x1f\x8f\xd0\x9d\xbe\x07\xa8\x2c\x8f\x37\x00\x8d\x6a\x1b\xdb\x88\xcd\x04\xcf\x33\x6f\xa9\xe2\x13\x53\x70\xd1\x00\x4e\xd7\xdd\xad\x30\x18\xe7\x6b\x8d\x70\xac\x35\xde\xe5\x84\xf3\x2a\x81\x88\x1b\x21\xaf\x84\x04\xa4\xb9\x84\x8f\xae\xb2\xd1\xce\xc6\x4b\x1a\xe0\x4d\x2c\xc3\x8f\x7e\x26\x17\xee\x19\x91\x60\x7b\xf1\xb6\xed\x52\xfa\x6b\x39\xc5\xba\x71\x9c\xcb\x2c\x8f\xde\x3b\xe0\x2c\xe8\xcd\xd9\xdb\x45\xe7\x36\xb2\xca\xe4\xd6\x59\x7e\xfc\x6c\x36\xc9\xce\x01\x94\x6d\xfc\xe2\x3a\x17\x19\x07\x89\x27\x59\xb8\x6c\x73\x0b\x50\x95\xf1\x2c\x37\xd1\x63\x34\x0c\x26\x6a\xa4\x6c\x2a\xd5\x47\xac\xa2\xb9\xe6\xef\x05\x50\xd3\x8e\xa2\xea\x0a\xae\xfc\xbc\x76\xca\x86\x19\x9c\x86\xbd\xb7\x18\xee\x3b\xd8\xad\xcd\xfd\xea\x22\xac\xdd\x8d\x9d\xea\xfe\x4a\xb5\xe4\x03\xeb\xa3\xfb\xc4\x3e\xd1\x13\x5d\x45\x45\xab\xc6\xdf\x8d\xb6\xca\x85\x82\x76\x1e\xaf\xb7\x05\xf2\xc5\x99\xc5\x19\x2a\x5e\xb4\x75\x01\x5b\x9c\xec\x1b\x16\xfa\xb6\xde\x13\xa8\x1c\x5f\xd8\x35\x53\x9c\x69\x61\x5d\x71\x7d\x4b\x8a\x99\x91\x17\x4d\xfd\x49\x84\x51\x2e\xa8\x3b\xfb\x95\x54\xd6\x76\xea\x00\x3b\xe0\x71\x58\x08\x26\xc2\x41\x8d\x2c\xe3\x56\xc7\x91\xca\xb1\x0f\xff\x03\x9a\x70\xa5\x77\x4d\xda\xae\x73\x5f\x0b\x27\x46\x35\xec\xe9\x4a\xc2\xde\x62\x97\x71\x13\x2c\x5b\xa7\x93\x46\xd9\x2c\xc0\x74\x6b\xb6\xc5\x76\x81\x6c\x6f\xfc\xb2\x1b\xec\x7c\xe3\xa7\x4e\xf6\xd9\xe4\xdb\x25\x98\x33\xad\x9f\xaf\x12\x60\x4b\xa1\xce\x36\xdc\xd4\x4a\x4f\x21\xda\x9e\xb5\x93\x01\x68\x26\x05\x77\x38\xb6\xd2\xd4\x7f\xfa\xbf\x4c\x89\x1f\xb3\x34\xff\x89\xb8\x18\x31\xf3\xfb\x81\x87\xd7\xd7\x2f\x14\xb8\x95\x38\x25\x05\xb2\x9f\x28\x63\x80\x01\x12\x82\xc5\x70\x32\x18\xa5\x1e\x5d\x5c\x8f\xe1\x21\x9f\x10\xc1\x88\x1e\x9a\xcb\x99\xf6\xcc\x2c\xc5\x0c\xcf\x00\x11\xf5\x00\xe2\xcf\x40\x5c\x2d\x44\x7e\x43\xd2\xa6\x4c\x1b\x70\x2b\xcd\x2c\x6d\xca\x65\x51\x6d\x12\xfa\x34\xa2\xac\x05\x64\x2c\x82\x18\x9a\xa9\xff\xc6\xf6\xbf\x99\xc4\x7e\x37\xb8\xfd\x61\x7c\x33\xbc\xbd\xba\xbf\x39\x2d\x89\xed\xa7\x17\xf7\xb7\x77\xc3\x9b\xc6\x67\x45\xba\xe2\xdf\xee\x87\xf7\x2d\x8f\x5c\x03\x17\x83\xef\x86\xa5\xd2\xad\x7f\xbb\x1f\x5c\x9c\xdf\xfd\x3c\xbe\x7a\x3f\xbe\x1d\xde\xfc\x78\x7e\x3a\x1c\xdf\x5e\x0f\x4f\xcf\xdf\x9f\x9f\x0e\xf4\x97\xe1\xbb\xd7\x17\xf7\x1f\xce\x2f\xc7\x2e\xb8\x37\x7c\xf4\xd3\xd5\xcd\x0f\xef\x2f\xae\x7e\x1a\x07\x5d\x5e\x5d\xbe\x3f\xff\xd0\x34\x8b\xc1\xed\xed\xf9\x87\xcb\x8f\xc3\xcb\xe5\x25\x62\x9b\x57\xa3\xb5\xfa\x64\x70\x91\x05\xc6\x99\x40\x4c\x9a\x2c\x2c\x69\xd3\xdf\xc0\x45\x70\x6d\xe8\xf1\xf0\xc0\xfd\x65\x0a\xba\x1e\x6a\x16\xe8\xbc\x4f\x05\xf7\x18\x31\xef\x1e\xf4\x97\x2a\x14\xf4\xb6\xd9\xa7\xa5\xd1\x9e\xa0\x01\x9c\x15\x50\x18\x4a\x9d\x02\xe6\x84\x1f\xa9\x73\x28\x23\x53\xac\x3f\xa5\xe0\x5b\x46\x87\xa8\xba\xe1\xe5\x06\xed\x9c\x60\x08\xd6\x3b\x16\x2f\x3b\x0d\xb2\x9a\xd8\x0a\x94\x72\x82\x1c\x87\x26\x46\x6d\x37\x90\x99\x0b\x86\x53\x1a\x99\x1f\x2a\xa8\x91\xa8\x40\x48\xa8\xb6\x58\x22\xb0\x72\xcb\x73\x82\x7e\xf8\x6b\x31\x28\xf0\x14\x58\x03\x41\x5e\x2b\x04\x66\x1f\x88\xdc\xac\xea\x2a\xf2\x2c\xf5\xe4\x8e\xb9\x35\xe1\xc2\xb9\xb5\xf5\x62\xc1\xad\x93\xb3\x00\x25\xa9\xe4\xe3\xd1\xc7\xdb\xcc\xa8\x42\xe3\x27\xe8\x16\x10\x1a\x64\xa1\xba\xeb\x5d\xcc\x92\x7c\x46\x19\xa2\x69\x96\x90\xa2\xd2\xf0\x84\xcc\xf1\x23\xe5\x0e\x75\xdf\x14\x27\x80\x75\xb4\xa2\x15\x3a\x44\xad\x07\xe5\x04\x0d\xe2\x58\x96\x19\x5c\x89\x72\x1c\xcb\x3c\x2c\x0f\x3b\x04\x36\x62\xb1\x67\x9b\x15\x3a\x2a\x8e\x1c\xac\xd8\xee\x31\x28\xea\xec\xb0\x7c\xf7\x6e\x85\xa7\x2a\x1f\xc6\x8e\x94\xc7\x1b\x09\x03\x77\x58\x3e\x38\xd6\xbc\x4a\x20\x70\x68\x20\xdb\xf5\x68\x61\x41\xba\x76\xea\x57\x76\x0c\x07\x6d\xb3\x3e\x5b\xc1\x6c\x57\x74\xe9\x66\x9c\x54\x2a\x0e\x75\xee\xaf\x54\xb1\xa8\xb1\xb3\x9d\x7a\x55\x9a\xa5\x31\x38\x92\x63\x4f\xff\x6b\xcc\xe3\x1a\x3e\xbd\xf2\x5f\x2e\x15\xd9\xc6\xc1\xba\xad\xeb\x6b\xa9\xe5\x69\x5a\x7f\xcb\x52\x3a\xdc\x11\x2a\x4d\x77\x61\x10\xf0\xe2\x69\x04\x6e\x35\x4c\x99\xad\x22\x42\xbc\xdf\xc7\xd5\xcd\xd5\xe7\xd8\x57\xb6\xc2\x13\xfe\x58\x52\x2e\x53\x22\x25\x6e\xc1\xac\x08\x4c\x62\xdb\x30\x06\x7f\x42\xed\x87\x1d\xe9\xc9\x9d\xc9\x3b\xfd\xd5\x32\xa3\xcf\x4d\xa8\x19\xbb\x89\x6a\x81\x35\x76\xf1\xac\xe8\xca\x64\xb5\x69\xfe\x72\x50\x84\xac\x70\x11\x44\xf2\xb4\xb9\x59\x3a\x9a\xd5\xaa\x0b\xd6\x58\x1c\x26\x74\x95\xad\x1f\xe9\x12\xb4\xbe\x31\x90\xaf\xf5\x5f\xe0\xf2\xfa\xac\x41\x75\x25\xbf\x62\x58\x38\xd7\xd4\x88\x07\x9b\x5b\x68\x4b\x3d\x40\xd8\x24\x13\x16\xd2\x94\xcc\xa3\xb9\xf1\xe6\xe8\x2b\xe3\x60\xc4\x9e\x82\x0d\x29\x85\xdb\x0e\xc2\x96\x00\x04\xf1\x93\x3e\x6e\xf4\xb1\x14\xc4\x0c\x22\x23\x85\x88\xda\x80\x10\x8c\xe3\xad\xa8\x7a\xb3\x82\xc0\x83\xfd\xda\x82\xd4\x37\x28\x71\xd6\x50\x85\xbf\xa9\xd0\x99\x9f\x5b\x50\x5f\x6c\x0b\x4d\xb9\xeb\x10\x82\x12\x67\x4d\x23\xd8\x41\x85\xb3\x17\x45\x25\xf6\x49\x91\x26\x87\x36\x9d\x58\x98\x02\x3d\x5d\xb7\xda\x7f\x72\x33\xfa\x93\xf1\x3b\xe4\x2d\xb8\x16\x41\x6b\x1e\x98\x18\x1d\x6a\x99\xd5\xe5\x5b\xdb\x80\x07\x89\x0e\x0d\xd8\xd9\x17\x10\xcf\x38\xb8\x3e\xff\xe2\x00\x7d\x11\xe6\x74\x7d\xb1\xd1\x01\xb4\xe3\xb6\x55\xce\x40\x9b\x2a\x05\xf6\x97\x8f\x1d\xec\x55\xe5\x24\xda\x3d\xb3\x07\x11\xb5\x9d\x43\xfd\x65\xe9\x1b\x70\x02\x43\xd5\x2e\xe3\x27\xf5\x61\xc5\xd6\x05\x64\x64\x5c\x2a\x1b\xd6\x2e\x1e\xb1\xc9\xa2\xea\xe4\x39\xf0\x5e\x9e\xce\xa7\x74\xeb\x4a\x54\xba\xbd\x7a\x12\xf0\x8e\xc3\x5d\x97\xdf\x07\x2b\xd2\x8a\x07\x26\xb2\x99\x4f\x03\x2e\xd6\x16\x0d\xd0\xc7\x89\x37\xcd\xaa\x64\x2f\x73\x8b\xd9\xb8\x29\xab\xe4\x9f\xb7\x46\x6e\x1d\x82\xab\x07\x4d\x2b\x62\xe3\xea\x5b\x84\xeb\x9e\xca\x9e\x97\xca\x76\x91\x57\x50\x1e\xdc\xfa\x17\xe8\xa9\x91\xe3\x82\x66\x9c\xc1\x55\x2b\x13\x9e\xc1\x97\xca\x95\xad\xae\xf3\xb9\xa6\xcf\x37\x58\x93\xd5\x4e\xdf\x5b\x13\x38\x60\xdc\xae\xf5\xb1\x56\x87\x3a\x50\xb6\x76\x0a\xa7\x26\x87\x50\xd1\x94\x1c\x20\xce\x92\x45\x10\xec\x60\xcf\x2b\x90\x9b\x89\x05\x9a\x13\x2a\x5c\x27\x16\x66\x6e\xad\xa4\xf3\x35\xa5\xf1\x36\x1a\xd9\x22\xd2\xe4\x72\xf0\x71\x78\x36\x1e\x5e\xde\x9d\xdf\xfd\xdc\x00\x21\x58\x7e\xec\x50\x04\x83\x17\x6e\x7f\xbe\xbd\x1b\x7e\x1c\x7f\x18\x5e\x0e\x6f\x06\x77\x2b\x10\x06\x97\x75\xd6\x86\x5e\x97\xcb\x26\xf5\x6d\x1d\x04\x3b\x67\xe6\x6d\xe8\xbd\x8e\x33\x18\x74\x42\x49\x0b\xd6\xa0\x49\xb0\x67\x31\x11\x28\x26\x8f\x24\xe1\x59\x61\x56\x6d\x5c\xb0\x00\x84\xb0\xa1\xfd\x65\x40\x84\xd0\x66\x75\x8d\x4f\x90\x29\x51\x15\x54\xe9\xf4\x0d\x82\xc8\x87\x05\x61\x5f\x28\x44\x3e\x65\x09\x8d\xa8\x0a\x12\xf0\xb8\xb0\xee\x15\xe3\x3e\x84\x28\xd0\x15\xc4\xb5\xb3\x68\x94\x9d\xeb\xfc\xa1\x27\xbd\xae\xed\xfb\x13\xe5\x41\xb1\x56\xd6\x3d\xd9\x81\x62\xdf\xe2\x34\xae\x61\x76\x6d\x30\xba\xe7\x30\x0f\xd4\x33\x61\x6c\x12\x5d\x0b\x9e\x57\xf3\x20\x57\xdf\x86\xcb\xe2\x64\x4a\xe7\x7a\x79\xa0\x4c\x37\x4a\x7d\xe5\x70\x97\x52\x3d\xc0\x1d\xe0\x5b\xd8\x18\xf1\x35\x03\x16\x6a\x65\x2e\x98\x89\xed\xc4\x48\x90\x94\x2b\xad\x80\x99\x88\x80\x03\x2d\x54\x51\x9c\xd0\xdf\x00\x09\x4a\x90\xa3\x20\x82\x02\x12\xed\xe2\x30\xe2\xd2\xa2\x34\x1c\x8d\xd8\xd9\xf0\xfa\x66\x78\xaa\x19\xd2\x11\xba\x97\x00\xf2\x54\x9a\xfa\x99\x25\x6f\x23\x8e\x85\x91\x0c\x94\x49\x45\x70\x5b\x30\x18\x11\x82\x8b\xee\xfc\xc1\xf7\x37\x84\xef\x9a\xc9\x1b\x9e\x95\x6c\x53\xce\x00\x70\xd9\x5a\xcc\x35\x88\xcd\xdf\x79\xea\xd3\x0d\x7e\x2a\xad\x48\x08\x72\x01\x92\x48\x79\xd5\x9f\x71\xb5\x01\xc3\xb1\xfb\xfc\x4a\x7d\x5e\xc3\xb7\xcb\xe6\x79\x07\x21\x76\x52\x15\x80\x90\x06\x33\xd2\x17\xeb\xa8\xcc\xb3\x55\x54\x14\xaf\x01\x88\x51\x21\xfd\x09\x99\x61\x86\x44\xce\x58\x05\x21\x34\xb4\xb4\xd5\x83\x66\xd6\x3d\xaa\x7a\xcd\x70\xca\x73\x06\x4a\x03\x84\xb1\x36\x0c\x46\x66\x84\xa9\x15\x83\x79\x2d\xb8\x93\xca\x50\xf7\x17\xf1\xa4\x61\xa0\x6d\xa0\x27\x4d\xfe\x24\xa8\x18\xbb\xde\xb5\xec\x82\xf2\x4a\x4e\x25\x7d\xa8\xfc\xfd\xdc\xac\x65\x63\xf9\xb0\x75\x77\x77\x58\x3e\xac\xee\x2a\x26\xd1\xc3\xba\x97\x4d\x35\x03\x32\xb1\x05\x77\x6b\xc6\xbe\x85\x7e\x6a\x2b\x4a\x40\x9d\xe5\xe8\x01\x7d\x7f\xf7\xf1\x02\x4d\xa9\x96\x7b\xf5\xb5\x72\x89\xb5\x8c\x7d\x2f\x12\x5f\xc4\xde\xc8\x20\xb9\x48\xfc\xdd\x0b\x1b\xef\x44\xa9\x40\x4a\xd0\x37\x1a\x9e\x11\x67\xec\x15\x16\xd3\xae\x52\x51\x42\x60\x16\xf3\xd4\xcc\xe3\x58\xe6\xd3\x29\xfd\x74\xa4\xb0\xf8\xaa\x65\x3d\x4c\x54\xc5\xf8\x1f\x7c\x32\xd6\x23\xda\xf2\x22\x6e\x6a\x0e\xd9\x3a\xb0\x7e\xd9\xec\xcc\xce\xcc\xbb\xff\xc5\x27\x90\x53\x9e\x09\x0e\x38\x7b\xe0\x9d\xb3\x91\x0a\xf6\x15\x47\x49\x47\xc8\x25\x2a\x95\xa0\x44\x22\x2e\x04\xb1\xa9\xe8\xa6\x24\x62\x86\x85\xa2\x60\xad\x75\x50\x24\x25\x80\xf4\x62\x8b\xc2\x4a\xc5\x73\x5c\x80\x11\x4f\x08\x01\x07\x4f\x46\x93\xf5\x94\xde\xd3\x92\x6f\xb2\x72\x02\x6d\xe4\xa9\x45\xa7\x04\x83\xcc\x4a\x11\x6b\xf8\x48\x98\xda\x89\x7e\x02\x4d\x34\x24\xc7\x77\xf3\x32\x98\xca\x84\xe7\x67\xc5\xe5\xe6\x2b\xe4\x07\x51\x4d\x4a\x60\xb8\xe7\x6d\x42\x92\x75\xa9\xb7\x39\xfa\x1f\x3b\xfb\x8e\xe1\xd5\xfa\xba\xac\x08\x8d\xb7\xab\x5d\x54\x28\x2e\xc2\x5a\x1d\xba\xfb\x86\x70\x39\x92\x18\x2b\x46\x00\xd3\x60\x95\xd3\xea\x9e\x9b\x3e\x35\x6d\x55\xba\x5c\xb9\xe5\x1b\x60\xc3\x94\x9a\xf9\x40\x20\x75\x72\x17\x81\xe8\xeb\xa4\xc8\xc3\x40\xee\x45\x02\x21\xd4\x4b\xad\x58\xa6\x3a\xb2\xe6\x7c\x5e\xb2\xc3\x1d\x64\x74\x33\x18\x2d\x34\x92\x4c\x10\xa8\xd7\x7f\x82\xae\x13\xa2\x25\xaf\x5c\x4b\x5f\x79\x92\x38\x1c\xad\xe5\xd2\xe1\x5a\xd8\x6f\xcf\x3e\xaf\x40\xf7\x58\x32\x31\x87\x23\xb7\x7c\x66\xc1\x1a\xec\x1e\xd8\x20\x58\x5f\x30\x21\x83\x21\xb1\xac\x45\x02\x87\x5f\x98\xb8\x59\x30\x25\xe1\xd2\x45\x46\x7f\xd3\xec\x57\x10\x39\xe7\xad\xc9\x84\xe1\x6c\x9f\x67\x0e\x6e\x29\x9f\x71\x12\xee\x3e\x6c\x8b\xab\xee\x20\xd7\x54\xee\xc0\x92\x88\xb3\x6c\x8a\xbe\x00\x80\x8f\xfe\xb0\xa8\xa6\xf6\x6e\xb5\x43\x83\x5b\xb2\x30\xb5\x85\x08\x63\x85\xeb\xa2\x50\x66\x16\xc6\xf7\xea\x3f\x2f\x0c\xc8\x45\x4a\x00\x55\xb2\x28\x96\x85\xf4\x5d\xbb\x1e\x97\xb5\x89\x23\x45\x13\x7a\xc0\xcd\xac\xcd\x62\xff\x83\xc8\x6b\xc3\x82\x64\x09\x1b\xcd\x6e\xb1\x99\x72\xa3\x3a\xd6\xce\x40\xb7\x75\x81\x81\x44\x5b\x88\x1d\xcf\xe5\x09\x2b\x51\x4b\x69\x02\x3d\xda\xd6\xfa\x68\x5b\xb6\x10\x84\xa7\x3d\xc0\xc6\x53\x02\x92\xe1\x0b\x67\x57\xf5\x92\xb7\x06\xea\x55\x59\x4a\xa5\xdd\xe9\x94\x92\x54\xfa\x42\x9f\xfb\xb3\x2d\xbd\x65\x7a\x32\x8b\x31\x24\x79\x6e\x13\x31\x53\x9a\xbf\xb1\xf4\x43\x9b\x24\x46\x26\xa3\xdf\x60\x01\xdb\xb5\xf3\x5e\x8e\x0c\x0b\xc2\xd4\x88\xdd\xe8\x51\x98\x2f\x8a\xa8\x89\xa2\xd0\x3f\x29\xca\x62\x4e\x11\xb6\x5f\xc1\xa2\xb7\x05\xad\xc9\xb1\x79\x09\xd4\xc8\x67\x4c\x3c\xff\xce\xbc\x63\x70\x00\x2c\x0e\x8e\x9e\x2a\x9d\x16\x2a\xb7\x16\xf6\xa2\x39\x85\x34\xfc\x98\x48\x7b\x79\x50\x65\x71\x16\xbc\xa8\x9c\x13\x87\x48\x0c\x9f\x79\xfe\xd5\xc4\x5c\x9d\x52\xcf\x9c\x31\x4d\x8e\x58\xd0\xc7\x12\x00\x4b\xa3\x58\x6f\x28\xf6\xc3\x3e\xd3\xd8\x3b\xa9\xe0\x9f\x66\x87\xb8\xa0\x33\xca\x82\x1a\x37\x76\x7a\x29\xce\xc0\x14\x6b\xce\x20\x9f\xfa\xfb\xe7\xce\x66\x04\x1c\xc1\x88\xff\xe7\xbf\xff\x7e\x44\xdb\x3c\x15\x72\x6c\x57\x60\x1f\x76\x72\xbd\x6d\x09\x77\x3e\x40\xd6\x68\x41\x6c\x08\xf4\x4f\x59\xca\x72\x28\x7e\xb5\x97\x9b\x26\x1a\xae\xe6\xc6\x35\x5b\x26\x77\xf0\x63\x88\x7c\xf9\x2d\x1b\xb0\xb8\xc2\x79\x5f\x78\x68\x83\x00\x59\x57\x37\xc1\x04\x36\xea\xf6\x2b\x17\x4a\x85\x41\x05\x00\x77\xdb\x04\x12\xce\xb1\x7c\xbe\x68\x91\xc6\x62\x34\xc6\xc0\x1b\xde\x91\xab\xe2\x46\xcc\x20\x4d\x02\xa2\xde\x95\x5c\x12\x61\x0e\xb4\x47\x42\xb2\xc4\x13\xc2\xf7\x41\xd8\xe0\x0a\xf7\x17\x49\x31\x5d\x2b\xc4\x5d\xbf\xdf\x0c\x2e\x58\xb2\x7f\xe3\x19\x11\xe3\x38\x2f\xc5\x33\xaf\x6a\xfb\x5a\x7f\x74\x96\xab\xc5\xea\xf6\x65\x82\xa3\x87\x75\x00\x1d\xf5\xfb\x2d\xcd\xae\x16\x0c\x83\xa8\x93\xb2\x70\xd8\x02\x97\x48\x2a\x70\x89\x36\x0c\xb2\xa4\xb5\xc3\x45\xc3\xa0\xe0\x78\x20\xdc\xdb\x9b\xc8\x80\x3a\xc3\xc8\xd1\x24\x2f\xac\x1c\x1e\x26\x3f\x3e\x1a\xb1\xf7\xa6\xce\x04\x28\x1e\x66\x00\x11\xe4\xa0\x90\x4f\x19\x97\xa4\x94\x14\xd5\x00\x7d\x6f\x93\x1a\xed\x30\x9a\x65\xd2\x4a\xc1\xf7\xad\x44\xd2\x57\x07\xbe\xac\x6f\x78\x7d\xca\xcd\x14\xb8\x95\xd4\x13\xd1\x8c\x6a\xda\x19\x37\x9e\xb4\xf5\xa7\xde\xb5\x72\x4a\x11\x66\x04\x10\x48\x2a\x59\x1c\x20\x3f\xbd\x0a\x41\x24\xe4\x91\x80\x85\x17\xc6\x18\x16\x38\x28\x9b\x9a\x5a\xd8\xc9\xaa\x03\x54\x64\x24\x02\x5b\x40\x71\x75\x04\xe5\xbc\xad\x26\x5a\x2c\x67\xa4\x6c\x9d\x3c\xd5\x14\x2b\xb1\x86\x14\x3a\x08\x0b\x3d\x2c\x88\x42\xe4\x93\x22\xb6\x4e\xe1\x9d\x4b\x6f\xab\x47\xc4\xa3\xe6\x0c\x9d\x76\x11\x69\xf7\x54\x51\x9b\x88\x4d\x6a\x76\xf9\x7b\xb1\xbb\xf7\x6d\x3e\xdb\x1c\xb3\xd8\x26\x69\x5a\x59\x5a\xcb\x14\x30\x3b\x63\x07\xf2\xe1\xeb\x36\xd5\x30\x40\xc8\x36\x6d\x1a\x28\x6f\xb8\xc8\x9c\x5e\xa4\x25\x73\xf0\xf8\x73\xa1\x05\xd4\x9c\x29\x9a\x68\xe2\xb0\x63\xd0\x5a\x73\xce\x3c\x46\x1d\x04\x5b\xb7\xc1\xa0\x51\x29\x29\x9b\x8d\xed\x4a\xba\x7c\xc3\x6e\x17\x43\x99\xa6\x3e\x9a\xa6\xcc\x8f\xdf\xb9\x86\x96\xdb\x79\x0d\x59\x03\x44\x95\xcb\x74\x04\xc1\x9a\x71\x37\x19\x8b\x2d\xe6\x12\x24\xc7\x34\x36\x4b\x41\x4d\x39\x5c\x98\xe8\x3a\x46\x0a\x10\xeb\xea\xd0\x02\xc5\x15\x22\x6d\xf6\xa2\xc9\x49\x82\xe0\x71\xd5\x92\x9e\x29\x5b\xd3\x32\xcf\x99\x17\xd1\x6c\xbd\x23\x9f\x7c\x5e\xc9\xf0\xc4\xae\x3b\x1b\x21\x8f\x93\x64\x82\xa3\x07\xaf\x6c\x78\x95\x9b\x0b\x87\x17\xaf\x05\x54\x28\x88\x65\x88\x4b\x0f\x34\x02\xe9\x26\x74\x60\x19\x70\x19\x3b\xec\xa2\x73\xb3\x6a\x16\x1d\xcb\xa0\x09\x99\xd1\x9b\x70\xfb\x98\x64\x09\x5f\xa4\x2d\xf7\x59\x35\xab\x6d\x9b\xe0\x91\xb6\xa4\xba\x9d\x5e\x65\x15\xa6\xb7\xf6\x65\x56\x4b\x91\xd9\x01\xd4\xd1\x1a\x5c\xf2\x43\xc2\x27\x60\xe5\xb3\x5a\xb6\x4b\xfb\x08\xb2\x0f\xaa\xe7\x79\xdd\x64\x94\xea\x89\xa4\x32\x4b\xf0\x62\x59\x0f\x26\x0d\xe2\x79\xf7\xcd\xa4\xcd\xaf\x36\x82\x75\x0f\x20\x6e\xfc\xfc\x39\xc0\x6b\x2f\x9c\x24\x60\xde\x35\xfc\xab\x62\x4c\x32\xf9\x67\x47\xc6\x6f\xaa\xf8\x88\x29\x3c\x73\x9b\x6b\x85\x4b\xfe\xc4\x88\x90\x73\x9a\x95\x0a\xe5\x6d\x1d\xb1\x6c\x29\xda\xfe\xc7\xc4\xe7\xae\xc1\x3b\x79\x76\x68\x40\x33\x34\x7d\xc8\x0c\x47\x85\xf1\x2f\x4a\xb0\x94\x74\xba\x08\xb0\x2e\x7c\xf0\x27\x64\x14\x95\xb5\xe5\xa0\x36\x55\x13\xa3\x31\xe3\xdb\x4d\xb2\xf7\xf6\x89\x6e\xf7\xe5\xe3\x47\xe3\x10\x54\x4c\xdf\x27\x75\x60\x13\x77\x53\x5b\x80\x93\x56\x10\x52\x93\xd5\xbe\x59\x72\xf6\x52\x3c\x9a\x76\x33\x42\x21\x4c\xda\x61\x5b\x45\xc6\x63\x50\x84\xf8\x2c\xaa\x94\xdd\x07\x9b\xaf\x15\x27\x67\xfe\xd4\xc4\xe9\xf1\x2b\x20\xcd\xbf\xf8\xf8\x00\xc9\xad\x70\x9f\xba\xd0\xc5\x19\x49\xc8\x4e\x82\x80\x37\x20\x92\xaa\x87\x3d\x20\x8f\xa5\xa4\x51\xe0\xcb\xaf\x36\x2e\x6c\x10\x9b\xdc\x82\x1e\xd3\x3c\xf4\x9f\xcc\x40\x6d\x78\x72\xd3\x2e\x82\xfd\x0b\x56\xb9\xab\xee\xd2\x04\x43\x67\x5a\xb0\x24\x57\x74\x53\xa2\xab\xa2\x53\x2f\xaf\xec\x23\xa9\xbd\x72\x14\x6f\x6d\x5c\x1f\x48\x97\x88\x83\x95\x07\x60\x23\x0e\x54\xe7\xd3\xdd\xe8\xc2\xfa\x09\x15\x47\x33\xa2\x4c\x4d\x72\x5f\x78\xfd\x2d\xd1\xc4\xce\x72\x10\x76\xb4\xfa\xcd\x87\x7c\xbd\x53\x7b\x4b\x94\x74\x57\x42\x0d\xd9\xcf\x6e\xce\x1e\x6e\xc1\x7e\x1c\x4b\x23\xb8\x7e\xf6\x72\xcb\xd6\x79\xfb\x76\x64\x36\x7b\xfd\x77\x24\x50\x99\x39\xc6\xf6\x0b\x9f\xa9\x5e\xc2\x68\xc2\x25\x5c\x3b\xb3\x46\xaf\xcf\xf5\xaa\xa4\xfd\xb9\x8b\x5e\xeb\xd3\x78\x75\x54\x05\x75\xf7\xf2\xe0\x7a\xf2\xa0\xc3\x7d\xdc\xc3\xcb\xbf\xed\x18\xec\xe7\xfd\xb3\x07\xc2\x61\xed\x4a\xdc\x9d\x88\xf8\x86\xc8\x64\x2f\x24\xc5\xda\x56\xbc\x94\xbc\x78\xe8\x80\x77\x0a\x18\x9b\xfd\xdd\xa2\xfd\x38\xc9\x37\xd6\x0d\xf4\x7c\x17\xec\x6a\x7a\xd9\x09\x7d\x00\x06\x25\x86\x54\xdd\xdc\x16\xb5\x80\xc3\x1b\x84\x8c\xd5\x7c\x0f\x2b\x82\xf1\xec\xf0\x3a\x85\xe1\xd5\x96\xf3\x39\xb6\xd7\xe6\x65\x75\xde\xdc\xe7\x24\xb5\x75\xc7\xb2\x0b\x1d\xe5\x99\xbd\x38\x96\x1a\x83\x0f\xfa\x98\xd8\x6e\xb7\x68\x03\xda\x8b\xdb\xb2\x5d\x1e\xb2\xa6\x8a\x5f\xdb\x67\x96\xbb\xb4\xb3\x71\x26\xc8\x94\x7e\xda\x48\x14\xbf\x86\x4f\xad\x7a\xa9\x97\xb9\x52\x43\x0c\xdc\x33\x50\x73\x2c\x88\xdb\xb3\x2b\x6d\xeb\x0c\x8d\x58\x91\xac\x67\x33\xf5\x1e\xc8\x02\x71\x51\xfa\x69\x53\x5c\xc2\xdd\xd7\x3b\x33\xfb\x3a\x57\x2a\x93\x27\xc7\xc7\x33\xaa\xe6\xf9\xe4\x28\xe2\xa9\x09\x37\xe7\x62\x66\xfe\x38\xa6\x52\xe6\x44\x1e\x7f\xfb\xcd\x37\xc5\x16\x4f\x70\xf4\x30\x33\x48\x2f\x75\xbf\x53\x79\xcb\x09\x96\xdb\x45\xf6\xb8\xac\xaa\x67\xce\xae\x0d\xba\x71\xf9\x8c\x45\x19\xfd\x20\x7a\xd4\x54\x0c\x93\x0a\x17\xf5\x13\x20\x55\x4e\x4f\x13\xcd\x71\x96\x11\xd6\x6e\x76\x30\xb9\x8f\x5b\xb0\x1e\x97\x3d\x69\x47\x48\x3e\x65\x09\x66\x65\x44\x00\x28\x06\x24\x48\x44\x98\xb2\xd9\xea\x45\x0d\x61\xa0\x46\x83\x4a\x63\xf8\xff\x7a\x79\x1b\x30\x47\x2a\x8b\x6a\x5a\x6e\x38\xb6\xb2\xa5\xab\x77\x88\x83\xa5\xab\x56\x13\x2d\xd6\x8e\xb8\x55\x5b\x96\x37\x77\x5b\xaf\x29\xbd\x7e\x95\x15\xc1\xd9\x98\x7c\xd2\x4c\x4e\x6e\x8a\x21\x75\x2f\x89\x44\x83\x9f\x6e\x91\x5c\x30\x85\x3f\x9d\xa0\x8f\x94\x81\x00\xfb\x3d\xcf\x85\x44\x67\x78\x71\xc8\xa7\x87\x29\x67\x6a\x8e\x3e\xc2\xff\xda\x9f\x9e\x08\x79\x40\x3f\x13\x2c\x2c\x7f\xb0\xd5\xc8\x7c\x61\x6b\x4d\x42\x22\x67\x12\x91\x47\x7d\x42\xbf\xf9\x0f\x94\x9a\x96\x4f\xd0\xd7\xc7\xdf\xfc\x07\xfa\x23\xfc\xff\xff\x1f\xfd\xb1\x45\xd3\x5f\x0f\x85\x0a\x6a\xd6\xde\x94\xdd\xb9\x07\x95\x95\xda\xa0\x8c\xf7\xa9\xe0\xc5\x4e\x35\xb6\xfc\x40\xa3\x07\x3e\x9d\x8e\x35\x61\x98\xdc\xb2\x31\x16\x35\x04\xe3\x0d\x21\x3d\xa9\x2d\x3a\x2c\xa8\x41\xba\x77\x65\x4d\x6c\xa7\x06\x84\xc0\xb1\x6b\x99\x17\x45\x57\x21\x88\xa8\x54\xc8\x96\x4a\xf8\x8a\xc4\x9a\xab\xae\x73\x3a\x9c\x75\xcf\xe5\x23\x3b\x0b\x4e\x08\xda\x11\x16\xd2\xf6\x81\x7f\x61\x14\xab\x09\xf4\xb1\x0b\xd9\x78\x1c\x6a\xe1\xb5\x9f\x4d\xcc\x24\x4c\xed\xb5\xe2\x25\x65\xad\xf3\xd5\xa1\x92\xb7\x5c\x6c\xa5\x6f\x3d\x90\x5a\xcc\x76\xc7\x12\x3e\xae\x7c\x6b\x58\xd2\x1d\x92\x96\xb9\xf0\xd0\xba\xc6\x2e\x62\x0b\xfd\xad\xb6\x62\x52\x61\x82\xcb\xba\x1d\x7a\x3d\xf5\x33\xff\xc9\xaa\x61\x42\xa4\x99\x7b\xbb\x28\x61\x06\xa3\xd5\x22\x92\x66\x89\x0d\x23\x6e\xc0\xdf\x5b\xb5\xa1\xb7\x1e\x72\x01\x1a\x87\xb0\x47\x48\xf9\x60\x4e\xb2\xb5\x39\xed\xcd\xfb\x99\x8b\x88\x9c\xf2\xed\xc2\x5e\x13\xca\x6a\xf1\xf2\xdd\xab\xe3\xf8\xd5\xbb\xb0\x75\x90\x1c\x44\x2d\x8f\x0b\x65\xc1\xb8\x05\x6c\x61\x84\x00\x1b\xb3\x3c\x1b\xc0\x58\xdb\x05\xfc\x62\x0d\xae\x7f\x0b\xae\x6d\x0c\xc7\x05\xc3\x73\xd5\x1e\x2a\x45\x1e\x04\xd6\xbc\x70\x43\xc4\x4a\x53\xb6\xe7\x00\x09\x0c\x71\x90\x6a\x8e\x99\x31\x29\x4c\x71\x44\xd9\xec\x20\x00\x2b\x04\xe0\x80\x90\x03\x37\xd1\xc5\x1d\x96\x0f\xbb\x8d\xed\xdb\xba\x8c\x21\x8d\x8b\x52\x5a\x16\x5e\xc4\xf8\x12\x68\x0d\xa9\x4d\x61\xf9\xd0\x86\xaf\x53\x03\xf7\x5a\x32\x3a\xbf\x14\x0e\x12\x6c\xd9\xf8\x5c\x22\x32\x09\x55\x18\x40\xee\x77\x05\x6c\x2d\xd4\x9f\xcb\x25\xc3\x1e\x8b\xa3\x8a\x71\xb9\x64\xfc\x72\xce\x85\x1a\x6f\x88\x0e\x5a\x4d\xa6\x66\xe4\x30\x01\x58\x0f\xfe\x48\xc4\x23\x25\x4f\x65\x90\xcd\x75\x68\xd1\xd8\xa9\x82\x40\x36\x40\x61\x4c\x33\x0e\x59\x2b\x53\x94\x62\xb6\x30\xbc\x49\x9f\x67\x2c\x1f\xa4\x2f\xe7\x89\x64\x8a\x93\xe4\x00\x09\x92\x4b\x53\x4e\x56\x92\x64\x7a\xe8\x0a\x22\xc4\x28\xe1\x33\x1a\xe1\x04\x4d\x12\x1e\x3d\xc8\x11\xd3\x77\x33\x9b\x19\xbe\x90\x09\x1e\x11\x29\x03\x61\xa6\xc8\x93\xb6\xd9\x6b\x50\xcb\x53\x11\x91\x52\x46\xa5\xa2\x91\x93\x52\x0a\x68\x02\x53\xb9\x39\xc2\x60\x85\x85\x5c\x40\x18\xae\x16\xae\x88\x81\x68\xcc\x99\x2d\x9d\x03\x37\xa4\x45\x5e\x73\x71\xd9\x6d\x07\x68\x07\x40\x72\x8e\x42\xc6\xaa\x7c\x20\x57\x1c\xa9\x53\xfb\x19\x1c\xe3\x65\x24\x70\x53\x3e\x51\x9e\x20\xfd\x49\x2b\x81\xdb\x40\x18\xb7\x8f\x3a\x2f\x09\x0b\x3e\x18\x7b\xcf\x70\xad\x60\xc8\x2d\x68\x56\xab\x68\x5a\xaf\x22\x48\x19\x50\xad\xa9\xea\xa8\xa6\x2c\x4a\xf2\xd8\xd7\xeb\xd3\xb7\xee\xa3\x26\x12\xb7\x3c\x7a\xed\xf5\xdd\x7c\x80\xb0\x44\x4f\x24\x49\xf4\x7f\x4d\xd0\xf9\xa1\x87\xcf\xd7\x2c\xd9\x94\x38\x80\x4e\x1c\x97\x6e\xa5\x28\x98\xc4\x9e\x94\x99\xf5\xf7\xf6\xba\x9c\x79\xa5\x64\xa6\x97\x67\x4d\x0e\xad\x57\xba\x15\x6a\xb4\x34\xb6\x32\xd9\x82\x05\xa1\x7d\x50\xed\xc2\x4a\xc9\x80\x28\x9a\x32\xec\x0d\xc5\xc1\xd3\x47\x5a\x94\x54\xb6\xbd\x2d\x35\x30\xea\x19\x75\xb2\x2e\x86\x44\xb1\xb1\xc5\xbc\x32\x95\x1a\x52\x05\x35\xb5\xf8\xcd\x84\x40\x4d\xc8\xa3\x88\x90\xb8\x31\x3e\x59\x8f\x68\xef\xa0\x34\xaf\xb1\x9a\x1b\xd0\x83\x94\x2b\x53\xd1\xd3\x40\x69\x3a\xcb\xa7\xc1\x5e\x9c\x24\x7c\x02\x17\x12\xa0\x6c\xba\xa4\xe9\x20\xe1\xd2\xcc\x9b\xc4\xe8\xcb\xe0\x7e\xf1\x80\x1c\x5f\x35\x63\x3e\x96\x56\x64\x0f\x10\x36\xab\x26\xd7\x56\x9c\xcd\x72\x51\xba\x23\x74\x5d\x41\x91\x09\x8b\xba\xe3\x2a\xa6\xd8\x41\x6d\x0b\x5f\x07\x95\xb3\x32\x89\xe7\xdb\xa1\x35\x51\x39\x4b\x7d\xee\x00\x95\xb3\x32\xcf\x96\xac\x0e\x3e\x7b\xd6\x6c\x74\x3d\xa9\x0b\xde\x3d\x45\xd0\xa0\x99\x19\x11\xaf\x44\x82\xee\x40\x2e\x9a\x08\x71\xbf\x10\x47\x2b\xa5\x1b\x5f\x17\x71\xb4\x32\x98\x7d\x46\x1c\xad\x0c\x75\x7f\x11\x47\x1b\x06\xda\x01\x71\xd4\x84\x7d\x8c\x35\x51\x77\x63\x0a\x90\xf2\x34\xc9\xa7\xb7\x70\xef\x2e\x1d\xe3\xa9\x09\x29\x31\xd7\x98\x13\x25\x2d\x00\x37\x8c\xd6\x66\xc7\xb6\x05\xca\x55\xdc\x53\xeb\xd2\x9e\xf7\xcb\x52\x69\x0c\x09\xeb\x39\x64\x0e\x42\x3f\x08\x58\xa8\x23\x9c\x59\xb4\x81\xb6\xba\x38\xfb\x93\x57\xbd\x1e\x98\x2b\x00\x25\x96\x58\x7d\x27\x98\xb3\x8f\x95\xd2\x12\x73\xfe\x64\x25\x47\x20\x3f\x43\x8c\xad\xa4\x07\x9d\x8e\xad\x4d\xa1\x6d\xc5\x28\x53\x64\x56\x15\xe9\x8b\xc3\x42\x99\xfa\xf3\xb7\x2b\x39\x90\xc1\x81\x74\xd6\x8b\xa0\xc0\x83\x77\x7f\xd9\x67\x24\x46\xd1\x5c\x2b\xed\x52\x6b\xd7\x7a\x3a\xe6\x46\x95\x28\xc5\xd4\xe9\xf9\xb9\x34\xce\x46\x2a\x47\xac\x04\x9c\x7a\x84\xde\x43\xd5\x5a\x9c\x66\x09\x39\x40\x7e\x7e\x54\x53\xd0\x28\xff\xfa\xeb\x3f\x13\xf4\x35\x4a\x09\x66\x25\x13\x0b\x68\xf5\xfa\xca\x03\xa0\x41\x35\x27\x23\xd6\xb8\x15\x68\xf8\xc9\x14\xc2\x72\x11\xa0\xe7\x6c\xca\x9d\xc9\x06\xaa\x31\xe2\x68\x8e\x64\x3e\x31\xe5\x84\x03\x13\x9b\xd3\xf3\x2e\xf8\x0c\x42\x17\xe0\x26\x76\x83\x5e\x76\xfa\x9e\x37\x2a\xc4\x3a\xa0\xbb\xde\xc2\x03\xb8\x3f\x0e\x25\x29\x81\x5a\x35\xb8\x51\x0d\xc7\x0b\x0f\xbc\x34\xe8\xb5\x07\xc6\xab\x14\xf1\x34\xc3\xd6\xd7\xa3\x65\x68\x08\xf0\x06\xbf\x69\x9e\x60\x61\x8f\xfc\x88\x69\x3d\x58\xeb\x44\x3c\x97\xc9\x02\xc5\x9c\x91\x03\xa0\x84\x3c\x9a\x1b\x7d\x47\xab\xd4\xd8\x56\xd5\x78\xa4\x32\xc7\x09\xfd\x0d\xda\x72\x45\x3c\xa4\xc2\x06\x8c\x6b\x4e\xa1\x9f\x08\x27\x88\xc0\x57\x61\xde\x24\xea\xa6\xe4\x87\xd8\xb6\x15\x5e\xdf\x11\xdb\xb6\x44\x55\x3d\xb6\x6d\x33\xe3\xdb\x5b\x6c\xdb\xca\x9e\x77\xc3\xb6\x6d\xda\xf2\x0d\xb0\x6d\x4b\xcd\x7c\x36\xd8\xb6\x95\x15\xfd\x6c\xb0\x6d\x2b\xf3\xea\xb1\x6d\x3f\x13\x6c\xdb\xd5\x7c\xa4\x11\xbd\xb5\xf9\xf0\xae\x87\xde\xda\xa8\xda\xb6\xb3\x88\x6d\xa1\xb2\x40\x90\x7e\x61\xf4\xd6\xd2\x04\xfa\x48\xd5\xf5\x23\x55\x1b\x89\xcf\xf6\xad\x87\xe7\xc2\x57\xab\x17\x59\x47\xfc\xd6\xd2\xfe\x74\xb6\x3a\xef\x82\x12\x9f\x57\x0a\x06\xe7\x57\x77\x19\x38\x5c\x45\x69\x51\x9f\xb5\x64\xe4\x70\xf7\x8c\xd2\x1a\x46\x52\xf4\x94\xbb\x41\x8c\x75\x65\x79\xbd\xbb\xcc\xd0\xe2\x2e\xfd\x22\x4e\x9b\xdb\x4d\xca\xb1\x4b\x43\x5d\xd3\x2f\xe5\x06\x01\xfe\xa9\x46\xaa\x49\x68\x4a\x77\xd5\xec\xaa\x8b\xcc\xa3\x8a\x81\x22\x5b\xcb\xb0\xd5\xd7\x93\x19\x8e\x91\x8d\x2b\x89\xc5\x00\x79\x62\xbe\x9c\x51\xa9\x44\x6b\x94\x58\x6d\x84\xdb\x78\xc0\xb3\xbc\x73\x68\x51\xb0\xaa\xb3\xcd\x3e\x4b\x49\xca\xc5\xaa\x10\xb5\xc6\x2f\x6d\x1d\x9b\x4d\x3e\x25\xd9\x9c\xa4\x5a\x08\x1a\xaf\xdb\x48\xd7\xfd\xf6\xe9\xd7\x36\x0b\xd0\x84\x8c\x96\x88\x20\xf0\x6f\xeb\x77\x63\x83\xed\xd9\x79\xbb\xb7\xdd\x66\x8b\x3e\xba\xa6\x03\xc5\xa1\x2f\x2f\x37\x54\xd9\x97\x4a\x51\x0c\x40\xdf\x8d\xa1\x3a\x3e\x52\x6a\x75\x30\xce\x92\x30\x9c\x65\x08\x5e\xc5\x57\xb6\xca\xf3\x1a\x11\x1a\x75\xef\x75\x58\xe2\x77\xfd\xb8\x9d\x16\xfc\xd9\xfa\xf2\x80\x5b\x5f\x12\x71\x18\x4a\xd4\xa5\xc1\xd4\xd7\xab\x44\x25\x4e\x13\xdb\x82\x48\x72\xd1\x1a\xaf\xdb\xc5\x00\x1c\xa9\x1c\x27\xa0\xe6\x85\xa5\x29\xab\x9b\x3a\x59\x34\x24\x90\x76\xf3\x30\x50\xa6\xfe\xf2\xef\x6b\xed\xa6\x56\x49\xec\xba\x41\x39\x2d\x1c\x45\x44\x1a\x9b\xb4\x8d\xe7\xc6\x13\xfe\x08\x95\xb4\xb6\xd9\x55\x7d\x94\xf5\xbc\x35\x83\xf7\xa0\xce\x71\x41\xea\x46\x5c\x98\x0b\x9e\xcf\xe6\xce\xf6\xa2\xcf\x8c\x9e\x5a\xd3\x5e\xfe\x58\xb3\x2d\xaf\xbd\x97\xdf\xe5\x34\xd9\xcc\xb2\x75\x5b\xaa\x31\xf6\xe1\xfc\x0e\xc9\xb9\x3f\xad\x13\x68\xb6\x71\x63\xeb\x83\xee\xde\xa7\xfd\xd6\xfb\x37\xa0\x9b\x03\x07\x64\x3a\xe5\x49\x02\x16\x7a\x49\xd2\x47\x22\x9a\xbb\x87\x09\xdf\xd1\xf5\x30\x08\xfd\x00\xe0\xeb\x22\xc5\xa4\x93\xfc\x75\x6d\x44\x43\x89\xdc\xe8\xab\x4e\x7e\x13\x81\xc8\x19\x61\x4d\xb6\xa9\x9f\xea\xe5\x5d\xde\x58\x1c\xa8\x0b\x0a\xdc\x59\x2c\xa8\x5b\x92\x17\x8e\x07\x5d\x31\x8f\x7d\x8d\x09\xad\x30\x3b\x1f\xa2\x59\x5c\x33\x2e\xd0\xc6\x28\x3e\x03\xbd\xc4\x23\x36\x28\x65\xa6\xb8\x32\xd8\x93\x45\x11\xda\x6e\x74\x88\x90\x99\x41\x61\x0e\x6b\x58\x01\xf7\x93\xfe\x0b\x34\x1d\x03\x03\x6c\x22\x45\x5d\x34\x28\xc4\xe5\x93\xf8\x10\x47\x8b\x28\xa1\x51\xa0\x33\xcf\x04\xce\xe6\x4d\x1c\xcf\xed\x7c\x8f\x5f\xf4\x5a\xf8\x45\x6d\xd5\xa6\xd6\x89\xc4\x77\x74\xc5\x70\x4a\x7a\x5c\xa5\x26\x5c\xa5\x03\x8f\x1c\xc2\x8a\xba\x59\xaf\x08\x48\x51\x3f\x77\x3d\xb8\xd2\x2b\x80\x2b\x6d\x72\xf8\x0a\xe4\xa4\xd2\xb1\xeb\x01\x9f\xde\x75\x02\x7c\xf2\x97\xe0\x5e\x61\xf8\xb4\x9f\xc7\x57\xc6\x86\xa9\x0f\xec\x35\x01\x9e\x1a\xc4\x85\x75\xe4\xa6\x65\x08\x4f\xcb\xe8\xa2\xd3\xba\xbc\x2e\xde\xd2\x7a\x2b\xb3\x16\x94\x52\xe3\xdd\xb5\x27\xc0\x4a\xed\xdb\xb0\x27\xe7\x66\x97\xc9\x4a\xeb\x15\x06\x0d\x13\x96\xd6\x51\xb0\xd6\xcb\x5d\xf2\xf4\xf0\xb6\xf2\x97\x8a\xaa\x6c\x9b\xe5\x30\x0d\x9c\x0f\x9a\x08\x34\xe7\x49\xec\xe0\x3c\xfc\x6a\xf9\x0e\x7c\xe4\xbc\x5f\x20\xb7\x19\x50\xc9\x1c\xb4\xad\xa2\xb4\xda\xb2\x4c\x25\xbf\x89\x6f\x3d\x5b\x29\x90\x7f\x77\x9b\xb1\x14\xae\xec\xa6\x59\x4b\x2b\x06\xb7\x4c\xf4\xd8\x30\x73\x29\xe8\x71\xa9\x97\xce\xcd\xae\x93\xa7\xae\x4a\x2c\x1b\x04\x51\xd5\x6a\xe0\x6d\x0f\xb3\x94\xe2\x4f\xe3\x0c\x0b\x9c\x24\x24\xa1\x32\x7d\xb6\x20\xda\xd3\xb2\xbb\x56\x9f\x55\xc1\x8d\x89\x88\xe5\xe9\xc4\x90\xa2\x1b\x88\xad\xbc\xa9\x38\x12\x39\x0b\x41\xe2\xfc\xc6\x20\x57\x99\x31\x87\x7b\x01\xac\x4a\xd1\x1c\xca\xbc\x4e\x31\x15\x8c\xc8\xd6\xa2\x9a\x24\xca\x05\x55\x8b\xb1\xad\x51\xda\xfd\xc0\xdd\xda\x2f\x4f\xed\x87\xcb\x3d\xdc\x0e\x1f\xc1\xf5\xe7\x6b\xa2\x66\x44\x40\xc1\x25\x57\x3a\x28\xa8\xc3\x6a\xf1\x2f\x88\xaf\xda\x04\x61\xc3\xb5\x6b\xbb\x2d\xe0\x16\x3f\x8d\x83\x0c\xa4\x71\x54\x25\x8e\x55\x87\xb5\x09\xc1\x6b\xd9\x24\x9f\x19\xc3\xaa\xc5\x8b\xfc\x0c\xf5\x5a\x6c\x9a\x81\x69\x5a\x0f\x38\x70\x05\x83\xbd\xb2\xd8\x98\x00\xc6\xc0\x2a\x55\x2d\xe3\xb4\xa8\x49\x4d\xc1\x47\x4b\x06\x3b\x08\xbe\xea\x30\xe2\xa0\x93\x1d\x0d\x5b\x1f\x74\x21\xf2\x4c\xd1\x49\x1d\x24\x48\xed\xae\x7e\xeb\x20\x81\xec\x79\xe7\x66\x28\x75\x6b\x8a\xba\x96\x38\xb1\x9d\x9d\x96\xff\x2d\x22\x9b\xc3\x5a\x32\x58\x55\x61\xde\xdb\x55\x4a\x95\x72\x01\xf6\xc6\x00\xad\xa9\xb3\x6c\x9b\xfd\xc2\x85\x7b\x60\x28\x0d\x6b\x4c\x44\x47\x23\x36\x90\xe8\x89\x20\x46\x2c\x18\x47\x43\xd1\x57\x6f\xd5\x86\x2a\x5a\x13\xa2\x7b\xf2\xb1\x29\x5a\x78\xa0\x4a\xfa\x42\x6e\xa6\x8f\x29\x4e\x24\x39\xd0\x0d\x43\xfd\x57\xc5\x21\x68\x12\xa3\x27\x81\xb3\x8c\x88\x11\xb3\xd9\x0f\xe0\x70\xe1\x3c\x31\xed\xb7\x85\x86\xda\x35\x20\xe3\x08\x47\xf3\x17\xda\x23\x0c\xc9\x2b\xd1\x9c\xc4\x2e\x0d\xbc\xbc\x3d\x6e\xde\xc6\x60\xbd\xc6\x66\x9d\x4f\x5d\x21\xb2\x03\xdb\x49\x12\x69\x8e\xe2\xeb\x52\x67\x44\xe8\x51\x6b\x1a\x7e\x24\x0c\xd1\xa9\x1b\x87\x8d\xdd\x41\x4f\xe0\x99\xd2\xa4\xff\x88\x69\x62\x70\x15\x5c\xd7\x4e\x08\x34\xe6\xf7\x11\x33\xee\x6e\x16\x95\x32\x3a\x29\xa3\x72\xae\x39\x75\x0e\x3e\x49\x50\x33\xd6\x92\x3c\xe3\x58\x96\x8d\x8c\x46\x7d\xa3\xbf\x95\xcc\x1b\x87\xa5\x6c\xb5\x28\x00\x42\x82\x60\x49\x57\x0b\x6d\x99\x9c\xd9\x87\xde\xd7\x43\xef\x9b\xd7\x66\x1f\xc3\xef\xfd\x61\x59\x37\x04\xbf\x6d\xfb\x77\x21\x41\xee\x30\x14\xff\x95\x63\xd6\x9f\x27\x5c\xfd\x75\xf3\x0b\x9e\x23\xb5\xa0\x0f\xc0\x7f\x7b\x01\xf8\xed\xc7\x76\xad\x20\xfc\x15\x58\x58\xae\x97\x6d\x23\x9e\x3d\x38\xd2\xb3\x46\x3d\xfb\xa8\x8d\xe0\x8b\x8e\x91\xcf\x05\x7a\x53\x1f\xfd\xfc\x4c\xd1\xcf\x0d\x4b\xbc\x5e\x04\xf4\x46\xb6\x95\x97\x0f\xce\x74\x3d\xbf\x44\x80\xe6\xaa\xe8\x98\x7c\x32\x7e\xf6\xa3\xd7\x38\xe7\xae\x27\xf0\x27\x4f\x14\x46\x24\x12\x9a\xce\x26\x24\x8e\xc1\x7e\xaf\xb8\x2d\x6e\x5c\xd0\x8e\xd3\xc3\x34\xf3\xc5\x52\x13\x3b\x4e\x38\x9b\x49\x1a\x1b\x14\x88\x0c\x43\x91\xd1\x50\x4b\x84\xec\x67\xd8\xdf\x24\x21\xc2\x99\x7f\x05\xfa\x52\x52\x2d\xf7\x07\x26\x61\x81\x62\x4e\x24\xfb\x42\x19\xad\x0c\xb3\x05\x7a\x60\xfc\x29\x21\xf1\x0c\x76\xa8\x3a\x98\x43\x44\xc9\x01\xa2\xca\x7f\x26\x20\x5d\x9a\xe7\x6a\xa4\xc7\x0e\x41\x3d\x46\x04\x24\xf6\xdb\xa0\x8c\xb7\x6f\xe6\xab\x23\x84\xce\x19\x9a\xe2\x48\x1d\x20\x99\x4f\x8a\xf6\x63\x6e\xea\x32\x6b\x35\x27\x98\x78\xd1\x48\x1f\x9c\xdb\xd0\x79\xf3\xd9\x70\xdc\x41\x93\xeb\x20\xa1\x78\xab\x20\xa6\x47\xbc\x0d\x2a\xe6\xc7\x5c\x5a\x6f\x37\xe2\xcc\x1f\x7d\x8b\xfb\xe2\x61\x8d\xa1\x98\xae\x81\x08\x66\x3c\x6e\x35\x2a\x55\xa6\xb2\xee\x58\x8a\x88\x33\x5b\xc3\xd7\x7a\x04\xa0\x5d\xb3\xdc\x31\x7f\x62\x52\x09\x82\x53\x6b\x85\xd5\x57\x0d\x44\x2b\x98\x78\x33\x3d\x7a\x2a\x8c\x88\xb1\xce\x16\x5f\x50\xf6\xa0\x77\xb7\x00\x72\x86\x92\xe8\xd0\x73\xd3\xa6\x65\xfa\xc6\x23\xa7\x9c\x19\x4f\xcc\x36\xfb\x27\xe9\x8c\xe1\x64\x4d\x25\xb7\xb6\x72\x75\xe7\x89\x33\x5e\x59\x71\x41\x4b\x11\xc6\xaa\x82\x4c\x8f\x6b\x19\x11\x2a\xf3\x0d\x5d\x37\x18\xc5\x24\x23\x2c\x26\x2c\x5a\x00\x89\x30\x80\xf4\x10\x0c\x27\x08\xc3\x77\x38\x39\x42\x67\x26\x91\xc1\x4b\x78\xf6\x5a\x87\x0b\x3d\xc5\x8c\x4e\xb5\xa0\x08\xd6\x2e\x3b\xca\x11\x33\xc3\x74\xc6\xe6\xa0\xce\xbc\x5f\xb1\x86\x9d\xf9\x8e\x32\x5c\xca\x1c\xd9\xe0\x3c\x25\xf9\x5a\xc1\xc1\x81\xd9\x6a\xd1\x86\x6e\xae\xf0\x2a\xc0\xf1\x35\x36\x03\x49\xa8\xd0\x8f\x74\x77\x08\xae\x4c\x8f\x7d\x8f\xc1\xa2\x3d\x27\x49\x16\x54\xb9\xce\xb0\x50\x1e\x50\xc2\x40\xd4\xea\x5b\x26\xcd\x99\x01\x07\x31\x96\x86\x27\x0b\x03\x6a\x9d\x19\x45\xe3\x47\x23\x76\xae\xbe\x90\x9a\xf3\x71\x36\x4b\x16\x08\xc7\x8f\x54\x16\x70\xe7\x11\x67\x32\x4f\x89\xb0\x5d\x50\x69\x82\x75\x2c\x54\x30\x76\xa4\xa9\xc7\xa6\x65\xfe\x47\x9c\xd0\xd8\x41\xf2\xeb\x1f\x27\x64\xaa\xe5\xa7\x0c\x0b\xe9\x2c\x62\x0d\x2e\x4d\xbb\xb9\xb1\x5e\xab\x57\xe3\x96\x3f\x86\x0c\x11\xa5\x05\xef\xc4\x56\x07\x3e\xae\x72\x4e\xbb\xea\x4b\xb8\xe6\xa4\x36\x29\xb4\x5c\xc0\xb1\xab\x70\xb6\x0a\xbd\xc6\x21\xa8\xe5\x26\x84\x45\xf7\xe3\x64\x69\x33\xb8\xb5\x38\x40\x65\x82\x76\xd4\xc6\xd0\x1a\x72\x4d\x42\x41\xb8\x90\x0a\x2b\x1a\x59\xb1\x9d\x0b\x7b\x71\xd8\x8b\xa5\x7d\x6b\xcf\xb6\x04\x8c\x96\x11\x4e\xea\x3b\xbc\xc4\x6b\x66\xde\x5f\xce\x5b\xed\x71\x33\x6d\x2f\x4d\x5a\x89\x78\x92\xac\x03\x66\x5e\x99\xf9\x69\xf1\xf9\xf2\x11\x15\xfd\xe8\x0d\x70\x7b\x01\xa7\xc6\xf8\x1e\x71\x62\x25\x54\xa9\xec\x2e\x85\x2f\x99\xdb\x6d\x61\x7d\x9b\x23\xc6\xa7\xa6\x96\x71\x9b\x57\x32\x13\x3c\xa5\xeb\xa0\xea\x19\x47\xdd\x8d\x8b\x22\x5c\x21\xbc\xb9\x58\x43\x7d\x8a\x2c\x79\xd9\x1e\x21\xde\x1c\x33\x23\xaf\x2e\x39\x43\x29\xce\x36\x5a\xf0\x55\xd6\x96\x01\x4a\x8d\xa9\xcb\xae\x1e\xe0\xec\x10\x40\x8e\x87\x45\x7e\xc2\x8b\x22\xb5\xa7\x0d\x2f\x8d\xad\x45\x0e\xf7\xfa\xf5\x73\x36\xe5\x6b\x1c\xce\x22\x15\xc7\x9e\x3e\xec\x68\x36\x38\x7f\x3e\xa6\xd3\xec\xbe\x59\xd3\x2e\xe7\xf1\xb4\x89\xa8\xd7\x3e\x99\x6e\x05\x9f\x53\xf5\x0b\x99\x48\xa8\xf5\xad\x73\xb7\x96\x8f\x56\xd0\x22\x82\xe1\x2c\x5f\xaa\x8f\x25\x3a\xdc\xf9\x1a\x55\xda\x41\xc6\xc2\xe0\x82\x81\xae\x9b\x5b\x7d\x81\x35\xb3\x87\xa4\xd3\x62\x6d\x99\x7b\xb8\x1e\xee\x9b\xeb\xd1\xa3\xbd\x35\x9f\xd0\x95\xa0\xb6\xeb\xe8\x8a\x53\x2d\x09\x19\xf5\xa1\x88\x2c\xb0\x21\xd6\x53\x9a\x10\x79\x84\xce\x1b\xf4\x46\x17\xe0\xec\x1d\x82\x26\xd4\xcb\x49\x4f\xb9\xa0\x41\x89\x30\x27\x23\x21\x0a\xb8\xe9\xa1\xed\x4c\x10\x3d\xe6\xc8\xf8\xee\xb8\x01\x79\x83\xe8\x2a\x41\x35\xcf\x32\xc2\xaa\x02\x29\x5a\xf3\x02\x6a\xd3\xcb\x8d\x0c\xef\x3f\xe0\xc6\xe7\x8d\x6d\x15\xc4\x62\x54\x2d\x5b\xba\x8b\x62\x0f\xdd\xe3\xc7\x5d\xaf\x77\xfa\x8b\xfa\xde\x34\x8e\xf0\xae\xdc\xfa\xda\xa3\xf3\x52\xfe\xfa\x8e\xc8\xf7\xf0\xa9\xb3\x8a\x62\x34\x15\x04\x0c\xe7\xa9\xcf\x09\x35\x60\x6a\x9c\xc3\x7d\x77\x7b\xf6\xc3\xf1\xfd\x39\x22\x2a\x42\x09\x7d\x20\x23\x16\xc9\xc7\x03\x2d\x1e\xff\x9a\x13\xa5\x7f\x6e\x31\xb4\xd0\x94\x30\x09\x9c\x80\xaa\x5a\xee\x7c\xf3\x42\xba\x85\xd1\xff\x3d\x2b\x7f\xbf\x84\xe4\x6b\xe9\x2f\x40\xbb\x0e\x86\x1f\xc8\x14\x20\x9c\xcd\xd2\xca\x06\x8a\x31\x2a\xde\xb0\xa9\x2e\xd6\x06\xe1\xae\xec\x1f\x39\x5b\x53\xe8\x3a\x2d\x3e\x0a\x46\xd1\x22\xd3\xa5\x19\x06\x8c\xc3\xf5\xe2\x68\xcd\x37\x8d\xad\xaf\x62\x22\x45\x5a\x91\x53\xd9\x8b\x12\x62\x48\x09\x42\x80\x85\x78\x7a\xb2\x77\xbd\xcd\x24\xf5\x13\x0b\x3e\x3a\x1a\xb1\x8f\xce\x90\x5f\xfc\x2a\x5d\x13\x26\x36\xdb\x43\x3f\x96\x5b\x81\x66\x63\x2a\xfd\x0f\x00\xe0\x2d\xf3\x44\x99\xda\x36\x53\xaa\xb5\x74\x37\x50\xf3\xa4\x89\x4b\x08\xcc\xa2\xf9\xe5\x96\x25\x6e\xe8\x74\x4c\x92\x75\x24\xd1\xf3\xe9\x30\x91\x9a\xbe\xa3\x87\x96\xd3\xb9\x49\xf5\xa6\x62\x32\xb6\x26\x9d\x29\x47\x61\x74\x1c\x63\x3d\x4e\x4c\x6d\x19\x82\xc0\xf4\x5b\x8d\x7e\x36\x09\x8e\x7a\x17\xad\xa4\x6e\x2c\xbf\x26\xec\xd0\x87\x14\x41\x2f\x08\xab\x11\x13\x39\x03\x70\x61\xef\x08\xc2\xa8\xc0\x89\x8c\x9c\x59\xc6\x1a\xc9\x66\x9a\x4d\x18\x18\x46\xf3\xb2\xd6\xcf\x78\x2e\x21\x82\x31\x25\x4a\x5f\x50\x5f\x42\x45\x38\xe3\x8a\x3b\x40\x99\xa0\x29\x55\xf4\x91\xc8\xaf\x1a\xb6\xee\x14\x2b\x9c\xf0\xd9\x40\x28\x3a\xc5\x91\xba\xc3\x5b\x69\xe0\xd8\x36\xb3\x69\x58\x87\x1b\x06\x3a\x3f\xd3\x8b\x3f\x23\x8c\x08\x98\xa8\xd6\xc9\x9b\x8f\x30\x3c\xd9\x88\x73\x43\x39\x95\xc8\x14\xa0\x90\xde\x62\x81\x73\xc5\x53\xad\xdf\xe2\x24\x59\x40\x61\x09\xfd\x64\x8e\xe5\xdc\x6d\xb4\x09\x43\xea\x72\x37\xd9\xc5\x3d\xc5\xd1\x9c\xdc\x42\x7d\xc4\xa6\xc5\xad\x8c\xf2\x1d\x61\x79\xfa\xee\x04\xfd\x4f\x31\xc7\xd3\xc1\xe9\xf7\xc3\xf1\xd9\xf9\xed\xe0\xbb\x8b\xe1\x59\x30\x1f\xfb\xe4\xe3\xf9\xed\x6d\xfd\xd7\xef\xcf\xef\xea\x3f\x5e\x5f\x5d\xdf\x5f\x0c\xee\x9a\x5a\xb9\xb8\xba\xfa\xe1\xfe\x7a\xfc\x7e\x70\x7e\x71\x7f\x33\x6c\xf8\xf4\xfe\xae\xfd\xe1\xed\x0f\xe7\xd7\xd7\xc3\x33\xb7\x2a\x7f\x0f\x4e\x17\x84\x27\x41\xe8\x60\xf3\x34\xaa\x07\xf0\x10\x95\x5f\x3c\x41\xf7\x55\xc8\x5b\x1b\xe3\x63\xf2\x30\x9f\xb0\xd4\x3c\x0c\x42\xb9\x46\x0c\xb9\xcf\xf5\xa2\xb4\x7d\x6a\xbc\xa0\xd1\x9c\xa0\x84\xf3\x87\x3c\xb3\xac\xcd\x24\x73\x30\x6e\x0c\x3f\x44\x06\xad\x7d\x7f\x7e\x77\x52\x87\xde\xf5\x8d\x05\x88\x0f\xee\x0c\xc0\xb8\xb0\x63\xa7\x60\x4b\x71\x90\xac\x85\xa9\x34\xe8\xc1\xef\xcc\xb2\x7e\x4c\x6b\x98\xa9\x4a\x37\x71\x6c\xcb\xff\xb9\x89\x05\x0d\x97\xf7\x75\xd9\x6a\xfa\xe5\x30\xb5\x06\xd0\x84\x44\x38\x37\xbe\x62\x7d\x4f\x09\xc1\x45\x38\xe0\x82\x1e\x76\xd7\xa8\xa5\xa3\xc6\x06\x2b\x7b\xa6\x27\x2e\x1f\x68\x96\x91\xf8\x5d\x5d\x7e\x29\xd7\x89\xb3\xd5\x49\xf9\x14\x05\x67\x52\xeb\xf5\xa0\xf3\x3b\xa0\xec\xb9\x2d\x68\x40\xa5\xf1\x87\x15\x1e\x42\x00\x22\xd4\x77\x82\x07\x34\xa6\xe0\xbd\xc6\x0a\x3d\x11\x48\x09\xca\x6d\xa5\x00\xa3\x7b\xeb\xb3\x0d\xdd\x19\x4f\x86\x2b\x4f\x53\x4a\x15\x6a\x65\xc6\xbb\x10\xb8\xf5\xf7\x92\x34\x31\xe2\x2d\xf2\x3a\xce\x4c\xa3\xc0\x9d\x5d\x28\x01\x8c\xb8\xc5\x67\xe4\x6e\x83\x06\x0b\xf9\x12\xf9\xaa\x7e\x23\xad\xb8\x2c\x34\xdb\xee\x32\x1e\x97\xcb\x5a\x02\x68\xec\x3e\xb0\x12\x88\xdf\xca\xb5\xba\xe3\x31\x5e\x68\xe2\x80\x18\x1e\x99\x67\x19\x17\x0a\xb5\xb4\x61\xbc\x23\x66\x7c\x70\xe7\xd8\x79\x78\x1e\x07\x8d\x68\x09\x43\x36\x60\x28\x77\x4b\xef\xb3\xeb\x5a\x30\x8e\x10\xaa\x04\x14\x41\x8f\x73\x9f\x96\x54\xea\x12\x85\x36\x09\xbf\xdb\x44\xee\x65\xfa\x82\xef\x5a\x76\xa5\xa9\xf7\x2b\xd7\x42\xe3\x96\x27\x64\xaa\xc6\x8d\x5e\x9f\x25\x06\x4e\xdd\x22\x6b\xcb\x88\xa6\xb3\xf9\x0e\x5a\xec\xae\x25\x7c\x6b\xfd\xa5\x5a\x35\x08\x2c\x04\x82\x73\x65\xe4\xd3\x42\x87\x41\x6e\x35\xc1\xbc\x60\x3b\xb5\xb1\xcc\x5e\x08\xd4\x32\xff\x03\xe3\x4f\xcc\x5b\xf6\xe5\xd1\x88\x0d\x31\xd4\x4f\xf4\x8a\x88\x0b\x71\x06\x2d\x60\xa5\xfc\x5f\xaa\x85\xf6\xa2\x41\x30\xed\x08\x65\x05\xdd\xdb\xca\xb9\xc9\x02\x15\xf5\xee\x4a\xdf\x75\x39\x3d\xc6\xea\xed\x44\x40\x33\x61\x5b\xa9\x49\x91\xcc\x5a\xe6\xcd\x3c\x0b\x07\x2a\xb8\xdd\x75\x57\x47\xe8\x27\x67\xf9\x81\x78\xa2\xa2\x54\xa4\x2d\xf4\x9d\xe0\x85\x03\x35\x6a\x5a\xd8\x5d\xe0\x04\xed\x3a\xc2\x68\xf9\x02\x7b\x40\x82\x86\x55\x2e\x29\xe0\x8c\x19\x8b\xec\x1a\xe1\x94\xa7\xfe\xa3\x5b\xb2\x3c\xde\xfa\x3d\x94\x5d\xb2\x0e\x6b\x10\x3a\x58\xb2\xf8\x5f\x66\xb3\x4c\x26\x85\x2b\xa8\x60\xcb\xe0\x58\x0f\xaa\x3e\x3f\xe0\x01\x34\x89\x16\x68\x4a\x93\x04\xe4\x80\x23\x34\x80\xaa\x85\x90\x88\xa0\xaf\x42\x17\xb5\x46\x67\x8c\xaf\x8a\xdd\x6e\x21\xa6\x28\x20\xa6\xdb\x76\x62\x92\x40\x4d\x45\x1e\xda\x6e\x28\x6a\x07\x39\xc9\x9a\xb7\xe0\x3a\xa2\x63\xf7\x4c\xe4\x35\x94\xf7\xd7\x08\x3a\xab\x0d\x37\xf8\xf0\x5f\xcd\x43\xff\x90\x63\x81\x99\x82\x50\x2a\x2b\xba\x0b\x12\x84\xf4\x92\x4f\x10\xac\xc8\x8c\x21\x18\x7e\x0a\x37\xd7\xb9\xfc\x67\x14\x12\x4f\xe2\x03\x44\x8f\xc8\xd1\x81\xad\xe5\x2e\xf3\x49\xf1\xe6\x5c\x4b\x0e\x23\x56\x0b\x11\x39\x42\x83\x44\x72\xfb\x05\x61\x51\x02\x55\x42\x83\xa8\x2f\x4f\xf9\xd6\xad\x34\x59\x80\x82\x02\x5b\x59\x34\xcf\xed\x83\xe0\x43\x28\x2e\x01\x3e\xf1\x04\x4e\x7a\xf1\x7b\x53\x69\xe5\x52\x9c\xc4\x33\xc2\x11\xd7\xae\xa1\x67\xdb\x24\x53\x22\x66\xd9\x06\xc1\x1b\xb0\x31\x45\xe8\x4e\x90\x41\x8c\xbe\xc4\x0a\x25\x04\x4b\x85\xbe\xf9\x6a\xad\xd8\x10\x37\xc1\x82\xbb\xda\xe3\x5b\x04\x60\xbb\x08\xce\xb6\xfa\xf0\x50\xc2\x0b\x61\xc4\xc8\x53\x18\xb0\xc3\x21\xc6\xca\x15\x02\x21\x41\xce\x88\x29\x9d\x69\x32\xcb\x20\x08\xd6\xa8\x4c\x2d\x7c\xc4\xc1\xf5\x59\xf7\xa9\x1d\x56\x03\x65\x59\xe5\x89\x1a\xf5\x0c\x20\x25\x8a\x58\xca\x39\x56\x23\x66\x39\xab\x0b\x1b\x09\x8a\xe4\x0d\x92\xa4\x1c\xbf\x88\x21\x44\x97\xe9\x09\x43\xd9\xd8\x23\xbf\x40\x97\xa0\x7e\xf9\x20\xb2\x72\x4d\x7e\x7f\x58\xb4\xa6\x36\x62\x3e\x5f\x3f\x6c\xbb\x51\xda\x69\xb2\x2f\xbf\xa0\x10\xdc\xd0\xfd\x85\xa9\xdf\xdb\x41\x18\x26\x4d\x43\x5e\x71\xb0\xea\x36\xfd\x25\xb2\xf1\xae\x3b\xe8\x2e\x2a\x37\xdb\xc7\xe1\x9a\x7d\xe2\x0d\xe6\xf6\x96\xcd\x0d\x64\x8b\x6d\x14\x70\x1f\xcd\xf8\x52\x1e\xdf\xd2\xd0\xcf\x63\xc8\xa5\x58\xcd\x05\x8b\xdc\x04\xc7\x3a\xc0\xd0\x4d\xe3\x20\x54\x3a\x88\xcc\x84\x50\x7a\xc7\xf8\xec\x9b\x2d\x9e\xd7\xec\x6d\x4f\xff\xa0\x98\xbf\x9b\x8a\x0f\x82\xab\x4f\xbc\x5d\xd8\x1b\xc4\xff\xc0\x11\x04\x50\x42\x4f\x2e\x74\xb3\x0e\x28\xe0\x60\x18\x31\x18\xf3\x1b\xc5\x43\x5b\x8a\xfb\x08\x0d\xe1\xa2\x71\x95\xb9\xf1\xd4\x39\x24\x82\x97\x47\x4c\x6b\x26\x2e\xff\x38\x68\xbf\x4c\xe2\x4d\x27\xc0\x80\x99\x6c\xe5\xcb\x49\x57\x63\x6c\xb7\x69\x13\x0e\x4b\x05\xda\x00\x58\x5e\x34\x9c\x9d\xa0\x98\x47\x0f\x44\x1c\x0b\x12\x53\x79\x02\xbe\x75\xd5\xea\xd4\x4b\xb5\xb6\xbd\xb5\xa4\xd1\x16\x28\xb0\x22\xd7\xe0\xd4\xf4\x6f\x83\xe8\x5d\x21\xb9\x03\x44\xa7\xa0\x4e\xb8\x50\x57\x93\x64\xe3\xd2\xb5\x09\x53\x62\x91\x71\xca\x94\x37\x65\x55\x16\xc2\x69\x1a\x5a\x68\x6b\x0b\xd2\x16\xbb\x88\xc1\xd9\x70\xda\x77\x73\x22\x89\x0b\x38\x30\x93\x52\x1c\x19\x2f\x8b\x61\x17\x19\x56\x73\x09\x19\x41\xe5\x35\xb0\x4a\x17\x7c\xaa\x57\x08\x67\x10\xaf\x60\xac\x14\xc5\x47\x3e\x6f\x45\x2a\x9a\x24\x23\xc6\x08\x89\x25\x82\xe4\x9d\x2f\x1a\x33\xcf\xf4\xa7\x07\x08\xc7\x31\xfa\xdf\x5f\xbe\xbf\xf8\xf9\x6e\x38\x3e\xbf\x04\xa3\xf5\xf9\xc5\xf0\xab\x03\xff\xe3\xd5\xfd\x9d\xff\xd5\x58\x58\x1e\x89\x40\x29\x7e\x00\x15\x8f\x49\x23\xff\x41\x76\x47\x38\x52\x97\x93\xa7\x9f\x48\xe2\x22\x5d\xad\x98\xe2\x21\x80\xec\x1e\xb6\x56\xaa\x33\x36\xbf\x35\x94\xdf\x1b\xff\xc9\x72\x1a\x74\xc4\xe3\xbb\x70\x62\x60\x4a\x18\x44\x63\x5b\x6b\x5f\xa1\xfb\x16\x04\x47\xd8\x8c\xb2\xb6\x78\x3c\xc2\x1e\x9f\x53\x88\xff\x81\x2c\x7e\xd4\xea\xf5\x35\xa6\xa2\x33\xed\x0d\xd9\x23\x15\x9c\xc1\xd4\xbc\x59\xcb\x9f\x18\xad\xa7\x63\x59\x3d\x54\xd2\xc8\xc2\x10\xa3\x91\xb5\xc6\x7c\x36\x01\x99\xbc\xfa\x74\x2d\x3c\x02\xf9\xa4\x84\xcb\xfe\xf4\x28\x1c\x0e\x8a\xc0\x5f\x34\x05\x0d\x8e\xd8\xdd\xd5\xd9\xd5\x09\x22\x09\x9e\x70\x01\xd9\x60\x26\x24\xc8\x35\x61\x17\x2c\xe2\x69\xd0\x50\x29\xf3\xf7\x00\x65\x45\xe6\x6f\x68\x44\x3b\x32\x6d\xac\x2a\xe0\xcc\x45\x3d\x6f\x76\xb7\x2a\xa0\x9d\xec\x35\x17\x5d\xae\x7f\xfd\x1a\x2c\x1d\xcf\xb4\x22\x57\xe1\xbc\xf6\x6e\x9e\x12\x6c\x6a\xa7\x1a\xb7\x90\xb5\xe5\xdb\x00\xd6\x24\x29\xd5\x03\xd2\x07\x47\x1e\x59\x17\x7c\xf1\x26\x67\xe8\x87\xbf\x4a\x34\xc9\xd5\x88\x95\xdb\xe0\x0c\x0d\x7e\xba\x45\xdf\x61\x15\xcd\xbf\x1a\xb1\x2b\xad\x66\xfe\xf0\xd7\x16\x88\x82\xb5\xd1\x75\xf4\x9a\x9c\x61\x85\x2f\x38\x8e\x29\x9b\x35\x41\xeb\x14\xf8\xe7\xc3\xbb\xc1\x09\xba\xb2\x3a\xbc\xcf\x2a\x2e\x32\xad\x82\x86\x80\x21\xc3\x44\x1c\x17\x01\x56\xce\xca\xf0\x23\x46\x33\x83\x0b\x6b\xc4\xee\x0c\xa6\x90\xe6\xaa\x54\xa1\x8c\x5b\x0c\x7e\xad\x95\x19\xb4\x25\x63\xca\xb6\x96\x44\xbd\x3a\x40\xc6\x7e\x33\xac\x3c\x06\xf2\x4c\x9d\xd9\x8f\x18\x28\xe8\x3e\xd3\x33\xe1\x11\x4e\x20\x26\xef\x30\xb0\xe9\x69\xb5\x9d\xe7\x90\x76\x67\x8a\x5d\x2e\xca\xa1\xb3\x3e\x13\xd4\x0b\x65\xe1\x46\x81\x01\x00\xf6\xd1\x7a\x63\x53\xae\x39\x8e\xc1\x12\x01\xe3\x5b\x62\x56\x47\x7f\xe8\xb1\x45\xcc\xb2\xe8\xa7\x8e\x1f\x41\x4d\x69\xe3\x56\xc4\x11\x98\xef\xd9\x02\xc2\xb7\x01\x34\x9b\x43\xe8\x47\xc1\x9d\x2d\x51\xd6\x76\xd1\xdf\x89\xc1\x67\x23\x66\x22\x05\x4b\xfb\x12\x66\xc5\x07\xbd\x73\x06\x81\x8c\xc5\x75\xe9\x05\x8c\xcc\x06\x36\x5a\x59\x3f\x13\xe4\x30\x26\x8a\x88\x14\xec\x3d\xe1\x9a\xea\x1b\xf6\x08\xdd\x84\xea\x75\xcc\xa3\x3c\x75\xc8\x80\x90\x9e\x58\x94\x13\x2d\x49\x3c\xe6\x62\x5f\x45\xf1\x58\x44\x73\xaa\x08\x64\xe5\x75\xd6\x8f\x0d\xc1\x0c\xc2\x4f\xeb\x92\x7a\xbb\xe0\x0b\xbc\x63\xbb\xa8\x35\xd3\xd0\x38\x2b\xb7\x54\x6a\x6d\x35\xb0\xd9\x8a\x42\x17\x97\x05\x7a\x19\x17\x20\x6c\x91\x4f\x19\x07\x23\xb7\xc9\xa9\xe2\xf1\x17\x12\x9d\x5f\x6b\x09\x48\x6b\xbc\xfe\x0c\xe6\x52\x99\xe0\x32\x48\xd7\x31\x5f\x9b\x74\x81\x03\xf4\xb5\x29\xf6\x1b\xa1\x4f\xee\x8f\xbf\xfc\xc7\x7f\xfc\xf9\x2f\xeb\xa4\x93\x38\x85\x1c\xda\x2d\xd6\xc8\x97\x43\x28\x8b\x44\xe1\x0e\xd4\x39\xd5\x16\xbb\x60\x0f\x60\xdb\xf2\x6f\x82\x52\x14\xc4\x0e\xe1\x99\x3d\xe1\x32\x3c\x99\xa8\x74\x34\x8b\x48\x02\x49\xd4\x41\x99\x43\x78\x61\xd7\x4a\xf4\xff\x6b\x09\x08\xc8\x58\x1f\x95\xcd\x62\x9c\x68\xe2\xc5\x6b\xdd\x08\xfa\xd2\xda\xff\x14\x38\x10\xbf\x72\x17\x1c\x4f\x62\x22\x6c\xa1\x70\x67\xb2\xf3\x86\x44\x60\x0e\xe4\x53\x96\xf0\xd8\xc1\x7b\x49\x92\x61\x10\x20\x34\x33\x38\x1a\xb1\xa1\xab\x1b\x6d\xe0\x29\xcc\x47\xc6\xf3\x32\xc5\x91\x41\xb5\x92\xe8\xcb\x4f\x27\xfa\xb7\x03\xb4\x38\x81\x20\xd2\x03\xf4\xdb\x89\x05\x21\xc0\x42\x8d\xf5\x4f\x5f\x39\x59\xdb\x36\x01\x83\xa6\x12\x7d\x71\xfc\x88\x85\xa9\x79\x78\x6c\x46\xf4\x85\xe5\xac\xbe\xae\x4b\x28\x9b\x27\x9c\x3f\xd8\x00\xdb\xda\x87\xc7\x0e\xd0\x04\xc8\xdb\xfb\x4d\xcc\xd6\xfb\x7c\x47\x85\x0e\x6d\xd5\xeb\xa3\x6c\x82\x8e\xfe\x21\x39\x43\x47\x0b\x9c\x26\xf6\x57\xf7\xd4\xc6\xff\x62\x89\x5c\xdd\xf3\xa2\xee\xb2\xb1\x94\x7e\x97\xf0\x09\xcc\xea\xa3\x9b\xa9\x89\xa0\x85\x81\x16\xb7\x4f\x71\x61\xd9\x89\x58\x49\xca\xc0\x32\xa4\x5c\x99\x57\x80\xc7\x35\xcd\xea\x93\x1f\xd2\x7f\x1b\xbf\x30\x2c\x8a\x4b\xe2\x33\xc6\x61\x1f\xbd\xa6\x1b\xfd\x84\xbe\xb4\x2c\xe8\x2b\x7d\xc7\xd8\x70\x65\xb3\x0c\x4d\x1d\x2c\x7c\x07\x3f\x07\x1d\x50\x86\x4c\x5a\xe6\x92\x2f\x7f\x3b\x3e\x3a\x3a\xf2\x5f\x5f\xea\xa9\xfc\xbf\x88\x2a\x49\x92\xa9\x69\xc9\xdd\x60\x8b\x11\xfb\xe8\x80\x83\x9d\xf1\xba\x80\x4a\x82\x7a\xe5\x11\x4f\xd0\x61\x61\xd0\x8d\x79\x24\xd1\x1f\xb4\x58\x1b\x2c\x25\xfc\xa8\xf5\xb8\x16\x18\x33\x83\x54\xf8\x42\x87\xca\x1a\xc4\xab\xc7\x2a\x44\x47\xf1\x8a\x2d\x96\x21\x0a\x35\xd0\x82\xa6\x9c\x63\x8b\xa0\x22\x84\x7e\x99\x7c\x52\xf0\xa8\x05\xa0\xa6\x31\x94\xbd\xf9\xa6\xac\xb1\xdb\x02\xa7\xc6\x90\x75\xcb\x02\x58\x18\x11\xcb\x19\xcc\x3c\x0f\x42\xf7\x89\xbe\x5c\x58\x08\x65\x2b\xf3\x34\xc5\x62\x71\x5c\x9c\xb6\x3a\x71\x16\xb8\xf4\xc0\x63\x12\xb7\x00\xe0\xc2\x4d\xec\xd1\xb2\x51\x0c\x56\xbc\x74\x37\x9a\x3f\xbb\x11\xd4\xe2\x81\x80\x3c\x53\x89\x8a\xb0\x88\xc7\x96\xae\x8b\xec\xd3\xb2\xc4\xe2\xdf\xa9\xcb\x2a\x2e\x22\x46\x16\xc6\x38\xa6\x4c\x66\xb4\x7d\xc3\x7d\xdc\xc2\xbe\xf9\x18\xaa\xba\x91\xd9\x1a\xee\xd1\xf3\xab\x5b\xf7\x4d\xf7\x4b\x17\xd6\xa1\x2c\xb2\x63\xa7\x25\x3a\x8b\x84\xc0\x4f\xc5\xf5\x0b\xb1\x1d\xc6\x3a\x93\xfb\xdc\x5c\xf3\xef\x53\x7e\x4d\x13\x7d\x6b\x01\x8d\x1f\x8d\x58\xe9\xe7\x03\x44\x12\x9a\x52\xe6\x63\xeb\x0c\x73\xe7\x53\x23\x3d\x3f\x50\xa5\xb7\x4c\xc6\x0f\x9a\x83\x39\xb8\x8c\x40\xa5\x1a\xb0\x85\x23\x1d\xef\x98\xb2\x16\x88\x5c\xea\x71\x15\x3a\xba\x16\x66\x75\x13\x87\x56\x20\xa5\x01\xe1\xc1\xf9\x1d\x31\xdd\x9a\x3b\x4b\x45\xb8\x70\xd0\x5e\xd0\xdc\xa1\x03\x74\x0d\x38\x00\xf4\x51\x8a\xf9\xf5\xf2\x6f\x83\x80\x32\x64\x79\xba\x6d\xb2\x89\x0d\x1f\x7e\x2d\x33\xdd\xb5\x20\xee\xa6\xb2\x89\x4b\x84\xe5\xa9\x3b\x50\x6b\x50\xdc\xd0\x8a\x3f\x31\x89\x12\x6c\x00\x00\x74\x43\x10\xf9\x78\x60\x1c\xa4\x59\xd0\x97\xb9\x5e\x4c\x37\x06\x23\x3e\x21\xec\x4b\xf3\xef\xaf\x90\xbd\x1b\xbe\x3e\xb0\xf7\xb9\x90\x0e\xc1\xd2\xee\x39\xd4\x18\x22\xb1\xb1\xa1\x03\xda\xdf\x0c\x8b\xd8\x58\xcb\x43\xad\xc2\x64\xf0\x6a\xf9\x6b\xc1\x73\xf4\x44\xe5\x7c\xc4\xee\xb8\x33\x38\x22\xc6\x3d\x5e\xe2\x01\x28\xa3\xb5\xfe\xb0\x04\x26\x00\xa3\x6e\xa2\x00\xcd\x84\xb7\xca\x35\x82\x28\xd8\x31\xe3\x31\xd9\x0e\x17\xe2\xae\xf0\x55\x38\xff\xb5\x20\x26\x1f\x0c\x6e\x8a\xb6\x74\x5a\x22\xe5\x9a\xb6\xf9\xea\xc6\xc3\x3d\x64\xdb\x81\x92\x76\x4f\x6c\x53\xc8\x15\x7f\xab\x41\x2b\x4e\xe3\x0c\xb2\x81\x4b\x6b\xef\x51\x08\xb7\xdd\x84\xa8\x9c\xaa\xb2\x72\x05\xfc\xd5\x67\xe6\x1e\xc1\xb2\xfb\x00\x63\x8c\x66\x82\xe7\x99\x4f\x99\x77\xe9\x7e\x66\x1b\xac\x4c\x73\xce\xa6\xfc\xc4\xea\x54\x17\x94\x3d\x18\x8a\x7f\xae\x3d\x32\x40\x93\x24\x2e\xa1\xe3\xb8\x2a\x63\x30\x87\x43\x44\x59\x94\xe4\x70\xf1\x49\x85\xa3\x07\x03\x96\xd9\x66\xf4\xd5\xdf\x8c\x57\x27\x53\xb6\x48\x4c\x79\x92\xd8\x6e\x8b\x0b\xb4\x28\xc3\xf8\x48\x31\xc2\xe8\xfe\xe6\xbc\xb9\xef\x07\x5a\x77\xe6\x34\xdf\x9e\x65\x02\x81\xff\xf9\x81\xae\x15\x77\x59\x41\x1b\x22\x25\x52\xf7\xc6\xa5\x36\x2c\x3b\x4d\xa4\x1f\xb0\x22\xdb\x66\x42\x19\x68\x95\x35\x22\xf5\x6a\x98\x35\x4b\xad\xc7\x5b\x02\xbe\x14\x60\x2d\x10\x1a\xd4\x8e\x3c\x13\x06\x6b\xc1\xc3\x35\xb0\x1b\xe0\xfd\x6e\xf3\xa9\xbc\xbb\x62\x3a\xcb\x87\x99\x10\xb2\x06\xda\xc0\xad\x7e\xbd\xe3\x20\x4b\xaf\x2e\x1b\xe3\x13\x36\xe8\xc1\x4e\x62\x2d\x2c\x81\x71\x5e\x2a\x10\xdc\x89\xa0\x1d\x39\x1a\xf1\x5a\xfa\x1c\x11\x3f\x12\x17\x86\xe3\x65\x31\xd7\xef\x0c\x7c\x5b\xbc\x04\x4e\xec\x2d\xb4\x0d\x84\x1f\x88\xad\x5b\x86\x4d\x68\xf1\x6b\x9c\x36\xb0\xe8\xe6\x9d\x28\x3a\x3e\xb3\x1f\x7f\xd4\xdf\x36\xb3\xa2\x8f\x90\xc5\xe7\x81\x53\x52\xcc\xf4\xc9\x76\xbd\xb6\x18\x21\x8d\x44\xb8\xd1\x90\xee\xb3\x8d\x06\x64\x7a\xec\x58\xb7\xc7\x76\xe5\x5a\x79\x32\x76\x78\x9c\x18\x3b\x93\x9a\x83\x09\xa2\xc0\xbb\xd7\x1c\xad\x6c\x8a\x30\xd8\xf8\x09\x16\x33\xa3\x20\x49\xa2\xe4\x57\x0d\x3b\x5c\xe4\x3c\x6c\xb1\xc3\x1b\xd4\x14\x0b\xfd\x9e\x20\x7e\x2f\x3b\x69\x7e\x94\x65\xcc\x36\x7f\x2b\xfb\xea\x7c\x56\x68\xa2\x32\x44\xd6\x8a\xb8\x10\x80\x84\x1a\xeb\xb3\xd2\x8e\x99\xb2\x65\x6d\xc9\x4b\x9c\x7a\x44\x00\x57\xe1\xce\xe6\x77\x99\xc1\x4d\x08\xc0\x0d\xb6\x8f\x61\xeb\x22\x92\xe1\x10\x6c\x51\xa7\xb6\x11\x8c\xd8\xc0\xbd\xe2\xb3\x8a\x41\xb7\x13\x46\x00\x87\xf8\x50\x13\x0d\x0d\xfa\x15\x2e\x56\xdd\x4e\xae\x65\x12\xeb\x26\x6f\x56\xeb\x60\x6a\xfd\xce\xdf\x46\x16\xf1\xde\x43\xa3\x2d\xad\x36\xf0\xb8\x7e\xa5\xe2\x66\x60\x96\xa8\x5a\x49\xb6\xa9\xe3\xd5\xba\x94\x43\x8c\xb0\x0d\x85\xc5\x6b\x4d\x0c\x69\xb2\x28\xc8\x54\xaf\xb8\xd1\xc9\x2b\x9d\xd5\x4f\xab\xda\x8a\x1b\x53\x9c\x8e\x05\x6f\x2f\xc7\xd0\x61\x99\x5c\x13\x25\xfb\xce\xdc\xc0\x46\x2f\xd0\xaf\x39\x4e\xcc\xe5\xc6\x2c\x39\xba\x61\x83\xa8\xfc\xed\x5f\xd0\x00\x6e\x1f\xf4\x11\xf8\x22\x38\xf8\xa1\x35\xc5\x11\x4d\x33\x22\x24\x67\xb8\xb5\x2e\xc9\xc3\x5f\xe5\xd8\x62\xbe\x8f\x71\x14\xf1\xbc\x8e\xef\xbe\xc6\x4c\x1a\x5a\x0b\x27\x85\xd1\x43\x3e\x21\x82\x11\x53\x7b\x05\xde\x43\xee\xbd\x4e\xc3\xe5\x38\x57\xf3\x6f\xc7\x51\x42\x3b\x03\xd1\x43\x76\xd1\x40\x7f\x76\x6a\xbe\x5a\x36\x81\x52\xfb\xa5\xa1\x33\x64\x9e\x21\xf3\xec\x08\x7d\x87\xa3\x07\xc2\x62\x94\x25\xf9\x8c\x5a\x30\x01\xb8\xa1\x80\x5d\x06\xe6\xd9\xf2\xc4\x8c\x6c\x61\xda\xd7\xd7\xd0\x88\xa5\xf8\xc1\x60\x03\x5a\x21\x32\xc2\x49\xb2\x96\x99\xc1\xd3\x43\x0d\x55\xc5\x65\xbe\xfb\x3a\x37\xe6\x7c\x28\x73\x3e\xc0\xa0\x0a\x08\x92\x39\x43\x18\x80\x59\xbe\x90\x28\xcf\x9c\x04\x04\x96\xbe\x04\xfc\xae\x66\x92\x50\xc0\x98\x6a\x3d\x68\x4e\x46\x0c\x62\x59\x5d\x8b\x0b\xcf\x55\x42\x57\xbf\x0f\x39\x69\x3a\x7c\x53\x03\x4b\xb0\x9d\x17\xb1\x06\x40\xb9\x82\x12\x3a\xc6\xe9\xaa\x39\x61\x60\x80\xe8\xde\x32\x68\x34\xdd\x37\xad\x14\x93\x6b\x05\x4d\x6f\x31\xf5\x4b\x98\x33\x6a\x4b\x1f\x58\x23\x79\x10\x2e\xe7\x3c\x49\xc5\xf7\x54\x22\x89\x15\x95\x53\xda\x68\x98\x09\xc1\x20\xb6\x59\x75\xbc\x1e\x02\x45\x03\xfa\x44\x65\x2d\x7c\xdc\xff\x11\x7a\x0f\x76\xa6\x40\xf6\xe6\x1e\xcb\xa1\x8d\x25\xa8\x39\x69\x05\x35\xdc\x45\xc0\x8c\x9b\x41\xf0\xfe\x52\xf3\xa1\xcf\xf1\x38\x42\x83\xc2\xbe\x6f\xd0\x2c\x8c\xe5\x7e\xc5\x8c\x48\x22\xc9\x26\xc4\xd7\xc9\x14\x06\x3e\x70\x20\x20\x04\xb2\x8a\xd4\xbf\x17\xd0\xb7\x7e\x98\x4f\x90\x46\x89\x1f\x08\x5b\x66\xef\xe8\x3e\x42\x63\x90\x5a\xaa\x74\x7b\x4b\x17\x37\xc6\xae\x4d\x06\xd8\xfd\xd8\x15\x00\x22\x74\x7a\xac\x97\x5c\x0b\xfa\xd1\x83\x4d\xde\x30\xf6\x4e\x0b\x41\xf2\x34\xe7\x32\x3c\x67\x6e\xff\x8c\xae\x28\x72\xe2\x92\x34\x20\xf9\xc5\x2f\xb0\x89\x7a\x61\x3c\x44\x28\x81\x51\xfb\x43\x6a\x6c\xb9\x7e\xbf\x91\x63\xa1\xb0\x0c\xe0\x27\x72\x4d\xd5\x4f\xf3\x0f\x7f\x95\x57\x70\x62\x77\x91\x0b\xdf\x5c\xb8\x6b\xfb\x38\xf4\x0d\x2d\xf0\x3e\xc2\xaa\xa8\xfa\x85\x63\x8f\xde\x90\xf1\x18\x15\xe4\xb5\x7e\x89\xaf\xd7\x9f\x56\xa5\x34\x58\xa7\xb9\xad\xa2\xec\x8f\x81\x9b\x1e\x4d\x72\x6a\xaa\x6c\x96\x44\x2e\x9b\x2f\x09\xda\xaf\xbd\xfe\xa9\xf4\xf7\x49\x33\x8d\x5d\xf3\x78\x1b\xc2\x5a\x1f\xb0\xae\x4e\xd7\x1d\xa2\x78\x65\x53\x55\xd0\x25\x2b\x91\xf1\xf6\xf8\xcb\x78\xdc\xbd\x8e\x26\x38\xdc\x27\xf9\xf4\x16\x60\xd1\xdb\x30\x21\x1c\x4e\xd8\x9c\xf8\x24\x2f\xbd\xcf\xba\x1b\x9f\x72\xd0\xb6\x29\xd6\x7f\x5b\x5c\xff\x18\xfd\xd7\xed\xd5\xe5\x61\x8a\x85\x9c\x63\xc8\xb9\x75\x6d\x1d\xb8\x52\x23\x46\x01\x75\x7e\x25\xca\x46\xec\x10\xcd\xf8\x81\xf1\x62\x9e\xa0\xb9\x52\x99\x3c\x39\x3e\x9e\x51\x35\xcf\x27\x47\x11\x4f\x8f\x8b\xa5\x39\xc6\x19\x3d\x9e\x24\x7c\x72\x2c\x08\xc4\xb1\x1e\x7e\x73\xf4\xed\x37\xb0\x33\xc7\x8f\xdf\x1c\x83\xef\xea\x68\xc6\xff\x70\xf1\xed\xff\xf9\xf3\x5f\x74\xc3\xd9\x42\xcd\x39\x3b\xb1\x2e\xd2\xa5\x6d\x1f\x1a\xb9\xf7\xd8\x7c\x52\xe9\xe5\xff\x1c\x7d\x1d\x0e\xc3\xbe\x9a\xf2\x98\x24\xf2\xf8\xf1\x9b\xb1\xdb\x98\xa3\x6c\xd1\x47\x7e\xbe\x5a\xe4\xe7\x03\x55\x7d\xe4\xe7\xab\x46\x7e\x76\x97\x70\x3c\x8f\xa9\x54\x4d\xd6\xbf\x7b\x1e\xe9\x8c\xdb\xab\xf8\x50\xc3\xe5\x10\xc6\xe5\x6f\x71\x45\x3c\x90\x5a\xe4\xc7\x1a\x26\x07\xaf\x3a\xb4\x18\xb1\xd6\x85\xb3\x6f\x15\xe6\xd7\x4a\x43\x86\x38\x0b\x1a\x01\x54\xb2\x31\xba\x65\x98\x36\xc5\x73\xda\x78\xa2\x6d\xd6\xef\x39\x41\xbf\x77\x8d\xf6\x6d\xa7\xbb\x21\xd2\x77\x62\xbe\x76\xd1\x4f\xfc\xc9\x21\x7c\xef\x02\x17\xbb\x63\x05\x32\x0f\xf7\x6b\x88\x07\xc6\xe2\xc6\xd5\x32\x8c\x39\x96\x9b\x85\xd1\x0d\x0c\xa8\x9e\xf7\x84\xf9\xba\xa9\xb6\x43\x77\x71\x38\x9c\x02\x28\x6f\x69\xe1\x90\x32\x53\x97\x5f\x1e\xa1\xf7\x95\x12\x4d\x45\x68\xe0\xcd\xfb\x53\xf4\xcd\x5f\xff\xcf\x9f\x47\xec\xcb\x86\x7b\x1b\xf8\x3d\x17\x33\x1b\xa9\x08\xb7\x75\x8a\xa5\x22\xe2\x58\x4c\xa3\x63\xc3\xe5\x8e\xf5\xf7\x87\xb6\xd3\x43\x3e\x3d\xf4\xa0\xbf\x87\x16\xff\xf4\x28\x8d\xd7\x4b\xe1\x2f\x91\x9e\xb9\x6b\xec\x45\x23\xe1\x52\x32\x60\x3f\x7c\xea\xe1\xdd\x4d\x26\x89\xa9\x04\xc1\xa7\x0d\x7f\x40\x35\xe3\xaf\x3c\xc4\x18\x96\xae\x8f\x02\xf3\xa7\xfd\x68\xee\x06\xff\xdb\x91\xc8\x73\x1a\x2a\x1c\x2f\x09\xd5\x91\x75\x16\xbe\xf9\xb0\x15\xd7\xbd\x41\x3c\xb0\xe5\x70\x0d\x7e\x32\x67\x84\x4f\x21\x4e\x0e\x24\x61\x17\x07\x00\xd6\x50\x7d\xd3\x16\xe8\x06\x82\x64\xe6\x82\x09\xcb\xe7\x36\x2c\xf7\x96\x18\xe2\xab\xd6\xf9\x39\x30\xc4\xb7\x5d\x77\xcb\x50\x5e\x69\xc1\xb7\x0d\xd6\x33\x47\x69\x9d\xb8\x05\xfd\xfe\x4a\x1f\xe5\xff\xc7\xde\x97\x35\xb7\x91\x23\xeb\xbe\xcf\xaf\x40\xc4\x7d\xb0\x7d\x83\x92\x67\x89\x13\x31\xe1\x88\xf3\xc0\x96\xe4\x69\x4e\xcb\x92\x46\x4b\xbb\xcf\x3d\x3c\x41\x83\x55\x20\x89\x51\x11\xa0\x6b\x91\xcc\x59\xfe\xfb\x0d\x64\x26\x96\x5a\x59\x45\x52\xb6\x67\x4e\x3f\xcc\x74\xb7\x48\xa2\x50\x58\x12\x89\xcc\x2f\xbf\xcf\xd9\x01\x48\x4a\x86\x8a\xb5\xc8\xe6\x05\x4e\x9a\x38\xc9\xf5\x09\xd0\xc2\x00\xd9\x08\xb2\xfa\xb7\x01\x17\x20\xb7\x3b\xe4\x98\x34\xdf\xef\xd1\x4f\x74\xcc\xbf\x04\x1d\x25\x9f\x84\xf4\xe1\x09\xf4\x24\x95\x12\x29\x65\xad\x76\x9e\xa8\x03\x33\xbf\xe1\x54\x76\x63\x9e\xfc\x4d\x34\x64\x5c\x77\x88\x77\x1e\x18\x81\x53\x06\xde\xe7\x4a\xaf\xb5\x71\x67\x74\x91\x05\x1f\xe2\xed\x05\x0e\xe1\x56\xdf\x6b\xcd\x37\x48\x03\xf7\xed\xde\xc6\x6c\x2d\xf3\x11\x06\xf5\xc2\x2f\x0d\x12\xb1\x98\x97\x69\xfb\x77\xf4\xdf\xf1\xad\x77\xaf\x1b\xc0\x15\xac\x21\x89\x02\x1a\x77\xc4\xa2\x2c\xff\x66\xee\x35\x66\x49\xb9\x9b\x82\x3b\xb9\x11\x06\x83\x6c\x87\x21\xa1\xaa\xf5\xe6\x5b\xeb\x91\x8b\xf5\xc0\x39\x70\x30\xde\x3e\x13\xc0\x15\x02\x5b\x2d\xa2\xf5\xa4\x11\xd2\xda\xb6\x2f\xad\xa2\x5c\x3c\xb3\x8c\x9c\xc3\xba\x7a\xe7\x1a\x20\xf2\xcd\x7a\xbf\x3d\xa1\x11\xe0\x9f\x71\x8c\xd1\x20\x58\xdf\xa2\x05\xd6\xa2\x86\x6f\x46\x90\x30\x19\x32\x76\xf0\x10\x5c\x9c\xb5\x11\x0c\xf6\x42\xdb\x00\x0e\x0b\xb1\x75\x45\xac\x9a\x00\xf3\xc8\x01\xe7\xeb\x63\x4c\x2f\x6b\x97\x47\xf7\xc3\x27\x2f\x9f\xb9\xdd\x88\x11\x9b\x17\xf0\xf9\xd5\xf5\x7d\x88\x87\x90\xf8\xb6\x27\xd1\x4a\x44\x8f\x10\x30\xc1\x23\x0f\x37\x83\x95\x4e\x9d\x6f\xa7\xca\x8b\x6b\xe5\xda\x26\xf7\xb7\x8e\x6f\xdc\x71\xee\xeb\x94\xc5\x32\xdb\x24\x7c\x0b\x69\x54\x85\x48\x78\x9f\x82\x75\x25\x24\xc6\x14\xec\x8a\x17\xf7\x9f\x69\x33\x2b\x63\xff\xbb\xa1\x63\xc9\xd3\xb9\xcc\x53\x9e\x6e\x99\x1f\xcc\xba\x3d\x60\x99\x58\x73\x95\xcb\x68\xaa\xd6\x82\xab\x10\xf7\x46\x69\x64\x33\xc8\xb1\x16\xc4\xc8\xbb\x58\x88\x28\xf7\x94\x7e\xe0\xbc\xbb\x91\xda\xb5\x07\x87\xbd\xbb\xdb\x79\x9d\xaf\xfe\xa3\x54\x58\x40\x2e\xd7\x80\xaa\xa4\x35\x44\x47\xe3\x9e\xc9\x1b\x10\x63\xa3\x23\xd7\x5e\x06\xe1\xbf\xec\x9a\x72\x8a\xf6\xae\xc4\xae\xc9\xc7\x3f\x98\x90\xff\x30\xd9\xc2\x66\xc1\xc7\x00\x6b\x85\x1b\x2c\x84\x6b\x39\x6a\x1d\x55\xe1\xc8\x79\x45\x45\x7f\x10\xed\x79\x45\x71\xab\x57\x70\x4c\x9b\xdb\x63\xfa\x24\xe2\xa9\x2a\x13\x17\x91\xcf\xe8\x37\x1c\xf3\x52\x53\xc7\xb1\x36\x76\x8c\x7b\xc5\xf2\x2f\x80\xac\xc1\xd3\x34\xba\xb2\xb6\x0e\xe9\xab\x66\xad\xf4\x17\x50\x55\xea\x9d\xe4\xf1\x6a\x54\x24\x25\x43\xca\x73\x25\x3c\x85\x5b\x94\x8e\x96\x05\x39\xdb\x1c\xc4\x94\xe2\x92\xb5\x48\x67\x53\x1b\x53\x65\xeb\x95\x17\x45\x82\x3c\x9c\x6d\x62\x5c\xc4\xd2\x64\x6b\x2b\xbe\x5d\x8d\x8d\x8b\xab\xb1\x40\xbd\xcb\xc1\x1e\x02\xb8\x2f\xda\x3a\xbb\xea\x85\xca\x50\x49\xd3\x0a\xf7\x40\xe0\x79\x29\x72\x38\xcd\xe3\x22\xc1\xf2\x5b\x88\x98\x03\xe3\x13\x4f\x12\x26\xf3\x6c\xaa\x1c\x41\x15\xd2\x8d\x83\x85\xb5\x21\xf5\x98\xae\x5c\xf0\x08\x68\x96\x44\x87\xc1\x0f\x93\x91\xcc\x6b\x20\xe9\x6d\x28\x76\xb1\xd9\x08\x8e\xd5\x62\x38\x6d\x53\x15\xde\xb9\xaa\x93\x40\xa5\x55\x20\xae\x7a\x8c\x2a\xa7\x0e\xcc\x3b\x28\xd2\x0e\x9e\x92\x53\x36\xc6\xb7\x33\x17\x2e\xab\x63\x89\xbd\xa5\x0a\x75\xc2\x32\x9a\x5b\x4d\x9e\xd9\x18\xb9\xbf\xb7\x6e\x78\x9a\xcb\xa8\x48\x78\x9a\x00\xeb\xfb\xa2\x48\x98\x5c\x04\x92\x9c\x30\x07\x48\x4f\x64\xa6\x2b\xd2\x70\x56\xdb\x28\x79\xc6\xd7\x22\xa8\x8c\xa6\xf0\x4e\x12\x60\x28\x90\x73\x19\x93\xf3\xa6\xad\x37\xa7\xec\xbc\x2a\x8d\x0b\x7b\x22\xa0\x35\x94\x19\x9a\x3f\xd7\xdf\xa0\xa8\x0f\x25\x76\xe5\xc2\x5c\x29\x5f\x05\xbb\xae\x4d\x64\x9e\x67\x8f\x03\x01\x1a\x96\x1c\xbf\x1b\x97\xdb\x58\xd4\x7b\x0f\x42\xe4\x25\xd8\x86\xdb\x10\x2d\x1d\xb4\xa7\xc2\xc0\x4e\x86\x94\x90\x7b\x74\xf4\x63\xa0\xf4\x5d\xed\xec\xba\x43\x01\x14\xe6\x71\x60\x57\x03\x3d\x9d\xe1\x1d\x0d\x56\x4e\x08\xc7\xe9\x33\xb2\x4b\x9e\x0f\xc5\xe6\xb8\x72\x97\xe1\x1d\x6d\xc4\x41\xb5\x76\x73\x77\xa4\xe9\x63\x49\x80\x87\x99\x5e\x99\x5b\xbe\x40\x9c\x99\x5e\x04\x26\x98\xce\x1b\x52\xea\x01\xf2\x73\x67\x13\xe6\x82\x25\x52\x3d\x5a\xaa\x03\xb3\x40\x47\x8c\xfb\xd6\xc1\x46\xe0\x20\xe3\x9e\x6b\xf1\xbc\x9a\xa4\x02\x0e\x70\xc6\xfa\x15\x0c\x36\xdf\x90\x6d\x4f\x06\xa9\x41\xd8\x17\x6e\x7a\x8f\xfe\xd3\xd2\x89\x6c\x76\x77\x1e\x0b\x67\xc6\x63\x30\xc0\x58\x06\x72\xee\xad\xe3\x7b\xb3\x2a\x63\xf6\x06\x08\xeb\x3c\x5c\x9d\x5f\xbc\x9f\x5c\x95\xd5\x70\xfe\xf2\x70\xf1\x50\xfe\xcb\xed\xc3\xd5\xd5\xe4\xea\x4f\xe1\x9f\xee\x1e\xce\xce\x2e\x2e\xce\xcb\xdf\x7b\x3f\x9e\x5c\x56\xbe\x67\xfe\x54\xfe\xd2\xf8\x87\xeb\xdb\x8a\xfe\x8e\x15\xcf\x09\xfe\x74\x3f\xf9\x70\x71\x3e\xbb\x7e\x28\x49\xf8\x9c\xff\xd7\xd5\xf8\xc3\xe4\x6c\xd6\xd0\x9f\xdb\x8b\xb3\xeb\x9f\x2f\x6e\x77\x28\xf0\xf8\xf7\x6d\x1c\xd2\x63\x80\xad\xf6\xd6\x63\x1a\xb3\x45\x2a\x85\x8a\x93\x2d\x62\xc1\xed\x3d\xb0\x02\x3d\x0d\x4f\x2a\xb9\x16\xba\x38\x04\xd2\x7d\xbf\x12\x4c\x3f\x89\x14\x58\x19\xb0\x35\x2a\xe1\xe4\xd9\x63\x2b\x67\x5f\x9e\xd6\x63\xe8\x9d\x95\x2b\x79\xba\x75\xb5\x51\x5d\xdd\xf1\x8c\x3e\xf4\x10\xb6\x11\x69\x57\x5f\xc0\x8f\x48\x8b\x4d\x2e\xe7\xed\x20\xfd\x9e\x4c\x37\xc3\x6f\xaa\xc8\x3f\xd7\x4c\xd6\x71\xd5\x6c\x18\x4b\x58\xf5\x43\x60\xba\xd0\xc2\xbe\x32\x63\xee\xd7\x16\xda\xb8\x29\xe6\x89\x8c\x98\x8c\xab\xd1\x07\x2c\xa9\xc2\x00\x6b\x95\xa6\x72\x23\x52\x70\xec\x8c\xbf\xbc\x49\xc5\x09\x2f\xf2\x95\x55\x40\x77\x95\x75\x48\x1b\x29\xa2\x54\xe4\x81\x5a\x3f\xe9\x4b\x05\x4f\x82\xce\x50\x45\x71\x0c\xe4\x25\xa7\x01\x65\x78\x4b\x44\x1d\x7f\x89\xad\x0f\x08\x29\xe2\xf7\x3b\x87\x86\x7a\x2c\xb3\xaa\xb8\x30\xb8\xb0\xf8\xa1\x55\xa9\x32\xef\x6d\x2c\xb5\x53\x69\xc2\x49\xb6\xb5\x04\xcd\xaf\xb1\x6b\x8d\x85\x0b\xa5\x0c\xfd\xa7\xd6\xe9\xa3\xb3\x54\xc0\x21\x42\x89\x73\x7b\xdb\x07\xa0\x07\xd5\x1e\x40\xc9\x81\xb9\xd8\xcc\xc5\x8a\x27\x0b\x8c\xe1\x99\xa9\xf1\xfb\xaa\xbe\x44\xef\xf5\xa3\x50\xb7\x38\x61\xdf\xc4\x1c\x2a\xbc\x27\xf8\x1a\x73\x17\x3f\xf1\x01\x3f\xd3\x47\xbb\xaa\x6c\xed\x15\x8a\xf4\xa3\x57\x1d\x7c\x8c\x05\x10\x9e\x41\xd6\x96\x6d\x2d\x16\xf2\x8b\x69\x70\xaa\x44\x23\x87\x26\xa0\x6b\x2c\xdb\x8f\xb3\xcb\x80\x24\x42\xca\x94\x47\xa1\x40\xdf\x0a\xe5\x6f\x77\xae\xd9\x61\xd1\xe6\xfa\x5c\x74\x84\xbf\x21\x42\x26\x4b\xb2\x5f\x61\x4e\xc4\x8e\x13\x14\x59\x3e\x8a\x53\x76\x4e\x44\x10\xe6\x2f\x67\x97\x93\x8b\xab\xfb\xd9\xd9\xed\xc5\xf9\xc5\xd5\xfd\x64\x7c\x79\xd7\x77\xfb\x1d\xa3\x4e\xa7\xb2\xfb\xaa\xa5\x52\xce\x42\xbc\xa5\x9d\xe7\xcb\x45\xdd\x4b\xf9\x6d\x07\x53\xb2\xbb\xf7\x32\xde\xcc\x62\x99\x45\xe6\xf8\xdb\xce\x84\x8a\x81\x7c\x78\xaf\xa5\xda\xdc\x54\xf5\x2d\xdc\x37\x98\xfb\x86\xb5\x20\x78\xda\x3d\xd9\x15\xed\x3e\x07\x8c\x1a\x04\xed\x52\x61\x36\x7f\x3c\x55\xc1\x69\x73\xba\x5b\x71\xc2\x34\x77\xd8\xbb\x95\x9b\xa8\xbe\x13\xf6\x57\x66\x59\xc1\x8d\x7d\xb4\x5f\x03\x80\x5e\xcb\xa8\x10\x23\x5c\xc8\x80\x2c\x03\xf5\x4e\x66\x6e\xf2\x6b\xae\x62\x9e\xeb\x74\xdb\xf2\x8a\xfd\x8c\x67\xb8\x6d\xca\x26\x34\x3c\xb2\x95\x10\xb1\x9d\x05\xfc\x2a\x57\xd5\xa5\x84\x3c\xc9\xf7\xd7\x3f\x5d\x5c\xdd\xcd\x2e\xae\x7e\x9e\xdd\xdc\x5e\xbc\x9f\xfc\xe2\x70\x83\x1b\x9e\x35\xa9\xf5\x6d\x52\x61\xac\x8b\xa5\x9d\x68\xb4\x2f\x28\xa1\x67\xdb\x21\xd9\x24\xb9\x98\x2a\x6b\x59\x52\xdf\xfc\x2a\xd5\xc5\x72\xd5\xdc\x50\xb5\x97\x37\xe3\xfb\x1f\xf7\xea\x26\x90\x02\xa1\xce\x16\xee\xb6\x3a\x7e\x52\x2e\xc8\xee\x21\xe8\xb2\xd2\x3d\xa0\xb6\x82\xaf\x36\xc5\xe4\x5b\x2c\xda\x5e\xb7\x97\xba\xd1\xea\x74\xfe\x1b\xbe\xde\xb6\x80\xee\x03\xbb\x59\x3a\x46\x00\xcf\x8b\x72\x8d\xb5\xd6\xde\x35\xfc\xad\x74\x82\xfd\xfe\x24\x11\xcb\xa5\x88\x71\x79\x55\x1b\xa6\x88\x15\x99\xc0\xc8\x9f\xeb\x4d\xa3\x48\x82\x6a\x07\x1c\xcc\x0e\x1d\xd5\xdf\x80\xdf\xb8\x9f\x34\xdb\x8a\x33\x2b\xda\x1c\x69\x95\xe5\x5c\xb5\xa4\x5d\x9f\xea\x78\xc6\x5e\xa6\xe8\x3a\x65\xae\x54\x88\x02\x24\x36\xc0\xee\xf7\xc1\x3e\x09\x27\x12\x8e\x53\x14\xf1\x08\x04\xe5\x02\x95\xe9\x86\x49\x80\x48\xe3\xad\xb5\x88\x2f\x1f\xdc\xe8\xbc\x3a\x11\x13\x12\x04\x46\x51\xb9\x87\xa0\xda\x18\x0d\x02\x39\xac\x56\x18\xed\xa0\x09\xa9\x3c\xf9\x67\x1a\x7a\xbc\xb5\x96\x03\xb3\xdc\x72\x8d\xb9\x09\x72\xce\xdb\xf0\xf8\x56\xc9\x0f\xf7\x2d\x6f\x52\x1d\x17\x91\x65\x63\x81\x66\x3d\x1e\x84\x02\x5a\xf6\x80\x8d\xd9\x89\x99\x66\xba\xa4\x88\xf8\x04\x90\xde\x53\xd5\x96\x7c\xb1\x36\xa0\x25\xcc\x75\x63\x4f\xad\x43\xe6\xbe\x61\xf4\xdb\xb7\xa0\x1d\xec\x7e\x15\x97\xcc\x7e\x1d\x9c\xbd\x16\x38\x0d\xcd\xcb\x9c\x63\x66\xb5\x7c\x1c\xb7\x91\x2f\x38\xab\x3a\x0c\xf5\xd3\x0f\x34\x51\x2e\xa5\xc0\x23\x72\xc5\x33\xf4\x5c\xf3\x68\x55\xee\x38\xbc\x4d\x99\xb0\xac\xda\x5d\xe7\x09\x1e\x16\x21\xe8\x95\x5f\x19\xe1\x9d\x5a\x66\xd4\xfb\x50\x7c\xca\x29\xe9\x0d\x5b\xf8\xa1\x73\xe4\x2e\x2f\x68\xf7\xc0\x60\x25\xbc\x50\xd1\x8a\x6d\x12\x8e\x55\xc6\x2b\x9e\xe1\x92\xb6\x20\x03\x3e\x97\x89\xcc\x81\x20\x05\x73\x5f\x95\x11\x36\x37\x1a\x9e\x3e\x5a\x4e\x52\xee\xd9\x70\xba\x16\xfd\x81\x60\x4e\x2f\xd8\xfe\x35\xe1\x9c\x7e\xcb\x06\xbf\xe8\xcc\x9c\xf9\x65\x49\x50\x4e\x3f\x1d\xc6\xe2\xc1\xb2\xf4\xef\x32\x6c\x66\xa9\xc5\x9b\xea\xcf\x4b\xe3\xdd\x70\x50\x0f\x87\x32\x10\xd9\xf6\x00\x33\x5f\xa5\xe2\x6e\xdc\x59\x8b\x44\xf3\x16\x39\x58\xdb\x36\x32\x6b\xb7\xb5\x1d\xeb\x62\xde\xc6\xe5\x8a\xbd\xea\x6e\xbd\x2b\xee\x6f\xf7\xed\xb1\xe2\x82\xa1\x01\xe4\xb9\xc8\xe5\xb0\xd0\x46\xf0\xd2\x3c\x17\x27\xf0\xf3\xe6\xc6\xa9\xf4\xac\xf7\x3b\xd7\x16\x9a\xd7\x77\x70\x8c\xb1\x00\x32\xab\xaf\xae\xbf\x14\xdc\x98\x86\xeb\xc5\x1d\x32\x76\x1c\xb2\xc8\x72\x59\x5f\x61\xcd\x3b\xb1\xfa\xd4\xfb\x72\x52\x25\x5c\x03\xbd\xab\x35\x9b\xde\xe6\xce\xfc\xba\xff\x86\x2c\x6b\xa6\x6f\x52\xa9\x81\x57\x83\x94\xda\x3b\x48\xef\x1a\x9f\x7b\xc0\x48\x7e\x2e\x44\x21\xcc\xda\x9f\x17\xf1\xb2\x1e\xdb\x1c\xe0\x9d\xf9\x57\x5a\xe9\x67\xb6\x2e\xa2\x15\xb3\x8d\xb3\x58\x24\x7c\x5b\x7a\x35\xf0\x97\x72\x9d\x00\x8d\xec\x9e\x9c\x96\x51\x91\xe5\x7a\x0d\x20\x4c\xdf\x6e\x5a\x28\x58\xf0\x8c\xe7\x79\x2a\xe7\x45\xde\x08\xd8\x2a\x71\x5c\xed\x99\xd0\xba\xbb\xb9\x38\x9b\xbc\x9f\x54\xb2\x49\xe3\xbb\x9f\xc2\xff\xfe\x78\x7d\xfb\xd3\xfb\xcb\xeb\x8f\xe1\xdf\x2e\xc7\x0f\x57\x67\x3f\xce\x6e\x2e\xc7\x57\xa5\x9c\xd3\xf8\x7e\x7c\x77\x71\xbf\x23\xad\x54\x7f\x6a\xfb\x44\xf0\x80\x82\xcb\xc2\x42\x2d\x17\xb1\xbd\x5d\xd2\x53\xdf\xb1\xb1\x25\x24\x2b\x51\xe6\xd9\xd4\x20\x64\xde\x51\x99\x97\x32\x88\xe7\x3c\xe7\xa4\x74\x7e\xca\xc6\xcc\x2a\xd6\x03\x18\x3a\x33\xce\x02\xb1\x35\x99\xd9\xc1\x26\x8c\xc7\x10\xf9\x9b\x9b\x17\x5b\xd3\x0b\xe2\x49\x4b\x44\x48\xcb\x6d\x2b\x7f\xa6\xea\xe2\x49\xa8\xbc\x00\xce\x60\x9e\x24\xcc\x0a\xac\xd3\x17\x82\xaa\x66\xdb\xcb\x4c\xae\x65\xc2\x53\xaf\x8b\x75\x4d\x6d\x81\xc3\x6e\xfb\xea\x48\x6c\xea\x25\xb3\xf6\xf2\xf0\x30\x61\xd0\xef\xb3\xcb\x09\xb8\x40\x51\x6e\x45\x1f\xec\xc3\xa7\x0a\x79\xb8\xe8\x89\x6b\x0e\x00\xfd\x5c\x53\x3c\x0d\x1f\x4f\x5f\x6e\x5f\x88\xd9\x21\x9b\xd8\x46\x9e\x5f\x0a\x04\xe4\x3a\x69\xff\xe5\x42\xe5\xe9\xb6\xb7\x5f\x73\x0f\x15\xa9\x19\xf8\xa6\x84\xf7\x29\x6b\x65\x61\xb8\x83\xd9\xd6\xaf\xc0\xd9\xb1\x60\x34\x8a\xc6\xbb\xa0\xbb\x00\x66\xe2\x16\xff\x3b\x31\x87\xd0\xf7\x3a\x0e\x21\x69\x08\x8c\xc2\x5c\x17\x2a\xce\x08\x99\xb4\x96\xea\xed\x9a\x7f\x79\x63\xdf\x14\x8b\xf0\x1d\x63\x3d\x10\x2c\x89\xc4\xdc\x44\xb6\xc6\xc8\x75\x0f\xd7\x54\x75\x8c\xd7\x6e\x6f\xd1\x5a\x56\xb8\xf6\xf8\x3b\x2a\x62\xac\x9e\xc4\xb6\x69\xfe\x6a\xaa\x23\x88\xe3\xa2\x0d\x0f\x8d\x6c\x52\x61\xbe\xe8\x00\x5c\x09\xe2\xf2\xdc\x7f\x03\x50\xbb\xa4\x8c\xd6\x6c\xbb\xc3\x2c\xef\x41\xdb\xa6\x31\xbf\xfc\x02\xb2\x31\xf4\x24\x33\x67\x98\x6d\xb6\x81\x4e\x02\xa6\x53\x1a\xcd\x4c\xd6\x5f\xf5\x9c\x2d\xa0\x4a\x83\x94\x8f\x53\x01\x81\x6d\x98\x0a\xcb\x73\x0c\x34\x3c\xb5\x14\xb6\x5d\x02\x89\xc8\x20\xdc\xab\xcc\x75\x4b\x7c\x2e\x28\x63\xf7\xbb\xdf\x0e\x3b\x67\xf3\x74\xcb\x2c\xa7\x7e\x58\x25\x42\x45\x52\x74\xe6\x42\xbf\x0a\x25\x9b\xb8\xb9\x6e\x0b\x65\x8e\xe2\x63\x80\x1d\xfa\x67\xb3\x2a\x0f\xa5\xff\xdc\x59\x48\x61\x03\xb1\x29\x7e\xff\xc5\xc8\x0c\x7f\xae\x70\x18\xd2\xe3\x00\xb6\x4b\xad\x87\x07\xda\x9c\x47\x8f\xcf\x3c\x8d\x31\x56\x08\xe8\x83\x53\xf6\xa3\x7e\x16\x4f\x22\x1d\xb1\x48\xa4\x39\x27\x7a\xa3\x0c\xd2\xaf\xb0\xa1\xa8\x9d\xa9\x02\x14\x3b\x72\x45\x29\x10\x8d\xce\xe5\x72\x65\xee\x93\x41\xf2\x5c\xa7\xc6\x1c\xe5\xc8\x1d\xb7\x11\x11\x11\xca\xb4\x0c\xc0\x22\xe1\x4f\x75\xbe\xa6\x7d\x2a\xe1\xd9\xc4\x95\xe2\xd9\xec\x94\xe5\x8e\xef\x82\x3b\xd0\x80\x91\xd1\x44\x0a\x90\x11\x5b\xea\x84\xab\xe5\xe9\xe9\x29\x13\x79\x74\xfa\x66\xd0\x42\xa7\x06\xc3\x7c\x97\x83\xa0\x26\x5a\x67\x22\xd9\x3a\x12\x14\x57\x24\x60\x86\x19\x6a\x44\x32\x89\x21\x8f\x86\xe5\x7f\x57\xad\xa8\xff\xba\xa1\xf3\xe6\x9b\xea\xe0\x12\xb4\x96\x76\x40\x8a\x66\x40\x4b\xf8\xfd\xe6\x9b\xd7\x5e\x25\x95\x2d\x3c\xa7\x5a\x0d\xad\x13\xfc\x59\xb7\x09\x2b\xef\xc5\x4d\xd6\xd8\x12\x11\x39\xec\x55\x5b\xd5\x16\xb1\xa8\x94\xbb\x1d\x50\xe9\xd6\x51\xb4\x36\xb0\x5e\xad\x61\xdf\x35\x6c\x8b\xca\x74\x0f\xde\x16\xbb\xd9\xf1\x1b\x5f\x68\x60\x3d\xa0\x2f\xdc\x1d\xe2\x3a\x61\x49\x51\xb2\x85\x1b\x97\xab\x0e\x84\xc8\x72\x1c\x44\xc6\x4b\x81\x7f\xa8\x53\xf1\x99\x03\x47\xb0\x13\x24\x0a\xb2\x5c\xa7\x7c\x29\xd8\x5a\xc4\xb2\x58\x37\x1a\x1b\xd7\xdd\x43\xd0\x5e\x3a\x29\xd6\xed\x54\x67\x87\x3a\xd0\xbe\x93\xf8\x6f\x67\xf0\xb8\xde\x0e\xb4\x97\x10\xb7\x22\x25\xd4\x5f\x0c\x83\xd3\x58\x9b\x93\x32\x95\x19\x90\xf2\xed\x53\x16\xe6\x9a\xc1\xa6\x21\x5b\xb7\xdd\x60\xf8\xb5\x34\xbb\x27\x36\xbb\x43\x3f\xc9\x70\x56\x21\xc5\xd7\x7e\x28\x54\x31\x64\x83\xe7\x08\x24\x30\xf6\xca\x6b\x82\xdb\x18\x90\x51\x13\xc8\x05\x1a\xa4\x4c\x7c\xae\xd9\xc2\x16\x1a\x3d\x8a\x80\xba\x29\x06\x9a\xea\x67\xe4\x01\xf9\xe9\x8f\x99\xcd\xd9\x13\xac\xc2\x7b\x2c\xb9\x7f\x08\xe6\x06\x9e\x7e\x67\xd1\x34\xf8\x86\xd8\x04\x10\x2c\xc5\x5c\xe5\x8d\x0d\x78\xb0\x19\xb4\x85\x3f\xf9\x99\x17\x49\xf3\xd7\xa9\x7d\xf8\x2a\x4a\xde\x8c\x3f\xde\x31\x1c\x6a\x22\x34\x4e\xbb\x3a\x1a\x34\xb2\x1b\xcf\x03\xc3\x35\xdb\xc3\x13\x2c\xcd\x03\x0e\xba\x65\xb4\x36\xc3\x2e\xf2\x68\xe5\x3d\x8f\xb2\x76\x2d\xe9\x99\xd1\x7b\xae\x3d\x45\x33\x42\x25\x43\xcc\x99\x5c\x2a\x1d\xaa\x0b\x68\x25\x20\x49\x63\x0c\x90\x0e\x9b\x65\x32\xdf\x0d\xec\x19\xc8\xaa\xb4\x6b\xa9\xe5\x1a\x01\x1b\xf4\x9e\xa5\x5c\x1b\x5c\x29\x24\x72\xb1\x58\x54\x24\xde\x89\x48\x1e\xab\x4a\x2c\x5c\xae\x6e\x9f\xaa\xf2\xa3\x6a\x83\x64\x91\x37\x32\x15\xc8\x07\x9a\x19\xef\x2d\x97\x4f\x66\xa3\xd6\x97\xb5\x5b\xa0\x60\x01\xea\x6b\x6f\xaa\xb0\xdb\x01\xa9\xe8\xa3\xd8\x66\xa1\x16\x17\xad\x28\xd6\xb6\x20\xa5\x79\x1f\x9a\xaf\xdd\x53\x01\x03\x37\x0b\xb4\xc5\xfb\x9d\x65\xf8\xd0\x0f\xe6\xc7\x1d\x90\xbe\x5a\xe3\x66\x0d\xfa\x4a\x2e\x1f\x53\x24\x33\xe1\xc7\x99\xe6\xd0\xa3\x76\x1a\x74\xe7\x7d\x78\x16\x2e\xbe\xe6\x7e\x3b\x55\xc4\x3b\x1c\x1c\x72\xc6\xe0\xd4\xa7\x8d\xca\x4b\x91\xed\x74\x5b\xa2\xc6\x00\x6a\x38\x4b\x93\xd7\x2c\xf7\x6f\xa5\x1c\xa7\x8a\x04\xf3\x41\xf1\x9e\x62\x78\x8d\x0f\xdc\x13\x0a\x46\x93\xdb\x0a\xff\xf2\x57\x18\x1a\x38\x62\x47\x43\x51\x37\xbc\xfd\x44\xc2\x0c\xdf\x58\x35\x22\xaf\x2c\xee\xea\xee\xe2\xec\xf6\xe2\xfe\xab\xc1\xc3\x2c\x36\x6b\x30\x3e\xcc\xf6\xf3\xfc\xe2\xfd\xf8\xe1\xf2\x7e\x76\x3e\xb9\x7d\x09\x80\x18\x7d\xb4\x07\x42\xec\x8e\xe8\xcc\xcf\xb4\xca\xc5\x97\x83\xce\xe4\xb4\x50\x33\x3e\xa0\x52\xc1\x49\x06\x74\xb9\x3b\xd8\x68\x9d\x8e\xdd\x71\xa5\x13\x37\x1f\x9e\x68\x8e\x7d\x7d\xe1\x83\x86\x0b\x99\x24\x50\xe6\xe8\xc2\xeb\x54\x14\x64\x06\x15\xec\x8f\xa5\x23\x24\x9b\x3a\x55\xf3\x12\x1f\x3d\x84\xfc\x56\xe6\x12\x8c\x05\x8e\x1b\x33\x00\xa9\x84\xf2\xb1\x2e\xc6\xf6\xa5\x54\xc2\x77\x03\x05\x58\x0b\xc5\x5a\x69\x76\x69\x12\x5f\xb2\x8a\x95\x1c\xaf\xbe\xbe\xa6\x5d\x71\xa5\xf5\x69\xdd\x4f\xfb\xa1\x7b\x43\xdc\xc4\x52\xa1\x63\x5a\xda\xcd\x77\xcd\x4b\xf7\xad\xdf\x02\x30\xee\x66\x26\x39\xe4\x20\x40\xe3\xd4\x4f\x24\x4d\x04\x6a\xa5\xf8\xe4\xc4\xa3\x44\x14\x8d\x5e\x54\xc6\xd9\x98\x42\x33\xd6\x12\x32\x15\x9c\x98\x1b\xa2\xa4\xc8\x72\x91\x52\xd8\x64\xfc\xf1\x6e\xaa\x50\x08\x9f\x4e\x21\xd2\xd3\xc0\x47\x20\x86\x43\x97\x9e\x6f\x3d\x94\xd0\x82\xbd\xc6\x18\xf5\x5a\x70\x95\xa1\xfe\x74\x92\x88\xd4\xaf\x0c\xec\x8f\x10\x31\x69\x90\x01\x55\xa5\xff\x3d\x49\x10\x6b\xd8\xb5\xa6\xbf\xf4\x29\x89\xf0\x56\xd7\x53\x5b\x15\x2d\x00\x44\x5f\x72\xe5\x34\xd4\x29\xf4\x5d\x45\x84\xad\x6d\x5c\x44\xe5\xaa\x81\x5e\x6b\xe9\x1e\x9b\xfb\x75\x29\x1d\x71\x29\xf5\x38\xd7\xc3\x53\x82\xad\xb4\x31\xa0\x4e\x0a\xc3\xa7\x99\x5d\x15\x7f\x02\xf8\x27\x33\x8c\x8d\xa7\x4e\x45\x70\xed\x80\x53\x07\x15\xd6\x0e\x83\x73\x8e\x1b\xe8\x42\xbc\xb2\x8f\xcd\xed\x74\x6a\xb9\xbd\x0c\x2d\xd7\xd8\xe2\xed\x94\xce\x6d\x81\xbd\x83\xb8\x11\x5e\xcf\x7c\xc1\x31\x3b\x74\xf6\x91\xd8\x12\xac\x97\x32\x3b\x50\x0f\xe9\x3e\xc4\x05\x96\x8a\x28\xb1\x17\xa1\xa4\x2a\x21\x88\x3d\xc1\xc1\x90\xc5\xb7\xbf\xe2\x5e\x79\xcd\x39\xb2\xbc\xbd\xc0\x0e\x57\xd7\x57\x17\x21\x54\x61\x72\x75\x7f\xf1\xa7\x8b\xdb\x52\xf9\xed\xe5\xf5\xb8\x54\x42\x7b\x77\x7f\x5b\xa9\x9c\xfd\xe1\xfa\xfa\xf2\xa2\x86\x79\xb8\xb8\x9f\x7c\x28\x35\x7e\xfe\x70\x3b\xbe\x9f\x5c\x97\xbe\xf7\xc3\xe4\x6a\x7c\xfb\x5f\xe1\x5f\x2e\x6e\x6f\xaf\x6f\x2b\xcf\x7b\x38\xeb\x46\x4f\x94\x5e\xa3\x39\xfc\xe3\x93\xb3\x01\x6f\x60\xe3\x36\x2e\x2b\x12\x1e\xb0\x8b\x7b\x82\xb0\x76\x2d\x47\x5b\x5d\x1b\x87\x74\xe2\xb8\x31\x4c\x57\x07\xad\xba\xe3\x4b\x28\x96\x86\xee\xf3\x61\x44\xc5\x39\xcf\x1b\xef\xbf\xbd\x03\x13\x24\x59\xfe\xb9\x10\xe9\x96\x78\x5e\xf0\xd2\x88\x7f\x89\xb8\x42\xf4\x6a\x2e\xd6\x1b\xa8\x86\x0a\x61\x97\x53\xf5\x11\x32\x56\x88\xec\x78\x95\xb1\x3f\x41\xee\xc9\x7e\xd9\x4b\xfb\xc3\xa0\xfc\x05\x9f\xe1\x3e\x3b\x9d\xaa\x12\x95\x77\xf0\xab\x12\xab\xf7\xe9\x54\x59\x2e\xdd\x58\x47\xd9\x29\x1c\xbd\xa7\x3a\x5d\xbe\x25\x9d\x37\x63\x4c\xf5\xe3\x5c\xeb\xc7\xb7\x42\xbd\x85\xcb\x41\xfe\x96\x17\xb9\x7e\x0b\x79\x6b\x1c\xfc\xec\xad\x95\x83\xb2\x7a\x5a\xd9\xdb\x95\x7c\x12\xf0\x7f\xa7\xab\x7c\x9d\xfc\x9f\x6c\xb3\xfa\x72\xb2\x4c\xd2\x13\xf3\xdb\x93\xf0\xb7\x27\xf6\xb7\x27\xf6\xb7\x27\xe6\x67\xf8\x7f\x9b\x2d\xc6\xd9\xc4\x17\x6e\xb6\xc9\x68\xaa\xa4\xca\x44\x9a\xc3\x32\x7c\x4e\x65\xee\x39\xd3\xb7\xec\xd5\xdf\xff\xce\x4e\x53\xfe\x8c\x75\x0c\xe7\x3c\xe7\x37\x78\xd1\xfb\xe7\x3f\x5f\x41\x64\x1b\x81\xc6\x1b\x9e\x7e\x2e\x44\x6e\xae\x9c\x89\x88\x72\xf6\x7f\xa7\x0a\x42\xe1\xeb\xed\x2c\xc7\x0b\x30\x5e\x06\xe3\x8c\xfd\x27\xb6\x39\x41\xce\xa3\x38\x33\x2d\xb5\x40\x1c\x25\x4f\x1a\x14\x04\x5b\x62\x25\x9f\x93\x73\xfa\xfe\x80\xdd\xf2\x39\x29\x6f\x11\xcb\xda\x9d\x7d\x4e\x80\x58\x2b\xd1\xdc\x66\xcd\x99\x5b\xbc\xe0\xb0\x50\xe7\x9a\xf6\x48\x2d\x47\xf3\xa2\xf9\x92\xe6\xbd\x72\x87\xbc\x8b\x36\x84\x52\xd3\xc7\x83\xa0\x8d\x0f\x08\x41\x1a\x43\x9a\x1d\x72\x87\x57\x52\x70\x3f\xf1\xcd\xc1\x38\x50\x0e\xc3\xb5\x87\x1e\x64\xf6\x87\x77\x6f\xdf\x8e\xd8\x32\x83\x7f\xcc\x3f\xc3\x3f\x20\x8d\x7b\x2c\xea\xb0\xda\x60\x3a\x44\x42\x7d\x96\x77\xcf\xc4\x31\xe0\x0c\x5f\x83\xad\xb2\xb2\x4c\x7f\x28\x54\x9c\x08\x5f\x96\x51\x8a\x4d\x25\xda\x2a\x98\xe2\x0d\xa5\xca\x0b\x0e\x73\x3c\x17\x11\x37\x86\xaf\xf6\x6c\x44\xf9\xe8\x45\x2e\x14\x5e\x4b\x52\x2f\x1b\xc2\xf1\x0a\x01\x29\x76\xc0\xa4\xf0\x9c\xb0\x7f\x02\xfe\x08\x0f\x01\xfa\xc7\x51\xf5\x23\x10\x96\x47\x26\x43\xe0\xe7\x42\xfd\x7b\x61\x03\x67\x58\xce\x5a\xa4\xe6\x66\xb2\xe1\x2a\xe6\x19\xac\xc0\x45\x0a\x61\xe7\x94\xf1\x7a\x47\x47\x88\x8b\xd2\x45\x0e\x5c\x02\x98\xe2\x09\x47\x02\xa9\x26\x83\x3e\x8f\x82\x4e\xe0\x99\x00\x8c\x77\xb5\x1f\x9e\x4e\x95\x15\xb6\x20\x50\x02\x5e\x59\x22\xbd\xd9\x52\xa5\x78\x75\xd0\xa5\xbd\xc2\xd0\x70\x8f\x7c\xe2\xaf\xfa\xdd\x11\x93\xe5\x18\x27\xb0\x5a\xe6\x81\x34\x9f\x95\x0f\x7c\x2d\x54\xa4\x63\x91\x66\x6f\xcc\x36\x04\xae\xe7\xdc\x73\x46\xca\xcc\x4f\x06\x58\x29\x73\xb8\xd1\xb5\xcd\x34\xef\xe8\xdf\xcd\xe8\x94\x78\x10\x9b\xdc\x87\xdd\x5b\xe5\x7b\x4f\x47\x36\xf5\x97\xfe\xf5\xab\xa6\x26\x43\x80\x8d\x05\x98\xed\xef\x0b\xe2\x96\x0d\x2d\x2e\x36\x8a\x3e\x0e\x39\x27\x56\x07\x4d\xe6\x20\xb5\x92\x8a\x2c\x9f\x2a\x3a\x81\x47\x6c\x21\x78\xbe\x02\x84\x51\xf6\x84\xc6\x18\x8f\xfb\xfc\x59\xfb\x64\xa8\x25\xd1\x06\x54\x52\xa9\x71\x7f\x5b\xc7\xaf\x41\x6a\x87\x47\x39\x66\x7a\xda\xe8\x85\x9d\xab\x02\x83\xd5\x68\x10\xf7\x18\x07\xcb\xc9\x5c\xd5\x3f\x08\x29\xc1\x61\x24\xb6\x18\xb1\x67\xd5\x7e\xe0\x07\xc6\xf0\xe0\xdb\x61\x3e\x2e\x30\x8e\x50\xd6\x49\xa0\x26\xdc\x67\x3e\x98\x1e\x12\x63\x82\x93\xdc\xb6\xa9\x3a\x06\x02\x3a\xb0\x5f\xfd\x87\xf9\xe9\xce\x9b\x43\x26\x52\x4b\x18\x8d\xef\x8a\xc4\x3c\x2b\x99\xc6\x27\x1b\x9e\xe6\x5b\xbb\x7c\x13\x39\x07\x9e\xd9\x44\x3e\x0a\x36\x4e\x53\xfd\x7c\xec\x51\x68\x35\x2d\xf7\x3c\x7b\x3c\x32\xcf\x17\xd0\xef\x0d\xe1\xe9\x6a\xa4\xe5\x2a\x61\x8f\x62\x31\xdb\x8f\x02\xac\x8d\xc6\xac\xf1\x39\xa9\xc8\xd3\xed\xcc\x2c\xc4\xf5\xa6\xd5\x52\xf4\x42\xaf\xf6\x77\x72\x87\xb1\x8b\xc1\xf9\xdc\x83\x5d\xac\x34\xab\xdf\x0f\xbb\x58\x03\x71\x58\x9d\x5d\x6c\x72\x35\xb9\x9f\x8c\x2f\x27\xff\xaf\xd2\xe2\xc7\xf1\xe4\x7e\x72\xf5\xa7\xd9\xfb\xeb\xdb\xd9\xed\xc5\xdd\xf5\xc3\xed\xd9\x45\x37\x5d\x40\xbd\xf7\xde\x05\x3f\x61\xe1\x73\xde\xb1\xfb\x20\x63\x86\xa8\x4f\xf2\xbf\x49\x68\x09\x56\x95\xd9\xcc\x52\x2d\x47\xb0\x51\xdf\xb1\x8b\x34\x9d\xac\xf9\x52\xdc\x14\x49\x02\x79\x6d\x84\x58\x9f\xa5\x02\x2e\x9e\x23\x76\xa3\xe3\x49\xf0\x3b\xa8\x0b\x69\x7c\x0d\x78\x3e\x8f\xe3\x54\x64\x19\x3e\x7e\x44\xcf\x0f\xb2\xb8\xae\xe6\x84\x50\x0c\xfc\x89\xcb\xc4\xdc\xdf\xde\x81\xd8\xb1\x5e\x2c\x10\xc7\x3c\x72\x08\x76\xf6\xb9\xd0\x39\x67\xe2\x4b\x04\x14\x19\xcd\xeb\xe4\x52\x2f\xbf\x01\x66\xac\x47\x9c\xb0\xe5\x92\x02\x82\x1a\xb3\xe6\xe3\xbc\xd9\x10\xd0\x5b\x7e\xc0\x9f\xbe\xc7\x5f\x36\xb6\x9e\xe7\xc9\x11\x4a\xf6\x2e\xf5\xb2\x99\xde\x1c\xbc\x6b\xe2\x64\xf7\xaa\xfe\x50\x00\xac\x97\x2c\x93\xea\x71\xaa\x3e\xae\x84\x62\xba\x48\xf1\x4f\x70\xcd\x37\x6e\x66\x52\x64\x2b\x01\x7a\x67\x23\xf6\x2c\xd8\x9a\x6f\xd1\x6d\x86\x3b\x81\xe3\x64\x86\x25\x03\xa7\x88\xf9\x75\x22\x95\xb1\x16\x1b\x69\x01\xa2\xd5\xa9\x3f\xc6\x8d\xcb\x12\xc4\xf0\xc3\xf9\xdb\xba\xce\xd3\x12\x50\x02\x0a\x80\x3c\x80\xc5\x66\x6a\xc9\x72\x83\xe4\x93\xd6\x8f\xc5\xc6\x53\x49\xbd\xb2\x51\x62\x18\xee\x27\x2d\x63\x16\x17\x9b\x44\x46\xce\xee\x3e\xeb\xb4\x95\x2f\x0f\x91\xcc\xfd\x4f\x9d\x2a\x3e\xbf\xeb\xc5\x1a\x60\xd2\x01\xa4\xa1\x83\x39\xef\x85\xb9\x03\x99\x54\x51\x52\x80\x98\x45\x91\x89\xf4\x24\x4f\xe5\x72\x09\x0e\xb8\x2d\xba\xf8\xfe\xc9\x05\x3d\x79\xd1\xe1\xf5\x05\x61\xf5\x5f\xa2\x97\x32\xe2\x49\x88\x32\xf3\xe9\x29\xc7\x5e\x66\xb7\x3d\x49\x7d\x01\x20\xd5\x76\xa8\x95\x95\x61\x93\x0a\x20\xd0\x9b\x81\x29\x9f\x91\xb9\x3b\xa4\xdf\x0b\x66\x2e\xe8\x56\xf7\xde\x97\xc7\x82\x7b\x6e\xfb\x0a\x22\x11\xf6\xd9\x56\xef\x01\x15\x8e\x41\x0b\x92\xe9\x67\x25\x52\xf0\x60\x21\xff\x66\xde\x54\x69\xf0\x4d\x9c\x06\x84\x03\x8a\x59\x0d\x94\x85\x43\xc4\x61\x09\xd3\x52\x3e\x09\xf5\xf5\xc9\x20\x83\x07\x44\x3c\x5a\x89\x99\xf5\xcb\x8f\x6d\xb2\xdc\x01\x30\xd0\x58\x59\x32\xe6\xd0\x94\x32\x09\x04\x3c\x11\x5e\x9d\xb0\xc7\x75\xdb\x85\x02\x03\x1d\xd0\x78\xd3\x89\x59\x2c\x4a\x8a\xf2\x07\xbf\x67\x2f\xd3\xec\xb3\xdd\xb6\x23\x8c\xb3\x73\x11\x3d\xb2\x87\xdb\x09\x96\x65\xc9\x9c\x19\x53\x90\xad\x3c\xb9\x7c\xeb\xdd\x2d\xe7\xcb\x6f\x28\x14\xed\x29\x5e\x9d\x26\x88\xe9\x10\x65\xa6\xa1\x70\xc5\x18\x49\x02\x35\x43\x46\x9e\xe7\x96\x33\x1d\x02\xf1\x2c\x5b\x03\x45\x7a\x91\x07\xba\x22\x24\xeb\xdd\xf8\xc2\x1b\x1d\xcf\x6c\x9e\xe4\xd0\xac\x6a\xad\x2d\x1b\xc7\xa0\x14\xb5\x05\x94\x72\xe3\xb1\xde\xd3\x17\xd9\xe3\x1f\xb3\xa0\xce\x59\x87\xbc\x8b\x70\xaf\xe7\x28\xba\x1e\x08\xed\xca\x05\x11\xb9\x63\x65\x25\x48\x96\x1a\x7b\x69\x5a\xba\xd1\x31\xe1\x25\x1c\xb1\x8a\xf1\x82\x04\x45\x4f\x7c\x82\x2b\xec\x82\x93\x75\xcd\x20\x36\x90\xe5\x82\xc7\x4c\x2f\x28\x9a\xb8\xd9\x24\x12\x18\xf5\x62\x24\xef\x84\x32\xe6\xac\x0c\x53\x0c\x5b\xb3\x9d\x0d\xaa\xad\x6f\x2c\x22\xa2\x33\x8d\xe7\x93\x5c\xe6\xbd\xca\x41\xee\xaa\x4f\x75\xa8\x64\x89\x03\x86\xef\x7b\x85\xee\x8e\xa6\x2d\x13\x3d\x87\x81\x6a\x47\x27\x74\x18\x68\x63\x9d\x52\x19\x0f\x39\xde\xed\x98\x5c\xbb\x9f\x76\x75\xd0\x29\x38\xbb\x27\xd9\x69\x66\xc4\x77\x1a\x5c\x7f\xab\xf5\x84\xbb\xee\xda\x90\x20\xcc\x5c\x86\xd0\x79\xe3\x96\xed\x17\x76\x85\xee\xd0\xf4\xaf\xbf\xcb\x41\x13\x5d\xaf\x50\xdf\x31\x96\xbe\xa8\xbd\x7b\x92\x0f\x28\x33\xc6\x9d\xeb\x6a\x8d\x87\x50\x36\xda\xa9\x43\xb0\x95\x19\x4f\x3f\x89\x25\x14\x6c\xaf\x19\xad\x8e\xbb\xdd\xc5\x07\x71\xe8\xbc\xc0\x8e\x2a\x72\xed\x43\xfe\xf0\x3e\x13\x20\x32\x0b\xf1\xf5\x60\x36\x26\x71\x2d\xcf\xe7\x24\x83\x60\x18\xec\xd6\x1c\x80\x06\x1a\x84\x47\xda\xa4\xc2\x26\x8f\xb6\x22\x77\x55\x96\x89\x95\xb0\x80\xdc\x88\x7b\xeb\x72\x99\xb9\xad\x24\x75\xd4\x20\x90\xc9\x20\x7f\x2f\xd2\xeb\x8d\x56\x42\x11\x22\x4e\xe9\xa9\xa2\xc6\xad\x10\xa1\x4b\xaf\x94\x0a\x0f\x46\x14\xd5\x42\x18\xab\xc8\x74\xf2\x44\x79\xb4\x80\x01\x18\x24\x4c\x4c\x07\xcf\xcc\x05\xc1\x5c\x87\x21\xc1\x4b\xe6\x1d\x70\x79\x15\x35\xbe\x54\x2c\x65\x96\x8b\xb0\x56\x23\xfc\xfd\xd1\x84\x93\x4a\x37\xe8\xae\xa1\x6f\x15\x4e\xda\xe5\x0a\x9b\x5d\x3b\xa0\x3f\xdb\x8d\x88\x27\xee\x77\xdd\x8b\xa1\x52\x4e\xe7\x8d\x44\xe9\x14\xc0\x35\x80\x57\x80\x0c\x89\x37\x32\xc7\xdd\xeb\x26\x89\x28\x11\xb8\x53\xbb\x82\x29\x5a\x16\x3c\xe5\x2a\x17\x22\x9b\x2a\xca\x3e\x22\x81\x4c\x58\x23\x8d\x0b\xe8\x39\x50\x26\x41\x07\x37\xd2\x59\x8e\x7c\x0c\xf0\x93\x05\x97\x49\x91\xb6\xde\x39\x71\x55\xee\x55\x04\xda\x35\x4a\x67\xd0\x2c\x6b\x9a\x34\x57\x4e\x14\xec\x22\x57\xc3\x5c\xcd\x1d\x96\xab\x6d\x5a\x5e\xc1\x9a\xdc\xfe\xf3\xed\x02\x8e\x2d\x15\x46\x7f\xcc\x66\x1b\x3d\xc0\xe2\xfd\xf4\xc7\xec\x46\xb7\xd4\x66\x65\x9f\x6b\x81\xb1\x8e\x1c\xfa\xe7\x36\x36\x63\x9e\x3d\x42\xfa\x69\xd7\x7d\x7c\x77\x90\xfd\x0f\xbf\xdf\x9d\xa4\x6a\xb5\x5d\xb0\x6a\x57\x5c\xc5\x89\xb9\xa7\xf2\xbc\x72\x02\x79\xd4\x95\xf1\x8b\x73\x6b\x1c\xdb\x21\xf6\x80\x58\x9d\x45\xb5\x72\x87\x5d\xe3\x54\xa9\x93\xe8\x7a\xa1\xea\x53\xca\xd5\x0b\x4d\xa8\x59\x7f\xb2\x93\xe2\x96\xdb\xb0\xed\x4b\x70\x21\x97\xdf\xc1\x25\xeb\x43\xdd\x52\x46\xb4\x15\xe9\xfc\x72\x10\xbc\x03\x37\x23\xa0\x9d\x8d\x31\x0b\x09\x13\xa7\x8a\x04\xf9\x30\xf3\x0a\x29\x37\x24\x05\xc9\xd8\xef\x5c\x09\xcc\xef\xfe\xc3\x52\x42\x6c\xd9\x02\xc6\x1a\x78\x57\x74\x14\x15\x29\xa4\x45\x29\x74\xc3\x04\x9e\x4d\x43\x78\x6d\xc7\x78\x22\x3b\x30\x0b\xba\x4f\x4d\xde\x83\x8b\xd5\x95\x5e\xea\x1e\x42\x34\x28\x2d\xe8\xce\x42\xe2\xc0\x4f\xb3\x9c\x65\xb9\xd8\x34\x5a\xa5\x92\xd3\x55\x56\xcf\x3c\xc0\xed\xf2\xda\x9d\x3d\x7d\xdd\x01\x36\x7a\x1c\x5c\xa7\xff\x7c\x77\x7d\xc5\x36\x7c\x0b\xb8\xb0\x5c\x93\xec\x29\xb0\x62\x55\xf7\xef\xae\x19\x28\xbf\x7c\x79\xb3\xe1\x98\xd2\x95\xb7\x25\x76\xcb\x9d\xac\x71\xc5\x0e\xc1\x9a\xa1\x25\x69\xb6\x72\xaa\x93\x93\x4d\xc2\x95\x40\x06\x63\x78\xff\x53\x56\x79\x7c\x98\xeb\x75\x59\x1f\x42\xd3\x40\x07\x20\x9c\x42\x6b\x21\x2d\x54\x13\xae\xb6\x2c\x08\x7a\x50\x7a\xb7\xd5\x46\x74\x82\xde\x3e\x20\xaf\x31\x8f\xcc\x36\xc1\x12\x4f\x9b\xb2\x76\xa8\x07\x9e\x01\x20\x71\xc0\x44\x75\xab\x97\x4e\x95\x15\xa7\xd3\xcf\x19\x8b\xb1\x08\xb6\x90\x19\x8a\x7e\x63\x42\x00\xc0\x41\x64\x5f\x10\xb9\x90\x72\x95\x99\x09\x85\x98\xa6\x78\x12\x14\xd8\x28\x25\xe3\x26\xe7\x97\x2e\xbf\x8f\x93\x44\x8a\x28\x2d\x43\x1f\x38\x66\x87\x5c\x60\x1a\xe5\x34\x77\x93\x0d\x7f\xe0\x9b\x2e\xf8\xfe\xc1\x2d\xee\x9a\x25\x47\x01\x50\xf5\x3a\x41\xe8\x0f\x44\x12\x4a\x18\xfe\x70\xf4\x1e\xd4\x81\xe6\xa7\x91\x7d\x74\x37\xd1\x71\xef\x4b\x58\xbf\x92\x8c\x01\xb6\x27\x60\xe3\x71\xd8\x1a\xe7\x2f\x9b\x5d\x0e\x14\xf4\x28\x4b\x0d\x2f\x77\xca\xee\x84\x60\x9f\x9c\xb2\xf5\x27\x92\x38\x01\xb8\x20\x48\x93\xb7\x8d\xeb\x44\x2d\xf4\x61\xc6\x20\x5d\xd6\xe0\x68\x07\x8d\x4a\x73\x3f\x0f\x05\xbc\x41\x4d\x89\x7a\xd9\x42\xc8\xc6\xf7\xda\x01\x6f\xbb\xf1\x77\x72\x2a\x8f\xb0\x3d\x35\xe7\x33\x4c\xf1\x7e\x0a\xcc\xa5\x45\x92\x83\xd8\x37\xd0\x47\x3e\x2a\xfd\xac\xd0\x17\xa0\x27\xb1\xd7\x66\xff\xc1\x01\x86\x01\x54\x74\x0b\x0a\xb4\x86\x6f\x80\xcf\x72\xec\xfe\x9b\xdd\x61\xae\x08\xfb\x0c\x84\xed\x19\x38\x3f\x44\xb5\x0e\xd6\xfc\xf5\x78\xc4\x7e\x18\xb1\xb3\x11\x3b\x3d\x3d\x7d\x33\x62\x82\x47\x2b\xdb\x23\xfc\x09\x22\xc7\x72\xbe\x34\x6d\x13\x85\xf5\x22\x78\x00\xe8\x0f\x98\xc3\xca\xd2\xb6\x70\xff\xad\x20\xf2\x60\x5f\x01\x8b\x49\x50\xe3\xca\xe6\xd5\xa3\x95\x96\xbe\x53\x00\xd1\x14\x91\x4e\x2d\xc8\x33\xcb\x75\x6a\x01\x6b\x4f\x3c\xe5\x52\x41\x8d\x1d\xaf\xc3\x75\xe9\xc9\x01\xcb\xa6\xf8\xc2\xd7\xf0\xfe\x52\x39\xa2\x31\x33\x4c\xf7\xae\xff\xf9\x76\x43\x01\xe9\xe7\x54\xe6\xb9\x39\x9d\xb3\xa9\xba\x63\xef\xfe\x93\x8d\x37\x9b\x44\xb0\x31\xfb\x07\xfb\x81\x2b\xae\x38\xfb\x81\xfd\x83\x9d\x71\x95\xf3\x44\x17\x1b\xc1\xce\xd8\x3f\xcc\xb0\x99\xf6\xae\xb4\x39\x0e\xb7\x23\xc6\x99\x2a\x12\x3c\xf5\x5f\x5b\x30\xd8\x1b\xf7\x5e\xdc\xcf\x8e\x55\xd5\xce\xf4\x9a\x8e\xc2\x5f\x5c\x4e\x22\x93\x6a\x99\x88\xdc\x6a\xd9\x97\x60\x7b\xf8\x80\x13\x78\xd3\x77\x53\xe5\x62\x79\xbf\x98\x1e\xff\xc2\xfe\xc1\xae\x8a\x24\x31\x5d\x32\x86\xc6\x2c\xa4\x77\xcc\x96\x51\x08\x75\xfa\x2c\x1f\xe5\x46\xc4\x92\x43\x21\x85\xf9\xaf\xb7\xf7\x30\xdb\xb3\xc2\x93\x17\x85\x7b\xda\x91\xe0\x1f\x62\x7a\x5e\xa4\x3a\xce\x69\x21\xd8\xc9\xef\xb8\xf9\x95\x7f\x3a\xdc\x23\xf2\x94\x6d\xb4\x1f\xc8\x61\x45\x01\x83\x50\x73\x61\x2f\x13\x50\x39\x6c\x6d\x5b\x0d\x47\x41\x78\xa8\x1f\x6a\x64\x41\xc2\xe3\xe8\x77\xc8\x1e\x7a\x0a\x7d\x4d\x6e\x8d\x0d\xbe\x54\x6f\x08\xbe\xa4\xe7\x5c\xe8\x95\x15\x72\x2c\xf0\x3f\x97\x35\x4c\x4a\x43\xac\x65\x2f\xb1\x97\x4a\x67\x1f\x28\x76\x01\xd5\x9a\xe6\x22\xa3\x64\xf2\xd6\x6c\xd5\xb7\x57\x5a\x99\x6b\x6b\x26\x97\xc8\x13\x01\x30\xa2\x0c\x98\xf1\xac\x53\x70\x5f\x76\x59\x83\x2d\x00\xfe\x81\xe9\x12\x42\xdb\x72\x63\x05\xcc\x14\x24\xdb\xa9\x32\xbf\xa0\x13\x09\x60\xee\xd2\xd1\x09\xe2\xd3\xac\xac\x2c\x3d\x8b\x0c\x72\xd0\x78\xc3\x02\xeb\x52\x62\x3d\x60\xc1\x51\xc9\xd6\x01\x51\xf1\xab\x80\x4a\x87\x5a\xb3\x75\xd6\x98\xf7\x9c\x8b\x44\xab\xa5\x59\x15\x6d\x46\x40\xaf\xb9\x3c\x04\x58\x12\x76\x01\x1b\x6b\xed\x81\x39\x2c\xe9\x2b\x34\x25\xe6\x9c\x94\xb1\xbf\xdf\x93\xf2\xb7\x8b\xc8\xba\xd3\x90\x5e\xae\xe5\x25\x0e\xcc\x2f\x3f\x64\x22\x05\xbe\x4b\x44\x38\xb8\x68\x3f\x1e\x9c\xbe\xea\x19\xdf\xa8\xdf\xa6\xea\x04\xc6\x36\x87\x42\x28\x9b\x60\x83\xc9\x2e\xa8\xd7\x63\x3d\x7e\x4b\x8c\xec\x4b\xea\xf2\x36\x8a\xf0\xc2\xf7\x4c\x6b\xf4\xa7\xa1\x42\xbb\x76\xf4\x8e\x01\x1f\xfc\x8c\xbc\xfb\x33\xbd\xb0\x95\x94\xfd\xcf\xf4\x9a\xf2\x41\x3f\x94\x4a\xc8\x76\x1a\x2a\x04\xd4\x17\x4e\x5b\xbe\x41\xab\x19\x65\x24\xfa\x75\xb6\x3a\x60\xd7\xea\x3d\xfe\xfc\x46\x27\x32\xea\x06\xbd\xd9\xe3\x6a\xa5\x9f\x1b\x50\x44\x73\x01\x28\x50\x8a\xff\x50\xa7\xd0\x43\xcf\x45\x94\xfb\x8c\x5b\xfd\xe5\xfe\x57\x03\x6d\x76\xdf\xc1\x31\xa2\xec\x86\x0d\xd4\xb7\x5c\x0e\x0f\xce\x56\x60\x3a\x03\x82\x5f\x8c\xb5\x42\x2d\x1d\xe4\xb6\x23\x4e\x21\xe8\xd2\xc8\x83\x81\x7e\x5e\xe9\xc4\xdc\xc5\x54\x4c\xac\x71\x53\xb5\x11\x69\xa4\x01\xa0\x12\x9b\xbb\x19\x30\x03\xc9\x24\xf6\x2c\xfa\xaf\x01\xd1\x0b\xb8\xbb\x37\x24\x15\x24\x5c\x8e\xd9\x36\xdf\x71\xea\xda\x65\x67\xe5\x42\x0f\x8b\x40\x1d\x0f\xa2\xd7\xb5\xec\x3f\x12\x94\x0c\x87\x82\x78\x1e\x2a\xd9\x42\x33\xe8\xa5\xfe\x0c\x8a\xf0\x82\xa0\xe7\xc2\x0a\x92\xd9\x8b\x53\x5e\x99\x57\x5a\x66\xd5\xa1\x04\xf6\x3f\x44\x51\x21\x80\x24\x13\xd0\x9d\xb5\xe0\xe8\x8b\x79\x2e\x2e\x9a\xd4\xa9\xf2\xf9\xd1\x57\x59\xe8\x97\x35\xce\x33\x92\xdb\x59\x10\xe0\x88\xbd\x2a\xbd\xe8\x2b\x60\x87\x53\x1a\x9e\x47\x39\xac\xd2\xd0\xc0\x72\x1d\x31\x99\x4f\x95\xcc\x70\x65\xa6\x22\x11\x4f\xa6\x77\x61\xb0\x98\xb0\x2e\xf6\xee\x6c\x5f\x1b\x70\xe4\xdc\x96\x1f\x3b\x95\x59\xd8\x84\x69\xc8\x32\xc6\x21\x30\x1d\x8b\xcc\xf8\x8d\xc0\x8f\x2e\xbe\x98\x0d\x20\x21\x17\x82\xf0\x8f\x58\x28\xdb\x3f\x40\x85\xa0\x90\xdd\x54\x4d\x16\x50\x03\x0a\x95\xa7\x71\x8c\xb7\x50\xcb\x98\xed\x28\x5f\x24\x05\x87\x35\xdd\xc9\xed\x44\x90\xd2\x15\xee\x24\xf1\x24\xd2\x6d\x0e\x41\x5d\x18\x57\x25\x78\xbe\x62\x32\x1f\x01\x57\x8f\xb5\x94\x53\xc5\x63\x12\x0a\xa5\xe6\xcc\xd0\xc0\xba\xef\x98\x67\xfa\x7c\xae\x9f\xba\x1c\xdb\x43\x51\x5f\xb8\xab\x37\x09\x57\x33\x3c\x41\xbe\x01\xee\x2b\x10\x21\x6b\x4b\x75\x16\xf3\x99\x5d\x62\xc7\xe9\xa7\xb3\xf7\xb7\x25\x69\x40\xe3\xc7\xda\x07\x8d\x70\x31\x78\x7e\x51\x7b\x3d\x71\x71\x1a\x42\x17\xa4\xcc\x66\x60\xfb\x5b\x01\x0f\x09\xe3\x15\x24\x82\x5d\xad\xbb\x30\x61\x76\x05\x7c\xaf\xf8\xa4\x3e\x33\x5f\x39\x43\xaa\xd3\x3e\x1c\x1a\x53\xf3\x10\xf7\x82\xc7\xec\xe8\xd6\xcb\x42\x64\x5a\xe3\x28\x75\xa8\x8c\x7d\xdb\x20\xdd\x87\xc5\x13\x02\xe3\x70\x2e\xcc\xd3\x2c\x32\x17\xde\xc3\x74\x03\xb6\xf2\x98\x31\x6a\xb0\x53\x7d\x23\x25\xbe\xf6\x1a\xfa\x75\xca\x26\x8a\x59\x77\x6f\xc4\x5e\xe1\xc2\xca\x5e\x51\x08\x92\x94\x0a\x29\x77\x1e\xd3\xee\xa1\x6a\xd5\x2a\x14\x03\x6b\x06\xfc\x76\xc3\x4c\x50\x27\xc7\xd4\x8b\x8e\xcb\x0f\x12\x6a\x16\xf6\x29\x4b\xc7\x2c\xe2\x1c\x1b\xa0\x43\x12\xaf\xdd\x5b\x74\xda\xb5\x8f\x66\xfb\x17\xb6\xf9\x2e\xf6\x83\xfd\xa1\x19\xa2\x4d\x41\xe7\xa9\xfd\x9c\xe9\x74\xaa\x6c\x6b\x14\x92\xcc\x50\xd4\xa2\xda\x54\x00\xa1\x26\x9f\x3f\x58\xa9\x00\x62\xb0\x3a\x26\x20\x8f\xe3\x89\xf0\xaa\x56\x00\x40\x11\x73\xe1\x35\x56\x4f\xd9\xd8\x3f\xcd\x38\x1e\x66\x81\xaf\xf1\x98\xaf\x92\x65\x25\x89\x19\x14\x99\x5b\x6e\xae\xa0\xbc\x21\x2b\x80\x61\x6e\x51\x18\x63\x14\xd0\xf0\x4d\x95\x19\x3c\xb6\x90\x80\xfb\xa5\x71\x99\xaa\x0f\x3a\xb3\xd5\xf4\x99\x1f\x0f\x8b\x21\xa5\x61\x7b\xe5\xe4\x5c\xe8\x0f\xe7\x70\x68\x53\xcc\xbf\xa2\xef\x0b\x75\x2d\x44\x89\xb1\xd5\x45\xea\x5f\x2a\xe2\x6a\xaa\xfe\x6a\x86\x07\xd5\x35\x9d\x34\xad\x5e\xe0\x16\xb6\x7a\xc8\xec\xf5\x27\x6c\xf4\xf5\x7f\xbc\xf9\xf4\x06\x71\xe8\x45\x06\x0a\x5a\xa3\xf2\x01\xe2\x18\x59\x8b\x24\x81\x4c\xb4\x7d\x03\x47\x46\xe1\x1f\xc1\xbb\x60\x39\x74\xa9\x9b\xa9\xb2\x8b\xd1\x67\xa3\x77\xad\x60\x1f\x7c\x1e\xb3\x88\xe7\xd1\xea\xc4\xfa\x72\x64\xc6\xec\xe9\x47\xd3\x87\x52\x3a\xc6\xd3\x6a\x26\x25\x35\x17\xce\x74\xed\x78\xf8\x4b\xeb\xc5\xbc\x02\x00\x6b\xee\xab\x0c\xfd\x8e\xc5\x0d\x17\xa7\x17\x87\xf5\x7e\x9e\xfb\xba\xd5\xc7\xf1\x37\x4e\x8a\x92\x2b\xbe\x16\x31\x7b\x05\x15\x53\xaf\xec\xe4\x4f\xd5\x66\x7e\x9a\x6c\x17\x39\x51\x3c\x99\x41\x39\x05\x25\x89\x1d\xa7\xdc\x2c\xae\x5f\x93\x76\x0c\x76\xeb\x45\xab\xd9\xd7\x71\x63\xe3\x9e\xd4\xdf\x61\xc1\x18\x97\x1b\x9d\xbb\x32\x44\xa8\x4c\x69\xcb\xb3\xc7\x11\x9b\xa7\x5c\x01\x09\x78\x1c\x3a\x55\x7e\x77\xc2\xe5\x19\xf9\x93\x6c\x09\x85\xe2\xc9\x16\xb0\xe3\xa3\xa9\x42\xb2\x29\xa0\x87\xdc\x46\x89\x8c\x50\x8c\xba\xe2\x07\x89\x27\xa1\xf2\x0b\x62\x57\xb0\x20\xf5\x43\x53\xcb\x8e\xad\xe1\x20\x1a\xc6\x49\xd9\xdb\xe1\x9e\x86\xc2\x47\x58\xb1\x50\x85\x6e\xd4\x16\xd4\xea\x16\xf8\x88\x34\x69\x80\x8f\x8b\xfd\xa5\x98\xeb\xc4\x12\x9a\x4d\xce\x99\x4e\x81\xd4\x39\xd7\xf4\x27\x19\xb7\x9d\x62\x52\xc5\xe2\xcb\x41\xac\x02\xdd\x07\x92\x75\xef\xcc\x63\x02\xee\xe0\xea\xcb\xc2\x2e\x4a\x85\x39\x2c\x72\x7b\x83\xab\x7d\x2b\xab\x22\xec\xc6\x49\xbe\x02\xd8\x1b\x02\xae\xfd\xa0\xae\xf9\x96\x45\x2b\xae\x96\xc1\x15\x1a\x50\x48\x62\xa3\x53\x14\x3f\x7a\x02\xfa\x2e\x9d\xda\xaa\x4d\xaa\x45\x24\xd4\xb7\x0b\x78\x23\xd8\x52\xdb\x82\x43\xbe\x5c\xa6\x62\x09\x85\xf4\x53\x55\xaa\xa6\x06\xea\x32\xcb\xbb\x8c\xcf\xe9\x2a\x46\x3d\x0e\xa3\x43\xdb\xad\x25\x4f\xb7\xae\x94\x8f\x94\xc3\xdc\xd0\xd5\x86\x75\xc4\xa4\x38\x1d\xb1\xdf\x7b\x80\xa9\x88\xb4\x72\xb5\x80\x2d\x85\x60\x95\xd0\xf4\x0e\x5b\xd4\x40\xfd\xd0\xdc\x77\xf8\xac\xa6\x3f\xd6\xb8\x68\x3a\x8b\x29\x73\x9e\x17\x03\x6c\x25\x69\x4c\x9e\x99\x1f\xdf\xe1\x6f\x3b\x31\xd8\x7c\x63\xcc\x9b\xa5\xdd\x31\xdf\x37\x16\xde\x3c\xdb\xf3\x23\x36\x8d\xf5\xce\x40\x67\xa2\xdb\x03\x9d\xc7\x70\x29\x2d\xb7\xc2\xee\x58\x67\xd2\xc2\x17\xd0\xf1\x4e\x43\x43\x99\x16\x8c\x4a\x30\xf3\xac\x7a\xdd\x6a\xb0\x00\x4e\x95\x5f\xa7\xe8\xb7\x23\x72\xc3\xd1\x16\x94\x8c\x64\xd3\x81\x50\xe2\x5e\x01\xa5\xd1\xaf\x75\x37\x6e\x63\x7d\x69\x1e\xfe\x87\x96\x7b\xb1\xf5\x4c\x9a\x06\x3d\xdc\x9f\x38\x4e\xe9\xc0\x73\xca\x3d\x1e\x99\xe7\x6d\x70\x53\xa7\x72\x29\x15\xcf\x75\xca\x5e\xbb\xe2\xc4\x37\x4e\x62\x00\x46\xf1\x18\x66\xa2\x34\x44\x68\x26\x9a\xef\x5e\x80\x67\x16\xf1\x6c\x18\x77\x56\x93\x52\xf6\x4e\xbc\xbe\xf9\x56\x96\xf3\xf5\x26\xa4\x7d\x74\x02\x8e\x34\x32\x09\x0e\x02\xb3\x1d\x83\x18\x9f\xcc\x7c\x0d\xd6\x54\x51\x64\x1c\xe7\x4d\xa7\x76\xf0\xc0\xb7\x6d\x3b\x9b\x37\x45\x3e\xdb\x93\xca\x04\x7f\x3c\x2c\x40\x42\xe9\xf2\x0f\x7c\xd3\x4d\x0e\xc1\xe9\x6a\x8c\x45\x28\x4e\xd5\xd2\x7a\x2a\xe5\xf5\xd9\x4d\xd1\x3c\x90\xac\xb2\x9a\xe2\xbd\xbd\xb4\x09\x0d\x7f\x6f\x29\x5d\x04\x60\x22\x90\x25\x2f\x03\xaf\x02\xaf\xa0\xce\xac\x99\x53\xdc\x32\x4a\x9c\x25\xba\x88\x19\x19\x35\x4a\x17\xa7\xa7\x78\x3a\x02\x6d\xe5\xe9\x69\x1b\x87\xd7\x40\xe9\x38\x67\x7f\xe0\x77\xcd\x3b\x10\x3e\x6b\xb1\xc0\x9d\x5b\x9f\x46\xf6\xc5\xa6\x9e\x46\x1a\xe6\xde\x99\xe3\x41\x73\xef\xa2\xb5\xc0\xa1\x35\x2c\x90\x07\xf7\x26\x19\x27\xb0\xdf\xc2\x40\x77\x03\xcb\x67\x29\x81\x98\x3d\x1e\xfc\x38\x5b\x69\xdb\xfd\xa8\x0d\x4f\x85\xca\x67\xf0\xc4\x61\x0f\x83\x87\xdc\xc0\xcf\x4b\x0e\x53\xaf\x80\xe5\x7f\xdf\x6b\x8c\x43\x5b\xc2\x8c\xff\x61\x77\x14\x7b\xc9\xac\xbc\xb0\x39\x1d\x5f\x4b\xc0\xc6\x04\x39\x3b\x37\x71\x2d\xd3\x45\x2f\xb4\xc7\xe8\x05\x2f\x54\x32\xed\xbd\x5e\xc8\xf7\x1e\xe5\x61\x4c\x2b\x14\x86\xa2\x0a\x4f\x63\x6a\xed\xdf\xfc\x9a\xc3\xaa\x69\x9f\x2e\x67\x3c\x67\x66\xfe\x12\xf6\x37\x91\x6a\x5f\xb6\x80\x41\x95\xb0\xe1\x4e\x7f\x7d\x7f\x21\x36\xf4\xc7\x51\x02\x2c\xd4\xc0\x81\xbf\x10\x27\x09\xde\x7c\xe7\x5b\x7b\x1d\x69\x49\x75\x6c\x44\x84\xf3\xb0\xe7\xb1\x1e\x5c\x3c\x83\xf3\xc7\x86\xe6\xdc\x61\x66\x37\xe8\x5b\xb8\x57\x13\xeb\xdf\x9a\x6f\x08\x87\x46\x90\xd7\x6a\x92\xe1\x14\x5e\xe2\xbf\x7f\xf9\x9f\xd3\x36\x89\x4d\xe8\xfa\x50\x58\x8f\xeb\xfc\xfb\x54\x0a\x15\x43\xd2\x90\xc7\x75\x2e\x7e\x55\x8a\x22\x97\xcc\xb3\x59\x86\x47\xa9\xee\x6b\x3e\x6a\xb3\x19\x2e\xa2\xaf\x90\x79\xf6\x46\xd6\x6d\xdf\x52\x5e\xaa\xcd\x95\xc8\x66\xf1\x56\xf1\x75\x5d\x94\xf4\x45\xfb\xb8\x95\x22\x89\xa1\x8b\xf4\xf4\x5d\xd9\x93\x58\x44\x8f\x43\x7d\x82\xbd\x09\xac\x45\xf4\xc8\x7e\xbc\xff\x70\x89\xc2\x51\x32\x9b\xaa\x2b\x9e\xcb\x27\xf1\x90\x26\x2e\x6c\x4d\x8c\x24\x69\x62\xf7\x48\x99\x50\x35\x20\xef\xb0\xec\xab\xd6\x71\x08\xf9\xae\xd7\xdb\x93\x79\x11\x3d\x8a\xfc\x6d\xca\x55\xac\xd7\xf8\x1a\x6f\xb3\x62\xb1\x90\x5f\x4e\x73\x9e\xbe\xd9\x55\x73\xb0\xd3\x92\x1e\x70\x89\x39\xc4\xa0\xd4\xaf\x29\x4e\xce\xcb\xdb\x66\x19\x87\x82\xfe\xce\x32\x7b\x36\x51\x67\x52\x20\x1e\xda\x72\x51\x3a\xa5\x7e\x36\x3c\x61\xc0\xe8\x35\x1f\xac\x5f\xe9\x0a\xd8\xc6\x6b\xda\xa7\xfb\x36\x82\x79\xa3\x75\x72\x68\x14\x93\x27\x76\x93\xcc\x40\x97\xe8\x10\x17\x1c\x17\x80\x0b\x06\x4c\xce\x5d\x3e\xcd\x11\x85\x52\x2c\xc4\xa9\x02\x02\xd4\x83\xba\x00\x00\x0b\xe8\x44\x07\x0a\x34\xdb\x34\x24\x54\x07\xa2\x59\xa1\x0d\x44\x62\x58\x77\xa8\x1e\x56\x0d\xea\x93\xb9\xef\x23\x90\xa9\x55\x7a\x38\x28\xc0\x81\x2a\x42\x95\x47\xb9\x60\x47\x48\xba\xe8\xc6\x31\x78\xb6\x1d\x4f\xd4\x2e\x34\x36\x87\x3c\x9f\xa9\x0a\xbc\x1c\x64\x4a\xb1\x70\x61\x37\x6a\x4d\x31\x90\xd2\x32\x3c\x38\x06\x72\x08\xb3\x6e\x67\x90\xfc\x3c\xd4\xa8\x82\x3c\x6f\xa4\xd7\x73\xa9\x6c\xf9\x29\x05\x06\xc1\x3d\x1b\x5b\xe2\x32\x17\xc4\xb5\x6e\x16\x32\xa7\x57\xc6\xde\x1d\x0d\x21\x07\x5c\x68\xb2\x76\x5d\x61\x42\x9f\xf8\xb8\x24\xc0\x2d\xc8\xc3\xea\x1b\x48\x73\x9d\x7d\xe6\xdb\x0c\x04\xbd\x84\xb1\x8a\x0b\x0c\x86\x95\xfb\x3f\xf2\x21\x1a\x47\x8a\x47\xea\x98\x05\xe9\xfc\xd1\xbb\x48\xac\xc9\x17\x89\x95\x2e\xf3\x5c\x27\xaf\xb2\xe6\xc1\xf9\x36\xf1\xed\xb4\x33\xbe\x8d\x09\xa6\x7f\x8d\x90\x76\x47\xe0\xec\xc0\xf8\x5d\x70\x4c\xa6\x3a\x12\x99\x85\x00\x40\x51\x06\x98\x63\xf3\xec\x11\x5b\x73\xa9\x68\x1b\xe4\xa9\x31\x90\xb1\x98\x17\xcb\x65\x6b\x58\xe9\xfb\x8f\x4f\x97\xf7\xc9\xbf\x7d\xfc\xb0\x93\xad\xe7\x18\x11\xb6\x89\x7d\x12\x86\xfc\x8c\xaf\xfc\x75\x82\x6a\xdf\x30\x82\xd9\x98\x46\xa8\x2d\xa2\xe3\x44\x30\x27\x7d\x22\x98\x16\xb7\x01\xe5\x33\x74\x05\xb1\xb9\xf5\x5f\x43\x9b\x5f\x27\xb4\xd9\x6b\x51\x20\x65\xc3\x4c\x96\x1d\xf4\x8e\x1e\xee\xc9\xfc\xe4\x28\x02\xa1\x57\x24\xb5\x99\x09\x15\x67\x6c\xce\xa3\x17\xa0\x82\x82\xd3\xf1\xf0\x18\xca\x0e\xc0\xc0\x9d\x5e\x0b\x06\x8f\xca\x90\xcf\x9e\x51\x85\xd2\x08\x90\x68\xe6\x05\x7d\x96\x9d\x72\xf8\x70\x9c\x62\xb6\x3f\xf6\x4e\xf5\x6b\x25\x9e\x99\x39\xad\x46\x21\x34\x27\x98\x1e\x10\x3a\x79\x43\x5a\xf9\x1e\xc7\xeb\xca\xb1\x53\xb1\xe4\x69\x0c\xe8\x71\xda\x92\x09\x8f\x1e\xcd\xbf\x43\xff\xe8\x89\x04\x1f\xb2\x9c\xcb\x08\x69\xf3\xad\x49\x15\xa1\x6e\x39\x21\x95\x7c\xff\xf0\xe7\x19\xe3\x51\xaa\x33\x8c\x32\x38\x2d\x3f\xa8\x5e\x04\x07\xf6\x49\xc6\x05\x4f\xf0\x89\xad\xd1\x49\x9e\x1d\xc4\x21\x3d\x0e\xa4\x3c\xc4\x97\x4d\xc2\x55\x79\x4f\xe2\xeb\x02\xff\x88\xec\x58\xf9\x8e\x46\xeb\x90\xae\x0c\xa6\x03\x0c\xf5\xaf\xfd\xb6\x42\xef\x38\x15\x3c\xde\x86\x64\x43\x52\x91\xa8\x2d\x8f\xd7\x52\x99\xa9\xb7\x4a\x4d\xce\xbe\x5a\xd2\x56\x04\xd1\x81\xa0\x41\x92\x54\xb6\x7e\xc6\x94\x30\x2e\x15\x4f\x65\xb2\x05\x2f\x7a\x93\x8a\x93\xe0\x39\xc1\xfe\x26\x0c\x3f\xd0\xcf\x52\x61\x7c\x91\x89\x45\x91\xa0\xaf\x0d\xb7\x51\xf7\x02\xb4\x0f\x1f\x26\x23\x73\xcc\xe6\x44\x23\x1e\x3c\x18\xc5\x79\x8e\x81\x87\xae\xdf\x03\x7b\xc5\xe4\x3d\x09\x56\x0a\x70\xcd\x95\x7e\xb6\x45\x1b\xcf\xdc\xa3\xf2\xda\xce\x92\xa3\xc5\x61\xbb\xbd\x2e\x7b\xdf\xb1\xbb\x12\x07\xbd\x2c\x40\x4f\x9f\x89\xd8\xed\x44\xa9\xe0\x75\x48\xd7\x8e\x30\x3c\x22\x66\x45\x86\xb5\x1f\x66\x0e\xc1\x5a\xdb\x6b\x3d\x56\xc3\x58\x4d\x44\xe6\xde\x4e\x66\x5a\xb1\x69\xf1\xdb\xdf\xfe\x41\xb0\xdf\x92\xc8\x31\x58\x19\x8c\xa0\x03\x0d\x16\xb6\x0e\x06\xca\x3d\x40\x20\x47\x56\x6d\x46\x58\x13\x88\xcd\x56\x9e\x02\x0c\x8c\x47\x2b\x96\x15\x73\xc4\x38\x71\x0a\xc2\x72\xe5\x58\x26\x2f\x35\xc0\x95\xf0\x1c\xb3\xbd\x1f\x10\xcc\xb8\xa1\xf3\xc5\x06\x2a\x02\x9c\x25\x0c\x74\x28\x8d\x06\x83\x82\x2f\x09\x06\xfc\x06\xf4\xd1\x46\xec\x47\xf9\x24\x46\xec\x6e\xc3\xd3\xc7\x11\x3b\xc7\x70\xf0\x9f\xf5\x7c\x67\x7c\xe2\x18\x31\x3a\xe7\x46\x1f\xca\x59\x8d\xd1\xae\x51\xc0\xad\x1a\xa4\x20\xea\xd1\x24\x8b\x50\x41\x66\x6a\x90\xda\xdf\xa5\x02\xd5\x4a\xc0\x7b\xac\x5b\x56\x3b\x2c\xb2\xf5\xce\x55\xb5\xd2\xfe\x3c\xa5\xaa\xb3\x26\xa4\x8e\x39\xc7\x60\x25\x9a\x17\x3f\x01\xcf\x44\xa7\xae\x32\x32\xa3\xf0\x38\xae\x0a\xc4\x2f\xe2\x89\x5c\xa9\x25\xec\xeb\x78\xd9\x07\xcf\x36\x5a\x27\x8d\xfe\xd7\x51\x07\xb0\x16\x8d\xed\x3b\x78\x13\xac\xc1\xc8\x42\xaf\xc4\x8e\xa2\x8f\xec\xf9\x38\x20\x06\xfd\x80\x4c\x01\x56\x53\x5c\x40\x92\xc3\x0f\x47\x28\xca\x65\xcc\x0a\xa2\x46\xd1\x11\xb1\x1a\x8e\xdc\x7a\x88\xc6\x89\xa2\x10\x67\x88\x56\xac\xc5\x1c\xb3\xfa\x73\x5a\xdc\x42\x68\x77\x26\x9b\x98\x13\x86\x6e\x2e\xc0\x61\xd7\x13\x09\xd8\x73\x6b\xc0\x2d\x6e\x7f\x17\x6f\xa4\x2d\x52\x9c\x45\x09\xcf\x7a\x22\x01\x1b\xed\xce\x84\x1a\x3a\x83\x76\xfa\xdb\xcc\x1f\x21\xe6\xbb\xee\x79\x60\x4e\xd5\xd8\xf1\x26\x7a\x57\xcb\xb9\x87\x68\x66\xd1\x31\xae\x4d\x0d\x16\x03\x78\x92\xcd\x11\xcb\x8a\x68\x05\xe5\x0e\x65\x3b\x15\xda\xad\xfa\x8e\x1d\x4d\x95\x71\x56\x50\xbb\x87\x43\xc2\xfa\x19\x64\x1e\xe4\xdf\x84\xf3\x86\x08\x55\x1b\x3a\x40\x73\x6e\xa6\x46\xab\x46\x67\xd1\x56\x9e\xf0\xf4\x51\xc4\x41\x28\xb2\xd8\xc4\x3c\x37\xde\xb3\x3b\xe4\x60\xfd\x3a\xc2\x59\xeb\x7d\x66\xe1\x8b\x85\xce\x72\xc5\xd2\x26\x72\x21\xa2\x6d\x54\x23\x92\x29\xc1\x44\x8e\x17\xf3\xde\x2f\xe4\xdb\x45\x38\xd2\x7c\x53\xfe\x58\x2b\x90\x67\x6d\xb9\xf5\x7f\x4d\xc4\x5f\x0b\xe7\xc5\xbf\x7b\xd4\x6e\x47\x1a\xfc\x57\x70\xdc\xbf\x65\x04\xa9\x9b\xee\xe2\x37\xe1\x3f\xad\xfd\xb2\xf8\x33\xb8\xb1\x92\xd7\xdc\x88\x7a\xfb\xbe\x0a\x7c\x65\x1c\xee\x9b\xdc\x8b\xba\xd4\xcf\xf7\x1d\x5b\x81\xca\xa8\x63\x57\xe2\x3d\x00\xd4\x4f\x3f\xb5\xe3\x75\x96\xe8\xac\x48\xbb\x37\xff\x6d\xb9\xd7\xf6\xe9\x0d\x94\x97\xb0\xd8\xd6\x73\x01\xd5\xfb\x7d\xe1\x2d\xf8\xb5\xd9\x5f\xf5\x7c\x06\x58\xae\xc3\x76\x78\x53\x73\x56\x44\xc7\x65\x8f\xa9\xab\xfe\xc6\x75\xb7\x11\xc0\xbc\xe4\x2f\xb2\xfe\xfe\x52\x59\x61\x2e\x8c\x38\x55\x96\x88\x1a\x2b\x47\xd3\x54\x00\x63\x6e\x2a\x40\x1b\x8a\x6d\x78\x9a\x4b\xa8\xd3\x32\x23\x96\x08\xf4\x30\x5c\xbc\xc4\x83\x6e\xc2\x6a\x2f\x28\xda\xa4\x28\xcd\x5c\x08\xe5\x46\x7b\xc8\xd5\xd4\xdc\x36\xab\xa3\x4f\x68\xba\x67\xc1\x22\x2c\xd4\x68\xd1\xb1\xab\xfd\x2e\x88\x20\x81\xdf\xb2\x14\xa1\x0f\x55\x71\x2d\x4a\x5b\xb3\x94\xcd\xfd\xae\x2a\x0a\x1a\x6f\xb0\x15\x92\xaa\x52\xb0\xb1\x57\xfe\xfb\x18\xb9\xa5\x1b\x9e\xaf\x30\x0c\xb6\xd6\xb9\x40\x9b\x89\x6c\x39\xb8\x5e\x30\x43\x33\x4f\xf4\x1c\x44\x99\xcc\x27\x6d\xd7\xe7\x88\xb6\x76\xaf\xa1\xab\x4f\x58\x1f\xcb\x60\xac\x09\x54\x9c\xa6\x22\x03\xe2\x91\x7a\x46\xb7\x2f\xfe\x79\x58\xa8\xae\xde\x5d\x63\xf4\xcf\x6b\xa1\xba\x3a\x53\xbd\xd9\xd6\x00\x86\xbd\xd8\xa3\x42\xe7\x22\xac\xda\x34\xce\x01\x91\xf6\x12\x64\x02\x79\x3b\x2b\xef\x6b\xb5\x7f\xa7\x6a\x8c\x9f\x04\x87\x00\xf7\x8a\x2c\x0e\x6f\x4a\x32\x8f\x6e\xff\x61\x19\x27\x1b\x87\x08\x47\xba\x15\x8d\xfc\x7d\x15\x82\x4b\x23\xa8\x9a\x54\xb9\x4c\xcd\x6d\x24\x03\x67\x2b\x2b\xe6\x27\x9e\xa0\x43\xa7\xe0\x9e\x01\x7f\xcb\x86\x83\xd6\x1b\xf0\xf6\x9c\x34\x1c\xc3\x18\xc5\xf7\xca\x0a\x96\xc8\x8e\x27\x64\xfc\xe1\x56\x8d\x15\xe2\xee\xdd\x5d\x3b\xe6\x72\x04\x31\x38\x5b\x9d\x8c\x87\x5d\x97\xbd\x28\x5d\x35\xbf\x35\xfc\xac\x07\xbe\xab\x45\x91\xeb\xdf\xdf\x4e\x94\xc6\xac\x8f\x9d\xb8\x2f\x5f\x4c\xed\xae\x31\x57\x6b\xb2\x1c\xed\x18\xdd\xaf\x0b\x23\x86\x09\xcc\x36\xfc\x59\x11\x31\x46\x37\xb3\xe8\x5e\xf6\xa1\x59\x1b\xdc\xd8\x87\x1a\xf0\xce\x5b\x0a\x45\x14\x53\xb9\x74\xf2\x55\xa3\x40\xf9\x95\x27\x49\x48\xd2\xee\x03\x69\x53\xe5\xc3\x2d\xe6\xf8\x4f\x12\xf3\xcf\xa8\x6a\xb8\x89\x06\x25\x86\xca\x4d\x31\xb2\x2c\x0e\xc4\x7f\x46\x49\xb8\x13\x0c\x6b\xf8\xe0\xc3\xae\xdd\x7c\x2c\x6f\xfc\x3b\x2b\x60\xdd\x91\xee\xc6\xc7\xce\x1e\xc5\x76\x70\x5f\x9b\x13\x4e\x5e\xd5\x70\x05\x9b\xd9\x32\x09\x44\x3c\x4d\x2d\x1c\x9b\x9e\xca\x8c\xd3\xb9\xe0\x51\x29\xff\xd0\xd2\xcf\x95\x88\x1e\x37\x5a\xaa\xc1\xb6\x28\xe8\x8f\x39\x91\x72\x91\xe5\xcc\xb7\xe6\xdc\xec\x5e\xec\xa1\xa5\x83\x19\x5f\x24\x03\x4c\x87\xc5\xa3\x7a\x76\x27\xce\x9c\x6c\x63\xfb\xb2\x3b\xf6\x45\x50\xf8\xb3\xe1\x05\x82\x5a\xdd\xd1\x5e\xb4\x1a\xf5\xa3\xb9\x94\x0e\xe0\xb5\x32\x9d\x9e\x83\xcd\x59\x89\x13\xad\x71\x48\x21\x96\xf3\xeb\x15\xfb\xd7\x2b\xf6\xbf\xf8\x15\xfb\x6b\xde\xaf\x01\x90\xf3\x92\x97\xeb\xe6\xba\xcb\x5f\x8f\xd7\xef\xeb\x78\x45\x7a\x35\x2c\x28\x19\x32\xb4\xd4\xd5\x5b\xff\xf3\xc3\x06\x57\xb0\xa0\x27\xd9\x80\x71\xfe\x8a\xee\x41\x83\xad\x1a\x66\x77\x7b\x9f\x57\xdd\x69\x68\xef\x80\xf8\xcb\x40\x50\x53\x58\xdb\xbe\x61\x34\x2d\x0f\x97\x8e\x31\x3c\xbd\xe3\xd8\xed\x65\xdb\xdf\x55\x36\xae\x8f\x83\x61\x2c\xa3\xcb\xcf\x5d\x59\x8b\xa8\x04\x1a\xf0\x0e\xcb\x18\xd0\x79\xf2\xfc\x55\xe6\x46\xbd\x6c\x01\x2d\x30\xf4\x52\x66\xf9\xcf\x15\xb1\xa8\xfd\xd4\xa6\x5e\x0c\x52\x62\xbb\x8a\xdd\x0c\x7e\xd1\x89\x84\xb8\x2d\x63\x15\xf4\xc2\xae\x39\x38\xe4\xac\x3c\x88\xe9\xf7\x90\xf3\xea\x93\x1b\xaf\x4f\xe8\x47\x3f\xa7\x7c\xb3\x11\xa9\x4d\xc0\xd7\x30\x12\xa0\xb5\x01\x4f\x01\xb1\x9c\x95\x40\xc5\xbe\x8a\x37\x62\x4c\x49\xa5\x69\xf8\x1a\x0c\xdd\x69\xf3\xcc\x5d\x15\x49\xd2\x3a\x73\xbb\x29\xfc\xaf\x1e\x2e\x2f\x67\x3f\x8f\x2f\x1f\x2e\x3a\x29\xf1\x83\xaf\xb5\x8e\x89\xeb\x09\x8d\x89\x17\xdd\x31\x8f\x15\x56\x35\x50\xfb\xb7\xc6\xcb\x48\x91\x24\x65\xb9\x84\xa9\xfa\x44\xed\x00\x9a\x11\xa5\xa0\xcc\xb8\xb1\xce\x81\x2b\x3f\x1f\xbe\xf6\xc9\x34\xfe\x09\x7f\x7b\xc2\xfc\x4b\xbc\x03\x51\x1f\x12\x0b\x69\x1e\x57\x82\x4a\x1f\xb0\x1d\x10\x3b\xd7\xb6\x1d\x8e\x2d\x08\xb3\xdf\xf6\x78\x50\x40\x45\x29\x62\xab\xe3\x72\x94\xdd\x81\x63\xf7\xa9\x1c\x98\x75\xb6\x3c\xc6\xe0\x1a\xb4\x3b\x42\x19\x0f\x10\x27\xf4\x4a\x17\x53\x85\x77\x55\xd3\xa7\x5c\xb7\xf7\x89\x4d\x08\x96\x92\x70\xb5\x2c\xf8\x52\x64\x23\x66\x1f\x3e\x55\x6b\xb9\x5c\x01\xe9\x67\x56\x6c\x08\x65\x89\xb7\x3b\xa8\xbf\xae\x2c\xa1\x0a\xcc\x52\xaa\xa9\xa2\x77\x52\x4b\xdf\x3c\x82\x0d\xff\x7c\xe7\x5e\x87\x30\x9c\xd8\x10\x29\x91\xa8\xa9\xc2\xc9\x45\x66\x71\x1b\xb1\x02\xff\x9d\xe7\xd5\xa5\xcb\x41\xa9\x0e\xd5\x3a\x8d\x4d\x5f\x42\xec\x6c\xaa\x5c\xfd\x16\x7a\xf8\xf4\x0e\x01\x63\x35\x76\x69\xb7\x3d\xb1\x93\x61\xf7\x04\xf5\xad\x79\xd5\x1f\x7c\x06\x98\x0d\x37\x1b\x20\x3b\x58\x37\x63\x3d\x6f\x75\x3c\x30\x1c\x6d\x45\xbd\x50\xb4\xd7\xdc\x1b\xfb\x5e\xf8\x9d\x56\x2c\x87\x2e\xe6\xc9\x80\x2e\xe1\xf7\x3b\x3b\x85\x26\xb9\xbb\x53\x3d\xae\x8c\xb7\x95\xad\x65\x96\x69\xd7\x63\xe7\x5a\xb7\xcc\xcb\x11\x03\xbf\xa5\x4e\xd1\x0f\x76\x0d\x46\x11\xe5\xfb\xac\x97\x1e\x95\x2c\xd5\x21\xb2\xd6\xa7\xab\x43\x89\xcc\xf6\xea\x8e\xf7\x9f\x7a\xf7\xc8\x79\x08\x74\xd8\x0d\xb2\xb0\x74\xce\x95\x0c\x6c\x8b\x99\xa4\xb8\x9f\xd5\xef\x93\x68\x5e\xcc\xe6\x41\x71\x3d\xb3\xfe\x47\x6e\x11\x8d\xfc\xcc\x8d\xa0\x93\x51\x91\x66\xc6\x5c\x92\xbd\x23\xab\xad\x53\xc6\xa7\xca\x12\x41\x5b\x73\x3c\xb6\x68\x94\xd4\xfd\x15\xab\x83\x36\x48\xa4\x0a\x1e\x6b\xce\xb4\x12\xd6\x1a\x4e\x95\x15\x7d\x1c\x31\x3e\xcf\xac\x96\x22\x57\x5b\x27\x70\x28\x9d\x7a\x0d\x57\x0c\x60\x3e\xbb\x6d\x5e\xc5\x0d\x28\x9d\xf3\xbf\x31\xff\xfb\xe7\x6f\xfe\x7f\x00\x00\x00\xff\xff\x51\xab\x44\xe6\xc1\x84\x04\x00") +var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x23\x37\x96\x2f\x0c\xff\x3f\x9f\x02\xb7\xe6\x46\xd8\xee\xd1\xe2\x76\xcf\xf4\xdb\xa1\x89\x1b\xef\x43\x4b\xac\xb2\xae\xb5\xb5\x16\x7b\xfc\x0c\x27\x68\x30\x13\x24\xd1\xca\x04\xb2\x01\xa4\x54\x74\x47\x7f\xf7\x27\x70\xb0\x24\x72\x23\x93\x8b\x24\xaa\x9c\x33\x11\x6d\x15\x33\x13\xeb\xc1\xc1\x59\x7f\xe7\x1f\xff\x82\xd0\x07\xf9\x8c\x67\x33\x22\x3e\x9c\xa0\x0f\xdf\x1d\x7d\xfb\xe1\x40\xff\x46\xd9\x94\x7f\x38\x41\xfa\x39\x42\x1f\x14\x55\x09\xd1\xcf\xa7\xc9\x42\x11\x1a\x27\xc7\x92\x88\x27\x1a\x91\x63\x1c\xa7\x94\x1d\x65\x82\x2b\x0e\x1f\x22\xf4\xe1\x89\x08\x49\x39\xd3\xaf\xdb\x3f\x11\xe3\x0a\x49\xa2\x3e\xfc\x0b\x42\xff\x84\xe6\x65\x34\x27\x29\x91\x1f\x4e\xd0\x7f\x9b\x8f\xe6\x4a\x65\xae\x01\xfd\xb7\xd4\xef\xfe\x0f\xbc\x1b\x71\x26\xf3\xd2\xcb\x38\xcb\x12\x1a\x61\x45\x39\x3b\xfe\x9b\xe4\xac\x78\x37\x13\x3c\xce\xa3\x8e\xef\x62\x35\x97\xc5\x1c\x8f\x71\x46\x8f\x9f\xfe\x78\x8c\x23\x45\x9f\xc8\x38\xc1\x39\x8b\xe6\xe3\x2c\xc1\x4c\x1e\xff\x83\xc6\x7a\x8e\x7f\x23\x91\xfa\x27\xfc\x23\xe6\x29\xa6\xcc\xfc\xcd\x70\x4a\xfe\xe9\xdb\x41\xe8\xc3\x8c\xa8\xe0\x9f\x7a\xb6\x79\x9a\x62\xb1\xd0\x2b\xf2\x91\xa8\x68\x8e\xd4\x9c\x20\xd3\x0f\x72\x4b\xc4\xa7\x08\xa3\x13\x41\xa6\x27\xbf\x0a\x32\x1d\xbb\x85\x3e\x32\x0b\x7c\x01\xa3\xb9\x49\x30\xfb\xf5\xc8\x2e\x13\xb4\xcc\x33\x22\x60\x6e\xe7\xb1\x6e\xfd\x13\x51\x03\x68\xb6\x78\x3f\x7c\x5b\x10\x99\x71\x26\x89\x2c\x0d\x0f\xa1\x0f\xdf\x7d\xfb\x6d\xe5\x27\x84\x3e\xc4\x44\x46\x82\x66\xca\xee\xe5\x00\xc9\x3c\x8a\x88\x94\xd3\x3c\x41\xae\xa5\x70\x30\x66\xaa\x7a\x63\x71\xad\x31\x84\x3e\xfc\x6f\x41\xa6\xba\x9d\x7f\x3d\x8e\xc9\x94\x32\xaa\xdb\x95\x86\x7e\x82\xd1\x96\xbe\xfa\xe7\xbf\x34\xfd\xfd\xcf\x60\x46\x19\x16\x38\x25\x8a\x88\x62\xc7\xcd\xff\x55\xe6\xa2\xf7\x48\x77\x5e\xec\x63\x75\xe0\x95\xd9\x5e\xe1\x94\xe8\x3d\xd1\x3b\x65\xbf\x80\xbf\x05\x91\x3c\x17\x11\x41\x13\x92\x70\x36\x93\x48\xf1\xda\x1a\x50\x68\x41\x93\x57\xf5\x89\x20\x7f\xcf\xa9\x20\x7a\xaf\x94\xc8\x49\xe5\xa9\x5a\x64\x30\x48\xa9\x04\x65\xb3\x70\x29\xfe\x79\xd0\x69\x6a\x86\x2a\xd7\x98\x99\xf9\xa0\x75\x62\x23\x36\x70\xaf\x44\x98\xa1\x09\x41\xfa\x2c\xd2\x98\x08\x12\x23\x2c\x11\x46\x32\x9f\x48\xa2\xd0\x33\x55\x73\xca\xf4\xbf\x33\x12\xd1\x29\x8d\xdc\x9a\xed\xcf\xda\xc0\x9f\xcb\x57\xe6\x41\x12\xa1\x07\xfe\x44\x63\x12\xa3\x27\x9c\xe4\x04\x4d\xb9\x28\x2d\xcf\xd1\x88\xdd\xcf\xf5\x3a\xa4\x13\xca\xe0\xe4\xe9\xb5\x74\x14\xf2\x6f\x6e\xb9\xfe\x0d\xe9\xfe\x50\xce\xe8\xdf\x73\x92\x2c\x10\x8d\x09\x53\x74\x4a\x89\xac\xb6\xf6\x6f\x1c\xfa\xc7\x09\x3a\x44\x7a\x9d\x89\x50\xb0\xde\x9c\x29\xf2\x59\x49\x74\x88\x12\xfa\x48\xd0\x57\x17\x54\x2a\x34\xb8\x39\xff\xea\x00\x7d\x65\xce\x0b\x02\xde\xf4\xd5\x2b\xac\xb0\xff\xfb\x7f\x82\xa3\xa7\xf0\xac\x7a\xe8\x3e\x0c\xf4\x69\xbe\x33\x57\x43\xd1\xc2\xff\xfc\x4b\xd8\x8e\xdd\xaf\xe5\xfc\xb6\x60\xb6\x96\xd3\x76\xe5\xaf\xb0\x4c\x65\xd6\x2a\xf5\x0e\x6d\xcb\x59\x75\xbb\x55\xd6\x2a\xdf\x17\x6f\xd5\x53\x78\x69\xfe\xba\x0d\x73\xc5\x0a\xa8\x1e\x53\x66\x0e\x89\x3f\x33\x42\xea\x73\xe2\xa8\x77\x4f\x58\xca\x36\xbc\x36\x98\x59\xc0\x6e\x1d\x17\x0d\x56\x65\x0f\xe7\x9d\xd0\x94\xae\xda\xdf\x73\x16\x6b\x91\xcb\x32\x3b\x96\xa7\x13\x22\xf4\x32\x38\xb6\x07\xb3\x9d\x68\x36\xa8\x72\xc1\x48\xdc\x61\x9a\x7f\xcf\x89\x58\x2c\x99\xe7\x14\x27\xb2\x6d\xa2\x94\x29\xa2\xe5\xdb\xca\xe3\x29\x17\x29\x56\xf6\x85\x3f\xff\xfb\xba\x0b\xa1\xf8\x23\x59\xb5\xff\xe7\x66\x37\x23\x2c\x81\x0c\xd2\x3c\x51\x34\x4b\x08\xca\xf0\x8c\x48\xbb\x22\x79\xa2\xe4\x01\xbc\xa6\x65\x6a\x22\x0e\xfd\x0d\x04\x3d\xb8\x9b\x37\x97\xf0\x0b\x9a\x7a\x01\x92\x91\xcf\x0a\x5a\x1a\x31\xb8\x7b\x61\x89\xc2\x1b\xe5\x05\x96\x72\x33\x9a\x91\x5c\xa8\xf1\x64\x71\xf4\x48\x6a\xfd\xb6\x52\x0e\x66\x08\x2b\x25\xe8\x24\x57\x44\xcf\x5b\xb7\xe1\xee\x4e\x60\x8f\xe6\x82\xee\xc2\x1a\xde\x6e\xc2\x31\x15\x24\x82\xb9\xad\x73\x60\xfc\x57\x7a\xde\x5a\x7f\x59\x98\xd9\x3f\x92\x05\xc8\x23\x0d\x2b\xe0\xb7\x7c\xc4\x46\x0c\x1d\xa2\xb3\xe1\xdd\xe9\xf0\xea\xec\xfc\xea\xd3\x09\xfa\x7e\x81\x62\x32\xc5\x79\xa2\x0e\xd0\x94\x92\x24\x96\x08\x0b\x02\x4d\x92\x58\xcb\x1c\x7a\x30\x84\xc5\x94\xcd\x10\x17\x31\x11\x2f\xb7\x8c\x95\xa7\x84\xe5\x69\xe5\x5e\x81\xdf\x8b\xd1\x57\xbe\xd0\x22\x86\x7f\x54\x7a\xf2\x3f\xb5\x05\x86\x19\xeb\xbe\x83\xd6\x5e\x4d\xa8\x89\xe6\x34\x89\x05\x61\xc7\x0a\xcb\xc7\x31\xf9\x4c\xa2\xdc\xdc\xc9\xff\x28\xff\x30\xd6\x92\x29\x8f\x49\xf9\x97\xd2\x3f\x0a\x51\x68\xed\x4f\xbd\x96\xba\xf6\x97\xa0\xd3\x76\xfb\x0e\x7e\xa1\x71\xe3\xdb\xf0\xcb\x8a\x39\xb8\x77\x96\x0c\xd6\xbd\xd2\x3a\x2a\xf7\x82\x95\xf8\x1a\xdf\x11\x44\x89\xc5\x18\x2b\x45\xd2\x4c\xad\xa9\xaf\x63\x94\x68\xb9\x72\x99\x1c\x79\xc5\x63\x32\x74\xfd\xfd\x8a\x8c\x38\x4b\x62\x34\x59\x58\xae\x35\x25\x82\xb0\x88\xb4\xb7\x70\x8f\xe5\x63\xd1\xc2\x2a\x61\xb4\xd4\x9f\xfc\xc8\x85\xfe\xfc\x3d\x08\xa4\xa5\x81\xbf\x86\x4c\xba\xe9\x89\xfb\xe2\x2c\x04\x1b\xf2\x8f\xde\x9e\xb0\xfd\x4a\x76\xb5\x3e\x70\x81\xe4\x42\x2a\x92\xae\xb4\x43\xbc\x9f\x85\xb0\x17\xc4\xbe\x0e\xb8\x72\x47\xfd\x0e\x4e\x7d\xf9\xc6\xed\x8f\xf7\x1a\x4b\xb6\x2b\x2b\xe2\xbe\xcf\xd3\xf9\x70\x96\x4f\xf5\xce\x6d\x5f\xe0\xc4\x78\x17\xd3\x2c\xc9\x82\xbb\x1e\xe4\x0b\x99\x1b\x5a\xf7\xca\xad\xf6\x18\x06\xb0\x42\xd1\x2c\xdb\xa1\xfd\xf9\xd3\x9f\x86\x16\x1a\x63\x8e\x53\x73\x2a\x03\x63\x15\x8a\xb8\x30\xb2\x60\x6c\xcf\xbb\xd1\x35\x07\xf7\x83\xbb\xe1\xfd\x09\x1a\xa0\x18\x2b\xac\x0f\xb8\x20\x99\x20\x92\x30\x05\x7a\xbc\xfe\x5e\x2d\x50\xca\x63\x92\x18\x8d\xf3\xa3\x96\x7c\xd1\x19\x56\xf8\x14\x2b\x9c\xf0\xd9\x11\x1a\xc0\x3f\xf5\xc7\x54\x22\x9c\x48\x8e\xb0\x23\x2b\x12\xbb\x26\x30\x8b\x1d\x6b\xc1\x28\xe2\x69\x46\x13\x6f\x83\xf7\xc6\x15\xca\x62\xfa\x44\xe3\x1c\x27\x88\x4f\x34\x57\xd1\x1a\xf2\xf0\x89\x30\x95\xe3\x24\x59\x20\x9c\x24\xc8\x76\xeb\x5e\x40\x72\xce\xf3\x24\xd6\xed\xba\x51\x4a\x9a\xd2\x04\x0b\xad\x82\x9b\xd1\x5e\xdb\xb6\xd0\xfd\x9c\xf8\xb1\xc2\xb8\xf4\x6a\xa6\xf8\x91\x48\x44\x15\xca\xb8\x94\x74\x92\x14\x67\xfe\xe1\x1c\xc1\xb8\x4f\x2f\xce\x41\x9f\x8f\x14\xe2\x86\x87\xba\xce\xad\xfd\xc6\xf5\x98\x62\xc6\x08\x74\xcc\xd5\x9c\x08\xdb\xbd\x7d\xf9\xad\x55\xf3\x87\xab\xbb\x9b\xe1\xe9\xf9\xc7\xf3\xe1\x59\x5d\x37\xbf\x1f\xdc\xfd\x58\xff\xf5\xe7\xeb\xdb\x1f\x3f\x5e\x5c\xff\x5c\x7f\x72\x31\x78\xb8\x3a\xfd\x61\x7c\x73\x31\xb8\xaa\x3f\xb4\x64\xd5\x59\xcd\x0f\x47\xb6\xe6\xd9\xea\x6d\x9a\x2f\x65\xd3\x3c\xf8\x72\x8d\x9a\x53\x9a\x80\x0e\xda\xd9\xa0\xe9\x6d\x08\xf6\x4b\x94\x61\x29\x8d\x64\x64\x46\x70\x34\x62\x97\x5c\x68\x06\x36\xe5\x9a\x47\x68\xe9\x49\x89\x3c\x52\x94\xcd\xfc\x47\x27\x68\x94\x7f\xfb\xed\x9f\xa2\x0b\xca\x1e\xe1\x2f\xb2\x8f\x8b\xd3\x5b\x7c\x7b\x8b\xef\xef\xcb\xe2\xab\x45\x9f\xe3\xd0\xd0\xbb\xdb\x90\x21\x2d\x5c\xb0\x2c\x57\x20\x4a\xf0\x5c\xe9\x3f\x75\x97\x40\x1e\x4b\x02\x87\xba\x19\x14\x3f\x11\xe5\x5f\xd4\xa2\xcd\x7b\xb0\x23\xfe\xcc\xc5\xe3\x34\xe1\xcf\x7e\xe0\x9f\x88\xd2\x63\xbf\xb5\xbd\xf4\xa1\x44\x7d\x28\xd1\xdb\x86\x12\xed\x95\x31\xef\xe5\x99\x5f\xd9\xf2\x67\x38\x60\x8b\x27\xab\xd5\x51\xd5\xe2\x87\x0a\xdc\x4c\xaf\xc2\x35\xcb\xce\x9c\x15\x9c\xb3\xf4\xf2\x7b\xe1\x9e\xa5\x41\xbf\x3e\xe7\xfc\x5d\xf8\x5b\x7a\x77\xca\x86\x0b\xf5\x2e\x19\x6c\xc7\xbb\xe3\xd5\x9c\x21\x2f\xcf\xf0\x6b\xb1\x0d\xeb\x04\x33\xac\x11\xbd\xd0\x39\x5c\x61\x45\x7c\x42\x63\x40\x42\x53\x04\x42\x3d\xe4\xa0\x31\xc6\x60\xbb\xa0\x82\x4d\xef\xa6\xee\x61\x02\x9f\x88\x2a\xbd\xfc\x5e\xee\xa6\xd2\xa0\x5f\xff\x6e\xfa\x9d\x46\x07\xf4\xe1\x00\x2f\xb8\x74\x5f\xfa\x8d\xb6\xbf\x0e\xff\xdf\x81\x87\xbf\x77\xe9\xaf\xb5\x46\x5f\x96\x0f\xff\x4b\x75\xda\xbf\x4f\x2f\x7d\xef\x96\xef\xdd\xf2\x6f\xe1\x3f\x79\x7f\x6e\xf9\x97\x55\x4f\x8b\xe3\x35\x76\xb4\x60\xf5\xb5\xe0\x50\xfe\xb3\x83\x93\x06\xfe\x72\x2a\xdf\xba\x41\xe3\xad\x3a\xdc\x59\x31\xbe\x21\x1c\xa1\x5f\x2d\x21\xad\x50\xe7\x6a\xdf\xbd\x07\x75\xae\x3e\xe8\x97\xd7\xe1\xde\x8c\xf9\xbe\xd0\xe5\xf9\x4e\xd8\xc0\xfa\xb7\xe5\x17\x2c\x93\xf7\xb2\xf8\xcb\x67\xe3\xef\xcd\x84\xde\x8f\xec\xfd\x06\x17\x6f\xc7\x5b\x77\xe7\x39\x59\x0d\xd7\x6c\x70\x3b\xad\xca\xb0\xaa\x7e\x4d\x89\xfc\xee\x5d\xde\xb7\xaf\x91\x64\xd5\x5f\xb8\xfd\x85\x6b\x9b\xea\x2f\xdc\x2f\xf8\xc2\xdd\x3b\xf8\x9b\xbd\x89\x00\xed\x83\xc8\x7b\x60\x8c\x3e\x86\x7c\x87\x8b\xd3\xc7\x90\xf7\x31\xe4\xbf\xb3\x18\xf2\x6d\xb4\xa7\x4d\xb1\x28\xdf\x42\x8f\xea\xd5\xa8\x5e\x8d\x0a\x7f\xef\xd5\xa8\x5e\x8d\xea\xd5\xa8\x2f\x1c\x45\xb4\xd7\xa1\xba\x2f\x44\xaf\x43\x75\x5e\xaa\x5e\x87\x5a\xb2\x38\xbd\x0e\xd5\xeb\x50\xbf\x2f\x1d\x8a\x3c\x11\xa6\x24\x24\xa3\x85\x1a\xc5\x87\x8c\xcb\x76\x4d\x28\xe4\x0e\x0d\x5a\x10\xb4\x59\x4e\x0a\x83\xc0\xa5\x5f\xd1\x1c\x4b\xc4\xa3\x28\x17\x95\x33\x50\xd5\x83\x4e\x05\xc1\x8a\x40\x0b\xfa\xc3\xf7\xa0\xff\xd4\xa7\xfb\x5a\x31\xf8\x13\x1e\xd7\xa8\xdd\x1c\x84\xa6\x27\xcb\xe5\x91\x9d\x4d\xfd\xef\x39\xe9\xa6\xfe\xbd\x20\x51\x2b\x2c\x1f\x77\x4c\xd4\xa5\x5c\x8b\x8d\x88\x1a\x5a\x78\x2f\x44\x5d\x9f\xee\xef\x86\xa8\x9b\xa6\xbe\x0f\x44\xfd\x6c\xf3\xf8\x77\x4c\xd8\x35\x78\x80\x8d\x88\xdb\xb7\xf2\x5e\x08\xbc\x79\xda\xbf\x1b\x22\x6f\x9b\xfe\xdb\x12\xba\x4f\x91\xec\x4c\xe2\xf7\x82\xce\x66\x5a\xcd\x00\x0d\x4f\x93\xe2\xea\x1a\x41\x45\x52\xe0\x4a\xb2\xf6\xaf\xbe\x07\x92\xf6\x83\x35\x63\xff\xdd\xd0\x72\x6d\xde\x7b\x42\xc4\xc7\x82\x44\xfc\x09\xea\x85\x75\x23\xe6\x5b\x02\x14\x0c\xfc\x3a\x13\xe4\x89\xf2\x5c\x26\x8b\x43\x91\x33\xe4\x98\x3f\xf2\xcd\x1b\x6b\xf5\x33\x4d\x12\xc4\x99\xd6\xbf\x14\x16\xca\x3d\xd6\xfa\xb7\xe0\x29\x9c\x8a\x04\x4b\x85\x1e\x19\x7f\x66\x68\x8a\x69\x92\x0b\x82\x32\x4e\x99\x3a\x1a\xb1\x73\x86\x6e\xcd\x18\x21\x6f\xe0\x00\xe5\x52\x9f\xa5\x08\x33\xc6\x15\x8a\xe6\x98\xcd\x08\xc2\x6c\x61\x13\x70\x0b\xca\x40\x5c\xa0\x3c\x8b\xb1\x56\x7c\xe7\xa4\x1a\xa5\xe7\xc7\x08\xe6\x3b\x2a\x11\x95\x88\x7c\x56\x82\xa4\x24\x59\xe8\x3e\x34\xed\x2b\x8e\xec\xfa\x98\xa1\xda\x74\x3e\x22\x04\x17\x12\x32\x0e\x26\x8b\xdf\x30\x53\x94\x11\x04\x8a\x92\x34\xa6\xb9\x43\x74\xc1\x25\x98\x6d\x7e\xfc\x8b\x44\x51\x92\x4b\x45\xc4\x01\x9a\xe4\x33\xa9\x35\xc5\x2c\xc1\x6a\xca\x45\xaa\x47\x48\x99\x54\x78\x42\x13\xaa\x16\x07\x28\xc5\xd1\xdc\xb4\x05\x6b\x20\x0f\x46\x2c\xe6\xcf\x4c\x2a\x41\xb0\xef\xdd\x3d\x44\x5f\x87\xcf\x0c\x01\xc8\x6f\x0e\x20\xed\x90\xa6\x5a\xdd\x0d\x86\x5f\xec\xb8\xd9\x13\xdd\x08\x89\xd1\x84\x44\x38\x97\xd6\xc3\xa0\xc4\x02\x91\xcf\x73\x9c\x4b\xd8\x3b\x3d\x3d\x9b\xb3\x11\xf1\x34\x4b\x88\x22\x88\x4e\x91\x12\x94\xc4\x08\xcf\x30\xd5\x4b\x77\x47\x96\x80\xa0\x7b\xa2\xb7\x1b\x68\xa9\xfe\x57\x50\xbf\x53\x2e\x08\x8a\x89\xc2\x34\x59\xea\x75\xb2\xdf\xf6\x5c\xee\x3d\x71\xb9\xf2\x86\xef\x05\x9b\x33\x20\xfe\x3b\xb8\xb4\x99\x35\xdd\x47\x38\xd9\xf2\xfe\xbe\xb5\x83\xea\x69\xfb\x7d\xd1\xb6\xd9\xb5\xfd\x21\xee\x57\x8b\xc1\xee\x5e\xd1\xa2\xa8\x66\xf1\xae\x68\xfa\x35\xc2\x02\x7a\x87\x73\xef\x70\x6e\x5d\x99\xf7\xe9\x70\xde\x1b\x8f\x51\xef\x73\x7e\x21\x9f\x33\x95\xbd\xd3\xb9\x77\x3a\x77\x5d\xa0\xde\xe9\xdc\x3b\x9d\xdf\xaf\xd3\xf9\x25\x71\x9f\x77\x8a\xee\xfc\xae\x44\xeb\x5e\xac\xee\xc5\xea\x1e\xc2\xd9\x4f\x6d\x57\x2c\xcc\x7d\xfd\x21\x26\x09\x51\xa4\xdd\x9e\x45\x44\xaa\xb5\x05\x73\x3d\x53\xa6\xe5\xb8\x99\x20\x52\x6e\xcb\x90\x7c\xc3\xef\x93\x2d\xf9\xe1\xf7\x50\xf3\x3d\x9f\xea\xf9\xd4\x26\x53\xdb\x1f\xd3\x6c\x70\x98\x5f\xcb\x36\xeb\xf9\x6f\x96\xb7\x4b\x7f\x0f\xc6\x0d\x59\xf8\x45\x0d\x85\x6b\xa9\x5d\x71\x7f\xb8\x2d\x9d\x6f\xc9\x8f\x4d\x5f\xef\x93\x19\x9b\xb1\xf7\x9c\xb8\xe7\xc4\x3d\x27\x7e\xdf\x9c\xd8\x9d\xe4\x37\x75\x91\x19\x3f\xdd\x38\x4b\x30\x1b\xd3\x58\x1e\xff\xa3\xd0\xe5\x5f\xca\x43\xa6\x0f\x54\x6c\x52\x4c\x7d\x4a\xa7\xf8\x55\x7f\x92\x14\x06\x73\x8f\x99\xb9\xc2\x89\x66\x6c\xec\x37\x09\x66\xe7\xf1\xbb\xf0\xa3\x35\xce\xfe\x35\x7c\x6a\xdb\xf0\x71\xac\xc0\xd3\x81\x29\x33\x26\xbc\x22\xaf\xb6\x64\xa0\xdc\x8f\x13\xbe\x0d\x57\x0f\x26\x16\x30\x76\xc7\xaf\x83\x45\xd9\xbf\x69\xf7\x7e\x9d\x3e\x97\xb0\xf7\x5c\x74\x9c\x70\xef\xb9\xd8\x5f\xcf\xc5\x5b\xb9\x23\x5f\xf9\x78\xbe\x96\x58\xd7\x3d\x08\xdf\x44\xab\x41\x50\x6b\x9e\x25\x1c\xc7\xcb\x5c\x31\x85\xe0\x15\x82\xa3\xac\x8c\xc4\x2f\x3e\x7b\x0f\xc2\x5a\x31\xda\xdf\x59\x24\x5f\x7d\xe2\xfb\xa2\xa5\xbc\x62\x28\x5f\x33\x89\xaf\xa1\x92\xbc\x0f\xfc\xd4\x62\xbc\x7d\x68\x5f\x6f\x51\x7a\x7b\x8b\x52\x1f\xda\xd7\xab\x80\x7b\xa6\x02\xf6\xa1\x7d\x7d\x68\x5f\xaf\x20\x2f\x9f\x76\xaf\x20\x7f\x11\xa1\x7d\x9d\x44\xed\x17\xc4\xde\xdc\x5e\xe8\xee\x65\x6e\xf7\x5e\x2f\x73\xf7\x32\xf7\x17\x2a\x73\xef\xc7\x0a\xf7\x02\x77\x2f\x70\xf7\x02\x77\x2f\x70\xf7\x02\xf7\xce\x97\xb1\x17\xb8\x5f\xb3\x40\x67\xb3\xd4\xbd\x22\xc9\xe6\xbd\xfa\x72\x7a\x71\xbb\x17\xb7\xf7\x5b\xdc\xde\x9b\x09\xbd\x9f\x32\x8f\xdd\xe6\xd3\x17\x29\xef\x8b\x94\xf7\x45\xca\x5f\xbc\x48\xb9\xfb\xba\x43\xc6\x87\x3d\x5c\x0a\xab\x5c\x1a\xc0\x47\x41\x66\x54\x2a\x60\xff\x5d\xe4\x95\xd5\x89\x1e\xef\x55\x4e\xe9\x53\x3d\xfc\xd3\x5e\x6a\xe9\xa5\x96\xdf\xa9\xd4\xb2\x47\xb1\x60\x7b\x91\xb1\x92\x62\x15\xcd\xf1\x24\x21\x63\x6f\xf4\x91\x5d\xf5\xe0\x0b\x2a\x95\x44\x51\x2e\x15\x4f\xdb\x2f\x97\x4b\xd7\xc3\xc0\x77\x70\xca\xd9\x94\xce\x72\x73\xb7\x18\x70\xce\xe0\x44\x17\x92\xe0\x22\x23\xab\x3c\x55\x0d\xad\xbf\x8b\x6b\xa9\x79\xe8\xaf\x75\x3b\xad\x23\xb8\x17\x46\x3e\x2b\x75\x6b\x59\x6b\x7c\x3b\xbc\xbb\x7e\xb8\x3d\x1d\x9e\xa0\x41\x96\x25\xd4\xd8\xdd\x0d\x29\xd0\xdf\xf4\xa4\x90\xc2\xf2\xb1\xd8\x4b\x61\xc8\xdc\x60\xd8\x82\xa1\x5f\xcb\xc6\xe8\x10\x9d\x5e\x3c\xdc\xdd\x0f\x6f\x5b\x1a\xb4\x84\x02\x79\xab\x24\xcd\x12\xac\x48\x8c\x1e\xf3\x09\x11\x8c\x68\x69\xc7\x22\xdd\x16\xe6\x7f\xd3\xe8\xf0\xbf\x86\xa7\x0f\xf7\xe7\xd7\x57\xe3\xbf\x3e\x0c\x1f\x86\x27\xc8\x51\x9c\x6e\x56\x8f\x4b\x8f\x22\x5e\x30\x9c\x6a\x0d\x44\xff\x50\x64\xca\xfe\x3d\x27\x39\x41\x58\x4a\x3a\x63\x29\x01\x44\xe0\x52\x8b\x6e\xc0\x17\x83\xef\x87\x17\xe5\x96\xe7\x24\x84\xdf\x45\x09\x9e\x90\xc4\xfa\x23\xc0\xc4\xae\x09\x3d\x80\x2a\x36\x8e\x8a\xdc\xac\xea\x5f\x1f\x06\x17\xe7\xf7\xbf\x8c\xaf\x3f\x8e\xef\x86\xb7\x3f\x9d\x9f\x0e\xc7\x56\xaa\x3c\x1d\xe8\x7e\x4b\x3d\x59\xe1\x13\xfd\x3d\xc7\x89\xd6\x4e\xf8\xd4\xe1\xf1\xa2\xe7\x39\x61\x28\x67\x40\x71\x46\xe5\xd1\x7a\x90\xef\x54\x9f\x32\x33\xa3\x9b\x8b\x87\x4f\xe7\x57\xe3\xeb\x9f\x86\xb7\xb7\xe7\x67\xc3\x13\x74\x47\x12\x50\x0a\xdc\xa2\xc3\x2e\x66\x49\x3e\xa3\x0c\xd1\x34\x4b\x88\x5e\x0d\x6c\xb3\x89\xe7\xf8\x89\x72\x61\x8f\xee\x8c\x3e\x11\x66\xd6\x11\xce\x2c\xb4\xef\x84\xef\x71\xb0\x74\xd7\x57\x1f\xcf\x3f\x9d\xa0\x41\x1c\xfb\x39\x48\x68\xa3\x44\x39\x0e\xd6\xf9\xb0\x3c\x6c\xcd\x1c\xa0\x7b\x43\x44\xfc\x89\x08\x41\x63\x52\xa1\xa3\xc1\xdd\xdd\xf9\xa7\xab\xcb\xe1\xd5\x3d\xac\x98\x12\x3c\x91\x68\xce\x9f\xc1\x94\x0d\x33\x04\x0b\xf7\x13\xa6\x09\x74\xe6\x36\x8b\x33\xf4\x3c\xa7\xe0\xfe\x00\x60\x66\xdf\xb3\xd1\xcf\x44\xce\xde\xdc\x3a\x5b\x3a\x78\x75\xb5\xa5\x7a\x92\xea\x6f\x54\x8e\xc5\xb2\x17\x4a\x54\x5e\x7f\x71\x15\xb5\xd6\xbf\xa8\x90\x5b\xbb\xb2\x56\xa3\x97\xf6\x99\x16\x7b\xdd\x59\x57\x2b\xaf\xe1\xeb\x5d\xb3\x44\x09\x1a\xc9\x97\x85\x7a\x12\x39\x53\x34\x25\xc8\x76\x66\x0f\xe7\x0e\xe1\x9f\x2e\x4d\xc3\xef\xe1\x82\xad\x95\x72\xf8\x44\x94\x1d\x7e\xaf\x02\xf6\x2a\xe0\x7e\xa8\x80\xef\x2d\xdb\x3f\x26\x59\xbd\xc3\xca\xc4\xe0\x1d\xe3\xf5\xaa\x05\x69\x18\x7b\xa2\xb5\xa8\x26\xe4\x89\x24\x20\xe5\x29\x81\xb5\xd2\x68\x65\x97\x89\x20\xf8\x51\x0b\x7c\x31\x7f\x0e\x25\x97\x06\xe4\x7e\xb4\x9b\x5b\xb8\x4b\x10\xc7\x9f\xbe\x7b\xbd\xcb\x42\x2f\x77\xfc\x1a\x25\xbc\x6f\x21\x48\x66\x29\x46\x60\x90\x60\xff\xab\xb5\x04\xaf\xb8\x2d\x82\x2f\xde\xc3\x45\x11\x0e\x77\x8f\xb4\xae\xdb\x50\x09\x76\x2c\x34\x25\x0a\xc7\x58\x61\x7d\x68\x66\x44\x1d\xa1\x6b\x06\xcf\xee\xb1\x7c\x3c\x40\xee\xca\xd3\x6c\xa5\xb0\x32\xbc\x42\x6a\xfd\x3b\x31\xe0\xaf\xcf\xc7\xfb\xeb\xbb\xbf\xbe\x9b\x57\xa6\x0f\xf3\x6c\x59\xe1\x5d\x5d\x8c\x6b\xf9\xbc\x76\x77\x7f\x99\x16\xdf\xef\x15\xf6\xba\x4e\xae\x9d\x5e\x68\xa6\x72\x56\x7f\x5b\x99\xff\xeb\x6f\xab\xfe\xb6\xea\x6f\xab\x3d\x58\xe1\x37\x77\x18\x36\x70\xf7\x37\xf5\x18\xae\xd2\x4e\x37\x86\xbc\x2b\xb4\xd1\x75\x40\xef\x7e\xed\x8a\x6d\x57\x7c\x43\xdf\x87\x8f\x30\x98\xe4\x6b\xa4\xb5\xed\xf4\x32\x37\xf9\x22\xbd\x7e\xfa\x82\x37\x7e\x8f\x40\xb8\x53\x04\xc2\xfd\x98\xeb\x8b\xa4\xc0\xbd\x8d\xc5\xf4\xed\xd3\xde\x7a\xa8\xc1\x3e\xb1\xab\x4f\xec\x82\xdf\x7b\xa8\xc1\xdd\x51\xeb\xcb\x4a\xd7\x3c\x26\xe3\x4a\x94\x80\xff\xe7\xb8\xea\xf9\x29\x3d\x09\xdd\x40\xa5\x07\x45\xa6\x1b\xb4\x4e\xe3\x5d\x16\x91\xba\xe2\x31\xe9\x1c\x49\x50\x7a\x79\xcf\x65\x70\x37\x4f\x23\x8b\x97\x06\xfe\xc2\x92\x78\xcb\x96\x7f\x89\x86\x9d\x06\x02\xee\xad\x3c\x2b\x17\xea\x4b\x8d\x2f\x28\x38\xd4\x3b\xf2\x54\x74\x63\xe3\x2e\xa6\x71\xdc\xc2\xcc\x9b\x9f\x7b\x96\xde\xfc\xf8\x65\x30\x83\xba\x73\x74\x30\xab\x84\x6f\xbf\x0f\xbb\x4a\x38\xe2\xd7\xb0\xac\x2c\xdd\xfb\x2f\x8e\xab\x2f\xa3\xe4\x9e\xb7\x77\x5c\xae\x2f\x95\xc3\xf7\x10\x3f\xcb\x6c\x1d\x3d\x86\x4e\x6f\x6a\xd9\x9f\x09\xf7\xa6\x96\x77\x6d\x6a\x31\x2e\xda\x71\x86\x05\x61\xaa\x41\xa4\xae\x5e\x27\xf0\x7a\x88\xb9\xe0\xa4\x0e\x68\x00\x69\x89\x16\xd9\x0b\xd9\x5f\x55\x5f\x96\xed\xc5\x0a\x06\x41\x26\xe4\xf1\x3f\x8a\xbf\xbd\xb0\x5e\xaa\x00\xb1\x24\x3a\xc9\x60\xfd\x4b\x7d\x47\xe7\x36\x50\x69\xfb\x5c\x49\xac\x4a\xa2\x20\x04\x51\xaf\x8c\x67\xba\x31\x6f\xbf\xaf\x14\xc9\xda\xa0\x5f\x37\xb6\xa9\xbe\xf1\xdd\x0e\x90\xdb\x19\x6a\xd2\xfd\x82\x9c\x32\x2d\x8d\xf2\x69\x71\x31\x48\xf4\x4c\x93\x04\x10\x45\x20\xe3\xb1\xed\x06\xf8\xdd\x45\x3c\xb4\xee\xfc\x9b\xc6\x3d\x34\x71\x87\x26\x96\xd0\xc5\x9e\xba\xab\x9c\x69\x47\x6c\x90\xce\x0a\xda\xd0\x0a\x03\xec\x97\xc1\x09\x3e\x11\xf5\x5a\x6c\x60\xd3\xb3\xbf\xf4\xdc\x0b\x32\x25\x82\xb0\x88\xec\xa1\xb7\x7d\x9d\x30\x90\x9f\xcd\x24\x6d\x0c\x88\x87\x12\x08\xa7\xaa\xb8\xd5\xd3\x4a\xa2\x6e\x9f\x49\xde\x67\x92\xf7\x99\xe4\xd5\xa3\xde\x67\x92\xf7\x99\xe4\x8d\x39\x10\x31\x49\x88\x22\xad\x52\xc5\x19\x3c\x7e\x2b\xa9\xc2\xf4\xfe\x65\x08\x16\x66\x2e\xbd\x6c\xf1\xbb\xd1\x2c\xdc\x86\xef\x85\x66\x61\xce\xda\x2a\xf3\x43\xe9\xc7\x86\x10\xeb\x57\x37\x49\x6c\xc2\x34\x4a\x76\x89\x33\x78\xfd\x5d\xb2\x8e\xea\xd0\x7b\x1b\x05\x0a\xb6\xee\xe5\x38\x49\xed\x08\x74\x9b\xb8\xf5\x18\xbe\xdf\x79\xef\x0b\x07\x6d\xa3\xfb\x7d\xe5\xa3\x1b\x27\xa5\xec\x8b\xc5\xe6\x0b\xe2\x91\xbd\xf5\xe6\x8d\x73\x25\x6a\xcc\xf0\xdd\x4e\xb7\x37\x56\xf5\xc6\xaa\xde\x58\xd5\x1b\xab\x7a\x63\x15\xea\x8d\x55\x6b\x1b\xab\xbe\x20\x99\xaa\x37\x5c\xf5\x62\xd5\xee\xa6\xbb\xaf\x5a\xe6\x3e\x59\xeb\x3a\xa3\xa4\x17\x39\x54\x2b\x23\xef\xed\xb4\x7f\x5d\x11\x72\x7f\xe3\x46\xf0\x7e\xf8\x95\x7c\x69\x96\xb4\x4d\x60\xb1\xdb\xd1\x2f\x36\xae\xb8\x2f\x1d\xda\xb8\x56\x7d\xd8\xf3\x92\xc5\xe9\xc3\x9e\xfb\xb0\xe7\xbd\x0b\x7b\xde\xb9\xb2\x92\x71\xb9\x0c\x90\xc8\x94\xce\x5a\x9a\xff\xec\xee\x6c\x48\x34\x02\x52\x30\x28\xc7\x31\xc9\x12\xbe\x00\x4b\xca\x92\xeb\xdc\x75\x71\x53\x93\xa8\xf7\xfd\x46\x77\x23\x7f\x2d\x9d\x63\x5f\x64\xd2\x62\xde\x7b\x21\x85\x1e\xff\xa3\x92\xce\xdf\x09\x2f\x93\x21\xf2\x99\x4a\xb8\x95\x56\x13\xf6\x88\x35\x3f\x09\x4a\x17\xda\x7b\x70\x92\xab\x20\x77\x4f\x6a\xc1\x2a\x23\x42\x2d\x82\x37\x49\x9a\xa9\xc5\x7f\x8e\x18\x55\xde\xc3\x46\x67\x8c\x0b\xc3\xd5\xf4\xc7\x73\xcc\xe2\x84\x08\x7d\xa9\xba\x76\x22\xcc\x18\x57\x20\x6e\xc0\x0c\x62\xf4\x44\xb1\x11\x4e\x06\x37\xe7\x9d\xfd\xcc\xef\xe8\x74\xbd\x76\xb1\xba\x15\x77\xdd\xa7\x84\x4f\xa0\x82\x65\x5e\xd6\xe9\x75\x03\xbd\x67\xb4\xb4\x73\x6f\xc5\x10\x14\x96\x8f\x55\xe0\x90\x72\x16\xfa\x78\x29\x94\xc8\x8a\x77\x4b\x18\xf3\xcb\x5f\xad\xc0\x8d\x94\x9f\x59\x00\x12\x78\x0c\x43\xae\x8e\xc3\xfd\x18\x76\xe8\x7e\x2b\x5a\x76\xbf\xb8\xd2\xdd\xf0\xa3\x20\x4a\x2c\xc6\x58\x29\xcd\x64\x76\x89\x71\x72\x8f\xe5\x63\x67\x8c\x93\xd2\xcb\x7b\xce\x72\x4a\x18\x27\xe5\x81\xbf\x38\xcb\xe9\x48\x9d\x2b\x38\xd3\xfb\xcb\x8f\xef\x7a\xd6\xd6\x98\xf8\xef\x25\x57\xbe\x1b\xef\x59\x65\xa6\x7d\x8f\x79\xf3\xcb\x98\xe9\xde\x8c\xb0\xc2\xcf\xbf\xc4\x93\x5b\xbe\x9d\xfa\x23\xba\x6c\x8d\xbe\xb8\x42\xb8\x15\xa1\x63\xc5\xdc\xde\x49\x41\xdc\xaa\xdc\xb4\xeb\x51\xbd\x8c\x99\x3b\xd8\x8d\x75\x62\x80\xce\xcb\x68\xe5\xfe\x0c\xb9\xa8\xa0\xa2\xf4\xec\x1c\x12\xad\xa9\x0c\x13\xe2\x23\x2e\x8c\xe4\x15\xdb\x33\x6b\xcc\x76\x06\xcc\xf7\x04\x0d\x50\x6c\x6b\xf3\x0b\x92\x09\x22\x09\x53\x46\xd5\x36\xf5\xae\x5c\x79\x7f\xca\xac\x85\xe8\x0c\x2b\x7c\x8a\x15\x4e\xf8\xec\x08\x0d\x7c\x61\x7f\x2a\x11\x4e\x24\x47\xd8\x11\x0e\x89\x5d\x13\x98\xc5\x8e\x3d\x60\x14\xf1\x34\xa3\x89\x47\x6a\xf7\x56\x7c\xca\x62\xfa\x44\xe3\x1c\x27\x1e\x19\x7b\xc4\x86\x4f\x84\xa9\x1c\x54\x38\x9c\x24\xc8\x76\xeb\x5e\x08\xf4\x73\x37\x4a\x49\x53\x9a\x60\x81\x14\xb7\xa3\xbd\xb6\x6d\xa1\xfb\x39\xf1\x63\x75\x28\xe0\x28\xc5\x8f\x44\x22\xaa\x50\xc6\xa5\xa4\x93\xa4\x38\xc6\x0f\xe7\x08\xc6\x7d\x7a\x71\x0e\xa6\xd1\x48\x21\x6e\xf8\xa0\xeb\xdc\xfa\x09\x5c\x8f\x29\x66\x8c\x40\xc7\x5c\xcd\x89\xb0\xdd\xdb\x97\xdf\xda\xca\xf9\xd6\x18\xd1\xed\x16\xd3\x70\x64\x6f\xa7\x74\x76\xd6\x38\xbb\xaa\x9b\xdd\x74\xcd\x76\x45\xf3\x05\xbc\xb4\xdd\xb5\xc1\x0b\x2a\xcb\xea\xe0\xbb\x70\xd9\x96\x46\xfc\x1a\xf8\x68\xbf\x53\x45\xb0\xd7\x02\x5f\x64\xdd\xbe\x54\x15\x70\xcf\xf5\xbf\x1e\xd9\xad\x47\xb1\xef\x03\x30\x76\xb8\x38\x7d\x00\x46\x1f\x80\xf1\xc5\x06\x60\xb4\x6b\x13\x34\xde\x3a\x5d\x6f\xcd\x0a\x52\xde\x28\x20\x7e\x05\x51\x0a\xcb\xc7\xae\x35\xa5\xb4\xa8\x7c\x1e\xbf\x0b\xa9\xbe\x71\xc2\xaf\x21\xdd\xf7\x75\x8a\x76\x5a\xa7\x68\xef\xa6\xdd\x0b\x7e\xbd\xe0\xd7\xcb\x36\x1d\x27\xdc\xcb\x36\xfb\x2b\xdb\xbc\x95\xc2\xf2\x25\x41\xe8\x6a\xe1\xa9\x94\x19\xb3\x34\xc0\xd6\xc0\xd1\x80\x7b\x20\xcf\x12\x8e\xe3\x55\x41\x38\xbf\xa2\x42\xae\x59\x22\x9a\x99\x76\xf5\x07\xef\x41\x32\xd3\xe3\x34\x23\xfe\xdd\xc4\xd2\x86\x53\x7e\xd3\x30\x5a\xa0\x57\x08\x1e\x2b\x05\xa1\xbd\x94\xd6\x51\xa5\xe1\x4e\x0a\x86\xfc\xee\xbd\x50\xf1\x6b\xa8\x13\x5f\xb0\x43\xa0\x37\xfa\xff\x3e\x0b\x9d\xef\x8d\x94\xda\xab\x72\x7d\x16\x65\x6f\xc4\xef\x15\xdd\x5e\xd1\xdd\xf9\x32\xee\x93\xa2\xfb\x86\x12\xb5\x49\x0b\x79\x91\xb2\x85\x9b\xc9\xd6\xbd\x68\xdd\x8b\xd6\xbd\x68\xfd\xc5\x8a\xd6\xfb\xb1\xc2\xbd\x5c\xdd\xcb\xd5\xbd\x5c\xdd\xcb\xd5\xbd\x5c\xbd\xf3\x65\xec\xe5\xea\x8a\x5c\x0d\x7f\xb9\xb4\xe8\x75\x85\xec\xce\xc2\x75\x87\x1c\xe8\xf7\x22\x59\xf7\x52\x75\x2f\x55\xef\xb7\x54\xbd\x37\x13\xfa\xf2\x12\x1f\xfb\xd4\xc1\x3e\x75\xb0\x4f\x1d\x7c\x8b\xd4\x41\xc7\x4b\x96\x49\x28\x75\xc1\xe2\xa7\x1a\x07\xda\x5b\xd9\xa2\x18\xed\xa6\x61\x1d\xbb\x5a\x6a\x07\x2c\xbf\x49\x65\xa9\xd2\x6f\xae\xa1\x3d\xaa\x37\x75\xe0\xa4\x05\xcd\x28\xdc\xf8\x56\x23\x82\xfd\x6c\xdf\x7c\x5f\xe0\xdf\xf5\x51\xf7\xf5\xa6\x50\xb0\x6b\x7d\xbd\xa9\x17\x9c\xb7\x3b\x5c\x2b\x66\xee\x68\xd4\xd8\x78\xdf\xe9\xb4\xdf\x3c\x40\xae\xfd\xa4\xbf\x69\xb8\x5c\xe3\x4d\x52\x4b\xd6\x39\xfe\x47\xe3\x45\xf1\x06\x65\xb6\xd6\xbe\x1d\x3e\x11\xf5\xa5\x5c\x0d\x7d\x99\xad\xbe\x1e\xc4\x8e\xa6\xbb\x11\xeb\x7f\xb7\xb3\xed\x8b\x8a\xf5\x45\xc5\xfa\xa2\x62\x7d\x51\xb1\xbe\xa8\x18\xfa\x9d\x17\x15\x5b\x5b\x7c\x34\xe3\xf8\x52\x24\xc8\xbe\xa8\x58\x2f\x44\xee\x6e\xba\xbf\x2f\x21\x72\x0f\x2d\x08\x7b\x51\x3d\xcd\x5b\x10\xde\x1c\xe7\xc3\x8d\xa4\x2b\xd6\x87\x5b\xd0\x1e\xef\xc3\xfe\x5f\x8f\xf7\xd1\xe3\x7d\xb4\xcc\xba\x0f\x66\xed\xf1\x3e\x50\x1f\xae\xd9\x87\x6b\xee\x73\xb8\x66\x87\x6d\xec\xf1\x3e\x3a\x8a\x73\x2f\x84\xf9\xe1\x64\xae\xb5\x70\x3f\x7e\xae\x2b\x1a\x7b\x2b\xa5\xb9\xb1\xfe\xce\xf0\x3f\xaa\xd3\xde\x0b\x95\xe4\x15\x71\x40\x9a\xe8\xba\xb3\x02\xf2\x3e\xf0\x40\xdc\x68\xfb\xc4\xc5\x3e\xc4\x7a\xff\x43\xac\xf7\x2e\x71\x71\x6f\x24\xd9\x5e\xdd\xeb\x73\x17\xfb\xdc\xc5\x5e\x19\xee\x95\xe1\x9d\x2f\xe3\x3e\x29\xc3\x6f\x2c\x61\xbf\x20\x2e\xc8\x76\xb2\x76\x2f\x6a\x9b\xf7\x7a\x51\xbb\x17\xb5\xbf\x50\x51\x7b\x3f\x56\xb8\x97\xb3\x7b\x39\xbb\x97\xb3\x7b\x39\xbb\x97\xb3\x77\xbe\x8c\xbd\x9c\xfd\x6a\x38\x21\x4d\xc2\x76\xc7\x7c\x9b\xf7\x24\x69\xf7\x52\x76\x2f\x65\xef\xb7\x94\xbd\x37\x13\xea\x31\x43\x7a\xcc\x90\x1e\x33\xa4\xc7\x0c\xd9\x48\xbe\xf9\x17\x7b\x2c\x3f\x04\x37\xb1\xbf\xb2\x3f\x7c\x9f\xf0\xc9\xfd\x22\x23\xfa\xbf\x67\x34\x25\x4c\x82\x34\x4a\xd5\x22\x94\x67\x5a\x56\xbe\xbe\xe6\x1f\xee\xce\xaf\x3e\x5d\x84\xd9\x34\x1f\x2e\x1f\x2e\xee\xcf\x6f\x06\xb7\x7e\x5d\xfc\xac\xc2\xb5\xb0\xdf\x95\x44\x32\x4b\xf2\xb7\x44\xeb\x9e\x70\x6a\xee\x14\x56\xb9\xdc\x6c\x64\xb7\xc3\xbb\xe1\xed\x4f\x90\x0d\x34\x3e\x3b\xbf\x1b\x7c\x7f\x51\x22\x88\xd2\xf3\xc1\xe9\x5f\x1f\xce\x6f\xdb\x9f\x0f\xff\xeb\xfc\xee\xfe\xae\xed\xe9\xed\xf0\x62\x38\xb8\x6b\xff\xfa\xe3\xe0\xfc\xe2\xe1\x76\xb8\x74\x3d\x96\x8e\x76\xb9\x12\x22\x61\x91\x20\xce\x1f\x45\x96\x6b\x88\x62\x0d\x91\x17\x1f\x1d\x3b\x6c\xea\xeb\x04\x3d\x58\x9d\x9e\xda\xc6\x0d\x83\x0d\x1a\x32\xca\x48\x4c\x25\x9e\x24\x24\xae\xb5\xe4\xd6\xb0\xad\x25\x5c\x1a\xd4\xb3\xd6\x9e\xbd\xc8\xa9\x79\x5e\x64\x78\x01\x82\x1c\x45\x45\x58\xdc\xd0\x87\xd9\x87\xd6\x1e\x98\xe6\x5d\xf4\x89\x94\x7a\x8a\x72\x21\x08\x53\xc9\x02\x91\xcf\x54\x2a\x59\x6b\xd4\x6d\x5f\x5b\xb3\xf6\x4e\xf5\x0d\xce\xb1\x44\x13\x42\x58\x79\xfc\x82\x24\x04\xcb\x86\x31\xdb\xdd\xef\xb6\x2c\x7e\xaf\xac\x35\xc6\x5c\x46\x53\x4c\x93\x5c\x90\xca\x69\xe1\x69\x86\x05\x95\x9c\x0d\x3f\xeb\xbb\x4c\x1f\xe4\x6b\xf8\x9c\x8b\xcd\x4e\xcc\xf0\xaf\x21\x05\x5f\x95\xff\xf9\xe9\xbe\xfc\xaf\xd2\x99\xbf\xb8\x2f\xff\x6b\x39\xad\x07\x0d\x57\x29\xfb\x10\x7d\xba\x3f\x41\x9f\x20\xc4\x49\xa0\xfb\x39\x36\x14\x7b\x71\x7f\x82\x2e\x88\x94\xf0\x4b\xf1\xb1\xa2\x2a\x81\xb9\x7d\x4f\x19\x16\x0b\xe4\xa6\x6f\x12\x5d\x71\x34\x47\xc4\x2f\x4d\x75\xf1\xd8\xdf\x72\x06\xaa\x7b\xb1\x7a\x17\x7c\x46\x23\x9c\x6c\xb7\x88\x83\xab\x12\x1f\xb8\xbe\x5d\xba\x14\xe1\xdb\xf5\xb5\x18\x5c\x9d\x41\x12\xa9\x1b\x6a\xc3\xcc\xaf\x88\xd4\x44\x12\x71\x16\x5b\x2f\x8d\xbe\xfd\x17\x81\x50\xff\x37\x0e\x89\xb8\xb9\xa4\x6c\xa6\x5b\x44\xc7\xe8\xfa\x76\xc4\xae\x45\x6c\x0c\xa1\x44\x4b\xc3\x86\xe6\xa8\x44\x8c\x2b\x44\xd3\x8c\x0b\x85\x99\xd2\x8a\x00\x88\x01\x76\x45\x0c\x07\x38\xe5\x69\x9a\x2b\xac\x0f\x5a\x6d\x51\x99\x31\x87\xdc\x11\x75\x1e\x83\x6b\xa5\x61\x0d\x8d\x9c\x50\xcc\x25\x13\xba\x7d\x2d\xa3\x94\x75\x68\x1a\xd7\x54\x59\xd7\x04\x16\x02\x97\xa5\x89\x0f\x54\x91\xb4\xfa\x7e\xc7\x20\xcf\x7f\x36\x1a\x08\x4e\x4d\x52\x05\x11\x03\x11\xcd\xa9\x22\x91\xd2\x47\x70\x23\x9a\x78\xb8\xfa\xf1\xea\xfa\xe7\x50\x82\xf8\x30\xb8\x3c\xfb\xf3\xbf\x97\x7e\xb8\xbd\xac\xfd\x30\xfe\xe9\xcf\xb5\x5f\xfe\x7f\x4b\xe9\xa9\xda\x53\x4d\xcf\x0f\xe6\x72\x08\x22\x35\xd8\x84\xdd\x54\x11\x4d\xf1\x8c\x20\x99\x67\x9a\x02\xe4\x51\x79\x7f\xb5\x48\x79\xc1\x71\x4c\xd9\xcc\x64\x80\x5e\x50\x45\x04\x4e\x2e\x71\xf6\xd1\xd9\xaf\x37\x58\x9d\xff\x7b\x57\xca\xd7\xfd\xf0\xcb\xe0\x32\xcc\xf8\xfd\x70\x73\x7b\x7d\x7f\xbd\x74\xd6\xa5\x16\xea\xc7\x48\x3f\x3e\x81\xff\x45\xc7\x48\xb7\xee\x25\xdf\x94\x28\xac\x35\x02\xf4\xb5\x49\x9a\xf3\x89\x34\x94\x25\x70\x6a\x32\x41\x53\x0a\x57\x8a\xb1\xe0\x7d\x63\x84\x6b\xaf\x3d\xf8\x73\x63\x3e\x00\x6d\xd9\x5d\xca\x2c\xc6\x22\x46\x7f\x93\xd5\xf4\x71\x30\x1c\x9b\x1f\x48\x8c\x0e\xd1\x5c\xa9\x4c\x9e\x1c\x1f\x3f\x3f\x3f\x1f\xe9\xb7\x8f\xb8\x98\x1d\xeb\x3f\x0e\x09\x3b\x9a\xab\x34\x31\xe9\xf2\x7a\x15\x4e\xd0\x8d\xe0\xfa\x0a\x01\x05\x9d\x08\x8a\x13\xfa\x1b\x89\xd1\xc4\xf0\x3f\x3e\x45\xbf\x46\x5c\x90\xa3\x62\x63\xac\x51\xc9\xde\x23\xd6\xf0\x74\xac\x5f\x6a\x60\x26\xd5\xfd\x44\x31\x89\x68\x6c\xc5\x0c\xc2\x22\x0e\x96\x47\xe3\xab\xd0\xed\xb9\x4c\x43\xad\xd1\x64\xb9\x2a\x96\x33\x50\x56\x70\x4c\x82\x6c\x77\xc5\xcb\x04\xa7\x15\x9f\x73\xa3\xb6\xe6\x5a\x45\xd7\x77\x2b\x86\x5b\xd5\xbd\x9a\xe9\x09\x47\x3c\x41\x93\x7c\x3a\x25\x22\x74\x48\x1f\x68\x6d\x86\x4a\x24\x48\xc4\xd3\x14\x24\x06\xfd\x55\x2e\x0d\x55\xc3\x8a\xd9\xd1\x1e\x8d\x18\xec\xbf\x56\x73\x80\x02\x62\x0e\xac\x8e\x11\x12\x23\xcc\x16\xa6\x9b\x49\x3e\x0d\xdb\x37\x30\x14\x38\x46\x54\x8d\xd8\x20\x49\x90\x20\x29\x57\x24\xc8\xa1\x04\xe7\x59\x79\xc1\x81\x45\x0a\x92\x25\x38\x22\xb1\xa1\x87\x84\x47\x38\x41\x53\x9a\x10\xb9\x90\x8a\xa4\x61\x03\x5f\x83\xad\x46\xaf\x19\x95\x28\xe6\xcf\x2c\xe1\xd8\xce\xa3\xfa\xd9\x37\xe5\xd3\x38\x74\x10\x01\x43\x21\xb8\x80\xff\xf9\x91\xb2\x78\x67\x1c\xea\xe1\x6e\x78\x1b\xfe\xfb\xee\x97\xbb\xfb\xe1\xe5\x7a\xdc\xc7\x53\x16\x0c\x0f\x74\xf8\x13\x74\x67\x16\x81\x0b\x2d\x11\x89\x96\x49\x5d\x5a\x52\x2a\x7e\xe0\xf1\x86\xdc\xf7\x72\x70\xf5\x30\x28\x71\x94\xbb\xd3\x1f\x86\x67\x0f\x15\x7d\xc0\xce\xaf\x24\xc3\x1b\xf5\x2f\xfc\xed\xf4\x87\xf3\x8b\xb3\x71\x83\xc2\xf8\xe1\x76\x78\x7a\xfd\xd3\xf0\xb6\xd0\xed\x1a\x97\xa8\x32\x98\x2a\xb3\xba\x37\x4c\x69\xce\x63\x34\x59\x34\x03\x42\x68\xc9\x39\x01\x5f\x6c\x01\x89\x62\x5a\x3d\x01\xde\xe4\xb0\x39\x8a\x2f\x52\x1e\x93\x03\xfb\x0e\x20\x69\x18\xe3\x8a\x91\x98\x9b\x1b\xd6\xbd\x63\x16\x18\x2a\x0c\xc8\x85\x5f\xb8\x13\x34\x40\x52\xbf\x98\xeb\x43\x2d\xe8\x6c\x06\x86\xc3\xca\x50\x4d\x6b\xf6\x53\x58\x5e\xf8\xce\xec\x7f\x26\x38\x9c\x73\xdd\xad\xb5\x38\x7b\xab\x84\xf9\x10\x50\x57\xca\x2d\x0a\x0c\x06\x87\x86\xa1\xb9\xcd\xd2\x8b\xd0\xba\x5e\xe6\x3c\x1a\x7b\x91\x3e\x5c\xc0\xb6\xa4\xb1\x77\x66\x82\x3c\x51\x9e\x07\x9f\x5a\x60\x8f\xd2\x8e\x37\x36\x5f\x2c\x00\x2c\x9b\x31\x8a\x54\x9a\xf1\xe4\xd1\xd8\x82\x66\x61\x4f\xd0\xc2\x54\xf0\xb4\xa1\x8d\xf2\x31\x39\xbf\xbe\x53\x02\x2b\x32\x5b\x9c\x59\x96\xb1\xf9\xf1\x38\xbb\xfe\xf9\xea\xe2\x7a\x70\x36\x1e\x0e\x3e\x95\x4f\xbc\x7f\x72\x77\x7f\x3b\x1c\x5c\x96\x1f\x8d\xaf\xae\xef\xc7\xee\x8d\xa5\x24\xdf\xd2\x41\xfd\x9e\x2e\xbf\x78\x82\x34\xcb\x05\xd6\xe8\x00\xef\x02\xfe\x38\x21\x53\x2e\x0c\x9f\x4f\x5d\xe8\x82\x15\x61\xdc\xda\x5a\x5d\xac\x32\x8b\x13\xb0\x8c\x35\x35\x69\xac\xde\x4a\x10\x9c\xc2\x3d\x81\x19\x1a\xb2\xf8\xf0\x7a\x7a\x78\x67\x7e\x4c\xb1\x78\x24\xc2\x7f\xfa\x2c\xa8\x52\x84\x95\x54\x3a\xec\x86\xec\x95\xc4\xa2\x83\x23\x74\xab\xf9\xbe\x7e\xdf\x5f\x6a\x9a\xd8\x63\xa2\x30\x4d\xa4\x1d\x6c\x69\x5d\x4f\xd0\x05\x16\xb3\xc2\x0e\xf7\x35\x9f\x4e\x4d\x63\xdf\x98\x61\xe8\x3b\xac\x34\x8b\x06\xde\xab\x49\xc3\xdd\x8b\xd0\x9f\x7d\xd9\xcb\xc3\x75\xaa\x7a\xc8\xb6\xa3\xa9\x87\x1b\x58\x71\xa3\xb1\x97\x74\x43\xfb\xa4\x81\xd6\x60\xe2\xe6\xf1\xf2\x4b\xa6\xb9\xed\x3a\x39\x95\x5f\x6c\x20\x27\x93\x4b\xa5\x77\x7e\xaa\xb5\xcd\x06\x5a\x22\x9f\xa9\x35\x18\x84\xe3\xae\x90\x50\xd1\x0c\x98\x57\x71\x96\x11\x2c\x64\xd3\x6e\x97\xc5\xc0\x96\xbd\x37\x3d\x85\x7d\xd8\x4d\x76\xfd\x1c\x20\xce\xc0\xe0\xe0\x85\x88\x0a\x45\x76\xa0\x01\xd3\x56\x8d\x02\x6e\x00\x6d\xe9\xda\x22\x1b\x5d\x52\xa9\x95\x46\xf3\xe3\xf7\x16\x72\x69\x33\x82\xf8\x38\x38\xbf\xa8\x08\x17\xe3\xb3\xe1\xc7\xc1\xc3\xc5\x72\x33\x61\xe9\xbb\xea\x16\xa3\x43\xa4\x9f\x97\xfd\xe6\x74\x6a\xee\x0c\x07\x1c\x65\x54\x5a\xc2\xc0\x68\x65\xa1\x6a\x8c\xbd\x3a\x26\x59\xc2\x17\x29\x61\x60\xe2\x29\xdd\x84\x7a\x3d\xa7\x98\xda\xab\x25\x18\x2c\x58\x71\xac\xd9\x0d\xae\xb1\x43\x87\x56\x45\x62\x7f\xf3\x96\xc1\xaa\x2a\xac\xfb\xc6\x78\xcf\xec\x7f\xee\x14\x56\x1b\x9e\xb1\xc1\xe9\xfd\xf9\x4f\xc3\xb2\x7e\x78\xfa\xc3\xf9\x4f\x4d\x52\xcd\xf8\xd3\xf0\x6a\x78\x3b\xb8\x5f\x21\x9c\x54\x9a\x6c\x12\x4e\xa4\x1e\x70\xd5\x7b\x4a\xa5\x8f\x08\x8a\x0c\xe4\x15\xa2\x4a\xa2\x27\x2a\xe9\x84\x02\x40\x98\xf5\x44\x3e\x9c\x03\x67\x7d\xc2\x09\x8d\xa9\x5a\x38\xf1\xc5\xf4\x5b\xde\x47\xcd\x49\x6d\xfb\xc6\xec\x10\xfa\x27\xc1\xca\x67\x36\xc7\x4d\xfa\x04\x81\x6e\xfb\x04\x4a\x5b\xf0\x19\xd3\x82\x34\x9b\x11\x61\x86\x03\xde\x97\x70\x2c\xc1\x73\x3d\xaa\x50\x58\x29\x56\xcd\x0b\xad\x33\xc2\x88\x00\x10\x38\xdf\x89\x11\xa4\x04\x61\x5f\x69\x99\x2b\x4b\x68\x44\x55\xb2\x40\x11\xd8\xb0\xc0\x9c\x99\x62\x86\x67\x56\x38\x00\x35\xa7\x42\x12\x7f\x35\x28\x6a\xd7\x53\x6b\xda\xbf\xa7\x64\xc3\x63\xf6\x70\x75\x36\xfc\x78\x7e\x55\x26\x81\x1f\xce\x3f\x95\x44\xd8\xcb\xe1\xd9\xf9\x43\xe9\x36\xd7\x92\xec\x72\xb9\xbe\xda\x6c\xc3\x51\xf4\x2f\x9d\xa0\x33\xf3\xe9\x89\x5e\xdc\x06\x88\x38\xaf\xfc\x56\xd6\xe1\xd6\x85\xe4\xb9\x3f\x86\x4c\x89\x46\xbf\x44\x57\x13\x92\xf5\x41\x96\x6c\x48\xcd\xa1\x0a\xb5\xbe\xaf\xaa\x4e\xe5\xea\x94\xdd\x8b\x10\x74\x79\x54\x58\x96\xc2\x18\x06\x30\x1a\xb4\x19\xb1\x1a\xdc\x5a\x05\xc3\xfe\x09\x5c\xd4\x69\x2e\x95\x71\x25\x02\x71\xa2\xc7\xbf\x48\xbd\xa0\xe0\x6a\x3c\x42\x77\x84\x8c\x98\xb3\x1e\xcc\xa8\x9a\xe7\x93\xa3\x88\xa7\xc7\x05\x3e\xe1\x31\xce\x68\x8a\xb5\x24\x4d\xc4\xe2\x78\x92\xf0\xc9\x71\x8a\xa5\x22\xe2\x38\x7b\x9c\x41\x04\x8c\x73\xa7\x1e\xfb\x66\x67\xfc\x5f\x2f\xfe\xf4\xed\xe1\xc5\x5f\xbe\xfd\x50\xb7\x90\xb5\xed\xff\x90\x45\x38\x93\x79\x62\x23\xe6\x44\xb8\x36\xee\xc8\xe7\x64\xd5\x7e\x5f\x95\xb7\x6b\x3b\xfd\xf5\xf4\xe6\xa1\x64\xb1\x2e\xff\xf3\x72\x78\x79\x7d\xfb\x4b\x89\x53\xde\x5f\xdf\x0e\x3e\x95\x18\xea\xf0\xe6\x87\xe1\xe5\xf0\x76\x70\x31\x76\x0f\xb7\xb1\xbd\xfd\xc8\xf8\x33\x2b\x2f\x8d\x74\x1c\xb0\xd6\xd3\x09\xfa\xc8\x05\xfa\xd1\xef\xe4\xe1\x04\x4b\xb8\x62\xdc\x9d\x25\x0f\x50\xc6\x63\x60\xbc\x88\x64\x73\x92\x12\x81\x13\x6b\x33\x90\x8a\x0b\x3c\x33\x37\xbd\x8c\x04\x56\xd1\x1c\xc9\x0c\x47\xe4\x00\x45\x40\x0d\xb3\x03\xd8\x14\x50\xb5\xf8\xac\x6a\xe7\xbb\xcd\x99\xa2\x29\x71\x2a\xb8\xfd\xe7\xbd\xd9\x8c\x0d\x36\xe7\xfa\xfe\x87\xb2\xb0\xf7\xf1\xe2\x97\xfb\xe1\xf8\xee\xec\xc7\xa5\xeb\x69\x3e\x2b\x8d\xec\x0e\x02\x90\x4e\x79\x92\xa7\x2c\xfc\x7b\xf3\xb1\x9d\x5f\xdd\x0f\x3f\x55\x47\x77\x3d\xb8\x2f\x53\xc6\x6d\x39\xc0\xed\xc3\xf7\xd7\xd7\x17\xc3\x92\x4b\xf8\xc3\xd9\xe0\x7e\x78\x7f\x7e\x59\xa2\x9f\xb3\x87\x5b\x83\x46\xb8\x6c\x9a\x6e\x04\x0d\x13\xd5\xd3\x0a\xa7\xb9\x6b\x56\xd8\x89\x13\x0d\x6c\x40\xb9\x39\xcb\x87\x01\xdc\x8e\x09\x07\x03\xab\xce\xa1\x37\xa9\x46\x66\xa4\x8d\xec\x50\x95\xb7\x09\xb5\xb3\xe3\xa5\x1b\xbd\x8c\x2b\xdf\xfb\x21\x18\x28\x50\xa3\x6c\xe3\x24\xe1\xcf\x26\x94\x37\xa5\xfa\x56\xb6\xc0\x68\xfa\x15\x59\x78\x08\x8f\x1a\x38\x5e\x79\x5b\x48\x24\x88\xba\xe4\x39\x53\x9b\x93\xdc\xe0\xaa\xc4\x77\x86\x57\x3f\x8d\x7f\x1a\x94\x29\xf0\xfc\x62\x39\xab\x09\x9b\x68\xb8\x8a\x07\x57\xbf\xf8\x4b\x18\x02\xbe\x0f\xbc\x86\x6a\x64\xd7\x28\xa1\x5a\xec\x8d\xb0\xd6\x5e\x13\x90\x68\x10\xa1\x60\x72\x48\xf5\xe4\x20\xc0\x34\x33\xfe\x24\xc3\x9f\xcc\x20\x4f\xdc\x1f\x95\xf6\x24\xac\x0b\x58\x53\x5d\x3c\x3d\xb4\x63\xb5\x6a\x86\x08\x7b\xa2\x82\x03\x9e\x2d\x7a\xc2\x82\x6a\x69\xdc\xb4\xac\xe7\x7a\x02\xff\xbb\x5e\x9b\x60\x18\xad\x30\xae\x3b\x2e\xd4\x99\x0f\xe4\xdd\xcc\x1a\xd2\x14\xd0\x5a\x0f\x65\x6d\x36\x74\xd4\xbf\x6d\xd8\x9c\x2d\x03\x7e\xcb\x13\xfe\x7b\x72\x46\x71\xa2\x19\xc0\xee\xe4\xc5\xc1\xd5\xdd\x79\x59\x7e\x2c\xab\x19\x01\x5f\xde\x58\x5e\x04\x43\xa5\x19\xb9\x53\x26\xee\xfe\x7a\x61\xb4\x0b\x00\x3d\x36\xe7\x36\x50\x2c\x40\x00\x72\x28\x28\x19\x16\xb2\xf2\x85\x44\x00\x84\x56\x04\x5c\xe9\x3b\x0b\xc2\x99\x9e\x38\x8d\x47\x8c\x7c\xce\x08\x93\x10\x1c\x60\xee\xb3\xc2\xd7\x2e\x8f\xd0\xf9\x14\x58\x82\x7e\x9d\xa1\x9c\x59\x07\x98\xbe\x70\xcd\x20\x0f\xb4\x28\x6b\x87\xe0\x35\x44\x30\xbc\x30\xe2\x82\xa5\x8a\xc1\x8f\xd8\xcf\xde\x89\x06\x8f\xa6\x5c\x33\x20\xbd\x8b\xb6\xbd\x13\x84\x99\xa4\x07\x48\x2b\x2c\xd5\x3d\x85\xd4\x01\xad\x50\xda\x10\x2e\xcd\x69\xec\x9f\xaf\x7f\x0d\xd4\xe2\x84\xc3\xcb\xa0\xf9\x2e\xa8\x5c\x05\x2d\xa2\x71\x62\x3c\x26\xe3\xee\x77\x42\xc4\x05\xb1\x7e\x96\xb5\xaf\x81\x55\x8c\xfd\x1e\xcb\xc7\x9a\xef\xe1\x9c\x49\x85\x59\x44\x4e\x13\x2c\x37\x0c\x42\x72\x36\x8e\x83\xb2\xc4\x71\x7b\xfb\x70\x73\x7f\xfe\xfd\x0a\x2e\x5f\xfd\xb8\x1e\x06\x14\x25\xb9\x73\xcf\x4d\x04\xc7\x31\xd2\xec\x73\xc6\x8d\x2b\xd0\x0a\xfe\x05\xf4\xb7\xc9\xeb\xf1\x01\x95\x25\xd8\xf1\x22\x1d\xc1\xda\x39\x42\x57\x02\xb5\x0b\x81\x22\xbd\x12\x28\x30\x79\xb8\xad\x06\xcf\xa2\x29\x48\x62\xad\x5b\x59\x82\xd5\x94\x8b\xd4\x70\xf9\xd2\xa4\x4d\xe3\xcb\x1b\xa5\x4c\x11\x21\xf2\x4c\x51\x87\xe5\x5e\x95\x52\xa1\xc2\x3b\x9f\x5d\x12\x29\xf1\x8c\x6c\xe3\x80\x6e\x52\x1e\xee\x7e\x0a\xff\x09\x0e\xe6\x2e\xb2\x7f\x69\x84\x2e\xf2\xdd\xd1\xd3\x35\xfb\x68\x02\x79\x6e\x78\x42\xa3\x0d\x03\xee\x3e\x0e\xce\x2f\xc6\xe7\x97\x5a\x89\x1f\xdc\x0f\x2f\x4a\xa2\x04\x3c\x1b\x7c\xbc\x1f\xde\x5a\x10\xeb\xc1\xf7\x17\xc3\xf1\xd5\xf5\xd9\xf0\x6e\x7c\x7a\x7d\x79\x73\x31\x5c\x11\x99\xd3\xda\x78\xdd\xba\x5a\x7d\xf5\xa4\xf6\x0b\xec\xb0\xe6\x65\xa1\xbd\x0c\xb2\xc6\x30\x4d\xc0\x09\xce\x8d\x33\x1c\x23\xc6\x63\x02\x3f\x4b\x67\x9d\xf1\xc8\xd1\xe8\x5c\x7d\x95\x24\x08\xe7\x8a\xa7\x18\xbc\x36\xc9\x62\xc4\xf0\x44\xb3\x56\x9c\x24\x41\x78\x97\xc8\x19\xd3\x2c\x56\x37\x66\x20\xda\xa3\x84\x68\x76\x9e\x05\xc9\x7e\xd6\x6f\x30\xa5\x0c\x22\x6d\x53\x2c\x1e\x8d\x9b\xa9\xe8\xb2\x38\x14\x12\x61\x39\x62\x7a\x5c\xc4\x1a\x86\xba\xac\xf0\x49\xa7\xb7\x5a\x57\x27\xc5\x8f\x44\xaf\x4a\x9a\x47\x73\x94\x09\x3e\x13\x44\x4a\x6b\x5b\x8e\x30\x33\x01\x08\xf6\x75\x7d\x0d\x8d\x18\xe3\x7a\x29\x9c\x09\x3b\x26\x19\x61\x31\x61\x11\x35\x69\x7d\xe0\xbb\xf7\xa6\xcd\x99\xc0\xd9\x1c\x49\x0e\x4e\x6f\x58\x76\xb0\x5f\x99\x8f\xdc\x4d\x66\x66\x6c\x1e\x87\x16\x68\x91\x6b\x3e\x71\x0d\x72\xa2\x59\x65\xf8\xd8\x5d\x86\xce\xed\x62\xec\x80\x69\x96\x10\x65\xc0\xfa\x61\xc9\x61\x33\xf4\x5a\x97\xf6\x43\x6f\x53\xd3\x26\xe8\x0b\xdb\x8d\x19\x4b\x3b\xa2\xa3\x06\xcb\xb6\x3d\x52\xe8\x07\xcc\xe2\x44\xb7\xe2\x7c\x18\xe5\xb3\x08\xa9\x28\x03\x4d\x35\xee\x34\x6e\x73\x8b\x46\x38\x97\xdb\x5c\xa3\x95\x5c\x4c\x63\x15\x3c\x2c\x82\x42\x80\xbc\x6d\x22\x26\xac\x6e\xa6\x59\x24\x4e\xb8\x5d\x25\xf3\x7a\x6e\xea\x3f\x21\x18\x4d\xcb\x35\x9b\x09\xca\x22\x9a\xe1\x64\x23\xdd\xaf\x12\x8c\x6f\x63\xdc\xbf\xa6\x53\x4d\x3e\xdf\xd4\xdc\xb6\x8a\x88\x14\x12\x94\xed\x30\xfd\x16\xae\x61\x49\xb2\x59\x0d\x44\x16\xd1\x24\x58\xf0\xdc\xf8\xe3\x60\x5d\x48\xdc\x70\x54\x8f\x9a\xb6\x5b\x9f\x0c\x5c\x0e\x80\xde\x60\xb3\x4d\xe4\x4f\xdb\xfa\x55\x5a\xb1\xbd\x9b\x60\x3c\x9c\xdc\x34\xb7\xd9\xb4\x03\xc1\xc3\x7f\x2e\xa3\x9d\x4b\x9c\x69\x9a\xb1\xb0\xfd\xb8\x98\xa3\x55\x92\x6c\x55\x30\x17\x3f\x13\xf8\xce\x7d\x5e\x48\xf7\xdd\x28\x96\xd0\x06\x40\xd5\x3b\x29\xc5\x10\x04\x39\xe6\x96\xc6\xa7\xb9\x96\x65\x11\x86\x28\x04\xf4\x35\x39\x9a\x1d\x21\x57\x84\xe1\x00\x0d\x6e\x6e\x86\x57\x67\x07\x88\xa8\xe8\x1b\x17\xb3\x68\x03\x96\x46\x4c\x71\x2b\xad\x2c\x5c\x01\x8d\x94\x88\x19\x29\xcd\xd9\x45\x37\x41\xa8\xf2\x8c\x4a\x65\xc3\x67\x35\x5f\x09\x4a\x9d\xd0\xb4\x2a\x66\x1b\x0a\xc9\xd5\x7c\x1b\xd2\xc0\x52\xe6\xa9\xd6\x65\xc7\x14\xa7\x63\xc1\x93\x6d\x98\xc2\x19\x4c\x05\xd4\x65\x9f\x9e\x4f\x71\x8a\x74\xb3\x36\x14\xc4\xbb\x1c\xbd\x48\xa7\x05\x23\xcd\x97\xf5\xbd\x19\xdc\x5b\xce\xfb\x60\xe3\xd1\xa8\x0b\x81\x80\xf4\xfd\x16\x56\x51\x98\x8d\xc7\xd6\x52\x3f\xc6\x51\xa4\x55\xee\x1d\x4f\x2a\xa8\x9f\xe3\x5c\x02\xb6\xa3\x17\x9b\xe6\x2a\x3a\x77\xc3\xcc\x34\x07\x83\x60\x60\x7d\xe5\x4a\x1e\xd1\xa2\xfd\x86\x7e\x27\x8b\x5a\xaf\xae\xc2\xcd\x83\xf4\x26\x15\x73\x09\x4b\x02\x3b\x29\x4d\x85\x1c\x35\x27\x0b\x34\xc7\x4f\xa4\xd4\xa5\x4b\x88\xd1\x0d\x2f\x78\x2e\x9a\x18\xdd\x88\x9d\x91\x4c\x10\x2d\xe9\x57\x1d\x28\x9e\xa6\x6f\xcb\x94\xd8\xd3\x75\x4f\xd7\xef\x9e\xae\x4f\x4d\xa1\xa4\x81\x2f\x8c\xb5\x95\x00\x67\x1a\x1b\x67\x9c\x27\xe3\x0e\x36\x91\xee\x2b\x5e\xf2\x84\x55\xca\x46\x01\x24\x00\xcf\x41\x3e\x2a\x5d\x9b\x5c\xdf\x75\x41\x8a\xad\x1d\xde\x92\x65\x70\x2e\xb3\xa0\x5e\xce\x36\xe7\xbd\xa9\x95\x65\x2d\xa1\x17\x17\x73\x4e\x8d\x7c\xe3\xdd\x65\x61\xfd\xd3\xd2\x61\x72\xa2\x08\x65\xb5\x6a\x6c\x86\x9e\xf5\x02\x1b\xb9\xe3\xef\x39\x57\x58\x7e\x73\x34\x62\x5a\x88\x7a\x24\x0b\x63\x6e\xd5\x62\xca\x1f\xb4\x2c\x7e\x28\x09\x93\x10\xee\xfd\x07\xe3\x9e\xd3\x24\xee\xcc\xd5\x46\x35\x35\x45\xe0\x20\xe8\xda\xf7\x02\x21\xba\xb6\x51\x2b\x25\x15\x01\xd0\x20\xe7\x9b\xb9\xd8\x67\x66\xf8\x33\xa2\x20\xc5\x5a\x51\x05\x3a\x53\x6c\xaa\xcc\xd5\x86\xbe\xd2\x74\x65\xa8\x42\x70\xf0\x93\xc4\xf9\x76\x8c\x5f\xd6\xdb\x58\xc9\x19\xbd\xb6\x70\x67\x63\xde\x8f\x9d\xdd\x28\x12\xbc\x56\xba\x0d\x4b\x64\x76\x7a\x62\xd8\x81\xf3\x5f\x13\x76\xf4\x4c\x1f\x69\x46\x62\x8a\x21\x02\x5e\xff\xeb\x58\xcf\xeb\x5f\x4f\x6f\xaf\xaf\xc6\x45\x26\xcf\x7f\x8e\xd8\x20\x91\xdc\x67\x29\x20\xc6\x99\x0f\xb7\xcf\x04\x71\x22\xa1\x9d\x0b\x58\x5d\x0b\x33\xe2\x88\xb5\x8d\x20\xe6\x91\x3c\xc2\xcf\xf2\x08\xa7\xf8\x37\xce\xc0\x95\x3e\x80\x3f\x4f\x13\x9e\xc7\x3f\x63\x15\xcd\x8f\xe1\x5c\xab\x63\xf2\x44\x98\x32\x6e\x2a\xbd\x5c\x31\x24\xef\x4a\x88\xd6\xff\x57\x3d\xe6\x22\xa9\x48\x6a\x4d\x36\x22\x99\x42\xff\x8f\x20\x13\xce\x55\xf3\x25\xc5\xa7\x53\x49\xd6\xba\x90\x0a\x25\xed\xee\x1a\xfd\xe5\xcf\xdf\xfe\x51\x93\xd0\x26\x6b\x7c\x7e\x77\x3d\xd6\xdf\xff\xeb\x99\xfd\x5e\xae\xc1\xee\xae\xb3\x82\xb5\x39\xe2\x31\x81\xf3\x39\x83\xdb\x4f\x80\xf3\x02\xd8\x1b\x90\x43\xb1\x8f\x4d\xdc\xed\xac\xd4\xfa\x76\x2a\xdb\x46\x8b\x09\x2a\x76\x30\x47\x74\x88\x18\x47\xa9\x89\x35\xc5\x0c\xfd\xfb\x8f\xdf\x37\x6f\x60\x2e\xe8\x46\x1d\x52\x0b\xd7\x10\x74\x29\xe9\x6f\x44\x22\x4d\x35\x9a\x8a\x79\xaa\xbb\x16\x44\xce\x79\x12\xa3\x67\x02\x6a\x92\x8d\x03\xf5\x5a\xb9\x20\x23\x16\x36\x01\x21\x87\x08\x27\x8a\xcf\x08\xdc\xd5\x4e\x51\x53\x44\x68\x51\xc5\x64\x69\x28\x2e\xc8\x81\x81\xfa\xba\xfb\x93\x8b\xad\x86\x69\xc2\x23\x97\xd4\x62\x4d\x72\xf1\xa4\x79\xe6\xd3\xaa\xe9\x15\xb5\xdb\xf0\xab\x9b\x6c\xcd\xb6\xcd\x4b\x63\x93\x50\xac\x0d\xab\xba\x33\xcd\x83\xa1\x11\x67\xe3\x84\xb2\xc7\x8d\x36\xe3\xda\x89\x72\xba\x05\xbb\x66\xba\x45\x6f\xe7\x36\x16\x90\x35\xce\xc7\xc7\x3c\x49\x4c\x6a\x4b\xb8\x3d\x20\x77\x99\x75\x03\x61\x20\x33\x39\xa0\x24\xb6\x7e\x2f\xab\x09\x0b\xc2\x20\xe0\x6d\xc4\x26\x0b\xeb\xb3\x95\x07\x48\xe6\xd1\xdc\x65\xe6\x45\x9c\x49\x2d\x46\x73\x81\x22\x9e\xa6\xa6\xb8\x29\x23\x48\x71\x9e\x48\x1b\xed\xce\x0e\x15\x8e\xd4\x88\x15\xfd\xad\x38\x79\xa6\x02\xd2\x76\xa9\x7b\xdd\x5d\x3a\x45\xa5\xa5\xa5\x02\x37\x8d\x43\xcc\x06\x30\x82\x19\x4f\x54\x80\xfe\xc0\xeb\x67\xc9\x6c\x58\x8b\x66\x20\xe7\x5c\xa8\x71\xdc\xc8\x73\x56\x12\x4d\x95\x11\x32\x72\x98\x40\xd0\x30\x7f\xd2\xc2\x3f\x79\xf6\xc6\xd7\x65\x43\xd0\x54\xbd\x6c\x04\xdd\x8e\xd1\xd2\x91\xad\x4b\x82\x2d\x6b\x65\x10\x3c\xa2\x72\x4c\xf8\xaa\x31\xde\xc1\x57\xa7\xfa\xa3\xa5\x8b\x57\x3d\x77\x4e\x08\xe2\x71\x01\x36\x67\xee\x75\x9b\x11\xb2\x6c\x4d\x2d\x74\xc2\xcb\x65\x8e\x2e\x9b\xca\x43\xd9\x92\xab\xc7\x02\x26\x7b\x49\x40\xd6\xc4\x62\x42\x95\xc0\xa2\x84\x14\xe2\xf5\x41\x49\xb0\x80\xf8\xac\x11\x33\xb8\x71\x46\x53\x88\x51\x4c\x25\x24\x88\xc0\x5d\x1a\x38\xc3\x50\x37\x25\xb0\x72\xb4\x8b\x3c\x47\x13\x7f\x0e\x81\x65\x05\x69\x38\x66\xa7\x3b\xf2\xf8\x58\x5a\x3f\xe3\x51\x5e\x08\x72\x11\x48\xb8\x16\x53\x07\x51\x26\xe9\x6c\xae\x10\x65\xd6\xee\x88\x93\x19\x17\x54\xcd\x53\x79\x80\x26\xb9\xd4\x5a\xa8\x09\x56\x33\xf1\x28\x44\x45\x9d\xb8\xd0\xb6\x49\xc4\x71\xa5\xc1\xba\x8a\xb2\x01\x69\x74\x3b\x94\xc3\xca\x5d\xb1\x82\x70\x06\x1e\x67\xb0\xda\x06\x85\xba\x8d\x06\x9e\x12\x99\x38\x40\xee\x90\x9d\xa0\x0a\x48\xdb\x39\x00\x54\xc8\x9d\x79\x29\x5e\xa3\x10\x17\x32\xc9\xa0\x82\xb8\xd8\x6d\x90\xbc\xca\xc8\x94\x06\xbd\xc9\x3b\x9d\xd2\x4c\x35\x06\x6e\xd5\x5d\x45\xb7\x01\xe6\x4f\xb7\xc5\x86\x64\x2c\xa0\x66\x40\x6a\x1b\xb1\x3b\x42\xda\x81\xdc\x6a\x7b\x6f\x4a\xe3\xc2\x14\x6c\xa2\xc7\x72\x92\xdf\xc6\x89\x7d\x36\xbc\x3b\xbd\x3d\xbf\x31\x90\x13\xd7\xb7\x97\x83\xfb\x71\x83\x5f\xbb\xe1\xad\xcb\xc1\xed\x8f\x67\xab\x5f\xfb\xe1\xbe\x9c\x95\xdd\xf0\xca\xed\xdd\xf2\x64\x8e\x0e\x43\x6c\x48\x0a\x6b\xec\xe7\x04\x65\x0b\x35\xe7\xcc\x87\x28\xc4\x25\xde\x74\x88\x4c\x46\xb0\x82\x10\x22\x21\x55\x83\xe3\xf0\x1e\xe2\x72\x56\x4b\x98\xe5\xcd\x32\x30\x6c\x3b\x15\x8d\xd6\x38\x91\x9f\x12\x3e\x01\xbf\x75\x5e\x2a\x71\xbb\x24\x02\x7d\xcb\x78\x9f\x33\x2a\xb3\x04\x2f\x6a\x3d\xac\xba\x72\xae\x70\x4a\x20\xe2\xb8\xc0\x8f\x73\xc9\x22\x7a\x67\x20\x81\xc9\xdf\xeb\x74\x0a\x99\x4c\x8a\x62\x45\xd0\x84\xa8\x67\xc8\x9b\x73\xbf\x7a\x5b\xaa\x0b\x18\x91\x47\x23\x06\xe6\x9c\x91\x5e\xe4\x38\x87\x68\xbf\xd1\x87\x03\x34\xfa\x10\x93\x27\x92\xf0\x4c\xef\xbc\xfe\xa1\xe5\x92\x19\xa6\x98\x26\x57\x5c\x79\xcb\xdc\x36\xfb\x29\x48\x44\x33\x90\xcc\xc7\x44\xb7\xfb\x7a\x82\x47\x89\x92\x1d\x3b\x83\x31\x20\x1c\xc7\x5a\xc9\x06\x56\xe6\x86\x57\x84\x00\xb1\x60\xea\xa5\x5a\x99\xeb\x88\x14\xde\xfc\x6d\x7a\x0c\xdb\x2c\x9b\x3d\x1b\x77\xc0\x3b\x86\x5f\x49\xc9\x70\xa1\x38\xbe\xe3\x8e\x5a\xc7\x43\x9b\x8e\xd1\xea\x81\xae\x1e\x40\xbd\x16\x6b\x08\xcc\x7e\x80\x77\xfa\xbb\x95\x82\xa6\xbf\x6d\xa3\xb0\x24\x3b\x88\x8c\x36\xb7\xb9\x9a\x4e\x4d\x56\x8e\x38\x4a\xb8\x2c\x43\x9d\x74\x1e\xf4\xa9\xfd\x74\xd9\xb8\x87\xa1\xb3\x58\x5f\xeb\x6b\xf9\xa3\x1b\x16\xbe\x82\xe5\x67\xd8\x84\xb2\x0e\x0e\xfb\xf6\x01\xa2\x10\x2c\x07\xf2\x74\x52\x24\x7e\xb3\x18\x15\x56\xec\x11\x2b\x42\x0e\x24\x7a\x26\x09\x44\x29\x45\x3c\xcd\xc0\x42\x6b\x87\x6b\x5b\x22\xb1\x09\xf8\x3c\x40\x3c\x57\xba\x31\x93\x52\xe1\x6c\x70\x36\x5f\xa3\xb0\x5a\x1b\xd7\x89\x8d\x5d\xf6\xb8\xc0\x86\xd6\x0d\x2b\xa4\x0c\x7d\x22\x0a\x5a\x01\xdc\xf5\x70\x82\x20\xe6\x55\x23\xe0\x9a\xd7\x7e\x8b\x13\x65\x67\xb2\xc6\xce\x17\xb8\x17\xdf\x27\x7c\xb2\x5c\xc7\x83\xc6\xd1\xc3\xed\xb9\x33\x28\x15\xe1\x2f\x01\xf8\x6c\xc9\x21\x34\xbc\xb9\x1d\x9e\x0e\xee\x87\x67\x47\xe8\x41\x12\xbd\x3c\x7e\xba\x90\x1e\xeb\x25\x4a\x33\x72\x0b\xa4\xc1\xa4\x22\xb8\x4d\x8f\x25\x42\x94\x92\x58\x57\x30\x8e\x32\xca\xc6\x72\xc2\x06\x8c\x0b\x6a\xed\x2c\x80\x0b\x53\x9d\xa7\x0d\xac\x5a\x75\x02\x21\xcc\x65\xfc\x7e\x82\x8c\xcc\x78\xd3\x7a\x60\xd5\x2a\xf2\x29\x07\x64\xbd\xf4\x64\xe0\x68\xa9\x39\xa1\x02\x75\x9a\x96\x21\xaa\x71\xf7\x39\x05\x11\xca\x97\x38\x5b\x9e\x3d\x88\x9f\x4b\x44\x6b\x24\x99\xc0\xf5\xfa\xd2\xe7\xc0\xb1\xb5\xb1\x61\x85\xdb\x4f\xb0\xf0\x47\x18\xde\xea\xf9\xa6\x09\xd8\x97\xce\xc6\x11\x4e\xac\x32\x08\x1b\x86\x28\x11\x9c\x1d\xf8\x85\x32\x54\xba\x12\x0f\xd0\x94\x7e\xb6\x8d\x16\xe1\xc9\xee\xd5\xc0\x5f\xdd\x12\x0e\x37\xc7\xf5\x33\xb5\x86\xd8\x70\x03\xdf\x2f\x0d\xcf\xe2\x52\x69\xa9\x4b\x4b\xae\x82\x44\x5c\xe8\x9b\x02\xba\x2d\x8c\xc8\xab\x44\x06\x85\x85\x5e\x94\xba\x51\x7d\xd9\xe9\x2f\x4a\x48\xc4\x58\x91\x43\x45\x57\xe6\xaf\xda\x14\x07\x48\x86\xc0\x2a\x40\x73\x2a\x6e\x9e\x09\x99\x61\xe6\x22\x6b\x5b\x86\xeb\xae\xbc\x2d\x58\x95\x96\x60\x31\x64\xf7\x80\x7c\x05\x99\x1b\xa5\x71\xc8\x0c\xd6\x73\xe9\x38\x6c\xf0\xc2\x3e\x2c\xdb\x33\xf6\xb1\x14\x2d\x83\xcd\xb3\x78\x9f\x06\x9b\x60\xa9\x90\x1d\x53\x9b\x26\x19\x48\xf8\x2f\x6b\x43\x2b\xa9\x66\x5d\xcd\x67\x9a\x84\xca\x4a\x08\x01\xc3\xb6\x74\xb0\x17\x06\xe4\x23\x25\x62\xe6\x04\x61\x53\x49\xd7\x9f\x6d\x5b\x52\xd7\xdd\x12\x21\x33\x81\x18\xeb\x7a\xd3\x47\x68\xc0\x6a\x70\x47\x2e\xac\xa6\xb4\x5e\xe6\x4e\xc2\xc9\x33\x5e\x48\x94\x09\x83\x0c\x62\x02\xaf\xdd\xe4\x21\xde\xb1\xfc\x91\xf7\x64\x2b\x17\xf9\x8e\x40\x95\x5e\x1d\xf3\xe4\xe4\xde\xf1\x0b\x78\x62\x2a\x41\xc1\x5e\x20\x2f\x9a\x2b\x54\xcd\x0e\xac\x4e\x91\x71\x34\xc7\x6c\x46\xc6\xce\x46\xb6\x89\xb6\xa4\xdb\x39\x85\x66\xce\x6c\x2b\xcd\x97\xd3\x8d\x51\x98\x6c\xf9\x0e\xf3\xaa\xb7\xff\xe8\x43\x20\x15\x9e\x11\x64\x46\xd4\xc9\xaa\x58\x0a\xf8\xb1\x58\xb1\xa0\x27\xd8\x56\x87\xe5\x20\xe8\x36\xe1\x1d\x22\x57\x2e\xf0\x84\x24\x6f\xe3\xf8\x86\xae\xad\x6d\x15\x9c\x2d\x26\x98\x9b\xa0\x67\x30\xc7\x56\x58\x86\x35\xbe\x8a\xbc\x29\xb4\x7b\xd9\x3c\x4b\xc5\xab\xb7\x98\xa8\x2b\xf5\xb0\xc9\x54\xdb\x0a\x40\x84\xd7\x5e\x50\x28\xa1\xc9\x3e\x12\x5e\x7f\x55\x93\xe0\x66\x03\x09\xea\x35\xb4\x8c\x63\xeb\x82\x0d\x2b\xa7\xb2\x71\x8e\x78\xc7\x22\x66\xe7\x53\xc4\x38\x23\x88\xca\xe2\x65\x55\xce\x66\xf1\x08\x2b\x5a\xc4\x37\xc6\x17\x5f\x64\xc9\xd7\xce\x79\x69\x4b\x4b\x91\xfb\xee\x6d\x03\x2e\x3d\x97\x11\xad\xa8\x62\xb1\x00\x84\x46\xc3\x87\xcb\x32\xdd\xca\x71\xee\x5c\xe0\xbe\x77\x00\x9c\x41\xa0\xa5\xe2\x08\xc4\xc8\xca\xe0\x90\x81\xb1\xb4\x2f\xd9\x8f\x2c\xca\xc8\x88\x79\xcb\x06\x10\x22\x95\x28\xc5\x19\xb8\x64\x18\x57\xc5\x57\x06\x35\x47\xf9\x2d\x3c\x70\x82\xb8\x34\x25\x90\x5a\x56\x60\x95\x69\xc7\x5d\xbf\xc5\xba\x96\xd1\x09\x1d\xb2\xea\x8c\x3e\x11\xe6\x68\xfa\xc0\x9d\x09\x3d\x28\xd7\x69\xb2\x38\xc4\x10\x25\x4a\xe2\xd0\x70\xbd\x9c\x23\x19\x83\xcc\x3e\xd8\x23\xbb\x2f\xd9\x7d\x63\x14\x84\xc1\xb8\x2a\x81\x93\xbb\xb8\xde\x90\x4a\x2d\xec\xaa\x49\xe4\xc5\x12\xfd\x81\x71\xf5\x87\x00\x98\xd6\x19\x2f\xe0\x53\x67\x82\x3a\xa8\x55\xdc\x80\x43\x6b\x09\x07\xe1\x00\x20\x69\xe5\xca\x6f\xeb\xda\x2d\xe2\x96\x5f\x54\x1a\x1d\xd6\x93\x98\xda\x4a\x16\xf5\x0e\x57\x54\xbd\x16\xaa\x06\x4f\x53\x15\xad\x38\xe9\x25\x43\xa7\x5c\xe5\x61\xf5\x7b\xd1\xc9\xb3\x5a\x4b\xe8\xde\x86\xda\xd2\xce\x81\x2f\x2b\x30\x6c\x9b\xed\x12\x9b\xa4\xe9\xb5\xc9\xe5\xa2\x1c\x79\x64\xab\x18\xb4\x80\xb4\x1e\x8d\xd8\x47\x2e\xec\x15\x2c\x2d\x4c\xfc\x04\x47\x8f\x87\x84\xc5\x08\xe7\x6a\x6e\xc0\x52\xad\x5f\x61\x61\xa9\x41\x4b\x1a\x40\x36\x1e\x09\x81\xca\x08\x8b\xd8\x15\x2c\x78\xe2\x6e\x14\x23\x16\x34\x02\x40\xf4\x50\xa7\x07\x2a\x8d\xb6\xa9\x9a\x44\x6a\xfd\xaa\x6d\x2d\x9a\x6a\x68\xd6\x2a\x68\x2e\x3f\x67\xa5\x9a\xa0\x00\xa1\x0f\xf1\x29\x7c\x5a\x5f\x9d\x73\x67\x6d\x74\xfa\x9d\xa6\xe7\xba\x17\xe2\xc0\x6a\x14\xc6\x24\x65\x67\xa0\x25\x9d\x6f\x1d\xaf\x2d\x81\xbe\x4e\x73\x01\xd1\x96\x4d\x6d\x7e\x1d\xcd\x69\x52\xf8\x2e\xbe\x39\xf0\xc3\xd4\x4d\x26\xe4\x89\x24\x06\x72\x3c\x12\x10\x58\x6d\xac\x86\xdf\xa2\xff\x63\xea\x4a\xa2\x3f\x8e\xd8\x27\x60\xc3\x49\xb2\x00\x40\x44\xdf\x32\x56\x95\x66\x1e\x1b\x07\xa0\x6c\x26\x07\x2a\x0f\xc4\xec\xf5\x1c\x3f\x91\x11\x73\xcd\xfc\x1f\xf4\x88\xfe\x0d\xfd\xb1\x4d\xbd\x73\xf1\xd1\x2f\x6c\xe7\xf8\x18\x44\x1f\x07\xb7\x9c\x65\x94\x96\xdf\x38\x33\x48\xc9\x08\xd9\x00\x8c\xe0\x71\x8d\x29\x7b\xe2\x51\x2d\x08\x3f\x3c\xb5\x58\x10\xa6\xc6\x8c\xc7\x64\x4c\x1a\x5c\x9a\x4b\x98\x84\x16\x02\xae\x78\x4c\x56\x3a\x24\x3d\x33\xfd\x19\x4c\x37\x32\x9f\xf8\xed\x80\xfc\x6c\x9f\x8c\xeb\xad\x0f\x65\x4a\x6b\x1e\xb9\x07\x0f\xdd\x64\xdc\x9b\x3a\x53\x5d\x94\xdf\x01\x5c\x08\x76\x00\xcd\x0e\xbd\x04\x2b\x97\xc2\x5a\x3d\x8e\x55\x47\x80\x7e\x59\xcf\xdc\x5e\x56\x01\x2c\x2a\x94\xae\x10\x74\x46\xb5\xfc\xde\xdd\x61\x0b\x9c\x70\x13\x6f\x86\xc1\x88\xec\xe4\xce\x28\x96\xc2\xe1\x64\x1c\x7a\xfa\x2b\x9c\x90\x13\x9e\x57\x05\x78\xbb\x00\x54\x86\xc9\xb5\x56\x56\x5f\x68\x3e\x3c\x33\x09\x5c\x64\x4e\x4d\xca\xf4\xe0\xf4\x02\xe9\xd3\xc1\x53\x83\x2b\x04\x8b\x96\xab\x39\x17\xf4\xb7\xd6\x04\x93\x76\x19\xbd\xf0\xb4\x16\xf9\x38\x66\x9c\x65\x69\x1d\x88\xd5\x88\x14\xaa\xa4\x95\x34\xe9\x4c\x68\x92\x03\x84\xa6\x66\xb3\xd3\x3c\x31\xb8\xfb\x11\x17\xb1\x29\x7c\x2d\x4b\xd9\x3f\x10\x45\xe9\xc4\x7b\xac\x7c\x83\xd4\x22\x0d\x5a\x64\x7f\x63\xc1\x59\x2a\x80\xfe\x35\x27\xf9\x8e\x12\xa8\xde\x34\xe4\xf4\x1e\xcf\x64\x11\x43\x6a\xd6\x46\xf3\xe6\x62\x7d\xff\xae\x67\x2a\x83\x94\x43\x67\x59\xf4\x08\x3e\x46\x25\x37\x75\x1d\xd7\xb2\xe8\xdc\x1a\xe4\xf2\x1d\x98\x74\x5e\x23\x9e\xa3\x2e\x23\x35\xb0\x1f\x4b\x7e\x4f\x3e\x01\xaf\xca\x22\x5e\xc8\x4e\xe2\x20\xe0\x2b\xd2\xc7\x0b\x9a\x4c\x36\x60\x72\x75\xa1\x7a\x69\x50\x6b\x61\x40\xf1\x6c\xad\x21\x17\x56\x71\x88\x9a\x7f\x16\x14\x00\xbe\x16\xc5\xcb\xbe\x84\xa9\xbb\x2e\x42\x1e\xa3\xa5\x14\x23\xd6\x42\x5c\x87\x5b\xc2\x45\x33\x8f\x5f\xc3\x00\x61\x1b\x2a\x77\x5d\xf7\xdb\xb7\x9d\x08\xc3\x92\xf6\xf5\x48\xd4\xd1\x3d\x56\x1e\x06\x5f\xc8\xe1\x6d\x0c\x88\x5e\xb4\x79\xbd\x93\xe1\xc9\x71\x1c\xe1\x68\xde\x3a\xa9\x09\xe7\x09\xc1\xac\x4d\x7a\x6d\x7c\x5c\x3d\x22\x06\x9b\x12\x58\x77\x92\x00\x40\xab\x5b\x02\x5b\xd4\xaf\x10\xdf\x59\x0c\xc0\xda\x86\x87\x1b\x24\x0e\x37\x50\x45\x98\xb3\xfc\x50\x36\x4b\x48\x75\xad\x2c\x02\xfa\x81\xed\x24\x89\xf2\x24\xa8\xea\x97\x11\xa1\x47\xad\x97\xf8\x89\x30\xad\x33\xd8\x71\x38\x67\xc6\xb3\xcb\x67\xf5\xb5\x7c\x0e\x7c\xd7\xce\x9f\x06\x49\x63\xf1\x88\xc1\xc1\xe5\xe5\xc3\xaa\x69\x55\x6a\x35\x23\xb4\x4b\x6d\x7c\x3a\x03\x21\x62\xed\xe3\x79\x57\x36\x13\xaf\x7d\x26\x4d\xdf\x63\x88\x31\xd8\xda\xb5\x16\xb8\x5f\x8a\x4c\x7b\xb3\xb1\x0e\x4d\xe9\x95\x8c\xc8\x10\xb5\x51\x06\x79\x09\x82\x36\xda\xd0\x7c\x5e\xf4\x2e\x29\xaa\x17\xb8\xdb\xa0\xe3\x50\x96\xba\xaa\x3b\x3a\x9e\xc1\x3a\xb9\xec\xdc\x5e\xd8\x88\xdb\xb2\xcb\xd6\xa7\x67\x14\x61\x8e\xb6\x3e\xa7\x12\x18\x92\xcb\x21\x25\xf8\x67\xa3\x61\x53\x69\x2c\x60\xae\x4a\x41\x9a\xa9\x85\x2d\x6a\x05\xf7\x62\x98\x92\x69\x00\xbb\x9a\xdc\xc3\xd5\x3b\x32\x2e\x39\x88\x9b\x3a\x83\x8e\xac\x59\xa1\xb1\x49\xb7\xd0\x21\x00\x44\x25\xe1\xbe\x2d\x1a\xc4\xd4\x07\x1d\xe3\xa4\xd5\x96\xb5\x03\xa6\x09\x59\x92\x45\x92\xbd\xc5\xee\x54\x22\x27\x9a\x77\xe1\x24\xa9\xcc\x0b\x43\x36\xab\xf2\x35\xc2\x26\x45\x21\xd3\xee\xce\xea\x04\x4f\xc8\x5a\xee\xe9\x0b\xf3\xc1\x52\x2a\x82\x57\x20\xd5\x34\xcb\x92\x45\x37\xd4\xa6\x30\xf4\xae\x11\xe3\x6a\xd5\xc0\x42\x64\xac\xa5\x77\x53\x19\x5d\x6a\xb3\x21\x4a\x12\xe5\x82\xaa\xc5\xd8\x1a\xfd\xba\x33\xad\x3b\xfb\xe5\xa9\xfd\xb0\x8b\x46\x7d\x82\x5c\x7f\xce\xc8\x08\xf7\x94\xa0\xa6\x00\x8a\x9d\x42\x97\xed\xd6\x5a\x72\x23\xf6\xcd\xb2\x85\x75\xe0\x3b\xdd\x86\xaa\xbb\xd8\x74\x78\xb6\xb0\xc2\x98\x4f\x1d\xac\x4d\xf7\x85\xad\x56\x9c\x58\xc3\x5a\xea\xd0\x73\x33\x41\xb9\xb0\x85\x1d\xba\x04\xb5\xa5\xf8\xf3\x38\xc3\x02\x27\x09\x49\xa8\x4c\x37\xb7\xed\xfe\xe9\xbb\xa5\xa3\x3d\x35\x05\x48\xa4\x2d\xe7\xf3\x99\xa6\x79\x8a\x58\x9e\x4e\xac\x94\x8b\xe5\x63\x88\x5d\xe8\x32\xad\x0d\x04\x8f\x1b\x60\x29\xdf\x5b\x04\x68\x94\x23\x16\xe0\x12\x5b\x53\x05\x8e\xe6\x94\x3c\x01\x6a\xa2\x60\x44\xca\x23\x74\xc5\x15\x39\x41\x97\x38\xbb\x07\x41\xcd\x54\x04\x9c\x19\xeb\x38\x96\x48\x4b\xad\x39\xa3\xea\x60\xc4\x2c\x98\xb1\x5b\x95\xe3\x88\x33\x03\x68\x19\xc1\xc2\xfa\x26\xc0\xdc\xeb\x90\x1d\x95\xcb\x4b\xa3\xb2\x65\xb1\x05\x7e\x1e\x07\xd1\xab\x63\x93\x1d\xb0\x06\x1d\xdf\xe2\x67\x13\xaf\x0d\x15\xf0\xcd\xd7\x4b\x24\x77\x1b\x10\x65\x0b\xc0\x18\x1c\x57\x17\x38\xc2\x2d\x98\x80\x2f\x5d\x65\xa2\x53\xbf\xa6\x47\xe4\x08\x7d\x9f\xf0\x89\x3c\x40\xd2\x63\x1e\xbb\x02\xfd\xf2\xc0\x38\xa8\xe0\xdf\x26\x93\xe7\x1b\xb7\xfa\x05\xdf\x87\xaa\x6d\x53\xfa\xd9\x60\x18\xc8\x3f\x9d\x1c\x1f\xa7\x8b\xc3\x49\x1e\x3d\x12\xa5\xff\x02\x99\xa2\x71\x85\x1c\x00\x10\x6e\x82\x13\x5a\xb5\x3a\x75\x28\xa2\x4e\x14\x69\x41\xec\x24\x01\xd8\x6b\x7d\xa5\xfb\xba\x98\x0e\xb9\x86\xb3\xe6\xa2\x7f\x76\xca\x22\x6f\x3b\x5e\x25\xbc\xdc\xd7\xd1\x56\x4c\xdd\xcf\x10\xa6\x77\x9a\xe0\x59\x45\x65\x59\x43\x49\xb9\x4e\xa9\xa5\x22\x3d\x77\x88\xb7\xd0\xa7\xac\x1c\x65\xf6\x95\x73\x47\x82\x5b\xd1\xba\x5b\x8e\x46\x6c\x20\xd1\x33\x31\xe5\x3c\x21\xa5\x0c\xbc\x13\x39\x95\x73\x9f\x50\x06\xf6\x52\x68\xd4\xa0\x99\x9a\xa4\x77\xab\x38\x3a\xcd\xca\xf9\x6f\xac\x06\x8a\x13\x49\x0e\x74\xc3\x80\x68\xe5\x02\x09\xd1\xb3\xc0\x59\x46\xc4\x88\x59\x64\x4a\xc0\x5f\xe6\xdc\x06\x89\xb4\x45\x93\xf7\x1a\xe5\x7e\x69\x94\x83\x4a\x68\x39\x54\xb8\x4d\x41\xe9\x91\x45\x21\x3f\x67\x9f\xf2\x2a\x67\xe9\x6a\x06\x30\x5e\xf8\x38\xe6\x44\x06\x86\x67\xe4\xed\x47\x09\x9d\x12\x7d\x63\x8e\x98\x5e\xfa\xd0\x48\x6e\x30\x7d\x1d\xc4\xaf\xee\x34\x12\x5c\x4a\x1b\x2d\x6e\xda\x59\x9e\xf3\xb3\x45\xf9\x30\x03\x4c\x6c\x0a\xf7\x57\x0b\x89\x05\xcf\x5c\x49\x31\xfb\xb0\xb9\x9e\x7b\x5b\x53\x2b\x0b\x88\x15\x6b\xb1\x46\x09\xb1\xe3\xd3\x8b\x73\x5f\x37\xa7\xd2\x75\xbd\x86\x58\x08\xe6\xdc\x5e\x45\xac\x3e\xe3\xa0\x9e\x58\xa5\x89\x25\x15\xc5\x56\x6f\x56\x39\x46\x75\x1b\xa4\xae\xca\xd6\xaf\xba\xb3\x2a\x34\xb3\x2a\x94\x7a\x47\xdb\xd4\xc2\x0a\x23\x10\x72\x5e\xda\x2b\x0c\xc2\x82\x7e\x4b\x2a\x9c\x66\x61\x9a\xa0\x83\x2a\xb4\xd3\x34\x47\xad\x8d\x71\xbf\x2a\x84\x72\x84\x4d\x04\x46\x75\x70\xb5\xad\x58\xcf\x4b\x73\x6f\x91\x99\x77\x11\x7a\xfb\x7a\x79\xb7\xc9\xa2\x88\x34\x93\x56\xde\x70\x55\x7f\x5b\x6c\xd5\x13\xe2\x51\xa8\x5b\x37\x74\xdb\xc4\x3a\x8f\x56\x23\x08\x96\x36\x84\x00\xf2\xcf\x2a\xb9\x29\x6b\x98\x34\xfd\x98\x4d\x06\xeb\xa1\xc7\x7d\x0f\xae\x1a\x5b\xca\x28\x72\x07\x91\x0a\x41\x9e\x88\x00\xda\xb1\x71\x2a\xac\x7c\x54\x71\x22\x08\x8e\x17\xc1\x8a\x78\x27\xb9\xe9\x19\x4c\x3a\x92\xa6\x5a\xe9\x04\x71\x9a\xf1\x43\x9e\x39\x39\xbb\xf4\x16\x80\xf6\xd3\xa9\xbe\xb1\x02\x17\xbb\xfe\x82\x1d\x92\xcf\x54\x2a\xad\x97\x34\xc4\x17\xba\x46\xe0\x96\x86\x52\x3e\x73\x62\x6f\xb8\xd1\x87\xc1\xf7\xd7\xb7\xf7\xc3\xb3\xd1\x87\x22\xa2\xdc\xa5\x4c\x79\x10\x1a\x87\x29\xce\xd9\x88\xf9\x20\x50\x8f\xb9\x0a\x7b\x89\x70\x1c\x17\x88\xd7\x56\xf1\x31\x72\xc6\x52\x8e\x1c\x9c\x8a\x95\xe1\x9f\x4b\x9a\x79\x80\xbc\x99\x7d\x3d\x59\x4b\xdc\x3d\xa5\x93\x63\xb2\x7f\x96\xa4\x69\xec\xe8\xb2\x09\xe1\x22\x95\xd1\x0f\x89\x72\x78\x66\x8c\x3c\x3b\xf9\x1e\x6e\xe7\x63\x6c\x2e\xe1\xf5\xb8\x9d\xdb\x90\x0d\x36\xf5\x23\xfd\x4c\xe2\xdb\x16\xa9\x6a\x27\x59\x18\x9d\xa2\xd7\x1a\x77\x21\x67\x74\x1d\x2d\xd5\x4f\xe5\x41\x7f\xd7\x9d\x2d\x5d\x17\x28\x50\x05\xa2\x23\xc0\x39\x2a\x84\x51\x44\x84\xc2\x94\xa1\x29\x1c\x6c\x16\x2d\x10\x60\x71\x10\xf0\xbb\x7e\x87\x52\xca\x20\xdb\x7d\xd9\xd2\x3e\x94\xe7\xb1\x4e\x29\xff\xf3\xab\x87\xfb\x92\xa8\xfa\xc3\xf5\x43\xb9\x8e\xf4\xe0\x97\xa5\xb2\x6a\xa5\x85\x65\x01\x2e\xc1\x14\x8b\xcc\x39\x0b\x6c\xe9\x57\xa6\x69\xa2\x9f\x88\xfa\x49\xf3\x65\xce\x76\x11\x56\x6e\xe5\x2c\x70\x38\x91\xf1\x93\x69\x78\x0d\x32\xb0\x43\x59\x92\x3b\xe0\x24\x39\xe8\x01\xd9\x1e\xc2\x44\xf6\x23\x53\x31\x79\xa0\x9b\x03\x95\xd1\x05\x68\x69\x7d\x89\x33\xbd\x5c\x06\x5e\xd0\x61\x12\x06\xcd\xf1\xa9\xf9\xb8\x23\x42\x53\x10\x26\xac\xdb\x2a\x96\x12\x0d\x6e\xce\x1b\xd6\xfa\xa2\x6a\x93\xff\xb2\xca\x3b\x24\xde\x3d\xb0\xeb\xca\x0e\x41\xbe\xd7\x5e\x14\x75\xb0\x33\xdd\xae\x9e\x83\xf1\xa2\xde\x94\x5d\xb3\xfb\x80\x5e\xd9\x24\xcf\x96\xf2\x38\x57\x00\x55\xae\x97\xda\x54\x2c\xc3\x9a\x28\x32\xe1\x80\x6c\x5c\x7d\x88\x9c\x52\x0f\xda\x3c\x08\x91\x54\xb8\x29\x20\x69\x9d\xb5\x3b\x43\x97\x29\x66\xd3\x05\x5e\xe6\x27\x43\xd1\x1e\x7d\x00\xf0\x14\x5c\x81\x32\x17\x6c\x69\x93\x81\xc3\xe9\x86\xd4\xb6\x1e\x22\x4d\x31\x3e\x67\x4f\xb4\xd8\xac\x38\xc3\x56\x29\x06\x09\xdf\x21\x87\x37\x15\x9a\x3a\x1a\xb1\x20\x02\x40\x1a\x99\x5c\x9f\x11\x07\xd6\x0f\x15\x20\x19\x00\xbd\x42\xd6\x83\xbf\x99\x4b\x3b\x50\xcd\x39\x56\xf3\x32\xdc\x7e\xad\x1f\x7b\x3a\xe5\x1c\xbb\xcc\x2e\xa7\xde\xdb\xc0\xaa\xd0\xf8\x01\xed\x05\x00\xdb\xb6\x63\xb0\xef\x81\x46\x8d\x83\xf2\x4d\x41\x36\x70\xcc\x89\x64\x5f\x29\x9f\x3b\x47\x13\x5b\x22\x00\x57\xed\xad\x5a\xe4\xc0\xd4\xb6\xbc\xfc\x80\xef\x00\xee\x66\x5d\xa9\x36\x38\x56\x2b\x6d\x28\xce\x69\x06\x94\x10\x06\x77\x40\xa7\x6d\xd8\x34\x9f\x33\x12\x6d\x82\xc9\x71\x83\x05\x4e\x89\x22\x62\x59\x7c\x47\xb9\xb8\x2a\xc4\x2e\xb8\x1d\xb4\xfd\x9a\x5d\x34\xc8\xf3\xd5\x12\x05\x5e\xf5\xba\x58\x85\xb1\xe1\x67\xb1\x16\x9c\x90\x9e\xc6\x4f\x16\x6a\x7f\xcd\x59\xd8\x7e\x8a\x69\xd8\xf0\x95\x00\x52\x65\xdb\x39\xbd\x0e\xb6\xc4\x7d\x0d\xa5\xa1\x14\x7f\xb1\x27\xa0\x12\xab\x47\xd9\x86\x26\xb1\x8a\x97\xee\x84\x77\xbb\x90\x71\x97\x93\x58\x39\x54\xa5\x60\x74\xa0\x12\x90\xf7\x0d\xb0\x42\x33\x22\x04\x08\x2d\x4d\x21\x67\x81\x1f\xc5\xe2\x85\x15\xd6\x46\x2b\x59\x55\x8b\xad\x54\x96\x6b\x05\x8f\xdb\x55\xb6\x7c\x2f\xd1\xec\x5a\xa2\x59\xc3\xb6\x67\xa8\x93\x88\x0a\x70\x87\x2d\x82\x6a\x33\xae\xcb\x13\x84\x64\x0e\x7b\x45\xda\x4a\x8a\x70\xf5\x53\xe6\xff\x55\xe6\xe0\x8e\xa8\x43\x52\x6d\xca\x52\x3b\x0a\xfc\x23\xe0\x1e\x49\x42\x69\xc0\x06\x2a\xc0\x68\x4d\x5c\x99\x31\x41\x9f\x5f\x19\xef\x0a\x64\x8b\x2e\x78\x8e\x9e\xa9\xd4\xba\xf0\x88\x41\xe0\x95\x37\x55\x2b\x8e\xcc\x8b\x07\xf0\x16\xe4\x95\xcb\x7c\x92\x52\x85\x70\x30\xc3\x92\xbd\xec\xc0\x9e\x67\xfd\x01\xcc\xb8\x31\x71\xb9\x09\xf3\x64\xc5\xa1\xd9\xc0\xf8\x53\x34\xb2\x6d\x6e\x72\x10\x24\xfa\xb2\xd9\xc9\x81\xc6\x13\x6a\x98\x8d\x67\xae\x4f\x4f\x46\xcd\xd6\x06\x8b\xc2\x08\x50\x99\x54\xaa\xca\xdd\x62\xb1\x17\x57\xa4\x26\x17\x1b\xd1\x29\x37\xb9\x78\x7d\x17\xc9\xc9\x6d\x65\x7b\x96\x25\xab\xb9\x4f\x5a\x8c\xb3\x2e\x09\x52\x71\x17\x89\x1c\x4a\x4a\x37\xad\x92\xd2\xbe\xc1\x44\x15\x11\xd6\x9b\xc7\xeb\xae\xa3\x0e\x16\x09\x2f\x21\x15\x05\xf9\x6b\x65\x90\x0d\x52\xe5\xfc\x8c\x2b\x48\x52\x88\xa0\xa4\x71\x2d\x71\x6e\xc4\x9a\x25\x90\xe5\x3c\x71\xdb\x98\xf7\x9d\xc2\x49\x05\xe7\xcf\xcd\xc2\x5a\xb4\x7e\xf6\x51\x43\x46\x59\xb6\xc5\x89\xab\x22\x66\xe1\x7f\x6a\x51\x40\x40\xf0\xd8\x24\x83\xb3\xe1\x54\x76\x8c\x48\x5f\x79\x2e\xec\xa5\xbb\x43\xd5\xae\xc6\x9d\x3b\x07\xf0\x7b\x19\xd9\x72\x63\x17\x81\xea\xd4\xf8\x8a\x1b\x71\x93\xa2\x8b\x80\xd2\xb8\x33\x6c\xc9\x6a\xba\xb7\x6e\xfc\x00\x5c\x8f\x76\xe8\xd8\x84\x61\x78\xc4\xe3\xca\x96\x94\x26\x6c\x8b\x59\xbf\xc0\xa4\xd7\x2d\x94\x19\xb8\xc2\x84\x0d\x9f\xa4\xa1\xdd\x00\x2a\x64\xda\xa8\xb3\x0a\x1f\xf6\xa2\x5d\xce\x62\x22\x18\xc1\x6a\xfe\x7a\x41\xeb\xa7\xdb\x1a\xa7\x5f\x2d\x80\xfd\x74\x27\x55\x92\x2b\x41\xe1\x6b\xc6\x83\xaf\x11\x5c\x5d\xd4\xcc\xac\x29\x8e\x4d\xd5\xe9\x0b\x4c\x8f\x75\xa8\x74\xab\xb8\xf6\x66\x65\xee\x65\x22\xfc\x1b\xac\x3e\xb5\xd8\x7e\x7d\xd8\xc3\x4a\xa3\x2b\x96\xe4\x8b\x08\xa5\x7f\xf9\xe8\xee\x65\x35\x4d\xf3\x20\xe0\x1b\x0a\xcb\x2a\x4c\x99\xe5\x5e\xcb\x62\xbc\xb5\x44\x99\xe2\xa6\xb0\xee\xbd\x4f\x18\xf8\xe2\xf3\x05\xfa\xe8\xf1\x3e\x7a\xbc\x8f\x1e\x5f\x2b\x7a\x7c\x99\x99\xd1\x7b\xbe\xa0\xc6\x5b\xa9\x32\x87\x59\xc7\x15\xda\xda\xe6\x51\xdd\xce\x52\x17\x86\xc4\xd8\x5f\xec\x0f\x8d\x51\x31\xb5\xcf\xaa\xb3\x0d\xad\x86\x6c\x51\x35\xbe\x63\x11\x27\x16\x3e\xcb\xc6\xac\x96\xad\x3c\xcb\x0c\x92\x23\xf6\x03\x7f\x26\x4f\x44\x1c\x20\xac\x50\xca\xb5\x92\x1e\x44\xa1\x00\xc1\x95\x90\x98\x4d\xb4\x01\x46\x57\x38\x25\xb1\xa9\xb3\x15\x44\xb6\x59\xb3\xa8\x75\x68\x36\xa1\x44\x02\xe0\xa1\xd9\x06\x17\x9d\x30\x62\x26\xda\xcc\x44\x38\xc1\x9d\x4c\xdd\xc4\x80\xae\xff\xe0\xdd\xad\x7f\x38\x42\xf7\xfa\x1e\xa0\xb2\x3c\xde\x00\x34\xaa\x6d\x6c\x23\x36\x13\x3c\xcf\xbc\xa5\x8a\x4f\x4c\xc1\x45\x03\x38\x5d\x77\xb7\xc2\x60\x9c\xaf\x35\xc2\xb1\xd6\x78\x97\x13\xce\x9b\x04\x22\x6e\x84\xbc\x12\x12\x90\xe6\x12\x3e\xba\xca\x46\x3b\x1b\x2f\x69\x80\x37\xb1\x0c\x3f\xfa\x85\x5c\xb8\x67\x44\x82\xed\xc5\xdb\xb6\x4b\xe9\xaf\xe5\x14\xeb\xc6\x71\x2e\xb3\x3c\x7a\xef\x80\xb3\xa0\x37\x67\x6f\x17\x9d\xdb\xc8\x2a\x93\x5b\x67\xf9\xf1\x8b\xd9\x24\x3b\x07\x50\xb6\xf1\x8b\x9b\x5c\x64\x1c\x24\x9e\x64\xe1\xb2\xcd\x2d\x40\x55\xc6\xb3\xdc\x44\x8f\xd1\x30\x98\xa8\x91\xb2\xa9\x54\x97\x58\x45\x73\xcd\xdf\x0b\xa0\xa6\x1d\x45\xd5\x15\x5c\xf9\x65\xed\x94\x0d\x33\x38\x0d\x7b\x6f\x31\xdc\x77\xb0\x5b\x9b\xfb\xd5\x45\x58\xbb\x1b\x3b\xd5\xfd\x95\x6a\xc9\x07\xd6\x47\xf7\x89\x7d\xa2\x27\xba\x8a\x8a\x56\x8d\xbf\x1b\x6d\x95\x0b\x05\xed\x3c\x5e\x6f\x0b\xe4\x8b\x33\x8b\x33\x54\xbc\x68\xeb\x02\xb6\x38\xd9\x37\x2c\xf4\x6d\xbd\x27\x50\x39\xbe\xb0\x6b\xa6\x38\xd3\xc2\xba\xe2\xfa\x96\x14\x33\x23\x2f\x9a\xfa\x93\x08\xa3\x5c\x50\x77\xf6\x2b\xa9\xac\xed\xd4\x01\x76\xc0\xe3\xb0\x10\x4c\x84\x83\x1a\x59\xc6\xad\x8e\x23\x95\x63\x1f\xfe\x07\x34\xe1\x4a\xef\x9a\xb4\x5d\xe7\xbe\x16\x4e\x8c\x6a\xd8\xd3\x95\x84\xbd\xc5\x2e\xe3\x26\x58\xb6\x4e\x27\x8d\xb2\x59\x80\xe9\xd6\x6c\x8b\xed\x02\xd9\xde\xf8\x65\x37\xd8\xf9\xc6\x4f\x9d\xec\xb3\xc9\xb7\x4b\x30\x67\x5a\x3f\x5f\x25\xc0\x96\x42\x9d\x6d\xb8\xa9\x95\x9e\x42\xb4\x3d\x6b\x27\x03\xd0\x4c\x0a\xee\x70\x6c\xa5\xa9\xff\xf4\x7f\x99\x12\x3f\x66\x69\xfe\x13\x71\x31\x62\xe6\xf7\x03\x0f\xaf\xaf\x5f\x28\x70\x2b\x71\x4a\x0a\x64\x3f\x51\xc6\x00\x03\x24\x04\x8b\xe1\x64\x30\x4a\x3d\xba\xb8\x1e\xc3\x63\x3e\x21\x82\x11\x3d\x34\x97\x33\xed\x99\x59\x8a\x19\x9e\x01\x22\xea\x01\xc4\x9f\x81\xb8\x5a\x88\xfc\x86\xa4\x4d\x99\x36\xe0\x56\x9a\x59\xda\x94\xcb\xa2\xda\x24\xf4\x69\x44\x59\x0b\xc8\x58\x04\x31\x34\x53\xff\xad\xed\x7f\x33\x89\xfd\x7e\x70\xf7\xe3\xf8\x76\x78\x77\xfd\x70\x7b\x5a\x12\xdb\x4f\x2f\x1e\xee\xee\x87\xb7\x8d\xcf\x8a\x74\xc5\xbf\x3e\x0c\x1f\x5a\x1e\xb9\x06\x2e\x06\xdf\x0f\x4b\xa5\x5b\xff\xfa\x30\xb8\x38\xbf\xff\x65\x7c\xfd\x71\x7c\x37\xbc\xfd\xe9\xfc\x74\x38\xbe\xbb\x19\x9e\x9e\x7f\x3c\x3f\x1d\xe8\x2f\xc3\x77\x6f\x2e\x1e\x3e\x9d\x5f\x8d\x5d\x70\x6f\xf8\xe8\xe7\xeb\xdb\x1f\x3f\x5e\x5c\xff\x3c\x0e\xba\xbc\xbe\xfa\x78\xfe\xa9\x69\x16\x83\xbb\xbb\xf3\x4f\x57\x97\xc3\xab\xe5\x25\x62\x9b\x57\xa3\xb5\xfa\x64\x70\x91\x05\xc6\x99\x40\x4c\x9a\x2c\x2c\x69\xd3\xdf\xc0\x45\x70\x63\xe8\xf1\xf0\xc0\xfd\x65\x0a\xba\x1e\x6a\x16\xe8\xbc\x4f\x05\xf7\x18\x31\xef\x1e\xf4\x97\x2a\x14\xf4\xb6\xd9\xa7\xa5\xd1\x9e\xa0\x01\x9c\x15\x50\x18\x4a\x9d\x02\xe6\x84\x1f\xa9\x73\x28\x23\x53\xac\x3f\xa5\xe0\x5b\x46\x87\xa8\xba\xe1\xe5\x06\xed\x9c\x60\x08\xd6\x3b\x16\x2f\x3b\x0d\xb2\x9a\xd8\x0a\x94\x72\x82\x1c\x87\x26\x46\x6d\x37\x90\x99\x0b\x86\x53\x1a\x99\x1f\x2a\xa8\x91\xa8\x40\x48\xa8\xb6\x58\x22\xb0\x72\xcb\x73\x82\x7e\xfc\x4b\x31\x28\xf0\x14\x58\x03\x41\x5e\x2b\x04\x66\x1f\x88\xdc\xac\xea\x2a\xf2\x2c\xf5\xe4\x8e\xb9\x35\xe1\xc2\xb9\xb5\xf5\x62\xc1\xad\x93\xb3\x00\x25\xa9\xe4\xe3\xd1\xc7\xdb\xcc\xa8\x42\xe3\x27\xe8\x0e\x10\x1a\x64\xa1\xba\xeb\x5d\xcc\x92\x7c\x46\x19\xa2\x69\x96\x90\xa2\xd2\xf0\x84\xcc\xf1\x13\xe5\x0e\x75\xdf\x14\x27\x80\x75\xb4\xa2\x15\x3a\x44\xad\x07\xe5\x04\x0d\xe2\x58\x96\x19\x5c\x89\x72\x1c\xcb\x3c\x2c\x0f\x3b\x04\x36\x62\xb1\x67\x9b\x15\x3a\x2a\x8e\x1c\xac\xd8\xee\x31\x28\xea\xec\xb0\x7c\xf7\x6e\x85\xa7\x2a\x1f\xc7\x8e\x94\xc7\x1b\x09\x03\xf7\x58\x3e\x3a\xd6\xbc\x4a\x20\x70\x68\x20\xdb\xf5\x68\x61\x41\xba\x76\xea\x57\x76\x0c\x07\x6d\xb3\x3e\x5b\xc1\x6c\x57\x74\xe9\x66\x9c\x54\x2a\x0e\x75\xee\xaf\x54\xb1\xa8\xb1\xb3\x9d\x7a\x55\x9a\xa5\x31\x38\x92\x63\x4f\xff\x6b\xcc\xe3\x06\x3e\xbd\xf6\x5f\x2e\x15\xd9\xc6\xc1\xba\xad\xeb\x6b\xa9\xe5\x69\x5a\x7f\xcb\x52\x3a\xdc\x11\x2a\x4d\x77\x61\x10\xf0\xe2\x69\x04\x6e\x35\x4c\x99\xad\x22\x42\xbc\xdf\xc7\xd5\xcd\xd5\xe7\xd8\x57\xb6\xc2\x13\xfe\x54\x52\x2e\x53\x22\x25\x6e\xc1\xac\x08\x4c\x62\xdb\x30\x06\x7f\x42\xed\x87\x1d\xe9\xc9\x9d\xc9\x7b\xfd\xd5\x32\xa3\xcf\x6d\xa8\x19\xbb\x89\x6a\x81\x35\x76\xf1\xac\xe8\xda\x64\xb5\x69\xfe\x72\x50\x84\xac\x70\x11\x44\xf2\xb4\xb9\x59\x3a\x9a\xd5\xaa\x0b\xd6\x58\x1c\x26\x74\x95\xad\x1f\xe9\x12\xb4\xbe\x31\x90\xaf\xf5\x5f\xe0\xf2\xfa\xac\x41\x75\x25\xbf\x62\x58\x38\xd7\xd4\x88\x07\x9b\x5b\x68\x4b\x3d\x40\xd8\x24\x13\x16\xd2\x94\xcc\xa3\xb9\xf1\xe6\xe8\x2b\xe3\x60\xc4\x9e\x83\x0d\x29\x85\xdb\x0e\xc2\x96\x00\x04\xf1\xb3\x3e\x6e\xf4\xa9\x14\xc4\x0c\x22\x23\x85\x88\xda\x80\x10\x8c\xe3\xad\xa8\x7a\xb3\x82\xc0\x83\xfd\xda\x82\xd4\x37\x28\x71\xd6\x50\x85\xbf\xa9\xd0\x99\x9f\x5b\x50\x5f\x6c\x0b\x4d\xb9\xeb\x10\x82\x12\x67\x4d\x23\xd8\x41\x85\xb3\x57\x45\x25\xf6\x49\x91\x26\x87\x36\x9d\x58\x98\x02\x3d\x5d\xb7\xda\xff\xe6\x66\xf4\x6f\xc6\xef\x90\xb7\xe0\x5a\x04\xad\x79\x60\x62\x74\xa8\x65\x56\x97\x6f\x6d\x03\x1e\x24\x3a\x34\x60\x67\x5f\x41\x3c\xe3\xe0\xe6\xfc\xab\x03\xf4\x55\x98\xd3\xf5\xd5\x46\x07\xd0\x8e\xdb\x56\x39\x03\x6d\xaa\x14\xd8\x5f\x3e\x76\xb0\x57\x95\x93\x68\xf7\xcc\x1e\x44\xd4\x76\x0e\xf5\x97\xa5\x6f\xc0\x09\x0c\x55\xbb\x8c\x9f\xd4\x87\x15\x5b\x17\x90\x91\x71\xa9\x6c\x58\xbb\x78\xc4\x26\x8b\xaa\x93\xe7\xc0\x7b\x79\x3a\x9f\xd2\xad\x2b\x51\xe9\xf6\xea\x49\xc0\x3b\x0e\x77\x5d\x7e\x1f\xac\x48\x2b\x1e\x98\xc8\x66\x3e\x0d\xb8\x58\x5b\x34\x40\x1f\x27\xde\x34\xab\x92\xbd\xcc\x2d\x66\xe3\xa6\xac\x92\x7f\xde\x1b\xb9\x75\x08\xae\x1e\x34\xad\x88\x8d\xab\x6f\x11\xae\x7b\x2a\x7b\x59\x2a\xdb\x45\x5e\x41\x79\x70\xeb\x5f\xa0\xa7\x46\x8e\x0b\x9a\x71\x06\x57\xad\x4c\x78\x06\x5f\x2a\x57\xb6\xba\xce\xe7\x9a\x3e\xdf\x60\x4d\x56\x3b\x7d\xef\x4c\xe0\x80\x71\xbb\xd6\xc7\x5a\x1d\xea\x40\xd9\xda\x29\x9c\x9a\x1c\x42\x45\x53\x72\x80\x38\x4b\x16\x41\xb0\x83\x3d\xaf\x40\x6e\x26\x16\x68\x4e\xa8\x70\x9d\x58\x98\xb9\xb5\x92\xce\xd7\x94\xc6\xdb\x68\x64\x8b\x48\x93\xab\xc1\xe5\xf0\x6c\x3c\xbc\xba\x3f\xbf\xff\xa5\x01\x42\xb0\xfc\xd8\xa1\x08\x06\x2f\xdc\xfd\x72\x77\x3f\xbc\x1c\x7f\x1a\x5e\x0d\x6f\x07\xf7\x2b\x10\x06\x97\x75\xd6\x86\x5e\x97\xcb\x26\xf5\x6d\x1d\x04\x3b\x67\xe6\x6d\xe8\xbd\x8e\x33\x18\x74\x42\x49\x0b\xd6\xa0\x49\xb0\x67\x31\x11\x28\x26\x4f\x24\xe1\x59\x61\x56\x6d\x5c\xb0\x00\x84\xb0\xa1\xfd\x65\x40\x84\xd0\x66\x75\x8d\x4f\x90\x29\x51\x15\x54\xe9\xf4\x0d\x82\xc8\x87\x05\x61\x5f\x29\x44\x3e\x67\x09\x8d\xa8\x0a\x12\xf0\xb8\xb0\xee\x15\xe3\x3e\x84\x28\xd0\x15\xc4\xb5\xb3\x68\x94\x9d\xeb\xfc\xa1\x27\xbd\xae\xed\xfb\x13\xe5\x41\xb1\x56\xd6\x3d\xd9\x81\x62\xdf\xe2\x34\xae\x61\x76\x6d\x30\xba\x97\x30\x0f\xd4\x33\x61\x6c\x12\x5d\x0b\x9e\x57\xf3\x20\x57\xdf\x86\xcb\xe2\x64\x4a\xe7\x7a\x79\xa0\x4c\x37\x4a\x7d\xe3\x70\x97\x52\x3d\xc0\x1d\xe0\x5b\xd8\x18\xf1\x35\x03\x16\x6a\x65\x2e\x98\x89\xed\xc4\x48\x90\x94\x2b\xad\x80\x99\x88\x80\x03\x2d\x54\x51\x9c\xd0\xdf\x00\x09\x4a\x90\xa3\x20\x82\x02\x12\xed\xe2\x30\xe2\xd2\xa2\x34\x1c\x8d\xd8\xd9\xf0\xe6\x76\x78\xaa\x19\xd2\x11\x7a\x90\x00\xf2\x54\x9a\xfa\x99\x25\x6f\x23\x8e\x85\x91\x0c\x94\x49\x45\x70\x5b\x30\x18\x11\x82\x8b\xee\xfc\xc1\xf7\x37\x84\xef\x9a\xc9\x1b\x9e\x95\x6c\x53\xce\x00\x70\xd5\x5a\xcc\x35\x88\xcd\xdf\x79\xea\xd3\x2d\x7e\x2e\xad\x48\x08\x72\x01\x92\x48\x79\xd5\x5f\x70\xb5\x01\xc3\xb1\xfb\xfc\x4a\x7d\xde\xc0\xb7\xcb\xe6\x79\x0f\x21\x76\x52\x15\x80\x90\x06\x33\xd2\x17\xeb\xa8\xcc\xb3\x55\x54\x14\x6f\x01\x88\x51\x21\xfd\x09\x99\x61\x86\x44\xce\x58\x05\x21\x34\xb4\xb4\xd5\x83\x66\xd6\x3d\xaa\x7a\xcd\x70\xca\x73\x06\x4a\x03\x84\xb1\x36\x0c\x46\x66\x84\xa9\x15\x83\x79\x2b\xb8\x93\xca\x50\xf7\x17\xf1\xa4\x61\xa0\x6d\xa0\x27\x4d\xfe\x24\xa8\x18\xbb\xde\xb5\xec\x82\xf2\x4a\x4e\x25\x7d\xa8\xfc\xfd\xdc\xac\x65\x63\xf9\xb8\x75\x77\xf7\x58\x3e\xae\xee\x2a\x26\xd1\xe3\xba\x97\x4d\x35\x03\x32\xb1\x05\x77\x6b\xc6\xbe\x85\x7e\x6a\x2b\x4a\x40\x9d\xe5\xe8\x11\xfd\x70\x7f\x79\x81\xa6\x54\xcb\xbd\xfa\x5a\xb9\xc2\x5a\xc6\x7e\x10\x89\x2f\x62\x6f\x64\x90\x5c\x24\xfe\xee\x85\x8d\x77\xa2\x54\x20\x25\xe8\x1b\x0d\xcf\x88\x33\xf6\x0a\x8b\x69\x57\xa9\x28\x21\x30\x8b\x79\x6a\xe6\x71\x2c\xf3\xe9\x94\x7e\x3e\x52\x58\x7c\xd3\xb2\x1e\x26\xaa\x62\xfc\x37\x3e\x19\xeb\x11\x6d\x79\x11\x37\x35\x87\x6c\x1d\x58\xbf\x6c\x76\x66\x67\xe6\xdd\xff\xcb\x27\x90\x53\x9e\x09\x0e\x38\x7b\xe0\x9d\xb3\x91\x0a\xf6\x15\x47\x49\x47\xc8\x25\x2a\x95\xa0\x44\x22\x2e\x04\xb1\xa9\xe8\xa6\x24\x62\x86\x85\xa2\x60\xad\x75\x50\x24\x25\x80\xf4\x62\x8b\xc2\x4a\xc5\x73\x5c\x80\x11\x4f\x08\x01\x07\x4f\x46\x93\xf5\x94\xde\xd3\x92\x6f\xb2\x72\x02\x6d\xe4\xa9\x45\xa7\x04\x83\xcc\x4a\x11\x6b\xf8\x44\x98\xda\x89\x7e\x02\x4d\x34\x24\xc7\x77\xf3\x32\x98\xca\x84\xe7\x67\xc5\xe5\xe6\x2b\xe4\x07\x51\x4d\x4a\x60\xb8\xe7\x6d\x42\x92\x75\xa9\xb7\x39\xfa\x9f\x3a\xfb\x8e\xe1\xd5\xfa\xba\xac\x08\x8d\xb7\xab\x5d\x54\x28\x2e\xc2\x5a\x1d\xba\xfb\x86\x70\x39\x92\x18\x2b\x46\x00\xd3\x60\x95\xd3\xea\x9e\x9b\x3e\x35\x6d\x55\xba\x5c\xb9\xe5\x1b\x60\xc3\x94\x9a\xf9\x44\x20\x75\x72\x17\x81\xe8\xeb\xa4\xc8\xc3\x40\x1e\x44\x02\x21\xd4\x4b\xad\x58\xa6\x3a\xb2\xe6\x7c\x5e\xb2\xc3\x1d\x64\x74\x33\x18\x2d\x34\x92\x4c\x10\xa8\xd7\x7f\x82\x6e\x12\xa2\x25\xaf\x5c\x4b\x5f\x79\x92\x38\x1c\xad\xe5\xd2\xe1\x5a\xd8\x6f\x2f\x3e\xaf\x40\xf7\x58\x32\x31\x87\x23\xb7\x7c\x66\xc1\x1a\xec\x1e\xd8\x20\x58\x5f\x30\x21\x83\x21\xb1\xac\x45\x02\x87\x5f\x98\xb8\x59\x30\x25\xe1\xd2\x45\x46\x7f\xd3\xec\x57\x10\x39\xe7\xad\xc9\x84\xe1\x6c\x5f\x66\x0e\x6e\x29\x5f\x70\x12\xee\x3e\x6c\x8b\xab\xee\x20\xd7\x54\xee\xc0\x92\x88\xb3\x6c\x8a\xbe\x00\x80\x8f\xfe\xb0\xa8\xa6\xf6\x6e\xb5\x43\x83\x5b\xb2\x30\xb5\x85\x08\x63\x85\xeb\xa2\x50\x66\x16\xc6\xf7\xea\x3f\x2f\x0c\xc8\x45\x4a\x00\x55\xb2\x28\x96\x85\xf4\x5d\xbb\x1e\x97\xb5\x89\x23\x45\x13\x7a\xc0\xcd\xac\xcd\x62\xff\x83\xc8\x6b\xc3\x82\x64\x09\x1b\xcd\x6e\xb1\x99\x72\xa3\x3a\xd6\xce\x40\xb7\x75\x81\x81\x44\x5b\x88\x1d\x2f\xe5\x09\x2b\x51\x4b\x69\x02\x3d\xda\xd6\xfa\x68\x5b\xb6\x10\x84\xa7\x3d\xc0\xc6\x53\x02\x92\xe1\x0b\x67\x57\xf5\x92\xb7\x06\xea\x55\x59\x4a\xa5\xdd\xe9\x94\x92\x54\xfa\x42\x9f\xfb\xb3\x2d\xbd\x65\x7a\x32\x8b\x31\x24\x79\x6e\x13\x31\x53\x9a\xbf\xb1\xf4\x43\x9b\x24\x46\x26\xa3\xdf\x60\x01\xdb\xb5\xf3\x5e\x8e\x0c\x0b\xc2\xd4\x88\xdd\xea\x51\x98\x2f\x8a\xa8\x89\xa2\xd0\x3f\x29\xca\x62\x4e\x11\xb6\x5f\xc1\xa2\xb7\x05\xad\xc9\xb1\x79\x09\xd4\xc8\x17\x4c\x3c\xff\xde\xbc\x63\x70\x00\x2c\x0e\x8e\x9e\x2a\x9d\x16\x2a\xb7\x16\xf6\xa2\x39\x85\x34\xfc\x98\x48\x7b\x79\x50\x65\x71\x16\xbc\xa8\x9c\x13\x87\x48\x0c\x9f\x79\xfe\xd5\xc4\x5c\x9d\x52\xcf\x9c\x31\x4d\x8e\x58\xd0\xc7\x12\x00\x4b\xa3\x58\x6f\x28\xf6\xc3\x3e\xd3\xd8\x3b\xa9\xe0\x9f\x66\x87\xb8\xa0\x33\xca\x82\x1a\x37\x76\x7a\x29\xce\xc0\x14\x6b\xce\x20\x9f\xfa\xfb\xe7\xde\x66\x04\x1c\xc1\x88\xff\xfb\xbf\xfe\xe7\x88\xb6\x79\x2a\xe4\xd8\xae\xc0\x3e\xec\xe4\x7a\xdb\x12\xee\x7c\x80\xac\xd1\x82\xd8\x10\xe8\x9f\xb2\x94\xe5\x50\xfc\x6a\x2f\x37\x4d\x34\x5c\xcd\x8d\x6b\xb6\x4c\xee\xe0\xc7\x10\xf9\xf2\x5b\x36\x60\x71\x85\xf3\xbe\xf0\xd0\x06\x01\xb2\xae\x6e\x82\x09\x6c\xd4\xed\x57\x2e\x94\x0a\x83\x0a\x00\xee\xb6\x09\x24\x9c\x63\xf9\x72\xd1\x22\x8d\xc5\x68\x8c\x81\x37\xbc\x23\x57\xc5\x8d\x98\x41\x9a\x04\x44\xbd\x2b\xb9\x24\xc2\x1c\x68\x8f\x84\x64\x89\x27\x84\xef\x83\xb0\xc1\x15\xee\x2f\x92\x62\xba\x56\x88\xbb\x7e\xbf\x19\x5c\xb0\x64\xff\xc6\x33\x22\xc6\x71\x5e\x8a\x67\x5e\xd5\xf6\x8d\xfe\xe8\x2c\x57\x8b\xd5\xed\xcb\x04\x47\x8f\xeb\x00\x3a\xea\xf7\x5b\x9a\x5d\x2d\x18\x06\x51\x27\x65\xe1\xb0\x05\x2e\x91\x54\xe0\x12\x6d\x18\x64\x49\x6b\x87\x8b\x86\x41\xc1\xf1\x40\xb8\xb7\x37\x91\x01\x75\x86\x91\xa3\x49\x5e\x58\x39\x3c\x4c\x7e\x7c\x34\x62\x1f\x4d\x9d\x09\x50\x3c\xcc\x00\x22\xc8\x41\x21\x9f\x33\x2e\x49\x29\x29\xaa\x01\xfa\xde\x26\x35\xda\x61\x34\xcb\xa4\x95\x82\xef\x5b\x89\xa4\x6f\x0e\x7c\x59\xdf\xf0\xfa\x94\x9b\x29\x70\x2b\xa9\x27\xa2\x19\xd5\xb4\x33\x6e\x3c\x69\xeb\x4f\xbd\x6b\xe5\x94\x22\xcc\x08\x20\x90\x54\xb2\x38\x40\x7e\x7a\x15\x82\x48\xc8\x13\x01\x0b\x2f\x8c\x31\x2c\x70\x50\x36\x35\xb5\xb0\x93\x55\x07\xa8\xc8\x48\x04\xb6\x80\xe2\xea\x08\xca\x79\x5b\x4d\xb4\x58\xce\x48\xd9\x3a\x79\xaa\x29\x56\x62\x0d\x29\x74\x10\x16\x7a\x58\x10\x85\xc8\x67\x45\x6c\x9d\xc2\x7b\x97\xde\x56\x8f\x88\x47\xcd\x19\x3a\xed\x22\xd2\xee\xa9\xa2\x36\x11\x9b\xd4\xec\xf2\xf7\x62\x77\xef\xdb\x7c\xb6\x39\x66\xb1\x4d\xd2\xb4\xb2\xb4\x96\x29\x60\x76\xc6\x0e\xe4\xc3\xd7\x6d\xaa\x61\x80\x90\x6d\xda\x34\x50\xde\x70\x91\x39\xbd\x48\x4b\xe6\xe0\xf1\xe7\x42\x0b\xa8\x39\x53\x34\xd1\xc4\x61\xc7\xa0\xb5\xe6\x9c\x79\x8c\x3a\x08\xb6\x6e\x83\x41\xa3\x52\x52\x36\x1b\xdb\x95\x74\xf9\x86\xdd\x2e\x86\x32\x4d\x5d\x9a\xa6\xcc\x8f\xdf\xbb\x86\x96\xdb\x79\x0d\x59\x03\x44\x95\xcb\x74\x04\xc1\x9a\x71\x37\x19\x8b\x2d\xe6\x12\x24\xc7\x34\x36\x4b\x41\x4d\x39\x5c\x98\xe8\x3a\x46\x0a\x10\xeb\xea\xd0\x02\xc5\x15\x22\x6d\xf6\xa2\xc9\x49\x82\xe0\x71\xd5\x92\x9e\x29\x5b\xd3\x32\xcf\x99\x17\xd1\x6c\xbd\x23\x9f\x7c\x5e\xc9\xf0\xc4\xae\x3b\x1b\x21\x8f\x93\x64\x82\xa3\x47\xaf\x6c\x78\x95\x9b\x0b\x87\x17\xaf\x05\x54\x28\x88\x65\x88\x4b\x0f\x34\x02\xe9\x26\x74\x60\x19\x70\x19\x3b\xec\xa2\x73\xb3\x6a\x16\x1d\xcb\xa0\x09\x99\xd1\x9b\x70\xfb\x98\x64\x09\x5f\xa4\x2d\xf7\x59\x35\xab\x6d\x9b\xe0\x91\xb6\xa4\xba\x9d\x5e\x65\x15\xa6\xb7\xf6\x65\x56\x4b\x91\xd9\x01\xd4\xd1\x1a\x5c\xf2\x53\xc2\x27\x60\xe5\xb3\x5a\xb6\x4b\xfb\x08\xb2\x0f\xaa\xe7\x79\xdd\x64\x94\xea\x89\xa4\x32\x4b\xf0\x62\x59\x0f\x26\x0d\xe2\x65\xf7\xcd\xa4\xcd\xaf\x36\x82\x75\x0f\x20\x6e\xfc\xfc\x25\xc0\x6b\x2f\x9c\x24\x60\xde\x35\xfc\xab\x62\x4c\x32\xf9\x67\x47\xc6\x6f\xaa\xf8\x88\x29\x3c\x73\x9b\x6b\x85\x4b\xfe\xcc\x88\x90\x73\x9a\x95\x0a\xe5\x6d\x1d\xb1\x6c\x29\xda\xfe\xc7\xc4\xe7\xae\xc1\x3b\x79\x76\x68\x40\x33\x34\x7d\xc8\x0c\x47\x85\xf1\x2f\x4a\xb0\x94\x74\xba\x08\xb0\x2e\x7c\xf0\x27\x64\x14\x95\xb5\xe5\xa0\x36\x55\x13\xa3\x31\xe3\xdb\x4d\xb2\xf7\xf6\x89\x6e\x0f\xe5\xe3\x47\xe3\x10\x54\x4c\xdf\x27\x75\x60\x13\x77\x53\x5b\x80\x93\x56\x10\x52\x93\xd5\xbe\x59\x72\xf6\x52\x3c\x9a\x76\x33\x42\x21\x4c\xda\x61\x5b\x45\xc6\x63\x50\x84\xf8\x2c\xaa\x94\xdd\x07\x9b\xaf\x15\x27\x67\xfe\xd4\xc4\xe9\xf1\x2b\x20\xcd\xbf\xf8\xf8\x00\xc9\xad\x70\x9f\xba\xd0\xc5\x19\x49\xc8\x4e\x82\x80\x37\x20\x92\xaa\x87\x3d\x20\x8f\xa5\xa4\x51\xe0\xcb\xaf\x36\x2e\x6c\x10\x9b\xdc\x82\x1e\xd3\x3c\xf4\x9f\xcd\x40\x6d\x78\x72\xd3\x2e\x82\xfd\x0b\x56\xb9\xab\xee\xd2\x04\x43\x67\x5a\xb0\x24\x57\x74\x53\xa2\xab\xa2\x53\x2f\xaf\xec\x23\xa9\xbd\x71\x14\x6f\x6d\x5c\x9f\x48\x97\x88\x83\x95\x07\x60\x23\x0e\x54\xe7\xd3\xdd\xe8\xc2\xfa\x09\x15\x47\x33\xa2\x4c\x4d\x72\x5f\x78\xfd\x3d\xd1\xc4\xce\x72\x10\x76\xb4\xfa\xcd\x87\x7c\xbd\x53\x7b\x47\x94\x74\x57\x42\x0d\xd9\xcf\x6e\xce\x1e\x6e\xc1\x7e\x1c\x4b\x23\xb8\x7e\xf1\x72\xcb\xd6\x79\xfb\x76\x64\x36\x7b\xfd\x77\x24\x50\x99\x39\xc6\xf6\x0b\x9f\xa9\x5e\xc2\x68\xc2\x25\x5c\x3b\xb3\x46\x6f\xcf\xf5\xaa\xa4\xfd\xa5\x8b\x5e\xeb\xd3\x78\x75\x54\x05\x75\xf7\xf2\xe0\x7a\xf2\xa0\xc3\x7d\xdc\xc3\xcb\xbf\xed\x18\xec\xe7\xfd\xb3\x07\xc2\x61\xed\x4a\xdc\x9d\x88\xf8\x8e\xc8\x64\x2f\x24\xc5\xda\x56\xbc\x96\xbc\x78\xe8\x80\x77\x0a\x18\x9b\xfd\xdd\xa2\xfd\x38\xc9\xb7\xd6\x0d\xf4\x72\x17\xec\x6a\x7a\xd9\x09\x7d\x00\x06\x25\x86\x54\xdd\xdc\x16\xb5\x80\xc3\x1b\x84\x8c\xd5\x7c\x0f\x2b\x82\xf1\xec\xf0\x3a\x85\xe1\xd5\x96\xf3\x25\xb6\xd7\xe6\x65\x75\xde\xdc\x97\x24\xb5\x75\xc7\xb2\x0b\x1d\xe5\x85\xbd\x38\x96\x1a\x83\x0f\xfa\x98\xd8\x6e\xb7\x68\x03\xda\x8b\xdb\xb2\x5d\x1e\xb2\xa6\x8a\x5f\xdb\x67\x96\xbb\xb4\xb3\x71\x26\xc8\x94\x7e\xde\x48\x14\xbf\x81\x4f\xad\x7a\xa9\x97\xb9\x52\x43\x0c\xdc\x33\x50\x73\x2c\x88\xdb\xb3\x2b\x6d\xeb\x0c\x8d\x58\x91\xac\x67\x33\xf5\x1e\xc9\x02\x71\x51\xfa\x69\x53\x5c\xc2\xdd\xd7\x3b\x33\xfb\x3a\x57\x2a\x93\x27\xc7\xc7\x33\xaa\xe6\xf9\xe4\x28\xe2\xa9\x09\x37\xe7\x62\x66\xfe\x38\xa6\x52\xe6\x44\x1e\x7f\xf7\xc7\x3f\x16\x5b\x3c\xc1\xd1\xe3\xcc\x20\xbd\xd4\xfd\x4e\xe5\x2d\x27\x58\x6e\x17\xd9\xe3\xb2\xaa\x5e\x38\xbb\x36\xe8\xc6\xe5\x33\x16\x65\xf4\x83\xe8\x51\x53\x31\x4c\x2a\x5c\xd4\x4f\x80\x54\x39\x3d\x4d\x34\xc7\x59\x46\x58\xbb\xd9\xc1\xe4\x3e\x6e\xc1\x7a\x5c\xf6\xa4\x1d\x21\xf9\x9c\x25\x98\x95\x11\x01\xa0\x18\x90\x20\x11\x61\xca\x66\xab\x17\x35\x84\x81\x1a\x0d\x2a\x8d\xe1\xff\xeb\xe5\x6d\xc0\x1c\xa9\x2c\xaa\x69\xb9\xe1\xd8\xca\x96\xae\xde\x21\x0e\x96\xae\x5a\x4d\xb4\x58\x3b\xe2\x56\x6d\x59\xde\xdc\x5d\xbd\xa6\xf4\xfa\x55\x56\x04\x67\x63\xf2\x59\x33\x39\xb9\x29\x86\xd4\x83\x24\x12\x0d\x7e\xbe\x43\x72\xc1\x14\xfe\x7c\x82\x2e\x29\x03\x01\xf6\x07\x9e\x0b\x89\xce\xf0\xe2\x90\x4f\x0f\x53\xce\xd4\x1c\x5d\xc2\xff\xda\x9f\x9e\x09\x79\x44\xbf\x10\x2c\x2c\x7f\xb0\xd5\xc8\x7c\x61\x6b\x4d\x42\x22\x67\x12\x91\x27\x7d\x42\xff\xf8\x1f\x28\x35\x2d\x9f\xa0\x6f\x8f\xff\xf8\x1f\xe8\x0f\xf0\xff\xff\x7f\xf4\x87\x16\x4d\x7f\x3d\x14\x2a\xa8\x59\x7b\x5b\x76\xe7\x1e\x54\x56\x6a\x83\x32\xde\xa7\x82\x17\x3b\xd5\xd8\xf2\x23\x8d\x1e\xf9\x74\x3a\xd6\x84\x61\x72\xcb\xc6\x58\xd4\x10\x8c\x37\x84\xf4\xa4\xb6\xe8\xb0\xa0\x06\xe9\xde\x95\x35\xb1\x9d\x1a\x10\x02\xc7\xae\x65\x5e\x14\x5d\x85\x20\xa2\x52\x21\x5b\x2a\xe1\x2b\x12\x6b\xae\xba\xce\xe9\x70\xd6\x3d\x97\x8f\xec\x2c\x38\x21\x68\x47\x58\x48\xdb\x07\xfe\x85\x51\xac\x26\xd0\xc7\x2e\x64\xe3\x71\xa8\x85\xd7\x7e\x31\x31\x93\x30\xb5\xb7\x8a\x97\x94\xb5\xce\x57\x87\x4a\xde\x71\xb1\x95\xbe\xf5\x48\x6a\x31\xdb\x1d\x4b\xf8\xb8\xf2\xad\x61\x49\x77\x48\x5a\xe6\xc2\x43\xeb\x1a\xbb\x88\x2d\xf4\xb7\xda\x8a\x49\x85\x09\x2e\xeb\x76\xe8\xf5\xd4\xcf\xfc\x27\xab\x86\x09\x91\x66\xee\xed\xa2\x84\x19\x8c\x56\x8b\x48\x9a\x25\x36\x8c\xb8\x01\x7f\x6f\xd5\x86\xde\x79\xc8\x05\x68\x1c\xc2\x1e\x21\xe5\x83\x39\xc9\xd6\xe6\xb4\x37\xef\x67\x2e\x22\x72\xca\xb7\x0b\x7b\x4d\x28\xab\xc5\xcb\x77\xaf\x8e\xe3\x57\xef\xc2\xd6\x41\x72\x10\xb5\x3c\x2e\x94\x05\xe3\x16\xb0\x85\x11\x02\x6c\xcc\xf2\x6c\x00\x63\x6d\x17\xf0\x8b\x35\xb8\xfe\x2d\xb8\xb6\x31\x1c\x17\x0c\xcf\x55\x7b\xa8\x14\x79\x10\x58\xf3\xc2\x0d\x11\x2b\x4d\xd9\x9e\x03\x24\x30\xc4\x41\xaa\x39\x66\xc6\xa4\x30\xc5\x11\x65\xb3\x83\x00\xac\x10\x80\x03\x42\x0e\xdc\x44\x17\xf7\x58\x3e\xee\x36\xb6\x6f\xeb\x32\x86\x34\x2e\x4a\x69\x59\x78\x11\xe3\x4b\xa0\x35\xa4\x36\x85\xe5\x63\x1b\xbe\x4e\x0d\xdc\x6b\xc9\xe8\xfc\x52\x38\x48\xb0\x65\xe3\x73\x89\xc8\x24\x54\x61\x00\xb9\xdf\x15\xb0\xb5\x50\x7f\x2e\x97\x0c\x7b\x2c\x8e\x2a\xc6\xe5\x92\xf1\xcb\x39\x17\x6a\xbc\x21\x3a\x68\x35\x99\x9a\x91\xc3\x04\x60\x3d\xf8\x13\x11\x4f\x94\x3c\x97\x41\x36\xd7\xa1\x45\x63\xa7\x0a\x02\xd9\x00\x85\x31\xcd\x38\x64\xad\x4c\x51\x8a\xd9\xc2\xf0\x26\x7d\x9e\xb1\x7c\x94\xbe\x9c\x27\x92\x29\x4e\x92\x03\x24\x48\x2e\x4d\x39\x59\x49\x92\xe9\xa1\x2b\x88\x10\xa3\x84\xcf\x68\x84\x13\x34\x49\x78\xf4\x28\x47\x4c\xdf\xcd\x6c\x66\xf8\x42\x26\x78\x44\xa4\x0c\x84\x99\x22\x4f\xda\x66\xaf\x41\x2d\x4f\x45\x44\x4a\x19\x95\x8a\x46\x4e\x4a\x29\xa0\x09\x4c\xe5\xe6\x08\x83\x15\x16\x72\x01\x61\xb8\x5a\xb8\x22\x06\xa2\x31\x67\xb6\x74\x0e\xdc\x90\x16\x79\xcd\xc5\x65\xb7\x1d\xa0\x1d\x00\xc9\x39\x0a\x19\xab\xf2\x81\x5c\x71\xa4\x4e\xed\x67\x70\x8c\x97\x91\xc0\x6d\xf9\x44\x79\x82\xf4\x27\xad\x04\x6e\x03\x61\xdc\x3e\xea\xbc\x24\x2c\xf8\x60\xec\x3d\xc3\xb5\x82\x21\xb7\xa0\x59\xad\xa2\x69\xbd\x8a\x20\x65\x40\xb5\xa6\xaa\xa3\x9a\xb2\x28\xc9\x63\x5f\xaf\x4f\xdf\xba\x4f\x9a\x48\xdc\xf2\xe8\xb5\xd7\x77\xf3\x01\xc2\x12\x3d\x93\x24\xd1\xff\x35\x41\xe7\x87\x1e\x3e\x5f\xb3\x64\x53\xe2\x00\x3a\x71\x5c\xba\x95\xa2\x60\x12\x7b\x52\x66\xd6\xdf\xdb\xeb\x72\xe6\x95\x92\x99\x5e\x9e\x35\x39\xb4\x5e\xe9\x56\xa8\xd1\xd2\xd8\xca\x64\x0b\x16\x84\xf6\x41\xb5\x0b\x2b\x25\x03\xa2\x68\xca\xb0\x37\x14\x07\x4f\x9f\x68\x51\x52\xd9\xf6\xb6\xd4\xc0\xa8\x67\xd4\xc9\xba\x18\x12\xc5\xc6\x16\xf3\xca\x54\x6a\x48\x15\xd4\xd4\xe2\x37\x13\x02\x35\x21\x8f\x22\x42\xe2\xc6\xf8\x64\x3d\xa2\xbd\x83\xd2\xbc\xc1\x6a\x6e\x40\x0f\x52\xae\x4c\x45\x4f\x03\xa5\xe9\x2c\x9f\x06\x7b\x71\x92\xf0\x09\x5c\x48\x80\xb2\xe9\x92\xa6\x83\x84\x4b\x33\x6f\x12\xa3\xaf\x83\xfb\xc5\x03\x72\x7c\xd3\x8c\xf9\x58\x5a\x91\x3d\x40\xd8\xac\x9a\x5c\x5b\x71\x36\xcb\x45\xe9\x8e\xd0\x4d\x05\x45\x26\x2c\xea\x8e\xab\x98\x62\x07\xb5\x2d\x7c\x1b\x54\xce\xca\x24\x5e\x6e\x87\xd6\x44\xe5\x2c\xf5\xb9\x03\x54\xce\xca\x3c\x5b\xb2\x3a\xf8\xec\x45\xb3\xd1\xf5\xa4\x2e\x78\xf7\x14\x41\x83\x66\x66\x44\xbc\x12\x09\xba\x03\xb9\x68\x22\xc4\xfd\x42\x1c\xad\x94\x6e\x7c\x5b\xc4\xd1\xca\x60\xf6\x19\x71\xb4\x32\xd4\xfd\x45\x1c\x6d\x18\x68\x07\xc4\x51\x13\xf6\x31\xd6\x44\xdd\x8d\x29\x40\xca\xd3\x24\x9f\xde\xc1\xbd\xbb\x74\x8c\xa7\x26\xa4\xc4\x5c\x63\x4e\x94\xb4\x00\xdc\x30\x5a\x9b\x1d\xdb\x16\x28\x57\x71\x4f\xad\x4b\x7b\xde\x2f\x4b\xa5\x31\x24\xac\xe7\x90\x39\x08\xfd\x20\x60\xa1\x8e\x70\x66\xd1\x06\xda\xea\xe2\xec\x4f\x5e\xf5\x7a\x60\xae\x00\x94\x58\x62\xf5\x9d\x60\xce\x2e\x2b\xa5\x25\xe6\xfc\xd9\x4a\x8e\x40\x7e\x86\x18\x5b\x49\x0f\x3a\x1d\x5b\x9b\x42\xdb\x8a\x51\xa6\xc8\xac\x2a\xd2\x17\x87\x85\x32\xf5\xa7\xef\x56\x72\x20\x83\x03\xe9\xac\x17\x41\x81\x07\xef\xfe\xb2\xcf\x48\x8c\xa2\xb9\x56\xda\xa5\xd6\xae\xf5\x74\xcc\x8d\x2a\x51\x8a\xa9\xd3\xf3\x73\x69\x9c\x8d\x54\x8e\x58\x09\x38\xf5\x08\x7d\x84\xaa\xb5\x38\xcd\x12\x72\x80\xfc\xfc\xa8\xa6\xa0\x51\xfe\xed\xb7\x7f\x22\xe8\x5b\x94\x12\xcc\x4a\x26\x16\xd0\xea\xf5\x95\x07\x40\x83\x6a\x4e\x46\xac\x71\x2b\xd0\xf0\xb3\x29\x84\xe5\x22\x40\xcf\xd9\x94\x3b\x93\x0d\x54\x63\xc4\xd1\x1c\xc9\x7c\x62\xca\x09\x07\x26\x36\xa7\xe7\x5d\xf0\x19\x84\x2e\xc0\x4d\xec\x06\xbd\xec\xf4\xbd\x6c\x54\x88\x75\x40\x77\xbd\x85\x07\x70\x7f\x1c\x4a\x52\x02\xb5\x6a\x70\xa3\x1a\x8e\x17\x1e\x78\x69\xd0\x6b\x0f\x8c\x57\x29\xe2\x69\x86\xad\xaf\x47\xcb\xd0\x10\xe0\x0d\x7e\xd3\x3c\xc1\xc2\x1e\xf9\x11\xd3\x7a\xb0\xd6\x89\x78\x2e\x93\x05\x8a\x39\x23\x07\x40\x09\x79\x34\x37\xfa\x8e\x56\xa9\xb1\xad\xaa\xf1\x44\x65\x8e\x13\xfa\x1b\xb4\xe5\x8a\x78\x48\x85\x0d\x18\xd7\x9c\x42\x3f\x11\x4e\x10\x81\xaf\xc2\xbc\x49\xd4\x4d\xc9\x0f\xb1\x6d\x2b\xbc\xbe\x23\xb6\x6d\x89\xaa\x7a\x6c\xdb\x66\xc6\xb7\xb7\xd8\xb6\x95\x3d\xef\x86\x6d\xdb\xb4\xe5\x1b\x60\xdb\x96\x9a\xf9\x62\xb0\x6d\x2b\x2b\xfa\xc5\x60\xdb\x56\xe6\xd5\x63\xdb\x7e\x21\xd8\xb6\xab\xf9\x48\x23\x7a\x6b\xf3\xe1\x5d\x0f\xbd\xb5\x51\xb5\x6d\x67\x11\xdb\x42\x65\x81\x20\xfd\xca\xe8\xad\xa5\x09\xf4\x91\xaa\xeb\x47\xaa\x36\x12\x9f\xed\x5b\x0f\xcf\x85\xaf\x56\x2f\xb2\x8e\xf8\xad\xa5\xfd\xe9\x6c\x75\xde\x05\x25\xbe\xac\x14\x0c\xce\xaf\xee\x32\x70\xb8\x8a\xd2\xa2\x3e\x6b\xc9\xc8\xe1\xee\x19\xa5\x35\x8c\xa4\xe8\x29\x77\x83\x18\xeb\xca\xf2\x7a\x77\x99\xa1\xc5\x5d\xfa\x45\x9c\x36\xb7\x9b\x94\x63\x97\x86\xba\xa6\x5f\xca\x0d\x02\xfc\x53\x8d\x54\x93\xd0\x94\xee\xaa\xd9\x55\x17\x99\x47\x15\x03\x45\xb6\x96\x61\xab\xaf\x27\x33\x1c\x23\x1b\x57\x12\x8b\x01\xf2\xc4\x7c\x39\xa3\x52\x89\xd6\x28\xb1\xda\x08\xb7\xf1\x80\x67\x79\xe7\xd0\xa2\x60\x55\x67\x9b\x7d\x96\x92\x94\x8b\x55\x21\x6a\x8d\x5f\xda\x3a\x36\x9b\x7c\x4a\xb2\x39\x49\xb5\x10\x34\x5e\xb7\x91\xae\xfb\xed\xd3\xaf\x6d\x16\xa0\x09\x19\x2d\x11\x41\xe0\xdf\xd6\xef\xc6\x06\xdb\xb3\xf3\x76\x6f\xbb\xcd\x16\x7d\x74\x4d\x07\x8a\x43\x5f\x5e\x6e\xa8\xb2\x2f\x95\xa2\x18\x80\xbe\x1b\x43\x75\x7c\xa4\xd4\xea\x60\x9c\x25\x61\x38\xcb\x10\xbc\x8a\xaf\x6c\x95\xe7\x35\x22\x34\xea\xde\xeb\xb0\xc4\xef\xfa\x71\x3b\x2d\xf8\xb3\xf5\xe5\x01\xb7\xbe\x24\xe2\x30\x94\xa8\x4b\x83\xa9\xaf\x57\x89\x4a\x9c\x26\xb6\x05\x91\xe4\xa2\x35\x5e\xb7\x8b\x01\x38\x52\x39\x4e\x40\xcd\x0b\x4b\x53\x56\x37\x75\xb2\x68\x48\x20\xed\xe6\x61\xa0\x4c\xfd\xf9\xdf\xd7\xda\x4d\xad\x92\xd8\x75\x83\x72\x5a\x38\x8a\x88\x34\x36\x69\x1b\xcf\x8d\x27\xfc\x09\x2a\x69\x6d\xb3\xab\xfa\x28\xeb\x79\x6b\x06\xef\x41\x9d\xe3\x82\xd4\x8d\xb8\x30\x17\x3c\x9f\xcd\x9d\xed\x45\x9f\x19\x3d\xb5\xa6\xbd\xfc\xa9\x66\x5b\x5e\x7b\x2f\xbf\xcf\x69\xb2\x99\x65\xeb\xae\x54\x63\xec\xd3\xf9\x3d\x92\x73\x7f\x5a\x27\xd0\x6c\xe3\xc6\xd6\x07\xdd\xbd\x4f\xfb\xad\xf7\x6f\x40\x37\x07\x0e\xc8\x74\xca\x93\x04\x2c\xf4\x92\xa4\x4f\x44\x34\x77\x0f\x13\xbe\xa7\xeb\x61\x10\xfa\x01\xc0\xd7\x45\x8a\x49\x27\xf9\xeb\xc6\x88\x86\x12\xb9\xd1\x57\x9d\xfc\x26\x02\x91\x33\xc2\x9a\x6c\x53\x3f\xd7\xcb\xbb\xbc\xb3\x38\x50\x17\x14\xb8\xb3\x58\x50\xb7\x24\xaf\x1c\x0f\xba\x62\x1e\xfb\x1a\x13\x5a\x61\x76\x3e\x44\xb3\xb8\x66\x5c\xa0\x8d\x51\x7c\x06\x7a\x89\x47\x6c\x50\xca\x4c\x71\x65\xb0\x27\x8b\x22\xb4\xdd\xe8\x10\x21\x33\x83\xc2\x1c\xd6\xb0\x02\xee\x27\xfd\x17\x68\x3a\x06\x06\xd8\x44\x8a\xba\x68\x50\x88\xcb\x27\xf1\x21\x8e\x16\x51\x42\xa3\x40\x67\x9e\x09\x9c\xcd\x9b\x38\x9e\xdb\xf9\x1e\xbf\xe8\xad\xf0\x8b\xda\xaa\x4d\xad\x13\x89\xef\xe8\x8a\xe1\x94\xf4\xb8\x4a\x4d\xb8\x4a\x07\x1e\x39\x84\x15\x75\xb3\xde\x10\x90\xa2\x7e\xee\x7a\x70\xa5\x37\x00\x57\xda\xe4\xf0\x15\xc8\x49\xa5\x63\xd7\x03\x3e\x7d\xe8\x04\xf8\xe4\x2f\xc1\xbd\xc2\xf0\x69\x3f\x8f\x6f\x8c\x0d\x53\x1f\xd8\x5b\x02\x3c\x35\x88\x0b\xeb\xc8\x4d\xcb\x10\x9e\x96\xd1\x45\xa7\x75\x79\x5b\xbc\xa5\xf5\x56\x66\x2d\x28\xa5\xc6\xbb\x6b\x4f\x80\x95\xda\xb7\x61\x4f\xce\xcd\x2e\x93\x95\xd6\x2b\x0c\x1a\x26\x2c\xad\xa3\x60\xad\x97\xbb\xe4\xe9\xe1\x7d\xe5\x2f\x15\x55\xd9\x36\xcb\x61\x1a\x38\x1f\x34\x11\x68\xce\x93\xd8\xc1\x79\xf8\xd5\xf2\x1d\xf8\xc8\x79\xbf\x40\x6e\x33\xa0\x92\x39\x68\x5b\x45\x69\xb5\x65\x99\x4a\x7e\x13\xdf\x7b\xb6\x52\x20\xff\xee\x36\x63\x29\x5c\xd9\x4d\xb3\x96\x56\x0c\x6e\x99\xe8\xb1\x61\xe6\x52\xd0\xe3\x52\x2f\x9d\x9b\x5d\x27\x4f\x5d\x95\x58\x36\x08\xa2\xaa\xd5\xc0\xdb\x1e\x66\x29\xc5\x9f\xc7\x19\x16\x38\x49\x48\x42\x65\xfa\x62\x41\xb4\xa7\x65\x77\xad\x3e\xab\x82\x1b\x13\x11\xcb\xd3\x89\x21\x45\x37\x10\x5b\x79\x53\x71\x24\x72\x16\x82\xc4\xf9\x8d\x41\xae\x32\x63\x0e\xf7\x02\x58\x95\xa2\x39\x94\x79\x9d\x62\x2a\x18\x91\xad\x45\x35\x49\x94\x0b\xaa\x16\x63\x5b\xa3\xb4\xfb\x81\xbb\xb3\x5f\x9e\xda\x0f\x97\x7b\xb8\x1d\x3e\x82\xeb\xcf\xd7\x44\xcd\x88\x80\x82\x4b\xae\x74\x50\x50\x87\xd5\xe2\x5f\x10\x5f\xb5\x09\xc2\x86\x6b\xd7\x76\x5b\xc0\x2d\x7e\x1e\x07\x19\x48\xe3\xa8\x4a\x1c\xab\x0e\x6b\x13\x82\xd7\xb2\x49\xbe\x30\x86\x55\x8b\x17\xf9\x05\xea\xb5\xd8\x34\x03\xd3\xb4\x1e\x70\xe0\x0a\x06\x7b\x65\xb1\x31\x01\x8c\x81\x55\xaa\x5a\xc6\x69\x51\x93\x9a\x82\x8f\x96\x0c\x76\x10\x7c\xd5\x61\xc4\x41\x27\x3b\x1a\xb6\x3e\xe8\x42\xe4\x99\xa2\x93\x3a\x48\x90\xda\x5d\xfd\xd6\x41\x02\xd9\xf3\xce\xcd\x50\xea\xd6\x14\x75\x2d\x71\x62\x3b\x3b\x2d\xff\x5b\x44\x36\x87\xb5\x64\xb0\xaa\xc2\xbc\xb7\xeb\x94\x2a\xe5\x02\xec\x8d\x01\x5a\x53\x67\xd9\x36\xfb\x95\x0b\xf7\xc0\x50\x1a\xd6\x98\x88\x8e\x46\x6c\x20\xd1\x33\x41\x8c\x58\x30\x8e\x86\xa2\xaf\xde\xaa\x0d\x55\xb4\x26\x44\xf7\xe4\x63\x53\xb4\xf0\x40\x95\xf4\x85\xdc\x4c\x1f\x53\x9c\x48\x72\xa0\x1b\x86\xfa\xaf\x8a\x43\xd0\x24\x46\xcf\x02\x67\x19\x11\x23\x66\xb3\x1f\xc0\xe1\xc2\x79\x62\xda\x6f\x0b\x0d\xb5\x6b\x40\xc6\x11\x8e\xe6\xaf\xb4\x47\x18\x92\x57\xa2\x39\x89\x5d\x1a\x78\x79\x7b\xdc\xbc\x8d\xc1\x7a\x8d\xcd\x3a\x9f\xba\x42\x64\x07\xb6\x93\x24\xd2\x1c\xc5\xd7\xa5\xce\x88\xd0\xa3\xd6\x34\xfc\x44\x18\xa2\x53\x37\x0e\x1b\xbb\x83\x9e\xc1\x33\xa5\x49\xff\x09\xd3\xc4\xe0\x2a\xb8\xae\x9d\x10\x68\xcc\xef\x23\x66\xdc\xdd\x2c\x2a\x65\x74\x52\x46\xe5\x5c\x73\xea\x1c\x7c\x92\xa0\x66\xac\x25\x79\xc6\xb1\x2c\x1b\x19\x8d\xfa\x46\x7f\x2b\x99\x37\x0e\x4b\xd9\x6a\x51\x00\x84\x04\xc1\x92\xae\x16\xda\x32\x39\xb3\x0f\xbd\xaf\x87\xde\x37\xaf\xcd\x3e\x86\xdf\xfb\xc3\xb2\x6e\x08\x7e\xdb\xf6\xef\x42\x82\xdc\x61\x28\xfe\x1b\xc7\xac\xbf\x4c\xb8\xfa\xdb\xe6\x17\xbc\x44\x6a\x41\x1f\x80\xff\xfe\x02\xf0\xdb\x8f\xed\x5a\x41\xf8\x2b\xb0\xb0\x9a\x7a\xb9\x24\x4a\xd0\x48\xee\x82\x3f\xc8\x0c\x77\x8c\x1e\x03\x6d\x2b\x5b\x21\x9d\xe8\x17\xbc\xb3\x0f\xe2\xb1\x7c\x65\xc2\x89\x20\xf8\x31\xe6\xcf\x35\x9b\x98\x0c\x51\x1e\x2e\xb5\xbe\xae\x0f\x13\x95\xa4\x14\x31\x42\x25\x62\x44\x5a\xa3\x22\x1e\xb1\x39\x25\x02\x8b\x68\x0e\xd9\x77\xc5\xc6\x98\x2c\x4e\x83\x07\x65\x62\x06\x42\xaf\xce\x1a\x9b\xde\x61\xdd\xab\x96\x1c\x0f\x5e\x62\xf7\x5c\x8f\x24\x35\x9f\x78\x99\xda\x4a\x19\xa1\xe9\xab\xd3\xf6\x6f\x1b\xf0\xee\x17\xfb\x45\x83\xde\x7d\xd0\x4e\xf0\x45\xc7\xc0\xf7\x82\x1a\xfa\xe0\xf7\x17\x0a\x7e\x6f\x58\xe2\xf5\x02\xe0\x37\x32\xad\xbd\x7e\x6c\xae\xeb\xf9\x35\xe2\x73\x57\x05\x47\xe5\x93\xf1\x8b\x1f\xbd\xc6\x39\x77\x3d\x81\x3f\x7b\xa2\x30\x12\xb1\xd0\x74\x36\x21\x71\x0c\x9c\x56\x71\x5b\xdb\xba\xa0\x1d\xa7\x86\xeb\xbb\x17\x4b\x4d\xec\x38\xe1\x6c\x26\x69\x6c\x40\x40\x32\x0c\x35\x66\x43\x23\x01\x24\xbf\xc3\xfe\x26\x09\x11\xce\xfa\x2f\xd0\xd7\x92\x6a\xb5\x2f\xf0\x08\x08\x14\x73\x22\xd9\x57\xca\x28\xe5\x98\x2d\xd0\x23\xe3\xcf\x09\x89\x67\xb0\x43\xd5\xc1\x1c\x22\x4a\x0e\x10\x55\xfe\x33\x01\xd9\xf2\x3c\x57\x23\x3d\x76\x88\xe9\x32\x1a\x00\xb1\xdf\x06\x55\xdc\x7d\x33\xdf\x1c\x21\x74\xce\xd0\x14\x47\xea\x00\xc9\x7c\x52\xb4\x1f\x73\x53\x96\x5b\x6b\xb9\xc1\xc4\x8b\x46\xfa\xd8\xec\x86\xce\x9b\xcf\x86\xe3\x0e\x9a\x5c\x07\x09\xc5\x5b\xc5\xb0\x3d\xe1\x6d\x40\x51\x2f\x73\x69\x83\x1d\x10\x67\xfe\xe8\x5b\xd8\x1f\x8f\x6a\x0d\xb5\x94\x0d\x42\x34\xe3\x71\xab\x4d\xb1\x32\x95\x75\xc7\x52\x04\x1c\x5a\x41\xc9\x3a\x84\xa0\x5d\xb3\xdc\x5a\x6a\x92\x4a\x10\x9c\x5a\x23\xbc\xbe\x6a\x40\xac\x31\xe1\x86\x7a\xf4\x54\x18\x09\x73\x9d\x2d\xbe\xa0\xec\x51\xef\x6e\x81\xe3\x0d\x15\xf1\xa1\xe7\xa6\x4d\xcb\xf4\x8d\x47\x4e\x39\x33\x8e\xb8\xad\xe4\x4e\x3a\x63\x38\x59\xd3\xc6\x51\x5b\xb9\xba\xef\xcc\xc9\x59\x56\x5c\xd0\x52\x84\x31\xaa\x21\xd3\xe3\x5a\x36\xa4\xca\x7c\x43\x79\x0f\xa3\x98\x64\x84\xc5\x84\x45\x0b\x20\x11\x06\x88\x2e\x82\xe1\x04\x61\xf8\x0e\x27\x47\xe8\xcc\xe4\xb1\x78\x09\xcf\x5e\xeb\x70\xa1\xa7\x98\xd1\xa9\xd6\x13\xc0\xd8\x69\x47\x39\x62\x66\x98\xce\xd7\x40\x0a\x2b\xa6\x5f\xb1\x86\x9d\xf9\x9e\x32\x5c\x4a\x1c\xda\xe0\x3c\x25\xf9\x5a\xb1\xe1\x81\xd5\x72\xd1\x06\x6e\xaf\xf0\x2a\xbc\xf9\x35\x36\x03\x49\x9a\x6a\x91\x4c\x77\x87\xe0\xca\xf4\xa5\x0f\x30\x38\x34\xe6\x24\xc9\x82\x22\xe7\x19\x16\xca\xe3\x89\x18\x84\x62\x7d\xcb\xa4\x39\x33\xd8\x30\xc6\xd0\xf4\x6c\x51\x60\xad\x2f\xab\x68\xfc\x68\xc4\xce\xd5\x57\x52\x73\x3e\xce\x66\xc9\x02\xe1\xf8\x89\xca\x02\xed\x3e\xe2\x4c\xe6\x29\x11\xb6\x0b\x2a\x4d\xac\x96\x45\x8a\xc6\x8e\x34\xf5\xd8\xb4\xca\xf7\x84\x13\x1a\xbb\x8a\x0c\xfa\xc7\x09\x99\x82\xaa\x83\x85\x74\x06\xd1\x06\x8f\xb6\xdd\xdc\x58\xaf\xd5\x9b\x71\xcb\x9f\x42\x86\x88\xd2\x82\x77\x62\x6b\x02\x39\xae\x72\x4e\xbb\xea\x4b\xb8\xe6\xa4\x36\x29\xb4\x5c\xc0\xb1\xab\x70\xb6\x0a\xbc\xc8\x01\xe8\xe5\x26\x82\x49\xf7\xe3\x64\x69\x33\xb8\xb5\x38\x40\x65\x82\x76\xd4\xc6\xce\x1e\x72\x4d\x42\x41\xb8\x90\x0a\x2b\x1a\x59\xb1\x9d\x0b\x7b\x71\xd8\x8b\xa5\x7d\x6b\xcf\xb6\xc4\x0b\x97\x11\x4e\xea\x3b\xbc\x44\x8d\x37\xef\x2f\xe7\xad\xf6\xb8\x99\xb6\x97\xe6\x2c\x45\x3c\x49\xd6\xc1\xb2\xaf\xcc\xfc\xb4\xf8\x7c\xf9\x88\x8a\x7e\xf4\x06\xb8\xbd\x80\x53\x63\x5c\xcf\x38\xb1\x12\xaa\x54\x76\x97\xc2\x97\xcc\xed\xb6\xb0\xae\xed\x11\xe3\x53\x53\xca\xba\xcd\x29\x9d\x09\x9e\xd2\x75\x40\x15\x8d\x9f\xf6\xd6\x99\x1b\x56\x08\x6f\xce\x28\xa1\x4f\x91\x25\x2f\xdb\x23\xa4\x1b\x60\x66\xe4\xd5\x25\x67\x28\xc5\xd9\x46\x0b\xbe\xca\xd8\x36\x40\xa9\xb1\x74\xda\xd5\x03\x98\x25\x02\x85\x03\x60\x91\x9f\xf1\xa2\xc8\xec\x6a\x83\xcb\x63\x6b\x91\xc3\x83\x7e\xfd\x9c\x4d\xf9\x1a\x87\xb3\xc8\xc4\xb2\xa7\x0f\x3b\x9a\x0d\xce\x9f\x37\xfe\x98\xdd\x37\x6b\xda\xe5\x3c\x9e\x36\x11\xf5\xda\x27\xd3\xad\xe0\x4b\xaa\x7e\x21\x13\x09\xb5\xbe\x75\xee\xd6\xf2\xd1\x0a\x5a\x44\x30\x9c\xe5\x4b\x75\x59\xa2\xc3\x9d\xaf\x51\xa5\x1d\x64\x2c\x0c\x2e\x16\xec\xa6\xb9\xd5\x57\x58\x33\x7b\x48\x3a\x2d\xd6\x96\xa9\xa7\xeb\xc1\xfe\xb9\x1e\x3d\xd8\x5f\xf3\x09\x5d\x89\x69\xbc\x8e\xae\x38\xd5\x92\x90\x51\x1f\x8a\xc0\x12\x1b\x61\x3f\xa5\x09\x91\x47\xe8\xbc\x41\x6f\x74\xf1\xed\xde\x1f\x6c\x22\xfd\x9c\xf4\x94\x0b\x1a\x54\x88\x73\x32\x12\xa2\x00\x9b\x1f\xda\xce\x04\xd1\x63\x8e\x8c\xeb\x96\x1b\x8c\x3f\x08\xae\x13\x54\xf3\x2c\x23\xac\x2a\x90\xa2\x35\x2f\xa0\x16\x5d\xc0\xc8\xf0\xfe\x03\x6e\x42\x1e\xb0\x2d\x82\x59\x8c\xaa\x65\x4b\x77\x51\xeb\xa3\x7b\xfa\x80\xeb\xf5\x5e\x7f\x51\xdf\x9b\xc6\x11\xde\x97\x5b\x5f\x7b\x74\x5e\xca\x5f\xdf\x0f\xfd\x11\x3e\x75\x56\x51\x8c\xa6\x82\x80\xdf\x24\xf5\x29\xc1\x06\x4b\x8f\x73\xb8\xef\xee\xce\x7e\x3c\x7e\x38\x47\x44\x45\x28\xa1\x8f\x64\xc4\x22\xf9\x74\xa0\xc5\xe3\xbf\xe7\x44\xe9\x9f\x5b\x0c\x2d\x34\x25\x4c\x02\x27\xa0\xaa\x06\x9d\xd0\xbc\x90\x6e\x61\xf4\x7f\xcf\xca\xdf\x2f\x21\xf9\x5a\xf6\x13\xd0\xae\xab\xc2\x00\x64\x0a\x08\xde\x66\x69\x65\x03\xc5\x18\x15\x6f\xd8\x54\x16\x6d\x83\x68\x67\xf6\xb7\x9c\xad\x29\x74\x9d\x16\x1f\x05\xa3\x68\x91\xe9\xd2\x0c\x03\xc4\xe5\x7a\x61\xd4\xe6\x9b\xc6\xd6\x57\x31\x91\x22\xab\xcc\xa9\xec\x45\x05\x39\xa4\x04\x21\xc0\x42\x3c\x3d\xd9\xbb\xde\x26\x12\xfb\x89\x05\x1f\x1d\x8d\xd8\xa5\x33\xe4\x17\xbf\x4a\xd7\x84\x09\xcd\xf7\xc8\x9f\xe5\x56\xa0\xd9\x98\x4a\xff\x03\xe0\xb7\xcb\x3c\x51\xa6\xb4\xd1\x94\x6a\x2d\xdd\x0d\xd4\x3c\x69\xe2\x12\x02\xb3\x68\x7e\xb5\x65\x85\x23\x3a\x1d\x93\x64\x1d\x49\xf4\x7c\x3a\x4c\xa4\xa6\xef\xe8\xb1\xe5\x74\x6e\x52\xbc\xab\x98\x8c\x2d\x49\x68\xaa\x91\x18\x1d\xc7\x58\x8f\x13\x53\x5a\x88\x20\x30\xfd\x56\x83\xdf\x4d\x7e\xab\xde\x45\x2b\xa9\x1b\xcb\xaf\x89\x3a\xf5\x11\x65\xd0\x0b\xc2\x6a\xc4\x44\xce\x00\x5b\xda\x3b\x82\x30\x2a\x60\x42\x23\x67\x96\xb1\x46\xb2\x99\x66\x13\x06\x85\xd3\xbc\xac\xf5\x33\x9e\x4b\x08\x60\x4d\x89\xd2\x17\xd4\xd7\x50\x10\xd0\x78\x62\x0f\x50\x26\x68\x4a\x15\x7d\x22\xf2\x9b\x86\xad\x3b\xc5\x0a\x27\x7c\x36\x10\x8a\x4e\x71\xa4\xee\xf1\x56\x1a\x38\xb6\xcd\x6c\x1a\xd5\xe3\x86\x81\xce\xcf\xf4\xe2\xcf\x08\x23\x02\x26\xaa\x75\xf2\xe6\x23\x0c\x4f\x36\xe2\xdc\xe0\x3d\x8d\x4c\xfd\x11\xe9\x2d\x16\x38\x57\x3c\xd5\xfa\x2d\x4e\x92\x05\xd4\x15\xd1\x4f\xe6\x58\xce\xdd\x46\x9b\x28\xb4\x2e\x77\x93\x5d\xdc\x53\x1c\xcd\xc9\x1d\x94\xc7\x6c\x5a\xdc\xca\x28\x3f\x10\x96\xa7\x1f\x4e\xd0\x7f\x17\x73\x3c\x1d\x9c\xfe\x30\x1c\x9f\x9d\xdf\x0d\xbe\xbf\x18\x9e\x05\xf3\xb1\x4f\x2e\xcf\xef\xee\xea\xbf\xfe\x70\x7e\x5f\xff\xf1\xe6\xfa\xe6\xe1\x62\x70\xdf\xd4\xca\xc5\xf5\xf5\x8f\x0f\x37\xe3\x8f\x83\xf3\x8b\x87\xdb\x61\xc3\xa7\x0f\xf7\xed\x0f\xef\x7e\x3c\xbf\xb9\x19\x9e\xb9\x55\xf9\x9f\xe0\x74\x41\x74\x1a\x44\x8e\x36\x4f\xa3\x7a\x00\x0f\x51\xf9\xc5\x13\xf4\x50\x45\x3c\xb6\x21\x5e\x26\x0d\xf7\x19\x4b\xcd\xc3\x20\x92\x6f\xc4\x90\xfb\x5c\x2f\x4a\xdb\xa7\xc6\x0b\x1a\xcd\x09\x4a\x38\x7f\xcc\x33\xcb\xda\x8c\xdb\x9d\x71\x63\xf8\x21\x32\x68\xed\x87\xf3\xfb\x93\x3a\xf2\xb2\x6f\x2c\x00\xfc\x70\x67\x00\xc6\x85\x1d\x3b\x05\x5b\x8a\x43\xe4\x2d\x4c\xa5\x41\x0f\x7e\x67\x96\xf5\x63\x5a\xc3\x4c\x55\xba\x89\x63\x5b\xfd\xd1\x4d\x2c\x68\xb8\xbc\xaf\xcb\x56\xd3\x2f\x87\x29\x35\x81\x26\x24\xc2\xb9\xf1\x15\xeb\x7b\x4a\x08\x2e\xc2\x01\x17\xf4\xb0\xbb\x46\x2d\x1d\x35\x36\x58\xd9\x33\x3d\x71\xf9\x48\xb3\x8c\xc4\x1f\xea\xf2\x4b\xb9\x4c\xa0\x2d\x4e\xcb\xa7\x28\x38\x93\x5a\xaf\x07\x9d\xdf\xe1\xa4\xcf\x6d\x3d\x0b\x2a\x8d\x3f\xac\xf0\x10\x02\x0e\xa5\xbe\x13\x3c\x9e\x35\x05\xef\x35\x56\xe8\x99\x40\x46\x58\x6e\x0b\x45\x18\xdd\x5b\x9f\x6d\xe8\xce\x78\x32\x5c\x75\xa2\x52\xa6\x58\x2b\x33\xde\x85\xc0\xad\xbf\x97\xa4\x89\x11\x6f\x91\xd6\x73\x66\x1a\x05\xee\xec\x42\x09\x60\xc4\x2d\x3e\x23\x77\x1b\x34\x58\xc8\x97\xc8\x57\xf5\x1b\x69\xc5\x65\xa1\xd9\x76\x97\xf1\xb8\x54\xe6\x12\x3e\x67\xf7\x81\x95\x30\x1c\x57\xae\xd5\x3d\x8f\xf1\x42\x13\x07\x84\x70\xc9\x3c\xcb\xb8\x50\xa8\xa5\x0d\xe3\x1d\x31\xe3\x83\x3b\xc7\xce\xc3\xf3\x38\x68\x44\x4b\x18\xb2\x01\x42\xbb\x5b\x76\xa7\x5d\xd7\x82\x71\x84\x71\x47\xa0\x08\xfa\x32\x07\x69\x49\xa5\x2e\x51\x68\x93\xf0\xbb\x4d\xe0\x66\xa6\x2f\xf8\xae\x55\x77\x9a\x7a\xbf\x76\x2d\x34\x6e\x79\x42\xa6\x6a\xdc\xe8\xf5\x59\x62\xe0\xd4\x2d\xb2\xb6\x84\x78\x3a\x9b\xef\xa0\xc5\xee\x5a\xc2\x77\xd6\x5f\xaa\x55\x83\xc0\x42\x20\x38\x57\x46\x3e\x2d\x74\x18\xe4\x56\x13\xcc\x0b\xb6\x53\x1b\xca\xee\x85\x40\x2d\xf3\x3f\x32\xfe\xcc\xbc\x65\x5f\x1e\x8d\xd8\x10\x43\xf9\x4c\xaf\x88\xb8\x08\x77\xd0\x02\x56\xca\xff\xa5\x52\x78\xaf\x1a\x04\xd3\x0e\x50\x57\xd0\xbd\x2d\x9c\x9c\x2c\x50\x51\xee\xb0\xf4\x5d\x97\xd3\x63\xac\xde\x4e\x04\x34\x13\xb6\x85\xba\x14\xc9\xac\x65\xde\xcc\xb3\x70\xa0\x82\xdb\x5d\x77\x75\x84\x7e\x76\x96\x1f\x88\x27\x2a\x2a\x85\xda\x3a\xef\x09\x5e\x38\x4c\xab\xa6\x85\xdd\x05\x4c\xd4\xae\x23\x8c\x96\x2f\xb0\xc7\xa3\x68\x58\xe5\x92\x02\xce\x98\xb1\xc8\xae\x11\x4d\x7b\xea\x3f\xba\x23\xcb\xc3\xed\x3f\x42\xd5\x2d\xeb\xb0\x06\xa1\x83\x25\x8b\xff\x65\x36\xcb\x24\xd2\xb8\x7a\x1a\xb6\x0a\x92\xf5\xa0\xea\xf3\x03\x1e\x40\x93\x67\x83\xa6\x34\x49\x40\x0e\x38\x42\x03\x28\x5a\x09\x79\x28\xfa\x2a\x74\x51\x6b\x74\xc6\xf8\xaa\xd0\xfd\x16\x62\x8a\x02\x62\xba\x6b\x27\x26\x09\xd4\x54\xa4\x21\xee\x86\xa2\x76\x90\x92\xae\x79\x0b\xae\x03\x7a\x76\x4f\x44\x5f\x43\x79\x7f\x8b\xa0\xb3\xda\x70\x83\x0f\xff\xd9\x3c\xf4\x4f\x39\x16\x98\x29\x08\xa5\xb2\xa2\xbb\x20\x41\x44\x37\xf9\x0c\xc1\x8a\xcc\x18\x82\xe1\xa7\x70\x73\x9d\xcb\x7f\x46\x21\xef\x28\x3e\x40\xf4\x88\x1c\x1d\xd8\x52\xfe\x32\x9f\x14\x6f\xce\xb5\xe4\x30\x62\xb5\x10\x91\x23\x34\x48\x24\xb7\x5f\x10\x16\x25\x50\x24\x36\x88\xfa\xf2\x94\x6f\xdd\x4a\x93\x05\x28\x28\xb0\x95\x45\xf3\xdc\x3e\x08\x3e\x84\xda\x22\xe0\x13\x4f\xe0\xa4\x17\xbf\x37\x55\xd6\x2e\xc5\x49\xbc\x20\x1a\x75\xed\x1a\x7a\xb1\x4d\x32\x15\x82\x96\x6d\x10\xbc\x01\x1b\x53\x84\xee\x04\x09\xe4\xe8\x6b\xac\x50\x42\xb0\x54\xe8\x8f\xdf\xac\x15\x1b\xe2\x26\x58\x70\x57\x7b\x7c\x8b\xf8\x7b\x17\xc1\x19\x0a\x77\xbe\x63\x28\x19\x83\x85\x42\x18\x31\xf2\x1c\x06\xec\x70\x88\xb1\x72\x75\x60\x48\x90\x32\x64\x2a\xa7\x9a\xc4\x42\x08\x82\x35\x2a\x53\x0b\x1f\x71\x68\x8d\xd6\x7d\x6a\x87\xd5\x40\x59\x56\x79\xa2\x46\x3d\x03\x44\x91\x22\x96\x72\x8e\xd5\x88\x59\xce\xea\xc2\x46\x82\xe8\xf9\x41\x92\x94\xe3\x17\x31\x84\xe8\x32\x3d\x61\xa8\x1a\x7c\xe4\x17\xe8\x0a\xd4\x2f\x1f\x44\x56\xb2\xd3\x15\x87\x45\x6b\x6a\x23\xe6\xe1\x1a\xc2\xb6\x1b\xa5\x9d\x26\xfb\xf2\x2b\x0a\xc1\x0d\xdd\x5f\x98\xf2\xcd\x1d\x84\x61\xd2\x34\xe4\x15\x07\xab\x6e\xd3\x5f\x22\x1b\xef\xba\x83\xee\xa2\x72\xb3\x7d\x1c\xae\xd9\x67\xde\x60\x6e\x6f\xd9\xdc\x40\xb6\xd8\x46\x01\xf7\xd1\x8c\xaf\xe5\xf1\x2d\x0d\xfd\x3c\x86\x5c\x8a\xd5\x5c\xb0\xc8\x4d\x70\xac\x03\x0c\xdd\x34\x0e\x42\xa5\x83\xc8\x4c\x08\xa5\x77\x8c\xcf\xbe\xd9\xe2\x79\xcd\xde\xf7\xf4\x0f\x8a\xf9\xbb\xa9\xf8\x20\xb8\xfa\xc4\xdb\x85\xbd\x41\xfc\x37\x1c\x41\x00\x25\xf4\xe4\x42\x37\xeb\x78\x12\x0e\x85\x13\x83\x31\xbf\x51\x3c\xb4\x95\xd8\x8f\xd0\x10\x2e\x1a\x57\x98\x1d\x4f\x9d\x43\x22\x78\x79\xc4\xb4\x66\xe2\xd2\xcf\x83\xf6\xcb\x24\xde\x74\x02\x0c\x96\xcd\x56\xbe\x9c\x74\x35\xc4\x7a\x9b\x36\xe1\xa0\x74\xa0\x0d\x40\x65\x46\xc3\xd9\x09\x8a\x79\xf4\x48\xc4\xb1\x20\x31\x95\x27\xe0\x5b\x57\xad\x4e\xbd\x54\x6b\xdb\x5b\x4b\x1a\x6d\x81\x02\x2b\x72\x0d\x4e\x4d\xff\x36\x88\xde\xd5\x11\x3c\x40\x74\x0a\xea\x84\x0b\x75\x35\x49\x36\x2e\x5b\x9f\x30\x25\x16\x19\xa7\x4c\x79\x53\x56\x65\x21\x9c\xa6\xa1\x85\xb6\xb6\x20\x6d\xb1\x8b\x18\x9c\x0d\xa7\x7d\x3f\x27\x92\xb8\x80\x03\x33\x29\xc5\x6d\x8e\x9a\x61\x17\x19\x56\x73\x09\x19\x41\xe5\x35\xb0\x4a\x17\x7c\xaa\x57\x08\x67\x10\xaf\x60\xac\x14\xc5\x47\x3e\x6f\x45\x2a\x9a\x24\x23\xc6\x08\x89\x25\x82\xe4\x9d\xaf\x1a\x13\x0f\xf5\xa7\x07\x08\xc7\x31\xfa\xdf\x5f\x7f\xbc\xf8\xe5\x7e\x38\x3e\xbf\x02\xa3\xf5\xf9\xc5\xf0\x9b\x03\xff\xe3\xf5\xc3\xbd\xff\xd5\x58\x58\x9e\x88\x40\x29\x7e\x04\x15\x8f\x49\x23\xff\x41\x76\x47\x38\x52\x97\x92\xa9\x9f\x48\xe2\x22\x5d\xad\x98\xe2\x11\xa0\xec\x1e\xb6\x16\x2a\x34\x36\xbf\x35\x94\xdf\x5b\xff\xc9\x72\x1a\x74\xc4\xe3\xbb\x70\x62\x60\x4a\x18\x44\x63\x17\x39\x7a\x56\xf7\x2d\x08\x8e\xb0\x19\x65\x6d\xf1\x78\x84\x3d\xbd\xa4\x10\xff\x23\x59\xfc\xa4\xd5\xeb\x1b\x4c\x45\x67\xda\x1b\xb2\x27\x2a\x38\x83\xa9\x79\xb3\x96\x3f\x31\x5a\x4f\xc7\xb2\x7a\xa8\xa4\x91\x85\x21\x46\x23\x6b\x8d\xf9\x6c\xc2\xb1\x79\xf3\xe9\x5a\x74\x0c\xf2\x59\x09\x97\xfc\xeb\x41\x58\x1c\x12\x85\xbf\x68\x0a\x1a\x1c\xb1\xfb\xeb\xb3\xeb\x13\x44\x12\x3c\xe1\x02\xb2\xc1\x4c\x48\x90\x6b\xc2\x2e\x58\xc4\xd3\xa0\xa1\x52\xe2\xf7\x01\xca\x8a\xc4\xef\xd0\x88\x76\x64\xda\x58\x55\xbf\x9b\x8b\x7a\xda\xf4\x6e\x55\x40\x3b\xd9\x1b\x2e\xba\x5c\xff\xfa\x35\x58\x3a\x9e\x69\x45\xae\xc2\x79\xed\xdd\x3c\x25\xd8\x94\xce\x35\x6e\x21\x6b\xcb\xb7\x01\xac\x49\x52\x2a\x07\xa5\x0f\x8e\x3c\xb2\x2e\xf8\xe2\x4d\xce\xd0\x8f\x7f\x91\x68\x92\xab\x11\x2b\xb7\xc1\x19\x1a\xfc\x7c\x87\xbe\xc7\x2a\x9a\x7f\x33\x62\xd7\x5a\xcd\xfc\xf1\x2f\x2d\x08\x15\x6b\x83\x2b\xe9\x35\x39\xc3\x0a\x5f\x70\x1c\x53\x36\x6b\x42\x56\x2a\xe0\xef\x87\xf7\x83\x13\x74\x6d\x75\x78\x9f\x54\x5e\x64\x5a\x05\x0d\x01\x43\x86\x89\x38\x2e\x02\xac\x9c\x95\xd1\x67\x8c\x66\x06\x17\xd6\x88\xdd\x1b\x48\x29\xcd\x55\xa9\x42\x19\xb7\x25\x18\xb4\x56\x66\xc0\xb6\x8c\x29\xdb\x5a\x12\xf5\xea\x00\x19\xfb\xcd\xb0\xf2\x18\xc8\x33\x75\x66\x3f\x62\xa0\xa0\xfb\x4c\xcf\x84\x47\x38\x81\x98\xbc\xc3\xc0\xa6\xa7\xd5\x76\x9e\x43\xda\x9d\xa9\x75\xba\x28\x87\xce\xfa\x4c\x50\x2f\x94\x85\x1b\x05\x06\x00\xd8\x47\xeb\x8d\x4d\xb9\xe6\x38\x06\x4a\x06\x8c\x6f\x89\x59\x1d\xfd\xa1\x87\x96\x31\xcb\xa2\x9f\x3a\x7e\x04\x25\xc5\x6d\x8a\x77\x04\xe6\x7b\xb6\x80\xf0\x6d\xc0\x4c\xe7\x10\xfa\x51\x70\x67\x4b\x94\xb5\x5d\xf4\x77\x62\xf0\xd9\x88\x99\x48\xc1\xd2\xbe\x84\xa0\x08\x41\xef\x9c\x41\x20\x63\x71\x5d\x7a\x01\x23\xb3\x81\x8d\x56\xd6\xcf\x04\x39\x8c\x89\x22\x22\x05\x7b\x4f\xb8\xa6\xfa\x86\x3d\x42\xb7\xa1\x7a\x1d\xf3\x28\x4f\x1d\x30\x24\xa4\x27\x16\xd5\x64\x4b\x12\x8f\xb9\xd8\x57\x51\x3c\x24\xbf\x2b\x02\x59\x79\x9d\xf5\x63\x43\x30\x83\xf0\xd3\xba\xa4\xde\x2e\xf8\x02\xef\xd8\x2e\x6a\xcd\x34\x34\xce\xca\x2d\x95\x5a\x5b\x8d\x6b\xb7\xa2\xce\xc9\x55\x01\x5e\xc7\x05\x08\x5b\xe4\x73\xc6\xc1\xc8\x6d\x72\xaa\x78\xfc\x95\x44\xe7\x37\x5a\x02\xd2\x1a\xaf\x3f\x83\xb9\x54\x26\xb8\x0c\xd2\x75\xcc\xd7\x26\x5d\xe0\x00\x7d\x6b\x6a\x3d\x47\xe8\xb3\xfb\xe3\xcf\xff\xf1\x1f\x7f\xfa\xf3\x3a\xe9\x24\x4e\x21\x87\x76\x8b\x35\xf2\xd5\x30\xca\x22\x51\xb8\x03\x75\x4e\xb5\xc5\x2e\xd8\x03\xd8\xb6\xfc\x9b\x80\x54\x05\xb1\x43\x78\x66\x4f\xb8\x0c\x4f\x26\x2a\x1d\xcd\x22\x92\x40\x12\x75\x50\xe6\x10\x5e\xd8\xb5\x12\xfd\xff\x5a\x82\x01\x33\xd6\x47\x65\xb3\x18\x27\x9a\x78\xf1\x5a\x37\x82\xbe\xb6\xf6\x3f\x05\x0e\xc4\x6f\xdc\x05\xc7\x93\x98\x08\x5b\x27\xde\x99\xec\xbc\x21\x11\x98\x03\xf9\x9c\x25\x3c\x76\xe8\x6e\x92\x64\x18\x04\x08\xcd\x0c\x8e\x46\x6c\xe8\xca\x86\x1b\x74\x12\xf3\x91\xf1\xbc\x4c\x71\x64\x40\xcd\x24\xfa\xfa\xf3\x89\xfe\xed\x00\x2d\x4e\x20\x88\xf4\x00\xfd\x76\x62\x41\x08\xb0\x50\x63\xfd\xd3\x37\x4e\xd6\xb6\x4d\xc0\xa0\xa9\x44\x5f\x1d\x3f\x61\x61\x4a\x5e\x1e\x9b\x11\x7d\x65\x39\xab\x2f\xeb\x13\xca\xe6\x09\xe7\x8f\x36\xc0\xb6\xf6\xe1\xb1\xc3\xb3\x01\xf2\xf6\x7e\x13\xb3\xf5\x3e\xdf\x51\xa1\x43\x5b\xf4\xfc\x28\x9b\xa0\xa3\xbf\x49\xce\xd0\xd1\x02\xa7\x89\xfd\xd5\x3d\xb5\xf1\xbf\x58\x22\x57\xf6\xbe\x28\xbb\x6d\x2c\xa5\xdf\x27\x7c\x02\xb3\xba\x74\x33\x35\x11\xb4\x30\xd0\xe2\xf6\x29\x2e\x2c\x3b\x11\x2b\x49\x19\x58\x86\x94\x2b\xf3\x0a\xf0\xb8\xa6\x59\x7d\xf6\x43\xfa\x2f\xe3\x17\x86\x45\x71\x49\x7c\xc6\x38\xec\xa3\xd7\x74\xa3\x9f\xd1\xd7\x96\x05\x7d\xa3\xef\x18\x1b\xae\x6c\x96\xa1\xa9\x83\x85\xef\xe0\x97\xa0\x03\xca\x90\x49\xcb\x5c\xf2\xe5\x6f\xc7\x47\x47\x47\xfe\xeb\x2b\x3d\x95\xff\x17\x51\x25\x49\x32\x35\x2d\xb9\x1b\x6c\x31\x62\x97\x0e\x37\xda\x19\xaf\x0b\xa4\x2c\x28\x57\x1f\xf1\x04\x1d\x16\x06\xdd\x98\x47\x12\xfd\xab\x16\x6b\x83\xa5\x84\x1f\xb5\x1e\xd7\x82\x62\x67\x80\x2a\x5f\xe9\x50\x59\x83\x78\xf5\x58\x85\xe0\x38\x5e\xb1\xc5\x32\x04\x21\x07\x5a\xd0\x94\x73\x6c\x01\x74\x84\xd0\x2f\x93\xcf\x0a\x1e\xb5\xe0\x13\x35\x86\xb2\x37\xdf\x94\x35\x76\x5b\xc0\x14\x19\xb2\x6e\x59\x00\x0b\x23\x62\x39\x83\x99\xe7\x41\xe8\x3e\xd1\x97\x0b\x0b\x91\x8c\x65\x9e\xa6\x58\x2c\x8e\x8b\xd3\x56\x27\xce\x02\xc0\x06\x78\x4c\xe2\x16\x00\x5c\xb8\x89\x3d\x5a\x36\x8a\xc1\x8a\x97\xee\x46\xf3\x67\x37\x82\x52\x4c\x10\x90\x67\x0a\x91\x11\x16\xf1\xd8\xd2\x75\x91\x7d\x5a\x96\x58\xfc\x3b\x75\x59\xc5\x45\xc4\xc8\xc2\x18\xc7\x94\xc9\x8c\xb6\x6f\xb8\x8f\x5b\xd8\x37\x1f\x43\x51\x3f\x32\x5b\xc3\x3d\x7a\x7e\x7d\xe7\xbe\xe9\x7e\xe9\xc2\x3a\x94\x45\x76\x9c\x84\xb0\x43\x6c\x86\x04\x7e\x2e\xae\x5f\x88\xed\x30\xd6\x99\xdc\xe7\xe6\x9a\x7f\x9f\xf2\x1b\x9a\xe8\x5b\x0b\x68\xfc\x68\xc4\x4a\x3f\x1f\x20\x92\xd0\x94\x32\x1f\x5b\x67\x98\x3b\x9f\x1a\xe9\xf9\x91\x2a\xbd\x65\x32\x7e\xd4\x1c\xcc\xc1\x65\x04\x2a\xd5\x80\x2d\x1c\xe9\x78\xc7\x94\xb5\x40\xe4\x52\x8f\xab\xd0\xd1\xb5\x30\xab\x9b\x38\xb4\x02\x29\x0d\x08\x0f\xce\xef\x88\xe9\xd6\xdc\x59\x2a\xc2\x85\x83\xf6\x82\xe6\x0e\x1d\x9e\x6f\xc0\x01\xa0\x8f\x52\xcc\xaf\x97\x7f\x1b\x04\x94\x21\xcb\xd3\x6d\x93\x4d\x6c\xf8\xf0\x5b\x99\xe9\x6e\x04\x71\x37\x95\x4d\x5c\x22\x2c\x4f\xdd\x81\x5a\x83\xe2\x86\x56\xfc\x89\x49\x94\x60\x03\x00\xa0\x1b\x82\xc8\xc7\x03\xe3\x20\xcd\x82\xbe\xcc\xf5\x62\xba\x31\x25\x02\x12\xc2\xbe\x36\xff\xfe\x06\xd9\xbb\xe1\xdb\x03\x7b\x9f\x0b\xe9\x00\x4c\xed\x9e\x43\x89\x29\x12\x1b\x1b\x3a\x80\x3d\xce\xb0\x88\x8d\xb5\x3c\xd4\x2a\x4c\x06\xaf\x96\xbf\x16\x3c\x47\xcf\x54\xce\x47\xec\x9e\x3b\x83\x23\x62\xdc\xc3\x65\x1e\x80\x32\x5a\xeb\x0f\x4b\x60\x02\x30\xea\x26\x0a\xd0\x4c\x78\xab\x5c\x23\x88\x82\x1d\x33\x1e\x93\xed\x70\x21\xee\x0b\x5f\x85\xf3\x5f\x0b\x62\xf2\xc1\xe0\xa6\x68\x4b\xa7\x25\x52\xae\x69\x9b\xaf\x6e\x3c\xdc\x43\xb6\x1d\xa8\x68\xf8\xcc\x36\x85\x5c\xf1\xb7\x1a\xb4\xe2\x34\xce\x20\x1b\xb8\xb4\xf6\x1e\x84\x72\xdb\x4d\x88\xca\xa9\x2a\x2b\x57\xc0\x5f\x7d\x66\xee\x11\x2c\xbb\x0f\x30\xc6\x68\x26\x78\x9e\xf9\x94\x79\x97\xee\x67\xb6\xc1\xca\x34\xe7\x6c\xca\x4f\xac\x4e\x75\x41\xd9\xa3\xa1\xf8\x97\xda\x23\x83\x33\x4a\xe2\x12\x3a\x8e\x2b\x32\x07\x73\x38\x44\x94\x45\x49\x0e\x17\x9f\x54\x38\x7a\x34\x58\xa9\x6d\x46\x5f\xfd\xcd\x78\x75\x32\x65\x8b\xc4\x94\x27\x89\xed\xb6\xb8\x40\x8b\x2a\x9c\x4f\x14\x23\x8c\x1e\x6e\xcf\x9b\xfb\x7e\xa4\x75\x67\x4e\xf3\xed\x59\x26\x10\xf8\x9f\x1f\xe9\x5a\x71\x97\x15\xb4\x21\x52\x22\x75\x6f\x5c\x6a\xc3\xb2\xd3\x44\xfa\x09\x2b\xb2\x6d\x26\x94\x81\x56\x59\x23\x52\xaf\x86\x59\xb3\xd4\x7a\xbc\x25\xe0\x4b\x01\xd6\x02\xa1\x41\xed\xc8\x33\x61\xb0\x16\x3c\x5c\x03\xbb\x01\xde\xef\x36\x9f\xca\xbb\x2b\xa6\xb3\x7c\x98\x09\x21\x6b\xa0\x0d\xdc\xe9\xd7\x3b\x0e\xb2\xf4\xea\xb2\x31\x3e\x63\x03\x1e\x5d\xc7\x52\x8c\xf3\x52\x7d\xe8\x4e\x04\xed\xc8\xd1\x88\xd7\xd2\xe7\x88\xf8\x91\xb8\x30\x1c\x2f\x8b\xb9\x7e\x67\xe0\xdb\xe2\x25\x6c\x6a\x6f\xa1\x6d\x20\xfc\x40\x6c\xdd\x32\x6c\x42\x8b\x5f\xe3\xb4\x81\x45\x37\xef\x44\xd1\xf1\x99\xfd\xf8\x52\x7f\xdb\xcc\x8a\x2e\x21\x8b\xcf\x03\xa7\xa4\x98\xe9\x93\xed\x7a\x6d\x31\x42\x1a\x89\x70\xa3\x21\x3d\x64\x1b\x0d\xc8\xf4\xd8\xb1\x6c\x93\xed\xca\xb5\xf2\x6c\xec\xf0\x38\x31\x76\x26\x35\x07\x13\x44\x51\xee\x40\x73\xb4\xb2\x29\xc2\x94\x46\x48\xb0\x98\x19\x05\x49\x12\x25\xbf\x69\xd8\xe1\x22\xe7\x61\x8b\x1d\xde\xa0\xa4\x5c\xe8\xf7\x04\xf1\x7b\xd9\x49\xf3\xa3\x2c\x63\xb6\xf9\x5b\xd9\x17\x67\xb4\x42\x13\x95\x21\xb2\x56\xc4\x85\x01\x38\x8d\xf5\x59\x69\xc7\x4c\xd9\xb2\xb4\xe8\x15\x4e\x3d\x22\x80\x2b\x70\x68\xf3\xbb\xcc\xe0\x26\x04\xe0\x06\xdb\xc7\xb0\x75\x0d\xd1\x70\x08\xb6\xa6\x57\xdb\x08\x46\x6c\xe0\x5e\xf1\x59\xc5\xa0\xdb\x09\x23\x80\x43\x7c\xa8\x89\x86\x06\xfd\x0a\x17\xab\x6e\x27\xd7\x32\x89\x75\x93\x37\xab\x65\x50\xb5\x7e\xe7\x6f\x23\x5b\xf0\xc0\x43\xa3\x2d\x2d\x36\xf1\xb4\x7e\xa1\xea\x66\x60\x96\xa8\x5a\x48\xb8\xa9\xe3\xd5\xba\x94\x43\x8c\xb0\x0d\x85\xb5\x8b\x4d\x0c\x69\xb2\x28\xc8\x54\xaf\xb8\xd1\xc9\x2b\x9d\xd5\x4f\xab\xda\x8a\x1b\x53\x9c\x8e\x05\x6f\xaf\xc6\xd1\x61\x99\x5c\x13\x25\xfb\xce\xdc\xa0\x86\x2f\xd0\xdf\x73\x9c\x98\xcb\x8d\x59\x72\x74\xc3\x06\x51\xf9\xbb\x3f\xa3\x01\xdc\x3e\xe8\x12\xf8\x22\x38\xf8\xa1\x35\xc5\x11\x4d\x33\x22\x24\x67\xb8\xb5\x2c\xcd\xe3\x5f\xe4\xd8\x42\xfe\x8f\x71\x14\xf1\xbc\x0e\xef\xbf\xc6\x4c\x1a\x5a\x0b\x27\x85\xd1\x63\x3e\x21\x82\x11\x53\x7a\x07\xde\x43\xee\xbd\x4e\xc3\xe5\x38\x57\xf3\xef\xc6\x51\x42\x3b\xd7\x21\x80\xec\xa2\x81\xfe\xec\xd4\x7c\xb5\x6c\x02\xa5\xf6\x4b\x43\x67\xc8\x3c\x43\xe6\xd9\x11\xfa\x1e\x47\x8f\x84\xc5\x28\x4b\xf2\x19\xb5\x60\x02\x70\x43\x01\xbb\x0c\xcc\xb3\xe5\x89\x19\xd9\xc2\xb4\xaf\xaf\xa1\x11\x4b\xf1\xa3\xc1\x06\xb4\x42\x64\x84\x93\x64\x2d\x33\x83\xa7\x87\x1a\xaa\x8a\xcb\x7c\xf7\x65\x8e\xcc\xf9\x50\xe6\x7c\x80\x41\x15\x10\x24\x73\x86\x30\x00\xb3\x7c\x25\x51\x9e\x39\x09\x08\x2c\x7d\x09\xf8\x5d\xcd\x24\xa1\x7e\x35\xd5\x7a\xd0\x9c\x8c\x18\xc4\xb2\xba\x16\x17\x9e\xab\x84\xae\x7e\x1f\x72\xd2\x74\xf8\xa6\x06\x96\x60\x3b\x2f\x62\x0d\x80\x72\x05\x25\x74\x8c\xd3\x55\x73\xc2\xc0\x00\xd1\xbd\x65\xd0\x68\xba\x6f\x5a\x29\x26\xd7\x0a\x9a\xde\x62\xea\x97\x30\x67\xd4\x56\xbe\xb0\x46\xf2\x20\x5c\xce\x79\x92\x8a\xef\xa9\x44\x12\x2b\x2a\xa7\xb4\xd1\x30\x13\x82\x41\x6c\xb3\xea\x78\x3d\x04\x8a\x06\xf4\x89\xca\x5a\xf8\xb8\xff\x23\xf4\x11\xec\x4c\x81\xec\xcd\x3d\x96\x43\x1b\x4b\x50\x73\xd2\x0a\x6a\xb8\x8b\x80\x19\x37\x83\xe0\xfd\xa5\xe6\x43\x9f\xe3\x71\x84\x06\x85\x7d\xdf\xa0\x59\x18\xcb\xfd\x8a\x19\x91\x44\x92\x4d\x88\xaf\x93\x29\x0c\x7c\xe0\x40\x40\x08\x64\x15\xa9\x7f\x2f\xa0\x6f\xfd\x30\x9f\x21\x8d\x12\x3f\x12\xb6\xcc\xde\xd1\x7d\x84\xc6\x20\xb5\x54\xe9\xf6\x96\x2e\x6e\x8c\x5d\x9b\x0c\xb0\xfb\xb1\x2b\x00\x44\xe8\xf4\x58\x2f\xb9\x16\xf4\xa3\x47\x9b\xbc\x61\xec\x9d\x16\x82\xe4\x79\xce\x65\x78\xce\xdc\xfe\x19\x5d\x51\xe4\xc4\x25\x69\x40\xf2\x8b\x5f\x60\x13\xf5\xc2\x78\x88\x50\x02\xa3\xf6\x87\xd4\xd8\x72\xfd\x7e\x23\xc7\x42\x61\x19\xc0\x4f\xe4\x9a\xaa\x9f\xe6\x1f\xff\x22\xaf\xe1\xc4\xee\x22\x17\xbe\xb9\x6e\xdb\xf6\x71\xe8\x1b\x5a\xe0\x7d\x84\x55\x51\xf4\x0d\xc7\x1e\xbd\x21\xe3\x31\x2a\xc8\x6b\xfd\x0a\x6f\x6f\x3f\xad\x4a\x65\xb8\x4e\x73\x5b\x45\xd9\x97\x81\x9b\x1e\x4d\x72\x6a\x8a\xac\x96\x44\x2e\x9b\x2f\x09\xda\xaf\xbd\xfe\xa9\xf4\xf7\x49\x33\x8d\xdd\xf0\x78\x1b\xc2\x5a\x1f\xb0\xae\x4e\xd7\x1d\xa2\x78\x65\x53\x51\xd8\x25\x2b\x91\xf1\xf6\xf8\xcb\x78\xdc\xbd\x8c\x2a\x38\xdc\x27\xf9\xff\xc7\xde\xb7\x35\xb7\x91\x1c\xe9\xbe\xfb\x57\x54\xc4\x3e\x48\x3a\x01\x82\x1e\x3b\xf6\x84\xad\x88\x7d\xe0\x50\x94\x07\xb6\x86\x94\x49\x6a\xc6\x7b\x16\x1b\x50\xa1\xbb\x00\xb4\xd9\xa8\x6a\x75\x75\x93\x82\xd7\xfe\xef\x27\x2a\x33\xeb\xd2\x57\x74\x03\xa0\x24\x7b\xe7\x61\xd7\x23\x02\xa8\xae\xae\x4b\x56\x56\xe6\x97\xdf\xb7\xba\x03\x5a\xf4\x2e\x4e\x88\x40\x06\xc5\x16\x79\x99\x79\x36\x8f\x71\x25\x07\x5d\x93\x42\xf9\x5b\x7f\xfc\x73\xf6\xc7\xbb\x9b\xeb\xb3\x2d\xcf\xf5\x86\x43\xcd\xad\x6d\x6b\x62\x95\x66\xf0\x02\x6a\xf3\x4a\x89\x9c\xcb\x33\xb6\x56\x13\xcc\x62\xbe\x66\x9b\xa2\xc8\xf4\xeb\xf3\xf3\x75\x52\x6c\xca\xe5\x34\x52\xdb\x73\x3f\x34\xe7\x3c\x4b\xce\x97\xa9\x5a\x9e\xe7\x02\x70\xac\x67\xdf\x4d\x7f\xf3\x1d\xcc\xcc\xf9\xe3\x77\xe7\x90\xbb\x9a\xae\xd5\xbf\xbd\xfb\xcd\xef\x7f\xfb\x7f\x4d\xc3\xd9\xae\xd8\x28\xf9\x9a\x52\xa4\xbd\x6d\x9f\xa1\xdf\x7b\x8e\x3f\xa9\x3d\xe5\xf7\xd3\x5f\x87\xdd\xa0\xaf\x6e\x55\x2c\x52\x7d\xfe\xf8\xdd\xc2\x4e\xcc\x34\xdb\xfd\x82\xfc\xfc\x6a\xc8\xcf\x87\xa4\xf8\x05\xf9\xf9\x55\x91\x9f\xc3\x3d\x1c\x67\x63\x6a\xa2\xd9\xe6\xef\xce\x46\xda\xe0\xf6\x3e\x3b\xd4\x72\x38\x84\xb8\xfc\x23\x8e\x88\x07\xd1\x40\x7e\x8c\x08\x39\xb8\xab\x43\x47\x10\x6b\x2c\x9d\x7d\xa7\x33\x3f\xaa\x0c\x19\x70\x16\x49\x04\x54\xc9\x18\x74\xcb\x78\xd2\x86\xe7\x24\x3c\xd1\x31\xe3\xf7\x9c\xa4\xdf\xa7\x66\xfb\xa6\xd7\x3d\x90\xe9\x3b\xc5\x5f\x5b\xf4\x93\x7a\xb2\x0c\xdf\xa7\xe0\xc5\x1e\x28\x40\xe7\xe8\x7e\x71\xf1\x40\x5f\x6c\xbf\x3a\xba\xb1\xe1\xfa\x30\x18\xdd\x05\x92\xea\xb9\x4c\x98\x93\xcd\xa5\x07\xda\x83\xc3\xf2\x14\x80\xba\x29\xd1\x21\x65\x65\x9e\x29\x2d\xf4\x94\xbd\xad\x49\x34\x79\x68\xe0\xed\xdb\x4b\xf6\xdd\xef\x7e\xff\xdb\xb9\x7c\xd9\x72\x6e\x83\xbd\x57\xf9\x9a\x90\x8a\x70\x5a\x6f\xb9\x2e\x44\x7e\x9e\xaf\xa2\x73\xb4\x72\xe7\xe6\xf7\x67\xf4\xd0\x33\xb5\x3a\x73\xa4\xbf\x67\xc4\x7f\x3a\xdd\xc6\xe3\x4a\xf8\x2b\x4b\x0f\xcf\x1a\x3a\x68\x34\x1c\x4a\x48\xf6\xa3\x56\x8e\xde\x1d\x2b\x49\x50\x09\x42\xad\x5a\xfe\x03\xc4\xac\x5f\x39\x8a\x31\xae\xed\x33\x3c\xe7\x4f\xf7\xd6\x3c\x0d\xff\xb7\x5d\x22\xcf\x19\xa8\xb0\xb6\x24\xbc\x8e\x8c\x19\xf8\xf6\xcd\xe6\x8f\x7b\x64\x3c\x20\x35\x64\xe4\x4f\x56\x52\xa8\x15\xe0\xe4\xc0\x13\xb6\x38\x00\x88\x86\x9a\x93\xd6\xb3\x1b\xe4\x22\xc3\x03\x26\x54\x4f\x6e\x19\xee\x23\x39\xc4\xf7\x8d\xf3\x73\x70\x88\x1f\x3b\xee\x64\x50\xbe\xd2\x80\x1f\x0b\xd6\xc3\xad\x34\x06\xb7\x60\xbe\xbf\x37\x47\xe9\xec\x00\x24\x25\x43\xc1\x62\x64\xf3\x02\x27\x4d\x9c\x15\xea\x0c\x68\x61\x80\x6c\x04\x59\xfd\xbb\x80\x0b\x90\xdb\x1d\x73\x4c\x9a\xef\x0f\xe8\x27\x3a\xe6\x9f\x83\x8e\x92\x4f\xa2\x91\x24\x93\x40\x4f\x89\x94\x22\xa7\xac\xd5\xde\x13\x75\x64\xe6\x37\x9c\xca\x7e\xcc\x53\x20\xc8\x19\x30\xae\x3b\xc4\x3b\x0f\x8c\xc0\x94\x81\xf7\xb9\x51\x5b\x65\xdc\x19\x55\xea\xe0\x43\xbc\xbd\xc0\x21\xdc\xe9\x7b\x6d\x79\x86\x34\x70\x5f\xef\x6d\xcc\xd6\x32\x1f\x61\x50\x2f\xfc\xd2\x28\x11\x8b\x65\x95\xb6\x7f\x4f\xff\x1d\xdf\x7a\xff\xba\x01\x5c\xc1\x16\x92\x28\xa0\x71\x47\x2c\xca\xc9\xdf\xcc\xbd\xc6\x2c\x29\x77\x53\x70\x27\x37\xc2\x60\x90\xed\x30\x24\x54\xb5\xde\x7c\x67\x3d\x72\xb9\x1d\x39\x07\x0e\xc6\x3b\x64\x02\xb8\x44\x60\xab\x45\xb4\x9e\xb5\x42\x5a\xbb\xf6\xa5\x55\x94\x8b\x17\x96\x91\x73\x5c\x57\xef\x5c\x03\x44\xbe\xd9\xec\xb7\x27\x34\x02\xfc\x33\x8e\x31\x1a\x04\xeb\x5b\x74\xc0\x5a\xe4\xf8\xcd\x08\x12\x26\x63\xc6\x0e\x1e\x82\x8b\xb3\x31\x82\xc1\x5e\xe8\x1a\xc0\x71\x21\xb6\xbe\x88\x55\x1b\x60\x1e\x39\xe0\x7c\x7d\x8c\xe9\x65\xe3\xf2\xe8\x7e\xf8\xe8\xe5\x33\x77\x99\x98\xb0\x65\x09\x9f\x5f\xdf\xdc\x87\x78\x88\x04\xdf\xf6\x2c\xda\x88\xe8\x01\x02\x26\x78\xe4\xe1\x66\xb0\xd2\xa9\xcb\xdd\x5c\x7a\x71\xad\x42\xd9\xe4\xfe\xce\xf1\x8d\x3b\xce\x7d\x95\xb3\x38\xd1\x59\xca\x77\x90\x46\x95\x88\x84\xf7\x29\x58\x57\x42\x62\x4c\xc1\xbe\x78\xf1\xf0\x99\x36\xb3\x72\xe1\x7f\x37\x76\x2c\x79\xbe\x4c\x8a\x9c\xe7\x3b\xe6\x07\xb3\x69\x0f\x98\x16\x5b\x2e\x8b\x24\x9a\xcb\xad\xe0\x32\xc4\xbd\x51\x1a\xd9\x0c\x72\xac\x04\x31\xf2\xae\x56\x22\x2a\x3c\xa5\x1f\x38\xef\x6e\xa4\xf6\xed\xc1\x71\xef\xee\x76\x5e\xef\xab\xff\x90\x48\x2c\x20\x4f\xb6\x80\xaa\xa4\x35\x44\x47\xe3\x81\xc9\x1b\x10\x63\xa3\x23\xd7\x5e\x06\xe1\x5f\x76\x4d\xb1\xa5\x28\x9e\x04\x54\xac\x53\x89\x5d\x9b\x8f\x7f\x34\x21\xff\x71\xb2\x85\xed\x82\x8f\x01\xd6\x0a\x37\x58\x08\xd7\x72\xd4\x3a\xb2\xc6\x91\xf3\x82\x8a\xfe\x20\xda\xf3\x82\xe2\x56\x2f\xe0\x98\x36\xb7\xc7\xfc\x51\xc4\x73\x59\x25\x2e\x22\x9f\xd1\x6f\x38\xe6\xa5\xa6\x4e\x63\x6d\xec\x18\x0f\x8a\xe5\x5f\x01\x59\x83\xa7\x69\x74\x65\x6d\x3d\xd2\x57\xed\x52\xf9\xcf\xa0\xaa\x34\x38\xc9\xe3\xd5\xa8\x48\x4a\x86\x94\xe7\x2a\x78\x0a\xb7\x28\x1d\x2d\x0b\x72\xb6\x39\x88\x29\xc5\x25\x1b\x91\xce\xb6\x36\xe6\xd2\xd6\x2b\xaf\xca\x14\x79\x38\xbb\xc4\xb8\x88\xa5\xc9\xd6\x56\x7c\xbd\x1a\x1b\x17\x57\x63\x81\x7a\x97\x83\x3d\x04\x70\x5f\xb4\x75\x76\xd5\x0b\xa9\x51\x49\xd3\x0a\xf7\x40\xe0\x79\x2d\x0a\x38\xcd\xe3\x32\xc5\xf2\x5b\x88\x98\x03\xe3\x13\x4f\x53\x96\x14\x7a\x2e\x1d\x41\x15\xd2\x8d\x83\x85\xb5\x21\xf5\x98\xae\x5c\xf0\x08\x68\x96\x44\x87\xc1\x0f\x4b\xa2\xa4\x68\x80\xa4\x77\xa1\xd8\x45\x96\x09\x8e\xd5\x62\x38\x6d\x73\x19\xde\xb9\xea\x93\x40\xa5\x55\x20\xae\x7a\x8a\x2a\xa7\x1e\xcc\x3b\x28\xd2\x8e\x9e\x92\x29\xbb\xc0\xb7\x8b\x9c\x86\x3f\xa3\xde\x52\x85\x3a\x61\x19\xcd\xad\xa6\xd0\x36\x46\xee\xef\xad\x19\xcf\x8b\x24\x2a\x53\x9e\xa7\xc0\xfa\xbe\x2a\x53\x96\xac\x02\x49\x4e\x98\x03\xa4\x27\x32\xd3\x15\x29\x38\xab\x6d\x94\x5c\xf3\xad\x08\x2a\xa3\x29\xbc\x93\x06\x18\x0a\xe4\x5c\xc6\xe4\xbc\x69\xeb\xd5\x94\xbd\xa9\x4b\xe3\xc2\x9e\x08\x68\x0d\x13\x8d\xe6\xcf\xf5\x37\x28\xea\x43\x89\xdd\x64\x65\xae\x94\x2f\x82\x5d\xd7\x25\x32\xcf\xf5\xc3\x48\x80\x86\x25\xc7\xef\xc7\xe5\xb6\x16\xf5\xde\x83\x10\x79\x05\xb6\xe1\x36\x44\x47\x07\xed\xa9\x30\xb2\x93\x21\x25\xe4\x01\x1d\xfd\x39\x50\xfa\xae\x77\x76\xdb\xa3\x00\x0a\xf3\x38\xb2\xab\x81\x9e\xce\xf8\x8e\x06\x2b\x27\x84\xe3\x0c\x19\xd9\x35\x2f\xc6\x62\x73\x5c\xb9\xcb\xf8\x8e\xb6\xe2\xa0\x3a\xbb\xb9\x3f\xd2\xf4\x73\x45\x80\x87\x99\x5e\x99\x5b\xbe\x40\x9c\x99\x5a\x05\x26\x98\xce\x1b\x52\xea\x01\xf2\x73\x67\x13\x96\x82\xa5\x89\x7c\xb0\x54\x07\x66\x81\x4e\x18\xf7\xad\x83\x8d\xc0\x41\xc6\x3d\xd7\xe1\x79\xb5\x49\x05\x1c\xe1\x8c\x0d\x2b\x18\x6c\xbf\x21\xdb\x9e\x8c\x52\x83\xb0\x2f\xdc\xf6\x1e\xc3\xa7\xa5\x17\xd9\xec\xee\x3c\x16\xce\x8c\xc7\x60\x80\xb1\x0c\xe4\xdc\x3b\xc7\xf7\xfd\xa6\x8a\xd9\x1b\x21\xac\xf3\xe1\xfa\xcd\xd5\xdb\xd9\x75\x55\x0d\xe7\xcf\x1f\xae\x3e\x54\xff\x72\xfb\xe1\xfa\x7a\x76\xfd\x87\xf0\x4f\x77\x1f\x2e\x2f\xaf\xae\xde\x54\xbf\xf7\xf6\x62\xf6\xae\xf6\x3d\xf3\xa7\xea\x97\x2e\xbe\xbf\xb9\xad\xe9\xef\x58\xf1\x9c\xe0\x4f\xf7\xb3\x1f\xaf\xde\x2c\x6e\x3e\x54\x24\x7c\xde\xfc\xe7\xf5\xc5\x8f\xb3\xcb\x45\x4b\x7f\x6e\xaf\x2e\x6f\x7e\xba\xba\xdd\xa3\xc0\xe3\xdf\xb7\x75\x48\x4f\x01\xb6\x3a\x58\x8f\xe9\x82\xad\xf2\x44\xc8\x38\xdd\x21\x16\xdc\xde\x03\x6b\xd0\xd3\xf0\xa4\x4a\xb6\x42\x95\xc7\x40\xba\xef\x37\x82\xa9\x47\x91\x03\x2b\x03\xb6\x46\x25\x9c\x5c\x3f\x74\x72\xf6\x15\x79\x33\x86\xde\x5b\xb9\x52\xe4\x3b\x57\x1b\xd5\xd7\x1d\xcf\xe8\x43\x0f\x61\x99\xc8\xfb\xfa\x02\x7e\x44\x5e\x66\x45\xb2\xec\x06\xe9\x0f\x64\xba\x19\x7f\x53\x45\xfe\xb9\x76\xb2\x8e\xeb\x76\xc3\x58\xc1\xaa\x1f\x03\xd3\x85\x16\x0e\x95\x19\x73\xbf\xb6\xd0\xc6\xac\x5c\xa6\x49\xc4\x92\xb8\x1e\x7d\xc0\x92\x2a\x0c\xb0\xd6\x69\x2a\x33\x91\x83\x63\x67\xfc\xe5\x2c\x17\x67\xbc\x2c\x36\x56\x01\xdd\x55\xd6\x21\x6d\xa4\x88\x72\x51\x04\x6a\xfd\xa4\x2f\x15\x3c\x09\x3a\x43\x15\xc5\x31\x90\x97\x4c\x03\xca\xf0\x8e\x88\x3a\xfe\x12\x5b\x1f\x11\x52\xc4\xef\xf7\x0e\x0d\xf5\x38\xd1\x75\x71\x61\x70\x61\xf1\x43\xab\x52\x65\xde\xdb\x58\x6a\xa7\xd2\x84\x93\x6c\x6b\x09\xda\x5f\x63\xdf\x1a\x0b\x17\x4a\x15\xfa\x4f\xad\xd3\x47\x97\xb9\x80\x43\x84\x12\xe7\xf6\xb6\x0f\x40\x0f\xaa\x3d\x80\x92\x03\x73\xb1\x59\x8a\x0d\x4f\x57\x18\xc3\x33\x53\xe3\xf7\x55\x73\x89\xde\xab\x07\x21\x6f\x71\xc2\xbe\x8a\x39\x94\x78\x4f\xf0\x35\xe6\x2e\x7e\xe2\x03\x7e\xa6\x8f\x76\x55\xd9\xda\x2b\x14\xe9\x47\xaf\x3a\xf8\x18\x0b\x20\x3c\x83\xac\x2d\xdb\x5a\xad\x92\xcf\xa6\xc1\xb9\x14\xad\x1c\x9a\x80\xae\xb1\x6c\x3f\xce\x2e\x03\x92\x08\x29\x53\x1e\x84\x04\x7d\x2b\x94\xbf\xdd\xbb\x66\xc7\x45\x9b\x9b\x73\xd1\x13\xfe\x86\x08\x59\x52\x91\xfd\x0a\x73\x22\x76\x9c\xa0\xc8\xf2\x41\x4c\xd9\x1b\x22\x82\x30\x7f\xb9\x7c\x37\xbb\xba\xbe\x5f\x5c\xde\x5e\xbd\xb9\xba\xbe\x9f\x5d\xbc\xbb\x1b\xba\xfd\x4e\x51\xa7\x53\xdb\x7d\xf5\x52\x29\x67\x21\xce\x69\xe7\xf9\x72\x51\xf7\x52\x7e\xdb\xc1\x94\xec\xef\x7d\x12\x67\x8b\x38\xd1\x91\x39\xfe\x76\x0b\x21\x63\x20\x1f\x3e\x68\xa9\xb6\x37\x55\x7f\x0b\xf7\x0d\xe6\xbe\x61\x2d\x08\x9e\x76\x8f\x76\x45\xbb\xcf\x01\xa3\x06\x41\xbb\x5c\x98\xcd\x1f\xcf\x65\x70\xda\x4c\xf7\x2b\x4e\x98\xe6\x8e\x7b\xb7\x6a\x13\xf5\x77\xc2\xfe\x26\x5a\x97\xdc\xd8\x47\xfb\x35\x00\xe8\x75\x8c\x0a\x31\xc2\x85\x0c\xc8\x49\xa0\xde\xc9\xcc\x4d\x7e\xcb\x65\xcc\x0b\x95\xef\x3a\x5e\x71\x98\xf1\x0c\xb7\x4d\xd5\x84\x86\x47\xb6\x14\x22\xb6\xb3\x80\x5f\xe5\xb2\xbe\x94\x90\x27\xf9\xfe\xe6\x4f\x57\xd7\x77\x8b\xab\xeb\x9f\x16\xef\x6f\xaf\xde\xce\xfe\xe2\x70\x83\x19\xd7\x6d\x6a\x7d\x59\x2e\x8c\x75\xb1\xb4\x13\xad\xf6\x05\x25\xf4\x6c\x3b\x24\x9b\x94\xac\xe6\xd2\x5a\x96\xdc\x37\xbf\xc9\x55\xb9\xde\xb4\x37\x54\xef\xe5\xfb\x8b\xfb\x1f\x0e\xea\x26\x90\x02\xa1\xce\x16\xee\xb6\x26\x7e\x32\x59\x91\xdd\x43\xd0\x65\xad\x7b\x40\x6d\x05\x5f\x6d\x8b\xc9\x77\x58\xb4\x83\x6e\x2f\x4d\xa3\xd5\xeb\xfc\xb7\x7c\xbd\x6b\x01\xdd\x07\x76\xb3\x72\x8c\x00\x9e\x17\xe5\x1a\x1b\xad\xbd\x6e\xf9\x5b\xe5\x04\xfb\xcd\x59\x2a\xd6\x6b\x11\xe3\xf2\xaa\x37\x4c\x11\x2b\x32\x81\x91\x3f\xd7\xdb\x46\x91\x04\xd5\x8e\x38\x98\x1d\x3a\x6a\xb8\x01\x7f\xef\x7e\xd2\x6e\x2b\x2e\xad\x68\x73\xa4\xa4\x2e\xb8\xec\x48\xbb\x3e\x36\xf1\x8c\x83\x4c\xd1\x4d\xce\x5c\xa9\x10\x05\x48\x6c\x80\xdd\xef\x83\x43\x12\x4e\x24\x1c\x27\x29\xe2\x11\x08\xca\x05\x2a\xd3\x2d\x93\x00\x91\xc6\x5b\x6b\x11\x9f\x3f\xb8\xd1\x7b\x75\x22\x26\x24\x08\x8c\xa2\x72\x0f\x41\xb5\x31\x1a\x04\x72\x58\x9d\x30\xda\x51\x13\x52\x7b\xf2\x4f\x34\xf4\x78\x6b\xad\x06\x66\xb9\xe5\x1a\x73\x13\xe4\x9c\xb7\xf1\xf1\xad\x8a\x1f\xee\x5b\xce\x72\x15\x97\x91\x65\x63\x81\x66\x3d\x1e\x84\x02\x5a\xf6\x80\x8d\xd9\x99\x99\x66\xba\xa4\x88\xf8\x0c\x90\xde\x73\xd9\x95\x7c\xb1\x36\xa0\x23\xcc\xf5\xde\x9e\x5a\xc7\xcc\x7d\xcb\xe8\x77\x6f\x41\x3b\xd8\xc3\x2a\x2e\x99\xfd\x3a\x38\x7b\x1d\x70\x1a\x9a\x97\x25\xc7\xcc\x6a\xf5\x38\xee\x22\x5f\x70\x56\x75\x1c\xea\x67\x18\x68\xa2\x5a\x4a\x81\x47\xe4\x86\x6b\xf4\x5c\x8b\x68\x53\xed\x38\xbc\x4d\x95\xb0\xac\xde\x5d\xe7\x09\x1e\x17\x21\x18\x94\x5f\x99\xe0\x9d\x3a\xd1\xd4\xfb\x50\x7c\xca\x29\xe9\x8d\x5b\xf8\xa1\x73\xe4\x2e\x2f\x68\xf7\xc0\x60\xa5\xbc\x94\xd1\x86\x65\x29\xc7\x2a\xe3\x0d\xd7\xb8\xa4\x2d\xc8\x80\x2f\x93\x34\x29\x80\x20\x05\x73\x5f\xb5\x11\x36\x37\x1a\x9e\x3f\x58\x4e\x52\xee\xd9\x70\xfa\x16\xfd\x91\x60\x4e\x2f\xd8\xfe\x25\xe1\x9c\x7e\xcb\x06\xbf\xe8\xcd\x9c\xf9\x65\x49\x50\x4e\x3f\x1d\xc6\xe2\xc1\xb2\xf4\xef\x32\x6e\x66\xa9\xc5\xf7\xf5\x9f\x57\xc6\xbb\xe5\xa0\x1e\x0f\x65\x20\xb2\xed\x11\x66\xbe\x4e\xc5\xdd\xba\xb3\x56\xa9\xe2\x1d\x72\xb0\xb6\x6d\x64\xd6\xee\x6a\x3b\x56\xe5\xb2\x8b\xcb\x15\x7b\xd5\xdf\x7a\x5f\xdc\xdf\xee\xdb\x53\xc5\x05\x43\x03\xc8\x0b\x51\x24\xe3\x42\x1b\xc1\x4b\xf3\x42\x9c\xc1\xcf\xdb\x1b\xa7\xd2\xb3\xc1\xef\xdc\x58\x68\x5e\xdf\xc1\x31\xc6\x02\xc8\xac\xb9\xba\xfe\x5c\x72\x63\x1a\x6e\x56\x77\xc8\xd8\x71\xcc\x22\x2b\x92\xe6\x0a\x6b\xdf\x89\xf5\xa7\xde\x57\x93\x2a\xe1\x1a\x18\x5c\xad\xd9\xf6\x36\x77\xe6\xd7\xc3\x37\x64\x55\x33\x3d\xcb\x13\x05\xbc\x1a\xa4\xd4\xde\x43\x7a\xd7\xfa\xdc\x23\x46\xf2\x53\x29\x4a\x61\xd6\xfe\xb2\x8c\xd7\xcd\xd8\xe6\x08\xef\xcc\xbf\xd2\x46\x3d\xb1\x6d\x19\x6d\x98\x6d\x9c\xc5\x22\xe5\xbb\xca\xab\x81\xbf\x54\xa8\x14\x68\x64\x0f\xe4\xb4\x8c\x4a\x5d\xa8\x2d\x80\x30\x7d\xbb\x79\x29\x61\xc1\x33\x5e\x14\x79\xb2\x2c\x8b\x56\xc0\x56\x85\xe3\xea\xc0\x84\xd6\xdd\xfb\xab\xcb\xd9\xdb\x59\x2d\x9b\x74\x71\xf7\xa7\xf0\xdf\x3f\xdf\xdc\xfe\xe9\xed\xbb\x9b\x9f\xc3\xbf\xbd\xbb\xf8\x70\x7d\xf9\xc3\xe2\xfd\xbb\x8b\xeb\x4a\xce\xe9\xe2\xfe\xe2\xee\xea\x7e\x4f\x5a\xa9\xf9\xd4\xee\x89\xe0\x01\x05\x97\x85\x85\x5a\x2e\x62\x7b\xbb\xa4\xa7\xbe\x66\x17\x96\x90\xac\x42\x99\x67\x53\x83\x90\x79\x47\x65\x5e\xca\x20\xbe\xe1\x05\x27\xa5\xf3\x29\xbb\x60\x56\xb1\x1e\xc0\xd0\xda\x38\x0b\xc4\xd6\x64\x66\x07\x9b\x30\x1e\x43\xe4\x6f\x6e\x5e\x6c\x4d\xad\x88\x27\x2d\x15\x21\x2d\xb7\xad\xfc\x99\xcb\xab\x47\x21\x8b\x12\x38\x83\x79\x9a\x32\x2b\xb0\x4e\x5f\x08\xaa\x9a\x6d\x2f\x75\xb2\x4d\x52\x9e\x7b\x5d\xac\x1b\x6a\x0b\x1c\x76\xdb\x57\x47\x62\xd3\x2c\x99\xb5\x97\x87\x0f\x33\x06\xfd\xbe\x7c\x37\x03\x17\x28\x2a\xac\xe8\x83\x7d\xf8\x5c\x22\x0f\x17\x3d\x71\xcb\x01\xa0\x5f\x28\x8a\xa7\xe1\xe3\xe9\xcb\xdd\x0b\x51\x1f\xb3\x89\x6d\xe4\xf9\xb9\x40\x40\xae\x93\xf6\x3f\xae\x64\x91\xef\x06\xfb\x35\xf7\x50\x91\xaa\xc1\x37\x25\xbc\x4f\x55\x2b\x0b\xc3\x1d\xcc\xb6\x7e\x0d\xce\x8e\x05\xa3\x51\x34\xde\x05\xdd\x05\x30\x13\x77\xf8\xdf\xa9\x39\x84\xbe\xd5\x71\x08\x49\x43\x60\x14\x96\xaa\x94\xb1\x26\x64\xd2\x36\x91\xe7\x5b\xfe\xf9\x95\x7d\x53\x2c\xc2\x77\x8c\xf5\x40\xb0\x24\x52\x73\x13\xd9\x19\x23\xd7\x3f\x5c\x73\xd9\x33\x5e\xfb\xbd\x45\x6b\x59\xe1\xda\xe3\xef\xa8\x88\xb1\x7a\x14\xbb\xb6\xf9\x6b\xa8\x8e\x20\x8e\x8b\x36\x3c\x34\x92\xe5\xc2\x7c\xd1\x01\xb8\x52\xc4\xe5\xb9\x7f\x03\x50\xbb\xa2\x8c\xd6\x6e\xbb\xc3\x2c\xef\x51\xdb\xa6\x35\xbf\xfc\x0c\xb2\x31\xf4\x24\x33\x67\x98\x6d\xb6\x81\x4e\x02\xa6\x53\x1a\xcd\x4c\xd6\x5f\xd5\x92\xad\xa0\x4a\x83\x94\x8f\x73\x01\x81\x6d\x98\x0a\xcb\x73\x0c\x34\x3c\x8d\x14\xb6\x5d\x02\xa9\xd0\x10\xee\x95\xe6\xba\x25\x3e\x95\x94\xb1\xfb\xee\xd7\xe3\xce\xd9\x22\xdf\x31\xcb\xa9\x1f\x56\x89\x50\x91\x14\x9d\xb9\xd0\xaf\x52\x26\x6d\xdc\x5c\xb7\xa5\x34\x47\xf1\x29\xc0\x0e\xc3\xb3\x59\xb5\x87\xd2\x3f\xf7\x16\x52\xd8\x40\x6c\x8e\xdf\x7f\x36\x32\xc3\x9f\x6a\x1c\x86\xf4\x38\x80\xed\x52\xeb\xe1\x81\xb6\xe4\xd1\xc3\x13\xcf\x63\x8c\x15\x02\xfa\x60\xca\x7e\x50\x4f\xe2\x51\xe4\x13\x16\x89\xbc\xe0\x44\x6f\xa4\x21\xfd\x0a\x1b\x8a\xda\x99\x4b\x40\xb1\x23\x57\x94\x04\xd1\xe8\x22\x59\x6f\xcc\x7d\x32\x48\x9e\xab\xdc\x98\xa3\x02\xb9\xe3\x32\x11\x11\xa1\x4c\xc7\x00\xac\x52\xfe\xd8\xe4\x6b\x3a\xa4\x12\x9e\xcd\x5c\x29\x9e\xcd\x4e\x59\xee\xf8\x3e\xb8\x03\x0d\x18\x19\x4d\xa4\x00\x99\xb0\xb5\x4a\xb9\x5c\x4f\xa7\x53\x26\x8a\x68\xfa\x6a\xd4\x42\xa7\x06\xc3\x7c\x97\x83\xa0\xa6\x4a\x69\x91\xee\x1c\x09\x8a\x2b\x12\x30\xc3\x0c\x35\x22\x3a\xc1\x90\x47\xcb\xf2\xbf\xab\x57\xd4\x7f\xd9\xd0\x79\xfb\x4d\x75\x74\x09\x5a\x47\x3b\x20\x45\x33\xa2\x25\xfc\x7e\xfb\xcd\xeb\xa0\x92\xca\x0e\x9e\x53\x25\xc7\xd6\x09\xfe\xa4\xba\x84\x95\x0f\xe2\x26\x6b\x6d\x89\x88\x1c\x0e\xaa\xad\xea\x8a\x58\xd4\xca\xdd\x8e\xa8\x74\xeb\x29\x5a\x1b\x59\xaf\xd6\xb2\xef\x5a\xb6\x45\x6d\xba\x47\x6f\x8b\xfd\xec\xf8\xad\x2f\x34\xb2\x1e\xd0\x17\xee\x8e\x71\x9d\xb0\xa4\x28\xdd\xc1\x8d\xcb\x55\x07\x42\x64\x39\x0e\x22\xe3\x95\xc0\x3f\xd4\xa9\xf8\xcc\x81\x23\xd8\x09\x12\x05\xba\x50\x39\x5f\x0b\xb6\x15\x71\x52\x6e\x5b\x8d\x8d\xeb\xee\x31\x68\x2f\x95\x96\xdb\x6e\xaa\xb3\x63\x1d\x68\xdf\x49\xfc\xaf\x4b\x78\xdc\x60\x07\xda\x4b\x88\x5b\x91\x12\xea\x2f\x86\xc1\x69\xac\xcd\x49\x99\x27\x1a\x48\xf9\x0e\x29\x0b\x73\xcd\x60\xd3\x90\xad\xdb\x65\x18\x7e\xad\xcc\xee\x99\xcd\xee\xd0\x4f\x34\xce\x2a\xa4\xf8\xba\x0f\x85\x3a\x86\x6c\xf4\x1c\x81\x04\xc6\x41\x79\x4d\x70\x1b\x03\x32\x6a\x02\xb9\x40\x83\x94\x89\x2f\x14\x5b\xd9\x42\xa3\x07\x11\x50\x37\xc5\x40\x53\xfd\x84\x3c\x20\x7f\xfa\x9d\xb6\x39\x7b\x82\x55\x78\x8f\xa5\xf0\x0f\xc1\xdc\xc0\xe3\x77\x16\x4d\x83\x6f\x88\x4d\x00\xc1\x52\xcc\x65\xd1\xda\x80\x07\x9b\x41\x5b\xf8\x93\x9f\x78\x99\xb6\x7f\x9d\xda\x87\xaf\xa2\xe4\xcd\xc5\xcf\x77\x0c\x87\x9a\x08\x8d\xf3\xbe\x8e\x06\x8d\xec\xc7\xf3\xc0\x70\x2d\x0e\xf0\x04\x2b\xf3\x80\x83\x6e\x19\xad\xcd\xb0\x8b\x22\xda\x78\xcf\xa3\xaa\x5d\x4b\x7a\x66\xf4\x9e\x5b\x4f\xd1\x8c\x50\xc9\x10\x73\x96\xac\xa5\x0a\xd5\x05\x94\x14\x90\xa4\x31\x06\x48\x85\xcd\xb2\xa4\xd8\x0f\xec\x19\xc9\xaa\xb4\x6f\xa9\x15\x0a\x01\x1b\xf4\x9e\x95\x5c\x1b\x5c\x29\x12\xe4\x62\xb1\xa8\x48\xbc\x13\x91\x3c\x56\x9d\x58\xb8\x5a\xdd\x3e\x97\xd5\x47\x35\x06\xc9\x22\x6f\x92\x5c\x20\x1f\xa8\x36\xde\x5b\x91\x3c\x9a\x8d\xda\x5c\xd6\x6e\x81\x82\x05\x68\xae\xbd\xb9\xc4\x6e\x07\xa4\xa2\x0f\x62\xa7\x43\x2d\x2e\x5a\x51\xac\x6b\x41\x26\xe6\x7d\x68\xbe\xf6\x4f\x05\x0c\xdc\x22\xd0\x16\x1f\x76\x96\xe1\x43\x7f\x34\x3f\xee\x81\xf4\x35\x1a\x37\x6b\xd0\x57\x72\xf9\x98\x22\x99\x09\x3f\xce\x34\x87\x1e\xb5\xd3\xa2\x3b\xef\xc3\xb3\x70\xf1\x35\xf7\xdb\xb9\x24\xde\xe1\xe0\x90\x33\x06\xa7\x39\x6d\x54\x5e\x8a\x6c\xa7\xbb\x0a\x35\x06\x50\xc3\x59\x9a\xbc\x76\xb9\x7f\x2b\xe5\x38\x97\x24\x98\x0f\x8a\xf7\x14\xc3\x6b\x7d\xe0\x81\x50\x30\x9a\xdc\x4e\xf8\x97\xbf\xc2\xd0\xc0\x11\x3b\x1a\x8a\xba\xe1\xed\x27\x12\x66\xf8\x2e\x64\x2b\xf2\xca\xe2\xae\xee\xae\x2e\x6f\xaf\xee\xbf\x18\x3c\xcc\x62\xb3\x46\xe3\xc3\x6c\x3f\xdf\x5c\xbd\xbd\xf8\xf0\xee\x7e\xf1\x66\x76\xfb\x1c\x00\x31\xfa\xe8\x00\x84\xd8\x1d\xd1\x99\x5f\x2a\x59\x88\xcf\x47\x9d\xc9\x79\x29\x17\x7c\x44\xa5\x82\x93\x0c\xe8\x73\x77\xb0\xd1\x26\x1d\xbb\xe3\x4a\x27\x6e\x3e\x3c\xd1\x1c\xfb\xfa\xca\x07\x0d\x57\x49\x9a\x42\x99\xa3\x0b\xaf\x53\x51\x90\x19\x54\xb0\x3f\x96\x8e\x90\x6c\xea\x5c\x2e\x2b\x7c\xf4\x10\xf2\xdb\x98\x4b\x30\x16\x38\x66\x66\x00\xf2\x04\xca\xc7\xfa\x18\xdb\xd7\x89\x14\xbe\x1b\x28\xc0\x5a\x4a\xd6\x49\xb3\x4b\x93\xf8\x9c\x55\xac\xe4\x78\x0d\xf5\x35\xed\x8a\xab\xac\x4f\xeb\x7e\xda\x0f\xdd\x1b\xe2\x26\x4e\x24\x3a\xa6\x95\xdd\x7c\xd7\xbe\x74\xcf\xfd\x16\x80\x71\x37\x33\xc9\x21\x07\x01\x1a\xa7\x7e\x22\x69\x22\x50\x2b\xc5\x27\x27\x1e\x12\x44\xd1\xa8\x55\x6d\x9c\x8d\x29\x34\x63\x9d\x40\xa6\x82\x13\x73\x43\x94\x96\xba\x10\x39\x85\x4d\x2e\x7e\xbe\x9b\x4b\x14\xc2\xa7\x53\x88\xf4\x34\xf0\x11\x88\xe1\x50\x95\xe7\x5b\x0f\x25\xb4\x60\x2f\x31\x46\xbd\x15\x5c\x6a\xd4\x9f\x4e\x53\x91\xfb\x95\x81\xfd\x11\x22\x26\x0d\x32\xa0\xaa\xf4\xbf\x27\x09\x62\x05\xbb\xd6\xf4\x97\x3e\x25\x11\xde\xfa\x7a\xea\xaa\xa2\x05\x80\xe8\x73\xae\x9c\x96\x3a\x85\xa1\xab\x88\xb0\xb5\xad\x8b\xa8\x5a\x35\x30\x68\x2d\xdd\x63\x73\xbf\x2c\xa5\x13\x2e\xa5\x01\xe7\x7a\x78\x4a\xb0\x8d\x32\x06\xd4\x49\x61\xf8\x34\xb3\xab\xe2\x4f\x01\xff\x64\x86\xb1\xf5\xd4\xa9\x09\xae\x1d\x71\xea\xa0\xc2\xda\x71\x70\xce\x8b\x16\xba\x10\xaf\xec\x63\x73\x3b\xbd\x5a\x6e\xcf\x43\xcb\x75\x61\xf1\x76\x52\x15\xb6\xc0\xde\x41\xdc\x08\xaf\x67\xbe\xe0\x98\x1d\x7a\xfb\x48\x6c\x09\xd6\x4b\x59\x1c\xa9\x87\x74\x1f\xe2\x02\x2b\x45\x94\xd8\x8b\x50\x52\x95\x10\xc4\x9e\xe0\x60\xcc\xe2\x3b\x5c\x71\xaf\xba\xe6\x1c\x59\xde\x41\x60\x87\xeb\x9b\xeb\xab\x10\xaa\x30\xbb\xbe\xbf\xfa\xc3\xd5\x6d\xa5\xfc\xf6\xdd\xcd\x45\xa5\x84\xf6\xee\xfe\xb6\x56\x39\xfb\xfd\xcd\xcd\xbb\xab\x06\xe6\xe1\xea\x7e\xf6\x63\xa5\xf1\x37\x1f\x6e\x2f\xee\x67\x37\x95\xef\x7d\x3f\xbb\xbe\xb8\xfd\xcf\xf0\x2f\x57\xb7\xb7\x37\xb7\xb5\xe7\x7d\xb8\xec\x47\x4f\x54\x5e\xa3\x3d\xfc\xe3\x93\xb3\x01\x6f\x60\xeb\x36\xae\x2a\x12\x1e\xb1\x8b\x07\x82\xb0\xf6\x2d\x47\x5b\x5d\x1b\x87\x74\xe2\xb8\x31\x4c\x57\x47\xad\xba\xd3\x4b\x28\x56\x86\x2e\xe3\xc7\x99\x3d\x73\xaa\x2d\x4e\x01\x8a\xeb\x75\x00\xdd\x53\x6a\x81\x5b\x5d\x40\x09\x12\x0e\x6d\x06\x19\xac\x35\xef\x94\x37\x91\xf1\xb3\xf7\xd4\x3e\x63\x5f\x3f\x3d\x4f\xcd\x1e\xba\x8f\x53\x91\x17\xf4\x75\x3a\x78\x98\xad\x0d\x4e\x62\xeb\x28\xd8\x0f\x83\x83\x1b\x5e\xc3\xac\x9c\x60\x39\x76\x69\xdd\xb5\xd7\x38\xf4\x53\x4b\x8d\xed\x3f\x3d\xa4\xd9\xf7\x1a\xb3\xc2\x88\x7e\x03\x1f\xcc\x98\x7e\xdf\x73\xfd\x30\xb6\xdf\xf4\x90\x66\xbf\xc1\xed\x3b\xa8\xdf\x10\xf0\x2e\xda\x59\x2f\x46\x18\xb1\xb0\x99\x6a\xf7\x5c\x49\xae\xfb\x4a\x20\x29\x39\xac\x8f\x66\x03\x3c\xef\xf5\x32\xe3\xc3\x13\x19\xd0\x1b\xb7\x5d\x79\x8d\x32\xf9\x0e\x3e\x85\x37\x5c\xe6\x82\x3f\xc4\xea\x89\xe6\xa3\x8e\x0c\x65\x83\xac\x79\x75\x80\x8c\x0d\xb7\x47\x04\x08\x51\x9b\x47\x22\x4a\xcd\x37\x0f\x30\xb9\x84\x48\x7f\xd1\x07\x0b\xb4\x10\xeb\xbc\x21\xc0\xd4\x22\xfd\xec\xcc\x25\x7a\xf3\x6d\x7a\x8a\x66\x56\x4d\x8f\xa8\xd2\x1f\x5e\xd5\xf9\xd0\x98\x5c\xd7\xc1\xc4\x52\x2d\x43\x99\x03\x98\x6e\x99\xc3\x9d\x09\x06\x24\x91\x10\x4c\xce\xcd\x85\x27\x17\x51\xa2\x45\xa0\x78\xd3\x7a\x62\x7f\x3a\x8e\x1f\xbf\xe0\x45\x6b\xd8\x75\x70\x3c\x9c\x47\x45\xc9\x53\xf6\xa9\x14\xf9\x8e\xe8\xc5\x30\x56\x89\x7f\x89\xb8\xc4\xa2\x89\x42\x6c\x33\x28\xc2\x0d\xd1\xfe\x73\xf9\x33\x00\x25\x70\x0a\x5e\x68\xf6\x07\x80\x3c\xd8\x2f\xd3\x21\xbc\xe5\x05\x9c\xc5\x7f\xc6\x67\xb8\xcf\xa6\x73\x59\x51\x90\x08\x7e\x55\x11\x93\x98\xce\xa5\xa5\x70\x8f\x55\xa4\xa7\x70\xe3\x9b\xaa\x7c\x7d\x4e\xf2\xa2\x66\xb1\xab\x87\xa5\x52\x0f\xe7\x42\x9e\x43\x4c\xaa\x38\xe7\x65\xa1\xce\x01\x2e\x85\xf3\xaf\xcf\xad\x0a\xa1\x95\x71\xd4\xe7\x9b\xe4\x51\xc0\xff\x9b\x6e\x8a\x6d\xfa\x6f\x3a\xdb\x7c\x3e\x5b\xa7\xf9\x99\xf9\xed\x59\xf8\xdb\x33\xfb\xdb\x33\xfb\xdb\x33\xf3\x33\xfc\x7f\xd9\x0e\xd3\x3b\xe2\x33\x37\x67\xd9\x64\x2e\x13\xa9\x45\x5e\x80\xf7\xf3\x94\x27\x85\x97\xea\xd8\xb1\x17\xff\xf3\x3f\x6c\x9a\xf3\x27\x2c\x9f\x7b\xc3\x0b\xfe\x1e\xe3\x8b\xff\xf8\xc7\x0b\x48\xa8\x62\x7d\x4b\xc6\xf3\x4f\xa5\x28\xe6\x52\x0b\xb3\x09\xd9\xff\x99\x4b\xc8\xc0\x6e\x77\x8b\x02\xe3\xae\x18\x83\x8c\x35\xfb\x0f\x6c\x73\x86\x54\x7b\xb1\x36\x2d\x75\x20\xeb\x13\x9e\xb6\x08\xd7\x76\x84\xe8\x3f\xa5\x6f\xe8\xfb\x23\xb6\xf5\xa7\xb4\xba\xab\xad\x58\x84\xfe\x94\xc2\x01\x9a\x2a\x6e\xc1\x5a\xcc\x2d\x5e\xb8\x27\x53\xe7\xda\xf6\x48\x03\x1a\xf0\xac\x69\xfa\xf6\xbd\x72\x87\x74\xbf\x36\x72\xdf\x30\x23\x90\x2b\xf0\x79\x08\xc8\x9e\x27\x66\x87\xdc\x61\x24\x14\x3c\x37\x7c\x73\xf0\x49\x29\x75\xee\xda\xc3\xc0\x85\xfe\xed\xeb\xf3\xf3\x09\x5b\x6b\xf8\x9f\xe5\x27\xf8\x1f\x40\x0f\x9d\x8a\xb1\xb2\x31\x98\x0e\x08\xd7\x9c\xe5\xfd\x33\x71\x0a\x14\xdd\x97\x20\x49\xae\x2d\xd3\xef\x4b\x19\xa7\xc2\x57\x03\x56\x52\x22\xa9\xb2\xc2\xd9\x18\x18\xab\xcb\x51\xc0\x1c\x2f\x45\xc4\x8d\xe1\x6b\x3c\x1b\xc1\xa5\x6a\x55\x08\x89\xd1\xb0\xdc\xab\x55\x71\x8c\x5c\x81\x5b\x0c\x50\x48\x5e\x10\xe4\x5c\xc0\x1f\xe1\x21\xc0\x3a\x3c\xa9\x7f\xc4\x76\xaa\x24\x02\x5d\xa0\x85\x8c\x45\x94\x02\x4b\xb9\x25\xfb\x60\xb9\x28\xca\x5c\x32\xce\x32\x2e\x63\xae\x61\x05\xae\x72\xc8\x76\xe6\x8c\x37\x3b\x3a\x41\x38\xae\x2a\x0b\xa0\xb0\x41\x64\x41\x38\x12\xc8\x70\x1c\xf4\x79\x12\x74\x02\xcf\x04\x20\x5a\x6d\xfc\x70\x3a\x97\x56\x4f\x89\xb0\x70\x18\x29\x8b\x54\xb6\x23\x82\x92\xfa\xa0\x27\x36\x72\x46\xc3\x3d\xf1\x78\x93\xfa\x77\x27\x2c\xa9\xa6\xd6\x80\x4c\xb9\x08\x14\x61\xad\x6a\xed\x4b\x21\x23\x15\x8b\x5c\xbf\x32\xdb\x30\x71\xf7\x0e\xf4\x1f\x12\xed\x27\x03\xac\x94\x39\xdc\x28\x5a\x68\x9a\x77\xaa\x23\x66\x74\x2a\xf4\xbb\x6d\x7e\xce\xfe\xad\xf2\xad\xa3\x60\xda\xfa\x4b\xff\xf9\x45\x11\x31\x21\xae\xd3\xde\x39\x0f\x0f\x41\xe0\x96\x0d\x2d\x2e\x36\x8a\x3e\x0e\x39\x27\x56\x7e\x33\x29\x40\xe1\x2b\x17\xba\x98\x4b\x3a\x81\x27\x6c\x25\xb8\xf1\xf3\x26\x2c\xd2\x8f\x68\x8c\xf1\xb8\x2f\x9e\x94\xc7\xe0\x58\xed\x06\x00\xc3\x56\x1a\xf7\x41\x62\xfc\x1a\x20\x0a\x78\x54\x20\xc0\xa0\xeb\x86\xee\x5c\x15\x18\xac\x56\x83\x78\xc0\x38\x58\x29\x80\xba\xec\x4e\xa8\x44\x01\x23\xb1\xc3\x44\x31\xab\xf7\x03\x3f\x30\x86\x07\xdf\x0e\x61\x20\x81\x71\x04\x8f\x9b\xb0\xb4\xb8\xcf\x7c\x0e\x37\xe4\x63\x86\xd8\x4c\xd7\xa6\xea\x19\x08\xe8\xc0\x61\x71\x0b\xf3\xd3\xbd\x01\x2b\x2d\x72\xab\x53\x80\xef\x8a\x7c\x70\x9b\x24\x8f\xcf\x32\x9e\x17\x3b\xbb\x7c\xd3\x64\x09\xf4\xe6\x69\xf2\x20\xd8\x45\x9e\xab\xa7\x53\x8f\x42\xa7\x69\xe9\xba\x61\x1f\x83\x64\x1f\x7b\xcb\x6f\x65\x83\xac\x87\x3b\x0e\x63\x9e\xec\x0a\x7c\xb4\x3e\x27\x17\x45\xbe\x5b\x98\x85\xb8\xcd\x3a\x2d\xc5\xa0\xa2\x89\xe1\x4e\xee\x38\x52\xcb\x5a\x08\xa3\x93\xd4\xb2\x32\xab\xdf\x0e\xa9\x65\x0b\x5f\x65\x93\xd4\x72\x76\x3d\xbb\x9f\x5d\xbc\x9b\xfd\xbf\x5a\x8b\x3f\x5f\xcc\xee\x67\xd7\x7f\x58\xbc\xbd\xb9\x5d\xdc\x5e\xdd\xdd\x7c\xb8\xbd\xbc\xea\x67\xa9\x69\xf6\xde\xbb\xe0\x67\x2c\x7c\xce\x6b\x76\x1f\x00\x35\xb0\xd8\x80\xfc\x6f\xd2\xf7\x83\x55\x65\x36\x73\x22\xd7\x13\xd8\xa8\xaf\xd9\x55\x9e\xcf\xb6\x7c\x2d\xde\x97\x69\x0a\x70\x2a\xac\xec\xb9\xcc\x05\x5c\x3c\x27\xec\xbd\x8a\x67\xc1\xef\xa0\x1c\xb1\xf5\x35\xe0\xf9\x3c\x8e\x73\xa1\x35\x3e\x7e\x42\xcf\x0f\xc0\x43\xae\xd4\x91\xc0\x73\xfc\x91\x27\xa9\xb9\xbf\xbd\x06\x8d\x7d\xb5\x5a\x61\xf9\xcc\xc4\x15\x4e\xb1\x4f\xa5\x2a\x38\x13\x9f\x23\x60\x66\x6a\x5f\x27\xef\xd4\xfa\x2b\x40\x95\x07\xa4\xa7\x3a\x2e\x29\xa0\xe3\xb4\x68\x3f\xce\xdb\x0d\x01\xbd\xe5\x8f\xf8\xd3\xb7\xf8\xcb\xf6\x00\x65\x91\x9e\xa0\x52\xfc\x9d\x5a\xb7\xab\x6a\x80\x77\x4d\x52\x20\x94\x48\x88\x88\x77\x42\xad\x99\x4e\xe4\xc3\x5c\xfe\xbc\x11\x92\xa9\x32\xc7\x3f\xc1\x35\xdf\xb8\x99\x69\xa9\x37\x02\x64\x36\x27\xec\x49\xb0\x2d\xdf\xa1\xdb\x0c\x77\x02\x27\x05\x00\x4b\x06\x4e\x11\xf3\xeb\x34\x91\xc6\x5a\x64\x89\xad\x4b\xa8\x4f\xfd\x29\x6e\x5c\x96\x97\x8c\x1f\x4f\x1b\xda\x77\x9e\x56\xf0\x79\x10\x2a\xf3\xb8\x49\x0b\x10\x22\xcb\x0d\x4a\x83\x4a\x3d\x94\x99\x67\x30\x7c\x61\x93\x93\x30\xdc\x8f\x2a\x89\x59\x5c\x66\x69\x12\x39\xbb\xfb\xa4\xf2\x4e\x9a\x56\x2c\xa0\x19\x7e\xea\xd4\xcb\xc2\xfa\x5e\xac\xa5\x3a\x27\x40\xd2\xf5\x10\xb6\x3e\x33\x65\x2d\x4b\x64\x94\x96\xa0\xa1\x54\x6a\x91\x9f\x15\x79\xb2\x5e\x83\x03\x6e\x6b\xfd\xbe\x7d\x4e\x5b\xcf\x99\x77\x7c\x59\x5b\x58\x74\x9e\xaa\x75\x12\xf1\x34\x04\x37\x7b\x54\x84\x23\xcd\xb4\xdb\x9e\x14\x26\xa1\x0e\xc2\x76\xa8\x93\x0c\x28\xcb\x05\xf0\xb6\x2e\xc0\x94\x2f\xc8\xdc\x1d\xd3\xef\x15\x33\x17\x74\xec\x57\x48\x69\x69\xd3\x0b\xf6\x84\xf3\xcf\xb6\x32\x43\x28\xac\x0f\x12\xc4\x4c\x3d\x49\x91\x83\x07\x0b\xb0\x0f\xf3\xa6\x52\x81\x6f\xe2\xa4\x87\x1c\x3e\xd9\x4a\x6f\xad\x1c\x10\x1b\x2b\x67\xd7\xc9\xa3\x90\x5f\x9e\x83\x38\x78\x40\xc4\xa3\x8d\x58\x58\xbf\xfc\xd4\x26\xcb\x1d\x00\x23\x8d\x95\xd5\x00\x08\x4d\xa9\x4b\x6f\xc2\xd5\x09\x7b\xdc\xb4\x5d\x98\x48\xec\xa9\xc8\x32\x9d\x58\xc4\x22\x7a\xf8\xe2\xa6\xd9\x83\xac\x6c\x47\x18\x67\x6f\x44\xf4\xc0\x3e\xdc\xce\xb0\x1a\x38\x29\x98\x31\x05\x7a\xe3\x35\x4d\x3a\xef\x6e\x05\x5f\x3f\x03\xb9\xd1\x50\x51\x16\xcf\x2c\xee\xa4\xa8\x4c\x87\x08\x10\x05\xf5\x92\xc6\x48\x52\x2d\x0d\x00\xc1\x78\x61\xa5\x3a\x20\x10\xcf\xf4\x16\x94\x39\xca\x22\x90\xb3\x4a\xf9\x52\xa4\xba\xfd\x85\x33\x15\x2f\x6c\x9e\xe4\x58\x30\x4f\xa3\x2d\x1b\xc7\xa0\xac\xa3\xad\x63\xe0\xc6\x63\xbd\xa7\x2f\xb2\x87\xdf\xe9\x80\x5e\x43\x85\x74\xbf\x70\xaf\xe7\x5a\xd4\xf4\xdd\x93\x15\xe9\x87\x60\x41\x3f\x28\x65\x1b\x7b\x69\x5a\x7a\xaf\x62\x82\xe9\x39\x3e\x2f\xe3\x05\x09\x8a\x9e\x78\x5c\x45\xd8\x05\xa7\x26\xae\x21\x36\xa0\x0b\xc1\x63\xa6\x56\x14\x4d\xcc\xb2\x34\x01\x22\xd7\x18\x39\xa3\x81\x3d\x43\x57\xd1\xf1\x61\x6b\xb6\xb3\x01\xc9\xc7\x7b\x0b\xc4\xeb\xcd\x37\xfa\x24\x97\x79\xaf\x6a\x90\xbb\xee\x53\x1d\xab\x94\xe5\xea\x91\x0e\xbd\x42\xf7\x47\xd3\xd6\xa9\x5a\xc2\x40\x75\x83\xe2\x7a\x0c\xb4\xb1\x4e\x79\x12\x8f\x39\xde\xed\x98\xdc\xb8\x9f\xf6\x75\xf0\xc6\x46\x3a\xdc\x93\xec\x34\x33\xa2\xd9\x0e\x33\xf8\xb5\x32\xf6\x7d\x77\x6d\x48\x10\x6a\x97\x21\x74\xde\xb8\x25\x99\x87\x5d\xe1\xcc\x71\xc7\xb5\xba\xfa\x2e\x47\x4d\x74\x93\x18\x65\xcf\x58\x7a\x2e\x95\xfe\x49\x3e\x82\xdd\x02\x77\xae\xa3\xb8\x18\xc3\x14\x6c\xa7\x0e\x31\xbe\x66\x3c\xfd\x24\x56\x8a\x2f\x06\xcd\x68\x7d\xdc\xed\x2e\x3e\x66\xc8\x9f\x63\x47\x95\x85\xf2\x21\x7f\x78\x9f\x19\xf0\x67\x86\x65\x5d\x60\x36\x66\x71\x07\x5c\xc0\xfa\x60\x76\x6b\x8e\x00\xa1\x8e\x82\xc1\x66\xb9\xb0\xc9\xa3\x9d\x28\x5c\x71\x7f\x6a\x95\x93\x20\x37\xe2\xde\xba\xca\x6e\x62\x09\x0c\x1c\x23\x15\x64\x32\xc8\xdf\x8b\xd4\x36\x53\x12\xb0\x29\x58\xaa\x34\x97\xd4\xb8\xd5\xbf\x75\xe9\x95\x4a\xbd\xdb\x84\xa2\x5a\x58\x3d\x21\xb4\x4a\x1f\x29\x8f\x16\x10\xcf\x83\x72\x96\xe9\xe0\xa5\xb9\x20\x98\xeb\x30\x24\x78\xc9\xbc\x03\x1c\xbc\x26\x02\x9b\x8b\x75\xa2\x0b\x11\x96\x08\x86\xbf\x3f\x99\x5e\x5f\xe5\x06\xdd\x37\xf4\x9d\x7a\x7d\xfb\x5c\x61\xb3\x6b\x47\xf4\x67\x97\x89\x78\xe6\x7e\xd7\xbf\x18\x6a\x55\xdc\xde\x48\x54\x4e\x01\x5c\x03\x78\x05\xd0\xc8\xf7\xa4\x1d\x65\xbc\x9b\x24\x62\xe2\xe1\x1e\xd5\x66\xa6\x68\x5d\xf2\x9c\xcb\x42\x08\x3d\x97\x94\x7d\x44\xde\xb2\x90\x9a\xa3\x86\x86\x73\x0e\x6e\xa4\x74\x81\x34\x40\xf0\x93\x15\x4f\xd2\x32\xef\xbc\x73\xe2\xaa\x3c\x88\x7b\xa0\x6f\x94\x2e\xa1\x59\xd6\x36\x69\xae\x8a\x35\xd8\x45\x8e\x3a\xa3\x9e\x3b\xac\x16\x79\x76\xbc\x82\x35\xb9\xc3\xe7\xdb\x05\x1c\x3b\x0a\x5b\x7f\xa7\x17\x99\x1a\x61\xf1\xfe\xf4\x3b\xfd\x5e\x75\x94\x04\xeb\x4f\x8d\xc0\x58\x4f\x0e\xfd\x53\x17\x89\x3e\xd7\x0f\x90\x7e\xda\x77\x1f\xdf\x1f\x64\xff\xed\x6f\xf6\x27\xa9\x3a\x6d\x17\xac\xda\x0d\x97\x71\x6a\xee\xa9\xbc\xa8\x9d\x40\x1e\xec\x6b\xfc\xe2\xc2\x1a\xc7\xee\xca\x2e\x28\x94\x58\x44\x8d\x2a\xbb\x7d\xe3\x54\x2b\xcf\xeb\x05\xd4\xd5\x9e\x52\x2d\x9a\x6b\x2b\xd6\xf0\x27\x3b\x09\x3d\xba\x0d\xdb\xbd\x04\x57\xc9\xfa\x1b\xb8\x64\xfd\xd8\xb4\x94\x11\x6d\x45\x3a\xbf\x1c\xf2\xfb\xc8\xcd\x08\x45\x36\xc6\x98\x85\x3c\xbd\x73\x49\x3a\xb0\x98\x79\x85\x94\x1b\x72\x51\x69\xf6\x9d\xab\xbc\xfc\xee\xdf\x2d\x13\xd1\x8e\xad\x60\xac\x81\xee\x4b\x45\x51\x99\x43\x5a\x94\x42\x37\x4c\xe0\xd9\x34\x86\x4e\xfd\x02\x4f\x64\x07\x66\x41\xf7\xa9\xcd\x7b\x70\xb1\xba\xca\x4b\xdd\x43\x88\x06\x15\x6d\xdd\x59\x48\xd2\x2b\xb9\x2e\x98\x2e\x44\xd6\x6a\x95\x2a\x4e\x57\x55\xb4\xf9\x08\xb7\xcb\x4b\x46\x0f\xf4\x75\x47\xd8\xe8\x8b\xe0\x3a\xfd\xc7\xbb\x9b\x6b\x96\xf1\x1d\xe0\xc2\x0a\x45\x6a\xdb\x40\xc6\x58\xdf\xbf\xfb\x66\xa0\xfa\xf2\xd5\xcd\x86\x63\x6a\x01\xa6\xed\xb1\x5b\xee\xd4\xf4\x6b\x76\x08\xd6\x0c\x2d\x49\xb3\x95\x73\x95\x9e\x65\x29\x97\x01\xf4\x57\x4f\x59\xed\xf1\x61\xae\xd7\x65\x7d\x08\x4d\x03\x1d\x80\x70\x0a\xad\x85\xbc\x6c\x05\x87\x56\x75\xa8\x8f\x4a\xef\x76\xda\x88\x5e\xd0\xdb\x8f\x48\xa7\xcf\x23\xb3\x4d\x90\x59\xc0\xa6\xac\x1d\xea\x81\x6b\x00\x24\x8e\x98\xa8\x7e\xd1\xec\xb9\xb4\x9a\xa8\xea\x49\xb3\x18\xb9\x17\xca\x44\x6f\x20\x3e\x89\x09\x01\x00\x07\x91\x7d\x41\xe4\x42\xce\xa5\x36\x13\x0a\x31\x4d\xf1\x28\x28\xb0\x51\x49\xc6\xcd\xde\xbc\x73\xf9\x7d\x9c\x24\x12\xe2\xea\x18\xfa\xc0\x31\x3b\xe6\x02\xd3\xaa\xe2\xbc\x9f\xe3\xfe\x47\x9e\xf5\x55\x8d\x1d\xdd\xe2\xbe\x59\x72\xcc\x33\x75\xaf\x13\xf4\x65\x41\x9b\xa7\x52\x3a\x16\x8e\xde\x07\x79\xa4\xf9\x69\x25\xbd\xde\xcf\xaf\x3f\xf8\x12\x36\xac\x12\x70\x84\xed\x09\x48\xe0\x1c\xb6\xc6\xf9\xcb\x66\x97\x83\xf2\x09\xb0\x57\x61\x24\x6d\xca\xee\x84\x60\x1f\x61\xa4\xcc\xc3\x3e\x92\xb2\x16\xc0\x05\x0b\x9e\xb4\x0a\x9f\xc0\xb7\x67\x72\xa5\x8e\x33\x06\xf9\xba\x01\x47\x3b\x6a\x54\xda\xfb\x79\x2c\xe0\x0d\x4a\x19\xe5\xf3\xd6\xdf\xb7\xbe\xd7\x1e\x78\xdb\x7b\x7f\x27\xa7\xaa\x3c\xdb\x53\x73\x3e\xc3\x14\x1f\x26\xfc\x5f\x59\x24\xe6\x2d\x27\xc8\x5a\xfc\x20\xd5\x93\x44\x5f\x80\x9e\xc4\x5e\x9a\xfd\x07\x07\x18\x06\x50\xd1\x2d\x28\xd1\x1a\xbe\x02\x1a\xe5\x0b\xf7\x6f\x76\x87\xb9\x22\xec\x33\xe8\x84\x68\x70\x7e\x48\xe1\x03\xac\xf9\xcb\x8b\x09\xfb\x7e\xc2\x2e\x27\x6c\x3a\x9d\xbe\x9a\x30\xc1\xa3\x8d\xed\x11\xfe\x04\x91\x63\x05\x5f\x9b\xb6\x49\x39\x61\x15\x3c\x00\x64\x6f\xcc\x61\x65\xd9\xc2\xb8\xff\x56\x10\x79\xb0\xaf\x80\x35\x8c\x54\x70\x41\x79\xf5\x68\xa3\x12\xdf\x29\x80\x68\x8a\x48\xe5\x16\xe4\xa9\x0b\x95\x5b\xc0\xda\x23\xcf\x79\x22\xa1\xb4\x9b\x37\xe1\xba\xf4\xe4\x80\xdc\x59\x7c\xe6\x5b\x78\xff\x44\x3a\x7e\x4b\x33\x4c\xf7\xae\xff\xc5\x2e\xa3\x80\xf4\x53\x9e\x14\x85\x39\x9d\xf5\x5c\xde\xb1\xd7\xff\xc1\x2e\xb2\x2c\x15\xec\x82\xfd\x9d\x7d\xcf\x25\x97\x9c\x7d\xcf\xfe\xce\x2e\xb9\x2c\x78\xaa\xca\x4c\xb0\x4b\xf6\x77\x33\x6c\xa6\xbd\x6b\x65\x8e\xc3\xdd\x84\x71\x26\xcb\x14\x4f\xfd\x97\x16\x0c\xf6\xca\xbd\x17\xf7\xb3\xb3\x14\xc5\x93\x10\x92\x69\xb5\xa5\xa3\xf0\x2f\x2e\x27\xa1\x13\xb9\x4e\x45\x41\xeb\xa1\x0a\xdb\xc3\x07\x9c\xc1\x9b\xbe\x9e\x4b\x17\xcb\xfb\x8b\xe9\xf1\x5f\xd8\xdf\xd9\x75\x99\xa6\xa6\x4b\xc6\xd0\x98\x85\xf4\x9a\xd9\x32\x0a\x21\xa7\x4f\xc9\x43\x92\x89\x38\xe1\x50\x48\x61\xfe\x75\x7e\x0f\xb3\xbd\x28\x3d\x67\x5e\xb8\xa7\x9d\xf6\xca\x31\xa6\xe7\x59\x8a\xb2\x9d\x04\x8f\x9d\xfc\x9e\x9b\x5f\xf5\xa7\xe3\x3d\x22\xcf\x14\x4a\xfb\x81\x1c\x56\xd4\xcd\x09\xa5\x7e\x0e\x32\x01\xb5\xc3\xd6\xb6\xd5\x72\x14\x84\x87\xfa\xb1\x46\x16\x94\xa3\x4e\x7e\x87\x1c\x20\xe3\x33\xd4\xe4\x36\x44\x48\x2a\x65\xee\xe0\x4b\x7a\xaa\x9f\x41\x59\x21\x27\x3e\xf2\x53\x55\x3a\xab\x32\xc4\x2a\x19\xa4\x31\x56\xeb\xec\x07\x8a\x5d\x60\x81\x9a\xd9\xa6\x49\x7a\x6e\xb6\xea\xf9\xb5\x92\xe6\xda\xaa\x93\x35\xd2\x13\x01\x8c\x48\x03\x21\xab\x75\x0a\xee\xab\x2e\x6b\xb0\x05\xc0\x3f\x30\x5d\x42\x68\x5b\x61\xac\x80\x99\x82\x74\x37\x97\xe6\x17\x74\x22\x01\xcc\x3d\x71\x2c\xb6\xf8\x34\xab\x66\x4e\xcf\x22\x83\x1c\x34\xde\xb2\xc0\xfa\x6a\x68\x8f\x58\x70\x54\xb2\x75\x44\x54\xfc\x3a\x60\x70\xa3\xd6\x2c\xbd\x07\xe6\x3d\x97\x22\x55\x72\x6d\x56\x45\x97\x11\x50\x5b\x9e\x1c\x03\x2c\x09\xbb\x80\x8d\x75\xf6\xc0\x1c\x96\xf4\x15\x9a\x12\x73\x4e\x26\xb1\xbf\xdf\xeb\x72\x69\xfc\x08\x17\x91\x75\xa7\x21\xbd\x5c\x57\x41\xf1\x71\xf9\xe5\x0f\x5a\xe4\x40\xb3\x8c\x08\x07\x17\xed\xc7\x83\xd3\x93\x6d\xe0\x1b\x0d\xdb\x54\xbd\xc0\xd8\xf6\x50\x08\x65\x13\x1a\xa5\xd5\x03\xd6\xe3\xd7\xc4\xc8\x3e\xa7\x1c\x7c\xab\xf6\x3b\x7c\xcf\xb4\x46\x7f\x1a\xab\xef\x6e\x47\xef\x14\xf0\xc1\x4f\x28\xf7\xb2\x50\x2b\x5b\x49\x39\xfc\x4c\x6f\x08\xee\x0c\x43\xa9\x84\x24\xdb\xa1\x30\x4d\x73\xe1\x74\xd6\x83\xcb\x05\x65\x24\x86\x75\xb6\x3e\x60\x37\xf2\x2d\xfe\xfc\xbd\x4a\x93\xa8\x1f\xf4\x66\x8f\xab\x8d\x7a\x6a\x41\x11\x2d\x05\xa0\x40\x29\xfe\x43\x9d\x42\x0f\xbd\x10\x51\xe1\x33\x6e\xcd\x97\xfb\x5f\x0d\xb4\xd9\x7f\x07\xc7\x88\xb2\x1b\x36\x10\x7d\x74\x39\x3c\x38\x5b\x81\x60\x13\x78\xe5\x31\xd6\x0a\xb5\x74\x90\xdb\x8e\x38\x85\xa0\x2b\x23\x0f\x06\xfa\x69\xa3\x52\x73\x17\x93\x31\x91\x95\xce\x65\x26\xf2\x48\x01\x40\x05\xeb\xe0\x15\x8b\x36\x49\x1a\x7b\xf1\x96\x97\x80\xe8\x05\xdc\xdd\x2b\x52\xa8\x13\x2e\xc7\x6c\x9b\xef\x39\x75\xed\xb2\xb3\x2a\xd5\xc7\x45\xa0\x4e\x07\xd1\xeb\x5b\xf6\x3f\x13\x94\x0c\x87\x82\xe8\x85\x6a\xd9\x42\x33\xe8\x95\xfe\x8c\x8a\xf0\x82\x8e\xf4\xca\xea\x60\xda\x8b\x53\x51\x9b\x57\x5a\x66\xf5\xa1\x04\xd2\x59\x44\x51\x21\x80\x44\x0b\xe8\xce\x56\x70\xf4\xc5\x3c\x05\x24\x4d\xea\x5c\xfa\xfc\xe8\x0b\x1d\xfa\x65\xad\xf3\x8c\x9c\xaa\x16\x04\x38\x61\x2f\x2a\x2f\xfa\x02\x48\x49\xa5\x82\xe7\x51\x0e\xab\x32\x34\xb0\x5c\x27\x2c\x29\xe6\x32\xd1\xb8\x32\x73\x91\x8a\x47\xd3\xbb\x30\x58\x4c\x58\x17\x7b\x77\xb6\xaf\x0d\x38\x72\x6e\xcb\x8f\x9d\xb8\x39\x6c\xc2\x3c\x24\xb7\xe4\x10\x98\x8e\x85\x36\x7e\x23\xc8\x72\x88\xcf\x66\x03\x24\x90\x0b\x41\xf8\x47\x2c\xa4\xed\x1f\xa0\x42\x50\x3f\x75\x2e\x67\x2b\xa8\x01\x85\xca\xd3\x38\xc6\x5b\xa8\x15\x6a\x70\x4c\x63\x09\x05\x87\x15\xdd\xc9\xed\x44\x90\xc0\x22\xee\x24\xf1\x28\xf2\x5d\x01\x41\x5d\x18\x57\x29\x78\xb1\x61\x49\x31\x01\x8a\x38\x6b\x29\xe7\x92\xc7\xa4\x4f\x4d\xcd\x99\xa1\x81\x75\xdf\x33\xcf\xf4\xf9\x52\x3d\xf6\x39\xb6\xc7\xa2\xbe\x70\x57\x67\x29\x97\x0b\x3c\x41\xbe\x02\xee\x2b\xd0\xbe\xec\x4a\x75\x96\xcb\x85\xa3\xb5\x39\x49\x3f\x9d\xbd\xbf\xad\x28\xd2\x1a\x3f\xd6\x3e\x68\x82\x8b\xc1\xd3\x5a\xdb\xeb\x89\x8b\xd3\x10\xba\x20\x67\x36\x03\x3b\xdc\x0a\x78\x48\x18\xaf\x21\x11\xec\x6a\xdd\x87\x09\xb3\x2b\xe0\x5b\xc5\x27\x0d\x99\xf9\xda\x19\x52\x9f\xf6\xf1\xd0\x98\x86\x87\x78\x10\x3c\x66\x4f\xb7\x9e\x17\x22\xd3\x19\x47\x69\x42\x65\xec\xdb\x06\xe9\x3e\x2c\x9e\x10\x18\x87\x73\x61\x9e\x76\x6d\xd3\xf0\x1e\xa6\x5a\xb0\x95\xa7\x8c\x51\x83\x9d\x1a\x1a\x29\xf1\xb5\xd7\xd0\xaf\x29\x9b\x49\x66\xdd\xbd\x09\x7b\x81\x0b\x4b\xbf\xa0\x10\x24\x09\xe4\x52\xee\x3c\xa6\xdd\x43\xd5\xaa\x75\x28\x06\xd6\x0c\xf8\xed\x86\x99\xa0\x5e\x6a\xc3\x67\x1d\x97\xef\x13\xa8\x59\x38\xa4\x2c\x1d\xb3\x88\x4b\x6c\x80\x0e\x49\xbc\x76\xef\xd0\x69\x57\x3e\x9a\xed\x5f\xd8\xe6\xbb\xd8\xf7\xf6\x87\x66\x88\xb2\x92\xce\x53\xfb\x39\x53\xf9\x5c\xda\xd6\x28\x24\xa9\x51\x4b\xa9\xde\x54\x00\xa1\x26\x9f\x3f\x58\xa9\x00\x62\xb0\xf2\x59\xa0\xca\xe6\xf9\x57\xeb\x56\x00\x40\x11\x4b\xe1\xa5\xbd\xa7\xec\xc2\x3f\xcd\x38\x1e\x66\x81\x6f\xf1\x98\xaf\x73\x34\xa6\xa9\x19\x94\xa4\xb0\x94\x90\x41\x79\x83\x2e\x81\xd8\x74\x55\x1a\x63\x14\xb0\xbf\xce\xa5\x19\x3c\xb6\x4a\x00\xf7\x4b\xe3\x32\x97\x3f\x2a\x6d\xab\xe9\xb5\x1f\x0f\x8b\x21\xa5\x61\x7b\xe1\x54\xc4\xe8\x0f\x6f\xe0\xd0\xa6\x98\x7f\x4d\x56\x1e\xea\x5a\x88\x12\x63\xa7\xca\xdc\xbf\x54\xc4\xe5\x5c\xfe\xd5\x0c\x0f\x8a\x3a\x3b\x45\x74\xb5\xc2\x2d\x6c\x65\xf8\xd9\xcb\x8f\xd8\xe8\xcb\x7f\x7f\xf5\xf1\x15\xe2\xd0\x4b\x0d\xc2\x8d\x93\xea\x01\xe2\x88\xc0\xcb\x34\x85\x4c\xb4\x7d\x03\x47\x46\xe1\x1f\xc1\xfb\x60\x39\x74\xa9\x5b\xc8\xaa\x8b\x31\x64\xa3\xf7\xad\x60\x1f\x7c\xbe\x60\x11\x2f\xa2\xcd\x99\xf5\xe5\xc8\x8c\xd9\xd3\x8f\xa6\x0f\x15\xdc\x8c\xa7\xd5\xce\x85\x6d\x2e\x9c\xf9\xd6\xb1\xf3\x55\xd6\x8b\x79\x05\x00\xd6\xdc\xd7\x85\x61\x1c\x79\x28\x2e\x4e\xaf\x49\xee\xfd\x3c\xf7\x75\x2b\xcb\xe6\x6f\x9c\x14\x25\x97\x7c\x2b\x62\xf6\x02\x2a\xa6\x5e\xd8\xc9\x9f\xcb\x6c\x39\x4d\x77\xab\x82\x28\x9e\xcc\xa0\x4c\x41\xc0\x68\xcf\x29\xb7\x88\x9b\xd7\xa4\x3d\x83\xdd\x79\xd1\x6a\xf7\x75\xdc\xd8\xb8\x27\x0d\x77\x58\x30\xc6\xe5\x46\xe7\xae\x0a\x11\xaa\x32\xa9\x73\xfd\x30\x61\xcb\x9c\x4b\xd0\x9e\x88\x43\xa7\xca\xef\x4e\xb8\x3c\x23\x7f\x92\x2d\xa1\x90\x3c\xdd\x01\x76\x7c\x32\x97\x48\x36\x05\xac\xc4\xbb\x28\x4d\x22\xb6\xce\x79\xb6\xa9\xf9\x41\xe2\x51\xc8\xe2\x8a\xd8\x15\x2c\x48\xfd\xd8\xd4\xb2\x63\x6b\x38\x8a\x73\x6f\x56\xf5\x76\xb8\xa7\xa1\xf0\x11\x56\x2c\x54\xa1\x1b\xb5\x05\xb5\xba\x05\x3e\x21\x29\x34\xe0\xe3\x62\x7f\x2e\x97\x2a\xb5\x84\x66\xb3\x37\x4c\xe5\xa0\x25\x50\x28\xfa\x53\x12\x77\x9d\x62\x89\x8c\xc5\xe7\xa3\x58\x05\xfa\x0f\x24\xeb\xde\x99\xc7\x04\x94\xf5\xf5\x97\x85\x5d\x94\x0b\x73\x58\x14\xf6\x06\xd7\xf8\x96\xae\x23\xec\x2e\xd2\x62\x03\xb0\x37\x04\x5c\xfb\x41\xdd\xf2\x1d\x8b\x36\x5c\xae\x83\x2b\x34\xa0\x90\x44\xa6\x72\xd4\xdc\x7b\x04\xfa\x2e\x95\xdb\xaa\x4d\xaa\x45\x24\xd4\xb7\x0b\x78\x23\xd8\x52\xd9\x82\x43\xbe\x5e\xe7\x62\x0d\x85\xf4\x73\x59\xa9\xa6\x06\xea\x32\x4b\xf7\x8f\xcf\xe9\x2b\x46\x3d\x0d\xa3\x43\xd7\xad\xa5\xc8\x77\xae\x94\x8f\x04\x2b\xdd\xd0\x35\x86\x75\xc2\x12\x31\x9d\xb0\xdf\x78\x80\xa9\x88\x94\x74\xb5\x80\x1d\x85\x60\xb5\xd0\xf4\x1e\x5b\xd4\x42\xfd\xd0\xde\x77\xf8\xac\x21\x7b\xd9\xba\x68\x7a\x8b\x29\x0b\x5e\x94\x23\x6c\x25\x49\x1b\x5f\x9a\x1f\xdf\xe1\x6f\x7b\x31\xd8\x3c\x33\xe6\xcd\xd2\xee\x98\xef\x1b\x0b\x6f\x9e\xed\x69\x79\xdb\xc6\x7a\x6f\xa0\x33\x55\xdd\x81\xce\x53\xb8\x94\x96\x5b\x61\x7f\xac\x33\xed\xe0\x0b\xe8\x79\xa7\xb1\xa1\x4c\x0b\x46\x25\x98\xb9\xae\x5f\xb7\x5a\x2c\x40\x96\xab\xb8\x8c\x44\x6c\x76\x2e\xf8\xed\x88\xdc\x70\xb4\x05\x15\x23\xd9\x76\x20\x54\xb8\x57\x40\xe0\xfa\x4b\xdd\x8d\x07\xd1\xdd\xba\xe1\xff\xd0\x71\x2f\xb6\x9e\x49\xdb\xa0\x87\xfb\x13\xc7\x29\x1f\x79\x4e\xb9\xc7\x57\x49\x6a\x55\x9e\xac\x13\xc9\x0b\x95\xb3\x97\xae\x38\xf1\x95\x53\xb6\x81\x51\x3c\x85\x99\xa8\x0c\x11\x9a\x89\xf6\xbb\x17\xe0\x99\x45\xbc\x18\xc7\x9d\x35\x96\xe1\x19\x16\xa9\xf9\x96\x2e\xf8\x36\x0b\x69\x1f\x9d\x6e\x30\x8d\x4c\x8a\x83\xc0\x6c\xc7\x20\xc6\x97\x68\x5f\x83\x35\x97\x14\x19\xc7\x79\x53\x79\xc8\x5b\xdc\x79\x36\x67\x65\xb1\x38\x90\xca\x04\x7f\x3c\x2e\x40\x42\xe9\xf2\x1f\x79\xd6\x4f\x0e\xc1\xe9\x6a\x8c\x45\x28\x4e\x4c\xd9\x7a\x2a\xd5\xf5\xd9\xaf\x0c\x30\x92\xac\xb2\x9e\xe2\xbd\x7d\x67\x13\x1a\xfe\xde\x52\xb9\x08\xc0\x44\x20\x4b\x9e\x06\xaf\x02\xaf\xa0\xce\xac\x99\x53\xdc\x32\x4a\x5c\xa6\xaa\x8c\x19\x19\x35\x4a\x17\xe7\x53\x3c\x1d\x81\xb6\x72\x3a\xed\xe2\xf0\x1a\xa9\x58\xea\xec\x0f\xfc\xae\x7d\x07\xc2\x67\x1d\x16\xb8\x77\xeb\xd3\xc8\x3e\xdb\xd4\xd3\x48\xc3\xdc\x3b\x73\x3c\x6a\xee\x5d\xb4\x16\x38\xb4\xc6\x05\xf2\xe0\xde\x94\xc4\x29\xec\xb7\x30\xd0\xdd\xc2\xf2\x59\x49\x20\xea\x87\xa3\x1f\x67\x2b\x6d\xfb\x1f\x95\xf1\x5c\xc8\x62\x01\x4f\x1c\xf7\x30\x78\xc8\x7b\xf8\x79\xc5\x61\x1a\x14\xb0\xfc\xaf\x7b\x85\x71\x68\x4b\x98\xf1\xdf\xec\x8e\x62\x2f\xda\xaa\xda\x9b\xd3\xf1\x65\x02\xd8\x98\x20\x67\xe7\x26\xae\x63\xba\xe8\x85\x0e\x18\xbd\xe0\x85\x2a\xa6\x7d\xd0\x0b\xf9\xde\x43\x4a\x15\x5a\xa1\x30\x14\x55\x78\x1a\x53\x6b\xff\x16\x90\x68\x5f\x57\xfe\x0d\x84\x87\x66\xfe\x52\xf6\x37\x91\x2b\x5f\xb6\x80\x41\x95\xb0\xe1\x5e\x7f\xfd\x70\xfd\x4f\xf4\xc7\x51\x79\x32\x94\x5e\x83\xbf\x10\x27\x09\xde\x7c\x97\x3b\x7b\x1d\xe9\xa2\x53\x17\xd1\xa2\x83\x67\x7f\x50\x57\x82\x8b\x67\xc8\x9b\x9f\xd4\x0e\x33\xbb\x41\xcf\xe1\x5e\x4d\xac\x7f\x5b\x9e\x11\x0e\x8d\x20\xaf\xf5\x24\xc3\x14\x5e\xe2\xbf\xfe\xf2\xdf\xd3\x2e\x65\x67\xe8\xfa\x58\x58\x8f\xeb\xfc\xdb\x3c\x11\x32\x86\xa4\x21\x8f\x9b\x12\x30\xb2\x12\x45\xae\x98\x67\xb3\x0c\x4f\x52\xdd\xd7\x7e\xd4\xea\x05\x2e\xa2\x2f\x90\x79\xf6\x46\xd6\x6d\xdf\x4a\x5e\xaa\xcb\x95\xd0\x8b\x78\x27\xf9\xb6\xa9\x85\xfd\xac\x7d\xdc\x25\x22\x8d\xa1\x8b\xf4\xf4\x7d\xd9\x93\x58\x44\x0f\x63\x7d\x82\x83\x09\xac\x45\xf4\xc0\x7e\xb8\xff\xf1\x1d\xea\x15\x26\x7a\x2e\xaf\x79\x91\x3c\x8a\x0f\x79\xea\xc2\xd6\xc4\x48\x92\xa7\x76\x8f\x54\x09\x55\x03\xf2\x0e\xcb\xbe\x6a\x1d\x87\x90\xef\x7a\xbb\x3b\x5b\x96\xd1\x83\x28\xce\x73\x2e\x63\xb5\xc5\xd7\x38\xd7\xe5\x6a\x95\x7c\x9e\x16\x3c\xef\x20\xbf\xc6\x38\xc2\x57\xf4\x73\xbd\xa4\x49\xe1\x7d\x5e\x74\x75\x9f\xa0\x3a\x91\x84\x72\x2b\xce\x2d\x5c\x81\x73\xbe\x15\xc0\x5e\xc6\xaa\xc4\xf1\xd0\x0a\x16\xfc\x81\xbe\x9a\xd6\x84\xf4\x56\xa4\xde\xfa\x31\x70\xee\x3f\x06\xbd\xaa\x2a\x08\xdb\x4e\x79\xcd\xb2\x2d\x7f\xc0\xfb\xe1\x3a\x17\x5a\x4f\x98\x56\xd0\xe3\xb9\xb4\x98\x69\x5b\xd7\x03\xf8\x0c\xe0\x3f\x4c\x77\x2c\x52\x59\x02\x12\x6f\xee\xbd\x36\xea\x09\xe2\xc9\x61\x79\x1b\xa8\x72\x96\xb2\x48\x52\xc6\x57\x05\x05\x9b\x81\xec\xd9\x8a\xbb\xe8\xe9\x5c\x42\xca\x30\x82\xd7\x87\x54\xbe\x4b\x13\xb8\x97\xd0\x6c\xc5\xa3\x24\x4d\x0a\xa2\xa0\x81\x62\x18\x6e\xde\xd7\x9c\x07\x66\x2c\x73\xbe\xe3\xa9\xbf\x58\xf1\xb4\xf4\x15\x7d\x67\x5a\xd4\x29\xce\x7e\x15\xfe\x6f\xe5\x9e\xdb\x77\xea\x1e\x71\xe1\x3d\xe6\xf0\x69\x5e\x69\x9d\xe2\xa8\x3f\xc7\x93\xd8\xe2\x44\x2b\xae\xae\x67\x9e\x75\xc7\x0f\xc4\xce\x3b\x2e\xd5\x53\xab\x13\xd3\x7c\xc2\x88\xd1\x6b\x77\xc2\xbe\x50\xb8\xa0\x8b\x03\x77\x48\xf7\x6d\xb4\xfb\xbd\x52\xe9\xb1\x11\x6f\x9e\x5a\x83\xba\x00\xe9\xc4\x63\xae\x6b\xb8\x00\x5c\xe0\x68\xf6\xc6\xe5\x5e\x1d\xa9\x6c\x55\x70\x85\x60\x41\xd4\x05\x30\x14\xd0\x89\x1e\xc4\xb0\xce\x5a\x92\xef\x23\x91\xcf\xd0\x06\xa2\x76\xac\xeb\xdc\x0c\xc1\x07\xb5\xec\xdc\xf7\x11\x88\xf7\x6a\x3d\x1c\x15\x0c\x43\xa1\xc3\xda\xa3\x5c\x60\x2c\x24\xe8\x74\xe3\x18\x3c\xdb\x8e\x27\xca\x2b\x9b\xf3\x89\xbc\xe4\xb9\x0c\x3c\x62\x64\xd5\xb1\xd0\x72\x37\x6a\x6d\xf1\xb2\xca\x32\x3c\x3a\x5e\x76\x0c\x0b\x73\x6f\x42\xe5\x4d\xa8\xa7\x04\x98\x80\x48\x6d\x97\x89\xb4\xa5\xca\x14\x44\x06\x57\xfe\xc2\x92\xdc\xb9\x80\xbf\x75\xc9\x91\x65\xbf\x36\xf6\xce\x8d\x08\xf9\x02\x43\x93\xb5\xef\xba\x1b\xde\x9f\x4e\x4b\x18\xdd\x81\x52\xad\xbf\x41\xa2\x19\x4f\x9f\xf8\x4e\x83\xe6\xa8\x30\x56\x71\x85\x81\xd3\x6a\xff\x27\xc1\xf1\x6e\x09\x14\x49\xc0\xbb\x24\x29\x62\x7a\x97\x04\xf9\x1b\x44\x6a\xd5\x55\x3d\x2f\xce\x0b\xdd\x3e\x38\x5f\x27\x17\x92\xf7\xe6\x42\x30\x19\xf9\xcf\x91\xfe\xe8\x09\xb2\x1e\x19\xeb\x0d\x8e\x49\xf4\xc8\x08\x2e\x02\x05\x3c\x60\x8e\xcd\xb3\x27\x6c\xcb\x13\x49\xdb\x00\x15\xac\x62\xb1\x2c\xd7\xeb\xce\x10\xe4\xb7\x9f\xcb\xa8\xee\x93\x7f\xf9\x58\x73\x2f\xb3\xd3\x29\xa2\xb1\x33\xfb\x24\x0c\x0f\x9b\x7b\xd5\x97\x09\xc0\x7e\xc5\x68\x77\x6b\xca\xa9\xb1\x88\x4e\x13\xed\x9e\x0d\x89\x76\x5b\x8c\x0f\x94\x5a\xd1\x75\xd5\xe2\x30\x7e\x09\x83\x7f\x99\x30\xf8\xa0\x45\x81\xf4\x1e\x8b\xa4\xea\xa0\xf7\xf4\xf0\x40\x96\x30\x47\x27\x09\xbd\x22\x35\x70\x2d\x64\xac\xd9\x92\x47\xcf\x40\x1b\x06\xa7\xe3\xf1\xf1\xb6\x3d\xe0\x92\x3b\xb5\x15\x0c\x1e\xa5\x51\xfb\x80\x51\x35\xdb\x04\x50\x8b\xe6\x05\x3d\x22\x83\xf0\x1e\x70\x9c\x22\x32\x24\xf6\x4e\xf5\x4b\x29\x9e\x98\x39\xad\x26\x21\x8c\x2b\x98\x1e\x10\xc5\x79\x65\xbc\xc3\x0a\xe6\xdb\x95\xee\xe7\x62\xcd\xf3\x18\x2a\x0d\x68\x4b\xa6\x3c\x7a\x30\xff\x0d\xfd\xa3\x27\x12\xd4\xcc\xf2\x73\x23\xfc\xd1\xb7\x96\xc8\x28\x07\x52\x26\x42\xb5\xf9\xfe\xe1\xcf\x35\xe3\x51\xae\x34\x06\x65\x9c\x96\x24\x54\xba\x82\x03\xfb\x98\xc4\x25\x4f\xf1\x89\x9d\x91\x6c\xae\x8f\xe2\x1b\xbf\x08\x64\x5f\xc4\xe7\x2c\xe5\xb2\xba\x27\xf1\x75\x81\xab\x26\xe9\x59\xf9\x8e\x72\xed\x98\xae\x8c\xa6\x8e\x9c\x05\x8a\xab\x7e\x5b\xa1\x77\x9c\x0b\x1e\xef\x42\x62\xaa\x44\x92\xee\x3e\x8f\xb7\x89\x34\x53\x6f\x55\xbd\x9c\x7d\xb5\x04\xbf\x08\xb8\x04\xf1\x8b\x34\xad\x6d\x7d\xcd\xa4\x30\x2e\x15\xcf\x93\x74\x07\x5e\x74\x96\x8b\xb3\xe0\x39\xc1\xfe\xa6\x7a\x0f\xa0\x2a\x26\x12\x85\x52\x8b\x55\x99\xa2\xaf\x0d\xb7\x51\xf7\x02\xb4\x0f\x3f\xcc\x26\xe6\x98\x2d\x88\x72\x3e\x78\x30\x0a\x39\x9d\x02\x3b\xdf\xbc\x07\x0e\xca\xdf\x78\xc2\xb4\x1c\xa0\xbd\x1b\xf5\x64\x0b\x7c\x9e\xb8\x47\x70\x76\x9d\x25\x27\x8b\xd9\xf7\x7b\x5d\xf6\xbe\x63\x77\x25\x0e\x7a\x5c\x49\xd4\xd0\x67\x22\x76\x3b\x31\x91\xf0\x3a\xa4\x81\xe8\xe3\xa0\xa5\xc6\x3a\x21\x33\x87\x60\xad\xed\xb5\xbe\x1a\x06\x65\xee\xed\x12\xad\x24\x9b\x97\xbf\xfe\xf5\x6f\x05\xfb\x35\x14\x4e\x91\xf7\x8d\xd9\x16\xa0\x4c\xc3\xd6\xc1\x40\xb9\x07\x08\xe4\x53\x6b\xcc\x08\x6b\x03\x3c\xda\x2a\x65\x80\x0c\xf2\x68\xc3\x74\xb9\x44\x3c\x1c\xa7\x80\x3d\x97\x8e\x91\xf4\x9d\x02\x68\x1b\x9e\x63\xb6\xf7\xff\x4b\xc2\xd3\xc8\x0a\x3e\x97\x99\x42\xd2\x5c\x00\x12\x2e\x05\xdb\xf2\xfc\x01\x44\xde\x48\xc9\x9b\xf1\x82\xbd\x4c\xc4\xb4\x1a\xac\x7e\x55\xe9\x0f\xa5\x07\x90\x0c\x93\xe5\xa5\x94\x56\xb5\x82\x19\x37\xcc\x47\x8e\x27\x73\xb9\x2c\xc3\x9b\x56\x25\xf4\xec\x97\x16\x84\x9f\xc1\xc8\x2a\x60\x48\xa0\x4e\x71\x1d\x28\x8c\xb3\x01\x31\xe8\xb9\x7c\xa6\x20\x74\x57\x78\xeb\x3d\x79\x1c\x36\x74\x15\xa0\xb4\xe1\x75\x43\x61\x45\x98\x0e\x5c\xf6\x70\xa4\xbf\x07\x75\xc5\x09\xfb\x21\x79\x14\x13\x76\x97\xf1\xfc\x61\xc2\xde\x60\x32\xe9\x8f\x6a\xb9\x37\x62\x75\x8a\xa8\xad\xbb\x58\x1d\xcb\x78\x8f\xf1\xcf\x49\xc0\xcc\x1c\x24\x30\x9b\xf1\x45\x8b\x6f\x2b\x80\xd7\x3e\x7a\x10\xb2\xd3\x58\x5a\x54\x72\x27\x7d\xf7\xa9\xee\xdd\xdd\xa0\xea\xce\x5b\x78\xfd\xdc\xf6\x1e\x16\xd5\xac\xb6\xe1\xfc\x8c\x67\x83\xda\xd3\x3c\x7a\x38\x03\x5f\x55\xe5\xae\xae\x5a\x53\x72\x0d\x57\x05\xa2\x9f\xd1\x47\xab\x55\x22\x0f\x75\xc5\xed\x83\x17\x99\x52\x69\xab\x47\x7e\xd2\x01\x6c\xc4\xe7\x87\x0e\xde\x0c\x2b\xb8\x74\xe8\xa7\xda\x51\xf4\xb1\x5e\x1f\x19\xc6\x30\x30\x50\xb1\xc0\x6a\x8a\x4b\x48\x91\xfa\xe1\x08\x25\xfd\x8c\xad\x41\xcc\x39\xba\xa6\x56\x01\x96\xdb\x3b\x43\xc4\x5d\xd0\x3b\xc4\x3a\x37\xa2\xd0\xba\xf9\x9c\x8e\x8b\x02\xb4\xbb\x48\xda\x78\x57\xc6\x6e\x2e\x94\x4e\x6f\xa4\x96\xb0\xe7\xf6\x48\xb7\x55\x3f\xfb\x58\x67\x6d\x89\xf3\x22\x4a\xb9\x1e\x88\x23\x6e\xb5\x3b\x33\x6a\xe8\x12\xda\x19\x6e\x33\x7f\x80\x2c\xc0\x76\xa0\x0b\x35\x97\x17\x8e\x75\xd5\x3b\xdf\xee\xc2\x80\x66\x16\xaf\x4a\x8d\xa9\xc1\x52\x22\x4f\xd1\x3b\x61\xba\x8c\x36\x50\x2c\x55\xb5\x53\xa1\xdd\x6a\xee\xd8\xc9\x5c\x1a\xf7\x15\x95\xbf\x38\xc0\x5d\x9e\x40\x24\x26\xf9\x9b\x70\xfe\x31\x61\xf2\x43\x97\x78\xc9\xcd\xd4\x28\xd9\x7a\x7d\xb0\x75\x6b\x78\xd2\xf9\xc3\xbd\xcc\x8c\xe7\x30\x9d\x7b\xb7\x27\x41\x3d\x7f\x7b\xdc\xd2\x7d\x44\x87\x2f\x16\x5e\x9f\x6a\x96\x36\x4d\x56\x22\xda\x45\x0d\x1a\xaa\x0a\xc8\xec\x74\x59\x90\xc3\x92\x00\x7d\x74\x45\xed\xb1\x93\x9f\x1b\xf4\x1a\xac\x0b\x99\xf3\xcf\x89\x17\xee\x60\xcc\xf9\x57\x8f\xe3\xee\x01\xd1\xfc\x02\xad\xfd\x97\x8c\x29\xf6\x93\xe5\xfc\x2a\xfc\x5f\x6b\xbf\x2c\x7a\x15\x62\x18\xe4\x35\xb7\x62\x66\xbf\x2d\x7a\x80\x24\xae\x5f\xf2\x9a\x2c\x01\xc3\xb6\x02\x91\x30\xc4\x8e\x20\x62\x44\x49\x10\xfd\xd4\x8e\xd7\x65\xaa\x74\x99\xf7\x6f\xfe\xdb\x6a\xaf\xed\xd3\x5b\x08\x73\x61\xb1\x6d\x97\x02\xb8\x3f\x86\x82\xe3\xf0\x6b\x8b\xbf\xaa\xe5\x02\x90\xa0\xc7\xed\xf0\xb6\xe6\xac\x04\x97\xc3\x13\x50\x57\xfd\x8d\xeb\x2e\x13\xc0\xdb\xe6\x43\x1b\xfe\xfe\x52\x5b\x61\x2e\xb0\x3c\x97\x96\xc6\x1e\xeb\xce\xf3\x5c\x00\xdf\x76\x2e\x40\x59\x8e\x65\x3c\x77\x70\x2c\x7b\xc3\x0e\x22\x68\x1e\xb2\x17\xd6\x8a\x42\xc9\x37\xc5\xed\x96\x42\x48\x37\xda\x63\xae\xa6\xe6\xb6\x59\x1f\x7d\xc2\xe2\x3e\x09\x16\x61\x99\x57\x87\x0a\x66\xe3\x77\x41\x4c\x11\xfc\x96\xb5\x08\x7d\xa8\x9a\x6b\x51\xd9\x9a\x95\xfc\xfe\x37\x55\x8f\xd4\x7a\x83\xad\x51\xdc\x55\xc2\xcf\x83\x10\x11\xa7\xc8\x36\xbe\xe7\xc5\x06\x03\xa3\x5b\x55\x08\xb4\x99\xc8\xb5\x85\xeb\x05\x73\x76\xcb\x54\x2d\x41\xd2\xcd\x7c\xd2\x75\x7d\x8e\x68\x6b\x0f\x1a\xba\xe6\x84\x0d\xb1\x0c\xc6\x9a\x40\xbd\x7a\x2e\x34\xd0\x16\x35\x73\xfc\x43\xab\x27\xc6\x05\x6f\x9b\xdd\x35\x46\xff\x4d\x23\x78\xdb\xd4\xb9\x30\xdb\x1a\xa0\xf4\x57\x07\xd4\xf7\x5d\x85\x35\xdf\xc6\x39\x20\xca\x6f\x02\xd1\x20\xeb\x6f\xed\x7d\xad\x72\xf8\x5c\x5e\xe0\x27\xc1\x21\xc0\xbd\x9e\x93\x43\xab\x93\x48\xac\xdb\x7f\x58\x04\xce\x2e\x42\x7c\x34\xdd\x8a\x26\xfe\xbe\x0a\xc1\xa5\x09\xd4\x5c\xcb\x22\xc9\xcd\x6d\x44\x83\xb3\xa5\xcb\xe5\x99\xa7\xf7\x51\x39\xb8\x67\xc0\xfe\x94\x71\x08\x8d\x01\xeb\xd7\x59\xcb\x31\x8c\x79\x1d\xaf\xcb\x62\x69\x30\x79\x4a\xc6\x1f\x6e\xd5\xc8\x2f\xe1\xde\xdd\xb5\x63\x2e\x47\x10\x95\xb5\xdc\x06\x78\xd8\xf5\xd9\x8b\xca\x55\xf3\x6b\x03\x12\x07\x20\xfe\x3a\xf4\xfc\xfe\xf5\xed\x44\x65\xcc\x86\xd8\x89\xfb\xea\xc5\xd4\xee\x1a\x73\xb5\x26\xcb\xd1\x8d\xf0\xff\xb2\x45\x08\x30\x81\x3a\xe3\x4f\x92\x68\x75\x46\xc5\x84\x87\xd9\x87\xda\x35\x3d\xb0\x0f\x0d\x28\xa6\xb7\x14\xd2\x86\xe0\x13\x27\x7e\x37\x09\x74\xa3\x79\x9a\x86\x12\x0f\x3e\x90\x36\x97\x3e\xdc\x62\x8e\xff\x34\xb5\xb1\xf5\x8a\xe1\x26\x12\xa5\x18\xea\xbe\xc5\xc4\x72\xc0\x10\x7b\x22\xa5\x65\xcf\x30\xac\xe1\x83\x0f\xfb\x76\xf3\xa9\xbc\xf1\x6f\xac\xfc\x7d\x0f\x00\x02\x1f\xbb\x78\x10\xbb\xd1\x7d\x6d\x4f\x41\x7a\x4d\xd4\x0d\x6c\x66\xcb\x43\x12\xf1\x3c\xb7\xc5\x1c\xf4\x54\x66\x9c\xce\x15\x8f\x2a\xf9\x87\x8e\x7e\x6e\x44\xf4\x90\xa9\x44\x8e\xb6\x45\x41\x7f\xcc\x89\x54\x08\x5d\x30\xdf\x9a\x73\xb3\x07\x71\x0f\x57\x0e\x66\x7c\x11\x0d\x28\x1f\x8b\x50\xf6\xdc\x70\x9c\x39\xd1\xd7\xee\x65\x77\xea\x8b\xa0\xf0\x67\xc3\x33\x04\xb5\xfa\xa3\xbd\x68\x35\x9a\x47\x73\x25\x1d\xc0\x1b\x45\x7e\x03\x07\x9b\xb3\x0a\xa3\x62\xeb\x90\x42\x2c\xe7\x97\x2b\xf6\x2f\x57\xec\x7f\xf2\x2b\xf6\x97\xbc\x5f\x03\x44\xeb\x39\x2f\xd7\xed\x55\xdb\xbf\x1c\xaf\xdf\xd6\xf1\x8a\xe4\x8c\x58\x62\x34\x66\x68\xa9\xab\xb7\xfe\xe7\xc7\x0d\xae\x60\x41\x4f\xf4\x88\x71\xfe\x82\xee\x41\x8b\xad\x1a\x67\x77\x07\x9f\x57\xfd\x69\x68\xef\x80\xf8\xcb\x40\x50\x91\xdc\xd8\xbe\x61\x34\xad\x08\x97\x8e\x31\x3c\x83\xe3\xd8\xdd\xa4\x0f\xdf\x54\x36\x6e\x88\x83\x61\x2c\xa3\xcb\xcf\x5d\x5b\x8b\x28\x05\x1a\xf0\x1e\xcb\x18\x90\x01\xf3\xe2\x85\x76\xa3\x5e\xb5\x80\x16\x2a\xfc\x2e\xd1\xc5\x4f\x35\xa9\xb9\xc3\xb4\xea\x9e\x0d\x52\x62\xbb\x8a\xdd\x0c\x7e\xd1\x8b\x84\xb8\xad\x62\x15\xd4\xca\xae\x39\x38\xe4\xac\xb8\x90\xe9\xf7\x98\xf3\xea\xa3\x1b\xaf\x8f\xe8\x47\x3f\xe5\x3c\xcb\x44\x6e\x13\xf0\x0d\x8c\x04\x28\xf5\xc0\x53\x40\x6a\x6b\x23\x50\xef\xb3\xe6\x8d\x18\x53\x52\x6b\x1a\xbe\x06\x43\x37\x6d\x9f\xb9\xeb\x32\x4d\x3b\x67\x6e\xbf\x00\xc8\xf5\x87\x77\xef\x16\x3f\x5d\xbc\xfb\x70\xd5\x2b\xa8\x11\x7c\xad\x73\x4c\x5c\x4f\x68\x4c\xbc\x64\x97\x79\xac\xb0\x9a\xa3\xca\xbf\x35\x5e\x46\xca\x34\xad\x8a\xad\xcc\xe5\x47\x6a\x07\xf0\xad\x28\x24\x67\xc6\x8d\xf5\x0e\x5c\xf5\xf9\xf0\xb5\x8f\xa6\xf1\x8f\xf8\xdb\x33\xe6\x5f\xe2\x35\x48\x82\x91\xd4\x50\xfb\xb8\x12\x78\xfe\x88\xed\x80\x68\xca\xae\xed\x70\x6a\x39\xa9\xc3\xb6\xc7\x07\x09\x44\xb6\x22\xb6\x2a\x50\x27\xd9\x1d\x38\x76\x1f\xab\x81\x59\x67\xcb\x63\x0c\xae\x41\xbb\x13\x14\x01\x02\x69\x53\xaf\x93\x33\x97\x78\x57\x35\x7d\x2a\x54\x77\x9f\xd8\x8c\x60\x29\x29\x97\xeb\x92\xaf\x85\x9e\x30\xfb\xf0\xb9\xdc\x26\xeb\x0d\x96\xe5\x97\x99\x07\x78\x72\x26\x81\xbd\xa1\xb6\x84\x6a\x00\xcf\x44\xce\x25\xbd\x93\x5c\xfb\xe6\x11\x6c\xf8\xc7\x3b\xf7\x3a\x84\xea\xc5\x86\x48\xc7\x48\xce\x25\x4e\x2e\xd2\x05\xd8\x88\x15\xf8\xef\xbc\xa8\x2f\x5d\x0e\x3a\x97\xa8\xf5\x6b\x6c\xfa\x1a\x62\x67\x73\xe9\x2a\xfa\xd0\xc3\xa7\x77\x08\xf8\xee\xb1\x4b\xfb\xed\x89\x9d\x0c\xbb\x27\xa8\x6f\xed\xab\xfe\xe8\x33\xc0\x6c\xb8\xc5\x08\xd1\xd2\xa6\x19\x1b\x78\xab\xe3\x81\xe1\xe8\x2a\xf3\x86\x32\xce\xf6\xde\xd8\xf7\xc2\xef\x74\x62\x39\x54\xb9\x4c\x47\x74\x09\xbf\xdf\xdb\x29\x34\xc9\xfd\x9d\x1a\x70\x65\xbc\xad\x6d\x2d\xb3\x4c\xfb\x1e\xbb\x54\xaa\x63\x5e\x4e\x18\xf8\xad\x74\x8a\x7e\xb0\x6f\x30\xca\xa8\x38\x64\xbd\x0c\xa8\x6d\xaa\x0f\x91\xb5\x3e\x7d\x1d\x4a\x13\x7d\x50\x77\xbc\xff\x34\xb8\x47\xce\x43\xa0\xc3\x6e\x94\x85\xa5\x73\xae\x62\x60\x3b\xcc\x24\xc5\xfd\xac\xfa\x67\x82\xe6\xc5\x6c\x1e\x94\xe6\x34\xeb\x7f\xe2\x16\xd1\xc4\xcf\xdc\x04\x3a\x19\x95\xb9\x36\xe6\x92\xec\x1d\x59\x6d\x95\x33\x3e\x97\x96\x46\xde\x9a\xe3\x0b\x8b\x46\xc9\xdd\x5f\xb1\x5e\x2c\x43\x1a\x66\xf0\x58\x0b\xa6\xa4\xb0\xd6\x70\x2e\xad\x64\xec\x84\xf1\xa5\xb6\x4a\xac\x5c\xee\x9c\x3c\x6a\xe2\xb4\xaf\xb8\x64\x00\xf3\xd9\x6f\xf3\x6a\x6e\x40\xe5\x9c\xff\x95\xf9\xbf\x7f\xfc\xea\xff\x07\x00\x00\xff\xff\xe3\x72\x79\x28\xa2\x97\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: 296129, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} + info := bindataFileInfo{name: "admin.swagger.json", size: 300962, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/gen/pb-java/flyteidl/admin/Common.java b/gen/pb-java/flyteidl/admin/Common.java index 83a55a769..b379a2a39 100644 --- a/gen/pb-java/flyteidl/admin/Common.java +++ b/gen/pb-java/flyteidl/admin/Common.java @@ -20874,70 +20874,71 @@ public flyteidl.admin.Common.RawOutputDataConfig getDefaultInstanceForType() { java.lang.String[] descriptorData = { "\n\033flyteidl/admin/common.proto\022\016flyteidl." + "admin\032\035flyteidl/core/execution.proto\032\036fl" + - "yteidl/core/identifier.proto\"F\n\025NamedEnt" + - "ityIdentifier\022\017\n\007project\030\001 \001(\t\022\016\n\006domain" + - "\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\"[\n\023NamedEntityMetad" + - "ata\022\023\n\013description\030\001 \001(\t\022/\n\005state\030\002 \001(\0162" + - " .flyteidl.admin.NamedEntityState\"\253\001\n\013Na" + - "medEntity\0222\n\rresource_type\030\001 \001(\0162\033.flyte" + + "yteidl/core/identifier.proto\032\037google/pro" + + "tobuf/timestamp.proto\"F\n\025NamedEntityIden" + + "tifier\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022" + + "\014\n\004name\030\003 \001(\t\"[\n\023NamedEntityMetadata\022\023\n\013" + + "description\030\001 \001(\t\022/\n\005state\030\002 \001(\0162 .flyte" + + "idl.admin.NamedEntityState\"\253\001\n\013NamedEnti" + + "ty\0222\n\rresource_type\030\001 \001(\0162\033.flyteidl.cor" + + "e.ResourceType\0221\n\002id\030\002 \001(\0132%.flyteidl.ad" + + "min.NamedEntityIdentifier\0225\n\010metadata\030\003 " + + "\001(\0132#.flyteidl.admin.NamedEntityMetadata" + + "\"r\n\004Sort\022\013\n\003key\030\001 \001(\t\0221\n\tdirection\030\002 \001(\016" + + "2\036.flyteidl.admin.Sort.Direction\"*\n\tDire" + + "ction\022\016\n\nDESCENDING\020\000\022\r\n\tASCENDING\020\001\"\231\001\n" + + " NamedEntityIdentifierListRequest\022\017\n\007pro" + + "ject\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.flyt" + + "eidl.admin.Sort\022\017\n\007filters\030\006 \001(\t\"\303\001\n\026Nam" + + "edEntityListRequest\0222\n\rresource_type\030\001 \001" + + "(\0162\033.flyteidl.core.ResourceType\022\017\n\007proje" + + "ct\030\002 \001(\t\022\016\n\006domain\030\003 \001(\t\022\r\n\005limit\030\004 \001(\r\022" + + "\r\n\005token\030\005 \001(\t\022%\n\007sort_by\030\006 \001(\0132\024.flytei" + + "dl.admin.Sort\022\017\n\007filters\030\007 \001(\t\"c\n\031NamedE" + + "ntityIdentifierList\0227\n\010entities\030\001 \003(\0132%." + + "flyteidl.admin.NamedEntityIdentifier\022\r\n\005" + + "token\030\002 \001(\t\"O\n\017NamedEntityList\022-\n\010entiti" + + "es\030\001 \003(\0132\033.flyteidl.admin.NamedEntity\022\r\n" + + "\005token\030\002 \001(\t\"~\n\025NamedEntityGetRequest\0222\n" + + "\rresource_type\030\001 \001(\0162\033.flyteidl.core.Res" + + "ourceType\0221\n\002id\030\002 \001(\0132%.flyteidl.admin.N" + + "amedEntityIdentifier\"\270\001\n\030NamedEntityUpda" + + "teRequest\0222\n\rresource_type\030\001 \001(\0162\033.flyte" + "idl.core.ResourceType\0221\n\002id\030\002 \001(\0132%.flyt" + "eidl.admin.NamedEntityIdentifier\0225\n\010meta" + "data\030\003 \001(\0132#.flyteidl.admin.NamedEntityM" + - "etadata\"r\n\004Sort\022\013\n\003key\030\001 \001(\t\0221\n\tdirectio" + - "n\030\002 \001(\0162\036.flyteidl.admin.Sort.Direction\"" + - "*\n\tDirection\022\016\n\nDESCENDING\020\000\022\r\n\tASCENDIN" + - "G\020\001\"\231\001\n NamedEntityIdentifierListRequest" + - "\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\r\n\005lim" + - "it\030\003 \001(\r\022\r\n\005token\030\004 \001(\t\022%\n\007sort_by\030\005 \001(\013" + - "2\024.flyteidl.admin.Sort\022\017\n\007filters\030\006 \001(\t\"" + - "\303\001\n\026NamedEntityListRequest\0222\n\rresource_t" + - "ype\030\001 \001(\0162\033.flyteidl.core.ResourceType\022\017" + - "\n\007project\030\002 \001(\t\022\016\n\006domain\030\003 \001(\t\022\r\n\005limit" + - "\030\004 \001(\r\022\r\n\005token\030\005 \001(\t\022%\n\007sort_by\030\006 \001(\0132\024" + - ".flyteidl.admin.Sort\022\017\n\007filters\030\007 \001(\t\"c\n" + - "\031NamedEntityIdentifierList\0227\n\010entities\030\001" + - " \003(\0132%.flyteidl.admin.NamedEntityIdentif" + - "ier\022\r\n\005token\030\002 \001(\t\"O\n\017NamedEntityList\022-\n" + - "\010entities\030\001 \003(\0132\033.flyteidl.admin.NamedEn" + - "tity\022\r\n\005token\030\002 \001(\t\"~\n\025NamedEntityGetReq" + - "uest\0222\n\rresource_type\030\001 \001(\0162\033.flyteidl.c" + - "ore.ResourceType\0221\n\002id\030\002 \001(\0132%.flyteidl." + - "admin.NamedEntityIdentifier\"\270\001\n\030NamedEnt" + - "ityUpdateRequest\0222\n\rresource_type\030\001 \001(\0162" + - "\033.flyteidl.core.ResourceType\0221\n\002id\030\002 \001(\013" + - "2%.flyteidl.admin.NamedEntityIdentifier\022" + - "5\n\010metadata\030\003 \001(\0132#.flyteidl.admin.Named" + - "EntityMetadata\"\033\n\031NamedEntityUpdateRespo" + - "nse\"9\n\020ObjectGetRequest\022%\n\002id\030\001 \001(\0132\031.fl" + - "yteidl.core.Identifier\"\236\001\n\023ResourceListR" + - "equest\0221\n\002id\030\001 \001(\0132%.flyteidl.admin.Name" + - "dEntityIdentifier\022\r\n\005limit\030\002 \001(\r\022\r\n\005toke" + - "n\030\003 \001(\t\022\017\n\007filters\030\004 \001(\t\022%\n\007sort_by\030\005 \001(" + - "\0132\024.flyteidl.admin.Sort\"-\n\021EmailNotifica" + - "tion\022\030\n\020recipients_email\030\001 \003(\t\"1\n\025PagerD" + - "utyNotification\022\030\n\020recipients_email\030\001 \003(" + - "\t\"-\n\021SlackNotification\022\030\n\020recipients_ema" + - "il\030\001 \003(\t\"\363\001\n\014Notification\0226\n\006phases\030\001 \003(" + - "\0162&.flyteidl.core.WorkflowExecution.Phas" + - "e\0222\n\005email\030\002 \001(\0132!.flyteidl.admin.EmailN" + - "otificationH\000\022;\n\npager_duty\030\003 \001(\0132%.flyt" + - "eidl.admin.PagerDutyNotificationH\000\0222\n\005sl" + - "ack\030\004 \001(\0132!.flyteidl.admin.SlackNotifica" + - "tionH\000B\006\n\004type\")\n\007UrlBlob\022\013\n\003url\030\001 \001(\t\022\r" + - "\n\005bytes\030\002 \001(\003:\002\030\001\"k\n\006Labels\0222\n\006values\030\001 " + - "\003(\0132\".flyteidl.admin.Labels.ValuesEntry\032" + - "-\n\013ValuesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001" + - "(\t:\0028\001\"u\n\013Annotations\0227\n\006values\030\001 \003(\0132\'." + - "flyteidl.admin.Annotations.ValuesEntry\032-" + - "\n\013ValuesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(" + - "\t:\0028\001\"N\n\010AuthRole\022\032\n\022assumable_iam_role\030" + - "\001 \001(\t\022\"\n\032kubernetes_service_account\030\002 \001(" + - "\t:\002\030\001\"5\n\023RawOutputDataConfig\022\036\n\026output_l" + - "ocation_prefix\030\001 \001(\t*\\\n\020NamedEntityState" + - "\022\027\n\023NAMED_ENTITY_ACTIVE\020\000\022\031\n\025NAMED_ENTIT" + - "Y_ARCHIVED\020\001\022\024\n\020SYSTEM_GENERATED\020\002B7Z5gi" + - "thub.com/flyteorg/flyteidl/gen/pb-go/fly" + - "teidl/adminb\006proto3" + "etadata\"\033\n\031NamedEntityUpdateResponse\"9\n\020" + + "ObjectGetRequest\022%\n\002id\030\001 \001(\0132\031.flyteidl." + + "core.Identifier\"\236\001\n\023ResourceListRequest\022" + + "1\n\002id\030\001 \001(\0132%.flyteidl.admin.NamedEntity" + + "Identifier\022\r\n\005limit\030\002 \001(\r\022\r\n\005token\030\003 \001(\t" + + "\022\017\n\007filters\030\004 \001(\t\022%\n\007sort_by\030\005 \001(\0132\024.fly" + + "teidl.admin.Sort\"-\n\021EmailNotification\022\030\n" + + "\020recipients_email\030\001 \003(\t\"1\n\025PagerDutyNoti" + + "fication\022\030\n\020recipients_email\030\001 \003(\t\"-\n\021Sl" + + "ackNotification\022\030\n\020recipients_email\030\001 \003(" + + "\t\"\363\001\n\014Notification\0226\n\006phases\030\001 \003(\0162&.fly" + + "teidl.core.WorkflowExecution.Phase\0222\n\005em" + + "ail\030\002 \001(\0132!.flyteidl.admin.EmailNotifica" + + "tionH\000\022;\n\npager_duty\030\003 \001(\0132%.flyteidl.ad" + + "min.PagerDutyNotificationH\000\0222\n\005slack\030\004 \001" + + "(\0132!.flyteidl.admin.SlackNotificationH\000B" + + "\006\n\004type\")\n\007UrlBlob\022\013\n\003url\030\001 \001(\t\022\r\n\005bytes" + + "\030\002 \001(\003:\002\030\001\"k\n\006Labels\0222\n\006values\030\001 \003(\0132\".f" + + "lyteidl.admin.Labels.ValuesEntry\032-\n\013Valu" + + "esEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"" + + "u\n\013Annotations\0227\n\006values\030\001 \003(\0132\'.flyteid" + + "l.admin.Annotations.ValuesEntry\032-\n\013Value" + + "sEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"N" + + "\n\010AuthRole\022\032\n\022assumable_iam_role\030\001 \001(\t\022\"" + + "\n\032kubernetes_service_account\030\002 \001(\t:\002\030\001\"5" + + "\n\023RawOutputDataConfig\022\036\n\026output_location" + + "_prefix\030\001 \001(\t*\\\n\020NamedEntityState\022\027\n\023NAM" + + "ED_ENTITY_ACTIVE\020\000\022\031\n\025NAMED_ENTITY_ARCHI" + + "VED\020\001\022\024\n\020SYSTEM_GENERATED\020\002B7Z5github.co" + + "m/flyteorg/flyteidl/gen/pb-go/flyteidl/a" + + "dminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -20952,6 +20953,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new com.google.protobuf.Descriptors.FileDescriptor[] { flyteidl.core.Execution.getDescriptor(), flyteidl.core.IdentifierOuterClass.getDescriptor(), + com.google.protobuf.TimestampProto.getDescriptor(), }, assigner); internal_static_flyteidl_admin_NamedEntityIdentifier_descriptor = getDescriptor().getMessageTypes().get(0); @@ -21099,6 +21101,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new java.lang.String[] { "OutputLocationPrefix", }); flyteidl.core.Execution.getDescriptor(); flyteidl.core.IdentifierOuterClass.getDescriptor(); + com.google.protobuf.TimestampProto.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 6037e7968..610159bf8 100644 --- a/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java +++ b/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java @@ -26176,6 +26176,1451 @@ public flyteidl.admin.ExecutionOuterClass.ExecutionUpdateResponse getDefaultInst } + public interface WorkflowExecutionGetMetricsRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * id defines the workflow execution to query for.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + boolean hasId(); + /** + *
+     * id defines the workflow execution to query for.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier getId(); + /** + *
+     * id defines the workflow execution to query for.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder getIdOrBuilder(); + + /** + *
+     * depth defines the number of Flyte entity levels to traverse when breaking down execution details.
+     * 
+ * + * int32 depth = 2; + */ + int getDepth(); + } + /** + *
+   * WorkflowExecutionGetMetricsRequest represents a request to retrieve metrics for the specified workflow execution.
+   * 
+ * + * Protobuf type {@code flyteidl.admin.WorkflowExecutionGetMetricsRequest} + */ + public static final class WorkflowExecutionGetMetricsRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + WorkflowExecutionGetMetricsRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use WorkflowExecutionGetMetricsRequest.newBuilder() to construct. + private WorkflowExecutionGetMetricsRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private WorkflowExecutionGetMetricsRequest() { + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private WorkflowExecutionGetMetricsRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder subBuilder = null; + if (id_ != null) { + subBuilder = id_.toBuilder(); + } + id_ = input.readMessage(flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(id_); + id_ = subBuilder.buildPartial(); + } + + break; + } + case 16: { + + depth_ = input.readInt32(); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_WorkflowExecutionGetMetricsRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_WorkflowExecutionGetMetricsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest.class, flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest.Builder.class); + } + + public static final int ID_FIELD_NUMBER = 1; + private flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier id_; + /** + *
+     * id defines the workflow execution to query for.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public boolean hasId() { + return id_ != null; + } + /** + *
+     * id defines the workflow execution to query for.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier getId() { + return id_ == null ? flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance() : id_; + } + /** + *
+     * id defines the workflow execution to query for.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder getIdOrBuilder() { + return getId(); + } + + public static final int DEPTH_FIELD_NUMBER = 2; + private int depth_; + /** + *
+     * depth defines the number of Flyte entity levels to traverse when breaking down execution details.
+     * 
+ * + * int32 depth = 2; + */ + public int getDepth() { + return depth_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (id_ != null) { + output.writeMessage(1, getId()); + } + if (depth_ != 0) { + output.writeInt32(2, depth_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (id_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getId()); + } + if (depth_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, depth_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest)) { + return super.equals(obj); + } + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest other = (flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest) obj; + + if (hasId() != other.hasId()) return false; + if (hasId()) { + if (!getId() + .equals(other.getId())) return false; + } + if (getDepth() + != other.getDepth()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasId()) { + hash = (37 * hash) + ID_FIELD_NUMBER; + hash = (53 * hash) + getId().hashCode(); + } + hash = (37 * hash) + DEPTH_FIELD_NUMBER; + hash = (53 * hash) + getDepth(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest 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; + } + /** + *
+     * WorkflowExecutionGetMetricsRequest represents a request to retrieve metrics for the specified workflow execution.
+     * 
+ * + * Protobuf type {@code flyteidl.admin.WorkflowExecutionGetMetricsRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_WorkflowExecutionGetMetricsRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_WorkflowExecutionGetMetricsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest.class, flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest.Builder.class); + } + + // Construct using flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (idBuilder_ == null) { + id_ = null; + } else { + id_ = null; + idBuilder_ = null; + } + depth_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_WorkflowExecutionGetMetricsRequest_descriptor; + } + + @java.lang.Override + public flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest getDefaultInstanceForType() { + return flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest build() { + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest buildPartial() { + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest result = new flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest(this); + if (idBuilder_ == null) { + result.id_ = id_; + } else { + result.id_ = idBuilder_.build(); + } + result.depth_ = depth_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest) { + return mergeFrom((flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest other) { + if (other == flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest.getDefaultInstance()) return this; + if (other.hasId()) { + mergeId(other.getId()); + } + if (other.getDepth() != 0) { + setDepth(other.getDepth()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier id_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder> idBuilder_; + /** + *
+       * id defines the workflow execution to query for.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public boolean hasId() { + return idBuilder_ != null || id_ != null; + } + /** + *
+       * id defines the workflow execution to query for.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier getId() { + if (idBuilder_ == null) { + return id_ == null ? flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance() : id_; + } else { + return idBuilder_.getMessage(); + } + } + /** + *
+       * id defines the workflow execution to query for.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public Builder setId(flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier value) { + if (idBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + id_ = value; + onChanged(); + } else { + idBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * id defines the workflow execution to query for.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public Builder setId( + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder builderForValue) { + if (idBuilder_ == null) { + id_ = builderForValue.build(); + onChanged(); + } else { + idBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * id defines the workflow execution to query for.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public Builder mergeId(flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier value) { + if (idBuilder_ == null) { + if (id_ != null) { + id_ = + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.newBuilder(id_).mergeFrom(value).buildPartial(); + } else { + id_ = value; + } + onChanged(); + } else { + idBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * id defines the workflow execution to query for.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public Builder clearId() { + if (idBuilder_ == null) { + id_ = null; + onChanged(); + } else { + id_ = null; + idBuilder_ = null; + } + + return this; + } + /** + *
+       * id defines the workflow execution to query for.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder getIdBuilder() { + + onChanged(); + return getIdFieldBuilder().getBuilder(); + } + /** + *
+       * id defines the workflow execution to query for.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder getIdOrBuilder() { + if (idBuilder_ != null) { + return idBuilder_.getMessageOrBuilder(); + } else { + return id_ == null ? + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance() : id_; + } + } + /** + *
+       * id defines the workflow execution to query for.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder> + getIdFieldBuilder() { + if (idBuilder_ == null) { + idBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder>( + getId(), + getParentForChildren(), + isClean()); + id_ = null; + } + return idBuilder_; + } + + private int depth_ ; + /** + *
+       * depth defines the number of Flyte entity levels to traverse when breaking down execution details.
+       * 
+ * + * int32 depth = 2; + */ + public int getDepth() { + return depth_; + } + /** + *
+       * depth defines the number of Flyte entity levels to traverse when breaking down execution details.
+       * 
+ * + * int32 depth = 2; + */ + public Builder setDepth(int value) { + + depth_ = value; + onChanged(); + return this; + } + /** + *
+       * depth defines the number of Flyte entity levels to traverse when breaking down execution details.
+       * 
+ * + * int32 depth = 2; + */ + public Builder clearDepth() { + + depth_ = 0; + 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.WorkflowExecutionGetMetricsRequest) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.WorkflowExecutionGetMetricsRequest) + private static final flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest(); + } + + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public WorkflowExecutionGetMetricsRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new WorkflowExecutionGetMetricsRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface WorkflowExecutionGetMetricsResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+     * hierarchical structure using Flyte entity references.
+     * 
+ * + * .flyteidl.core.Span span = 1; + */ + boolean hasSpan(); + /** + *
+     * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+     * hierarchical structure using Flyte entity references.
+     * 
+ * + * .flyteidl.core.Span span = 1; + */ + flyteidl.core.Metrics.Span getSpan(); + /** + *
+     * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+     * hierarchical structure using Flyte entity references.
+     * 
+ * + * .flyteidl.core.Span span = 1; + */ + flyteidl.core.Metrics.SpanOrBuilder getSpanOrBuilder(); + } + /** + *
+   * WorkflowExecutionGetMetricsResponse represents the response containing metrics for the specified workflow execution.
+   * 
+ * + * Protobuf type {@code flyteidl.admin.WorkflowExecutionGetMetricsResponse} + */ + public static final class WorkflowExecutionGetMetricsResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + WorkflowExecutionGetMetricsResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use WorkflowExecutionGetMetricsResponse.newBuilder() to construct. + private WorkflowExecutionGetMetricsResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private WorkflowExecutionGetMetricsResponse() { + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private WorkflowExecutionGetMetricsResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + flyteidl.core.Metrics.Span.Builder subBuilder = null; + if (span_ != null) { + subBuilder = span_.toBuilder(); + } + span_ = input.readMessage(flyteidl.core.Metrics.Span.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(span_); + span_ = subBuilder.buildPartial(); + } + + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_WorkflowExecutionGetMetricsResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_WorkflowExecutionGetMetricsResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse.class, flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse.Builder.class); + } + + public static final int SPAN_FIELD_NUMBER = 1; + private flyteidl.core.Metrics.Span span_; + /** + *
+     * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+     * hierarchical structure using Flyte entity references.
+     * 
+ * + * .flyteidl.core.Span span = 1; + */ + public boolean hasSpan() { + return span_ != null; + } + /** + *
+     * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+     * hierarchical structure using Flyte entity references.
+     * 
+ * + * .flyteidl.core.Span span = 1; + */ + public flyteidl.core.Metrics.Span getSpan() { + return span_ == null ? flyteidl.core.Metrics.Span.getDefaultInstance() : span_; + } + /** + *
+     * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+     * hierarchical structure using Flyte entity references.
+     * 
+ * + * .flyteidl.core.Span span = 1; + */ + public flyteidl.core.Metrics.SpanOrBuilder getSpanOrBuilder() { + return getSpan(); + } + + 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 (span_ != null) { + output.writeMessage(1, getSpan()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (span_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getSpan()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse)) { + return super.equals(obj); + } + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse other = (flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse) obj; + + if (hasSpan() != other.hasSpan()) return false; + if (hasSpan()) { + if (!getSpan() + .equals(other.getSpan())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasSpan()) { + hash = (37 * hash) + SPAN_FIELD_NUMBER; + hash = (53 * hash) + getSpan().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse 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; + } + /** + *
+     * WorkflowExecutionGetMetricsResponse represents the response containing metrics for the specified workflow execution.
+     * 
+ * + * Protobuf type {@code flyteidl.admin.WorkflowExecutionGetMetricsResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_WorkflowExecutionGetMetricsResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_WorkflowExecutionGetMetricsResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse.class, flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse.Builder.class); + } + + // Construct using flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (spanBuilder_ == null) { + span_ = null; + } else { + span_ = null; + spanBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_WorkflowExecutionGetMetricsResponse_descriptor; + } + + @java.lang.Override + public flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse getDefaultInstanceForType() { + return flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse build() { + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse buildPartial() { + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse result = new flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse(this); + if (spanBuilder_ == null) { + result.span_ = span_; + } else { + result.span_ = spanBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse) { + return mergeFrom((flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse other) { + if (other == flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse.getDefaultInstance()) return this; + if (other.hasSpan()) { + mergeSpan(other.getSpan()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private flyteidl.core.Metrics.Span span_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Metrics.Span, flyteidl.core.Metrics.Span.Builder, flyteidl.core.Metrics.SpanOrBuilder> spanBuilder_; + /** + *
+       * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+       * hierarchical structure using Flyte entity references.
+       * 
+ * + * .flyteidl.core.Span span = 1; + */ + public boolean hasSpan() { + return spanBuilder_ != null || span_ != null; + } + /** + *
+       * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+       * hierarchical structure using Flyte entity references.
+       * 
+ * + * .flyteidl.core.Span span = 1; + */ + public flyteidl.core.Metrics.Span getSpan() { + if (spanBuilder_ == null) { + return span_ == null ? flyteidl.core.Metrics.Span.getDefaultInstance() : span_; + } else { + return spanBuilder_.getMessage(); + } + } + /** + *
+       * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+       * hierarchical structure using Flyte entity references.
+       * 
+ * + * .flyteidl.core.Span span = 1; + */ + public Builder setSpan(flyteidl.core.Metrics.Span value) { + if (spanBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + span_ = value; + onChanged(); + } else { + spanBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+       * hierarchical structure using Flyte entity references.
+       * 
+ * + * .flyteidl.core.Span span = 1; + */ + public Builder setSpan( + flyteidl.core.Metrics.Span.Builder builderForValue) { + if (spanBuilder_ == null) { + span_ = builderForValue.build(); + onChanged(); + } else { + spanBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+       * hierarchical structure using Flyte entity references.
+       * 
+ * + * .flyteidl.core.Span span = 1; + */ + public Builder mergeSpan(flyteidl.core.Metrics.Span value) { + if (spanBuilder_ == null) { + if (span_ != null) { + span_ = + flyteidl.core.Metrics.Span.newBuilder(span_).mergeFrom(value).buildPartial(); + } else { + span_ = value; + } + onChanged(); + } else { + spanBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+       * hierarchical structure using Flyte entity references.
+       * 
+ * + * .flyteidl.core.Span span = 1; + */ + public Builder clearSpan() { + if (spanBuilder_ == null) { + span_ = null; + onChanged(); + } else { + span_ = null; + spanBuilder_ = null; + } + + return this; + } + /** + *
+       * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+       * hierarchical structure using Flyte entity references.
+       * 
+ * + * .flyteidl.core.Span span = 1; + */ + public flyteidl.core.Metrics.Span.Builder getSpanBuilder() { + + onChanged(); + return getSpanFieldBuilder().getBuilder(); + } + /** + *
+       * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+       * hierarchical structure using Flyte entity references.
+       * 
+ * + * .flyteidl.core.Span span = 1; + */ + public flyteidl.core.Metrics.SpanOrBuilder getSpanOrBuilder() { + if (spanBuilder_ != null) { + return spanBuilder_.getMessageOrBuilder(); + } else { + return span_ == null ? + flyteidl.core.Metrics.Span.getDefaultInstance() : span_; + } + } + /** + *
+       * Span defines the top-level breakdown of the workflows execution. More precise information is nested in a
+       * hierarchical structure using Flyte entity references.
+       * 
+ * + * .flyteidl.core.Span span = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Metrics.Span, flyteidl.core.Metrics.Span.Builder, flyteidl.core.Metrics.SpanOrBuilder> + getSpanFieldBuilder() { + if (spanBuilder_ == null) { + spanBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.Metrics.Span, flyteidl.core.Metrics.Span.Builder, flyteidl.core.Metrics.SpanOrBuilder>( + getSpan(), + getParentForChildren(), + isClean()); + span_ = null; + } + return spanBuilder_; + } + @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.WorkflowExecutionGetMetricsResponse) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.WorkflowExecutionGetMetricsResponse) + private static final flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse(); + } + + public static flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public WorkflowExecutionGetMetricsResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new WorkflowExecutionGetMetricsResponse(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetMetricsResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + private static final com.google.protobuf.Descriptors.Descriptor internal_static_flyteidl_admin_ExecutionCreateRequest_descriptor; private static final @@ -26281,6 +27726,16 @@ public flyteidl.admin.ExecutionOuterClass.ExecutionUpdateResponse getDefaultInst private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_flyteidl_admin_ExecutionUpdateResponse_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_WorkflowExecutionGetMetricsRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_WorkflowExecutionGetMetricsRequest_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_WorkflowExecutionGetMetricsResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_WorkflowExecutionGetMetricsResponse_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { @@ -26295,110 +27750,115 @@ public flyteidl.admin.ExecutionOuterClass.ExecutionUpdateResponse getDefaultInst "ent.proto\032\033flyteidl/admin/common.proto\032\034" + "flyteidl/core/literals.proto\032\035flyteidl/c" + "ore/execution.proto\032\036flyteidl/core/ident" + - "ifier.proto\032\034flyteidl/core/security.prot" + - "o\032\036google/protobuf/duration.proto\032\037googl" + - "e/protobuf/timestamp.proto\032\036google/proto" + - "buf/wrappers.proto\"\237\001\n\026ExecutionCreateRe" + - "quest\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\014" + - "\n\004name\030\003 \001(\t\022+\n\004spec\030\004 \001(\0132\035.flyteidl.ad" + - "min.ExecutionSpec\022)\n\006inputs\030\005 \001(\0132\031.flyt" + - "eidl.core.LiteralMap\"\177\n\030ExecutionRelaunc" + - "hRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Wor" + - "kflowExecutionIdentifier\022\014\n\004name\030\003 \001(\t\022\027" + - "\n\017overwrite_cache\030\004 \001(\010J\004\010\002\020\003\"\224\001\n\027Execut" + - "ionRecoverRequest\0226\n\002id\030\001 \001(\0132*.flyteidl" + - ".core.WorkflowExecutionIdentifier\022\014\n\004nam" + - "e\030\002 \001(\t\0223\n\010metadata\030\003 \001(\0132!.flyteidl.adm" + - "in.ExecutionMetadata\"Q\n\027ExecutionCreateR" + - "esponse\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Work" + - "flowExecutionIdentifier\"U\n\033WorkflowExecu" + - "tionGetRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.co" + - "re.WorkflowExecutionIdentifier\"\243\001\n\tExecu" + - "tion\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workflo" + - "wExecutionIdentifier\022+\n\004spec\030\002 \001(\0132\035.fly" + - "teidl.admin.ExecutionSpec\0221\n\007closure\030\003 \001" + - "(\0132 .flyteidl.admin.ExecutionClosure\"M\n\r" + - "ExecutionList\022-\n\nexecutions\030\001 \003(\0132\031.flyt" + - "eidl.admin.Execution\022\r\n\005token\030\002 \001(\t\"X\n\016L" + - "iteralMapBlob\022/\n\006values\030\001 \001(\0132\031.flyteidl" + - ".core.LiteralMapB\002\030\001H\000\022\r\n\003uri\030\002 \001(\tH\000B\006\n" + - "\004data\"1\n\rAbortMetadata\022\r\n\005cause\030\001 \001(\t\022\021\n" + - "\tprincipal\030\002 \001(\t\"\360\005\n\020ExecutionClosure\0225\n" + - "\007outputs\030\001 \001(\0132\036.flyteidl.admin.LiteralM" + - "apBlobB\002\030\001H\000\022.\n\005error\030\002 \001(\0132\035.flyteidl.c" + - "ore.ExecutionErrorH\000\022\031\n\013abort_cause\030\n \001(" + - "\tB\002\030\001H\000\0227\n\016abort_metadata\030\014 \001(\0132\035.flytei" + - "dl.admin.AbortMetadataH\000\0224\n\013output_data\030" + - "\r \001(\0132\031.flyteidl.core.LiteralMapB\002\030\001H\000\0226" + - "\n\017computed_inputs\030\003 \001(\0132\031.flyteidl.core." + - "LiteralMapB\002\030\001\0225\n\005phase\030\004 \001(\0162&.flyteidl" + - ".core.WorkflowExecution.Phase\022.\n\nstarted" + - "_at\030\005 \001(\0132\032.google.protobuf.Timestamp\022+\n" + - "\010duration\030\006 \001(\0132\031.google.protobuf.Durati" + - "on\022.\n\ncreated_at\030\007 \001(\0132\032.google.protobuf" + - ".Timestamp\022.\n\nupdated_at\030\010 \001(\0132\032.google." + - "protobuf.Timestamp\0223\n\rnotifications\030\t \003(" + - "\0132\034.flyteidl.admin.Notification\022.\n\013workf" + - "low_id\030\013 \001(\0132\031.flyteidl.core.Identifier\022" + - "I\n\024state_change_details\030\016 \001(\0132+.flyteidl" + - ".admin.ExecutionStateChangeDetailsB\017\n\rou" + - "tput_result\"+\n\016SystemMetadata\022\031\n\021executi" + - "on_cluster\030\001 \001(\t\"\332\003\n\021ExecutionMetadata\022=" + - "\n\004mode\030\001 \001(\0162/.flyteidl.admin.ExecutionM" + - "etadata.ExecutionMode\022\021\n\tprincipal\030\002 \001(\t" + - "\022\017\n\007nesting\030\003 \001(\r\0220\n\014scheduled_at\030\004 \001(\0132" + - "\032.google.protobuf.Timestamp\022E\n\025parent_no" + - "de_execution\030\005 \001(\0132&.flyteidl.core.NodeE" + - "xecutionIdentifier\022G\n\023reference_executio" + - "n\030\020 \001(\0132*.flyteidl.core.WorkflowExecutio" + - "nIdentifier\0227\n\017system_metadata\030\021 \001(\0132\036.f" + - "lyteidl.admin.SystemMetadata\"g\n\rExecutio" + - "nMode\022\n\n\006MANUAL\020\000\022\r\n\tSCHEDULED\020\001\022\n\n\006SYST" + - "EM\020\002\022\014\n\010RELAUNCH\020\003\022\022\n\016CHILD_WORKFLOW\020\004\022\r" + - "\n\tRECOVERED\020\005\"G\n\020NotificationList\0223\n\rnot" + - "ifications\030\001 \003(\0132\034.flyteidl.admin.Notifi" + - "cation\"\200\006\n\rExecutionSpec\022.\n\013launch_plan\030" + - "\001 \001(\0132\031.flyteidl.core.Identifier\022-\n\006inpu" + - "ts\030\002 \001(\0132\031.flyteidl.core.LiteralMapB\002\030\001\022" + - "3\n\010metadata\030\003 \001(\0132!.flyteidl.admin.Execu" + - "tionMetadata\0229\n\rnotifications\030\005 \001(\0132 .fl" + - "yteidl.admin.NotificationListH\000\022\025\n\013disab" + - "le_all\030\006 \001(\010H\000\022&\n\006labels\030\007 \001(\0132\026.flyteid" + - "l.admin.Labels\0220\n\013annotations\030\010 \001(\0132\033.fl" + - "yteidl.admin.Annotations\0228\n\020security_con" + - "text\030\n \001(\0132\036.flyteidl.core.SecurityConte" + - "xt\022/\n\tauth_role\030\020 \001(\0132\030.flyteidl.admin.A" + - "uthRoleB\002\030\001\022;\n\022quality_of_service\030\021 \001(\0132" + - "\037.flyteidl.core.QualityOfService\022\027\n\017max_" + - "parallelism\030\022 \001(\005\022C\n\026raw_output_data_con" + - "fig\030\023 \001(\0132#.flyteidl.admin.RawOutputData" + - "Config\022=\n\022cluster_assignment\030\024 \001(\0132!.fly" + - "teidl.admin.ClusterAssignment\0221\n\rinterru" + - "ptible\030\025 \001(\0132\032.google.protobuf.BoolValue" + - "\022\027\n\017overwrite_cache\030\026 \001(\010B\030\n\026notificatio" + - "n_overridesJ\004\010\004\020\005\"b\n\031ExecutionTerminateR" + + "ifier.proto\032\033flyteidl/core/metrics.proto" + + "\032\034flyteidl/core/security.proto\032\036google/p" + + "rotobuf/duration.proto\032\037google/protobuf/" + + "timestamp.proto\032\036google/protobuf/wrapper" + + "s.proto\"\237\001\n\026ExecutionCreateRequest\022\017\n\007pr" + + "oject\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\014\n\004name\030\003 \001(" + + "\t\022+\n\004spec\030\004 \001(\0132\035.flyteidl.admin.Executi" + + "onSpec\022)\n\006inputs\030\005 \001(\0132\031.flyteidl.core.L" + + "iteralMap\"\177\n\030ExecutionRelaunchRequest\0226\n" + + "\002id\030\001 \001(\0132*.flyteidl.core.WorkflowExecut" + + "ionIdentifier\022\014\n\004name\030\003 \001(\t\022\027\n\017overwrite" + + "_cache\030\004 \001(\010J\004\010\002\020\003\"\224\001\n\027ExecutionRecoverR" + "equest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workf" + - "lowExecutionIdentifier\022\r\n\005cause\030\002 \001(\t\"\034\n" + - "\032ExecutionTerminateResponse\"Y\n\037WorkflowE" + - "xecutionGetDataRequest\0226\n\002id\030\001 \001(\0132*.fly" + - "teidl.core.WorkflowExecutionIdentifier\"\336" + - "\001\n WorkflowExecutionGetDataResponse\022,\n\007o" + - "utputs\030\001 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030" + - "\001\022+\n\006inputs\030\002 \001(\0132\027.flyteidl.admin.UrlBl" + - "obB\002\030\001\022.\n\013full_inputs\030\003 \001(\0132\031.flyteidl.c" + - "ore.LiteralMap\022/\n\014full_outputs\030\004 \001(\0132\031.f" + - "lyteidl.core.LiteralMap\"\177\n\026ExecutionUpda" + - "teRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Wo" + - "rkflowExecutionIdentifier\022-\n\005state\030\002 \001(\016" + - "2\036.flyteidl.admin.ExecutionState\"\220\001\n\033Exe" + - "cutionStateChangeDetails\022-\n\005state\030\001 \001(\0162" + - "\036.flyteidl.admin.ExecutionState\022/\n\013occur" + - "red_at\030\002 \001(\0132\032.google.protobuf.Timestamp" + - "\022\021\n\tprincipal\030\003 \001(\t\"\031\n\027ExecutionUpdateRe" + - "sponse*>\n\016ExecutionState\022\024\n\020EXECUTION_AC" + - "TIVE\020\000\022\026\n\022EXECUTION_ARCHIVED\020\001B7Z5github" + - ".com/flyteorg/flyteidl/gen/pb-go/flyteid" + - "l/adminb\006proto3" + "lowExecutionIdentifier\022\014\n\004name\030\002 \001(\t\0223\n\010" + + "metadata\030\003 \001(\0132!.flyteidl.admin.Executio" + + "nMetadata\"Q\n\027ExecutionCreateResponse\0226\n\002" + + "id\030\001 \001(\0132*.flyteidl.core.WorkflowExecuti" + + "onIdentifier\"U\n\033WorkflowExecutionGetRequ" + + "est\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workflow" + + "ExecutionIdentifier\"\243\001\n\tExecution\0226\n\002id\030" + + "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" + + "dentifier\022+\n\004spec\030\002 \001(\0132\035.flyteidl.admin" + + ".ExecutionSpec\0221\n\007closure\030\003 \001(\0132 .flytei" + + "dl.admin.ExecutionClosure\"M\n\rExecutionLi" + + "st\022-\n\nexecutions\030\001 \003(\0132\031.flyteidl.admin." + + "Execution\022\r\n\005token\030\002 \001(\t\"X\n\016LiteralMapBl" + + "ob\022/\n\006values\030\001 \001(\0132\031.flyteidl.core.Liter" + + "alMapB\002\030\001H\000\022\r\n\003uri\030\002 \001(\tH\000B\006\n\004data\"1\n\rAb" + + "ortMetadata\022\r\n\005cause\030\001 \001(\t\022\021\n\tprincipal\030" + + "\002 \001(\t\"\360\005\n\020ExecutionClosure\0225\n\007outputs\030\001 " + + "\001(\0132\036.flyteidl.admin.LiteralMapBlobB\002\030\001H" + + "\000\022.\n\005error\030\002 \001(\0132\035.flyteidl.core.Executi" + + "onErrorH\000\022\031\n\013abort_cause\030\n \001(\tB\002\030\001H\000\0227\n\016" + + "abort_metadata\030\014 \001(\0132\035.flyteidl.admin.Ab" + + "ortMetadataH\000\0224\n\013output_data\030\r \001(\0132\031.fly" + + "teidl.core.LiteralMapB\002\030\001H\000\0226\n\017computed_" + + "inputs\030\003 \001(\0132\031.flyteidl.core.LiteralMapB" + + "\002\030\001\0225\n\005phase\030\004 \001(\0162&.flyteidl.core.Workf" + + "lowExecution.Phase\022.\n\nstarted_at\030\005 \001(\0132\032" + + ".google.protobuf.Timestamp\022+\n\010duration\030\006" + + " \001(\0132\031.google.protobuf.Duration\022.\n\ncreat" + + "ed_at\030\007 \001(\0132\032.google.protobuf.Timestamp\022" + + ".\n\nupdated_at\030\010 \001(\0132\032.google.protobuf.Ti" + + "mestamp\0223\n\rnotifications\030\t \003(\0132\034.flyteid" + + "l.admin.Notification\022.\n\013workflow_id\030\013 \001(" + + "\0132\031.flyteidl.core.Identifier\022I\n\024state_ch" + + "ange_details\030\016 \001(\0132+.flyteidl.admin.Exec" + + "utionStateChangeDetailsB\017\n\routput_result" + + "\"+\n\016SystemMetadata\022\031\n\021execution_cluster\030" + + "\001 \001(\t\"\332\003\n\021ExecutionMetadata\022=\n\004mode\030\001 \001(" + + "\0162/.flyteidl.admin.ExecutionMetadata.Exe" + + "cutionMode\022\021\n\tprincipal\030\002 \001(\t\022\017\n\007nesting" + + "\030\003 \001(\r\0220\n\014scheduled_at\030\004 \001(\0132\032.google.pr" + + "otobuf.Timestamp\022E\n\025parent_node_executio" + + "n\030\005 \001(\0132&.flyteidl.core.NodeExecutionIde" + + "ntifier\022G\n\023reference_execution\030\020 \001(\0132*.f" + + "lyteidl.core.WorkflowExecutionIdentifier" + + "\0227\n\017system_metadata\030\021 \001(\0132\036.flyteidl.adm" + + "in.SystemMetadata\"g\n\rExecutionMode\022\n\n\006MA" + + "NUAL\020\000\022\r\n\tSCHEDULED\020\001\022\n\n\006SYSTEM\020\002\022\014\n\010REL" + + "AUNCH\020\003\022\022\n\016CHILD_WORKFLOW\020\004\022\r\n\tRECOVERED" + + "\020\005\"G\n\020NotificationList\0223\n\rnotifications\030" + + "\001 \003(\0132\034.flyteidl.admin.Notification\"\200\006\n\r" + + "ExecutionSpec\022.\n\013launch_plan\030\001 \001(\0132\031.fly" + + "teidl.core.Identifier\022-\n\006inputs\030\002 \001(\0132\031." + + "flyteidl.core.LiteralMapB\002\030\001\0223\n\010metadata" + + "\030\003 \001(\0132!.flyteidl.admin.ExecutionMetadat" + + "a\0229\n\rnotifications\030\005 \001(\0132 .flyteidl.admi" + + "n.NotificationListH\000\022\025\n\013disable_all\030\006 \001(" + + "\010H\000\022&\n\006labels\030\007 \001(\0132\026.flyteidl.admin.Lab" + + "els\0220\n\013annotations\030\010 \001(\0132\033.flyteidl.admi" + + "n.Annotations\0228\n\020security_context\030\n \001(\0132" + + "\036.flyteidl.core.SecurityContext\022/\n\tauth_" + + "role\030\020 \001(\0132\030.flyteidl.admin.AuthRoleB\002\030\001" + + "\022;\n\022quality_of_service\030\021 \001(\0132\037.flyteidl." + + "core.QualityOfService\022\027\n\017max_parallelism" + + "\030\022 \001(\005\022C\n\026raw_output_data_config\030\023 \001(\0132#" + + ".flyteidl.admin.RawOutputDataConfig\022=\n\022c" + + "luster_assignment\030\024 \001(\0132!.flyteidl.admin" + + ".ClusterAssignment\0221\n\rinterruptible\030\025 \001(" + + "\0132\032.google.protobuf.BoolValue\022\027\n\017overwri" + + "te_cache\030\026 \001(\010B\030\n\026notification_overrides" + + "J\004\010\004\020\005\"b\n\031ExecutionTerminateRequest\0226\n\002i" + + "d\030\001 \001(\0132*.flyteidl.core.WorkflowExecutio" + + "nIdentifier\022\r\n\005cause\030\002 \001(\t\"\034\n\032ExecutionT" + + "erminateResponse\"Y\n\037WorkflowExecutionGet" + + "DataRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core." + + "WorkflowExecutionIdentifier\"\336\001\n Workflow" + + "ExecutionGetDataResponse\022,\n\007outputs\030\001 \001(" + + "\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022+\n\006inputs" + + "\030\002 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022.\n\013f" + + "ull_inputs\030\003 \001(\0132\031.flyteidl.core.Literal" + + "Map\022/\n\014full_outputs\030\004 \001(\0132\031.flyteidl.cor" + + "e.LiteralMap\"\177\n\026ExecutionUpdateRequest\0226" + + "\n\002id\030\001 \001(\0132*.flyteidl.core.WorkflowExecu" + + "tionIdentifier\022-\n\005state\030\002 \001(\0162\036.flyteidl" + + ".admin.ExecutionState\"\220\001\n\033ExecutionState" + + "ChangeDetails\022-\n\005state\030\001 \001(\0162\036.flyteidl." + + "admin.ExecutionState\022/\n\013occurred_at\030\002 \001(" + + "\0132\032.google.protobuf.Timestamp\022\021\n\tprincip" + + "al\030\003 \001(\t\"\031\n\027ExecutionUpdateResponse\"k\n\"W" + + "orkflowExecutionGetMetricsRequest\0226\n\002id\030" + + "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" + + "dentifier\022\r\n\005depth\030\002 \001(\005\"H\n#WorkflowExec" + + "utionGetMetricsResponse\022!\n\004span\030\001 \001(\0132\023." + + "flyteidl.core.Span*>\n\016ExecutionState\022\024\n\020" + + "EXECUTION_ACTIVE\020\000\022\026\n\022EXECUTION_ARCHIVED" + + "\020\001B7Z5github.com/flyteorg/flyteidl/gen/p" + + "b-go/flyteidl/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -26416,6 +27876,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.core.Literals.getDescriptor(), flyteidl.core.Execution.getDescriptor(), flyteidl.core.IdentifierOuterClass.getDescriptor(), + flyteidl.core.Metrics.getDescriptor(), flyteidl.core.Security.getDescriptor(), com.google.protobuf.DurationProto.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), @@ -26547,11 +28008,24 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_ExecutionUpdateResponse_descriptor, new java.lang.String[] { }); + internal_static_flyteidl_admin_WorkflowExecutionGetMetricsRequest_descriptor = + getDescriptor().getMessageTypes().get(21); + internal_static_flyteidl_admin_WorkflowExecutionGetMetricsRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_WorkflowExecutionGetMetricsRequest_descriptor, + new java.lang.String[] { "Id", "Depth", }); + internal_static_flyteidl_admin_WorkflowExecutionGetMetricsResponse_descriptor = + getDescriptor().getMessageTypes().get(22); + internal_static_flyteidl_admin_WorkflowExecutionGetMetricsResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_WorkflowExecutionGetMetricsResponse_descriptor, + new java.lang.String[] { "Span", }); flyteidl.admin.ClusterAssignmentOuterClass.getDescriptor(); flyteidl.admin.Common.getDescriptor(); flyteidl.core.Literals.getDescriptor(); flyteidl.core.Execution.getDescriptor(); flyteidl.core.IdentifierOuterClass.getDescriptor(); + flyteidl.core.Metrics.getDescriptor(); flyteidl.core.Security.getDescriptor(); com.google.protobuf.DurationProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); diff --git a/gen/pb-java/flyteidl/core/Metrics.java b/gen/pb-java/flyteidl/core/Metrics.java new file mode 100644 index 000000000..b941867c6 --- /dev/null +++ b/gen/pb-java/flyteidl/core/Metrics.java @@ -0,0 +1,2586 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: flyteidl/core/metrics.proto + +package flyteidl.core; + +public final class Metrics { + private Metrics() {} + 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 SpanOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.core.Span) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * start_time defines the instance this span began.
+     * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + boolean hasStartTime(); + /** + *
+     * start_time defines the instance this span began.
+     * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + com.google.protobuf.Timestamp getStartTime(); + /** + *
+     * start_time defines the instance this span began.
+     * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + com.google.protobuf.TimestampOrBuilder getStartTimeOrBuilder(); + + /** + *
+     * end_time defines the instance this span completed.
+     * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + boolean hasEndTime(); + /** + *
+     * end_time defines the instance this span completed.
+     * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + com.google.protobuf.Timestamp getEndTime(); + /** + *
+     * end_time defines the instance this span completed.
+     * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + com.google.protobuf.TimestampOrBuilder getEndTimeOrBuilder(); + + /** + *
+     * workflow_id is the id of the workflow execution this Span represents.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + boolean hasWorkflowId(); + /** + *
+     * workflow_id is the id of the workflow execution this Span represents.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier getWorkflowId(); + /** + *
+     * workflow_id is the id of the workflow execution this Span represents.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder getWorkflowIdOrBuilder(); + + /** + *
+     * node_id is the id of the node execution this Span represents.
+     * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + boolean hasNodeId(); + /** + *
+     * node_id is the id of the node execution this Span represents.
+     * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier getNodeId(); + /** + *
+     * node_id is the id of the node execution this Span represents.
+     * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifierOrBuilder getNodeIdOrBuilder(); + + /** + *
+     * task_id is the id of the task execution this Span represents.
+     * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + boolean hasTaskId(); + /** + *
+     * task_id is the id of the task execution this Span represents.
+     * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier getTaskId(); + /** + *
+     * task_id is the id of the task execution this Span represents.
+     * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifierOrBuilder getTaskIdOrBuilder(); + + /** + *
+     * operation_id is the id of a unique operation that this Span represents.
+     * 
+ * + * string operation_id = 6; + */ + java.lang.String getOperationId(); + /** + *
+     * operation_id is the id of a unique operation that this Span represents.
+     * 
+ * + * string operation_id = 6; + */ + com.google.protobuf.ByteString + getOperationIdBytes(); + + /** + *
+     * spans defines a collection of Spans that breakdown this execution.
+     * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + java.util.List + getSpansList(); + /** + *
+     * spans defines a collection of Spans that breakdown this execution.
+     * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + flyteidl.core.Metrics.Span getSpans(int index); + /** + *
+     * spans defines a collection of Spans that breakdown this execution.
+     * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + int getSpansCount(); + /** + *
+     * spans defines a collection of Spans that breakdown this execution.
+     * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + java.util.List + getSpansOrBuilderList(); + /** + *
+     * spans defines a collection of Spans that breakdown this execution.
+     * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + flyteidl.core.Metrics.SpanOrBuilder getSpansOrBuilder( + int index); + + public flyteidl.core.Metrics.Span.IdCase getIdCase(); + } + /** + *
+   * Span represents a duration trace of Flyte execution. The id field denotes a Flyte execution entity or an operation
+   * which uniquely identifies the Span. The spans attribute allows this Span to be further broken down into more
+   * precise definitions.
+   * 
+ * + * Protobuf type {@code flyteidl.core.Span} + */ + public static final class Span extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.core.Span) + SpanOrBuilder { + private static final long serialVersionUID = 0L; + // Use Span.newBuilder() to construct. + private Span(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Span() { + spans_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Span( + 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: { + com.google.protobuf.Timestamp.Builder subBuilder = null; + if (startTime_ != null) { + subBuilder = startTime_.toBuilder(); + } + startTime_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(startTime_); + startTime_ = subBuilder.buildPartial(); + } + + break; + } + case 18: { + com.google.protobuf.Timestamp.Builder subBuilder = null; + if (endTime_ != null) { + subBuilder = endTime_.toBuilder(); + } + endTime_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(endTime_); + endTime_ = subBuilder.buildPartial(); + } + + break; + } + case 26: { + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder subBuilder = null; + if (idCase_ == 3) { + subBuilder = ((flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier) id_).toBuilder(); + } + id_ = + input.readMessage(flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom((flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier) id_); + id_ = subBuilder.buildPartial(); + } + idCase_ = 3; + break; + } + case 34: { + flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.Builder subBuilder = null; + if (idCase_ == 4) { + subBuilder = ((flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier) id_).toBuilder(); + } + id_ = + input.readMessage(flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom((flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier) id_); + id_ = subBuilder.buildPartial(); + } + idCase_ = 4; + break; + } + case 42: { + flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.Builder subBuilder = null; + if (idCase_ == 5) { + subBuilder = ((flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier) id_).toBuilder(); + } + id_ = + input.readMessage(flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom((flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier) id_); + id_ = subBuilder.buildPartial(); + } + idCase_ = 5; + break; + } + case 50: { + java.lang.String s = input.readStringRequireUtf8(); + idCase_ = 6; + id_ = s; + break; + } + case 58: { + if (!((mutable_bitField0_ & 0x00000040) != 0)) { + spans_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000040; + } + spans_.add( + input.readMessage(flyteidl.core.Metrics.Span.parser(), extensionRegistry)); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000040) != 0)) { + spans_ = java.util.Collections.unmodifiableList(spans_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.core.Metrics.internal_static_flyteidl_core_Span_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.core.Metrics.internal_static_flyteidl_core_Span_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.core.Metrics.Span.class, flyteidl.core.Metrics.Span.Builder.class); + } + + private int bitField0_; + private int idCase_ = 0; + private java.lang.Object id_; + public enum IdCase + implements com.google.protobuf.Internal.EnumLite { + WORKFLOW_ID(3), + NODE_ID(4), + TASK_ID(5), + OPERATION_ID(6), + ID_NOT_SET(0); + private final int value; + private IdCase(int value) { + this.value = value; + } + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static IdCase valueOf(int value) { + return forNumber(value); + } + + public static IdCase forNumber(int value) { + switch (value) { + case 3: return WORKFLOW_ID; + case 4: return NODE_ID; + case 5: return TASK_ID; + case 6: return OPERATION_ID; + case 0: return ID_NOT_SET; + default: return null; + } + } + public int getNumber() { + return this.value; + } + }; + + public IdCase + getIdCase() { + return IdCase.forNumber( + idCase_); + } + + public static final int START_TIME_FIELD_NUMBER = 1; + private com.google.protobuf.Timestamp startTime_; + /** + *
+     * start_time defines the instance this span began.
+     * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + public boolean hasStartTime() { + return startTime_ != null; + } + /** + *
+     * start_time defines the instance this span began.
+     * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + public com.google.protobuf.Timestamp getStartTime() { + return startTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : startTime_; + } + /** + *
+     * start_time defines the instance this span began.
+     * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + public com.google.protobuf.TimestampOrBuilder getStartTimeOrBuilder() { + return getStartTime(); + } + + public static final int END_TIME_FIELD_NUMBER = 2; + private com.google.protobuf.Timestamp endTime_; + /** + *
+     * end_time defines the instance this span completed.
+     * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + public boolean hasEndTime() { + return endTime_ != null; + } + /** + *
+     * end_time defines the instance this span completed.
+     * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + public com.google.protobuf.Timestamp getEndTime() { + return endTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : endTime_; + } + /** + *
+     * end_time defines the instance this span completed.
+     * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + public com.google.protobuf.TimestampOrBuilder getEndTimeOrBuilder() { + return getEndTime(); + } + + public static final int WORKFLOW_ID_FIELD_NUMBER = 3; + /** + *
+     * workflow_id is the id of the workflow execution this Span represents.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + public boolean hasWorkflowId() { + return idCase_ == 3; + } + /** + *
+     * workflow_id is the id of the workflow execution this Span represents.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier getWorkflowId() { + if (idCase_ == 3) { + return (flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance(); + } + /** + *
+     * workflow_id is the id of the workflow execution this Span represents.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder getWorkflowIdOrBuilder() { + if (idCase_ == 3) { + return (flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance(); + } + + public static final int NODE_ID_FIELD_NUMBER = 4; + /** + *
+     * node_id is the id of the node execution this Span represents.
+     * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + public boolean hasNodeId() { + return idCase_ == 4; + } + /** + *
+     * node_id is the id of the node execution this Span represents.
+     * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + public flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier getNodeId() { + if (idCase_ == 4) { + return (flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.getDefaultInstance(); + } + /** + *
+     * node_id is the id of the node execution this Span represents.
+     * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + public flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifierOrBuilder getNodeIdOrBuilder() { + if (idCase_ == 4) { + return (flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.getDefaultInstance(); + } + + public static final int TASK_ID_FIELD_NUMBER = 5; + /** + *
+     * task_id is the id of the task execution this Span represents.
+     * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + public boolean hasTaskId() { + return idCase_ == 5; + } + /** + *
+     * task_id is the id of the task execution this Span represents.
+     * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + public flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier getTaskId() { + if (idCase_ == 5) { + return (flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.getDefaultInstance(); + } + /** + *
+     * task_id is the id of the task execution this Span represents.
+     * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + public flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifierOrBuilder getTaskIdOrBuilder() { + if (idCase_ == 5) { + return (flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.getDefaultInstance(); + } + + public static final int OPERATION_ID_FIELD_NUMBER = 6; + /** + *
+     * operation_id is the id of a unique operation that this Span represents.
+     * 
+ * + * string operation_id = 6; + */ + public java.lang.String getOperationId() { + java.lang.Object ref = ""; + if (idCase_ == 6) { + ref = id_; + } + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (idCase_ == 6) { + id_ = s; + } + return s; + } + } + /** + *
+     * operation_id is the id of a unique operation that this Span represents.
+     * 
+ * + * string operation_id = 6; + */ + public com.google.protobuf.ByteString + getOperationIdBytes() { + java.lang.Object ref = ""; + if (idCase_ == 6) { + ref = id_; + } + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + if (idCase_ == 6) { + id_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SPANS_FIELD_NUMBER = 7; + private java.util.List spans_; + /** + *
+     * spans defines a collection of Spans that breakdown this execution.
+     * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public java.util.List getSpansList() { + return spans_; + } + /** + *
+     * spans defines a collection of Spans that breakdown this execution.
+     * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public java.util.List + getSpansOrBuilderList() { + return spans_; + } + /** + *
+     * spans defines a collection of Spans that breakdown this execution.
+     * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public int getSpansCount() { + return spans_.size(); + } + /** + *
+     * spans defines a collection of Spans that breakdown this execution.
+     * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public flyteidl.core.Metrics.Span getSpans(int index) { + return spans_.get(index); + } + /** + *
+     * spans defines a collection of Spans that breakdown this execution.
+     * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public flyteidl.core.Metrics.SpanOrBuilder getSpansOrBuilder( + int index) { + return spans_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (startTime_ != null) { + output.writeMessage(1, getStartTime()); + } + if (endTime_ != null) { + output.writeMessage(2, getEndTime()); + } + if (idCase_ == 3) { + output.writeMessage(3, (flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier) id_); + } + if (idCase_ == 4) { + output.writeMessage(4, (flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier) id_); + } + if (idCase_ == 5) { + output.writeMessage(5, (flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier) id_); + } + if (idCase_ == 6) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, id_); + } + for (int i = 0; i < spans_.size(); i++) { + output.writeMessage(7, spans_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (startTime_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getStartTime()); + } + if (endTime_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getEndTime()); + } + if (idCase_ == 3) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, (flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier) id_); + } + if (idCase_ == 4) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, (flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier) id_); + } + if (idCase_ == 5) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, (flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier) id_); + } + if (idCase_ == 6) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, id_); + } + for (int i = 0; i < spans_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(7, spans_.get(i)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof flyteidl.core.Metrics.Span)) { + return super.equals(obj); + } + flyteidl.core.Metrics.Span other = (flyteidl.core.Metrics.Span) obj; + + if (hasStartTime() != other.hasStartTime()) return false; + if (hasStartTime()) { + if (!getStartTime() + .equals(other.getStartTime())) return false; + } + if (hasEndTime() != other.hasEndTime()) return false; + if (hasEndTime()) { + if (!getEndTime() + .equals(other.getEndTime())) return false; + } + if (!getSpansList() + .equals(other.getSpansList())) return false; + if (!getIdCase().equals(other.getIdCase())) return false; + switch (idCase_) { + case 3: + if (!getWorkflowId() + .equals(other.getWorkflowId())) return false; + break; + case 4: + if (!getNodeId() + .equals(other.getNodeId())) return false; + break; + case 5: + if (!getTaskId() + .equals(other.getTaskId())) return false; + break; + case 6: + if (!getOperationId() + .equals(other.getOperationId())) return false; + break; + case 0: + default: + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasStartTime()) { + hash = (37 * hash) + START_TIME_FIELD_NUMBER; + hash = (53 * hash) + getStartTime().hashCode(); + } + if (hasEndTime()) { + hash = (37 * hash) + END_TIME_FIELD_NUMBER; + hash = (53 * hash) + getEndTime().hashCode(); + } + if (getSpansCount() > 0) { + hash = (37 * hash) + SPANS_FIELD_NUMBER; + hash = (53 * hash) + getSpansList().hashCode(); + } + switch (idCase_) { + case 3: + hash = (37 * hash) + WORKFLOW_ID_FIELD_NUMBER; + hash = (53 * hash) + getWorkflowId().hashCode(); + break; + case 4: + hash = (37 * hash) + NODE_ID_FIELD_NUMBER; + hash = (53 * hash) + getNodeId().hashCode(); + break; + case 5: + hash = (37 * hash) + TASK_ID_FIELD_NUMBER; + hash = (53 * hash) + getTaskId().hashCode(); + break; + case 6: + hash = (37 * hash) + OPERATION_ID_FIELD_NUMBER; + hash = (53 * hash) + getOperationId().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.core.Metrics.Span parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.core.Metrics.Span parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.core.Metrics.Span parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.core.Metrics.Span parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.core.Metrics.Span parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.core.Metrics.Span parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.core.Metrics.Span parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.core.Metrics.Span parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.core.Metrics.Span parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.core.Metrics.Span parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static flyteidl.core.Metrics.Span parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.core.Metrics.Span parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(flyteidl.core.Metrics.Span 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; + } + /** + *
+     * Span represents a duration trace of Flyte execution. The id field denotes a Flyte execution entity or an operation
+     * which uniquely identifies the Span. The spans attribute allows this Span to be further broken down into more
+     * precise definitions.
+     * 
+ * + * Protobuf type {@code flyteidl.core.Span} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.core.Span) + flyteidl.core.Metrics.SpanOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.core.Metrics.internal_static_flyteidl_core_Span_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.core.Metrics.internal_static_flyteidl_core_Span_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.core.Metrics.Span.class, flyteidl.core.Metrics.Span.Builder.class); + } + + // Construct using flyteidl.core.Metrics.Span.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getSpansFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (startTimeBuilder_ == null) { + startTime_ = null; + } else { + startTime_ = null; + startTimeBuilder_ = null; + } + if (endTimeBuilder_ == null) { + endTime_ = null; + } else { + endTime_ = null; + endTimeBuilder_ = null; + } + if (spansBuilder_ == null) { + spans_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000040); + } else { + spansBuilder_.clear(); + } + idCase_ = 0; + id_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.core.Metrics.internal_static_flyteidl_core_Span_descriptor; + } + + @java.lang.Override + public flyteidl.core.Metrics.Span getDefaultInstanceForType() { + return flyteidl.core.Metrics.Span.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.core.Metrics.Span build() { + flyteidl.core.Metrics.Span result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.core.Metrics.Span buildPartial() { + flyteidl.core.Metrics.Span result = new flyteidl.core.Metrics.Span(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (startTimeBuilder_ == null) { + result.startTime_ = startTime_; + } else { + result.startTime_ = startTimeBuilder_.build(); + } + if (endTimeBuilder_ == null) { + result.endTime_ = endTime_; + } else { + result.endTime_ = endTimeBuilder_.build(); + } + if (idCase_ == 3) { + if (workflowIdBuilder_ == null) { + result.id_ = id_; + } else { + result.id_ = workflowIdBuilder_.build(); + } + } + if (idCase_ == 4) { + if (nodeIdBuilder_ == null) { + result.id_ = id_; + } else { + result.id_ = nodeIdBuilder_.build(); + } + } + if (idCase_ == 5) { + if (taskIdBuilder_ == null) { + result.id_ = id_; + } else { + result.id_ = taskIdBuilder_.build(); + } + } + if (idCase_ == 6) { + result.id_ = id_; + } + if (spansBuilder_ == null) { + if (((bitField0_ & 0x00000040) != 0)) { + spans_ = java.util.Collections.unmodifiableList(spans_); + bitField0_ = (bitField0_ & ~0x00000040); + } + result.spans_ = spans_; + } else { + result.spans_ = spansBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + result.idCase_ = idCase_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof flyteidl.core.Metrics.Span) { + return mergeFrom((flyteidl.core.Metrics.Span)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.core.Metrics.Span other) { + if (other == flyteidl.core.Metrics.Span.getDefaultInstance()) return this; + if (other.hasStartTime()) { + mergeStartTime(other.getStartTime()); + } + if (other.hasEndTime()) { + mergeEndTime(other.getEndTime()); + } + if (spansBuilder_ == null) { + if (!other.spans_.isEmpty()) { + if (spans_.isEmpty()) { + spans_ = other.spans_; + bitField0_ = (bitField0_ & ~0x00000040); + } else { + ensureSpansIsMutable(); + spans_.addAll(other.spans_); + } + onChanged(); + } + } else { + if (!other.spans_.isEmpty()) { + if (spansBuilder_.isEmpty()) { + spansBuilder_.dispose(); + spansBuilder_ = null; + spans_ = other.spans_; + bitField0_ = (bitField0_ & ~0x00000040); + spansBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getSpansFieldBuilder() : null; + } else { + spansBuilder_.addAllMessages(other.spans_); + } + } + } + switch (other.getIdCase()) { + case WORKFLOW_ID: { + mergeWorkflowId(other.getWorkflowId()); + break; + } + case NODE_ID: { + mergeNodeId(other.getNodeId()); + break; + } + case TASK_ID: { + mergeTaskId(other.getTaskId()); + break; + } + case OPERATION_ID: { + idCase_ = 6; + id_ = other.id_; + onChanged(); + break; + } + case ID_NOT_SET: { + break; + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + flyteidl.core.Metrics.Span parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.core.Metrics.Span) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int idCase_ = 0; + private java.lang.Object id_; + public IdCase + getIdCase() { + return IdCase.forNumber( + idCase_); + } + + public Builder clearId() { + idCase_ = 0; + id_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.protobuf.Timestamp startTime_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> startTimeBuilder_; + /** + *
+       * start_time defines the instance this span began.
+       * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + public boolean hasStartTime() { + return startTimeBuilder_ != null || startTime_ != null; + } + /** + *
+       * start_time defines the instance this span began.
+       * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + public com.google.protobuf.Timestamp getStartTime() { + if (startTimeBuilder_ == null) { + return startTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : startTime_; + } else { + return startTimeBuilder_.getMessage(); + } + } + /** + *
+       * start_time defines the instance this span began.
+       * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + public Builder setStartTime(com.google.protobuf.Timestamp value) { + if (startTimeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + startTime_ = value; + onChanged(); + } else { + startTimeBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * start_time defines the instance this span began.
+       * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + public Builder setStartTime( + com.google.protobuf.Timestamp.Builder builderForValue) { + if (startTimeBuilder_ == null) { + startTime_ = builderForValue.build(); + onChanged(); + } else { + startTimeBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * start_time defines the instance this span began.
+       * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + public Builder mergeStartTime(com.google.protobuf.Timestamp value) { + if (startTimeBuilder_ == null) { + if (startTime_ != null) { + startTime_ = + com.google.protobuf.Timestamp.newBuilder(startTime_).mergeFrom(value).buildPartial(); + } else { + startTime_ = value; + } + onChanged(); + } else { + startTimeBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * start_time defines the instance this span began.
+       * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + public Builder clearStartTime() { + if (startTimeBuilder_ == null) { + startTime_ = null; + onChanged(); + } else { + startTime_ = null; + startTimeBuilder_ = null; + } + + return this; + } + /** + *
+       * start_time defines the instance this span began.
+       * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + public com.google.protobuf.Timestamp.Builder getStartTimeBuilder() { + + onChanged(); + return getStartTimeFieldBuilder().getBuilder(); + } + /** + *
+       * start_time defines the instance this span began.
+       * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + public com.google.protobuf.TimestampOrBuilder getStartTimeOrBuilder() { + if (startTimeBuilder_ != null) { + return startTimeBuilder_.getMessageOrBuilder(); + } else { + return startTime_ == null ? + com.google.protobuf.Timestamp.getDefaultInstance() : startTime_; + } + } + /** + *
+       * start_time defines the instance this span began.
+       * 
+ * + * .google.protobuf.Timestamp start_time = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> + getStartTimeFieldBuilder() { + if (startTimeBuilder_ == null) { + startTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>( + getStartTime(), + getParentForChildren(), + isClean()); + startTime_ = null; + } + return startTimeBuilder_; + } + + private com.google.protobuf.Timestamp endTime_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> endTimeBuilder_; + /** + *
+       * end_time defines the instance this span completed.
+       * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + public boolean hasEndTime() { + return endTimeBuilder_ != null || endTime_ != null; + } + /** + *
+       * end_time defines the instance this span completed.
+       * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + public com.google.protobuf.Timestamp getEndTime() { + if (endTimeBuilder_ == null) { + return endTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : endTime_; + } else { + return endTimeBuilder_.getMessage(); + } + } + /** + *
+       * end_time defines the instance this span completed.
+       * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + public Builder setEndTime(com.google.protobuf.Timestamp value) { + if (endTimeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + endTime_ = value; + onChanged(); + } else { + endTimeBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * end_time defines the instance this span completed.
+       * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + public Builder setEndTime( + com.google.protobuf.Timestamp.Builder builderForValue) { + if (endTimeBuilder_ == null) { + endTime_ = builderForValue.build(); + onChanged(); + } else { + endTimeBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * end_time defines the instance this span completed.
+       * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + public Builder mergeEndTime(com.google.protobuf.Timestamp value) { + if (endTimeBuilder_ == null) { + if (endTime_ != null) { + endTime_ = + com.google.protobuf.Timestamp.newBuilder(endTime_).mergeFrom(value).buildPartial(); + } else { + endTime_ = value; + } + onChanged(); + } else { + endTimeBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * end_time defines the instance this span completed.
+       * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + public Builder clearEndTime() { + if (endTimeBuilder_ == null) { + endTime_ = null; + onChanged(); + } else { + endTime_ = null; + endTimeBuilder_ = null; + } + + return this; + } + /** + *
+       * end_time defines the instance this span completed.
+       * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + public com.google.protobuf.Timestamp.Builder getEndTimeBuilder() { + + onChanged(); + return getEndTimeFieldBuilder().getBuilder(); + } + /** + *
+       * end_time defines the instance this span completed.
+       * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + public com.google.protobuf.TimestampOrBuilder getEndTimeOrBuilder() { + if (endTimeBuilder_ != null) { + return endTimeBuilder_.getMessageOrBuilder(); + } else { + return endTime_ == null ? + com.google.protobuf.Timestamp.getDefaultInstance() : endTime_; + } + } + /** + *
+       * end_time defines the instance this span completed.
+       * 
+ * + * .google.protobuf.Timestamp end_time = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> + getEndTimeFieldBuilder() { + if (endTimeBuilder_ == null) { + endTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>( + getEndTime(), + getParentForChildren(), + isClean()); + endTime_ = null; + } + return endTimeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder> workflowIdBuilder_; + /** + *
+       * workflow_id is the id of the workflow execution this Span represents.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + public boolean hasWorkflowId() { + return idCase_ == 3; + } + /** + *
+       * workflow_id is the id of the workflow execution this Span represents.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier getWorkflowId() { + if (workflowIdBuilder_ == null) { + if (idCase_ == 3) { + return (flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance(); + } else { + if (idCase_ == 3) { + return workflowIdBuilder_.getMessage(); + } + return flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance(); + } + } + /** + *
+       * workflow_id is the id of the workflow execution this Span represents.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + public Builder setWorkflowId(flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier value) { + if (workflowIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + id_ = value; + onChanged(); + } else { + workflowIdBuilder_.setMessage(value); + } + idCase_ = 3; + return this; + } + /** + *
+       * workflow_id is the id of the workflow execution this Span represents.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + public Builder setWorkflowId( + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder builderForValue) { + if (workflowIdBuilder_ == null) { + id_ = builderForValue.build(); + onChanged(); + } else { + workflowIdBuilder_.setMessage(builderForValue.build()); + } + idCase_ = 3; + return this; + } + /** + *
+       * workflow_id is the id of the workflow execution this Span represents.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + public Builder mergeWorkflowId(flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier value) { + if (workflowIdBuilder_ == null) { + if (idCase_ == 3 && + id_ != flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance()) { + id_ = flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.newBuilder((flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier) id_) + .mergeFrom(value).buildPartial(); + } else { + id_ = value; + } + onChanged(); + } else { + if (idCase_ == 3) { + workflowIdBuilder_.mergeFrom(value); + } + workflowIdBuilder_.setMessage(value); + } + idCase_ = 3; + return this; + } + /** + *
+       * workflow_id is the id of the workflow execution this Span represents.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + public Builder clearWorkflowId() { + if (workflowIdBuilder_ == null) { + if (idCase_ == 3) { + idCase_ = 0; + id_ = null; + onChanged(); + } + } else { + if (idCase_ == 3) { + idCase_ = 0; + id_ = null; + } + workflowIdBuilder_.clear(); + } + return this; + } + /** + *
+       * workflow_id is the id of the workflow execution this Span represents.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder getWorkflowIdBuilder() { + return getWorkflowIdFieldBuilder().getBuilder(); + } + /** + *
+       * workflow_id is the id of the workflow execution this Span represents.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder getWorkflowIdOrBuilder() { + if ((idCase_ == 3) && (workflowIdBuilder_ != null)) { + return workflowIdBuilder_.getMessageOrBuilder(); + } else { + if (idCase_ == 3) { + return (flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance(); + } + } + /** + *
+       * workflow_id is the id of the workflow execution this Span represents.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder> + getWorkflowIdFieldBuilder() { + if (workflowIdBuilder_ == null) { + if (!(idCase_ == 3)) { + id_ = flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance(); + } + workflowIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder>( + (flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier) id_, + getParentForChildren(), + isClean()); + id_ = null; + } + idCase_ = 3; + onChanged();; + return workflowIdBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier, flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifierOrBuilder> nodeIdBuilder_; + /** + *
+       * node_id is the id of the node execution this Span represents.
+       * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + public boolean hasNodeId() { + return idCase_ == 4; + } + /** + *
+       * node_id is the id of the node execution this Span represents.
+       * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + public flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier getNodeId() { + if (nodeIdBuilder_ == null) { + if (idCase_ == 4) { + return (flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.getDefaultInstance(); + } else { + if (idCase_ == 4) { + return nodeIdBuilder_.getMessage(); + } + return flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.getDefaultInstance(); + } + } + /** + *
+       * node_id is the id of the node execution this Span represents.
+       * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + public Builder setNodeId(flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier value) { + if (nodeIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + id_ = value; + onChanged(); + } else { + nodeIdBuilder_.setMessage(value); + } + idCase_ = 4; + return this; + } + /** + *
+       * node_id is the id of the node execution this Span represents.
+       * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + public Builder setNodeId( + flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.Builder builderForValue) { + if (nodeIdBuilder_ == null) { + id_ = builderForValue.build(); + onChanged(); + } else { + nodeIdBuilder_.setMessage(builderForValue.build()); + } + idCase_ = 4; + return this; + } + /** + *
+       * node_id is the id of the node execution this Span represents.
+       * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + public Builder mergeNodeId(flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier value) { + if (nodeIdBuilder_ == null) { + if (idCase_ == 4 && + id_ != flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.getDefaultInstance()) { + id_ = flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.newBuilder((flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier) id_) + .mergeFrom(value).buildPartial(); + } else { + id_ = value; + } + onChanged(); + } else { + if (idCase_ == 4) { + nodeIdBuilder_.mergeFrom(value); + } + nodeIdBuilder_.setMessage(value); + } + idCase_ = 4; + return this; + } + /** + *
+       * node_id is the id of the node execution this Span represents.
+       * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + public Builder clearNodeId() { + if (nodeIdBuilder_ == null) { + if (idCase_ == 4) { + idCase_ = 0; + id_ = null; + onChanged(); + } + } else { + if (idCase_ == 4) { + idCase_ = 0; + id_ = null; + } + nodeIdBuilder_.clear(); + } + return this; + } + /** + *
+       * node_id is the id of the node execution this Span represents.
+       * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + public flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.Builder getNodeIdBuilder() { + return getNodeIdFieldBuilder().getBuilder(); + } + /** + *
+       * node_id is the id of the node execution this Span represents.
+       * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + public flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifierOrBuilder getNodeIdOrBuilder() { + if ((idCase_ == 4) && (nodeIdBuilder_ != null)) { + return nodeIdBuilder_.getMessageOrBuilder(); + } else { + if (idCase_ == 4) { + return (flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.getDefaultInstance(); + } + } + /** + *
+       * node_id is the id of the node execution this Span represents.
+       * 
+ * + * .flyteidl.core.NodeExecutionIdentifier node_id = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier, flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifierOrBuilder> + getNodeIdFieldBuilder() { + if (nodeIdBuilder_ == null) { + if (!(idCase_ == 4)) { + id_ = flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.getDefaultInstance(); + } + nodeIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier, flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifierOrBuilder>( + (flyteidl.core.IdentifierOuterClass.NodeExecutionIdentifier) id_, + getParentForChildren(), + isClean()); + id_ = null; + } + idCase_ = 4; + onChanged();; + return nodeIdBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier, flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifierOrBuilder> taskIdBuilder_; + /** + *
+       * task_id is the id of the task execution this Span represents.
+       * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + public boolean hasTaskId() { + return idCase_ == 5; + } + /** + *
+       * task_id is the id of the task execution this Span represents.
+       * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + public flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier getTaskId() { + if (taskIdBuilder_ == null) { + if (idCase_ == 5) { + return (flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.getDefaultInstance(); + } else { + if (idCase_ == 5) { + return taskIdBuilder_.getMessage(); + } + return flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.getDefaultInstance(); + } + } + /** + *
+       * task_id is the id of the task execution this Span represents.
+       * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + public Builder setTaskId(flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier value) { + if (taskIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + id_ = value; + onChanged(); + } else { + taskIdBuilder_.setMessage(value); + } + idCase_ = 5; + return this; + } + /** + *
+       * task_id is the id of the task execution this Span represents.
+       * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + public Builder setTaskId( + flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.Builder builderForValue) { + if (taskIdBuilder_ == null) { + id_ = builderForValue.build(); + onChanged(); + } else { + taskIdBuilder_.setMessage(builderForValue.build()); + } + idCase_ = 5; + return this; + } + /** + *
+       * task_id is the id of the task execution this Span represents.
+       * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + public Builder mergeTaskId(flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier value) { + if (taskIdBuilder_ == null) { + if (idCase_ == 5 && + id_ != flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.getDefaultInstance()) { + id_ = flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.newBuilder((flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier) id_) + .mergeFrom(value).buildPartial(); + } else { + id_ = value; + } + onChanged(); + } else { + if (idCase_ == 5) { + taskIdBuilder_.mergeFrom(value); + } + taskIdBuilder_.setMessage(value); + } + idCase_ = 5; + return this; + } + /** + *
+       * task_id is the id of the task execution this Span represents.
+       * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + public Builder clearTaskId() { + if (taskIdBuilder_ == null) { + if (idCase_ == 5) { + idCase_ = 0; + id_ = null; + onChanged(); + } + } else { + if (idCase_ == 5) { + idCase_ = 0; + id_ = null; + } + taskIdBuilder_.clear(); + } + return this; + } + /** + *
+       * task_id is the id of the task execution this Span represents.
+       * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + public flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.Builder getTaskIdBuilder() { + return getTaskIdFieldBuilder().getBuilder(); + } + /** + *
+       * task_id is the id of the task execution this Span represents.
+       * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + public flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifierOrBuilder getTaskIdOrBuilder() { + if ((idCase_ == 5) && (taskIdBuilder_ != null)) { + return taskIdBuilder_.getMessageOrBuilder(); + } else { + if (idCase_ == 5) { + return (flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier) id_; + } + return flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.getDefaultInstance(); + } + } + /** + *
+       * task_id is the id of the task execution this Span represents.
+       * 
+ * + * .flyteidl.core.TaskExecutionIdentifier task_id = 5; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier, flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifierOrBuilder> + getTaskIdFieldBuilder() { + if (taskIdBuilder_ == null) { + if (!(idCase_ == 5)) { + id_ = flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.getDefaultInstance(); + } + taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier, flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifierOrBuilder>( + (flyteidl.core.IdentifierOuterClass.TaskExecutionIdentifier) id_, + getParentForChildren(), + isClean()); + id_ = null; + } + idCase_ = 5; + onChanged();; + return taskIdBuilder_; + } + + /** + *
+       * operation_id is the id of a unique operation that this Span represents.
+       * 
+ * + * string operation_id = 6; + */ + public java.lang.String getOperationId() { + java.lang.Object ref = ""; + if (idCase_ == 6) { + ref = id_; + } + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (idCase_ == 6) { + id_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * operation_id is the id of a unique operation that this Span represents.
+       * 
+ * + * string operation_id = 6; + */ + public com.google.protobuf.ByteString + getOperationIdBytes() { + java.lang.Object ref = ""; + if (idCase_ == 6) { + ref = id_; + } + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + if (idCase_ == 6) { + id_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * operation_id is the id of a unique operation that this Span represents.
+       * 
+ * + * string operation_id = 6; + */ + public Builder setOperationId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + idCase_ = 6; + id_ = value; + onChanged(); + return this; + } + /** + *
+       * operation_id is the id of a unique operation that this Span represents.
+       * 
+ * + * string operation_id = 6; + */ + public Builder clearOperationId() { + if (idCase_ == 6) { + idCase_ = 0; + id_ = null; + onChanged(); + } + return this; + } + /** + *
+       * operation_id is the id of a unique operation that this Span represents.
+       * 
+ * + * string operation_id = 6; + */ + public Builder setOperationIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + idCase_ = 6; + id_ = value; + onChanged(); + return this; + } + + private java.util.List spans_ = + java.util.Collections.emptyList(); + private void ensureSpansIsMutable() { + if (!((bitField0_ & 0x00000040) != 0)) { + spans_ = new java.util.ArrayList(spans_); + bitField0_ |= 0x00000040; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + flyteidl.core.Metrics.Span, flyteidl.core.Metrics.Span.Builder, flyteidl.core.Metrics.SpanOrBuilder> spansBuilder_; + + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public java.util.List getSpansList() { + if (spansBuilder_ == null) { + return java.util.Collections.unmodifiableList(spans_); + } else { + return spansBuilder_.getMessageList(); + } + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public int getSpansCount() { + if (spansBuilder_ == null) { + return spans_.size(); + } else { + return spansBuilder_.getCount(); + } + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public flyteidl.core.Metrics.Span getSpans(int index) { + if (spansBuilder_ == null) { + return spans_.get(index); + } else { + return spansBuilder_.getMessage(index); + } + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public Builder setSpans( + int index, flyteidl.core.Metrics.Span value) { + if (spansBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSpansIsMutable(); + spans_.set(index, value); + onChanged(); + } else { + spansBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public Builder setSpans( + int index, flyteidl.core.Metrics.Span.Builder builderForValue) { + if (spansBuilder_ == null) { + ensureSpansIsMutable(); + spans_.set(index, builderForValue.build()); + onChanged(); + } else { + spansBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public Builder addSpans(flyteidl.core.Metrics.Span value) { + if (spansBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSpansIsMutable(); + spans_.add(value); + onChanged(); + } else { + spansBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public Builder addSpans( + int index, flyteidl.core.Metrics.Span value) { + if (spansBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSpansIsMutable(); + spans_.add(index, value); + onChanged(); + } else { + spansBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public Builder addSpans( + flyteidl.core.Metrics.Span.Builder builderForValue) { + if (spansBuilder_ == null) { + ensureSpansIsMutable(); + spans_.add(builderForValue.build()); + onChanged(); + } else { + spansBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public Builder addSpans( + int index, flyteidl.core.Metrics.Span.Builder builderForValue) { + if (spansBuilder_ == null) { + ensureSpansIsMutable(); + spans_.add(index, builderForValue.build()); + onChanged(); + } else { + spansBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public Builder addAllSpans( + java.lang.Iterable values) { + if (spansBuilder_ == null) { + ensureSpansIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, spans_); + onChanged(); + } else { + spansBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public Builder clearSpans() { + if (spansBuilder_ == null) { + spans_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000040); + onChanged(); + } else { + spansBuilder_.clear(); + } + return this; + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public Builder removeSpans(int index) { + if (spansBuilder_ == null) { + ensureSpansIsMutable(); + spans_.remove(index); + onChanged(); + } else { + spansBuilder_.remove(index); + } + return this; + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public flyteidl.core.Metrics.Span.Builder getSpansBuilder( + int index) { + return getSpansFieldBuilder().getBuilder(index); + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public flyteidl.core.Metrics.SpanOrBuilder getSpansOrBuilder( + int index) { + if (spansBuilder_ == null) { + return spans_.get(index); } else { + return spansBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public java.util.List + getSpansOrBuilderList() { + if (spansBuilder_ != null) { + return spansBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(spans_); + } + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public flyteidl.core.Metrics.Span.Builder addSpansBuilder() { + return getSpansFieldBuilder().addBuilder( + flyteidl.core.Metrics.Span.getDefaultInstance()); + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public flyteidl.core.Metrics.Span.Builder addSpansBuilder( + int index) { + return getSpansFieldBuilder().addBuilder( + index, flyteidl.core.Metrics.Span.getDefaultInstance()); + } + /** + *
+       * spans defines a collection of Spans that breakdown this execution.
+       * 
+ * + * repeated .flyteidl.core.Span spans = 7; + */ + public java.util.List + getSpansBuilderList() { + return getSpansFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + flyteidl.core.Metrics.Span, flyteidl.core.Metrics.Span.Builder, flyteidl.core.Metrics.SpanOrBuilder> + getSpansFieldBuilder() { + if (spansBuilder_ == null) { + spansBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + flyteidl.core.Metrics.Span, flyteidl.core.Metrics.Span.Builder, flyteidl.core.Metrics.SpanOrBuilder>( + spans_, + ((bitField0_ & 0x00000040) != 0), + getParentForChildren(), + isClean()); + spans_ = null; + } + return spansBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:flyteidl.core.Span) + } + + // @@protoc_insertion_point(class_scope:flyteidl.core.Span) + private static final flyteidl.core.Metrics.Span DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.core.Metrics.Span(); + } + + public static flyteidl.core.Metrics.Span getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Span parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Span(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.core.Metrics.Span getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_core_Span_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_core_Span_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\033flyteidl/core/metrics.proto\022\rflyteidl." + + "core\032\036flyteidl/core/identifier.proto\032\037go" + + "ogle/protobuf/timestamp.proto\"\337\002\n\004Span\022." + + "\n\nstart_time\030\001 \001(\0132\032.google.protobuf.Tim" + + "estamp\022,\n\010end_time\030\002 \001(\0132\032.google.protob" + + "uf.Timestamp\022A\n\013workflow_id\030\003 \001(\0132*.flyt" + + "eidl.core.WorkflowExecutionIdentifierH\000\022" + + "9\n\007node_id\030\004 \001(\0132&.flyteidl.core.NodeExe" + + "cutionIdentifierH\000\0229\n\007task_id\030\005 \001(\0132&.fl" + + "yteidl.core.TaskExecutionIdentifierH\000\022\026\n" + + "\014operation_id\030\006 \001(\tH\000\022\"\n\005spans\030\007 \003(\0132\023.f" + + "lyteidl.core.SpanB\004\n\002idB6Z4github.com/fl" + + "yteorg/flyteidl/gen/pb-go/flyteidl/coreb" + + "\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(), + com.google.protobuf.TimestampProto.getDescriptor(), + }, assigner); + internal_static_flyteidl_core_Span_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_flyteidl_core_Span_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_core_Span_descriptor, + new java.lang.String[] { "StartTime", "EndTime", "WorkflowId", "NodeId", "TaskId", "OperationId", "Spans", "Id", }); + flyteidl.core.IdentifierOuterClass.getDescriptor(); + com.google.protobuf.TimestampProto.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/gen/pb-java/flyteidl/event/Event.java b/gen/pb-java/flyteidl/event/Event.java index f9efe600d..2376082bf 100644 --- a/gen/pb-java/flyteidl/event/Event.java +++ b/gen/pb-java/flyteidl/event/Event.java @@ -2411,6 +2411,40 @@ public interface NodeExecutionEventOrBuilder extends com.google.protobuf.ByteString getDeckUriBytes(); + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example,
+     * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+     * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+     * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + boolean hasReportedAt(); + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example,
+     * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+     * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+     * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + com.google.protobuf.Timestamp getReportedAt(); + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example,
+     * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+     * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+     * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + com.google.protobuf.TimestampOrBuilder getReportedAtOrBuilder(); + public flyteidl.event.Event.NodeExecutionEvent.InputValueCase getInputValueCase(); public flyteidl.event.Event.NodeExecutionEvent.OutputResultCase getOutputResultCase(); @@ -2647,6 +2681,19 @@ private NodeExecutionEvent( inputValueCase_ = 20; break; } + case 170: { + com.google.protobuf.Timestamp.Builder subBuilder = null; + if (reportedAt_ != null) { + subBuilder = reportedAt_.toBuilder(); + } + reportedAt_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(reportedAt_); + reportedAt_ = subBuilder.buildPartial(); + } + + break; + } default: { if (!parseUnknownField( input, unknownFields, extensionRegistry, tag)) { @@ -3458,6 +3505,48 @@ public java.lang.String getDeckUri() { } } + public static final int REPORTED_AT_FIELD_NUMBER = 21; + private com.google.protobuf.Timestamp reportedAt_; + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example,
+     * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+     * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+     * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + public boolean hasReportedAt() { + return reportedAt_ != null; + } + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example,
+     * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+     * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+     * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + public com.google.protobuf.Timestamp getReportedAt() { + return reportedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : reportedAt_; + } + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example,
+     * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+     * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+     * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + public com.google.protobuf.TimestampOrBuilder getReportedAtOrBuilder() { + return getReportedAt(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -3532,6 +3621,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (inputValueCase_ == 20) { output.writeMessage(20, (flyteidl.core.Literals.LiteralMap) inputValue_); } + if (reportedAt_ != null) { + output.writeMessage(21, getReportedAt()); + } unknownFields.writeTo(output); } @@ -3614,6 +3706,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(20, (flyteidl.core.Literals.LiteralMap) inputValue_); } + if (reportedAt_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(21, getReportedAt()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -3666,6 +3762,11 @@ public boolean equals(final java.lang.Object obj) { != other.getIsDynamic()) return false; if (!getDeckUri() .equals(other.getDeckUri())) return false; + if (hasReportedAt() != other.hasReportedAt()) return false; + if (hasReportedAt()) { + if (!getReportedAt() + .equals(other.getReportedAt())) return false; + } if (!getInputValueCase().equals(other.getInputValueCase())) return false; switch (inputValueCase_) { case 5: @@ -3756,6 +3857,10 @@ public int hashCode() { getIsDynamic()); hash = (37 * hash) + DECK_URI_FIELD_NUMBER; hash = (53 * hash) + getDeckUri().hashCode(); + if (hasReportedAt()) { + hash = (37 * hash) + REPORTED_AT_FIELD_NUMBER; + hash = (53 * hash) + getReportedAt().hashCode(); + } switch (inputValueCase_) { case 5: hash = (37 * hash) + INPUT_URI_FIELD_NUMBER; @@ -3971,6 +4076,12 @@ public Builder clear() { deckUri_ = ""; + if (reportedAtBuilder_ == null) { + reportedAt_ = null; + } else { + reportedAt_ = null; + reportedAtBuilder_ = null; + } inputValueCase_ = 0; inputValue_ = null; outputResultCase_ = 0; @@ -4073,6 +4184,11 @@ public flyteidl.event.Event.NodeExecutionEvent buildPartial() { result.isParent_ = isParent_; result.isDynamic_ = isDynamic_; result.deckUri_ = deckUri_; + if (reportedAtBuilder_ == null) { + result.reportedAt_ = reportedAt_; + } else { + result.reportedAt_ = reportedAtBuilder_.build(); + } result.inputValueCase_ = inputValueCase_; result.outputResultCase_ = outputResultCase_; result.targetMetadataCase_ = targetMetadataCase_; @@ -4168,6 +4284,9 @@ public Builder mergeFrom(flyteidl.event.Event.NodeExecutionEvent other) { deckUri_ = other.deckUri_; onChanged(); } + if (other.hasReportedAt()) { + mergeReportedAt(other.getReportedAt()); + } switch (other.getInputValueCase()) { case INPUT_URI: { inputValueCase_ = 5; @@ -6484,6 +6603,186 @@ public Builder setDeckUriBytes( onChanged(); return this; } + + private com.google.protobuf.Timestamp reportedAt_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> reportedAtBuilder_; + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example,
+       * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+       * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+       * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + public boolean hasReportedAt() { + return reportedAtBuilder_ != null || reportedAt_ != null; + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example,
+       * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+       * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+       * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + public com.google.protobuf.Timestamp getReportedAt() { + if (reportedAtBuilder_ == null) { + return reportedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : reportedAt_; + } else { + return reportedAtBuilder_.getMessage(); + } + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example,
+       * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+       * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+       * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + public Builder setReportedAt(com.google.protobuf.Timestamp value) { + if (reportedAtBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + reportedAt_ = value; + onChanged(); + } else { + reportedAtBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example,
+       * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+       * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+       * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + public Builder setReportedAt( + com.google.protobuf.Timestamp.Builder builderForValue) { + if (reportedAtBuilder_ == null) { + reportedAt_ = builderForValue.build(); + onChanged(); + } else { + reportedAtBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example,
+       * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+       * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+       * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + public Builder mergeReportedAt(com.google.protobuf.Timestamp value) { + if (reportedAtBuilder_ == null) { + if (reportedAt_ != null) { + reportedAt_ = + com.google.protobuf.Timestamp.newBuilder(reportedAt_).mergeFrom(value).buildPartial(); + } else { + reportedAt_ = value; + } + onChanged(); + } else { + reportedAtBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example,
+       * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+       * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+       * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + public Builder clearReportedAt() { + if (reportedAtBuilder_ == null) { + reportedAt_ = null; + onChanged(); + } else { + reportedAt_ = null; + reportedAtBuilder_ = null; + } + + return this; + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example,
+       * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+       * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+       * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + public com.google.protobuf.Timestamp.Builder getReportedAtBuilder() { + + onChanged(); + return getReportedAtFieldBuilder().getBuilder(); + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example,
+       * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+       * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+       * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + public com.google.protobuf.TimestampOrBuilder getReportedAtOrBuilder() { + if (reportedAtBuilder_ != null) { + return reportedAtBuilder_.getMessageOrBuilder(); + } else { + return reportedAt_ == null ? + com.google.protobuf.Timestamp.getDefaultInstance() : reportedAt_; + } + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example,
+       * when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when
+       * literal inputs are initially copied. The event however will not be sent until after the copy completes.
+       * Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series.
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 21; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> + getReportedAtFieldBuilder() { + if (reportedAtBuilder_ == null) { + reportedAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>( + getReportedAt(), + getParentForChildren(), + isClean()); + reportedAt_ = null; + } + return reportedAtBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -11218,6 +11517,40 @@ flyteidl.core.Execution.TaskLogOrBuilder getLogsOrBuilder( */ int getEventVersion(); + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+     * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+     * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+     * facilitates a more accurate portrayal of the evaluation time-series. 
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + boolean hasReportedAt(); + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+     * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+     * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+     * facilitates a more accurate portrayal of the evaluation time-series. 
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + com.google.protobuf.Timestamp getReportedAt(); + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+     * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+     * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+     * facilitates a more accurate portrayal of the evaluation time-series. 
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + com.google.protobuf.TimestampOrBuilder getReportedAtOrBuilder(); + public flyteidl.event.Event.TaskExecutionEvent.InputValueCase getInputValueCase(); public flyteidl.event.Event.TaskExecutionEvent.OutputResultCase getOutputResultCase(); @@ -11437,6 +11770,19 @@ private TaskExecutionEvent( inputValueCase_ = 19; break; } + case 162: { + com.google.protobuf.Timestamp.Builder subBuilder = null; + if (reportedAt_ != null) { + subBuilder = reportedAt_.toBuilder(); + } + reportedAt_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(reportedAt_); + reportedAt_ = subBuilder.buildPartial(); + } + + break; + } default: { if (!parseUnknownField( input, unknownFields, extensionRegistry, tag)) { @@ -12199,6 +12545,48 @@ public int getEventVersion() { return eventVersion_; } + public static final int REPORTED_AT_FIELD_NUMBER = 20; + private com.google.protobuf.Timestamp reportedAt_; + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+     * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+     * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+     * facilitates a more accurate portrayal of the evaluation time-series. 
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + public boolean hasReportedAt() { + return reportedAt_ != null; + } + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+     * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+     * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+     * facilitates a more accurate portrayal of the evaluation time-series. 
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + public com.google.protobuf.Timestamp getReportedAt() { + return reportedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : reportedAt_; + } + /** + *
+     * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+     * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+     * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+     * facilitates a more accurate portrayal of the evaluation time-series. 
+     * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + public com.google.protobuf.TimestampOrBuilder getReportedAtOrBuilder() { + return getReportedAt(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -12267,6 +12655,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (inputValueCase_ == 19) { output.writeMessage(19, (flyteidl.core.Literals.LiteralMap) inputValue_); } + if (reportedAt_ != null) { + output.writeMessage(20, getReportedAt()); + } unknownFields.writeTo(output); } @@ -12343,6 +12734,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(19, (flyteidl.core.Literals.LiteralMap) inputValue_); } + if (reportedAt_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(20, getReportedAt()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -12398,6 +12793,11 @@ public boolean equals(final java.lang.Object obj) { } if (getEventVersion() != other.getEventVersion()) return false; + if (hasReportedAt() != other.hasReportedAt()) return false; + if (hasReportedAt()) { + if (!getReportedAt() + .equals(other.getReportedAt())) return false; + } if (!getInputValueCase().equals(other.getInputValueCase())) return false; switch (inputValueCase_) { case 8: @@ -12477,6 +12877,10 @@ public int hashCode() { } hash = (37 * hash) + EVENT_VERSION_FIELD_NUMBER; hash = (53 * hash) + getEventVersion(); + if (hasReportedAt()) { + hash = (37 * hash) + REPORTED_AT_FIELD_NUMBER; + hash = (53 * hash) + getReportedAt().hashCode(); + } switch (inputValueCase_) { case 8: hash = (37 * hash) + INPUT_URI_FIELD_NUMBER; @@ -12693,6 +13097,12 @@ public Builder clear() { } eventVersion_ = 0; + if (reportedAtBuilder_ == null) { + reportedAt_ = null; + } else { + reportedAt_ = null; + reportedAtBuilder_ = null; + } inputValueCase_ = 0; inputValue_ = null; outputResultCase_ = 0; @@ -12793,6 +13203,11 @@ public flyteidl.event.Event.TaskExecutionEvent buildPartial() { result.metadata_ = metadataBuilder_.build(); } result.eventVersion_ = eventVersion_; + if (reportedAtBuilder_ == null) { + result.reportedAt_ = reportedAt_; + } else { + result.reportedAt_ = reportedAtBuilder_.build(); + } result.bitField0_ = to_bitField0_; result.inputValueCase_ = inputValueCase_; result.outputResultCase_ = outputResultCase_; @@ -12909,6 +13324,9 @@ public Builder mergeFrom(flyteidl.event.Event.TaskExecutionEvent other) { if (other.getEventVersion() != 0) { setEventVersion(other.getEventVersion()); } + if (other.hasReportedAt()) { + mergeReportedAt(other.getReportedAt()); + } switch (other.getInputValueCase()) { case INPUT_URI: { inputValueCase_ = 8; @@ -15303,6 +15721,186 @@ public Builder clearEventVersion() { onChanged(); return this; } + + private com.google.protobuf.Timestamp reportedAt_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> reportedAtBuilder_; + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+       * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+       * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+       * facilitates a more accurate portrayal of the evaluation time-series. 
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + public boolean hasReportedAt() { + return reportedAtBuilder_ != null || reportedAt_ != null; + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+       * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+       * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+       * facilitates a more accurate portrayal of the evaluation time-series. 
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + public com.google.protobuf.Timestamp getReportedAt() { + if (reportedAtBuilder_ == null) { + return reportedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : reportedAt_; + } else { + return reportedAtBuilder_.getMessage(); + } + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+       * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+       * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+       * facilitates a more accurate portrayal of the evaluation time-series. 
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + public Builder setReportedAt(com.google.protobuf.Timestamp value) { + if (reportedAtBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + reportedAt_ = value; + onChanged(); + } else { + reportedAtBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+       * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+       * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+       * facilitates a more accurate portrayal of the evaluation time-series. 
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + public Builder setReportedAt( + com.google.protobuf.Timestamp.Builder builderForValue) { + if (reportedAtBuilder_ == null) { + reportedAt_ = builderForValue.build(); + onChanged(); + } else { + reportedAtBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+       * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+       * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+       * facilitates a more accurate portrayal of the evaluation time-series. 
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + public Builder mergeReportedAt(com.google.protobuf.Timestamp value) { + if (reportedAtBuilder_ == null) { + if (reportedAt_ != null) { + reportedAt_ = + com.google.protobuf.Timestamp.newBuilder(reportedAt_).mergeFrom(value).buildPartial(); + } else { + reportedAt_ = value; + } + onChanged(); + } else { + reportedAtBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+       * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+       * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+       * facilitates a more accurate portrayal of the evaluation time-series. 
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + public Builder clearReportedAt() { + if (reportedAtBuilder_ == null) { + reportedAt_ = null; + onChanged(); + } else { + reportedAt_ = null; + reportedAtBuilder_ = null; + } + + return this; + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+       * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+       * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+       * facilitates a more accurate portrayal of the evaluation time-series. 
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + public com.google.protobuf.Timestamp.Builder getReportedAtBuilder() { + + onChanged(); + return getReportedAtFieldBuilder().getBuilder(); + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+       * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+       * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+       * facilitates a more accurate portrayal of the evaluation time-series. 
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + public com.google.protobuf.TimestampOrBuilder getReportedAtOrBuilder() { + if (reportedAtBuilder_ != null) { + return reportedAtBuilder_.getMessageOrBuilder(); + } else { + return reportedAt_ == null ? + com.google.protobuf.Timestamp.getDefaultInstance() : reportedAt_; + } + } + /** + *
+       * This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s
+       * pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes,
+       * but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps
+       * facilitates a more accurate portrayal of the evaluation time-series. 
+       * 
+ * + * .google.protobuf.Timestamp reported_at = 20; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> + getReportedAtFieldBuilder() { + if (reportedAtBuilder_ == null) { + reportedAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>( + getReportedAt(), + getParentForChildren(), + isClean()); + reportedAt_ = null; + } + return reportedAtBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -19689,7 +20287,7 @@ public flyteidl.event.Event.TaskExecutionMetadata getDefaultInstanceForType() { "\noutput_uri\030\005 \001(\tH\000\022.\n\005error\030\006 \001(\0132\035.fly" + "teidl.core.ExecutionErrorH\000\0220\n\013output_da" + "ta\030\007 \001(\0132\031.flyteidl.core.LiteralMapH\000B\017\n" + - "\routput_result\"\336\006\n\022NodeExecutionEvent\0222\n" + + "\routput_result\"\217\007\n\022NodeExecutionEvent\0222\n" + "\002id\030\001 \001(\0132&.flyteidl.core.NodeExecutionI" + "dentifier\022\023\n\013producer_id\030\002 \001(\t\0221\n\005phase\030" + "\003 \001(\0162\".flyteidl.core.NodeExecution.Phas" + @@ -19709,61 +20307,64 @@ public flyteidl.event.Event.TaskExecutionMetadata getDefaultInstanceForType() { "tadata\022\023\n\013retry_group\030\013 \001(\t\022\024\n\014spec_node" + "_id\030\014 \001(\t\022\021\n\tnode_name\030\r \001(\t\022\025\n\revent_ve" + "rsion\030\020 \001(\005\022\021\n\tis_parent\030\021 \001(\010\022\022\n\nis_dyn" + - "amic\030\022 \001(\010\022\020\n\010deck_uri\030\023 \001(\tB\r\n\013input_va" + - "lueB\017\n\routput_resultB\021\n\017target_metadata\"" + - "X\n\024WorkflowNodeMetadata\022@\n\014execution_id\030" + - "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" + - "dentifier\"\245\002\n\020TaskNodeMetadata\0227\n\014cache_" + - "status\030\001 \001(\0162!.flyteidl.core.CatalogCach" + - "eStatus\0223\n\013catalog_key\030\002 \001(\0132\036.flyteidl." + - "core.CatalogMetadata\022D\n\022reservation_stat" + - "us\030\003 \001(\0162(.flyteidl.core.CatalogReservat" + - "ion.Status\022\026\n\016checkpoint_uri\030\004 \001(\t\022E\n\020dy" + - "namic_workflow\030\020 \001(\0132+.flyteidl.event.Dy" + - "namicWorkflowNodeMetadata\"\245\001\n\033DynamicWor" + - "kflowNodeMetadata\022%\n\002id\030\001 \001(\0132\031.flyteidl" + - ".core.Identifier\022A\n\021compiled_workflow\030\002 " + - "\001(\0132&.flyteidl.core.CompiledWorkflowClos" + - "ure\022\034\n\024dynamic_job_spec_uri\030\003 \001(\t\"Q\n\033Par" + - "entTaskExecutionMetadata\0222\n\002id\030\001 \001(\0132&.f" + - "lyteidl.core.TaskExecutionIdentifier\".\n\033" + - "ParentNodeExecutionMetadata\022\017\n\007node_id\030\001" + - " \001(\t\"\326\005\n\022TaskExecutionEvent\022*\n\007task_id\030\001" + - " \001(\0132\031.flyteidl.core.Identifier\022H\n\030paren" + - "t_node_execution_id\030\002 \001(\0132&.flyteidl.cor" + - "e.NodeExecutionIdentifier\022\025\n\rretry_attem" + - "pt\030\003 \001(\r\0221\n\005phase\030\004 \001(\0162\".flyteidl.core." + - "TaskExecution.Phase\022\023\n\013producer_id\030\005 \001(\t" + - "\022$\n\004logs\030\006 \003(\0132\026.flyteidl.core.TaskLog\022/" + - "\n\013occurred_at\030\007 \001(\0132\032.google.protobuf.Ti" + - "mestamp\022\023\n\tinput_uri\030\010 \001(\tH\000\022/\n\ninput_da" + - "ta\030\023 \001(\0132\031.flyteidl.core.LiteralMapH\000\022\024\n" + - "\noutput_uri\030\t \001(\tH\001\022.\n\005error\030\n \001(\0132\035.fly" + - "teidl.core.ExecutionErrorH\001\0220\n\013output_da" + - "ta\030\021 \001(\0132\031.flyteidl.core.LiteralMapH\001\022,\n" + - "\013custom_info\030\013 \001(\0132\027.google.protobuf.Str" + - "uct\022\025\n\rphase_version\030\014 \001(\r\022\016\n\006reason\030\r \001" + - "(\t\022\021\n\ttask_type\030\016 \001(\t\0227\n\010metadata\030\020 \001(\0132" + - "%.flyteidl.event.TaskExecutionMetadata\022\025" + - "\n\revent_version\030\022 \001(\005B\r\n\013input_valueB\017\n\r" + - "output_result\"\343\001\n\024ExternalResourceInfo\022\023" + - "\n\013external_id\030\001 \001(\t\022\r\n\005index\030\002 \001(\r\022\025\n\rre" + + "amic\030\022 \001(\010\022\020\n\010deck_uri\030\023 \001(\t\022/\n\013reported" + + "_at\030\025 \001(\0132\032.google.protobuf.TimestampB\r\n" + + "\013input_valueB\017\n\routput_resultB\021\n\017target_" + + "metadata\"X\n\024WorkflowNodeMetadata\022@\n\014exec" + + "ution_id\030\001 \001(\0132*.flyteidl.core.WorkflowE" + + "xecutionIdentifier\"\245\002\n\020TaskNodeMetadata\022" + + "7\n\014cache_status\030\001 \001(\0162!.flyteidl.core.Ca" + + "talogCacheStatus\0223\n\013catalog_key\030\002 \001(\0132\036." + + "flyteidl.core.CatalogMetadata\022D\n\022reserva" + + "tion_status\030\003 \001(\0162(.flyteidl.core.Catalo" + + "gReservation.Status\022\026\n\016checkpoint_uri\030\004 " + + "\001(\t\022E\n\020dynamic_workflow\030\020 \001(\0132+.flyteidl" + + ".event.DynamicWorkflowNodeMetadata\"\245\001\n\033D" + + "ynamicWorkflowNodeMetadata\022%\n\002id\030\001 \001(\0132\031" + + ".flyteidl.core.Identifier\022A\n\021compiled_wo" + + "rkflow\030\002 \001(\0132&.flyteidl.core.CompiledWor" + + "kflowClosure\022\034\n\024dynamic_job_spec_uri\030\003 \001" + + "(\t\"Q\n\033ParentTaskExecutionMetadata\0222\n\002id\030" + + "\001 \001(\0132&.flyteidl.core.TaskExecutionIdent" + + "ifier\".\n\033ParentNodeExecutionMetadata\022\017\n\007" + + "node_id\030\001 \001(\t\"\207\006\n\022TaskExecutionEvent\022*\n\007" + + "task_id\030\001 \001(\0132\031.flyteidl.core.Identifier" + + "\022H\n\030parent_node_execution_id\030\002 \001(\0132&.fly" + + "teidl.core.NodeExecutionIdentifier\022\025\n\rre" + "try_attempt\030\003 \001(\r\0221\n\005phase\030\004 \001(\0162\".flyte" + - "idl.core.TaskExecution.Phase\0227\n\014cache_st" + - "atus\030\005 \001(\0162!.flyteidl.core.CatalogCacheS" + - "tatus\022$\n\004logs\030\006 \003(\0132\026.flyteidl.core.Task" + - "Log\"?\n\020ResourcePoolInfo\022\030\n\020allocation_to" + - "ken\030\001 \001(\t\022\021\n\tnamespace\030\002 \001(\t\"\310\002\n\025TaskExe" + - "cutionMetadata\022\026\n\016generated_name\030\001 \001(\t\022@" + - "\n\022external_resources\030\002 \003(\0132$.flyteidl.ev" + - "ent.ExternalResourceInfo\022<\n\022resource_poo" + - "l_info\030\003 \003(\0132 .flyteidl.event.ResourcePo" + - "olInfo\022\031\n\021plugin_identifier\030\004 \001(\t\022K\n\016ins" + - "tance_class\030\020 \001(\01623.flyteidl.event.TaskE" + - "xecutionMetadata.InstanceClass\"/\n\rInstan" + - "ceClass\022\013\n\007DEFAULT\020\000\022\021\n\rINTERRUPTIBLE\020\001B" + - "7Z5github.com/flyteorg/flyteidl/gen/pb-g" + - "o/flyteidl/eventb\006proto3" + "idl.core.TaskExecution.Phase\022\023\n\013producer" + + "_id\030\005 \001(\t\022$\n\004logs\030\006 \003(\0132\026.flyteidl.core." + + "TaskLog\022/\n\013occurred_at\030\007 \001(\0132\032.google.pr" + + "otobuf.Timestamp\022\023\n\tinput_uri\030\010 \001(\tH\000\022/\n" + + "\ninput_data\030\023 \001(\0132\031.flyteidl.core.Litera" + + "lMapH\000\022\024\n\noutput_uri\030\t \001(\tH\001\022.\n\005error\030\n " + + "\001(\0132\035.flyteidl.core.ExecutionErrorH\001\0220\n\013" + + "output_data\030\021 \001(\0132\031.flyteidl.core.Litera" + + "lMapH\001\022,\n\013custom_info\030\013 \001(\0132\027.google.pro" + + "tobuf.Struct\022\025\n\rphase_version\030\014 \001(\r\022\016\n\006r" + + "eason\030\r \001(\t\022\021\n\ttask_type\030\016 \001(\t\0227\n\010metada" + + "ta\030\020 \001(\0132%.flyteidl.event.TaskExecutionM" + + "etadata\022\025\n\revent_version\030\022 \001(\005\022/\n\013report" + + "ed_at\030\024 \001(\0132\032.google.protobuf.TimestampB" + + "\r\n\013input_valueB\017\n\routput_result\"\343\001\n\024Exte" + + "rnalResourceInfo\022\023\n\013external_id\030\001 \001(\t\022\r\n" + + "\005index\030\002 \001(\r\022\025\n\rretry_attempt\030\003 \001(\r\0221\n\005p" + + "hase\030\004 \001(\0162\".flyteidl.core.TaskExecution" + + ".Phase\0227\n\014cache_status\030\005 \001(\0162!.flyteidl." + + "core.CatalogCacheStatus\022$\n\004logs\030\006 \003(\0132\026." + + "flyteidl.core.TaskLog\"?\n\020ResourcePoolInf" + + "o\022\030\n\020allocation_token\030\001 \001(\t\022\021\n\tnamespace" + + "\030\002 \001(\t\"\310\002\n\025TaskExecutionMetadata\022\026\n\016gene" + + "rated_name\030\001 \001(\t\022@\n\022external_resources\030\002" + + " \003(\0132$.flyteidl.event.ExternalResourceIn" + + "fo\022<\n\022resource_pool_info\030\003 \003(\0132 .flyteid" + + "l.event.ResourcePoolInfo\022\031\n\021plugin_ident" + + "ifier\030\004 \001(\t\022K\n\016instance_class\030\020 \001(\01623.fl" + + "yteidl.event.TaskExecutionMetadata.Insta" + + "nceClass\"/\n\rInstanceClass\022\013\n\007DEFAULT\020\000\022\021" + + "\n\rINTERRUPTIBLE\020\001B7Z5github.com/flyteorg" + + "/flyteidl/gen/pb-go/flyteidl/eventb\006prot" + + "o3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -19795,7 +20396,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_event_NodeExecutionEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_event_NodeExecutionEvent_descriptor, - new java.lang.String[] { "Id", "ProducerId", "Phase", "OccurredAt", "InputUri", "InputData", "OutputUri", "Error", "OutputData", "WorkflowNodeMetadata", "TaskNodeMetadata", "ParentTaskMetadata", "ParentNodeMetadata", "RetryGroup", "SpecNodeId", "NodeName", "EventVersion", "IsParent", "IsDynamic", "DeckUri", "InputValue", "OutputResult", "TargetMetadata", }); + new java.lang.String[] { "Id", "ProducerId", "Phase", "OccurredAt", "InputUri", "InputData", "OutputUri", "Error", "OutputData", "WorkflowNodeMetadata", "TaskNodeMetadata", "ParentTaskMetadata", "ParentNodeMetadata", "RetryGroup", "SpecNodeId", "NodeName", "EventVersion", "IsParent", "IsDynamic", "DeckUri", "ReportedAt", "InputValue", "OutputResult", "TargetMetadata", }); internal_static_flyteidl_event_WorkflowNodeMetadata_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_flyteidl_event_WorkflowNodeMetadata_fieldAccessorTable = new @@ -19831,7 +20432,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_event_TaskExecutionEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_event_TaskExecutionEvent_descriptor, - new java.lang.String[] { "TaskId", "ParentNodeExecutionId", "RetryAttempt", "Phase", "ProducerId", "Logs", "OccurredAt", "InputUri", "InputData", "OutputUri", "Error", "OutputData", "CustomInfo", "PhaseVersion", "Reason", "TaskType", "Metadata", "EventVersion", "InputValue", "OutputResult", }); + new java.lang.String[] { "TaskId", "ParentNodeExecutionId", "RetryAttempt", "Phase", "ProducerId", "Logs", "OccurredAt", "InputUri", "InputData", "OutputUri", "Error", "OutputData", "CustomInfo", "PhaseVersion", "Reason", "TaskType", "Metadata", "EventVersion", "ReportedAt", "InputValue", "OutputResult", }); internal_static_flyteidl_event_ExternalResourceInfo_descriptor = getDescriptor().getMessageTypes().get(8); internal_static_flyteidl_event_ExternalResourceInfo_fieldAccessorTable = new diff --git a/gen/pb-java/flyteidl/service/Admin.java b/gen/pb-java/flyteidl/service/Admin.java index 29c343de4..c81822aed 100644 --- a/gen/pb-java/flyteidl/service/Admin.java +++ b/gen/pb-java/flyteidl/service/Admin.java @@ -38,254 +38,260 @@ public static void registerAllExtensions( "admin/task_execution.proto\032\034flyteidl/adm" + "in/version.proto\032\033flyteidl/admin/common." + "proto\032\'flyteidl/admin/description_entity" + - ".proto\032\036flyteidl/core/identifier.proto2\274" + - "L\n\014AdminService\022m\n\nCreateTask\022!.flyteidl" + - ".admin.TaskCreateRequest\032\".flyteidl.admi" + - "n.TaskCreateResponse\"\030\202\323\344\223\002\022\"\r/api/v1/ta" + - "sks:\001*\022\210\001\n\007GetTask\022 .flyteidl.admin.Obje" + - "ctGetRequest\032\024.flyteidl.admin.Task\"E\202\323\344\223" + - "\002?\022=/api/v1/tasks/{id.project}/{id.domai" + - "n}/{id.name}/{id.version}\022\227\001\n\013ListTaskId" + - "s\0220.flyteidl.admin.NamedEntityIdentifier" + - "ListRequest\032).flyteidl.admin.NamedEntity" + - "IdentifierList\"+\202\323\344\223\002%\022#/api/v1/task_ids" + - "/{project}/{domain}\022\256\001\n\tListTasks\022#.flyt" + - "eidl.admin.ResourceListRequest\032\030.flyteid" + - "l.admin.TaskList\"b\202\323\344\223\002\\\0220/api/v1/tasks/" + - "{id.project}/{id.domain}/{id.name}Z(\022&/a" + - "pi/v1/tasks/{id.project}/{id.domain}\022}\n\016" + - "CreateWorkflow\022%.flyteidl.admin.Workflow" + - "CreateRequest\032&.flyteidl.admin.WorkflowC" + - "reateResponse\"\034\202\323\344\223\002\026\"\021/api/v1/workflows" + - ":\001*\022\224\001\n\013GetWorkflow\022 .flyteidl.admin.Obj" + - "ectGetRequest\032\030.flyteidl.admin.Workflow\"" + - "I\202\323\344\223\002C\022A/api/v1/workflows/{id.project}/" + - "{id.domain}/{id.name}/{id.version}\022\237\001\n\017L" + - "istWorkflowIds\0220.flyteidl.admin.NamedEnt" + - "ityIdentifierListRequest\032).flyteidl.admi" + - "n.NamedEntityIdentifierList\"/\202\323\344\223\002)\022\'/ap" + - "i/v1/workflow_ids/{project}/{domain}\022\276\001\n" + - "\rListWorkflows\022#.flyteidl.admin.Resource" + - "ListRequest\032\034.flyteidl.admin.WorkflowLis" + - "t\"j\202\323\344\223\002d\0224/api/v1/workflows/{id.project" + - "}/{id.domain}/{id.name}Z,\022*/api/v1/workf" + - "lows/{id.project}/{id.domain}\022\206\001\n\020Create" + - "LaunchPlan\022\'.flyteidl.admin.LaunchPlanCr" + - "eateRequest\032(.flyteidl.admin.LaunchPlanC" + - "reateResponse\"\037\202\323\344\223\002\031\"\024/api/v1/launch_pl" + - "ans:\001*\022\233\001\n\rGetLaunchPlan\022 .flyteidl.admi" + - "n.ObjectGetRequest\032\032.flyteidl.admin.Laun" + - "chPlan\"L\202\323\344\223\002F\022D/api/v1/launch_plans/{id" + - ".project}/{id.domain}/{id.name}/{id.vers" + - "ion}\022\242\001\n\023GetActiveLaunchPlan\022\'.flyteidl." + - "admin.ActiveLaunchPlanRequest\032\032.flyteidl" + - ".admin.LaunchPlan\"F\202\323\344\223\002@\022>/api/v1/activ" + - "e_launch_plans/{id.project}/{id.domain}/" + - "{id.name}\022\234\001\n\025ListActiveLaunchPlans\022+.fl" + - "yteidl.admin.ActiveLaunchPlanListRequest" + - "\032\036.flyteidl.admin.LaunchPlanList\"6\202\323\344\223\0020" + - "\022./api/v1/active_launch_plans/{project}/" + - "{domain}\022\244\001\n\021ListLaunchPlanIds\0220.flyteid" + + ".proto\032\036flyteidl/core/identifier.proto\032\033" + + "flyteidl/core/metrics.proto2\204N\n\014AdminSer" + + "vice\022m\n\nCreateTask\022!.flyteidl.admin.Task" + + "CreateRequest\032\".flyteidl.admin.TaskCreat" + + "eResponse\"\030\202\323\344\223\002\022\"\r/api/v1/tasks:\001*\022\210\001\n\007" + + "GetTask\022 .flyteidl.admin.ObjectGetReques" + + "t\032\024.flyteidl.admin.Task\"E\202\323\344\223\002?\022=/api/v1" + + "/tasks/{id.project}/{id.domain}/{id.name" + + "}/{id.version}\022\227\001\n\013ListTaskIds\0220.flyteid" + "l.admin.NamedEntityIdentifierListRequest" + "\032).flyteidl.admin.NamedEntityIdentifierL" + - "ist\"2\202\323\344\223\002,\022*/api/v1/launch_plan_ids/{pr" + - "oject}/{domain}\022\310\001\n\017ListLaunchPlans\022#.fl" + - "yteidl.admin.ResourceListRequest\032\036.flyte" + - "idl.admin.LaunchPlanList\"p\202\323\344\223\002j\0227/api/v" + - "1/launch_plans/{id.project}/{id.domain}/" + - "{id.name}Z/\022-/api/v1/launch_plans/{id.pr" + - "oject}/{id.domain}\022\266\001\n\020UpdateLaunchPlan\022" + - "\'.flyteidl.admin.LaunchPlanUpdateRequest" + - "\032(.flyteidl.admin.LaunchPlanUpdateRespon" + - "se\"O\202\323\344\223\002I\032D/api/v1/launch_plans/{id.pro" + - "ject}/{id.domain}/{id.name}/{id.version}" + - ":\001*\022\201\001\n\017CreateExecution\022&.flyteidl.admin" + - ".ExecutionCreateRequest\032\'.flyteidl.admin" + - ".ExecutionCreateResponse\"\035\202\323\344\223\002\027\"\022/api/v" + - "1/executions:\001*\022\216\001\n\021RelaunchExecution\022(." + - "flyteidl.admin.ExecutionRelaunchRequest\032" + - "\'.flyteidl.admin.ExecutionCreateResponse" + - "\"&\202\323\344\223\002 \"\033/api/v1/executions/relaunch:\001*" + - "\022\213\001\n\020RecoverExecution\022\'.flyteidl.admin.E" + - "xecutionRecoverRequest\032\'.flyteidl.admin." + - "ExecutionCreateResponse\"%\202\323\344\223\002\037\"\032/api/v1" + - "/executions/recover:\001*\022\225\001\n\014GetExecution\022" + - "+.flyteidl.admin.WorkflowExecutionGetReq" + - "uest\032\031.flyteidl.admin.Execution\"=\202\323\344\223\0027\022" + - "5/api/v1/executions/{id.project}/{id.dom" + - "ain}/{id.name}\022\244\001\n\017UpdateExecution\022&.fly" + - "teidl.admin.ExecutionUpdateRequest\032\'.fly" + - "teidl.admin.ExecutionUpdateResponse\"@\202\323\344" + - "\223\002:\0325/api/v1/executions/{id.project}/{id" + - ".domain}/{id.name}:\001*\022\271\001\n\020GetExecutionDa" + - "ta\022/.flyteidl.admin.WorkflowExecutionGet" + - "DataRequest\0320.flyteidl.admin.WorkflowExe" + - "cutionGetDataResponse\"B\202\323\344\223\002<\022:/api/v1/d" + - "ata/executions/{id.project}/{id.domain}/" + - "{id.name}\022\211\001\n\016ListExecutions\022#.flyteidl." + - "admin.ResourceListRequest\032\035.flyteidl.adm" + - "in.ExecutionList\"3\202\323\344\223\002-\022+/api/v1/execut" + - "ions/{id.project}/{id.domain}\022\255\001\n\022Termin" + - "ateExecution\022).flyteidl.admin.ExecutionT" + - "erminateRequest\032*.flyteidl.admin.Executi" + - "onTerminateResponse\"@\202\323\344\223\002:*5/api/v1/exe" + - "cutions/{id.project}/{id.domain}/{id.nam" + - "e}:\001*\022\322\001\n\020GetNodeExecution\022\'.flyteidl.ad" + - "min.NodeExecutionGetRequest\032\035.flyteidl.a" + - "dmin.NodeExecution\"v\202\323\344\223\002p\022n/api/v1/node" + - "_executions/{id.execution_id.project}/{i" + - "d.execution_id.domain}/{id.execution_id." + - "name}/{id.node_id}\022\336\001\n\022ListNodeExecution" + - "s\022(.flyteidl.admin.NodeExecutionListRequ" + - "est\032!.flyteidl.admin.NodeExecutionList\"{" + - "\202\323\344\223\002u\022s/api/v1/node_executions/{workflo" + - "w_execution_id.project}/{workflow_execut" + - "ion_id.domain}/{workflow_execution_id.na" + - "me}\022\245\004\n\031ListNodeExecutionsForTask\022/.flyt" + - "eidl.admin.NodeExecutionForTaskListReque" + - "st\032!.flyteidl.admin.NodeExecutionList\"\263\003" + - "\202\323\344\223\002\254\003\022\251\003/api/v1/children/task_executio" + - "ns/{task_execution_id.node_execution_id." + - "execution_id.project}/{task_execution_id" + - ".node_execution_id.execution_id.domain}/" + - "{task_execution_id.node_execution_id.exe" + - "cution_id.name}/{task_execution_id.node_" + - "execution_id.node_id}/{task_execution_id" + - ".task_id.project}/{task_execution_id.tas" + - "k_id.domain}/{task_execution_id.task_id." + - "name}/{task_execution_id.task_id.version" + - "}/{task_execution_id.retry_attempt}\022\356\001\n\024" + - "GetNodeExecutionData\022+.flyteidl.admin.No" + - "deExecutionGetDataRequest\032,.flyteidl.adm" + - "in.NodeExecutionGetDataResponse\"{\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}\022\177\n\017" + - "RegisterProject\022&.flyteidl.admin.Project" + - "RegisterRequest\032\'.flyteidl.admin.Project" + - "RegisterResponse\"\033\202\323\344\223\002\025\"\020/api/v1/projec" + - "ts:\001*\022q\n\rUpdateProject\022\027.flyteidl.admin." + - "Project\032%.flyteidl.admin.ProjectUpdateRe" + - "sponse\" \202\323\344\223\002\032\032\025/api/v1/projects/{id}:\001*" + - "\022f\n\014ListProjects\022\".flyteidl.admin.Projec" + - "tListRequest\032\030.flyteidl.admin.Projects\"\030" + - "\202\323\344\223\002\022\022\020/api/v1/projects\022\231\001\n\023CreateWorkf" + - "lowEvent\022-.flyteidl.admin.WorkflowExecut" + - "ionEventRequest\032..flyteidl.admin.Workflo" + - "wExecutionEventResponse\"#\202\323\344\223\002\035\"\030/api/v1" + - "/events/workflows:\001*\022\211\001\n\017CreateNodeEvent" + - "\022).flyteidl.admin.NodeExecutionEventRequ" + - "est\032*.flyteidl.admin.NodeExecutionEventR" + - "esponse\"\037\202\323\344\223\002\031\"\024/api/v1/events/nodes:\001*" + - "\022\211\001\n\017CreateTaskEvent\022).flyteidl.admin.Ta" + - "skExecutionEventRequest\032*.flyteidl.admin" + - ".TaskExecutionEventResponse\"\037\202\323\344\223\002\031\"\024/ap" + - "i/v1/events/tasks:\001*\022\200\003\n\020GetTaskExecutio" + - "n\022\'.flyteidl.admin.TaskExecutionGetReque" + - "st\032\035.flyteidl.admin.TaskExecution\"\243\002\202\323\344\223" + - "\002\234\002\022\231\002/api/v1/task_executions/{id.node_e" + - "xecution_id.execution_id.project}/{id.no" + - "de_execution_id.execution_id.domain}/{id" + - ".node_execution_id.execution_id.name}/{i" + - "d.node_execution_id.node_id}/{id.task_id" + - ".project}/{id.task_id.domain}/{id.task_i" + - "d.name}/{id.task_id.version}/{id.retry_a" + - "ttempt}\022\230\002\n\022ListTaskExecutions\022(.flyteid" + - "l.admin.TaskExecutionListRequest\032!.flyte" + - "idl.admin.TaskExecutionList\"\264\001\202\323\344\223\002\255\001\022\252\001" + - "/api/v1/task_executions/{node_execution_" + - "id.execution_id.project}/{node_execution" + - "_id.execution_id.domain}/{node_execution" + - "_id.execution_id.name}/{node_execution_i" + - "d.node_id}\022\234\003\n\024GetTaskExecutionData\022+.fl" + - "yteidl.admin.TaskExecutionGetDataRequest" + - "\032,.flyteidl.admin.TaskExecutionGetDataRe" + - "sponse\"\250\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/task_exe" + - "cutions/{id.node_execution_id.execution_" + - "id.project}/{id.node_execution_id.execut" + - "ion_id.domain}/{id.node_execution_id.exe" + - "cution_id.name}/{id.node_execution_id.no" + - "de_id}/{id.task_id.project}/{id.task_id." + - "domain}/{id.task_id.name}/{id.task_id.ve" + - "rsion}/{id.retry_attempt}\022\343\001\n\035UpdateProj" + - "ectDomainAttributes\0224.flyteidl.admin.Pro" + - "jectDomainAttributesUpdateRequest\0325.flyt" + - "eidl.admin.ProjectDomainAttributesUpdate" + - "Response\"U\202\323\344\223\002O\032J/api/v1/project_domain" + - "_attributes/{attributes.project}/{attrib" + - "utes.domain}:\001*\022\301\001\n\032GetProjectDomainAttr" + - "ibutes\0221.flyteidl.admin.ProjectDomainAtt" + - "ributesGetRequest\0322.flyteidl.admin.Proje" + - "ctDomainAttributesGetResponse\"<\202\323\344\223\0026\0224/" + - "api/v1/project_domain_attributes/{projec" + - "t}/{domain}\022\315\001\n\035DeleteProjectDomainAttri" + - "butes\0224.flyteidl.admin.ProjectDomainAttr" + - "ibutesDeleteRequest\0325.flyteidl.admin.Pro" + - "jectDomainAttributesDeleteResponse\"?\202\323\344\223" + - "\0029*4/api/v1/project_domain_attributes/{p" + - "roject}/{domain}:\001*\022\266\001\n\027UpdateProjectAtt" + - "ributes\022..flyteidl.admin.ProjectAttribut" + - "esUpdateRequest\032/.flyteidl.admin.Project" + - "AttributesUpdateResponse\":\202\323\344\223\0024\032//api/v" + - "1/project_attributes/{attributes.project" + - "}:\001*\022\237\001\n\024GetProjectAttributes\022+.flyteidl" + - ".admin.ProjectAttributesGetRequest\032,.fly" + - "teidl.admin.ProjectAttributesGetResponse" + - "\",\202\323\344\223\002&\022$/api/v1/project_attributes/{pr" + - "oject}\022\253\001\n\027DeleteProjectAttributes\022..fly" + - "teidl.admin.ProjectAttributesDeleteReque" + - "st\032/.flyteidl.admin.ProjectAttributesDel" + - "eteResponse\"/\202\323\344\223\002)*$/api/v1/project_att" + - "ributes/{project}:\001*\022\344\001\n\030UpdateWorkflowA" + - "ttributes\022/.flyteidl.admin.WorkflowAttri" + - "butesUpdateRequest\0320.flyteidl.admin.Work" + - "flowAttributesUpdateResponse\"e\202\323\344\223\002_\032Z/a" + - "pi/v1/workflow_attributes/{attributes.pr" + - "oject}/{attributes.domain}/{attributes.w" + - "orkflow}:\001*\022\267\001\n\025GetWorkflowAttributes\022,." + - "flyteidl.admin.WorkflowAttributesGetRequ" + - "est\032-.flyteidl.admin.WorkflowAttributesG" + - "etResponse\"A\202\323\344\223\002;\0229/api/v1/workflow_att" + - "ributes/{project}/{domain}/{workflow}\022\303\001" + - "\n\030DeleteWorkflowAttributes\022/.flyteidl.ad" + - "min.WorkflowAttributesDeleteRequest\0320.fl" + - "yteidl.admin.WorkflowAttributesDeleteRes" + - "ponse\"D\202\323\344\223\002>*9/api/v1/workflow_attribut" + - "es/{project}/{domain}/{workflow}:\001*\022\240\001\n\027" + - "ListMatchableAttributes\022..flyteidl.admin" + - ".ListMatchableAttributesRequest\032/.flytei" + - "dl.admin.ListMatchableAttributesResponse" + - "\"$\202\323\344\223\002\036\022\034/api/v1/matchable_attributes\022\237" + - "\001\n\021ListNamedEntities\022&.flyteidl.admin.Na" + - "medEntityListRequest\032\037.flyteidl.admin.Na" + - "medEntityList\"A\202\323\344\223\002;\0229/api/v1/named_ent" + - "ities/{resource_type}/{project}/{domain}" + - "\022\247\001\n\016GetNamedEntity\022%.flyteidl.admin.Nam" + - "edEntityGetRequest\032\033.flyteidl.admin.Name" + - "dEntity\"Q\202\323\344\223\002K\022I/api/v1/named_entities/" + - "{resource_type}/{id.project}/{id.domain}" + - "/{id.name}\022\276\001\n\021UpdateNamedEntity\022(.flyte" + - "idl.admin.NamedEntityUpdateRequest\032).fly" + - "teidl.admin.NamedEntityUpdateResponse\"T\202" + - "\323\344\223\002N\032I/api/v1/named_entities/{resource_" + - "type}/{id.project}/{id.domain}/{id.name}" + - ":\001*\022l\n\nGetVersion\022!.flyteidl.admin.GetVe" + - "rsionRequest\032\".flyteidl.admin.GetVersion" + - "Response\"\027\202\323\344\223\002\021\022\017/api/v1/version\022\304\001\n\024Ge" + - "tDescriptionEntity\022 .flyteidl.admin.Obje" + - "ctGetRequest\032!.flyteidl.admin.Descriptio" + - "nEntity\"g\202\323\344\223\002a\022_/api/v1/description_ent" + - "ities/{id.resource_type}/{id.project}/{i" + - "d.domain}/{id.name}/{id.version}\022\222\002\n\027Lis" + - "tDescriptionEntities\022,.flyteidl.admin.De" + - "scriptionEntityListRequest\032%.flyteidl.ad" + - "min.DescriptionEntityList\"\241\001\202\323\344\223\002\232\001\022O/ap" + - "i/v1/description_entities/{resource_type" + - "}/{id.project}/{id.domain}/{id.name}ZG\022E" + - "/api/v1/description_entities/{resource_t" + - "ype}/{id.project}/{id.domain}B9Z7github." + - "com/flyteorg/flyteidl/gen/pb-go/flyteidl" + - "/serviceb\006proto3" + "ist\"+\202\323\344\223\002%\022#/api/v1/task_ids/{project}/" + + "{domain}\022\256\001\n\tListTasks\022#.flyteidl.admin." + + "ResourceListRequest\032\030.flyteidl.admin.Tas" + + "kList\"b\202\323\344\223\002\\\0220/api/v1/tasks/{id.project" + + "}/{id.domain}/{id.name}Z(\022&/api/v1/tasks" + + "/{id.project}/{id.domain}\022}\n\016CreateWorkf" + + "low\022%.flyteidl.admin.WorkflowCreateReque" + + "st\032&.flyteidl.admin.WorkflowCreateRespon" + + "se\"\034\202\323\344\223\002\026\"\021/api/v1/workflows:\001*\022\224\001\n\013Get" + + "Workflow\022 .flyteidl.admin.ObjectGetReque" + + "st\032\030.flyteidl.admin.Workflow\"I\202\323\344\223\002C\022A/a" + + "pi/v1/workflows/{id.project}/{id.domain}" + + "/{id.name}/{id.version}\022\237\001\n\017ListWorkflow" + + "Ids\0220.flyteidl.admin.NamedEntityIdentifi" + + "erListRequest\032).flyteidl.admin.NamedEnti" + + "tyIdentifierList\"/\202\323\344\223\002)\022\'/api/v1/workfl" + + "ow_ids/{project}/{domain}\022\276\001\n\rListWorkfl" + + "ows\022#.flyteidl.admin.ResourceListRequest" + + "\032\034.flyteidl.admin.WorkflowList\"j\202\323\344\223\002d\0224" + + "/api/v1/workflows/{id.project}/{id.domai" + + "n}/{id.name}Z,\022*/api/v1/workflows/{id.pr" + + "oject}/{id.domain}\022\206\001\n\020CreateLaunchPlan\022" + + "\'.flyteidl.admin.LaunchPlanCreateRequest" + + "\032(.flyteidl.admin.LaunchPlanCreateRespon" + + "se\"\037\202\323\344\223\002\031\"\024/api/v1/launch_plans:\001*\022\233\001\n\r" + + "GetLaunchPlan\022 .flyteidl.admin.ObjectGet" + + "Request\032\032.flyteidl.admin.LaunchPlan\"L\202\323\344" + + "\223\002F\022D/api/v1/launch_plans/{id.project}/{" + + "id.domain}/{id.name}/{id.version}\022\242\001\n\023Ge" + + "tActiveLaunchPlan\022\'.flyteidl.admin.Activ" + + "eLaunchPlanRequest\032\032.flyteidl.admin.Laun" + + "chPlan\"F\202\323\344\223\002@\022>/api/v1/active_launch_pl" + + "ans/{id.project}/{id.domain}/{id.name}\022\234" + + "\001\n\025ListActiveLaunchPlans\022+.flyteidl.admi" + + "n.ActiveLaunchPlanListRequest\032\036.flyteidl" + + ".admin.LaunchPlanList\"6\202\323\344\223\0020\022./api/v1/a" + + "ctive_launch_plans/{project}/{domain}\022\244\001" + + "\n\021ListLaunchPlanIds\0220.flyteidl.admin.Nam" + + "edEntityIdentifierListRequest\032).flyteidl" + + ".admin.NamedEntityIdentifierList\"2\202\323\344\223\002," + + "\022*/api/v1/launch_plan_ids/{project}/{dom" + + "ain}\022\310\001\n\017ListLaunchPlans\022#.flyteidl.admi" + + "n.ResourceListRequest\032\036.flyteidl.admin.L" + + "aunchPlanList\"p\202\323\344\223\002j\0227/api/v1/launch_pl" + + "ans/{id.project}/{id.domain}/{id.name}Z/" + + "\022-/api/v1/launch_plans/{id.project}/{id." + + "domain}\022\266\001\n\020UpdateLaunchPlan\022\'.flyteidl." + + "admin.LaunchPlanUpdateRequest\032(.flyteidl" + + ".admin.LaunchPlanUpdateResponse\"O\202\323\344\223\002I\032" + + "D/api/v1/launch_plans/{id.project}/{id.d" + + "omain}/{id.name}/{id.version}:\001*\022\201\001\n\017Cre" + + "ateExecution\022&.flyteidl.admin.ExecutionC" + + "reateRequest\032\'.flyteidl.admin.ExecutionC" + + "reateResponse\"\035\202\323\344\223\002\027\"\022/api/v1/execution" + + "s:\001*\022\216\001\n\021RelaunchExecution\022(.flyteidl.ad" + + "min.ExecutionRelaunchRequest\032\'.flyteidl." + + "admin.ExecutionCreateResponse\"&\202\323\344\223\002 \"\033/" + + "api/v1/executions/relaunch:\001*\022\213\001\n\020Recove" + + "rExecution\022\'.flyteidl.admin.ExecutionRec" + + "overRequest\032\'.flyteidl.admin.ExecutionCr" + + "eateResponse\"%\202\323\344\223\002\037\"\032/api/v1/executions" + + "/recover:\001*\022\225\001\n\014GetExecution\022+.flyteidl." + + "admin.WorkflowExecutionGetRequest\032\031.flyt" + + "eidl.admin.Execution\"=\202\323\344\223\0027\0225/api/v1/ex" + + "ecutions/{id.project}/{id.domain}/{id.na" + + "me}\022\244\001\n\017UpdateExecution\022&.flyteidl.admin" + + ".ExecutionUpdateRequest\032\'.flyteidl.admin" + + ".ExecutionUpdateResponse\"@\202\323\344\223\002:\0325/api/v" + + "1/executions/{id.project}/{id.domain}/{i" + + "d.name}:\001*\022\271\001\n\020GetExecutionData\022/.flytei" + + "dl.admin.WorkflowExecutionGetDataRequest" + + "\0320.flyteidl.admin.WorkflowExecutionGetDa" + + "taResponse\"B\202\323\344\223\002<\022:/api/v1/data/executi" + + "ons/{id.project}/{id.domain}/{id.name}\022\211" + + "\001\n\016ListExecutions\022#.flyteidl.admin.Resou" + + "rceListRequest\032\035.flyteidl.admin.Executio" + + "nList\"3\202\323\344\223\002-\022+/api/v1/executions/{id.pr" + + "oject}/{id.domain}\022\255\001\n\022TerminateExecutio" + + "n\022).flyteidl.admin.ExecutionTerminateReq" + + "uest\032*.flyteidl.admin.ExecutionTerminate" + + "Response\"@\202\323\344\223\002:*5/api/v1/executions/{id" + + ".project}/{id.domain}/{id.name}:\001*\022\322\001\n\020G" + + "etNodeExecution\022\'.flyteidl.admin.NodeExe" + + "cutionGetRequest\032\035.flyteidl.admin.NodeEx" + + "ecution\"v\202\323\344\223\002p\022n/api/v1/node_executions" + + "/{id.execution_id.project}/{id.execution" + + "_id.domain}/{id.execution_id.name}/{id.n" + + "ode_id}\022\336\001\n\022ListNodeExecutions\022(.flyteid" + + "l.admin.NodeExecutionListRequest\032!.flyte" + + "idl.admin.NodeExecutionList\"{\202\323\344\223\002u\022s/ap" + + "i/v1/node_executions/{workflow_execution" + + "_id.project}/{workflow_execution_id.doma" + + "in}/{workflow_execution_id.name}\022\245\004\n\031Lis" + + "tNodeExecutionsForTask\022/.flyteidl.admin." + + "NodeExecutionForTaskListRequest\032!.flytei" + + "dl.admin.NodeExecutionList\"\263\003\202\323\344\223\002\254\003\022\251\003/" + + "api/v1/children/task_executions/{task_ex" + + "ecution_id.node_execution_id.execution_i" + + "d.project}/{task_execution_id.node_execu" + + "tion_id.execution_id.domain}/{task_execu" + + "tion_id.node_execution_id.execution_id.n" + + "ame}/{task_execution_id.node_execution_i" + + "d.node_id}/{task_execution_id.task_id.pr" + + "oject}/{task_execution_id.task_id.domain" + + "}/{task_execution_id.task_id.name}/{task" + + "_execution_id.task_id.version}/{task_exe" + + "cution_id.retry_attempt}\022\356\001\n\024GetNodeExec" + + "utionData\022+.flyteidl.admin.NodeExecution" + + "GetDataRequest\032,.flyteidl.admin.NodeExec" + + "utionGetDataResponse\"{\202\323\344\223\002u\022s/api/v1/da" + + "ta/node_executions/{id.execution_id.proj" + + "ect}/{id.execution_id.domain}/{id.execut" + + "ion_id.name}/{id.node_id}\022\177\n\017RegisterPro" + + "ject\022&.flyteidl.admin.ProjectRegisterReq" + + "uest\032\'.flyteidl.admin.ProjectRegisterRes" + + "ponse\"\033\202\323\344\223\002\025\"\020/api/v1/projects:\001*\022q\n\rUp" + + "dateProject\022\027.flyteidl.admin.Project\032%.f" + + "lyteidl.admin.ProjectUpdateResponse\" \202\323\344" + + "\223\002\032\032\025/api/v1/projects/{id}:\001*\022f\n\014ListPro" + + "jects\022\".flyteidl.admin.ProjectListReques" + + "t\032\030.flyteidl.admin.Projects\"\030\202\323\344\223\002\022\022\020/ap" + + "i/v1/projects\022\231\001\n\023CreateWorkflowEvent\022-." + + "flyteidl.admin.WorkflowExecutionEventReq" + + "uest\032..flyteidl.admin.WorkflowExecutionE" + + "ventResponse\"#\202\323\344\223\002\035\"\030/api/v1/events/wor" + + "kflows:\001*\022\211\001\n\017CreateNodeEvent\022).flyteidl" + + ".admin.NodeExecutionEventRequest\032*.flyte" + + "idl.admin.NodeExecutionEventResponse\"\037\202\323" + + "\344\223\002\031\"\024/api/v1/events/nodes:\001*\022\211\001\n\017Create" + + "TaskEvent\022).flyteidl.admin.TaskExecution" + + "EventRequest\032*.flyteidl.admin.TaskExecut" + + "ionEventResponse\"\037\202\323\344\223\002\031\"\024/api/v1/events" + + "/tasks:\001*\022\200\003\n\020GetTaskExecution\022\'.flyteid" + + "l.admin.TaskExecutionGetRequest\032\035.flytei" + + "dl.admin.TaskExecution\"\243\002\202\323\344\223\002\234\002\022\231\002/api/" + + "v1/task_executions/{id.node_execution_id" + + ".execution_id.project}/{id.node_executio" + + "n_id.execution_id.domain}/{id.node_execu" + + "tion_id.execution_id.name}/{id.node_exec" + + "ution_id.node_id}/{id.task_id.project}/{" + + "id.task_id.domain}/{id.task_id.name}/{id" + + ".task_id.version}/{id.retry_attempt}\022\230\002\n" + + "\022ListTaskExecutions\022(.flyteidl.admin.Tas" + + "kExecutionListRequest\032!.flyteidl.admin.T" + + "askExecutionList\"\264\001\202\323\344\223\002\255\001\022\252\001/api/v1/tas" + + "k_executions/{node_execution_id.executio" + + "n_id.project}/{node_execution_id.executi" + + "on_id.domain}/{node_execution_id.executi" + + "on_id.name}/{node_execution_id.node_id}\022" + + "\234\003\n\024GetTaskExecutionData\022+.flyteidl.admi" + + "n.TaskExecutionGetDataRequest\032,.flyteidl" + + ".admin.TaskExecutionGetDataResponse\"\250\002\202\323" + + "\344\223\002\241\002\022\236\002/api/v1/data/task_executions/{id" + + ".node_execution_id.execution_id.project}" + + "/{id.node_execution_id.execution_id.doma" + + "in}/{id.node_execution_id.execution_id.n" + + "ame}/{id.node_execution_id.node_id}/{id." + + "task_id.project}/{id.task_id.domain}/{id" + + ".task_id.name}/{id.task_id.version}/{id." + + "retry_attempt}\022\343\001\n\035UpdateProjectDomainAt" + + "tributes\0224.flyteidl.admin.ProjectDomainA" + + "ttributesUpdateRequest\0325.flyteidl.admin." + + "ProjectDomainAttributesUpdateResponse\"U\202" + + "\323\344\223\002O\032J/api/v1/project_domain_attributes" + + "/{attributes.project}/{attributes.domain" + + "}:\001*\022\301\001\n\032GetProjectDomainAttributes\0221.fl" + + "yteidl.admin.ProjectDomainAttributesGetR" + + "equest\0322.flyteidl.admin.ProjectDomainAtt" + + "ributesGetResponse\"<\202\323\344\223\0026\0224/api/v1/proj" + + "ect_domain_attributes/{project}/{domain}" + + "\022\315\001\n\035DeleteProjectDomainAttributes\0224.fly" + + "teidl.admin.ProjectDomainAttributesDelet" + + "eRequest\0325.flyteidl.admin.ProjectDomainA" + + "ttributesDeleteResponse\"?\202\323\344\223\0029*4/api/v1" + + "/project_domain_attributes/{project}/{do" + + "main}:\001*\022\266\001\n\027UpdateProjectAttributes\022..f" + + "lyteidl.admin.ProjectAttributesUpdateReq" + + "uest\032/.flyteidl.admin.ProjectAttributesU" + + "pdateResponse\":\202\323\344\223\0024\032//api/v1/project_a" + + "ttributes/{attributes.project}:\001*\022\237\001\n\024Ge" + + "tProjectAttributes\022+.flyteidl.admin.Proj" + + "ectAttributesGetRequest\032,.flyteidl.admin" + + ".ProjectAttributesGetResponse\",\202\323\344\223\002&\022$/" + + "api/v1/project_attributes/{project}\022\253\001\n\027" + + "DeleteProjectAttributes\022..flyteidl.admin" + + ".ProjectAttributesDeleteRequest\032/.flytei" + + "dl.admin.ProjectAttributesDeleteResponse" + + "\"/\202\323\344\223\002)*$/api/v1/project_attributes/{pr" + + "oject}:\001*\022\344\001\n\030UpdateWorkflowAttributes\022/" + + ".flyteidl.admin.WorkflowAttributesUpdate" + + "Request\0320.flyteidl.admin.WorkflowAttribu" + + "tesUpdateResponse\"e\202\323\344\223\002_\032Z/api/v1/workf" + + "low_attributes/{attributes.project}/{att" + + "ributes.domain}/{attributes.workflow}:\001*" + + "\022\267\001\n\025GetWorkflowAttributes\022,.flyteidl.ad" + + "min.WorkflowAttributesGetRequest\032-.flyte" + + "idl.admin.WorkflowAttributesGetResponse\"" + + "A\202\323\344\223\002;\0229/api/v1/workflow_attributes/{pr" + + "oject}/{domain}/{workflow}\022\303\001\n\030DeleteWor" + + "kflowAttributes\022/.flyteidl.admin.Workflo" + + "wAttributesDeleteRequest\0320.flyteidl.admi" + + "n.WorkflowAttributesDeleteResponse\"D\202\323\344\223" + + "\002>*9/api/v1/workflow_attributes/{project" + + "}/{domain}/{workflow}:\001*\022\240\001\n\027ListMatchab" + + "leAttributes\022..flyteidl.admin.ListMatcha" + + "bleAttributesRequest\032/.flyteidl.admin.Li" + + "stMatchableAttributesResponse\"$\202\323\344\223\002\036\022\034/" + + "api/v1/matchable_attributes\022\237\001\n\021ListName" + + "dEntities\022&.flyteidl.admin.NamedEntityLi" + + "stRequest\032\037.flyteidl.admin.NamedEntityLi" + + "st\"A\202\323\344\223\002;\0229/api/v1/named_entities/{reso" + + "urce_type}/{project}/{domain}\022\247\001\n\016GetNam" + + "edEntity\022%.flyteidl.admin.NamedEntityGet" + + "Request\032\033.flyteidl.admin.NamedEntity\"Q\202\323" + + "\344\223\002K\022I/api/v1/named_entities/{resource_t" + + "ype}/{id.project}/{id.domain}/{id.name}\022" + + "\276\001\n\021UpdateNamedEntity\022(.flyteidl.admin.N" + + "amedEntityUpdateRequest\032).flyteidl.admin" + + ".NamedEntityUpdateResponse\"T\202\323\344\223\002N\032I/api" + + "/v1/named_entities/{resource_type}/{id.p" + + "roject}/{id.domain}/{id.name}:\001*\022l\n\nGetV" + + "ersion\022!.flyteidl.admin.GetVersionReques" + + "t\032\".flyteidl.admin.GetVersionResponse\"\027\202" + + "\323\344\223\002\021\022\017/api/v1/version\022\304\001\n\024GetDescriptio" + + "nEntity\022 .flyteidl.admin.ObjectGetReques" + + "t\032!.flyteidl.admin.DescriptionEntity\"g\202\323" + + "\344\223\002a\022_/api/v1/description_entities/{id.r" + + "esource_type}/{id.project}/{id.domain}/{" + + "id.name}/{id.version}\022\222\002\n\027ListDescriptio" + + "nEntities\022,.flyteidl.admin.DescriptionEn" + + "tityListRequest\032%.flyteidl.admin.Descrip" + + "tionEntityList\"\241\001\202\323\344\223\002\232\001\022O/api/v1/descri" + + "ption_entities/{resource_type}/{id.proje" + + "ct}/{id.domain}/{id.name}ZG\022E/api/v1/des" + + "cription_entities/{resource_type}/{id.pr" + + "oject}/{id.domain}\022\305\001\n\023GetExecutionMetri" + + "cs\0222.flyteidl.admin.WorkflowExecutionGet" + + "MetricsRequest\0323.flyteidl.admin.Workflow" + + "ExecutionGetMetricsResponse\"E\202\323\344\223\002?\022=/ap" + + "i/v1/metrics/executions/{id.project}/{id" + + ".domain}/{id.name}B9Z7github.com/flyteor" + + "g/flyteidl/gen/pb-go/flyteidl/serviceb\006p" + + "roto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -315,6 +321,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.admin.Common.getDescriptor(), flyteidl.admin.DescriptionEntityOuterClass.getDescriptor(), flyteidl.core.IdentifierOuterClass.getDescriptor(), + flyteidl.core.Metrics.getDescriptor(), }, assigner); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); @@ -338,6 +345,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( flyteidl.admin.Common.getDescriptor(); flyteidl.admin.DescriptionEntityOuterClass.getDescriptor(); flyteidl.core.IdentifierOuterClass.getDescriptor(); + flyteidl.core.Metrics.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) diff --git a/gen/pb-js/flyteidl.d.ts b/gen/pb-js/flyteidl.d.ts index e7c2a36ea..bf943b39c 100644 --- a/gen/pb-js/flyteidl.d.ts +++ b/gen/pb-js/flyteidl.d.ts @@ -6375,6 +6375,97 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a Span. */ + interface ISpan { + + /** Span startTime */ + startTime?: (google.protobuf.ITimestamp|null); + + /** Span endTime */ + endTime?: (google.protobuf.ITimestamp|null); + + /** Span workflowId */ + workflowId?: (flyteidl.core.IWorkflowExecutionIdentifier|null); + + /** Span nodeId */ + nodeId?: (flyteidl.core.INodeExecutionIdentifier|null); + + /** Span taskId */ + taskId?: (flyteidl.core.ITaskExecutionIdentifier|null); + + /** Span operationId */ + operationId?: (string|null); + + /** Span spans */ + spans?: (flyteidl.core.ISpan[]|null); + } + + /** Represents a Span. */ + class Span implements ISpan { + + /** + * Constructs a new Span. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.core.ISpan); + + /** Span startTime. */ + public startTime?: (google.protobuf.ITimestamp|null); + + /** Span endTime. */ + public endTime?: (google.protobuf.ITimestamp|null); + + /** Span workflowId. */ + public workflowId?: (flyteidl.core.IWorkflowExecutionIdentifier|null); + + /** Span nodeId. */ + public nodeId?: (flyteidl.core.INodeExecutionIdentifier|null); + + /** Span taskId. */ + public taskId?: (flyteidl.core.ITaskExecutionIdentifier|null); + + /** Span operationId. */ + public operationId: string; + + /** Span spans. */ + public spans: flyteidl.core.ISpan[]; + + /** Span id. */ + public id?: ("workflowId"|"nodeId"|"taskId"|"operationId"); + + /** + * Creates a new Span instance using the specified properties. + * @param [properties] Properties to set + * @returns Span instance + */ + public static create(properties?: flyteidl.core.ISpan): flyteidl.core.Span; + + /** + * Encodes the specified Span message. Does not implicitly {@link flyteidl.core.Span.verify|verify} messages. + * @param message Span message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.core.ISpan, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Span message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Span + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Span; + + /** + * Verifies a Span message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + /** Properties of a WorkflowClosure. */ interface IWorkflowClosure { @@ -6590,6 +6681,9 @@ export namespace flyteidl { /** NodeExecutionEvent deckUri */ deckUri?: (string|null); + + /** NodeExecutionEvent reportedAt */ + reportedAt?: (google.protobuf.ITimestamp|null); } /** Represents a NodeExecutionEvent. */ @@ -6661,6 +6755,9 @@ export namespace flyteidl { /** NodeExecutionEvent deckUri. */ public deckUri: string; + /** NodeExecutionEvent reportedAt. */ + public reportedAt?: (google.protobuf.ITimestamp|null); + /** NodeExecutionEvent inputValue. */ public inputValue?: ("inputUri"|"inputData"); @@ -7055,6 +7152,9 @@ export namespace flyteidl { /** TaskExecutionEvent eventVersion */ eventVersion?: (number|null); + + /** TaskExecutionEvent reportedAt */ + reportedAt?: (google.protobuf.ITimestamp|null); } /** Represents a TaskExecutionEvent. */ @@ -7120,6 +7220,9 @@ export namespace flyteidl { /** TaskExecutionEvent eventVersion. */ public eventVersion: number; + /** TaskExecutionEvent reportedAt. */ + public reportedAt?: (google.protobuf.ITimestamp|null); + /** TaskExecutionEvent inputValue. */ public inputValue?: ("inputUri"|"inputData"); @@ -11035,6 +11138,116 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a WorkflowExecutionGetMetricsRequest. */ + interface IWorkflowExecutionGetMetricsRequest { + + /** WorkflowExecutionGetMetricsRequest id */ + id?: (flyteidl.core.IWorkflowExecutionIdentifier|null); + + /** WorkflowExecutionGetMetricsRequest depth */ + depth?: (number|null); + } + + /** Represents a WorkflowExecutionGetMetricsRequest. */ + class WorkflowExecutionGetMetricsRequest implements IWorkflowExecutionGetMetricsRequest { + + /** + * Constructs a new WorkflowExecutionGetMetricsRequest. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.admin.IWorkflowExecutionGetMetricsRequest); + + /** WorkflowExecutionGetMetricsRequest id. */ + public id?: (flyteidl.core.IWorkflowExecutionIdentifier|null); + + /** WorkflowExecutionGetMetricsRequest depth. */ + public depth: number; + + /** + * Creates a new WorkflowExecutionGetMetricsRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns WorkflowExecutionGetMetricsRequest instance + */ + public static create(properties?: flyteidl.admin.IWorkflowExecutionGetMetricsRequest): flyteidl.admin.WorkflowExecutionGetMetricsRequest; + + /** + * Encodes the specified WorkflowExecutionGetMetricsRequest message. Does not implicitly {@link flyteidl.admin.WorkflowExecutionGetMetricsRequest.verify|verify} messages. + * @param message WorkflowExecutionGetMetricsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.admin.IWorkflowExecutionGetMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WorkflowExecutionGetMetricsRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns WorkflowExecutionGetMetricsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.WorkflowExecutionGetMetricsRequest; + + /** + * Verifies a WorkflowExecutionGetMetricsRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + + /** Properties of a WorkflowExecutionGetMetricsResponse. */ + interface IWorkflowExecutionGetMetricsResponse { + + /** WorkflowExecutionGetMetricsResponse span */ + span?: (flyteidl.core.ISpan|null); + } + + /** Represents a WorkflowExecutionGetMetricsResponse. */ + class WorkflowExecutionGetMetricsResponse implements IWorkflowExecutionGetMetricsResponse { + + /** + * Constructs a new WorkflowExecutionGetMetricsResponse. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.admin.IWorkflowExecutionGetMetricsResponse); + + /** WorkflowExecutionGetMetricsResponse span. */ + public span?: (flyteidl.core.ISpan|null); + + /** + * Creates a new WorkflowExecutionGetMetricsResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns WorkflowExecutionGetMetricsResponse instance + */ + public static create(properties?: flyteidl.admin.IWorkflowExecutionGetMetricsResponse): flyteidl.admin.WorkflowExecutionGetMetricsResponse; + + /** + * Encodes the specified WorkflowExecutionGetMetricsResponse message. Does not implicitly {@link flyteidl.admin.WorkflowExecutionGetMetricsResponse.verify|verify} messages. + * @param message WorkflowExecutionGetMetricsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.admin.IWorkflowExecutionGetMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WorkflowExecutionGetMetricsResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns WorkflowExecutionGetMetricsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.admin.WorkflowExecutionGetMetricsResponse; + + /** + * Verifies a WorkflowExecutionGetMetricsResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + /** Properties of a LaunchPlanCreateRequest. */ interface ILaunchPlanCreateRequest { @@ -18014,6 +18227,20 @@ export namespace flyteidl { * @returns Promise */ public listDescriptionEntities(request: flyteidl.admin.IDescriptionEntityListRequest): Promise; + + /** + * Calls GetExecutionMetrics. + * @param request WorkflowExecutionGetMetricsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and WorkflowExecutionGetMetricsResponse + */ + public getExecutionMetrics(request: flyteidl.admin.IWorkflowExecutionGetMetricsRequest, callback: flyteidl.service.AdminService.GetExecutionMetricsCallback): void; + + /** + * Calls GetExecutionMetrics. + * @param request WorkflowExecutionGetMetricsRequest message or plain object + * @returns Promise + */ + public getExecutionMetrics(request: flyteidl.admin.IWorkflowExecutionGetMetricsRequest): Promise; } namespace AdminService { @@ -18381,6 +18608,13 @@ export namespace flyteidl { * @param [response] DescriptionEntityList */ type ListDescriptionEntitiesCallback = (error: (Error|null), response?: flyteidl.admin.DescriptionEntityList) => void; + + /** + * Callback as used by {@link flyteidl.service.AdminService#getExecutionMetrics}. + * @param error Error, if any + * @param [response] WorkflowExecutionGetMetricsResponse + */ + type GetExecutionMetricsCallback = (error: (Error|null), response?: flyteidl.admin.WorkflowExecutionGetMetricsResponse) => void; } /** Properties of a OAuth2MetadataRequest. */ diff --git a/gen/pb-js/flyteidl.js b/gen/pb-js/flyteidl.js index 4d5bddb9c..b8fad613c 100644 --- a/gen/pb-js/flyteidl.js +++ b/gen/pb-js/flyteidl.js @@ -15279,6 +15279,270 @@ return ErrorDocument; })(); + core.Span = (function() { + + /** + * Properties of a Span. + * @memberof flyteidl.core + * @interface ISpan + * @property {google.protobuf.ITimestamp|null} [startTime] Span startTime + * @property {google.protobuf.ITimestamp|null} [endTime] Span endTime + * @property {flyteidl.core.IWorkflowExecutionIdentifier|null} [workflowId] Span workflowId + * @property {flyteidl.core.INodeExecutionIdentifier|null} [nodeId] Span nodeId + * @property {flyteidl.core.ITaskExecutionIdentifier|null} [taskId] Span taskId + * @property {string|null} [operationId] Span operationId + * @property {Array.|null} [spans] Span spans + */ + + /** + * Constructs a new Span. + * @memberof flyteidl.core + * @classdesc Represents a Span. + * @implements ISpan + * @constructor + * @param {flyteidl.core.ISpan=} [properties] Properties to set + */ + function Span(properties) { + this.spans = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Span startTime. + * @member {google.protobuf.ITimestamp|null|undefined} startTime + * @memberof flyteidl.core.Span + * @instance + */ + Span.prototype.startTime = null; + + /** + * Span endTime. + * @member {google.protobuf.ITimestamp|null|undefined} endTime + * @memberof flyteidl.core.Span + * @instance + */ + Span.prototype.endTime = null; + + /** + * Span workflowId. + * @member {flyteidl.core.IWorkflowExecutionIdentifier|null|undefined} workflowId + * @memberof flyteidl.core.Span + * @instance + */ + Span.prototype.workflowId = null; + + /** + * Span nodeId. + * @member {flyteidl.core.INodeExecutionIdentifier|null|undefined} nodeId + * @memberof flyteidl.core.Span + * @instance + */ + Span.prototype.nodeId = null; + + /** + * Span taskId. + * @member {flyteidl.core.ITaskExecutionIdentifier|null|undefined} taskId + * @memberof flyteidl.core.Span + * @instance + */ + Span.prototype.taskId = null; + + /** + * Span operationId. + * @member {string} operationId + * @memberof flyteidl.core.Span + * @instance + */ + Span.prototype.operationId = ""; + + /** + * Span spans. + * @member {Array.} spans + * @memberof flyteidl.core.Span + * @instance + */ + Span.prototype.spans = $util.emptyArray; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Span id. + * @member {"workflowId"|"nodeId"|"taskId"|"operationId"|undefined} id + * @memberof flyteidl.core.Span + * @instance + */ + Object.defineProperty(Span.prototype, "id", { + get: $util.oneOfGetter($oneOfFields = ["workflowId", "nodeId", "taskId", "operationId"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Span instance using the specified properties. + * @function create + * @memberof flyteidl.core.Span + * @static + * @param {flyteidl.core.ISpan=} [properties] Properties to set + * @returns {flyteidl.core.Span} Span instance + */ + Span.create = function create(properties) { + return new Span(properties); + }; + + /** + * Encodes the specified Span message. Does not implicitly {@link flyteidl.core.Span.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.Span + * @static + * @param {flyteidl.core.ISpan} message Span message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Span.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.startTime != null && message.hasOwnProperty("startTime")) + $root.google.protobuf.Timestamp.encode(message.startTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.endTime != null && message.hasOwnProperty("endTime")) + $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.workflowId != null && message.hasOwnProperty("workflowId")) + $root.flyteidl.core.WorkflowExecutionIdentifier.encode(message.workflowId, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.nodeId != null && message.hasOwnProperty("nodeId")) + $root.flyteidl.core.NodeExecutionIdentifier.encode(message.nodeId, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.taskId != null && message.hasOwnProperty("taskId")) + $root.flyteidl.core.TaskExecutionIdentifier.encode(message.taskId, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.operationId != null && message.hasOwnProperty("operationId")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.operationId); + if (message.spans != null && message.spans.length) + for (var i = 0; i < message.spans.length; ++i) + $root.flyteidl.core.Span.encode(message.spans[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + return writer; + }; + + /** + * Decodes a Span message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.Span + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.Span} Span + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Span.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Span(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 2: + message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 3: + message.workflowId = $root.flyteidl.core.WorkflowExecutionIdentifier.decode(reader, reader.uint32()); + break; + case 4: + message.nodeId = $root.flyteidl.core.NodeExecutionIdentifier.decode(reader, reader.uint32()); + break; + case 5: + message.taskId = $root.flyteidl.core.TaskExecutionIdentifier.decode(reader, reader.uint32()); + break; + case 6: + message.operationId = reader.string(); + break; + case 7: + if (!(message.spans && message.spans.length)) + message.spans = []; + message.spans.push($root.flyteidl.core.Span.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a Span message. + * @function verify + * @memberof flyteidl.core.Span + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Span.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.startTime != null && message.hasOwnProperty("startTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.startTime); + if (error) + return "startTime." + error; + } + if (message.endTime != null && message.hasOwnProperty("endTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.endTime); + if (error) + return "endTime." + error; + } + if (message.workflowId != null && message.hasOwnProperty("workflowId")) { + properties.id = 1; + { + var error = $root.flyteidl.core.WorkflowExecutionIdentifier.verify(message.workflowId); + if (error) + return "workflowId." + error; + } + } + if (message.nodeId != null && message.hasOwnProperty("nodeId")) { + if (properties.id === 1) + return "id: multiple values"; + properties.id = 1; + { + var error = $root.flyteidl.core.NodeExecutionIdentifier.verify(message.nodeId); + if (error) + return "nodeId." + error; + } + } + if (message.taskId != null && message.hasOwnProperty("taskId")) { + if (properties.id === 1) + return "id: multiple values"; + properties.id = 1; + { + var error = $root.flyteidl.core.TaskExecutionIdentifier.verify(message.taskId); + if (error) + return "taskId." + error; + } + } + if (message.operationId != null && message.hasOwnProperty("operationId")) { + if (properties.id === 1) + return "id: multiple values"; + properties.id = 1; + if (!$util.isString(message.operationId)) + return "operationId: string expected"; + } + if (message.spans != null && message.hasOwnProperty("spans")) { + if (!Array.isArray(message.spans)) + return "spans: array expected"; + for (var i = 0; i < message.spans.length; ++i) { + var error = $root.flyteidl.core.Span.verify(message.spans[i]); + if (error) + return "spans." + error; + } + } + return null; + }; + + return Span; + })(); + core.WorkflowClosure = (function() { /** @@ -15716,6 +15980,7 @@ * @property {boolean|null} [isParent] NodeExecutionEvent isParent * @property {boolean|null} [isDynamic] NodeExecutionEvent isDynamic * @property {string|null} [deckUri] NodeExecutionEvent deckUri + * @property {google.protobuf.ITimestamp|null} [reportedAt] NodeExecutionEvent reportedAt */ /** @@ -15893,6 +16158,14 @@ */ NodeExecutionEvent.prototype.deckUri = ""; + /** + * NodeExecutionEvent reportedAt. + * @member {google.protobuf.ITimestamp|null|undefined} reportedAt + * @memberof flyteidl.event.NodeExecutionEvent + * @instance + */ + NodeExecutionEvent.prototype.reportedAt = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -15993,6 +16266,8 @@ writer.uint32(/* id 19, wireType 2 =*/154).string(message.deckUri); if (message.inputData != null && message.hasOwnProperty("inputData")) $root.flyteidl.core.LiteralMap.encode(message.inputData, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); + if (message.reportedAt != null && message.hasOwnProperty("reportedAt")) + $root.google.protobuf.Timestamp.encode(message.reportedAt, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); return writer; }; @@ -16074,6 +16349,9 @@ case 19: message.deckUri = reader.string(); break; + case 21: + message.reportedAt = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -16213,6 +16491,11 @@ if (message.deckUri != null && message.hasOwnProperty("deckUri")) if (!$util.isString(message.deckUri)) return "deckUri: string expected"; + if (message.reportedAt != null && message.hasOwnProperty("reportedAt")) { + var error = $root.google.protobuf.Timestamp.verify(message.reportedAt); + if (error) + return "reportedAt." + error; + } return null; }; @@ -16925,6 +17208,7 @@ * @property {string|null} [taskType] TaskExecutionEvent taskType * @property {flyteidl.event.ITaskExecutionMetadata|null} [metadata] TaskExecutionEvent metadata * @property {number|null} [eventVersion] TaskExecutionEvent eventVersion + * @property {google.protobuf.ITimestamp|null} [reportedAt] TaskExecutionEvent reportedAt */ /** @@ -17087,6 +17371,14 @@ */ TaskExecutionEvent.prototype.eventVersion = 0; + /** + * TaskExecutionEvent reportedAt. + * @member {google.protobuf.ITimestamp|null|undefined} reportedAt + * @memberof flyteidl.event.TaskExecutionEvent + * @instance + */ + TaskExecutionEvent.prototype.reportedAt = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -17173,6 +17465,8 @@ writer.uint32(/* id 18, wireType 0 =*/144).int32(message.eventVersion); if (message.inputData != null && message.hasOwnProperty("inputData")) $root.flyteidl.core.LiteralMap.encode(message.inputData, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim(); + if (message.reportedAt != null && message.hasOwnProperty("reportedAt")) + $root.google.protobuf.Timestamp.encode(message.reportedAt, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); return writer; }; @@ -17250,6 +17544,9 @@ case 18: message.eventVersion = reader.int32(); break; + case 20: + message.reportedAt = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -17376,6 +17673,11 @@ if (message.eventVersion != null && message.hasOwnProperty("eventVersion")) if (!$util.isInteger(message.eventVersion)) return "eventVersion: integer expected"; + if (message.reportedAt != null && message.hasOwnProperty("reportedAt")) { + var error = $root.google.protobuf.Timestamp.verify(message.reportedAt); + if (error) + return "reportedAt." + error; + } return null; }; @@ -26569,6 +26871,247 @@ return ExecutionUpdateResponse; })(); + admin.WorkflowExecutionGetMetricsRequest = (function() { + + /** + * Properties of a WorkflowExecutionGetMetricsRequest. + * @memberof flyteidl.admin + * @interface IWorkflowExecutionGetMetricsRequest + * @property {flyteidl.core.IWorkflowExecutionIdentifier|null} [id] WorkflowExecutionGetMetricsRequest id + * @property {number|null} [depth] WorkflowExecutionGetMetricsRequest depth + */ + + /** + * Constructs a new WorkflowExecutionGetMetricsRequest. + * @memberof flyteidl.admin + * @classdesc Represents a WorkflowExecutionGetMetricsRequest. + * @implements IWorkflowExecutionGetMetricsRequest + * @constructor + * @param {flyteidl.admin.IWorkflowExecutionGetMetricsRequest=} [properties] Properties to set + */ + function WorkflowExecutionGetMetricsRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * WorkflowExecutionGetMetricsRequest id. + * @member {flyteidl.core.IWorkflowExecutionIdentifier|null|undefined} id + * @memberof flyteidl.admin.WorkflowExecutionGetMetricsRequest + * @instance + */ + WorkflowExecutionGetMetricsRequest.prototype.id = null; + + /** + * WorkflowExecutionGetMetricsRequest depth. + * @member {number} depth + * @memberof flyteidl.admin.WorkflowExecutionGetMetricsRequest + * @instance + */ + WorkflowExecutionGetMetricsRequest.prototype.depth = 0; + + /** + * Creates a new WorkflowExecutionGetMetricsRequest instance using the specified properties. + * @function create + * @memberof flyteidl.admin.WorkflowExecutionGetMetricsRequest + * @static + * @param {flyteidl.admin.IWorkflowExecutionGetMetricsRequest=} [properties] Properties to set + * @returns {flyteidl.admin.WorkflowExecutionGetMetricsRequest} WorkflowExecutionGetMetricsRequest instance + */ + WorkflowExecutionGetMetricsRequest.create = function create(properties) { + return new WorkflowExecutionGetMetricsRequest(properties); + }; + + /** + * Encodes the specified WorkflowExecutionGetMetricsRequest message. Does not implicitly {@link flyteidl.admin.WorkflowExecutionGetMetricsRequest.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.WorkflowExecutionGetMetricsRequest + * @static + * @param {flyteidl.admin.IWorkflowExecutionGetMetricsRequest} message WorkflowExecutionGetMetricsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WorkflowExecutionGetMetricsRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + $root.flyteidl.core.WorkflowExecutionIdentifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.depth != null && message.hasOwnProperty("depth")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.depth); + return writer; + }; + + /** + * Decodes a WorkflowExecutionGetMetricsRequest message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.WorkflowExecutionGetMetricsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.WorkflowExecutionGetMetricsRequest} WorkflowExecutionGetMetricsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WorkflowExecutionGetMetricsRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.WorkflowExecutionGetMetricsRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = $root.flyteidl.core.WorkflowExecutionIdentifier.decode(reader, reader.uint32()); + break; + case 2: + message.depth = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a WorkflowExecutionGetMetricsRequest message. + * @function verify + * @memberof flyteidl.admin.WorkflowExecutionGetMetricsRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + WorkflowExecutionGetMetricsRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) { + var error = $root.flyteidl.core.WorkflowExecutionIdentifier.verify(message.id); + if (error) + return "id." + error; + } + if (message.depth != null && message.hasOwnProperty("depth")) + if (!$util.isInteger(message.depth)) + return "depth: integer expected"; + return null; + }; + + return WorkflowExecutionGetMetricsRequest; + })(); + + admin.WorkflowExecutionGetMetricsResponse = (function() { + + /** + * Properties of a WorkflowExecutionGetMetricsResponse. + * @memberof flyteidl.admin + * @interface IWorkflowExecutionGetMetricsResponse + * @property {flyteidl.core.ISpan|null} [span] WorkflowExecutionGetMetricsResponse span + */ + + /** + * Constructs a new WorkflowExecutionGetMetricsResponse. + * @memberof flyteidl.admin + * @classdesc Represents a WorkflowExecutionGetMetricsResponse. + * @implements IWorkflowExecutionGetMetricsResponse + * @constructor + * @param {flyteidl.admin.IWorkflowExecutionGetMetricsResponse=} [properties] Properties to set + */ + function WorkflowExecutionGetMetricsResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * WorkflowExecutionGetMetricsResponse span. + * @member {flyteidl.core.ISpan|null|undefined} span + * @memberof flyteidl.admin.WorkflowExecutionGetMetricsResponse + * @instance + */ + WorkflowExecutionGetMetricsResponse.prototype.span = null; + + /** + * Creates a new WorkflowExecutionGetMetricsResponse instance using the specified properties. + * @function create + * @memberof flyteidl.admin.WorkflowExecutionGetMetricsResponse + * @static + * @param {flyteidl.admin.IWorkflowExecutionGetMetricsResponse=} [properties] Properties to set + * @returns {flyteidl.admin.WorkflowExecutionGetMetricsResponse} WorkflowExecutionGetMetricsResponse instance + */ + WorkflowExecutionGetMetricsResponse.create = function create(properties) { + return new WorkflowExecutionGetMetricsResponse(properties); + }; + + /** + * Encodes the specified WorkflowExecutionGetMetricsResponse message. Does not implicitly {@link flyteidl.admin.WorkflowExecutionGetMetricsResponse.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.WorkflowExecutionGetMetricsResponse + * @static + * @param {flyteidl.admin.IWorkflowExecutionGetMetricsResponse} message WorkflowExecutionGetMetricsResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WorkflowExecutionGetMetricsResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.span != null && message.hasOwnProperty("span")) + $root.flyteidl.core.Span.encode(message.span, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Decodes a WorkflowExecutionGetMetricsResponse message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.WorkflowExecutionGetMetricsResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.WorkflowExecutionGetMetricsResponse} WorkflowExecutionGetMetricsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WorkflowExecutionGetMetricsResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.WorkflowExecutionGetMetricsResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.span = $root.flyteidl.core.Span.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a WorkflowExecutionGetMetricsResponse message. + * @function verify + * @memberof flyteidl.admin.WorkflowExecutionGetMetricsResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + WorkflowExecutionGetMetricsResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.span != null && message.hasOwnProperty("span")) { + var error = $root.flyteidl.core.Span.verify(message.span); + if (error) + return "span." + error; + } + return null; + }; + + return WorkflowExecutionGetMetricsResponse; + })(); + admin.LaunchPlanCreateRequest = (function() { /** @@ -42903,6 +43446,39 @@ * @variation 2 */ + /** + * Callback as used by {@link flyteidl.service.AdminService#getExecutionMetrics}. + * @memberof flyteidl.service.AdminService + * @typedef GetExecutionMetricsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {flyteidl.admin.WorkflowExecutionGetMetricsResponse} [response] WorkflowExecutionGetMetricsResponse + */ + + /** + * Calls GetExecutionMetrics. + * @function getExecutionMetrics + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IWorkflowExecutionGetMetricsRequest} request WorkflowExecutionGetMetricsRequest message or plain object + * @param {flyteidl.service.AdminService.GetExecutionMetricsCallback} callback Node-style callback called with the error, if any, and WorkflowExecutionGetMetricsResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(AdminService.prototype.getExecutionMetrics = function getExecutionMetrics(request, callback) { + return this.rpcCall(getExecutionMetrics, $root.flyteidl.admin.WorkflowExecutionGetMetricsRequest, $root.flyteidl.admin.WorkflowExecutionGetMetricsResponse, request, callback); + }, "name", { value: "GetExecutionMetrics" }); + + /** + * Calls GetExecutionMetrics. + * @function getExecutionMetrics + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IWorkflowExecutionGetMetricsRequest} request WorkflowExecutionGetMetricsRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + return AdminService; })(); diff --git a/gen/pb_python/flyteidl/admin/common_pb2.py b/gen/pb_python/flyteidl/admin/common_pb2.py index cd302f304..df9c2ad93 100644 --- a/gen/pb_python/flyteidl/admin/common_pb2.py +++ b/gen/pb_python/flyteidl/admin/common_pb2.py @@ -13,9 +13,10 @@ from flyteidl.core import execution_pb2 as flyteidl_dot_core_dot_execution__pb2 from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lyteidl/admin/common.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\"]\n\x15NamedEntityIdentifier\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\"o\n\x13NamedEntityMetadata\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x36\n\x05state\x18\x02 \x01(\x0e\x32 .flyteidl.admin.NamedEntityStateR\x05state\"\xc7\x01\n\x0bNamedEntity\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x82\x01\n\x04Sort\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12<\n\tdirection\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.Sort.DirectionR\tdirection\"*\n\tDirection\x12\x0e\n\nDESCENDING\x10\x00\x12\r\n\tASCENDING\x10\x01\"\xc9\x01\n NamedEntityIdentifierListRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x03 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x06 \x01(\tR\x07\x66ilters\"\x81\x02\n\x16NamedEntityListRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x03 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x04 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x05 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x06 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x07 \x01(\tR\x07\x66ilters\"t\n\x19NamedEntityIdentifierList\x12\x41\n\x08\x65ntities\x18\x01 \x03(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"`\n\x0fNamedEntityList\x12\x37\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x1b.flyteidl.admin.NamedEntityR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x90\x01\n\x15NamedEntityGetRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\"\xd4\x01\n\x18NamedEntityUpdateRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x1b\n\x19NamedEntityUpdateResponse\"=\n\x10ObjectGetRequest\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\"\xc1\x01\n\x13ResourceListRequest\x12\x35\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\">\n\x11\x45mailNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\"B\n\x15PagerDutyNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\">\n\x11SlackNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\"\x94\x02\n\x0cNotification\x12>\n\x06phases\x18\x01 \x03(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x06phases\x12\x39\n\x05\x65mail\x18\x02 \x01(\x0b\x32!.flyteidl.admin.EmailNotificationH\x00R\x05\x65mail\x12\x46\n\npager_duty\x18\x03 \x01(\x0b\x32%.flyteidl.admin.PagerDutyNotificationH\x00R\tpagerDuty\x12\x39\n\x05slack\x18\x04 \x01(\x0b\x32!.flyteidl.admin.SlackNotificationH\x00R\x05slackB\x06\n\x04type\"5\n\x07UrlBlob\x12\x10\n\x03url\x18\x01 \x01(\tR\x03url\x12\x14\n\x05\x62ytes\x18\x02 \x01(\x03R\x05\x62ytes:\x02\x18\x01\"\x7f\n\x06Labels\x12:\n\x06values\x18\x01 \x03(\x0b\x32\".flyteidl.admin.Labels.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x89\x01\n\x0b\x41nnotations\x12?\n\x06values\x18\x01 \x03(\x0b\x32\'.flyteidl.admin.Annotations.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"z\n\x08\x41uthRole\x12,\n\x12\x61ssumable_iam_role\x18\x01 \x01(\tR\x10\x61ssumableIamRole\x12<\n\x1akubernetes_service_account\x18\x02 \x01(\tR\x18kubernetesServiceAccount:\x02\x18\x01\"K\n\x13RawOutputDataConfig\x12\x34\n\x16output_location_prefix\x18\x01 \x01(\tR\x14outputLocationPrefix*\\\n\x10NamedEntityState\x12\x17\n\x13NAMED_ENTITY_ACTIVE\x10\x00\x12\x19\n\x15NAMED_ENTITY_ARCHIVED\x10\x01\x12\x14\n\x10SYSTEM_GENERATED\x10\x02\x42\xb1\x01\n\x12\x63om.flyteidl.adminB\x0b\x43ommonProtoP\x01Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lyteidl/admin/common.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"]\n\x15NamedEntityIdentifier\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\"o\n\x13NamedEntityMetadata\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x36\n\x05state\x18\x02 \x01(\x0e\x32 .flyteidl.admin.NamedEntityStateR\x05state\"\xc7\x01\n\x0bNamedEntity\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x82\x01\n\x04Sort\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12<\n\tdirection\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.Sort.DirectionR\tdirection\"*\n\tDirection\x12\x0e\n\nDESCENDING\x10\x00\x12\r\n\tASCENDING\x10\x01\"\xc9\x01\n NamedEntityIdentifierListRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x03 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x06 \x01(\tR\x07\x66ilters\"\x81\x02\n\x16NamedEntityListRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x03 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x04 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x05 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x06 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x07 \x01(\tR\x07\x66ilters\"t\n\x19NamedEntityIdentifierList\x12\x41\n\x08\x65ntities\x18\x01 \x03(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"`\n\x0fNamedEntityList\x12\x37\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x1b.flyteidl.admin.NamedEntityR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x90\x01\n\x15NamedEntityGetRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\"\xd4\x01\n\x18NamedEntityUpdateRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x1b\n\x19NamedEntityUpdateResponse\"=\n\x10ObjectGetRequest\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\"\xc1\x01\n\x13ResourceListRequest\x12\x35\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\">\n\x11\x45mailNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\"B\n\x15PagerDutyNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\">\n\x11SlackNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\"\x94\x02\n\x0cNotification\x12>\n\x06phases\x18\x01 \x03(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x06phases\x12\x39\n\x05\x65mail\x18\x02 \x01(\x0b\x32!.flyteidl.admin.EmailNotificationH\x00R\x05\x65mail\x12\x46\n\npager_duty\x18\x03 \x01(\x0b\x32%.flyteidl.admin.PagerDutyNotificationH\x00R\tpagerDuty\x12\x39\n\x05slack\x18\x04 \x01(\x0b\x32!.flyteidl.admin.SlackNotificationH\x00R\x05slackB\x06\n\x04type\"5\n\x07UrlBlob\x12\x10\n\x03url\x18\x01 \x01(\tR\x03url\x12\x14\n\x05\x62ytes\x18\x02 \x01(\x03R\x05\x62ytes:\x02\x18\x01\"\x7f\n\x06Labels\x12:\n\x06values\x18\x01 \x03(\x0b\x32\".flyteidl.admin.Labels.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x89\x01\n\x0b\x41nnotations\x12?\n\x06values\x18\x01 \x03(\x0b\x32\'.flyteidl.admin.Annotations.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"z\n\x08\x41uthRole\x12,\n\x12\x61ssumable_iam_role\x18\x01 \x01(\tR\x10\x61ssumableIamRole\x12<\n\x1akubernetes_service_account\x18\x02 \x01(\tR\x18kubernetesServiceAccount:\x02\x18\x01\"K\n\x13RawOutputDataConfig\x12\x34\n\x16output_location_prefix\x18\x01 \x01(\tR\x14outputLocationPrefix*\\\n\x10NamedEntityState\x12\x17\n\x13NAMED_ENTITY_ACTIVE\x10\x00\x12\x19\n\x15NAMED_ENTITY_ARCHIVED\x10\x01\x12\x14\n\x10SYSTEM_GENERATED\x10\x02\x42\xb1\x01\n\x12\x63om.flyteidl.adminB\x0b\x43ommonProtoP\x01Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flyteidl.admin.common_pb2', globals()) @@ -31,56 +32,56 @@ _ANNOTATIONS_VALUESENTRY._serialized_options = b'8\001' _AUTHROLE._options = None _AUTHROLE._serialized_options = b'\030\001' - _NAMEDENTITYSTATE._serialized_start=2983 - _NAMEDENTITYSTATE._serialized_end=3075 - _NAMEDENTITYIDENTIFIER._serialized_start=110 - _NAMEDENTITYIDENTIFIER._serialized_end=203 - _NAMEDENTITYMETADATA._serialized_start=205 - _NAMEDENTITYMETADATA._serialized_end=316 - _NAMEDENTITY._serialized_start=319 - _NAMEDENTITY._serialized_end=518 - _SORT._serialized_start=521 - _SORT._serialized_end=651 - _SORT_DIRECTION._serialized_start=609 - _SORT_DIRECTION._serialized_end=651 - _NAMEDENTITYIDENTIFIERLISTREQUEST._serialized_start=654 - _NAMEDENTITYIDENTIFIERLISTREQUEST._serialized_end=855 - _NAMEDENTITYLISTREQUEST._serialized_start=858 - _NAMEDENTITYLISTREQUEST._serialized_end=1115 - _NAMEDENTITYIDENTIFIERLIST._serialized_start=1117 - _NAMEDENTITYIDENTIFIERLIST._serialized_end=1233 - _NAMEDENTITYLIST._serialized_start=1235 - _NAMEDENTITYLIST._serialized_end=1331 - _NAMEDENTITYGETREQUEST._serialized_start=1334 - _NAMEDENTITYGETREQUEST._serialized_end=1478 - _NAMEDENTITYUPDATEREQUEST._serialized_start=1481 - _NAMEDENTITYUPDATEREQUEST._serialized_end=1693 - _NAMEDENTITYUPDATERESPONSE._serialized_start=1695 - _NAMEDENTITYUPDATERESPONSE._serialized_end=1722 - _OBJECTGETREQUEST._serialized_start=1724 - _OBJECTGETREQUEST._serialized_end=1785 - _RESOURCELISTREQUEST._serialized_start=1788 - _RESOURCELISTREQUEST._serialized_end=1981 - _EMAILNOTIFICATION._serialized_start=1983 - _EMAILNOTIFICATION._serialized_end=2045 - _PAGERDUTYNOTIFICATION._serialized_start=2047 - _PAGERDUTYNOTIFICATION._serialized_end=2113 - _SLACKNOTIFICATION._serialized_start=2115 - _SLACKNOTIFICATION._serialized_end=2177 - _NOTIFICATION._serialized_start=2180 - _NOTIFICATION._serialized_end=2456 - _URLBLOB._serialized_start=2458 - _URLBLOB._serialized_end=2511 - _LABELS._serialized_start=2513 - _LABELS._serialized_end=2640 - _LABELS_VALUESENTRY._serialized_start=2583 - _LABELS_VALUESENTRY._serialized_end=2640 - _ANNOTATIONS._serialized_start=2643 - _ANNOTATIONS._serialized_end=2780 - _ANNOTATIONS_VALUESENTRY._serialized_start=2583 - _ANNOTATIONS_VALUESENTRY._serialized_end=2640 - _AUTHROLE._serialized_start=2782 - _AUTHROLE._serialized_end=2904 - _RAWOUTPUTDATACONFIG._serialized_start=2906 - _RAWOUTPUTDATACONFIG._serialized_end=2981 + _NAMEDENTITYSTATE._serialized_start=3016 + _NAMEDENTITYSTATE._serialized_end=3108 + _NAMEDENTITYIDENTIFIER._serialized_start=143 + _NAMEDENTITYIDENTIFIER._serialized_end=236 + _NAMEDENTITYMETADATA._serialized_start=238 + _NAMEDENTITYMETADATA._serialized_end=349 + _NAMEDENTITY._serialized_start=352 + _NAMEDENTITY._serialized_end=551 + _SORT._serialized_start=554 + _SORT._serialized_end=684 + _SORT_DIRECTION._serialized_start=642 + _SORT_DIRECTION._serialized_end=684 + _NAMEDENTITYIDENTIFIERLISTREQUEST._serialized_start=687 + _NAMEDENTITYIDENTIFIERLISTREQUEST._serialized_end=888 + _NAMEDENTITYLISTREQUEST._serialized_start=891 + _NAMEDENTITYLISTREQUEST._serialized_end=1148 + _NAMEDENTITYIDENTIFIERLIST._serialized_start=1150 + _NAMEDENTITYIDENTIFIERLIST._serialized_end=1266 + _NAMEDENTITYLIST._serialized_start=1268 + _NAMEDENTITYLIST._serialized_end=1364 + _NAMEDENTITYGETREQUEST._serialized_start=1367 + _NAMEDENTITYGETREQUEST._serialized_end=1511 + _NAMEDENTITYUPDATEREQUEST._serialized_start=1514 + _NAMEDENTITYUPDATEREQUEST._serialized_end=1726 + _NAMEDENTITYUPDATERESPONSE._serialized_start=1728 + _NAMEDENTITYUPDATERESPONSE._serialized_end=1755 + _OBJECTGETREQUEST._serialized_start=1757 + _OBJECTGETREQUEST._serialized_end=1818 + _RESOURCELISTREQUEST._serialized_start=1821 + _RESOURCELISTREQUEST._serialized_end=2014 + _EMAILNOTIFICATION._serialized_start=2016 + _EMAILNOTIFICATION._serialized_end=2078 + _PAGERDUTYNOTIFICATION._serialized_start=2080 + _PAGERDUTYNOTIFICATION._serialized_end=2146 + _SLACKNOTIFICATION._serialized_start=2148 + _SLACKNOTIFICATION._serialized_end=2210 + _NOTIFICATION._serialized_start=2213 + _NOTIFICATION._serialized_end=2489 + _URLBLOB._serialized_start=2491 + _URLBLOB._serialized_end=2544 + _LABELS._serialized_start=2546 + _LABELS._serialized_end=2673 + _LABELS_VALUESENTRY._serialized_start=2616 + _LABELS_VALUESENTRY._serialized_end=2673 + _ANNOTATIONS._serialized_start=2676 + _ANNOTATIONS._serialized_end=2813 + _ANNOTATIONS_VALUESENTRY._serialized_start=2616 + _ANNOTATIONS_VALUESENTRY._serialized_end=2673 + _AUTHROLE._serialized_start=2815 + _AUTHROLE._serialized_end=2937 + _RAWOUTPUTDATACONFIG._serialized_start=2939 + _RAWOUTPUTDATACONFIG._serialized_end=3014 # @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/admin/common_pb2.pyi b/gen/pb_python/flyteidl/admin/common_pb2.pyi index 95b6c4804..e85d0f17d 100644 --- a/gen/pb_python/flyteidl/admin/common_pb2.pyi +++ b/gen/pb_python/flyteidl/admin/common_pb2.pyi @@ -1,5 +1,6 @@ from flyteidl.core import execution_pb2 as _execution_pb2 from flyteidl.core import identifier_pb2 as _identifier_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor diff --git a/gen/pb_python/flyteidl/admin/execution_pb2.py b/gen/pb_python/flyteidl/admin/execution_pb2.py index 628d13ded..f4edcd5d7 100644 --- a/gen/pb_python/flyteidl/admin/execution_pb2.py +++ b/gen/pb_python/flyteidl/admin/execution_pb2.py @@ -16,13 +16,14 @@ from flyteidl.core import literals_pb2 as flyteidl_dot_core_dot_literals__pb2 from flyteidl.core import execution_pb2 as flyteidl_dot_core_dot_execution__pb2 from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 +from flyteidl.core import metrics_pb2 as flyteidl_dot_core_dot_metrics__pb2 from flyteidl.core import security_pb2 as flyteidl_dot_core_dot_security__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(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\"\xc4\x01\n\x16\x45xecutionCreateRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04spec\x18\x04 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpecR\x04spec\x12\x31\n\x06inputs\x18\x05 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x06inputs\"\x99\x01\n\x18\x45xecutionRelaunchRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\'\n\x0foverwrite_cache\x18\x04 \x01(\x08R\x0eoverwriteCacheJ\x04\x08\x02\x10\x03\"\xa8\x01\n\x17\x45xecutionRecoverRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadataR\x08metadata\"U\n\x17\x45xecutionCreateResponse\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"Y\n\x1bWorkflowExecutionGetRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"\xb6\x01\n\tExecution\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x31\n\x04spec\x18\x02 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpecR\x04spec\x12:\n\x07\x63losure\x18\x03 \x01(\x0b\x32 .flyteidl.admin.ExecutionClosureR\x07\x63losure\"`\n\rExecutionList\x12\x39\n\nexecutions\x18\x01 \x03(\x0b\x32\x19.flyteidl.admin.ExecutionR\nexecutions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"e\n\x0eLiteralMapBlob\x12\x37\n\x06values\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\x06values\x12\x12\n\x03uri\x18\x02 \x01(\tH\x00R\x03uriB\x06\n\x04\x64\x61ta\"C\n\rAbortMetadata\x12\x14\n\x05\x63\x61use\x18\x01 \x01(\tR\x05\x63\x61use\x12\x1c\n\tprincipal\x18\x02 \x01(\tR\tprincipal\"\x98\x07\n\x10\x45xecutionClosure\x12>\n\x07outputs\x18\x01 \x01(\x0b\x32\x1e.flyteidl.admin.LiteralMapBlobB\x02\x18\x01H\x00R\x07outputs\x12\x35\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12%\n\x0b\x61\x62ort_cause\x18\n \x01(\tB\x02\x18\x01H\x00R\nabortCause\x12\x46\n\x0e\x61\x62ort_metadata\x18\x0c \x01(\x0b\x32\x1d.flyteidl.admin.AbortMetadataH\x00R\rabortMetadata\x12@\n\x0boutput_data\x18\r \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\noutputData\x12\x46\n\x0f\x63omputed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x0e\x63omputedInputs\x12<\n\x05phase\x18\x04 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x05phase\x12\x39\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x35\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x42\n\rnotifications\x18\t \x03(\x0b\x32\x1c.flyteidl.admin.NotificationR\rnotifications\x12:\n\x0bworkflow_id\x18\x0b \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\nworkflowId\x12]\n\x14state_change_details\x18\x0e \x01(\x0b\x32+.flyteidl.admin.ExecutionStateChangeDetailsR\x12stateChangeDetailsB\x0f\n\routput_result\"=\n\x0eSystemMetadata\x12+\n\x11\x65xecution_cluster\x18\x01 \x01(\tR\x10\x65xecutionCluster\"\xba\x04\n\x11\x45xecutionMetadata\x12\x43\n\x04mode\x18\x01 \x01(\x0e\x32/.flyteidl.admin.ExecutionMetadata.ExecutionModeR\x04mode\x12\x1c\n\tprincipal\x18\x02 \x01(\tR\tprincipal\x12\x18\n\x07nesting\x18\x03 \x01(\rR\x07nesting\x12=\n\x0cscheduled_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bscheduledAt\x12Z\n\x15parent_node_execution\x18\x05 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x13parentNodeExecution\x12[\n\x13reference_execution\x18\x10 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x12referenceExecution\x12G\n\x0fsystem_metadata\x18\x11 \x01(\x0b\x32\x1e.flyteidl.admin.SystemMetadataR\x0esystemMetadata\"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\"V\n\x10NotificationList\x12\x42\n\rnotifications\x18\x01 \x03(\x0b\x32\x1c.flyteidl.admin.NotificationR\rnotifications\"\xd2\x07\n\rExecutionSpec\x12:\n\x0blaunch_plan\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\nlaunchPlan\x12\x35\n\x06inputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x06inputs\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadataR\x08metadata\x12H\n\rnotifications\x18\x05 \x01(\x0b\x32 .flyteidl.admin.NotificationListH\x00R\rnotifications\x12!\n\x0b\x64isable_all\x18\x06 \x01(\x08H\x00R\ndisableAll\x12.\n\x06labels\x18\x07 \x01(\x0b\x32\x16.flyteidl.admin.LabelsR\x06labels\x12=\n\x0b\x61nnotations\x18\x08 \x01(\x0b\x32\x1b.flyteidl.admin.AnnotationsR\x0b\x61nnotations\x12I\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContextR\x0fsecurityContext\x12\x39\n\tauth_role\x18\x10 \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01R\x08\x61uthRole\x12M\n\x12quality_of_service\x18\x11 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12\'\n\x0fmax_parallelism\x18\x12 \x01(\x05R\x0emaxParallelism\x12X\n\x16raw_output_data_config\x18\x13 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfigR\x13rawOutputDataConfig\x12P\n\x12\x63luster_assignment\x18\x14 \x01(\x0b\x32!.flyteidl.admin.ClusterAssignmentR\x11\x63lusterAssignment\x12@\n\rinterruptible\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\rinterruptible\x12\'\n\x0foverwrite_cache\x18\x16 \x01(\x08R\x0eoverwriteCacheB\x18\n\x16notification_overridesJ\x04\x08\x04\x10\x05\"m\n\x19\x45xecutionTerminateRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x14\n\x05\x63\x61use\x18\x02 \x01(\tR\x05\x63\x61use\"\x1c\n\x1a\x45xecutionTerminateResponse\"]\n\x1fWorkflowExecutionGetDataRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"\x88\x02\n WorkflowExecutionGetDataResponse\x12\x35\n\x07outputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x07outputs\x12\x33\n\x06inputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x06inputs\x12:\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\nfullInputs\x12<\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ullOutputs\"\x8a\x01\n\x16\x45xecutionUpdateRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x34\n\x05state\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionStateR\x05state\"\xae\x01\n\x1b\x45xecutionStateChangeDetails\x12\x34\n\x05state\x18\x01 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionStateR\x05state\x12;\n\x0boccurred_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1c\n\tprincipal\x18\x03 \x01(\tR\tprincipal\"\x19\n\x17\x45xecutionUpdateResponse*>\n\x0e\x45xecutionState\x12\x14\n\x10\x45XECUTION_ACTIVE\x10\x00\x12\x16\n\x12\x45XECUTION_ARCHIVED\x10\x01\x42\xb4\x01\n\x12\x63om.flyteidl.adminB\x0e\x45xecutionProtoP\x01Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(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\x1b\x66lyteidl/core/metrics.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xc4\x01\n\x16\x45xecutionCreateRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x31\n\x04spec\x18\x04 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpecR\x04spec\x12\x31\n\x06inputs\x18\x05 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x06inputs\"\x99\x01\n\x18\x45xecutionRelaunchRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\'\n\x0foverwrite_cache\x18\x04 \x01(\x08R\x0eoverwriteCacheJ\x04\x08\x02\x10\x03\"\xa8\x01\n\x17\x45xecutionRecoverRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadataR\x08metadata\"U\n\x17\x45xecutionCreateResponse\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"Y\n\x1bWorkflowExecutionGetRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"\xb6\x01\n\tExecution\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x31\n\x04spec\x18\x02 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpecR\x04spec\x12:\n\x07\x63losure\x18\x03 \x01(\x0b\x32 .flyteidl.admin.ExecutionClosureR\x07\x63losure\"`\n\rExecutionList\x12\x39\n\nexecutions\x18\x01 \x03(\x0b\x32\x19.flyteidl.admin.ExecutionR\nexecutions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"e\n\x0eLiteralMapBlob\x12\x37\n\x06values\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\x06values\x12\x12\n\x03uri\x18\x02 \x01(\tH\x00R\x03uriB\x06\n\x04\x64\x61ta\"C\n\rAbortMetadata\x12\x14\n\x05\x63\x61use\x18\x01 \x01(\tR\x05\x63\x61use\x12\x1c\n\tprincipal\x18\x02 \x01(\tR\tprincipal\"\x98\x07\n\x10\x45xecutionClosure\x12>\n\x07outputs\x18\x01 \x01(\x0b\x32\x1e.flyteidl.admin.LiteralMapBlobB\x02\x18\x01H\x00R\x07outputs\x12\x35\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12%\n\x0b\x61\x62ort_cause\x18\n \x01(\tB\x02\x18\x01H\x00R\nabortCause\x12\x46\n\x0e\x61\x62ort_metadata\x18\x0c \x01(\x0b\x32\x1d.flyteidl.admin.AbortMetadataH\x00R\rabortMetadata\x12@\n\x0boutput_data\x18\r \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00R\noutputData\x12\x46\n\x0f\x63omputed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x0e\x63omputedInputs\x12<\n\x05phase\x18\x04 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x05phase\x12\x39\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x35\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x42\n\rnotifications\x18\t \x03(\x0b\x32\x1c.flyteidl.admin.NotificationR\rnotifications\x12:\n\x0bworkflow_id\x18\x0b \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\nworkflowId\x12]\n\x14state_change_details\x18\x0e \x01(\x0b\x32+.flyteidl.admin.ExecutionStateChangeDetailsR\x12stateChangeDetailsB\x0f\n\routput_result\"=\n\x0eSystemMetadata\x12+\n\x11\x65xecution_cluster\x18\x01 \x01(\tR\x10\x65xecutionCluster\"\xba\x04\n\x11\x45xecutionMetadata\x12\x43\n\x04mode\x18\x01 \x01(\x0e\x32/.flyteidl.admin.ExecutionMetadata.ExecutionModeR\x04mode\x12\x1c\n\tprincipal\x18\x02 \x01(\tR\tprincipal\x12\x18\n\x07nesting\x18\x03 \x01(\rR\x07nesting\x12=\n\x0cscheduled_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bscheduledAt\x12Z\n\x15parent_node_execution\x18\x05 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x13parentNodeExecution\x12[\n\x13reference_execution\x18\x10 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x12referenceExecution\x12G\n\x0fsystem_metadata\x18\x11 \x01(\x0b\x32\x1e.flyteidl.admin.SystemMetadataR\x0esystemMetadata\"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\"V\n\x10NotificationList\x12\x42\n\rnotifications\x18\x01 \x03(\x0b\x32\x1c.flyteidl.admin.NotificationR\rnotifications\"\xd2\x07\n\rExecutionSpec\x12:\n\x0blaunch_plan\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\nlaunchPlan\x12\x35\n\x06inputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01R\x06inputs\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadataR\x08metadata\x12H\n\rnotifications\x18\x05 \x01(\x0b\x32 .flyteidl.admin.NotificationListH\x00R\rnotifications\x12!\n\x0b\x64isable_all\x18\x06 \x01(\x08H\x00R\ndisableAll\x12.\n\x06labels\x18\x07 \x01(\x0b\x32\x16.flyteidl.admin.LabelsR\x06labels\x12=\n\x0b\x61nnotations\x18\x08 \x01(\x0b\x32\x1b.flyteidl.admin.AnnotationsR\x0b\x61nnotations\x12I\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContextR\x0fsecurityContext\x12\x39\n\tauth_role\x18\x10 \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01R\x08\x61uthRole\x12M\n\x12quality_of_service\x18\x11 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceR\x10qualityOfService\x12\'\n\x0fmax_parallelism\x18\x12 \x01(\x05R\x0emaxParallelism\x12X\n\x16raw_output_data_config\x18\x13 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfigR\x13rawOutputDataConfig\x12P\n\x12\x63luster_assignment\x18\x14 \x01(\x0b\x32!.flyteidl.admin.ClusterAssignmentR\x11\x63lusterAssignment\x12@\n\rinterruptible\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\rinterruptible\x12\'\n\x0foverwrite_cache\x18\x16 \x01(\x08R\x0eoverwriteCacheB\x18\n\x16notification_overridesJ\x04\x08\x04\x10\x05\"m\n\x19\x45xecutionTerminateRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x14\n\x05\x63\x61use\x18\x02 \x01(\tR\x05\x63\x61use\"\x1c\n\x1a\x45xecutionTerminateResponse\"]\n\x1fWorkflowExecutionGetDataRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\"\x88\x02\n WorkflowExecutionGetDataResponse\x12\x35\n\x07outputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x07outputs\x12\x33\n\x06inputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01R\x06inputs\x12:\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\nfullInputs\x12<\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapR\x0b\x66ullOutputs\"\x8a\x01\n\x16\x45xecutionUpdateRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x34\n\x05state\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionStateR\x05state\"\xae\x01\n\x1b\x45xecutionStateChangeDetails\x12\x34\n\x05state\x18\x01 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionStateR\x05state\x12;\n\x0boccurred_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1c\n\tprincipal\x18\x03 \x01(\tR\tprincipal\"\x19\n\x17\x45xecutionUpdateResponse\"v\n\"WorkflowExecutionGetMetricsRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x02id\x12\x14\n\x05\x64\x65pth\x18\x02 \x01(\x05R\x05\x64\x65pth\"N\n#WorkflowExecutionGetMetricsResponse\x12\'\n\x04span\x18\x01 \x01(\x0b\x32\x13.flyteidl.core.SpanR\x04span*>\n\x0e\x45xecutionState\x12\x14\n\x10\x45XECUTION_ACTIVE\x10\x00\x12\x16\n\x12\x45XECUTION_ARCHIVED\x10\x01\x42\xb4\x01\n\x12\x63om.flyteidl.adminB\x0e\x45xecutionProtoP\x01Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flyteidl.admin.execution_pb2', globals()) @@ -48,50 +49,54 @@ _WORKFLOWEXECUTIONGETDATARESPONSE.fields_by_name['outputs']._serialized_options = b'\030\001' _WORKFLOWEXECUTIONGETDATARESPONSE.fields_by_name['inputs']._options = None _WORKFLOWEXECUTIONGETDATARESPONSE.fields_by_name['inputs']._serialized_options = b'\030\001' - _EXECUTIONSTATE._serialized_start=4975 - _EXECUTIONSTATE._serialized_end=5037 - _EXECUTIONCREATEREQUEST._serialized_start=341 - _EXECUTIONCREATEREQUEST._serialized_end=537 - _EXECUTIONRELAUNCHREQUEST._serialized_start=540 - _EXECUTIONRELAUNCHREQUEST._serialized_end=693 - _EXECUTIONRECOVERREQUEST._serialized_start=696 - _EXECUTIONRECOVERREQUEST._serialized_end=864 - _EXECUTIONCREATERESPONSE._serialized_start=866 - _EXECUTIONCREATERESPONSE._serialized_end=951 - _WORKFLOWEXECUTIONGETREQUEST._serialized_start=953 - _WORKFLOWEXECUTIONGETREQUEST._serialized_end=1042 - _EXECUTION._serialized_start=1045 - _EXECUTION._serialized_end=1227 - _EXECUTIONLIST._serialized_start=1229 - _EXECUTIONLIST._serialized_end=1325 - _LITERALMAPBLOB._serialized_start=1327 - _LITERALMAPBLOB._serialized_end=1428 - _ABORTMETADATA._serialized_start=1430 - _ABORTMETADATA._serialized_end=1497 - _EXECUTIONCLOSURE._serialized_start=1500 - _EXECUTIONCLOSURE._serialized_end=2420 - _SYSTEMMETADATA._serialized_start=2422 - _SYSTEMMETADATA._serialized_end=2483 - _EXECUTIONMETADATA._serialized_start=2486 - _EXECUTIONMETADATA._serialized_end=3056 - _EXECUTIONMETADATA_EXECUTIONMODE._serialized_start=2953 - _EXECUTIONMETADATA_EXECUTIONMODE._serialized_end=3056 - _NOTIFICATIONLIST._serialized_start=3058 - _NOTIFICATIONLIST._serialized_end=3144 - _EXECUTIONSPEC._serialized_start=3147 - _EXECUTIONSPEC._serialized_end=4125 - _EXECUTIONTERMINATEREQUEST._serialized_start=4127 - _EXECUTIONTERMINATEREQUEST._serialized_end=4236 - _EXECUTIONTERMINATERESPONSE._serialized_start=4238 - _EXECUTIONTERMINATERESPONSE._serialized_end=4266 - _WORKFLOWEXECUTIONGETDATAREQUEST._serialized_start=4268 - _WORKFLOWEXECUTIONGETDATAREQUEST._serialized_end=4361 - _WORKFLOWEXECUTIONGETDATARESPONSE._serialized_start=4364 - _WORKFLOWEXECUTIONGETDATARESPONSE._serialized_end=4628 - _EXECUTIONUPDATEREQUEST._serialized_start=4631 - _EXECUTIONUPDATEREQUEST._serialized_end=4769 - _EXECUTIONSTATECHANGEDETAILS._serialized_start=4772 - _EXECUTIONSTATECHANGEDETAILS._serialized_end=4946 - _EXECUTIONUPDATERESPONSE._serialized_start=4948 - _EXECUTIONUPDATERESPONSE._serialized_end=4973 + _EXECUTIONSTATE._serialized_start=5204 + _EXECUTIONSTATE._serialized_end=5266 + _EXECUTIONCREATEREQUEST._serialized_start=370 + _EXECUTIONCREATEREQUEST._serialized_end=566 + _EXECUTIONRELAUNCHREQUEST._serialized_start=569 + _EXECUTIONRELAUNCHREQUEST._serialized_end=722 + _EXECUTIONRECOVERREQUEST._serialized_start=725 + _EXECUTIONRECOVERREQUEST._serialized_end=893 + _EXECUTIONCREATERESPONSE._serialized_start=895 + _EXECUTIONCREATERESPONSE._serialized_end=980 + _WORKFLOWEXECUTIONGETREQUEST._serialized_start=982 + _WORKFLOWEXECUTIONGETREQUEST._serialized_end=1071 + _EXECUTION._serialized_start=1074 + _EXECUTION._serialized_end=1256 + _EXECUTIONLIST._serialized_start=1258 + _EXECUTIONLIST._serialized_end=1354 + _LITERALMAPBLOB._serialized_start=1356 + _LITERALMAPBLOB._serialized_end=1457 + _ABORTMETADATA._serialized_start=1459 + _ABORTMETADATA._serialized_end=1526 + _EXECUTIONCLOSURE._serialized_start=1529 + _EXECUTIONCLOSURE._serialized_end=2449 + _SYSTEMMETADATA._serialized_start=2451 + _SYSTEMMETADATA._serialized_end=2512 + _EXECUTIONMETADATA._serialized_start=2515 + _EXECUTIONMETADATA._serialized_end=3085 + _EXECUTIONMETADATA_EXECUTIONMODE._serialized_start=2982 + _EXECUTIONMETADATA_EXECUTIONMODE._serialized_end=3085 + _NOTIFICATIONLIST._serialized_start=3087 + _NOTIFICATIONLIST._serialized_end=3173 + _EXECUTIONSPEC._serialized_start=3176 + _EXECUTIONSPEC._serialized_end=4154 + _EXECUTIONTERMINATEREQUEST._serialized_start=4156 + _EXECUTIONTERMINATEREQUEST._serialized_end=4265 + _EXECUTIONTERMINATERESPONSE._serialized_start=4267 + _EXECUTIONTERMINATERESPONSE._serialized_end=4295 + _WORKFLOWEXECUTIONGETDATAREQUEST._serialized_start=4297 + _WORKFLOWEXECUTIONGETDATAREQUEST._serialized_end=4390 + _WORKFLOWEXECUTIONGETDATARESPONSE._serialized_start=4393 + _WORKFLOWEXECUTIONGETDATARESPONSE._serialized_end=4657 + _EXECUTIONUPDATEREQUEST._serialized_start=4660 + _EXECUTIONUPDATEREQUEST._serialized_end=4798 + _EXECUTIONSTATECHANGEDETAILS._serialized_start=4801 + _EXECUTIONSTATECHANGEDETAILS._serialized_end=4975 + _EXECUTIONUPDATERESPONSE._serialized_start=4977 + _EXECUTIONUPDATERESPONSE._serialized_end=5002 + _WORKFLOWEXECUTIONGETMETRICSREQUEST._serialized_start=5004 + _WORKFLOWEXECUTIONGETMETRICSREQUEST._serialized_end=5122 + _WORKFLOWEXECUTIONGETMETRICSRESPONSE._serialized_start=5124 + _WORKFLOWEXECUTIONGETMETRICSRESPONSE._serialized_end=5202 # @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/admin/execution_pb2.pyi b/gen/pb_python/flyteidl/admin/execution_pb2.pyi index 20c098886..a7ec801d3 100644 --- a/gen/pb_python/flyteidl/admin/execution_pb2.pyi +++ b/gen/pb_python/flyteidl/admin/execution_pb2.pyi @@ -3,6 +3,7 @@ from flyteidl.admin import common_pb2 as _common_pb2 from flyteidl.core import literals_pb2 as _literals_pb2 from flyteidl.core import execution_pb2 as _execution_pb2 from flyteidl.core import identifier_pb2 as _identifier_pb2 +from flyteidl.core import metrics_pb2 as _metrics_pb2 from flyteidl.core import security_pb2 as _security_pb2 from google.protobuf import duration_pb2 as _duration_pb2 from google.protobuf import timestamp_pb2 as _timestamp_pb2 @@ -247,6 +248,20 @@ class WorkflowExecutionGetDataResponse(_message.Message): outputs: _common_pb2.UrlBlob def __init__(self, outputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., inputs: _Optional[_Union[_common_pb2.UrlBlob, _Mapping]] = ..., full_inputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., full_outputs: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ...) -> None: ... +class WorkflowExecutionGetMetricsRequest(_message.Message): + __slots__ = ["depth", "id"] + DEPTH_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + depth: int + id: _identifier_pb2.WorkflowExecutionIdentifier + def __init__(self, id: _Optional[_Union[_identifier_pb2.WorkflowExecutionIdentifier, _Mapping]] = ..., depth: _Optional[int] = ...) -> None: ... + +class WorkflowExecutionGetMetricsResponse(_message.Message): + __slots__ = ["span"] + SPAN_FIELD_NUMBER: _ClassVar[int] + span: _metrics_pb2.Span + def __init__(self, span: _Optional[_Union[_metrics_pb2.Span, _Mapping]] = ...) -> None: ... + class WorkflowExecutionGetRequest(_message.Message): __slots__ = ["id"] ID_FIELD_NUMBER: _ClassVar[int] diff --git a/gen/pb_python/flyteidl/core/metrics_pb2.py b/gen/pb_python/flyteidl/core/metrics_pb2.py new file mode 100644 index 000000000..f66e8d6f9 --- /dev/null +++ b/gen/pb_python/flyteidl/core/metrics_pb2.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: flyteidl/core/metrics.proto +"""Generated protocol buffer code.""" +from google.protobuf.internal import builder as _builder +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +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 google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lyteidl/core/metrics.proto\x12\rflyteidl.core\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xa3\x03\n\x04Span\x12\x39\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12M\n\x0bworkflow_id\x18\x03 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierH\x00R\nworkflowId\x12\x41\n\x07node_id\x18\x04 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierH\x00R\x06nodeId\x12\x41\n\x07task_id\x18\x05 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierH\x00R\x06taskId\x12#\n\x0coperation_id\x18\x06 \x01(\tH\x00R\x0boperationId\x12)\n\x05spans\x18\x07 \x03(\x0b\x32\x13.flyteidl.core.SpanR\x05spansB\x04\n\x02idB\xac\x01\n\x11\x63om.flyteidl.coreB\x0cMetricsProtoP\x01Z4github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') + +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flyteidl.core.metrics_pb2', globals()) +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\021com.flyteidl.coreB\014MetricsProtoP\001Z4github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core\242\002\003FCX\252\002\rFlyteidl.Core\312\002\rFlyteidl\\Core\342\002\031Flyteidl\\Core\\GPBMetadata\352\002\016Flyteidl::Core' + _SPAN._serialized_start=112 + _SPAN._serialized_end=531 +# @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/core/metrics_pb2.pyi b/gen/pb_python/flyteidl/core/metrics_pb2.pyi new file mode 100644 index 000000000..712e79e58 --- /dev/null +++ b/gen/pb_python/flyteidl/core/metrics_pb2.pyi @@ -0,0 +1,26 @@ +from flyteidl.core import identifier_pb2 as _identifier_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class Span(_message.Message): + __slots__ = ["end_time", "node_id", "operation_id", "spans", "start_time", "task_id", "workflow_id"] + END_TIME_FIELD_NUMBER: _ClassVar[int] + NODE_ID_FIELD_NUMBER: _ClassVar[int] + OPERATION_ID_FIELD_NUMBER: _ClassVar[int] + SPANS_FIELD_NUMBER: _ClassVar[int] + START_TIME_FIELD_NUMBER: _ClassVar[int] + TASK_ID_FIELD_NUMBER: _ClassVar[int] + WORKFLOW_ID_FIELD_NUMBER: _ClassVar[int] + end_time: _timestamp_pb2.Timestamp + node_id: _identifier_pb2.NodeExecutionIdentifier + operation_id: str + spans: _containers.RepeatedCompositeFieldContainer[Span] + start_time: _timestamp_pb2.Timestamp + task_id: _identifier_pb2.TaskExecutionIdentifier + workflow_id: _identifier_pb2.WorkflowExecutionIdentifier + def __init__(self, start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., workflow_id: _Optional[_Union[_identifier_pb2.WorkflowExecutionIdentifier, _Mapping]] = ..., node_id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ..., task_id: _Optional[_Union[_identifier_pb2.TaskExecutionIdentifier, _Mapping]] = ..., operation_id: _Optional[str] = ..., spans: _Optional[_Iterable[_Union[Span, _Mapping]]] = ...) -> None: ... diff --git a/gen/pb_python/flyteidl/core/metrics_pb2_grpc.py b/gen/pb_python/flyteidl/core/metrics_pb2_grpc.py new file mode 100644 index 000000000..2daafffeb --- /dev/null +++ b/gen/pb_python/flyteidl/core/metrics_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/gen/pb_python/flyteidl/event/event_pb2.py b/gen/pb_python/flyteidl/event/event_pb2.py index d8c632b9a..f90594a54 100644 --- a/gen/pb_python/flyteidl/event/event_pb2.py +++ b/gen/pb_python/flyteidl/event/event_pb2.py @@ -20,7 +20,7 @@ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/event/event.proto\x12\x0e\x66lyteidl.event\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1b\x66lyteidl/core/catalog.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xaa\x03\n\x16WorkflowExecutionEvent\x12M\n\x0c\x65xecution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x0b\x65xecutionId\x12\x1f\n\x0bproducer_id\x18\x02 \x01(\tR\nproducerId\x12<\n\x05phase\x18\x03 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x05phase\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1f\n\noutput_uri\x18\x05 \x01(\tH\x00R\toutputUri\x12\x35\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12<\n\x0boutput_data\x18\x07 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\noutputDataB\x0f\n\routput_result\"\xd2\x08\n\x12NodeExecutionEvent\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\x12\x1f\n\x0bproducer_id\x18\x02 \x01(\tR\nproducerId\x12\x38\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.NodeExecution.PhaseR\x05phase\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1d\n\tinput_uri\x18\x05 \x01(\tH\x00R\x08inputUri\x12:\n\ninput_data\x18\x14 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\tinputData\x12\x1f\n\noutput_uri\x18\x06 \x01(\tH\x01R\toutputUri\x12\x35\n\x05\x65rror\x18\x07 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x01R\x05\x65rror\x12<\n\x0boutput_data\x18\x0f \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x01R\noutputData\x12\\\n\x16workflow_node_metadata\x18\x08 \x01(\x0b\x32$.flyteidl.event.WorkflowNodeMetadataH\x02R\x14workflowNodeMetadata\x12P\n\x12task_node_metadata\x18\x0e \x01(\x0b\x32 .flyteidl.event.TaskNodeMetadataH\x02R\x10taskNodeMetadata\x12]\n\x14parent_task_metadata\x18\t \x01(\x0b\x32+.flyteidl.event.ParentTaskExecutionMetadataR\x12parentTaskMetadata\x12]\n\x14parent_node_metadata\x18\n \x01(\x0b\x32+.flyteidl.event.ParentNodeExecutionMetadataR\x12parentNodeMetadata\x12\x1f\n\x0bretry_group\x18\x0b \x01(\tR\nretryGroup\x12 \n\x0cspec_node_id\x18\x0c \x01(\tR\nspecNodeId\x12\x1b\n\tnode_name\x18\r \x01(\tR\x08nodeName\x12#\n\revent_version\x18\x10 \x01(\x05R\x0c\x65ventVersion\x12\x1b\n\tis_parent\x18\x11 \x01(\x08R\x08isParent\x12\x1d\n\nis_dynamic\x18\x12 \x01(\x08R\tisDynamic\x12\x19\n\x08\x64\x65\x63k_uri\x18\x13 \x01(\tR\x07\x64\x65\x63kUriB\r\n\x0binput_valueB\x0f\n\routput_resultB\x11\n\x0ftarget_metadata\"e\n\x14WorkflowNodeMetadata\x12M\n\x0c\x65xecution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x0b\x65xecutionId\"\xf1\x02\n\x10TaskNodeMetadata\x12\x44\n\x0c\x63\x61\x63he_status\x18\x01 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatusR\x0b\x63\x61\x63heStatus\x12?\n\x0b\x63\x61talog_key\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.CatalogMetadataR\ncatalogKey\x12W\n\x12reservation_status\x18\x03 \x01(\x0e\x32(.flyteidl.core.CatalogReservation.StatusR\x11reservationStatus\x12%\n\x0e\x63heckpoint_uri\x18\x04 \x01(\tR\rcheckpointUri\x12V\n\x10\x64ynamic_workflow\x18\x10 \x01(\x0b\x32+.flyteidl.event.DynamicWorkflowNodeMetadataR\x0f\x64ynamicWorkflow\"\xce\x01\n\x1b\x44ynamicWorkflowNodeMetadata\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12S\n\x11\x63ompiled_workflow\x18\x02 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosureR\x10\x63ompiledWorkflow\x12/\n\x14\x64ynamic_job_spec_uri\x18\x03 \x01(\tR\x11\x64ynamicJobSpecUri\"U\n\x1bParentTaskExecutionMetadata\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"6\n\x1bParentNodeExecutionMetadata\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\"\x9f\x07\n\x12TaskExecutionEvent\x12\x32\n\x07task_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x06taskId\x12_\n\x18parent_node_execution_id\x18\x02 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x15parentNodeExecutionId\x12#\n\rretry_attempt\x18\x03 \x01(\rR\x0cretryAttempt\x12\x38\n\x05phase\x18\x04 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12\x1f\n\x0bproducer_id\x18\x05 \x01(\tR\nproducerId\x12*\n\x04logs\x18\x06 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\x12;\n\x0boccurred_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1d\n\tinput_uri\x18\x08 \x01(\tH\x00R\x08inputUri\x12:\n\ninput_data\x18\x13 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\tinputData\x12\x1f\n\noutput_uri\x18\t \x01(\tH\x01R\toutputUri\x12\x35\n\x05\x65rror\x18\n \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x01R\x05\x65rror\x12<\n\x0boutput_data\x18\x11 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x01R\noutputData\x12\x38\n\x0b\x63ustom_info\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructR\ncustomInfo\x12#\n\rphase_version\x18\x0c \x01(\rR\x0cphaseVersion\x12\x16\n\x06reason\x18\r \x01(\tR\x06reason\x12\x1b\n\ttask_type\x18\x0e \x01(\tR\x08taskType\x12\x41\n\x08metadata\x18\x10 \x01(\x0b\x32%.flyteidl.event.TaskExecutionMetadataR\x08metadata\x12#\n\revent_version\x18\x12 \x01(\x05R\x0c\x65ventVersionB\r\n\x0binput_valueB\x0f\n\routput_result\"\x9e\x02\n\x14\x45xternalResourceInfo\x12\x1f\n\x0b\x65xternal_id\x18\x01 \x01(\tR\nexternalId\x12\x14\n\x05index\x18\x02 \x01(\rR\x05index\x12#\n\rretry_attempt\x18\x03 \x01(\rR\x0cretryAttempt\x12\x38\n\x05phase\x18\x04 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12\x44\n\x0c\x63\x61\x63he_status\x18\x05 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatusR\x0b\x63\x61\x63heStatus\x12*\n\x04logs\x18\x06 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\"[\n\x10ResourcePoolInfo\x12)\n\x10\x61llocation_token\x18\x01 \x01(\tR\x0f\x61llocationToken\x12\x1c\n\tnamespace\x18\x02 \x01(\tR\tnamespace\"\x9d\x03\n\x15TaskExecutionMetadata\x12%\n\x0egenerated_name\x18\x01 \x01(\tR\rgeneratedName\x12S\n\x12\x65xternal_resources\x18\x02 \x03(\x0b\x32$.flyteidl.event.ExternalResourceInfoR\x11\x65xternalResources\x12N\n\x12resource_pool_info\x18\x03 \x03(\x0b\x32 .flyteidl.event.ResourcePoolInfoR\x10resourcePoolInfo\x12+\n\x11plugin_identifier\x18\x04 \x01(\tR\x10pluginIdentifier\x12Z\n\x0einstance_class\x18\x10 \x01(\x0e\x32\x33.flyteidl.event.TaskExecutionMetadata.InstanceClassR\rinstanceClass\"/\n\rInstanceClass\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x11\n\rINTERRUPTIBLE\x10\x01\x42\xb0\x01\n\x12\x63om.flyteidl.eventB\nEventProtoP\x01Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/event\xa2\x02\x03\x46\x45X\xaa\x02\x0e\x46lyteidl.Event\xca\x02\x0e\x46lyteidl\\Event\xe2\x02\x1a\x46lyteidl\\Event\\GPBMetadata\xea\x02\x0f\x46lyteidl::Eventb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lyteidl/event/event.proto\x12\x0e\x66lyteidl.event\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1c\x66lyteidl/core/compiler.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1b\x66lyteidl/core/catalog.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xaa\x03\n\x16WorkflowExecutionEvent\x12M\n\x0c\x65xecution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x0b\x65xecutionId\x12\x1f\n\x0bproducer_id\x18\x02 \x01(\tR\nproducerId\x12<\n\x05phase\x18\x03 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x05phase\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1f\n\noutput_uri\x18\x05 \x01(\tH\x00R\toutputUri\x12\x35\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00R\x05\x65rror\x12<\n\x0boutput_data\x18\x07 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\noutputDataB\x0f\n\routput_result\"\x8f\t\n\x12NodeExecutionEvent\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x02id\x12\x1f\n\x0bproducer_id\x18\x02 \x01(\tR\nproducerId\x12\x38\n\x05phase\x18\x03 \x01(\x0e\x32\".flyteidl.core.NodeExecution.PhaseR\x05phase\x12;\n\x0boccurred_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1d\n\tinput_uri\x18\x05 \x01(\tH\x00R\x08inputUri\x12:\n\ninput_data\x18\x14 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\tinputData\x12\x1f\n\noutput_uri\x18\x06 \x01(\tH\x01R\toutputUri\x12\x35\n\x05\x65rror\x18\x07 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x01R\x05\x65rror\x12<\n\x0boutput_data\x18\x0f \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x01R\noutputData\x12\\\n\x16workflow_node_metadata\x18\x08 \x01(\x0b\x32$.flyteidl.event.WorkflowNodeMetadataH\x02R\x14workflowNodeMetadata\x12P\n\x12task_node_metadata\x18\x0e \x01(\x0b\x32 .flyteidl.event.TaskNodeMetadataH\x02R\x10taskNodeMetadata\x12]\n\x14parent_task_metadata\x18\t \x01(\x0b\x32+.flyteidl.event.ParentTaskExecutionMetadataR\x12parentTaskMetadata\x12]\n\x14parent_node_metadata\x18\n \x01(\x0b\x32+.flyteidl.event.ParentNodeExecutionMetadataR\x12parentNodeMetadata\x12\x1f\n\x0bretry_group\x18\x0b \x01(\tR\nretryGroup\x12 \n\x0cspec_node_id\x18\x0c \x01(\tR\nspecNodeId\x12\x1b\n\tnode_name\x18\r \x01(\tR\x08nodeName\x12#\n\revent_version\x18\x10 \x01(\x05R\x0c\x65ventVersion\x12\x1b\n\tis_parent\x18\x11 \x01(\x08R\x08isParent\x12\x1d\n\nis_dynamic\x18\x12 \x01(\x08R\tisDynamic\x12\x19\n\x08\x64\x65\x63k_uri\x18\x13 \x01(\tR\x07\x64\x65\x63kUri\x12;\n\x0breported_at\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nreportedAtB\r\n\x0binput_valueB\x0f\n\routput_resultB\x11\n\x0ftarget_metadata\"e\n\x14WorkflowNodeMetadata\x12M\n\x0c\x65xecution_id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifierR\x0b\x65xecutionId\"\xf1\x02\n\x10TaskNodeMetadata\x12\x44\n\x0c\x63\x61\x63he_status\x18\x01 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatusR\x0b\x63\x61\x63heStatus\x12?\n\x0b\x63\x61talog_key\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.CatalogMetadataR\ncatalogKey\x12W\n\x12reservation_status\x18\x03 \x01(\x0e\x32(.flyteidl.core.CatalogReservation.StatusR\x11reservationStatus\x12%\n\x0e\x63heckpoint_uri\x18\x04 \x01(\tR\rcheckpointUri\x12V\n\x10\x64ynamic_workflow\x18\x10 \x01(\x0b\x32+.flyteidl.event.DynamicWorkflowNodeMetadataR\x0f\x64ynamicWorkflow\"\xce\x01\n\x1b\x44ynamicWorkflowNodeMetadata\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\x12S\n\x11\x63ompiled_workflow\x18\x02 \x01(\x0b\x32&.flyteidl.core.CompiledWorkflowClosureR\x10\x63ompiledWorkflow\x12/\n\x14\x64ynamic_job_spec_uri\x18\x03 \x01(\tR\x11\x64ynamicJobSpecUri\"U\n\x1bParentTaskExecutionMetadata\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierR\x02id\"6\n\x1bParentNodeExecutionMetadata\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\"\xdc\x07\n\x12TaskExecutionEvent\x12\x32\n\x07task_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x06taskId\x12_\n\x18parent_node_execution_id\x18\x02 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifierR\x15parentNodeExecutionId\x12#\n\rretry_attempt\x18\x03 \x01(\rR\x0cretryAttempt\x12\x38\n\x05phase\x18\x04 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12\x1f\n\x0bproducer_id\x18\x05 \x01(\tR\nproducerId\x12*\n\x04logs\x18\x06 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\x12;\n\x0boccurred_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1d\n\tinput_uri\x18\x08 \x01(\tH\x00R\x08inputUri\x12:\n\ninput_data\x18\x13 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\tinputData\x12\x1f\n\noutput_uri\x18\t \x01(\tH\x01R\toutputUri\x12\x35\n\x05\x65rror\x18\n \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x01R\x05\x65rror\x12<\n\x0boutput_data\x18\x11 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x01R\noutputData\x12\x38\n\x0b\x63ustom_info\x18\x0b \x01(\x0b\x32\x17.google.protobuf.StructR\ncustomInfo\x12#\n\rphase_version\x18\x0c \x01(\rR\x0cphaseVersion\x12\x16\n\x06reason\x18\r \x01(\tR\x06reason\x12\x1b\n\ttask_type\x18\x0e \x01(\tR\x08taskType\x12\x41\n\x08metadata\x18\x10 \x01(\x0b\x32%.flyteidl.event.TaskExecutionMetadataR\x08metadata\x12#\n\revent_version\x18\x12 \x01(\x05R\x0c\x65ventVersion\x12;\n\x0breported_at\x18\x14 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nreportedAtB\r\n\x0binput_valueB\x0f\n\routput_result\"\x9e\x02\n\x14\x45xternalResourceInfo\x12\x1f\n\x0b\x65xternal_id\x18\x01 \x01(\tR\nexternalId\x12\x14\n\x05index\x18\x02 \x01(\rR\x05index\x12#\n\rretry_attempt\x18\x03 \x01(\rR\x0cretryAttempt\x12\x38\n\x05phase\x18\x04 \x01(\x0e\x32\".flyteidl.core.TaskExecution.PhaseR\x05phase\x12\x44\n\x0c\x63\x61\x63he_status\x18\x05 \x01(\x0e\x32!.flyteidl.core.CatalogCacheStatusR\x0b\x63\x61\x63heStatus\x12*\n\x04logs\x18\x06 \x03(\x0b\x32\x16.flyteidl.core.TaskLogR\x04logs\"[\n\x10ResourcePoolInfo\x12)\n\x10\x61llocation_token\x18\x01 \x01(\tR\x0f\x61llocationToken\x12\x1c\n\tnamespace\x18\x02 \x01(\tR\tnamespace\"\x9d\x03\n\x15TaskExecutionMetadata\x12%\n\x0egenerated_name\x18\x01 \x01(\tR\rgeneratedName\x12S\n\x12\x65xternal_resources\x18\x02 \x03(\x0b\x32$.flyteidl.event.ExternalResourceInfoR\x11\x65xternalResources\x12N\n\x12resource_pool_info\x18\x03 \x03(\x0b\x32 .flyteidl.event.ResourcePoolInfoR\x10resourcePoolInfo\x12+\n\x11plugin_identifier\x18\x04 \x01(\tR\x10pluginIdentifier\x12Z\n\x0einstance_class\x18\x10 \x01(\x0e\x32\x33.flyteidl.event.TaskExecutionMetadata.InstanceClassR\rinstanceClass\"/\n\rInstanceClass\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x11\n\rINTERRUPTIBLE\x10\x01\x42\xb0\x01\n\x12\x63om.flyteidl.eventB\nEventProtoP\x01Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/event\xa2\x02\x03\x46\x45X\xaa\x02\x0e\x46lyteidl.Event\xca\x02\x0e\x46lyteidl\\Event\xe2\x02\x1a\x46lyteidl\\Event\\GPBMetadata\xea\x02\x0f\x46lyteidl::Eventb\x06proto3') _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flyteidl.event.event_pb2', globals()) @@ -31,25 +31,25 @@ _WORKFLOWEXECUTIONEVENT._serialized_start=262 _WORKFLOWEXECUTIONEVENT._serialized_end=688 _NODEEXECUTIONEVENT._serialized_start=691 - _NODEEXECUTIONEVENT._serialized_end=1797 - _WORKFLOWNODEMETADATA._serialized_start=1799 - _WORKFLOWNODEMETADATA._serialized_end=1900 - _TASKNODEMETADATA._serialized_start=1903 - _TASKNODEMETADATA._serialized_end=2272 - _DYNAMICWORKFLOWNODEMETADATA._serialized_start=2275 - _DYNAMICWORKFLOWNODEMETADATA._serialized_end=2481 - _PARENTTASKEXECUTIONMETADATA._serialized_start=2483 - _PARENTTASKEXECUTIONMETADATA._serialized_end=2568 - _PARENTNODEEXECUTIONMETADATA._serialized_start=2570 - _PARENTNODEEXECUTIONMETADATA._serialized_end=2624 - _TASKEXECUTIONEVENT._serialized_start=2627 - _TASKEXECUTIONEVENT._serialized_end=3554 - _EXTERNALRESOURCEINFO._serialized_start=3557 - _EXTERNALRESOURCEINFO._serialized_end=3843 - _RESOURCEPOOLINFO._serialized_start=3845 - _RESOURCEPOOLINFO._serialized_end=3936 - _TASKEXECUTIONMETADATA._serialized_start=3939 - _TASKEXECUTIONMETADATA._serialized_end=4352 - _TASKEXECUTIONMETADATA_INSTANCECLASS._serialized_start=4305 - _TASKEXECUTIONMETADATA_INSTANCECLASS._serialized_end=4352 + _NODEEXECUTIONEVENT._serialized_end=1858 + _WORKFLOWNODEMETADATA._serialized_start=1860 + _WORKFLOWNODEMETADATA._serialized_end=1961 + _TASKNODEMETADATA._serialized_start=1964 + _TASKNODEMETADATA._serialized_end=2333 + _DYNAMICWORKFLOWNODEMETADATA._serialized_start=2336 + _DYNAMICWORKFLOWNODEMETADATA._serialized_end=2542 + _PARENTTASKEXECUTIONMETADATA._serialized_start=2544 + _PARENTTASKEXECUTIONMETADATA._serialized_end=2629 + _PARENTNODEEXECUTIONMETADATA._serialized_start=2631 + _PARENTNODEEXECUTIONMETADATA._serialized_end=2685 + _TASKEXECUTIONEVENT._serialized_start=2688 + _TASKEXECUTIONEVENT._serialized_end=3676 + _EXTERNALRESOURCEINFO._serialized_start=3679 + _EXTERNALRESOURCEINFO._serialized_end=3965 + _RESOURCEPOOLINFO._serialized_start=3967 + _RESOURCEPOOLINFO._serialized_end=4058 + _TASKEXECUTIONMETADATA._serialized_start=4061 + _TASKEXECUTIONMETADATA._serialized_end=4474 + _TASKEXECUTIONMETADATA_INSTANCECLASS._serialized_start=4427 + _TASKEXECUTIONMETADATA_INSTANCECLASS._serialized_end=4474 # @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/event/event_pb2.pyi b/gen/pb_python/flyteidl/event/event_pb2.pyi index 8957a6efb..f156569eb 100644 --- a/gen/pb_python/flyteidl/event/event_pb2.pyi +++ b/gen/pb_python/flyteidl/event/event_pb2.pyi @@ -40,7 +40,7 @@ class ExternalResourceInfo(_message.Message): def __init__(self, external_id: _Optional[str] = ..., index: _Optional[int] = ..., retry_attempt: _Optional[int] = ..., phase: _Optional[_Union[_execution_pb2.TaskExecution.Phase, str]] = ..., cache_status: _Optional[_Union[_catalog_pb2.CatalogCacheStatus, str]] = ..., logs: _Optional[_Iterable[_Union[_execution_pb2.TaskLog, _Mapping]]] = ...) -> None: ... class NodeExecutionEvent(_message.Message): - __slots__ = ["deck_uri", "error", "event_version", "id", "input_data", "input_uri", "is_dynamic", "is_parent", "node_name", "occurred_at", "output_data", "output_uri", "parent_node_metadata", "parent_task_metadata", "phase", "producer_id", "retry_group", "spec_node_id", "task_node_metadata", "workflow_node_metadata"] + __slots__ = ["deck_uri", "error", "event_version", "id", "input_data", "input_uri", "is_dynamic", "is_parent", "node_name", "occurred_at", "output_data", "output_uri", "parent_node_metadata", "parent_task_metadata", "phase", "producer_id", "reported_at", "retry_group", "spec_node_id", "task_node_metadata", "workflow_node_metadata"] DECK_URI_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] EVENT_VERSION_FIELD_NUMBER: _ClassVar[int] @@ -57,6 +57,7 @@ class NodeExecutionEvent(_message.Message): PARENT_TASK_METADATA_FIELD_NUMBER: _ClassVar[int] PHASE_FIELD_NUMBER: _ClassVar[int] PRODUCER_ID_FIELD_NUMBER: _ClassVar[int] + REPORTED_AT_FIELD_NUMBER: _ClassVar[int] RETRY_GROUP_FIELD_NUMBER: _ClassVar[int] SPEC_NODE_ID_FIELD_NUMBER: _ClassVar[int] TASK_NODE_METADATA_FIELD_NUMBER: _ClassVar[int] @@ -77,11 +78,12 @@ class NodeExecutionEvent(_message.Message): parent_task_metadata: ParentTaskExecutionMetadata phase: _execution_pb2.NodeExecution.Phase producer_id: str + reported_at: _timestamp_pb2.Timestamp retry_group: str spec_node_id: str task_node_metadata: TaskNodeMetadata workflow_node_metadata: WorkflowNodeMetadata - def __init__(self, id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ..., producer_id: _Optional[str] = ..., phase: _Optional[_Union[_execution_pb2.NodeExecution.Phase, str]] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., input_uri: _Optional[str] = ..., input_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., workflow_node_metadata: _Optional[_Union[WorkflowNodeMetadata, _Mapping]] = ..., task_node_metadata: _Optional[_Union[TaskNodeMetadata, _Mapping]] = ..., parent_task_metadata: _Optional[_Union[ParentTaskExecutionMetadata, _Mapping]] = ..., parent_node_metadata: _Optional[_Union[ParentNodeExecutionMetadata, _Mapping]] = ..., retry_group: _Optional[str] = ..., spec_node_id: _Optional[str] = ..., node_name: _Optional[str] = ..., event_version: _Optional[int] = ..., is_parent: bool = ..., is_dynamic: bool = ..., deck_uri: _Optional[str] = ...) -> None: ... + def __init__(self, id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ..., producer_id: _Optional[str] = ..., phase: _Optional[_Union[_execution_pb2.NodeExecution.Phase, str]] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., input_uri: _Optional[str] = ..., input_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., workflow_node_metadata: _Optional[_Union[WorkflowNodeMetadata, _Mapping]] = ..., task_node_metadata: _Optional[_Union[TaskNodeMetadata, _Mapping]] = ..., parent_task_metadata: _Optional[_Union[ParentTaskExecutionMetadata, _Mapping]] = ..., parent_node_metadata: _Optional[_Union[ParentNodeExecutionMetadata, _Mapping]] = ..., retry_group: _Optional[str] = ..., spec_node_id: _Optional[str] = ..., node_name: _Optional[str] = ..., event_version: _Optional[int] = ..., is_parent: bool = ..., is_dynamic: bool = ..., deck_uri: _Optional[str] = ..., reported_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... class ParentNodeExecutionMetadata(_message.Message): __slots__ = ["node_id"] @@ -104,7 +106,7 @@ class ResourcePoolInfo(_message.Message): def __init__(self, allocation_token: _Optional[str] = ..., namespace: _Optional[str] = ...) -> None: ... class TaskExecutionEvent(_message.Message): - __slots__ = ["custom_info", "error", "event_version", "input_data", "input_uri", "logs", "metadata", "occurred_at", "output_data", "output_uri", "parent_node_execution_id", "phase", "phase_version", "producer_id", "reason", "retry_attempt", "task_id", "task_type"] + __slots__ = ["custom_info", "error", "event_version", "input_data", "input_uri", "logs", "metadata", "occurred_at", "output_data", "output_uri", "parent_node_execution_id", "phase", "phase_version", "producer_id", "reason", "reported_at", "retry_attempt", "task_id", "task_type"] CUSTOM_INFO_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] EVENT_VERSION_FIELD_NUMBER: _ClassVar[int] @@ -120,6 +122,7 @@ class TaskExecutionEvent(_message.Message): PHASE_VERSION_FIELD_NUMBER: _ClassVar[int] PRODUCER_ID_FIELD_NUMBER: _ClassVar[int] REASON_FIELD_NUMBER: _ClassVar[int] + REPORTED_AT_FIELD_NUMBER: _ClassVar[int] RETRY_ATTEMPT_FIELD_NUMBER: _ClassVar[int] TASK_ID_FIELD_NUMBER: _ClassVar[int] TASK_TYPE_FIELD_NUMBER: _ClassVar[int] @@ -138,10 +141,11 @@ class TaskExecutionEvent(_message.Message): phase_version: int producer_id: str reason: str + reported_at: _timestamp_pb2.Timestamp retry_attempt: int task_id: _identifier_pb2.Identifier task_type: str - def __init__(self, task_id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., parent_node_execution_id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ..., retry_attempt: _Optional[int] = ..., phase: _Optional[_Union[_execution_pb2.TaskExecution.Phase, str]] = ..., producer_id: _Optional[str] = ..., logs: _Optional[_Iterable[_Union[_execution_pb2.TaskLog, _Mapping]]] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., input_uri: _Optional[str] = ..., input_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., custom_info: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., phase_version: _Optional[int] = ..., reason: _Optional[str] = ..., task_type: _Optional[str] = ..., metadata: _Optional[_Union[TaskExecutionMetadata, _Mapping]] = ..., event_version: _Optional[int] = ...) -> None: ... + def __init__(self, task_id: _Optional[_Union[_identifier_pb2.Identifier, _Mapping]] = ..., parent_node_execution_id: _Optional[_Union[_identifier_pb2.NodeExecutionIdentifier, _Mapping]] = ..., retry_attempt: _Optional[int] = ..., phase: _Optional[_Union[_execution_pb2.TaskExecution.Phase, str]] = ..., producer_id: _Optional[str] = ..., logs: _Optional[_Iterable[_Union[_execution_pb2.TaskLog, _Mapping]]] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., input_uri: _Optional[str] = ..., input_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., output_uri: _Optional[str] = ..., error: _Optional[_Union[_execution_pb2.ExecutionError, _Mapping]] = ..., output_data: _Optional[_Union[_literals_pb2.LiteralMap, _Mapping]] = ..., custom_info: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., phase_version: _Optional[int] = ..., reason: _Optional[str] = ..., task_type: _Optional[str] = ..., metadata: _Optional[_Union[TaskExecutionMetadata, _Mapping]] = ..., event_version: _Optional[int] = ..., reported_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... class TaskExecutionMetadata(_message.Message): __slots__ = ["external_resources", "generated_name", "instance_class", "plugin_identifier", "resource_pool_info"] diff --git a/gen/pb_python/flyteidl/service/admin_pb2.py b/gen/pb_python/flyteidl/service/admin_pb2.py index 64cab73d0..79a5fc7d7 100644 --- a/gen/pb_python/flyteidl/service/admin_pb2.py +++ b/gen/pb_python/flyteidl/service/admin_pb2.py @@ -28,9 +28,10 @@ from flyteidl.admin import common_pb2 as flyteidl_dot_admin_dot_common__pb2 from flyteidl.admin import description_entity_pb2 as flyteidl_dot_admin_dot_description__entity__pb2 from flyteidl.core import identifier_pb2 as flyteidl_dot_core_dot_identifier__pb2 +from flyteidl.core import metrics_pb2 as flyteidl_dot_core_dot_metrics__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/service/admin.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a\x1c\x66lyteidl/admin/project.proto\x1a.flyteidl/admin/project_domain_attributes.proto\x1a\'flyteidl/admin/project_attributes.proto\x1a\x19\x66lyteidl/admin/task.proto\x1a\x1d\x66lyteidl/admin/workflow.proto\x1a(flyteidl/admin/workflow_attributes.proto\x1a flyteidl/admin/launch_plan.proto\x1a\x1a\x66lyteidl/admin/event.proto\x1a\x1e\x66lyteidl/admin/execution.proto\x1a\'flyteidl/admin/matchable_resource.proto\x1a#flyteidl/admin/node_execution.proto\x1a#flyteidl/admin/task_execution.proto\x1a\x1c\x66lyteidl/admin/version.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\'flyteidl/admin/description_entity.proto\x1a\x1e\x66lyteidl/core/identifier.proto2\xbcL\n\x0c\x41\x64minService\x12m\n\nCreateTask\x12!.flyteidl.admin.TaskCreateRequest\x1a\".flyteidl.admin.TaskCreateResponse\"\x18\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/api/v1/tasks\x12\x88\x01\n\x07GetTask\x12 .flyteidl.admin.ObjectGetRequest\x1a\x14.flyteidl.admin.Task\"E\x82\xd3\xe4\x93\x02?\x12=/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x97\x01\n\x0bListTaskIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"+\x82\xd3\xe4\x93\x02%\x12#/api/v1/task_ids/{project}/{domain}\x12\xae\x01\n\tListTasks\x12#.flyteidl.admin.ResourceListRequest\x1a\x18.flyteidl.admin.TaskList\"b\x82\xd3\xe4\x93\x02\\Z(\x12&/api/v1/tasks/{id.project}/{id.domain}\x12\x30/api/v1/tasks/{id.project}/{id.domain}/{id.name}\x12}\n\x0e\x43reateWorkflow\x12%.flyteidl.admin.WorkflowCreateRequest\x1a&.flyteidl.admin.WorkflowCreateResponse\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/v1/workflows\x12\x94\x01\n\x0bGetWorkflow\x12 .flyteidl.admin.ObjectGetRequest\x1a\x18.flyteidl.admin.Workflow\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x9f\x01\n\x0fListWorkflowIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"/\x82\xd3\xe4\x93\x02)\x12\'/api/v1/workflow_ids/{project}/{domain}\x12\xbe\x01\n\rListWorkflows\x12#.flyteidl.admin.ResourceListRequest\x1a\x1c.flyteidl.admin.WorkflowList\"j\x82\xd3\xe4\x93\x02\x64Z,\x12*/api/v1/workflows/{id.project}/{id.domain}\x12\x34/api/v1/workflows/{id.project}/{id.domain}/{id.name}\x12\x86\x01\n\x10\x43reateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanCreateRequest\x1a(.flyteidl.admin.LaunchPlanCreateResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/launch_plans\x12\x9b\x01\n\rGetLaunchPlan\x12 .flyteidl.admin.ObjectGetRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"L\x82\xd3\xe4\x93\x02\x46\x12\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xa2\x01\n\x13GetActiveLaunchPlan\x12\'.flyteidl.admin.ActiveLaunchPlanRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"F\x82\xd3\xe4\x93\x02@\x12>/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x12\x9c\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"6\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x12\xa4\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"2\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x12\xc8\x01\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"p\x82\xd3\xe4\x93\x02jZ/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}\x12\xb6\x01\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"O\x82\xd3\xe4\x93\x02I:\x01*\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x81\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v1/executions\x12\x8e\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/v1/executions/relaunch\x12\x8b\x01\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"%\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/api/v1/executions/recover\x12\x95\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xa4\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"@\x82\xd3\xe4\x93\x02::\x01*\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xb9\x01\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"B\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x12\x89\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"3\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x12\xad\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"@\x82\xd3\xe4\x93\x02::\x01**5/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xd2\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"v\x82\xd3\xe4\x93\x02p\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\xde\x01\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x12\xa5\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb3\x03\x82\xd3\xe4\x93\x02\xac\x03\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x12\xee\x01\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\x7f\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"\x1b\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/api/v1/projects\x12q\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\x1a\x15/api/v1/projects/{id}\x12\x66\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x12\x99\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/api/v1/events/workflows\x12\x89\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/nodes\x12\x89\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/tasks\x12\x80\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xa3\x02\x82\xd3\xe4\x93\x02\x9c\x02\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\x98\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xb4\x01\x82\xd3\xe4\x93\x02\xad\x01\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x12\x9c\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xa8\x02\x82\xd3\xe4\x93\x02\xa1\x02\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\xe3\x01\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"U\x82\xd3\xe4\x93\x02O:\x01*\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}\x12\xc1\x01\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x12\xcd\x01\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"?\x82\xd3\xe4\x93\x02\x39:\x01**4/api/v1/project_domain_attributes/{project}/{domain}\x12\xb6\x01\n\x17UpdateProjectAttributes\x12..flyteidl.admin.ProjectAttributesUpdateRequest\x1a/.flyteidl.admin.ProjectAttributesUpdateResponse\":\x82\xd3\xe4\x93\x02\x34:\x01*\x1a//api/v1/project_attributes/{attributes.project}\x12\x9f\x01\n\x14GetProjectAttributes\x12+.flyteidl.admin.ProjectAttributesGetRequest\x1a,.flyteidl.admin.ProjectAttributesGetResponse\",\x82\xd3\xe4\x93\x02&\x12$/api/v1/project_attributes/{project}\x12\xab\x01\n\x17\x44\x65leteProjectAttributes\x12..flyteidl.admin.ProjectAttributesDeleteRequest\x1a/.flyteidl.admin.ProjectAttributesDeleteResponse\"/\x82\xd3\xe4\x93\x02):\x01**$/api/v1/project_attributes/{project}\x12\xe4\x01\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"e\x82\xd3\xe4\x93\x02_:\x01*\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}\x12\xb7\x01\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xc3\x01\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"D\x82\xd3\xe4\x93\x02>:\x01**9/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xa0\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/matchable_attributes\x12\x9f\x01\n\x11ListNamedEntities\x12&.flyteidl.admin.NamedEntityListRequest\x1a\x1f.flyteidl.admin.NamedEntityList\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/named_entities/{resource_type}/{project}/{domain}\x12\xa7\x01\n\x0eGetNamedEntity\x12%.flyteidl.admin.NamedEntityGetRequest\x1a\x1b.flyteidl.admin.NamedEntity\"Q\x82\xd3\xe4\x93\x02K\x12I/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}\x12\xbe\x01\n\x11UpdateNamedEntity\x12(.flyteidl.admin.NamedEntityUpdateRequest\x1a).flyteidl.admin.NamedEntityUpdateResponse\"T\x82\xd3\xe4\x93\x02N:\x01*\x1aI/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}\x12l\n\nGetVersion\x12!.flyteidl.admin.GetVersionRequest\x1a\".flyteidl.admin.GetVersionResponse\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/v1/version\x12\xc4\x01\n\x14GetDescriptionEntity\x12 .flyteidl.admin.ObjectGetRequest\x1a!.flyteidl.admin.DescriptionEntity\"g\x82\xd3\xe4\x93\x02\x61\x12_/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x92\x02\n\x17ListDescriptionEntities\x12,.flyteidl.admin.DescriptionEntityListRequest\x1a%.flyteidl.admin.DescriptionEntityList\"\xa1\x01\x82\xd3\xe4\x93\x02\x9a\x01ZG\x12\x45/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}\x12O/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}B\xbc\x01\n\x14\x63om.flyteidl.serviceB\nAdminProtoP\x01Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service\xa2\x02\x03\x46SX\xaa\x02\x10\x46lyteidl.Service\xca\x02\x10\x46lyteidl\\Service\xe2\x02\x1c\x46lyteidl\\Service\\GPBMetadata\xea\x02\x11\x46lyteidl::Serviceb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/service/admin.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a\x1c\x66lyteidl/admin/project.proto\x1a.flyteidl/admin/project_domain_attributes.proto\x1a\'flyteidl/admin/project_attributes.proto\x1a\x19\x66lyteidl/admin/task.proto\x1a\x1d\x66lyteidl/admin/workflow.proto\x1a(flyteidl/admin/workflow_attributes.proto\x1a flyteidl/admin/launch_plan.proto\x1a\x1a\x66lyteidl/admin/event.proto\x1a\x1e\x66lyteidl/admin/execution.proto\x1a\'flyteidl/admin/matchable_resource.proto\x1a#flyteidl/admin/node_execution.proto\x1a#flyteidl/admin/task_execution.proto\x1a\x1c\x66lyteidl/admin/version.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\'flyteidl/admin/description_entity.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1b\x66lyteidl/core/metrics.proto2\x84N\n\x0c\x41\x64minService\x12m\n\nCreateTask\x12!.flyteidl.admin.TaskCreateRequest\x1a\".flyteidl.admin.TaskCreateResponse\"\x18\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/api/v1/tasks\x12\x88\x01\n\x07GetTask\x12 .flyteidl.admin.ObjectGetRequest\x1a\x14.flyteidl.admin.Task\"E\x82\xd3\xe4\x93\x02?\x12=/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x97\x01\n\x0bListTaskIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"+\x82\xd3\xe4\x93\x02%\x12#/api/v1/task_ids/{project}/{domain}\x12\xae\x01\n\tListTasks\x12#.flyteidl.admin.ResourceListRequest\x1a\x18.flyteidl.admin.TaskList\"b\x82\xd3\xe4\x93\x02\\Z(\x12&/api/v1/tasks/{id.project}/{id.domain}\x12\x30/api/v1/tasks/{id.project}/{id.domain}/{id.name}\x12}\n\x0e\x43reateWorkflow\x12%.flyteidl.admin.WorkflowCreateRequest\x1a&.flyteidl.admin.WorkflowCreateResponse\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/v1/workflows\x12\x94\x01\n\x0bGetWorkflow\x12 .flyteidl.admin.ObjectGetRequest\x1a\x18.flyteidl.admin.Workflow\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x9f\x01\n\x0fListWorkflowIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"/\x82\xd3\xe4\x93\x02)\x12\'/api/v1/workflow_ids/{project}/{domain}\x12\xbe\x01\n\rListWorkflows\x12#.flyteidl.admin.ResourceListRequest\x1a\x1c.flyteidl.admin.WorkflowList\"j\x82\xd3\xe4\x93\x02\x64Z,\x12*/api/v1/workflows/{id.project}/{id.domain}\x12\x34/api/v1/workflows/{id.project}/{id.domain}/{id.name}\x12\x86\x01\n\x10\x43reateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanCreateRequest\x1a(.flyteidl.admin.LaunchPlanCreateResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/launch_plans\x12\x9b\x01\n\rGetLaunchPlan\x12 .flyteidl.admin.ObjectGetRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"L\x82\xd3\xe4\x93\x02\x46\x12\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\xa2\x01\n\x13GetActiveLaunchPlan\x12\'.flyteidl.admin.ActiveLaunchPlanRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"F\x82\xd3\xe4\x93\x02@\x12>/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x12\x9c\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"6\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x12\xa4\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"2\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x12\xc8\x01\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"p\x82\xd3\xe4\x93\x02jZ/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}\x12\xb6\x01\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"O\x82\xd3\xe4\x93\x02I:\x01*\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x81\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v1/executions\x12\x8e\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/v1/executions/relaunch\x12\x8b\x01\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"%\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/api/v1/executions/recover\x12\x95\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xa4\x01\n\x0fUpdateExecution\x12&.flyteidl.admin.ExecutionUpdateRequest\x1a\'.flyteidl.admin.ExecutionUpdateResponse\"@\x82\xd3\xe4\x93\x02::\x01*\x1a\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xb9\x01\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"B\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x12\x89\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"3\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x12\xad\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"@\x82\xd3\xe4\x93\x02::\x01**5/api/v1/executions/{id.project}/{id.domain}/{id.name}\x12\xd2\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"v\x82\xd3\xe4\x93\x02p\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\xde\x01\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x12\xa5\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb3\x03\x82\xd3\xe4\x93\x02\xac\x03\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x12\xee\x01\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"{\x82\xd3\xe4\x93\x02u\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x12\x7f\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"\x1b\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/api/v1/projects\x12q\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\x1a\x15/api/v1/projects/{id}\x12\x66\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x12\x99\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/api/v1/events/workflows\x12\x89\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/nodes\x12\x89\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v1/events/tasks\x12\x80\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xa3\x02\x82\xd3\xe4\x93\x02\x9c\x02\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\x98\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xb4\x01\x82\xd3\xe4\x93\x02\xad\x01\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x12\x9c\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xa8\x02\x82\xd3\xe4\x93\x02\xa1\x02\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x12\xe3\x01\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"U\x82\xd3\xe4\x93\x02O:\x01*\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}\x12\xc1\x01\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x12\xcd\x01\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"?\x82\xd3\xe4\x93\x02\x39:\x01**4/api/v1/project_domain_attributes/{project}/{domain}\x12\xb6\x01\n\x17UpdateProjectAttributes\x12..flyteidl.admin.ProjectAttributesUpdateRequest\x1a/.flyteidl.admin.ProjectAttributesUpdateResponse\":\x82\xd3\xe4\x93\x02\x34:\x01*\x1a//api/v1/project_attributes/{attributes.project}\x12\x9f\x01\n\x14GetProjectAttributes\x12+.flyteidl.admin.ProjectAttributesGetRequest\x1a,.flyteidl.admin.ProjectAttributesGetResponse\",\x82\xd3\xe4\x93\x02&\x12$/api/v1/project_attributes/{project}\x12\xab\x01\n\x17\x44\x65leteProjectAttributes\x12..flyteidl.admin.ProjectAttributesDeleteRequest\x1a/.flyteidl.admin.ProjectAttributesDeleteResponse\"/\x82\xd3\xe4\x93\x02):\x01**$/api/v1/project_attributes/{project}\x12\xe4\x01\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"e\x82\xd3\xe4\x93\x02_:\x01*\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}\x12\xb7\x01\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xc3\x01\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"D\x82\xd3\xe4\x93\x02>:\x01**9/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x12\xa0\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/matchable_attributes\x12\x9f\x01\n\x11ListNamedEntities\x12&.flyteidl.admin.NamedEntityListRequest\x1a\x1f.flyteidl.admin.NamedEntityList\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/named_entities/{resource_type}/{project}/{domain}\x12\xa7\x01\n\x0eGetNamedEntity\x12%.flyteidl.admin.NamedEntityGetRequest\x1a\x1b.flyteidl.admin.NamedEntity\"Q\x82\xd3\xe4\x93\x02K\x12I/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}\x12\xbe\x01\n\x11UpdateNamedEntity\x12(.flyteidl.admin.NamedEntityUpdateRequest\x1a).flyteidl.admin.NamedEntityUpdateResponse\"T\x82\xd3\xe4\x93\x02N:\x01*\x1aI/api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name}\x12l\n\nGetVersion\x12!.flyteidl.admin.GetVersionRequest\x1a\".flyteidl.admin.GetVersionResponse\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/v1/version\x12\xc4\x01\n\x14GetDescriptionEntity\x12 .flyteidl.admin.ObjectGetRequest\x1a!.flyteidl.admin.DescriptionEntity\"g\x82\xd3\xe4\x93\x02\x61\x12_/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}\x12\x92\x02\n\x17ListDescriptionEntities\x12,.flyteidl.admin.DescriptionEntityListRequest\x1a%.flyteidl.admin.DescriptionEntityList\"\xa1\x01\x82\xd3\xe4\x93\x02\x9a\x01ZG\x12\x45/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}\x12O/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}\x12\xc5\x01\n\x13GetExecutionMetrics\x12\x32.flyteidl.admin.WorkflowExecutionGetMetricsRequest\x1a\x33.flyteidl.admin.WorkflowExecutionGetMetricsResponse\"E\x82\xd3\xe4\x93\x02?\x12=/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}B\xbc\x01\n\x14\x63om.flyteidl.serviceB\nAdminProtoP\x01Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service\xa2\x02\x03\x46SX\xaa\x02\x10\x46lyteidl.Service\xca\x02\x10\x46lyteidl\\Service\xe2\x02\x1c\x46lyteidl\\Service\\GPBMetadata\xea\x02\x11\x46lyteidl::Serviceb\x06proto3') _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flyteidl.service.admin_pb2', globals()) @@ -142,6 +143,8 @@ _ADMINSERVICE.methods_by_name['GetDescriptionEntity']._serialized_options = b'\202\323\344\223\002a\022_/api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version}' _ADMINSERVICE.methods_by_name['ListDescriptionEntities']._options = None _ADMINSERVICE.methods_by_name['ListDescriptionEntities']._serialized_options = b'\202\323\344\223\002\232\001ZG\022E/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}\022O/api/v1/description_entities/{resource_type}/{id.project}/{id.domain}/{id.name}' - _ADMINSERVICE._serialized_start=641 - _ADMINSERVICE._serialized_end=10429 + _ADMINSERVICE.methods_by_name['GetExecutionMetrics']._options = None + _ADMINSERVICE.methods_by_name['GetExecutionMetrics']._serialized_options = b'\202\323\344\223\002?\022=/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}' + _ADMINSERVICE._serialized_start=670 + _ADMINSERVICE._serialized_end=10658 # @@protoc_insertion_point(module_scope) diff --git a/gen/pb_python/flyteidl/service/admin_pb2.pyi b/gen/pb_python/flyteidl/service/admin_pb2.pyi index d0120eb22..42eb8c5e2 100644 --- a/gen/pb_python/flyteidl/service/admin_pb2.pyi +++ b/gen/pb_python/flyteidl/service/admin_pb2.pyi @@ -15,6 +15,7 @@ from flyteidl.admin import version_pb2 as _version_pb2 from flyteidl.admin import common_pb2 as _common_pb2 from flyteidl.admin import description_entity_pb2 as _description_entity_pb2 from flyteidl.core import identifier_pb2 as _identifier_pb2 +from flyteidl.core import metrics_pb2 as _metrics_pb2 from google.protobuf import descriptor as _descriptor from typing import ClassVar as _ClassVar diff --git a/gen/pb_python/flyteidl/service/admin_pb2_grpc.py b/gen/pb_python/flyteidl/service/admin_pb2_grpc.py index bdbf08652..2e7bda23f 100644 --- a/gen/pb_python/flyteidl/service/admin_pb2_grpc.py +++ b/gen/pb_python/flyteidl/service/admin_pb2_grpc.py @@ -290,6 +290,11 @@ def __init__(self, channel): request_serializer=flyteidl_dot_admin_dot_description__entity__pb2.DescriptionEntityListRequest.SerializeToString, response_deserializer=flyteidl_dot_admin_dot_description__entity__pb2.DescriptionEntityList.FromString, ) + self.GetExecutionMetrics = channel.unary_unary( + '/flyteidl.service.AdminService/GetExecutionMetrics', + request_serializer=flyteidl_dot_admin_dot_execution__pb2.WorkflowExecutionGetMetricsRequest.SerializeToString, + response_deserializer=flyteidl_dot_admin_dot_execution__pb2.WorkflowExecutionGetMetricsResponse.FromString, + ) class AdminServiceServicer(object): @@ -666,6 +671,13 @@ def ListDescriptionEntities(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetExecutionMetrics(self, request, context): + """Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_AdminServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -929,6 +941,11 @@ def add_AdminServiceServicer_to_server(servicer, server): request_deserializer=flyteidl_dot_admin_dot_description__entity__pb2.DescriptionEntityListRequest.FromString, response_serializer=flyteidl_dot_admin_dot_description__entity__pb2.DescriptionEntityList.SerializeToString, ), + 'GetExecutionMetrics': grpc.unary_unary_rpc_method_handler( + servicer.GetExecutionMetrics, + request_deserializer=flyteidl_dot_admin_dot_execution__pb2.WorkflowExecutionGetMetricsRequest.FromString, + response_serializer=flyteidl_dot_admin_dot_execution__pb2.WorkflowExecutionGetMetricsResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'flyteidl.service.AdminService', rpc_method_handlers) @@ -1824,3 +1841,20 @@ def ListDescriptionEntities(request, flyteidl_dot_admin_dot_description__entity__pb2.DescriptionEntityList.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetExecutionMetrics(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl.service.AdminService/GetExecutionMetrics', + flyteidl_dot_admin_dot_execution__pb2.WorkflowExecutionGetMetricsRequest.SerializeToString, + flyteidl_dot_admin_dot_execution__pb2.WorkflowExecutionGetMetricsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/gen/pb_python/flyteidl/service/flyteadmin/README.md b/gen/pb_python/flyteidl/service/flyteadmin/README.md index 209c4bdde..ebafe47c1 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/README.md +++ b/gen/pb_python/flyteidl/service/flyteadmin/README.md @@ -84,6 +84,7 @@ Class | Method | HTTP request | Description *AdminServiceApi* | [**get_description_entity**](docs/AdminServiceApi.md#get_description_entity) | **GET** /api/v1/description_entities/{id.resource_type}/{id.project}/{id.domain}/{id.name}/{id.version} | Fetch a :ref:`ref_flyteidl.admin.DescriptionEntity` object. *AdminServiceApi* | [**get_execution**](docs/AdminServiceApi.md#get_execution) | **GET** /api/v1/executions/{id.project}/{id.domain}/{id.name} | Fetches a :ref:`ref_flyteidl.admin.Execution`. *AdminServiceApi* | [**get_execution_data**](docs/AdminServiceApi.md#get_execution_data) | **GET** /api/v1/data/executions/{id.project}/{id.domain}/{id.name} | Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`. +*AdminServiceApi* | [**get_execution_metrics**](docs/AdminServiceApi.md#get_execution_metrics) | **GET** /api/v1/metrics/executions/{id.project}/{id.domain}/{id.name} | Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. *AdminServiceApi* | [**get_launch_plan**](docs/AdminServiceApi.md#get_launch_plan) | **GET** /api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version} | Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition. *AdminServiceApi* | [**get_named_entity**](docs/AdminServiceApi.md#get_named_entity) | **GET** /api/v1/named_entities/{resource_type}/{id.project}/{id.domain}/{id.name} | Returns a :ref:`ref_flyteidl.admin.NamedEntity` object. *AdminServiceApi* | [**get_node_execution**](docs/AdminServiceApi.md#get_node_execution) | **GET** /api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id} | Fetches a :ref:`ref_flyteidl.admin.NodeExecution`. @@ -251,6 +252,7 @@ Class | Method | HTTP request | Description - [AdminWorkflowExecutionEventRequest](docs/AdminWorkflowExecutionEventRequest.md) - [AdminWorkflowExecutionEventResponse](docs/AdminWorkflowExecutionEventResponse.md) - [AdminWorkflowExecutionGetDataResponse](docs/AdminWorkflowExecutionGetDataResponse.md) + - [AdminWorkflowExecutionGetMetricsResponse](docs/AdminWorkflowExecutionGetMetricsResponse.md) - [AdminWorkflowList](docs/AdminWorkflowList.md) - [AdminWorkflowSpec](docs/AdminWorkflowSpec.md) - [BlobTypeBlobDimensionality](docs/BlobTypeBlobDimensionality.md) @@ -325,6 +327,7 @@ Class | Method | HTTP request | Description - [CoreSignalCondition](docs/CoreSignalCondition.md) - [CoreSimpleType](docs/CoreSimpleType.md) - [CoreSleepCondition](docs/CoreSleepCondition.md) + - [CoreSpan](docs/CoreSpan.md) - [CoreSql](docs/CoreSql.md) - [CoreStructuredDataset](docs/CoreStructuredDataset.md) - [CoreStructuredDatasetMetadata](docs/CoreStructuredDatasetMetadata.md) diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py index 93b0c14dc..6e52db863 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/__init__.py @@ -143,6 +143,7 @@ from flyteadmin.models.admin_workflow_execution_event_request import AdminWorkflowExecutionEventRequest from flyteadmin.models.admin_workflow_execution_event_response import AdminWorkflowExecutionEventResponse from flyteadmin.models.admin_workflow_execution_get_data_response import AdminWorkflowExecutionGetDataResponse +from flyteadmin.models.admin_workflow_execution_get_metrics_response import AdminWorkflowExecutionGetMetricsResponse from flyteadmin.models.admin_workflow_list import AdminWorkflowList from flyteadmin.models.admin_workflow_spec import AdminWorkflowSpec from flyteadmin.models.blob_type_blob_dimensionality import BlobTypeBlobDimensionality @@ -217,6 +218,7 @@ from flyteadmin.models.core_signal_condition import CoreSignalCondition from flyteadmin.models.core_simple_type import CoreSimpleType from flyteadmin.models.core_sleep_condition import CoreSleepCondition +from flyteadmin.models.core_span import CoreSpan from flyteadmin.models.core_sql import CoreSql from flyteadmin.models.core_structured_dataset import CoreStructuredDataset from flyteadmin.models.core_structured_dataset_metadata import CoreStructuredDatasetMetadata diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/api/admin_service_api.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/api/admin_service_api.py index 580832f37..a31196904 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/api/admin_service_api.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/api/admin_service_api.py @@ -1519,6 +1519,123 @@ def get_execution_data_with_http_info(self, id_project, id_domain, id_name, **kw _request_timeout=params.get('_request_timeout'), collection_formats=collection_formats) + def get_execution_metrics(self, id_project, id_domain, id_name, **kwargs): # noqa: E501 + """Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. # 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_execution_metrics(id_project, id_domain, id_name, 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 or system provided value for the resource. (required) + :param int depth: depth defines the number of Flyte entity levels to traverse when breaking down execution details. + :return: AdminWorkflowExecutionGetMetricsResponse + If the method is called asynchronously, + returns the request thread. + """ + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.get_execution_metrics_with_http_info(id_project, id_domain, id_name, **kwargs) # noqa: E501 + else: + (data) = self.get_execution_metrics_with_http_info(id_project, id_domain, id_name, **kwargs) # noqa: E501 + return data + + def get_execution_metrics_with_http_info(self, id_project, id_domain, id_name, **kwargs): # noqa: E501 + """Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. # 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_execution_metrics_with_http_info(id_project, id_domain, id_name, 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 or system provided value for the resource. (required) + :param int depth: depth defines the number of Flyte entity levels to traverse when breaking down execution details. + :return: AdminWorkflowExecutionGetMetricsResponse + If the method is called asynchronously, + returns the request thread. + """ + + all_params = ['id_project', 'id_domain', 'id_name', 'depth'] # 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_execution_metrics" % 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_execution_metrics`") # 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_execution_metrics`") # 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_execution_metrics`") # 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 + + query_params = [] + if 'depth' in params: + query_params.append(('depth', params['depth'])) # 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/metrics/executions/{id.project}/{id.domain}/{id.name}', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=local_var_files, + response_type='AdminWorkflowExecutionGetMetricsResponse', # 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_launch_plan(self, id_project, id_domain, id_name, id_version, **kwargs): # noqa: E501 """Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition. # 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 e80c396a6..5f4976930 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py @@ -136,6 +136,7 @@ from flyteadmin.models.admin_workflow_execution_event_request import AdminWorkflowExecutionEventRequest from flyteadmin.models.admin_workflow_execution_event_response import AdminWorkflowExecutionEventResponse from flyteadmin.models.admin_workflow_execution_get_data_response import AdminWorkflowExecutionGetDataResponse +from flyteadmin.models.admin_workflow_execution_get_metrics_response import AdminWorkflowExecutionGetMetricsResponse from flyteadmin.models.admin_workflow_list import AdminWorkflowList from flyteadmin.models.admin_workflow_spec import AdminWorkflowSpec from flyteadmin.models.blob_type_blob_dimensionality import BlobTypeBlobDimensionality @@ -210,6 +211,7 @@ from flyteadmin.models.core_signal_condition import CoreSignalCondition from flyteadmin.models.core_simple_type import CoreSimpleType from flyteadmin.models.core_sleep_condition import CoreSleepCondition +from flyteadmin.models.core_span import CoreSpan from flyteadmin.models.core_sql import CoreSql from flyteadmin.models.core_structured_dataset import CoreStructuredDataset from flyteadmin.models.core_structured_dataset_metadata import CoreStructuredDatasetMetadata diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_execution_get_metrics_response.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_execution_get_metrics_response.py new file mode 100644 index 000000000..64d71f5cd --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_execution_get_metrics_response.py @@ -0,0 +1,119 @@ +# 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.core_span import CoreSpan # noqa: F401,E501 + + +class AdminWorkflowExecutionGetMetricsResponse(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 = { + 'span': 'CoreSpan' + } + + attribute_map = { + 'span': 'span' + } + + def __init__(self, span=None): # noqa: E501 + """AdminWorkflowExecutionGetMetricsResponse - a model defined in Swagger""" # noqa: E501 + + self._span = None + self.discriminator = None + + if span is not None: + self.span = span + + @property + def span(self): + """Gets the span of this AdminWorkflowExecutionGetMetricsResponse. # noqa: E501 + + Span defines the top-level breakdown of the workflows execution. More precise information is nested in a hierarchical structure using Flyte entity references. # noqa: E501 + + :return: The span of this AdminWorkflowExecutionGetMetricsResponse. # noqa: E501 + :rtype: CoreSpan + """ + return self._span + + @span.setter + def span(self, span): + """Sets the span of this AdminWorkflowExecutionGetMetricsResponse. + + Span defines the top-level breakdown of the workflows execution. More precise information is nested in a hierarchical structure using Flyte entity references. # noqa: E501 + + :param span: The span of this AdminWorkflowExecutionGetMetricsResponse. # noqa: E501 + :type: CoreSpan + """ + + self._span = span + + 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(AdminWorkflowExecutionGetMetricsResponse, 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, AdminWorkflowExecutionGetMetricsResponse): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_span.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_span.py new file mode 100644 index 000000000..c9d36d9bb --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_span.py @@ -0,0 +1,290 @@ +# 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.core_node_execution_identifier import CoreNodeExecutionIdentifier # noqa: F401,E501 +from flyteadmin.models.core_span import CoreSpan # noqa: F401,E501 +from flyteadmin.models.core_task_execution_identifier import CoreTaskExecutionIdentifier # noqa: F401,E501 +from flyteadmin.models.core_workflow_execution_identifier import CoreWorkflowExecutionIdentifier # noqa: F401,E501 + + +class CoreSpan(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 = { + 'start_time': 'datetime', + 'end_time': 'datetime', + 'workflow_id': 'CoreWorkflowExecutionIdentifier', + 'node_id': 'CoreNodeExecutionIdentifier', + 'task_id': 'CoreTaskExecutionIdentifier', + 'operation_id': 'str', + 'spans': 'list[CoreSpan]' + } + + attribute_map = { + 'start_time': 'start_time', + 'end_time': 'end_time', + 'workflow_id': 'workflow_id', + 'node_id': 'node_id', + 'task_id': 'task_id', + 'operation_id': 'operation_id', + 'spans': 'spans' + } + + def __init__(self, start_time=None, end_time=None, workflow_id=None, node_id=None, task_id=None, operation_id=None, spans=None): # noqa: E501 + """CoreSpan - a model defined in Swagger""" # noqa: E501 + + self._start_time = None + self._end_time = None + self._workflow_id = None + self._node_id = None + self._task_id = None + self._operation_id = None + self._spans = None + self.discriminator = None + + if start_time is not None: + self.start_time = start_time + if end_time is not None: + self.end_time = end_time + if workflow_id is not None: + self.workflow_id = workflow_id + if node_id is not None: + self.node_id = node_id + if task_id is not None: + self.task_id = task_id + if operation_id is not None: + self.operation_id = operation_id + if spans is not None: + self.spans = spans + + @property + def start_time(self): + """Gets the start_time of this CoreSpan. # noqa: E501 + + start_time defines the instance this span began. # noqa: E501 + + :return: The start_time of this CoreSpan. # noqa: E501 + :rtype: datetime + """ + return self._start_time + + @start_time.setter + def start_time(self, start_time): + """Sets the start_time of this CoreSpan. + + start_time defines the instance this span began. # noqa: E501 + + :param start_time: The start_time of this CoreSpan. # noqa: E501 + :type: datetime + """ + + self._start_time = start_time + + @property + def end_time(self): + """Gets the end_time of this CoreSpan. # noqa: E501 + + end_time defines the instance this span completed. # noqa: E501 + + :return: The end_time of this CoreSpan. # noqa: E501 + :rtype: datetime + """ + return self._end_time + + @end_time.setter + def end_time(self, end_time): + """Sets the end_time of this CoreSpan. + + end_time defines the instance this span completed. # noqa: E501 + + :param end_time: The end_time of this CoreSpan. # noqa: E501 + :type: datetime + """ + + self._end_time = end_time + + @property + def workflow_id(self): + """Gets the workflow_id of this CoreSpan. # noqa: E501 + + workflow_id is the id of the workflow execution this Span represents. # noqa: E501 + + :return: The workflow_id of this CoreSpan. # noqa: E501 + :rtype: CoreWorkflowExecutionIdentifier + """ + return self._workflow_id + + @workflow_id.setter + def workflow_id(self, workflow_id): + """Sets the workflow_id of this CoreSpan. + + workflow_id is the id of the workflow execution this Span represents. # noqa: E501 + + :param workflow_id: The workflow_id of this CoreSpan. # noqa: E501 + :type: CoreWorkflowExecutionIdentifier + """ + + self._workflow_id = workflow_id + + @property + def node_id(self): + """Gets the node_id of this CoreSpan. # noqa: E501 + + node_id is the id of the node execution this Span represents. # noqa: E501 + + :return: The node_id of this CoreSpan. # noqa: E501 + :rtype: CoreNodeExecutionIdentifier + """ + return self._node_id + + @node_id.setter + def node_id(self, node_id): + """Sets the node_id of this CoreSpan. + + node_id is the id of the node execution this Span represents. # noqa: E501 + + :param node_id: The node_id of this CoreSpan. # noqa: E501 + :type: CoreNodeExecutionIdentifier + """ + + self._node_id = node_id + + @property + def task_id(self): + """Gets the task_id of this CoreSpan. # noqa: E501 + + task_id is the id of the task execution this Span represents. # noqa: E501 + + :return: The task_id of this CoreSpan. # noqa: E501 + :rtype: CoreTaskExecutionIdentifier + """ + return self._task_id + + @task_id.setter + def task_id(self, task_id): + """Sets the task_id of this CoreSpan. + + task_id is the id of the task execution this Span represents. # noqa: E501 + + :param task_id: The task_id of this CoreSpan. # noqa: E501 + :type: CoreTaskExecutionIdentifier + """ + + self._task_id = task_id + + @property + def operation_id(self): + """Gets the operation_id of this CoreSpan. # noqa: E501 + + operation_id is the id of a unique operation that this Span represents. # noqa: E501 + + :return: The operation_id of this CoreSpan. # noqa: E501 + :rtype: str + """ + return self._operation_id + + @operation_id.setter + def operation_id(self, operation_id): + """Sets the operation_id of this CoreSpan. + + operation_id is the id of a unique operation that this Span represents. # noqa: E501 + + :param operation_id: The operation_id of this CoreSpan. # noqa: E501 + :type: str + """ + + self._operation_id = operation_id + + @property + def spans(self): + """Gets the spans of this CoreSpan. # noqa: E501 + + spans defines a collection of Spans that breakdown this execution. # noqa: E501 + + :return: The spans of this CoreSpan. # noqa: E501 + :rtype: list[CoreSpan] + """ + return self._spans + + @spans.setter + def spans(self, spans): + """Sets the spans of this CoreSpan. + + spans defines a collection of Spans that breakdown this execution. # noqa: E501 + + :param spans: The spans of this CoreSpan. # noqa: E501 + :type: list[CoreSpan] + """ + + self._spans = spans + + 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(CoreSpan, 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, CoreSpan): + 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/event_node_execution_event.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/event_node_execution_event.py index db7558171..c62cabff7 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/event_node_execution_event.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/event_node_execution_event.py @@ -59,7 +59,8 @@ class EventNodeExecutionEvent(object): 'event_version': 'int', 'is_parent': 'bool', 'is_dynamic': 'bool', - 'deck_uri': 'str' + 'deck_uri': 'str', + 'reported_at': 'datetime' } attribute_map = { @@ -82,10 +83,11 @@ class EventNodeExecutionEvent(object): 'event_version': 'event_version', 'is_parent': 'is_parent', 'is_dynamic': 'is_dynamic', - 'deck_uri': 'deck_uri' + 'deck_uri': 'deck_uri', + 'reported_at': 'reported_at' } - def __init__(self, id=None, producer_id=None, phase=None, occurred_at=None, input_uri=None, input_data=None, output_uri=None, error=None, output_data=None, workflow_node_metadata=None, task_node_metadata=None, parent_task_metadata=None, parent_node_metadata=None, retry_group=None, spec_node_id=None, node_name=None, event_version=None, is_parent=None, is_dynamic=None, deck_uri=None): # noqa: E501 + def __init__(self, id=None, producer_id=None, phase=None, occurred_at=None, input_uri=None, input_data=None, output_uri=None, error=None, output_data=None, workflow_node_metadata=None, task_node_metadata=None, parent_task_metadata=None, parent_node_metadata=None, retry_group=None, spec_node_id=None, node_name=None, event_version=None, is_parent=None, is_dynamic=None, deck_uri=None, reported_at=None): # noqa: E501 """EventNodeExecutionEvent - a model defined in Swagger""" # noqa: E501 self._id = None @@ -108,6 +110,7 @@ def __init__(self, id=None, producer_id=None, phase=None, occurred_at=None, inpu self._is_parent = None self._is_dynamic = None self._deck_uri = None + self._reported_at = None self.discriminator = None if id is not None: @@ -150,6 +153,8 @@ def __init__(self, id=None, producer_id=None, phase=None, occurred_at=None, inpu self.is_dynamic = is_dynamic if deck_uri is not None: self.deck_uri = deck_uri + if reported_at is not None: + self.reported_at = reported_at @property def id(self): @@ -587,6 +592,29 @@ def deck_uri(self, deck_uri): self._deck_uri = deck_uri + @property + def reported_at(self): + """Gets the reported_at of this EventNodeExecutionEvent. # noqa: E501 + + This timestamp represents the instant when the event was reported by the executing framework. For example, when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when literal inputs are initially copied. The event however will not be sent until after the copy completes. Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series. # noqa: E501 + + :return: The reported_at of this EventNodeExecutionEvent. # noqa: E501 + :rtype: datetime + """ + return self._reported_at + + @reported_at.setter + def reported_at(self, reported_at): + """Sets the reported_at of this EventNodeExecutionEvent. + + This timestamp represents the instant when the event was reported by the executing framework. For example, when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when literal inputs are initially copied. The event however will not be sent until after the copy completes. Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series. # noqa: E501 + + :param reported_at: The reported_at of this EventNodeExecutionEvent. # noqa: E501 + :type: datetime + """ + + self._reported_at = reported_at + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/event_task_execution_event.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/event_task_execution_event.py index f54805865..fefad55a6 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/event_task_execution_event.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/event_task_execution_event.py @@ -57,7 +57,8 @@ class EventTaskExecutionEvent(object): 'reason': 'str', 'task_type': 'str', 'metadata': 'EventTaskExecutionMetadata', - 'event_version': 'int' + 'event_version': 'int', + 'reported_at': 'datetime' } attribute_map = { @@ -78,10 +79,11 @@ class EventTaskExecutionEvent(object): 'reason': 'reason', 'task_type': 'task_type', 'metadata': 'metadata', - 'event_version': 'event_version' + 'event_version': 'event_version', + 'reported_at': 'reported_at' } - def __init__(self, task_id=None, parent_node_execution_id=None, retry_attempt=None, phase=None, producer_id=None, logs=None, occurred_at=None, input_uri=None, input_data=None, output_uri=None, error=None, output_data=None, custom_info=None, phase_version=None, reason=None, task_type=None, metadata=None, event_version=None): # noqa: E501 + def __init__(self, task_id=None, parent_node_execution_id=None, retry_attempt=None, phase=None, producer_id=None, logs=None, occurred_at=None, input_uri=None, input_data=None, output_uri=None, error=None, output_data=None, custom_info=None, phase_version=None, reason=None, task_type=None, metadata=None, event_version=None, reported_at=None): # noqa: E501 """EventTaskExecutionEvent - a model defined in Swagger""" # noqa: E501 self._task_id = None @@ -102,6 +104,7 @@ def __init__(self, task_id=None, parent_node_execution_id=None, retry_attempt=No self._task_type = None self._metadata = None self._event_version = None + self._reported_at = None self.discriminator = None if task_id is not None: @@ -140,6 +143,8 @@ def __init__(self, task_id=None, parent_node_execution_id=None, retry_attempt=No self.metadata = metadata if event_version is not None: self.event_version = event_version + if reported_at is not None: + self.reported_at = reported_at @property def task_id(self): @@ -543,6 +548,29 @@ def event_version(self, event_version): self._event_version = event_version + @property + def reported_at(self): + """Gets the reported_at of this EventTaskExecutionEvent. # noqa: E501 + + This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes, but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series. # noqa: E501 + + :return: The reported_at of this EventTaskExecutionEvent. # noqa: E501 + :rtype: datetime + """ + return self._reported_at + + @reported_at.setter + def reported_at(self, reported_at): + """Sets the reported_at of this EventTaskExecutionEvent. + + This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes, but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series. # noqa: E501 + + :param reported_at: The reported_at of this EventTaskExecutionEvent. # noqa: E501 + :type: datetime + """ + + self._reported_at = reported_at + def to_dict(self): """Returns the model properties as a dict""" result = {} 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 4e4bee3a2..680b2cd5f 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 @@ -127,6 +127,13 @@ def test_get_execution_data(self): """ pass + def test_get_execution_metrics(self): + """Test case for get_execution_metrics + + Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. # noqa: E501 + """ + pass + def test_get_launch_plan(self): """Test case for get_launch_plan diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_workflow_execution_get_metrics_response.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_workflow_execution_get_metrics_response.py new file mode 100644 index 000000000..58eeaa0ba --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_workflow_execution_get_metrics_response.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_workflow_execution_get_metrics_response import AdminWorkflowExecutionGetMetricsResponse # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestAdminWorkflowExecutionGetMetricsResponse(unittest.TestCase): + """AdminWorkflowExecutionGetMetricsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAdminWorkflowExecutionGetMetricsResponse(self): + """Test AdminWorkflowExecutionGetMetricsResponse""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.admin_workflow_execution_get_metrics_response.AdminWorkflowExecutionGetMetricsResponse() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_core_span.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_core_span.py new file mode 100644 index 000000000..0e445a969 --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_core_span.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +from __future__ import absolute_import + +import unittest + +import flyteadmin +from flyteadmin.models.core_span import CoreSpan # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestCoreSpan(unittest.TestCase): + """CoreSpan unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testCoreSpan(self): + """Test CoreSpan""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.core_span.CoreSpan() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/protos/flyteidl/admin/common.proto b/protos/flyteidl/admin/common.proto index 69e02e710..a71648916 100644 --- a/protos/flyteidl/admin/common.proto +++ b/protos/flyteidl/admin/common.proto @@ -5,6 +5,7 @@ option go_package = "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin"; import "flyteidl/core/execution.proto"; import "flyteidl/core/identifier.proto"; +import "google/protobuf/timestamp.proto"; // Encapsulation of fields that identifies a Flyte resource. // A Flyte resource can be a task, workflow or launch plan. diff --git a/protos/flyteidl/admin/execution.proto b/protos/flyteidl/admin/execution.proto index 6a7c16422..0f4be0d7a 100644 --- a/protos/flyteidl/admin/execution.proto +++ b/protos/flyteidl/admin/execution.proto @@ -8,6 +8,7 @@ import "flyteidl/admin/common.proto"; import "flyteidl/core/literals.proto"; import "flyteidl/core/execution.proto"; import "flyteidl/core/identifier.proto"; +import "flyteidl/core/metrics.proto"; import "flyteidl/core/security.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; @@ -381,3 +382,19 @@ message ExecutionStateChangeDetails { } message ExecutionUpdateResponse {} + +// WorkflowExecutionGetMetricsRequest represents a request to retrieve metrics for the specified workflow execution. +message WorkflowExecutionGetMetricsRequest { + // id defines the workflow execution to query for. + core.WorkflowExecutionIdentifier id = 1; + + // depth defines the number of Flyte entity levels to traverse when breaking down execution details. + int32 depth = 2; +} + +// WorkflowExecutionGetMetricsResponse represents the response containing metrics for the specified workflow execution. +message WorkflowExecutionGetMetricsResponse { + // Span defines the top-level breakdown of the workflows execution. More precise information is nested in a + // hierarchical structure using Flyte entity references. + core.Span span = 1; +} diff --git a/protos/flyteidl/admin/node_execution.proto b/protos/flyteidl/admin/node_execution.proto index ffec5b4a6..8132598c8 100644 --- a/protos/flyteidl/admin/node_execution.proto +++ b/protos/flyteidl/admin/node_execution.proto @@ -228,4 +228,3 @@ message NodeExecutionGetDataResponse { // Optional Workflow closure for a dynamically generated workflow, in the case this node yields a dynamic workflow we return its structure here. DynamicWorkflowNodeMetadata dynamic_workflow = 16; } - diff --git a/protos/flyteidl/core/metrics.proto b/protos/flyteidl/core/metrics.proto new file mode 100644 index 000000000..c96a59988 --- /dev/null +++ b/protos/flyteidl/core/metrics.proto @@ -0,0 +1,36 @@ +syntax = "proto3"; + +package flyteidl.core; + +option go_package = "github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core"; + +import "flyteidl/core/identifier.proto"; +import "google/protobuf/timestamp.proto"; + +// Span represents a duration trace of Flyte execution. The id field denotes a Flyte execution entity or an operation +// which uniquely identifies the Span. The spans attribute allows this Span to be further broken down into more +// precise definitions. +message Span { + // start_time defines the instance this span began. + google.protobuf.Timestamp start_time = 1; + + // end_time defines the instance this span completed. + google.protobuf.Timestamp end_time = 2; + + oneof id { + // workflow_id is the id of the workflow execution this Span represents. + flyteidl.core.WorkflowExecutionIdentifier workflow_id = 3; + + // node_id is the id of the node execution this Span represents. + flyteidl.core.NodeExecutionIdentifier node_id = 4; + + // task_id is the id of the task execution this Span represents. + flyteidl.core.TaskExecutionIdentifier task_id = 5; + + // operation_id is the id of a unique operation that this Span represents. + string operation_id = 6; + } + + // spans defines a collection of Spans that breakdown this execution. + repeated Span spans = 7; +} diff --git a/protos/flyteidl/event/event.proto b/protos/flyteidl/event/event.proto index 284b50e4f..71fa0799e 100644 --- a/protos/flyteidl/event/event.proto +++ b/protos/flyteidl/event/event.proto @@ -104,6 +104,12 @@ message NodeExecutionEvent { // String location uniquely identifying where the deck HTML file is // NativeUrl specifies the url in the format of the configured storage provider (e.g. s3://my-bucket/randomstring/suffix.tar) string deck_uri = 19; + + // This timestamp represents the instant when the event was reported by the executing framework. For example, + // when first processing a node the `occurred_at` timestamp should be the instant propeller makes progress, so when + // literal inputs are initially copied. The event however will not be sent until after the copy completes. + // Extracting both of these timestamps facilitates a more accurate portrayal of the evaluation time-series. + google.protobuf.Timestamp reported_at = 21; } // For Workflow Nodes we need to send information about the workflow that's launched @@ -221,6 +227,12 @@ message TaskExecutionEvent { // TaskExecutionMetadata ExternalResourceInfo fields for each subtask rather than the TaskLog // in this message. int32 event_version = 18; + + // This timestamp represents the instant when the event was reported by the executing framework. For example, a k8s + // pod task may be marked completed at (ie. `occurred_at`) the instant the container running user code completes, + // but this event will not be reported until the pod is marked as completed. Extracting both of these timestamps + // facilitates a more accurate portrayal of the evaluation time-series. + google.protobuf.Timestamp reported_at = 20; } // This message contains metadata about external resources produced or used by a specific task execution. diff --git a/protos/flyteidl/service/admin.proto b/protos/flyteidl/service/admin.proto index 6905006bb..90fcf4efd 100644 --- a/protos/flyteidl/service/admin.proto +++ b/protos/flyteidl/service/admin.proto @@ -20,6 +20,7 @@ import "flyteidl/admin/version.proto"; import "flyteidl/admin/common.proto"; import "flyteidl/admin/description_entity.proto"; import "flyteidl/core/identifier.proto"; +import "flyteidl/core/metrics.proto"; // import "protoc-gen-swagger/options/annotations.proto"; // The following defines an RPC service that is also served over HTTP via grpc-gateway. @@ -627,4 +628,14 @@ service AdminService { // description: "Fetch existing description entity definitions matching input filters." // }; } + + // Fetches runtime metrics for a :ref:`ref_flyteidl.admin.Execution`. + rpc GetExecutionMetrics (flyteidl.admin.WorkflowExecutionGetMetricsRequest) returns (flyteidl.admin.WorkflowExecutionGetMetricsResponse) { + option (google.api.http) = { + get: "/api/v1/metrics/executions/{id.project}/{id.domain}/{id.name}" + }; + // option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + // description: "Retrieve metrics from an existing workflow execution." + // }; + }; }