diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ecd0691a..10817f68c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -224,6 +224,7 @@ set(DUCKDB_SRC_FILES src/duckdb/ub_src_storage_compression_alp.cpp src/duckdb/ub_src_storage_compression.cpp src/duckdb/ub_src_storage_compression_chimp.cpp + src/duckdb/ub_src_storage_compression_dict_fsst.cpp src/duckdb/ub_src_storage_compression_dictionary.cpp src/duckdb/ub_src_storage_compression_roaring.cpp src/duckdb/ub_src_storage_metadata.cpp @@ -338,43 +339,44 @@ set(DUCKDB_SRC_FILES src/duckdb/third_party/zstd/dict/divsufsort.cpp src/duckdb/third_party/zstd/dict/fastcover.cpp src/duckdb/third_party/zstd/dict/zdict.cpp - src/duckdb/extension/core_functions/function_list.cpp src/duckdb/extension/core_functions/lambda_functions.cpp + src/duckdb/extension/core_functions/function_list.cpp src/duckdb/extension/core_functions/core_functions_extension.cpp - src/duckdb/ub_extension_core_functions_scalar_struct.cpp src/duckdb/ub_extension_core_functions_scalar_bit.cpp src/duckdb/ub_extension_core_functions_scalar_blob.cpp - src/duckdb/ub_extension_core_functions_scalar_generic.cpp - src/duckdb/ub_extension_core_functions_scalar_string.cpp src/duckdb/ub_extension_core_functions_scalar_union.cpp + src/duckdb/ub_extension_core_functions_scalar_debug.cpp + src/duckdb/ub_extension_core_functions_scalar_math.cpp + src/duckdb/ub_extension_core_functions_scalar_array.cpp src/duckdb/ub_extension_core_functions_scalar_list.cpp + src/duckdb/ub_extension_core_functions_scalar_date.cpp src/duckdb/ub_extension_core_functions_scalar_random.cpp - src/duckdb/ub_extension_core_functions_scalar_enum.cpp + src/duckdb/ub_extension_core_functions_scalar_generic.cpp + src/duckdb/ub_extension_core_functions_scalar_struct.cpp src/duckdb/ub_extension_core_functions_scalar_map.cpp + src/duckdb/ub_extension_core_functions_scalar_string.cpp + src/duckdb/ub_extension_core_functions_scalar_enum.cpp src/duckdb/ub_extension_core_functions_scalar_operators.cpp - src/duckdb/ub_extension_core_functions_scalar_debug.cpp - src/duckdb/ub_extension_core_functions_scalar_date.cpp - src/duckdb/ub_extension_core_functions_scalar_math.cpp - src/duckdb/ub_extension_core_functions_scalar_array.cpp - src/duckdb/ub_extension_core_functions_aggregate_algebraic.cpp - src/duckdb/ub_extension_core_functions_aggregate_regression.cpp - src/duckdb/ub_extension_core_functions_aggregate_holistic.cpp src/duckdb/ub_extension_core_functions_aggregate_nested.cpp + src/duckdb/ub_extension_core_functions_aggregate_holistic.cpp + src/duckdb/ub_extension_core_functions_aggregate_regression.cpp src/duckdb/ub_extension_core_functions_aggregate_distributive.cpp - src/duckdb/extension/parquet/parquet_extension.cpp - src/duckdb/extension/parquet/geo_parquet.cpp - src/duckdb/extension/parquet/column_reader.cpp - src/duckdb/extension/parquet/parquet_timestamp.cpp - src/duckdb/extension/parquet/column_writer.cpp - src/duckdb/extension/parquet/zstd_file_system.cpp + src/duckdb/ub_extension_core_functions_aggregate_algebraic.cpp src/duckdb/extension/parquet/parquet_reader.cpp - src/duckdb/extension/parquet/serialize_parquet.cpp - src/duckdb/extension/parquet/parquet_writer.cpp + src/duckdb/extension/parquet/parquet_multi_file_info.cpp + src/duckdb/extension/parquet/column_writer.cpp + src/duckdb/extension/parquet/parquet_timestamp.cpp src/duckdb/extension/parquet/parquet_float16.cpp + src/duckdb/extension/parquet/geo_parquet.cpp + src/duckdb/extension/parquet/parquet_extension.cpp src/duckdb/extension/parquet/parquet_crypto.cpp - src/duckdb/extension/parquet/parquet_multi_file_info.cpp - src/duckdb/extension/parquet/parquet_metadata.cpp + src/duckdb/extension/parquet/parquet_writer.cpp + src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp src/duckdb/extension/parquet/parquet_statistics.cpp + src/duckdb/extension/parquet/parquet_metadata.cpp + src/duckdb/extension/parquet/serialize_parquet.cpp + src/duckdb/extension/parquet/zstd_file_system.cpp + src/duckdb/extension/parquet/column_reader.cpp src/duckdb/ub_extension_parquet_decoder.cpp src/duckdb/ub_extension_parquet_reader.cpp src/duckdb/ub_extension_parquet_writer.cpp @@ -416,32 +418,32 @@ set(DUCKDB_SRC_FILES src/duckdb/third_party/brotli/enc/metablock.cpp src/duckdb/third_party/brotli/enc/static_dict.cpp src/duckdb/third_party/brotli/enc/utf8_util.cpp - src/duckdb/extension/icu/./icu-strptime.cpp + src/duckdb/extension/icu/./icu-datefunc.cpp + src/duckdb/extension/icu/./icu-list-range.cpp + src/duckdb/extension/icu/./icu-datetrunc.cpp + src/duckdb/extension/icu/./icu-makedate.cpp src/duckdb/extension/icu/./icu-timebucket.cpp src/duckdb/extension/icu/./icu_extension.cpp + src/duckdb/extension/icu/./icu-current.cpp + src/duckdb/extension/icu/./icu-datepart.cpp src/duckdb/extension/icu/./icu-datesub.cpp - src/duckdb/extension/icu/./icu-datefunc.cpp src/duckdb/extension/icu/./icu-table-range.cpp - src/duckdb/extension/icu/./icu-makedate.cpp - src/duckdb/extension/icu/./icu-datetrunc.cpp - src/duckdb/extension/icu/./icu-datepart.cpp - src/duckdb/extension/icu/./icu-timezone.cpp src/duckdb/extension/icu/./icu-dateadd.cpp - src/duckdb/extension/icu/./icu-current.cpp - src/duckdb/extension/icu/./icu-list-range.cpp + src/duckdb/extension/icu/./icu-strptime.cpp + src/duckdb/extension/icu/./icu-timezone.cpp src/duckdb/ub_extension_icu_third_party_icu_common.cpp src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp - src/duckdb/extension/json/json_enums.cpp + src/duckdb/extension/json/json_serializer.cpp src/duckdb/extension/json/json_multi_file_info.cpp src/duckdb/extension/json/serialize_json.cpp - src/duckdb/extension/json/json_scan.cpp + src/duckdb/extension/json/json_enums.cpp + src/duckdb/extension/json/json_reader.cpp src/duckdb/extension/json/json_common.cpp src/duckdb/extension/json/json_functions.cpp - src/duckdb/extension/json/json_reader.cpp src/duckdb/extension/json/json_deserializer.cpp + src/duckdb/extension/json/json_scan.cpp src/duckdb/extension/json/json_extension.cpp - src/duckdb/extension/json/json_serializer.cpp src/duckdb/ub_extension_json_json_functions.cpp) set(JEMALLOC_SRC_FILES diff --git a/src/duckdb/extension/core_functions/scalar/map/map_extract.cpp b/src/duckdb/extension/core_functions/scalar/map/map_extract.cpp index bebad99d2..5fd61fab4 100644 --- a/src/duckdb/extension/core_functions/scalar/map/map_extract.cpp +++ b/src/duckdb/extension/core_functions/scalar/map/map_extract.cpp @@ -57,7 +57,7 @@ static void MapExtractValueFunc(DataChunk &args, ExpressionState &state, Vector // Collect the matching positions Vector pos_vec(LogicalType::INTEGER, count); - ListSearchOp(map_vec, key_vec, arg_vec, pos_vec, args.size()); + ListSearchOp(map_vec, key_vec, arg_vec, pos_vec, args.size()); UnifiedVectorFormat pos_format; UnifiedVectorFormat lst_format; @@ -68,7 +68,6 @@ static void MapExtractValueFunc(DataChunk &args, ExpressionState &state, Vector const auto pos_data = UnifiedVectorFormat::GetData(pos_format); const auto inc_list_data = ListVector::GetData(map_vec); - auto &result_validity = FlatVector::Validity(result); for (idx_t row_idx = 0; row_idx < count; row_idx++) { auto lst_idx = lst_format.sel->get_index(row_idx); if (!lst_format.validity.RowIsValid(lst_idx)) { @@ -79,7 +78,7 @@ static void MapExtractValueFunc(DataChunk &args, ExpressionState &state, Vector const auto pos_idx = pos_format.sel->get_index(row_idx); if (!pos_format.validity.RowIsValid(pos_idx)) { // We didnt find the key in the map, so return NULL - result_validity.SetInvalid(row_idx); + FlatVector::SetNull(result, row_idx, true); continue; } @@ -118,7 +117,7 @@ static void MapExtractListFunc(DataChunk &args, ExpressionState &state, Vector & // Collect the matching positions Vector pos_vec(LogicalType::INTEGER, count); - ListSearchOp(map_vec, key_vec, arg_vec, pos_vec, args.size()); + ListSearchOp(map_vec, key_vec, arg_vec, pos_vec, args.size()); UnifiedVectorFormat val_format; UnifiedVectorFormat pos_format; diff --git a/src/duckdb/extension/core_functions/scalar/math/numeric.cpp b/src/duckdb/extension/core_functions/scalar/math/numeric.cpp index 47eed7a79..90d6f205a 100644 --- a/src/duckdb/extension/core_functions/scalar/math/numeric.cpp +++ b/src/duckdb/extension/core_functions/scalar/math/numeric.cpp @@ -1,3 +1,4 @@ +#include "duckdb/common/operator/decimal_cast_operators.hpp" #include "duckdb/common/vector_operations/vector_operations.hpp" #include "duckdb/common/algorithm.hpp" #include "duckdb/common/likely.hpp" @@ -566,6 +567,34 @@ struct RoundDecimalOperator { } }; +struct RoundIntegerOperator { + template + static inline TR Operation(TA input, TB precision) { + if (precision < 0) { + // Do all the arithmetic at higher precision + using POWERS_OF_TEN_CLASS = typename DecimalCastTraits::POWERS_OF_TEN_CLASS; + if (precision <= -POWERS_OF_TEN_CLASS::CACHED_POWERS_OF_TEN) { + return 0; + } + const auto power_of_ten = POWERS_OF_TEN_CLASS::POWERS_OF_TEN[-precision]; + auto addition = power_of_ten / 2; + if (input < 0) { + addition = -addition; + } + addition += input; + addition /= power_of_ten; + if (addition) { + return UnsafeNumericCast(addition * power_of_ten); + } else { + return 0; + } + } else { + // Rounding integers to higher precision is a NOP + return input; + } + } +}; + struct RoundPrecisionFunctionData : public FunctionData { explicit RoundPrecisionFunctionData(int32_t target_scale) : target_scale(target_scale) { } @@ -698,10 +727,6 @@ ScalarFunctionSet RoundFun::GetFunctions() { scalar_function_t round_func = nullptr; bind_scalar_function_t bind_func = nullptr; bind_scalar_function_t bind_prec_func = nullptr; - if (type.IsIntegral()) { - // no round for integral numbers - continue; - } switch (type.id()) { case LogicalTypeId::FLOAT: round_func = ScalarFunction::UnaryFunction; @@ -715,7 +740,31 @@ ScalarFunctionSet RoundFun::GetFunctions() { bind_func = BindGenericRoundFunctionDecimal; bind_prec_func = BindDecimalRoundPrecision; break; + case LogicalTypeId::TINYINT: + round_func = ScalarFunction::NopFunction; + round_prec_func = ScalarFunction::BinaryFunction; + break; + case LogicalTypeId::SMALLINT: + round_func = ScalarFunction::NopFunction; + round_prec_func = ScalarFunction::BinaryFunction; + break; + case LogicalTypeId::INTEGER: + round_func = ScalarFunction::NopFunction; + round_prec_func = ScalarFunction::BinaryFunction; + break; + case LogicalTypeId::BIGINT: + round_func = ScalarFunction::NopFunction; + round_prec_func = ScalarFunction::BinaryFunction; + break; + case LogicalTypeId::HUGEINT: + round_func = ScalarFunction::NopFunction; + round_prec_func = ScalarFunction::BinaryFunction; + break; default: + if (type.IsIntegral()) { + // no round for integral numbers + continue; + } throw InternalException("Unimplemented numeric type for function \"floor\""); } round.AddFunction(ScalarFunction({type}, type, round_func, bind_func)); diff --git a/src/duckdb/extension/icu/icu-table-range.cpp b/src/duckdb/extension/icu/icu-table-range.cpp index 70572ba3c..def815227 100644 --- a/src/duckdb/extension/icu/icu-table-range.cpp +++ b/src/duckdb/extension/icu/icu-table-range.cpp @@ -1,10 +1,10 @@ #include "duckdb/common/exception.hpp" +#include "duckdb/common/operator/subtract.hpp" #include "duckdb/common/types/interval.hpp" #include "duckdb/common/types/timestamp.hpp" #include "duckdb/main/extension_util.hpp" #include "duckdb/function/function_set.hpp" #include "duckdb/function/table_function.hpp" -#include "duckdb/parser/parsed_data/create_table_function_info.hpp" #include "include/icu-datefunc.hpp" #include "unicode/calendar.h" #include "tz_calendar.hpp" @@ -17,10 +17,10 @@ struct ICUTableRange { struct ICURangeBindData : public TableFunctionData { ICURangeBindData(const ICURangeBindData &other) : TableFunctionData(other), tz_setting(other.tz_setting), cal_setting(other.cal_setting), - calendar(other.calendar->clone()) { + calendar(other.calendar->clone()), cardinality(other.cardinality) { } - explicit ICURangeBindData(ClientContext &context) { + explicit ICURangeBindData(ClientContext &context, const vector &inputs) { Value tz_value; if (context.TryGetCurrentSetting("TimeZone", tz_value)) { tz_setting = tz_value.ToString(); @@ -43,11 +43,36 @@ struct ICUTableRange { if (U_FAILURE(success)) { throw InternalException("Unable to create ICU calendar."); } + + timestamp_tz_t bounds[2]; + interval_t step; + for (idx_t i = 0; i < inputs.size(); i++) { + if (inputs[i].IsNull()) { + return; + } + if (i >= 2) { + step = inputs[i].GetValue(); + } else { + bounds[i] = inputs[i].GetValue(); + } + } + // Estimate cardinality using micros. + int64_t increment = 0; + if (!Interval::TryGetMicro(step, increment) || !increment) { + return; + } + int64_t delta = 0; + if (!TrySubtractOperator::Operation(bounds[1].value, bounds[0].value, delta)) { + return; + } + + cardinality = idx_t(delta / increment); } string tz_setting; string cal_setting; CalendarPtr calendar; + idx_t cardinality; }; struct ICURangeLocalState : public LocalTableFunctionState { @@ -130,7 +155,7 @@ struct ICUTableRange { template static unique_ptr Bind(ClientContext &context, TableFunctionBindInput &input, vector &return_types, vector &names) { - auto result = make_uniq(context); + auto result = make_uniq(context, input.inputs); return_types.push_back(LogicalType::TIMESTAMP_TZ); if (GENERATE_SERIES) { @@ -147,6 +172,14 @@ struct ICUTableRange { return make_uniq(); } + static unique_ptr Cardinality(ClientContext &context, const FunctionData *bind_data_p) { + if (!bind_data_p) { + return nullptr; + } + auto &bind_data = bind_data_p->Cast(); + return make_uniq(bind_data.cardinality, bind_data.cardinality); + } + template static OperatorResultType ICUTableRangeFunction(ExecutionContext &context, TableFunctionInput &data_p, DataChunk &input, DataChunk &output) { @@ -201,6 +234,7 @@ struct ICUTableRange { TableFunction range_function({LogicalType::TIMESTAMP_TZ, LogicalType::TIMESTAMP_TZ, LogicalType::INTERVAL}, nullptr, Bind, nullptr, RangeDateTimeLocalInit); range_function.in_out_function = ICUTableRangeFunction; + range_function.cardinality = Cardinality; range.AddFunction(range_function); ExtensionUtil::RegisterFunction(db, range); @@ -210,6 +244,7 @@ struct ICUTableRange { {LogicalType::TIMESTAMP_TZ, LogicalType::TIMESTAMP_TZ, LogicalType::INTERVAL}, nullptr, Bind, nullptr, RangeDateTimeLocalInit); generate_series_function.in_out_function = ICUTableRangeFunction; + generate_series_function.cardinality = Cardinality; generate_series.AddFunction(generate_series_function); ExtensionUtil::RegisterFunction(db, generate_series); } diff --git a/src/duckdb/extension/icu/third_party/icu/common/unistr.cpp b/src/duckdb/extension/icu/third_party/icu/common/unistr.cpp index 77cd347ff..bb9c31910 100644 --- a/src/duckdb/extension/icu/third_party/icu/common/unistr.cpp +++ b/src/duckdb/extension/icu/third_party/icu/common/unistr.cpp @@ -1563,7 +1563,11 @@ UnicodeString::doAppend(const UChar *srcChars, int32_t srcStart, int32_t srcLeng } int32_t oldLength = length(); - int32_t newLength = oldLength + srcLength; + int32_t newLength; + if (uprv_add32_overflow(oldLength, srcLength, &newLength)) { + setToBogus(); + return *this; + } // Check for append onto ourself const UChar* oldArray = getArrayStart(); diff --git a/src/duckdb/extension/json/include/json_common.hpp b/src/duckdb/extension/json/include/json_common.hpp index d0a92e17d..ddde2bbf7 100644 --- a/src/duckdb/extension/json/include/json_common.hpp +++ b/src/duckdb/extension/json/include/json_common.hpp @@ -18,11 +18,23 @@ using namespace duckdb_yyjson; // NOLINT namespace duckdb { +class JSONAllocator; + +class JSONStringVectorBuffer : public VectorBuffer { +public: + explicit JSONStringVectorBuffer(shared_ptr allocator_p) + : VectorBuffer(VectorBufferType::OPAQUE_BUFFER), allocator(std::move(allocator_p)) { + } + +private: + shared_ptr allocator; +}; + //! JSON allocator is a custom allocator for yyjson that prevents many tiny allocations -class JSONAllocator { +class JSONAllocator : public enable_shared_from_this { public: explicit JSONAllocator(Allocator &allocator) - : arena_allocator(allocator), yyjson_allocator({Allocate, Reallocate, Free, &arena_allocator}) { + : arena_allocator(allocator), yyjson_allocator({Allocate, Reallocate, Free, this}) { } inline yyjson_alc *GetYYAlc() { @@ -33,15 +45,26 @@ class JSONAllocator { arena_allocator.Reset(); } + void AddBuffer(Vector &vector) { + if (vector.GetType().InternalType() == PhysicalType::VARCHAR) { + StringVector::AddBuffer(vector, make_buffer(shared_from_this())); + } + } + + static void AddBuffer(Vector &vector, yyjson_alc *alc) { + auto alloc = (JSONAllocator *)alc->ctx; // NOLINT + alloc->AddBuffer(vector); + } + private: static inline void *Allocate(void *ctx, size_t size) { - auto alloc = (ArenaAllocator *)ctx; - return alloc->AllocateAligned(size); + auto alloc = (JSONAllocator *)ctx; // NOLINT + return alloc->arena_allocator.AllocateAligned(size); } static inline void *Reallocate(void *ctx, void *ptr, size_t old_size, size_t size) { - auto alloc = (ArenaAllocator *)ctx; - return alloc->ReallocateAligned(data_ptr_cast(ptr), old_size, size); + auto alloc = (JSONAllocator *)ctx; // NOLINT + return alloc->arena_allocator.ReallocateAligned(data_ptr_cast(ptr), old_size, size); } static inline void Free(void *ctx, void *ptr) { @@ -304,6 +327,20 @@ struct JSONCommon { //! Validate JSON Path ($.field[index]... syntax), returns true if there are wildcards in the path static JSONPathType ValidatePath(const char *ptr, const idx_t &len, const bool binder); +public: + //! Same as BigQuery json_value + static inline string_t JSONValue(yyjson_val *val, yyjson_alc *alc, Vector &, ValidityMask &mask, idx_t idx) { + switch (yyjson_get_tag(val)) { + case YYJSON_TYPE_NULL | YYJSON_SUBTYPE_NONE: + case YYJSON_TYPE_ARR | YYJSON_SUBTYPE_NONE: + case YYJSON_TYPE_OBJ | YYJSON_SUBTYPE_NONE: + mask.SetInvalid(idx); + return string_t {}; + default: + return JSONCommon::WriteVal(val, alc); + } + } + private: //! Get JSON pointer (/field/index/... syntax) static inline yyjson_val *GetPointer(yyjson_val *val, const char *ptr, const idx_t &len) { diff --git a/src/duckdb/extension/json/include/json_executors.hpp b/src/duckdb/extension/json/include/json_executors.hpp index 3290a95ed..121cbd0f5 100644 --- a/src/duckdb/extension/json/include/json_executors.hpp +++ b/src/duckdb/extension/json/include/json_executors.hpp @@ -23,7 +23,7 @@ struct JSONExecutors { template static void UnaryExecute(DataChunk &args, ExpressionState &state, Vector &result, const json_function_t fun) { auto &lstate = JSONFunctionLocalState::ResetAndGet(state); - auto alc = lstate.json_allocator.GetYYAlc(); + auto alc = lstate.json_allocator->GetYYAlc(); auto &inputs = args.data[0]; UnaryExecutor::ExecuteWithNulls( @@ -31,6 +31,8 @@ struct JSONExecutors { auto doc = JSONCommon::ReadDocument(input, JSONCommon::READ_FLAG, alc); return fun(doc->root, alc, result, mask, idx); }); + + JSONAllocator::AddBuffer(result, alc); } //! Two-argument JSON read function (with path query), i.e. json_type('[1, 2, 3]', '$[0]') @@ -39,7 +41,7 @@ struct JSONExecutors { auto &func_expr = state.expr.Cast(); const auto &info = func_expr.bind_info->Cast(); auto &lstate = JSONFunctionLocalState::ResetAndGet(state); - auto alc = lstate.json_allocator.GetYYAlc(); + auto alc = lstate.json_allocator->GetYYAlc(); auto &inputs = args.data[0]; if (info.constant) { // Constant path @@ -48,8 +50,7 @@ struct JSONExecutors { if (info.path_type == JSONCommon::JSONPathType::REGULAR) { UnaryExecutor::ExecuteWithNulls( inputs, result, args.size(), [&](string_t input, ValidityMask &mask, idx_t idx) { - auto doc = - JSONCommon::ReadDocument(input, JSONCommon::READ_FLAG, lstate.json_allocator.GetYYAlc()); + auto doc = JSONCommon::ReadDocument(input, JSONCommon::READ_FLAG, alc); auto val = JSONCommon::GetUnsafe(doc->root, ptr, len); if (SET_NULL_IF_NOT_FOUND && !val) { mask.SetInvalid(idx); @@ -64,7 +65,7 @@ struct JSONExecutors { UnaryExecutor::Execute(inputs, result, args.size(), [&](string_t input) { vals.clear(); - auto doc = JSONCommon::ReadDocument(input, JSONCommon::READ_FLAG, lstate.json_allocator.GetYYAlc()); + auto doc = JSONCommon::ReadDocument(input, JSONCommon::READ_FLAG, alc); JSONCommon::GetWildcardPath(doc->root, ptr, len, vals); auto current_size = ListVector::GetListSize(result); @@ -99,7 +100,7 @@ struct JSONExecutors { BinaryExecutor::ExecuteWithNulls( inputs, *casted_paths, result, args.size(), [&](string_t input, string_t path, ValidityMask &mask, idx_t idx) { - auto doc = JSONCommon::ReadDocument(input, JSONCommon::READ_FLAG, lstate.json_allocator.GetYYAlc()); + auto doc = JSONCommon::ReadDocument(input, JSONCommon::READ_FLAG, alc); auto val = JSONCommon::Get(doc->root, path, args.data[1].GetType().IsIntegral()); if (SET_NULL_IF_NOT_FOUND && !val) { mask.SetInvalid(idx); @@ -112,6 +113,8 @@ struct JSONExecutors { if (args.AllConstant()) { result.SetVectorType(VectorType::CONSTANT_VECTOR); } + + JSONAllocator::AddBuffer(result, alc); } //! JSON read function with list of path queries, i.e. json_type('[1, 2, 3]', ['$[0]', '$[1]']) @@ -120,7 +123,7 @@ struct JSONExecutors { auto &func_expr = state.expr.Cast(); const auto &info = func_expr.bind_info->Cast(); auto &lstate = JSONFunctionLocalState::ResetAndGet(state); - auto alc = lstate.json_allocator.GetYYAlc(); + auto alc = lstate.json_allocator->GetYYAlc(); D_ASSERT(info.ptrs.size() == info.lens.size()); const auto count = args.size(); @@ -149,7 +152,7 @@ struct JSONExecutors { continue; } - auto doc = JSONCommon::ReadDocument(inputs[idx], JSONCommon::READ_FLAG, lstate.json_allocator.GetYYAlc()); + auto doc = JSONCommon::ReadDocument(inputs[idx], JSONCommon::READ_FLAG, alc); for (idx_t path_i = 0; path_i < num_paths; path_i++) { auto child_idx = offset + path_i; val = JSONCommon::GetUnsafe(doc->root, info.ptrs[path_i], info.lens[path_i]); @@ -169,6 +172,8 @@ struct JSONExecutors { if (args.AllConstant()) { result.SetVectorType(VectorType::CONSTANT_VECTOR); } + + JSONAllocator::AddBuffer(result, alc); } }; diff --git a/src/duckdb/extension/json/include/json_functions.hpp b/src/duckdb/extension/json/include/json_functions.hpp index cd19f3735..23da73cdd 100644 --- a/src/duckdb/extension/json/include/json_functions.hpp +++ b/src/duckdb/extension/json/include/json_functions.hpp @@ -27,6 +27,7 @@ struct JSONReadFunctionData : public FunctionData { JSONReadFunctionData(bool constant, string path_p, idx_t len, JSONCommon::JSONPathType path_type); unique_ptr Copy() const override; bool Equals(const FunctionData &other_p) const override; + static JSONCommon::JSONPathType CheckPath(const Value &path_val, string &path, size_t &len); static unique_ptr Bind(ClientContext &context, ScalarFunction &bound_function, vector> &arguments); @@ -62,7 +63,7 @@ struct JSONFunctionLocalState : public FunctionLocalState { static JSONFunctionLocalState &ResetAndGet(ExpressionState &state); public: - JSONAllocator json_allocator; + shared_ptr json_allocator; }; class JSONFunctions { @@ -128,6 +129,9 @@ class JSONFunctions { static TableFunctionSet GetReadJSONAutoFunction(); static TableFunctionSet GetReadNDJSONAutoFunction(); + static TableFunctionSet GetJSONEachFunction(); + static TableFunctionSet GetJSONTreeFunction(); + static TableFunctionSet GetExecuteJsonSerializedSqlFunction(); }; diff --git a/src/duckdb/extension/json/json_functions.cpp b/src/duckdb/extension/json/json_functions.cpp index 83aebb6a7..ce1071547 100644 --- a/src/duckdb/extension/json/json_functions.cpp +++ b/src/duckdb/extension/json/json_functions.cpp @@ -14,7 +14,7 @@ namespace duckdb { using JSONPathType = JSONCommon::JSONPathType; -static JSONPathType CheckPath(const Value &path_val, string &path, size_t &len) { +JSONPathType JSONReadFunctionData::CheckPath(const Value &path_val, string &path, size_t &len) { if (path_val.IsNull()) { throw BinderException("JSON path cannot be NULL"); } @@ -113,7 +113,7 @@ unique_ptr JSONReadManyFunctionData::Bind(ClientContext &context, for (auto &path_val : ListValue::GetChildren(paths_val)) { paths.emplace_back(""); lens.push_back(0); - if (CheckPath(path_val, paths.back(), lens.back()) == JSONPathType::WILDCARD) { + if (JSONReadFunctionData::CheckPath(path_val, paths.back(), lens.back()) == JSONPathType::WILDCARD) { throw BinderException("Cannot have wildcards in JSON path when supplying multiple paths"); } } @@ -121,7 +121,8 @@ unique_ptr JSONReadManyFunctionData::Bind(ClientContext &context, return make_uniq(std::move(paths), std::move(lens)); } -JSONFunctionLocalState::JSONFunctionLocalState(Allocator &allocator) : json_allocator(allocator) { +JSONFunctionLocalState::JSONFunctionLocalState(Allocator &allocator) + : json_allocator(make_shared_ptr(allocator)) { } JSONFunctionLocalState::JSONFunctionLocalState(ClientContext &context) @@ -140,7 +141,7 @@ unique_ptr JSONFunctionLocalState::InitCastLocalState(CastLo JSONFunctionLocalState &JSONFunctionLocalState::ResetAndGet(ExpressionState &state) { auto &lstate = ExecuteFunctionState::GetFunctionState(state)->Cast(); - lstate.json_allocator.Reset(); + lstate.json_allocator->Reset(); return lstate; } @@ -200,6 +201,12 @@ vector JSONFunctions::GetTableFunctions() { functions.push_back(GetReadNDJSONFunction()); functions.push_back(GetReadJSONAutoFunction()); functions.push_back(GetReadNDJSONAutoFunction()); + + // Table in-out + functions.push_back(GetJSONEachFunction()); + functions.push_back(GetJSONTreeFunction()); + + // Serialized plan functions.push_back(GetExecuteJsonSerializedSqlFunction()); return functions; @@ -226,8 +233,8 @@ unique_ptr JSONFunctions::ReadJSONReplacement(ClientContext &context, static bool CastVarcharToJSON(Vector &source, Vector &result, idx_t count, CastParameters ¶meters) { auto &lstate = parameters.local_state->Cast(); - lstate.json_allocator.Reset(); - auto alc = lstate.json_allocator.GetYYAlc(); + lstate.json_allocator->Reset(); + auto alc = lstate.json_allocator->GetYYAlc(); bool success = true; UnaryExecutor::ExecuteWithNulls( diff --git a/src/duckdb/extension/json/json_functions/json_contains.cpp b/src/duckdb/extension/json/json_functions/json_contains.cpp index bb0c43da2..79394e972 100644 --- a/src/duckdb/extension/json/json_functions/json_contains.cpp +++ b/src/duckdb/extension/json/json_functions/json_contains.cpp @@ -109,6 +109,7 @@ static inline bool JSONContains(yyjson_val *haystack, yyjson_val *needle) { static void JSONContainsFunction(DataChunk &args, ExpressionState &state, Vector &result) { D_ASSERT(args.data.size() == 2); auto &lstate = JSONFunctionLocalState::ResetAndGet(state); + auto alc = lstate.json_allocator->GetYYAlc(); auto &haystacks = args.data[0]; auto &needles = args.data[1]; @@ -120,19 +121,16 @@ static void JSONContainsFunction(DataChunk &args, ExpressionState &state, Vector return; } auto &needle_str = *ConstantVector::GetData(needles); - auto needle_doc = JSONCommon::ReadDocument(needle_str, JSONCommon::READ_FLAG, lstate.json_allocator.GetYYAlc()); + auto needle_doc = JSONCommon::ReadDocument(needle_str, JSONCommon::READ_FLAG, alc); UnaryExecutor::Execute(haystacks, result, args.size(), [&](string_t haystack_str) { - auto haystack_doc = - JSONCommon::ReadDocument(haystack_str, JSONCommon::READ_FLAG, lstate.json_allocator.GetYYAlc()); + auto haystack_doc = JSONCommon::ReadDocument(haystack_str, JSONCommon::READ_FLAG, alc); return JSONContains(haystack_doc->root, needle_doc->root); }); } else { BinaryExecutor::Execute( haystacks, needles, result, args.size(), [&](string_t haystack_str, string_t needle_str) { - auto needle_doc = - JSONCommon::ReadDocument(needle_str, JSONCommon::READ_FLAG, lstate.json_allocator.GetYYAlc()); - auto haystack_doc = - JSONCommon::ReadDocument(haystack_str, JSONCommon::READ_FLAG, lstate.json_allocator.GetYYAlc()); + auto needle_doc = JSONCommon::ReadDocument(needle_str, JSONCommon::READ_FLAG, alc); + auto haystack_doc = JSONCommon::ReadDocument(haystack_str, JSONCommon::READ_FLAG, alc); return JSONContains(haystack_doc->root, needle_doc->root); }); } diff --git a/src/duckdb/extension/json/json_functions/json_create.cpp b/src/duckdb/extension/json/json_functions/json_create.cpp index e2f2433b3..ead54b40d 100644 --- a/src/duckdb/extension/json/json_functions/json_create.cpp +++ b/src/duckdb/extension/json/json_functions/json_create.cpp @@ -621,7 +621,7 @@ static void ObjectFunction(DataChunk &args, ExpressionState &state, Vector &resu auto &func_expr = state.expr.Cast(); const auto &info = func_expr.bind_info->Cast(); auto &lstate = JSONFunctionLocalState::ResetAndGet(state); - auto alc = lstate.json_allocator.GetYYAlc(); + auto alc = lstate.json_allocator->GetYYAlc(); // Initialize values const idx_t count = args.size(); @@ -646,13 +646,15 @@ static void ObjectFunction(DataChunk &args, ExpressionState &state, Vector &resu if (args.AllConstant()) { result.SetVectorType(VectorType::CONSTANT_VECTOR); } + + JSONAllocator::AddBuffer(result, alc); } static void ArrayFunction(DataChunk &args, ExpressionState &state, Vector &result) { auto &func_expr = state.expr.Cast(); const auto &info = func_expr.bind_info->Cast(); auto &lstate = JSONFunctionLocalState::ResetAndGet(state); - auto alc = lstate.json_allocator.GetYYAlc(); + auto alc = lstate.json_allocator->GetYYAlc(); // Initialize arrays const idx_t count = args.size(); @@ -678,6 +680,8 @@ static void ArrayFunction(DataChunk &args, ExpressionState &state, Vector &resul if (args.AllConstant()) { result.SetVectorType(VectorType::CONSTANT_VECTOR); } + + JSONAllocator::AddBuffer(result, alc); } static void ToJSONFunctionInternal(const StructNames &names, Vector &input, const idx_t count, Vector &result, @@ -704,13 +708,15 @@ static void ToJSONFunctionInternal(const StructNames &names, Vector &input, cons if (input.GetVectorType() == VectorType::CONSTANT_VECTOR || count == 1) { result.SetVectorType(VectorType::CONSTANT_VECTOR); } + + JSONAllocator::AddBuffer(result, alc); } static void ToJSONFunction(DataChunk &args, ExpressionState &state, Vector &result) { auto &func_expr = state.expr.Cast(); const auto &info = func_expr.bind_info->Cast(); auto &lstate = JSONFunctionLocalState::ResetAndGet(state); - auto alc = lstate.json_allocator.GetYYAlc(); + auto alc = lstate.json_allocator->GetYYAlc(); ToJSONFunctionInternal(info.const_struct_names, args.data[0], args.size(), result, alc); } @@ -771,8 +777,8 @@ struct NestedToJSONCastData : public BoundCastData { static bool AnyToJSONCast(Vector &source, Vector &result, idx_t count, CastParameters ¶meters) { auto &lstate = parameters.local_state->Cast(); - lstate.json_allocator.Reset(); - auto alc = lstate.json_allocator.GetYYAlc(); + lstate.json_allocator->Reset(); + auto alc = lstate.json_allocator->GetYYAlc(); const auto &names = parameters.cast_data->Cast().const_struct_names; ToJSONFunctionInternal(names, source, count, result, alc); diff --git a/src/duckdb/extension/json/json_functions/json_merge_patch.cpp b/src/duckdb/extension/json/json_functions/json_merge_patch.cpp index 743aa5adc..50561b551 100644 --- a/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +++ b/src/duckdb/extension/json/json_functions/json_merge_patch.cpp @@ -52,9 +52,9 @@ static inline void ReadObjects(yyjson_mut_doc *doc, Vector &input, yyjson_mut_va //! Follows MySQL behaviour static void MergePatchFunction(DataChunk &args, ExpressionState &state, Vector &result) { auto &lstate = JSONFunctionLocalState::ResetAndGet(state); - auto alc = lstate.json_allocator.GetYYAlc(); + auto alc = lstate.json_allocator->GetYYAlc(); - auto doc = JSONCommon::CreateDocument(lstate.json_allocator.GetYYAlc()); + auto doc = JSONCommon::CreateDocument(alc); const auto count = args.size(); // Read the first json arg @@ -93,6 +93,8 @@ static void MergePatchFunction(DataChunk &args, ExpressionState &state, Vector & if (args.AllConstant()) { result.SetVectorType(VectorType::CONSTANT_VECTOR); } + + JSONAllocator::AddBuffer(result, alc); } ScalarFunctionSet JSONFunctions::GetMergePatchFunction() { diff --git a/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp b/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp index 7b14d6794..aa4f65e63 100644 --- a/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp +++ b/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp @@ -111,7 +111,7 @@ static bool OperatorSupportsSerialization(LogicalOperator &op, string &operator_ static void JsonSerializePlanFunction(DataChunk &args, ExpressionState &state, Vector &result) { auto &local_state = JSONFunctionLocalState::ResetAndGet(state); - auto alc = local_state.json_allocator.GetYYAlc(); + auto alc = local_state.json_allocator->GetYYAlc(); auto &inputs = args.data[0]; auto &func_expr = state.expr.Cast(); diff --git a/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp b/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp index c24c53fcd..283ccbba4 100644 --- a/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +++ b/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp @@ -84,7 +84,7 @@ static unique_ptr JsonSerializeBind(ClientContext &context, Scalar static void JsonSerializeFunction(DataChunk &args, ExpressionState &state, Vector &result) { auto &local_state = JSONFunctionLocalState::ResetAndGet(state); - auto alc = local_state.json_allocator.GetYYAlc(); + auto alc = local_state.json_allocator->GetYYAlc(); auto &inputs = args.data[0]; auto &func_expr = state.expr.Cast(); @@ -212,9 +212,8 @@ static unique_ptr DeserializeSelectStatement(string_t input, yy // JSON DESERIALIZE SQL FUNCTION //---------------------------------------------------------------------- static void JsonDeserializeFunction(DataChunk &args, ExpressionState &state, Vector &result) { - auto &local_state = JSONFunctionLocalState::ResetAndGet(state); - auto alc = local_state.json_allocator.GetYYAlc(); + auto alc = local_state.json_allocator->GetYYAlc(); auto &inputs = args.data[0]; UnaryExecutor::Execute(inputs, result, args.size(), [&](string_t input) { @@ -235,7 +234,7 @@ ScalarFunctionSet JSONFunctions::GetDeserializeSqlFunction() { //---------------------------------------------------------------------- static string ExecuteJsonSerializedSqlPragmaFunction(ClientContext &context, const FunctionParameters ¶meters) { JSONFunctionLocalState local_state(context); - auto alc = local_state.json_allocator.GetYYAlc(); + auto alc = local_state.json_allocator->GetYYAlc(); auto input = parameters.values[0].GetValueUnsafe(); auto stmt = DeserializeSelectStatement(input, alc); @@ -260,7 +259,7 @@ struct ExecuteSqlTableFunction { static unique_ptr Bind(ClientContext &context, TableFunctionBindInput &input, vector &return_types, vector &names) { JSONFunctionLocalState local_state(context); - auto alc = local_state.json_allocator.GetYYAlc(); + auto alc = local_state.json_allocator->GetYYAlc(); auto result = make_uniq(); diff --git a/src/duckdb/extension/json/json_functions/json_table_in_out.cpp b/src/duckdb/extension/json/json_functions/json_table_in_out.cpp new file mode 100644 index 000000000..6e0300940 --- /dev/null +++ b/src/duckdb/extension/json/json_functions/json_table_in_out.cpp @@ -0,0 +1,406 @@ +#include "json_common.hpp" +#include "json_functions.hpp" +#include "duckdb/function/table_function.hpp" + +namespace duckdb { + +enum class JSONTableInOutType { EACH, TREE }; + +static unique_ptr JSONTableInOutBind(ClientContext &, TableFunctionBindInput &input, + vector &return_types, vector &names) { + const child_list_t schema { + {"key", LogicalType::VARCHAR}, {"value", LogicalType::JSON()}, {"type", LogicalType::VARCHAR}, + {"atom", LogicalType::JSON()}, {"id", LogicalType::UBIGINT}, {"parent", LogicalType::UBIGINT}, + {"fullkey", LogicalType::VARCHAR}, {"path", LogicalType::VARCHAR}, + }; + + // Add all default columns + names.reserve(schema.size()); + return_types.reserve(schema.size()); + for (const auto &col : schema) { + names.emplace_back(col.first); + return_types.emplace_back(col.second); + } + + return nullptr; +} + +struct JSONTableInOutGlobalState : GlobalTableFunctionState { + JSONTableInOutGlobalState() { + } + + //! Regular columns + optional_idx key_column_index; + optional_idx value_column_index; + optional_idx type_column_index; + optional_idx atom_column_index; + optional_idx id_column_index; + optional_idx parent_column_index; + optional_idx fullkey_column_index; + optional_idx path_column_index; + + //! Virtual columns + optional_idx json_column_index; + optional_idx root_column_index; + optional_idx empty_column_idex; + optional_idx rowid_column_index; + + static constexpr idx_t JSON_COLUMN_OFFSET = 0; + static constexpr idx_t ROOT_COLUMN_OFFSET = 1; +}; + +static unique_ptr JSONTableInOutInitGlobal(ClientContext &, TableFunctionInitInput &input) { + auto result = make_uniq(); + for (idx_t i = 0; i < input.column_indexes.size(); i++) { + const auto &col_idx = input.column_indexes[i]; + if (!col_idx.IsVirtualColumn()) { + switch (col_idx.GetPrimaryIndex()) { + case 0: + result->key_column_index = i; + break; + case 1: + result->value_column_index = i; + break; + case 2: + result->type_column_index = i; + break; + case 3: + result->atom_column_index = i; + break; + case 4: + result->id_column_index = i; + break; + case 5: + result->parent_column_index = i; + break; + case 6: + result->fullkey_column_index = i; + break; + case 7: + result->path_column_index = i; + break; + default: + throw NotImplementedException("Column %llu for json_each/json_tree", col_idx.GetPrimaryIndex()); + } + } else { + if (col_idx.GetPrimaryIndex() == VIRTUAL_COLUMN_START + JSONTableInOutGlobalState::JSON_COLUMN_OFFSET) { + result->json_column_index = i; + } else if (col_idx.GetPrimaryIndex() == + VIRTUAL_COLUMN_START + JSONTableInOutGlobalState::ROOT_COLUMN_OFFSET) { + result->root_column_index = i; + } else if (col_idx.IsEmptyColumn()) { + result->empty_column_idex = i; + } else if (col_idx.IsRowIdColumn()) { + result->rowid_column_index = i; + } else { + throw NotImplementedException("Virtual column %llu for json_each/json_tree", col_idx.GetPrimaryIndex()); + } + } + } + return result; +} + +struct JSONTableInOutRecursionNode { + JSONTableInOutRecursionNode(string path_p, yyjson_val *parent_val_p) + : path(std::move(path_p)), parent_val(parent_val_p), child_index(0) { + } + + string path; + yyjson_val *parent_val; + idx_t child_index; +}; + +struct JSONTableInOutLocalState : LocalTableFunctionState { + explicit JSONTableInOutLocalState(ClientContext &context) + : json_allocator(BufferAllocator::Get(context)), alc(json_allocator.GetYYAlc()), len(DConstants::INVALID_INDEX), + doc(nullptr), initialized(false), total_count(0) { + } + + string GetPath() const { + auto result = path; + for (const auto &ri : recursion_nodes) { + result += ri.path; + } + return result; + } + + void AddRecursionNode(yyjson_val *val, optional_ptr vkey) { + const auto vkey_str = + vkey ? "." + string(unsafe_yyjson_get_str(vkey.get()), unsafe_yyjson_get_len(vkey.get())) : ""; + recursion_nodes.emplace_back(vkey_str, val); + } + + JSONAllocator json_allocator; + yyjson_alc *alc; + + string path; + size_t len; + yyjson_doc *doc; + bool initialized; + + idx_t total_count; + vector recursion_nodes; +}; + +static unique_ptr JSONTableInOutInitLocal(ExecutionContext &context, TableFunctionInitInput &, + GlobalTableFunctionState *) { + return make_uniq(context.client); +} + +template +struct JSONTableInOutResultVector { + explicit JSONTableInOutResultVector(DataChunk &output, const optional_idx &output_column_index) + : enabled(output_column_index.IsValid()), vector(output.data[enabled ? output_column_index.GetIndex() : 0]), + data(FlatVector::GetData(vector)), validity(FlatVector::Validity(vector)) { + } + const bool enabled; + Vector &vector; + T *data; + ValidityMask &validity; +}; + +struct JSONTableInOutResult { + explicit JSONTableInOutResult(const JSONTableInOutGlobalState &gstate, DataChunk &output) + : count(0), key(output, gstate.key_column_index), value(output, gstate.value_column_index), + type(output, gstate.type_column_index), atom(output, gstate.atom_column_index), + id(output, gstate.id_column_index), parent(output, gstate.parent_column_index), + fullkey(output, gstate.fullkey_column_index), path(output, gstate.path_column_index), + rowid(output, gstate.rowid_column_index) { + } + + template + void AddRow(JSONTableInOutLocalState &lstate, optional_ptr vkey, yyjson_val *val) { + const auto &recursion_nodes = lstate.recursion_nodes; + const auto arr_el = !recursion_nodes.empty() && unsafe_yyjson_is_arr(recursion_nodes.back().parent_val); + if (key.enabled) { + if (vkey) { // Object field + key.data[count] = string_t(unsafe_yyjson_get_str(vkey.get()), unsafe_yyjson_get_len(vkey.get())); + } else if (arr_el) { // Array element + key.data[count] = StringVector::AddString(key.vector, to_string(recursion_nodes.back().child_index)); + } else { // Other + key.validity.SetInvalid(count); + } + } + if (value.enabled) { + value.data[count] = JSONCommon::WriteVal(val, lstate.alc); + } + if (type.enabled) { + type.data[count] = JSONCommon::ValTypeToStringT(val); + } + if (atom.enabled) { + atom.data[count] = JSONCommon::JSONValue(val, lstate.alc, atom.vector, atom.validity, count); + } + if (id.enabled) { + id.data[count] = NumericCast(val - lstate.doc->root); + } + if (parent.enabled) { + if (TYPE == JSONTableInOutType::EACH || recursion_nodes.empty()) { + parent.validity.SetInvalid(count); + } else { + parent.data[count] = NumericCast(recursion_nodes.back().parent_val - lstate.doc->root); + } + } + const auto path_str = lstate.GetPath(); + if (fullkey.enabled) { + if (vkey) { // Object field + const auto vkey_str = string(unsafe_yyjson_get_str(vkey.get()), unsafe_yyjson_get_len(vkey.get())); + fullkey.data[count] = StringVector::AddString(fullkey.vector, path_str + "." + vkey_str); + } else if (arr_el) { // Array element + const auto arr_path = "[" + to_string(recursion_nodes.back().child_index) + "]"; + fullkey.data[count] = StringVector::AddString(fullkey.vector, path_str + arr_path); + } else { // Other + fullkey.data[count] = StringVector::AddString(fullkey.vector, path_str); + } + } + if (path.enabled) { + path.data[count] = StringVector::AddString(path.vector, path_str); + } + if (rowid.enabled) { + rowid.data[count] = NumericCast(lstate.total_count++); + } + count++; + } + + idx_t count; + JSONTableInOutResultVector key; + JSONTableInOutResultVector value; + JSONTableInOutResultVector type; + JSONTableInOutResultVector atom; + JSONTableInOutResultVector id; + JSONTableInOutResultVector parent; + JSONTableInOutResultVector fullkey; + JSONTableInOutResultVector path; + JSONTableInOutResultVector rowid; +}; + +template +static void InitializeLocalState(JSONTableInOutLocalState &lstate, DataChunk &input, JSONTableInOutResult &result) { + lstate.total_count = 0; + + // Parse path, default to root if not given + Value path_value("$"); + if (input.data.size() > 1) { + path_value = ConstantVector::GetData(input.data[1])[0]; + } + + if (JSONReadFunctionData::CheckPath(path_value, lstate.path, lstate.len) == JSONCommon::JSONPathType::WILDCARD) { + throw BinderException("Wildcard JSON path not supported in json_each/json_tree"); + } + + if (lstate.path.c_str()[0] != '$') { + throw BinderException("JSON path must start with '$' for json_each/json_tree"); + } + + // Parse document and get the value at the supplied path + const auto &input_vector = input.data[0]; + if (ConstantVector::IsNull(input_vector)) { + return; + } + const auto &input_data = FlatVector::GetData(input_vector)[0]; + lstate.doc = JSONCommon::ReadDocument(input_data, JSONCommon::READ_FLAG, lstate.alc); + const auto root = JSONCommon::GetUnsafe(lstate.doc->root, lstate.path.c_str(), lstate.len); + + if (!root) { + return; + } + + const auto is_container = unsafe_yyjson_is_arr(root) || unsafe_yyjson_is_obj(root); + if (!is_container || TYPE == JSONTableInOutType::TREE) { + result.AddRow(lstate, nullptr, root); + } + if (is_container) { + lstate.AddRecursionNode(root, nullptr); + } +} + +template +static bool JSONTableInOutHandleValue(JSONTableInOutLocalState &lstate, JSONTableInOutResult &result, + idx_t &child_index, size_t &idx, yyjson_val *child_key, yyjson_val *child_val) { + + if (idx < child_index) { + return false; // Continue: Get back to where we left off + } + result.AddRow(lstate, child_key, child_val); + child_index++; // We finished processing the array element + if (TYPE == JSONTableInOutType::TREE && (unsafe_yyjson_is_arr(child_val) || unsafe_yyjson_is_obj(child_val))) { + lstate.AddRecursionNode(child_val, child_key); + return true; // Break: We added a recursion node, go depth-first + } + if (result.count == STANDARD_VECTOR_SIZE) { + return true; // Break: Vector is full + } + return false; // Continue: Next element +} + +template +static OperatorResultType JSONTableInOutFunction(ExecutionContext &, TableFunctionInput &data_p, DataChunk &input, + DataChunk &output) { + auto &gstate = data_p.global_state->Cast(); + auto &lstate = data_p.local_state->Cast(); + + JSONTableInOutResult result(gstate, output); + if (!lstate.initialized) { + InitializeLocalState(lstate, input, result); + lstate.initialized = true; + } + + // Traverse the JSON (keeping a stack to avoid recursion and save progress across calls) + auto &recursion_nodes = lstate.recursion_nodes; + while (!lstate.recursion_nodes.empty() && result.count != STANDARD_VECTOR_SIZE) { + auto &parent_val = recursion_nodes.back().parent_val; + auto &child_index = recursion_nodes.back().child_index; + + size_t idx, max; + yyjson_val *child_key, *child_val; + switch (yyjson_get_tag(parent_val)) { + case YYJSON_TYPE_ARR | YYJSON_SUBTYPE_NONE: + yyjson_arr_foreach(parent_val, idx, max, child_val) { + if (JSONTableInOutHandleValue(lstate, result, child_index, idx, nullptr, child_val)) { + break; + } + } + break; + case YYJSON_TYPE_OBJ | YYJSON_SUBTYPE_NONE: + yyjson_obj_foreach(parent_val, idx, max, child_key, child_val) { + if (JSONTableInOutHandleValue(lstate, result, child_index, idx, child_key, child_val)) { + break; + } + } + break; + default: + throw InternalException("Non-object/array JSON added to recursion in json_each/json_tree"); + } + if (idx == max) { + lstate.recursion_nodes.pop_back(); // Array/object is done, remove + } + } + output.SetCardinality(result.count); + + // Set constant virtual columns ("json", "root", and "empty") + if (gstate.json_column_index.IsValid()) { + auto &json_vector = output.data[gstate.json_column_index.GetIndex()]; + json_vector.Reference(input.data[0]); + } + if (gstate.root_column_index.IsValid()) { + auto &root_vector = output.data[gstate.root_column_index.GetIndex()]; + root_vector.SetVectorType(VectorType::CONSTANT_VECTOR); + FlatVector::GetData(root_vector)[0] = string_t(lstate.path.c_str(), lstate.len); + } + if (gstate.empty_column_idex.IsValid()) { + auto &empty_vector = output.data[gstate.empty_column_idex.GetIndex()]; + empty_vector.SetVectorType(VectorType::CONSTANT_VECTOR); + ConstantVector::SetNull(empty_vector, true); + } + + if (output.size() == 0) { + D_ASSERT(recursion_nodes.empty()); + lstate.json_allocator.Reset(); + lstate.initialized = false; + return OperatorResultType::NEED_MORE_INPUT; + } + return OperatorResultType::HAVE_MORE_OUTPUT; +} + +virtual_column_map_t GetJSONTableInOutVirtualColumns(ClientContext &, optional_ptr) { + virtual_column_map_t result; + result.insert(make_pair(VIRTUAL_COLUMN_START + JSONTableInOutGlobalState::JSON_COLUMN_OFFSET, + TableColumn("json", LogicalType::JSON()))); + result.insert(make_pair(VIRTUAL_COLUMN_START + JSONTableInOutGlobalState::ROOT_COLUMN_OFFSET, + TableColumn("root", LogicalType::VARCHAR))); + result.insert(make_pair(COLUMN_IDENTIFIER_EMPTY, TableColumn("", LogicalType::BOOLEAN))); + result.insert(make_pair(COLUMN_IDENTIFIER_ROW_ID, TableColumn("rowid", LogicalType::BIGINT))); + return result; +} + +template +TableFunction GetJSONTableInOutFunction(const LogicalType &input_type, const bool &has_path_param) { + vector arguments = {input_type}; + if (has_path_param) { + arguments.push_back(LogicalType::VARCHAR); + } + TableFunction function(arguments, nullptr, JSONTableInOutBind, JSONTableInOutInitGlobal, JSONTableInOutInitLocal); + function.in_out_function = JSONTableInOutFunction; + function.get_virtual_columns = GetJSONTableInOutVirtualColumns; + function.projection_pushdown = true; + return function; +} + +TableFunctionSet JSONFunctions::GetJSONEachFunction() { + TableFunctionSet set("json_each"); + set.AddFunction(GetJSONTableInOutFunction(LogicalType::VARCHAR, false)); + set.AddFunction(GetJSONTableInOutFunction(LogicalType::VARCHAR, true)); + set.AddFunction(GetJSONTableInOutFunction(LogicalType::JSON(), false)); + set.AddFunction(GetJSONTableInOutFunction(LogicalType::JSON(), true)); + return set; +} + +TableFunctionSet JSONFunctions::GetJSONTreeFunction() { + TableFunctionSet set("json_tree"); + set.AddFunction(GetJSONTableInOutFunction(LogicalType::VARCHAR, false)); + set.AddFunction(GetJSONTableInOutFunction(LogicalType::VARCHAR, true)); + set.AddFunction(GetJSONTableInOutFunction(LogicalType::JSON(), false)); + set.AddFunction(GetJSONTableInOutFunction(LogicalType::JSON(), true)); + return set; +} + +} // namespace duckdb diff --git a/src/duckdb/extension/json/json_functions/json_transform.cpp b/src/duckdb/extension/json/json_functions/json_transform.cpp index d6e8134dc..5d4b77cb2 100644 --- a/src/duckdb/extension/json/json_functions/json_transform.cpp +++ b/src/duckdb/extension/json/json_functions/json_transform.cpp @@ -974,12 +974,14 @@ static bool TransformFunctionInternal(Vector &input, const idx_t count, Vector & template static void TransformFunction(DataChunk &args, ExpressionState &state, Vector &result) { auto &lstate = JSONFunctionLocalState::ResetAndGet(state); - auto alc = lstate.json_allocator.GetYYAlc(); + auto alc = lstate.json_allocator->GetYYAlc(); JSONTransformOptions options(strict, strict, strict, false); if (!TransformFunctionInternal(args.data[0], args.size(), result, alc, options)) { throw InvalidInputException(options.error_message); } + + JSONAllocator::AddBuffer(result, alc); } static void GetTransformFunctionInternal(ScalarFunctionSet &set, const LogicalType &input_type) { @@ -1008,8 +1010,8 @@ ScalarFunctionSet JSONFunctions::GetTransformStrictFunction() { static bool JSONToAnyCast(Vector &source, Vector &result, idx_t count, CastParameters ¶meters) { auto &lstate = parameters.local_state->Cast(); - lstate.json_allocator.Reset(); - auto alc = lstate.json_allocator.GetYYAlc(); + lstate.json_allocator->Reset(); + auto alc = lstate.json_allocator->GetYYAlc(); JSONTransformOptions options(true, true, true, true); options.delay_error = true; diff --git a/src/duckdb/extension/json/json_functions/json_valid.cpp b/src/duckdb/extension/json/json_functions/json_valid.cpp index 50c3071cc..a889f9d6e 100644 --- a/src/duckdb/extension/json/json_functions/json_valid.cpp +++ b/src/duckdb/extension/json/json_functions/json_valid.cpp @@ -4,7 +4,7 @@ namespace duckdb { static void ValidFunction(DataChunk &args, ExpressionState &state, Vector &result) { auto &lstate = JSONFunctionLocalState::ResetAndGet(state); - auto alc = lstate.json_allocator.GetYYAlc(); + auto alc = lstate.json_allocator->GetYYAlc(); auto &inputs = args.data[0]; UnaryExecutor::Execute(inputs, result, args.size(), [&](string_t input) { return JSONCommon::ReadDocumentUnsafe(input, JSONCommon::READ_FLAG, alc); diff --git a/src/duckdb/extension/json/json_functions/json_value.cpp b/src/duckdb/extension/json/json_functions/json_value.cpp index b15f7f9eb..45dc9d0a8 100644 --- a/src/duckdb/extension/json/json_functions/json_value.cpp +++ b/src/duckdb/extension/json/json_functions/json_value.cpp @@ -2,24 +2,12 @@ namespace duckdb { -static inline string_t ValueFromVal(yyjson_val *val, yyjson_alc *alc, Vector &, ValidityMask &mask, idx_t idx) { - switch (yyjson_get_tag(val)) { - case YYJSON_TYPE_NULL | YYJSON_SUBTYPE_NONE: - case YYJSON_TYPE_ARR | YYJSON_SUBTYPE_NONE: - case YYJSON_TYPE_OBJ | YYJSON_SUBTYPE_NONE: - mask.SetInvalid(idx); - return string_t {}; - default: - return JSONCommon::WriteVal(val, alc); - } -} - static void ValueFunction(DataChunk &args, ExpressionState &state, Vector &result) { - JSONExecutors::BinaryExecute(args, state, result, ValueFromVal); + JSONExecutors::BinaryExecute(args, state, result, JSONCommon::JSONValue); } static void ValueManyFunction(DataChunk &args, ExpressionState &state, Vector &result) { - JSONExecutors::ExecuteMany(args, state, result, ValueFromVal); + JSONExecutors::ExecuteMany(args, state, result, JSONCommon::JSONValue); } static void GetValueFunctionsInternal(ScalarFunctionSet &set, const LogicalType &input_type) { diff --git a/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp b/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp index b7373056f..8bb1dd06e 100644 --- a/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +++ b/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp @@ -8,41 +8,40 @@ #pragma once #include "duckdb.hpp" -#ifndef DUCKDB_AMALGAMATION #include "duckdb/storage/object_cache.hpp" #include "geo_parquet.hpp" -#endif #include "parquet_types.h" + namespace duckdb { +struct CachingFileHandle; + +enum class ParquetCacheValidity { VALID, INVALID, UNKNOWN }; -//! ParquetFileMetadataCache class ParquetFileMetadataCache : public ObjectCacheEntry { public: - ParquetFileMetadataCache() : metadata(nullptr) { - } - ParquetFileMetadataCache(unique_ptr file_metadata, time_t r_time, - unique_ptr geo_metadata) - : metadata(std::move(file_metadata)), read_time(r_time), geo_metadata(std::move(geo_metadata)) { - } - + ParquetFileMetadataCache(unique_ptr file_metadata, CachingFileHandle &handle, + unique_ptr geo_metadata); ~ParquetFileMetadataCache() override = default; //! Parquet file metadata unique_ptr metadata; - //! read time - time_t read_time; - //! GeoParquet metadata unique_ptr geo_metadata; public: - static string ObjectType() { - return "parquet_metadata"; - } - - string GetObjectType() override { - return ObjectType(); - } + static string ObjectType(); + string GetObjectType() override; + + bool IsValid(CachingFileHandle &new_handle) const; + //! Check if a cache entry is valid based ONLY on the OpenFileInfo (without doing any file system calls) + //! If the OpenFileInfo does not have enough information this can return UNKNOWN + ParquetCacheValidity IsValid(const OpenFileInfo &info) const; + +private: + bool validate; + time_t last_modified; + string version_tag; }; + } // namespace duckdb diff --git a/src/duckdb/extension/parquet/include/parquet_reader.hpp b/src/duckdb/extension/parquet/include/parquet_reader.hpp index f30c5cc90..d0d9e74e8 100644 --- a/src/duckdb/extension/parquet/include/parquet_reader.hpp +++ b/src/duckdb/extension/parquet/include/parquet_reader.hpp @@ -178,6 +178,11 @@ class ParquetReader : public BaseFileReader { void AddVirtualColumn(column_t virtual_column_id) override; + void GetPartitionStats(vector &result); + static void GetPartitionStats(const duckdb_parquet::FileMetaData &metadata, vector &result); + static bool MetadataCacheEnabled(ClientContext &context); + static shared_ptr GetMetadataCacheEntry(ClientContext &context, const OpenFileInfo &file); + private: //! Construct a parquet reader but **do not** open a file, used in ReadStatistics only ParquetReader(ClientContext &context, ParquetOptions parquet_options, diff --git a/src/duckdb/extension/parquet/parquet_extension.cpp b/src/duckdb/extension/parquet/parquet_extension.cpp index f5fb34a51..86ed75681 100644 --- a/src/duckdb/extension/parquet/parquet_extension.cpp +++ b/src/duckdb/extension/parquet/parquet_extension.cpp @@ -303,8 +303,9 @@ unique_ptr ParquetWriteBind(ClientContext &context, CopyFunctionBi * interchangeably */ bind_data->codec = duckdb_parquet::CompressionCodec::LZ4_RAW; } else { - throw BinderException("Expected %s argument to be either [uncompressed, brotli, gzip, snappy, or zstd]", - loption); + throw BinderException( + "Expected %s argument to be any of [uncompressed, brotli, gzip, snappy, lz4, lz4_raw or zstd]", + loption); } } else if (loption == "field_ids") { if (option.second[0].type().id() == LogicalTypeId::VARCHAR && diff --git a/src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp b/src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp new file mode 100644 index 000000000..7401c1c41 --- /dev/null +++ b/src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp @@ -0,0 +1,55 @@ +#include "parquet_file_metadata_cache.hpp" +#include "duckdb/storage/external_file_cache.hpp" +#include "duckdb/storage/caching_file_system.hpp" + +namespace duckdb { + +ParquetFileMetadataCache::ParquetFileMetadataCache(unique_ptr file_metadata, + CachingFileHandle &handle, + unique_ptr geo_metadata) + : metadata(std::move(file_metadata)), geo_metadata(std::move(geo_metadata)), validate(handle.Validate()), + last_modified(handle.GetLastModifiedTime()), version_tag(handle.GetVersionTag()) { +} + +string ParquetFileMetadataCache::ObjectType() { + return "parquet_metadata"; +} + +string ParquetFileMetadataCache::GetObjectType() { + return ObjectType(); +} + +bool ParquetFileMetadataCache::IsValid(CachingFileHandle &new_handle) const { + return ExternalFileCache::IsValid(validate, version_tag, last_modified, new_handle.GetVersionTag(), + new_handle.GetLastModifiedTime()); +} + +ParquetCacheValidity ParquetFileMetadataCache::IsValid(const OpenFileInfo &info) const { + if (!info.extended_info) { + return ParquetCacheValidity::UNKNOWN; + } + auto &open_options = info.extended_info->options; + const auto validate_entry = open_options.find("validate_external_file_cache"); + if (validate_entry != open_options.end()) { + // check if always valid - if so just return valid + if (BooleanValue::Get(validate_entry->second)) { + return ParquetCacheValidity::VALID; + } + } + const auto lm_entry = open_options.find("last_modified"); + if (lm_entry == open_options.end()) { + return ParquetCacheValidity::UNKNOWN; + } + time_t new_last_modified = Timestamp::ToTimeT(lm_entry->second.GetValue()); + string new_etag; + const auto etag_entry = open_options.find("etag"); + if (etag_entry != open_options.end()) { + new_etag = StringValue::Get(etag_entry->second); + } + if (ExternalFileCache::IsValid(false, version_tag, last_modified, new_etag, new_last_modified)) { + return ParquetCacheValidity::VALID; + } + return ParquetCacheValidity::INVALID; +} + +} // namespace duckdb diff --git a/src/duckdb/extension/parquet/parquet_multi_file_info.cpp b/src/duckdb/extension/parquet/parquet_multi_file_info.cpp index d7d0d520b..669fd50ee 100644 --- a/src/duckdb/extension/parquet/parquet_multi_file_info.cpp +++ b/src/duckdb/extension/parquet/parquet_multi_file_info.cpp @@ -245,6 +245,55 @@ vector ParquetGetRowIdColumns(ClientContext &context, optional_ptr ParquetGetPartitionStats(ClientContext &context, GetPartitionStatsInput &input) { + auto &bind_data = input.bind_data->Cast(); + vector result; + if (bind_data.file_list->GetExpandResult() == FileExpandResult::SINGLE_FILE && bind_data.initial_reader) { + // we have read the metadata - get the partitions for this reader + auto &reader = bind_data.initial_reader->Cast(); + reader.GetPartitionStats(result); + return result; + } + // if we are reading multiple files - we check if we have caching enabled + if (!ParquetReader::MetadataCacheEnabled(context)) { + // no caching - bail + return result; + } + // caching is enabled - check if we have ALL of the metadata cached + vector> caches; + for (auto &file : bind_data.file_list->Files()) { + auto metadata_entry = ParquetReader::GetMetadataCacheEntry(context, file); + if (!metadata_entry) { + // no cache entry found + return result; + } + // check if the file has any deletes + if (file.extended_info) { + auto entry = file.extended_info->options.find("has_deletes"); + if (entry != file.extended_info->options.end()) { + if (BooleanValue::Get(entry->second)) { + // the file has deletes - skip emitting partition stats + // FIXME: we could emit partition stats but set count to `COUNT_APPROXIMATE` instead of + // `COUNT_EXACT` + return result; + } + } + } + + // check if the cache is valid based ONLY on the OpenFileInfo (do not do any file system requests here) + auto is_valid = metadata_entry->IsValid(file); + if (is_valid != ParquetCacheValidity::VALID) { + return result; + } + caches.push_back(std::move(metadata_entry)); + } + // all caches are valid! we can return the partition stats + for (auto &cache : caches) { + ParquetReader::GetPartitionStats(*cache->metadata, result); + } + return result; +} + TableFunctionSet ParquetScanFunction::GetFunctionSet() { MultiFileFunction table_function("parquet_scan"); table_function.named_parameters["binary_as_string"] = LogicalType::BOOLEAN; @@ -260,6 +309,7 @@ TableFunctionSet ParquetScanFunction::GetFunctionSet() { table_function.deserialize = ParquetScanDeserialize; table_function.get_row_id_columns = ParquetGetRowIdColumns; table_function.pushdown_expression = ParquetScanPushdownExpression; + table_function.get_partition_stats = ParquetGetPartitionStats; table_function.filter_pushdown = true; table_function.filter_prune = true; table_function.late_materialization = true; diff --git a/src/duckdb/extension/parquet/parquet_reader.cpp b/src/duckdb/extension/parquet/parquet_reader.cpp index a42598a2d..618cc7a91 100644 --- a/src/duckdb/extension/parquet/parquet_reader.cpp +++ b/src/duckdb/extension/parquet/parquet_reader.cpp @@ -95,8 +95,6 @@ static shared_ptr LoadMetadata(ClientContext &context, Allocator &allocator, CachingFileHandle &file_handle, const shared_ptr &encryption_config, const EncryptionUtil &encryption_util, optional_idx footer_size) { - auto current_time = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); - auto file_proto = CreateThriftFileProtocol(file_handle, false); auto &transport = reinterpret_cast(*file_proto->getTransport()); auto file_size = transport.GetSize(); @@ -175,8 +173,7 @@ LoadMetadata(ClientContext &context, Allocator &allocator, CachingFileHandle &fi // Try to read the GeoParquet metadata (if present) auto geo_metadata = GeoParquetFileMetadata::TryRead(*metadata, context); - - return make_shared_ptr(std::move(metadata), current_time, std::move(geo_metadata)); + return make_shared_ptr(std::move(metadata), file_handle, std::move(geo_metadata)); } LogicalType ParquetReader::DeriveLogicalType(const SchemaElement &s_ele, ParquetColumnSchema &schema) const { @@ -781,20 +778,16 @@ ParquetReader::ParquetReader(ClientContext &context_p, OpenFileInfo file_p, Parq } else { encryption_util = make_shared_ptr(); } - // If metadata cached is disabled // or if this file has cached metadata // or if the cached version already expired if (!metadata_p) { - Value metadata_cache = false; - context_p.TryGetCurrentSetting("parquet_metadata_cache", metadata_cache); - if (!metadata_cache.GetValue()) { + if (!MetadataCacheEnabled(context_p)) { metadata = LoadMetadata(context_p, allocator, *file_handle, parquet_options.encryption_config, *encryption_util, footer_size); } else { - auto last_modify_time = file_handle->GetLastModifiedTime(); metadata = ObjectCache::GetObjectCache(context_p).Get(file.path); - if (!metadata || (last_modify_time + 10 >= metadata->read_time)) { + if (!metadata || !metadata->IsValid(*file_handle)) { metadata = LoadMetadata(context_p, allocator, *file_handle, parquet_options.encryption_config, *encryption_util, footer_size); ObjectCache::GetObjectCache(context_p).Put(file.path, metadata); @@ -806,6 +799,17 @@ ParquetReader::ParquetReader(ClientContext &context_p, OpenFileInfo file_p, Parq InitializeSchema(context_p); } +bool ParquetReader::MetadataCacheEnabled(ClientContext &context) { + Value metadata_cache = false; + context.TryGetCurrentSetting("parquet_metadata_cache", metadata_cache); + return metadata_cache.GetValue(); +} + +shared_ptr ParquetReader::GetMetadataCacheEntry(ClientContext &context, + const OpenFileInfo &file) { + return ObjectCache::GetObjectCache(context).Get(file.path); +} + ParquetUnionData::~ParquetUnionData() { } @@ -1138,6 +1142,23 @@ void ParquetReader::Scan(ClientContext &context, ParquetReaderScanState &state, } } +void ParquetReader::GetPartitionStats(vector &result) { + GetPartitionStats(*GetFileMetadata(), result); +} + +void ParquetReader::GetPartitionStats(const duckdb_parquet::FileMetaData &metadata, + vector &result) { + idx_t offset = 0; + for (auto &row_group : metadata.row_groups) { + PartitionStatistics partition_stats; + partition_stats.row_start = offset; + partition_stats.count = row_group.num_rows; + partition_stats.count_type = CountType::COUNT_EXACT; + offset += row_group.num_rows; + result.push_back(partition_stats); + } +} + bool ParquetReader::ScanInternal(ClientContext &context, ParquetReaderScanState &state, DataChunk &result) { if (state.finished) { return false; diff --git a/src/duckdb/src/catalog/catalog.cpp b/src/duckdb/src/catalog/catalog.cpp index 6c7ad8c90..01d625de5 100644 --- a/src/duckdb/src/catalog/catalog.cpp +++ b/src/duckdb/src/catalog/catalog.cpp @@ -1201,4 +1201,7 @@ void Catalog::Initialize(optional_ptr context, bool load_builtin) Initialize(load_builtin); } +void Catalog::OnDetach(ClientContext &context) { +} + } // namespace duckdb diff --git a/src/duckdb/src/catalog/default/default_functions.cpp b/src/duckdb/src/catalog/default/default_functions.cpp index 480e05f81..e02ebaa3f 100644 --- a/src/duckdb/src/catalog/default/default_functions.cpp +++ b/src/duckdb/src/catalog/default/default_functions.cpp @@ -117,7 +117,7 @@ static const DefaultMacro internal_macros[] = { {DEFAULT_SCHEMA, "array_reverse", {"l", nullptr}, {{nullptr, nullptr}}, "list_reverse(l)"}, // FIXME implement as actual function if we encounter a lot of performance issues. Complexity now: n * m, with hashing possibly n + m - {DEFAULT_SCHEMA, "list_intersect", {"l1", "l2", nullptr}, {{nullptr, nullptr}}, "list_filter(list_distinct(l1), (variable_intersect) -> list_contains(l2, variable_intersect))"}, + {DEFAULT_SCHEMA, "list_intersect", {"l1", "l2", nullptr}, {{nullptr, nullptr}}, "list_filter(list_distinct(l1), lambda variable_intersect: list_contains(l2, variable_intersect))"}, {DEFAULT_SCHEMA, "array_intersect", {"l1", "l2", nullptr}, {{nullptr, nullptr}}, "list_intersect(l1, l2)"}, // algebraic list aggregates diff --git a/src/duckdb/src/common/box_renderer.cpp b/src/duckdb/src/common/box_renderer.cpp index f85cf622d..f973f68e8 100644 --- a/src/duckdb/src/common/box_renderer.cpp +++ b/src/duckdb/src/common/box_renderer.cpp @@ -1027,7 +1027,7 @@ void BoxRenderer::Render(ClientContext &context, const vector &names, co auto collections = FetchRenderCollections(context, result, top_rows, bottom_rows); auto column_names = names; auto result_types = result.Types(); - if (config.render_mode == RenderMode::COLUMNS) { + if (config.render_mode == RenderMode::COLUMNS && rows_to_render > 0) { collections = PivotCollections(context, std::move(collections), column_names, result_types, row_count); } diff --git a/src/duckdb/src/common/enum_util.cpp b/src/duckdb/src/common/enum_util.cpp index 457c3c0de..72a7b42bf 100644 --- a/src/duckdb/src/common/enum_util.cpp +++ b/src/duckdb/src/common/enum_util.cpp @@ -67,6 +67,7 @@ #include "duckdb/common/extra_type_info.hpp" #include "duckdb/common/file_buffer.hpp" #include "duckdb/common/file_open_flags.hpp" +#include "duckdb/common/filename_pattern.hpp" #include "duckdb/common/multi_file/multi_file_data.hpp" #include "duckdb/common/multi_file/multi_file_list.hpp" #include "duckdb/common/multi_file/multi_file_options.hpp" @@ -120,6 +121,7 @@ #include "duckdb/parallel/meta_pipeline.hpp" #include "duckdb/parallel/task.hpp" #include "duckdb/parser/constraint.hpp" +#include "duckdb/parser/expression/lambda_expression.hpp" #include "duckdb/parser/expression/parameter_expression.hpp" #include "duckdb/parser/expression/star_expression.hpp" #include "duckdb/parser/expression/window_expression.hpp" @@ -894,6 +896,7 @@ const StringUtil::EnumStringLiteral *GetCompressionTypeValues() { { static_cast(CompressionType::COMPRESSION_ZSTD), "COMPRESSION_ZSTD" }, { static_cast(CompressionType::COMPRESSION_ROARING), "COMPRESSION_ROARING" }, { static_cast(CompressionType::COMPRESSION_EMPTY), "COMPRESSION_EMPTY" }, + { static_cast(CompressionType::COMPRESSION_DICT_FSST), "COMPRESSION_DICT_FSST" }, { static_cast(CompressionType::COMPRESSION_COUNT), "COMPRESSION_COUNT" } }; return values; @@ -901,12 +904,12 @@ const StringUtil::EnumStringLiteral *GetCompressionTypeValues() { template<> const char* EnumUtil::ToChars(CompressionType value) { - return StringUtil::EnumToString(GetCompressionTypeValues(), 16, "CompressionType", static_cast(value)); + return StringUtil::EnumToString(GetCompressionTypeValues(), 17, "CompressionType", static_cast(value)); } template<> CompressionType EnumUtil::FromString(const char *value) { - return static_cast(StringUtil::StringToEnum(GetCompressionTypeValues(), 16, "CompressionType", value)); + return static_cast(StringUtil::StringToEnum(GetCompressionTypeValues(), 17, "CompressionType", value)); } const StringUtil::EnumStringLiteral *GetCompressionValidityValues() { @@ -1803,6 +1806,26 @@ FileLockType EnumUtil::FromString(const char *value) { return static_cast(StringUtil::StringToEnum(GetFileLockTypeValues(), 3, "FileLockType", value)); } +const StringUtil::EnumStringLiteral *GetFileNameSegmentTypeValues() { + static constexpr StringUtil::EnumStringLiteral values[] { + { static_cast(FileNameSegmentType::LITERAL), "LITERAL" }, + { static_cast(FileNameSegmentType::UUID_V4), "UUID_V4" }, + { static_cast(FileNameSegmentType::UUID_V7), "UUID_V7" }, + { static_cast(FileNameSegmentType::OFFSET), "OFFSET" } + }; + return values; +} + +template<> +const char* EnumUtil::ToChars(FileNameSegmentType value) { + return StringUtil::EnumToString(GetFileNameSegmentTypeValues(), 4, "FileNameSegmentType", static_cast(value)); +} + +template<> +FileNameSegmentType EnumUtil::FromString(const char *value) { + return static_cast(StringUtil::StringToEnum(GetFileNameSegmentTypeValues(), 4, "FileNameSegmentType", value)); +} + const StringUtil::EnumStringLiteral *GetFilterPropagateResultValues() { static constexpr StringUtil::EnumStringLiteral values[] { { static_cast(FilterPropagateResult::NO_PRUNING_POSSIBLE), "NO_PRUNING_POSSIBLE" }, @@ -2099,6 +2122,44 @@ KeywordCategory EnumUtil::FromString(const char *value) { return static_cast(StringUtil::StringToEnum(GetKeywordCategoryValues(), 5, "KeywordCategory", value)); } +const StringUtil::EnumStringLiteral *GetLambdaSyntaxValues() { + static constexpr StringUtil::EnumStringLiteral values[] { + { static_cast(LambdaSyntax::DEFAULT), "DEFAULT" }, + { static_cast(LambdaSyntax::ENABLE_SINGLE_ARROW), "ENABLE_SINGLE_ARROW" }, + { static_cast(LambdaSyntax::DISABLE_SINGLE_ARROW), "DISABLE_SINGLE_ARROW" } + }; + return values; +} + +template<> +const char* EnumUtil::ToChars(LambdaSyntax value) { + return StringUtil::EnumToString(GetLambdaSyntaxValues(), 3, "LambdaSyntax", static_cast(value)); +} + +template<> +LambdaSyntax EnumUtil::FromString(const char *value) { + return static_cast(StringUtil::StringToEnum(GetLambdaSyntaxValues(), 3, "LambdaSyntax", value)); +} + +const StringUtil::EnumStringLiteral *GetLambdaSyntaxTypeValues() { + static constexpr StringUtil::EnumStringLiteral values[] { + { static_cast(LambdaSyntaxType::SINGLE_ARROW_STORAGE), "SINGLE_ARROW_STORAGE" }, + { static_cast(LambdaSyntaxType::SINGLE_ARROW), "SINGLE_ARROW" }, + { static_cast(LambdaSyntaxType::LAMBDA_KEYWORD), "LAMBDA_KEYWORD" } + }; + return values; +} + +template<> +const char* EnumUtil::ToChars(LambdaSyntaxType value) { + return StringUtil::EnumToString(GetLambdaSyntaxTypeValues(), 3, "LambdaSyntaxType", static_cast(value)); +} + +template<> +LambdaSyntaxType EnumUtil::FromString(const char *value) { + return static_cast(StringUtil::StringToEnum(GetLambdaSyntaxTypeValues(), 3, "LambdaSyntaxType", value)); +} + const StringUtil::EnumStringLiteral *GetLimitNodeTypeValues() { static constexpr StringUtil::EnumStringLiteral values[] { { static_cast(LimitNodeType::UNSET), "UNSET" }, diff --git a/src/duckdb/src/common/enums/compression_type.cpp b/src/duckdb/src/common/enums/compression_type.cpp index 3bc66fe08..ec551eff1 100644 --- a/src/duckdb/src/common/enums/compression_type.cpp +++ b/src/duckdb/src/common/enums/compression_type.cpp @@ -1,6 +1,7 @@ #include "duckdb/common/enums/compression_type.hpp" #include "duckdb/common/exception.hpp" #include "duckdb/common/string_util.hpp" +#include "duckdb/storage/storage_manager.hpp" namespace duckdb { @@ -16,10 +17,25 @@ vector ListCompressionTypes(void) { return compression_types; } -bool CompressionTypeIsDeprecated(CompressionType compression_type) { - const bool is_patas = compression_type == CompressionType::COMPRESSION_PATAS; - const bool is_chimp = compression_type == CompressionType::COMPRESSION_CHIMP; - return (is_patas || is_chimp); +bool CompressionTypeIsDeprecated(CompressionType compression_type, optional_ptr storage_manager) { + vector types({CompressionType::COMPRESSION_PATAS, CompressionType::COMPRESSION_CHIMP}); + if (storage_manager) { + if (storage_manager->GetStorageVersion() >= 5) { + //! NOTE: storage_manager is an optional_ptr because it's called from ForceCompressionSetting, which doesn't + //! have guaranteed access to a StorageManager The introduction of DICT_FSST deprecates Dictionary and FSST + //! compression methods + types.emplace_back(CompressionType::COMPRESSION_DICTIONARY); + types.emplace_back(CompressionType::COMPRESSION_FSST); + } else { + types.emplace_back(CompressionType::COMPRESSION_DICT_FSST); + } + } + for (auto &type : types) { + if (type == compression_type) { + return true; + } + } + return false; } CompressionType CompressionTypeFromString(const string &str) { @@ -50,6 +66,8 @@ CompressionType CompressionTypeFromString(const string &str) { return CompressionType::COMPRESSION_ALPRD; } else if (compression == "roaring") { return CompressionType::COMPRESSION_ROARING; + } else if (compression == "dict_fsst") { + return CompressionType::COMPRESSION_DICT_FSST; } else { return CompressionType::COMPRESSION_AUTO; } @@ -85,6 +103,8 @@ string CompressionTypeToString(CompressionType type) { return "ALPRD"; case CompressionType::COMPRESSION_ROARING: return "Roaring"; + case CompressionType::COMPRESSION_DICT_FSST: + return "DICT_FSST"; case CompressionType::COMPRESSION_EMPTY: return "Empty Validity"; default: diff --git a/src/duckdb/src/common/exception.cpp b/src/duckdb/src/common/exception.cpp index 99b3d2662..2012c1fcc 100644 --- a/src/duckdb/src/common/exception.cpp +++ b/src/duckdb/src/common/exception.cpp @@ -355,7 +355,23 @@ InvalidConfigurationException::InvalidConfigurationException(const string &msg, : Exception(ExceptionType::INVALID_CONFIGURATION, msg, extra_info) { } -OutOfMemoryException::OutOfMemoryException(const string &msg) : Exception(ExceptionType::OUT_OF_MEMORY, msg) { +OutOfMemoryException::OutOfMemoryException(const string &msg) + : Exception(ExceptionType::OUT_OF_MEMORY, ExtendOutOfMemoryError(msg)) { +} + +string OutOfMemoryException::ExtendOutOfMemoryError(const string &msg) { + string link = "https://duckdb.org/docs/stable/guides/performance/how_to_tune_workloads"; + if (StringUtil::Contains(msg, link)) { + // already extended + return msg; + } + string new_msg = msg; + new_msg += "\n\nPossible solutions:\n"; + new_msg += "* Reducing the number of threads (SET threads=X)\n"; + new_msg += "* Disabling insertion-order preservation (SET preserve_insertion_order=false)\n"; + new_msg += "* Increasing the memory limit (SET memory_limit='...GB')\n"; + new_msg += "\nSee also " + link; + return new_msg; } ParameterNotAllowedException::ParameterNotAllowedException(const string &msg) diff --git a/src/duckdb/src/common/file_system.cpp b/src/duckdb/src/common/file_system.cpp index f2918ee4f..1d31b713c 100644 --- a/src/duckdb/src/common/file_system.cpp +++ b/src/duckdb/src/common/file_system.cpp @@ -368,10 +368,14 @@ string FileSystem::ExpandPath(const string &path) { // LCOV_EXCL_START unique_ptr FileSystem::OpenFileExtended(const OpenFileInfo &path, FileOpenFlags flags, optional_ptr opener) { - // for backwards compatibility purposes - default to OpenFile throw NotImplementedException("%s: OpenFileExtended is not implemented!", GetName()); } +bool FileSystem::ListFilesExtended(const string &directory, const std::function &callback, + optional_ptr opener) { + throw NotImplementedException("%s: ListFilesExtended is not implemented!", GetName()); +} + unique_ptr FileSystem::OpenFile(const string &path, FileOpenFlags flags, optional_ptr opener) { if (SupportsOpenFileExtended()) { return OpenFileExtended(OpenFileInfo(path), flags, opener); @@ -392,6 +396,10 @@ bool FileSystem::SupportsOpenFileExtended() const { return false; } +bool FileSystem::SupportsListFilesExtended() const { + return false; +} + void FileSystem::Read(FileHandle &handle, void *buffer, int64_t nr_bytes, idx_t location) { throw NotImplementedException("%s: Read (with location) is not implemented!", GetName()); } @@ -483,11 +491,47 @@ void FileSystem::RemoveDirectory(const string &directory, optional_ptroptions.find("type"); + if (entry == info.extended_info->options.end()) { + return false; + } + return StringValue::Get(entry->second) == "directory"; +} + bool FileSystem::ListFiles(const string &directory, const std::function &callback, FileOpener *opener) { + if (SupportsListFilesExtended()) { + return ListFilesExtended( + directory, + [&](const OpenFileInfo &info) { + bool is_dir = IsDirectory(info); + callback(info.path, is_dir); + }, + opener); + } throw NotImplementedException("%s: ListFiles is not implemented!", GetName()); } +bool FileSystem::ListFiles(const string &directory, const std::function &callback, + optional_ptr opener) { + if (SupportsListFilesExtended()) { + return ListFilesExtended(directory, callback, opener); + } else { + return ListFiles(directory, [&](const string &path, bool is_dir) { + OpenFileInfo info(path); + if (is_dir) { + info.extended_info = make_shared_ptr(); + info.extended_info->options["type"] = "directory"; + } + callback(info); + }); + } +} + void FileSystem::MoveFile(const string &source, const string &target, optional_ptr opener) { throw NotImplementedException("%s: MoveFile is not implemented!", GetName()); } diff --git a/src/duckdb/src/common/filename_pattern.cpp b/src/duckdb/src/common/filename_pattern.cpp index 04851ad3f..35f33f6b4 100644 --- a/src/duckdb/src/common/filename_pattern.cpp +++ b/src/duckdb/src/common/filename_pattern.cpp @@ -3,40 +3,184 @@ namespace duckdb { -void FilenamePattern::SetFilenamePattern(const string &pattern) { - const string id_format {"{i}"}; - const string uuid_format {"{uuid}"}; +FileNameSegment::FileNameSegment(string data) : type(FileNameSegmentType::LITERAL), data(std::move(data)) { +} + +FileNameSegment::FileNameSegment(FileNameSegmentType type) : type(type) { +} - base = pattern; +FilenamePattern::FilenamePattern() { + segments.emplace_back("data_"); + segments.emplace_back(FileNameSegmentType::OFFSET); +} - pos = base.find(id_format); - uuid = false; - if (pos != string::npos) { - base = StringUtil::Replace(base, id_format, ""); - uuid = false; +FilenamePattern::FilenamePattern(string base, idx_t pos, bool uuid, vector segments_p) { + if (!segments_p.empty()) { + segments = std::move(segments_p); + return; } - - pos = base.find(uuid_format); - if (pos != string::npos) { - base = StringUtil::Replace(base, uuid_format, ""); - uuid = true; + // deserialize from legacy pattern + if (pos > 0) { + segments.emplace_back(base.substr(0, pos)); } + if (uuid) { + segments.emplace_back(FileNameSegmentType::UUID_V4); + } else { + segments.emplace_back(FileNameSegmentType::OFFSET); + } + if (pos == 0 && !base.empty()) { + segments.emplace_back(std::move(base)); + } else if (pos < base.size()) { + segments.emplace_back(base.substr(pos, base.size() - pos)); + } +} - pos = std::min(pos, (idx_t)base.length()); +void FilenamePattern::SetFilenamePattern(const string &pattern) { + struct StringPattern { + StringPattern(string pattern_p, FileNameSegmentType type) : pattern(std::move(pattern_p)), type(type) { + } + + string pattern; + FileNameSegmentType type; + }; + vector patterns; + patterns.emplace_back("{i}", FileNameSegmentType::OFFSET); + patterns.emplace_back("{uuid}", FileNameSegmentType::UUID_V4); + patterns.emplace_back("{uuidv4}", FileNameSegmentType::UUID_V4); + patterns.emplace_back("{uuidv7}", FileNameSegmentType::UUID_V7); + + idx_t current_pos = 0; + segments.clear(); + for (idx_t i = 0; i < pattern.size(); i++) { + if (pattern[i] != '{') { + continue; + } + // found a { - check if this is one of the supported pattern + idx_t remaining_length = pattern.size() - i; + for (auto &pat : patterns) { + if (remaining_length < pat.pattern.size()) { + // cannot match + continue; + } + if (memcmp(pat.pattern.c_str(), pattern.c_str() + i, pat.pattern.size()) != 0) { + // no match + continue; + } + // found a match! + if (i > current_pos) { + // add a literal pattern + segments.emplace_back(pattern.substr(current_pos, i - current_pos)); + } + // add the pattern here + segments.emplace_back(pat.type); + + // advance the search forward + i += pat.pattern.size() - 1; + current_pos = i + 1; + break; + } + } + // add the final pattern (if any) + if (current_pos < pattern.size()) { + segments.emplace_back(pattern.substr(current_pos)); + } + if (segments.size() == 1 && segments[0].type == FileNameSegmentType::LITERAL) { + // if we have ONLY a literal we add an offset at the end + segments.emplace_back(FileNameSegmentType::OFFSET); + } } string FilenamePattern::CreateFilename(FileSystem &fs, const string &path, const string &extension, idx_t offset) const { - string result(base); - string replacement; - - if (uuid) { - replacement = UUID::ToString(UUID::GenerateRandomUUID()); - } else { - replacement = std::to_string(offset); + string result; + for (auto &segment : segments) { + switch (segment.type) { + case FileNameSegmentType::LITERAL: + result += segment.data; + break; + case FileNameSegmentType::UUID_V4: + result += UUID::ToString(UUID::GenerateRandomUUID()); + break; + case FileNameSegmentType::UUID_V7: + result += UUID::ToString(UUIDv7::GenerateRandomUUID()); + break; + case FileNameSegmentType::OFFSET: + result += std::to_string(offset); + break; + default: + throw InternalException("Unsupported type for Filename Pattern"); + } } - result.insert(pos, replacement); return fs.JoinPath(path, result + "." + extension); } +bool FilenamePattern::HasUUID() const { + for (auto &segment : segments) { + if (segment.type == FileNameSegmentType::UUID_V4 || segment.type == FileNameSegmentType::UUID_V7) { + return true; + } + } + return false; +} + +struct LegacyFilenamePattern { + string base; + idx_t pos; +}; + +bool SupportsLegacyFilenamePattern(const vector &segments) { + idx_t non_literal_count = 0; + for (auto &segment : segments) { + if (segment.type == FileNameSegmentType::UUID_V7) { + // UUID v7 is not supported in legacy mode + return false; + } + if (segment.type != FileNameSegmentType::LITERAL) { + non_literal_count++; + } + } + if (non_literal_count != 1) { + // legacy mode requires exactly one non-literal + return false; + } + return true; +} + +LegacyFilenamePattern GetLegacyFilenamePattern(const vector &segments) { + LegacyFilenamePattern pattern; + // construct the base + pos + for (auto &segment : segments) { + if (segment.type == FileNameSegmentType::LITERAL) { + // add the literal to the base + pattern.base += segment.data; + } else { + // non-literal: set the position to the current location + pattern.pos = pattern.base.size(); + } + } + return pattern; +} + +string FilenamePattern::SerializeBase() const { + if (!SupportsLegacyFilenamePattern(segments)) { + return string(); + } + return GetLegacyFilenamePattern(segments).base; +} + +idx_t FilenamePattern::SerializePos() const { + if (!SupportsLegacyFilenamePattern(segments)) { + return 0; + } + return GetLegacyFilenamePattern(segments).pos; +} + +vector FilenamePattern::SerializeSegments() const { + if (SupportsLegacyFilenamePattern(segments)) { + // for legacy mode we don't serialize the segments + return vector(); + } + return segments; +} + } // namespace duckdb diff --git a/src/duckdb/src/common/local_file_system.cpp b/src/duckdb/src/common/local_file_system.cpp index a51d9aff9..472dded9e 100644 --- a/src/duckdb/src/common/local_file_system.cpp +++ b/src/duckdb/src/common/local_file_system.cpp @@ -662,8 +662,9 @@ void LocalFileSystem::RemoveFile(const string &filename, optional_ptr &callback, - FileOpener *opener) { +bool LocalFileSystem::ListFilesExtended(const string &directory, + const std::function &callback, + optional_ptr opener) { auto normalized_dir = NormalizeLocalPath(directory); auto dir = opendir(normalized_dir); if (!dir) { @@ -676,7 +677,8 @@ bool LocalFileSystem::ListFiles(const string &directory, const std::functiond_name); + OpenFileInfo info(ent->d_name); + auto &name = info.path; // skip . .. and empty files if (name.empty() || name == "." || name == "..") { continue; @@ -692,10 +694,20 @@ bool LocalFileSystem::ListFiles(const string &directory, const std::function(); + auto &options = info.extended_info->options; + // file type + Value file_type(status.st_mode & S_IFDIR ? "directory" : "file"); + options.emplace("type", std::move(file_type)); + // file size + options.emplace("file_size", Value::BIGINT(UnsafeNumericCast(status.st_size))); + // last modified time + options.emplace("last_modified", Value::TIMESTAMP(Timestamp::FromTimeT(status.st_mtime))); + // invoke callback - callback(name, status.st_mode & S_IFDIR); + callback(info); } - return true; } @@ -1044,20 +1056,11 @@ int64_t LocalFileSystem::GetFileSize(FileHandle &handle) { return result.QuadPart; } -time_t LocalFileSystem::GetLastModifiedTime(FileHandle &handle) { - HANDLE hFile = handle.Cast().fd; - - // https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfiletime - FILETIME last_write; - if (GetFileTime(hFile, nullptr, nullptr, &last_write) == 0) { - auto error = LocalFileSystem::GetLastErrorAsString(); - throw IOException("Failed to get last modified time for file \"%s\": %s", handle.path, error); - } - +time_t FiletimeToTimeT(FILETIME file_time) { // https://stackoverflow.com/questions/29266743/what-is-dwlowdatetime-and-dwhighdatetime ULARGE_INTEGER ul; - ul.LowPart = last_write.dwLowDateTime; - ul.HighPart = last_write.dwHighDateTime; + ul.LowPart = file_time.dwLowDateTime; + ul.HighPart = file_time.dwHighDateTime; int64_t fileTime64 = ul.QuadPart; // fileTime64 contains a 64-bit value representing the number of @@ -1071,6 +1074,18 @@ time_t LocalFileSystem::GetLastModifiedTime(FileHandle &handle) { return result; } +time_t LocalFileSystem::GetLastModifiedTime(FileHandle &handle) { + HANDLE hFile = handle.Cast().fd; + + // https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfiletime + FILETIME last_write; + if (GetFileTime(hFile, nullptr, nullptr, &last_write) == 0) { + auto error = LocalFileSystem::GetLastErrorAsString(); + throw IOException("Failed to get last modified time for file \"%s\": %s", handle.path, error); + } + return FiletimeToTimeT(last_write); +} + void LocalFileSystem::Truncate(FileHandle &handle, int64_t new_size) { HANDLE hFile = handle.Cast().fd; // seek to the location @@ -1140,8 +1155,9 @@ void LocalFileSystem::RemoveFile(const string &filename, optional_ptr &callback, - FileOpener *opener) { +bool LocalFileSystem::ListFilesExtended(const string &directory, + const std::function &callback, + optional_ptr opener) { string search_dir = JoinPath(directory, "*"); auto unicode_path = NormalizePathAndConvertToUnicode(search_dir); @@ -1151,11 +1167,27 @@ bool LocalFileSystem::ListFiles(const string &directory, const std::function(); + auto &options = info.extended_info->options; + // file type + Value file_type(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ? "directory" : "file"); + options.emplace("type", std::move(file_type)); + // file size + int64_t file_size_bytes = + (static_cast(ffd.nFileSizeHigh) << 32) | static_cast(ffd.nFileSizeLow); + options.emplace("file_size", Value::BIGINT(file_size_bytes)); + // last modified time + auto last_modified_time = FiletimeToTimeT(ffd.ftLastWriteTime); + options.emplace("last_modified", Value::TIMESTAMP(Timestamp::FromTimeT(last_modified_time))); + + // callback + callback(info); } while (FindNextFileW(hFind, &ffd) != 0); DWORD dwError = GetLastError(); @@ -1248,37 +1280,38 @@ static bool IsSymbolicLink(const string &path) { static void RecursiveGlobDirectories(FileSystem &fs, const string &path, vector &result, bool match_directory, bool join_path) { - fs.ListFiles(path, [&](const string &fname, bool is_directory) { - string concat; + fs.ListFiles(path, [&](OpenFileInfo &info) { if (join_path) { - concat = fs.JoinPath(path, fname); - } else { - concat = fname; + info.path = fs.JoinPath(path, info.path); } - if (IsSymbolicLink(concat)) { + if (IsSymbolicLink(info.path)) { return; } - if (is_directory == match_directory) { - result.push_back(concat); - } + bool is_directory = FileSystem::IsDirectory(info); + bool return_file = is_directory == match_directory; if (is_directory) { - RecursiveGlobDirectories(fs, concat, result, match_directory, true); + if (return_file) { + result.push_back(info); + } + RecursiveGlobDirectories(fs, info.path, result, match_directory, true); + } else if (return_file) { + result.push_back(std::move(info)); } }); } static void GlobFilesInternal(FileSystem &fs, const string &path, const string &glob, bool match_directory, vector &result, bool join_path) { - fs.ListFiles(path, [&](const string &fname, bool is_directory) { + fs.ListFiles(path, [&](OpenFileInfo &info) { + bool is_directory = FileSystem::IsDirectory(info); if (is_directory != match_directory) { return; } - if (Glob(fname.c_str(), fname.size(), glob.c_str(), glob.size())) { + if (Glob(info.path.c_str(), info.path.size(), glob.c_str(), glob.size())) { if (join_path) { - result.push_back(fs.JoinPath(path, fname)); - } else { - result.push_back(fname); + info.path = fs.JoinPath(path, info.path); } + result.push_back(std::move(info)); } }); } diff --git a/src/duckdb/src/common/operator/cast_operators.cpp b/src/duckdb/src/common/operator/cast_operators.cpp index 10ebc3ee0..5f91b5977 100644 --- a/src/duckdb/src/common/operator/cast_operators.cpp +++ b/src/duckdb/src/common/operator/cast_operators.cpp @@ -26,6 +26,7 @@ #include "duckdb/common/types/bit.hpp" #include "duckdb/common/operator/integer_cast_operator.hpp" #include "duckdb/common/operator/double_cast_operator.hpp" +#include "duckdb/planner/expression.hpp" #include #include @@ -33,6 +34,25 @@ namespace duckdb { +ConversionException TryCast::UnimplementedErrorMessage(PhysicalType source, PhysicalType target, + optional_ptr parameters) { + optional_idx query_location; + if (parameters) { + query_location = parameters->query_location; + if (parameters->cast_source && parameters->cast_target) { + auto &source_expr = *parameters->cast_source; + auto &target_expr = *parameters->cast_target; + return ConversionException(query_location, + UnimplementedCastMessage(source_expr.return_type, target_expr.return_type)); + } + } + return ConversionException(query_location, "Unimplemented type for cast (%s -> %s)", source, target); +} + +string TryCast::UnimplementedCastMessage(const LogicalType &source, const LogicalType &target) { + return StringUtil::Format("Unimplemented type for cast (%s -> %s)", source, target); +} + //===--------------------------------------------------------------------===// // Cast bool -> Numeric //===--------------------------------------------------------------------===// @@ -1753,6 +1773,9 @@ struct HugeIntegerCastOperation { e = exponent - state.decimal_total_digits; if (e < 0) { + if (e < -38) { + return false; + } state.decimal = T::Operation::DivMod(state.decimal, T::Operation::POWERS_OF_TEN[-e], remainder); state.decimal_total_digits -= (exponent); } else { @@ -1800,11 +1823,12 @@ struct HugeIntegerCastOperation { } // Get the first (left-most) digit of the decimals - while (state.decimal_total_digits > 39) { - state.decimal /= T::Operation::POWERS_OF_TEN[39]; - state.decimal_total_digits -= 39; + constexpr auto MAX_DIGITS = T::Operation::CACHED_POWERS_OF_TEN - 1; + while (state.decimal_total_digits > MAX_DIGITS) { + state.decimal /= T::Operation::POWERS_OF_TEN[MAX_DIGITS]; + state.decimal_total_digits -= MAX_DIGITS; } - D_ASSERT((state.decimal_total_digits - 1) >= 0 && (state.decimal_total_digits - 1) <= 39); + D_ASSERT((state.decimal_total_digits - 1) >= 0 && (state.decimal_total_digits - 1) <= MAX_DIGITS); state.decimal /= T::Operation::POWERS_OF_TEN[state.decimal_total_digits - 1]; if (state.decimal >= 5) { diff --git a/src/duckdb/src/common/types/interval.cpp b/src/duckdb/src/common/types/interval.cpp index e900b2402..586126e46 100644 --- a/src/duckdb/src/common/types/interval.cpp +++ b/src/duckdb/src/common/types/interval.cpp @@ -313,6 +313,25 @@ int64_t Interval::GetMilli(const interval_t &val) { return milli; } +bool Interval::TryGetMicro(const interval_t &val, int64_t µ_total) { + int64_t micro_month, micro_day; + micro_total = val.micros; + if (!TryMultiplyOperator::Operation((int64_t)val.months, Interval::MICROS_PER_MONTH, micro_month)) { + return false; + } + if (!TryMultiplyOperator::Operation((int64_t)val.days, Interval::MICROS_PER_DAY, micro_day)) { + return false; + } + if (!TryAddOperator::Operation(micro_total, micro_month, micro_total)) { + return false; + } + if (!TryAddOperator::Operation(micro_total, micro_day, micro_total)) { + return false; + } + + return true; +} + int64_t Interval::GetMicro(const interval_t &val) { int64_t micro_month, micro_day, micro_total; micro_total = val.micros; diff --git a/src/duckdb/src/common/types/timestamp.cpp b/src/duckdb/src/common/types/timestamp.cpp index 0cd4abc9d..6ed230c78 100644 --- a/src/duckdb/src/common/types/timestamp.cpp +++ b/src/duckdb/src/common/types/timestamp.cpp @@ -10,6 +10,7 @@ #include "duckdb/common/operator/multiply.hpp" #include "duckdb/common/operator/subtract.hpp" #include "duckdb/common/exception/conversion_exception.hpp" +#include "duckdb/common/windows.hpp" #include namespace duckdb { @@ -547,4 +548,40 @@ TimestampComponents Timestamp::GetComponents(timestamp_t timestamp) { return result; } +time_t Timestamp::ToTimeT(timestamp_t timestamp) { + auto components = Timestamp::GetComponents(timestamp); + struct tm tm {}; + tm.tm_year = components.year - 1900; + tm.tm_mon = components.month - 1; + tm.tm_mday = components.day; + tm.tm_hour = components.hour; + tm.tm_min = components.minute; + tm.tm_sec = components.second; + tm.tm_isdst = 0; + return mktime(&tm); +} + +timestamp_t Timestamp::FromTimeT(time_t time) { +#ifdef DUCKDB_WINDOWS + auto tm = localtime(&time); +#else + struct tm tm_storage {}; + auto tm = localtime_r(&time, &tm_storage); +#endif + if (!tm) { + throw InternalException("FromTimeT failed: null pointer returned"); + } + + int32_t year = tm->tm_year + 1900; + int32_t month = tm->tm_mon + 1; + int32_t day = tm->tm_mday; + int32_t hour = tm->tm_hour; + int32_t min = tm->tm_min; + int32_t sec = tm->tm_sec; + + auto dt = Date::FromDate(year, month, day); + auto t = Time::FromTime(hour, min, sec, 0); + return FromDatetime(dt, t); +} + } // namespace duckdb diff --git a/src/duckdb/src/common/types/value.cpp b/src/duckdb/src/common/types/value.cpp index 42c50a829..a49258ed0 100644 --- a/src/duckdb/src/common/types/value.cpp +++ b/src/duckdb/src/common/types/value.cpp @@ -805,7 +805,7 @@ Value Value::MAP(const LogicalType &key_type, const LogicalType &value_type, vec return result; } -Value Value::MAP(const unordered_map &kv_pairs) { +Value Value::MAP(const InsertionOrderPreservingMap &kv_pairs) { Value result; result.type_ = LogicalType::MAP(LogicalType::VARCHAR, LogicalType::VARCHAR); result.is_null = false; diff --git a/src/duckdb/src/common/types/vector.cpp b/src/duckdb/src/common/types/vector.cpp index be6318a28..6841d43ec 100644 --- a/src/duckdb/src/common/types/vector.cpp +++ b/src/duckdb/src/common/types/vector.cpp @@ -924,6 +924,27 @@ void Vector::Flatten(idx_t count) { switch (GetVectorType()) { case VectorType::FLAT_VECTOR: // already a flat vector + switch (GetType().InternalType()) { + case PhysicalType::STRUCT: { + auto &entries = StructVector::GetEntries(*this); + for (auto &entry : entries) { + entry->Flatten(count); + } + break; + } + case PhysicalType::LIST: { + auto &entry = ListVector::GetEntry(*this); + entry.Flatten(ListVector::GetListSize(*this)); + break; + } + case PhysicalType::ARRAY: { + auto &entry = ArrayVector::GetEntry(*this); + entry.Flatten(ArrayVector::GetTotalSize(*this)); + break; + } + default: + break; + } break; case VectorType::FSST_VECTOR: { // Even though count may only be a part of the vector, we need to flatten the whole thing due to the way diff --git a/src/duckdb/src/common/virtual_file_system.cpp b/src/duckdb/src/common/virtual_file_system.cpp index 6d78e575d..fcf53bb30 100644 --- a/src/duckdb/src/common/virtual_file_system.cpp +++ b/src/duckdb/src/common/virtual_file_system.cpp @@ -5,7 +5,10 @@ namespace duckdb { -VirtualFileSystem::VirtualFileSystem() : default_fs(FileSystem::CreateLocal()) { +VirtualFileSystem::VirtualFileSystem() : VirtualFileSystem(FileSystem::CreateLocal()) { +} + +VirtualFileSystem::VirtualFileSystem(unique_ptr &&inner) : default_fs(std::move(inner)) { VirtualFileSystem::RegisterSubSystem(FileCompressionType::GZIP, make_uniq()); } @@ -95,8 +98,9 @@ void VirtualFileSystem::RemoveDirectory(const string &directory, optional_ptr &callback, - FileOpener *opener) { +bool VirtualFileSystem::ListFilesExtended(const string &directory, + const std::function &callback, + optional_ptr opener) { return FindFileSystem(directory).ListFiles(directory, callback, opener); } diff --git a/src/duckdb/src/execution/expression_executor/execute_cast.cpp b/src/duckdb/src/execution/expression_executor/execute_cast.cpp index 0627dcf51..b66362983 100644 --- a/src/duckdb/src/execution/expression_executor/execute_cast.cpp +++ b/src/duckdb/src/execution/expression_executor/execute_cast.cpp @@ -30,18 +30,14 @@ void ExpressionExecutor::Execute(const BoundCastExpression &expr, ExpressionStat auto child_state = state->child_states[0].get(); Execute(*expr.child, child_state, sel, count, child); - if (expr.try_cast) { - string error_message; - CastParameters parameters(expr.bound_cast.cast_data.get(), false, &error_message, lstate); - parameters.query_location = expr.GetQueryLocation(); - expr.bound_cast.function(child, result, count, parameters); - } else { - // cast it to the type specified by the cast expression - D_ASSERT(result.GetType() == expr.return_type); - CastParameters parameters(expr.bound_cast.cast_data.get(), false, nullptr, lstate); - parameters.query_location = expr.GetQueryLocation(); - expr.bound_cast.function(child, result, count, parameters); - } + + string error_message; + auto error_ref = expr.try_cast ? &error_message : nullptr; + CastParameters parameters(expr.bound_cast.cast_data.get(), false, error_ref, lstate); + parameters.query_location = expr.GetQueryLocation(); + parameters.cast_source = expr.child.get(); + parameters.cast_target = expr; + expr.bound_cast.function(child, result, count, parameters); } } // namespace duckdb diff --git a/src/duckdb/src/execution/join_hashtable.cpp b/src/duckdb/src/execution/join_hashtable.cpp index c15ff103f..0542d2ba8 100644 --- a/src/duckdb/src/execution/join_hashtable.cpp +++ b/src/duckdb/src/execution/join_hashtable.cpp @@ -14,17 +14,17 @@ using ProbeSpill = JoinHashTable::ProbeSpill; using ProbeSpillLocalState = JoinHashTable::ProbeSpillLocalAppendState; JoinHashTable::SharedState::SharedState() - : rhs_row_locations(LogicalType::POINTER), salt_v(LogicalType::UBIGINT), salt_match_sel(STANDARD_VECTOR_SIZE), - key_no_match_sel(STANDARD_VECTOR_SIZE) { + : salt_v(LogicalType::UBIGINT), keys_to_compare_sel(STANDARD_VECTOR_SIZE), keys_no_match_sel(STANDARD_VECTOR_SIZE) { } JoinHashTable::ProbeState::ProbeState() - : SharedState(), ht_offsets_v(LogicalType::UBIGINT), ht_offsets_dense_v(LogicalType::UBIGINT), + : SharedState(), ht_offsets_v(LogicalType::UBIGINT), hashes_dense_v(LogicalType::HASH), non_empty_sel(STANDARD_VECTOR_SIZE) { } JoinHashTable::InsertState::InsertState(const JoinHashTable &ht) - : SharedState(), remaining_sel(STANDARD_VECTOR_SIZE), key_match_sel(STANDARD_VECTOR_SIZE) { + : SharedState(), remaining_sel(STANDARD_VECTOR_SIZE), key_match_sel(STANDARD_VECTOR_SIZE), + rhs_row_locations(LogicalType::POINTER) { ht.data_collection->InitializeChunk(lhs_data, ht.equality_predicate_columns); ht.data_collection->InitializeChunkState(chunk_state, ht.equality_predicate_columns); } @@ -157,140 +157,176 @@ static void ApplyBitmaskAndGetSaltBuild(Vector &hashes_v, Vector &salt_v, const } } -//! Gets a pointer to the entry in the HT for each of the hashes_v using linear probing. Will update the key_match_sel -//! vector and the count argument to the number and position of the matches -template -static inline void GetRowPointersInternal(DataChunk &keys, TupleDataChunkState &key_state, - JoinHashTable::ProbeState &state, Vector &hashes_v, - const SelectionVector &sel, idx_t &count, JoinHashTable &ht, - ht_entry_t *entries, Vector &pointers_result_v, SelectionVector &match_sel) { - UnifiedVectorFormat hashes_v_unified; - hashes_v.ToUnifiedFormat(count, hashes_v_unified); +template +idx_t GetOptionalIndex(const SelectionVector *sel, idx_t idx) { + return HAS_SEL ? sel->get_index(idx) : idx; +} - auto hashes = UnifiedVectorFormat::GetData(hashes_v_unified); - auto salts = FlatVector::GetData(state.salt_v); +static void AddPointerToCompare(JoinHashTable::ProbeState &state, const ht_entry_t &entry, Vector &pointers_result_v, + idx_t ht_offset, idx_t &keys_to_compare_count, const idx_t &row_index) { - auto ht_offsets = FlatVector::GetData(state.ht_offsets_v); - auto ht_offsets_dense = FlatVector::GetData(state.ht_offsets_dense_v); + const auto row_ptr_insert_to = FlatVector::GetData(pointers_result_v); + const auto ht_offsets = FlatVector::GetData(state.ht_offsets_v); - idx_t non_empty_count = 0; + state.keys_to_compare_sel.set_index(keys_to_compare_count, row_index); + row_ptr_insert_to[row_index] = entry.GetPointer(); + ht_offsets[row_index] = ht_offset; + keys_to_compare_count += 1; +} - // first, filter out the empty rows and calculate the offset - for (idx_t i = 0; i < count; i++) { - const auto row_index = sel.get_index(i); - auto uvf_index = hashes_v_unified.sel->get_index(row_index); - auto ht_offset = hashes[uvf_index] & ht.bitmask; - ht_offsets_dense[i] = ht_offset; - ht_offsets[row_index] = ht_offset; - } +template +static idx_t ProbeForPointersInternal(JoinHashTable::ProbeState &state, JoinHashTable &ht, ht_entry_t *entries, + Vector &hashes_v, Vector &pointers_result_v, const SelectionVector *row_sel, + idx_t &count) { + + auto hashes_dense = FlatVector::GetData(state.hashes_dense_v); + + idx_t keys_to_compare_count = 0; - // have a dense loop to have as few instructions as possible while producing cache misses as this is the - // first location where we access the big entries array for (idx_t i = 0; i < count; i++) { - idx_t ht_offset = ht_offsets_dense[i]; - auto &entry = entries[ht_offset]; - bool occupied = entry.IsOccupied(); - state.non_empty_sel.set_index(non_empty_count, i); - non_empty_count += occupied; - } - for (idx_t i = 0; i < non_empty_count; i++) { - // transform the dense index to the actual index in the sel vector - idx_t dense_index = state.non_empty_sel.get_index(i); - const auto row_index = sel.get_index(dense_index); - state.non_empty_sel.set_index(i, row_index); + auto row_hash = hashes_dense[i]; // hashes has been flattened before -> always access dense + auto row_ht_offset = row_hash & ht.bitmask; if (USE_SALTS) { - auto uvf_index = hashes_v_unified.sel->get_index(row_index); - auto hash = hashes[uvf_index]; - hash_t row_salt = ht_entry_t::ExtractSalt(hash); - salts[row_index] = row_salt; + // increment the ht_offset of the entry as long as next entry is occupied and salt does not match + while (true) { + const ht_entry_t entry = entries[row_ht_offset]; + const bool occupied = entry.IsOccupied(); + + // the entry is empty -> no match possible + if (!occupied) { + break; + } + + const hash_t row_salt = ht_entry_t::ExtractSalt(row_hash); + const bool salt_match = entry.GetSalt() == row_salt; + if (salt_match) { + // we know that the enty is occupied and the salt matches -> compare the keys + auto row_index = GetOptionalIndex(row_sel, i); + AddPointerToCompare(state, entry, pointers_result_v, row_ht_offset, keys_to_compare_count, + row_index); + break; + } + + // full and salt does not match -> continue probing + IncrementAndWrap(row_ht_offset, ht.bitmask); + } + } else { + const ht_entry_t entry = entries[row_ht_offset]; + const bool occupied = entry.IsOccupied(); + if (occupied) { + // the entry is occupied -> compare the keys + auto row_index = GetOptionalIndex(row_sel, i); + AddPointerToCompare(state, entry, pointers_result_v, row_ht_offset, keys_to_compare_count, row_index); + } } } - auto pointers_result = FlatVector::GetData(pointers_result_v); - auto row_ptr_insert_to = FlatVector::GetData(state.rhs_row_locations); - - const SelectionVector *remaining_sel = &state.non_empty_sel; - idx_t remaining_count = non_empty_count; + return keys_to_compare_count; +} - idx_t &match_count = count; - match_count = 0; +/// for each entry, do linear probing until +/// a) an empty entry is found +/// -> no match +/// b) an entry is found where (and the salt matches if USE_SALTS is true) +/// -> match, add to compare sel and increase found count +template +static idx_t ProbeForPointers(JoinHashTable::ProbeState &state, JoinHashTable &ht, ht_entry_t *entries, + Vector &hashes_v, Vector &pointers_result_v, const SelectionVector *row_sel, idx_t count, + const bool has_row_sel) { + if (has_row_sel) { + return ProbeForPointersInternal(state, ht, entries, hashes_v, pointers_result_v, row_sel, + count); + } else { + return ProbeForPointersInternal(state, ht, entries, hashes_v, pointers_result_v, row_sel, + count); + } +} - while (remaining_count > 0) { - idx_t salt_match_count = 0; - idx_t key_no_match_count = 0; +//! Gets a pointer to the entry in the HT for each of the hashes_v using linear probing. Will update the key_match_sel +//! vector and the count argument to the number and position of the matches +template +static void GetRowPointersInternal(DataChunk &keys, TupleDataChunkState &key_state, JoinHashTable::ProbeState &state, + Vector &hashes_v, const SelectionVector *row_sel, idx_t &count, JoinHashTable &ht, + ht_entry_t *entries, Vector &pointers_result_v, SelectionVector &match_sel, + bool has_row_sel) { + // densify hashes: If there is no sel, simply flatten the hashes, else densify via UnifiedVectorFormat + if (has_row_sel) { + UnifiedVectorFormat hashes_v_unified; + hashes_v.ToUnifiedFormat(count, hashes_v_unified); + auto hashes = UnifiedVectorFormat::GetData(hashes_v_unified); + auto hashes_dense = FlatVector::GetData(state.hashes_dense_v); - // for each entry, linear probing until - // a) an empty entry is found -> return nullptr (do nothing, as vector is zeroed) - // b) an entry is found where the salt matches -> need to compare the keys - for (idx_t i = 0; i < remaining_count; i++) { - const auto row_index = remaining_sel->get_index(i); + for (idx_t i = 0; i < count; i++) { + const auto row_index = row_sel->get_index(i); + const auto uvf_index = hashes_v_unified.sel->get_index(row_index); + hashes_dense[i] = hashes[uvf_index]; + } + } else { + hashes_v.Flatten(count); + state.hashes_dense_v.Reference(hashes_v); + } - idx_t &ht_offset = ht_offsets[row_index]; - bool occupied; - ht_entry_t entry; + // the number of keys that match for all iterations of the following loop + idx_t match_count = 0; - if (USE_SALTS) { - hash_t row_salt = salts[row_index]; - // increment the ht_offset of the entry as long as next entry is occupied and salt does not match - while (true) { - entry = entries[ht_offset]; - occupied = entry.IsOccupied(); - bool salt_match = entry.GetSalt() == row_salt; - - // condition for incrementing the ht_offset: occupied and row_salt does not match -> move to next - // entry - if (!occupied || salt_match) { - break; - } + idx_t keys_no_match_count; + idx_t elements_to_probe_count = count; - IncrementAndWrap(ht_offset, ht.bitmask); - } - } else { - entry = entries[ht_offset]; - occupied = entry.IsOccupied(); - } + do { - // the entries we need to process in the next iteration are the ones that are occupied and the row_salt - // does not match, the ones that are empty need no further processing - state.salt_match_sel.set_index(salt_match_count, row_index); - salt_match_count += occupied; + const idx_t keys_to_compare_count = ProbeForPointers(state, ht, entries, hashes_v, pointers_result_v, + row_sel, elements_to_probe_count, has_row_sel); - // entry might be empty, so the pointer in the entry is nullptr, but this does not matter as the row - // will not be compared anyway as with an empty entry we are already done - row_ptr_insert_to[row_index] = entry.GetPointerOrNull(); + // if there are no keys to compare, we are done + if (keys_to_compare_count == 0) { + break; } - if (salt_match_count != 0) { - // Perform row comparisons, after function call salt_match_sel will point to the keys that match - idx_t key_match_count = ht.row_matcher_build.Match( - keys, key_state.vector_data, state.salt_match_sel, salt_match_count, *ht.layout_ptr, - state.rhs_row_locations, &state.key_no_match_sel, key_no_match_count); + // Perform row comparisons, after function call salt_match_sel will point to the keys that match + keys_no_match_count = 0; + const idx_t keys_match_count = ht.row_matcher_build.Match( + keys, key_state.vector_data, state.keys_to_compare_sel, keys_to_compare_count, *ht.layout_ptr, + pointers_result_v, &state.keys_no_match_sel, keys_no_match_count); + + D_ASSERT(keys_match_count + keys_no_match_count == keys_to_compare_count); - D_ASSERT(key_match_count + key_no_match_count == salt_match_count); + // add the indices to the match_sel + for (idx_t i = 0; i < keys_match_count; i++) { + const auto row_index = state.keys_to_compare_sel.get_index(i); + match_sel.set_index(match_count, row_index); + match_count++; + } - // Set a pointer to the matching row - for (idx_t i = 0; i < key_match_count; i++) { - const auto row_index = state.salt_match_sel.get_index(i); - pointers_result[row_index] = row_ptr_insert_to[row_index]; + // Linear probing for collisions: Move to the next entry in the HT + auto hashes_dense = FlatVector::GetData(state.hashes_dense_v); + auto ht_offsets = FlatVector::GetData(state.ht_offsets_v); - match_sel.set_index(match_count, row_index); - match_count++; - } + for (idx_t i = 0; i < keys_no_match_count; i++) { + const auto row_index = state.keys_no_match_sel.get_index(i); + // the ProbeForPointers function calculates the ht_offset from the hash, therefore we have to write the + // new offset into the hashes_v, otherwise the next iteration will start at the old position. This might + // seem as an overhead but assures that the first call of ProbeForPointers is optimized as conceding + // calls are unlikely (Max 1-(65535/65536)^VectorSize = 3.1%) + auto ht_offset = ht_offsets[row_index]; + IncrementAndWrap(ht_offset, ht.bitmask); - // Linear probing: each of the entries that do not match move to the next entry in the HT - for (idx_t i = 0; i < key_no_match_count; i++) { - const auto row_index = state.key_no_match_sel.get_index(i); - auto &ht_offset = ht_offsets[row_index]; + const auto hash = hashes_dense[row_index]; + const auto offset_and_salt = ht_offset | (hash & ht_entry_t::SALT_MASK); - IncrementAndWrap(ht_offset, ht.bitmask); - } + hashes_dense[i] = offset_and_salt; // populate dense again } - remaining_sel = &state.key_no_match_sel; - remaining_count = key_no_match_count; - } + // in the next interation, we have a selection vector with the keys that do not match + row_sel = &state.keys_no_match_sel; + has_row_sel = true; + elements_to_probe_count = keys_no_match_count; + + } while (DUCKDB_UNLIKELY(keys_no_match_count > 0)); + + // set the count to the number of matches + count = match_count; } inline bool JoinHashTable::UseSalt() const { @@ -299,14 +335,15 @@ inline bool JoinHashTable::UseSalt() const { } void JoinHashTable::GetRowPointers(DataChunk &keys, TupleDataChunkState &key_state, ProbeState &state, Vector &hashes_v, - const SelectionVector &sel, idx_t &count, Vector &pointers_result_v, - SelectionVector &match_sel) { + const SelectionVector *sel, idx_t &count, Vector &pointers_result_v, + SelectionVector &match_sel, const bool has_sel) { + if (UseSalt()) { GetRowPointersInternal(keys, key_state, state, hashes_v, sel, count, *this, entries, pointers_result_v, - match_sel); + match_sel, has_sel); } else { GetRowPointersInternal(keys, key_state, state, hashes_v, sel, count, *this, entries, pointers_result_v, - match_sel); + match_sel, has_sel); } } @@ -500,8 +537,9 @@ static inline void PerformKeyComparison(JoinHashTable::InsertState &state, JoinH // The target selection vector says where to write the results into the lhs_data, we just want to write // sequentially as otherwise we trigger a bug in the Gather function data_collection.ResetCachedCastVectors(state.chunk_state, ht.equality_predicate_columns); - data_collection.Gather(row_locations, state.salt_match_sel, count, ht.equality_predicate_columns, state.lhs_data, - *FlatVector::IncrementalSelectionVector(), state.chunk_state.cached_cast_vectors); + data_collection.Gather(row_locations, state.keys_to_compare_sel, count, ht.equality_predicate_columns, + state.lhs_data, *FlatVector::IncrementalSelectionVector(), + state.chunk_state.cached_cast_vectors); TupleDataCollection::ToUnifiedFormat(state.chunk_state, state.lhs_data); for (idx_t i = 0; i < count; i++) { @@ -511,7 +549,7 @@ static inline void PerformKeyComparison(JoinHashTable::InsertState &state, JoinH // Perform row comparisons key_match_count = ht.row_matcher_build.Match(state.lhs_data, state.chunk_state.vector_data, state.key_match_sel, count, *ht.layout_ptr, state.rhs_row_locations, - &state.key_no_match_sel, key_no_match_count); + &state.keys_no_match_sel, key_no_match_count); D_ASSERT(key_match_count + key_no_match_count == count); } @@ -529,7 +567,7 @@ static inline void InsertMatchesAndIncrementMisses(atomic entries[], // Insert the rows that match for (idx_t i = 0; i < key_match_count; i++) { const auto need_compare_idx = state.key_match_sel.get_index(i); - const auto entry_index = state.salt_match_sel.get_index(need_compare_idx); + const auto entry_index = state.keys_to_compare_sel.get_index(need_compare_idx); const auto &ht_offset = ht_offsets[entry_index]; auto &entry = entries[ht_offset]; @@ -541,8 +579,8 @@ static inline void InsertMatchesAndIncrementMisses(atomic entries[], // Linear probing: each of the entries that do not match move to the next entry in the HT for (idx_t i = 0; i < key_no_match_count; i++) { - const auto need_compare_idx = state.key_no_match_sel.get_index(i); - const auto entry_index = state.salt_match_sel.get_index(need_compare_idx); + const auto need_compare_idx = state.keys_no_match_sel.get_index(i); + const auto entry_index = state.keys_to_compare_sel.get_index(need_compare_idx); auto &ht_offset = ht_offsets[entry_index]; IncrementAndWrap(ht_offset, capacity_mask); @@ -637,14 +675,14 @@ static void InsertHashesLoop(atomic entries[], Vector &row_locations if (potential_collided_ptr) { // if the entry was occupied, we need to compare the keys and insert the row to the next entry // we need to compare the keys and insert the row to the next entry - state.salt_match_sel.set_index(salt_match_count, row_index); + state.keys_to_compare_sel.set_index(salt_match_count, row_index); rhs_row_locations[salt_match_count] = potential_collided_ptr; salt_match_count += 1; } } } else { // compare with full entry - state.salt_match_sel.set_index(salt_match_count, row_index); + state.keys_to_compare_sel.set_index(salt_match_count, row_index); rhs_row_locations[salt_match_count] = entry.GetPointer(); salt_match_count += 1; } @@ -747,6 +785,12 @@ void JoinHashTable::InitializeScanStructure(ScanStructure &scan_structure, DataC // first prepare the keys for probing TupleDataCollection::ToUnifiedFormat(key_state, keys); scan_structure.count = PrepareKeys(keys, key_state.vector_data, current_sel, scan_structure.sel_vector, false); + + if (scan_structure.count < keys.size()) { + scan_structure.has_null_value_filter = true; + } else { + scan_structure.has_null_value_filter = false; + } } void JoinHashTable::Probe(ScanStructure &scan_structure, DataChunk &keys, TupleDataChunkState &key_state, @@ -756,18 +800,17 @@ void JoinHashTable::Probe(ScanStructure &scan_structure, DataChunk &keys, TupleD if (scan_structure.count == 0) { return; } - if (precomputed_hashes) { - GetRowPointers(keys, key_state, probe_state, *precomputed_hashes, *current_sel, scan_structure.count, - scan_structure.pointers, scan_structure.sel_vector); + GetRowPointers(keys, key_state, probe_state, *precomputed_hashes, current_sel, scan_structure.count, + scan_structure.pointers, scan_structure.sel_vector, scan_structure.has_null_value_filter); } else { Vector hashes(LogicalType::HASH); // hash all the keys Hash(keys, *current_sel, scan_structure.count, hashes); // now initialize the pointers of the scan structure based on the hashes - GetRowPointers(keys, key_state, probe_state, hashes, *current_sel, scan_structure.count, - scan_structure.pointers, scan_structure.sel_vector); + GetRowPointers(keys, key_state, probe_state, hashes, current_sel, scan_structure.count, scan_structure.pointers, + scan_structure.sel_vector, scan_structure.has_null_value_filter); } } @@ -1611,8 +1654,8 @@ void JoinHashTable::ProbeAndSpill(ScanStructure &scan_structure, DataChunk &prob } // now initialize the pointers of the scan structure based on the hashes - GetRowPointers(probe_keys, key_state, probe_state, hashes, *current_sel, scan_structure.count, - scan_structure.pointers, scan_structure.sel_vector); + GetRowPointers(probe_keys, key_state, probe_state, hashes, current_sel, scan_structure.count, + scan_structure.pointers, scan_structure.sel_vector, scan_structure.has_null_value_filter); } ProbeSpill::ProbeSpill(JoinHashTable &ht, ClientContext &context, const vector &probe_types) diff --git a/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp b/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp index 350d51649..47dd9b065 100644 --- a/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +++ b/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp @@ -16,10 +16,13 @@ namespace duckdb { PhysicalPiecewiseMergeJoin::PhysicalPiecewiseMergeJoin(LogicalComparisonJoin &op, PhysicalOperator &left, PhysicalOperator &right, vector cond, - JoinType join_type, idx_t estimated_cardinality) + JoinType join_type, idx_t estimated_cardinality, + unique_ptr pushdown_info_p) : PhysicalRangeJoin(op, PhysicalOperatorType::PIECEWISE_MERGE_JOIN, left, right, std::move(cond), join_type, estimated_cardinality) { + filter_pushdown = std::move(pushdown_info_p); + for (auto &cond : conditions) { D_ASSERT(cond.left->return_type == cond.right->return_type); join_key_types.push_back(cond.left->return_type); @@ -56,15 +59,7 @@ PhysicalPiecewiseMergeJoin::PhysicalPiecewiseMergeJoin(LogicalComparisonJoin &op //===--------------------------------------------------------------------===// // Sink //===--------------------------------------------------------------------===// -class MergeJoinLocalState : public LocalSinkState { -public: - explicit MergeJoinLocalState(ClientContext &context, const PhysicalRangeJoin &op, const idx_t child) - : table(context, op, child) { - } - - //! The local sort state - PhysicalRangeJoin::LocalSortedTable table; -}; +class MergeJoinLocalState; class MergeJoinGlobalState : public GlobalSinkState { public: @@ -77,26 +72,39 @@ class MergeJoinGlobalState : public GlobalSinkState { vector rhs_order; rhs_order.emplace_back(op.rhs_orders[0].Copy()); table = make_uniq(context, rhs_order, rhs_layout, op); + if (op.filter_pushdown) { + skip_filter_pushdown = op.filter_pushdown->probe_info.empty(); + global_filter_state = op.filter_pushdown->GetGlobalState(context, op); + } } inline idx_t Count() const { return table->count; } - void Sink(DataChunk &input, MergeJoinLocalState &lstate) { - auto &global_sort_state = table->global_sort_state; - auto &local_sort_state = lstate.table.local_sort_state; + void Sink(DataChunk &input, MergeJoinLocalState &lstate); - // Sink the data into the local sort state - lstate.table.Sink(input, global_sort_state); + unique_ptr table; + //! Should we not bother pushing down filters? + bool skip_filter_pushdown = false; + //! The global filter states to push down (if any) + unique_ptr global_filter_state; +}; - // When sorting data reaches a certain size, we sort it - if (local_sort_state.SizeInBytes() >= table->memory_per_thread) { - local_sort_state.Sort(global_sort_state, true); +class MergeJoinLocalState : public LocalSinkState { +public: + explicit MergeJoinLocalState(ClientContext &context, const PhysicalRangeJoin &op, MergeJoinGlobalState &gstate, + const idx_t child) + : table(context, op, child) { + if (op.filter_pushdown) { + local_filter_state = op.filter_pushdown->GetLocalState(*gstate.global_filter_state); } } - unique_ptr table; + //! The local sort state + PhysicalRangeJoin::LocalSortedTable table; + //! Local state for accumulating filter statistics + unique_ptr local_filter_state; }; unique_ptr PhysicalPiecewiseMergeJoin::GetGlobalSinkState(ClientContext &context) const { @@ -105,7 +113,21 @@ unique_ptr PhysicalPiecewiseMergeJoin::GetGlobalSinkState(Clien unique_ptr PhysicalPiecewiseMergeJoin::GetLocalSinkState(ExecutionContext &context) const { // We only sink the RHS - return make_uniq(context.client, *this, 1U); + auto &gstate = sink_state->Cast(); + return make_uniq(context.client, *this, gstate, 1U); +} + +void MergeJoinGlobalState::Sink(DataChunk &input, MergeJoinLocalState &lstate) { + auto &global_sort_state = table->global_sort_state; + auto &local_sort_state = lstate.table.local_sort_state; + + // Sink the data into the local sort state + lstate.table.Sink(input, global_sort_state); + + // When sorting data reaches a certain size, we sort it + if (local_sort_state.SizeInBytes() >= table->memory_per_thread) { + local_sort_state.Sort(global_sort_state, true); + } } SinkResultType PhysicalPiecewiseMergeJoin::Sink(ExecutionContext &context, DataChunk &chunk, @@ -115,6 +137,10 @@ SinkResultType PhysicalPiecewiseMergeJoin::Sink(ExecutionContext &context, DataC gstate.Sink(chunk, lstate); + if (filter_pushdown && !gstate.skip_filter_pushdown) { + filter_pushdown->Sink(lstate.table.keys, *lstate.local_filter_state); + } + return SinkResultType::NEED_MORE_INPUT; } @@ -127,6 +153,9 @@ SinkCombineResultType PhysicalPiecewiseMergeJoin::Combine(ExecutionContext &cont context.thread.profiler.Flush(*this); client_profiler.Flush(context.thread.profiler); + if (filter_pushdown && !gstate.skip_filter_pushdown) { + filter_pushdown->Combine(*gstate.global_filter_state, *lstate.local_filter_state); + } return SinkCombineResultType::FINISHED; } @@ -137,6 +166,9 @@ SinkCombineResultType PhysicalPiecewiseMergeJoin::Combine(ExecutionContext &cont SinkFinalizeType PhysicalPiecewiseMergeJoin::Finalize(Pipeline &pipeline, Event &event, ClientContext &context, OperatorSinkFinalizeInput &input) const { auto &gstate = input.global_state.Cast(); + if (filter_pushdown && !gstate.skip_filter_pushdown) { + (void)filter_pushdown->Finalize(context, nullptr, *gstate.global_filter_state, *this); + } auto &global_sort_state = gstate.table->global_sort_state; if (PropagatesBuildSide(join_type)) { diff --git a/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp b/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp index a22fcfe95..0714d8b44 100644 --- a/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +++ b/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp @@ -97,18 +97,20 @@ class CopyToFunctionGlobalState : public GlobalSinkState { created_directories.insert(dir_path); } - string GetOrCreateDirectory(const vector &cols, const vector &names, const vector &values, - string path, FileSystem &fs) { + string GetOrCreateDirectory(const vector &cols, bool hive_file_pattern, const vector &names, + const vector &values, string path, FileSystem &fs) { CreateDir(path, fs); - for (idx_t i = 0; i < cols.size(); i++) { - const auto &partition_col_name = names[cols[i]]; - const auto &partition_value = values[i]; - string p_dir; - p_dir += HivePartitioning::Escape(partition_col_name); - p_dir += "="; - p_dir += HivePartitioning::Escape(partition_value.ToString()); - path = fs.JoinPath(path, p_dir); - CreateDir(path, fs); + if (hive_file_pattern) { + for (idx_t i = 0; i < cols.size(); i++) { + const auto &partition_col_name = names[cols[i]]; + const auto &partition_value = values[i]; + string p_dir; + p_dir += HivePartitioning::Escape(partition_col_name); + p_dir += "="; + p_dir += HivePartitioning::Escape(partition_value.ToString()); + path = fs.JoinPath(path, p_dir); + CreateDir(path, fs); + } } return path; } @@ -167,14 +169,19 @@ class CopyToFunctionGlobalState : public GlobalSinkState { } } idx_t offset = 0; - auto prev_offset = previous_partitions.find(values); - if (prev_offset != previous_partitions.end()) { - offset = prev_offset->second; + if (op.hive_file_pattern) { + auto prev_offset = previous_partitions.find(values); + if (prev_offset != previous_partitions.end()) { + offset = prev_offset->second; + } + } else { + offset = global_offset++; } auto &fs = FileSystem::GetFileSystem(context.client); // Create a writer for the current file auto trimmed_path = op.GetTrimmedPath(context.client); - string hive_path = GetOrCreateDirectory(op.partition_columns, op.names, values, trimmed_path, fs); + string hive_path = + GetOrCreateDirectory(op.partition_columns, op.hive_file_pattern, op.names, values, trimmed_path, fs); string full_path(op.filename_pattern.CreateFilename(fs, hive_path, op.file_extension, offset)); if (op.overwrite_mode == CopyOverwriteMode::COPY_APPEND) { // when appending, we first check if the file exists @@ -226,6 +233,7 @@ class CopyToFunctionGlobalState : public GlobalSinkState { //! The active writes per partition (for partitioned write) vector_of_value_map_t> active_partitioned_writes; vector_of_value_map_t previous_partitions; + idx_t global_offset = 0; }; string PhysicalCopyToFile::GetTrimmedPath(ClientContext &context) const { diff --git a/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp b/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp index 496adb25b..41f2b9091 100644 --- a/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +++ b/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp @@ -49,7 +49,7 @@ class TableScanGlobalSourceState : public GlobalSourceState { } input_chunk.Initialize(context, input_types); for (idx_t c = 0; c < op.parameters.size(); c++) { - input_chunk.data[c].SetValue(0, op.parameters[c]); + input_chunk.data[c].Reference(op.parameters[c]); } input_chunk.SetCardinality(1); } diff --git a/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp b/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp index 7985b58f2..b6f4125ef 100644 --- a/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +++ b/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp @@ -89,7 +89,7 @@ PhysicalOperator &PhysicalPlanGenerator::PlanComparisonJoin(LogicalComparisonJoi if (can_merge) { // range join: use piecewise merge join return Make(op, left, right, std::move(op.conditions), op.join_type, - op.estimated_cardinality); + op.estimated_cardinality, std::move(op.filter_pushdown)); } if (PhysicalNestedLoopJoin::IsSupported(op.conditions, op.join_type)) { // inequality join: use nested loop diff --git a/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp b/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp index a05bbb5f0..62351a821 100644 --- a/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +++ b/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp @@ -78,6 +78,7 @@ PhysicalOperator &PhysicalPlanGenerator::CreatePlan(LogicalCopyToFile &op) { cast_copy.expected_types = op.expected_types; cast_copy.parallel = mode == CopyFunctionExecutionMode::PARALLEL_COPY_TO_FILE; cast_copy.write_empty_file = op.write_empty_file; + cast_copy.hive_file_pattern = op.hive_file_pattern; cast_copy.children.push_back(plan); return copy; diff --git a/src/duckdb/src/function/cast/default_casts.cpp b/src/duckdb/src/function/cast/default_casts.cpp index d0da44327..41a89ff76 100644 --- a/src/duckdb/src/function/cast/default_casts.cpp +++ b/src/duckdb/src/function/cast/default_casts.cpp @@ -9,6 +9,7 @@ #include "duckdb/common/types/null_value.hpp" #include "duckdb/common/vector_operations/vector_operations.hpp" #include "duckdb/function/cast/vector_cast_helpers.hpp" +#include "duckdb/planner/expression.hpp" namespace duckdb { @@ -33,18 +34,28 @@ bool DefaultCasts::NopCast(Vector &source, Vector &result, idx_t count, CastPara } void HandleCastError::AssignError(const string &error_message, CastParameters ¶meters) { - AssignError(error_message, parameters.error_message, parameters.query_location); + AssignError(error_message, parameters.error_message, parameters.cast_source, parameters.query_location); } -static string UnimplementedCastMessage(const LogicalType &source_type, const LogicalType &target_type) { - return StringUtil::Format("Unimplemented type for cast (%s -> %s)", source_type.ToString(), target_type.ToString()); +void HandleCastError::AssignError(const string &error_message, string *error_message_ptr, + optional_ptr cast_source, optional_idx error_location) { + string column; + if (cast_source && cast_source->HasAlias()) { + column = " when casting from source column " + cast_source->alias; + } + if (!error_message_ptr) { + throw ConversionException(error_location, error_message + column); + } + if (error_message_ptr->empty()) { + *error_message_ptr = error_message + column; + } } // NULL cast only works if all values in source are NULL, otherwise an unimplemented cast exception is thrown bool DefaultCasts::TryVectorNullCast(Vector &source, Vector &result, idx_t count, CastParameters ¶meters) { bool success = true; if (VectorOperations::HasNotNull(source, count)) { - HandleCastError::AssignError(UnimplementedCastMessage(source.GetType(), result.GetType()), parameters); + HandleCastError::AssignError(TryCast::UnimplementedCastMessage(source.GetType(), result.GetType()), parameters); success = false; } result.SetVectorType(VectorType::CONSTANT_VECTOR); diff --git a/src/duckdb/src/function/compression_config.cpp b/src/duckdb/src/function/compression_config.cpp index 8700371fc..c150608ab 100644 --- a/src/duckdb/src/function/compression_config.cpp +++ b/src/duckdb/src/function/compression_config.cpp @@ -30,6 +30,8 @@ static const DefaultCompressionMethod internal_compression_methods[] = { {CompressionType::COMPRESSION_ROARING, RoaringCompressionFun::GetFunction, RoaringCompressionFun::TypeIsSupported}, {CompressionType::COMPRESSION_EMPTY, EmptyValidityCompressionFun::GetFunction, EmptyValidityCompressionFun::TypeIsSupported}, + {CompressionType::COMPRESSION_DICT_FSST, DictFSSTCompressionFun::GetFunction, + DictFSSTCompressionFun::TypeIsSupported}, {CompressionType::COMPRESSION_AUTO, nullptr, nullptr}}; static optional_ptr FindCompressionFunction(CompressionFunctionSet &set, CompressionType type, @@ -89,6 +91,7 @@ vector> DBConfig::GetCompressionFunctions(const P TryLoadCompression(*this, result, CompressionType::COMPRESSION_FSST, physical_type); TryLoadCompression(*this, result, CompressionType::COMPRESSION_ZSTD, physical_type); TryLoadCompression(*this, result, CompressionType::COMPRESSION_ROARING, physical_type); + TryLoadCompression(*this, result, CompressionType::COMPRESSION_DICT_FSST, physical_type); return result; } diff --git a/src/duckdb/src/function/scalar/list/contains_or_position.cpp b/src/duckdb/src/function/scalar/list/contains_or_position.cpp index 309d78c39..aeb90e9c6 100644 --- a/src/duckdb/src/function/scalar/list/contains_or_position.cpp +++ b/src/duckdb/src/function/scalar/list/contains_or_position.cpp @@ -6,14 +6,20 @@ namespace duckdb { -template +template static void ListSearchFunction(DataChunk &input, ExpressionState &state, Vector &result) { + if (result.GetType().id() == LogicalTypeId::SQLNULL) { + result.SetVectorType(VectorType::CONSTANT_VECTOR); + ConstantVector::SetNull(result, true); + return; + } + auto target_count = input.size(); - auto &list_vec = input.data[0]; - auto &source_vec = ListVector::GetEntry(list_vec); - auto &target_vec = input.data[1]; + auto &input_list = input.data[0]; + auto &list_child = ListVector::GetEntry(input_list); + auto &target = input.data[1]; - ListSearchOp(list_vec, source_vec, target_vec, result, target_count); + ListSearchOp(input_list, list_child, target, result, target_count); if (target_count == 1) { result.SetVectorType(VectorType::CONSTANT_VECTOR); @@ -30,6 +36,13 @@ static unique_ptr ListSearchBind(ClientContext &context, ScalarFun const auto &list = arguments[0]->return_type; const auto &value = arguments[1]->return_type; + if (list.id() == LogicalTypeId::SQLNULL) { + bound_function.arguments[0] = LogicalTypeId::UNKNOWN; + bound_function.arguments[1] = LogicalTypeId::UNKNOWN; + bound_function.return_type = LogicalType::SQLNULL; + return make_uniq(bound_function.return_type); + } + const auto list_is_param = list.id() == LogicalTypeId::UNKNOWN; const auto value_is_param = value.id() == LogicalTypeId::UNKNOWN; @@ -54,17 +67,20 @@ static unique_ptr ListSearchBind(ClientContext &context, ScalarFun bound_function.arguments[0] = LogicalType::LIST(max_child_type); bound_function.arguments[1] = max_child_type; } + return make_uniq(bound_function.return_type); } ScalarFunction ListContainsFun::GetFunction() { return ScalarFunction({LogicalType::LIST(LogicalType::ANY), LogicalType::ANY}, LogicalType::BOOLEAN, - ListSearchFunction, ListSearchBind); + ListSearchFunction, ListSearchBind); } ScalarFunction ListPositionFun::GetFunction() { - return ScalarFunction({LogicalType::LIST(LogicalType::ANY), LogicalType::ANY}, LogicalType::INTEGER, - ListSearchFunction, ListSearchBind); + auto fun = ScalarFunction({LogicalType::LIST(LogicalType::ANY), LogicalType::ANY}, LogicalType::INTEGER, + ListSearchFunction, ListSearchBind); + fun.null_handling = FunctionNullHandling::SPECIAL_HANDLING; + return fun; } } // namespace duckdb diff --git a/src/duckdb/src/function/scalar/map/map_contains.cpp b/src/duckdb/src/function/scalar/map/map_contains.cpp index 068e67bc7..ebc6edb5f 100644 --- a/src/duckdb/src/function/scalar/map/map_contains.cpp +++ b/src/duckdb/src/function/scalar/map/map_contains.cpp @@ -11,7 +11,7 @@ static void MapContainsFunction(DataChunk &input, ExpressionState &state, Vector auto &key_vec = MapVector::GetKeys(map_vec); auto &arg_vec = input.data[1]; - ListSearchOp(map_vec, key_vec, arg_vec, result, count); + ListSearchOp(map_vec, key_vec, arg_vec, result, count); if (count == 1) { result.SetVectorType(VectorType::CONSTANT_VECTOR); diff --git a/src/duckdb/src/function/scalar/string/md5.cpp b/src/duckdb/src/function/scalar/string/md5.cpp index 837f97c12..03097ba79 100644 --- a/src/duckdb/src/function/scalar/string/md5.cpp +++ b/src/duckdb/src/function/scalar/string/md5.cpp @@ -26,7 +26,7 @@ struct MD5Number128Operator { MD5Context context; context.Add(input); context.Finish(digest); - return *reinterpret_cast(digest); + return *reinterpret_cast(digest); } }; @@ -39,7 +39,7 @@ static void MD5Function(DataChunk &args, ExpressionState &state, Vector &result) static void MD5NumberFunction(DataChunk &args, ExpressionState &state, Vector &result) { auto &input = args.data[0]; - UnaryExecutor::Execute(input, result, args.size()); + UnaryExecutor::Execute(input, result, args.size()); } ScalarFunctionSet MD5Fun::GetFunctions() { @@ -51,8 +51,8 @@ ScalarFunctionSet MD5Fun::GetFunctions() { ScalarFunctionSet MD5NumberFun::GetFunctions() { ScalarFunctionSet set("md5_number"); - set.AddFunction(ScalarFunction({LogicalType::VARCHAR}, LogicalType::HUGEINT, MD5NumberFunction)); - set.AddFunction(ScalarFunction({LogicalType::BLOB}, LogicalType::HUGEINT, MD5NumberFunction)); + set.AddFunction(ScalarFunction({LogicalType::VARCHAR}, LogicalType::UHUGEINT, MD5NumberFunction)); + set.AddFunction(ScalarFunction({LogicalType::BLOB}, LogicalType::UHUGEINT, MD5NumberFunction)); return set; } diff --git a/src/duckdb/src/function/table/range.cpp b/src/duckdb/src/function/table/range.cpp index 7fd16a34e..e62dd511e 100644 --- a/src/duckdb/src/function/table/range.cpp +++ b/src/duckdb/src/function/table/range.cpp @@ -2,8 +2,8 @@ #include "duckdb/function/table/summary.hpp" #include "duckdb/function/table_function.hpp" #include "duckdb/function/function_set.hpp" -#include "duckdb/common/algorithm.hpp" #include "duckdb/common/operator/add.hpp" +#include "duckdb/common/operator/subtract.hpp" #include "duckdb/common/types/timestamp.hpp" namespace duckdb { @@ -29,7 +29,7 @@ static void GetParameters(int64_t values[], idx_t value_count, hugeint_t &start, } struct RangeFunctionBindData : public TableFunctionData { - explicit RangeFunctionBindData(const vector &inputs) : cardinality(0) { + explicit RangeFunctionBindData(const vector &inputs, bool generate_series) : cardinality(0) { int64_t values[3]; for (idx_t i = 0; i < inputs.size(); i++) { if (inputs[i].IsNull()) { @@ -41,7 +41,15 @@ struct RangeFunctionBindData : public TableFunctionData { hugeint_t end; hugeint_t increment; GetParameters(values, inputs.size(), start, end, increment); + if (generate_series) { + // generate_series has inclusive bounds on the RHS + end += 1; + } + cardinality = Hugeint::Cast((end - start) / increment); + if ((end - start) % increment != 0) { + cardinality += 1; + } } idx_t cardinality; @@ -59,7 +67,7 @@ static unique_ptr RangeFunctionBind(ClientContext &context, TableF if (input.inputs.empty() || input.inputs.size() > 3) { return nullptr; } - return make_uniq(input.inputs); + return make_uniq(input.inputs, GENERATE_SERIES); } struct RangeFunctionLocalState : public LocalTableFunctionState { @@ -105,6 +113,7 @@ static void GenerateRangeParameters(DataChunk &input, idx_t row_id, RangeFunctio if (result.increment == 0) { throw BinderException("interval cannot be 0!"); } + result.empty_range = false; if (result.start > result.end && result.increment > 0) { result.empty_range = true; } @@ -184,6 +193,36 @@ unique_ptr RangeCardinality(ClientContext &context, const Functi //===--------------------------------------------------------------------===// // Range (timestamp) //===--------------------------------------------------------------------===// +struct RangeDateTimeBindData : public TableFunctionData { + explicit RangeDateTimeBindData(const vector &inputs) : cardinality(0) { + timestamp_t bounds[2]; + interval_t step; + for (idx_t i = 0; i < inputs.size(); i++) { + if (inputs[i].IsNull()) { + return; + } + if (i >= 2) { + step = inputs[i].GetValue(); + } else { + bounds[i] = inputs[i].GetValue(); + } + } + // Estimate cardinality using micros. + int64_t increment = 0; + if (!Interval::TryGetMicro(step, increment) || !increment) { + return; + } + int64_t delta = 0; + if (!TrySubtractOperator::Operation(bounds[1].value, bounds[0].value, delta)) { + return; + } + + cardinality = idx_t(delta / increment); + } + + idx_t cardinality; +}; + template static unique_ptr RangeDateTimeBind(ClientContext &context, TableFunctionBindInput &input, vector &return_types, vector &names) { @@ -193,7 +232,18 @@ static unique_ptr RangeDateTimeBind(ClientContext &context, TableF } else { names.emplace_back("range"); } - return nullptr; + if (input.inputs.size() != 3) { + return nullptr; + } + return make_uniq(input.inputs); +} + +unique_ptr RangeDateTimeCardinality(ClientContext &context, const FunctionData *bind_data_p) { + if (!bind_data_p) { + return nullptr; + } + auto &bind_data = bind_data_p->Cast(); + return make_uniq(bind_data.cardinality, bind_data.cardinality); } struct RangeDateTimeLocalState : public LocalTableFunctionState { @@ -347,6 +397,7 @@ void RangeTableFunction::RegisterFunction(BuiltinFunctions &set) { TableFunction range_in_out({LogicalType::TIMESTAMP, LogicalType::TIMESTAMP, LogicalType::INTERVAL}, nullptr, RangeDateTimeBind, nullptr, RangeDateTimeLocalInit); range_in_out.in_out_function = RangeDateTimeFunction; + range_in_out.cardinality = RangeDateTimeCardinality; range.AddFunction(range_in_out); set.AddFunction(range); // generate_series: similar to range, but inclusive instead of exclusive bounds on the RHS diff --git a/src/duckdb/src/function/table/version/pragma_version.cpp b/src/duckdb/src/function/table/version/pragma_version.cpp index 2d7c66326..8f8a89f7e 100644 --- a/src/duckdb/src/function/table/version/pragma_version.cpp +++ b/src/duckdb/src/function/table/version/pragma_version.cpp @@ -1,5 +1,5 @@ #ifndef DUCKDB_PATCH_VERSION -#define DUCKDB_PATCH_VERSION "0-dev2947" +#define DUCKDB_PATCH_VERSION "0-dev3269" #endif #ifndef DUCKDB_MINOR_VERSION #define DUCKDB_MINOR_VERSION 3 @@ -8,10 +8,10 @@ #define DUCKDB_MAJOR_VERSION 1 #endif #ifndef DUCKDB_VERSION -#define DUCKDB_VERSION "v1.3.0-dev2947" +#define DUCKDB_VERSION "v1.3.0-dev3269" #endif #ifndef DUCKDB_SOURCE_ID -#define DUCKDB_SOURCE_ID "885d2b4e8d" +#define DUCKDB_SOURCE_ID "e144689926" #endif #include "duckdb/function/table/system_functions.hpp" #include "duckdb/main/database.hpp" diff --git a/src/duckdb/src/function/window/window_value_function.cpp b/src/duckdb/src/function/window/window_value_function.cpp index 63cbc9d5d..1efaa5a99 100644 --- a/src/duckdb/src/function/window/window_value_function.cpp +++ b/src/duckdb/src/function/window/window_value_function.cpp @@ -309,15 +309,20 @@ void WindowLeadLagExecutor::EvaluateInternal(WindowExecutorGlobalState &gstate, frames.resize(1); auto &frame = frames[0]; for (idx_t i = 0; i < count; ++i, ++row_idx) { + int64_t offset = 1; + if (wexpr.offset_expr) { + if (leadlag_offset.CellIsNull(i)) { + FlatVector::SetNull(result, i, true); + continue; + } + offset = leadlag_offset.GetCell(i); + } + // (1) compute the ROW_NUMBER of the own row frame = FrameBounds(frame_begin[i], frame_end[i]); const auto own_row = glstate.row_tree->Rank(frame.start, frame.end, row_idx) - 1; // (2) adjust the row number by adding or subtracting an offset auto val_idx = NumericCast(own_row); - int64_t offset = 1; - if (wexpr.offset_expr) { - offset = leadlag_offset.GetCell(i); - } if (wexpr.GetExpressionType() == ExpressionType::WINDOW_LEAD) { val_idx = AddOperatorOverflowCheck::Operation(val_idx, offset); } else { @@ -368,6 +373,12 @@ void WindowLeadLagExecutor::EvaluateInternal(WindowExecutorGlobalState &gstate, for (idx_t i = 0; i < count;) { int64_t offset = 1; if (wexpr.offset_expr) { + if (leadlag_offset.CellIsNull(i)) { + FlatVector::SetNull(result, i, true); + ++i; + ++row_idx; + continue; + } offset = leadlag_offset.GetCell(i); } int64_t val_idx = (int64_t)row_idx; diff --git a/src/duckdb/src/include/duckdb.h b/src/duckdb/src/include/duckdb.h index 50e45ab10..bd80d505b 100644 --- a/src/duckdb/src/include/duckdb.h +++ b/src/duckdb/src/include/duckdb.h @@ -1610,7 +1610,7 @@ Returns the statement type of the statement to be executed DUCKDB_C_API duckdb_statement_type duckdb_prepared_statement_type(duckdb_prepared_statement statement); //===--------------------------------------------------------------------===// -// Bind Values To Prepared Statements +// Bind Values to Prepared Statements //===--------------------------------------------------------------------===// /*! diff --git a/src/duckdb/src/include/duckdb/catalog/catalog.hpp b/src/duckdb/src/include/duckdb/catalog/catalog.hpp index c200512f1..a03736594 100644 --- a/src/duckdb/src/include/duckdb/catalog/catalog.hpp +++ b/src/duckdb/src/include/duckdb/catalog/catalog.hpp @@ -373,6 +373,9 @@ class Catalog { static bool AutoLoadExtensionByCatalogEntry(DatabaseInstance &db, CatalogType type, const string &entry_name); DUCKDB_API static bool TryAutoLoad(ClientContext &context, const string &extension_name) noexcept; + //! Called when the catalog is detached + DUCKDB_API virtual void OnDetach(ClientContext &context); + protected: //! Reference to the database AttachedDatabase &db; diff --git a/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp b/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp index 67837c8db..a32df7bad 100644 --- a/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +++ b/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp @@ -57,7 +57,7 @@ class CatalogEntry { //! (optional) comment on this entry Value comment; //! (optional) extra data associated with this entry - unordered_map tags; + InsertionOrderPreservingMap tags; private: //! Child entry diff --git a/src/duckdb/src/include/duckdb/common/column_index.hpp b/src/duckdb/src/include/duckdb/common/column_index.hpp index a563005f4..b7bc3ae97 100644 --- a/src/duckdb/src/include/duckdb/common/column_index.hpp +++ b/src/duckdb/src/include/duckdb/common/column_index.hpp @@ -59,7 +59,10 @@ struct ColumnIndex { this->child_indexes.push_back(std::move(new_index)); } bool IsRowIdColumn() const { - return index == DConstants::INVALID_INDEX; + return index == COLUMN_IDENTIFIER_ROW_ID; + } + bool IsEmptyColumn() const { + return index == COLUMN_IDENTIFIER_EMPTY; } bool IsVirtualColumn() const { return index >= VIRTUAL_COLUMN_START; diff --git a/src/duckdb/src/include/duckdb/common/enum_util.hpp b/src/duckdb/src/include/duckdb/common/enum_util.hpp index 6b444a50f..5dd4c01ff 100644 --- a/src/duckdb/src/include/duckdb/common/enum_util.hpp +++ b/src/duckdb/src/include/duckdb/common/enum_util.hpp @@ -178,6 +178,8 @@ enum class FileGlobOptions : uint8_t; enum class FileLockType : uint8_t; +enum class FileNameSegmentType : uint8_t; + enum class FilterPropagateResult : uint8_t; enum class ForeignKeyType : uint8_t; @@ -208,6 +210,10 @@ enum class JoinType : uint8_t; enum class KeywordCategory : uint8_t; +enum class LambdaSyntax : uint8_t; + +enum class LambdaSyntaxType : uint8_t; + enum class LimitNodeType : uint8_t; enum class LoadType : uint8_t; @@ -622,6 +628,9 @@ const char* EnumUtil::ToChars(FileGlobOptions value); template<> const char* EnumUtil::ToChars(FileLockType value); +template<> +const char* EnumUtil::ToChars(FileNameSegmentType value); + template<> const char* EnumUtil::ToChars(FilterPropagateResult value); @@ -667,6 +676,12 @@ const char* EnumUtil::ToChars(JoinType value); template<> const char* EnumUtil::ToChars(KeywordCategory value); +template<> +const char* EnumUtil::ToChars(LambdaSyntax value); + +template<> +const char* EnumUtil::ToChars(LambdaSyntaxType value); + template<> const char* EnumUtil::ToChars(LimitNodeType value); @@ -1178,6 +1193,9 @@ FileGlobOptions EnumUtil::FromString(const char *value); template<> FileLockType EnumUtil::FromString(const char *value); +template<> +FileNameSegmentType EnumUtil::FromString(const char *value); + template<> FilterPropagateResult EnumUtil::FromString(const char *value); @@ -1223,6 +1241,12 @@ JoinType EnumUtil::FromString(const char *value); template<> KeywordCategory EnumUtil::FromString(const char *value); +template<> +LambdaSyntax EnumUtil::FromString(const char *value); + +template<> +LambdaSyntaxType EnumUtil::FromString(const char *value); + template<> LimitNodeType EnumUtil::FromString(const char *value); diff --git a/src/duckdb/src/include/duckdb/common/enums/compression_type.hpp b/src/duckdb/src/include/duckdb/common/enums/compression_type.hpp index a8753f12b..1dda5ee64 100644 --- a/src/duckdb/src/include/duckdb/common/enums/compression_type.hpp +++ b/src/duckdb/src/include/duckdb/common/enums/compression_type.hpp @@ -10,9 +10,12 @@ #include "duckdb/common/constants.hpp" #include "duckdb/common/vector.hpp" +#include "duckdb/common/optional_ptr.hpp" namespace duckdb { +class StorageManager; + enum class CompressionType : uint8_t { COMPRESSION_AUTO = 0, COMPRESSION_UNCOMPRESSED = 1, @@ -29,10 +32,12 @@ enum class CompressionType : uint8_t { COMPRESSION_ZSTD = 12, COMPRESSION_ROARING = 13, COMPRESSION_EMPTY = 14, // internal only - COMPRESSION_COUNT // This has to stay the last entry of the type! + COMPRESSION_DICT_FSST = 15, + COMPRESSION_COUNT // This has to stay the last entry of the type! }; -bool CompressionTypeIsDeprecated(CompressionType compression_type); +bool CompressionTypeIsDeprecated(CompressionType compression_type, + optional_ptr storage_manager = nullptr); vector ListCompressionTypes(void); CompressionType CompressionTypeFromString(const string &str); string CompressionTypeToString(CompressionType type); diff --git a/src/duckdb/src/include/duckdb/common/exception.hpp b/src/duckdb/src/include/duckdb/common/exception.hpp index ab6c73f75..480dd2385 100644 --- a/src/duckdb/src/include/duckdb/common/exception.hpp +++ b/src/duckdb/src/include/duckdb/common/exception.hpp @@ -192,6 +192,9 @@ class OutOfMemoryException : public Exception { explicit OutOfMemoryException(const string &msg, ARGS... params) : OutOfMemoryException(ConstructMessage(msg, params...)) { } + +private: + string ExtendOutOfMemoryError(const string &msg); }; class SyntaxException : public Exception { diff --git a/src/duckdb/src/include/duckdb/common/file_system.hpp b/src/duckdb/src/include/duckdb/common/file_system.hpp index cd60c785d..c32632ded 100644 --- a/src/duckdb/src/include/duckdb/common/file_system.hpp +++ b/src/duckdb/src/include/duckdb/common/file_system.hpp @@ -165,6 +165,8 @@ class FileSystem { DUCKDB_API virtual bool ListFiles(const string &directory, const std::function &callback, FileOpener *opener = nullptr); + DUCKDB_API bool ListFiles(const string &directory, const std::function &callback, + optional_ptr opener = nullptr); //! Move a file from source path to the target, StorageManager relies on this being an atomic action for ACID //! properties @@ -265,11 +267,18 @@ class FileSystem { DUCKDB_API virtual void SetDisabledFileSystems(const vector &names); + DUCKDB_API static bool IsDirectory(const OpenFileInfo &info); + protected: DUCKDB_API virtual unique_ptr OpenFileExtended(const OpenFileInfo &path, FileOpenFlags flags, optional_ptr opener); DUCKDB_API virtual bool SupportsOpenFileExtended() const; + DUCKDB_API virtual bool ListFilesExtended(const string &directory, + const std::function &callback, + optional_ptr opener); + DUCKDB_API virtual bool SupportsListFilesExtended() const; + public: template TARGET &Cast() { diff --git a/src/duckdb/src/include/duckdb/common/filename_pattern.hpp b/src/duckdb/src/include/duckdb/common/filename_pattern.hpp index 4ec3827f5..9c7911d8d 100644 --- a/src/duckdb/src/include/duckdb/common/filename_pattern.hpp +++ b/src/duckdb/src/include/duckdb/common/filename_pattern.hpp @@ -16,12 +16,25 @@ namespace duckdb { class Serializer; class Deserializer; -class FilenamePattern { - friend Deserializer; +enum class FileNameSegmentType : uint8_t { LITERAL, UUID_V4, UUID_V7, OFFSET }; + +struct FileNameSegment { + FileNameSegment() = default; + explicit FileNameSegment(string data); + explicit FileNameSegment(FileNameSegmentType type); + + FileNameSegmentType type; + string data; + +public: + void Serialize(Serializer &serializer) const; + static FileNameSegment Deserialize(Deserializer &deserializer); +}; +class FilenamePattern { public: - FilenamePattern() : base("data_"), pos(base.length()), uuid(false) { - } + FilenamePattern(); + FilenamePattern(string base, idx_t pos, bool uuid, vector segments); public: void SetFilenamePattern(const string &pattern); @@ -30,14 +43,16 @@ class FilenamePattern { void Serialize(Serializer &serializer) const; static FilenamePattern Deserialize(Deserializer &deserializer); - bool HasUUID() const { - return uuid; - } + bool HasUUID() const; + +public: + // serialization code for backwards compatibility + string SerializeBase() const; + idx_t SerializePos() const; + vector SerializeSegments() const; private: - string base; - idx_t pos; - bool uuid; + vector segments; }; } // namespace duckdb diff --git a/src/duckdb/src/include/duckdb/common/helper.hpp b/src/duckdb/src/include/duckdb/common/helper.hpp index b75b354a3..0c9a836ab 100644 --- a/src/duckdb/src/include/duckdb/common/helper.hpp +++ b/src/duckdb/src/include/duckdb/common/helper.hpp @@ -195,16 +195,16 @@ T AbsValue(T a) { return a < 0 ? -a : a; } -//! Align value (ceiling) -template +//! Align value (ceiling) (not for pointer types) +template::value>::type> static inline T AlignValue(T n) { return ((n + (val - 1)) / val) * val; } -template -inline data_ptr_t AlignValue(data_ptr_t addr) { +template +inline T *AlignPointer(T *addr) { static_assert((alignment & (alignment - 1)) == 0, "'alignment' has to be a power of 2"); - return reinterpret_cast((reinterpret_cast(addr) + alignment - 1) & ~(alignment - 1)); + return reinterpret_cast((reinterpret_cast(addr) + alignment - 1) & ~(alignment - 1)); } template diff --git a/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp b/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp index fe694f362..7240d62d8 100644 --- a/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp +++ b/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp @@ -147,6 +147,14 @@ class InsertionOrderPreservingMap { } return map[map_idx[key]].second; } + + bool operator==(const InsertionOrderPreservingMap &other) const { + return map == other.map && map_idx == other.map_idx; + } + + bool operator!=(const InsertionOrderPreservingMap &other) const { + return !(*this == other); + } }; } // namespace duckdb diff --git a/src/duckdb/src/include/duckdb/common/local_file_system.hpp b/src/duckdb/src/include/duckdb/common/local_file_system.hpp index 259b42561..7cc8d8d54 100644 --- a/src/duckdb/src/include/duckdb/common/local_file_system.hpp +++ b/src/duckdb/src/include/duckdb/common/local_file_system.hpp @@ -50,9 +50,6 @@ class LocalFileSystem : public FileSystem { void CreateDirectory(const string &directory, optional_ptr opener = nullptr) override; //! Recursively remove a directory and all files in it void RemoveDirectory(const string &directory, optional_ptr opener = nullptr) override; - //! List files in a directory, invoking the callback method for each one with (filename, is_dir) - bool ListFiles(const string &directory, const std::function &callback, - FileOpener *opener = nullptr) override; //! Move a file from source path to the target, StorageManager relies on this being an atomic action for ACID //! properties void MoveFile(const string &source, const string &target, optional_ptr opener = nullptr) override; @@ -99,6 +96,14 @@ class LocalFileSystem : public FileSystem { // returns a C-string of the path that trims any file:/ prefix static const char *NormalizeLocalPath(const string &path); +protected: + bool ListFilesExtended(const string &directory, const std::function &callback, + optional_ptr opener) override; + + bool SupportsListFilesExtended() const override { + return true; + } + private: //! Set the file pointer of a file handle to a specified location. Reads and writes will happen from this location void SetFilePointer(FileHandle &handle, idx_t location); diff --git a/src/duckdb/src/include/duckdb/common/opener_file_system.hpp b/src/duckdb/src/include/duckdb/common/opener_file_system.hpp index 559d42d9f..26c72bcb7 100644 --- a/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +++ b/src/duckdb/src/include/duckdb/common/opener_file_system.hpp @@ -76,13 +76,6 @@ class OpenerFileSystem : public FileSystem { return GetFileSystem().RemoveDirectory(directory, GetOpener()); } - bool ListFiles(const string &directory, const std::function &callback, - FileOpener *opener = nullptr) override { - VerifyNoOpener(opener); - VerifyCanAccessDirectory(directory); - return GetFileSystem().ListFiles(directory, callback, GetOpener().get()); - } - void MoveFile(const string &source, const string &target, optional_ptr opener) override { VerifyNoOpener(opener); VerifyCanAccessFile(source); @@ -160,6 +153,17 @@ class OpenerFileSystem : public FileSystem { return true; } + bool ListFilesExtended(const string &directory, const std::function &callback, + optional_ptr opener) override { + VerifyNoOpener(opener); + VerifyCanAccessDirectory(directory); + return GetFileSystem().ListFiles(directory, callback, GetOpener().get()); + } + + bool SupportsListFilesExtended() const override { + return true; + } + private: void VerifyCanAccessFileInternal(const string &path, FileType type); }; diff --git a/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp b/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp index d86b29d9c..e72686cdd 100644 --- a/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +++ b/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp @@ -29,25 +29,27 @@ struct ValidityMask; class Vector; struct TryCast { + static ConversionException UnimplementedErrorMessage(PhysicalType source, PhysicalType target, + optional_ptr parameters); + static string UnimplementedCastMessage(const LogicalType &source, const LogicalType &target); + template static inline bool Operation(SRC input, DST &result, bool strict = false) { - throw NotImplementedException("Unimplemented type for cast (%s -> %s)", GetTypeId(), GetTypeId()); + throw UnimplementedErrorMessage(GetTypeId(), GetTypeId(), nullptr); } }; struct TryCastErrorMessage { template static inline bool Operation(SRC input, DST &result, CastParameters ¶meters) { - throw NotImplementedException(parameters.query_location, "Unimplemented type for cast (%s -> %s)", - GetTypeId(), GetTypeId()); + throw TryCast::UnimplementedErrorMessage(GetTypeId(), GetTypeId(), parameters); } }; struct TryCastErrorMessageCommaSeparated { template static inline bool Operation(SRC input, DST &result, CastParameters ¶meters) { - throw NotImplementedException(parameters.query_location, "Unimplemented type for cast (%s -> %s)", - GetTypeId(), GetTypeId()); + throw TryCast::UnimplementedErrorMessage(GetTypeId(), GetTypeId(), parameters); } }; @@ -80,14 +82,8 @@ struct Cast { struct HandleCastError { static void AssignError(const string &error_message, CastParameters ¶meters); static void AssignError(const string &error_message, string *error_message_ptr, - optional_idx error_location = optional_idx()) { - if (!error_message_ptr) { - throw ConversionException(error_location, error_message); - } - if (error_message_ptr->empty()) { - *error_message_ptr = error_message; - } - } + optional_ptr cast_source = nullptr, + optional_idx error_location = optional_idx()); }; //===--------------------------------------------------------------------===// diff --git a/src/duckdb/src/include/duckdb/common/optional_idx.hpp b/src/duckdb/src/include/duckdb/common/optional_idx.hpp index fc88f8234..53a74ab15 100644 --- a/src/duckdb/src/include/duckdb/common/optional_idx.hpp +++ b/src/duckdb/src/include/duckdb/common/optional_idx.hpp @@ -47,6 +47,10 @@ class optional_idx { return index == rhs.index; } + inline bool operator!=(const optional_idx &rhs) const { + return index != rhs.index; + } + private: idx_t index; }; diff --git a/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp b/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp index 2d32e72fe..54b1677e0 100644 --- a/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +++ b/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp @@ -23,7 +23,7 @@ namespace duckdb { //! NumericHelper is a static class that holds helper functions for integers/doubles class NumericHelper { public: - static constexpr uint8_t CACHED_POWERS_OF_TEN = 20; + static constexpr uint8_t CACHED_POWERS_OF_TEN = 19; static const int64_t POWERS_OF_TEN[CACHED_POWERS_OF_TEN]; static const double DOUBLE_POWERS_OF_TEN[40]; diff --git a/src/duckdb/src/include/duckdb/common/types/hugeint.hpp b/src/duckdb/src/include/duckdb/common/types/hugeint.hpp index 328c2ce15..d614dc6c7 100644 --- a/src/duckdb/src/include/duckdb/common/types/hugeint.hpp +++ b/src/duckdb/src/include/duckdb/common/types/hugeint.hpp @@ -171,7 +171,8 @@ class Hugeint { return upper_smaller | (upper_equal & lower_smaller_equals); } - static const hugeint_t POWERS_OF_TEN[40]; + static constexpr uint8_t CACHED_POWERS_OF_TEN = 39; + static const hugeint_t POWERS_OF_TEN[CACHED_POWERS_OF_TEN]; }; template <> diff --git a/src/duckdb/src/include/duckdb/common/types/interval.hpp b/src/duckdb/src/include/duckdb/common/types/interval.hpp index 23c9b2052..5c1ec3d5a 100644 --- a/src/duckdb/src/include/duckdb/common/types/interval.hpp +++ b/src/duckdb/src/include/duckdb/common/types/interval.hpp @@ -140,6 +140,7 @@ class Interval { static int64_t GetMilli(const interval_t &val); //! Get Interval in microseconds + static bool TryGetMicro(const interval_t &val, int64_t µs); static int64_t GetMicro(const interval_t &val); //! Get Interval in Nanoseconds diff --git a/src/duckdb/src/include/duckdb/common/types/timestamp.hpp b/src/duckdb/src/include/duckdb/common/types/timestamp.hpp index 57835db22..a930b44a0 100644 --- a/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +++ b/src/duckdb/src/include/duckdb/common/types/timestamp.hpp @@ -218,6 +218,8 @@ class Timestamp { //! Decompose a timestamp into its components DUCKDB_API static TimestampComponents GetComponents(timestamp_t timestamp); + DUCKDB_API static time_t ToTimeT(timestamp_t); + DUCKDB_API static timestamp_t FromTimeT(time_t); DUCKDB_API static bool TryParseUTCOffset(const char *str, idx_t &pos, idx_t len, int &hh, int &mm, int &ss); diff --git a/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp b/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp index b38df8dd9..5f98d5f58 100644 --- a/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp +++ b/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp @@ -160,7 +160,8 @@ class Uhugeint { return upper_smaller | (upper_equal & lower_smaller_equals); } - static const uhugeint_t POWERS_OF_TEN[40]; + static constexpr uint8_t CACHED_POWERS_OF_TEN = 39; + static const uhugeint_t POWERS_OF_TEN[CACHED_POWERS_OF_TEN]; }; template <> diff --git a/src/duckdb/src/include/duckdb/common/types/value.hpp b/src/duckdb/src/include/duckdb/common/types/value.hpp index fa450abff..309f8221f 100644 --- a/src/duckdb/src/include/duckdb/common/types/value.hpp +++ b/src/duckdb/src/include/duckdb/common/types/value.hpp @@ -18,6 +18,7 @@ #include "duckdb/common/types/datetime.hpp" #include "duckdb/common/types/interval.hpp" #include "duckdb/common/shared_ptr.hpp" +#include "duckdb/common/insertion_order_preserving_map.hpp" namespace duckdb { @@ -176,7 +177,7 @@ class Value { DUCKDB_API static Value MAP(const LogicalType &key_type, const LogicalType &value_type, vector keys, vector values); //! Create a map value from a set of key-value pairs - DUCKDB_API static Value MAP(const unordered_map &kv_pairs); + DUCKDB_API static Value MAP(const InsertionOrderPreservingMap &kv_pairs); //! Create a union value from a selected value and a tag from a set of alternatives. DUCKDB_API static Value UNION(child_list_t members, uint8_t tag, Value value); diff --git a/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp b/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp index 75620e909..7cd921777 100644 --- a/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +++ b/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp @@ -18,6 +18,7 @@ namespace duckdb { class VirtualFileSystem : public FileSystem { public: VirtualFileSystem(); + explicit VirtualFileSystem(unique_ptr &&inner_file_system); void Read(FileHandle &handle, void *buffer, int64_t nr_bytes, idx_t location) override; void Write(FileHandle &handle, void *buffer, int64_t nr_bytes, idx_t location) override; @@ -41,9 +42,6 @@ class VirtualFileSystem : public FileSystem { void RemoveDirectory(const string &directory, optional_ptr opener) override; - bool ListFiles(const string &directory, const std::function &callback, - FileOpener *opener = nullptr) override; - void MoveFile(const string &source, const string &target, optional_ptr opener) override; bool FileExists(const string &filename, optional_ptr opener) override; @@ -76,6 +74,13 @@ class VirtualFileSystem : public FileSystem { return true; } + bool ListFilesExtended(const string &directory, const std::function &callback, + optional_ptr opener) override; + + bool SupportsListFilesExtended() const override { + return true; + } + private: FileSystem &FindFileSystem(const string &path); FileSystem &FindFileSystemInternal(const string &path); diff --git a/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp b/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp index fc74fad44..e5ad31c6f 100644 --- a/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +++ b/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp @@ -81,6 +81,7 @@ class JoinHashTable { JoinHashTable &ht; bool finished; bool is_null; + bool has_null_value_filter = false; // it records the RHS pointers for the result chunk Vector rhs_pointers; @@ -139,21 +140,17 @@ class JoinHashTable { struct SharedState { SharedState(); - // The ptrs to the row to which a key should be inserted into during building - // or matched against during probing - Vector rhs_row_locations; Vector salt_v; - SelectionVector salt_match_sel; - SelectionVector key_no_match_sel; + SelectionVector keys_to_compare_sel; + SelectionVector keys_no_match_sel; }; struct ProbeState : SharedState { ProbeState(); Vector ht_offsets_v; - Vector ht_offsets_dense_v; - + Vector hashes_dense_v; SelectionVector non_empty_sel; }; @@ -163,6 +160,10 @@ class JoinHashTable { SelectionVector remaining_sel; SelectionVector key_match_sel; + // The ptrs to the row to which a key should be inserted into during building + // or matched against during probing + Vector rhs_row_locations; + DataChunk lhs_data; TupleDataChunkState chunk_state; }; @@ -298,8 +299,8 @@ class JoinHashTable { //! Gets a pointer to the entry in the HT for each of the hashes_v using linear probing. Will update the //! key_match_sel vector and the count argument to the number and position of the matches void GetRowPointers(DataChunk &keys, TupleDataChunkState &key_state, ProbeState &state, Vector &hashes_v, - const SelectionVector &sel, idx_t &count, Vector &pointers_result_v, - SelectionVector &match_sel); + const SelectionVector *sel, idx_t &count, Vector &pointers_result_v, SelectionVector &match_sel, + bool has_sel); private: //! Insert the given set of locations into the HT with the given set of hashes_v diff --git a/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp b/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp index 05080e326..1d015a1d3 100644 --- a/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +++ b/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp @@ -23,7 +23,8 @@ class PhysicalPiecewiseMergeJoin : public PhysicalRangeJoin { public: PhysicalPiecewiseMergeJoin(LogicalComparisonJoin &op, PhysicalOperator &left, PhysicalOperator &right, - vector cond, JoinType join_type, idx_t estimated_cardinality); + vector cond, JoinType join_type, idx_t estimated_cardinality, + unique_ptr pushdown_info); vector join_key_types; vector lhs_orders; diff --git a/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp b/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp index ab5c71a6d..ea3fe6001 100644 --- a/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +++ b/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp @@ -52,6 +52,7 @@ class PhysicalCopyToFile : public PhysicalOperator { bool partition_output; bool write_partition_columns; bool write_empty_file; + bool hive_file_pattern; vector partition_columns; vector names; vector expected_types; diff --git a/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp b/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp index a8e486a98..416748c84 100644 --- a/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +++ b/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp @@ -75,6 +75,10 @@ struct CastParameters { bool strict = false; // out: error message in case cast has failed string *error_message = nullptr; + //! Source expression + optional_ptr cast_source; + //! Target expression + optional_ptr cast_target; //! Local state optional_ptr local_state; //! Query location (if any) diff --git a/src/duckdb/src/include/duckdb/function/compression/compression.hpp b/src/duckdb/src/include/duckdb/function/compression/compression.hpp index adf5364b7..337b0d19c 100644 --- a/src/duckdb/src/include/duckdb/function/compression/compression.hpp +++ b/src/duckdb/src/include/duckdb/function/compression/compression.hpp @@ -38,6 +38,11 @@ struct DictionaryCompressionFun { static bool TypeIsSupported(const PhysicalType physical_type); }; +struct DictFSSTCompressionFun { + static CompressionFunction GetFunction(PhysicalType type); + static bool TypeIsSupported(const PhysicalType physical_type); +}; + struct ChimpCompressionFun { static CompressionFunction GetFunction(PhysicalType type); static bool TypeIsSupported(const PhysicalType physical_type); diff --git a/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp b/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp index 1c091e7da..3392e67a4 100644 --- a/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +++ b/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp @@ -4,47 +4,92 @@ namespace duckdb { -template -idx_t ListSearchSimpleOp(Vector &list_vec, Vector &source_vec, Vector &target_vec, Vector &result, idx_t count) { +template +idx_t ListSearchSimpleOp(Vector &input_list, Vector &list_child, Vector &target, Vector &result, const idx_t count) { + // If the return type is not a bool, return the position + const auto return_pos = std::is_same::value; - UnifiedVectorFormat source_format; - const auto source_count = ListVector::GetListSize(list_vec); - source_vec.ToUnifiedFormat(source_count, source_format); - const auto source_data = UnifiedVectorFormat::GetData(source_format); + const auto input_count = ListVector::GetListSize(input_list); - using RETURN_TYPE = typename std::conditional::type; + UnifiedVectorFormat list_format; + input_list.ToUnifiedFormat(count, list_format); + const auto list_entries = UnifiedVectorFormat::GetData(list_format); + + UnifiedVectorFormat child_format; + list_child.ToUnifiedFormat(input_count, child_format); + const auto child_data = UnifiedVectorFormat::GetData(child_format); + + UnifiedVectorFormat target_format; + target.ToUnifiedFormat(count, target_format); + const auto target_data = UnifiedVectorFormat::GetData(target_format); + + result.SetVectorType(VectorType::FLAT_VECTOR); + auto result_data = FlatVector::GetData(result); + auto &result_validity = FlatVector::Validity(result); idx_t total_matches = 0; - BinaryExecutor::ExecuteWithNulls( - list_vec, target_vec, result, count, - [&](const list_entry_t &list, const T &target, ValidityMask &validity, idx_t out_idx) -> RETURN_TYPE { - if (list.length == 0) { - if (RETURN_POSITION) { - validity.SetInvalid(out_idx); - } - return 0; - } - - for (auto i = list.offset; i < list.offset + list.length; i++) { - const auto entry_idx = source_format.sel->get_index(i); - if (source_format.validity.RowIsValid(entry_idx) && - Equals::Operation(source_data[entry_idx], target)) { - total_matches++; - return RETURN_POSITION ? UnsafeNumericCast(1 + i - list.offset) : 1; - } - } - - if (RETURN_POSITION) { - validity.SetInvalid(out_idx); - } - return 0; - }); + for (idx_t row_idx = 0; row_idx < count; ++row_idx) { + const auto list_entry_idx = list_format.sel->get_index(row_idx); + + // The entire list is NULL, the result is also NULL. + if (!list_format.validity.RowIsValid(list_entry_idx)) { + result_validity.SetInvalid(row_idx); + continue; + } + + const auto target_entry_idx = target_format.sel->get_index(row_idx); + const bool target_valid = target_format.validity.RowIsValid(target_entry_idx); + + // We are finished, if we are not looking for NULL, and the target is NULL. + const auto finished = !FIND_NULLS && !target_valid; + // We did not find the target (finished, or list is empty). + if (finished || list_entries[list_entry_idx].length == 0) { + if (finished || return_pos) { + // Return NULL as the position. + result_validity.SetInvalid(row_idx); + } else { + // Set 'contains' to false. + result_data[row_idx] = false; + } + continue; + } + + const auto entry_length = list_entries[list_entry_idx].length; + const auto entry_offset = list_entries[list_entry_idx].offset; + + bool found = false; + + for (auto list_idx = entry_offset; list_idx < entry_length + entry_offset && !found; list_idx++) { + const auto child_entry_idx = child_format.sel->get_index(list_idx); + const bool child_valid = child_format.validity.RowIsValid(child_entry_idx); + + if ((FIND_NULLS && !child_valid && !target_valid) || + (child_valid && target_valid && + Equals::Operation(child_data[child_entry_idx], target_data[target_entry_idx]))) { + found = true; + total_matches++; + if (return_pos) { + result_data[row_idx] = UnsafeNumericCast(1 + list_idx - entry_offset); + } else { + result_data[row_idx] = true; + } + } + } + + if (!found) { + if (return_pos) { + result_validity.SetInvalid(row_idx); + } else { + result_data[row_idx] = false; + } + } + } return total_matches; } -template +template idx_t ListSearchNestedOp(Vector &list_vec, Vector &source_vec, Vector &target_vec, Vector &result_vec, const idx_t target_count) { // Set up sort keys for nested types. @@ -56,51 +101,58 @@ idx_t ListSearchNestedOp(Vector &list_vec, Vector &source_vec, Vector &target_ve CreateSortKeyHelpers::CreateSortKeyWithValidity(source_vec, source_sort_key_vec, order_modifiers, source_count); CreateSortKeyHelpers::CreateSortKeyWithValidity(target_vec, target_sort_key_vec, order_modifiers, target_count); - return ListSearchSimpleOp(list_vec, source_sort_key_vec, target_sort_key_vec, result_vec, - target_count); + return ListSearchSimpleOp(list_vec, source_sort_key_vec, target_sort_key_vec, result_vec, + target_count); } //! "Search" each list in the list vector for the corresponding value in the target vector, returning either //! true/false or the position of the value in the list. The result vector is populated with the result of the search. //! usually the "source" vector is the list child vector, but it is passed separately to enable searching nested //! children, for example when searching the keys of a MAP vectors. -template +template idx_t ListSearchOp(Vector &list_v, Vector &source_v, Vector &target_v, Vector &result_v, idx_t target_count) { const auto type = target_v.GetType().InternalType(); switch (type) { case PhysicalType::BOOL: case PhysicalType::INT8: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); case PhysicalType::INT16: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); case PhysicalType::INT32: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); case PhysicalType::INT64: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); case PhysicalType::INT128: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, + target_count); case PhysicalType::UINT8: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); case PhysicalType::UINT16: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, + target_count); case PhysicalType::UINT32: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, + target_count); case PhysicalType::UINT64: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, + target_count); case PhysicalType::UINT128: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, + target_count); case PhysicalType::FLOAT: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); case PhysicalType::DOUBLE: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); case PhysicalType::VARCHAR: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, + target_count); case PhysicalType::INTERVAL: - return ListSearchSimpleOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchSimpleOp(list_v, source_v, target_v, result_v, + target_count); case PhysicalType::STRUCT: case PhysicalType::LIST: case PhysicalType::ARRAY: - return ListSearchNestedOp(list_v, source_v, target_v, result_v, target_count); + return ListSearchNestedOp(list_v, source_v, target_v, result_v, target_count); default: throw NotImplementedException("This function has not been implemented for logical type %s", TypeIdToString(type)); diff --git a/src/duckdb/src/include/duckdb/main/attached_database.hpp b/src/duckdb/src/include/duckdb/main/attached_database.hpp index 2d5a59741..218263b02 100644 --- a/src/duckdb/src/include/duckdb/main/attached_database.hpp +++ b/src/duckdb/src/include/duckdb/main/attached_database.hpp @@ -89,6 +89,7 @@ class AttachedDatabase : public CatalogEntry { bool IsInitialDatabase() const; void SetInitialDatabase(); void SetReadOnlyDatabase(); + void OnDetach(ClientContext &context); static bool NameIsReserved(const string &name); static string ExtractDatabaseName(const string &dbpath, FileSystem &fs); diff --git a/src/duckdb/src/include/duckdb/main/client_config.hpp b/src/duckdb/src/include/duckdb/main/client_config.hpp index ff355ec13..086d19470 100644 --- a/src/duckdb/src/include/duckdb/main/client_config.hpp +++ b/src/duckdb/src/include/duckdb/main/client_config.hpp @@ -15,6 +15,7 @@ #include "duckdb/common/progress_bar/progress_bar.hpp" #include "duckdb/common/types/value.hpp" #include "duckdb/main/profiling_info.hpp" +#include "duckdb/parser/expression/lambda_expression.hpp" namespace duckdb { @@ -135,6 +136,9 @@ struct ClientConfig { bool order_by_non_integer_literal = false; //! Disable casting from timestamp => timestamptz (naïve timestamps) bool disable_timestamptz_casts = false; + //! If DEFAULT or ENABLE_SINGLE_ARROW, it is possible to use the deprecated single arrow operator (->) for lambda + //! functions. Otherwise, DISABLE_SINGLE_ARROW. + LambdaSyntax lambda_syntax = LambdaSyntax::DEFAULT; //! Output error messages as structured JSON instead of as a raw string bool errors_as_json = false; diff --git a/src/duckdb/src/include/duckdb/main/extension_entries.hpp b/src/duckdb/src/include/duckdb/main/extension_entries.hpp index ad3136939..04d47287b 100644 --- a/src/duckdb/src/include/duckdb/main/extension_entries.hpp +++ b/src/duckdb/src/include/duckdb/main/extension_entries.hpp @@ -354,6 +354,7 @@ static constexpr ExtensionFunctionEntry EXTENSION_FUNCTIONS[] = { {"json_array_length", "json", CatalogType::SCALAR_FUNCTION_ENTRY}, {"json_contains", "json", CatalogType::SCALAR_FUNCTION_ENTRY}, {"json_deserialize_sql", "json", CatalogType::SCALAR_FUNCTION_ENTRY}, + {"json_each", "json", CatalogType::TABLE_FUNCTION_ENTRY}, {"json_execute_serialized_sql", "json", CatalogType::PRAGMA_FUNCTION_ENTRY}, {"json_execute_serialized_sql", "json", CatalogType::TABLE_FUNCTION_ENTRY}, {"json_exists", "json", CatalogType::SCALAR_FUNCTION_ENTRY}, @@ -374,6 +375,7 @@ static constexpr ExtensionFunctionEntry EXTENSION_FUNCTIONS[] = { {"json_structure", "json", CatalogType::SCALAR_FUNCTION_ENTRY}, {"json_transform", "json", CatalogType::SCALAR_FUNCTION_ENTRY}, {"json_transform_strict", "json", CatalogType::SCALAR_FUNCTION_ENTRY}, + {"json_tree", "json", CatalogType::TABLE_FUNCTION_ENTRY}, {"json_type", "json", CatalogType::SCALAR_FUNCTION_ENTRY}, {"json_valid", "json", CatalogType::SCALAR_FUNCTION_ENTRY}, {"json_value", "json", CatalogType::SCALAR_FUNCTION_ENTRY}, diff --git a/src/duckdb/src/include/duckdb/main/settings.hpp b/src/duckdb/src/include/duckdb/main/settings.hpp index 4b20f0f2d..48556b139 100644 --- a/src/duckdb/src/include/duckdb/main/settings.hpp +++ b/src/duckdb/src/include/duckdb/main/settings.hpp @@ -834,6 +834,17 @@ struct IntegerDivisionSetting { static Value GetSetting(const ClientContext &context); }; +struct LambdaSyntaxSetting { + using RETURN_TYPE = string; + static constexpr const char *Name = "lambda_syntax"; + static constexpr const char *Description = + "Configures the use of the deprecated single arrow operator (->) for lambda functions."; + static constexpr const char *InputType = "VARCHAR"; + static void SetLocal(ClientContext &context, const Value ¶meter); + static void ResetLocal(ClientContext &context); + static Value GetSetting(const ClientContext &context); +}; + struct LateMaterializationMaxRowsSetting { using RETURN_TYPE = idx_t; static constexpr const char *Name = "late_materialization_max_rows"; diff --git a/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp b/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp index 4fc292753..2e12da048 100644 --- a/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +++ b/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp @@ -61,8 +61,8 @@ class FunctionExpression : public ParsedExpression { void Verify() const override; - //! Returns true, if the function has a lambda expression as a child. - bool IsLambdaFunction() const; + //! Returns a pointer to the lambda expression, if the function has a lambda expression as a child, else nullptr. + optional_ptr IsLambdaFunction() const; public: template diff --git a/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp b/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp index 3f41659b1..276edf418 100644 --- a/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +++ b/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp @@ -14,17 +14,22 @@ namespace duckdb { -//! LambdaExpression represents either: -//! 1. A lambda function that can be used for, e.g., mapping an expression to a list -//! 2. An OperatorExpression with the "->" operator (JSON) -//! Lambda expressions are written in the form of "params -> expr", e.g., "x -> x + 1" +enum class LambdaSyntax : uint8_t { DEFAULT = 0, ENABLE_SINGLE_ARROW = 1, DISABLE_SINGLE_ARROW = 2 }; +enum class LambdaSyntaxType : uint8_t { SINGLE_ARROW_STORAGE = 0, SINGLE_ARROW = 1, LAMBDA_KEYWORD = 2 }; + +//! DuckDB 1.3. introduced a new lambda syntax: lambda x, y: x + y. +//! The new syntax resolves any ambiguity with the JSON arrow operator. +//! Currently, we're still using a LambdaExpression for both cases. class LambdaExpression : public ParsedExpression { public: static constexpr const ExpressionClass TYPE = ExpressionClass::LAMBDA; public: + LambdaExpression(vector named_parameters_p, unique_ptr expr); LambdaExpression(unique_ptr lhs, unique_ptr expr); + //! The syntax type. + LambdaSyntaxType syntax_type; //! The LHS of a lambda expression or the JSON "->"-operator. We need the context //! to determine if the LHS is a list of column references (lambda parameters) or an expression (JSON) unique_ptr lhs; @@ -36,7 +41,7 @@ class LambdaExpression : public ParsedExpression { public: //! Returns a vector to the column references in the LHS expression, and fills the error message, //! if the LHS is not a valid lambda parameter list - vector> ExtractColumnRefExpressions(string &error_message); + vector> ExtractColumnRefExpressions(string &error_message) const; //! Returns the error message for an invalid lambda parameter list static string InvalidParametersErrorMessage(); //! Returns true, if the column_name is a lambda parameter name diff --git a/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp b/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp index 1af6c9790..fdabe590a 100644 --- a/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +++ b/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp @@ -49,7 +49,7 @@ struct CreateInfo : public ParseInfo { //! User provided comment Value comment; //! Key-value tags with additional metadata - unordered_map tags; + InsertionOrderPreservingMap tags; public: void Serialize(Serializer &serializer) const override; diff --git a/src/duckdb/src/include/duckdb/parser/qualified_name.hpp b/src/duckdb/src/include/duckdb/parser/qualified_name.hpp index b17abbab6..b92cb2842 100644 --- a/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +++ b/src/duckdb/src/include/duckdb/parser/qualified_name.hpp @@ -24,6 +24,7 @@ struct QualifiedName { //! Parse the (optional) schema and a name from a string in the format of e.g. "schema"."table"; if there is no dot //! the schema will be set to INVALID_SCHEMA static QualifiedName Parse(const string &input); + static vector ParseComponents(const string &input); string ToString() const; }; diff --git a/src/duckdb/src/include/duckdb/parser/transformer.hpp b/src/duckdb/src/include/duckdb/parser/transformer.hpp index a03288034..99d247476 100644 --- a/src/duckdb/src/include/duckdb/parser/transformer.hpp +++ b/src/duckdb/src/include/duckdb/parser/transformer.hpp @@ -235,8 +235,10 @@ class Transformer { unique_ptr TransformFuncCall(duckdb_libpgquery::PGFuncCall &root); //! Transform a Postgres boolean expression into an Expression unique_ptr TransformInterval(duckdb_libpgquery::PGIntervalConstant &root); - //! Transform a Postgres lambda node [e.g. (x, y) -> x + y] into a lambda expression + //! Transform a LAMBDA node (e.g., lambda x, y: x + y) into a lambda expression. unique_ptr TransformLambda(duckdb_libpgquery::PGLambdaFunction &node); + //! Transform a single arrow operator (e.g., (x, y) -> x + y) into a lambda expression. + unique_ptr TransformSingleArrow(duckdb_libpgquery::PGSingleArrowFunction &node); //! Transform a Postgres array access node (e.g. x[1] or x[1:3]) unique_ptr TransformArrayAccess(duckdb_libpgquery::PGAIndirection &node); //! Transform a positional reference (e.g. #1) diff --git a/src/duckdb/src/include/duckdb/planner/expression_binder.hpp b/src/duckdb/src/include/duckdb/planner/expression_binder.hpp index bb60e64de..758be3325 100644 --- a/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +++ b/src/duckdb/src/include/duckdb/planner/expression_binder.hpp @@ -221,7 +221,8 @@ class ExpressionBinder { //! Returns true if the function name is an alias for the UNNEST function static bool IsUnnestFunction(const string &function_name); - BindResult TryBindLambdaOrJson(FunctionExpression &function, idx_t depth, CatalogEntry &func); + BindResult TryBindLambdaOrJson(FunctionExpression &function, idx_t depth, CatalogEntry &func, + const LambdaSyntaxType syntax_type); unique_ptr QualifyColumnNameWithManyDotsInternal(ColumnRefExpression &col_ref, ErrorData &error, idx_t &struct_extract_start); diff --git a/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp b/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp index 41c583fec..576751b4b 100644 --- a/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +++ b/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp @@ -44,6 +44,7 @@ class LogicalCopyToFile : public LogicalOperator { bool partition_output; bool write_partition_columns; bool write_empty_file = true; + bool hive_file_pattern = true; PreserveOrderType preserve_order = PreserveOrderType::AUTOMATIC; vector partition_columns; vector names; diff --git a/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp b/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp index 5185ddc66..253f1838f 100644 --- a/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp +++ b/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp @@ -22,6 +22,7 @@ class LogicalEmptyResult : public LogicalOperator { public: explicit LogicalEmptyResult(unique_ptr op); + LogicalEmptyResult(vector return_types, vector bindings); //! The set of return types of the empty result vector return_types; diff --git a/src/duckdb/src/include/duckdb/storage/caching_file_system.hpp b/src/duckdb/src/include/duckdb/storage/caching_file_system.hpp index bc7033263..80c92acdd 100644 --- a/src/duckdb/src/include/duckdb/storage/caching_file_system.hpp +++ b/src/duckdb/src/include/duckdb/storage/caching_file_system.hpp @@ -47,6 +47,8 @@ struct CachingFileHandle { DUCKDB_API string GetPath() const; DUCKDB_API idx_t GetFileSize(); DUCKDB_API time_t GetLastModifiedTime(); + DUCKDB_API string GetVersionTag(); + DUCKDB_API bool Validate() const; DUCKDB_API bool CanSeek(); DUCKDB_API bool IsRemoteFile() const; DUCKDB_API bool OnDiskFile(); diff --git a/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/analyze.hpp b/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/analyze.hpp new file mode 100644 index 000000000..ba2ce2097 --- /dev/null +++ b/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/analyze.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include "duckdb/storage/compression/dict_fsst/common.hpp" +#include "duckdb/common/string_map_set.hpp" +#include "duckdb/storage/table/column_data.hpp" + +namespace duckdb { + +namespace dict_fsst { + +//===--------------------------------------------------------------------===// +// Analyze +//===--------------------------------------------------------------------===// +struct DictFSSTAnalyzeState : public AnalyzeState { +public: + explicit DictFSSTAnalyzeState(const CompressionInfo &info); + +public: + bool Analyze(Vector &input, idx_t count); + idx_t FinalAnalyze(); + +public: + idx_t max_string_length = 0; + bool contains_nulls = false; + idx_t total_string_length = 0; + idx_t total_count = 0; +}; + +} // namespace dict_fsst + +} // namespace duckdb diff --git a/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/common.hpp b/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/common.hpp new file mode 100644 index 000000000..46af3ced9 --- /dev/null +++ b/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/common.hpp @@ -0,0 +1,45 @@ +#pragma once + +#include "duckdb/common/typedefs.hpp" +#include "duckdb/function/compression_function.hpp" +#include "duckdb/common/bitpacking.hpp" +#include "duckdb/storage/string_uncompressed.hpp" + +namespace duckdb { + +namespace dict_fsst { + +//! This enum holds the available compression modes, this can be expanded later by adding to the end (before COUNT) +enum class DictFSSTMode : uint8_t { + DICTIONARY = 0, + DICT_FSST = 1, + FSST_ONLY = 2, + COUNT //! Always the last member of the enum +}; + +typedef struct { + uint32_t dict_size; + uint32_t dict_count; + DictFSSTMode mode; + uint8_t string_lengths_width; + uint8_t dictionary_indices_width; + uint32_t symbol_table_size; +} dict_fsst_compression_header_t; + +enum class DictionaryAppendState : uint8_t { + REGULAR, //! Symbol table threshold not reached yet + ENCODED, //! Reached the threshold, decided to encode the dictionary + NOT_ENCODED, //! Reached the threshold, decided not to encode the dictionary + ENCODED_ALL_UNIQUE //! Reached the threshold, decided to encode the dictionary, and all entries so far are unique +}; + +struct DictFSSTCompression { +public: + //! Dictionary header size at the beginning of the string segment (offset + length) + static constexpr uint16_t DICTIONARY_HEADER_SIZE = sizeof(dict_fsst_compression_header_t); + static constexpr idx_t STRING_SIZE_LIMIT = 16384; +}; + +} // namespace dict_fsst + +} // namespace duckdb diff --git a/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/compression.hpp b/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/compression.hpp new file mode 100644 index 000000000..4e5df07b9 --- /dev/null +++ b/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/compression.hpp @@ -0,0 +1,103 @@ +#pragma once + +#include "duckdb/common/typedefs.hpp" +#include "duckdb/storage/compression/dict_fsst/common.hpp" +#include "duckdb/storage/compression/dict_fsst/analyze.hpp" +#include "duckdb/function/compression_function.hpp" +#include "duckdb/common/string_map_set.hpp" +#include "duckdb/storage/table/column_data_checkpointer.hpp" + +namespace duckdb { +namespace dict_fsst { + +// Dictionary compression uses a combination of bitpacking and a dictionary to compress string segments. The data is +// stored across three buffers: the index buffer, the selection buffer and the dictionary. Firstly the Index buffer +// contains the offsets into the dictionary which are also used to determine the string lengths. Each value in the +// dictionary gets a single unique index in the index buffer. Secondly, the selection buffer maps the tuples to an index +// in the index buffer. The selection buffer is compressed with bitpacking. Finally, the dictionary contains simply all +// the unique strings without lengths or null termination as we can deduce the lengths from the index buffer. The +// addition of the selection buffer is done for two reasons: firstly, to allow the scan to emit dictionary vectors by +// scanning the whole dictionary at once and then scanning the selection buffer for each emitted vector. Secondly, it +// allows for efficient bitpacking compression as the selection values should remain relatively small. + +struct EncodedInput { + //! The index at which we started encoding the input + // in case we switch to FSST_ONLY in the middle, we can avoid encoding the previous input strings + idx_t offset = 0; + //! If the append_mode is FSST_ONLY we will encode all input + // this memory is owned by a reusable buffer stored in the state + vector data; +}; + +//===--------------------------------------------------------------------===// +// Compress +//===--------------------------------------------------------------------===// +struct DictFSSTCompressionState : public CompressionState { +public: + DictFSSTCompressionState(ColumnDataCheckpointData &checkpoint_data_p, unique_ptr &&state); + ~DictFSSTCompressionState() override; + +public: + void CreateEmptySegment(idx_t row_start); + idx_t Finalize(); + + bool AllUnique() const; + void FlushEncodingBuffer(); + idx_t CalculateRequiredSpace() const; + DictionaryAppendState TryEncode(); + + bool CompressInternal(UnifiedVectorFormat &vector_format, const string_t &str, bool is_null, + EncodedInput &encoded_input, const idx_t i, idx_t count); + void Compress(Vector &scan_vector, idx_t count); + void FinalizeCompress(); + void Flush(bool final); + +public: + ColumnDataCheckpointData &checkpoint_data; + CompressionFunction &function; + // State regarding current segment + unique_ptr current_segment; + BufferHandle current_handle; + //! Offset at which to write the next dictionary string + idx_t dictionary_offset = 0; + + idx_t string_lengths_space = 0; + vector string_lengths; + uint32_t dict_count = 0; + bitpacking_width_t string_lengths_width = 0; + //! For DICT_FSST we delay encoding of new entries, which means + // we have to prepare for strings being exploded in size by max 2x + // so we have to muddy our 'string_lengths_width' + bitpacking_width_t real_string_lengths_width = 0; + + idx_t dictionary_indices_space = 0; + vector dictionary_indices; + bitpacking_width_t dictionary_indices_width = 0; + + //! string -> dictionary_index (for lookups) + string_map_t current_string_map; + //! strings added to the dictionary waiting to be encoded + vector dictionary_encoding_buffer; + idx_t to_encode_string_sum = 0; + //! for DICT_FSST we store uncompressed strings in the 'current_string_map', this owns that memory + StringHeap uncompressed_dictionary_copy; + + //! This is used for FSST_ONLY, to store the memory of the encoded input + unsafe_unique_array encoding_buffer = nullptr; + idx_t encoding_buffer_size = 0; + + idx_t tuple_count = 0; + unique_ptr analyze; + idx_t symbol_table_size = DConstants::INVALID_INDEX; + + //! How many values have we compressed so far? + idx_t total_tuple_count = 0; + +private: + void *encoder = nullptr; + unsafe_unique_array fsst_serialized_symbol_table; + DictionaryAppendState append_state = DictionaryAppendState::REGULAR; +}; + +} // namespace dict_fsst +} // namespace duckdb diff --git a/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/decompression.hpp b/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/decompression.hpp new file mode 100644 index 000000000..ee5a8f85d --- /dev/null +++ b/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/decompression.hpp @@ -0,0 +1,71 @@ +#pragma once + +#include "duckdb/storage/compression/dict_fsst/common.hpp" + +namespace duckdb { + +namespace dict_fsst { + +//===--------------------------------------------------------------------===// +// Scan +//===--------------------------------------------------------------------===// +struct CompressedStringScanState : public SegmentScanState { +public: + CompressedStringScanState(ColumnSegment &segment, BufferHandle &&handle_p) + : segment(segment), owned_handle(std::move(handle_p)), handle(owned_handle) { + } + CompressedStringScanState(ColumnSegment &segment, BufferHandle &handle_p) + : segment(segment), owned_handle(), handle(handle_p) { + } + + ~CompressedStringScanState() override; + +public: + void Initialize(bool initialize_dictionary = true); + void ScanToFlatVector(Vector &result, idx_t result_offset, idx_t start, idx_t scan_count); + void ScanToDictionaryVector(ColumnSegment &segment, Vector &result, idx_t result_offset, idx_t start, + idx_t scan_count); + const SelectionVector &GetSelVec(idx_t start, idx_t scan_count); + void Select(Vector &result, idx_t start, const SelectionVector &sel, idx_t sel_count); + + bool AllowDictionaryScan(idx_t start, idx_t scan_count); + +private: + string_t FetchStringFromDict(Vector &result, uint32_t dict_offset, idx_t dict_idx); + +public: + ColumnSegment &segment; + BufferHandle owned_handle; + optional_ptr handle; + + DictFSSTMode mode; + idx_t dictionary_size; + uint32_t dict_count; + bitpacking_width_t dictionary_indices_width; + bitpacking_width_t string_lengths_width; + + buffer_ptr sel_vec; + idx_t sel_vec_size = 0; + + // decompress offset/position - used for scanning without a dictionary + uint32_t decompress_offset = 0; + idx_t decompress_position = 0; + + vector string_lengths; + + //! Start of the block (pointing to the dictionary_header) + data_ptr_t baseptr; + data_ptr_t dict_ptr; + data_ptr_t dictionary_indices_ptr; + data_ptr_t string_lengths_ptr; + + buffer_ptr dictionary; + void *decoder = nullptr; + bool all_values_inlined = false; + + unsafe_unique_array filter_result; +}; + +} // namespace dict_fsst + +} // namespace duckdb diff --git a/src/duckdb/src/include/duckdb/storage/compression/empty_validity.hpp b/src/duckdb/src/include/duckdb/storage/compression/empty_validity.hpp index 5899badb9..1118f77f2 100644 --- a/src/duckdb/src/include/duckdb/storage/compression/empty_validity.hpp +++ b/src/duckdb/src/include/duckdb/storage/compression/empty_validity.hpp @@ -32,9 +32,12 @@ class EmptyValidityCompression { public: static CompressionFunction CreateFunction() { - return CompressionFunction(CompressionType::COMPRESSION_EMPTY, PhysicalType::BIT, nullptr, nullptr, nullptr, + CompressionFunction result(CompressionType::COMPRESSION_EMPTY, PhysicalType::BIT, nullptr, nullptr, nullptr, InitCompression, Compress, FinalizeCompress, InitScan, Scan, ScanPartial, FetchRow, Skip, InitSegment); + result.filter = Filter; + result.select = Select; + return result; } public: @@ -95,6 +98,13 @@ class EmptyValidityCompression { optional_ptr segment_state) { return nullptr; } + static void Filter(ColumnSegment &segment, ColumnScanState &state, idx_t vector_count, Vector &result, + SelectionVector &sel, idx_t &sel_count, const TableFilter &filter, + TableFilterState &filter_state) { + } + static void Select(ColumnSegment &segment, ColumnScanState &state, idx_t vector_count, Vector &result, + const SelectionVector &sel, idx_t sel_count) { + } }; } // namespace duckdb diff --git a/src/duckdb/src/include/duckdb/storage/external_file_cache.hpp b/src/duckdb/src/include/duckdb/storage/external_file_cache.hpp index 4bb46e2df..625f13149 100644 --- a/src/duckdb/src/include/duckdb/storage/external_file_cache.hpp +++ b/src/duckdb/src/include/duckdb/storage/external_file_cache.hpp @@ -62,7 +62,7 @@ class ExternalFileCache { void Verify(const unique_ptr &guard) const; //! Whether the CachedFile is still valid given the current modified/version tag bool IsValid(const unique_ptr &guard, bool validate, const string ¤t_version_tag, - time_t current_last_modified, int64_t access_time); + time_t current_last_modified); //! Get reference to properties (must hold the lock) idx_t &FileSize(const unique_ptr &guard); @@ -101,6 +101,9 @@ class ExternalFileCache { //! Gets the cached file, or creates it if is not yet present CachedFile &GetOrCreateCachedFile(const string &path); + DUCKDB_API static bool IsValid(bool validate, const string &cached_version_tag, time_t cached_last_modified, + const string ¤t_version_tag, time_t current_last_modified); + private: //! The BufferManager used to cache files BufferManager &buffer_manager; diff --git a/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp b/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp index 0db0e6fbc..aec2efdba 100644 --- a/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +++ b/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp @@ -59,8 +59,8 @@ struct CheckpointAnalyzeResult { class ColumnDataCheckpointer { public: - ColumnDataCheckpointer(vector> &states, DatabaseInstance &db, RowGroup &row_group, - ColumnCheckpointInfo &checkpoint_info); + ColumnDataCheckpointer(vector> &states, StorageManager &storage_manager, + RowGroup &row_group, ColumnCheckpointInfo &checkpoint_info); public: void Checkpoint(); @@ -78,7 +78,7 @@ class ColumnDataCheckpointer { private: vector> &checkpoint_states; - DatabaseInstance &db; + StorageManager &storage_manager; RowGroup &row_group; Vector intermediate; ColumnCheckpointInfo &checkpoint_info; diff --git a/src/duckdb/src/main/attached_database.cpp b/src/duckdb/src/main/attached_database.cpp index 0323e9033..46809cc18 100644 --- a/src/duckdb/src/main/attached_database.cpp +++ b/src/duckdb/src/main/attached_database.cpp @@ -222,6 +222,13 @@ void AttachedDatabase::SetReadOnlyDatabase() { type = AttachedDatabaseType::READ_ONLY_DATABASE; } +void AttachedDatabase::OnDetach(ClientContext &context) { + if (!catalog) { + return; + } + catalog->OnDetach(context); +} + void AttachedDatabase::Close() { D_ASSERT(catalog); if (is_closed) { diff --git a/src/duckdb/src/main/capi/profiling_info-c.cpp b/src/duckdb/src/main/capi/profiling_info-c.cpp index 4936aed4f..99499fb4d 100644 --- a/src/duckdb/src/main/capi/profiling_info-c.cpp +++ b/src/duckdb/src/main/capi/profiling_info-c.cpp @@ -46,7 +46,7 @@ duckdb_value duckdb_profiling_info_get_metrics(duckdb_profiling_info info) { auto &node = *reinterpret_cast(info); auto &profiling_info = node.GetProfilingInfo(); - duckdb::unordered_map metrics_map; + duckdb::InsertionOrderPreservingMap metrics_map; for (const auto &metric : profiling_info.metrics) { auto key = EnumUtil::ToString(metric.first); if (!profiling_info.Enabled(profiling_info.settings, metric.first)) { diff --git a/src/duckdb/src/main/config.cpp b/src/duckdb/src/main/config.cpp index d6147d0ac..d70be6c8f 100644 --- a/src/duckdb/src/main/config.cpp +++ b/src/duckdb/src/main/config.cpp @@ -132,6 +132,7 @@ static const ConfigurationOption internal_options[] = { DUCKDB_GLOBAL(IndexScanMaxCountSetting), DUCKDB_GLOBAL(IndexScanPercentageSetting), DUCKDB_LOCAL(IntegerDivisionSetting), + DUCKDB_LOCAL(LambdaSyntaxSetting), DUCKDB_LOCAL(LateMaterializationMaxRowsSetting), DUCKDB_GLOBAL(LockConfigurationSetting), DUCKDB_LOCAL(LogQueryPathSetting), diff --git a/src/duckdb/src/main/database.cpp b/src/duckdb/src/main/database.cpp index 946c5da1a..dc05baffa 100644 --- a/src/duckdb/src/main/database.cpp +++ b/src/duckdb/src/main/database.cpp @@ -431,7 +431,7 @@ void DatabaseInstance::Configure(DBConfig &new_config, const char *database_path if (new_config.file_system) { config.file_system = std::move(new_config.file_system); } else { - config.file_system = make_uniq(); + config.file_system = make_uniq(FileSystem::CreateLocal()); } if (database_path && !config.options.enable_external_access) { config.AddAllowedPath(database_path); diff --git a/src/duckdb/src/main/database_manager.cpp b/src/duckdb/src/main/database_manager.cpp index 71556bec6..0804fc5ee 100644 --- a/src/duckdb/src/main/database_manager.cpp +++ b/src/duckdb/src/main/database_manager.cpp @@ -77,10 +77,18 @@ void DatabaseManager::DetachDatabase(ClientContext &context, const string &name, name); } - if (!databases->DropEntry(context, name, false, true)) { + auto entry = databases->GetEntry(context, name); + if (!entry) { if (if_not_found == OnEntryNotFound::THROW_EXCEPTION) { throw BinderException("Failed to detach database with name \"%s\": database not found", name); } + return; + } + auto &db = entry->Cast(); + db.OnDetach(context); + + if (!databases->DropEntry(context, name, false, true)) { + throw InternalException("Failed to drop attached database"); } } diff --git a/src/duckdb/src/main/settings/custom_settings.cpp b/src/duckdb/src/main/settings/custom_settings.cpp index 2707e5320..faf82193a 100644 --- a/src/duckdb/src/main/settings/custom_settings.cpp +++ b/src/duckdb/src/main/settings/custom_settings.cpp @@ -976,6 +976,7 @@ void ForceCompressionSetting::SetGlobal(DatabaseInstance *db, DBConfig &config, config.options.force_compression = CompressionType::COMPRESSION_AUTO; } else { auto compression_type = CompressionTypeFromString(compression); + //! FIXME: do we want to try to retrieve the AttachedDatabase here to get the StorageManager ?? if (CompressionTypeIsDeprecated(compression_type)) { throw ParserException("Attempted to force a deprecated compression type (%s)", CompressionTypeToString(compression_type)); @@ -1019,6 +1020,25 @@ bool IndexScanPercentageSetting::OnGlobalSet(DatabaseInstance *db, DBConfig &con return true; } +//===----------------------------------------------------------------------===// +// Lambda Syntax Setting +//===----------------------------------------------------------------------===// +void LambdaSyntaxSetting::SetLocal(ClientContext &context, const Value &input) { + auto setting_type = EnumUtil::FromString(input.ToString()); + auto &config = ClientConfig::GetConfig(context); + config.lambda_syntax = setting_type; +} + +void LambdaSyntaxSetting::ResetLocal(ClientContext &context) { + auto &config = ClientConfig::GetConfig(context); + config.lambda_syntax = LambdaSyntax::DEFAULT; +} + +Value LambdaSyntaxSetting::GetSetting(const ClientContext &context) { + const auto &config = ClientConfig::GetConfig(context); + return Value(EnumUtil::ToString(config.lambda_syntax)); +} + //===----------------------------------------------------------------------===// // Log Query Path //===----------------------------------------------------------------------===// diff --git a/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp b/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp index 811d01c94..1fad0cbff 100644 --- a/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +++ b/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp @@ -13,12 +13,16 @@ void StatisticsPropagator::TryExecuteAggregates(LogicalAggregate &aggr, unique_p // not possible with groups return; } - if (aggr.children[0]->type != LogicalOperatorType::LOGICAL_GET) { + // skip any projections + reference child_ref = *aggr.children[0]; + while (child_ref.get().type == LogicalOperatorType::LOGICAL_PROJECTION) { + child_ref = *child_ref.get().children[0]; + } + if (child_ref.get().type != LogicalOperatorType::LOGICAL_GET) { // child must be a LOGICAL_GET - // FIXME: we could do this with projections as well return; } - auto &get = aggr.children[0]->Cast(); + auto &get = child_ref.get().Cast(); if (!get.function.get_partition_stats) { // GET does not support getting the partition stats return; @@ -46,6 +50,10 @@ void StatisticsPropagator::TryExecuteAggregates(LogicalAggregate &aggr, unique_p // we can do the rewrite! get the stats GetPartitionStatsInput input(get.function, get.bind_data.get()); auto partition_stats = get.function.get_partition_stats(context, input); + if (partition_stats.empty()) { + // no partition stats found + return; + } idx_t count = 0; for (auto &stats : partition_stats) { if (stats.count_type == CountType::COUNT_APPROXIMATE) { diff --git a/src/duckdb/src/parallel/thread_context.cpp b/src/duckdb/src/parallel/thread_context.cpp index 15ed6a64c..1e90cc516 100644 --- a/src/duckdb/src/parallel/thread_context.cpp +++ b/src/duckdb/src/parallel/thread_context.cpp @@ -11,12 +11,22 @@ ThreadContext::ThreadContext(ClientContext &context) : profiler(context) { log_context.connection_id = context.GetConnectionId(); if (context.transaction.HasActiveTransaction()) { log_context.transaction_id = context.transaction.ActiveTransaction().global_transaction_id; - log_context.query_id = context.transaction.GetActiveQuery(); + auto query_id = context.transaction.GetActiveQuery(); + if (query_id == DConstants::INVALID_INDEX) { + log_context.query_id = optional_idx(); + } else { + log_context.query_id = query_id; + } } log_context.thread_id = TaskScheduler::GetEstimatedCPUId(); if (context.transaction.HasActiveTransaction()) { - log_context.transaction_id = context.transaction.GetActiveQuery(); + auto query_id = context.transaction.GetActiveQuery(); + if (query_id == DConstants::INVALID_INDEX) { + log_context.transaction_id = optional_idx(); + } else { + log_context.transaction_id = query_id; + } } logger = context.db->GetLogManager().CreateLogger(log_context, true); } diff --git a/src/duckdb/src/parser/expression/function_expression.cpp b/src/duckdb/src/parser/expression/function_expression.cpp index a38b3024e..6d96a0cc0 100644 --- a/src/duckdb/src/parser/expression/function_expression.cpp +++ b/src/duckdb/src/parser/expression/function_expression.cpp @@ -95,18 +95,18 @@ void FunctionExpression::Verify() const { D_ASSERT(!function_name.empty()); } -bool FunctionExpression::IsLambdaFunction() const { +optional_ptr FunctionExpression::IsLambdaFunction() const { // Ignore the ->> operator (JSON extension). if (function_name == "->>") { - return false; + return nullptr; } // Check the children for lambda expressions. for (auto &child : children) { if (child->GetExpressionClass() == ExpressionClass::LAMBDA) { - return true; + return *child; } } - return false; + return nullptr; } } // namespace duckdb diff --git a/src/duckdb/src/parser/expression/lambda_expression.cpp b/src/duckdb/src/parser/expression/lambda_expression.cpp index bdf32e6c0..d8d4fe891 100644 --- a/src/duckdb/src/parser/expression/lambda_expression.cpp +++ b/src/duckdb/src/parser/expression/lambda_expression.cpp @@ -12,15 +12,32 @@ namespace duckdb { LambdaExpression::LambdaExpression() : ParsedExpression(ExpressionType::LAMBDA, ExpressionClass::LAMBDA) { } +LambdaExpression::LambdaExpression(vector named_parameters_p, unique_ptr expr) + : ParsedExpression(ExpressionType::LAMBDA, ExpressionClass::LAMBDA), syntax_type(LambdaSyntaxType::LAMBDA_KEYWORD), + expr(std::move(expr)) { + if (named_parameters_p.size() == 1) { + lhs = make_uniq(named_parameters_p.back()); + return; + } + // Create a dummy row function and insert the children. + vector> children; + for (const auto &name : named_parameters_p) { + auto child = make_uniq(name); + children.push_back(std::move(child)); + } + lhs = make_uniq("row", std::move(children)); +} + LambdaExpression::LambdaExpression(unique_ptr lhs, unique_ptr expr) - : ParsedExpression(ExpressionType::LAMBDA, ExpressionClass::LAMBDA), lhs(std::move(lhs)), expr(std::move(expr)) { + : ParsedExpression(ExpressionType::LAMBDA, ExpressionClass::LAMBDA), syntax_type(LambdaSyntaxType::SINGLE_ARROW), + lhs(std::move(lhs)), expr(std::move(expr)) { } -vector> LambdaExpression::ExtractColumnRefExpressions(string &error_message) { +vector> LambdaExpression::ExtractColumnRefExpressions(string &error_message) const { // we return an error message because we can't throw a binder exception here, // since we can't distinguish between a lambda function and the JSON operator yet - vector> column_refs; + vector> column_refs; if (lhs->GetExpressionClass() == ExpressionClass::COLUMN_REF) { // single column reference @@ -52,6 +69,7 @@ vector> LambdaExpression::ExtractColumnRefExpression } string LambdaExpression::InvalidParametersErrorMessage() { + // FIXME: remove this once we only support the new lambda syntax. return "Invalid lambda parameters! Parameters must be unqualified comma-separated names like x or (x, y)."; } @@ -66,7 +84,25 @@ bool LambdaExpression::IsLambdaParameter(const vector> &la } string LambdaExpression::ToString() const { - return "(" + lhs->ToString() + " -> " + expr->ToString() + ")"; + if (syntax_type != LambdaSyntaxType::LAMBDA_KEYWORD) { + return "(" + lhs->ToString() + " -> " + expr->ToString() + ")"; + } + + string str = ""; + auto column_refs = ExtractColumnRefExpressions(str); + + str = "(lambda "; + for (idx_t i = 0; i < column_refs.size(); i++) { + auto &column_ref = column_refs[i].get(); + auto &cast_column_ref = column_ref.Cast(); + + if (i == column_refs.size() - 1) { + str += cast_column_ref.ToString(); + continue; + } + str += cast_column_ref.ToString() + ", "; + } + return str + ": " + expr->ToString() + ")"; } bool LambdaExpression::Equal(const LambdaExpression &a, const LambdaExpression &b) { @@ -82,6 +118,7 @@ hash_t LambdaExpression::Hash() const { unique_ptr LambdaExpression::Copy() const { auto copy = make_uniq(lhs->Copy(), expr->Copy()); + copy->syntax_type = syntax_type; copy->CopyProperties(*this); return std::move(copy); } diff --git a/src/duckdb/src/parser/parsed_data/attach_info.cpp b/src/duckdb/src/parser/parsed_data/attach_info.cpp index 9f3cc20a3..5c930e3aa 100644 --- a/src/duckdb/src/parser/parsed_data/attach_info.cpp +++ b/src/duckdb/src/parser/parsed_data/attach_info.cpp @@ -9,6 +9,7 @@ namespace duckdb { StorageOptions AttachInfo::GetStorageOptions() const { StorageOptions storage_options; + string storage_version_user_provided = ""; for (auto &entry : options) { if (entry.first == "block_size") { // Extract the block allocation size. This is NOT the actual memory available on a block (block_size), @@ -17,15 +18,25 @@ StorageOptions AttachInfo::GetStorageOptions() const { } else if (entry.first == "encryption_key") { storage_options.block_header_size = DEFAULT_ENCRYPTION_BLOCK_HEADER_SIZE; storage_options.encryption = true; - // set storage version to v1.3.0 - storage_options.storage_version = SerializationCompatibility::FromString("v1.3.0").serialization_version; } else if (entry.first == "row_group_size") { storage_options.row_group_size = entry.second.GetValue(); } else if (entry.first == "storage_version") { + storage_version_user_provided = entry.second.ToString(); storage_options.storage_version = SerializationCompatibility::FromString(entry.second.ToString()).serialization_version; } } + if (storage_options.encryption && (!storage_options.storage_version.IsValid() || + storage_options.storage_version.GetIndex() < + SerializationCompatibility::FromString("v1.3.0").serialization_version)) { + if (!storage_version_user_provided.empty()) { + throw InvalidInputException( + "Explicit provided STORAGE_VERSION (\"%s\") and ENCRYPTION_KEY (storage >= v1.3.0) are not compatible", + storage_version_user_provided); + } + // set storage version to v1.3.0 + storage_options.storage_version = SerializationCompatibility::FromString("v1.3.0").serialization_version; + } return storage_options; } diff --git a/src/duckdb/src/parser/parsed_data/create_type_info.cpp b/src/duckdb/src/parser/parsed_data/create_type_info.cpp index 4ee92f525..052ae6fbe 100644 --- a/src/duckdb/src/parser/parsed_data/create_type_info.cpp +++ b/src/duckdb/src/parser/parsed_data/create_type_info.cpp @@ -28,11 +28,16 @@ unique_ptr CreateTypeInfo::Copy() const { string CreateTypeInfo::ToString() const { string result = ""; result += "CREATE"; + if (on_conflict == OnCreateConflict::REPLACE_ON_CONFLICT) { + result += " OR REPLACE "; + } if (temporary) { - // These are created by PIVOT - throw NotImplementedException("CREATE TEMPORARY TYPE can't be parsed currently"); + result += " TEMPORARY"; } result += " TYPE "; + if (on_conflict == OnCreateConflict::IGNORE_ON_CONFLICT) { + result += " IF NOT EXISTS "; + } result += QualifierToString(temporary ? "" : catalog, schema, name); if (type.id() == LogicalTypeId::ENUM) { auto &values_insert_order = EnumType::GetValuesInsertOrder(type); diff --git a/src/duckdb/src/parser/qualified_name.cpp b/src/duckdb/src/parser/qualified_name.cpp index c4567edea..8920d8f05 100644 --- a/src/duckdb/src/parser/qualified_name.cpp +++ b/src/duckdb/src/parser/qualified_name.cpp @@ -7,13 +7,11 @@ string QualifiedName::ToString() const { return ParseInfo::QualifierToString(catalog, schema, name); } -QualifiedName QualifiedName::Parse(const string &input) { - string catalog; - string schema; - string name; +vector QualifiedName::ParseComponents(const string &input) { + vector result; idx_t idx = 0; - vector entries; string entry; + normal: //! quote for (; idx < input.size(); idx++) { @@ -27,7 +25,7 @@ QualifiedName QualifiedName::Parse(const string &input) { } goto end; separator: - entries.push_back(entry); + result.push_back(entry); entry = ""; idx++; goto normal; @@ -41,22 +39,38 @@ QualifiedName QualifiedName::Parse(const string &input) { } entry += input[idx]; } - throw ParserException("Unterminated quote in qualified name!"); + throw ParserException("Unterminated quote in qualified name! (input: %s)", input); end: + if (!entry.empty()) { + result.push_back(entry); + } + return result; +} + +QualifiedName QualifiedName::Parse(const string &input) { + string catalog; + string schema; + string name; + + auto entries = ParseComponents(input); if (entries.empty()) { catalog = INVALID_CATALOG; schema = INVALID_SCHEMA; - name = entry; } else if (entries.size() == 1) { catalog = INVALID_CATALOG; - schema = entries[0]; - name = entry; + schema = INVALID_SCHEMA; + name = entries[0]; } else if (entries.size() == 2) { + catalog = INVALID_CATALOG; + schema = entries[0]; + name = entries[1]; + } else if (entries.size() == 3) { catalog = entries[0]; schema = entries[1]; - name = entry; + name = entries[2]; } else { - throw ParserException("Expected catalog.entry, schema.entry or entry: too many entries found"); + throw ParserException("Expected catalog.entry, schema.entry or entry: too many entries found (input: %s)", + input); } return QualifiedName {catalog, schema, name}; } diff --git a/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp b/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp index e73b15cdc..b31f33981 100644 --- a/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +++ b/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp @@ -127,7 +127,7 @@ unique_ptr Transformer::TransformConstraint(duckdb_libpgquery::PGCon column.SetCompressionType(CompressionTypeFromString(constraint.compression_name)); if (column.CompressionType() == CompressionType::COMPRESSION_AUTO) { throw ParserException("Unrecognized option for column compression, expected none, uncompressed, rle, " - "dictionary, pfor, bitpacking or fsst"); + "dictionary, pfor, bitpacking, fsst, chimp, patas, zstd, alp, alprd or roaring"); } return nullptr; case duckdb_libpgquery::PG_CONSTR_FOREIGN: diff --git a/src/duckdb/src/parser/transform/expression/transform_expression.cpp b/src/duckdb/src/parser/transform/expression/transform_expression.cpp index 1f64c8ed4..521cf0a1b 100644 --- a/src/duckdb/src/parser/transform/expression/transform_expression.cpp +++ b/src/duckdb/src/parser/transform/expression/transform_expression.cpp @@ -65,6 +65,8 @@ unique_ptr Transformer::TransformExpression(duckdb_libpgquery: return TransformInterval(PGCast(node)); case duckdb_libpgquery::T_PGLambdaFunction: return TransformLambda(PGCast(node)); + case duckdb_libpgquery::T_PGSingleArrowFunction: + return TransformSingleArrow(PGCast(node)); case duckdb_libpgquery::T_PGAIndirection: return TransformArrayAccess(PGCast(node)); case duckdb_libpgquery::T_PGPositionalReference: diff --git a/src/duckdb/src/parser/transform/expression/transform_lambda.cpp b/src/duckdb/src/parser/transform/expression/transform_lambda.cpp index 00011ad33..d784e9bc4 100644 --- a/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +++ b/src/duckdb/src/parser/transform/expression/transform_lambda.cpp @@ -8,6 +8,19 @@ unique_ptr Transformer::TransformLambda(duckdb_libpgquery::PGL D_ASSERT(node.lhs); D_ASSERT(node.rhs); + auto parameters = TransformStringList(node.lhs); + auto rhs = TransformExpression(node.rhs); + D_ASSERT(!parameters.empty()); + D_ASSERT(rhs); + auto result = make_uniq(std::move(parameters), std::move(rhs)); + SetQueryLocation(*result, node.location); + return std::move(result); +} + +unique_ptr Transformer::TransformSingleArrow(duckdb_libpgquery::PGSingleArrowFunction &node) { + D_ASSERT(node.lhs); + D_ASSERT(node.rhs); + auto lhs = TransformExpression(node.lhs); auto rhs = TransformExpression(node.rhs); D_ASSERT(lhs); diff --git a/src/duckdb/src/parser/transform/statement/transform_create_type.cpp b/src/duckdb/src/parser/transform/statement/transform_create_type.cpp index 3b6753b6b..084dd43bc 100644 --- a/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +++ b/src/duckdb/src/parser/transform/statement/transform_create_type.cpp @@ -42,6 +42,8 @@ unique_ptr Transformer::TransformCreateType(duckdb_libpgquery:: info->catalog = qualified_name.catalog; info->schema = qualified_name.schema; info->name = qualified_name.name; + info->temporary = !stmt.typeName->relpersistence; + info->on_conflict = TransformOnConflict(stmt.onconflict); switch (stmt.kind) { case duckdb_libpgquery::PG_NEWTYPE_ENUM: { diff --git a/src/duckdb/src/parser/transform/statement/transform_update.cpp b/src/duckdb/src/parser/transform/statement/transform_update.cpp index 9f5951d02..f1424c80d 100644 --- a/src/duckdb/src/parser/transform/statement/transform_update.cpp +++ b/src/duckdb/src/parser/transform/statement/transform_update.cpp @@ -11,6 +11,9 @@ unique_ptr Transformer::TransformUpdateSetInfo(duckdb_libpgquery: for (auto cell = root->head; cell != nullptr; cell = cell->next) { auto target = PGPointerCast(cell->data.ptr_value); + if (target->indirection) { + throw ParserException("Qualified column names in UPDATE .. SET not supported"); + } result->columns.emplace_back(target->name); result->expressions.push_back(TransformExpression(target->val)); } diff --git a/src/duckdb/src/planner/bind_context.cpp b/src/duckdb/src/planner/bind_context.cpp index 43f47e3d5..71879d010 100644 --- a/src/duckdb/src/planner/bind_context.cpp +++ b/src/duckdb/src/planner/bind_context.cpp @@ -265,6 +265,18 @@ optional_ptr BindContext::GetCTEBinding(const string &ctename) { return match->second.get(); } +string GetCandidateAlias(const BindingAlias &main_alias, const BindingAlias &new_alias) { + string candidate; + if (!main_alias.GetCatalog().empty() && !new_alias.GetCatalog().empty()) { + candidate += new_alias.GetCatalog() + "."; + } + if (!main_alias.GetSchema().empty() && !new_alias.GetSchema().empty()) { + candidate += new_alias.GetSchema() + "."; + } + candidate += new_alias.GetAlias(); + return candidate; +} + vector> BindContext::GetBindings(const BindingAlias &alias, ErrorData &out_error) { if (!alias.IsSet()) { throw InternalException("BindingAlias is not set"); @@ -279,12 +291,13 @@ vector> BindContext::GetBindings(const BindingAlias &alias, E // alias not found in this BindContext vector candidates; for (auto &binding : bindings_list) { - candidates.push_back(binding->alias.GetAlias()); + candidates.push_back(GetCandidateAlias(alias, binding->alias)); } - string candidate_str = StringUtil::CandidatesMessage(StringUtil::TopNJaroWinkler(candidates, alias.GetAlias()), - "Candidate tables"); - out_error = ErrorData(ExceptionType::BINDER, StringUtil::Format("Referenced table \"%s\" not found!%s", - alias.GetAlias(), candidate_str)); + auto main_alias = GetCandidateAlias(alias, alias); + string candidate_str = + StringUtil::CandidatesMessage(StringUtil::TopNJaroWinkler(candidates, main_alias), "Candidate tables"); + out_error = ErrorData(ExceptionType::BINDER, + StringUtil::Format("Referenced table \"%s\" not found!%s", main_alias, candidate_str)); } return matching_bindings; } diff --git a/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp b/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp index e5995d291..25388229e 100644 --- a/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +++ b/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp @@ -301,32 +301,36 @@ unique_ptr ExpressionBinder::QualifyColumnNameWithManyDotsInte // -> 4. resolve "part1" as a column // first check if part1 is a catalog + ErrorData fully_qualified_error; optional_ptr binding; if (col_ref.column_names.size() > 3) { binding = binder.GetMatchingBinding(col_ref.column_names[0], col_ref.column_names[1], col_ref.column_names[2], - col_ref.column_names[3], error); + col_ref.column_names[3], fully_qualified_error); if (binding) { // part1 is a catalog - the column reference is "catalog.schema.table.column" struct_extract_start = 4; return binder.bind_context.CreateColumnReference(binding->alias, col_ref.column_names[3]); } } + ErrorData catalog_table_error; binding = binder.GetMatchingBinding(col_ref.column_names[0], INVALID_SCHEMA, col_ref.column_names[1], - col_ref.column_names[2], error); + col_ref.column_names[2], catalog_table_error); if (binding) { // part1 is a catalog - the column reference is "catalog.table.column" struct_extract_start = 3; return binder.bind_context.CreateColumnReference(binding->alias, col_ref.column_names[2]); } - binding = - binder.GetMatchingBinding(col_ref.column_names[0], col_ref.column_names[1], col_ref.column_names[2], error); + ErrorData schema_table_error; + binding = binder.GetMatchingBinding(col_ref.column_names[0], col_ref.column_names[1], col_ref.column_names[2], + schema_table_error); if (binding) { // part1 is a schema - the column reference is "schema.table.column" // any additional fields are turned into struct_extract calls struct_extract_start = 3; return binder.bind_context.CreateColumnReference(binding->alias, col_ref.column_names[2]); } - binding = binder.GetMatchingBinding(col_ref.column_names[0], col_ref.column_names[1], error); + ErrorData table_column_error; + binding = binder.GetMatchingBinding(col_ref.column_names[0], col_ref.column_names[1], table_column_error); if (binding) { // part1 is a table // the column reference is "table.column" @@ -335,15 +339,95 @@ unique_ptr ExpressionBinder::QualifyColumnNameWithManyDotsInte return binder.bind_context.CreateColumnReference(binding->alias, col_ref.column_names[1]); } // part1 could be a column - ErrorData col_error; - auto result_expr = QualifyColumnName(col_ref.column_names[0], col_error); + ErrorData unused_error; + auto result_expr = QualifyColumnName(col_ref.column_names[0], unused_error); if (result_expr) { // it is! add the struct extract calls struct_extract_start = 1; return result_expr; } - return CreateStructPack(col_ref); + auto struct_pack = CreateStructPack(col_ref); + if (struct_pack) { + return struct_pack; + } + + // we could not find the column - return an error + // try to find out which error to return + optional_idx catalog_pos; + optional_idx schema_pos; + optional_idx table_pos; + for (const auto &binding_entry : binder.bind_context.GetBindingsList()) { + auto &alias = binding_entry->alias; + string catalog = alias.GetCatalog(); + string schema = alias.GetSchema(); + string table = alias.GetAlias(); + auto entry = binding_entry->GetStandardEntry(); + if (entry) { + catalog = entry->ParentCatalog().GetName(); + schema = entry->ParentSchema().name; + } + + for (idx_t i = 0; i < 3; i++) { + if (catalog == col_ref.column_names[i]) { + catalog_pos = i; + } + if (schema == col_ref.column_names[i]) { + schema_pos = i; + } + if (table == col_ref.column_names[i]) { + table_pos = i; + } + } + } + + error = std::move(table_column_error); + if (table_pos.IsValid()) { + // we have a valid table + if (table_pos.GetIndex() == 0) { + // the first column is a valid table - return the error as if we were binding the column as the second + + } else if (table_pos.GetIndex() == 1) { + // the first column is a valid table + // this means either the first column is a catalog OR the first column is a schema + if (catalog_pos.IsValid()) { + // catalog.table + error = std::move(catalog_table_error); + } else { + // assume schema.table otherwise + error = std::move(schema_table_error); + } + } else if (col_ref.column_names.size() > 3) { + // the second column is a valid table + // return the fully qualified error if we have enough components + error = std::move(fully_qualified_error); + } + } else if (catalog_pos.IsValid()) { + // the first column is a catalog + if (schema_pos.IsValid()) { + // AND a valid schema - this is likely "catalog.schema.table" + if (col_ref.column_names.size() > 3) { + error = std::move(fully_qualified_error); + } else { + error = std::move(catalog_table_error); + } + } else { + // but no valid schema - this could be either "catalog.schema.table" or "catalog.table" + // return "catalog.table" for now + error = std::move(catalog_table_error); + } + } else if (schema_pos.IsValid()) { + // we did not find a catalog or a table, but we did find a schema + if (schema_pos.GetIndex() == 0) { + // "schema.table" + error = std::move(schema_table_error); + } else if (schema_pos.GetIndex() == 1 && col_ref.column_names.size() > 3) { + // catalog.schema.table + error = std::move(fully_qualified_error); + } + } + return nullptr; } + unique_ptr ExpressionBinder::QualifyColumnNameWithManyDots(ColumnRefExpression &col_ref, ErrorData &error) { idx_t struct_extract_start = col_ref.column_names.size(); diff --git a/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp b/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp index 4e59c4828..cc42a1e4c 100644 --- a/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +++ b/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp @@ -16,10 +16,44 @@ namespace duckdb { -BindResult ExpressionBinder::TryBindLambdaOrJson(FunctionExpression &function, idx_t depth, CatalogEntry &func) { +BindResult ExpressionBinder::TryBindLambdaOrJson(FunctionExpression &function, idx_t depth, CatalogEntry &func, + const LambdaSyntaxType syntax_type) { + if (syntax_type == LambdaSyntaxType::LAMBDA_KEYWORD) { + // lambda x: x + 1 syntax. + return BindLambdaFunction(function, func.Cast(), depth); + } + + auto &config = ClientConfig::GetConfig(context); + auto setting = config.lambda_syntax; + bool invalid_syntax = + setting == LambdaSyntax::DISABLE_SINGLE_ARROW && syntax_type == LambdaSyntaxType::SINGLE_ARROW; + const string msg = "Deprecated lambda arrow (->) detected. Please transition to the new lambda syntax, " + "i.e.., lambda x, i: x + i, before DuckDB's next release. \n" + "Use SET lambda_syntax='ENABLE_SINGLE_ARROW' to revert to the deprecated behavior. \n" + "For more information, see https://duckdb.org/docs/stable/sql/functions/lambda.html."; + + BindResult lambda_bind_result; + ErrorData error; + try { + lambda_bind_result = BindLambdaFunction(function, func.Cast(), depth); + } catch (const std::exception &ex) { + error = ErrorData(ex); + } + + if (error.HasError() && error.Type() == ExceptionType::PARAMETER_NOT_RESOLVED && invalid_syntax) { + ErrorData deprecation_error(ExceptionType::BINDER, msg); + deprecation_error.Throw(); + } else if (error.HasError()) { + error.Throw(); + } - auto lambda_bind_result = BindLambdaFunction(function, func.Cast(), depth); if (!lambda_bind_result.HasError()) { + if (!invalid_syntax) { + return lambda_bind_result; + } + return BindResult(msg); + } + if (StringUtil::Contains(lambda_bind_result.error.RawMessage(), "Deprecated lambda arrow (->) detected.")) { return lambda_bind_result; } @@ -56,18 +90,25 @@ BindResult ExpressionBinder::BindExpression(FunctionExpression &function, idx_t // not a table function - check if the schema is set if (!function.schema.empty()) { // the schema is set - check if we can turn this the schema into a column ref - ErrorData error; - unique_ptr colref; - if (function.catalog.empty()) { - colref = make_uniq(function.schema); - } else { - colref = make_uniq(function.schema, function.catalog); - } - auto new_colref = QualifyColumnName(*colref, error); - bool is_col = !error.HasError(); - bool is_col_alias = QualifyColumnAlias(*colref); - - if (is_col || is_col_alias) { + // does this function exist in the system catalog? + func = GetCatalogEntry(INVALID_CATALOG, INVALID_SCHEMA, function_lookup, OnEntryNotFound::RETURN_NULL); + if (func) { + // the function exists in the system catalog - turn this into a dot call + ErrorData error; + unique_ptr colref; + if (function.catalog.empty()) { + colref = make_uniq(function.schema); + } else { + colref = make_uniq(function.schema, function.catalog); + } + auto new_colref = QualifyColumnName(*colref, error); + if (error.HasError()) { + // could not find the column - try to qualify the alias + if (!QualifyColumnAlias(*colref)) { + // no alias found either - throw + error.Throw(); + } + } // we can! transform this into a function call on the column // i.e. "x.lower()" becomes "lower(x)" function.children.insert(function.children.begin(), std::move(colref)); @@ -76,7 +117,10 @@ BindResult ExpressionBinder::BindExpression(FunctionExpression &function, idx_t } } // rebind the function - func = GetCatalogEntry(function.catalog, function.schema, function_lookup, OnEntryNotFound::THROW_EXCEPTION); + if (!func) { + func = + GetCatalogEntry(function.catalog, function.schema, function_lookup, OnEntryNotFound::THROW_EXCEPTION); + } } if (func->type != CatalogType::AGGREGATE_FUNCTION_ENTRY && @@ -88,8 +132,10 @@ BindResult ExpressionBinder::BindExpression(FunctionExpression &function, idx_t switch (func->type) { case CatalogType::SCALAR_FUNCTION_ENTRY: { - if (function.IsLambdaFunction()) { - return TryBindLambdaOrJson(function, depth, *func); + auto child = function.IsLambdaFunction(); + if (child) { + auto syntax_type = child->Cast().syntax_type; + return TryBindLambdaOrJson(function, depth, *func, syntax_type); } return BindFunction(function, func->Cast(), depth); } diff --git a/src/duckdb/src/planner/binder/expression/bind_lambda.cpp b/src/duckdb/src/planner/binder/expression/bind_lambda.cpp index 83e9e84ae..8adcf0abd 100644 --- a/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +++ b/src/duckdb/src/planner/binder/expression/bind_lambda.cpp @@ -35,7 +35,7 @@ idx_t GetLambdaParamIndex(const vector &lambda_bindings, const Bou return offset; } -void ExtractParameter(ParsedExpression &expr, vector &column_names, vector &column_aliases) { +void ExtractParameter(const ParsedExpression &expr, vector &column_names, vector &column_aliases) { auto &column_ref = expr.Cast(); if (column_ref.IsQualified()) { @@ -64,6 +64,9 @@ void ExtractParameters(LambdaExpression &expr, vector &column_names, vec BindResult ExpressionBinder::BindExpression(LambdaExpression &expr, idx_t depth, const LogicalType &list_child_type, optional_ptr bind_lambda_function) { + if (expr.syntax_type == LambdaSyntaxType::LAMBDA_KEYWORD && !bind_lambda_function) { + return BindResult("invalid lambda expression"); + } if (!bind_lambda_function) { // This is not a lambda expression, but the JSON arrow operator. diff --git a/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp b/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp index 876f8336f..f48fc14e6 100644 --- a/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +++ b/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp @@ -204,10 +204,11 @@ void TryTransformStarLike(unique_ptr &root) { // for other expressions -> generate a columns expression // "* LIKE '%literal%' // -> COLUMNS(list_filter(*, x -> x LIKE '%literal%')) - auto lhs = make_uniq("__lambda_col"); - function.children[0] = lhs->Copy(); + vector named_parameters; + named_parameters.push_back("__lambda_col"); + function.children[0] = make_uniq("__lambda_col"); - auto lambda = make_uniq(std::move(lhs), std::move(root)); + auto lambda = make_uniq(std::move(named_parameters), std::move(root)); vector> filter_children; filter_children.push_back(std::move(star_expr)); filter_children.push_back(std::move(lambda)); @@ -300,7 +301,21 @@ void Binder::ExpandStarExpression(unique_ptr expr, new_list.push_back(std::move(expanded_expr)); } if (new_list.empty()) { - auto err = StringUtil::Format("No matching columns found that match regex \"%s\"", regex_str); + vector candidates; + for (auto &expanded_expr : star_list) { + auto child_expr = GetResolvedColumnExpression(*expanded_expr); + if (!child_expr) { + continue; + } + auto &colref = child_expr->Cast(); + candidates.push_back(colref.GetColumnName()); + } + string candidate_str; + if (!candidates.empty()) { + candidate_str = "\n" + StringUtil::CandidatesErrorMessage(candidates, regex_str, "Did you mean"); + } + auto err = + StringUtil::Format("No matching columns found that match regex \"%s\"%s", regex_str, candidate_str); throw BinderException(*star, err); } star_list = std::move(new_list); diff --git a/src/duckdb/src/planner/binder/statement/bind_copy.cpp b/src/duckdb/src/planner/binder/statement/bind_copy.cpp index fd865164e..952ddb41e 100644 --- a/src/duckdb/src/planner/binder/statement/bind_copy.cpp +++ b/src/duckdb/src/planner/binder/statement/bind_copy.cpp @@ -57,6 +57,7 @@ BoundStatement Binder::BindCopyTo(CopyStatement &stmt, CopyToType copy_to_type) bool seen_filepattern = false; bool write_partition_columns = false; bool write_empty_file = true; + bool hive_file_pattern = true; PreserveOrderType preserve_order = PreserveOrderType::AUTOMATIC; CopyFunctionReturnType return_type = CopyFunctionReturnType::CHANGED_ROWS; @@ -137,6 +138,8 @@ BoundStatement Binder::BindCopyTo(CopyStatement &stmt, CopyToType copy_to_type) write_partition_columns = GetBooleanArg(context, option.second); } else if (loption == "write_empty_file") { write_empty_file = GetBooleanArg(context, option.second); + } else if (loption == "hive_file_pattern") { + hive_file_pattern = GetBooleanArg(context, option.second); } else { stmt.info->options[option.first] = option.second; } @@ -271,6 +274,7 @@ BoundStatement Binder::BindCopyTo(CopyStatement &stmt, CopyToType copy_to_type) copy->write_empty_file = write_empty_file; copy->return_type = return_type; copy->preserve_order = preserve_order; + copy->hive_file_pattern = hive_file_pattern; copy->names = unique_column_names; copy->expected_types = select_node.types; diff --git a/src/duckdb/src/planner/binder/statement/bind_update.cpp b/src/duckdb/src/planner/binder/statement/bind_update.cpp index dbe9e4971..c58edbf29 100644 --- a/src/duckdb/src/planner/binder/statement/bind_update.cpp +++ b/src/duckdb/src/planner/binder/statement/bind_update.cpp @@ -33,7 +33,12 @@ unique_ptr Binder::BindUpdateSet(LogicalOperator &op, unique_pt auto &colname = set_info.columns[i]; auto &expr = set_info.expressions[i]; if (!table.ColumnExists(colname)) { - throw BinderException("Referenced update column %s not found in table!", colname); + vector column_names; + for (auto &col : table.GetColumns().Physical()) { + column_names.push_back(col.Name()); + } + auto candidates = StringUtil::CandidatesErrorMessage(column_names, colname, "Did you mean"); + throw BinderException("Referenced update column %s not found in table!\n%s", colname, candidates); } auto &column = table.GetColumn(colname); if (column.Generated()) { diff --git a/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp b/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp index 284125639..0864d95c7 100644 --- a/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +++ b/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp @@ -267,7 +267,7 @@ unique_ptr Binder::BindTableFunctionInternal(TableFunction &tab get->named_parameters = named_parameters; get->input_table_types = input_table_types; get->input_table_names = input_table_names; - if (table_function.in_out_function && !table_function.projection_pushdown) { + if (table_function.in_out_function) { for (idx_t i = 0; i < return_types.size(); i++) { get->AddColumnId(i); } diff --git a/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp b/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp index 41728aeba..f192d9bc8 100644 --- a/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +++ b/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp @@ -214,9 +214,6 @@ unique_ptr LogicalComparisonJoin::CreateJoin(ClientContext &con // all conditions were pushed down, add TRUE predicate arbitrary_expressions.push_back(make_uniq(Value::BOOLEAN(true))); } - for (auto &condition : conditions) { - arbitrary_expressions.push_back(JoinCondition::CreateExpression(std::move(condition))); - } // if we get here we could not create any JoinConditions // turn this into an arbitrary expression join auto any_join = make_uniq(type); @@ -225,8 +222,21 @@ unique_ptr LogicalComparisonJoin::CreateJoin(ClientContext &con any_join->children.push_back(std::move(right_child)); // AND all the arbitrary expressions together // do the same with any remaining conditions - any_join->condition = std::move(arbitrary_expressions[0]); - for (idx_t i = 1; i < arbitrary_expressions.size(); i++) { + idx_t start_idx = 0; + if (conditions.empty()) { + // no conditions, just use the arbitrary expressions + any_join->condition = std::move(arbitrary_expressions[0]); + start_idx = 1; + } else { + // we have some conditions as well + any_join->condition = JoinCondition::CreateExpression(std::move(conditions[0])); + for (idx_t i = 1; i < conditions.size(); i++) { + any_join->condition = make_uniq( + ExpressionType::CONJUNCTION_AND, std::move(any_join->condition), + JoinCondition::CreateExpression(std::move(conditions[i]))); + } + } + for (idx_t i = start_idx; i < arbitrary_expressions.size(); i++) { any_join->condition = make_uniq( ExpressionType::CONJUNCTION_AND, std::move(any_join->condition), std::move(arbitrary_expressions[i])); } diff --git a/src/duckdb/src/planner/operator/logical_copy_to_file.cpp b/src/duckdb/src/planner/operator/logical_copy_to_file.cpp index 2a2842c38..1227d39a1 100644 --- a/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +++ b/src/duckdb/src/planner/operator/logical_copy_to_file.cpp @@ -68,6 +68,7 @@ void LogicalCopyToFile::Serialize(Serializer &serializer) const { serializer.WritePropertyWithDefault(216, "write_partition_columns", write_partition_columns, true); serializer.WritePropertyWithDefault(217, "write_empty_file", write_empty_file, true); serializer.WritePropertyWithDefault(218, "preserve_order", preserve_order, PreserveOrderType::AUTOMATIC); + serializer.WritePropertyWithDefault(219, "hive_file_pattern", hive_file_pattern, true); } unique_ptr LogicalCopyToFile::Deserialize(Deserializer &deserializer) { @@ -115,6 +116,7 @@ unique_ptr LogicalCopyToFile::Deserialize(Deserializer &deseria auto write_empty_file = deserializer.ReadPropertyWithExplicitDefault(217, "write_empty_file", true); auto preserve_order = deserializer.ReadPropertyWithExplicitDefault(218, "preserve_order", PreserveOrderType::AUTOMATIC); + auto hive_file_pattern = deserializer.ReadPropertyWithExplicitDefault(219, "hive_file_pattern", true); if (!has_serialize) { // If not serialized, re-bind with the copy info @@ -144,6 +146,7 @@ unique_ptr LogicalCopyToFile::Deserialize(Deserializer &deseria result->write_partition_columns = write_partition_columns; result->write_empty_file = write_empty_file; result->preserve_order = preserve_order; + result->hive_file_pattern = hive_file_pattern; return std::move(result); } diff --git a/src/duckdb/src/planner/operator/logical_empty_result.cpp b/src/duckdb/src/planner/operator/logical_empty_result.cpp index 28b014ff2..12c1653b3 100644 --- a/src/duckdb/src/planner/operator/logical_empty_result.cpp +++ b/src/duckdb/src/planner/operator/logical_empty_result.cpp @@ -11,6 +11,11 @@ LogicalEmptyResult::LogicalEmptyResult(unique_ptr op) this->return_types = op->types; } +LogicalEmptyResult::LogicalEmptyResult(vector return_types_p, vector bindings_p) + : LogicalOperator(LogicalOperatorType::LOGICAL_EMPTY_RESULT), return_types(std::move(return_types_p)), + bindings(std::move(bindings_p)) { +} + LogicalEmptyResult::LogicalEmptyResult() : LogicalOperator(LogicalOperatorType::LOGICAL_EMPTY_RESULT) { } diff --git a/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp b/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp index 7ce77f460..607a0d065 100644 --- a/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +++ b/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp @@ -922,7 +922,7 @@ unique_ptr FlattenDependentJoins::PushDownDependentJoinInternal for (idx_t i = 0; i < correlated_columns.size(); i++) { get.projected_input.push_back(this->delim_offset + i); } - this->delim_offset = get.returned_types.size(); + this->delim_offset = get.GetColumnIds().size(); this->data_offset = 0; RewriteCorrelatedExpressions rewriter(base_binding, correlated_map, lateral_depth); diff --git a/src/duckdb/src/storage/caching_file_system.cpp b/src/duckdb/src/storage/caching_file_system.cpp index 67dd77cc4..5a6a10bc3 100644 --- a/src/duckdb/src/storage/caching_file_system.cpp +++ b/src/duckdb/src/storage/caching_file_system.cpp @@ -54,13 +54,12 @@ CachingFileHandle::~CachingFileHandle() { FileHandle &CachingFileHandle::GetFileHandle() { if (!file_handle) { - const auto current_time = duration_cast(system_clock::now().time_since_epoch()).count(); file_handle = caching_file_system.file_system.OpenFile(path, flags); last_modified = caching_file_system.file_system.GetLastModifiedTime(*file_handle); version_tag = caching_file_system.file_system.GetVersionTag(*file_handle); auto guard = cached_file.lock.GetExclusiveLock(); - if (!cached_file.IsValid(guard, validate, version_tag, last_modified, current_time)) { + if (!cached_file.IsValid(guard, validate, version_tag, last_modified)) { cached_file.Ranges(guard).clear(); // Invalidate entire cache } cached_file.FileSize(guard) = file_handle->GetFileSize(); @@ -165,6 +164,19 @@ time_t CachingFileHandle::GetLastModifiedTime() { return cached_file.LastModified(guard); } +string CachingFileHandle::GetVersionTag() { + if (file_handle || validate) { + GetFileHandle(); + return version_tag; + } + auto guard = cached_file.lock.GetSharedLock(); + return cached_file.VersionTag(guard); +} + +bool CachingFileHandle::Validate() const { + return validate; +} + bool CachingFileHandle::CanSeek() { if (file_handle || validate) { return GetFileHandle().CanSeek(); diff --git a/src/duckdb/src/storage/compression/dict_fsst.cpp b/src/duckdb/src/storage/compression/dict_fsst.cpp new file mode 100644 index 000000000..f2307bc6e --- /dev/null +++ b/src/duckdb/src/storage/compression/dict_fsst.cpp @@ -0,0 +1,257 @@ +#include "duckdb/storage/compression/dict_fsst/common.hpp" +#include "duckdb/storage/compression/dict_fsst/analyze.hpp" +#include "duckdb/storage/compression/dict_fsst/compression.hpp" +#include "duckdb/storage/compression/dict_fsst/decompression.hpp" +#include "duckdb/function/compression/compression.hpp" +#include "duckdb/function/compression_function.hpp" + +/* +Data layout per segment: ++-----------------------------------------------------+ +| Header | +| +---------------------------------------------+ | +| | dict_fsst_compression_header_t header | | +| +---------------------------------------------+ | +| | ++-----------------------------------------------------+ +| Selection Buffer | +| +------------------------------------+ | +| | uint16_t index_buffer_idx[] | | +| +------------------------------------+ | +| tuple index -> index buffer idx | +| | ++--------------------------------------------+ +| Index Buffer | +| +------------------------------------+ | +| | uint16_t dictionary_offset[] | | +| +------------------------------------+ | +| string_index -> offset in the dictionary | +| | ++--------------------------------------------+ +| Dictionary | +| +------------------------------------+ | +| | uint8_t *raw_string_data | | +| +------------------------------------+ | +| the string data without lengths | +| | ++--------------------------------------------+ +| FSST Symbol Table (opt) | +| +------------------------------------+ | +| | duckdb_fsst_decoder_t table | | +| +------------------------------------+ | +| | ++--------------------------------------------+ +*/ + +namespace duckdb { +namespace dict_fsst { + +struct DictFSSTCompressionStorage { + static unique_ptr StringInitAnalyze(ColumnData &col_data, PhysicalType type); + static bool StringAnalyze(AnalyzeState &state_p, Vector &input, idx_t count); + static idx_t StringFinalAnalyze(AnalyzeState &state_p); + + static unique_ptr InitCompression(ColumnDataCheckpointData &checkpoint_data, + unique_ptr state); + static void Compress(CompressionState &state_p, Vector &scan_vector, idx_t count); + static void FinalizeCompress(CompressionState &state_p); + + static unique_ptr StringInitScan(ColumnSegment &segment); + template + static void StringScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, Vector &result, + idx_t result_offset); + static void StringScan(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, Vector &result); + static void StringFetchRow(ColumnSegment &segment, ColumnFetchState &state, row_t row_id, Vector &result, + idx_t result_idx); +}; + +//===--------------------------------------------------------------------===// +// Analyze +//===--------------------------------------------------------------------===// +unique_ptr DictFSSTCompressionStorage::StringInitAnalyze(ColumnData &col_data, PhysicalType type) { + auto &storage_manager = col_data.GetStorageManager(); + if (storage_manager.GetStorageVersion() < 5) { + // dict_fsst not introduced yet, disable it + return nullptr; + } + + CompressionInfo info(col_data.GetBlockManager()); + return make_uniq(info); +} + +bool DictFSSTCompressionStorage::StringAnalyze(AnalyzeState &state_p, Vector &input, idx_t count) { + auto &analyze_state = state_p.Cast(); + return analyze_state.Analyze(input, count); +} + +idx_t DictFSSTCompressionStorage::StringFinalAnalyze(AnalyzeState &state_p) { + auto &analyze_state = state_p.Cast(); + return analyze_state.FinalAnalyze(); +} + +//===--------------------------------------------------------------------===// +// Compress +//===--------------------------------------------------------------------===// +unique_ptr DictFSSTCompressionStorage::InitCompression(ColumnDataCheckpointData &checkpoint_data, + unique_ptr state) { + return make_uniq(checkpoint_data, + unique_ptr_cast(std::move(state))); +} + +void DictFSSTCompressionStorage::Compress(CompressionState &state_p, Vector &scan_vector, idx_t count) { + auto &state = state_p.Cast(); + state.Compress(scan_vector, count); +} + +void DictFSSTCompressionStorage::FinalizeCompress(CompressionState &state_p) { + auto &state = state_p.Cast(); + state.Flush(true); +} + +//===--------------------------------------------------------------------===// +// Scan +//===--------------------------------------------------------------------===// +unique_ptr DictFSSTCompressionStorage::StringInitScan(ColumnSegment &segment) { + auto &buffer_manager = BufferManager::GetBufferManager(segment.db); + auto state = make_uniq(segment, buffer_manager.Pin(segment.block)); + state->Initialize(true); + if (StringStats::HasMaxStringLength(segment.stats.statistics)) { + state->all_values_inlined = StringStats::MaxStringLength(segment.stats.statistics) <= string_t::INLINE_LENGTH; + } + return std::move(state); +} + +//===--------------------------------------------------------------------===// +// Scan base data +//===--------------------------------------------------------------------===// +template +void DictFSSTCompressionStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, + Vector &result, idx_t result_offset) { + // clear any previously locked buffers and get the primary buffer handle + auto &scan_state = state.scan_state->Cast(); + + auto start = segment.GetRelativeIndex(state.row_index); + if (!ALLOW_DICT_VECTORS || !scan_state.AllowDictionaryScan(start, scan_count)) { + scan_state.ScanToFlatVector(result, result_offset, start, scan_count); + } else { + scan_state.ScanToDictionaryVector(segment, result, result_offset, start, scan_count); + } +} + +void DictFSSTCompressionStorage::StringScan(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, + Vector &result) { + StringScanPartial(segment, state, scan_count, result, 0); +} + +//===--------------------------------------------------------------------===// +// Fetch +//===--------------------------------------------------------------------===// +void DictFSSTCompressionStorage::StringFetchRow(ColumnSegment &segment, ColumnFetchState &state, row_t row_id, + Vector &result, idx_t result_idx) { + // fetch a single row from the string segment + CompressedStringScanState scan_state(segment, state.GetOrInsertHandle(segment)); + scan_state.Initialize(false); + scan_state.ScanToFlatVector(result, result_idx, NumericCast(row_id), 1); +} + +//===--------------------------------------------------------------------===// +// Select +//===--------------------------------------------------------------------===// +void DictFSSTSelect(ColumnSegment &segment, ColumnScanState &state, idx_t vector_count, Vector &result, + const SelectionVector &sel, idx_t sel_count) { + auto &scan_state = state.scan_state->Cast(); + if (scan_state.mode == DictFSSTMode::FSST_ONLY) { + // for FSST only + auto start = segment.GetRelativeIndex(state.row_index); + scan_state.Select(result, start, sel, sel_count); + return; + } + // fallback: scan + slice + DictFSSTCompressionStorage::StringScan(segment, state, vector_count, result); + result.Slice(sel, sel_count); +} + +//===--------------------------------------------------------------------===// +// Filter +//===--------------------------------------------------------------------===// +static void DictFSSTFilter(ColumnSegment &segment, ColumnScanState &state, idx_t vector_count, Vector &result, + SelectionVector &sel, idx_t &sel_count, const TableFilter &filter, + TableFilterState &filter_state) { + auto &scan_state = state.scan_state->Cast(); + auto start = segment.GetRelativeIndex(state.row_index); + if (scan_state.AllowDictionaryScan(start, vector_count)) { + // only pushdown filters on dictionaries + if (!scan_state.filter_result) { + // no filter result yet - apply filter to the dictionary + // initialize the filter result - setting everything to false + scan_state.filter_result = make_unsafe_uniq_array(scan_state.dict_count); + + // apply the filter + UnifiedVectorFormat vdata; + scan_state.dictionary->ToUnifiedFormat(scan_state.dict_count, vdata); + SelectionVector dict_sel; + idx_t filter_count = scan_state.dict_count; + ColumnSegment::FilterSelection(dict_sel, *scan_state.dictionary, vdata, filter, filter_state, + scan_state.dict_count, filter_count); + + // now set all matching tuples to true + for (idx_t i = 0; i < filter_count; i++) { + auto idx = dict_sel.get_index(i); + scan_state.filter_result[idx] = true; + } + } + auto &dict_sel = scan_state.GetSelVec(start, vector_count); + SelectionVector new_sel(sel_count); + idx_t approved_tuple_count = 0; + for (idx_t idx = 0; idx < sel_count; idx++) { + auto row_idx = sel.get_index(idx); + auto dict_offset = dict_sel.get_index(row_idx); + if (!scan_state.filter_result[dict_offset]) { + // does not pass the filter + continue; + } + new_sel.set_index(approved_tuple_count++, row_idx); + } + if (approved_tuple_count < vector_count) { + sel.Initialize(new_sel); + } + sel_count = approved_tuple_count; + + result.Dictionary(*(scan_state.dictionary), scan_state.dict_count, dict_sel, vector_count); + DictionaryVector::SetDictionaryId(result, to_string(CastPointerToValue(&segment))); + return; + } + // fallback: scan + filter + DictFSSTCompressionStorage::StringScan(segment, state, vector_count, result); + + UnifiedVectorFormat vdata; + result.ToUnifiedFormat(vector_count, vdata); + ColumnSegment::FilterSelection(sel, result, vdata, filter, filter_state, vector_count, sel_count); +} + +} // namespace dict_fsst + +//===--------------------------------------------------------------------===// +// Get Function +//===--------------------------------------------------------------------===// +CompressionFunction DictFSSTCompressionFun::GetFunction(PhysicalType data_type) { + auto res = CompressionFunction( + CompressionType::COMPRESSION_DICT_FSST, data_type, dict_fsst::DictFSSTCompressionStorage::StringInitAnalyze, + dict_fsst::DictFSSTCompressionStorage::StringAnalyze, dict_fsst::DictFSSTCompressionStorage::StringFinalAnalyze, + dict_fsst::DictFSSTCompressionStorage::InitCompression, dict_fsst::DictFSSTCompressionStorage::Compress, + dict_fsst::DictFSSTCompressionStorage::FinalizeCompress, dict_fsst::DictFSSTCompressionStorage::StringInitScan, + dict_fsst::DictFSSTCompressionStorage::StringScan, + dict_fsst::DictFSSTCompressionStorage::StringScanPartial, + dict_fsst::DictFSSTCompressionStorage::StringFetchRow, UncompressedFunctions::EmptySkip, + UncompressedStringStorage::StringInitSegment); + res.validity = CompressionValidity::NO_VALIDITY_REQUIRED; + res.select = dict_fsst::DictFSSTSelect; + res.filter = dict_fsst::DictFSSTFilter; + return res; +} + +bool DictFSSTCompressionFun::TypeIsSupported(const PhysicalType physical_type) { + return physical_type == PhysicalType::VARCHAR; +} + +} // namespace duckdb diff --git a/src/duckdb/src/storage/compression/dict_fsst/analyze.cpp b/src/duckdb/src/storage/compression/dict_fsst/analyze.cpp new file mode 100644 index 000000000..d4feaf88a --- /dev/null +++ b/src/duckdb/src/storage/compression/dict_fsst/analyze.cpp @@ -0,0 +1,41 @@ +#include "duckdb/storage/compression/dict_fsst/analyze.hpp" +#include "fsst.h" + +namespace duckdb { +namespace dict_fsst { + +DictFSSTAnalyzeState::DictFSSTAnalyzeState(const CompressionInfo &info) : AnalyzeState(info) { +} + +bool DictFSSTAnalyzeState::Analyze(Vector &input, idx_t count) { + UnifiedVectorFormat vector_format; + input.ToUnifiedFormat(count, vector_format); + auto strings = vector_format.GetData(vector_format); + + for (idx_t i = 0; i < count; i++) { + auto idx = vector_format.sel->get_index(i); + if (!vector_format.validity.RowIsValid(i)) { + contains_nulls = true; + } else { + auto &str = strings[idx]; + auto str_len = str.GetSize(); + total_string_length += str_len; + if (str_len > max_string_length) { + max_string_length = str_len; + } + if (str_len >= DictFSSTCompression::STRING_SIZE_LIMIT) { + //! This string is too long, we don't want to use DICT_FSST for this rowgroup + return false; + } + } + } + total_count += count; + return true; +} + +idx_t DictFSSTAnalyzeState::FinalAnalyze() { + return LossyNumericCast((double)total_string_length / 2.0); +} + +} // namespace dict_fsst +} // namespace duckdb diff --git a/src/duckdb/src/storage/compression/dict_fsst/compression.cpp b/src/duckdb/src/storage/compression/dict_fsst/compression.cpp new file mode 100644 index 000000000..dff33da74 --- /dev/null +++ b/src/duckdb/src/storage/compression/dict_fsst/compression.cpp @@ -0,0 +1,853 @@ +#include "duckdb/storage/compression/dict_fsst/compression.hpp" +#include "duckdb/storage/segment/uncompressed.hpp" +#include "duckdb/common/typedefs.hpp" +#include "fsst.h" +#include "duckdb/common/fsst.hpp" + +namespace duckdb { +namespace dict_fsst { + +DictFSSTCompressionState::DictFSSTCompressionState(ColumnDataCheckpointData &checkpoint_data_p, + unique_ptr &&analyze_p) + : CompressionState(analyze_p->info), checkpoint_data(checkpoint_data_p), + function(checkpoint_data.GetCompressionFunction(CompressionType::COMPRESSION_DICT_FSST)), + analyze(std::move(analyze_p)) { + CreateEmptySegment(checkpoint_data.GetRowGroup().start); +} + +DictFSSTCompressionState::~DictFSSTCompressionState() { + if (encoder) { + auto fsst_encoder = reinterpret_cast(encoder); + duckdb_fsst_destroy(fsst_encoder); + } +} + +static constexpr uint16_t FSST_SYMBOL_TABLE_SIZE = sizeof(duckdb_fsst_decoder_t); +static constexpr idx_t DICTIONARY_ENCODE_THRESHOLD = 4096; + +static inline bool IsEncoded(DictionaryAppendState state) { + return state == DictionaryAppendState::ENCODED || state == DictionaryAppendState::ENCODED_ALL_UNIQUE; +} + +static DictFSSTMode ConvertToMode(DictionaryAppendState &state) { + switch (state) { + case DictionaryAppendState::ENCODED: + return DictFSSTMode::DICT_FSST; + case DictionaryAppendState::REGULAR: + case DictionaryAppendState::NOT_ENCODED: + return DictFSSTMode::DICTIONARY; + case DictionaryAppendState::ENCODED_ALL_UNIQUE: + return DictFSSTMode::FSST_ONLY; + default: + throw InternalException("DictFSSTMode not handled!"); + } +} + +idx_t DictFSSTCompressionState::Finalize() { + const bool is_fsst_encoded = IsEncoded(append_state); + +// calculate sizes +#ifdef DEBUG + { + auto dictionary_indices_space = BitpackingPrimitives::GetRequiredSize(tuple_count, dictionary_indices_width); + D_ASSERT(dictionary_indices_space == this->dictionary_indices_space); + + auto string_lengths_space = BitpackingPrimitives::GetRequiredSize(dict_count, string_lengths_width); + D_ASSERT(string_lengths_space == this->string_lengths_space); + + if (append_state == DictionaryAppendState::ENCODED_ALL_UNIQUE) { + D_ASSERT(dictionary_indices_space == 0); + } + } +#endif + + if (!is_fsst_encoded) { + symbol_table_size = 0; + } + + D_ASSERT(to_encode_string_sum == 0); + D_ASSERT(symbol_table_size != DConstants::INVALID_INDEX); + + idx_t required_space = 0; + required_space += sizeof(dict_fsst_compression_header_t); + required_space = AlignValue(required_space); + required_space += dictionary_offset; + required_space = AlignValue(required_space); + if (is_fsst_encoded) { + required_space += symbol_table_size; + required_space = AlignValue(required_space); + } + required_space += string_lengths_space; + required_space = AlignValue(required_space); + required_space += dictionary_indices_space; + + D_ASSERT(info.GetBlockSize() >= required_space); + + // calculate ptr and offsets + auto base_ptr = current_handle.Ptr(); + auto header_ptr = reinterpret_cast(base_ptr); + auto dictionary_dest = AlignValue(DictFSSTCompression::DICTIONARY_HEADER_SIZE); + auto symbol_table_dest = AlignValue(dictionary_dest + dictionary_offset); + auto string_lengths_dest = AlignValue(symbol_table_dest + symbol_table_size); + auto dictionary_indices_dest = AlignValue(string_lengths_dest + string_lengths_space); + + header_ptr->mode = ConvertToMode(append_state); + header_ptr->symbol_table_size = NumericCast(symbol_table_size); + header_ptr->dict_size = NumericCast(dictionary_offset); + header_ptr->dict_count = NumericCast(dict_count); + header_ptr->dictionary_indices_width = dictionary_indices_width; + header_ptr->string_lengths_width = string_lengths_width; + + // Write the symbol table + if (is_fsst_encoded) { + D_ASSERT(symbol_table_size != DConstants::INVALID_INDEX); + memcpy(base_ptr + symbol_table_dest, fsst_serialized_symbol_table.get(), symbol_table_size); + } + + // Write the string lengths of the dictionary + BitpackingPrimitives::PackBuffer(base_ptr + string_lengths_dest, string_lengths.data(), dict_count, + string_lengths_width); + // Write the dictionary indices (selection vector) + BitpackingPrimitives::PackBuffer(base_ptr + dictionary_indices_dest, + (sel_t *)(dictionary_indices.data()), tuple_count, + dictionary_indices_width); + +#ifdef DEBUG + if (append_state != DictionaryAppendState::ENCODED_ALL_UNIQUE) { + auto expected_bitwidth = BitpackingPrimitives::MinimumBitWidth(dict_count - 1); + D_ASSERT(dictionary_indices_width == expected_bitwidth); + } +#endif + D_ASSERT(base_ptr + required_space == base_ptr + dictionary_indices_dest + dictionary_indices_space); + D_ASSERT((uint64_t)*max_element(std::begin(dictionary_indices), std::end(dictionary_indices)) == dict_count - 1); + return required_space; +} + +idx_t DictFSSTCompressionState::CalculateRequiredSpace() const { + idx_t required_space = 0; + required_space += sizeof(dict_fsst_compression_header_t); + required_space = AlignValue(required_space); + required_space += dictionary_offset + to_encode_string_sum; + required_space = AlignValue(required_space); + if (IsEncoded(append_state)) { + required_space += symbol_table_size; + required_space = AlignValue(required_space); + } + required_space += string_lengths_space; + required_space = AlignValue(required_space); + required_space += dictionary_indices_space; + + return required_space; +} + +void DictFSSTCompressionState::FlushEncodingBuffer() { + if (dictionary_encoding_buffer.empty()) { + D_ASSERT(to_encode_string_sum == 0); + return; + } + + vector fsst_string_sizes; + vector fsst_string_ptrs; + + data_ptr_t dictionary_start = + AlignPointer(current_handle.Ptr() + sizeof(dict_fsst_compression_header_t)); + D_ASSERT(dictionary_encoding_buffer.size() == dict_count - string_lengths.size()); + auto string_count = dictionary_encoding_buffer.size(); + idx_t sum = 0; + for (auto &to_encode : dictionary_encoding_buffer) { + auto str_len = to_encode.GetSize(); + sum += str_len * 2; + fsst_string_sizes.push_back(str_len); + fsst_string_ptrs.push_back((unsigned char *)to_encode.GetData()); // NOLINT + } + (void)sum; + D_ASSERT(sum + 7 == to_encode_string_sum); + + auto compressed_ptrs = vector(string_count, nullptr); + auto compressed_sizes = vector(string_count, 0); + + // Compress the dictionary, straight to the segment + idx_t taken_space = 0; + taken_space += AlignValue(sizeof(dict_fsst_compression_header_t)); + taken_space += symbol_table_size; + taken_space = AlignValue(taken_space); + taken_space += string_lengths_space; + taken_space = AlignValue(taken_space); + taken_space += dictionary_indices_space; + taken_space = AlignValue(taken_space); + taken_space += dictionary_offset; + D_ASSERT(taken_space < info.GetBlockSize()); + + auto fsst_encoder = reinterpret_cast(encoder); + auto res = + duckdb_fsst_compress(fsst_encoder, string_count, fsst_string_sizes.data(), fsst_string_ptrs.data(), + info.GetBlockSize() - taken_space, (unsigned char *)dictionary_start + dictionary_offset, + compressed_sizes.data(), compressed_ptrs.data()); + if (res != string_count) { + throw FatalException("Somehow we did not have enough room in the segment to store the encoded strings"); + } + string_lengths_width = real_string_lengths_width; + //! The highest value that still requires the current string lengths width + uint32_t biggest_strlen = (1 << string_lengths_width) - 1; + D_ASSERT(BitpackingPrimitives::MinimumBitWidth(biggest_strlen) == string_lengths_width); + idx_t compressed_sum = 0; + for (idx_t i = 0; i < string_count; i++) { + auto str_len = UnsafeNumericCast(compressed_sizes[i]); + if (str_len >= biggest_strlen) { + biggest_strlen = str_len; + } + compressed_sum += str_len; + string_lengths.push_back(str_len); + dictionary_offset += str_len; + } + (void)compressed_sum; + D_ASSERT(compressed_sum <= to_encode_string_sum); + if (biggest_strlen >= NumericCast(1 << string_lengths_width)) { + string_lengths_width = BitpackingPrimitives::MinimumBitWidth(biggest_strlen); + } + real_string_lengths_width = string_lengths_width; + auto new_string_lengths_space = BitpackingPrimitives::GetRequiredSize(dict_count, string_lengths_width); + D_ASSERT(new_string_lengths_space <= string_lengths_space); + string_lengths_space = new_string_lengths_space; + + idx_t required_space = 0; + required_space += sizeof(dict_fsst_compression_header_t); + required_space = AlignValue(required_space); + required_space += dictionary_offset; + required_space = AlignValue(required_space); + required_space += symbol_table_size; + required_space = AlignValue(required_space); + required_space += string_lengths_space; + required_space = AlignValue(required_space); + required_space += dictionary_indices_space; + + D_ASSERT(required_space <= info.GetBlockSize()); + + D_ASSERT(string_lengths_space != 0); + to_encode_string_sum = 0; + dictionary_encoding_buffer.clear(); +} + +void DictFSSTCompressionState::CreateEmptySegment(idx_t row_start) { + auto &db = checkpoint_data.GetDatabase(); + auto &type = checkpoint_data.GetType(); + + auto compressed_segment = ColumnSegment::CreateTransientSegment(db, function, type, row_start, info.GetBlockSize(), + info.GetBlockManager()); + current_segment = std::move(compressed_segment); + + // Reset the pointers into the current segment. + auto &buffer_manager = BufferManager::GetBufferManager(checkpoint_data.GetDatabase()); + current_handle = buffer_manager.Pin(current_segment->block); + + append_state = DictionaryAppendState::REGULAR; + string_lengths_width = 0; + real_string_lengths_width = 0; + dictionary_indices_width = 0; + string_lengths_space = 0; + D_ASSERT(dictionary_indices.empty()); + dictionary_indices_space = 0; + tuple_count = 0; + D_ASSERT(string_lengths.empty()); + string_lengths.push_back(0); + dict_count = 1; + D_ASSERT(current_string_map.empty()); + symbol_table_size = DConstants::INVALID_INDEX; + + dictionary_offset = 0; +} + +void DictFSSTCompressionState::Flush(bool final) { + if (final) { + FlushEncodingBuffer(); + } + + if (!tuple_count) { + return; + } + + current_segment->count = tuple_count; + + auto next_start = current_segment->start + current_segment->count; + auto segment_size = Finalize(); + auto &state = checkpoint_data.GetCheckpointState(); + state.FlushSegment(std::move(current_segment), std::move(current_handle), segment_size); + + // Reset the state + uncompressed_dictionary_copy.Destroy(); + //! This should already be empty at this point, otherwise that means that strings are not encoded / not added to the + //! dictionary + D_ASSERT(dictionary_encoding_buffer.empty()); + D_ASSERT(to_encode_string_sum == 0); + + auto old_size = current_string_map.size(); + current_string_map.clear(); + if (!final) { + current_string_map.reserve(old_size); + } + string_lengths.clear(); + dictionary_indices.clear(); + if (encoder) { + auto fsst_encoder = reinterpret_cast(encoder); + duckdb_fsst_destroy(fsst_encoder); + encoder = nullptr; + symbol_table_size = DConstants::INVALID_INDEX; + } + total_tuple_count += tuple_count; + + if (!final) { + CreateEmptySegment(next_start); + } +} + +static inline bool RequiresHigherBitWidth(bitpacking_width_t bitwidth, uint32_t other) { + return other >= NumericCast(1 << bitwidth); +} + +template +static inline bool AddLookup(DictFSSTCompressionState &state, idx_t lookup, const bool recalculate_indices_space) { + D_ASSERT(lookup != DConstants::INVALID_INDEX); + + //! This string exists in the dictionary + idx_t new_dictionary_indices_space = state.dictionary_indices_space; + if (APPEND_STATE != DictionaryAppendState::ENCODED_ALL_UNIQUE && recalculate_indices_space) { + new_dictionary_indices_space = + BitpackingPrimitives::GetRequiredSize(state.tuple_count + 1, state.dictionary_indices_width); + } + + idx_t required_space = 0; + required_space += sizeof(dict_fsst_compression_header_t); + required_space = AlignValue(required_space); + required_space += state.dictionary_offset; + if (APPEND_STATE == DictionaryAppendState::ENCODED) { + required_space += state.to_encode_string_sum; + } + required_space = AlignValue(required_space); + if (IsEncoded(APPEND_STATE)) { + required_space += state.symbol_table_size; + required_space = AlignValue(required_space); + } + required_space += state.string_lengths_space; + required_space = AlignValue(required_space); + required_space += new_dictionary_indices_space; + + idx_t available_space = state.info.GetBlockSize(); + if (APPEND_STATE == DictionaryAppendState::REGULAR) { + available_space -= FSST_SYMBOL_TABLE_SIZE; + } + if (required_space > available_space) { + return false; + } + + if (recalculate_indices_space) { + state.dictionary_indices_space = new_dictionary_indices_space; + } + // Exists in the dictionary, add it + state.dictionary_indices.push_back(UnsafeNumericCast(lookup)); + return true; +} + +template +static inline bool AddToDictionary(DictFSSTCompressionState &state, const string_t &str, + const bool recalculate_indices_space) { + uint32_t str_len = UnsafeNumericCast(str.GetSize()); + if (APPEND_STATE == DictionaryAppendState::ENCODED) { + //! We delay encoding of new entries. + // Encoding can increase the size of the string by 2x max, so we prepare for this worst case scenario. + str_len *= 2; + } + + const bool requires_higher_strlen_bitwidth = RequiresHigherBitWidth(state.string_lengths_width, str_len); + const bool requires_higher_indices_bitwidth = + RequiresHigherBitWidth(state.dictionary_indices_width, state.dict_count); + // We round the required size up to bitpacking group sizes anyways, so we only have to recalculate every 32 values + const bool recalculate_strlen_space = + (state.dict_count % BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE) == 0; + + //! String Lengths + bitpacking_width_t new_string_lengths_width = state.string_lengths_width; + idx_t new_string_lengths_space = state.string_lengths_space; + if (requires_higher_strlen_bitwidth) { + new_string_lengths_width = BitpackingPrimitives::MinimumBitWidth(str_len); + } + if (requires_higher_strlen_bitwidth || recalculate_strlen_space) { + new_string_lengths_space = + BitpackingPrimitives::GetRequiredSize(state.dict_count + 1, new_string_lengths_width); + } + + //! Dictionary Indices + bitpacking_width_t new_dictionary_indices_width = state.dictionary_indices_width; + idx_t new_dictionary_indices_space = state.dictionary_indices_space; + if (APPEND_STATE != DictionaryAppendState::ENCODED_ALL_UNIQUE) { + if (requires_higher_indices_bitwidth) { + new_dictionary_indices_width = BitpackingPrimitives::MinimumBitWidth(state.dict_count); + } + if (requires_higher_indices_bitwidth || recalculate_indices_space) { + new_dictionary_indices_space = + BitpackingPrimitives::GetRequiredSize(state.tuple_count + 1, new_dictionary_indices_width); + } + } + + idx_t required_space = 0; + required_space += sizeof(dict_fsst_compression_header_t); + required_space = AlignValue(required_space); + required_space += state.dictionary_offset + str_len; + if (APPEND_STATE == DictionaryAppendState::ENCODED) { + if (!state.to_encode_string_sum) { + //! As specified in fsst.h + required_space += 7; + } + required_space += state.to_encode_string_sum; + } + required_space = AlignValue(required_space); + if (IsEncoded(APPEND_STATE)) { + required_space += state.symbol_table_size; + required_space = AlignValue(required_space); + } + required_space += new_string_lengths_space; + required_space = AlignValue(required_space); + required_space += new_dictionary_indices_space; + + idx_t available_space = state.info.GetBlockSize(); + if (APPEND_STATE == DictionaryAppendState::REGULAR) { + available_space -= FSST_SYMBOL_TABLE_SIZE; + } + if (required_space > available_space) { + return false; + } + + // Add it to the dictionary + state.dictionary_indices.push_back(state.dict_count); + if (APPEND_STATE == DictionaryAppendState::ENCODED) { + if (str.IsInlined()) { + state.dictionary_encoding_buffer.push_back(str); + } else { + state.dictionary_encoding_buffer.push_back(state.uncompressed_dictionary_copy.AddString(str)); + } + if (!state.to_encode_string_sum) { + //! As specified in fsst.h + state.to_encode_string_sum = 7; + } + state.to_encode_string_sum += str_len; + auto &uncompressed_string = state.dictionary_encoding_buffer.back(); + state.current_string_map[uncompressed_string] = state.dict_count; + } else { + state.string_lengths.push_back(str_len); + auto baseptr = + AlignPointer(state.current_handle.Ptr() + sizeof(dict_fsst_compression_header_t)); + memcpy(baseptr + state.dictionary_offset, str.GetData(), str_len); + string_t dictionary_string((const char *)(baseptr + state.dictionary_offset), str_len); // NOLINT + state.dictionary_offset += str_len; + state.current_string_map[dictionary_string] = state.dict_count; + } + state.dict_count++; + + //! Update the state for serializing the dictionary_indices + string_lengths + if (requires_higher_strlen_bitwidth) { + state.string_lengths_width = new_string_lengths_width; + } + if (requires_higher_strlen_bitwidth || recalculate_strlen_space) { + state.string_lengths_space = new_string_lengths_space; + D_ASSERT(state.string_lengths_space != 0); + } + + if (requires_higher_indices_bitwidth) { + state.dictionary_indices_width = new_dictionary_indices_width; + } + if (requires_higher_indices_bitwidth || recalculate_indices_space) { + state.dictionary_indices_space = new_dictionary_indices_space; + } + return true; +} + +bool DictFSSTCompressionState::CompressInternal(UnifiedVectorFormat &vector_format, const string_t &str, bool is_null, + EncodedInput &encoded_input, const idx_t i, idx_t count) { + auto strings = UnifiedVectorFormat::GetData(vector_format); + idx_t lookup = DConstants::INVALID_INDEX; + + //! In GetRequiredSize we will round up to ALGORITHM_GROUP_SIZE anyways + // so we can avoid recalculating for every tuple + const bool recalculate_indices_space = + append_state == DictionaryAppendState::ENCODED_ALL_UNIQUE + ? false + : ((tuple_count % BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE) == 0); + + if (append_state == DictionaryAppendState::ENCODED_ALL_UNIQUE || is_null) { + lookup = 0; + } else { + auto it = current_string_map.find(str); + lookup = it == current_string_map.end() ? DConstants::INVALID_INDEX : it->second; + } + + switch (append_state) { + case DictionaryAppendState::NOT_ENCODED: + case DictionaryAppendState::REGULAR: { + if (append_state == DictionaryAppendState::REGULAR) { + if (lookup != DConstants::INVALID_INDEX) { + return AddLookup(*this, lookup, recalculate_indices_space); + } else { + //! This string does not exist in the dictionary, add it + return AddToDictionary(*this, str, recalculate_indices_space); + } + } else { + if (lookup != DConstants::INVALID_INDEX) { + return AddLookup(*this, lookup, recalculate_indices_space); + } else { + //! This string does not exist in the dictionary, add it + return AddToDictionary(*this, str, recalculate_indices_space); + } + } + } + case DictionaryAppendState::ENCODED: { + // Don't encode the input, the 'current_string_map' is not encoded. + // encoding of the dictionary is done lazily + // we optimize for the case where the strings are *already* in the dictionary + + bool fits; + if (lookup != DConstants::INVALID_INDEX) { + fits = AddLookup(*this, lookup, recalculate_indices_space); + } else { + //! Not in the dictionary, add it + fits = AddToDictionary(*this, str, recalculate_indices_space); + } + if (fits) { + return fits; + } + if (dictionary_encoding_buffer.empty()) { + //! The string doesn't fit, there are no strings left in the encoding buffer that could potentially + // reduce the space used enough to store this string. + return false; + } + + // We lazily encode the new entries, if we're full but have entries in the buffer + // we flush these and try again to see if the size went down enough + FlushEncodingBuffer(); + if (lookup != DConstants::INVALID_INDEX) { + return AddLookup(*this, lookup, recalculate_indices_space); + } else { + //! Not in the dictionary, add it + return AddToDictionary(*this, str, recalculate_indices_space); + } + } + case DictionaryAppendState::ENCODED_ALL_UNIQUE: { + // Encode the input upfront, the 'current_string_map' is also encoded. + // no lookups are performed, everything is added. + +#ifdef DEBUG + auto temp_decoder = alloca(sizeof(duckdb_fsst_decoder_t)); + duckdb_fsst_import((duckdb_fsst_decoder_t *)temp_decoder, fsst_serialized_symbol_table.get()); + + vector decompress_buffer; +#endif + + if (encoded_input.data.empty()) { + encoded_input.offset = i; + vector input_string_ptrs; + vector input_string_lengths; + idx_t total_size = 0; + for (idx_t j = i; j < count; j++) { + auto index = vector_format.sel->get_index(j); +#ifdef DEBUG + //! We only choose FSST_ONLY if the rowgroup doesn't contain any nulls + D_ASSERT(vector_format.validity.RowIsValid(index)); +#endif + auto &to_encode = strings[index]; + input_string_ptrs.push_back((unsigned char *)to_encode.GetData()); // NOLINT + input_string_lengths.push_back(to_encode.GetSize()); + total_size += to_encode.GetSize(); + } + + size_t output_buffer_size = 7 + (2 * total_size); // size as specified in fsst.h + auto compressed_ptrs = vector(input_string_lengths.size(), nullptr); + auto compressed_sizes = vector(input_string_lengths.size(), 0); + if (output_buffer_size > encoding_buffer_size) { + encoding_buffer = make_unsafe_uniq_array_uninitialized(output_buffer_size); + encoding_buffer_size = output_buffer_size; + } + + // FIXME: can we compress directly to the segment? that would save a copy + // I think yes? + // We can give the segment as destination, and limit the size + // it will tell us when it can't fit everything + // worst case we can just check if the rest of the metadata fits when we remove the last string that it was + // able to encode I believe 'duckdb_fsst_compress' tells us how many of the input strings it was able to + // compress We can work backwards from there to see how many strings actually fit (probably worst case ret-1 + // ??) + auto fsst_encoder = reinterpret_cast(encoder); + auto res = duckdb_fsst_compress(fsst_encoder, input_string_lengths.size(), input_string_lengths.data(), + input_string_ptrs.data(), output_buffer_size, encoding_buffer.get(), + compressed_sizes.data(), compressed_ptrs.data()); + if (res != input_string_lengths.size()) { + throw FatalException("FSST compression failed to compress all input strings"); + } + + for (idx_t j = 0; j < input_string_lengths.size(); j++) { + uint32_t size = UnsafeNumericCast(compressed_sizes[j]); + string_t encoded_string((const char *)compressed_ptrs[j], size); // NOLINT; + +#ifdef DEBUG + //! Verify that we can decompress the string + auto &uncompressed_str = strings[encoded_input.offset + j]; + decompress_buffer.resize(uncompressed_str.GetSize() + 1 + 100); + auto decoded_std_string = + FSSTPrimitives::DecompressValue((void *)temp_decoder, (const char *)compressed_ptrs[j], + (idx_t)compressed_sizes[j], decompress_buffer); + + D_ASSERT(decoded_std_string.size() == uncompressed_str.GetSize()); + string_t decompressed_string((const char *)decompress_buffer.data(), + UnsafeNumericCast(uncompressed_str.GetSize())); + D_ASSERT(decompressed_string == uncompressed_str); +#endif + + encoded_input.data.push_back(encoded_string); + } + } + +#ifdef DEBUG + //! Verify that we can decompress the strings (nothing weird happened to them) + for (idx_t j = encoded_input.offset; j < count; j++) { + auto &uncompressed_string = strings[j]; + auto &compressed_string = encoded_input.data[j - encoded_input.offset]; + + decompress_buffer.resize(uncompressed_string.GetSize() + 1 + 100); + auto decoded_std_string = + FSSTPrimitives::DecompressValue((void *)temp_decoder, (const char *)compressed_string.GetData(), + compressed_string.GetSize(), decompress_buffer); + + D_ASSERT(decoded_std_string.size() == uncompressed_string.GetSize()); + string_t decompressed_string((const char *)decompress_buffer.data(), + UnsafeNumericCast(uncompressed_string.GetSize())); + D_ASSERT(decompressed_string == uncompressed_string); + } + +#endif + auto &string = encoded_input.data[i - encoded_input.offset]; + return AddToDictionary(*this, string, recalculate_indices_space); + } + }; + throw InternalException("Unreachable"); +} + +bool DictFSSTCompressionState::AllUnique() const { + //! 1 is added for NULL always + return string_lengths.size() - 1 == tuple_count; +} + +DictionaryAppendState DictFSSTCompressionState::TryEncode() { + //! We were appending normally, the segment is full + + if (dictionary_offset < DICTIONARY_ENCODE_THRESHOLD) { + return DictionaryAppendState::NOT_ENCODED; + } + + DictionaryAppendState new_state; + if (!analyze->contains_nulls && AllUnique()) { + new_state = DictionaryAppendState::ENCODED_ALL_UNIQUE; + } else { + new_state = DictionaryAppendState::ENCODED; + } + + vector fsst_string_sizes; + vector fsst_string_ptrs; + + uint32_t offset = 0; + data_ptr_t dictionary_start = + AlignPointer(current_handle.Ptr() + sizeof(dict_fsst_compression_header_t)); + D_ASSERT(dictionary_offset > string_t::INLINE_BYTES && dictionary_offset <= string_t::MAX_STRING_SIZE); + auto dict_copy = uncompressed_dictionary_copy.EmptyString(dictionary_offset); + memcpy((void *)dict_copy.GetData(), (void *)dictionary_start, dictionary_offset); + auto uncompressed_start = dict_copy.GetData(); + // Skip index 0, that's reserved for NULL + for (idx_t i = 1; i < string_lengths.size(); i++) { + auto length = string_lengths[i]; + auto start = uncompressed_start + offset; + fsst_string_sizes.push_back(length); + fsst_string_ptrs.push_back((unsigned char *)start); // NOLINT + offset += length; + } + D_ASSERT(offset == dictionary_offset); + + // Create the encoder + auto string_count = string_lengths.size() - 1; + encoder = reinterpret_cast( + duckdb_fsst_create(string_count, fsst_string_sizes.data(), fsst_string_ptrs.data(), 0)); + auto fsst_encoder = reinterpret_cast(encoder); + + auto compressed_ptrs = vector(string_count, nullptr); + auto compressed_sizes = vector(string_count, 0); + + // Compress the dictionary, straight to the segment + auto res = duckdb_fsst_compress(fsst_encoder, string_count, fsst_string_sizes.data(), fsst_string_ptrs.data(), + dictionary_offset, (unsigned char *)dictionary_start, compressed_sizes.data(), + compressed_ptrs.data()); + + bool can_use_encoding = true; + idx_t new_size = 0; + bitpacking_width_t new_string_lengths_width; + idx_t new_string_lengths_space; + //! Check that the compressed dictionary can fit on the block + do { + if (res != string_count) { + can_use_encoding = false; + break; + } + uint32_t max_length = 0; + for (idx_t i = 0; i < string_count; i++) { + auto str_len = UnsafeNumericCast(compressed_sizes[i]); + new_size += str_len; + if (str_len > max_length) { + max_length = str_len; + } + } + if (new_size + DICTIONARY_ENCODE_THRESHOLD > dictionary_offset) { + can_use_encoding = false; + break; + } + + // Export the symbol table, so we get an accurate measurement of the size + if (!fsst_serialized_symbol_table) { + fsst_serialized_symbol_table = + make_unsafe_uniq_array_uninitialized(sizeof(duckdb_fsst_decoder_t)); + } + symbol_table_size = duckdb_fsst_export(fsst_encoder, fsst_serialized_symbol_table.get()); + + new_string_lengths_width = BitpackingPrimitives::MinimumBitWidth(max_length); + new_string_lengths_space = BitpackingPrimitives::GetRequiredSize(dict_count, new_string_lengths_width); + + idx_t required_space = 0; + required_space += sizeof(dict_fsst_compression_header_t); + required_space = AlignValue(required_space); + required_space += new_size; + required_space = AlignValue(required_space); + required_space += symbol_table_size; + required_space = AlignValue(required_space); + required_space += new_string_lengths_space; + required_space = AlignValue(required_space); + required_space += dictionary_indices_space; + + if (required_space > info.GetBlockSize()) { + can_use_encoding = false; + break; + } + + } while (false); + + if (!can_use_encoding) { + // The dictionary does not compress well enough to use FSST + // continue filling the remaining bytes without encoding + + // We compressed directly to the segment, in the hopes this would fit and decrease in size + // which it sadly didn't, so now we need to undo a bunch of things + + memcpy(dictionary_start, dict_copy.GetData(), dictionary_offset); + uncompressed_dictionary_copy.Destroy(); + duckdb_fsst_destroy(fsst_encoder); + encoder = nullptr; + symbol_table_size = DConstants::INVALID_INDEX; + return DictionaryAppendState::NOT_ENCODED; + } + + if (new_state == DictionaryAppendState::ENCODED_ALL_UNIQUE) { + //! We omit the selection buffer in this mode, setting the width to 0 makes the RequiredSpace result not include + //! the selection buffer space. + dictionary_indices_width = 0; + dictionary_indices_space = 0; + } + +#ifdef DEBUG + auto temp_decoder = alloca(sizeof(duckdb_fsst_decoder_t)); + duckdb_fsst_import((duckdb_fsst_decoder_t *)temp_decoder, fsst_serialized_symbol_table.get()); + + vector decompress_buffer; +#endif + + // Rewrite the dictionary + current_string_map.clear(); + current_string_map.reserve(dict_count); + if (new_state == DictionaryAppendState::ENCODED) { + offset = 0; + auto uncompressed_dictionary_ptr = dict_copy.GetData(); + for (idx_t i = 0; i < string_count; i++) { + auto size = UnsafeNumericCast(compressed_sizes[i]); + // Skip index 0, reserved for NULL + uint32_t dictionary_index = UnsafeNumericCast(i + 1); + auto uncompressed_str_len = string_lengths[dictionary_index]; + + string_t dictionary_string(uncompressed_dictionary_ptr + offset, uncompressed_str_len); + current_string_map.insert({dictionary_string, dictionary_index}); + +#ifdef DEBUG + //! Verify that we can decompress the string + decompress_buffer.resize(uncompressed_str_len + 1 + 100); + FSSTPrimitives::DecompressValue((void *)temp_decoder, (const char *)compressed_ptrs[i], + (idx_t)compressed_sizes[i], decompress_buffer); + + string_t decompressed_string((const char *)decompress_buffer.data(), uncompressed_str_len); + D_ASSERT(decompressed_string == dictionary_string); +#endif + + string_lengths[dictionary_index] = size; + offset += uncompressed_str_len; + } + } else { + D_ASSERT(new_state == DictionaryAppendState::ENCODED_ALL_UNIQUE); + for (idx_t i = 0; i < string_count; i++) { + auto &start = compressed_ptrs[i]; + auto size = UnsafeNumericCast(compressed_sizes[i]); + // Skip index 0, reserved for NULL + uint32_t dictionary_index = UnsafeNumericCast(i + 1); + string_lengths[dictionary_index] = size; + string_t dictionary_string((const char *)start, UnsafeNumericCast(size)); // NOLINT + + current_string_map.insert({dictionary_string, dictionary_index}); + } + } + dictionary_offset = new_size; + string_lengths_width = new_string_lengths_width; + string_lengths_space = new_string_lengths_space; + real_string_lengths_width = string_lengths_width; + return new_state; +} + +void DictFSSTCompressionState::Compress(Vector &scan_vector, idx_t count) { + UnifiedVectorFormat vector_format; + scan_vector.ToUnifiedFormat(count, vector_format); + auto strings = UnifiedVectorFormat::GetData(vector_format); + + EncodedInput encoded_input; + for (idx_t i = 0; i < count; i++) { + auto idx = vector_format.sel->get_index(i); + auto &str = strings[idx]; + auto is_null = !vector_format.validity.RowIsValid(idx); + do { + if (CompressInternal(vector_format, str, is_null, encoded_input, i, count)) { + break; + } + + if (append_state == DictionaryAppendState::REGULAR) { + append_state = TryEncode(); + D_ASSERT(append_state != DictionaryAppendState::REGULAR); + if (CompressInternal(vector_format, str, is_null, encoded_input, i, count)) { + break; + } + } + Flush(false); + encoded_input.data.clear(); + encoded_input.offset = 0; + if (!CompressInternal(vector_format, str, is_null, encoded_input, i, count)) { + throw FatalException("Compressing directly after Flush doesn't fit"); + } + } while (false); + if (!is_null) { + UncompressedStringStorage::UpdateStringStats(current_segment->stats, str); + } + tuple_count++; + } +} + +void DictFSSTCompressionState::FinalizeCompress() { + Flush(true); +} + +} // namespace dict_fsst +} // namespace duckdb diff --git a/src/duckdb/src/storage/compression/dict_fsst/decompression.cpp b/src/duckdb/src/storage/compression/dict_fsst/decompression.cpp new file mode 100644 index 000000000..438b6319f --- /dev/null +++ b/src/duckdb/src/storage/compression/dict_fsst/decompression.cpp @@ -0,0 +1,235 @@ +#include "duckdb/storage/compression/dict_fsst/decompression.hpp" +#include "fsst.h" +#include "duckdb/common/fsst.hpp" + +namespace duckdb { +namespace dict_fsst { + +CompressedStringScanState::~CompressedStringScanState() { + delete reinterpret_cast(decoder); +} + +string_t CompressedStringScanState::FetchStringFromDict(Vector &result, uint32_t dict_offset, idx_t dict_idx) { + D_ASSERT(dict_offset <= NumericCast(segment.GetBlockManager().GetBlockSize())); + + if (dict_idx == 0) { + return string_t(nullptr, 0); + } + uint32_t string_len = string_lengths[dict_idx]; + + // normal string: read string from this block + auto dict_pos = dict_ptr + dict_offset; + + auto str_ptr = char_ptr_cast(dict_pos); + switch (mode) { + case DictFSSTMode::FSST_ONLY: + case DictFSSTMode::DICT_FSST: { + if (string_len == 0) { + return string_t(nullptr, 0); + } + if (all_values_inlined) { + return FSSTPrimitives::DecompressInlinedValue(decoder, str_ptr, string_len); + } else { + return FSSTPrimitives::DecompressValue(decoder, StringVector::GetStringBuffer(result), str_ptr, string_len); + } + } + default: + // FIXME: the Vector doesn't seem to take ownership of the non-inlined string data??? + return string_t(str_ptr, string_len); + } +} + +void CompressedStringScanState::Initialize(bool initialize_dictionary) { + baseptr = handle->Ptr() + segment.GetBlockOffset(); + + // Load header values + auto header_ptr = reinterpret_cast(baseptr); + mode = header_ptr->mode; + if (mode >= DictFSSTMode::COUNT) { + throw FatalException("This block was written with a mode that is not recognized by this version, highest " + "available mode %d, found mode: %d", + static_cast(DictFSSTMode::COUNT), static_cast(mode)); + } + + dict_count = header_ptr->dict_count; + auto symbol_table_size = header_ptr->symbol_table_size; + dictionary_size = header_ptr->dict_size; + + dictionary_indices_width = + (bitpacking_width_t)(Load(data_ptr_cast(&header_ptr->dictionary_indices_width))); + string_lengths_width = (bitpacking_width_t)(Load(data_ptr_cast(&header_ptr->string_lengths_width))); + + auto string_lengths_space = BitpackingPrimitives::GetRequiredSize(dict_count, string_lengths_width); + auto dictionary_indices_space = + BitpackingPrimitives::GetRequiredSize(segment.count.load(), dictionary_indices_width); + + auto dictionary_dest = AlignValue(DictFSSTCompression::DICTIONARY_HEADER_SIZE); + auto symbol_table_dest = AlignValue(dictionary_dest + dictionary_size); + auto string_lengths_dest = AlignValue(symbol_table_dest + symbol_table_size); + auto dictionary_indices_dest = AlignValue(string_lengths_dest + string_lengths_space); + + const auto total_space = segment.GetBlockOffset() + dictionary_indices_dest + dictionary_indices_space; + if (total_space > segment.GetBlockManager().GetBlockSize()) { + throw IOException( + "Failed to scan dictionary string - index was out of range. Database file appears to be corrupted."); + } + dict_ptr = data_ptr_cast(baseptr + dictionary_dest); + dictionary_indices_ptr = data_ptr_cast(baseptr + dictionary_indices_dest); + string_lengths_ptr = data_ptr_cast(baseptr + string_lengths_dest); + + switch (mode) { + case DictFSSTMode::FSST_ONLY: + case DictFSSTMode::DICT_FSST: { + decoder = new duckdb_fsst_decoder_t; + auto ret = duckdb_fsst_import(reinterpret_cast(decoder), baseptr + symbol_table_dest); + (void)(ret); + D_ASSERT(ret != 0); // FIXME: the old code set the decoder to nullptr instead, why??? + break; + } + default: + break; + } + + string_lengths.resize(AlignValue(dict_count)); + BitpackingPrimitives::UnPackBuffer(data_ptr_cast(string_lengths.data()), + data_ptr_cast(string_lengths_ptr), dict_count, string_lengths_width); + if (!initialize_dictionary || mode == DictFSSTMode::FSST_ONLY) { + // Used by fetch, as fetch will never produce a DictionaryVector + return; + } + + dictionary = make_buffer(segment.type, dict_count); + auto dict_child_data = FlatVector::GetData(*(dictionary)); + auto &validity = FlatVector::Validity(*dictionary); + D_ASSERT(dict_count >= 1); + validity.SetInvalid(0); + + uint32_t offset = 0; + for (uint32_t i = 0; i < dict_count; i++) { + //! We can uncompress during fetching, we need the length of the string inside the dictionary + auto string_len = string_lengths[i]; + dict_child_data[i] = FetchStringFromDict(*dictionary, offset, i); + offset += string_len; + } +} + +const SelectionVector &CompressedStringScanState::GetSelVec(idx_t start, idx_t scan_count) { + switch (mode) { + case DictFSSTMode::FSST_ONLY: { + return *FlatVector::IncrementalSelectionVector(); + } + default: { + // Handling non-bitpacking-group-aligned start values; + idx_t start_offset = start % BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE; + + // We will scan in blocks of BITPACKING_ALGORITHM_GROUP_SIZE, so we may scan some extra values. + idx_t decompress_count = BitpackingPrimitives::RoundUpToAlgorithmGroupSize(scan_count + start_offset); + + if (!sel_vec || sel_vec_size < decompress_count) { + sel_vec_size = decompress_count; + sel_vec = make_buffer(decompress_count); + } + + data_ptr_t sel_buf_src = &dictionary_indices_ptr[((start - start_offset) * dictionary_indices_width) / 8]; + sel_t *sel_vec_ptr = sel_vec->data(); + BitpackingPrimitives::UnPackBuffer(data_ptr_cast(sel_vec_ptr), sel_buf_src, decompress_count, + dictionary_indices_width); + return *sel_vec; + } + } +} + +void CompressedStringScanState::ScanToFlatVector(Vector &result, idx_t result_offset, idx_t start, idx_t scan_count) { + auto result_data = FlatVector::GetData(result); + auto &validity = FlatVector::Validity(result); + + // Create a decompression buffer of sufficient size if we don't already have one. + auto &selvec = GetSelVec(start, scan_count); + + idx_t start_offset = start; + if (mode != DictFSSTMode::FSST_ONLY) { + // Handling non-bitpacking-group-aligned start values; + start_offset %= BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE; + } else { + //! (index 0 is reserved for NULL, which we don't have in this mode) + start_offset++; + } + + if (dictionary) { + // We have prepared the full dictionary, we can reference these strings directly + auto dictionary_values = FlatVector::GetData(*dictionary); + for (idx_t i = 0; i < scan_count; i++) { + // Lookup dict offset in index buffer + auto string_number = selvec.get_index(i + start_offset); + if (string_number == 0) { + validity.SetInvalid(result_offset + i); + } + result_data[result_offset + i] = dictionary_values[string_number]; + } + } else { + for (idx_t i = 0; i < scan_count; i++) { + // Lookup dict offset in index buffer + auto string_number = selvec.get_index(start_offset + i); + if (string_number == 0) { + validity.SetInvalid(result_offset); + } + if (decompress_position > string_number) { + throw InternalException("DICT_FSST: not performing a sequential scan?"); + } + for (; decompress_position < string_number; decompress_position++) { + decompress_offset += string_lengths[decompress_position]; + } + result_data[result_offset + i] = FetchStringFromDict(result, decompress_offset, string_number); + } + } + result.Verify(result_offset + scan_count); +} + +void CompressedStringScanState::Select(Vector &result, idx_t start, const SelectionVector &sel, idx_t sel_count) { + D_ASSERT(!dictionary); + D_ASSERT(mode == DictFSSTMode::FSST_ONLY); + idx_t start_offset = start + 1; + auto result_data = FlatVector::GetData(result); + for (idx_t i = 0; i < sel_count; i++) { + // Lookup dict offset in index buffer + auto string_number = start_offset + sel.get_index(i); + if (decompress_position > string_number) { + throw InternalException("DICT_FSST: not performing a sequential scan?"); + } + for (; decompress_position < string_number; decompress_position++) { + decompress_offset += string_lengths[decompress_position]; + } + result_data[i] = FetchStringFromDict(result, decompress_offset, string_number); + } +} + +bool CompressedStringScanState::AllowDictionaryScan(idx_t start, idx_t scan_count) { + if (mode == DictFSSTMode::FSST_ONLY) { + return false; + } + if (start % BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE != 0) { + return false; + } + if (scan_count != STANDARD_VECTOR_SIZE) { + return false; + } + if (!dictionary) { + return false; + } + return true; +} + +void CompressedStringScanState::ScanToDictionaryVector(ColumnSegment &segment, Vector &result, idx_t result_offset, + idx_t start, idx_t scan_count) { + D_ASSERT(start % BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE == 0); + D_ASSERT(scan_count == STANDARD_VECTOR_SIZE); + D_ASSERT(result_offset == 0); + + auto &selvec = GetSelVec(start, scan_count); + result.Dictionary(*(dictionary), dict_count, selvec, scan_count); + DictionaryVector::SetDictionaryId(result, to_string(CastPointerToValue(&segment))); + result.Verify(result_offset + scan_count); +} + +} // namespace dict_fsst +} // namespace duckdb diff --git a/src/duckdb/src/storage/compression/dictionary_compression.cpp b/src/duckdb/src/storage/compression/dictionary_compression.cpp index 382978f28..6dfa58335 100644 --- a/src/duckdb/src/storage/compression/dictionary_compression.cpp +++ b/src/duckdb/src/storage/compression/dictionary_compression.cpp @@ -70,6 +70,12 @@ struct DictionaryCompressionStorage { // Analyze //===--------------------------------------------------------------------===// unique_ptr DictionaryCompressionStorage::StringInitAnalyze(ColumnData &col_data, PhysicalType type) { + auto &storage_manager = col_data.GetStorageManager(); + if (storage_manager.GetStorageVersion() >= 5) { + // dict_fsst introduced - disable dictionary + return nullptr; + } + CompressionInfo info(col_data.GetBlockManager()); return make_uniq(info); } diff --git a/src/duckdb/src/storage/compression/fsst.cpp b/src/duckdb/src/storage/compression/fsst.cpp index c73492b5f..a008c612f 100644 --- a/src/duckdb/src/storage/compression/fsst.cpp +++ b/src/duckdb/src/storage/compression/fsst.cpp @@ -98,6 +98,12 @@ struct FSSTAnalyzeState : public AnalyzeState { }; unique_ptr FSSTStorage::StringInitAnalyze(ColumnData &col_data, PhysicalType type) { + auto &storage_manager = col_data.GetStorageManager(); + if (storage_manager.GetStorageVersion() >= 5) { + // dict_fsst introduced - disable fsst + return nullptr; + } + CompressionInfo info(col_data.GetBlockManager()); return make_uniq(info); } diff --git a/src/duckdb/src/storage/compression/numeric_constant.cpp b/src/duckdb/src/storage/compression/numeric_constant.cpp index 8625a6d60..2407eb4df 100644 --- a/src/duckdb/src/storage/compression/numeric_constant.cpp +++ b/src/duckdb/src/storage/compression/numeric_constant.cpp @@ -93,7 +93,7 @@ void ConstantFetchRow(ColumnSegment &segment, ColumnFetchState &state, row_t row //===--------------------------------------------------------------------===// void ConstantSelectValidity(ColumnSegment &segment, ColumnScanState &state, idx_t vector_count, Vector &result, const SelectionVector &sel, idx_t sel_count) { - ConstantScanFunctionValidity(segment, state, vector_count, result); + ConstantScanFunctionValidity(segment, state, sel_count, result); } template diff --git a/src/duckdb/src/storage/compression/roaring/compress.cpp b/src/duckdb/src/storage/compression/roaring/compress.cpp index a406394f2..172cc331a 100644 --- a/src/duckdb/src/storage/compression/roaring/compress.cpp +++ b/src/duckdb/src/storage/compression/roaring/compress.cpp @@ -113,7 +113,7 @@ void ContainerCompressionState::OverrideArray(data_ptr_t &destination, bool null auto data_start = destination + sizeof(uint8_t) * COMPRESSED_SEGMENT_COUNT; compressed_arrays[nulls] = reinterpret_cast(data_start); } else { - destination = AlignValue(destination); + destination = AlignPointer(destination); arrays[nulls] = reinterpret_cast(destination); } } @@ -127,14 +127,14 @@ void ContainerCompressionState::OverrideRun(data_ptr_t &destination, idx_t count auto data_start = destination + sizeof(uint8_t) * COMPRESSED_SEGMENT_COUNT; compressed_runs = reinterpret_cast(data_start); } else { - destination = AlignValue(destination); + destination = AlignPointer(destination); runs = reinterpret_cast(destination); } } void ContainerCompressionState::OverrideUncompressed(data_ptr_t &destination) { append_function = AppendBitset; - destination = AlignValue(destination); + destination = AlignPointer(destination); uncompressed = reinterpret_cast(destination); } diff --git a/src/duckdb/src/storage/compression/roaring/scan.cpp b/src/duckdb/src/storage/compression/roaring/scan.cpp index 559f96779..cefc4df72 100644 --- a/src/duckdb/src/storage/compression/roaring/scan.cpp +++ b/src/duckdb/src/storage/compression/roaring/scan.cpp @@ -285,7 +285,7 @@ ContainerScanState &RoaringScanState::LoadContainer(idx_t container_index, idx_t current_container = make_uniq(container_index, container_size, number_of_runs, segments, data_ptr); } else { - D_ASSERT(AlignValue(data_ptr) == data_ptr); + D_ASSERT(AlignPointer(data_ptr) == data_ptr); current_container = make_uniq(container_index, container_size, number_of_runs, data_ptr); } @@ -302,7 +302,7 @@ ContainerScanState &RoaringScanState::LoadContainer(idx_t container_index, idx_t container_index, container_size, cardinality, segments, data_ptr); } } else { - D_ASSERT(AlignValue(data_ptr) == data_ptr); + D_ASSERT(AlignPointer(data_ptr) == data_ptr); if (metadata.IsInverted()) { current_container = make_uniq>(container_index, container_size, cardinality, data_ptr); diff --git a/src/duckdb/src/storage/compression/zstd.cpp b/src/duckdb/src/storage/compression/zstd.cpp index 85c04c551..f4037c862 100644 --- a/src/duckdb/src/storage/compression/zstd.cpp +++ b/src/duckdb/src/storage/compression/zstd.cpp @@ -203,8 +203,9 @@ idx_t ZSTDStorage::StringFinalAnalyze(AnalyzeState &state_p) { if (average_length >= threshold) { penalty = 1.0; } else { - // Inbetween these two points you're better off using uncompressed or a different compression algorithm. - return NumericLimits::Maximum(); + // set a high penalty if we are below the threshold - this still allows ZSTD to be forced + // but makes it very unlikely to be chosen automatically + penalty = 1000.0; } auto expected_compressed_size = (double)state.total_size / 2.0; diff --git a/src/duckdb/src/storage/external_file_cache.cpp b/src/duckdb/src/storage/external_file_cache.cpp index 970a23a71..cdbc3c5b5 100644 --- a/src/duckdb/src/storage/external_file_cache.cpp +++ b/src/duckdb/src/storage/external_file_cache.cpp @@ -70,28 +70,37 @@ void ExternalFileCache::CachedFile::Verify(const unique_ptr &gua #endif } -bool ExternalFileCache::CachedFile::IsValid(const unique_ptr &guard, bool validate, - const string ¤t_version_tag, time_t current_last_modified, - int64_t access_time) { +bool ExternalFileCache::IsValid(bool validate, const string &cached_version_tag, time_t cached_last_modified, + const string ¤t_version_tag, time_t current_last_modified) { if (!validate) { return true; // Assume valid } - if (!current_version_tag.empty()) { - return VersionTag(guard) == current_version_tag; // Validity checked by version tag (httpfs) + if (!current_version_tag.empty() || !cached_version_tag.empty()) { + return cached_version_tag == current_version_tag; // Validity checked by version tag (httpfs) } - if (LastModified(guard) != current_last_modified) { + if (cached_last_modified != current_last_modified) { return false; // The file has certainly been modified } // The last modified time matches. However, we cannot blindly trust this, // because some file systems use a low resolution clock to set the last modified time. // So, we will require that the last modified time is more than 10 seconds ago. static constexpr int64_t LAST_MODIFIED_THRESHOLD = 10; + const auto access_time = duration_cast(system_clock::now().time_since_epoch()).count(); if (access_time < current_last_modified) { return false; // Last modified in the future? } return access_time - current_last_modified > LAST_MODIFIED_THRESHOLD; } +bool ExternalFileCache::CachedFile::IsValid(const unique_ptr &guard, bool validate, + const string ¤t_version_tag, time_t current_last_modified) { + if (!validate) { + return true; // Assume valid + } + return ExternalFileCache::IsValid(validate, VersionTag(guard), LastModified(guard), current_version_tag, + current_last_modified); +} + idx_t &ExternalFileCache::CachedFile::FileSize(const unique_ptr &guard) { return file_size; } diff --git a/src/duckdb/src/storage/serialization/serialize_create_info.cpp b/src/duckdb/src/storage/serialization/serialize_create_info.cpp index 9ec88c13b..4e0d48806 100644 --- a/src/duckdb/src/storage/serialization/serialize_create_info.cpp +++ b/src/duckdb/src/storage/serialization/serialize_create_info.cpp @@ -25,7 +25,7 @@ void CreateInfo::Serialize(Serializer &serializer) const { serializer.WriteProperty(105, "on_conflict", on_conflict); serializer.WritePropertyWithDefault(106, "sql", sql); serializer.WritePropertyWithDefault(107, "comment", comment, Value()); - serializer.WritePropertyWithDefault>(108, "tags", tags, unordered_map()); + serializer.WritePropertyWithDefault>(108, "tags", tags, InsertionOrderPreservingMap()); if (serializer.ShouldSerialize(2)) { serializer.WritePropertyWithDefault(109, "dependencies", dependencies, LogicalDependencyList()); } @@ -40,7 +40,7 @@ unique_ptr CreateInfo::Deserialize(Deserializer &deserializer) { auto on_conflict = deserializer.ReadProperty(105, "on_conflict"); auto sql = deserializer.ReadPropertyWithDefault(106, "sql"); auto comment = deserializer.ReadPropertyWithExplicitDefault(107, "comment", Value()); - auto tags = deserializer.ReadPropertyWithExplicitDefault>(108, "tags", unordered_map()); + auto tags = deserializer.ReadPropertyWithExplicitDefault>(108, "tags", InsertionOrderPreservingMap()); auto dependencies = deserializer.ReadPropertyWithExplicitDefault(109, "dependencies", LogicalDependencyList()); deserializer.Set(type); unique_ptr result; diff --git a/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp b/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp index 7083e46e3..b72d50913 100644 --- a/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +++ b/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp @@ -189,17 +189,31 @@ unique_ptr LogicalOperator::Deserialize(Deserializer &deseriali return result; } +void FileNameSegment::Serialize(Serializer &serializer) const { + serializer.WriteProperty(200, "type", type); + serializer.WritePropertyWithDefault(201, "data", data); +} + +FileNameSegment FileNameSegment::Deserialize(Deserializer &deserializer) { + FileNameSegment result; + deserializer.ReadProperty(200, "type", result.type); + deserializer.ReadPropertyWithDefault(201, "data", result.data); + return result; +} + void FilenamePattern::Serialize(Serializer &serializer) const { - serializer.WritePropertyWithDefault(200, "base", base); - serializer.WritePropertyWithDefault(201, "pos", pos); - serializer.WritePropertyWithDefault(202, "uuid", uuid); + serializer.WritePropertyWithDefault(200, "base", SerializeBase()); + serializer.WritePropertyWithDefault(201, "pos", SerializePos()); + serializer.WritePropertyWithDefault(202, "uuid", HasUUID()); + serializer.WritePropertyWithDefault>(203, "segments", SerializeSegments()); } FilenamePattern FilenamePattern::Deserialize(Deserializer &deserializer) { - FilenamePattern result; - deserializer.ReadPropertyWithDefault(200, "base", result.base); - deserializer.ReadPropertyWithDefault(201, "pos", result.pos); - deserializer.ReadPropertyWithDefault(202, "uuid", result.uuid); + auto base = deserializer.ReadPropertyWithDefault(200, "base"); + auto pos = deserializer.ReadPropertyWithDefault(201, "pos"); + auto uuid = deserializer.ReadPropertyWithDefault(202, "uuid"); + auto segments = deserializer.ReadPropertyWithDefault>(203, "segments"); + FilenamePattern result(std::move(base), pos, uuid, std::move(segments)); return result; } diff --git a/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp b/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp index 94777d97e..54dfd646e 100644 --- a/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +++ b/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp @@ -230,12 +230,16 @@ void LambdaExpression::Serialize(Serializer &serializer) const { ParsedExpression::Serialize(serializer); serializer.WritePropertyWithDefault>(200, "lhs", lhs); serializer.WritePropertyWithDefault>(201, "expr", expr); + if (serializer.ShouldSerialize(5)) { + serializer.WritePropertyWithDefault(202, "syntax_type", syntax_type, LambdaSyntaxType::SINGLE_ARROW_STORAGE); + } } unique_ptr LambdaExpression::Deserialize(Deserializer &deserializer) { auto result = duckdb::unique_ptr(new LambdaExpression()); deserializer.ReadPropertyWithDefault>(200, "lhs", result->lhs); deserializer.ReadPropertyWithDefault>(201, "expr", result->expr); + deserializer.ReadPropertyWithExplicitDefault(202, "syntax_type", result->syntax_type, LambdaSyntaxType::SINGLE_ARROW_STORAGE); return std::move(result); } diff --git a/src/duckdb/src/storage/statistics/string_stats.cpp b/src/duckdb/src/storage/statistics/string_stats.cpp index 849aa4039..4a8e629d3 100644 --- a/src/duckdb/src/storage/statistics/string_stats.cpp +++ b/src/duckdb/src/storage/statistics/string_stats.cpp @@ -7,6 +7,7 @@ #include "duckdb/main/error_manager.hpp" #include "duckdb/storage/statistics/base_statistics.hpp" #include "utf8proc_wrapper.hpp" +#include "duckdb/common/types/blob.hpp" namespace duckdb { @@ -247,25 +248,22 @@ FilterPropagateResult StringStats::CheckZonemap(const_data_ptr_t min_data, idx_t } } -static idx_t GetValidMinMaxSubstring(const_data_ptr_t data) { - for (idx_t i = 0; i < StringStatsData::MAX_STRING_MINMAX_SIZE; i++) { +static uint32_t GetValidMinMaxSubstring(const_data_ptr_t data) { + for (uint32_t i = 0; i < StringStatsData::MAX_STRING_MINMAX_SIZE; i++) { if (data[i] == '\0') { return i; } - if ((data[i] & 0x80) != 0) { - return i; - } } return StringStatsData::MAX_STRING_MINMAX_SIZE; } string StringStats::ToString(const BaseStatistics &stats) { auto &string_data = StringStats::GetDataUnsafe(stats); - idx_t min_len = GetValidMinMaxSubstring(string_data.min); - idx_t max_len = GetValidMinMaxSubstring(string_data.max); + uint32_t min_len = GetValidMinMaxSubstring(string_data.min); + uint32_t max_len = GetValidMinMaxSubstring(string_data.max); return StringUtil::Format("[Min: %s, Max: %s, Has Unicode: %s, Max String Length: %s]", - string(const_char_ptr_cast(string_data.min), min_len), - string(const_char_ptr_cast(string_data.max), max_len), + Blob::ToString(string_t(const_char_ptr_cast(string_data.min), min_len)), + Blob::ToString(string_t(const_char_ptr_cast(string_data.max), max_len)), string_data.has_unicode ? "true" : "false", string_data.has_max_string_length ? to_string(string_data.max_string_length) : "?"); } diff --git a/src/duckdb/src/storage/table/column_data.cpp b/src/duckdb/src/storage/table/column_data.cpp index 0993fbf77..9abbd2d0a 100644 --- a/src/duckdb/src/storage/table/column_data.cpp +++ b/src/duckdb/src/storage/table/column_data.cpp @@ -644,7 +644,7 @@ unique_ptr ColumnData::Checkpoint(RowGroup &row_group, Co } vector> states {*checkpoint_state}; - ColumnDataCheckpointer checkpointer(states, GetDatabase(), row_group, checkpoint_info); + ColumnDataCheckpointer checkpointer(states, GetStorageManager(), row_group, checkpoint_info); checkpointer.Checkpoint(); checkpointer.FinalizeCheckpoint(); return checkpoint_state; diff --git a/src/duckdb/src/storage/table/column_data_checkpointer.cpp b/src/duckdb/src/storage/table/column_data_checkpointer.cpp index 0ee79aaf2..c89312a21 100644 --- a/src/duckdb/src/storage/table/column_data_checkpointer.cpp +++ b/src/duckdb/src/storage/table/column_data_checkpointer.cpp @@ -53,11 +53,12 @@ static Vector CreateIntermediateVector(vector> } ColumnDataCheckpointer::ColumnDataCheckpointer(vector> &checkpoint_states, - DatabaseInstance &db, RowGroup &row_group, + StorageManager &storage_manager, RowGroup &row_group, ColumnCheckpointInfo &checkpoint_info) - : checkpoint_states(checkpoint_states), db(db), row_group(row_group), + : checkpoint_states(checkpoint_states), storage_manager(storage_manager), row_group(row_group), intermediate(CreateIntermediateVector(checkpoint_states)), checkpoint_info(checkpoint_info) { + auto &db = storage_manager.GetDatabase(); auto &config = DBConfig::GetConfig(db); compression_functions.resize(checkpoint_states.size()); for (idx_t i = 0; i < checkpoint_states.size(); i++) { @@ -95,15 +96,16 @@ void ColumnDataCheckpointer::ScanSegments(const std::function> &compression_functions, +CompressionType ForceCompression(StorageManager &storage_manager, + vector> &compression_functions, CompressionType compression_type) { -// On of the force_compression flags has been set -// check if this compression method is available -#ifdef DEBUG - if (CompressionTypeIsDeprecated(compression_type)) { - throw InternalException("Deprecated compression type: %s", CompressionTypeToString(compression_type)); - } -#endif + // One of the force_compression flags has been set + // check if this compression method is available + // if (CompressionTypeIsDeprecated(compression_type, storage_manager)) { + // throw InvalidInputException("The forced compression method (%s) is not available in the current storage + // version", CompressionTypeToString(compression_type)); + //} + bool found = false; for (idx_t i = 0; i < compression_functions.size(); i++) { auto &compression_function = *compression_functions[i]; @@ -154,6 +156,7 @@ void ColumnDataCheckpointer::InitAnalyze() { vector ColumnDataCheckpointer::DetectBestCompressionMethod() { D_ASSERT(!compression_functions.empty()); + auto &db = storage_manager.GetDatabase(); auto &config = DBConfig::GetConfig(db); vector forced_methods(checkpoint_states.size(), CompressionType::COMPRESSION_AUTO); @@ -161,11 +164,11 @@ vector ColumnDataCheckpointer::DetectBestCompressionMet for (idx_t i = 0; i < checkpoint_states.size(); i++) { auto &functions = compression_functions[i]; if (compression_type != CompressionType::COMPRESSION_AUTO) { - forced_methods[i] = ForceCompression(functions, compression_type); + forced_methods[i] = ForceCompression(storage_manager, functions, compression_type); } if (compression_type == CompressionType::COMPRESSION_AUTO && config.options.force_compression != CompressionType::COMPRESSION_AUTO) { - forced_methods[i] = ForceCompression(functions, config.options.force_compression); + forced_methods[i] = ForceCompression(storage_manager, functions, config.options.force_compression); } } @@ -301,6 +304,7 @@ void ColumnDataCheckpointer::WriteToDisk() { if (ValidityCoveredByBasedata(analyze_result)) { D_ASSERT(analyze_result.size() == 2); auto &validity = analyze_result[1]; + auto &db = storage_manager.GetDatabase(); auto &config = DBConfig::GetConfig(db); // Override the function to the COMPRESSION_EMPTY // turning the compression+final compress steps into a no-op, saving a single empty segment diff --git a/src/duckdb/src/storage/table/standard_column_data.cpp b/src/duckdb/src/storage/table/standard_column_data.cpp index c8cf79c27..50062a45c 100644 --- a/src/duckdb/src/storage/table/standard_column_data.cpp +++ b/src/duckdb/src/storage/table/standard_column_data.cpp @@ -252,7 +252,7 @@ unique_ptr StandardColumnData::Checkpoint(RowGroup &row_g checkpoint_states.emplace_back(checkpoint_state); checkpoint_states.emplace_back(validity_state); - ColumnDataCheckpointer checkpointer(checkpoint_states, GetDatabase(), row_group, checkpoint_info); + ColumnDataCheckpointer checkpointer(checkpoint_states, GetStorageManager(), row_group, checkpoint_info); checkpointer.Checkpoint(); checkpointer.FinalizeCheckpoint(); diff --git a/src/duckdb/src/storage/wal_replay.cpp b/src/duckdb/src/storage/wal_replay.cpp index b207c7d8f..cafe63b96 100644 --- a/src/duckdb/src/storage/wal_replay.cpp +++ b/src/duckdb/src/storage/wal_replay.cpp @@ -43,6 +43,18 @@ class ReplayState { optional_ptr current_table; MetaBlockPointer checkpoint_id; idx_t wal_version = 1; + + struct ReplayIndexInfo { + ReplayIndexInfo(TableIndexList &index_list, unique_ptr index, const string &table_schema, + const string &table_name) + : index_list(index_list), index(std::move(index)), table_schema(table_schema), table_name(table_name) {}; + + reference index_list; + unique_ptr index; + string table_schema; + string table_name; + }; + vector replay_index_infos; }; class WriteAheadLogDeserializer { @@ -242,6 +254,13 @@ unique_ptr WriteAheadLog::ReplayInternal(AttachedDatabase &databa auto deserializer = WriteAheadLogDeserializer::Open(state, reader); if (deserializer.ReplayEntry()) { con.Commit(); + + // Commit any outstanding indexes. + for (auto &info : state.replay_index_infos) { + info.index_list.get().AddIndex(std::move(info.index)); + } + state.replay_index_infos.clear(); + successful_offset = reader.offset; // check if the file is exhausted if (reader.Finished()) { @@ -390,6 +409,14 @@ void WriteAheadLogDeserializer::ReplayDropTable() { return; } + // Remove any replay indexes of this table. + state.replay_index_infos.erase(std::remove_if(state.replay_index_infos.begin(), state.replay_index_infos.end(), + [&info](const ReplayState::ReplayIndexInfo &replay_info) { + return replay_info.table_schema == info.schema && + replay_info.table_name == info.name; + }), + state.replay_index_infos.end()); + catalog.DropEntry(context, info); } @@ -488,7 +515,10 @@ void WriteAheadLogDeserializer::ReplayAlter() { auto index_type = context.db->config.GetIndexTypes().FindByName(ART::TYPE_NAME); auto index_instance = index_type->create_instance(input); - storage.AddIndex(std::move(index_instance)); + + auto &table_index_list = storage.GetDataTableInfo()->GetIndexes(); + state.replay_index_infos.emplace_back(table_index_list, std::move(index_instance), table_info.schema, + table_info.name); catalog.Alter(context, alter_info); } @@ -665,7 +695,11 @@ void WriteAheadLogDeserializer::ReplayCreateIndex() { info.index_type = ART::TYPE_NAME; } - auto &table = catalog.GetEntry(context, create_info->schema, info.table).Cast(); + const auto schema_name = create_info->schema; + const auto table_name = info.table; + + auto &entry = catalog.GetEntry(context, schema_name, table_name); + auto &table = entry.Cast(); auto &storage = table.GetStorage(); auto &io_manager = TableIOManager::Get(storage); @@ -674,7 +708,9 @@ void WriteAheadLogDeserializer::ReplayCreateIndex() { // add the index to the storage auto unbound_index = make_uniq(std::move(create_info), std::move(index_info), io_manager, db); - storage.AddIndex(std::move(unbound_index)); + + auto &table_index_list = storage.GetDataTableInfo()->GetIndexes(); + state.replay_index_infos.emplace_back(table_index_list, std::move(unbound_index), schema_name, table_name); } void WriteAheadLogDeserializer::ReplayDropIndex() { @@ -686,6 +722,14 @@ void WriteAheadLogDeserializer::ReplayDropIndex() { return; } + // Remove the replay index, if any. + state.replay_index_infos.erase(std::remove_if(state.replay_index_infos.begin(), state.replay_index_infos.end(), + [&info](const ReplayState::ReplayIndexInfo &replay_info) { + return replay_info.table_schema == info.schema && + replay_info.index->GetIndexName() == info.name; + }), + state.replay_index_infos.end()); + catalog.DropEntry(context, info); } diff --git a/src/duckdb/third_party/hyperloglog/sds.cpp b/src/duckdb/third_party/hyperloglog/sds.cpp index 4bb827ea8..4533ef984 100644 --- a/src/duckdb/third_party/hyperloglog/sds.cpp +++ b/src/duckdb/third_party/hyperloglog/sds.cpp @@ -201,7 +201,7 @@ void sdsclear(sds s) { sds sdsMakeRoomFor(sds s, size_t addlen) { void *sh, *newsh; size_t avail = sdsavail(s); - size_t len, newlen; + size_t len, newlen, reqlen; char type, oldtype = s[-1] & SDS_TYPE_MASK; int hdrlen; @@ -210,7 +210,8 @@ sds sdsMakeRoomFor(sds s, size_t addlen) { len = sdslen(s); sh = (char*)s-sdsHdrSize(oldtype); - newlen = (len+addlen); + reqlen = newlen = (len+addlen); + assert(newlen > len); /* Catch size_t overflow */ if (newlen < SDS_MAX_PREALLOC) newlen *= 2; else @@ -224,6 +225,8 @@ sds sdsMakeRoomFor(sds s, size_t addlen) { if (type == SDS_TYPE_5) type = SDS_TYPE_8; hdrlen = sdsHdrSize(type); + assert(hdrlen + newlen + 1 > reqlen); /* Catch size_t overflow */ + (void)reqlen; if (oldtype==type) { newsh = realloc(sh, hdrlen+newlen+1); if (newsh == NULL) return NULL; diff --git a/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp b/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp index 35c95e627..efc5e8b36 100644 --- a/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +++ b/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp @@ -198,6 +198,7 @@ typedef enum PGNodeTag { T_PGPivot, T_PGPivotStmt, T_PGAtClause, + T_PGSingleArrowFunction, /* * TAGS FOR EXPRESSION STATE NODES (execnodes.h) diff --git a/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp b/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp index 982617928..d556e55a1 100644 --- a/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +++ b/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp @@ -2129,16 +2129,28 @@ typedef struct PGLimitPercent { } PGLimitPercent; /* ---------------------- - * Lambda Function (or Arrow Operator) + * Lambda Function * ---------------------- */ typedef struct PGLambdaFunction { PGNodeTag type; - PGNode *lhs; /* parameter expression */ + PGList *lhs; /* parameter list */ PGNode *rhs; /* lambda expression */ int location; /* token location, or -1 if unknown */ } PGLambdaFunction; +/* ---------------------- + * Single Arrow Function + * ---------------------- + */ + +typedef struct PGSingleArrowFunction { + PGNodeTag type; + PGNode *lhs; + PGNode *rhs; + int location; /* token location, or -1 if unknown */ +} PGSingleArrowFunction; + /* ---------------------- * Positional Reference * ---------------------- @@ -2164,6 +2176,7 @@ typedef struct PGCreateTypeStmt PGList *vals; /* enum values (list of Value strings) */ PGTypeName *ofType; /* original type of alias name */ PGNode *query; + PGOnCreateConflict onconflict; /* what to do on create conflict */ } PGCreateTypeStmt; /* ---------------------- diff --git a/src/duckdb/third_party/libpg_query/include/parser/gram.hpp b/src/duckdb/third_party/libpg_query/include/parser/gram.hpp index c4e15b31c..e4ad9b4da 100644 --- a/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +++ b/src/duckdb/third_party/libpg_query/include/parser/gram.hpp @@ -53,499 +53,501 @@ EQUALS_GREATER = 269, INTEGER_DIVISION = 270, POWER_OF = 271, - LAMBDA_ARROW = 272, + SINGLE_ARROW = 272, DOUBLE_ARROW = 273, - LESS_EQUALS = 274, - GREATER_EQUALS = 275, - NOT_EQUALS = 276, - ABORT_P = 277, - ABSOLUTE_P = 278, - ACCESS = 279, - ACTION = 280, - ADD_P = 281, - ADMIN = 282, - AFTER = 283, - AGGREGATE = 284, - ALL = 285, - ALSO = 286, - ALTER = 287, - ALWAYS = 288, - ANALYSE = 289, - ANALYZE = 290, - AND = 291, - ANTI = 292, - ANY = 293, - ARRAY = 294, - AS = 295, - ASC_P = 296, - ASOF = 297, - ASSERTION = 298, - ASSIGNMENT = 299, - ASYMMETRIC = 300, - AT = 301, - ATTACH = 302, - ATTRIBUTE = 303, - AUTHORIZATION = 304, - BACKWARD = 305, - BEFORE = 306, - BEGIN_P = 307, - BETWEEN = 308, - BIGINT = 309, - BINARY = 310, - BIT = 311, - BOOLEAN_P = 312, - BOTH = 313, - BY = 314, - CACHE = 315, - CALL_P = 316, - CALLED = 317, - CASCADE = 318, - CASCADED = 319, - CASE = 320, - CAST = 321, - CATALOG_P = 322, - CENTURIES_P = 323, - CENTURY_P = 324, - CHAIN = 325, - CHAR_P = 326, - CHARACTER = 327, - CHARACTERISTICS = 328, - CHECK_P = 329, - CHECKPOINT = 330, - CLASS = 331, - CLOSE = 332, - CLUSTER = 333, - COALESCE = 334, - COLLATE = 335, - COLLATION = 336, - COLUMN = 337, - COLUMNS = 338, - COMMENT = 339, - COMMENTS = 340, - COMMIT = 341, - COMMITTED = 342, - COMPRESSION = 343, - CONCURRENTLY = 344, - CONFIGURATION = 345, - CONFLICT = 346, - CONNECTION = 347, - CONSTRAINT = 348, - CONSTRAINTS = 349, - CONTENT_P = 350, - CONTINUE_P = 351, - CONVERSION_P = 352, - COPY = 353, - COST = 354, - CREATE_P = 355, - CROSS = 356, - CSV = 357, - CUBE = 358, - CURRENT_P = 359, - CURSOR = 360, - CYCLE = 361, - DATA_P = 362, - DATABASE = 363, - DAY_P = 364, - DAYS_P = 365, - DEALLOCATE = 366, - DEC = 367, - DECADE_P = 368, - DECADES_P = 369, - DECIMAL_P = 370, - DECLARE = 371, - DEFAULT = 372, - DEFAULTS = 373, - DEFERRABLE = 374, - DEFERRED = 375, - DEFINER = 376, - DELETE_P = 377, - DELIMITER = 378, - DELIMITERS = 379, - DEPENDS = 380, - DESC_P = 381, - DESCRIBE = 382, - DETACH = 383, - DICTIONARY = 384, - DISABLE_P = 385, - DISCARD = 386, - DISTINCT = 387, - DO = 388, - DOCUMENT_P = 389, - DOMAIN_P = 390, - DOUBLE_P = 391, - DROP = 392, - EACH = 393, - ELSE = 394, - ENABLE_P = 395, - ENCODING = 396, - ENCRYPTED = 397, - END_P = 398, - ENUM_P = 399, - ESCAPE = 400, - EVENT = 401, - EXCEPT = 402, - EXCLUDE = 403, - EXCLUDING = 404, - EXCLUSIVE = 405, - EXECUTE = 406, - EXISTS = 407, - EXPLAIN = 408, - EXPORT_P = 409, - EXPORT_STATE = 410, - EXTENSION = 411, - EXTENSIONS = 412, - EXTERNAL = 413, - EXTRACT = 414, - FALSE_P = 415, - FAMILY = 416, - FETCH = 417, - FILTER = 418, - FIRST_P = 419, - FLOAT_P = 420, - FOLLOWING = 421, - FOR = 422, - FORCE = 423, - FOREIGN = 424, - FORWARD = 425, - FREEZE = 426, - FROM = 427, - FULL = 428, - FUNCTION = 429, - FUNCTIONS = 430, - GENERATED = 431, - GLOB = 432, - GLOBAL = 433, - GRANT = 434, - GRANTED = 435, - GROUP_P = 436, - GROUPING = 437, - GROUPING_ID = 438, - GROUPS = 439, - HANDLER = 440, - HAVING = 441, - HEADER_P = 442, - HOLD = 443, - HOUR_P = 444, - HOURS_P = 445, - IDENTITY_P = 446, - IF_P = 447, - IGNORE_P = 448, - ILIKE = 449, - IMMEDIATE = 450, - IMMUTABLE = 451, - IMPLICIT_P = 452, - IMPORT_P = 453, - IN_P = 454, - INCLUDE_P = 455, - INCLUDING = 456, - INCREMENT = 457, - INDEX = 458, - INDEXES = 459, - INHERIT = 460, - INHERITS = 461, - INITIALLY = 462, - INLINE_P = 463, - INNER_P = 464, - INOUT = 465, - INPUT_P = 466, - INSENSITIVE = 467, - INSERT = 468, - INSTALL = 469, - INSTEAD = 470, - INT_P = 471, - INTEGER = 472, - INTERSECT = 473, - INTERVAL = 474, - INTO = 475, - INVOKER = 476, - IS = 477, - ISNULL = 478, - ISOLATION = 479, - JOIN = 480, - JSON = 481, - KEY = 482, - LABEL = 483, - LANGUAGE = 484, - LARGE_P = 485, - LAST_P = 486, - LATERAL_P = 487, - LEADING = 488, - LEAKPROOF = 489, - LEFT = 490, - LEVEL = 491, - LIKE = 492, - LIMIT = 493, - LISTEN = 494, - LOAD = 495, - LOCAL = 496, - LOCATION = 497, - LOCK_P = 498, - LOCKED = 499, - LOGGED = 500, - MACRO = 501, - MAP = 502, - MAPPING = 503, - MATCH = 504, - MATERIALIZED = 505, - MAXVALUE = 506, - METHOD = 507, - MICROSECOND_P = 508, - MICROSECONDS_P = 509, - MILLENNIA_P = 510, - MILLENNIUM_P = 511, - MILLISECOND_P = 512, - MILLISECONDS_P = 513, - MINUTE_P = 514, - MINUTES_P = 515, - MINVALUE = 516, - MODE = 517, - MONTH_P = 518, - MONTHS_P = 519, - MOVE = 520, - NAME_P = 521, - NAMES = 522, - NATIONAL = 523, - NATURAL = 524, - NCHAR = 525, - NEW = 526, - NEXT = 527, - NO = 528, - NONE = 529, - NOT = 530, - NOTHING = 531, - NOTIFY = 532, - NOTNULL = 533, - NOWAIT = 534, - NULL_P = 535, - NULLIF = 536, - NULLS_P = 537, - NUMERIC = 538, - OBJECT_P = 539, - OF = 540, - OFF = 541, - OFFSET = 542, - OIDS = 543, - OLD = 544, - ON = 545, - ONLY = 546, - OPERATOR = 547, - OPTION = 548, - OPTIONS = 549, - OR = 550, - ORDER = 551, - ORDINALITY = 552, - OTHERS = 553, - OUT_P = 554, - OUTER_P = 555, - OVER = 556, - OVERLAPS = 557, - OVERLAY = 558, - OVERRIDING = 559, - OWNED = 560, - OWNER = 561, - PARALLEL = 562, - PARSER = 563, - PARTIAL = 564, - PARTITION = 565, - PARTITIONED = 566, - PASSING = 567, - PASSWORD = 568, - PERCENT = 569, - PERSISTENT = 570, - PIVOT = 571, - PIVOT_LONGER = 572, - PIVOT_WIDER = 573, - PLACING = 574, - PLANS = 575, - POLICY = 576, - POSITION = 577, - POSITIONAL = 578, - PRAGMA_P = 579, - PRECEDING = 580, - PRECISION = 581, - PREPARE = 582, - PREPARED = 583, - PRESERVE = 584, - PRIMARY = 585, - PRIOR = 586, - PRIVILEGES = 587, - PROCEDURAL = 588, - PROCEDURE = 589, - PROGRAM = 590, - PUBLICATION = 591, - QUALIFY = 592, - QUARTER_P = 593, - QUARTERS_P = 594, - QUOTE = 595, - RANGE = 596, - READ_P = 597, - REAL = 598, - REASSIGN = 599, - RECHECK = 600, - RECURSIVE = 601, - REF = 602, - REFERENCES = 603, - REFERENCING = 604, - REFRESH = 605, - REINDEX = 606, - RELATIVE_P = 607, - RELEASE = 608, - RENAME = 609, - REPEATABLE = 610, - REPLACE = 611, - REPLICA = 612, - RESET = 613, - RESPECT_P = 614, - RESTART = 615, - RESTRICT = 616, - RETURNING = 617, - RETURNS = 618, - REVOKE = 619, - RIGHT = 620, - ROLE = 621, - ROLLBACK = 622, - ROLLUP = 623, - ROW = 624, - ROWS = 625, - RULE = 626, - SAMPLE = 627, - SAVEPOINT = 628, - SCHEMA = 629, - SCHEMAS = 630, - SCOPE = 631, - SCROLL = 632, - SEARCH = 633, - SECOND_P = 634, - SECONDS_P = 635, - SECRET = 636, - SECURITY = 637, - SELECT = 638, - SEMI = 639, - SEQUENCE = 640, - SEQUENCES = 641, - SERIALIZABLE = 642, - SERVER = 643, - SESSION = 644, - SET = 645, - SETOF = 646, - SETS = 647, - SHARE = 648, - SHOW = 649, - SIMILAR = 650, - SIMPLE = 651, - SKIP = 652, - SMALLINT = 653, - SNAPSHOT = 654, - SOME = 655, - SORTED = 656, - SQL_P = 657, - STABLE = 658, - STANDALONE_P = 659, - START = 660, - STATEMENT = 661, - STATISTICS = 662, - STDIN = 663, - STDOUT = 664, - STORAGE = 665, - STORED = 666, - STRICT_P = 667, - STRIP_P = 668, - STRUCT = 669, - SUBSCRIPTION = 670, - SUBSTRING = 671, - SUMMARIZE = 672, - SYMMETRIC = 673, - SYSID = 674, - SYSTEM_P = 675, - TABLE = 676, - TABLES = 677, - TABLESAMPLE = 678, - TABLESPACE = 679, - TEMP = 680, - TEMPLATE = 681, - TEMPORARY = 682, - TEXT_P = 683, - THEN = 684, - TIES = 685, - TIME = 686, - TIMESTAMP = 687, - TO = 688, - TRAILING = 689, - TRANSACTION = 690, - TRANSFORM = 691, - TREAT = 692, - TRIGGER = 693, - TRIM = 694, - TRUE_P = 695, - TRUNCATE = 696, - TRUSTED = 697, - TRY_CAST = 698, - TYPE_P = 699, - TYPES_P = 700, - UNBOUNDED = 701, - UNCOMMITTED = 702, - UNENCRYPTED = 703, - UNION = 704, - UNIQUE = 705, - UNKNOWN = 706, - UNLISTEN = 707, - UNLOGGED = 708, - UNPACK = 709, - UNPIVOT = 710, - UNTIL = 711, - UPDATE = 712, - USE_P = 713, - USER = 714, - USING = 715, - VACUUM = 716, - VALID = 717, - VALIDATE = 718, - VALIDATOR = 719, - VALUE_P = 720, - VALUES = 721, - VARCHAR = 722, - VARIABLE_P = 723, - VARIADIC = 724, - VARYING = 725, - VERBOSE = 726, - VERSION_P = 727, - VIEW = 728, - VIEWS = 729, - VIRTUAL = 730, - VOLATILE = 731, - WEEK_P = 732, - WEEKS_P = 733, - WHEN = 734, - WHERE = 735, - WHITESPACE_P = 736, - WINDOW = 737, - WITH = 738, - WITHIN = 739, - WITHOUT = 740, - WORK = 741, - WRAPPER = 742, - WRITE_P = 743, - XML_P = 744, - XMLATTRIBUTES = 745, - XMLCONCAT = 746, - XMLELEMENT = 747, - XMLEXISTS = 748, - XMLFOREST = 749, - XMLNAMESPACES = 750, - XMLPARSE = 751, - XMLPI = 752, - XMLROOT = 753, - XMLSERIALIZE = 754, - XMLTABLE = 755, - YEAR_P = 756, - YEARS_P = 757, - YES_P = 758, - ZONE = 759, - NOT_LA = 760, - NULLS_LA = 761, - WITH_LA = 762, - POSTFIXOP = 763, - UMINUS = 764 + SINGLE_COLON = 274, + LESS_EQUALS = 275, + GREATER_EQUALS = 276, + NOT_EQUALS = 277, + ABORT_P = 278, + ABSOLUTE_P = 279, + ACCESS = 280, + ACTION = 281, + ADD_P = 282, + ADMIN = 283, + AFTER = 284, + AGGREGATE = 285, + ALL = 286, + ALSO = 287, + ALTER = 288, + ALWAYS = 289, + ANALYSE = 290, + ANALYZE = 291, + AND = 292, + ANTI = 293, + ANY = 294, + ARRAY = 295, + AS = 296, + ASC_P = 297, + ASOF = 298, + ASSERTION = 299, + ASSIGNMENT = 300, + ASYMMETRIC = 301, + AT = 302, + ATTACH = 303, + ATTRIBUTE = 304, + AUTHORIZATION = 305, + BACKWARD = 306, + BEFORE = 307, + BEGIN_P = 308, + BETWEEN = 309, + BIGINT = 310, + BINARY = 311, + BIT = 312, + BOOLEAN_P = 313, + BOTH = 314, + BY = 315, + CACHE = 316, + CALL_P = 317, + CALLED = 318, + CASCADE = 319, + CASCADED = 320, + CASE = 321, + CAST = 322, + CATALOG_P = 323, + CENTURIES_P = 324, + CENTURY_P = 325, + CHAIN = 326, + CHAR_P = 327, + CHARACTER = 328, + CHARACTERISTICS = 329, + CHECK_P = 330, + CHECKPOINT = 331, + CLASS = 332, + CLOSE = 333, + CLUSTER = 334, + COALESCE = 335, + COLLATE = 336, + COLLATION = 337, + COLUMN = 338, + COLUMNS = 339, + COMMENT = 340, + COMMENTS = 341, + COMMIT = 342, + COMMITTED = 343, + COMPRESSION = 344, + CONCURRENTLY = 345, + CONFIGURATION = 346, + CONFLICT = 347, + CONNECTION = 348, + CONSTRAINT = 349, + CONSTRAINTS = 350, + CONTENT_P = 351, + CONTINUE_P = 352, + CONVERSION_P = 353, + COPY = 354, + COST = 355, + CREATE_P = 356, + CROSS = 357, + CSV = 358, + CUBE = 359, + CURRENT_P = 360, + CURSOR = 361, + CYCLE = 362, + DATA_P = 363, + DATABASE = 364, + DAY_P = 365, + DAYS_P = 366, + DEALLOCATE = 367, + DEC = 368, + DECADE_P = 369, + DECADES_P = 370, + DECIMAL_P = 371, + DECLARE = 372, + DEFAULT = 373, + DEFAULTS = 374, + DEFERRABLE = 375, + DEFERRED = 376, + DEFINER = 377, + DELETE_P = 378, + DELIMITER = 379, + DELIMITERS = 380, + DEPENDS = 381, + DESC_P = 382, + DESCRIBE = 383, + DETACH = 384, + DICTIONARY = 385, + DISABLE_P = 386, + DISCARD = 387, + DISTINCT = 388, + DO = 389, + DOCUMENT_P = 390, + DOMAIN_P = 391, + DOUBLE_P = 392, + DROP = 393, + EACH = 394, + ELSE = 395, + ENABLE_P = 396, + ENCODING = 397, + ENCRYPTED = 398, + END_P = 399, + ENUM_P = 400, + ESCAPE = 401, + EVENT = 402, + EXCEPT = 403, + EXCLUDE = 404, + EXCLUDING = 405, + EXCLUSIVE = 406, + EXECUTE = 407, + EXISTS = 408, + EXPLAIN = 409, + EXPORT_P = 410, + EXPORT_STATE = 411, + EXTENSION = 412, + EXTENSIONS = 413, + EXTERNAL = 414, + EXTRACT = 415, + FALSE_P = 416, + FAMILY = 417, + FETCH = 418, + FILTER = 419, + FIRST_P = 420, + FLOAT_P = 421, + FOLLOWING = 422, + FOR = 423, + FORCE = 424, + FOREIGN = 425, + FORWARD = 426, + FREEZE = 427, + FROM = 428, + FULL = 429, + FUNCTION = 430, + FUNCTIONS = 431, + GENERATED = 432, + GLOB = 433, + GLOBAL = 434, + GRANT = 435, + GRANTED = 436, + GROUP_P = 437, + GROUPING = 438, + GROUPING_ID = 439, + GROUPS = 440, + HANDLER = 441, + HAVING = 442, + HEADER_P = 443, + HOLD = 444, + HOUR_P = 445, + HOURS_P = 446, + IDENTITY_P = 447, + IF_P = 448, + IGNORE_P = 449, + ILIKE = 450, + IMMEDIATE = 451, + IMMUTABLE = 452, + IMPLICIT_P = 453, + IMPORT_P = 454, + IN_P = 455, + INCLUDE_P = 456, + INCLUDING = 457, + INCREMENT = 458, + INDEX = 459, + INDEXES = 460, + INHERIT = 461, + INHERITS = 462, + INITIALLY = 463, + INLINE_P = 464, + INNER_P = 465, + INOUT = 466, + INPUT_P = 467, + INSENSITIVE = 468, + INSERT = 469, + INSTALL = 470, + INSTEAD = 471, + INT_P = 472, + INTEGER = 473, + INTERSECT = 474, + INTERVAL = 475, + INTO = 476, + INVOKER = 477, + IS = 478, + ISNULL = 479, + ISOLATION = 480, + JOIN = 481, + JSON = 482, + KEY = 483, + LABEL = 484, + LAMBDA = 485, + LANGUAGE = 486, + LARGE_P = 487, + LAST_P = 488, + LATERAL_P = 489, + LEADING = 490, + LEAKPROOF = 491, + LEFT = 492, + LEVEL = 493, + LIKE = 494, + LIMIT = 495, + LISTEN = 496, + LOAD = 497, + LOCAL = 498, + LOCATION = 499, + LOCK_P = 500, + LOCKED = 501, + LOGGED = 502, + MACRO = 503, + MAP = 504, + MAPPING = 505, + MATCH = 506, + MATERIALIZED = 507, + MAXVALUE = 508, + METHOD = 509, + MICROSECOND_P = 510, + MICROSECONDS_P = 511, + MILLENNIA_P = 512, + MILLENNIUM_P = 513, + MILLISECOND_P = 514, + MILLISECONDS_P = 515, + MINUTE_P = 516, + MINUTES_P = 517, + MINVALUE = 518, + MODE = 519, + MONTH_P = 520, + MONTHS_P = 521, + MOVE = 522, + NAME_P = 523, + NAMES = 524, + NATIONAL = 525, + NATURAL = 526, + NCHAR = 527, + NEW = 528, + NEXT = 529, + NO = 530, + NONE = 531, + NOT = 532, + NOTHING = 533, + NOTIFY = 534, + NOTNULL = 535, + NOWAIT = 536, + NULL_P = 537, + NULLIF = 538, + NULLS_P = 539, + NUMERIC = 540, + OBJECT_P = 541, + OF = 542, + OFF = 543, + OFFSET = 544, + OIDS = 545, + OLD = 546, + ON = 547, + ONLY = 548, + OPERATOR = 549, + OPTION = 550, + OPTIONS = 551, + OR = 552, + ORDER = 553, + ORDINALITY = 554, + OTHERS = 555, + OUT_P = 556, + OUTER_P = 557, + OVER = 558, + OVERLAPS = 559, + OVERLAY = 560, + OVERRIDING = 561, + OWNED = 562, + OWNER = 563, + PARALLEL = 564, + PARSER = 565, + PARTIAL = 566, + PARTITION = 567, + PARTITIONED = 568, + PASSING = 569, + PASSWORD = 570, + PERCENT = 571, + PERSISTENT = 572, + PIVOT = 573, + PIVOT_LONGER = 574, + PIVOT_WIDER = 575, + PLACING = 576, + PLANS = 577, + POLICY = 578, + POSITION = 579, + POSITIONAL = 580, + PRAGMA_P = 581, + PRECEDING = 582, + PRECISION = 583, + PREPARE = 584, + PREPARED = 585, + PRESERVE = 586, + PRIMARY = 587, + PRIOR = 588, + PRIVILEGES = 589, + PROCEDURAL = 590, + PROCEDURE = 591, + PROGRAM = 592, + PUBLICATION = 593, + QUALIFY = 594, + QUARTER_P = 595, + QUARTERS_P = 596, + QUOTE = 597, + RANGE = 598, + READ_P = 599, + REAL = 600, + REASSIGN = 601, + RECHECK = 602, + RECURSIVE = 603, + REF = 604, + REFERENCES = 605, + REFERENCING = 606, + REFRESH = 607, + REINDEX = 608, + RELATIVE_P = 609, + RELEASE = 610, + RENAME = 611, + REPEATABLE = 612, + REPLACE = 613, + REPLICA = 614, + RESET = 615, + RESPECT_P = 616, + RESTART = 617, + RESTRICT = 618, + RETURNING = 619, + RETURNS = 620, + REVOKE = 621, + RIGHT = 622, + ROLE = 623, + ROLLBACK = 624, + ROLLUP = 625, + ROW = 626, + ROWS = 627, + RULE = 628, + SAMPLE = 629, + SAVEPOINT = 630, + SCHEMA = 631, + SCHEMAS = 632, + SCOPE = 633, + SCROLL = 634, + SEARCH = 635, + SECOND_P = 636, + SECONDS_P = 637, + SECRET = 638, + SECURITY = 639, + SELECT = 640, + SEMI = 641, + SEQUENCE = 642, + SEQUENCES = 643, + SERIALIZABLE = 644, + SERVER = 645, + SESSION = 646, + SET = 647, + SETOF = 648, + SETS = 649, + SHARE = 650, + SHOW = 651, + SIMILAR = 652, + SIMPLE = 653, + SKIP = 654, + SMALLINT = 655, + SNAPSHOT = 656, + SOME = 657, + SORTED = 658, + SQL_P = 659, + STABLE = 660, + STANDALONE_P = 661, + START = 662, + STATEMENT = 663, + STATISTICS = 664, + STDIN = 665, + STDOUT = 666, + STORAGE = 667, + STORED = 668, + STRICT_P = 669, + STRIP_P = 670, + STRUCT = 671, + SUBSCRIPTION = 672, + SUBSTRING = 673, + SUMMARIZE = 674, + SYMMETRIC = 675, + SYSID = 676, + SYSTEM_P = 677, + TABLE = 678, + TABLES = 679, + TABLESAMPLE = 680, + TABLESPACE = 681, + TEMP = 682, + TEMPLATE = 683, + TEMPORARY = 684, + TEXT_P = 685, + THEN = 686, + TIES = 687, + TIME = 688, + TIMESTAMP = 689, + TO = 690, + TRAILING = 691, + TRANSACTION = 692, + TRANSFORM = 693, + TREAT = 694, + TRIGGER = 695, + TRIM = 696, + TRUE_P = 697, + TRUNCATE = 698, + TRUSTED = 699, + TRY_CAST = 700, + TYPE_P = 701, + TYPES_P = 702, + UNBOUNDED = 703, + UNCOMMITTED = 704, + UNENCRYPTED = 705, + UNION = 706, + UNIQUE = 707, + UNKNOWN = 708, + UNLISTEN = 709, + UNLOGGED = 710, + UNPACK = 711, + UNPIVOT = 712, + UNTIL = 713, + UPDATE = 714, + USE_P = 715, + USER = 716, + USING = 717, + VACUUM = 718, + VALID = 719, + VALIDATE = 720, + VALIDATOR = 721, + VALUE_P = 722, + VALUES = 723, + VARCHAR = 724, + VARIABLE_P = 725, + VARIADIC = 726, + VARYING = 727, + VERBOSE = 728, + VERSION_P = 729, + VIEW = 730, + VIEWS = 731, + VIRTUAL = 732, + VOLATILE = 733, + WEEK_P = 734, + WEEKS_P = 735, + WHEN = 736, + WHERE = 737, + WHITESPACE_P = 738, + WINDOW = 739, + WITH = 740, + WITHIN = 741, + WITHOUT = 742, + WORK = 743, + WRAPPER = 744, + WRITE_P = 745, + XML_P = 746, + XMLATTRIBUTES = 747, + XMLCONCAT = 748, + XMLELEMENT = 749, + XMLEXISTS = 750, + XMLFOREST = 751, + XMLNAMESPACES = 752, + XMLPARSE = 753, + XMLPI = 754, + XMLROOT = 755, + XMLSERIALIZE = 756, + XMLTABLE = 757, + YEAR_P = 758, + YEARS_P = 759, + YES_P = 760, + ZONE = 761, + NOT_LA = 762, + NULLS_LA = 763, + WITH_LA = 764, + POSTFIXOP = 765, + UMINUS = 766 }; #endif /* Tokens. */ @@ -563,499 +565,501 @@ #define EQUALS_GREATER 269 #define INTEGER_DIVISION 270 #define POWER_OF 271 -#define LAMBDA_ARROW 272 +#define SINGLE_ARROW 272 #define DOUBLE_ARROW 273 -#define LESS_EQUALS 274 -#define GREATER_EQUALS 275 -#define NOT_EQUALS 276 -#define ABORT_P 277 -#define ABSOLUTE_P 278 -#define ACCESS 279 -#define ACTION 280 -#define ADD_P 281 -#define ADMIN 282 -#define AFTER 283 -#define AGGREGATE 284 -#define ALL 285 -#define ALSO 286 -#define ALTER 287 -#define ALWAYS 288 -#define ANALYSE 289 -#define ANALYZE 290 -#define AND 291 -#define ANTI 292 -#define ANY 293 -#define ARRAY 294 -#define AS 295 -#define ASC_P 296 -#define ASOF 297 -#define ASSERTION 298 -#define ASSIGNMENT 299 -#define ASYMMETRIC 300 -#define AT 301 -#define ATTACH 302 -#define ATTRIBUTE 303 -#define AUTHORIZATION 304 -#define BACKWARD 305 -#define BEFORE 306 -#define BEGIN_P 307 -#define BETWEEN 308 -#define BIGINT 309 -#define BINARY 310 -#define BIT 311 -#define BOOLEAN_P 312 -#define BOTH 313 -#define BY 314 -#define CACHE 315 -#define CALL_P 316 -#define CALLED 317 -#define CASCADE 318 -#define CASCADED 319 -#define CASE 320 -#define CAST 321 -#define CATALOG_P 322 -#define CENTURIES_P 323 -#define CENTURY_P 324 -#define CHAIN 325 -#define CHAR_P 326 -#define CHARACTER 327 -#define CHARACTERISTICS 328 -#define CHECK_P 329 -#define CHECKPOINT 330 -#define CLASS 331 -#define CLOSE 332 -#define CLUSTER 333 -#define COALESCE 334 -#define COLLATE 335 -#define COLLATION 336 -#define COLUMN 337 -#define COLUMNS 338 -#define COMMENT 339 -#define COMMENTS 340 -#define COMMIT 341 -#define COMMITTED 342 -#define COMPRESSION 343 -#define CONCURRENTLY 344 -#define CONFIGURATION 345 -#define CONFLICT 346 -#define CONNECTION 347 -#define CONSTRAINT 348 -#define CONSTRAINTS 349 -#define CONTENT_P 350 -#define CONTINUE_P 351 -#define CONVERSION_P 352 -#define COPY 353 -#define COST 354 -#define CREATE_P 355 -#define CROSS 356 -#define CSV 357 -#define CUBE 358 -#define CURRENT_P 359 -#define CURSOR 360 -#define CYCLE 361 -#define DATA_P 362 -#define DATABASE 363 -#define DAY_P 364 -#define DAYS_P 365 -#define DEALLOCATE 366 -#define DEC 367 -#define DECADE_P 368 -#define DECADES_P 369 -#define DECIMAL_P 370 -#define DECLARE 371 -#define DEFAULT 372 -#define DEFAULTS 373 -#define DEFERRABLE 374 -#define DEFERRED 375 -#define DEFINER 376 -#define DELETE_P 377 -#define DELIMITER 378 -#define DELIMITERS 379 -#define DEPENDS 380 -#define DESC_P 381 -#define DESCRIBE 382 -#define DETACH 383 -#define DICTIONARY 384 -#define DISABLE_P 385 -#define DISCARD 386 -#define DISTINCT 387 -#define DO 388 -#define DOCUMENT_P 389 -#define DOMAIN_P 390 -#define DOUBLE_P 391 -#define DROP 392 -#define EACH 393 -#define ELSE 394 -#define ENABLE_P 395 -#define ENCODING 396 -#define ENCRYPTED 397 -#define END_P 398 -#define ENUM_P 399 -#define ESCAPE 400 -#define EVENT 401 -#define EXCEPT 402 -#define EXCLUDE 403 -#define EXCLUDING 404 -#define EXCLUSIVE 405 -#define EXECUTE 406 -#define EXISTS 407 -#define EXPLAIN 408 -#define EXPORT_P 409 -#define EXPORT_STATE 410 -#define EXTENSION 411 -#define EXTENSIONS 412 -#define EXTERNAL 413 -#define EXTRACT 414 -#define FALSE_P 415 -#define FAMILY 416 -#define FETCH 417 -#define FILTER 418 -#define FIRST_P 419 -#define FLOAT_P 420 -#define FOLLOWING 421 -#define FOR 422 -#define FORCE 423 -#define FOREIGN 424 -#define FORWARD 425 -#define FREEZE 426 -#define FROM 427 -#define FULL 428 -#define FUNCTION 429 -#define FUNCTIONS 430 -#define GENERATED 431 -#define GLOB 432 -#define GLOBAL 433 -#define GRANT 434 -#define GRANTED 435 -#define GROUP_P 436 -#define GROUPING 437 -#define GROUPING_ID 438 -#define GROUPS 439 -#define HANDLER 440 -#define HAVING 441 -#define HEADER_P 442 -#define HOLD 443 -#define HOUR_P 444 -#define HOURS_P 445 -#define IDENTITY_P 446 -#define IF_P 447 -#define IGNORE_P 448 -#define ILIKE 449 -#define IMMEDIATE 450 -#define IMMUTABLE 451 -#define IMPLICIT_P 452 -#define IMPORT_P 453 -#define IN_P 454 -#define INCLUDE_P 455 -#define INCLUDING 456 -#define INCREMENT 457 -#define INDEX 458 -#define INDEXES 459 -#define INHERIT 460 -#define INHERITS 461 -#define INITIALLY 462 -#define INLINE_P 463 -#define INNER_P 464 -#define INOUT 465 -#define INPUT_P 466 -#define INSENSITIVE 467 -#define INSERT 468 -#define INSTALL 469 -#define INSTEAD 470 -#define INT_P 471 -#define INTEGER 472 -#define INTERSECT 473 -#define INTERVAL 474 -#define INTO 475 -#define INVOKER 476 -#define IS 477 -#define ISNULL 478 -#define ISOLATION 479 -#define JOIN 480 -#define JSON 481 -#define KEY 482 -#define LABEL 483 -#define LANGUAGE 484 -#define LARGE_P 485 -#define LAST_P 486 -#define LATERAL_P 487 -#define LEADING 488 -#define LEAKPROOF 489 -#define LEFT 490 -#define LEVEL 491 -#define LIKE 492 -#define LIMIT 493 -#define LISTEN 494 -#define LOAD 495 -#define LOCAL 496 -#define LOCATION 497 -#define LOCK_P 498 -#define LOCKED 499 -#define LOGGED 500 -#define MACRO 501 -#define MAP 502 -#define MAPPING 503 -#define MATCH 504 -#define MATERIALIZED 505 -#define MAXVALUE 506 -#define METHOD 507 -#define MICROSECOND_P 508 -#define MICROSECONDS_P 509 -#define MILLENNIA_P 510 -#define MILLENNIUM_P 511 -#define MILLISECOND_P 512 -#define MILLISECONDS_P 513 -#define MINUTE_P 514 -#define MINUTES_P 515 -#define MINVALUE 516 -#define MODE 517 -#define MONTH_P 518 -#define MONTHS_P 519 -#define MOVE 520 -#define NAME_P 521 -#define NAMES 522 -#define NATIONAL 523 -#define NATURAL 524 -#define NCHAR 525 -#define NEW 526 -#define NEXT 527 -#define NO 528 -#define NONE 529 -#define NOT 530 -#define NOTHING 531 -#define NOTIFY 532 -#define NOTNULL 533 -#define NOWAIT 534 -#define NULL_P 535 -#define NULLIF 536 -#define NULLS_P 537 -#define NUMERIC 538 -#define OBJECT_P 539 -#define OF 540 -#define OFF 541 -#define OFFSET 542 -#define OIDS 543 -#define OLD 544 -#define ON 545 -#define ONLY 546 -#define OPERATOR 547 -#define OPTION 548 -#define OPTIONS 549 -#define OR 550 -#define ORDER 551 -#define ORDINALITY 552 -#define OTHERS 553 -#define OUT_P 554 -#define OUTER_P 555 -#define OVER 556 -#define OVERLAPS 557 -#define OVERLAY 558 -#define OVERRIDING 559 -#define OWNED 560 -#define OWNER 561 -#define PARALLEL 562 -#define PARSER 563 -#define PARTIAL 564 -#define PARTITION 565 -#define PARTITIONED 566 -#define PASSING 567 -#define PASSWORD 568 -#define PERCENT 569 -#define PERSISTENT 570 -#define PIVOT 571 -#define PIVOT_LONGER 572 -#define PIVOT_WIDER 573 -#define PLACING 574 -#define PLANS 575 -#define POLICY 576 -#define POSITION 577 -#define POSITIONAL 578 -#define PRAGMA_P 579 -#define PRECEDING 580 -#define PRECISION 581 -#define PREPARE 582 -#define PREPARED 583 -#define PRESERVE 584 -#define PRIMARY 585 -#define PRIOR 586 -#define PRIVILEGES 587 -#define PROCEDURAL 588 -#define PROCEDURE 589 -#define PROGRAM 590 -#define PUBLICATION 591 -#define QUALIFY 592 -#define QUARTER_P 593 -#define QUARTERS_P 594 -#define QUOTE 595 -#define RANGE 596 -#define READ_P 597 -#define REAL 598 -#define REASSIGN 599 -#define RECHECK 600 -#define RECURSIVE 601 -#define REF 602 -#define REFERENCES 603 -#define REFERENCING 604 -#define REFRESH 605 -#define REINDEX 606 -#define RELATIVE_P 607 -#define RELEASE 608 -#define RENAME 609 -#define REPEATABLE 610 -#define REPLACE 611 -#define REPLICA 612 -#define RESET 613 -#define RESPECT_P 614 -#define RESTART 615 -#define RESTRICT 616 -#define RETURNING 617 -#define RETURNS 618 -#define REVOKE 619 -#define RIGHT 620 -#define ROLE 621 -#define ROLLBACK 622 -#define ROLLUP 623 -#define ROW 624 -#define ROWS 625 -#define RULE 626 -#define SAMPLE 627 -#define SAVEPOINT 628 -#define SCHEMA 629 -#define SCHEMAS 630 -#define SCOPE 631 -#define SCROLL 632 -#define SEARCH 633 -#define SECOND_P 634 -#define SECONDS_P 635 -#define SECRET 636 -#define SECURITY 637 -#define SELECT 638 -#define SEMI 639 -#define SEQUENCE 640 -#define SEQUENCES 641 -#define SERIALIZABLE 642 -#define SERVER 643 -#define SESSION 644 -#define SET 645 -#define SETOF 646 -#define SETS 647 -#define SHARE 648 -#define SHOW 649 -#define SIMILAR 650 -#define SIMPLE 651 -#define SKIP 652 -#define SMALLINT 653 -#define SNAPSHOT 654 -#define SOME 655 -#define SORTED 656 -#define SQL_P 657 -#define STABLE 658 -#define STANDALONE_P 659 -#define START 660 -#define STATEMENT 661 -#define STATISTICS 662 -#define STDIN 663 -#define STDOUT 664 -#define STORAGE 665 -#define STORED 666 -#define STRICT_P 667 -#define STRIP_P 668 -#define STRUCT 669 -#define SUBSCRIPTION 670 -#define SUBSTRING 671 -#define SUMMARIZE 672 -#define SYMMETRIC 673 -#define SYSID 674 -#define SYSTEM_P 675 -#define TABLE 676 -#define TABLES 677 -#define TABLESAMPLE 678 -#define TABLESPACE 679 -#define TEMP 680 -#define TEMPLATE 681 -#define TEMPORARY 682 -#define TEXT_P 683 -#define THEN 684 -#define TIES 685 -#define TIME 686 -#define TIMESTAMP 687 -#define TO 688 -#define TRAILING 689 -#define TRANSACTION 690 -#define TRANSFORM 691 -#define TREAT 692 -#define TRIGGER 693 -#define TRIM 694 -#define TRUE_P 695 -#define TRUNCATE 696 -#define TRUSTED 697 -#define TRY_CAST 698 -#define TYPE_P 699 -#define TYPES_P 700 -#define UNBOUNDED 701 -#define UNCOMMITTED 702 -#define UNENCRYPTED 703 -#define UNION 704 -#define UNIQUE 705 -#define UNKNOWN 706 -#define UNLISTEN 707 -#define UNLOGGED 708 -#define UNPACK 709 -#define UNPIVOT 710 -#define UNTIL 711 -#define UPDATE 712 -#define USE_P 713 -#define USER 714 -#define USING 715 -#define VACUUM 716 -#define VALID 717 -#define VALIDATE 718 -#define VALIDATOR 719 -#define VALUE_P 720 -#define VALUES 721 -#define VARCHAR 722 -#define VARIABLE_P 723 -#define VARIADIC 724 -#define VARYING 725 -#define VERBOSE 726 -#define VERSION_P 727 -#define VIEW 728 -#define VIEWS 729 -#define VIRTUAL 730 -#define VOLATILE 731 -#define WEEK_P 732 -#define WEEKS_P 733 -#define WHEN 734 -#define WHERE 735 -#define WHITESPACE_P 736 -#define WINDOW 737 -#define WITH 738 -#define WITHIN 739 -#define WITHOUT 740 -#define WORK 741 -#define WRAPPER 742 -#define WRITE_P 743 -#define XML_P 744 -#define XMLATTRIBUTES 745 -#define XMLCONCAT 746 -#define XMLELEMENT 747 -#define XMLEXISTS 748 -#define XMLFOREST 749 -#define XMLNAMESPACES 750 -#define XMLPARSE 751 -#define XMLPI 752 -#define XMLROOT 753 -#define XMLSERIALIZE 754 -#define XMLTABLE 755 -#define YEAR_P 756 -#define YEARS_P 757 -#define YES_P 758 -#define ZONE 759 -#define NOT_LA 760 -#define NULLS_LA 761 -#define WITH_LA 762 -#define POSTFIXOP 763 -#define UMINUS 764 +#define SINGLE_COLON 274 +#define LESS_EQUALS 275 +#define GREATER_EQUALS 276 +#define NOT_EQUALS 277 +#define ABORT_P 278 +#define ABSOLUTE_P 279 +#define ACCESS 280 +#define ACTION 281 +#define ADD_P 282 +#define ADMIN 283 +#define AFTER 284 +#define AGGREGATE 285 +#define ALL 286 +#define ALSO 287 +#define ALTER 288 +#define ALWAYS 289 +#define ANALYSE 290 +#define ANALYZE 291 +#define AND 292 +#define ANTI 293 +#define ANY 294 +#define ARRAY 295 +#define AS 296 +#define ASC_P 297 +#define ASOF 298 +#define ASSERTION 299 +#define ASSIGNMENT 300 +#define ASYMMETRIC 301 +#define AT 302 +#define ATTACH 303 +#define ATTRIBUTE 304 +#define AUTHORIZATION 305 +#define BACKWARD 306 +#define BEFORE 307 +#define BEGIN_P 308 +#define BETWEEN 309 +#define BIGINT 310 +#define BINARY 311 +#define BIT 312 +#define BOOLEAN_P 313 +#define BOTH 314 +#define BY 315 +#define CACHE 316 +#define CALL_P 317 +#define CALLED 318 +#define CASCADE 319 +#define CASCADED 320 +#define CASE 321 +#define CAST 322 +#define CATALOG_P 323 +#define CENTURIES_P 324 +#define CENTURY_P 325 +#define CHAIN 326 +#define CHAR_P 327 +#define CHARACTER 328 +#define CHARACTERISTICS 329 +#define CHECK_P 330 +#define CHECKPOINT 331 +#define CLASS 332 +#define CLOSE 333 +#define CLUSTER 334 +#define COALESCE 335 +#define COLLATE 336 +#define COLLATION 337 +#define COLUMN 338 +#define COLUMNS 339 +#define COMMENT 340 +#define COMMENTS 341 +#define COMMIT 342 +#define COMMITTED 343 +#define COMPRESSION 344 +#define CONCURRENTLY 345 +#define CONFIGURATION 346 +#define CONFLICT 347 +#define CONNECTION 348 +#define CONSTRAINT 349 +#define CONSTRAINTS 350 +#define CONTENT_P 351 +#define CONTINUE_P 352 +#define CONVERSION_P 353 +#define COPY 354 +#define COST 355 +#define CREATE_P 356 +#define CROSS 357 +#define CSV 358 +#define CUBE 359 +#define CURRENT_P 360 +#define CURSOR 361 +#define CYCLE 362 +#define DATA_P 363 +#define DATABASE 364 +#define DAY_P 365 +#define DAYS_P 366 +#define DEALLOCATE 367 +#define DEC 368 +#define DECADE_P 369 +#define DECADES_P 370 +#define DECIMAL_P 371 +#define DECLARE 372 +#define DEFAULT 373 +#define DEFAULTS 374 +#define DEFERRABLE 375 +#define DEFERRED 376 +#define DEFINER 377 +#define DELETE_P 378 +#define DELIMITER 379 +#define DELIMITERS 380 +#define DEPENDS 381 +#define DESC_P 382 +#define DESCRIBE 383 +#define DETACH 384 +#define DICTIONARY 385 +#define DISABLE_P 386 +#define DISCARD 387 +#define DISTINCT 388 +#define DO 389 +#define DOCUMENT_P 390 +#define DOMAIN_P 391 +#define DOUBLE_P 392 +#define DROP 393 +#define EACH 394 +#define ELSE 395 +#define ENABLE_P 396 +#define ENCODING 397 +#define ENCRYPTED 398 +#define END_P 399 +#define ENUM_P 400 +#define ESCAPE 401 +#define EVENT 402 +#define EXCEPT 403 +#define EXCLUDE 404 +#define EXCLUDING 405 +#define EXCLUSIVE 406 +#define EXECUTE 407 +#define EXISTS 408 +#define EXPLAIN 409 +#define EXPORT_P 410 +#define EXPORT_STATE 411 +#define EXTENSION 412 +#define EXTENSIONS 413 +#define EXTERNAL 414 +#define EXTRACT 415 +#define FALSE_P 416 +#define FAMILY 417 +#define FETCH 418 +#define FILTER 419 +#define FIRST_P 420 +#define FLOAT_P 421 +#define FOLLOWING 422 +#define FOR 423 +#define FORCE 424 +#define FOREIGN 425 +#define FORWARD 426 +#define FREEZE 427 +#define FROM 428 +#define FULL 429 +#define FUNCTION 430 +#define FUNCTIONS 431 +#define GENERATED 432 +#define GLOB 433 +#define GLOBAL 434 +#define GRANT 435 +#define GRANTED 436 +#define GROUP_P 437 +#define GROUPING 438 +#define GROUPING_ID 439 +#define GROUPS 440 +#define HANDLER 441 +#define HAVING 442 +#define HEADER_P 443 +#define HOLD 444 +#define HOUR_P 445 +#define HOURS_P 446 +#define IDENTITY_P 447 +#define IF_P 448 +#define IGNORE_P 449 +#define ILIKE 450 +#define IMMEDIATE 451 +#define IMMUTABLE 452 +#define IMPLICIT_P 453 +#define IMPORT_P 454 +#define IN_P 455 +#define INCLUDE_P 456 +#define INCLUDING 457 +#define INCREMENT 458 +#define INDEX 459 +#define INDEXES 460 +#define INHERIT 461 +#define INHERITS 462 +#define INITIALLY 463 +#define INLINE_P 464 +#define INNER_P 465 +#define INOUT 466 +#define INPUT_P 467 +#define INSENSITIVE 468 +#define INSERT 469 +#define INSTALL 470 +#define INSTEAD 471 +#define INT_P 472 +#define INTEGER 473 +#define INTERSECT 474 +#define INTERVAL 475 +#define INTO 476 +#define INVOKER 477 +#define IS 478 +#define ISNULL 479 +#define ISOLATION 480 +#define JOIN 481 +#define JSON 482 +#define KEY 483 +#define LABEL 484 +#define LAMBDA 485 +#define LANGUAGE 486 +#define LARGE_P 487 +#define LAST_P 488 +#define LATERAL_P 489 +#define LEADING 490 +#define LEAKPROOF 491 +#define LEFT 492 +#define LEVEL 493 +#define LIKE 494 +#define LIMIT 495 +#define LISTEN 496 +#define LOAD 497 +#define LOCAL 498 +#define LOCATION 499 +#define LOCK_P 500 +#define LOCKED 501 +#define LOGGED 502 +#define MACRO 503 +#define MAP 504 +#define MAPPING 505 +#define MATCH 506 +#define MATERIALIZED 507 +#define MAXVALUE 508 +#define METHOD 509 +#define MICROSECOND_P 510 +#define MICROSECONDS_P 511 +#define MILLENNIA_P 512 +#define MILLENNIUM_P 513 +#define MILLISECOND_P 514 +#define MILLISECONDS_P 515 +#define MINUTE_P 516 +#define MINUTES_P 517 +#define MINVALUE 518 +#define MODE 519 +#define MONTH_P 520 +#define MONTHS_P 521 +#define MOVE 522 +#define NAME_P 523 +#define NAMES 524 +#define NATIONAL 525 +#define NATURAL 526 +#define NCHAR 527 +#define NEW 528 +#define NEXT 529 +#define NO 530 +#define NONE 531 +#define NOT 532 +#define NOTHING 533 +#define NOTIFY 534 +#define NOTNULL 535 +#define NOWAIT 536 +#define NULL_P 537 +#define NULLIF 538 +#define NULLS_P 539 +#define NUMERIC 540 +#define OBJECT_P 541 +#define OF 542 +#define OFF 543 +#define OFFSET 544 +#define OIDS 545 +#define OLD 546 +#define ON 547 +#define ONLY 548 +#define OPERATOR 549 +#define OPTION 550 +#define OPTIONS 551 +#define OR 552 +#define ORDER 553 +#define ORDINALITY 554 +#define OTHERS 555 +#define OUT_P 556 +#define OUTER_P 557 +#define OVER 558 +#define OVERLAPS 559 +#define OVERLAY 560 +#define OVERRIDING 561 +#define OWNED 562 +#define OWNER 563 +#define PARALLEL 564 +#define PARSER 565 +#define PARTIAL 566 +#define PARTITION 567 +#define PARTITIONED 568 +#define PASSING 569 +#define PASSWORD 570 +#define PERCENT 571 +#define PERSISTENT 572 +#define PIVOT 573 +#define PIVOT_LONGER 574 +#define PIVOT_WIDER 575 +#define PLACING 576 +#define PLANS 577 +#define POLICY 578 +#define POSITION 579 +#define POSITIONAL 580 +#define PRAGMA_P 581 +#define PRECEDING 582 +#define PRECISION 583 +#define PREPARE 584 +#define PREPARED 585 +#define PRESERVE 586 +#define PRIMARY 587 +#define PRIOR 588 +#define PRIVILEGES 589 +#define PROCEDURAL 590 +#define PROCEDURE 591 +#define PROGRAM 592 +#define PUBLICATION 593 +#define QUALIFY 594 +#define QUARTER_P 595 +#define QUARTERS_P 596 +#define QUOTE 597 +#define RANGE 598 +#define READ_P 599 +#define REAL 600 +#define REASSIGN 601 +#define RECHECK 602 +#define RECURSIVE 603 +#define REF 604 +#define REFERENCES 605 +#define REFERENCING 606 +#define REFRESH 607 +#define REINDEX 608 +#define RELATIVE_P 609 +#define RELEASE 610 +#define RENAME 611 +#define REPEATABLE 612 +#define REPLACE 613 +#define REPLICA 614 +#define RESET 615 +#define RESPECT_P 616 +#define RESTART 617 +#define RESTRICT 618 +#define RETURNING 619 +#define RETURNS 620 +#define REVOKE 621 +#define RIGHT 622 +#define ROLE 623 +#define ROLLBACK 624 +#define ROLLUP 625 +#define ROW 626 +#define ROWS 627 +#define RULE 628 +#define SAMPLE 629 +#define SAVEPOINT 630 +#define SCHEMA 631 +#define SCHEMAS 632 +#define SCOPE 633 +#define SCROLL 634 +#define SEARCH 635 +#define SECOND_P 636 +#define SECONDS_P 637 +#define SECRET 638 +#define SECURITY 639 +#define SELECT 640 +#define SEMI 641 +#define SEQUENCE 642 +#define SEQUENCES 643 +#define SERIALIZABLE 644 +#define SERVER 645 +#define SESSION 646 +#define SET 647 +#define SETOF 648 +#define SETS 649 +#define SHARE 650 +#define SHOW 651 +#define SIMILAR 652 +#define SIMPLE 653 +#define SKIP 654 +#define SMALLINT 655 +#define SNAPSHOT 656 +#define SOME 657 +#define SORTED 658 +#define SQL_P 659 +#define STABLE 660 +#define STANDALONE_P 661 +#define START 662 +#define STATEMENT 663 +#define STATISTICS 664 +#define STDIN 665 +#define STDOUT 666 +#define STORAGE 667 +#define STORED 668 +#define STRICT_P 669 +#define STRIP_P 670 +#define STRUCT 671 +#define SUBSCRIPTION 672 +#define SUBSTRING 673 +#define SUMMARIZE 674 +#define SYMMETRIC 675 +#define SYSID 676 +#define SYSTEM_P 677 +#define TABLE 678 +#define TABLES 679 +#define TABLESAMPLE 680 +#define TABLESPACE 681 +#define TEMP 682 +#define TEMPLATE 683 +#define TEMPORARY 684 +#define TEXT_P 685 +#define THEN 686 +#define TIES 687 +#define TIME 688 +#define TIMESTAMP 689 +#define TO 690 +#define TRAILING 691 +#define TRANSACTION 692 +#define TRANSFORM 693 +#define TREAT 694 +#define TRIGGER 695 +#define TRIM 696 +#define TRUE_P 697 +#define TRUNCATE 698 +#define TRUSTED 699 +#define TRY_CAST 700 +#define TYPE_P 701 +#define TYPES_P 702 +#define UNBOUNDED 703 +#define UNCOMMITTED 704 +#define UNENCRYPTED 705 +#define UNION 706 +#define UNIQUE 707 +#define UNKNOWN 708 +#define UNLISTEN 709 +#define UNLOGGED 710 +#define UNPACK 711 +#define UNPIVOT 712 +#define UNTIL 713 +#define UPDATE 714 +#define USE_P 715 +#define USER 716 +#define USING 717 +#define VACUUM 718 +#define VALID 719 +#define VALIDATE 720 +#define VALIDATOR 721 +#define VALUE_P 722 +#define VALUES 723 +#define VARCHAR 724 +#define VARIABLE_P 725 +#define VARIADIC 726 +#define VARYING 727 +#define VERBOSE 728 +#define VERSION_P 729 +#define VIEW 730 +#define VIEWS 731 +#define VIRTUAL 732 +#define VOLATILE 733 +#define WEEK_P 734 +#define WEEKS_P 735 +#define WHEN 736 +#define WHERE 737 +#define WHITESPACE_P 738 +#define WINDOW 739 +#define WITH 740 +#define WITHIN 741 +#define WITHOUT 742 +#define WORK 743 +#define WRAPPER 744 +#define WRITE_P 745 +#define XML_P 746 +#define XMLATTRIBUTES 747 +#define XMLCONCAT 748 +#define XMLELEMENT 749 +#define XMLEXISTS 750 +#define XMLFOREST 751 +#define XMLNAMESPACES 752 +#define XMLPARSE 753 +#define XMLPI 754 +#define XMLROOT 755 +#define XMLSERIALIZE 756 +#define XMLTABLE 757 +#define YEAR_P 758 +#define YEARS_P 759 +#define YES_P 760 +#define ZONE 761 +#define NOT_LA 762 +#define NULLS_LA 763 +#define WITH_LA 764 +#define POSTFIXOP 765 +#define UMINUS 766 @@ -1114,7 +1118,7 @@ typedef union YYSTYPE PGTransactionStmtType transactiontype; } /* Line 1529 of yacc.c. */ -#line 1118 "third_party/libpg_query/grammar/grammar_out.hpp" +#line 1122 "third_party/libpg_query/grammar/grammar_out.hpp" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp b/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp index 57fb14889..4e74205e0 100644 --- a/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +++ b/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp @@ -210,6 +210,7 @@ PG_KEYWORD("join", JOIN, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("json", JSON, UNRESERVED_KEYWORD) PG_KEYWORD("key", KEY, UNRESERVED_KEYWORD) PG_KEYWORD("label", LABEL, UNRESERVED_KEYWORD) +PG_KEYWORD("lambda", LAMBDA, RESERVED_KEYWORD) PG_KEYWORD("language", LANGUAGE, UNRESERVED_KEYWORD) PG_KEYWORD("large", LARGE_P, UNRESERVED_KEYWORD) PG_KEYWORD("last", LAST_P, UNRESERVED_KEYWORD) diff --git a/src/duckdb/third_party/libpg_query/include/parser/scanner.hpp b/src/duckdb/third_party/libpg_query/include/parser/scanner.hpp index 2813b1b64..0aad3fb42 100644 --- a/src/duckdb/third_party/libpg_query/include/parser/scanner.hpp +++ b/src/duckdb/third_party/libpg_query/include/parser/scanner.hpp @@ -53,7 +53,7 @@ typedef union core_YYSTYPE { * the ASCII characters plus these: * %token IDENT FCONST SCONST BCONST XCONST Op * %token ICONST PARAM - * %token TYPECAST DOT_DOT COLON_EQUALS EQUALS_GREATER LAMBDA_ARROW + * %token TYPECAST DOT_DOT COLON_EQUALS EQUALS_GREATER SINGLE_ARROW SINGLE_COLON * %token LESS_EQUALS GREATER_EQUALS NOT_EQUALS * The above token definitions *must* be the first ones declared in any * bison parser built atop this scanner, so that they will have consistent diff --git a/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp b/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp index 8d8881ce6..531bff04a 100644 --- a/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +++ b/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp @@ -88,499 +88,501 @@ EQUALS_GREATER = 269, INTEGER_DIVISION = 270, POWER_OF = 271, - LAMBDA_ARROW = 272, + SINGLE_ARROW = 272, DOUBLE_ARROW = 273, - LESS_EQUALS = 274, - GREATER_EQUALS = 275, - NOT_EQUALS = 276, - ABORT_P = 277, - ABSOLUTE_P = 278, - ACCESS = 279, - ACTION = 280, - ADD_P = 281, - ADMIN = 282, - AFTER = 283, - AGGREGATE = 284, - ALL = 285, - ALSO = 286, - ALTER = 287, - ALWAYS = 288, - ANALYSE = 289, - ANALYZE = 290, - AND = 291, - ANTI = 292, - ANY = 293, - ARRAY = 294, - AS = 295, - ASC_P = 296, - ASOF = 297, - ASSERTION = 298, - ASSIGNMENT = 299, - ASYMMETRIC = 300, - AT = 301, - ATTACH = 302, - ATTRIBUTE = 303, - AUTHORIZATION = 304, - BACKWARD = 305, - BEFORE = 306, - BEGIN_P = 307, - BETWEEN = 308, - BIGINT = 309, - BINARY = 310, - BIT = 311, - BOOLEAN_P = 312, - BOTH = 313, - BY = 314, - CACHE = 315, - CALL_P = 316, - CALLED = 317, - CASCADE = 318, - CASCADED = 319, - CASE = 320, - CAST = 321, - CATALOG_P = 322, - CENTURIES_P = 323, - CENTURY_P = 324, - CHAIN = 325, - CHAR_P = 326, - CHARACTER = 327, - CHARACTERISTICS = 328, - CHECK_P = 329, - CHECKPOINT = 330, - CLASS = 331, - CLOSE = 332, - CLUSTER = 333, - COALESCE = 334, - COLLATE = 335, - COLLATION = 336, - COLUMN = 337, - COLUMNS = 338, - COMMENT = 339, - COMMENTS = 340, - COMMIT = 341, - COMMITTED = 342, - COMPRESSION = 343, - CONCURRENTLY = 344, - CONFIGURATION = 345, - CONFLICT = 346, - CONNECTION = 347, - CONSTRAINT = 348, - CONSTRAINTS = 349, - CONTENT_P = 350, - CONTINUE_P = 351, - CONVERSION_P = 352, - COPY = 353, - COST = 354, - CREATE_P = 355, - CROSS = 356, - CSV = 357, - CUBE = 358, - CURRENT_P = 359, - CURSOR = 360, - CYCLE = 361, - DATA_P = 362, - DATABASE = 363, - DAY_P = 364, - DAYS_P = 365, - DEALLOCATE = 366, - DEC = 367, - DECADE_P = 368, - DECADES_P = 369, - DECIMAL_P = 370, - DECLARE = 371, - DEFAULT = 372, - DEFAULTS = 373, - DEFERRABLE = 374, - DEFERRED = 375, - DEFINER = 376, - DELETE_P = 377, - DELIMITER = 378, - DELIMITERS = 379, - DEPENDS = 380, - DESC_P = 381, - DESCRIBE = 382, - DETACH = 383, - DICTIONARY = 384, - DISABLE_P = 385, - DISCARD = 386, - DISTINCT = 387, - DO = 388, - DOCUMENT_P = 389, - DOMAIN_P = 390, - DOUBLE_P = 391, - DROP = 392, - EACH = 393, - ELSE = 394, - ENABLE_P = 395, - ENCODING = 396, - ENCRYPTED = 397, - END_P = 398, - ENUM_P = 399, - ESCAPE = 400, - EVENT = 401, - EXCEPT = 402, - EXCLUDE = 403, - EXCLUDING = 404, - EXCLUSIVE = 405, - EXECUTE = 406, - EXISTS = 407, - EXPLAIN = 408, - EXPORT_P = 409, - EXPORT_STATE = 410, - EXTENSION = 411, - EXTENSIONS = 412, - EXTERNAL = 413, - EXTRACT = 414, - FALSE_P = 415, - FAMILY = 416, - FETCH = 417, - FILTER = 418, - FIRST_P = 419, - FLOAT_P = 420, - FOLLOWING = 421, - FOR = 422, - FORCE = 423, - FOREIGN = 424, - FORWARD = 425, - FREEZE = 426, - FROM = 427, - FULL = 428, - FUNCTION = 429, - FUNCTIONS = 430, - GENERATED = 431, - GLOB = 432, - GLOBAL = 433, - GRANT = 434, - GRANTED = 435, - GROUP_P = 436, - GROUPING = 437, - GROUPING_ID = 438, - GROUPS = 439, - HANDLER = 440, - HAVING = 441, - HEADER_P = 442, - HOLD = 443, - HOUR_P = 444, - HOURS_P = 445, - IDENTITY_P = 446, - IF_P = 447, - IGNORE_P = 448, - ILIKE = 449, - IMMEDIATE = 450, - IMMUTABLE = 451, - IMPLICIT_P = 452, - IMPORT_P = 453, - IN_P = 454, - INCLUDE_P = 455, - INCLUDING = 456, - INCREMENT = 457, - INDEX = 458, - INDEXES = 459, - INHERIT = 460, - INHERITS = 461, - INITIALLY = 462, - INLINE_P = 463, - INNER_P = 464, - INOUT = 465, - INPUT_P = 466, - INSENSITIVE = 467, - INSERT = 468, - INSTALL = 469, - INSTEAD = 470, - INT_P = 471, - INTEGER = 472, - INTERSECT = 473, - INTERVAL = 474, - INTO = 475, - INVOKER = 476, - IS = 477, - ISNULL = 478, - ISOLATION = 479, - JOIN = 480, - JSON = 481, - KEY = 482, - LABEL = 483, - LANGUAGE = 484, - LARGE_P = 485, - LAST_P = 486, - LATERAL_P = 487, - LEADING = 488, - LEAKPROOF = 489, - LEFT = 490, - LEVEL = 491, - LIKE = 492, - LIMIT = 493, - LISTEN = 494, - LOAD = 495, - LOCAL = 496, - LOCATION = 497, - LOCK_P = 498, - LOCKED = 499, - LOGGED = 500, - MACRO = 501, - MAP = 502, - MAPPING = 503, - MATCH = 504, - MATERIALIZED = 505, - MAXVALUE = 506, - METHOD = 507, - MICROSECOND_P = 508, - MICROSECONDS_P = 509, - MILLENNIA_P = 510, - MILLENNIUM_P = 511, - MILLISECOND_P = 512, - MILLISECONDS_P = 513, - MINUTE_P = 514, - MINUTES_P = 515, - MINVALUE = 516, - MODE = 517, - MONTH_P = 518, - MONTHS_P = 519, - MOVE = 520, - NAME_P = 521, - NAMES = 522, - NATIONAL = 523, - NATURAL = 524, - NCHAR = 525, - NEW = 526, - NEXT = 527, - NO = 528, - NONE = 529, - NOT = 530, - NOTHING = 531, - NOTIFY = 532, - NOTNULL = 533, - NOWAIT = 534, - NULL_P = 535, - NULLIF = 536, - NULLS_P = 537, - NUMERIC = 538, - OBJECT_P = 539, - OF = 540, - OFF = 541, - OFFSET = 542, - OIDS = 543, - OLD = 544, - ON = 545, - ONLY = 546, - OPERATOR = 547, - OPTION = 548, - OPTIONS = 549, - OR = 550, - ORDER = 551, - ORDINALITY = 552, - OTHERS = 553, - OUT_P = 554, - OUTER_P = 555, - OVER = 556, - OVERLAPS = 557, - OVERLAY = 558, - OVERRIDING = 559, - OWNED = 560, - OWNER = 561, - PARALLEL = 562, - PARSER = 563, - PARTIAL = 564, - PARTITION = 565, - PARTITIONED = 566, - PASSING = 567, - PASSWORD = 568, - PERCENT = 569, - PERSISTENT = 570, - PIVOT = 571, - PIVOT_LONGER = 572, - PIVOT_WIDER = 573, - PLACING = 574, - PLANS = 575, - POLICY = 576, - POSITION = 577, - POSITIONAL = 578, - PRAGMA_P = 579, - PRECEDING = 580, - PRECISION = 581, - PREPARE = 582, - PREPARED = 583, - PRESERVE = 584, - PRIMARY = 585, - PRIOR = 586, - PRIVILEGES = 587, - PROCEDURAL = 588, - PROCEDURE = 589, - PROGRAM = 590, - PUBLICATION = 591, - QUALIFY = 592, - QUARTER_P = 593, - QUARTERS_P = 594, - QUOTE = 595, - RANGE = 596, - READ_P = 597, - REAL = 598, - REASSIGN = 599, - RECHECK = 600, - RECURSIVE = 601, - REF = 602, - REFERENCES = 603, - REFERENCING = 604, - REFRESH = 605, - REINDEX = 606, - RELATIVE_P = 607, - RELEASE = 608, - RENAME = 609, - REPEATABLE = 610, - REPLACE = 611, - REPLICA = 612, - RESET = 613, - RESPECT_P = 614, - RESTART = 615, - RESTRICT = 616, - RETURNING = 617, - RETURNS = 618, - REVOKE = 619, - RIGHT = 620, - ROLE = 621, - ROLLBACK = 622, - ROLLUP = 623, - ROW = 624, - ROWS = 625, - RULE = 626, - SAMPLE = 627, - SAVEPOINT = 628, - SCHEMA = 629, - SCHEMAS = 630, - SCOPE = 631, - SCROLL = 632, - SEARCH = 633, - SECOND_P = 634, - SECONDS_P = 635, - SECRET = 636, - SECURITY = 637, - SELECT = 638, - SEMI = 639, - SEQUENCE = 640, - SEQUENCES = 641, - SERIALIZABLE = 642, - SERVER = 643, - SESSION = 644, - SET = 645, - SETOF = 646, - SETS = 647, - SHARE = 648, - SHOW = 649, - SIMILAR = 650, - SIMPLE = 651, - SKIP = 652, - SMALLINT = 653, - SNAPSHOT = 654, - SOME = 655, - SORTED = 656, - SQL_P = 657, - STABLE = 658, - STANDALONE_P = 659, - START = 660, - STATEMENT = 661, - STATISTICS = 662, - STDIN = 663, - STDOUT = 664, - STORAGE = 665, - STORED = 666, - STRICT_P = 667, - STRIP_P = 668, - STRUCT = 669, - SUBSCRIPTION = 670, - SUBSTRING = 671, - SUMMARIZE = 672, - SYMMETRIC = 673, - SYSID = 674, - SYSTEM_P = 675, - TABLE = 676, - TABLES = 677, - TABLESAMPLE = 678, - TABLESPACE = 679, - TEMP = 680, - TEMPLATE = 681, - TEMPORARY = 682, - TEXT_P = 683, - THEN = 684, - TIES = 685, - TIME = 686, - TIMESTAMP = 687, - TO = 688, - TRAILING = 689, - TRANSACTION = 690, - TRANSFORM = 691, - TREAT = 692, - TRIGGER = 693, - TRIM = 694, - TRUE_P = 695, - TRUNCATE = 696, - TRUSTED = 697, - TRY_CAST = 698, - TYPE_P = 699, - TYPES_P = 700, - UNBOUNDED = 701, - UNCOMMITTED = 702, - UNENCRYPTED = 703, - UNION = 704, - UNIQUE = 705, - UNKNOWN = 706, - UNLISTEN = 707, - UNLOGGED = 708, - UNPACK = 709, - UNPIVOT = 710, - UNTIL = 711, - UPDATE = 712, - USE_P = 713, - USER = 714, - USING = 715, - VACUUM = 716, - VALID = 717, - VALIDATE = 718, - VALIDATOR = 719, - VALUE_P = 720, - VALUES = 721, - VARCHAR = 722, - VARIABLE_P = 723, - VARIADIC = 724, - VARYING = 725, - VERBOSE = 726, - VERSION_P = 727, - VIEW = 728, - VIEWS = 729, - VIRTUAL = 730, - VOLATILE = 731, - WEEK_P = 732, - WEEKS_P = 733, - WHEN = 734, - WHERE = 735, - WHITESPACE_P = 736, - WINDOW = 737, - WITH = 738, - WITHIN = 739, - WITHOUT = 740, - WORK = 741, - WRAPPER = 742, - WRITE_P = 743, - XML_P = 744, - XMLATTRIBUTES = 745, - XMLCONCAT = 746, - XMLELEMENT = 747, - XMLEXISTS = 748, - XMLFOREST = 749, - XMLNAMESPACES = 750, - XMLPARSE = 751, - XMLPI = 752, - XMLROOT = 753, - XMLSERIALIZE = 754, - XMLTABLE = 755, - YEAR_P = 756, - YEARS_P = 757, - YES_P = 758, - ZONE = 759, - NOT_LA = 760, - NULLS_LA = 761, - WITH_LA = 762, - POSTFIXOP = 763, - UMINUS = 764 + SINGLE_COLON = 274, + LESS_EQUALS = 275, + GREATER_EQUALS = 276, + NOT_EQUALS = 277, + ABORT_P = 278, + ABSOLUTE_P = 279, + ACCESS = 280, + ACTION = 281, + ADD_P = 282, + ADMIN = 283, + AFTER = 284, + AGGREGATE = 285, + ALL = 286, + ALSO = 287, + ALTER = 288, + ALWAYS = 289, + ANALYSE = 290, + ANALYZE = 291, + AND = 292, + ANTI = 293, + ANY = 294, + ARRAY = 295, + AS = 296, + ASC_P = 297, + ASOF = 298, + ASSERTION = 299, + ASSIGNMENT = 300, + ASYMMETRIC = 301, + AT = 302, + ATTACH = 303, + ATTRIBUTE = 304, + AUTHORIZATION = 305, + BACKWARD = 306, + BEFORE = 307, + BEGIN_P = 308, + BETWEEN = 309, + BIGINT = 310, + BINARY = 311, + BIT = 312, + BOOLEAN_P = 313, + BOTH = 314, + BY = 315, + CACHE = 316, + CALL_P = 317, + CALLED = 318, + CASCADE = 319, + CASCADED = 320, + CASE = 321, + CAST = 322, + CATALOG_P = 323, + CENTURIES_P = 324, + CENTURY_P = 325, + CHAIN = 326, + CHAR_P = 327, + CHARACTER = 328, + CHARACTERISTICS = 329, + CHECK_P = 330, + CHECKPOINT = 331, + CLASS = 332, + CLOSE = 333, + CLUSTER = 334, + COALESCE = 335, + COLLATE = 336, + COLLATION = 337, + COLUMN = 338, + COLUMNS = 339, + COMMENT = 340, + COMMENTS = 341, + COMMIT = 342, + COMMITTED = 343, + COMPRESSION = 344, + CONCURRENTLY = 345, + CONFIGURATION = 346, + CONFLICT = 347, + CONNECTION = 348, + CONSTRAINT = 349, + CONSTRAINTS = 350, + CONTENT_P = 351, + CONTINUE_P = 352, + CONVERSION_P = 353, + COPY = 354, + COST = 355, + CREATE_P = 356, + CROSS = 357, + CSV = 358, + CUBE = 359, + CURRENT_P = 360, + CURSOR = 361, + CYCLE = 362, + DATA_P = 363, + DATABASE = 364, + DAY_P = 365, + DAYS_P = 366, + DEALLOCATE = 367, + DEC = 368, + DECADE_P = 369, + DECADES_P = 370, + DECIMAL_P = 371, + DECLARE = 372, + DEFAULT = 373, + DEFAULTS = 374, + DEFERRABLE = 375, + DEFERRED = 376, + DEFINER = 377, + DELETE_P = 378, + DELIMITER = 379, + DELIMITERS = 380, + DEPENDS = 381, + DESC_P = 382, + DESCRIBE = 383, + DETACH = 384, + DICTIONARY = 385, + DISABLE_P = 386, + DISCARD = 387, + DISTINCT = 388, + DO = 389, + DOCUMENT_P = 390, + DOMAIN_P = 391, + DOUBLE_P = 392, + DROP = 393, + EACH = 394, + ELSE = 395, + ENABLE_P = 396, + ENCODING = 397, + ENCRYPTED = 398, + END_P = 399, + ENUM_P = 400, + ESCAPE = 401, + EVENT = 402, + EXCEPT = 403, + EXCLUDE = 404, + EXCLUDING = 405, + EXCLUSIVE = 406, + EXECUTE = 407, + EXISTS = 408, + EXPLAIN = 409, + EXPORT_P = 410, + EXPORT_STATE = 411, + EXTENSION = 412, + EXTENSIONS = 413, + EXTERNAL = 414, + EXTRACT = 415, + FALSE_P = 416, + FAMILY = 417, + FETCH = 418, + FILTER = 419, + FIRST_P = 420, + FLOAT_P = 421, + FOLLOWING = 422, + FOR = 423, + FORCE = 424, + FOREIGN = 425, + FORWARD = 426, + FREEZE = 427, + FROM = 428, + FULL = 429, + FUNCTION = 430, + FUNCTIONS = 431, + GENERATED = 432, + GLOB = 433, + GLOBAL = 434, + GRANT = 435, + GRANTED = 436, + GROUP_P = 437, + GROUPING = 438, + GROUPING_ID = 439, + GROUPS = 440, + HANDLER = 441, + HAVING = 442, + HEADER_P = 443, + HOLD = 444, + HOUR_P = 445, + HOURS_P = 446, + IDENTITY_P = 447, + IF_P = 448, + IGNORE_P = 449, + ILIKE = 450, + IMMEDIATE = 451, + IMMUTABLE = 452, + IMPLICIT_P = 453, + IMPORT_P = 454, + IN_P = 455, + INCLUDE_P = 456, + INCLUDING = 457, + INCREMENT = 458, + INDEX = 459, + INDEXES = 460, + INHERIT = 461, + INHERITS = 462, + INITIALLY = 463, + INLINE_P = 464, + INNER_P = 465, + INOUT = 466, + INPUT_P = 467, + INSENSITIVE = 468, + INSERT = 469, + INSTALL = 470, + INSTEAD = 471, + INT_P = 472, + INTEGER = 473, + INTERSECT = 474, + INTERVAL = 475, + INTO = 476, + INVOKER = 477, + IS = 478, + ISNULL = 479, + ISOLATION = 480, + JOIN = 481, + JSON = 482, + KEY = 483, + LABEL = 484, + LAMBDA = 485, + LANGUAGE = 486, + LARGE_P = 487, + LAST_P = 488, + LATERAL_P = 489, + LEADING = 490, + LEAKPROOF = 491, + LEFT = 492, + LEVEL = 493, + LIKE = 494, + LIMIT = 495, + LISTEN = 496, + LOAD = 497, + LOCAL = 498, + LOCATION = 499, + LOCK_P = 500, + LOCKED = 501, + LOGGED = 502, + MACRO = 503, + MAP = 504, + MAPPING = 505, + MATCH = 506, + MATERIALIZED = 507, + MAXVALUE = 508, + METHOD = 509, + MICROSECOND_P = 510, + MICROSECONDS_P = 511, + MILLENNIA_P = 512, + MILLENNIUM_P = 513, + MILLISECOND_P = 514, + MILLISECONDS_P = 515, + MINUTE_P = 516, + MINUTES_P = 517, + MINVALUE = 518, + MODE = 519, + MONTH_P = 520, + MONTHS_P = 521, + MOVE = 522, + NAME_P = 523, + NAMES = 524, + NATIONAL = 525, + NATURAL = 526, + NCHAR = 527, + NEW = 528, + NEXT = 529, + NO = 530, + NONE = 531, + NOT = 532, + NOTHING = 533, + NOTIFY = 534, + NOTNULL = 535, + NOWAIT = 536, + NULL_P = 537, + NULLIF = 538, + NULLS_P = 539, + NUMERIC = 540, + OBJECT_P = 541, + OF = 542, + OFF = 543, + OFFSET = 544, + OIDS = 545, + OLD = 546, + ON = 547, + ONLY = 548, + OPERATOR = 549, + OPTION = 550, + OPTIONS = 551, + OR = 552, + ORDER = 553, + ORDINALITY = 554, + OTHERS = 555, + OUT_P = 556, + OUTER_P = 557, + OVER = 558, + OVERLAPS = 559, + OVERLAY = 560, + OVERRIDING = 561, + OWNED = 562, + OWNER = 563, + PARALLEL = 564, + PARSER = 565, + PARTIAL = 566, + PARTITION = 567, + PARTITIONED = 568, + PASSING = 569, + PASSWORD = 570, + PERCENT = 571, + PERSISTENT = 572, + PIVOT = 573, + PIVOT_LONGER = 574, + PIVOT_WIDER = 575, + PLACING = 576, + PLANS = 577, + POLICY = 578, + POSITION = 579, + POSITIONAL = 580, + PRAGMA_P = 581, + PRECEDING = 582, + PRECISION = 583, + PREPARE = 584, + PREPARED = 585, + PRESERVE = 586, + PRIMARY = 587, + PRIOR = 588, + PRIVILEGES = 589, + PROCEDURAL = 590, + PROCEDURE = 591, + PROGRAM = 592, + PUBLICATION = 593, + QUALIFY = 594, + QUARTER_P = 595, + QUARTERS_P = 596, + QUOTE = 597, + RANGE = 598, + READ_P = 599, + REAL = 600, + REASSIGN = 601, + RECHECK = 602, + RECURSIVE = 603, + REF = 604, + REFERENCES = 605, + REFERENCING = 606, + REFRESH = 607, + REINDEX = 608, + RELATIVE_P = 609, + RELEASE = 610, + RENAME = 611, + REPEATABLE = 612, + REPLACE = 613, + REPLICA = 614, + RESET = 615, + RESPECT_P = 616, + RESTART = 617, + RESTRICT = 618, + RETURNING = 619, + RETURNS = 620, + REVOKE = 621, + RIGHT = 622, + ROLE = 623, + ROLLBACK = 624, + ROLLUP = 625, + ROW = 626, + ROWS = 627, + RULE = 628, + SAMPLE = 629, + SAVEPOINT = 630, + SCHEMA = 631, + SCHEMAS = 632, + SCOPE = 633, + SCROLL = 634, + SEARCH = 635, + SECOND_P = 636, + SECONDS_P = 637, + SECRET = 638, + SECURITY = 639, + SELECT = 640, + SEMI = 641, + SEQUENCE = 642, + SEQUENCES = 643, + SERIALIZABLE = 644, + SERVER = 645, + SESSION = 646, + SET = 647, + SETOF = 648, + SETS = 649, + SHARE = 650, + SHOW = 651, + SIMILAR = 652, + SIMPLE = 653, + SKIP = 654, + SMALLINT = 655, + SNAPSHOT = 656, + SOME = 657, + SORTED = 658, + SQL_P = 659, + STABLE = 660, + STANDALONE_P = 661, + START = 662, + STATEMENT = 663, + STATISTICS = 664, + STDIN = 665, + STDOUT = 666, + STORAGE = 667, + STORED = 668, + STRICT_P = 669, + STRIP_P = 670, + STRUCT = 671, + SUBSCRIPTION = 672, + SUBSTRING = 673, + SUMMARIZE = 674, + SYMMETRIC = 675, + SYSID = 676, + SYSTEM_P = 677, + TABLE = 678, + TABLES = 679, + TABLESAMPLE = 680, + TABLESPACE = 681, + TEMP = 682, + TEMPLATE = 683, + TEMPORARY = 684, + TEXT_P = 685, + THEN = 686, + TIES = 687, + TIME = 688, + TIMESTAMP = 689, + TO = 690, + TRAILING = 691, + TRANSACTION = 692, + TRANSFORM = 693, + TREAT = 694, + TRIGGER = 695, + TRIM = 696, + TRUE_P = 697, + TRUNCATE = 698, + TRUSTED = 699, + TRY_CAST = 700, + TYPE_P = 701, + TYPES_P = 702, + UNBOUNDED = 703, + UNCOMMITTED = 704, + UNENCRYPTED = 705, + UNION = 706, + UNIQUE = 707, + UNKNOWN = 708, + UNLISTEN = 709, + UNLOGGED = 710, + UNPACK = 711, + UNPIVOT = 712, + UNTIL = 713, + UPDATE = 714, + USE_P = 715, + USER = 716, + USING = 717, + VACUUM = 718, + VALID = 719, + VALIDATE = 720, + VALIDATOR = 721, + VALUE_P = 722, + VALUES = 723, + VARCHAR = 724, + VARIABLE_P = 725, + VARIADIC = 726, + VARYING = 727, + VERBOSE = 728, + VERSION_P = 729, + VIEW = 730, + VIEWS = 731, + VIRTUAL = 732, + VOLATILE = 733, + WEEK_P = 734, + WEEKS_P = 735, + WHEN = 736, + WHERE = 737, + WHITESPACE_P = 738, + WINDOW = 739, + WITH = 740, + WITHIN = 741, + WITHOUT = 742, + WORK = 743, + WRAPPER = 744, + WRITE_P = 745, + XML_P = 746, + XMLATTRIBUTES = 747, + XMLCONCAT = 748, + XMLELEMENT = 749, + XMLEXISTS = 750, + XMLFOREST = 751, + XMLNAMESPACES = 752, + XMLPARSE = 753, + XMLPI = 754, + XMLROOT = 755, + XMLSERIALIZE = 756, + XMLTABLE = 757, + YEAR_P = 758, + YEARS_P = 759, + YES_P = 760, + ZONE = 761, + NOT_LA = 762, + NULLS_LA = 763, + WITH_LA = 764, + POSTFIXOP = 765, + UMINUS = 766 }; #endif /* Tokens. */ @@ -598,499 +600,501 @@ #define EQUALS_GREATER 269 #define INTEGER_DIVISION 270 #define POWER_OF 271 -#define LAMBDA_ARROW 272 +#define SINGLE_ARROW 272 #define DOUBLE_ARROW 273 -#define LESS_EQUALS 274 -#define GREATER_EQUALS 275 -#define NOT_EQUALS 276 -#define ABORT_P 277 -#define ABSOLUTE_P 278 -#define ACCESS 279 -#define ACTION 280 -#define ADD_P 281 -#define ADMIN 282 -#define AFTER 283 -#define AGGREGATE 284 -#define ALL 285 -#define ALSO 286 -#define ALTER 287 -#define ALWAYS 288 -#define ANALYSE 289 -#define ANALYZE 290 -#define AND 291 -#define ANTI 292 -#define ANY 293 -#define ARRAY 294 -#define AS 295 -#define ASC_P 296 -#define ASOF 297 -#define ASSERTION 298 -#define ASSIGNMENT 299 -#define ASYMMETRIC 300 -#define AT 301 -#define ATTACH 302 -#define ATTRIBUTE 303 -#define AUTHORIZATION 304 -#define BACKWARD 305 -#define BEFORE 306 -#define BEGIN_P 307 -#define BETWEEN 308 -#define BIGINT 309 -#define BINARY 310 -#define BIT 311 -#define BOOLEAN_P 312 -#define BOTH 313 -#define BY 314 -#define CACHE 315 -#define CALL_P 316 -#define CALLED 317 -#define CASCADE 318 -#define CASCADED 319 -#define CASE 320 -#define CAST 321 -#define CATALOG_P 322 -#define CENTURIES_P 323 -#define CENTURY_P 324 -#define CHAIN 325 -#define CHAR_P 326 -#define CHARACTER 327 -#define CHARACTERISTICS 328 -#define CHECK_P 329 -#define CHECKPOINT 330 -#define CLASS 331 -#define CLOSE 332 -#define CLUSTER 333 -#define COALESCE 334 -#define COLLATE 335 -#define COLLATION 336 -#define COLUMN 337 -#define COLUMNS 338 -#define COMMENT 339 -#define COMMENTS 340 -#define COMMIT 341 -#define COMMITTED 342 -#define COMPRESSION 343 -#define CONCURRENTLY 344 -#define CONFIGURATION 345 -#define CONFLICT 346 -#define CONNECTION 347 -#define CONSTRAINT 348 -#define CONSTRAINTS 349 -#define CONTENT_P 350 -#define CONTINUE_P 351 -#define CONVERSION_P 352 -#define COPY 353 -#define COST 354 -#define CREATE_P 355 -#define CROSS 356 -#define CSV 357 -#define CUBE 358 -#define CURRENT_P 359 -#define CURSOR 360 -#define CYCLE 361 -#define DATA_P 362 -#define DATABASE 363 -#define DAY_P 364 -#define DAYS_P 365 -#define DEALLOCATE 366 -#define DEC 367 -#define DECADE_P 368 -#define DECADES_P 369 -#define DECIMAL_P 370 -#define DECLARE 371 -#define DEFAULT 372 -#define DEFAULTS 373 -#define DEFERRABLE 374 -#define DEFERRED 375 -#define DEFINER 376 -#define DELETE_P 377 -#define DELIMITER 378 -#define DELIMITERS 379 -#define DEPENDS 380 -#define DESC_P 381 -#define DESCRIBE 382 -#define DETACH 383 -#define DICTIONARY 384 -#define DISABLE_P 385 -#define DISCARD 386 -#define DISTINCT 387 -#define DO 388 -#define DOCUMENT_P 389 -#define DOMAIN_P 390 -#define DOUBLE_P 391 -#define DROP 392 -#define EACH 393 -#define ELSE 394 -#define ENABLE_P 395 -#define ENCODING 396 -#define ENCRYPTED 397 -#define END_P 398 -#define ENUM_P 399 -#define ESCAPE 400 -#define EVENT 401 -#define EXCEPT 402 -#define EXCLUDE 403 -#define EXCLUDING 404 -#define EXCLUSIVE 405 -#define EXECUTE 406 -#define EXISTS 407 -#define EXPLAIN 408 -#define EXPORT_P 409 -#define EXPORT_STATE 410 -#define EXTENSION 411 -#define EXTENSIONS 412 -#define EXTERNAL 413 -#define EXTRACT 414 -#define FALSE_P 415 -#define FAMILY 416 -#define FETCH 417 -#define FILTER 418 -#define FIRST_P 419 -#define FLOAT_P 420 -#define FOLLOWING 421 -#define FOR 422 -#define FORCE 423 -#define FOREIGN 424 -#define FORWARD 425 -#define FREEZE 426 -#define FROM 427 -#define FULL 428 -#define FUNCTION 429 -#define FUNCTIONS 430 -#define GENERATED 431 -#define GLOB 432 -#define GLOBAL 433 -#define GRANT 434 -#define GRANTED 435 -#define GROUP_P 436 -#define GROUPING 437 -#define GROUPING_ID 438 -#define GROUPS 439 -#define HANDLER 440 -#define HAVING 441 -#define HEADER_P 442 -#define HOLD 443 -#define HOUR_P 444 -#define HOURS_P 445 -#define IDENTITY_P 446 -#define IF_P 447 -#define IGNORE_P 448 -#define ILIKE 449 -#define IMMEDIATE 450 -#define IMMUTABLE 451 -#define IMPLICIT_P 452 -#define IMPORT_P 453 -#define IN_P 454 -#define INCLUDE_P 455 -#define INCLUDING 456 -#define INCREMENT 457 -#define INDEX 458 -#define INDEXES 459 -#define INHERIT 460 -#define INHERITS 461 -#define INITIALLY 462 -#define INLINE_P 463 -#define INNER_P 464 -#define INOUT 465 -#define INPUT_P 466 -#define INSENSITIVE 467 -#define INSERT 468 -#define INSTALL 469 -#define INSTEAD 470 -#define INT_P 471 -#define INTEGER 472 -#define INTERSECT 473 -#define INTERVAL 474 -#define INTO 475 -#define INVOKER 476 -#define IS 477 -#define ISNULL 478 -#define ISOLATION 479 -#define JOIN 480 -#define JSON 481 -#define KEY 482 -#define LABEL 483 -#define LANGUAGE 484 -#define LARGE_P 485 -#define LAST_P 486 -#define LATERAL_P 487 -#define LEADING 488 -#define LEAKPROOF 489 -#define LEFT 490 -#define LEVEL 491 -#define LIKE 492 -#define LIMIT 493 -#define LISTEN 494 -#define LOAD 495 -#define LOCAL 496 -#define LOCATION 497 -#define LOCK_P 498 -#define LOCKED 499 -#define LOGGED 500 -#define MACRO 501 -#define MAP 502 -#define MAPPING 503 -#define MATCH 504 -#define MATERIALIZED 505 -#define MAXVALUE 506 -#define METHOD 507 -#define MICROSECOND_P 508 -#define MICROSECONDS_P 509 -#define MILLENNIA_P 510 -#define MILLENNIUM_P 511 -#define MILLISECOND_P 512 -#define MILLISECONDS_P 513 -#define MINUTE_P 514 -#define MINUTES_P 515 -#define MINVALUE 516 -#define MODE 517 -#define MONTH_P 518 -#define MONTHS_P 519 -#define MOVE 520 -#define NAME_P 521 -#define NAMES 522 -#define NATIONAL 523 -#define NATURAL 524 -#define NCHAR 525 -#define NEW 526 -#define NEXT 527 -#define NO 528 -#define NONE 529 -#define NOT 530 -#define NOTHING 531 -#define NOTIFY 532 -#define NOTNULL 533 -#define NOWAIT 534 -#define NULL_P 535 -#define NULLIF 536 -#define NULLS_P 537 -#define NUMERIC 538 -#define OBJECT_P 539 -#define OF 540 -#define OFF 541 -#define OFFSET 542 -#define OIDS 543 -#define OLD 544 -#define ON 545 -#define ONLY 546 -#define OPERATOR 547 -#define OPTION 548 -#define OPTIONS 549 -#define OR 550 -#define ORDER 551 -#define ORDINALITY 552 -#define OTHERS 553 -#define OUT_P 554 -#define OUTER_P 555 -#define OVER 556 -#define OVERLAPS 557 -#define OVERLAY 558 -#define OVERRIDING 559 -#define OWNED 560 -#define OWNER 561 -#define PARALLEL 562 -#define PARSER 563 -#define PARTIAL 564 -#define PARTITION 565 -#define PARTITIONED 566 -#define PASSING 567 -#define PASSWORD 568 -#define PERCENT 569 -#define PERSISTENT 570 -#define PIVOT 571 -#define PIVOT_LONGER 572 -#define PIVOT_WIDER 573 -#define PLACING 574 -#define PLANS 575 -#define POLICY 576 -#define POSITION 577 -#define POSITIONAL 578 -#define PRAGMA_P 579 -#define PRECEDING 580 -#define PRECISION 581 -#define PREPARE 582 -#define PREPARED 583 -#define PRESERVE 584 -#define PRIMARY 585 -#define PRIOR 586 -#define PRIVILEGES 587 -#define PROCEDURAL 588 -#define PROCEDURE 589 -#define PROGRAM 590 -#define PUBLICATION 591 -#define QUALIFY 592 -#define QUARTER_P 593 -#define QUARTERS_P 594 -#define QUOTE 595 -#define RANGE 596 -#define READ_P 597 -#define REAL 598 -#define REASSIGN 599 -#define RECHECK 600 -#define RECURSIVE 601 -#define REF 602 -#define REFERENCES 603 -#define REFERENCING 604 -#define REFRESH 605 -#define REINDEX 606 -#define RELATIVE_P 607 -#define RELEASE 608 -#define RENAME 609 -#define REPEATABLE 610 -#define REPLACE 611 -#define REPLICA 612 -#define RESET 613 -#define RESPECT_P 614 -#define RESTART 615 -#define RESTRICT 616 -#define RETURNING 617 -#define RETURNS 618 -#define REVOKE 619 -#define RIGHT 620 -#define ROLE 621 -#define ROLLBACK 622 -#define ROLLUP 623 -#define ROW 624 -#define ROWS 625 -#define RULE 626 -#define SAMPLE 627 -#define SAVEPOINT 628 -#define SCHEMA 629 -#define SCHEMAS 630 -#define SCOPE 631 -#define SCROLL 632 -#define SEARCH 633 -#define SECOND_P 634 -#define SECONDS_P 635 -#define SECRET 636 -#define SECURITY 637 -#define SELECT 638 -#define SEMI 639 -#define SEQUENCE 640 -#define SEQUENCES 641 -#define SERIALIZABLE 642 -#define SERVER 643 -#define SESSION 644 -#define SET 645 -#define SETOF 646 -#define SETS 647 -#define SHARE 648 -#define SHOW 649 -#define SIMILAR 650 -#define SIMPLE 651 -#define SKIP 652 -#define SMALLINT 653 -#define SNAPSHOT 654 -#define SOME 655 -#define SORTED 656 -#define SQL_P 657 -#define STABLE 658 -#define STANDALONE_P 659 -#define START 660 -#define STATEMENT 661 -#define STATISTICS 662 -#define STDIN 663 -#define STDOUT 664 -#define STORAGE 665 -#define STORED 666 -#define STRICT_P 667 -#define STRIP_P 668 -#define STRUCT 669 -#define SUBSCRIPTION 670 -#define SUBSTRING 671 -#define SUMMARIZE 672 -#define SYMMETRIC 673 -#define SYSID 674 -#define SYSTEM_P 675 -#define TABLE 676 -#define TABLES 677 -#define TABLESAMPLE 678 -#define TABLESPACE 679 -#define TEMP 680 -#define TEMPLATE 681 -#define TEMPORARY 682 -#define TEXT_P 683 -#define THEN 684 -#define TIES 685 -#define TIME 686 -#define TIMESTAMP 687 -#define TO 688 -#define TRAILING 689 -#define TRANSACTION 690 -#define TRANSFORM 691 -#define TREAT 692 -#define TRIGGER 693 -#define TRIM 694 -#define TRUE_P 695 -#define TRUNCATE 696 -#define TRUSTED 697 -#define TRY_CAST 698 -#define TYPE_P 699 -#define TYPES_P 700 -#define UNBOUNDED 701 -#define UNCOMMITTED 702 -#define UNENCRYPTED 703 -#define UNION 704 -#define UNIQUE 705 -#define UNKNOWN 706 -#define UNLISTEN 707 -#define UNLOGGED 708 -#define UNPACK 709 -#define UNPIVOT 710 -#define UNTIL 711 -#define UPDATE 712 -#define USE_P 713 -#define USER 714 -#define USING 715 -#define VACUUM 716 -#define VALID 717 -#define VALIDATE 718 -#define VALIDATOR 719 -#define VALUE_P 720 -#define VALUES 721 -#define VARCHAR 722 -#define VARIABLE_P 723 -#define VARIADIC 724 -#define VARYING 725 -#define VERBOSE 726 -#define VERSION_P 727 -#define VIEW 728 -#define VIEWS 729 -#define VIRTUAL 730 -#define VOLATILE 731 -#define WEEK_P 732 -#define WEEKS_P 733 -#define WHEN 734 -#define WHERE 735 -#define WHITESPACE_P 736 -#define WINDOW 737 -#define WITH 738 -#define WITHIN 739 -#define WITHOUT 740 -#define WORK 741 -#define WRAPPER 742 -#define WRITE_P 743 -#define XML_P 744 -#define XMLATTRIBUTES 745 -#define XMLCONCAT 746 -#define XMLELEMENT 747 -#define XMLEXISTS 748 -#define XMLFOREST 749 -#define XMLNAMESPACES 750 -#define XMLPARSE 751 -#define XMLPI 752 -#define XMLROOT 753 -#define XMLSERIALIZE 754 -#define XMLTABLE 755 -#define YEAR_P 756 -#define YEARS_P 757 -#define YES_P 758 -#define ZONE 759 -#define NOT_LA 760 -#define NULLS_LA 761 -#define WITH_LA 762 -#define POSTFIXOP 763 -#define UMINUS 764 +#define SINGLE_COLON 274 +#define LESS_EQUALS 275 +#define GREATER_EQUALS 276 +#define NOT_EQUALS 277 +#define ABORT_P 278 +#define ABSOLUTE_P 279 +#define ACCESS 280 +#define ACTION 281 +#define ADD_P 282 +#define ADMIN 283 +#define AFTER 284 +#define AGGREGATE 285 +#define ALL 286 +#define ALSO 287 +#define ALTER 288 +#define ALWAYS 289 +#define ANALYSE 290 +#define ANALYZE 291 +#define AND 292 +#define ANTI 293 +#define ANY 294 +#define ARRAY 295 +#define AS 296 +#define ASC_P 297 +#define ASOF 298 +#define ASSERTION 299 +#define ASSIGNMENT 300 +#define ASYMMETRIC 301 +#define AT 302 +#define ATTACH 303 +#define ATTRIBUTE 304 +#define AUTHORIZATION 305 +#define BACKWARD 306 +#define BEFORE 307 +#define BEGIN_P 308 +#define BETWEEN 309 +#define BIGINT 310 +#define BINARY 311 +#define BIT 312 +#define BOOLEAN_P 313 +#define BOTH 314 +#define BY 315 +#define CACHE 316 +#define CALL_P 317 +#define CALLED 318 +#define CASCADE 319 +#define CASCADED 320 +#define CASE 321 +#define CAST 322 +#define CATALOG_P 323 +#define CENTURIES_P 324 +#define CENTURY_P 325 +#define CHAIN 326 +#define CHAR_P 327 +#define CHARACTER 328 +#define CHARACTERISTICS 329 +#define CHECK_P 330 +#define CHECKPOINT 331 +#define CLASS 332 +#define CLOSE 333 +#define CLUSTER 334 +#define COALESCE 335 +#define COLLATE 336 +#define COLLATION 337 +#define COLUMN 338 +#define COLUMNS 339 +#define COMMENT 340 +#define COMMENTS 341 +#define COMMIT 342 +#define COMMITTED 343 +#define COMPRESSION 344 +#define CONCURRENTLY 345 +#define CONFIGURATION 346 +#define CONFLICT 347 +#define CONNECTION 348 +#define CONSTRAINT 349 +#define CONSTRAINTS 350 +#define CONTENT_P 351 +#define CONTINUE_P 352 +#define CONVERSION_P 353 +#define COPY 354 +#define COST 355 +#define CREATE_P 356 +#define CROSS 357 +#define CSV 358 +#define CUBE 359 +#define CURRENT_P 360 +#define CURSOR 361 +#define CYCLE 362 +#define DATA_P 363 +#define DATABASE 364 +#define DAY_P 365 +#define DAYS_P 366 +#define DEALLOCATE 367 +#define DEC 368 +#define DECADE_P 369 +#define DECADES_P 370 +#define DECIMAL_P 371 +#define DECLARE 372 +#define DEFAULT 373 +#define DEFAULTS 374 +#define DEFERRABLE 375 +#define DEFERRED 376 +#define DEFINER 377 +#define DELETE_P 378 +#define DELIMITER 379 +#define DELIMITERS 380 +#define DEPENDS 381 +#define DESC_P 382 +#define DESCRIBE 383 +#define DETACH 384 +#define DICTIONARY 385 +#define DISABLE_P 386 +#define DISCARD 387 +#define DISTINCT 388 +#define DO 389 +#define DOCUMENT_P 390 +#define DOMAIN_P 391 +#define DOUBLE_P 392 +#define DROP 393 +#define EACH 394 +#define ELSE 395 +#define ENABLE_P 396 +#define ENCODING 397 +#define ENCRYPTED 398 +#define END_P 399 +#define ENUM_P 400 +#define ESCAPE 401 +#define EVENT 402 +#define EXCEPT 403 +#define EXCLUDE 404 +#define EXCLUDING 405 +#define EXCLUSIVE 406 +#define EXECUTE 407 +#define EXISTS 408 +#define EXPLAIN 409 +#define EXPORT_P 410 +#define EXPORT_STATE 411 +#define EXTENSION 412 +#define EXTENSIONS 413 +#define EXTERNAL 414 +#define EXTRACT 415 +#define FALSE_P 416 +#define FAMILY 417 +#define FETCH 418 +#define FILTER 419 +#define FIRST_P 420 +#define FLOAT_P 421 +#define FOLLOWING 422 +#define FOR 423 +#define FORCE 424 +#define FOREIGN 425 +#define FORWARD 426 +#define FREEZE 427 +#define FROM 428 +#define FULL 429 +#define FUNCTION 430 +#define FUNCTIONS 431 +#define GENERATED 432 +#define GLOB 433 +#define GLOBAL 434 +#define GRANT 435 +#define GRANTED 436 +#define GROUP_P 437 +#define GROUPING 438 +#define GROUPING_ID 439 +#define GROUPS 440 +#define HANDLER 441 +#define HAVING 442 +#define HEADER_P 443 +#define HOLD 444 +#define HOUR_P 445 +#define HOURS_P 446 +#define IDENTITY_P 447 +#define IF_P 448 +#define IGNORE_P 449 +#define ILIKE 450 +#define IMMEDIATE 451 +#define IMMUTABLE 452 +#define IMPLICIT_P 453 +#define IMPORT_P 454 +#define IN_P 455 +#define INCLUDE_P 456 +#define INCLUDING 457 +#define INCREMENT 458 +#define INDEX 459 +#define INDEXES 460 +#define INHERIT 461 +#define INHERITS 462 +#define INITIALLY 463 +#define INLINE_P 464 +#define INNER_P 465 +#define INOUT 466 +#define INPUT_P 467 +#define INSENSITIVE 468 +#define INSERT 469 +#define INSTALL 470 +#define INSTEAD 471 +#define INT_P 472 +#define INTEGER 473 +#define INTERSECT 474 +#define INTERVAL 475 +#define INTO 476 +#define INVOKER 477 +#define IS 478 +#define ISNULL 479 +#define ISOLATION 480 +#define JOIN 481 +#define JSON 482 +#define KEY 483 +#define LABEL 484 +#define LAMBDA 485 +#define LANGUAGE 486 +#define LARGE_P 487 +#define LAST_P 488 +#define LATERAL_P 489 +#define LEADING 490 +#define LEAKPROOF 491 +#define LEFT 492 +#define LEVEL 493 +#define LIKE 494 +#define LIMIT 495 +#define LISTEN 496 +#define LOAD 497 +#define LOCAL 498 +#define LOCATION 499 +#define LOCK_P 500 +#define LOCKED 501 +#define LOGGED 502 +#define MACRO 503 +#define MAP 504 +#define MAPPING 505 +#define MATCH 506 +#define MATERIALIZED 507 +#define MAXVALUE 508 +#define METHOD 509 +#define MICROSECOND_P 510 +#define MICROSECONDS_P 511 +#define MILLENNIA_P 512 +#define MILLENNIUM_P 513 +#define MILLISECOND_P 514 +#define MILLISECONDS_P 515 +#define MINUTE_P 516 +#define MINUTES_P 517 +#define MINVALUE 518 +#define MODE 519 +#define MONTH_P 520 +#define MONTHS_P 521 +#define MOVE 522 +#define NAME_P 523 +#define NAMES 524 +#define NATIONAL 525 +#define NATURAL 526 +#define NCHAR 527 +#define NEW 528 +#define NEXT 529 +#define NO 530 +#define NONE 531 +#define NOT 532 +#define NOTHING 533 +#define NOTIFY 534 +#define NOTNULL 535 +#define NOWAIT 536 +#define NULL_P 537 +#define NULLIF 538 +#define NULLS_P 539 +#define NUMERIC 540 +#define OBJECT_P 541 +#define OF 542 +#define OFF 543 +#define OFFSET 544 +#define OIDS 545 +#define OLD 546 +#define ON 547 +#define ONLY 548 +#define OPERATOR 549 +#define OPTION 550 +#define OPTIONS 551 +#define OR 552 +#define ORDER 553 +#define ORDINALITY 554 +#define OTHERS 555 +#define OUT_P 556 +#define OUTER_P 557 +#define OVER 558 +#define OVERLAPS 559 +#define OVERLAY 560 +#define OVERRIDING 561 +#define OWNED 562 +#define OWNER 563 +#define PARALLEL 564 +#define PARSER 565 +#define PARTIAL 566 +#define PARTITION 567 +#define PARTITIONED 568 +#define PASSING 569 +#define PASSWORD 570 +#define PERCENT 571 +#define PERSISTENT 572 +#define PIVOT 573 +#define PIVOT_LONGER 574 +#define PIVOT_WIDER 575 +#define PLACING 576 +#define PLANS 577 +#define POLICY 578 +#define POSITION 579 +#define POSITIONAL 580 +#define PRAGMA_P 581 +#define PRECEDING 582 +#define PRECISION 583 +#define PREPARE 584 +#define PREPARED 585 +#define PRESERVE 586 +#define PRIMARY 587 +#define PRIOR 588 +#define PRIVILEGES 589 +#define PROCEDURAL 590 +#define PROCEDURE 591 +#define PROGRAM 592 +#define PUBLICATION 593 +#define QUALIFY 594 +#define QUARTER_P 595 +#define QUARTERS_P 596 +#define QUOTE 597 +#define RANGE 598 +#define READ_P 599 +#define REAL 600 +#define REASSIGN 601 +#define RECHECK 602 +#define RECURSIVE 603 +#define REF 604 +#define REFERENCES 605 +#define REFERENCING 606 +#define REFRESH 607 +#define REINDEX 608 +#define RELATIVE_P 609 +#define RELEASE 610 +#define RENAME 611 +#define REPEATABLE 612 +#define REPLACE 613 +#define REPLICA 614 +#define RESET 615 +#define RESPECT_P 616 +#define RESTART 617 +#define RESTRICT 618 +#define RETURNING 619 +#define RETURNS 620 +#define REVOKE 621 +#define RIGHT 622 +#define ROLE 623 +#define ROLLBACK 624 +#define ROLLUP 625 +#define ROW 626 +#define ROWS 627 +#define RULE 628 +#define SAMPLE 629 +#define SAVEPOINT 630 +#define SCHEMA 631 +#define SCHEMAS 632 +#define SCOPE 633 +#define SCROLL 634 +#define SEARCH 635 +#define SECOND_P 636 +#define SECONDS_P 637 +#define SECRET 638 +#define SECURITY 639 +#define SELECT 640 +#define SEMI 641 +#define SEQUENCE 642 +#define SEQUENCES 643 +#define SERIALIZABLE 644 +#define SERVER 645 +#define SESSION 646 +#define SET 647 +#define SETOF 648 +#define SETS 649 +#define SHARE 650 +#define SHOW 651 +#define SIMILAR 652 +#define SIMPLE 653 +#define SKIP 654 +#define SMALLINT 655 +#define SNAPSHOT 656 +#define SOME 657 +#define SORTED 658 +#define SQL_P 659 +#define STABLE 660 +#define STANDALONE_P 661 +#define START 662 +#define STATEMENT 663 +#define STATISTICS 664 +#define STDIN 665 +#define STDOUT 666 +#define STORAGE 667 +#define STORED 668 +#define STRICT_P 669 +#define STRIP_P 670 +#define STRUCT 671 +#define SUBSCRIPTION 672 +#define SUBSTRING 673 +#define SUMMARIZE 674 +#define SYMMETRIC 675 +#define SYSID 676 +#define SYSTEM_P 677 +#define TABLE 678 +#define TABLES 679 +#define TABLESAMPLE 680 +#define TABLESPACE 681 +#define TEMP 682 +#define TEMPLATE 683 +#define TEMPORARY 684 +#define TEXT_P 685 +#define THEN 686 +#define TIES 687 +#define TIME 688 +#define TIMESTAMP 689 +#define TO 690 +#define TRAILING 691 +#define TRANSACTION 692 +#define TRANSFORM 693 +#define TREAT 694 +#define TRIGGER 695 +#define TRIM 696 +#define TRUE_P 697 +#define TRUNCATE 698 +#define TRUSTED 699 +#define TRY_CAST 700 +#define TYPE_P 701 +#define TYPES_P 702 +#define UNBOUNDED 703 +#define UNCOMMITTED 704 +#define UNENCRYPTED 705 +#define UNION 706 +#define UNIQUE 707 +#define UNKNOWN 708 +#define UNLISTEN 709 +#define UNLOGGED 710 +#define UNPACK 711 +#define UNPIVOT 712 +#define UNTIL 713 +#define UPDATE 714 +#define USE_P 715 +#define USER 716 +#define USING 717 +#define VACUUM 718 +#define VALID 719 +#define VALIDATE 720 +#define VALIDATOR 721 +#define VALUE_P 722 +#define VALUES 723 +#define VARCHAR 724 +#define VARIABLE_P 725 +#define VARIADIC 726 +#define VARYING 727 +#define VERBOSE 728 +#define VERSION_P 729 +#define VIEW 730 +#define VIEWS 731 +#define VIRTUAL 732 +#define VOLATILE 733 +#define WEEK_P 734 +#define WEEKS_P 735 +#define WHEN 736 +#define WHERE 737 +#define WHITESPACE_P 738 +#define WINDOW 739 +#define WITH 740 +#define WITHIN 741 +#define WITHOUT 742 +#define WORK 743 +#define WRAPPER 744 +#define WRITE_P 745 +#define XML_P 746 +#define XMLATTRIBUTES 747 +#define XMLCONCAT 748 +#define XMLELEMENT 749 +#define XMLEXISTS 750 +#define XMLFOREST 751 +#define XMLNAMESPACES 752 +#define XMLPARSE 753 +#define XMLPI 754 +#define XMLROOT 755 +#define XMLSERIALIZE 756 +#define XMLTABLE 757 +#define YEAR_P 758 +#define YEARS_P 759 +#define YES_P 760 +#define ZONE 761 +#define NOT_LA 762 +#define NULLS_LA 763 +#define WITH_LA 764 +#define POSTFIXOP 765 +#define UMINUS 766 @@ -1390,7 +1394,7 @@ typedef union YYSTYPE PGTransactionStmtType transactiontype; } /* Line 193 of yacc.c. */ -#line 1394 "third_party/libpg_query/grammar/grammar_out.cpp" +#line 1398 "third_party/libpg_query/grammar/grammar_out.cpp" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -1415,7 +1419,7 @@ typedef struct YYLTYPE /* Line 216 of yacc.c. */ -#line 1419 "third_party/libpg_query/grammar/grammar_out.cpp" +#line 1423 "third_party/libpg_query/grammar/grammar_out.cpp" #ifdef short # undef short @@ -1632,20 +1636,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 879 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 75275 +#define YYLAST 76167 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 532 +#define YYNTOKENS 533 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 498 +#define YYNNTS 497 /* YYNRULES -- Number of rules. */ -#define YYNRULES 2214 +#define YYNRULES 2216 /* YYNRULES -- Number of states. */ -#define YYNSTATES 3689 +#define YYNSTATES 3701 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 764 +#define YYMAXUTOK 766 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1656,16 +1660,16 @@ static const yytype_uint16 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 529, 528, 516, 2, 2, - 521, 522, 514, 512, 525, 513, 523, 515, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 526, 524, - 508, 510, 509, 527, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 530, 529, 518, 2, 2, + 523, 524, 516, 514, 527, 515, 525, 517, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 526, + 510, 512, 511, 528, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 519, 2, 520, 517, 2, 2, 2, 2, 2, + 2, 521, 2, 522, 519, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 530, 2, 531, 2, 2, 2, 2, + 2, 2, 2, 531, 2, 532, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1729,7 +1733,7 @@ static const yytype_uint16 yytranslate[] = 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 511, 518 + 505, 506, 507, 508, 509, 513, 520 }; #if YYDEBUG @@ -1757,879 +1761,880 @@ static const yytype_uint16 yyprhs[] = 633, 639, 642, 645, 646, 655, 661, 662, 668, 674, 682, 685, 686, 688, 690, 692, 696, 699, 700, 702, 703, 705, 709, 711, 715, 717, 720, 722, 726, 729, - 736, 745, 751, 753, 754, 756, 760, 763, 768, 774, - 780, 789, 797, 799, 800, 809, 821, 832, 833, 835, - 836, 838, 840, 841, 844, 846, 849, 851, 855, 860, - 864, 874, 887, 889, 893, 895, 899, 903, 904, 909, - 916, 918, 921, 923, 925, 926, 928, 931, 934, 936, - 939, 942, 944, 947, 951, 954, 957, 960, 963, 967, - 971, 975, 977, 981, 983, 984, 986, 989, 992, 998, - 1006, 1007, 1010, 1013, 1017, 1021, 1024, 1027, 1030, 1032, - 1034, 1035, 1038, 1041, 1042, 1045, 1055, 1068, 1080, 1081, - 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1100, 1101, 1103, - 1106, 1108, 1110, 1113, 1116, 1120, 1122, 1124, 1127, 1130, - 1132, 1135, 1139, 1145, 1149, 1152, 1158, 1160, 1162, 1164, - 1165, 1171, 1179, 1185, 1188, 1192, 1194, 1196, 1199, 1202, - 1203, 1207, 1212, 1217, 1218, 1222, 1225, 1226, 1230, 1232, - 1234, 1236, 1238, 1240, 1242, 1244, 1246, 1248, 1250, 1254, - 1258, 1260, 1263, 1266, 1269, 1272, 1275, 1278, 1279, 1283, - 1287, 1291, 1292, 1294, 1297, 1299, 1302, 1305, 1308, 1311, - 1314, 1318, 1321, 1324, 1326, 1330, 1332, 1334, 1336, 1338, - 1342, 1344, 1347, 1348, 1350, 1353, 1354, 1356, 1360, 1361, - 1364, 1365, 1369, 1373, 1375, 1381, 1385, 1387, 1391, 1393, - 1396, 1398, 1403, 1409, 1415, 1422, 1426, 1434, 1439, 1451, - 1453, 1457, 1460, 1463, 1466, 1467, 1471, 1473, 1475, 1478, - 1481, 1484, 1487, 1489, 1490, 1492, 1495, 1502, 1507, 1514, - 1519, 1526, 1535, 1537, 1539, 1541, 1543, 1546, 1548, 1551, - 1553, 1556, 1558, 1560, 1562, 1564, 1568, 1572, 1576, 1580, - 1582, 1585, 1588, 1590, 1594, 1596, 1598, 1600, 1604, 1606, - 1608, 1609, 1611, 1613, 1615, 1621, 1630, 1638, 1644, 1653, - 1661, 1666, 1671, 1673, 1677, 1679, 1681, 1685, 1687, 1691, - 1693, 1695, 1698, 1702, 1711, 1723, 1733, 1741, 1742, 1746, - 1750, 1752, 1754, 1758, 1759, 1761, 1765, 1767, 1768, 1770, - 1771, 1773, 1774, 1776, 1780, 1782, 1784, 1786, 1788, 1792, - 1794, 1796, 1797, 1800, 1803, 1804, 1807, 1808, 1810, 1811, - 1813, 1815, 1817, 1821, 1825, 1827, 1829, 1833, 1837, 1841, - 1845, 1849, 1853, 1858, 1862, 1865, 1867, 1869, 1871, 1873, - 1877, 1879, 1881, 1885, 1887, 1889, 1893, 1897, 1901, 1903, - 1906, 1911, 1916, 1919, 1923, 1929, 1935, 1937, 1939, 1943, - 1944, 1956, 1968, 1979, 1992, 1994, 1997, 2003, 2008, 2013, - 2018, 2023, 2031, 2037, 2042, 2050, 2057, 2067, 2077, 2082, - 2084, 2086, 2088, 2090, 2092, 2094, 2096, 2102, 2104, 2106, - 2110, 2112, 2115, 2118, 2121, 2125, 2127, 2131, 2140, 2146, - 2147, 2149, 2152, 2154, 2158, 2160, 2163, 2164, 2167, 2168, - 2172, 2176, 2181, 2186, 2191, 2196, 2200, 2203, 2205, 2207, - 2208, 2210, 2212, 2213, 2216, 2218, 2224, 2226, 2227, 2230, - 2233, 2234, 2236, 2237, 2241, 2247, 2249, 2253, 2258, 2262, - 2264, 2266, 2267, 2270, 2273, 2274, 2277, 2280, 2282, 2284, - 2286, 2287, 2290, 2295, 2301, 2306, 2309, 2313, 2315, 2317, - 2319, 2322, 2325, 2327, 2330, 2334, 2335, 2337, 2338, 2344, - 2346, 2351, 2358, 2361, 2363, 2364, 2369, 2370, 2372, 2374, - 2378, 2383, 2384, 2386, 2388, 2391, 2394, 2397, 2399, 2401, - 2404, 2407, 2409, 2411, 2413, 2415, 2417, 2419, 2423, 2427, - 2428, 2430, 2434, 2436, 2439, 2441, 2443, 2445, 2447, 2449, - 2452, 2457, 2462, 2468, 2470, 2472, 2475, 2476, 2479, 2480, - 2482, 2486, 2488, 2489, 2491, 2494, 2498, 2501, 2506, 2509, - 2513, 2516, 2517, 2519, 2522, 2523, 2528, 2534, 2536, 2539, - 2542, 2543, 2545, 2549, 2551, 2554, 2557, 2562, 2567, 2571, - 2575, 2579, 2583, 2587, 2591, 2595, 2597, 2602, 2607, 2617, - 2627, 2631, 2632, 2635, 2638, 2639, 2645, 2649, 2651, 2653, - 2657, 2663, 2667, 2669, 2672, 2674, 2678, 2684, 2686, 2689, - 2693, 2698, 2704, 2709, 2715, 2720, 2727, 2733, 2738, 2744, - 2750, 2756, 2759, 2764, 2766, 2768, 2769, 2771, 2776, 2782, - 2787, 2788, 2791, 2794, 2797, 2799, 2801, 2803, 2805, 2806, - 2811, 2814, 2816, 2819, 2822, 2827, 2830, 2837, 2840, 2842, - 2846, 2851, 2852, 2855, 2856, 2859, 2860, 2862, 2866, 2870, - 2873, 2874, 2877, 2882, 2884, 2886, 2888, 2889, 2892, 2896, - 2902, 2909, 2912, 2916, 2918, 2924, 2930, 2936, 2940, 2944, - 2948, 2953, 2954, 2956, 2958, 2960, 2962, 2964, 2967, 2972, - 2974, 2976, 2978, 2980, 2983, 2987, 2988, 2990, 2992, 2994, - 2996, 2998, 3001, 3004, 3007, 3010, 3013, 3015, 3019, 3020, - 3022, 3024, 3026, 3028, 3034, 3037, 3039, 3041, 3043, 3045, - 3050, 3052, 3055, 3058, 3060, 3064, 3068, 3071, 3073, 3074, - 3080, 3083, 3089, 3092, 3094, 3098, 3102, 3103, 3105, 3107, - 3109, 3111, 3113, 3115, 3117, 3119, 3121, 3123, 3125, 3127, - 3129, 3131, 3133, 3135, 3137, 3139, 3141, 3143, 3145, 3147, - 3149, 3151, 3153, 3155, 3157, 3159, 3161, 3163, 3165, 3167, - 3169, 3171, 3173, 3175, 3177, 3179, 3181, 3185, 3189, 3193, - 3197, 3201, 3205, 3209, 3210, 3212, 3216, 3220, 3226, 3229, - 3232, 3236, 3240, 3244, 3248, 3252, 3256, 3260, 3264, 3268, - 3272, 3276, 3280, 3284, 3288, 3292, 3295, 3298, 3302, 3306, - 3309, 3312, 3316, 3320, 3326, 3331, 3338, 3342, 3348, 3353, - 3360, 3365, 3372, 3378, 3386, 3390, 3393, 3398, 3402, 3405, - 3409, 3413, 3417, 3421, 3426, 3430, 3435, 3439, 3444, 3450, - 3457, 3464, 3472, 3479, 3487, 3494, 3502, 3506, 3511, 3516, - 3523, 3525, 3530, 3535, 3541, 3546, 3553, 3555, 3559, 3562, - 3565, 3569, 3573, 3577, 3581, 3585, 3589, 3593, 3597, 3601, - 3605, 3609, 3613, 3617, 3621, 3625, 3628, 3631, 3637, 3644, - 3651, 3659, 3661, 3664, 3666, 3668, 3670, 3673, 3676, 3681, - 3685, 3687, 3689, 3691, 3693, 3696, 3698, 3700, 3702, 3704, - 3706, 3708, 3710, 3713, 3718, 3721, 3725, 3729, 3734, 3738, - 3744, 3751, 3759, 3769, 3777, 3785, 3791, 3793, 3795, 3797, - 3803, 3810, 3817, 3822, 3827, 3832, 3837, 3844, 3850, 3856, - 3862, 3867, 3874, 3879, 3881, 3889, 3899, 3905, 3906, 3912, - 3917, 3918, 3920, 3921, 3924, 3925, 3927, 3931, 3935, 3938, - 3941, 3942, 3949, 3951, 3952, 3956, 3957, 3961, 3965, 3969, - 3970, 3972, 3977, 3980, 3983, 3986, 3989, 3992, 3996, 3999, - 4002, 4006, 4007, 4012, 4016, 4018, 4024, 4028, 4030, 4034, - 4036, 4039, 4043, 4045, 4049, 4051, 4054, 4056, 4057, 4059, - 4061, 4063, 4065, 4067, 4069, 4071, 4073, 4075, 4077, 4079, - 4081, 4083, 4085, 4087, 4089, 4091, 4093, 4095, 4097, 4102, - 4104, 4109, 4111, 4116, 4118, 4121, 4123, 4126, 4128, 4131, - 4133, 4137, 4139, 4143, 4145, 4148, 4150, 4154, 4156, 4159, - 4161, 4162, 4164, 4168, 4170, 4174, 4178, 4180, 4184, 4188, - 4189, 4191, 4193, 4195, 4197, 4199, 4201, 4203, 4205, 4207, - 4209, 4211, 4213, 4215, 4217, 4219, 4224, 4228, 4231, 4235, - 4236, 4240, 4244, 4247, 4250, 4252, 4253, 4256, 4259, 4263, - 4266, 4268, 4270, 4274, 4276, 4278, 4284, 4286, 4289, 4294, - 4297, 4298, 4300, 4301, 4303, 4307, 4309, 4311, 4314, 4318, - 4324, 4332, 4340, 4342, 4343, 4344, 4347, 4348, 4351, 4355, - 4359, 4363, 4369, 4377, 4385, 4386, 4389, 4391, 4392, 4394, - 4395, 4397, 4401, 4403, 4406, 4410, 4413, 4415, 4419, 4424, - 4427, 4429, 4433, 4435, 4439, 4441, 4444, 4446, 4447, 4451, - 4453, 4457, 4459, 4462, 4467, 4470, 4471, 4475, 4477, 4481, - 4483, 4486, 4491, 4494, 4495, 4497, 4501, 4503, 4507, 4509, - 4512, 4514, 4518, 4520, 4522, 4525, 4527, 4529, 4532, 4534, - 4536, 4539, 4547, 4550, 4556, 4560, 4564, 4566, 4568, 4570, - 4572, 4574, 4576, 4578, 4580, 4582, 4584, 4586, 4588, 4590, - 4592, 4595, 4598, 4602, 4606, 4607, 4609, 4611, 4613, 4619, - 4623, 4624, 4626, 4628, 4630, 4632, 4634, 4636, 4641, 4649, - 4656, 4659, 4660, 4662, 4664, 4666, 4668, 4682, 4699, 4701, - 4704, 4705, 4707, 4708, 4710, 4711, 4714, 4715, 4717, 4718, - 4725, 4734, 4741, 4750, 4757, 4766, 4770, 4773, 4775, 4776, - 4783, 4790, 4792, 4794, 4796, 4798, 4800, 4802, 4805, 4807, - 4809, 4811, 4813, 4815, 4820, 4827, 4831, 4834, 4839, 4843, - 4849, 4851, 4852, 4854, 4856, 4857, 4859, 4861, 4863, 4865, - 4867, 4869, 4871, 4873, 4875, 4877, 4879, 4881, 4883, 4885, - 4887, 4889, 4891, 4893, 4895, 4897, 4899, 4901, 4903, 4905, - 4907, 4909, 4911, 4913, 4915, 4917, 4919, 4921, 4923, 4925, - 4927, 4929, 4931, 4935, 4937, 4939, 4941, 4943, 4945, 4947, - 4950, 4952, 4954, 4957, 4961, 4965, 4969, 4973, 4975, 4979, - 4983, 4986, 4990, 4994, 4996, 4998, 5000, 5004, 5010, 5012, - 5014, 5016, 5018, 5022, 5025, 5030, 5037, 5044, 5045, 5047, - 5049, 5051, 5052, 5055, 5058, 5063, 5070, 5076, 5081, 5088, - 5090, 5092, 5094, 5096, 5098, 5100, 5101, 5103, 5107, 5109, - 5110, 5118, 5122, 5124, 5127, 5131, 5134, 5135, 5138, 5139, - 5142, 5147, 5153, 5162, 5170, 5173, 5177, 5183, 5185, 5186, - 5189, 5190, 5193, 5197, 5201, 5205, 5209, 5211, 5213, 5215, - 5218, 5222, 5225, 5228, 5231, 5234, 5238, 5243, 5247, 5249, - 5251, 5253, 5255, 5257, 5259, 5260, 5262, 5266, 5269, 5279, - 5292, 5304, 5317, 5332, 5336, 5341, 5346, 5347, 5355, 5366, - 5376, 5379, 5383, 5384, 5389, 5391, 5393, 5395, 5397, 5399, - 5401, 5403, 5405, 5407, 5409, 5411, 5413, 5415, 5417, 5419, - 5421, 5423, 5425, 5427, 5429, 5431, 5433, 5435, 5437, 5439, - 5441, 5443, 5445, 5447, 5449, 5451, 5453, 5455, 5457, 5459, - 5461, 5463, 5465, 5467, 5469, 5471, 5473, 5475, 5477, 5479, - 5481, 5483, 5485, 5487, 5489, 5491, 5493, 5495, 5497, 5499, - 5501, 5503, 5505, 5507, 5509, 5511, 5513, 5515, 5517, 5519, - 5521, 5523, 5525, 5527, 5529, 5531, 5533, 5535, 5537, 5539, - 5541, 5543, 5545, 5547, 5549, 5551, 5553, 5555, 5557, 5559, - 5561, 5563, 5565, 5567, 5569, 5571, 5573, 5575, 5577, 5579, - 5581, 5583, 5585, 5587, 5589, 5591, 5593, 5595, 5597, 5599, - 5601, 5603, 5605, 5607, 5609, 5611, 5613, 5615, 5617, 5619, - 5621, 5623, 5625, 5627, 5629, 5631, 5633, 5635, 5637, 5639, - 5641, 5643, 5645, 5647, 5649, 5651, 5653, 5655, 5657, 5659, - 5661, 5663, 5665, 5667, 5669, 5671, 5673, 5675, 5677, 5679, - 5681, 5683, 5685, 5687, 5689, 5691, 5693, 5695, 5697, 5699, - 5701, 5703, 5705, 5707, 5709, 5711, 5713, 5715, 5717, 5719, - 5721, 5723, 5725, 5727, 5729, 5731, 5733, 5735, 5737, 5739, - 5741, 5743, 5745, 5747, 5749, 5751, 5753, 5755, 5757, 5759, - 5761, 5763, 5765, 5767, 5769, 5771, 5773, 5775, 5777, 5779, - 5781, 5783, 5785, 5787, 5789, 5791, 5793, 5795, 5797, 5799, - 5801, 5803, 5805, 5807, 5809, 5811, 5813, 5815, 5817, 5819, - 5821, 5823, 5825, 5827, 5829, 5831, 5833, 5835, 5837, 5839, - 5841, 5843, 5845, 5847, 5849, 5851, 5853, 5855, 5857, 5859, - 5861, 5863, 5865, 5867, 5869, 5871, 5873, 5875, 5877, 5879, - 5881, 5883, 5885, 5887, 5889, 5891, 5893, 5895, 5897, 5899, - 5901, 5903, 5905, 5907, 5909, 5911, 5913, 5915, 5917, 5919, - 5921, 5923, 5925, 5927, 5929, 5931, 5933, 5935, 5937, 5939, - 5941, 5943, 5945, 5947, 5949, 5951, 5953, 5955, 5957, 5959, - 5961, 5963, 5965, 5967, 5969, 5971, 5973, 5975, 5977, 5979, - 5981, 5983, 5985, 5987, 5989, 5991, 5993, 5995, 5997, 5999, - 6001, 6003, 6005, 6007, 6009, 6011, 6013, 6015, 6017, 6019, - 6021, 6023, 6025, 6027, 6029, 6031, 6033, 6035, 6037, 6039, - 6041, 6043, 6045, 6047, 6049, 6051, 6053, 6055, 6057, 6059, - 6061, 6063, 6065, 6067, 6069, 6071, 6073, 6075, 6077, 6079, - 6081, 6083, 6085, 6087, 6089, 6091, 6093, 6095, 6097, 6099, - 6101, 6103, 6105, 6107, 6109, 6111, 6113, 6115, 6117, 6119, - 6121, 6123, 6125, 6127, 6129, 6131, 6133, 6135, 6137, 6139, - 6141, 6143, 6145, 6147, 6149, 6151, 6153, 6155, 6157, 6159, - 6161, 6163, 6165, 6167, 6169, 6171, 6173, 6175, 6177, 6179, - 6181, 6183, 6185, 6187, 6189, 6191, 6193, 6195, 6197, 6199, - 6201, 6203, 6205, 6207, 6209, 6211, 6213, 6215, 6217, 6219, - 6221, 6223, 6225, 6227, 6229, 6231, 6233, 6235, 6237, 6239, - 6241, 6243, 6245, 6247, 6249, 6251, 6253, 6255, 6257, 6259, - 6261, 6263, 6265, 6267, 6269, 6271, 6273, 6275, 6277, 6279, - 6281, 6283, 6285, 6287, 6289, 6291, 6293, 6295, 6297, 6299, - 6301, 6303, 6305, 6307, 6309, 6311, 6313, 6315, 6317, 6319, - 6321, 6323, 6325, 6327, 6329, 6331, 6333, 6335, 6337, 6339, - 6341, 6343, 6345, 6347, 6349, 6351, 6353, 6355, 6357, 6359, - 6361, 6363, 6365, 6367, 6369, 6371, 6373, 6375, 6377, 6379, - 6381, 6383, 6385, 6387, 6389, 6391, 6393, 6395, 6397, 6399, - 6401, 6403, 6405, 6407, 6409, 6411, 6413, 6415, 6417, 6419, - 6421, 6423, 6425, 6427, 6429, 6431, 6433, 6435, 6437, 6439, - 6441, 6443, 6445, 6447, 6449, 6451, 6453, 6455, 6457, 6459, - 6461, 6463, 6465, 6467, 6469, 6471, 6473, 6475, 6477, 6479, - 6481, 6483, 6485, 6487, 6489, 6491, 6493, 6495, 6497, 6499, - 6501, 6503, 6505, 6507, 6509, 6511, 6513, 6515, 6517, 6519, - 6521, 6523, 6525, 6527, 6529, 6531, 6533, 6535, 6537, 6539, - 6541, 6543, 6545, 6547, 6549, 6551, 6553, 6555, 6557, 6559, - 6561, 6563, 6565, 6567, 6569, 6571, 6573, 6575, 6577, 6579, - 6581, 6583, 6585, 6587, 6589, 6591, 6593, 6595, 6597, 6599, - 6601, 6603, 6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, - 6621, 6623, 6625, 6627, 6629, 6631, 6633, 6635, 6637, 6639, - 6641, 6643, 6645, 6647, 6649 + 736, 746, 755, 758, 763, 765, 767, 768, 770, 774, + 777, 782, 788, 794, 803, 811, 813, 814, 823, 835, + 846, 847, 849, 850, 852, 854, 855, 858, 860, 863, + 865, 869, 874, 878, 888, 901, 903, 907, 909, 913, + 917, 918, 923, 930, 932, 935, 937, 939, 940, 942, + 945, 948, 950, 953, 956, 958, 961, 965, 968, 971, + 974, 977, 981, 985, 989, 991, 995, 997, 998, 1000, + 1003, 1006, 1012, 1020, 1021, 1024, 1027, 1031, 1035, 1038, + 1041, 1044, 1046, 1048, 1049, 1052, 1055, 1056, 1059, 1069, + 1082, 1094, 1095, 1098, 1100, 1102, 1104, 1106, 1108, 1110, + 1114, 1115, 1117, 1120, 1122, 1124, 1127, 1130, 1134, 1136, + 1138, 1141, 1144, 1146, 1149, 1153, 1159, 1163, 1166, 1172, + 1174, 1176, 1178, 1179, 1185, 1193, 1199, 1202, 1206, 1208, + 1210, 1213, 1216, 1217, 1221, 1226, 1231, 1232, 1236, 1239, + 1240, 1244, 1246, 1248, 1250, 1252, 1254, 1256, 1258, 1260, + 1262, 1264, 1268, 1272, 1274, 1277, 1280, 1283, 1286, 1289, + 1292, 1293, 1297, 1301, 1305, 1306, 1308, 1311, 1313, 1316, + 1319, 1322, 1325, 1328, 1332, 1335, 1338, 1340, 1344, 1346, + 1348, 1350, 1352, 1356, 1358, 1361, 1362, 1364, 1367, 1368, + 1370, 1374, 1375, 1378, 1379, 1383, 1387, 1389, 1395, 1399, + 1401, 1405, 1407, 1410, 1412, 1417, 1423, 1429, 1436, 1440, + 1448, 1453, 1465, 1467, 1471, 1474, 1477, 1480, 1481, 1485, + 1487, 1489, 1492, 1495, 1498, 1501, 1503, 1504, 1506, 1509, + 1516, 1521, 1528, 1533, 1540, 1549, 1551, 1553, 1555, 1557, + 1560, 1562, 1565, 1567, 1570, 1572, 1574, 1576, 1578, 1582, + 1586, 1590, 1594, 1596, 1599, 1602, 1604, 1608, 1610, 1612, + 1614, 1618, 1620, 1622, 1623, 1625, 1627, 1629, 1635, 1644, + 1652, 1658, 1667, 1675, 1680, 1685, 1687, 1691, 1693, 1695, + 1699, 1701, 1705, 1707, 1709, 1712, 1716, 1725, 1737, 1747, + 1755, 1756, 1760, 1764, 1766, 1768, 1772, 1773, 1775, 1779, + 1781, 1782, 1784, 1785, 1787, 1788, 1790, 1794, 1796, 1798, + 1800, 1802, 1806, 1808, 1810, 1811, 1814, 1817, 1818, 1821, + 1822, 1824, 1825, 1827, 1829, 1831, 1835, 1839, 1841, 1843, + 1847, 1851, 1855, 1859, 1863, 1867, 1872, 1876, 1879, 1881, + 1883, 1885, 1887, 1891, 1893, 1895, 1899, 1901, 1903, 1907, + 1911, 1915, 1917, 1920, 1925, 1930, 1933, 1937, 1943, 1949, + 1951, 1953, 1957, 1958, 1970, 1982, 1993, 2006, 2008, 2011, + 2017, 2022, 2027, 2032, 2037, 2045, 2051, 2056, 2064, 2071, + 2081, 2091, 2096, 2098, 2100, 2102, 2104, 2106, 2108, 2110, + 2116, 2118, 2120, 2124, 2126, 2129, 2132, 2135, 2139, 2141, + 2145, 2154, 2160, 2161, 2163, 2166, 2168, 2172, 2174, 2177, + 2178, 2181, 2182, 2186, 2190, 2195, 2200, 2205, 2210, 2214, + 2217, 2219, 2221, 2222, 2224, 2226, 2227, 2230, 2232, 2238, + 2240, 2241, 2244, 2247, 2248, 2250, 2251, 2255, 2261, 2263, + 2267, 2272, 2276, 2278, 2280, 2281, 2284, 2287, 2288, 2291, + 2294, 2296, 2298, 2300, 2301, 2304, 2309, 2315, 2320, 2323, + 2327, 2329, 2331, 2333, 2336, 2339, 2341, 2344, 2348, 2349, + 2351, 2352, 2358, 2360, 2365, 2372, 2375, 2377, 2378, 2383, + 2384, 2386, 2388, 2392, 2397, 2398, 2400, 2402, 2405, 2408, + 2411, 2413, 2415, 2418, 2421, 2423, 2425, 2427, 2429, 2431, + 2433, 2437, 2441, 2442, 2444, 2448, 2450, 2453, 2455, 2457, + 2459, 2461, 2463, 2466, 2471, 2476, 2482, 2484, 2486, 2489, + 2490, 2493, 2494, 2496, 2500, 2502, 2503, 2505, 2508, 2512, + 2515, 2520, 2523, 2527, 2530, 2531, 2533, 2536, 2537, 2542, + 2548, 2550, 2553, 2556, 2557, 2559, 2563, 2565, 2568, 2571, + 2576, 2581, 2585, 2589, 2593, 2597, 2601, 2605, 2609, 2611, + 2616, 2621, 2631, 2641, 2645, 2646, 2649, 2652, 2653, 2659, + 2663, 2665, 2667, 2671, 2677, 2681, 2683, 2686, 2688, 2692, + 2698, 2700, 2703, 2707, 2712, 2718, 2723, 2729, 2734, 2741, + 2747, 2752, 2758, 2764, 2770, 2773, 2778, 2780, 2782, 2783, + 2785, 2790, 2796, 2801, 2802, 2805, 2808, 2811, 2813, 2815, + 2817, 2819, 2820, 2825, 2828, 2830, 2833, 2836, 2841, 2844, + 2851, 2854, 2856, 2860, 2865, 2866, 2869, 2870, 2873, 2874, + 2876, 2880, 2884, 2887, 2888, 2891, 2896, 2898, 2900, 2902, + 2903, 2906, 2910, 2916, 2923, 2926, 2930, 2932, 2938, 2944, + 2950, 2954, 2958, 2962, 2967, 2968, 2970, 2972, 2974, 2976, + 2978, 2981, 2986, 2988, 2990, 2992, 2994, 2997, 3001, 3002, + 3004, 3006, 3008, 3010, 3012, 3015, 3018, 3021, 3024, 3027, + 3029, 3033, 3034, 3036, 3038, 3040, 3042, 3048, 3051, 3053, + 3055, 3057, 3059, 3064, 3066, 3069, 3072, 3074, 3078, 3082, + 3085, 3087, 3088, 3094, 3097, 3103, 3106, 3108, 3112, 3116, + 3117, 3119, 3121, 3123, 3125, 3127, 3129, 3131, 3133, 3135, + 3137, 3139, 3141, 3143, 3145, 3147, 3149, 3151, 3153, 3155, + 3157, 3159, 3161, 3163, 3165, 3167, 3169, 3171, 3173, 3175, + 3177, 3179, 3181, 3183, 3185, 3187, 3189, 3191, 3193, 3195, + 3199, 3203, 3207, 3211, 3215, 3219, 3223, 3224, 3226, 3230, + 3234, 3240, 3243, 3246, 3250, 3254, 3258, 3262, 3266, 3270, + 3274, 3278, 3282, 3286, 3290, 3294, 3298, 3302, 3306, 3309, + 3312, 3316, 3320, 3323, 3326, 3330, 3334, 3340, 3345, 3352, + 3356, 3362, 3367, 3374, 3379, 3386, 3392, 3400, 3404, 3407, + 3412, 3416, 3419, 3424, 3428, 3432, 3436, 3440, 3445, 3449, + 3454, 3458, 3463, 3469, 3476, 3483, 3491, 3498, 3506, 3513, + 3521, 3525, 3530, 3535, 3542, 3544, 3549, 3554, 3560, 3565, + 3572, 3574, 3578, 3581, 3584, 3588, 3592, 3596, 3600, 3604, + 3608, 3612, 3616, 3620, 3624, 3628, 3632, 3636, 3640, 3644, + 3647, 3650, 3656, 3663, 3670, 3678, 3680, 3683, 3685, 3687, + 3689, 3692, 3695, 3700, 3704, 3706, 3708, 3710, 3712, 3715, + 3717, 3719, 3721, 3723, 3725, 3727, 3729, 3732, 3737, 3740, + 3744, 3748, 3753, 3757, 3763, 3770, 3778, 3788, 3796, 3804, + 3810, 3812, 3814, 3816, 3822, 3829, 3836, 3841, 3846, 3851, + 3856, 3863, 3869, 3875, 3881, 3886, 3893, 3898, 3906, 3916, + 3922, 3923, 3929, 3934, 3935, 3937, 3938, 3941, 3942, 3944, + 3948, 3952, 3955, 3958, 3959, 3966, 3968, 3969, 3973, 3974, + 3978, 3982, 3986, 3987, 3989, 3994, 3997, 4000, 4003, 4006, + 4009, 4013, 4016, 4019, 4023, 4024, 4029, 4033, 4035, 4041, + 4045, 4047, 4051, 4053, 4056, 4060, 4062, 4066, 4068, 4071, + 4073, 4074, 4076, 4078, 4080, 4082, 4084, 4086, 4088, 4090, + 4092, 4094, 4096, 4098, 4100, 4102, 4104, 4106, 4108, 4110, + 4112, 4114, 4119, 4121, 4126, 4128, 4133, 4135, 4138, 4140, + 4143, 4145, 4148, 4150, 4154, 4156, 4160, 4162, 4165, 4167, + 4171, 4173, 4176, 4178, 4179, 4181, 4185, 4187, 4191, 4195, + 4197, 4201, 4205, 4206, 4208, 4210, 4212, 4214, 4216, 4218, + 4220, 4222, 4224, 4226, 4228, 4230, 4232, 4234, 4236, 4241, + 4245, 4248, 4252, 4253, 4257, 4261, 4264, 4267, 4269, 4270, + 4273, 4276, 4280, 4283, 4285, 4287, 4291, 4293, 4295, 4301, + 4303, 4306, 4311, 4314, 4315, 4317, 4318, 4320, 4322, 4325, + 4329, 4335, 4343, 4351, 4353, 4354, 4355, 4358, 4359, 4362, + 4366, 4370, 4374, 4380, 4388, 4396, 4397, 4400, 4402, 4403, + 4405, 4406, 4408, 4412, 4414, 4417, 4421, 4424, 4426, 4430, + 4435, 4438, 4440, 4444, 4446, 4450, 4452, 4455, 4457, 4458, + 4462, 4464, 4468, 4470, 4473, 4478, 4481, 4482, 4486, 4488, + 4492, 4494, 4497, 4502, 4505, 4506, 4508, 4512, 4514, 4518, + 4520, 4523, 4525, 4529, 4531, 4533, 4536, 4538, 4540, 4543, + 4545, 4547, 4550, 4558, 4561, 4567, 4571, 4575, 4577, 4579, + 4581, 4583, 4585, 4587, 4589, 4591, 4593, 4595, 4597, 4599, + 4601, 4603, 4606, 4609, 4613, 4617, 4618, 4620, 4622, 4624, + 4630, 4634, 4635, 4637, 4639, 4641, 4643, 4645, 4647, 4652, + 4660, 4667, 4670, 4671, 4673, 4675, 4677, 4679, 4693, 4710, + 4712, 4715, 4716, 4718, 4719, 4721, 4722, 4725, 4726, 4728, + 4729, 4736, 4745, 4752, 4761, 4768, 4777, 4781, 4784, 4786, + 4787, 4794, 4801, 4803, 4805, 4807, 4809, 4811, 4813, 4816, + 4818, 4820, 4822, 4824, 4826, 4831, 4838, 4842, 4845, 4850, + 4854, 4860, 4862, 4863, 4865, 4867, 4868, 4870, 4872, 4874, + 4876, 4878, 4880, 4882, 4884, 4886, 4888, 4890, 4892, 4894, + 4896, 4898, 4900, 4902, 4904, 4906, 4908, 4910, 4912, 4914, + 4916, 4918, 4920, 4922, 4924, 4926, 4928, 4930, 4932, 4934, + 4936, 4938, 4940, 4942, 4946, 4948, 4950, 4952, 4954, 4956, + 4958, 4961, 4963, 4965, 4968, 4972, 4976, 4980, 4984, 4986, + 4990, 4994, 4997, 5001, 5005, 5007, 5009, 5011, 5015, 5021, + 5023, 5025, 5027, 5029, 5033, 5036, 5041, 5048, 5055, 5056, + 5058, 5060, 5062, 5063, 5066, 5069, 5074, 5081, 5087, 5092, + 5099, 5101, 5103, 5105, 5107, 5109, 5111, 5112, 5114, 5118, + 5120, 5121, 5129, 5133, 5135, 5138, 5142, 5145, 5146, 5149, + 5150, 5153, 5158, 5164, 5173, 5181, 5184, 5188, 5194, 5196, + 5197, 5200, 5201, 5204, 5208, 5212, 5216, 5220, 5222, 5224, + 5226, 5229, 5233, 5236, 5239, 5242, 5245, 5249, 5254, 5258, + 5260, 5262, 5264, 5266, 5268, 5270, 5271, 5273, 5277, 5280, + 5290, 5303, 5315, 5328, 5343, 5347, 5352, 5357, 5358, 5366, + 5377, 5387, 5390, 5394, 5395, 5400, 5402, 5404, 5406, 5408, + 5410, 5412, 5414, 5416, 5418, 5420, 5422, 5424, 5426, 5428, + 5430, 5432, 5434, 5436, 5438, 5440, 5442, 5444, 5446, 5448, + 5450, 5452, 5454, 5456, 5458, 5460, 5462, 5464, 5466, 5468, + 5470, 5472, 5474, 5476, 5478, 5480, 5482, 5484, 5486, 5488, + 5490, 5492, 5494, 5496, 5498, 5500, 5502, 5504, 5506, 5508, + 5510, 5512, 5514, 5516, 5518, 5520, 5522, 5524, 5526, 5528, + 5530, 5532, 5534, 5536, 5538, 5540, 5542, 5544, 5546, 5548, + 5550, 5552, 5554, 5556, 5558, 5560, 5562, 5564, 5566, 5568, + 5570, 5572, 5574, 5576, 5578, 5580, 5582, 5584, 5586, 5588, + 5590, 5592, 5594, 5596, 5598, 5600, 5602, 5604, 5606, 5608, + 5610, 5612, 5614, 5616, 5618, 5620, 5622, 5624, 5626, 5628, + 5630, 5632, 5634, 5636, 5638, 5640, 5642, 5644, 5646, 5648, + 5650, 5652, 5654, 5656, 5658, 5660, 5662, 5664, 5666, 5668, + 5670, 5672, 5674, 5676, 5678, 5680, 5682, 5684, 5686, 5688, + 5690, 5692, 5694, 5696, 5698, 5700, 5702, 5704, 5706, 5708, + 5710, 5712, 5714, 5716, 5718, 5720, 5722, 5724, 5726, 5728, + 5730, 5732, 5734, 5736, 5738, 5740, 5742, 5744, 5746, 5748, + 5750, 5752, 5754, 5756, 5758, 5760, 5762, 5764, 5766, 5768, + 5770, 5772, 5774, 5776, 5778, 5780, 5782, 5784, 5786, 5788, + 5790, 5792, 5794, 5796, 5798, 5800, 5802, 5804, 5806, 5808, + 5810, 5812, 5814, 5816, 5818, 5820, 5822, 5824, 5826, 5828, + 5830, 5832, 5834, 5836, 5838, 5840, 5842, 5844, 5846, 5848, + 5850, 5852, 5854, 5856, 5858, 5860, 5862, 5864, 5866, 5868, + 5870, 5872, 5874, 5876, 5878, 5880, 5882, 5884, 5886, 5888, + 5890, 5892, 5894, 5896, 5898, 5900, 5902, 5904, 5906, 5908, + 5910, 5912, 5914, 5916, 5918, 5920, 5922, 5924, 5926, 5928, + 5930, 5932, 5934, 5936, 5938, 5940, 5942, 5944, 5946, 5948, + 5950, 5952, 5954, 5956, 5958, 5960, 5962, 5964, 5966, 5968, + 5970, 5972, 5974, 5976, 5978, 5980, 5982, 5984, 5986, 5988, + 5990, 5992, 5994, 5996, 5998, 6000, 6002, 6004, 6006, 6008, + 6010, 6012, 6014, 6016, 6018, 6020, 6022, 6024, 6026, 6028, + 6030, 6032, 6034, 6036, 6038, 6040, 6042, 6044, 6046, 6048, + 6050, 6052, 6054, 6056, 6058, 6060, 6062, 6064, 6066, 6068, + 6070, 6072, 6074, 6076, 6078, 6080, 6082, 6084, 6086, 6088, + 6090, 6092, 6094, 6096, 6098, 6100, 6102, 6104, 6106, 6108, + 6110, 6112, 6114, 6116, 6118, 6120, 6122, 6124, 6126, 6128, + 6130, 6132, 6134, 6136, 6138, 6140, 6142, 6144, 6146, 6148, + 6150, 6152, 6154, 6156, 6158, 6160, 6162, 6164, 6166, 6168, + 6170, 6172, 6174, 6176, 6178, 6180, 6182, 6184, 6186, 6188, + 6190, 6192, 6194, 6196, 6198, 6200, 6202, 6204, 6206, 6208, + 6210, 6212, 6214, 6216, 6218, 6220, 6222, 6224, 6226, 6228, + 6230, 6232, 6234, 6236, 6238, 6240, 6242, 6244, 6246, 6248, + 6250, 6252, 6254, 6256, 6258, 6260, 6262, 6264, 6266, 6268, + 6270, 6272, 6274, 6276, 6278, 6280, 6282, 6284, 6286, 6288, + 6290, 6292, 6294, 6296, 6298, 6300, 6302, 6304, 6306, 6308, + 6310, 6312, 6314, 6316, 6318, 6320, 6322, 6324, 6326, 6328, + 6330, 6332, 6334, 6336, 6338, 6340, 6342, 6344, 6346, 6348, + 6350, 6352, 6354, 6356, 6358, 6360, 6362, 6364, 6366, 6368, + 6370, 6372, 6374, 6376, 6378, 6380, 6382, 6384, 6386, 6388, + 6390, 6392, 6394, 6396, 6398, 6400, 6402, 6404, 6406, 6408, + 6410, 6412, 6414, 6416, 6418, 6420, 6422, 6424, 6426, 6428, + 6430, 6432, 6434, 6436, 6438, 6440, 6442, 6444, 6446, 6448, + 6450, 6452, 6454, 6456, 6458, 6460, 6462, 6464, 6466, 6468, + 6470, 6472, 6474, 6476, 6478, 6480, 6482, 6484, 6486, 6488, + 6490, 6492, 6494, 6496, 6498, 6500, 6502, 6504, 6506, 6508, + 6510, 6512, 6514, 6516, 6518, 6520, 6522, 6524, 6526, 6528, + 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6548, + 6550, 6552, 6554, 6556, 6558, 6560, 6562, 6564, 6566, 6568, + 6570, 6572, 6574, 6576, 6578, 6580, 6582, 6584, 6586, 6588, + 6590, 6592, 6594, 6596, 6598, 6600, 6602, 6604, 6606, 6608, + 6610, 6612, 6614, 6616, 6618, 6620, 6622, 6624, 6626, 6628, + 6630, 6632, 6634, 6636, 6638, 6640, 6642, 6644, 6646, 6648, + 6650, 6652, 6654, 6656, 6658, 6660, 6662 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 533, 0, -1, 534, -1, 534, 524, 535, -1, 535, - -1, 966, -1, 601, -1, 536, -1, 1004, -1, 1005, - -1, 1017, -1, 967, -1, 969, -1, 680, -1, 1020, - -1, 670, -1, 956, -1, 589, -1, 587, -1, 614, - -1, 583, -1, 551, -1, 1000, -1, 1006, -1, 608, - -1, 664, -1, 597, -1, 974, -1, 972, -1, 973, - -1, 959, -1, 562, -1, 991, -1, 586, -1, 953, - -1, 560, -1, 698, -1, 610, -1, 596, -1, 679, - -1, 613, -1, 995, -1, 1009, -1, 985, -1, 1012, - -1, 1018, -1, -1, 32, 421, 793, 548, -1, 32, - 421, 192, 152, 793, 548, -1, 32, 203, 552, 548, - -1, 32, 203, 192, 152, 552, 548, -1, 32, 385, - 552, 548, -1, 32, 385, 192, 152, 552, 548, -1, - 32, 473, 552, 548, -1, 32, 473, 192, 152, 552, - 548, -1, 539, -1, 537, 539, -1, 390, 117, 842, - -1, 137, 117, -1, 360, -1, 360, 603, 604, -1, - 390, 605, -1, 390, 176, 663, -1, 547, -1, 540, - 525, 547, -1, 542, -1, 541, 542, -1, 523, 558, - -1, 553, -1, 553, 541, -1, 543, 641, -1, 543, - 642, -1, 26, 544, -1, 26, 192, 275, 152, 544, - -1, 26, 82, 544, -1, 26, 82, 192, 275, 152, - 544, -1, 390, 311, 59, 521, 891, 522, -1, 358, - 311, 59, -1, 390, 401, 59, 521, 727, 522, -1, - 358, 401, 59, -1, 32, 561, 553, 538, -1, 32, - 561, 553, 137, 275, 280, -1, 32, 561, 553, 390, - 275, 280, -1, 32, 561, 553, 390, 407, 607, -1, - 32, 561, 553, 390, 629, -1, 32, 561, 553, 358, - 629, -1, 32, 561, 553, 390, 410, 553, -1, 32, - 561, 553, 26, 176, 663, 40, 191, 617, -1, 32, - 561, 553, 537, -1, 32, 561, 553, 137, 191, -1, - 32, 561, 553, 137, 191, 192, 152, -1, 137, 561, - 192, 152, 543, 668, -1, 137, 561, 543, 668, -1, - 32, 561, 553, 550, 444, 805, 802, 546, -1, 32, - 561, 553, 549, -1, 26, 631, -1, 32, 93, 941, - 615, -1, 463, 93, 941, -1, 137, 93, 192, 152, - 941, 668, -1, 137, 93, 941, 668, -1, 390, 245, - -1, 390, 453, -1, 390, 629, -1, 358, 629, -1, - 549, -1, 460, 842, -1, -1, 625, -1, 390, 625, - -1, 26, 625, -1, 137, 639, -1, 545, -1, 548, - 525, 545, -1, 294, 521, 540, 522, -1, 390, 107, - -1, 390, -1, -1, 111, 941, -1, 111, 327, 941, - -1, 111, 30, -1, 111, 327, 30, -1, 554, -1, - 553, 556, -1, 3, -1, 1023, -1, 1024, -1, 553, - -1, 5, -1, 5, -1, 557, -1, 556, 557, -1, - 523, 558, -1, 559, -1, 3, -1, 1027, -1, 1023, - -1, 1029, -1, 32, 374, 941, 354, 433, 941, -1, - 32, 421, 793, 354, 433, 941, -1, 32, 421, 192, - 152, 793, 354, 433, 941, -1, 32, 385, 552, 354, - 433, 941, -1, 32, 385, 192, 152, 552, 354, 433, - 941, -1, 32, 473, 552, 354, 433, 941, -1, 32, - 473, 192, 152, 552, 354, 433, 941, -1, 32, 203, - 552, 354, 433, 941, -1, 32, 203, 192, 152, 552, - 354, 433, 941, -1, 32, 421, 793, 354, 561, 543, - 433, 941, -1, 32, 421, 192, 152, 793, 354, 561, - 543, 433, 941, -1, 32, 421, 793, 354, 93, 941, - 433, 941, -1, 32, 421, 192, 152, 793, 354, 93, - 941, 433, 941, -1, 82, -1, -1, 567, 213, 570, - 220, 564, 565, 563, 571, 573, -1, 698, -1, 304, - 574, 465, 698, -1, 521, 578, 522, 698, -1, 521, - 578, 522, 304, 574, 465, 698, -1, 117, 466, -1, - 552, -1, 552, 40, 553, -1, 59, 266, -1, 59, - 322, -1, -1, 521, 581, 522, 799, -1, 290, 93, - 941, -1, -1, 710, -1, -1, 553, 915, -1, 582, - 510, 842, -1, 521, 575, 522, 510, 842, -1, 295, - 356, -1, 295, 193, -1, -1, 290, 91, 566, 133, - 457, 390, 580, 799, -1, 290, 91, 566, 133, 276, - -1, -1, 553, 576, 577, 729, 730, -1, 854, 576, - 577, 729, 730, -1, 521, 842, 522, 576, 577, 729, - 730, -1, 362, 921, -1, -1, 459, -1, 420, -1, - 582, -1, 575, 525, 582, -1, 80, 948, -1, -1, - 948, -1, -1, 568, -1, 578, 525, 568, -1, 569, - -1, 579, 525, 569, -1, 579, -1, 579, 525, -1, - 572, -1, 581, 525, 572, -1, 553, 915, -1, 100, - 444, 552, 40, 144, 699, -1, 100, 444, 552, 40, - 144, 521, 584, 522, -1, 100, 444, 552, 40, 806, - -1, 585, -1, -1, 555, -1, 585, 525, 555, -1, - 324, 553, -1, 324, 553, 510, 990, -1, 324, 553, - 521, 893, 522, -1, 100, 662, 385, 552, 588, -1, - 100, 662, 385, 192, 275, 152, 552, 588, -1, 100, - 295, 356, 662, 385, 552, 588, -1, 602, -1, -1, - 100, 591, 381, 590, 592, 521, 595, 522, -1, 100, - 591, 381, 192, 275, 152, 590, 592, 521, 595, 522, - -1, 100, 295, 356, 591, 381, 590, 592, 521, 595, - 522, -1, -1, 553, -1, -1, 427, -1, 315, -1, - -1, 199, 3, -1, 842, -1, 559, 593, -1, 594, - -1, 595, 525, 594, -1, 567, 457, 157, 651, -1, - 151, 941, 600, -1, 100, 662, 421, 1022, 40, 151, - 941, 600, 1021, -1, 100, 662, 421, 192, 275, 152, - 1022, 40, 151, 941, 600, 1021, -1, 842, -1, 951, - 13, 842, -1, 598, -1, 599, 525, 598, -1, 521, - 599, 522, -1, -1, 32, 385, 552, 602, -1, 32, - 385, 192, 152, 552, 602, -1, 605, -1, 602, 605, - -1, 483, -1, 507, -1, -1, 4, -1, 512, 4, - -1, 513, 4, -1, 607, -1, 40, 809, -1, 60, - 604, -1, 106, -1, 273, 106, -1, 202, 606, 604, - -1, 251, 604, -1, 261, 604, -1, 273, 251, -1, - 273, 261, -1, 305, 59, 948, -1, 385, 266, 948, - -1, 405, 603, 604, -1, 360, -1, 360, 603, 604, - -1, 59, -1, -1, 944, -1, 512, 944, -1, 513, - 944, -1, 137, 591, 381, 553, 609, -1, 137, 591, - 381, 192, 152, 553, 609, -1, -1, 172, 3, -1, - 22, 611, -1, 52, 611, 612, -1, 405, 611, 612, - -1, 86, 611, -1, 143, 611, -1, 367, 611, -1, - 486, -1, 435, -1, -1, 342, 291, -1, 342, 488, - -1, -1, 458, 552, -1, 100, 662, 421, 552, 521, - 649, 522, 636, 628, -1, 100, 662, 421, 192, 275, - 152, 552, 521, 649, 522, 636, 628, -1, 100, 295, - 356, 662, 421, 552, 521, 649, 522, 636, 628, -1, - -1, 615, 640, -1, 657, -1, 1029, -1, 885, -1, - 604, -1, 555, -1, 274, -1, 521, 602, 522, -1, - -1, 555, -1, 273, 25, -1, 361, -1, 63, -1, - 390, 280, -1, 390, 117, -1, 93, 941, 621, -1, - 621, -1, 635, -1, 80, 948, -1, 275, 280, -1, - 280, -1, 450, 648, -1, 330, 227, 648, -1, 74, - 521, 842, 522, 630, -1, 460, 88, 941, -1, 117, - 843, -1, 348, 552, 651, 660, 627, -1, 475, -1, - 411, -1, 622, -1, -1, 176, 663, 40, 191, 617, - -1, 176, 663, 40, 521, 842, 522, 623, -1, 40, - 521, 842, 522, 623, -1, 639, 618, -1, 290, 457, - 619, -1, 626, -1, 653, -1, 626, 653, -1, 653, - 626, -1, -1, 290, 86, 137, -1, 290, 86, 122, - 370, -1, 290, 86, 329, 370, -1, -1, 521, 633, - 522, -1, 273, 205, -1, -1, 93, 941, 658, -1, - 658, -1, 85, -1, 94, -1, 118, -1, 191, -1, - 204, -1, 407, -1, 410, -1, 30, -1, 654, -1, - 633, 525, 654, -1, 460, 203, 645, -1, 119, -1, - 275, 119, -1, 207, 120, -1, 207, 195, -1, 483, - 629, -1, 483, 288, -1, 485, 288, -1, -1, 521, - 644, 522, -1, 638, 201, 632, -1, 638, 149, 632, - -1, -1, 559, -1, 275, 119, -1, 119, -1, 207, - 195, -1, 207, 120, -1, 275, 462, -1, 273, 205, - -1, 806, 652, -1, 805, 624, 652, -1, 553, 641, - -1, 553, 642, -1, 647, -1, 644, 525, 647, -1, - 553, -1, 643, -1, 661, -1, 631, -1, 559, 510, - 616, -1, 559, -1, 483, 637, -1, -1, 659, -1, - 659, 525, -1, -1, 553, -1, 521, 655, 522, -1, - -1, 652, 620, -1, -1, 290, 122, 619, -1, 559, - 510, 616, -1, 559, -1, 559, 523, 559, 510, 616, - -1, 559, 523, 559, -1, 650, -1, 655, 525, 650, - -1, 655, -1, 655, 525, -1, 806, -1, 945, 949, - 516, 444, -1, 391, 945, 949, 516, 444, -1, 74, - 521, 842, 522, 615, -1, 450, 521, 656, 522, 648, - 615, -1, 450, 634, 615, -1, 330, 227, 521, 656, - 522, 648, 615, -1, 330, 227, 634, 615, -1, 169, - 227, 521, 656, 522, 348, 552, 651, 660, 627, 615, - -1, 646, -1, 659, 525, 646, -1, 249, 173, -1, - 249, 309, -1, 249, 396, -1, -1, 237, 552, 638, - -1, 427, -1, 425, -1, 241, 427, -1, 241, 425, - -1, 178, 427, -1, 178, 425, -1, 453, -1, -1, - 33, -1, 59, 117, -1, 137, 665, 192, 152, 667, - 668, -1, 137, 665, 667, 668, -1, 137, 666, 192, - 152, 938, 668, -1, 137, 666, 938, 668, -1, 137, - 669, 941, 290, 948, 668, -1, 137, 669, 192, 152, - 941, 290, 948, 668, -1, 421, -1, 385, -1, 174, - -1, 246, -1, 246, 421, -1, 473, -1, 250, 473, - -1, 203, -1, 169, 421, -1, 81, -1, 97, -1, - 374, -1, 407, -1, 428, 378, 308, -1, 428, 378, - 129, -1, 428, 378, 426, -1, 428, 378, 90, -1, - 444, -1, 24, 252, -1, 146, 438, -1, 156, -1, - 169, 107, 487, -1, 336, -1, 388, -1, 948, -1, - 667, 525, 948, -1, 63, -1, 361, -1, -1, 321, - -1, 371, -1, 438, -1, 100, 662, 677, 552, 674, - -1, 100, 662, 677, 192, 275, 152, 552, 674, -1, - 100, 295, 356, 662, 677, 552, 674, -1, 100, 662, - 677, 552, 676, -1, 100, 662, 677, 192, 275, 152, - 552, 676, -1, 100, 295, 356, 662, 677, 552, 676, - -1, 678, 40, 421, 700, -1, 678, 40, 421, 699, - -1, 672, -1, 673, 525, 672, -1, 671, -1, 673, - -1, 678, 40, 842, -1, 675, -1, 676, 525, 675, - -1, 174, -1, 246, -1, 521, 522, -1, 521, 893, - 522, -1, 567, 457, 1001, 390, 580, 772, 1002, 573, - -1, 98, 693, 552, 651, 691, 682, 687, 696, 683, - 603, 688, -1, 98, 521, 698, 522, 433, 687, 696, - 603, 688, -1, 98, 172, 108, 553, 433, 553, 681, - -1, -1, 521, 374, 522, -1, 521, 107, 522, -1, - 172, -1, 433, -1, 685, 124, 555, -1, -1, 695, - -1, 684, 525, 695, -1, 460, -1, -1, 40, -1, - -1, 335, -1, -1, 692, -1, 521, 697, 522, -1, - 982, -1, 604, -1, 849, -1, 514, -1, 521, 684, - 522, -1, 850, -1, 851, -1, -1, 559, 689, -1, - 483, 288, -1, -1, 692, 694, -1, -1, 55, -1, - -1, 55, -1, 288, -1, 171, -1, 123, 686, 555, - -1, 280, 686, 555, -1, 102, -1, 187, -1, 340, - 686, 555, -1, 145, 686, 555, -1, 168, 340, 655, - -1, 168, 340, 514, -1, 310, 59, 655, -1, 310, - 59, 514, -1, 168, 275, 280, 655, -1, 168, 280, - 655, -1, 141, 555, -1, 982, -1, 555, -1, 408, - -1, 409, -1, 3, 523, 553, -1, 3, -1, 690, - -1, 697, 525, 690, -1, 700, -1, 699, -1, 521, - 700, 522, -1, 521, 699, 522, -1, 521, 1012, 522, - -1, 703, -1, 701, 726, -1, 701, 725, 763, 732, - -1, 701, 725, 731, 764, -1, 710, 701, -1, 710, - 701, 726, -1, 710, 701, 725, 763, 732, -1, 710, - 701, 725, 731, 764, -1, 703, -1, 699, -1, 383, - 723, 920, -1, -1, 383, 723, 920, 717, 772, 799, - 752, 761, 861, 762, 737, -1, 383, 722, 922, 717, - 772, 799, 752, 761, 861, 762, 737, -1, 172, 773, - 702, 717, 799, 752, 761, 861, 762, 737, -1, 172, - 773, 383, 722, 922, 717, 799, 752, 761, 861, 762, - 737, -1, 771, -1, 421, 793, -1, 701, 449, 720, - 721, 701, -1, 701, 449, 720, 701, -1, 701, 218, - 720, 701, -1, 701, 147, 720, 701, -1, 705, 776, - 460, 922, -1, 705, 776, 460, 922, 181, 59, 940, - -1, 705, 776, 181, 59, 940, -1, 705, 776, 290, - 709, -1, 705, 776, 290, 709, 181, 59, 940, -1, - 705, 776, 290, 709, 460, 922, -1, 705, 776, 290, - 709, 460, 922, 181, 59, 940, -1, 706, 776, 290, - 922, 220, 266, 941, 704, 940, -1, 706, 776, 290, - 922, -1, 465, -1, 466, -1, 316, -1, 318, -1, - 455, -1, 317, -1, 843, -1, 843, 199, 521, 700, - 522, -1, 779, -1, 707, -1, 708, 525, 707, -1, - 708, -1, 708, 525, -1, 483, 711, -1, 507, 711, - -1, 483, 346, 711, -1, 712, -1, 711, 525, 712, - -1, 941, 950, 713, 40, 716, 521, 955, 522, -1, - 460, 227, 521, 714, 522, -1, -1, 715, -1, 715, - 525, -1, 912, -1, 715, 525, 912, -1, 250, -1, - 275, 250, -1, -1, 220, 718, -1, -1, 427, 719, - 552, -1, 425, 719, 552, -1, 241, 427, 719, 552, - -1, 241, 425, 719, 552, -1, 178, 427, 719, 552, - -1, 178, 425, 719, 552, -1, 453, 719, 552, -1, - 421, 552, -1, 552, -1, 421, -1, -1, 30, -1, - 132, -1, -1, 59, 266, -1, 132, -1, 132, 290, - 521, 891, 522, -1, 30, -1, -1, 193, 282, -1, - 359, 282, -1, -1, 726, -1, -1, 296, 59, 727, - -1, 296, 59, 30, 729, 730, -1, 728, -1, 727, - 525, 728, -1, 842, 460, 885, 730, -1, 842, 729, - 730, -1, 41, -1, 126, -1, -1, 506, 164, -1, - 506, 231, -1, -1, 733, 734, -1, 734, 733, -1, - 733, -1, 734, -1, 731, -1, -1, 238, 746, -1, - 238, 746, 525, 747, -1, 162, 751, 748, 750, 291, - -1, 162, 751, 750, 291, -1, 287, 747, -1, 287, - 748, 750, -1, 4, -1, 9, -1, 847, -1, 735, - 516, -1, 735, 314, -1, 735, -1, 735, 370, -1, - 460, 372, 739, -1, -1, 553, -1, -1, 738, 521, - 736, 522, 742, -1, 736, -1, 736, 521, 553, 522, - -1, 736, 521, 553, 525, 9, 522, -1, 423, 739, - -1, 740, -1, -1, 355, 521, 9, 522, -1, -1, - 432, -1, 472, -1, 743, 14, 842, -1, 46, 521, - 744, 522, -1, -1, 842, -1, 30, -1, 842, 516, - -1, 4, 314, -1, 9, 314, -1, 842, -1, 844, - -1, 512, 749, -1, 513, 749, -1, 944, -1, 4, - -1, 369, -1, 370, -1, 164, -1, 272, -1, 181, - 59, 754, -1, 181, 59, 30, -1, -1, 755, -1, - 753, 525, 755, -1, 753, -1, 753, 525, -1, 842, - -1, 756, -1, 758, -1, 757, -1, 759, -1, 521, - 522, -1, 368, 521, 891, 522, -1, 103, 521, 891, - 522, -1, 182, 392, 521, 754, 522, -1, 182, -1, - 183, -1, 186, 842, -1, -1, 337, 842, -1, -1, - 765, -1, 167, 342, 291, -1, 763, -1, -1, 766, - -1, 765, 766, -1, 767, 768, 769, -1, 167, 457, - -1, 167, 273, 227, 457, -1, 167, 393, -1, 167, - 227, 393, -1, 285, 937, -1, -1, 279, -1, 397, - 244, -1, -1, 466, 521, 891, 522, -1, 770, 525, - 521, 891, 522, -1, 770, -1, 770, 525, -1, 172, - 774, -1, -1, 776, -1, 773, 525, 776, -1, 773, - -1, 773, 525, -1, 554, 526, -1, 793, 788, 745, - 741, -1, 775, 793, 745, 741, -1, 794, 789, 741, - -1, 775, 794, 741, -1, 771, 787, 741, -1, 232, - 794, 789, -1, 699, 788, 741, -1, 775, 699, 741, - -1, 232, 699, 788, -1, 786, -1, 521, 786, 522, - 787, -1, 775, 521, 786, 522, -1, 776, 316, 521, - 922, 167, 782, 777, 522, 788, -1, 776, 455, 778, - 521, 783, 167, 785, 522, 788, -1, 181, 59, 939, - -1, -1, 200, 282, -1, 148, 282, -1, -1, 843, - 199, 521, 922, 522, -1, 843, 199, 554, -1, 845, - -1, 848, -1, 521, 889, 522, -1, 780, 199, 521, - 922, 522, -1, 780, 199, 554, -1, 781, -1, 782, - 781, -1, 554, -1, 521, 939, 522, -1, 783, 199, - 521, 922, 522, -1, 784, -1, 785, 784, -1, 521, - 786, 522, -1, 776, 101, 225, 776, -1, 776, 790, - 225, 776, 792, -1, 776, 225, 776, 792, -1, 776, - 269, 790, 225, 776, -1, 776, 269, 225, 776, -1, - 776, 42, 790, 225, 776, 792, -1, 776, 42, 225, - 776, 792, -1, 776, 323, 225, 776, -1, 776, 37, - 225, 776, 792, -1, 776, 384, 225, 776, 792, -1, - 40, 554, 521, 939, 522, -1, 40, 554, -1, 553, - 521, 939, 522, -1, 553, -1, 787, -1, -1, 787, - -1, 40, 521, 800, 522, -1, 40, 554, 521, 800, - 522, -1, 553, 521, 800, 522, -1, -1, 173, 791, - -1, 235, 791, -1, 365, 791, -1, 384, -1, 37, - -1, 209, -1, 300, -1, -1, 460, 521, 939, 522, - -1, 290, 842, -1, 552, -1, 552, 514, -1, 291, - 552, -1, 291, 521, 552, 522, -1, 854, 798, -1, - 370, 172, 521, 796, 522, 798, -1, 854, 797, -1, - 795, -1, 796, 525, 795, -1, 40, 521, 800, 522, - -1, -1, 507, 297, -1, -1, 480, 842, -1, -1, - 801, -1, 800, 525, 801, -1, 554, 806, 802, -1, - 80, 948, -1, -1, 553, 806, -1, 803, 525, 553, - 806, -1, 369, -1, 414, -1, 806, -1, -1, 809, - 808, -1, 391, 809, 808, -1, 809, 39, 519, 944, - 520, -1, 391, 809, 39, 519, 944, 520, -1, 809, - 39, -1, 391, 809, 39, -1, 807, -1, 804, 521, - 803, 522, 808, -1, 247, 521, 895, 522, 808, -1, - 449, 521, 803, 522, 808, -1, 3, 523, 3, -1, - 807, 523, 3, -1, 808, 519, 520, -1, 808, 519, - 944, 520, -1, -1, 811, -1, 813, -1, 815, -1, - 819, -1, 825, -1, 826, 841, -1, 826, 521, 944, - 522, -1, 813, -1, 816, -1, 820, -1, 825, -1, - 947, 812, -1, 521, 892, 522, -1, -1, 216, -1, - 217, -1, 398, -1, 54, -1, 343, -1, 165, 814, - -1, 136, 326, -1, 115, 812, -1, 112, 812, -1, - 283, 812, -1, 57, -1, 521, 944, 522, -1, -1, - 817, -1, 818, -1, 817, -1, 818, -1, 56, 824, - 521, 891, 522, -1, 56, 824, -1, 821, -1, 822, - -1, 821, -1, 822, -1, 823, 521, 944, 522, -1, - 823, -1, 72, 824, -1, 71, 824, -1, 467, -1, - 268, 72, 824, -1, 268, 71, 824, -1, 270, 824, - -1, 470, -1, -1, 432, 521, 944, 522, 827, -1, - 432, 827, -1, 431, 521, 944, 522, 827, -1, 431, - 827, -1, 219, -1, 507, 431, 504, -1, 485, 431, - 504, -1, -1, 501, -1, 502, -1, 263, -1, 264, - -1, 109, -1, 110, -1, 189, -1, 190, -1, 259, - -1, 260, -1, 379, -1, 380, -1, 257, -1, 258, - -1, 253, -1, 254, -1, 477, -1, 478, -1, 338, - -1, 339, -1, 113, -1, 114, -1, 69, -1, 68, - -1, 256, -1, 255, -1, 828, -1, 829, -1, 830, + 534, 0, -1, 535, -1, 535, 526, 536, -1, 536, + -1, 966, -1, 603, -1, 537, -1, 1004, -1, 1005, + -1, 1017, -1, 967, -1, 969, -1, 682, -1, 1020, + -1, 672, -1, 956, -1, 591, -1, 589, -1, 616, + -1, 584, -1, 552, -1, 1000, -1, 1006, -1, 610, + -1, 666, -1, 599, -1, 974, -1, 972, -1, 973, + -1, 959, -1, 563, -1, 991, -1, 588, -1, 953, + -1, 561, -1, 700, -1, 612, -1, 598, -1, 681, + -1, 615, -1, 995, -1, 1009, -1, 985, -1, 1012, + -1, 1018, -1, -1, 33, 423, 795, 549, -1, 33, + 423, 193, 153, 795, 549, -1, 33, 204, 553, 549, + -1, 33, 204, 193, 153, 553, 549, -1, 33, 387, + 553, 549, -1, 33, 387, 193, 153, 553, 549, -1, + 33, 475, 553, 549, -1, 33, 475, 193, 153, 553, + 549, -1, 540, -1, 538, 540, -1, 392, 118, 844, + -1, 138, 118, -1, 362, -1, 362, 605, 606, -1, + 392, 607, -1, 392, 177, 665, -1, 548, -1, 541, + 527, 548, -1, 543, -1, 542, 543, -1, 525, 559, + -1, 554, -1, 554, 542, -1, 544, 643, -1, 544, + 644, -1, 27, 545, -1, 27, 193, 277, 153, 545, + -1, 27, 83, 545, -1, 27, 83, 193, 277, 153, + 545, -1, 392, 313, 60, 523, 892, 524, -1, 360, + 313, 60, -1, 392, 403, 60, 523, 729, 524, -1, + 360, 403, 60, -1, 33, 562, 554, 539, -1, 33, + 562, 554, 138, 277, 282, -1, 33, 562, 554, 392, + 277, 282, -1, 33, 562, 554, 392, 409, 609, -1, + 33, 562, 554, 392, 631, -1, 33, 562, 554, 360, + 631, -1, 33, 562, 554, 392, 412, 554, -1, 33, + 562, 554, 27, 177, 665, 41, 192, 619, -1, 33, + 562, 554, 538, -1, 33, 562, 554, 138, 192, -1, + 33, 562, 554, 138, 192, 193, 153, -1, 138, 562, + 193, 153, 544, 670, -1, 138, 562, 544, 670, -1, + 33, 562, 554, 551, 446, 807, 804, 547, -1, 33, + 562, 554, 550, -1, 27, 633, -1, 33, 94, 941, + 617, -1, 465, 94, 941, -1, 138, 94, 193, 153, + 941, 670, -1, 138, 94, 941, 670, -1, 392, 247, + -1, 392, 455, -1, 392, 631, -1, 360, 631, -1, + 550, -1, 462, 844, -1, -1, 627, -1, 392, 627, + -1, 27, 627, -1, 138, 641, -1, 546, -1, 549, + 527, 546, -1, 296, 523, 541, 524, -1, 392, 108, + -1, 392, -1, -1, 112, 941, -1, 112, 329, 941, + -1, 112, 31, -1, 112, 329, 31, -1, 555, -1, + 554, 557, -1, 3, -1, 1023, -1, 1024, -1, 554, + -1, 5, -1, 5, -1, 558, -1, 557, 558, -1, + 525, 559, -1, 560, -1, 3, -1, 1027, -1, 1023, + -1, 1029, -1, 33, 376, 941, 356, 435, 941, -1, + 33, 423, 795, 356, 435, 941, -1, 33, 423, 193, + 153, 795, 356, 435, 941, -1, 33, 387, 553, 356, + 435, 941, -1, 33, 387, 193, 153, 553, 356, 435, + 941, -1, 33, 475, 553, 356, 435, 941, -1, 33, + 475, 193, 153, 553, 356, 435, 941, -1, 33, 204, + 553, 356, 435, 941, -1, 33, 204, 193, 153, 553, + 356, 435, 941, -1, 33, 423, 795, 356, 562, 544, + 435, 941, -1, 33, 423, 193, 153, 795, 356, 562, + 544, 435, 941, -1, 33, 423, 795, 356, 94, 941, + 435, 941, -1, 33, 423, 193, 153, 795, 356, 94, + 941, 435, 941, -1, 83, -1, -1, 568, 214, 571, + 221, 565, 566, 564, 572, 574, -1, 700, -1, 306, + 575, 467, 700, -1, 523, 579, 524, 700, -1, 523, + 579, 524, 306, 575, 467, 700, -1, 118, 468, -1, + 553, -1, 553, 41, 554, -1, 60, 268, -1, 60, + 324, -1, -1, 523, 582, 524, 801, -1, 292, 94, + 941, -1, -1, 712, -1, -1, 554, 915, -1, 583, + 512, 844, -1, 523, 576, 524, 512, 844, -1, 297, + 358, -1, 297, 194, -1, -1, 292, 92, 567, 134, + 459, 392, 581, 801, -1, 292, 92, 567, 134, 278, + -1, -1, 554, 577, 578, 731, 732, -1, 856, 577, + 578, 731, 732, -1, 523, 844, 524, 577, 578, 731, + 732, -1, 364, 921, -1, -1, 461, -1, 422, -1, + 583, -1, 576, 527, 583, -1, 81, 948, -1, -1, + 948, -1, -1, 569, -1, 579, 527, 569, -1, 570, + -1, 580, 527, 570, -1, 580, -1, 580, 527, -1, + 573, -1, 582, 527, 573, -1, 554, 915, -1, 101, + 664, 446, 553, 41, 585, -1, 101, 664, 446, 193, + 277, 153, 553, 41, 585, -1, 101, 297, 358, 664, + 446, 553, 41, 585, -1, 145, 701, -1, 145, 523, + 586, 524, -1, 808, -1, 587, -1, -1, 556, -1, + 587, 527, 556, -1, 326, 554, -1, 326, 554, 512, + 990, -1, 326, 554, 523, 894, 524, -1, 101, 664, + 387, 553, 590, -1, 101, 664, 387, 193, 277, 153, + 553, 590, -1, 101, 297, 358, 664, 387, 553, 590, + -1, 604, -1, -1, 101, 593, 383, 592, 594, 523, + 597, 524, -1, 101, 593, 383, 193, 277, 153, 592, + 594, 523, 597, 524, -1, 101, 297, 358, 593, 383, + 592, 594, 523, 597, 524, -1, -1, 554, -1, -1, + 429, -1, 317, -1, -1, 200, 3, -1, 844, -1, + 560, 595, -1, 596, -1, 597, 527, 596, -1, 568, + 459, 158, 653, -1, 152, 941, 602, -1, 101, 664, + 423, 1022, 41, 152, 941, 602, 1021, -1, 101, 664, + 423, 193, 277, 153, 1022, 41, 152, 941, 602, 1021, + -1, 844, -1, 951, 13, 844, -1, 600, -1, 601, + 527, 600, -1, 523, 601, 524, -1, -1, 33, 387, + 553, 604, -1, 33, 387, 193, 153, 553, 604, -1, + 607, -1, 604, 607, -1, 485, -1, 509, -1, -1, + 4, -1, 514, 4, -1, 515, 4, -1, 609, -1, + 41, 811, -1, 61, 606, -1, 107, -1, 275, 107, + -1, 203, 608, 606, -1, 253, 606, -1, 263, 606, + -1, 275, 253, -1, 275, 263, -1, 307, 60, 948, + -1, 387, 268, 948, -1, 407, 605, 606, -1, 362, + -1, 362, 605, 606, -1, 60, -1, -1, 944, -1, + 514, 944, -1, 515, 944, -1, 138, 593, 383, 554, + 611, -1, 138, 593, 383, 193, 153, 554, 611, -1, + -1, 173, 3, -1, 23, 613, -1, 53, 613, 614, + -1, 407, 613, 614, -1, 87, 613, -1, 144, 613, + -1, 369, 613, -1, 488, -1, 437, -1, -1, 344, + 293, -1, 344, 490, -1, -1, 460, 553, -1, 101, + 664, 423, 553, 523, 651, 524, 638, 630, -1, 101, + 664, 423, 193, 277, 153, 553, 523, 651, 524, 638, + 630, -1, 101, 297, 358, 664, 423, 553, 523, 651, + 524, 638, 630, -1, -1, 617, 642, -1, 659, -1, + 1029, -1, 886, -1, 606, -1, 556, -1, 276, -1, + 523, 604, 524, -1, -1, 556, -1, 275, 26, -1, + 363, -1, 64, -1, 392, 282, -1, 392, 118, -1, + 94, 941, 623, -1, 623, -1, 637, -1, 81, 948, + -1, 277, 282, -1, 282, -1, 452, 650, -1, 332, + 228, 650, -1, 75, 523, 844, 524, 632, -1, 462, + 89, 941, -1, 118, 845, -1, 350, 553, 653, 662, + 629, -1, 477, -1, 413, -1, 624, -1, -1, 177, + 665, 41, 192, 619, -1, 177, 665, 41, 523, 844, + 524, 625, -1, 41, 523, 844, 524, 625, -1, 641, + 620, -1, 292, 459, 621, -1, 628, -1, 655, -1, + 628, 655, -1, 655, 628, -1, -1, 292, 87, 138, + -1, 292, 87, 123, 372, -1, 292, 87, 331, 372, + -1, -1, 523, 635, 524, -1, 275, 206, -1, -1, + 94, 941, 660, -1, 660, -1, 86, -1, 95, -1, + 119, -1, 192, -1, 205, -1, 409, -1, 412, -1, + 31, -1, 656, -1, 635, 527, 656, -1, 462, 204, + 647, -1, 120, -1, 277, 120, -1, 208, 121, -1, + 208, 196, -1, 485, 631, -1, 485, 290, -1, 487, + 290, -1, -1, 523, 646, 524, -1, 640, 202, 634, + -1, 640, 150, 634, -1, -1, 560, -1, 277, 120, + -1, 120, -1, 208, 196, -1, 208, 121, -1, 277, + 464, -1, 275, 206, -1, 808, 654, -1, 807, 626, + 654, -1, 554, 643, -1, 554, 644, -1, 649, -1, + 646, 527, 649, -1, 554, -1, 645, -1, 663, -1, + 633, -1, 560, 512, 618, -1, 560, -1, 485, 639, + -1, -1, 661, -1, 661, 527, -1, -1, 554, -1, + 523, 657, 524, -1, -1, 654, 622, -1, -1, 292, + 123, 621, -1, 560, 512, 618, -1, 560, -1, 560, + 525, 560, 512, 618, -1, 560, 525, 560, -1, 652, + -1, 657, 527, 652, -1, 657, -1, 657, 527, -1, + 808, -1, 945, 949, 518, 446, -1, 393, 945, 949, + 518, 446, -1, 75, 523, 844, 524, 617, -1, 452, + 523, 658, 524, 650, 617, -1, 452, 636, 617, -1, + 332, 228, 523, 658, 524, 650, 617, -1, 332, 228, + 636, 617, -1, 170, 228, 523, 658, 524, 350, 553, + 653, 662, 629, 617, -1, 648, -1, 661, 527, 648, + -1, 251, 174, -1, 251, 311, -1, 251, 398, -1, + -1, 239, 553, 640, -1, 429, -1, 427, -1, 243, + 429, -1, 243, 427, -1, 179, 429, -1, 179, 427, + -1, 455, -1, -1, 34, -1, 60, 118, -1, 138, + 667, 193, 153, 669, 670, -1, 138, 667, 669, 670, + -1, 138, 668, 193, 153, 938, 670, -1, 138, 668, + 938, 670, -1, 138, 671, 941, 292, 948, 670, -1, + 138, 671, 193, 153, 941, 292, 948, 670, -1, 423, + -1, 387, -1, 175, -1, 248, -1, 248, 423, -1, + 475, -1, 252, 475, -1, 204, -1, 170, 423, -1, + 82, -1, 98, -1, 376, -1, 409, -1, 430, 380, + 310, -1, 430, 380, 130, -1, 430, 380, 428, -1, + 430, 380, 91, -1, 446, -1, 25, 254, -1, 147, + 440, -1, 157, -1, 170, 108, 489, -1, 338, -1, + 390, -1, 948, -1, 669, 527, 948, -1, 64, -1, + 363, -1, -1, 323, -1, 373, -1, 440, -1, 101, + 664, 679, 553, 676, -1, 101, 664, 679, 193, 277, + 153, 553, 676, -1, 101, 297, 358, 664, 679, 553, + 676, -1, 101, 664, 679, 553, 678, -1, 101, 664, + 679, 193, 277, 153, 553, 678, -1, 101, 297, 358, + 664, 679, 553, 678, -1, 680, 41, 423, 702, -1, + 680, 41, 423, 701, -1, 674, -1, 675, 527, 674, + -1, 673, -1, 675, -1, 680, 41, 844, -1, 677, + -1, 678, 527, 677, -1, 175, -1, 248, -1, 523, + 524, -1, 523, 894, 524, -1, 568, 459, 1001, 392, + 581, 774, 1002, 574, -1, 99, 695, 553, 653, 693, + 684, 689, 698, 685, 605, 690, -1, 99, 523, 700, + 524, 435, 689, 698, 605, 690, -1, 99, 173, 109, + 554, 435, 554, 683, -1, -1, 523, 376, 524, -1, + 523, 108, 524, -1, 173, -1, 435, -1, 687, 125, + 556, -1, -1, 697, -1, 686, 527, 697, -1, 462, + -1, -1, 41, -1, -1, 337, -1, -1, 694, -1, + 523, 699, 524, -1, 982, -1, 606, -1, 851, -1, + 516, -1, 523, 686, 524, -1, 852, -1, 853, -1, + -1, 560, 691, -1, 485, 290, -1, -1, 694, 696, + -1, -1, 56, -1, -1, 56, -1, 290, -1, 172, + -1, 124, 688, 556, -1, 282, 688, 556, -1, 103, + -1, 188, -1, 342, 688, 556, -1, 146, 688, 556, + -1, 169, 342, 657, -1, 169, 342, 516, -1, 312, + 60, 657, -1, 312, 60, 516, -1, 169, 277, 282, + 657, -1, 169, 282, 657, -1, 142, 556, -1, 982, + -1, 556, -1, 410, -1, 411, -1, 3, 525, 554, + -1, 3, -1, 692, -1, 699, 527, 692, -1, 702, + -1, 701, -1, 523, 702, 524, -1, 523, 701, 524, + -1, 523, 1012, 524, -1, 705, -1, 703, 728, -1, + 703, 727, 765, 734, -1, 703, 727, 733, 766, -1, + 712, 703, -1, 712, 703, 728, -1, 712, 703, 727, + 765, 734, -1, 712, 703, 727, 733, 766, -1, 705, + -1, 701, -1, 385, 725, 920, -1, -1, 385, 725, + 920, 719, 774, 801, 754, 763, 862, 764, 739, -1, + 385, 724, 922, 719, 774, 801, 754, 763, 862, 764, + 739, -1, 173, 775, 704, 719, 801, 754, 763, 862, + 764, 739, -1, 173, 775, 385, 724, 922, 719, 801, + 754, 763, 862, 764, 739, -1, 773, -1, 423, 795, + -1, 703, 451, 722, 723, 703, -1, 703, 451, 722, + 703, -1, 703, 219, 722, 703, -1, 703, 148, 722, + 703, -1, 707, 778, 462, 922, -1, 707, 778, 462, + 922, 182, 60, 940, -1, 707, 778, 182, 60, 940, + -1, 707, 778, 292, 711, -1, 707, 778, 292, 711, + 182, 60, 940, -1, 707, 778, 292, 711, 462, 922, + -1, 707, 778, 292, 711, 462, 922, 182, 60, 940, + -1, 708, 778, 292, 922, 221, 268, 941, 706, 940, + -1, 708, 778, 292, 922, -1, 467, -1, 468, -1, + 318, -1, 320, -1, 457, -1, 319, -1, 845, -1, + 845, 200, 523, 702, 524, -1, 781, -1, 709, -1, + 710, 527, 709, -1, 710, -1, 710, 527, -1, 485, + 713, -1, 509, 713, -1, 485, 348, 713, -1, 714, + -1, 713, 527, 714, -1, 941, 950, 715, 41, 718, + 523, 955, 524, -1, 462, 228, 523, 716, 524, -1, + -1, 717, -1, 717, 527, -1, 912, -1, 717, 527, + 912, -1, 252, -1, 277, 252, -1, -1, 221, 720, + -1, -1, 429, 721, 553, -1, 427, 721, 553, -1, + 243, 429, 721, 553, -1, 243, 427, 721, 553, -1, + 179, 429, 721, 553, -1, 179, 427, 721, 553, -1, + 455, 721, 553, -1, 423, 553, -1, 553, -1, 423, + -1, -1, 31, -1, 133, -1, -1, 60, 268, -1, + 133, -1, 133, 292, 523, 892, 524, -1, 31, -1, + -1, 194, 284, -1, 361, 284, -1, -1, 728, -1, + -1, 298, 60, 729, -1, 298, 60, 31, 731, 732, + -1, 730, -1, 729, 527, 730, -1, 844, 462, 886, + 732, -1, 844, 731, 732, -1, 42, -1, 127, -1, + -1, 508, 165, -1, 508, 233, -1, -1, 735, 736, + -1, 736, 735, -1, 735, -1, 736, -1, 733, -1, + -1, 240, 748, -1, 240, 748, 527, 749, -1, 163, + 753, 750, 752, 293, -1, 163, 753, 752, 293, -1, + 289, 749, -1, 289, 750, 752, -1, 4, -1, 9, + -1, 849, -1, 737, 518, -1, 737, 316, -1, 737, + -1, 737, 372, -1, 462, 374, 741, -1, -1, 554, + -1, -1, 740, 523, 738, 524, 744, -1, 738, -1, + 738, 523, 554, 524, -1, 738, 523, 554, 527, 9, + 524, -1, 425, 741, -1, 742, -1, -1, 357, 523, + 9, 524, -1, -1, 434, -1, 474, -1, 745, 14, + 844, -1, 47, 523, 746, 524, -1, -1, 844, -1, + 31, -1, 844, 518, -1, 4, 316, -1, 9, 316, + -1, 844, -1, 846, -1, 514, 751, -1, 515, 751, + -1, 944, -1, 4, -1, 371, -1, 372, -1, 165, + -1, 274, -1, 182, 60, 756, -1, 182, 60, 31, + -1, -1, 757, -1, 755, 527, 757, -1, 755, -1, + 755, 527, -1, 844, -1, 758, -1, 760, -1, 759, + -1, 761, -1, 523, 524, -1, 370, 523, 892, 524, + -1, 104, 523, 892, 524, -1, 183, 394, 523, 756, + 524, -1, 183, -1, 184, -1, 187, 844, -1, -1, + 339, 844, -1, -1, 767, -1, 168, 344, 293, -1, + 765, -1, -1, 768, -1, 767, 768, -1, 769, 770, + 771, -1, 168, 459, -1, 168, 275, 228, 459, -1, + 168, 395, -1, 168, 228, 395, -1, 287, 937, -1, + -1, 281, -1, 399, 246, -1, -1, 468, 523, 892, + 524, -1, 772, 527, 523, 892, 524, -1, 772, -1, + 772, 527, -1, 173, 776, -1, -1, 778, -1, 775, + 527, 778, -1, 775, -1, 775, 527, -1, 555, 19, + -1, 795, 790, 747, 743, -1, 777, 795, 747, 743, + -1, 796, 791, 743, -1, 777, 796, 743, -1, 773, + 789, 743, -1, 234, 796, 791, -1, 701, 790, 743, + -1, 777, 701, 743, -1, 234, 701, 790, -1, 788, + -1, 523, 788, 524, 789, -1, 777, 523, 788, 524, + -1, 778, 318, 523, 922, 168, 784, 779, 524, 790, + -1, 778, 457, 780, 523, 785, 168, 787, 524, 790, + -1, 182, 60, 939, -1, -1, 201, 284, -1, 149, + 284, -1, -1, 845, 200, 523, 922, 524, -1, 845, + 200, 555, -1, 847, -1, 850, -1, 523, 890, 524, + -1, 782, 200, 523, 922, 524, -1, 782, 200, 555, + -1, 783, -1, 784, 783, -1, 555, -1, 523, 939, + 524, -1, 785, 200, 523, 922, 524, -1, 786, -1, + 787, 786, -1, 523, 788, 524, -1, 778, 102, 226, + 778, -1, 778, 792, 226, 778, 794, -1, 778, 226, + 778, 794, -1, 778, 271, 792, 226, 778, -1, 778, + 271, 226, 778, -1, 778, 43, 792, 226, 778, 794, + -1, 778, 43, 226, 778, 794, -1, 778, 325, 226, + 778, -1, 778, 38, 226, 778, 794, -1, 778, 386, + 226, 778, 794, -1, 41, 555, 523, 939, 524, -1, + 41, 555, -1, 554, 523, 939, 524, -1, 554, -1, + 789, -1, -1, 789, -1, 41, 523, 802, 524, -1, + 41, 555, 523, 802, 524, -1, 554, 523, 802, 524, + -1, -1, 174, 793, -1, 237, 793, -1, 367, 793, + -1, 386, -1, 38, -1, 210, -1, 302, -1, -1, + 462, 523, 939, 524, -1, 292, 844, -1, 553, -1, + 553, 516, -1, 293, 553, -1, 293, 523, 553, 524, + -1, 856, 800, -1, 372, 173, 523, 798, 524, 800, + -1, 856, 799, -1, 797, -1, 798, 527, 797, -1, + 41, 523, 802, 524, -1, -1, 509, 299, -1, -1, + 482, 844, -1, -1, 803, -1, 802, 527, 803, -1, + 555, 808, 804, -1, 81, 948, -1, -1, 554, 808, + -1, 805, 527, 554, 808, -1, 371, -1, 416, -1, + 808, -1, -1, 811, 810, -1, 393, 811, 810, -1, + 811, 40, 521, 944, 522, -1, 393, 811, 40, 521, + 944, 522, -1, 811, 40, -1, 393, 811, 40, -1, + 809, -1, 806, 523, 805, 524, 810, -1, 249, 523, + 896, 524, 810, -1, 451, 523, 805, 524, 810, -1, + 3, 525, 3, -1, 809, 525, 3, -1, 810, 521, + 522, -1, 810, 521, 944, 522, -1, -1, 813, -1, + 815, -1, 817, -1, 821, -1, 827, -1, 828, 843, + -1, 828, 523, 944, 524, -1, 815, -1, 818, -1, + 822, -1, 827, -1, 947, 814, -1, 523, 893, 524, + -1, -1, 217, -1, 218, -1, 400, -1, 55, -1, + 345, -1, 166, 816, -1, 137, 328, -1, 116, 814, + -1, 113, 814, -1, 285, 814, -1, 58, -1, 523, + 944, 524, -1, -1, 819, -1, 820, -1, 819, -1, + 820, -1, 57, 826, 523, 892, 524, -1, 57, 826, + -1, 823, -1, 824, -1, 823, -1, 824, -1, 825, + 523, 944, 524, -1, 825, -1, 73, 826, -1, 72, + 826, -1, 469, -1, 270, 73, 826, -1, 270, 72, + 826, -1, 272, 826, -1, 472, -1, -1, 434, 523, + 944, 524, 829, -1, 434, 829, -1, 433, 523, 944, + 524, 829, -1, 433, 829, -1, 220, -1, 509, 433, + 506, -1, 487, 433, 506, -1, -1, 503, -1, 504, + -1, 265, -1, 266, -1, 110, -1, 111, -1, 190, + -1, 191, -1, 261, -1, 262, -1, 381, -1, 382, + -1, 259, -1, 260, -1, 255, -1, 256, -1, 479, + -1, 480, -1, 340, -1, 341, -1, 114, -1, 115, + -1, 70, -1, 69, -1, 258, -1, 257, -1, 830, -1, 831, -1, 832, -1, 833, -1, 834, -1, 835, -1, 836, -1, 837, -1, 838, -1, 839, -1, 840, - -1, 828, 433, 829, -1, 830, 433, 831, -1, 830, - 433, 832, -1, 830, 433, 833, -1, 831, 433, 832, - -1, 831, 433, 833, -1, 832, 433, 833, -1, -1, - 844, -1, 842, 11, 806, -1, 842, 80, 948, -1, - 842, 46, 431, 504, 842, -1, 512, 842, -1, 513, - 842, -1, 842, 512, 842, -1, 842, 513, 842, -1, - 842, 514, 842, -1, 842, 515, 842, -1, 842, 15, - 842, -1, 842, 516, 842, -1, 842, 517, 842, -1, - 842, 16, 842, -1, 842, 508, 842, -1, 842, 509, - 842, -1, 842, 510, 842, -1, 842, 19, 842, -1, - 842, 20, 842, -1, 842, 21, 842, -1, 842, 884, - 842, -1, 884, 842, -1, 842, 884, -1, 842, 36, - 842, -1, 842, 295, 842, -1, 275, 842, -1, 505, - 842, -1, 842, 177, 842, -1, 842, 237, 842, -1, - 842, 237, 842, 145, 842, -1, 842, 505, 237, 842, - -1, 842, 505, 237, 842, 145, 842, -1, 842, 194, - 842, -1, 842, 194, 842, 145, 842, -1, 842, 505, - 194, 842, -1, 842, 505, 194, 842, 145, 842, -1, - 842, 395, 433, 842, -1, 842, 395, 433, 842, 145, - 842, -1, 842, 505, 395, 433, 842, -1, 842, 505, - 395, 433, 842, 145, 842, -1, 842, 222, 280, -1, - 842, 223, -1, 842, 222, 275, 280, -1, 842, 275, - 280, -1, 842, 278, -1, 842, 17, 842, -1, 842, - 18, 842, -1, 873, 302, 873, -1, 842, 222, 440, - -1, 842, 222, 275, 440, -1, 842, 222, 160, -1, - 842, 222, 275, 160, -1, 842, 222, 451, -1, 842, - 222, 275, 451, -1, 842, 222, 132, 172, 842, -1, - 842, 222, 275, 132, 172, 842, -1, 842, 222, 285, - 521, 895, 522, -1, 842, 222, 275, 285, 521, 895, - 522, -1, 842, 53, 919, 843, 36, 842, -1, 842, - 505, 53, 919, 843, 36, 842, -1, 842, 53, 418, - 843, 36, 842, -1, 842, 505, 53, 418, 843, 36, - 842, -1, 842, 199, 905, -1, 842, 505, 199, 905, - -1, 842, 886, 881, 699, -1, 842, 886, 881, 521, - 842, 522, -1, 117, -1, 83, 521, 842, 522, -1, - 454, 521, 842, 522, -1, 514, 83, 521, 842, 522, - -1, 514, 928, 932, 936, -1, 553, 523, 514, 928, - 932, 936, -1, 844, -1, 843, 11, 806, -1, 512, - 843, -1, 513, 843, -1, 843, 512, 843, -1, 843, - 513, 843, -1, 843, 514, 843, -1, 843, 515, 843, - -1, 843, 15, 843, -1, 843, 516, 843, -1, 843, - 517, 843, -1, 843, 16, 843, -1, 843, 508, 843, - -1, 843, 509, 843, -1, 843, 510, 843, -1, 843, - 19, 843, -1, 843, 20, 843, -1, 843, 21, 843, - -1, 843, 884, 843, -1, 884, 843, -1, 843, 884, - -1, 843, 222, 132, 172, 843, -1, 843, 222, 275, - 132, 172, 843, -1, 843, 222, 285, 521, 895, 522, - -1, 843, 222, 275, 285, 521, 895, 522, -1, 845, - -1, 846, 918, -1, 913, -1, 943, -1, 699, -1, - 699, 556, -1, 152, 699, -1, 760, 521, 891, 522, - -1, 521, 842, 522, -1, 848, -1, 873, -1, 527, - -1, 10, -1, 528, 559, -1, 847, -1, 850, -1, - 851, -1, 853, -1, 906, -1, 849, -1, 857, -1, - 39, 699, -1, 39, 519, 892, 520, -1, 529, 9, - -1, 519, 892, 520, -1, 530, 876, 531, -1, 247, - 530, 880, 531, -1, 942, 521, 522, -1, 942, 521, - 726, 724, 522, -1, 942, 521, 893, 725, 724, 522, - -1, 942, 521, 469, 894, 725, 724, 522, -1, 942, - 521, 893, 525, 469, 894, 725, 724, 522, -1, 942, - 521, 30, 893, 725, 724, 522, -1, 942, 521, 132, - 893, 725, 724, 522, -1, 852, 858, 859, 860, 864, - -1, 855, -1, 852, -1, 855, -1, 81, 167, 521, - 842, 522, -1, 66, 521, 842, 40, 806, 522, -1, - 443, 521, 842, 40, 806, 522, -1, 159, 521, 896, - 522, -1, 303, 521, 898, 522, -1, 322, 521, 900, - 522, -1, 416, 521, 901, 522, -1, 437, 521, 842, - 40, 806, 522, -1, 439, 521, 58, 904, 522, -1, - 439, 521, 233, 904, 522, -1, 439, 521, 434, 904, - 522, -1, 439, 521, 904, 522, -1, 281, 521, 842, - 525, 842, 522, -1, 79, 521, 891, 522, -1, 911, - -1, 519, 842, 167, 856, 199, 842, 520, -1, 519, - 842, 167, 856, 199, 844, 192, 842, 520, -1, 484, - 181, 521, 726, 522, -1, -1, 163, 521, 480, 842, - 522, -1, 163, 521, 842, 522, -1, -1, 155, -1, - -1, 482, 862, -1, -1, 863, -1, 862, 525, 863, - -1, 553, 40, 865, -1, 301, 865, -1, 301, 553, - -1, -1, 521, 866, 867, 725, 868, 522, -1, 553, - -1, -1, 310, 59, 890, -1, -1, 341, 869, 871, - -1, 370, 869, 871, -1, 184, 869, 871, -1, -1, - 870, -1, 53, 870, 36, 870, -1, 446, 325, -1, - 446, 166, -1, 104, 369, -1, 842, 325, -1, 842, - 166, -1, 148, 104, 369, -1, 148, 181, -1, 148, - 430, -1, 148, 273, 298, -1, -1, 369, 521, 891, - 522, -1, 369, 521, 522, -1, 872, -1, 521, 890, - 525, 842, 522, -1, 554, 526, 842, -1, 874, -1, - 875, 525, 874, -1, 875, -1, 875, 525, -1, 842, - 526, 842, -1, 877, -1, 878, 525, 877, -1, 878, - -1, 878, 525, -1, 879, -1, -1, 38, -1, 400, - -1, 30, -1, 8, -1, 883, -1, 512, -1, 513, - -1, 514, -1, 515, -1, 15, -1, 516, -1, 517, - -1, 16, -1, 508, -1, 509, -1, 510, -1, 19, - -1, 20, -1, 21, -1, 8, -1, 292, 521, 887, - 522, -1, 882, -1, 292, 521, 887, 522, -1, 882, - -1, 292, 521, 887, 522, -1, 237, -1, 505, 237, - -1, 177, -1, 505, 177, -1, 194, -1, 505, 194, - -1, 882, -1, 553, 523, 887, -1, 844, -1, 888, - 525, 844, -1, 888, -1, 888, 525, -1, 842, -1, - 890, 525, 842, -1, 890, -1, 890, 525, -1, 891, - -1, -1, 894, -1, 893, 525, 894, -1, 842, -1, - 951, 13, 842, -1, 951, 14, 842, -1, 806, -1, - 895, 525, 806, -1, 897, 172, 842, -1, -1, 3, - -1, 828, -1, 829, -1, 830, -1, 831, -1, 832, - -1, 833, -1, 834, -1, 835, -1, 836, -1, 837, - -1, 838, -1, 839, -1, 840, -1, 555, -1, 842, - 899, 902, 903, -1, 842, 899, 902, -1, 319, 842, - -1, 843, 199, 843, -1, -1, 842, 902, 903, -1, - 842, 903, 902, -1, 842, 902, -1, 842, 903, -1, - 890, -1, -1, 172, 842, -1, 167, 842, -1, 842, - 172, 891, -1, 172, 891, -1, 891, -1, 699, -1, - 521, 891, 522, -1, 913, -1, 848, -1, 65, 910, - 907, 909, 143, -1, 908, -1, 907, 908, -1, 479, - 842, 429, 842, -1, 139, 842, -1, -1, 842, -1, - -1, 912, -1, 911, 525, 912, -1, 553, -1, 553, - -1, 553, 556, -1, 519, 842, 520, -1, 519, 914, - 526, 914, 520, -1, 519, 914, 526, 914, 526, 914, - 520, -1, 519, 914, 526, 513, 526, 914, 520, -1, - 842, -1, -1, -1, 915, 557, -1, -1, 521, 522, - -1, 521, 893, 522, -1, 523, 558, 916, -1, 519, - 842, 520, -1, 519, 914, 526, 914, 520, -1, 519, - 914, 526, 914, 526, 914, 520, -1, 519, 914, 526, - 513, 526, 914, 520, -1, -1, 918, 917, -1, 45, - -1, -1, 922, -1, -1, 923, -1, 921, 525, 923, - -1, 921, -1, 921, 525, -1, 842, 40, 952, -1, - 842, 3, -1, 842, -1, 553, 526, 842, -1, 148, - 521, 927, 522, -1, 148, 925, -1, 554, -1, 925, - 523, 554, -1, 925, -1, 926, 525, 925, -1, 926, - -1, 926, 525, -1, 924, -1, -1, 842, 40, 553, - -1, 929, -1, 930, 525, 929, -1, 930, -1, 930, - 525, -1, 356, 521, 931, 522, -1, 356, 929, -1, - -1, 925, 40, 553, -1, 933, -1, 934, 525, 933, - -1, 934, -1, 934, 525, -1, 354, 521, 935, 522, - -1, 354, 933, -1, -1, 552, -1, 937, 525, 552, - -1, 941, -1, 938, 525, 941, -1, 938, -1, 938, - 525, -1, 939, -1, 521, 939, 522, -1, 554, -1, - 946, -1, 553, 556, -1, 944, -1, 4, -1, 555, - 915, -1, 6, -1, 7, -1, 942, 555, -1, 942, - 521, 893, 725, 724, 522, 555, -1, 810, 555, -1, - 826, 521, 842, 522, 841, -1, 826, 944, 841, -1, - 826, 555, 841, -1, 440, -1, 160, -1, 280, -1, - 9, -1, 3, -1, 1023, -1, 1028, -1, 3, -1, - 1023, -1, 1025, -1, 3, -1, 1023, -1, 1026, -1, - 553, -1, 553, 949, -1, 523, 558, -1, 949, 523, - 558, -1, 521, 939, 522, -1, -1, 945, -1, 559, - -1, 5, -1, 327, 941, 954, 40, 955, -1, 521, - 895, 522, -1, -1, 698, -1, 562, -1, 679, -1, - 680, -1, 1000, -1, 1012, -1, 100, 374, 552, 957, - -1, 100, 374, 192, 275, 152, 552, 957, -1, 100, - 295, 356, 374, 552, 957, -1, 957, 958, -1, -1, - 614, -1, 959, -1, 587, -1, 1018, -1, 100, 965, - 203, 962, 963, 290, 552, 961, 521, 581, 522, 964, - 799, -1, 100, 965, 203, 962, 192, 275, 152, 645, - 290, 552, 961, 521, 581, 522, 964, 799, -1, 553, - -1, 460, 960, -1, -1, 89, -1, -1, 645, -1, - -1, 483, 629, -1, -1, 450, -1, -1, 32, 421, - 793, 390, 374, 941, -1, 32, 421, 192, 152, 793, - 390, 374, 941, -1, 32, 385, 552, 390, 374, 941, - -1, 32, 385, 192, 152, 552, 390, 374, 941, -1, - 32, 473, 552, 390, 374, 941, -1, 32, 473, 192, - 152, 552, 390, 374, 941, -1, 168, 75, 968, -1, - 75, 968, -1, 553, -1, -1, 84, 290, 971, 552, - 222, 970, -1, 84, 290, 82, 842, 222, 970, -1, - 555, -1, 280, -1, 421, -1, 385, -1, 174, -1, - 246, -1, 246, 421, -1, 473, -1, 108, -1, 203, - -1, 374, -1, 444, -1, 154, 108, 555, 688, -1, - 154, 108, 553, 433, 555, 688, -1, 198, 108, 555, - -1, 153, 977, -1, 153, 981, 975, 977, -1, 153, - 471, 977, -1, 153, 521, 980, 522, 977, -1, 471, - -1, -1, 982, -1, 604, -1, -1, 966, -1, 601, - -1, 536, -1, 1017, -1, 967, -1, 680, -1, 1020, - -1, 670, -1, 956, -1, 587, -1, 614, -1, 583, - -1, 551, -1, 1000, -1, 664, -1, 597, -1, 959, - -1, 562, -1, 991, -1, 586, -1, 953, -1, 560, - -1, 698, -1, 610, -1, 679, -1, 596, -1, 995, - -1, 1009, -1, 985, -1, 1012, -1, 1018, -1, 3, - -1, 1023, -1, 1027, -1, 978, -1, 555, -1, 983, - -1, 980, 525, 983, -1, 35, -1, 34, -1, 440, - -1, 160, -1, 290, -1, 979, -1, 984, 976, -1, - 978, -1, 981, -1, 390, 986, -1, 390, 241, 986, - -1, 390, 389, 986, -1, 390, 178, 986, -1, 390, - 468, 986, -1, 987, -1, 1016, 172, 104, -1, 431, - 504, 989, -1, 374, 555, -1, 1016, 433, 990, -1, - 1016, 510, 990, -1, 842, -1, 555, -1, 3, -1, - 826, 555, 841, -1, 826, 521, 944, 522, 555, -1, - 604, -1, 117, -1, 241, -1, 988, -1, 990, 525, - 988, -1, 240, 993, -1, 992, 214, 993, 994, -1, - 992, 214, 993, 172, 553, 994, -1, 992, 214, 993, - 172, 555, 994, -1, -1, 168, -1, 555, -1, 553, - -1, -1, 472, 555, -1, 472, 553, -1, 461, 997, - 999, 975, -1, 461, 997, 999, 975, 552, 950, -1, - 461, 997, 999, 975, 1004, -1, 461, 521, 998, 522, - -1, 461, 521, 998, 522, 552, 950, -1, 981, -1, - 471, -1, 171, -1, 173, -1, 3, -1, 173, -1, - -1, 996, -1, 998, 525, 996, -1, 171, -1, -1, - 567, 122, 172, 1001, 1003, 1002, 573, -1, 441, 719, - 1001, -1, 793, -1, 793, 553, -1, 793, 40, 553, - -1, 480, 842, -1, -1, 460, 774, -1, -1, 981, - 975, -1, 981, 975, 552, 950, -1, 47, 1007, 555, - 1008, 688, -1, 47, 192, 275, 152, 1007, 555, 1008, - 688, -1, 47, 295, 356, 1007, 555, 1008, 688, -1, - 128, 559, -1, 128, 108, 559, -1, 128, 108, 192, - 152, 559, -1, 108, -1, -1, 40, 553, -1, -1, - 358, 1011, -1, 358, 241, 1011, -1, 358, 389, 1011, - -1, 358, 178, 1011, -1, 358, 468, 1011, -1, 1016, - -1, 30, -1, 1010, -1, 431, 504, -1, 435, 224, - 236, -1, 1014, 698, -1, 417, 698, -1, 417, 552, - -1, 1014, 552, -1, 1014, 431, 504, -1, 1014, 435, - 224, 236, -1, 1014, 30, 1015, -1, 1014, -1, 127, - -1, 126, -1, 394, -1, 1013, -1, 422, -1, -1, - 553, -1, 1016, 523, 553, -1, 61, 852, -1, 100, - 662, 473, 552, 651, 964, 40, 698, 1019, -1, 100, - 662, 473, 192, 275, 152, 552, 651, 964, 40, 698, - 1019, -1, 100, 295, 356, 662, 473, 552, 651, 964, - 40, 698, 1019, -1, 100, 662, 346, 473, 552, 521, - 655, 522, 964, 40, 698, 1019, -1, 100, 295, 356, - 662, 346, 473, 552, 521, 655, 522, 964, 40, 698, - 1019, -1, 483, 74, 293, -1, 483, 64, 74, 293, - -1, 483, 241, 74, 293, -1, -1, 100, 662, 421, - 1022, 40, 698, 1021, -1, 100, 662, 421, 192, 275, - 152, 1022, 40, 698, 1021, -1, 100, 295, 356, 662, - 421, 1022, 40, 698, 1021, -1, 483, 107, -1, 483, - 273, 107, -1, -1, 552, 651, 636, 628, -1, 22, - -1, 23, -1, 24, -1, 25, -1, 26, -1, 27, - -1, 28, -1, 29, -1, 31, -1, 32, -1, 33, - -1, 43, -1, 44, -1, 47, -1, 48, -1, 50, - -1, 51, -1, 52, -1, 59, -1, 60, -1, 61, - -1, 62, -1, 63, -1, 64, -1, 67, -1, 68, - -1, 69, -1, 70, -1, 73, -1, 75, -1, 76, - -1, 77, -1, 78, -1, 84, -1, 85, -1, 86, - -1, 87, -1, 88, -1, 90, -1, 91, -1, 92, - -1, 94, -1, 95, -1, 96, -1, 97, -1, 98, - -1, 99, -1, 102, -1, 103, -1, 104, -1, 105, - -1, 106, -1, 107, -1, 108, -1, 109, -1, 110, - -1, 111, -1, 113, -1, 114, -1, 116, -1, 118, - -1, 120, -1, 121, -1, 122, -1, 123, -1, 124, - -1, 125, -1, 128, -1, 129, -1, 130, -1, 131, - -1, 134, -1, 135, -1, 136, -1, 137, -1, 138, - -1, 140, -1, 141, -1, 142, -1, 144, -1, 145, - -1, 146, -1, 148, -1, 149, -1, 150, -1, 151, - -1, 153, -1, 154, -1, 155, -1, 156, -1, 157, - -1, 158, -1, 161, -1, 163, -1, 164, -1, 166, - -1, 168, -1, 170, -1, 174, -1, 175, -1, 178, - -1, 179, -1, 180, -1, 184, -1, 185, -1, 187, - -1, 188, -1, 189, -1, 190, -1, 191, -1, 192, - -1, 193, -1, 195, -1, 196, -1, 197, -1, 198, - -1, 200, -1, 201, -1, 202, -1, 203, -1, 204, - -1, 205, -1, 206, -1, 208, -1, 211, -1, 212, - -1, 213, -1, 214, -1, 215, -1, 221, -1, 224, - -1, 226, -1, 227, -1, 228, -1, 229, -1, 230, - -1, 231, -1, 234, -1, 236, -1, 239, -1, 240, - -1, 241, -1, 242, -1, 243, -1, 244, -1, 245, - -1, 246, -1, 248, -1, 249, -1, 250, -1, 251, - -1, 252, -1, 253, -1, 254, -1, 255, -1, 256, - -1, 257, -1, 258, -1, 259, -1, 260, -1, 261, - -1, 262, -1, 263, -1, 264, -1, 265, -1, 266, - -1, 267, -1, 271, -1, 272, -1, 273, -1, 276, - -1, 277, -1, 279, -1, 282, -1, 284, -1, 285, - -1, 286, -1, 288, -1, 289, -1, 292, -1, 293, - -1, 294, -1, 297, -1, 298, -1, 301, -1, 304, - -1, 305, -1, 306, -1, 307, -1, 308, -1, 309, - -1, 310, -1, 311, -1, 312, -1, 313, -1, 314, - -1, 315, -1, 320, -1, 321, -1, 324, -1, 325, - -1, 327, -1, 328, -1, 329, -1, 331, -1, 332, - -1, 333, -1, 334, -1, 335, -1, 336, -1, 338, - -1, 339, -1, 340, -1, 341, -1, 342, -1, 344, - -1, 345, -1, 346, -1, 347, -1, 349, -1, 350, - -1, 351, -1, 352, -1, 353, -1, 354, -1, 355, - -1, 356, -1, 357, -1, 358, -1, 359, -1, 360, - -1, 361, -1, 363, -1, 364, -1, 366, -1, 367, - -1, 368, -1, 370, -1, 371, -1, 372, -1, 373, - -1, 374, -1, 375, -1, 376, -1, 377, -1, 378, - -1, 379, -1, 380, -1, 381, -1, 382, -1, 385, - -1, 386, -1, 387, -1, 388, -1, 389, -1, 390, - -1, 392, -1, 393, -1, 396, -1, 397, -1, 399, - -1, 401, -1, 402, -1, 403, -1, 404, -1, 405, - -1, 406, -1, 407, -1, 408, -1, 409, -1, 410, - -1, 411, -1, 412, -1, 413, -1, 415, -1, 419, - -1, 420, -1, 422, -1, 424, -1, 425, -1, 426, - -1, 427, -1, 428, -1, 430, -1, 435, -1, 436, - -1, 438, -1, 441, -1, 442, -1, 444, -1, 445, - -1, 446, -1, 447, -1, 448, -1, 451, -1, 452, - -1, 453, -1, 456, -1, 457, -1, 458, -1, 459, - -1, 461, -1, 462, -1, 463, -1, 464, -1, 465, - -1, 468, -1, 470, -1, 472, -1, 473, -1, 474, - -1, 475, -1, 476, -1, 477, -1, 478, -1, 481, - -1, 484, -1, 485, -1, 486, -1, 487, -1, 488, - -1, 489, -1, 501, -1, 502, -1, 503, -1, 504, - -1, 53, -1, 54, -1, 56, -1, 57, -1, 71, - -1, 72, -1, 79, -1, 83, -1, 112, -1, 115, - -1, 152, -1, 159, -1, 165, -1, 176, -1, 182, - -1, 183, -1, 210, -1, 216, -1, 217, -1, 219, - -1, 247, -1, 268, -1, 270, -1, 274, -1, 281, - -1, 283, -1, 299, -1, 303, -1, 322, -1, 326, - -1, 343, -1, 369, -1, 391, -1, 398, -1, 414, - -1, 416, -1, 431, -1, 432, -1, 437, -1, 439, - -1, 443, -1, 466, -1, 467, -1, 490, -1, 491, - -1, 492, -1, 493, -1, 494, -1, 495, -1, 496, - -1, 497, -1, 498, -1, 499, -1, 500, -1, 42, - -1, 46, -1, 49, -1, 55, -1, 81, -1, 89, - -1, 101, -1, 171, -1, 173, -1, 176, -1, 177, - -1, 194, -1, 209, -1, 222, -1, 223, -1, 225, - -1, 235, -1, 237, -1, 247, -1, 269, -1, 278, - -1, 300, -1, 302, -1, 323, -1, 365, -1, 395, - -1, 414, -1, 423, -1, 471, -1, 37, -1, 42, - -1, 46, -1, 49, -1, 55, -1, 81, -1, 83, - -1, 89, -1, 101, -1, 171, -1, 173, -1, 177, - -1, 194, -1, 209, -1, 222, -1, 223, -1, 225, - -1, 235, -1, 237, -1, 269, -1, 278, -1, 300, - -1, 302, -1, 323, -1, 365, -1, 384, -1, 395, - -1, 423, -1, 443, -1, 454, -1, 471, -1, 37, - -1, 42, -1, 46, -1, 49, -1, 53, -1, 54, - -1, 55, -1, 56, -1, 57, -1, 72, -1, 71, - -1, 79, -1, 81, -1, 83, -1, 89, -1, 101, - -1, 112, -1, 115, -1, 152, -1, 159, -1, 165, - -1, 171, -1, 173, -1, 176, -1, 177, -1, 182, - -1, 183, -1, 194, -1, 209, -1, 210, -1, 217, - -1, 219, -1, 216, -1, 222, -1, 223, -1, 225, - -1, 235, -1, 237, -1, 247, -1, 268, -1, 269, - -1, 270, -1, 274, -1, 278, -1, 281, -1, 283, - -1, 300, -1, 299, -1, 302, -1, 303, -1, 322, - -1, 323, -1, 326, -1, 343, -1, 365, -1, 369, - -1, 384, -1, 391, -1, 395, -1, 398, -1, 414, - -1, 416, -1, 423, -1, 431, -1, 432, -1, 437, - -1, 439, -1, 443, -1, 454, -1, 466, -1, 467, - -1, 471, -1, 490, -1, 491, -1, 492, -1, 493, - -1, 494, -1, 495, -1, 496, -1, 497, -1, 498, - -1, 499, -1, 500, -1, 37, -1, 42, -1, 46, - -1, 49, -1, 55, -1, 81, -1, 83, -1, 89, - -1, 101, -1, 171, -1, 173, -1, 176, -1, 177, - -1, 194, -1, 209, -1, 222, -1, 223, -1, 225, - -1, 235, -1, 237, -1, 247, -1, 269, -1, 278, - -1, 300, -1, 302, -1, 323, -1, 365, -1, 384, - -1, 395, -1, 414, -1, 423, -1, 443, -1, 454, - -1, 471, -1, 30, -1, 34, -1, 35, -1, 36, - -1, 38, -1, 39, -1, 40, -1, 41, -1, 45, - -1, 58, -1, 65, -1, 66, -1, 74, -1, 80, - -1, 82, -1, 93, -1, 100, -1, 117, -1, 119, - -1, 126, -1, 127, -1, 132, -1, 133, -1, 139, - -1, 143, -1, 147, -1, 160, -1, 162, -1, 167, - -1, 169, -1, 172, -1, 181, -1, 186, -1, 199, - -1, 207, -1, 218, -1, 220, -1, 232, -1, 233, - -1, 238, -1, 275, -1, 280, -1, 287, -1, 290, - -1, 291, -1, 295, -1, 296, -1, 316, -1, 317, - -1, 318, -1, 319, -1, 330, -1, 337, -1, 348, - -1, 362, -1, 383, -1, 394, -1, 400, -1, 417, - -1, 418, -1, 421, -1, 429, -1, 433, -1, 434, - -1, 440, -1, 449, -1, 450, -1, 455, -1, 460, - -1, 469, -1, 479, -1, 480, -1, 482, -1, 483, - -1 + -1, 841, -1, 842, -1, 830, 435, 831, -1, 832, + 435, 833, -1, 832, 435, 834, -1, 832, 435, 835, + -1, 833, 435, 834, -1, 833, 435, 835, -1, 834, + 435, 835, -1, -1, 846, -1, 844, 11, 808, -1, + 844, 81, 948, -1, 844, 47, 433, 506, 844, -1, + 514, 844, -1, 515, 844, -1, 844, 514, 844, -1, + 844, 515, 844, -1, 844, 516, 844, -1, 844, 517, + 844, -1, 844, 15, 844, -1, 844, 518, 844, -1, + 844, 519, 844, -1, 844, 16, 844, -1, 844, 510, + 844, -1, 844, 511, 844, -1, 844, 512, 844, -1, + 844, 20, 844, -1, 844, 21, 844, -1, 844, 22, + 844, -1, 844, 885, 844, -1, 885, 844, -1, 844, + 885, -1, 844, 37, 844, -1, 844, 297, 844, -1, + 277, 844, -1, 507, 844, -1, 844, 178, 844, -1, + 844, 239, 844, -1, 844, 239, 844, 146, 844, -1, + 844, 507, 239, 844, -1, 844, 507, 239, 844, 146, + 844, -1, 844, 195, 844, -1, 844, 195, 844, 146, + 844, -1, 844, 507, 195, 844, -1, 844, 507, 195, + 844, 146, 844, -1, 844, 397, 435, 844, -1, 844, + 397, 435, 844, 146, 844, -1, 844, 507, 397, 435, + 844, -1, 844, 507, 397, 435, 844, 146, 844, -1, + 844, 223, 282, -1, 844, 224, -1, 844, 223, 277, + 282, -1, 844, 277, 282, -1, 844, 280, -1, 230, + 938, 19, 844, -1, 844, 17, 844, -1, 844, 18, + 844, -1, 874, 304, 874, -1, 844, 223, 442, -1, + 844, 223, 277, 442, -1, 844, 223, 161, -1, 844, + 223, 277, 161, -1, 844, 223, 453, -1, 844, 223, + 277, 453, -1, 844, 223, 133, 173, 844, -1, 844, + 223, 277, 133, 173, 844, -1, 844, 223, 287, 523, + 896, 524, -1, 844, 223, 277, 287, 523, 896, 524, + -1, 844, 54, 919, 845, 37, 844, -1, 844, 507, + 54, 919, 845, 37, 844, -1, 844, 54, 420, 845, + 37, 844, -1, 844, 507, 54, 420, 845, 37, 844, + -1, 844, 200, 906, -1, 844, 507, 200, 906, -1, + 844, 887, 882, 701, -1, 844, 887, 882, 523, 844, + 524, -1, 118, -1, 84, 523, 844, 524, -1, 456, + 523, 844, 524, -1, 516, 84, 523, 844, 524, -1, + 516, 928, 932, 936, -1, 554, 525, 516, 928, 932, + 936, -1, 846, -1, 845, 11, 808, -1, 514, 845, + -1, 515, 845, -1, 845, 514, 845, -1, 845, 515, + 845, -1, 845, 516, 845, -1, 845, 517, 845, -1, + 845, 15, 845, -1, 845, 518, 845, -1, 845, 519, + 845, -1, 845, 16, 845, -1, 845, 510, 845, -1, + 845, 511, 845, -1, 845, 512, 845, -1, 845, 20, + 845, -1, 845, 21, 845, -1, 845, 22, 845, -1, + 845, 885, 845, -1, 885, 845, -1, 845, 885, -1, + 845, 223, 133, 173, 845, -1, 845, 223, 277, 133, + 173, 845, -1, 845, 223, 287, 523, 896, 524, -1, + 845, 223, 277, 287, 523, 896, 524, -1, 847, -1, + 848, 918, -1, 913, -1, 943, -1, 701, -1, 701, + 557, -1, 153, 701, -1, 762, 523, 892, 524, -1, + 523, 844, 524, -1, 850, -1, 874, -1, 528, -1, + 10, -1, 529, 560, -1, 849, -1, 852, -1, 853, + -1, 855, -1, 907, -1, 851, -1, 858, -1, 40, + 701, -1, 40, 521, 893, 522, -1, 530, 9, -1, + 521, 893, 522, -1, 531, 877, 532, -1, 249, 531, + 881, 532, -1, 942, 523, 524, -1, 942, 523, 728, + 726, 524, -1, 942, 523, 894, 727, 726, 524, -1, + 942, 523, 471, 895, 727, 726, 524, -1, 942, 523, + 894, 527, 471, 895, 727, 726, 524, -1, 942, 523, + 31, 894, 727, 726, 524, -1, 942, 523, 133, 894, + 727, 726, 524, -1, 854, 859, 860, 861, 865, -1, + 857, -1, 854, -1, 857, -1, 82, 168, 523, 844, + 524, -1, 67, 523, 844, 41, 808, 524, -1, 445, + 523, 844, 41, 808, 524, -1, 160, 523, 897, 524, + -1, 305, 523, 899, 524, -1, 324, 523, 901, 524, + -1, 418, 523, 902, 524, -1, 439, 523, 844, 41, + 808, 524, -1, 441, 523, 59, 905, 524, -1, 441, + 523, 235, 905, 524, -1, 441, 523, 436, 905, 524, + -1, 441, 523, 905, 524, -1, 283, 523, 844, 527, + 844, 524, -1, 80, 523, 892, 524, -1, 521, 844, + 168, 938, 200, 844, 522, -1, 521, 844, 168, 938, + 200, 846, 193, 844, 522, -1, 486, 182, 523, 728, + 524, -1, -1, 164, 523, 482, 844, 524, -1, 164, + 523, 844, 524, -1, -1, 156, -1, -1, 484, 863, + -1, -1, 864, -1, 863, 527, 864, -1, 554, 41, + 866, -1, 303, 866, -1, 303, 554, -1, -1, 523, + 867, 868, 727, 869, 524, -1, 554, -1, -1, 312, + 60, 891, -1, -1, 343, 870, 872, -1, 372, 870, + 872, -1, 185, 870, 872, -1, -1, 871, -1, 54, + 871, 37, 871, -1, 448, 327, -1, 448, 167, -1, + 105, 371, -1, 844, 327, -1, 844, 167, -1, 149, + 105, 371, -1, 149, 182, -1, 149, 432, -1, 149, + 275, 300, -1, -1, 371, 523, 892, 524, -1, 371, + 523, 524, -1, 873, -1, 523, 891, 527, 844, 524, + -1, 555, 19, 844, -1, 875, -1, 876, 527, 875, + -1, 876, -1, 876, 527, -1, 844, 19, 844, -1, + 878, -1, 879, 527, 878, -1, 879, -1, 879, 527, + -1, 880, -1, -1, 39, -1, 402, -1, 31, -1, + 8, -1, 884, -1, 514, -1, 515, -1, 516, -1, + 517, -1, 15, -1, 518, -1, 519, -1, 16, -1, + 510, -1, 511, -1, 512, -1, 20, -1, 21, -1, + 22, -1, 8, -1, 294, 523, 888, 524, -1, 883, + -1, 294, 523, 888, 524, -1, 883, -1, 294, 523, + 888, 524, -1, 239, -1, 507, 239, -1, 178, -1, + 507, 178, -1, 195, -1, 507, 195, -1, 883, -1, + 554, 525, 888, -1, 846, -1, 889, 527, 846, -1, + 889, -1, 889, 527, -1, 844, -1, 891, 527, 844, + -1, 891, -1, 891, 527, -1, 892, -1, -1, 895, + -1, 894, 527, 895, -1, 844, -1, 951, 13, 844, + -1, 951, 14, 844, -1, 808, -1, 896, 527, 808, + -1, 898, 173, 844, -1, -1, 3, -1, 830, -1, + 831, -1, 832, -1, 833, -1, 834, -1, 835, -1, + 836, -1, 837, -1, 838, -1, 839, -1, 840, -1, + 841, -1, 842, -1, 556, -1, 844, 900, 903, 904, + -1, 844, 900, 903, -1, 321, 844, -1, 845, 200, + 845, -1, -1, 844, 903, 904, -1, 844, 904, 903, + -1, 844, 903, -1, 844, 904, -1, 891, -1, -1, + 173, 844, -1, 168, 844, -1, 844, 173, 892, -1, + 173, 892, -1, 892, -1, 701, -1, 523, 892, 524, + -1, 913, -1, 850, -1, 66, 911, 908, 910, 144, + -1, 909, -1, 908, 909, -1, 481, 844, 431, 844, + -1, 140, 844, -1, -1, 844, -1, -1, 554, -1, + 554, -1, 554, 557, -1, 521, 844, 522, -1, 521, + 914, 19, 914, 522, -1, 521, 914, 19, 914, 19, + 914, 522, -1, 521, 914, 19, 515, 19, 914, 522, + -1, 844, -1, -1, -1, 915, 558, -1, -1, 523, + 524, -1, 523, 894, 524, -1, 525, 559, 916, -1, + 521, 844, 522, -1, 521, 914, 19, 914, 522, -1, + 521, 914, 19, 914, 19, 914, 522, -1, 521, 914, + 19, 515, 19, 914, 522, -1, -1, 918, 917, -1, + 46, -1, -1, 922, -1, -1, 923, -1, 921, 527, + 923, -1, 921, -1, 921, 527, -1, 844, 41, 952, + -1, 844, 3, -1, 844, -1, 554, 19, 844, -1, + 149, 523, 927, 524, -1, 149, 925, -1, 555, -1, + 925, 525, 555, -1, 925, -1, 926, 527, 925, -1, + 926, -1, 926, 527, -1, 924, -1, -1, 844, 41, + 554, -1, 929, -1, 930, 527, 929, -1, 930, -1, + 930, 527, -1, 358, 523, 931, 524, -1, 358, 929, + -1, -1, 925, 41, 554, -1, 933, -1, 934, 527, + 933, -1, 934, -1, 934, 527, -1, 356, 523, 935, + 524, -1, 356, 933, -1, -1, 553, -1, 937, 527, + 553, -1, 941, -1, 938, 527, 941, -1, 938, -1, + 938, 527, -1, 939, -1, 523, 939, 524, -1, 555, + -1, 946, -1, 554, 557, -1, 944, -1, 4, -1, + 556, 915, -1, 6, -1, 7, -1, 942, 556, -1, + 942, 523, 894, 727, 726, 524, 556, -1, 812, 556, + -1, 828, 523, 844, 524, 843, -1, 828, 944, 843, + -1, 828, 556, 843, -1, 442, -1, 161, -1, 282, + -1, 9, -1, 3, -1, 1023, -1, 1028, -1, 3, + -1, 1023, -1, 1025, -1, 3, -1, 1023, -1, 1026, + -1, 554, -1, 554, 949, -1, 525, 559, -1, 949, + 525, 559, -1, 523, 939, 524, -1, -1, 945, -1, + 560, -1, 5, -1, 329, 941, 954, 41, 955, -1, + 523, 896, 524, -1, -1, 700, -1, 563, -1, 681, + -1, 682, -1, 1000, -1, 1012, -1, 101, 376, 553, + 957, -1, 101, 376, 193, 277, 153, 553, 957, -1, + 101, 297, 358, 376, 553, 957, -1, 957, 958, -1, + -1, 616, -1, 959, -1, 589, -1, 1018, -1, 101, + 965, 204, 962, 963, 292, 553, 961, 523, 582, 524, + 964, 801, -1, 101, 965, 204, 962, 193, 277, 153, + 647, 292, 553, 961, 523, 582, 524, 964, 801, -1, + 554, -1, 462, 960, -1, -1, 90, -1, -1, 647, + -1, -1, 485, 631, -1, -1, 452, -1, -1, 33, + 423, 795, 392, 376, 941, -1, 33, 423, 193, 153, + 795, 392, 376, 941, -1, 33, 387, 553, 392, 376, + 941, -1, 33, 387, 193, 153, 553, 392, 376, 941, + -1, 33, 475, 553, 392, 376, 941, -1, 33, 475, + 193, 153, 553, 392, 376, 941, -1, 169, 76, 968, + -1, 76, 968, -1, 554, -1, -1, 85, 292, 971, + 553, 223, 970, -1, 85, 292, 83, 844, 223, 970, + -1, 556, -1, 282, -1, 423, -1, 387, -1, 175, + -1, 248, -1, 248, 423, -1, 475, -1, 109, -1, + 204, -1, 376, -1, 446, -1, 155, 109, 556, 690, + -1, 155, 109, 554, 435, 556, 690, -1, 199, 109, + 556, -1, 154, 977, -1, 154, 981, 975, 977, -1, + 154, 473, 977, -1, 154, 523, 980, 524, 977, -1, + 473, -1, -1, 982, -1, 606, -1, -1, 966, -1, + 603, -1, 537, -1, 1017, -1, 967, -1, 682, -1, + 1020, -1, 672, -1, 956, -1, 589, -1, 616, -1, + 584, -1, 552, -1, 1000, -1, 666, -1, 599, -1, + 959, -1, 563, -1, 991, -1, 588, -1, 953, -1, + 561, -1, 700, -1, 612, -1, 681, -1, 598, -1, + 995, -1, 1009, -1, 985, -1, 1012, -1, 1018, -1, + 3, -1, 1023, -1, 1027, -1, 978, -1, 556, -1, + 983, -1, 980, 527, 983, -1, 36, -1, 35, -1, + 442, -1, 161, -1, 292, -1, 979, -1, 984, 976, + -1, 978, -1, 981, -1, 392, 986, -1, 392, 243, + 986, -1, 392, 391, 986, -1, 392, 179, 986, -1, + 392, 470, 986, -1, 987, -1, 1016, 173, 105, -1, + 433, 506, 989, -1, 376, 556, -1, 1016, 435, 990, + -1, 1016, 512, 990, -1, 844, -1, 556, -1, 3, + -1, 828, 556, 843, -1, 828, 523, 944, 524, 556, + -1, 606, -1, 118, -1, 243, -1, 988, -1, 990, + 527, 988, -1, 242, 993, -1, 992, 215, 993, 994, + -1, 992, 215, 993, 173, 554, 994, -1, 992, 215, + 993, 173, 556, 994, -1, -1, 169, -1, 556, -1, + 554, -1, -1, 474, 556, -1, 474, 554, -1, 463, + 997, 999, 975, -1, 463, 997, 999, 975, 553, 950, + -1, 463, 997, 999, 975, 1004, -1, 463, 523, 998, + 524, -1, 463, 523, 998, 524, 553, 950, -1, 981, + -1, 473, -1, 172, -1, 174, -1, 3, -1, 174, + -1, -1, 996, -1, 998, 527, 996, -1, 172, -1, + -1, 568, 123, 173, 1001, 1003, 1002, 574, -1, 443, + 721, 1001, -1, 795, -1, 795, 554, -1, 795, 41, + 554, -1, 482, 844, -1, -1, 462, 776, -1, -1, + 981, 975, -1, 981, 975, 553, 950, -1, 48, 1007, + 556, 1008, 690, -1, 48, 193, 277, 153, 1007, 556, + 1008, 690, -1, 48, 297, 358, 1007, 556, 1008, 690, + -1, 129, 560, -1, 129, 109, 560, -1, 129, 109, + 193, 153, 560, -1, 109, -1, -1, 41, 554, -1, + -1, 360, 1011, -1, 360, 243, 1011, -1, 360, 391, + 1011, -1, 360, 179, 1011, -1, 360, 470, 1011, -1, + 1016, -1, 31, -1, 1010, -1, 433, 506, -1, 437, + 225, 238, -1, 1014, 700, -1, 419, 700, -1, 419, + 553, -1, 1014, 553, -1, 1014, 433, 506, -1, 1014, + 437, 225, 238, -1, 1014, 31, 1015, -1, 1014, -1, + 128, -1, 127, -1, 396, -1, 1013, -1, 424, -1, + -1, 554, -1, 1016, 525, 554, -1, 62, 854, -1, + 101, 664, 475, 553, 653, 964, 41, 700, 1019, -1, + 101, 664, 475, 193, 277, 153, 553, 653, 964, 41, + 700, 1019, -1, 101, 297, 358, 664, 475, 553, 653, + 964, 41, 700, 1019, -1, 101, 664, 348, 475, 553, + 523, 657, 524, 964, 41, 700, 1019, -1, 101, 297, + 358, 664, 348, 475, 553, 523, 657, 524, 964, 41, + 700, 1019, -1, 485, 75, 295, -1, 485, 65, 75, + 295, -1, 485, 243, 75, 295, -1, -1, 101, 664, + 423, 1022, 41, 700, 1021, -1, 101, 664, 423, 193, + 277, 153, 1022, 41, 700, 1021, -1, 101, 297, 358, + 664, 423, 1022, 41, 700, 1021, -1, 485, 108, -1, + 485, 275, 108, -1, -1, 553, 653, 638, 630, -1, + 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, + 28, -1, 29, -1, 30, -1, 32, -1, 33, -1, + 34, -1, 44, -1, 45, -1, 48, -1, 49, -1, + 51, -1, 52, -1, 53, -1, 60, -1, 61, -1, + 62, -1, 63, -1, 64, -1, 65, -1, 68, -1, + 69, -1, 70, -1, 71, -1, 74, -1, 76, -1, + 77, -1, 78, -1, 79, -1, 85, -1, 86, -1, + 87, -1, 88, -1, 89, -1, 91, -1, 92, -1, + 93, -1, 95, -1, 96, -1, 97, -1, 98, -1, + 99, -1, 100, -1, 103, -1, 104, -1, 105, -1, + 106, -1, 107, -1, 108, -1, 109, -1, 110, -1, + 111, -1, 112, -1, 114, -1, 115, -1, 117, -1, + 119, -1, 121, -1, 122, -1, 123, -1, 124, -1, + 125, -1, 126, -1, 129, -1, 130, -1, 131, -1, + 132, -1, 135, -1, 136, -1, 137, -1, 138, -1, + 139, -1, 141, -1, 142, -1, 143, -1, 145, -1, + 146, -1, 147, -1, 149, -1, 150, -1, 151, -1, + 152, -1, 154, -1, 155, -1, 156, -1, 157, -1, + 158, -1, 159, -1, 162, -1, 164, -1, 165, -1, + 167, -1, 169, -1, 171, -1, 175, -1, 176, -1, + 179, -1, 180, -1, 181, -1, 185, -1, 186, -1, + 188, -1, 189, -1, 190, -1, 191, -1, 192, -1, + 193, -1, 194, -1, 196, -1, 197, -1, 198, -1, + 199, -1, 201, -1, 202, -1, 203, -1, 204, -1, + 205, -1, 206, -1, 207, -1, 209, -1, 212, -1, + 213, -1, 214, -1, 215, -1, 216, -1, 222, -1, + 225, -1, 227, -1, 228, -1, 229, -1, 231, -1, + 232, -1, 233, -1, 236, -1, 238, -1, 241, -1, + 242, -1, 243, -1, 244, -1, 245, -1, 246, -1, + 247, -1, 248, -1, 250, -1, 251, -1, 252, -1, + 253, -1, 254, -1, 255, -1, 256, -1, 257, -1, + 258, -1, 259, -1, 260, -1, 261, -1, 262, -1, + 263, -1, 264, -1, 265, -1, 266, -1, 267, -1, + 268, -1, 269, -1, 273, -1, 274, -1, 275, -1, + 278, -1, 279, -1, 281, -1, 284, -1, 286, -1, + 287, -1, 288, -1, 290, -1, 291, -1, 294, -1, + 295, -1, 296, -1, 299, -1, 300, -1, 303, -1, + 306, -1, 307, -1, 308, -1, 309, -1, 310, -1, + 311, -1, 312, -1, 313, -1, 314, -1, 315, -1, + 316, -1, 317, -1, 322, -1, 323, -1, 326, -1, + 327, -1, 329, -1, 330, -1, 331, -1, 333, -1, + 334, -1, 335, -1, 336, -1, 337, -1, 338, -1, + 340, -1, 341, -1, 342, -1, 343, -1, 344, -1, + 346, -1, 347, -1, 348, -1, 349, -1, 351, -1, + 352, -1, 353, -1, 354, -1, 355, -1, 356, -1, + 357, -1, 358, -1, 359, -1, 360, -1, 361, -1, + 362, -1, 363, -1, 365, -1, 366, -1, 368, -1, + 369, -1, 370, -1, 372, -1, 373, -1, 374, -1, + 375, -1, 376, -1, 377, -1, 378, -1, 379, -1, + 380, -1, 381, -1, 382, -1, 383, -1, 384, -1, + 387, -1, 388, -1, 389, -1, 390, -1, 391, -1, + 392, -1, 394, -1, 395, -1, 398, -1, 399, -1, + 401, -1, 403, -1, 404, -1, 405, -1, 406, -1, + 407, -1, 408, -1, 409, -1, 410, -1, 411, -1, + 412, -1, 413, -1, 414, -1, 415, -1, 417, -1, + 421, -1, 422, -1, 424, -1, 426, -1, 427, -1, + 428, -1, 429, -1, 430, -1, 432, -1, 437, -1, + 438, -1, 440, -1, 443, -1, 444, -1, 446, -1, + 447, -1, 448, -1, 449, -1, 450, -1, 453, -1, + 454, -1, 455, -1, 458, -1, 459, -1, 460, -1, + 461, -1, 463, -1, 464, -1, 465, -1, 466, -1, + 467, -1, 470, -1, 472, -1, 474, -1, 475, -1, + 476, -1, 477, -1, 478, -1, 479, -1, 480, -1, + 483, -1, 486, -1, 487, -1, 488, -1, 489, -1, + 490, -1, 491, -1, 503, -1, 504, -1, 505, -1, + 506, -1, 54, -1, 55, -1, 57, -1, 58, -1, + 72, -1, 73, -1, 80, -1, 84, -1, 113, -1, + 116, -1, 153, -1, 160, -1, 166, -1, 177, -1, + 183, -1, 184, -1, 211, -1, 217, -1, 218, -1, + 220, -1, 249, -1, 270, -1, 272, -1, 276, -1, + 283, -1, 285, -1, 301, -1, 305, -1, 324, -1, + 328, -1, 345, -1, 371, -1, 393, -1, 400, -1, + 416, -1, 418, -1, 433, -1, 434, -1, 439, -1, + 441, -1, 445, -1, 468, -1, 469, -1, 492, -1, + 493, -1, 494, -1, 495, -1, 496, -1, 497, -1, + 498, -1, 499, -1, 500, -1, 501, -1, 502, -1, + 43, -1, 47, -1, 50, -1, 56, -1, 82, -1, + 90, -1, 102, -1, 172, -1, 174, -1, 177, -1, + 178, -1, 195, -1, 210, -1, 223, -1, 224, -1, + 226, -1, 237, -1, 239, -1, 249, -1, 271, -1, + 280, -1, 302, -1, 304, -1, 325, -1, 367, -1, + 397, -1, 416, -1, 425, -1, 473, -1, 38, -1, + 43, -1, 47, -1, 50, -1, 56, -1, 82, -1, + 84, -1, 90, -1, 102, -1, 172, -1, 174, -1, + 178, -1, 195, -1, 210, -1, 223, -1, 224, -1, + 226, -1, 237, -1, 239, -1, 271, -1, 280, -1, + 302, -1, 304, -1, 325, -1, 367, -1, 386, -1, + 397, -1, 425, -1, 445, -1, 456, -1, 473, -1, + 38, -1, 43, -1, 47, -1, 50, -1, 54, -1, + 55, -1, 56, -1, 57, -1, 58, -1, 73, -1, + 72, -1, 80, -1, 82, -1, 84, -1, 90, -1, + 102, -1, 113, -1, 116, -1, 153, -1, 160, -1, + 166, -1, 172, -1, 174, -1, 177, -1, 178, -1, + 183, -1, 184, -1, 195, -1, 210, -1, 211, -1, + 218, -1, 220, -1, 217, -1, 223, -1, 224, -1, + 226, -1, 237, -1, 239, -1, 249, -1, 270, -1, + 271, -1, 272, -1, 276, -1, 280, -1, 283, -1, + 285, -1, 302, -1, 301, -1, 304, -1, 305, -1, + 324, -1, 325, -1, 328, -1, 345, -1, 367, -1, + 371, -1, 386, -1, 393, -1, 397, -1, 400, -1, + 416, -1, 418, -1, 425, -1, 433, -1, 434, -1, + 439, -1, 441, -1, 445, -1, 456, -1, 468, -1, + 469, -1, 473, -1, 492, -1, 493, -1, 494, -1, + 495, -1, 496, -1, 497, -1, 498, -1, 499, -1, + 500, -1, 501, -1, 502, -1, 38, -1, 43, -1, + 47, -1, 50, -1, 56, -1, 82, -1, 84, -1, + 90, -1, 102, -1, 172, -1, 174, -1, 177, -1, + 178, -1, 195, -1, 210, -1, 223, -1, 224, -1, + 226, -1, 237, -1, 239, -1, 249, -1, 271, -1, + 280, -1, 302, -1, 304, -1, 325, -1, 367, -1, + 386, -1, 397, -1, 416, -1, 425, -1, 445, -1, + 456, -1, 473, -1, 31, -1, 35, -1, 36, -1, + 37, -1, 39, -1, 40, -1, 41, -1, 42, -1, + 46, -1, 59, -1, 66, -1, 67, -1, 75, -1, + 81, -1, 83, -1, 94, -1, 101, -1, 118, -1, + 120, -1, 127, -1, 128, -1, 133, -1, 134, -1, + 140, -1, 144, -1, 148, -1, 161, -1, 163, -1, + 168, -1, 170, -1, 173, -1, 182, -1, 187, -1, + 200, -1, 208, -1, 219, -1, 221, -1, 230, -1, + 234, -1, 235, -1, 240, -1, 277, -1, 282, -1, + 289, -1, 292, -1, 293, -1, 297, -1, 298, -1, + 318, -1, 319, -1, 320, -1, 321, -1, 332, -1, + 339, -1, 350, -1, 364, -1, 385, -1, 396, -1, + 402, -1, 419, -1, 420, -1, 423, -1, 431, -1, + 435, -1, 436, -1, 442, -1, 451, -1, 452, -1, + 457, -1, 462, -1, 471, -1, 481, -1, 482, -1, + 484, -1, 485, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -2655,145 +2660,145 @@ static const yytype_uint16 yyrline[] = 125, 150, 155, 160, 166, 176, 186, 192, 203, 214, 229, 230, 236, 237, 242, 243, 249, 250, 254, 255, 260, 262, 268, 269, 273, 274, 277, 278, 283, 7, - 16, 25, 46, 47, 50, 54, 7, 14, 22, 9, - 19, 29, 42, 43, 7, 17, 27, 40, 41, 45, - 46, 47, 51, 52, 57, 61, 68, 72, 7, 7, - 14, 31, 51, 55, 65, 69, 75, 76, 9, 17, - 29, 30, 34, 35, 36, 41, 42, 43, 48, 52, - 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, - 97, 101, 105, 112, 113, 117, 118, 119, 7, 16, - 28, 29, 2, 10, 17, 24, 32, 40, 51, 52, - 53, 57, 58, 59, 2, 7, 21, 36, 56, 57, - 84, 85, 86, 87, 88, 89, 93, 94, 99, 104, - 105, 106, 107, 108, 113, 120, 121, 122, 139, 146, - 153, 163, 173, 185, 193, 202, 220, 221, 225, 226, - 230, 239, 262, 276, 283, 288, 290, 292, 294, 297, - 300, 301, 302, 303, 308, 312, 313, 318, 325, 330, - 331, 332, 333, 334, 335, 336, 337, 343, 344, 348, - 353, 360, 367, 374, 386, 387, 388, 389, 393, 398, - 399, 400, 405, 410, 411, 412, 413, 414, 415, 420, - 440, 466, 474, 484, 485, 489, 493, 494, 495, 499, - 503, 511, 512, 517, 518, 519, 523, 531, 532, 537, - 538, 542, 547, 551, 555, 560, 568, 569, 573, 574, - 578, 579, 585, 596, 609, 623, 637, 651, 665, 688, - 692, 699, 703, 711, 716, 723, 733, 734, 735, 736, - 737, 744, 751, 752, 757, 758, 9, 19, 29, 39, - 49, 59, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 95, 96, 97, 98, 99, 100, 105, 106, 111, 112, - 113, 118, 119, 120, 8, 18, 29, 39, 49, 59, - 71, 81, 91, 95, 102, 106, 110, 119, 123, 130, - 131, 135, 139, 7, 1, 30, 49, 61, 62, 63, - 67, 68, 73, 77, 82, 86, 94, 95, 99, 100, - 105, 106, 110, 111, 116, 117, 118, 119, 120, 121, - 122, 123, 128, 136, 140, 145, 146, 151, 155, 160, - 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, - 204, 208, 212, 216, 220, 228, 233, 234, 235, 236, - 237, 243, 247, 47, 48, 52, 53, 54, 72, 73, - 80, 88, 96, 104, 112, 120, 131, 132, 159, 164, - 172, 188, 205, 223, 241, 242, 261, 265, 269, 273, - 277, 287, 298, 308, 317, 328, 339, 351, 366, 384, - 384, 388, 388, 392, 392, 396, 402, 409, 413, 414, - 418, 419, 433, 440, 447, 457, 458, 461, 475, 476, - 480, 481, 485, 486, 490, 491, 492, 496, 507, 515, - 520, 525, 530, 535, 543, 551, 556, 561, 568, 569, - 573, 574, 575, 579, 586, 587, 591, 592, 596, 597, - 598, 602, 603, 607, 608, 624, 625, 628, 637, 648, - 649, 650, 653, 654, 655, 659, 660, 661, 662, 666, - 667, 671, 673, 689, 691, 696, 699, 704, 708, 712, - 719, 723, 727, 731, 738, 743, 750, 751, 755, 760, - 764, 768, 776, 783, 784, 789, 790, 795, 796, 800, - 810, 811, 816, 817, 822, 824, 826, 831, 851, 852, - 854, 859, 860, 864, 865, 868, 869, 894, 895, 900, - 904, 905, 909, 910, 914, 915, 916, 917, 918, 922, - 935, 942, 949, 956, 957, 961, 962, 966, 967, 971, - 972, 976, 977, 981, 982, 986, 997, 998, 999, 1000, - 1004, 1005, 1010, 1011, 1012, 1021, 1027, 1036, 1037, 1050, - 1051, 1055, 1056, 1060, 1061, 1065, 1076, 1083, 1090, 1098, - 1106, 1116, 1124, 1133, 1142, 1151, 1155, 1160, 1165, 1176, - 1190, 1191, 1194, 1195, 1196, 1199, 1207, 1217, 1218, 1219, - 1222, 1230, 1239, 1243, 1250, 1251, 1255, 1264, 1268, 1293, - 1297, 1310, 1324, 1339, 1351, 1364, 1378, 1392, 1405, 1420, - 1439, 1445, 1450, 1456, 1463, 1464, 1472, 1476, 1480, 1486, - 1493, 1498, 1499, 1500, 1501, 1502, 1503, 1507, 1508, 1520, - 1521, 1526, 1533, 1540, 1547, 1579, 1590, 1603, 1608, 1609, - 1612, 1613, 1616, 1617, 1622, 1623, 1628, 1632, 1638, 1659, - 1667, 1681, 1684, 1688, 1688, 1691, 1692, 1694, 1699, 1706, - 1711, 1717, 1722, 1728, 1732, 1739, 1746, 1756, 1757, 1761, - 1763, 1766, 1770, 1771, 1772, 1773, 1774, 1775, 1780, 1800, - 1801, 1802, 1803, 1814, 1828, 1829, 1835, 1840, 1845, 1850, - 1855, 1860, 1865, 1870, 1876, 1882, 1888, 1895, 1917, 1926, - 1930, 1938, 1942, 1950, 1962, 1983, 1987, 1993, 1997, 2010, - 2018, 2028, 2030, 2032, 2034, 2036, 2038, 2043, 2044, 2051, - 2060, 2068, 2077, 2088, 2096, 2097, 2098, 2102, 2102, 2105, - 2105, 2108, 2108, 2111, 2111, 2114, 2114, 2117, 2117, 2120, - 2120, 2123, 2123, 2126, 2126, 2129, 2129, 2132, 2132, 2135, - 2135, 2138, 2138, 2141, 2143, 2145, 2147, 2149, 2151, 2153, - 2155, 2157, 2159, 2161, 2163, 2165, 2167, 2172, 2177, 2183, - 2190, 2195, 2201, 2207, 2238, 2240, 2242, 2250, 2265, 2267, - 2269, 2271, 2273, 2275, 2277, 2279, 2281, 2283, 2285, 2287, - 2289, 2291, 2293, 2295, 2298, 2300, 2302, 2305, 2307, 2309, - 2311, 2313, 2318, 2323, 2330, 2335, 2342, 2347, 2354, 2359, - 2367, 2375, 2383, 2391, 2409, 2417, 2425, 2433, 2441, 2449, - 2457, 2461, 2477, 2485, 2493, 2501, 2509, 2517, 2525, 2529, - 2533, 2537, 2541, 2549, 2557, 2565, 2573, 2593, 2615, 2626, - 2633, 2647, 2655, 2660, 2670, 2679, 2700, 2702, 2704, 2706, + 15, 23, 34, 42, 50, 68, 69, 72, 76, 7, + 14, 22, 9, 19, 29, 42, 43, 7, 17, 27, + 40, 41, 45, 46, 47, 51, 52, 57, 61, 68, + 72, 7, 7, 14, 31, 51, 55, 65, 69, 75, + 76, 9, 17, 29, 30, 34, 35, 36, 41, 42, + 43, 48, 52, 56, 60, 64, 68, 72, 76, 80, + 84, 88, 92, 97, 101, 105, 112, 113, 117, 118, + 119, 7, 16, 28, 29, 2, 10, 17, 24, 32, + 40, 51, 52, 53, 57, 58, 59, 2, 7, 21, + 36, 56, 57, 84, 85, 86, 87, 88, 89, 93, + 94, 99, 104, 105, 106, 107, 108, 113, 120, 121, + 122, 139, 146, 153, 163, 173, 185, 193, 202, 220, + 221, 225, 226, 230, 239, 262, 276, 283, 288, 290, + 292, 294, 297, 300, 301, 302, 303, 308, 312, 313, + 318, 325, 330, 331, 332, 333, 334, 335, 336, 337, + 343, 344, 348, 353, 360, 367, 374, 386, 387, 388, + 389, 393, 398, 399, 400, 405, 410, 411, 412, 413, + 414, 415, 420, 440, 466, 474, 484, 485, 489, 493, + 494, 495, 499, 503, 511, 512, 517, 518, 519, 523, + 531, 532, 537, 538, 542, 547, 551, 555, 560, 568, + 569, 573, 574, 578, 579, 585, 596, 609, 623, 637, + 651, 665, 688, 692, 699, 703, 711, 716, 723, 733, + 734, 735, 736, 737, 744, 751, 752, 757, 758, 9, + 19, 29, 39, 49, 59, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 95, 96, 97, 98, 99, 100, 105, + 106, 111, 112, 113, 118, 119, 120, 8, 18, 29, + 39, 49, 59, 71, 81, 91, 95, 102, 106, 110, + 119, 123, 130, 131, 135, 139, 7, 1, 30, 49, + 61, 62, 63, 67, 68, 73, 77, 82, 86, 94, + 95, 99, 100, 105, 106, 110, 111, 116, 117, 118, + 119, 120, 121, 122, 123, 128, 136, 140, 145, 146, + 151, 155, 160, 164, 168, 172, 176, 180, 184, 188, + 192, 196, 200, 204, 208, 212, 216, 220, 228, 233, + 234, 235, 236, 237, 243, 247, 47, 48, 52, 53, + 54, 72, 73, 80, 88, 96, 104, 112, 120, 131, + 132, 159, 164, 172, 188, 205, 223, 241, 242, 261, + 265, 269, 273, 277, 287, 298, 308, 317, 328, 339, + 351, 366, 384, 384, 388, 388, 392, 392, 396, 402, + 409, 413, 414, 418, 419, 433, 440, 447, 457, 458, + 461, 475, 476, 480, 481, 485, 486, 490, 491, 492, + 496, 507, 515, 520, 525, 530, 535, 543, 551, 556, + 561, 568, 569, 573, 574, 575, 579, 586, 587, 591, + 592, 596, 597, 598, 602, 603, 607, 608, 624, 625, + 628, 637, 648, 649, 650, 653, 654, 655, 659, 660, + 661, 662, 666, 667, 671, 673, 689, 691, 696, 699, + 704, 708, 712, 719, 723, 727, 731, 738, 743, 750, + 751, 755, 760, 764, 768, 776, 783, 784, 789, 790, + 795, 796, 800, 810, 811, 816, 817, 822, 824, 826, + 831, 851, 852, 854, 859, 860, 864, 865, 868, 869, + 894, 895, 900, 904, 905, 909, 910, 914, 915, 916, + 917, 918, 922, 935, 942, 949, 956, 957, 961, 962, + 966, 967, 971, 972, 976, 977, 981, 982, 986, 997, + 998, 999, 1000, 1004, 1005, 1010, 1011, 1012, 1021, 1027, + 1036, 1037, 1050, 1051, 1055, 1056, 1060, 1061, 1065, 1076, + 1083, 1090, 1098, 1106, 1116, 1124, 1133, 1142, 1151, 1155, + 1160, 1165, 1176, 1190, 1191, 1194, 1195, 1196, 1199, 1207, + 1217, 1218, 1219, 1222, 1230, 1239, 1243, 1250, 1251, 1255, + 1264, 1268, 1293, 1297, 1310, 1324, 1339, 1351, 1364, 1378, + 1392, 1405, 1420, 1439, 1445, 1450, 1456, 1463, 1464, 1472, + 1476, 1480, 1486, 1493, 1498, 1499, 1500, 1501, 1502, 1503, + 1507, 1508, 1520, 1521, 1526, 1533, 1540, 1547, 1579, 1590, + 1603, 1608, 1609, 1612, 1613, 1616, 1617, 1622, 1623, 1628, + 1632, 1638, 1659, 1667, 1681, 1684, 1688, 1688, 1691, 1692, + 1694, 1699, 1706, 1711, 1717, 1722, 1728, 1732, 1739, 1746, + 1756, 1757, 1761, 1763, 1766, 1770, 1771, 1772, 1773, 1774, + 1775, 1780, 1800, 1801, 1802, 1803, 1814, 1828, 1829, 1835, + 1840, 1845, 1850, 1855, 1860, 1865, 1870, 1876, 1882, 1888, + 1895, 1917, 1926, 1930, 1938, 1942, 1950, 1962, 1983, 1987, + 1993, 1997, 2010, 2018, 2028, 2030, 2032, 2034, 2036, 2038, + 2043, 2044, 2051, 2060, 2068, 2077, 2088, 2096, 2097, 2098, + 2102, 2102, 2105, 2105, 2108, 2108, 2111, 2111, 2114, 2114, + 2117, 2117, 2120, 2120, 2123, 2123, 2126, 2126, 2129, 2129, + 2132, 2132, 2135, 2135, 2138, 2138, 2141, 2143, 2145, 2147, + 2149, 2151, 2153, 2155, 2157, 2159, 2161, 2163, 2165, 2167, + 2172, 2177, 2183, 2190, 2195, 2201, 2207, 2238, 2240, 2242, + 2250, 2265, 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2281, + 2283, 2285, 2287, 2289, 2291, 2293, 2295, 2298, 2300, 2302, + 2305, 2307, 2309, 2311, 2313, 2318, 2323, 2330, 2335, 2342, + 2347, 2354, 2359, 2367, 2375, 2383, 2391, 2409, 2417, 2425, + 2433, 2441, 2449, 2457, 2465, 2469, 2485, 2493, 2501, 2509, + 2517, 2525, 2533, 2537, 2541, 2545, 2549, 2557, 2565, 2573, + 2581, 2601, 2623, 2634, 2641, 2655, 2663, 2668, 2678, 2687, 2708, 2710, 2712, 2714, 2716, 2718, 2720, 2722, 2724, 2726, - 2728, 2730, 2732, 2734, 2736, 2738, 2740, 2742, 2746, 2750, - 2754, 2768, 2769, 2783, 2784, 2785, 2796, 2820, 2831, 2841, - 2845, 2849, 2856, 2860, 2867, 2874, 2875, 2876, 2877, 2878, - 2879, 2880, 2881, 2892, 2897, 2906, 2912, 2919, 2939, 2943, - 2950, 2957, 2965, 2973, 2984, 3004, 3040, 3051, 3052, 3059, - 3065, 3067, 3069, 3073, 3082, 3087, 3094, 3109, 3116, 3120, - 3124, 3128, 3132, 3142, 3150, 3159, 3181, 3182, 3186, 3187, - 3188, 3192, 3193, 3200, 3201, 3205, 3206, 3211, 3219, 3221, - 3235, 3238, 3265, 3266, 3269, 3270, 3278, 3286, 3294, 3303, - 3313, 3331, 3377, 3386, 3395, 3404, 3413, 3425, 3426, 3427, - 3428, 3429, 3443, 3444, 3447, 3448, 3452, 3462, 3463, 3467, - 3468, 3472, 3479, 3480, 3485, 3486, 3491, 3492, 3495, 3496, - 3497, 3500, 3501, 3504, 3505, 3506, 3507, 3508, 3509, 3510, - 3511, 3512, 3513, 3514, 3515, 3516, 3517, 3520, 3522, 3527, - 3529, 3534, 3536, 3538, 3540, 3542, 3544, 3546, 3548, 3562, - 3564, 3569, 3573, 3580, 3585, 3591, 3595, 3602, 3607, 3614, - 3619, 3627, 3631, 3637, 3641, 3650, 3661, 3662, 3666, 3670, - 3677, 3678, 3679, 3680, 3681, 3682, 3683, 3684, 3685, 3686, - 3687, 3688, 3689, 3690, 3691, 3701, 3705, 3712, 3719, 3720, - 3736, 3740, 3745, 3749, 3764, 3769, 3773, 3776, 3779, 3780, - 3781, 3784, 3791, 3792, 3793, 3803, 3817, 3818, 3822, 3833, - 3834, 3837, 3838, 3842, 3843, 3846, 3852, 3856, 3863, 3871, - 3879, 3887, 3897, 3898, 3903, 3904, 3908, 3909, 3910, 3914, - 3923, 3931, 3939, 3948, 3963, 3964, 3969, 3970, 3980, 3981, - 3985, 3986, 3990, 3991, 3994, 4010, 4018, 4026, 4036, 4037, - 4041, 4045, 4051, 4053, 4058, 4059, 4063, 4064, 4067, 4071, - 4072, 4076, 4077, 4080, 4081, 4082, 4085, 4089, 4090, 4094, - 4095, 4097, 4098, 4099, 4109, 4110, 4114, 4116, 4122, 4123, - 4127, 4128, 4131, 4142, 4145, 4156, 4160, 4164, 4176, 4180, - 4189, 4196, 4234, 4238, 4242, 4246, 4250, 4254, 4258, 4264, - 4281, 4282, 4283, 4286, 4287, 4288, 4291, 4292, 4293, 4296, - 4297, 4300, 4302, 4307, 4308, 4311, 4315, 4316, 7, 18, - 19, 23, 24, 25, 26, 27, 28, 7, 26, 50, - 73, 80, 85, 86, 87, 88, 8, 33, 62, 66, - 67, 72, 73, 78, 79, 83, 84, 89, 90, 7, - 16, 25, 34, 43, 52, 5, 12, 22, 23, 7, - 15, 26, 27, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 7, 19, 33, 9, 16, 26, 33, - 44, 45, 50, 51, 52, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 91, 92, 93, 98, - 99, 104, 108, 116, 117, 122, 123, 124, 130, 135, - 143, 144, 10, 16, 22, 28, 34, 44, 45, 53, - 64, 76, 84, 95, 101, 105, 109, 124, 131, 132, - 133, 137, 138, 7, 17, 26, 35, 46, 47, 49, - 50, 53, 54, 55, 8, 22, 36, 48, 56, 70, - 71, 72, 73, 74, 87, 88, 93, 94, 98, 99, - 7, 18, 31, 35, 42, 53, 54, 60, 61, 9, - 19, 7, 16, 25, 37, 44, 51, 60, 61, 65, - 66, 2, 7, 12, 17, 22, 31, 38, 48, 49, - 56, 3, 10, 17, 24, 31, 38, 45, 52, 61, - 61, 63, 63, 65, 65, 67, 68, 6, 8, 21, - 34, 47, 65, 87, 88, 89, 90, 11, 24, 37, - 54, 55, 56, 61, 74, 74, 74, 74, 74, 74, + 2728, 2730, 2732, 2734, 2736, 2738, 2740, 2742, 2744, 2746, + 2748, 2750, 2754, 2758, 2762, 2776, 2777, 2791, 2792, 2793, + 2804, 2828, 2839, 2849, 2853, 2857, 2864, 2868, 2875, 2882, + 2883, 2884, 2885, 2886, 2887, 2888, 2889, 2900, 2905, 2914, + 2920, 2927, 2947, 2951, 2958, 2965, 2973, 2981, 2992, 3012, + 3048, 3059, 3060, 3067, 3073, 3075, 3077, 3081, 3090, 3095, + 3102, 3117, 3124, 3128, 3132, 3136, 3140, 3150, 3159, 3181, + 3182, 3186, 3187, 3188, 3192, 3193, 3200, 3201, 3205, 3206, + 3211, 3219, 3221, 3235, 3238, 3265, 3266, 3269, 3270, 3278, + 3286, 3294, 3303, 3313, 3331, 3377, 3386, 3395, 3404, 3413, + 3425, 3426, 3427, 3428, 3429, 3443, 3444, 3447, 3448, 3452, + 3462, 3463, 3467, 3468, 3472, 3479, 3480, 3485, 3486, 3491, + 3492, 3495, 3496, 3497, 3500, 3501, 3504, 3505, 3506, 3507, + 3508, 3509, 3510, 3511, 3512, 3513, 3514, 3515, 3516, 3517, + 3520, 3522, 3527, 3529, 3534, 3536, 3538, 3540, 3542, 3544, + 3546, 3548, 3562, 3564, 3569, 3573, 3580, 3585, 3591, 3595, + 3602, 3607, 3614, 3619, 3627, 3631, 3637, 3641, 3650, 3661, + 3662, 3666, 3670, 3677, 3678, 3679, 3680, 3681, 3682, 3683, + 3684, 3685, 3686, 3687, 3688, 3689, 3690, 3691, 3701, 3705, + 3712, 3719, 3720, 3736, 3740, 3745, 3749, 3764, 3769, 3773, + 3776, 3779, 3780, 3781, 3784, 3791, 3792, 3793, 3803, 3817, + 3818, 3822, 3833, 3834, 3837, 3838, 3846, 3852, 3856, 3863, + 3871, 3879, 3887, 3897, 3898, 3903, 3904, 3908, 3909, 3910, + 3914, 3923, 3931, 3939, 3948, 3963, 3964, 3969, 3970, 3980, + 3981, 3985, 3986, 3990, 3991, 3994, 4010, 4018, 4026, 4036, + 4037, 4041, 4045, 4051, 4053, 4058, 4059, 4063, 4064, 4067, + 4071, 4072, 4076, 4077, 4080, 4081, 4082, 4085, 4089, 4090, + 4094, 4095, 4097, 4098, 4099, 4109, 4110, 4114, 4116, 4122, + 4123, 4127, 4128, 4131, 4142, 4145, 4156, 4160, 4164, 4176, + 4180, 4189, 4196, 4234, 4238, 4242, 4246, 4250, 4254, 4258, + 4264, 4281, 4282, 4283, 4286, 4287, 4288, 4291, 4292, 4293, + 4296, 4297, 4300, 4302, 4307, 4308, 4311, 4315, 4316, 7, + 18, 19, 23, 24, 25, 26, 27, 28, 7, 26, + 50, 73, 80, 85, 86, 87, 88, 8, 33, 62, + 66, 67, 72, 73, 78, 79, 83, 84, 89, 90, + 7, 16, 25, 34, 43, 52, 5, 12, 22, 23, + 7, 15, 26, 27, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 7, 19, 33, 9, 16, 26, + 33, 44, 45, 50, 51, 52, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 91, 92, 93, + 98, 99, 104, 108, 116, 117, 122, 123, 124, 130, + 135, 143, 144, 10, 16, 22, 28, 34, 44, 45, + 53, 64, 76, 84, 95, 101, 105, 109, 124, 131, + 132, 133, 137, 138, 7, 17, 26, 35, 46, 47, + 49, 50, 53, 54, 55, 8, 22, 36, 48, 56, + 70, 71, 72, 73, 74, 87, 88, 93, 94, 98, + 99, 7, 18, 31, 35, 42, 53, 54, 60, 61, + 9, 19, 7, 16, 25, 37, 44, 51, 60, 61, + 65, 66, 2, 7, 12, 17, 22, 31, 38, 48, + 49, 56, 3, 10, 17, 24, 31, 38, 45, 52, + 61, 61, 63, 63, 65, 65, 67, 68, 6, 8, + 21, 34, 47, 65, 87, 88, 89, 90, 11, 24, + 37, 54, 55, 56, 61, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, @@ -2826,18 +2831,18 @@ static const yytype_uint16 yyrline[] = 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, + 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, + 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, + 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, @@ -2845,18 +2850,18 @@ static const yytype_uint16 yyrline[] = 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, + 78, 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80 + 80, 80, 80, 80, 80, 80, 80 }; #endif @@ -2867,22 +2872,23 @@ static const char *const yytname[] = { "$end", "error", "$undefined", "IDENT", "FCONST", "SCONST", "BCONST", "XCONST", "Op", "ICONST", "PARAM", "TYPECAST", "DOT_DOT", "COLON_EQUALS", - "EQUALS_GREATER", "INTEGER_DIVISION", "POWER_OF", "LAMBDA_ARROW", - "DOUBLE_ARROW", "LESS_EQUALS", "GREATER_EQUALS", "NOT_EQUALS", "ABORT_P", - "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", - "ALL", "ALSO", "ALTER", "ALWAYS", "ANALYSE", "ANALYZE", "AND", "ANTI", - "ANY", "ARRAY", "AS", "ASC_P", "ASOF", "ASSERTION", "ASSIGNMENT", - "ASYMMETRIC", "AT", "ATTACH", "ATTRIBUTE", "AUTHORIZATION", "BACKWARD", - "BEFORE", "BEGIN_P", "BETWEEN", "BIGINT", "BINARY", "BIT", "BOOLEAN_P", - "BOTH", "BY", "CACHE", "CALL_P", "CALLED", "CASCADE", "CASCADED", "CASE", - "CAST", "CATALOG_P", "CENTURIES_P", "CENTURY_P", "CHAIN", "CHAR_P", - "CHARACTER", "CHARACTERISTICS", "CHECK_P", "CHECKPOINT", "CLASS", - "CLOSE", "CLUSTER", "COALESCE", "COLLATE", "COLLATION", "COLUMN", - "COLUMNS", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", "COMPRESSION", - "CONCURRENTLY", "CONFIGURATION", "CONFLICT", "CONNECTION", "CONSTRAINT", - "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", "COPY", "COST", - "CREATE_P", "CROSS", "CSV", "CUBE", "CURRENT_P", "CURSOR", "CYCLE", - "DATA_P", "DATABASE", "DAY_P", "DAYS_P", "DEALLOCATE", "DEC", "DECADE_P", + "EQUALS_GREATER", "INTEGER_DIVISION", "POWER_OF", "SINGLE_ARROW", + "DOUBLE_ARROW", "SINGLE_COLON", "LESS_EQUALS", "GREATER_EQUALS", + "NOT_EQUALS", "ABORT_P", "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", + "ADMIN", "AFTER", "AGGREGATE", "ALL", "ALSO", "ALTER", "ALWAYS", + "ANALYSE", "ANALYZE", "AND", "ANTI", "ANY", "ARRAY", "AS", "ASC_P", + "ASOF", "ASSERTION", "ASSIGNMENT", "ASYMMETRIC", "AT", "ATTACH", + "ATTRIBUTE", "AUTHORIZATION", "BACKWARD", "BEFORE", "BEGIN_P", "BETWEEN", + "BIGINT", "BINARY", "BIT", "BOOLEAN_P", "BOTH", "BY", "CACHE", "CALL_P", + "CALLED", "CASCADE", "CASCADED", "CASE", "CAST", "CATALOG_P", + "CENTURIES_P", "CENTURY_P", "CHAIN", "CHAR_P", "CHARACTER", + "CHARACTERISTICS", "CHECK_P", "CHECKPOINT", "CLASS", "CLOSE", "CLUSTER", + "COALESCE", "COLLATE", "COLLATION", "COLUMN", "COLUMNS", "COMMENT", + "COMMENTS", "COMMIT", "COMMITTED", "COMPRESSION", "CONCURRENTLY", + "CONFIGURATION", "CONFLICT", "CONNECTION", "CONSTRAINT", "CONSTRAINTS", + "CONTENT_P", "CONTINUE_P", "CONVERSION_P", "COPY", "COST", "CREATE_P", + "CROSS", "CSV", "CUBE", "CURRENT_P", "CURSOR", "CYCLE", "DATA_P", + "DATABASE", "DAY_P", "DAYS_P", "DEALLOCATE", "DEC", "DECADE_P", "DECADES_P", "DECIMAL_P", "DECLARE", "DEFAULT", "DEFAULTS", "DEFERRABLE", "DEFERRED", "DEFINER", "DELETE_P", "DELIMITER", "DELIMITERS", "DEPENDS", "DESC_P", "DESCRIBE", "DETACH", "DICTIONARY", "DISABLE_P", "DISCARD", @@ -2901,10 +2907,10 @@ static const char *const yytname[] = "INITIALLY", "INLINE_P", "INNER_P", "INOUT", "INPUT_P", "INSENSITIVE", "INSERT", "INSTALL", "INSTEAD", "INT_P", "INTEGER", "INTERSECT", "INTERVAL", "INTO", "INVOKER", "IS", "ISNULL", "ISOLATION", "JOIN", - "JSON", "KEY", "LABEL", "LANGUAGE", "LARGE_P", "LAST_P", "LATERAL_P", - "LEADING", "LEAKPROOF", "LEFT", "LEVEL", "LIKE", "LIMIT", "LISTEN", - "LOAD", "LOCAL", "LOCATION", "LOCK_P", "LOCKED", "LOGGED", "MACRO", - "MAP", "MAPPING", "MATCH", "MATERIALIZED", "MAXVALUE", "METHOD", + "JSON", "KEY", "LABEL", "LAMBDA", "LANGUAGE", "LARGE_P", "LAST_P", + "LATERAL_P", "LEADING", "LEAKPROOF", "LEFT", "LEVEL", "LIKE", "LIMIT", + "LISTEN", "LOAD", "LOCAL", "LOCATION", "LOCK_P", "LOCKED", "LOGGED", + "MACRO", "MAP", "MAPPING", "MATCH", "MATERIALIZED", "MAXVALUE", "METHOD", "MICROSECOND_P", "MICROSECONDS_P", "MILLENNIA_P", "MILLENNIUM_P", "MILLISECOND_P", "MILLISECONDS_P", "MINUTE_P", "MINUTES_P", "MINVALUE", "MODE", "MONTH_P", "MONTHS_P", "MOVE", "NAME_P", "NAMES", "NATIONAL", @@ -2947,22 +2953,22 @@ static const char *const yytname[] = "XMLPI", "XMLROOT", "XMLSERIALIZE", "XMLTABLE", "YEAR_P", "YEARS_P", "YES_P", "ZONE", "NOT_LA", "NULLS_LA", "WITH_LA", "'<'", "'>'", "'='", "POSTFIXOP", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", - "']'", "'('", "')'", "'.'", "';'", "','", "':'", "'?'", "'$'", "'#'", - "'{'", "'}'", "$accept", "stmtblock", "stmtmulti", "stmt", - "AlterTableStmt", "alter_identity_column_option_list", - "alter_column_default", "alter_identity_column_option", - "alter_generic_option_list", "qualify_list", "qualify_el", - "qualified_column", "qualifiedColumnDef", "alter_table_cmd", - "alter_using", "alter_generic_option_elem", "alter_table_cmds", - "alter_generic_options", "opt_set_data", "DeallocateStmt", - "qualified_name", "ColId", "ColIdOrString", "Sconst", "indirection", - "indirection_el", "attr_name", "ColLabel", "RenameStmt", "opt_column", - "InsertStmt", "insert_rest", "insert_target", "opt_by_name_or_position", - "opt_conf_expr", "opt_with_clause", "insert_column_item", "set_clause", - "opt_or_action", "opt_on_conflict", "index_elem", "returning_clause", - "override_kind", "set_target_list", "opt_collate", "opt_class", - "insert_column_list", "set_clause_list", "set_clause_list_opt_comma", - "index_params", "set_target", "CreateTypeStmt", "opt_enum_val_list", + "']'", "'('", "')'", "'.'", "';'", "','", "'?'", "'$'", "'#'", "'{'", + "'}'", "$accept", "stmtblock", "stmtmulti", "stmt", "AlterTableStmt", + "alter_identity_column_option_list", "alter_column_default", + "alter_identity_column_option", "alter_generic_option_list", + "qualify_list", "qualify_el", "qualified_column", "qualifiedColumnDef", + "alter_table_cmd", "alter_using", "alter_generic_option_elem", + "alter_table_cmds", "alter_generic_options", "opt_set_data", + "DeallocateStmt", "qualified_name", "ColId", "ColIdOrString", "Sconst", + "indirection", "indirection_el", "attr_name", "ColLabel", "RenameStmt", + "opt_column", "InsertStmt", "insert_rest", "insert_target", + "opt_by_name_or_position", "opt_conf_expr", "opt_with_clause", + "insert_column_item", "set_clause", "opt_or_action", "opt_on_conflict", + "index_elem", "returning_clause", "override_kind", "set_target_list", + "opt_collate", "opt_class", "insert_column_list", "set_clause_list", + "set_clause_list_opt_comma", "index_params", "set_target", + "CreateTypeStmt", "create_type_value", "opt_enum_val_list", "enum_val_list", "PragmaStmt", "CreateSeqStmt", "OptSeqOptList", "CreateSecretStmt", "opt_secret_name", "opt_persist", "opt_storage_specifier", "create_secret_generic_opt_arg", @@ -3041,9 +3047,8 @@ static const char *const yytname[] = "millennium_keyword", "opt_interval", "a_expr", "b_expr", "c_expr", "d_expr", "indirection_expr_or_a_expr", "param_expr", "indirection_expr", "list_expr", "struct_expr", "map_expr", "func_application", "func_expr", - "func_expr_windowless", "func_expr_common_subexpr", - "list_comprehension_lhs", "list_comprehension", "within_group_clause", - "filter_clause", "export_clause", "window_clause", + "func_expr_windowless", "func_expr_common_subexpr", "list_comprehension", + "within_group_clause", "filter_clause", "export_clause", "window_clause", "window_definition_list", "window_definition", "over_clause", "window_specification", "opt_existing_window_name", "opt_partition_clause", "opt_frame_clause", "frame_extent", @@ -3057,10 +3062,9 @@ static const char *const yytname[] = "extract_list", "extract_arg", "overlay_list", "overlay_placing", "position_list", "substr_list", "substr_from", "substr_for", "trim_list", "in_expr", "case_expr", "when_clause_list", "when_clause", - "case_default", "case_arg", "columnrefList", "columnref", - "columnref_opt_indirection", "opt_slice_bound", "opt_indirection", - "opt_func_arguments", "extended_indirection_el", - "opt_extended_indirection", "opt_asymmetric", + "case_default", "case_arg", "columnref", "columnref_opt_indirection", + "opt_slice_bound", "opt_indirection", "opt_func_arguments", + "extended_indirection_el", "opt_extended_indirection", "opt_asymmetric", "opt_target_list_opt_comma", "target_list", "target_list_opt_comma", "target_el", "except_list", "except_name", "except_name_list", "except_name_list_opt_comma", "opt_except_list", "replace_list_el", @@ -3150,175 +3154,175 @@ static const yytype_uint16 yytoknum[] = 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, - 755, 756, 757, 758, 759, 760, 761, 762, 60, 62, - 61, 763, 43, 45, 42, 47, 37, 94, 764, 91, - 93, 40, 41, 46, 59, 44, 58, 63, 36, 35, - 123, 125 + 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, + 60, 62, 61, 765, 43, 45, 42, 47, 37, 94, + 766, 91, 93, 40, 41, 46, 59, 44, 63, 36, + 35, 123, 125 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 532, 533, 534, 534, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 536, 536, 536, - 536, 536, 536, 536, 536, 537, 537, 538, 538, 539, - 539, 539, 539, 540, 540, 541, 541, 542, 543, 543, - 544, 544, 545, 545, 545, 545, 545, 545, 545, 545, - 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, - 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, - 545, 545, 545, 545, 545, 546, 546, 547, 547, 547, - 547, 548, 548, 549, 550, 550, 550, 551, 551, 551, - 551, 552, 552, 553, 553, 553, 554, 554, 555, 556, - 556, 557, 558, 559, 559, 559, 559, 560, 560, 560, - 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, - 561, 561, 562, 563, 563, 563, 563, 563, 564, 564, - 565, 565, 565, 566, 566, 566, 567, 567, 568, 569, - 569, 570, 570, 570, 571, 571, 571, 572, 572, 572, - 573, 573, 574, 574, 575, 575, 576, 576, 577, 577, - 578, 578, 579, 579, 580, 580, 581, 581, 582, 583, - 583, 583, 584, 584, 585, 585, 586, 586, 586, 587, - 587, 587, 588, 588, 589, 589, 589, 590, 590, 591, - 591, 591, 592, 592, 593, 594, 595, 595, 596, 597, - 597, 597, 598, 598, 599, 599, 600, 600, 601, 601, - 602, 602, 603, 603, 603, 604, 604, 604, 604, 605, - 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, - 605, 605, 605, 606, 606, 607, 607, 607, 608, 608, - 609, 609, 610, 610, 610, 610, 610, 610, 611, 611, - 611, 612, 612, 612, 613, 614, 614, 614, 615, 615, - 616, 616, 616, 616, 616, 616, 617, 617, 618, 619, - 619, 619, 619, 619, 620, 620, 620, 620, 621, 621, - 621, 621, 621, 621, 621, 621, 622, 622, 623, 623, - 624, 624, 624, 625, 626, 627, 627, 627, 627, 627, - 628, 628, 628, 628, 629, 630, 630, 631, 631, 632, - 632, 632, 632, 632, 632, 632, 632, 633, 633, 634, - 635, 635, 635, 635, 636, 636, 636, 636, 637, 638, - 638, 638, 639, 640, 640, 640, 640, 640, 640, 641, - 642, 643, 643, 644, 644, 645, 646, 646, 646, 647, - 647, 648, 648, 649, 649, 649, 650, 651, 651, 652, - 652, 653, 654, 654, 654, 654, 655, 655, 656, 656, - 657, 657, 657, 658, 658, 658, 658, 658, 658, 659, - 659, 660, 660, 660, 660, 661, 662, 662, 662, 662, - 662, 662, 662, 662, 663, 663, 664, 664, 664, 664, - 664, 664, 665, 665, 665, 665, 665, 665, 665, 665, - 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, - 666, 666, 666, 666, 666, 666, 667, 667, 668, 668, - 668, 669, 669, 669, 670, 670, 670, 670, 670, 670, - 671, 672, 673, 673, 674, 674, 675, 676, 676, 677, - 677, 678, 678, 679, 680, 680, 680, 681, 681, 681, - 682, 682, 683, 683, 684, 684, 685, 685, 686, 686, - 687, 687, 688, 688, 689, 689, 689, 689, 689, 689, - 689, 689, 690, 691, 691, 692, 692, 693, 693, 694, - 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, - 694, 694, 694, 694, 694, 695, 696, 696, 696, 696, - 696, 697, 697, 698, 698, 699, 699, 699, 700, 700, - 700, 700, 700, 700, 700, 700, 701, 701, 702, 702, - 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, - 703, 703, 703, 703, 703, 703, 703, 703, 703, 704, - 704, 705, 705, 706, 706, 707, 707, 707, 708, 708, - 709, 709, 710, 710, 710, 711, 711, 712, 713, 713, - 714, 714, 715, 715, 716, 716, 716, 717, 717, 718, - 718, 718, 718, 718, 718, 718, 718, 718, 719, 719, - 720, 720, 720, 721, 722, 722, 723, 723, 724, 724, - 724, 725, 725, 726, 726, 727, 727, 728, 728, 729, - 729, 729, 730, 730, 730, 731, 731, 731, 731, 732, - 732, 733, 733, 733, 733, 734, 734, 735, 735, 735, - 736, 736, 736, 736, 737, 737, 738, 738, 739, 739, - 739, 739, 740, 741, 741, 742, 742, 743, 743, 744, - 745, 745, 746, 746, 746, 746, 746, 747, 748, 748, - 748, 749, 749, 750, 750, 751, 751, 752, 752, 752, - 753, 753, 754, 754, 755, 755, 755, 755, 755, 756, - 757, 758, 759, 760, 760, 761, 761, 762, 762, 763, - 763, 764, 764, 765, 765, 766, 767, 767, 767, 767, - 768, 768, 769, 769, 769, 770, 770, 771, 771, 772, - 772, 773, 773, 774, 774, 775, 776, 776, 776, 776, - 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, - 777, 777, 778, 778, 778, 779, 779, 780, 780, 780, - 781, 781, 782, 782, 783, 783, 784, 785, 785, 786, - 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, - 787, 787, 787, 787, 788, 788, 789, 789, 789, 789, - 789, 790, 790, 790, 790, 790, 790, 791, 791, 792, - 792, 793, 793, 793, 793, 794, 794, 795, 796, 796, - 797, 797, 798, 798, 799, 799, 800, 800, 801, 802, - 802, 803, 803, 804, 804, 805, 805, 806, 806, 806, - 806, 806, 806, 806, 806, 806, 806, 807, 807, 808, - 808, 808, 809, 809, 809, 809, 809, 809, 809, 810, - 810, 810, 810, 811, 812, 812, 813, 813, 813, 813, - 813, 813, 813, 813, 813, 813, 813, 814, 814, 815, - 815, 816, 816, 817, 818, 819, 819, 820, 820, 821, - 822, 823, 823, 823, 823, 823, 823, 824, 824, 825, - 825, 825, 825, 826, 827, 827, 827, 828, 828, 829, - 829, 830, 830, 831, 831, 832, 832, 833, 833, 834, - 834, 835, 835, 836, 836, 837, 837, 838, 838, 839, - 839, 840, 840, 841, 841, 841, 841, 841, 841, 841, - 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, - 841, 841, 841, 841, 842, 842, 842, 842, 842, 842, - 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, - 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, - 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, - 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, - 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, - 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, - 842, 842, 842, 842, 842, 842, 843, 843, 843, 843, - 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, + 0, 533, 534, 535, 535, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 537, 537, 537, + 537, 537, 537, 537, 537, 538, 538, 539, 539, 540, + 540, 540, 540, 541, 541, 542, 542, 543, 544, 544, + 545, 545, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 547, 547, 548, 548, 548, + 548, 549, 549, 550, 551, 551, 551, 552, 552, 552, + 552, 553, 553, 554, 554, 554, 555, 555, 556, 557, + 557, 558, 559, 560, 560, 560, 560, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 562, 562, 563, 564, 564, 564, 564, 564, 565, 565, + 566, 566, 566, 567, 567, 567, 568, 568, 569, 570, + 570, 571, 571, 571, 572, 572, 572, 573, 573, 573, + 574, 574, 575, 575, 576, 576, 577, 577, 578, 578, + 579, 579, 580, 580, 581, 581, 582, 582, 583, 584, + 584, 584, 585, 585, 585, 586, 586, 587, 587, 588, + 588, 588, 589, 589, 589, 590, 590, 591, 591, 591, + 592, 592, 593, 593, 593, 594, 594, 595, 596, 597, + 597, 598, 599, 599, 599, 600, 600, 601, 601, 602, + 602, 603, 603, 604, 604, 605, 605, 605, 606, 606, + 606, 606, 607, 607, 607, 607, 607, 607, 607, 607, + 607, 607, 607, 607, 607, 607, 608, 608, 609, 609, + 609, 610, 610, 611, 611, 612, 612, 612, 612, 612, + 612, 613, 613, 613, 614, 614, 614, 615, 616, 616, + 616, 617, 617, 618, 618, 618, 618, 618, 618, 619, + 619, 620, 621, 621, 621, 621, 621, 622, 622, 622, + 622, 623, 623, 623, 623, 623, 623, 623, 623, 624, + 624, 625, 625, 626, 626, 626, 627, 628, 629, 629, + 629, 629, 629, 630, 630, 630, 630, 631, 632, 632, + 633, 633, 634, 634, 634, 634, 634, 634, 634, 634, + 635, 635, 636, 637, 637, 637, 637, 638, 638, 638, + 638, 639, 640, 640, 640, 641, 642, 642, 642, 642, + 642, 642, 643, 644, 645, 645, 646, 646, 647, 648, + 648, 648, 649, 649, 650, 650, 651, 651, 651, 652, + 653, 653, 654, 654, 655, 656, 656, 656, 656, 657, + 657, 658, 658, 659, 659, 659, 660, 660, 660, 660, + 660, 660, 661, 661, 662, 662, 662, 662, 663, 664, + 664, 664, 664, 664, 664, 664, 664, 665, 665, 666, + 666, 666, 666, 666, 666, 667, 667, 667, 667, 667, + 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, + 667, 667, 667, 668, 668, 668, 668, 668, 668, 669, + 669, 670, 670, 670, 671, 671, 671, 672, 672, 672, + 672, 672, 672, 673, 674, 675, 675, 676, 676, 677, + 678, 678, 679, 679, 680, 680, 681, 682, 682, 682, + 683, 683, 683, 684, 684, 685, 685, 686, 686, 687, + 687, 688, 688, 689, 689, 690, 690, 691, 691, 691, + 691, 691, 691, 691, 691, 692, 693, 693, 694, 694, + 695, 695, 696, 696, 696, 696, 696, 696, 696, 696, + 696, 696, 696, 696, 696, 696, 696, 696, 697, 698, + 698, 698, 698, 698, 699, 699, 700, 700, 701, 701, + 701, 702, 702, 702, 702, 702, 702, 702, 702, 703, + 703, 704, 704, 705, 705, 705, 705, 705, 705, 705, + 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, + 705, 705, 706, 706, 707, 707, 708, 708, 709, 709, + 709, 710, 710, 711, 711, 712, 712, 712, 713, 713, + 714, 715, 715, 716, 716, 717, 717, 718, 718, 718, + 719, 719, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 721, 721, 722, 722, 722, 723, 724, 724, 725, + 725, 726, 726, 726, 727, 727, 728, 728, 729, 729, + 730, 730, 731, 731, 731, 732, 732, 732, 733, 733, + 733, 733, 734, 734, 735, 735, 735, 735, 736, 736, + 737, 737, 737, 738, 738, 738, 738, 739, 739, 740, + 740, 741, 741, 741, 741, 742, 743, 743, 744, 744, + 745, 745, 746, 747, 747, 748, 748, 748, 748, 748, + 749, 750, 750, 750, 751, 751, 752, 752, 753, 753, + 754, 754, 754, 755, 755, 756, 756, 757, 757, 757, + 757, 757, 758, 759, 760, 761, 762, 762, 763, 763, + 764, 764, 765, 765, 766, 766, 767, 767, 768, 769, + 769, 769, 769, 770, 770, 771, 771, 771, 772, 772, + 773, 773, 774, 774, 775, 775, 776, 776, 777, 778, + 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, + 778, 778, 778, 779, 779, 780, 780, 780, 781, 781, + 782, 782, 782, 783, 783, 784, 784, 785, 785, 786, + 787, 787, 788, 788, 788, 788, 788, 788, 788, 788, + 788, 788, 788, 789, 789, 789, 789, 790, 790, 791, + 791, 791, 791, 791, 792, 792, 792, 792, 792, 792, + 793, 793, 794, 794, 795, 795, 795, 795, 796, 796, + 797, 798, 798, 799, 799, 800, 800, 801, 801, 802, + 802, 803, 804, 804, 805, 805, 806, 806, 807, 807, + 808, 808, 808, 808, 808, 808, 808, 808, 808, 808, + 809, 809, 810, 810, 810, 811, 811, 811, 811, 811, + 811, 811, 812, 812, 812, 812, 813, 814, 814, 815, + 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, + 816, 816, 817, 817, 818, 818, 819, 820, 821, 821, + 822, 822, 823, 824, 825, 825, 825, 825, 825, 825, + 826, 826, 827, 827, 827, 827, 828, 829, 829, 829, + 830, 830, 831, 831, 832, 832, 833, 833, 834, 834, + 835, 835, 836, 836, 837, 837, 838, 838, 839, 839, + 840, 840, 841, 841, 842, 842, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, - 843, 844, 844, 845, 845, 845, 845, 845, 845, 846, - 846, 846, 847, 847, 847, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 849, 850, 851, 852, 852, - 852, 852, 852, 852, 852, 853, 853, 854, 854, 855, - 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, - 855, 855, 855, 856, 857, 857, 858, 858, 859, 859, - 859, 860, 860, 861, 861, 862, 862, 863, 864, 864, - 864, 865, 866, 866, 867, 867, 868, 868, 868, 868, - 869, 869, 870, 870, 870, 870, 870, 871, 871, 871, - 871, 871, 872, 872, 873, 873, 874, 875, 875, 876, - 876, 877, 878, 878, 879, 879, 880, 880, 881, 881, - 881, 882, 882, 883, 883, 883, 883, 883, 883, 883, - 883, 883, 883, 883, 883, 883, 883, 884, 884, 885, - 885, 886, 886, 886, 886, 886, 886, 886, 886, 887, - 887, 888, 888, 889, 889, 890, 890, 891, 891, 892, - 892, 893, 893, 894, 894, 894, 895, 895, 896, 896, - 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, - 897, 897, 897, 897, 897, 898, 898, 899, 900, 900, - 901, 901, 901, 901, 901, 901, 902, 903, 904, 904, - 904, 905, 905, 905, 905, 906, 907, 907, 908, 909, - 909, 910, 910, 911, 911, 912, 913, 913, 557, 557, - 557, 557, 914, 914, 915, 915, 916, 916, 916, 917, - 917, 917, 917, 917, 918, 918, 919, 919, 920, 920, - 921, 921, 922, 922, 923, 923, 923, 923, 924, 924, - 925, 925, 926, 926, 927, 927, 928, 928, 929, 930, - 930, 931, 931, 932, 932, 932, 933, 934, 934, 935, - 935, 936, 936, 936, 937, 937, 938, 938, 939, 939, - 940, 940, 941, 942, 942, 943, 943, 943, 943, 943, - 943, 943, 943, 943, 943, 943, 943, 943, 943, 944, - 945, 945, 945, 946, 946, 946, 947, 947, 947, 948, - 948, 949, 949, 950, 950, 951, 952, 952, 953, 954, - 954, 955, 955, 955, 955, 955, 955, 956, 956, 956, - 957, 957, 958, 958, 958, 958, 959, 959, 960, 961, - 961, 962, 962, 963, 963, 964, 964, 965, 965, 966, - 966, 966, 966, 966, 966, 967, 967, 968, 968, 969, - 969, 970, 970, 971, 971, 971, 971, 971, 971, 971, - 971, 971, 971, 972, 972, 973, 974, 974, 974, 974, - 975, 975, 976, 976, 976, 977, 977, 977, 977, 977, + 843, 843, 843, 843, 843, 843, 843, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 846, 846, 847, 847, 847, + 847, 847, 847, 848, 848, 848, 849, 849, 849, 850, + 850, 850, 850, 850, 850, 850, 850, 850, 850, 851, + 852, 853, 854, 854, 854, 854, 854, 854, 854, 855, + 855, 856, 856, 857, 857, 857, 857, 857, 857, 857, + 857, 857, 857, 857, 857, 857, 857, 858, 858, 859, + 859, 860, 860, 860, 861, 861, 862, 862, 863, 863, + 864, 865, 865, 865, 866, 867, 867, 868, 868, 869, + 869, 869, 869, 870, 870, 871, 871, 871, 871, 871, + 872, 872, 872, 872, 872, 873, 873, 874, 874, 875, + 876, 876, 877, 877, 878, 879, 879, 880, 880, 881, + 881, 882, 882, 882, 883, 883, 884, 884, 884, 884, + 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, + 885, 885, 886, 886, 887, 887, 887, 887, 887, 887, + 887, 887, 888, 888, 889, 889, 890, 890, 891, 891, + 892, 892, 893, 893, 894, 894, 895, 895, 895, 896, + 896, 897, 897, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 898, 898, 898, 899, 899, + 900, 901, 901, 902, 902, 902, 902, 902, 902, 903, + 904, 905, 905, 905, 906, 906, 906, 906, 907, 908, + 908, 909, 910, 910, 911, 911, 912, 913, 913, 558, + 558, 558, 558, 914, 914, 915, 915, 916, 916, 916, + 917, 917, 917, 917, 917, 918, 918, 919, 919, 920, + 920, 921, 921, 922, 922, 923, 923, 923, 923, 924, + 924, 925, 925, 926, 926, 927, 927, 928, 928, 929, + 930, 930, 931, 931, 932, 932, 932, 933, 934, 934, + 935, 935, 936, 936, 936, 937, 937, 938, 938, 939, + 939, 940, 940, 941, 942, 942, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, + 944, 945, 945, 945, 946, 946, 946, 947, 947, 947, + 948, 948, 949, 949, 950, 950, 951, 952, 952, 953, + 954, 954, 955, 955, 955, 955, 955, 955, 956, 956, + 956, 957, 957, 958, 958, 958, 958, 959, 959, 960, + 961, 961, 962, 962, 963, 963, 964, 964, 965, 965, + 966, 966, 966, 966, 966, 966, 967, 967, 968, 968, + 969, 969, 970, 970, 971, 971, 971, 971, 971, 971, + 971, 971, 971, 971, 972, 972, 973, 974, 974, 974, + 974, 975, 975, 976, 976, 976, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, - 977, 977, 977, 977, 977, 977, 978, 978, 978, 979, - 979, 980, 980, 981, 981, 982, 982, 982, 982, 983, - 984, 984, 985, 985, 985, 985, 985, 986, 986, 986, - 986, 987, 987, 988, 989, 989, 989, 989, 989, 989, - 989, 990, 990, 991, 991, 991, 991, 992, 992, 993, - 993, 994, 994, 994, 995, 995, 995, 995, 995, 996, - 996, 996, 996, 996, 997, 997, 998, 998, 999, 999, - 1000, 1000, 1001, 1001, 1001, 1002, 1002, 1003, 1003, 1004, - 1004, 1005, 1005, 1005, 1006, 1006, 1006, 1007, 1007, 1008, - 1008, 1009, 1009, 1009, 1009, 1009, 1010, 1010, 1011, 1011, - 1011, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1013, - 1013, 1014, 1014, 1015, 1015, 1016, 1016, 1017, 1018, 1018, - 1018, 1018, 1018, 1019, 1019, 1019, 1019, 1020, 1020, 1020, - 1021, 1021, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, + 977, 977, 977, 977, 977, 977, 977, 978, 978, 978, + 979, 979, 980, 980, 981, 981, 982, 982, 982, 982, + 983, 984, 984, 985, 985, 985, 985, 985, 986, 986, + 986, 986, 987, 987, 988, 989, 989, 989, 989, 989, + 989, 989, 990, 990, 991, 991, 991, 991, 992, 992, + 993, 993, 994, 994, 994, 995, 995, 995, 995, 995, + 996, 996, 996, 996, 996, 997, 997, 998, 998, 999, + 999, 1000, 1000, 1001, 1001, 1001, 1002, 1002, 1003, 1003, + 1004, 1004, 1005, 1005, 1005, 1006, 1006, 1006, 1007, 1007, + 1008, 1008, 1009, 1009, 1009, 1009, 1009, 1010, 1010, 1011, + 1011, 1011, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1013, 1013, 1014, 1014, 1015, 1015, 1016, 1016, 1017, 1018, + 1018, 1018, 1018, 1018, 1019, 1019, 1019, 1019, 1020, 1020, + 1020, 1021, 1021, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, @@ -3351,18 +3355,18 @@ static const yytype_uint16 yyr1[] = 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, - 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, + 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, - 1025, 1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1025, 1025, 1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1027, 1027, 1027, 1027, 1027, 1027, + 1026, 1026, 1026, 1026, 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, @@ -3370,18 +3374,18 @@ static const yytype_uint16 yyr1[] = 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, 1028, 1028, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1028, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1028, 1028, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - 1029, 1029, 1029, 1029, 1029 + 1029, 1029, 1029, 1029, 1029, 1029, 1029 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -3407,145 +3411,145 @@ static const yytype_uint8 yyr2[] = 5, 2, 2, 0, 8, 5, 0, 5, 5, 7, 2, 0, 1, 1, 1, 3, 2, 0, 1, 0, 1, 3, 1, 3, 1, 2, 1, 3, 2, 6, - 8, 5, 1, 0, 1, 3, 2, 4, 5, 5, - 8, 7, 1, 0, 8, 11, 10, 0, 1, 0, - 1, 1, 0, 2, 1, 2, 1, 3, 4, 3, - 9, 12, 1, 3, 1, 3, 3, 0, 4, 6, - 1, 2, 1, 1, 0, 1, 2, 2, 1, 2, - 2, 1, 2, 3, 2, 2, 2, 2, 3, 3, - 3, 1, 3, 1, 0, 1, 2, 2, 5, 7, - 0, 2, 2, 3, 3, 2, 2, 2, 1, 1, - 0, 2, 2, 0, 2, 9, 12, 11, 0, 2, - 1, 1, 1, 1, 1, 1, 3, 0, 1, 2, - 1, 1, 2, 2, 3, 1, 1, 2, 2, 1, - 2, 3, 5, 3, 2, 5, 1, 1, 1, 0, - 5, 7, 5, 2, 3, 1, 1, 2, 2, 0, - 3, 4, 4, 0, 3, 2, 0, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, - 1, 2, 2, 2, 2, 2, 2, 0, 3, 3, - 3, 0, 1, 2, 1, 2, 2, 2, 2, 2, - 3, 2, 2, 1, 3, 1, 1, 1, 1, 3, - 1, 2, 0, 1, 2, 0, 1, 3, 0, 2, - 0, 3, 3, 1, 5, 3, 1, 3, 1, 2, - 1, 4, 5, 5, 6, 3, 7, 4, 11, 1, - 3, 2, 2, 2, 0, 3, 1, 1, 2, 2, - 2, 2, 1, 0, 1, 2, 6, 4, 6, 4, - 6, 8, 1, 1, 1, 1, 2, 1, 2, 1, - 2, 1, 1, 1, 1, 3, 3, 3, 3, 1, - 2, 2, 1, 3, 1, 1, 1, 3, 1, 1, - 0, 1, 1, 1, 5, 8, 7, 5, 8, 7, - 4, 4, 1, 3, 1, 1, 3, 1, 3, 1, - 1, 2, 3, 8, 11, 9, 7, 0, 3, 3, - 1, 1, 3, 0, 1, 3, 1, 0, 1, 0, - 1, 0, 1, 3, 1, 1, 1, 1, 3, 1, - 1, 0, 2, 2, 0, 2, 0, 1, 0, 1, - 1, 1, 3, 3, 1, 1, 3, 3, 3, 3, - 3, 3, 4, 3, 2, 1, 1, 1, 1, 3, - 1, 1, 3, 1, 1, 3, 3, 3, 1, 2, - 4, 4, 2, 3, 5, 5, 1, 1, 3, 0, - 11, 11, 10, 12, 1, 2, 5, 4, 4, 4, - 4, 7, 5, 4, 7, 6, 9, 9, 4, 1, - 1, 1, 1, 1, 1, 1, 5, 1, 1, 3, - 1, 2, 2, 2, 3, 1, 3, 8, 5, 0, - 1, 2, 1, 3, 1, 2, 0, 2, 0, 3, - 3, 4, 4, 4, 4, 3, 2, 1, 1, 0, - 1, 1, 0, 2, 1, 5, 1, 0, 2, 2, - 0, 1, 0, 3, 5, 1, 3, 4, 3, 1, - 1, 0, 2, 2, 0, 2, 2, 1, 1, 1, - 0, 2, 4, 5, 4, 2, 3, 1, 1, 1, - 2, 2, 1, 2, 3, 0, 1, 0, 5, 1, - 4, 6, 2, 1, 0, 4, 0, 1, 1, 3, - 4, 0, 1, 1, 2, 2, 2, 1, 1, 2, - 2, 1, 1, 1, 1, 1, 1, 3, 3, 0, - 1, 3, 1, 2, 1, 1, 1, 1, 1, 2, - 4, 4, 5, 1, 1, 2, 0, 2, 0, 1, - 3, 1, 0, 1, 2, 3, 2, 4, 2, 3, - 2, 0, 1, 2, 0, 4, 5, 1, 2, 2, - 0, 1, 3, 1, 2, 2, 4, 4, 3, 3, - 3, 3, 3, 3, 3, 1, 4, 4, 9, 9, - 3, 0, 2, 2, 0, 5, 3, 1, 1, 3, - 5, 3, 1, 2, 1, 3, 5, 1, 2, 3, - 4, 5, 4, 5, 4, 6, 5, 4, 5, 5, - 5, 2, 4, 1, 1, 0, 1, 4, 5, 4, - 0, 2, 2, 2, 1, 1, 1, 1, 0, 4, - 2, 1, 2, 2, 4, 2, 6, 2, 1, 3, - 4, 0, 2, 0, 2, 0, 1, 3, 3, 2, - 0, 2, 4, 1, 1, 1, 0, 2, 3, 5, - 6, 2, 3, 1, 5, 5, 5, 3, 3, 3, - 4, 0, 1, 1, 1, 1, 1, 2, 4, 1, - 1, 1, 1, 2, 3, 0, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 1, 3, 0, 1, - 1, 1, 1, 5, 2, 1, 1, 1, 1, 4, - 1, 2, 2, 1, 3, 3, 2, 1, 0, 5, - 2, 5, 2, 1, 3, 3, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 9, 8, 2, 4, 1, 1, 0, 1, 3, 2, + 4, 5, 5, 8, 7, 1, 0, 8, 11, 10, + 0, 1, 0, 1, 1, 0, 2, 1, 2, 1, + 3, 4, 3, 9, 12, 1, 3, 1, 3, 3, + 0, 4, 6, 1, 2, 1, 1, 0, 1, 2, + 2, 1, 2, 2, 1, 2, 3, 2, 2, 2, + 2, 3, 3, 3, 1, 3, 1, 0, 1, 2, + 2, 5, 7, 0, 2, 2, 3, 3, 2, 2, + 2, 1, 1, 0, 2, 2, 0, 2, 9, 12, + 11, 0, 2, 1, 1, 1, 1, 1, 1, 3, + 0, 1, 2, 1, 1, 2, 2, 3, 1, 1, + 2, 2, 1, 2, 3, 5, 3, 2, 5, 1, + 1, 1, 0, 5, 7, 5, 2, 3, 1, 1, + 2, 2, 0, 3, 4, 4, 0, 3, 2, 0, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, + 0, 3, 3, 3, 0, 1, 2, 1, 2, 2, + 2, 2, 2, 3, 2, 2, 1, 3, 1, 1, + 1, 1, 3, 1, 2, 0, 1, 2, 0, 1, + 3, 0, 2, 0, 3, 3, 1, 5, 3, 1, + 3, 1, 2, 1, 4, 5, 5, 6, 3, 7, + 4, 11, 1, 3, 2, 2, 2, 0, 3, 1, + 1, 2, 2, 2, 2, 1, 0, 1, 2, 6, + 4, 6, 4, 6, 8, 1, 1, 1, 1, 2, + 1, 2, 1, 2, 1, 1, 1, 1, 3, 3, + 3, 3, 1, 2, 2, 1, 3, 1, 1, 1, + 3, 1, 1, 0, 1, 1, 1, 5, 8, 7, + 5, 8, 7, 4, 4, 1, 3, 1, 1, 3, + 1, 3, 1, 1, 2, 3, 8, 11, 9, 7, + 0, 3, 3, 1, 1, 3, 0, 1, 3, 1, + 0, 1, 0, 1, 0, 1, 3, 1, 1, 1, + 1, 3, 1, 1, 0, 2, 2, 0, 2, 0, + 1, 0, 1, 1, 1, 3, 3, 1, 1, 3, + 3, 3, 3, 3, 3, 4, 3, 2, 1, 1, + 1, 1, 3, 1, 1, 3, 1, 1, 3, 3, + 3, 1, 2, 4, 4, 2, 3, 5, 5, 1, + 1, 3, 0, 11, 11, 10, 12, 1, 2, 5, + 4, 4, 4, 4, 7, 5, 4, 7, 6, 9, + 9, 4, 1, 1, 1, 1, 1, 1, 1, 5, + 1, 1, 3, 1, 2, 2, 2, 3, 1, 3, + 8, 5, 0, 1, 2, 1, 3, 1, 2, 0, + 2, 0, 3, 3, 4, 4, 4, 4, 3, 2, + 1, 1, 0, 1, 1, 0, 2, 1, 5, 1, + 0, 2, 2, 0, 1, 0, 3, 5, 1, 3, + 4, 3, 1, 1, 0, 2, 2, 0, 2, 2, + 1, 1, 1, 0, 2, 4, 5, 4, 2, 3, + 1, 1, 1, 2, 2, 1, 2, 3, 0, 1, + 0, 5, 1, 4, 6, 2, 1, 0, 4, 0, + 1, 1, 3, 4, 0, 1, 1, 2, 2, 2, + 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, + 3, 3, 0, 1, 3, 1, 2, 1, 1, 1, + 1, 1, 2, 4, 4, 5, 1, 1, 2, 0, + 2, 0, 1, 3, 1, 0, 1, 2, 3, 2, + 4, 2, 3, 2, 0, 1, 2, 0, 4, 5, + 1, 2, 2, 0, 1, 3, 1, 2, 2, 4, + 4, 3, 3, 3, 3, 3, 3, 3, 1, 4, + 4, 9, 9, 3, 0, 2, 2, 0, 5, 3, + 1, 1, 3, 5, 3, 1, 2, 1, 3, 5, + 1, 2, 3, 4, 5, 4, 5, 4, 6, 5, + 4, 5, 5, 5, 2, 4, 1, 1, 0, 1, + 4, 5, 4, 0, 2, 2, 2, 1, 1, 1, + 1, 0, 4, 2, 1, 2, 2, 4, 2, 6, + 2, 1, 3, 4, 0, 2, 0, 2, 0, 1, + 3, 3, 2, 0, 2, 4, 1, 1, 1, 0, + 2, 3, 5, 6, 2, 3, 1, 5, 5, 5, + 3, 3, 3, 4, 0, 1, 1, 1, 1, 1, + 2, 4, 1, 1, 1, 1, 2, 3, 0, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, + 3, 0, 1, 1, 1, 1, 5, 2, 1, 1, + 1, 1, 4, 1, 2, 2, 1, 3, 3, 2, + 1, 0, 5, 2, 5, 2, 1, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, - 3, 3, 3, 0, 1, 3, 3, 5, 2, 2, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 3, 3, 2, - 2, 3, 3, 5, 4, 6, 3, 5, 4, 6, - 4, 6, 5, 7, 3, 2, 4, 3, 2, 3, - 3, 3, 3, 4, 3, 4, 3, 4, 5, 6, - 6, 7, 6, 7, 6, 7, 3, 4, 4, 6, - 1, 4, 4, 5, 4, 6, 1, 3, 2, 2, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 5, 6, 6, - 7, 1, 2, 1, 1, 1, 2, 2, 4, 3, - 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 2, 4, 2, 3, 3, 4, 3, 5, - 6, 7, 9, 7, 7, 5, 1, 1, 1, 5, - 6, 6, 4, 4, 4, 4, 6, 5, 5, 5, - 4, 6, 4, 1, 7, 9, 5, 0, 5, 4, - 0, 1, 0, 2, 0, 1, 3, 3, 2, 2, - 0, 6, 1, 0, 3, 0, 3, 3, 3, 0, - 1, 4, 2, 2, 2, 2, 2, 3, 2, 2, - 3, 0, 4, 3, 1, 5, 3, 1, 3, 1, - 2, 3, 1, 3, 1, 2, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, - 4, 1, 4, 1, 2, 1, 2, 1, 2, 1, - 3, 1, 3, 1, 2, 1, 3, 1, 2, 1, - 0, 1, 3, 1, 3, 3, 1, 3, 3, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 3, 3, 3, 3, 3, 3, 0, 1, 3, 3, + 5, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, + 3, 3, 2, 2, 3, 3, 5, 4, 6, 3, + 5, 4, 6, 4, 6, 5, 7, 3, 2, 4, + 3, 2, 4, 3, 3, 3, 3, 4, 3, 4, + 3, 4, 5, 6, 6, 7, 6, 7, 6, 7, + 3, 4, 4, 6, 1, 4, 4, 5, 4, 6, + 1, 3, 2, 2, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 5, 6, 6, 7, 1, 2, 1, 1, 1, + 2, 2, 4, 3, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 2, 4, 2, 3, + 3, 4, 3, 5, 6, 7, 9, 7, 7, 5, + 1, 1, 1, 5, 6, 6, 4, 4, 4, 4, + 6, 5, 5, 5, 4, 6, 4, 7, 9, 5, + 0, 5, 4, 0, 1, 0, 2, 0, 1, 3, + 3, 2, 2, 0, 6, 1, 0, 3, 0, 3, + 3, 3, 0, 1, 4, 2, 2, 2, 2, 2, + 3, 2, 2, 3, 0, 4, 3, 1, 5, 3, + 1, 3, 1, 2, 3, 1, 3, 1, 2, 1, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 4, 3, 2, 3, 0, - 3, 3, 2, 2, 1, 0, 2, 2, 3, 2, - 1, 1, 3, 1, 1, 5, 1, 2, 4, 2, - 0, 1, 0, 1, 3, 1, 1, 2, 3, 5, - 7, 7, 1, 0, 0, 2, 0, 2, 3, 3, - 3, 5, 7, 7, 0, 2, 1, 0, 1, 0, - 1, 3, 1, 2, 3, 2, 1, 3, 4, 2, - 1, 3, 1, 3, 1, 2, 1, 0, 3, 1, - 3, 1, 2, 4, 2, 0, 3, 1, 3, 1, - 2, 4, 2, 0, 1, 3, 1, 3, 1, 2, - 1, 3, 1, 1, 2, 1, 1, 2, 1, 1, - 2, 7, 2, 5, 3, 3, 1, 1, 1, 1, + 1, 4, 1, 4, 1, 4, 1, 2, 1, 2, + 1, 2, 1, 3, 1, 3, 1, 2, 1, 3, + 1, 2, 1, 0, 1, 3, 1, 3, 3, 1, + 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, + 2, 3, 0, 3, 3, 2, 2, 1, 0, 2, + 2, 3, 2, 1, 1, 3, 1, 1, 5, 1, + 2, 4, 2, 0, 1, 0, 1, 1, 2, 3, + 5, 7, 7, 1, 0, 0, 2, 0, 2, 3, + 3, 3, 5, 7, 7, 0, 2, 1, 0, 1, + 0, 1, 3, 1, 2, 3, 2, 1, 3, 4, + 2, 1, 3, 1, 3, 1, 2, 1, 0, 3, + 1, 3, 1, 2, 4, 2, 0, 3, 1, 3, + 1, 2, 4, 2, 0, 1, 3, 1, 3, 1, + 2, 1, 3, 1, 1, 2, 1, 1, 2, 1, + 1, 2, 7, 2, 5, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 3, 3, 0, 1, 1, 1, 5, 3, - 0, 1, 1, 1, 1, 1, 1, 4, 7, 6, - 2, 0, 1, 1, 1, 1, 13, 16, 1, 2, - 0, 1, 0, 1, 0, 2, 0, 1, 0, 6, - 8, 6, 8, 6, 8, 3, 2, 1, 0, 6, - 6, 1, 1, 1, 1, 1, 1, 2, 1, 1, - 1, 1, 1, 4, 6, 3, 2, 4, 3, 5, - 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, + 1, 2, 2, 3, 3, 0, 1, 1, 1, 5, + 3, 0, 1, 1, 1, 1, 1, 1, 4, 7, + 6, 2, 0, 1, 1, 1, 1, 13, 16, 1, + 2, 0, 1, 0, 1, 0, 2, 0, 1, 0, + 6, 8, 6, 8, 6, 8, 3, 2, 1, 0, + 6, 6, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 4, 6, 3, 2, 4, 3, + 5, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 2, 3, 3, 3, 3, 1, 3, 3, - 2, 3, 3, 1, 1, 1, 3, 5, 1, 1, - 1, 1, 3, 2, 4, 6, 6, 0, 1, 1, - 1, 0, 2, 2, 4, 6, 5, 4, 6, 1, - 1, 1, 1, 1, 1, 0, 1, 3, 1, 0, - 7, 3, 1, 2, 3, 2, 0, 2, 0, 2, - 4, 5, 8, 7, 2, 3, 5, 1, 0, 2, - 0, 2, 3, 3, 3, 3, 1, 1, 1, 2, - 3, 2, 2, 2, 2, 3, 4, 3, 1, 1, - 1, 1, 1, 1, 0, 1, 3, 2, 9, 12, - 11, 12, 14, 3, 4, 4, 0, 7, 10, 9, - 2, 3, 0, 4, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 2, 3, 3, 3, 3, 1, 3, + 3, 2, 3, 3, 1, 1, 1, 3, 5, 1, + 1, 1, 1, 3, 2, 4, 6, 6, 0, 1, + 1, 1, 0, 2, 2, 4, 6, 5, 4, 6, + 1, 1, 1, 1, 1, 1, 0, 1, 3, 1, + 0, 7, 3, 1, 2, 3, 2, 0, 2, 0, + 2, 4, 5, 8, 7, 2, 3, 5, 1, 0, + 2, 0, 2, 3, 3, 3, 3, 1, 1, 1, + 2, 3, 2, 2, 2, 2, 3, 4, 3, 1, + 1, 1, 1, 1, 1, 0, 1, 3, 2, 9, + 12, 11, 12, 14, 3, 4, 4, 0, 7, 10, + 9, 2, 3, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -3608,7 +3612,7 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -3616,1828 +3620,1850 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 167, 280, 0, 1464, 1463, 1538, 280, 0, 1398, 0, - 280, 518, 423, 0, 1560, 1559, 0, 219, 280, 0, - 167, 0, 1498, 0, 0, 0, 581, 584, 582, 0, - 0, 0, 280, 627, 0, 1561, 280, 0, 0, 619, - 583, 0, 1515, 0, 0, 0, 0, 0, 2, 4, + 167, 283, 0, 1465, 1464, 1539, 283, 0, 1399, 0, + 283, 521, 426, 0, 1561, 1560, 0, 222, 283, 0, + 167, 0, 1499, 0, 0, 0, 584, 587, 585, 0, + 0, 0, 283, 630, 0, 1562, 283, 0, 0, 622, + 586, 0, 1516, 0, 0, 0, 0, 0, 2, 4, 7, 21, 35, 31, 0, 20, 33, 18, 17, 38, 26, 6, 24, 37, 40, 19, 25, 15, 39, 13, - 36, 557, 543, 632, 556, 0, 0, 166, 737, 564, - 34, 16, 30, 5, 11, 12, 28, 29, 27, 1421, + 36, 560, 546, 635, 559, 0, 0, 166, 740, 567, + 34, 16, 30, 5, 11, 12, 28, 29, 27, 1422, 43, 32, 0, 41, 22, 8, 9, 23, 42, 44, - 1562, 1558, 10, 45, 14, 279, 278, 272, 0, 0, - 0, 0, 0, 1537, 0, 0, 0, 283, 123, 1584, - 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, - 1964, 1595, 1596, 1965, 1597, 1598, 1966, 1599, 1600, 1601, - 1910, 1911, 1967, 1912, 1913, 1602, 1603, 1604, 1605, 1606, - 1607, 1608, 1609, 1610, 1611, 1914, 1915, 1612, 1613, 1614, - 1615, 1616, 1916, 1968, 1917, 1617, 1618, 1619, 1620, 1621, - 1969, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, - 1970, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, - 1640, 1918, 1641, 1642, 1919, 1643, 1644, 1645, 1646, 1647, - 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, - 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, - 1668, 1669, 1920, 1670, 1671, 1672, 1673, 1674, 1675, 1921, - 1676, 1677, 1678, 1922, 1679, 1680, 1681, 1971, 1972, 1682, - 1683, 1923, 1974, 1684, 1685, 1686, 1924, 1925, 1687, 1688, - 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1975, 1696, 1697, - 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, - 1976, 1926, 1708, 1709, 1710, 1711, 1712, 1927, 1928, 1929, - 1713, 1977, 1978, 1714, 1979, 1715, 1716, 1717, 1718, 1719, - 1720, 1721, 1980, 1722, 1981, 1723, 1724, 1725, 1726, 1727, - 1728, 1729, 1730, 1930, 1731, 1732, 1733, 1734, 1735, 1736, - 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, - 1747, 1748, 1749, 1750, 1931, 1983, 1932, 1751, 1752, 1753, - 1933, 1754, 1755, 1984, 1756, 1934, 1757, 1935, 1758, 1759, - 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1936, 1985, - 1768, 1986, 1937, 1769, 1770, 1771, 1772, 1773, 1774, 1775, - 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1938, 1987, 1783, - 1784, 1939, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, - 1793, 1794, 1795, 1796, 1797, 1798, 1940, 1799, 1800, 1801, - 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, - 1812, 1813, 1814, 1815, 1816, 1817, 1988, 1818, 1819, 1820, - 1941, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, - 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, - 1942, 1840, 1841, 1989, 1842, 1843, 1943, 1844, 1845, 1846, - 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, - 1857, 1944, 1858, 1945, 1859, 1860, 1861, 1991, 1862, 1863, - 1864, 1865, 1866, 1867, 1946, 1947, 1868, 1869, 1948, 1870, - 1949, 1871, 1872, 1950, 1873, 1874, 1875, 1876, 1877, 1878, - 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, - 1889, 1951, 1952, 1890, 1891, 1992, 1892, 1893, 1894, 1895, - 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, - 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, - 1963, 1906, 1907, 1908, 1909, 0, 1567, 0, 1323, 124, - 125, 1345, 123, 1923, 1930, 1944, 1397, 1396, 124, 0, - 275, 517, 0, 0, 0, 0, 0, 0, 221, 0, - 417, 416, 0, 1387, 422, 0, 0, 0, 127, 119, - 1785, 126, 1322, 117, 133, 2141, 2142, 2143, 2144, 2024, - 2145, 2146, 2147, 2148, 2025, 2149, 2026, 2027, 2028, 2029, - 2030, 2031, 2032, 2150, 2151, 2152, 2034, 2033, 2153, 2035, - 2154, 2036, 2155, 2037, 2038, 2156, 2157, 2039, 1637, 2040, - 2041, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, - 2042, 2043, 2167, 2168, 2044, 2169, 2170, 2045, 2171, 2046, - 2047, 2048, 2172, 2049, 2050, 2173, 2051, 2174, 2175, 2052, - 2053, 2056, 2054, 2176, 2055, 2177, 2057, 2058, 2059, 2178, - 2179, 2060, 2061, 2180, 2062, 2063, 2064, 2065, 2066, 2181, - 2067, 2182, 2068, 2069, 2183, 2184, 2185, 2186, 2187, 2071, - 2070, 2072, 2073, 2188, 2189, 2190, 2191, 2074, 2075, 2076, - 2192, 2193, 2077, 2194, 2195, 2078, 2079, 2196, 2080, 2081, - 2197, 2082, 2083, 2198, 2084, 2085, 2199, 2200, 2201, 2086, - 2202, 2087, 2088, 2203, 2204, 2089, 2090, 2205, 2091, 2206, - 2207, 2092, 2208, 2209, 2093, 2094, 2210, 2095, 2211, 2212, - 2213, 2214, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, - 2104, 2105, 2106, 1534, 135, 134, 136, 0, 441, 442, - 0, 452, 0, 434, 439, 435, 0, 461, 454, 462, - 443, 433, 455, 444, 432, 220, 0, 463, 449, 437, - 0, 0, 0, 0, 276, 237, 423, 0, 167, 0, - 1427, 1437, 1446, 1442, 1436, 1444, 1434, 1450, 1440, 1426, - 1448, 1435, 1439, 1432, 1449, 1430, 1447, 1445, 1433, 1441, - 1425, 1429, 1416, 1421, 1453, 1443, 1451, 1438, 1452, 1454, - 1428, 1455, 1431, 0, 1398, 0, 1916, 1968, 1921, 0, - 1934, 0, 1937, 1938, 1821, 1945, 1948, 1949, 1950, 1951, - 0, 811, 126, 121, 795, 0, 559, 0, 741, 755, - 795, 800, 1087, 823, 1088, 0, 128, 1500, 1499, 1493, - 206, 1360, 1547, 1684, 1725, 1838, 1946, 1868, 1890, 1565, - 1548, 1541, 1546, 277, 626, 624, 0, 1279, 1684, 1725, - 1825, 1838, 1946, 1890, 1472, 1477, 0, 283, 1553, 126, - 121, 1552, 0, 565, 618, 0, 284, 1514, 0, 1519, - 0, 1801, 592, 595, 1354, 593, 557, 0, 0, 1, - 167, 0, 173, 0, 622, 622, 0, 622, 0, 549, - 0, 0, 557, 552, 556, 738, 1420, 1529, 0, 1564, - 1946, 1868, 1554, 1551, 1694, 0, 0, 1694, 0, 1694, - 0, 1694, 0, 0, 1538, 1540, 0, 273, 1263, 0, - 1324, 129, 0, 0, 1409, 1405, 1410, 1406, 1411, 1404, - 1403, 1412, 1408, 0, 0, 0, 388, 421, 420, 419, - 418, 423, 1694, 1371, 0, 217, 479, 480, 0, 0, - 0, 0, 0, 1382, 120, 118, 1694, 1535, 450, 451, - 0, 440, 436, 438, 0, 0, 1694, 1349, 460, 456, - 1694, 460, 1316, 1694, 0, 0, 229, 0, 416, 1418, - 1456, 2093, 1470, 0, 1471, 1461, 1424, 1457, 1458, 167, - 0, 516, 1395, 0, 0, 0, 1209, 795, 800, 0, - 0, 813, 0, 1229, 0, 1235, 0, 0, 0, 795, - 564, 0, 755, 812, 122, 745, 0, 793, 794, 674, - 674, 627, 0, 608, 0, 674, 681, 674, 805, 0, - 0, 808, 806, 0, 808, 0, 0, 0, 808, 804, - 764, 0, 681, 0, 793, 796, 674, 0, 815, 1415, - 0, 0, 0, 0, 1544, 1542, 1543, 1549, 0, 1545, - 0, 0, 1326, 1328, 1329, 1177, 1339, 1063, 0, 1911, - 1912, 1913, 1252, 1914, 1915, 1917, 1918, 1919, 1020, 1657, - 1920, 1337, 1922, 1924, 1925, 1927, 1928, 1929, 1930, 1931, - 1932, 0, 1338, 1935, 1763, 1940, 1941, 1943, 1946, 1947, - 1336, 0, 1952, 0, 0, 0, 1297, 1200, 0, 1062, - 0, 0, 0, 1256, 1264, 1055, 0, 0, 859, 860, - 881, 882, 861, 887, 888, 890, 862, 0, 1286, 954, - 1051, 1274, 1065, 1060, 1070, 1066, 1067, 1107, 1068, 1086, - 1071, 1144, 1061, 0, 1069, 1053, 1282, 608, 1280, 0, - 1054, 1325, 608, 1278, 1475, 1473, 1480, 1474, 0, 1476, - 0, 0, 0, 274, 122, 1522, 1521, 1513, 1511, 1512, - 1510, 1509, 1516, 0, 1518, 1421, 1256, 1195, 1197, 0, - 594, 0, 0, 599, 546, 545, 547, 3, 0, 0, - 0, 1674, 0, 620, 621, 0, 0, 0, 0, 0, - 0, 0, 0, 722, 647, 648, 650, 719, 723, 731, - 0, 0, 0, 0, 0, 553, 0, 1354, 1501, 1563, - 1557, 1555, 0, 0, 0, 151, 151, 0, 0, 0, - 0, 0, 111, 49, 104, 0, 0, 0, 0, 251, - 264, 0, 0, 0, 0, 0, 261, 0, 0, 244, - 51, 238, 240, 0, 151, 0, 47, 0, 0, 0, - 53, 1538, 0, 0, 516, 281, 282, 1262, 0, 131, - 132, 130, 123, 0, 2107, 1964, 1965, 1966, 1967, 1968, - 1917, 1969, 1970, 0, 1971, 1972, 1923, 1974, 1975, 1976, - 1977, 1978, 1979, 1980, 1981, 1930, 1983, 1984, 1985, 1986, - 1987, 1988, 2134, 1989, 1944, 1991, 1950, 2139, 0, 1992, - 1078, 630, 1203, 632, 1201, 1355, 0, 124, 1342, 0, - 1407, 0, 0, 0, 0, 514, 0, 0, 0, 0, - 1367, 0, 1694, 218, 222, 0, 1694, 213, 1694, 388, - 0, 1694, 388, 1694, 0, 1381, 1384, 0, 453, 448, - 446, 445, 447, 1694, 270, 0, 0, 1350, 458, 459, - 0, 427, 0, 0, 429, 0, 0, 234, 0, 232, - 0, 423, 167, 0, 245, 1466, 1467, 1465, 0, 0, - 1460, 1423, 248, 265, 1469, 1459, 1468, 1422, 1417, 0, - 0, 1413, 502, 0, 0, 0, 1210, 930, 929, 911, - 912, 927, 928, 913, 914, 921, 922, 932, 931, 919, - 920, 915, 916, 909, 910, 925, 926, 917, 918, 923, - 924, 907, 908, 1224, 1211, 1212, 1213, 1214, 1215, 1216, - 1217, 1218, 1219, 1220, 1221, 1222, 1223, 0, 0, 754, - 751, 0, 0, 0, 0, 0, 0, 1256, 0, 1026, - 1061, 0, 0, 0, 1195, 1234, 0, 0, 0, 0, - 0, 0, 1195, 1240, 0, 0, 779, 791, 0, 667, - 673, 752, 750, 0, 1279, 742, 0, 825, 755, 753, - 0, 674, 749, 0, 805, 0, 804, 0, 0, 807, - 801, 0, 802, 0, 0, 0, 0, 803, 0, 0, - 0, 0, 0, 674, 0, 791, 0, 748, 822, 1483, - 1491, 207, 0, 1346, 1993, 1994, 1995, 1996, 869, 1997, - 898, 876, 898, 898, 1998, 1999, 2000, 2001, 865, 865, - 878, 2002, 2003, 2004, 2005, 2006, 866, 867, 903, 2007, - 2008, 2009, 2010, 2011, 0, 0, 2012, 898, 2013, 865, - 2014, 2015, 2016, 870, 2017, 833, 2018, 0, 2019, 868, - 834, 2020, 906, 906, 2021, 0, 2022, 893, 2023, 0, - 1206, 843, 851, 852, 853, 854, 879, 880, 855, 885, - 886, 856, 953, 0, 865, 1347, 1348, 167, 1550, 1566, - 0, 1200, 1072, 897, 884, 1251, 0, 892, 891, 0, - 1200, 874, 873, 872, 1057, 0, 871, 1157, 898, 898, - 896, 979, 875, 0, 0, 0, 0, 0, 902, 0, - 900, 0, 980, 958, 959, 0, 0, 1296, 1305, 1195, - 1199, 0, 1055, 1195, 0, 1064, 1074, 0, 1147, 1149, - 0, 0, 0, 1257, 1327, 1056, 0, 1332, 0, 0, - 953, 953, 1285, 1177, 0, 1167, 1170, 0, 0, 1174, - 1175, 1176, 0, 0, 0, 1277, 0, 1185, 1187, 0, - 0, 995, 1183, 0, 998, 0, 0, 0, 0, 1171, - 1172, 1173, 1163, 1164, 1165, 1166, 1168, 1169, 1181, 1162, - 976, 0, 1052, 0, 1110, 0, 975, 1283, 740, 0, - 1330, 740, 1485, 1489, 1490, 1484, 1488, 0, 1479, 1478, - 1481, 1482, 0, 1523, 1507, 0, 1504, 1198, 735, 596, - 1318, 0, 0, 0, 1528, 172, 171, 0, 228, 0, - 569, 568, 641, 633, 635, 641, 0, 567, 0, 695, - 696, 0, 0, 0, 0, 728, 726, 1326, 1339, 683, - 651, 682, 0, 0, 655, 0, 687, 954, 721, 551, - 645, 646, 649, 550, 0, 724, 0, 734, 0, 588, - 590, 573, 587, 585, 570, 578, 722, 650, 0, 1530, - 0, 0, 1494, 1556, 0, 0, 0, 0, 0, 1694, - 0, 0, 836, 72, 68, 95, 338, 150, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 103, 100, 0, - 0, 101, 102, 0, 0, 0, 0, 1346, 249, 250, - 263, 0, 254, 255, 252, 256, 257, 0, 0, 242, - 243, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1540, 1539, 1531, 1258, 1263, - 632, 632, 632, 0, 0, 0, 0, 630, 631, 0, - 0, 0, 0, 0, 501, 386, 396, 0, 0, 0, - 1371, 217, 0, 0, 0, 0, 0, 0, 423, 1374, - 1372, 1370, 1373, 1375, 1663, 201, 0, 0, 0, 0, - 0, 209, 212, 0, 385, 357, 0, 0, 1386, 0, - 0, 474, 472, 475, 464, 477, 467, 0, 1694, 375, - 1383, 0, 1536, 0, 0, 268, 460, 1351, 0, 457, - 460, 1317, 0, 460, 236, 0, 0, 1419, 1462, 246, - 266, 247, 267, 516, 511, 541, 0, 519, 524, 499, - 0, 499, 0, 521, 525, 499, 520, 0, 499, 515, - 0, 1102, 0, 1092, 0, 0, 814, 0, 0, 1093, - 1028, 1029, 0, 0, 0, 0, 0, 0, 0, 0, + 1563, 1559, 10, 45, 14, 282, 281, 275, 0, 0, + 0, 0, 0, 1538, 0, 0, 0, 286, 123, 1585, + 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, + 1965, 1596, 1597, 1966, 1598, 1599, 1967, 1600, 1601, 1602, + 1911, 1912, 1968, 1913, 1914, 1603, 1604, 1605, 1606, 1607, + 1608, 1609, 1610, 1611, 1612, 1915, 1916, 1613, 1614, 1615, + 1616, 1617, 1917, 1969, 1918, 1618, 1619, 1620, 1621, 1622, + 1970, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, + 1971, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, + 1641, 1919, 1642, 1643, 1920, 1644, 1645, 1646, 1647, 1648, + 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, + 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, + 1669, 1670, 1921, 1671, 1672, 1673, 1674, 1675, 1676, 1922, + 1677, 1678, 1679, 1923, 1680, 1681, 1682, 1972, 1973, 1683, + 1684, 1924, 1975, 1685, 1686, 1687, 1925, 1926, 1688, 1689, + 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1976, 1697, 1698, + 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, + 1977, 1927, 1709, 1710, 1711, 1712, 1713, 1928, 1929, 1930, + 1714, 1978, 1979, 1715, 1980, 1716, 1717, 1718, 1719, 1720, + 1721, 1722, 1981, 1723, 1982, 1724, 1725, 1726, 1727, 1728, + 1729, 1730, 1731, 1931, 1732, 1733, 1734, 1735, 1736, 1737, + 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, + 1748, 1749, 1750, 1751, 1932, 1984, 1933, 1752, 1753, 1754, + 1934, 1755, 1756, 1985, 1757, 1935, 1758, 1936, 1759, 1760, + 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1937, 1986, + 1769, 1987, 1938, 1770, 1771, 1772, 1773, 1774, 1775, 1776, + 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1939, 1988, 1784, + 1785, 1940, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, + 1794, 1795, 1796, 1797, 1798, 1799, 1941, 1800, 1801, 1802, + 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, + 1813, 1814, 1815, 1816, 1817, 1818, 1989, 1819, 1820, 1821, + 1942, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, + 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, + 1943, 1841, 1842, 1990, 1843, 1844, 1944, 1845, 1846, 1847, + 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, + 1858, 1945, 1859, 1946, 1860, 1861, 1862, 1992, 1863, 1864, + 1865, 1866, 1867, 1868, 1947, 1948, 1869, 1870, 1949, 1871, + 1950, 1872, 1873, 1951, 1874, 1875, 1876, 1877, 1878, 1879, + 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, + 1890, 1952, 1953, 1891, 1892, 1993, 1893, 1894, 1895, 1896, + 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, + 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, + 1964, 1907, 1908, 1909, 1910, 0, 1568, 0, 1324, 124, + 125, 1346, 123, 1924, 1931, 1945, 1398, 1397, 124, 0, + 278, 520, 0, 0, 0, 0, 0, 0, 224, 0, + 420, 419, 1388, 425, 0, 0, 0, 127, 119, 1786, + 126, 1323, 117, 133, 2142, 2143, 2144, 2145, 2025, 2146, + 2147, 2148, 2149, 2026, 2150, 2027, 2028, 2029, 2030, 2031, + 2032, 2033, 2151, 2152, 2153, 2035, 2034, 2154, 2036, 2155, + 2037, 2156, 2038, 2039, 2157, 2158, 2040, 1638, 2041, 2042, + 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2043, + 2044, 2168, 2169, 2045, 2170, 2171, 2046, 2172, 2047, 2048, + 2049, 2173, 2050, 2051, 2174, 2052, 2175, 2176, 2053, 2054, + 2057, 2055, 2177, 2056, 2178, 2058, 2059, 2060, 2179, 2180, + 2181, 2061, 2062, 2182, 2063, 2064, 2065, 2066, 2067, 2183, + 2068, 2184, 2069, 2070, 2185, 2186, 2187, 2188, 2189, 2072, + 2071, 2073, 2074, 2190, 2191, 2192, 2193, 2075, 2076, 2077, + 2194, 2195, 2078, 2196, 2197, 2079, 2080, 2198, 2081, 2082, + 2199, 2083, 2084, 2200, 2085, 2086, 2201, 2202, 2203, 2087, + 2204, 2088, 2089, 2205, 2206, 2090, 2091, 2207, 2092, 2208, + 2209, 2093, 2210, 2211, 2094, 2095, 2212, 2096, 2213, 2214, + 2215, 2216, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, + 2105, 2106, 2107, 1535, 135, 134, 136, 0, 444, 445, + 0, 455, 0, 437, 442, 438, 0, 464, 457, 465, + 446, 436, 458, 447, 435, 223, 0, 466, 452, 440, + 0, 0, 0, 0, 279, 240, 426, 0, 167, 0, + 1428, 1438, 1447, 1443, 1437, 1445, 1435, 1451, 1441, 1427, + 1449, 1436, 1440, 1433, 1450, 1431, 1448, 1446, 1434, 1442, + 1426, 1430, 1417, 1422, 1454, 1444, 1452, 1439, 1453, 1455, + 1429, 1456, 1432, 0, 1399, 0, 1917, 1969, 1922, 0, + 1935, 0, 1938, 1939, 1822, 1946, 1949, 1950, 1951, 1952, + 0, 814, 126, 121, 798, 0, 562, 0, 744, 758, + 798, 803, 1091, 826, 1092, 0, 128, 1501, 1500, 1494, + 209, 1361, 1548, 1685, 1726, 1839, 1947, 1869, 1891, 1566, + 1549, 1542, 1547, 280, 629, 627, 0, 1280, 1685, 1726, + 1826, 1839, 1947, 1891, 1473, 1478, 0, 286, 1554, 126, + 121, 1553, 0, 568, 621, 0, 287, 1515, 0, 1520, + 0, 1802, 595, 598, 1355, 596, 560, 0, 0, 1, + 167, 0, 173, 0, 625, 625, 0, 625, 0, 552, + 0, 0, 560, 555, 559, 741, 1421, 1530, 0, 1565, + 1947, 1869, 1555, 1552, 1695, 0, 0, 1695, 0, 1695, + 0, 1695, 0, 0, 1539, 1541, 0, 276, 1264, 0, + 1325, 129, 0, 0, 1410, 1406, 1411, 1407, 1412, 1405, + 1404, 1413, 1409, 0, 0, 0, 391, 424, 423, 422, + 421, 426, 1695, 1372, 220, 482, 483, 0, 0, 0, + 0, 0, 0, 1383, 120, 118, 1695, 1536, 453, 454, + 0, 443, 439, 441, 0, 0, 1695, 1350, 463, 459, + 1695, 463, 1317, 1695, 0, 0, 232, 0, 419, 1419, + 1457, 2094, 1471, 0, 1472, 1462, 1425, 1458, 1459, 167, + 0, 519, 1396, 0, 0, 0, 1212, 798, 803, 0, + 0, 816, 0, 1232, 0, 1238, 0, 0, 0, 798, + 567, 0, 758, 815, 122, 748, 0, 796, 797, 677, + 677, 630, 0, 611, 0, 677, 684, 677, 808, 0, + 0, 811, 809, 0, 811, 0, 0, 0, 811, 807, + 767, 0, 684, 0, 796, 799, 677, 0, 818, 1416, + 0, 0, 0, 0, 1545, 1543, 1544, 1550, 0, 1546, + 0, 0, 1327, 1329, 1330, 1180, 1340, 1067, 0, 1912, + 1913, 1914, 1255, 1915, 1916, 1918, 1919, 1920, 1024, 1658, + 1921, 1338, 1923, 1925, 1926, 1928, 1929, 1930, 0, 1931, + 1932, 1933, 0, 1339, 1936, 1764, 1941, 1942, 1944, 1947, + 1948, 1337, 0, 1953, 0, 0, 0, 1298, 1203, 0, + 1066, 0, 0, 0, 1257, 1265, 1059, 0, 0, 862, + 863, 884, 885, 864, 890, 891, 893, 865, 0, 1287, + 957, 1055, 1275, 1069, 1064, 1074, 1070, 1071, 1110, 1072, + 1090, 1075, 1147, 1065, 0, 1073, 1057, 1283, 611, 1281, + 0, 1058, 1326, 611, 1279, 1476, 1474, 1481, 1475, 0, + 1477, 0, 0, 0, 277, 122, 1523, 1522, 1514, 1512, + 1513, 1511, 1510, 1517, 0, 1519, 1422, 1257, 1198, 1200, + 0, 597, 0, 0, 602, 549, 548, 550, 3, 0, + 0, 0, 1675, 0, 623, 624, 0, 0, 0, 0, + 0, 0, 0, 0, 725, 650, 651, 653, 722, 726, + 734, 0, 0, 0, 0, 0, 556, 0, 1355, 1502, + 1564, 1558, 1556, 0, 0, 0, 151, 151, 0, 0, + 0, 0, 0, 111, 49, 104, 0, 0, 0, 0, + 254, 267, 0, 0, 0, 0, 0, 264, 0, 0, + 247, 51, 241, 243, 0, 151, 0, 47, 0, 0, + 0, 53, 1539, 0, 0, 519, 284, 285, 1263, 0, + 131, 132, 130, 123, 0, 2108, 1965, 1966, 1967, 1968, + 1969, 1918, 1970, 1971, 0, 1972, 1973, 1924, 1975, 1976, + 1977, 1978, 1979, 1980, 1981, 1982, 1931, 1984, 1985, 1986, + 1987, 1988, 1989, 2135, 1990, 1945, 1992, 1951, 2140, 0, + 1993, 1082, 633, 1206, 635, 1204, 1356, 0, 124, 1343, + 0, 1408, 0, 0, 0, 0, 517, 0, 0, 0, + 0, 1368, 1695, 221, 225, 0, 1695, 216, 1695, 391, + 0, 1695, 0, 1695, 391, 1695, 0, 1382, 1385, 0, + 456, 451, 449, 448, 450, 1695, 273, 0, 0, 1351, + 461, 462, 0, 430, 0, 0, 432, 0, 0, 237, + 0, 235, 0, 426, 167, 0, 248, 1467, 1468, 1466, + 0, 0, 1461, 1424, 251, 268, 1470, 1460, 1469, 1423, + 1418, 0, 0, 1414, 505, 0, 0, 0, 1213, 933, + 932, 914, 915, 930, 931, 916, 917, 924, 925, 935, + 934, 922, 923, 918, 919, 912, 913, 928, 929, 920, + 921, 926, 927, 910, 911, 1227, 1214, 1215, 1216, 1217, + 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 0, + 0, 757, 754, 0, 0, 0, 0, 0, 0, 1257, + 0, 1030, 1065, 0, 0, 0, 1198, 1237, 0, 0, + 0, 0, 0, 0, 1198, 1243, 0, 0, 782, 794, + 0, 670, 676, 755, 753, 0, 1280, 745, 0, 828, + 758, 756, 0, 677, 752, 0, 808, 0, 807, 0, + 0, 810, 804, 0, 805, 0, 0, 0, 0, 806, + 0, 0, 0, 0, 0, 677, 0, 794, 0, 751, + 825, 1484, 1492, 210, 0, 1347, 1994, 1995, 1996, 1997, + 872, 1998, 901, 879, 901, 901, 1999, 2000, 2001, 2002, + 868, 868, 881, 2003, 2004, 2005, 2006, 2007, 869, 870, + 906, 2008, 2009, 2010, 2011, 2012, 0, 0, 2013, 901, + 2014, 868, 2015, 2016, 2017, 873, 2018, 836, 2019, 0, + 2020, 871, 837, 2021, 909, 909, 2022, 0, 2023, 896, + 2024, 0, 1209, 846, 854, 855, 856, 857, 882, 883, + 858, 888, 889, 859, 956, 0, 868, 1348, 1349, 167, + 1551, 1567, 0, 1203, 1076, 900, 887, 1254, 0, 895, + 894, 0, 1203, 877, 876, 875, 1061, 0, 874, 0, + 1160, 901, 901, 899, 982, 878, 0, 0, 0, 0, + 0, 905, 0, 903, 0, 983, 961, 962, 0, 0, + 1297, 1306, 1198, 1202, 0, 1059, 1198, 0, 1068, 1078, + 0, 1150, 1152, 0, 0, 0, 1258, 1328, 1060, 0, + 1333, 0, 0, 956, 956, 1286, 1180, 0, 1170, 1173, + 0, 0, 1177, 1178, 1179, 0, 0, 0, 1278, 0, + 1188, 1190, 0, 0, 998, 1186, 0, 1001, 0, 0, + 0, 0, 1174, 1175, 1176, 1166, 1167, 1168, 1169, 1171, + 1172, 1184, 1165, 979, 0, 1056, 0, 1113, 0, 978, + 1284, 743, 0, 1331, 743, 1486, 1490, 1491, 1485, 1489, + 0, 1480, 1479, 1482, 1483, 0, 1524, 1508, 0, 1505, + 1201, 738, 599, 1319, 0, 0, 0, 1529, 172, 171, + 0, 231, 0, 572, 571, 644, 636, 638, 644, 0, + 570, 0, 698, 699, 0, 0, 0, 0, 731, 729, + 1327, 1340, 686, 654, 685, 0, 0, 658, 0, 690, + 957, 724, 554, 648, 649, 652, 553, 0, 727, 0, + 737, 0, 591, 593, 576, 590, 588, 573, 581, 725, + 653, 0, 1531, 0, 0, 1495, 1557, 0, 0, 0, + 0, 0, 1695, 0, 0, 839, 72, 68, 95, 341, + 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 100, 0, 0, 101, 102, 0, 0, 0, 0, + 1347, 252, 253, 266, 0, 257, 258, 255, 259, 260, + 0, 0, 245, 246, 0, 0, 0, 0, 244, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1541, 1540, + 1532, 1259, 1264, 635, 635, 635, 0, 0, 0, 0, + 633, 634, 0, 0, 0, 0, 0, 504, 389, 399, + 0, 0, 0, 1372, 220, 0, 0, 0, 0, 0, + 0, 0, 426, 1375, 1373, 1371, 1374, 1376, 0, 0, + 0, 0, 0, 212, 215, 0, 388, 360, 0, 0, + 0, 0, 1387, 0, 0, 477, 475, 478, 467, 480, + 470, 0, 1695, 378, 1384, 0, 1537, 0, 0, 271, + 463, 1352, 0, 460, 463, 1318, 0, 463, 239, 0, + 0, 1420, 1463, 249, 269, 250, 270, 519, 514, 544, + 0, 522, 527, 502, 0, 502, 0, 524, 528, 502, + 523, 0, 502, 518, 0, 1106, 0, 1096, 0, 0, + 817, 0, 0, 1097, 1032, 1033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1046, 1045, 1094, 818, 0, 821, 0, 0, 1232, 1233, - 0, 1095, 0, 0, 1239, 0, 0, 0, 1100, 0, - 756, 0, 0, 657, 658, 666, 662, 669, 0, 672, - 659, 608, 558, 1684, 1725, 0, 619, 619, 619, 617, - 607, 0, 699, 757, 0, 747, 0, 0, 0, 780, - 0, 0, 782, 784, 0, 0, 787, 0, 763, 762, - 0, 0, 746, 0, 0, 826, 0, 1322, 0, 0, - 208, 0, 0, 0, 851, 0, 0, 0, 841, 837, - 0, 933, 934, 935, 936, 937, 938, 939, 940, 941, - 942, 943, 944, 945, 857, 1359, 0, 863, 1362, 0, - 1363, 1364, 1361, 1358, 1365, 1366, 0, 0, 0, 0, - 1250, 1246, 0, 0, 0, 0, 1152, 1154, 1156, 0, - 895, 894, 1161, 1167, 1170, 1174, 1175, 1176, 1171, 1172, - 1173, 1163, 1164, 1165, 1166, 1168, 1169, 0, 1189, 0, - 1143, 0, 0, 0, 0, 0, 0, 0, 0, 1290, - 1289, 0, 1313, 0, 1075, 1059, 0, 0, 1150, 1076, - 1297, 1287, 1265, 0, 0, 0, 1335, 1334, 955, 964, - 967, 999, 1000, 971, 972, 973, 977, 1357, 1356, 1284, - 0, 1276, 0, 0, 956, 981, 986, 0, 1241, 1244, - 1016, 1243, 0, 1004, 0, 994, 0, 1002, 1006, 982, - 997, 0, 978, 0, 1277, 1186, 1188, 0, 1184, 0, - 968, 969, 970, 960, 961, 962, 963, 965, 966, 974, - 1160, 1158, 1159, 0, 1263, 0, 1275, 0, 0, 1112, - 0, 0, 1001, 1281, 0, 825, 632, 825, 0, 953, - 1524, 1354, 1517, 1354, 1506, 1196, 1319, 1353, 0, 606, - 0, 1526, 158, 162, 0, 1264, 192, 194, 740, 0, - 639, 640, 644, 0, 0, 644, 623, 566, 1941, 1821, - 0, 0, 0, 0, 688, 729, 0, 720, 685, 686, - 0, 684, 1326, 689, 1325, 690, 693, 694, 656, 1314, - 730, 732, 0, 725, 0, 1320, 572, 591, 0, 0, - 0, 0, 0, 555, 554, 736, 1501, 1501, 1503, 1502, - 0, 50, 0, 1694, 74, 0, 0, 0, 0, 0, - 0, 288, 70, 71, 0, 390, 0, 69, 65, 288, - 116, 1694, 460, 1694, 460, 1588, 1658, 1839, 0, 63, - 362, 107, 0, 144, 77, 79, 393, 0, 347, 0, - 0, 97, 112, 137, 0, 0, 52, 239, 253, 258, - 140, 262, 259, 1391, 260, 151, 0, 48, 0, 138, - 0, 1389, 0, 0, 54, 142, 1393, 1540, 516, 0, - 1262, 0, 630, 630, 630, 628, 629, 1079, 0, 1202, - 0, 1204, 1205, 994, 1401, 1400, 1402, 1399, 487, 500, - 0, 387, 0, 513, 490, 491, 501, 1369, 222, 0, - 213, 388, 0, 388, 0, 1371, 0, 0, 203, 199, - 217, 223, 0, 0, 0, 0, 0, 386, 378, 376, - 409, 0, 383, 377, 0, 0, 333, 0, 1582, 0, - 0, 0, 0, 481, 0, 0, 0, 0, 0, 0, - 270, 271, 426, 1352, 428, 0, 430, 235, 233, 1414, - 2062, 507, 1200, 0, 505, 512, 506, 509, 510, 504, - 503, 0, 498, 0, 534, 0, 0, 0, 0, 0, - 0, 0, 0, 1089, 1208, 0, 1227, 1226, 1027, 1034, - 1037, 1041, 1042, 1043, 1228, 0, 0, 0, 1038, 1039, - 1040, 1030, 1031, 1032, 1033, 1035, 1036, 1044, 823, 0, - 0, 817, 1237, 1236, 1230, 1231, 0, 1097, 1098, 1099, - 1238, 0, 0, 792, 661, 663, 660, 0, 0, 825, - 619, 619, 619, 619, 616, 0, 0, 0, 824, 0, - 716, 677, 678, 0, 0, 788, 786, 0, 810, 0, - 783, 0, 789, 0, 774, 0, 781, 830, 797, 0, - 0, 799, 1492, 847, 0, 842, 838, 0, 0, 0, - 848, 0, 0, 0, 0, 0, 0, 0, 1207, 0, - 625, 1073, 0, 0, 0, 1247, 0, 1021, 864, 877, - 0, 1155, 1077, 0, 1178, 1142, 905, 904, 906, 906, - 1022, 0, 1292, 1294, 0, 0, 0, 0, 1304, 0, - 1024, 1255, 0, 1103, 1253, 1196, 1146, 1148, 1305, 1058, - 889, 953, 0, 0, 0, 0, 0, 0, 0, 1005, - 996, 0, 1003, 1007, 0, 0, 0, 990, 0, 0, - 988, 1017, 984, 0, 0, 1018, 1262, 0, 1266, 0, - 0, 1111, 1120, 743, 739, 699, 630, 699, 0, 1486, - 1508, 1505, 0, 604, 0, 0, 1527, 0, 181, 0, - 0, 0, 0, 184, 198, 195, 1526, 0, 0, 634, - 636, 0, 1179, 644, 638, 692, 691, 0, 654, 727, - 652, 0, 733, 0, 589, 0, 575, 0, 766, 0, - 0, 1495, 1496, 0, 0, 0, 337, 0, 0, 0, - 288, 0, 398, 0, 405, 0, 0, 390, 369, 67, - 66, 96, 0, 0, 0, 59, 115, 88, 80, 55, - 94, 0, 0, 99, 0, 92, 109, 110, 108, 113, - 0, 298, 323, 0, 0, 334, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 516, - 1533, 1263, 1259, 1263, 0, 0, 0, 632, 1080, 0, - 486, 540, 537, 538, 536, 244, 397, 0, 0, 0, - 211, 385, 0, 1386, 466, 469, 1368, 423, 0, 204, - 0, 202, 222, 0, 226, 0, 0, 213, 388, 0, - 361, 371, 372, 357, 384, 355, 354, 356, 0, 1583, - 237, 0, 1577, 388, 1385, 0, 0, 482, 473, 0, - 478, 0, 0, 476, 0, 1380, 269, 460, 0, 494, - 535, 542, 522, 527, 0, 533, 529, 528, 523, 531, - 530, 526, 1090, 1101, 1225, 0, 0, 0, 0, 816, - 819, 0, 1096, 1091, 790, 0, 0, 699, 0, 0, - 0, 0, 610, 609, 615, 0, 0, 1114, 0, 680, - 785, 0, 0, 0, 772, 761, 767, 768, 0, 0, - 0, 828, 827, 798, 851, 0, 831, 851, 0, 851, - 0, 849, 0, 858, 946, 947, 948, 949, 950, 951, - 952, 883, 0, 1249, 1245, 1151, 1153, 1190, 901, 899, - 1023, 1295, 1288, 1291, 1195, 1299, 1301, 0, 0, 0, - 0, 1312, 0, 0, 1145, 1313, 1333, 957, 0, 0, - 987, 1242, 1008, 0, 0, 0, 983, 1178, 0, 0, - 0, 0, 0, 992, 0, 1270, 1263, 0, 1269, 0, - 0, 0, 0, 1085, 744, 716, 0, 716, 0, 0, - 600, 602, 605, 167, 1525, 0, 1520, 159, 160, 161, - 0, 0, 0, 176, 153, 0, 0, 193, 181, 169, - 642, 643, 0, 637, 653, 1315, 1321, 574, 0, 1055, - 0, 0, 571, 0, 145, 288, 0, 0, 73, 0, - 407, 349, 399, 382, 364, 0, 0, 0, 289, 0, - 424, 0, 0, 370, 0, 0, 0, 0, 350, 0, - 0, 309, 0, 0, 382, 0, 389, 305, 306, 0, - 58, 89, 0, 85, 0, 114, 0, 0, 0, 0, - 0, 61, 84, 0, 56, 836, 460, 460, 64, 1346, - 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2118, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, - 2127, 2012, 295, 2013, 1763, 2014, 2015, 2016, 2017, 2018, - 0, 2019, 834, 2020, 2021, 2206, 2022, 2023, 1163, 1164, - 294, 293, 392, 290, 400, 292, 0, 1347, 291, 395, - 348, 0, 0, 141, 1392, 0, 139, 0, 1390, 148, - 146, 143, 1394, 1532, 0, 0, 1083, 1084, 1081, 630, - 0, 0, 0, 516, 493, 0, 0, 0, 1582, 0, - 0, 1694, 0, 200, 0, 0, 225, 224, 214, 0, - 1386, 210, 385, 0, 415, 333, 836, 410, 0, 1582, - 1580, 0, 1386, 1576, 465, 468, 0, 0, 557, 470, - 0, 0, 0, 431, 508, 0, 532, 1047, 0, 0, - 0, 0, 670, 0, 676, 716, 614, 613, 612, 611, - 698, 1632, 1924, 1820, 0, 702, 697, 700, 705, 707, - 706, 708, 704, 715, 0, 718, 679, 809, 1191, 1193, - 0, 0, 0, 0, 773, 775, 0, 777, 0, 829, - 845, 0, 846, 0, 844, 839, 850, 1248, 1293, 1302, - 1303, 1298, 1307, 1309, 0, 0, 0, 954, 1254, 1025, - 1014, 1012, 1009, 0, 1010, 991, 0, 0, 989, 985, - 0, 1019, 0, 0, 1267, 0, 1106, 0, 1109, 1123, - 1119, 1118, 1114, 1080, 1114, 1487, 598, 601, 0, 180, - 157, 183, 182, 0, 1264, 190, 0, 0, 181, 0, - 185, 483, 0, 0, 586, 765, 579, 580, 0, 403, - 75, 0, 382, 0, 288, 366, 365, 368, 363, 367, - 0, 425, 0, 0, 307, 0, 314, 352, 353, 351, - 308, 382, 388, 310, 0, 0, 0, 81, 60, 57, - 62, 82, 0, 0, 83, 86, 830, 835, 98, 91, - 1346, 2127, 2136, 0, 0, 0, 76, 78, 0, 0, - 1261, 1260, 0, 489, 488, 539, 485, 496, 244, 0, - 0, 0, 357, 1579, 0, 0, 0, 385, 205, 0, - 227, 0, 0, 0, 1582, 0, 0, 285, 0, 330, - 0, 230, 1581, 0, 0, 1568, 0, 0, 1378, 1379, - 0, 495, 1048, 0, 1049, 820, 0, 0, 668, 1114, - 0, 0, 0, 709, 703, 0, 1113, 1115, 0, 665, - 1194, 769, 0, 771, 0, 795, 0, 795, 778, 840, - 832, 1300, 1310, 1311, 1306, 1104, 0, 1011, 1015, 1013, - 993, 1263, 1271, 1263, 1268, 1108, 1122, 1125, 718, 1331, - 718, 603, 597, 0, 0, 168, 0, 0, 165, 152, - 170, 1180, 576, 577, 0, 288, 0, 381, 404, 319, - 297, 0, 0, 0, 304, 311, 414, 313, 0, 90, - 106, 0, 0, 394, 149, 147, 1082, 516, 0, 216, - 1386, 333, 1576, 0, 0, 0, 0, 357, 237, 1578, - 346, 339, 340, 341, 342, 343, 344, 345, 360, 359, - 331, 332, 0, 0, 0, 0, 471, 1380, 0, 187, - 196, 0, 187, 1050, 671, 0, 718, 0, 0, 0, - 701, 0, 0, 717, 0, 562, 1192, 0, 760, 758, - 0, 759, 1308, 0, 0, 0, 0, 632, 665, 665, - 154, 0, 155, 191, 0, 0, 0, 388, 406, 380, - 0, 373, 317, 316, 318, 322, 0, 320, 0, 336, - 0, 329, 297, 0, 93, 0, 401, 484, 492, 0, - 287, 1570, 385, 0, 215, 1576, 333, 1582, 1576, 0, - 1573, 0, 0, 0, 0, 189, 1386, 0, 189, 0, - 665, 711, 0, 710, 1117, 1116, 667, 770, 0, 1105, - 1273, 1272, 0, 1129, 561, 560, 0, 0, 0, 0, - 414, 0, 358, 0, 0, 319, 0, 312, 411, 412, - 413, 0, 325, 315, 326, 87, 105, 402, 0, 385, - 1571, 286, 231, 1569, 1574, 1575, 0, 187, 186, 641, - 188, 825, 197, 641, 675, 563, 712, 664, 776, 1124, - 0, 0, 0, 0, 0, 164, 825, 175, 0, 329, - 379, 374, 296, 321, 335, 0, 0, 0, 327, 0, - 328, 1576, 0, 189, 644, 1376, 644, 1910, 1633, 1875, - 0, 1141, 1130, 1141, 1141, 1121, 156, 163, 0, 288, - 301, 0, 300, 0, 391, 324, 1572, 1386, 641, 177, - 178, 0, 1134, 1133, 1132, 1136, 1135, 0, 1128, 1126, - 1127, 825, 408, 299, 303, 302, 825, 644, 0, 0, - 1138, 0, 1139, 174, 1377, 179, 1131, 1137, 1140 + 0, 0, 0, 0, 1050, 1049, 1098, 821, 0, 824, + 0, 0, 1235, 1236, 0, 1099, 0, 0, 1242, 0, + 0, 0, 1104, 0, 759, 0, 0, 660, 661, 669, + 665, 672, 0, 675, 662, 611, 561, 1685, 1726, 0, + 622, 622, 622, 620, 610, 0, 702, 760, 0, 750, + 0, 0, 0, 783, 0, 0, 785, 787, 0, 0, + 790, 0, 766, 765, 0, 0, 749, 0, 0, 829, + 0, 1323, 0, 0, 211, 0, 0, 0, 854, 0, + 0, 0, 844, 840, 0, 936, 937, 938, 939, 940, + 941, 942, 943, 944, 945, 946, 947, 948, 860, 1360, + 0, 866, 1363, 0, 1364, 1365, 1362, 1359, 1366, 1367, + 0, 0, 0, 0, 1253, 1249, 0, 0, 0, 0, + 0, 1155, 1157, 1159, 0, 898, 897, 1164, 1170, 1173, + 1177, 1178, 1179, 1174, 1175, 1176, 1166, 1167, 1168, 1169, + 1171, 1172, 0, 1192, 0, 1146, 0, 0, 0, 0, + 0, 0, 0, 0, 1291, 1290, 0, 1314, 0, 1079, + 1063, 0, 0, 1153, 1080, 1288, 1298, 1266, 0, 0, + 0, 1336, 1335, 958, 967, 970, 1003, 1004, 974, 975, + 976, 980, 1358, 1357, 1285, 0, 1277, 0, 0, 959, + 984, 989, 0, 1244, 1247, 1020, 1246, 0, 1008, 0, + 997, 0, 1006, 1010, 985, 1000, 0, 981, 0, 1278, + 1189, 1191, 0, 1187, 0, 971, 972, 973, 963, 964, + 965, 966, 968, 969, 977, 1163, 1161, 1162, 0, 1264, + 0, 1276, 0, 0, 1115, 0, 0, 1005, 1282, 0, + 828, 635, 828, 0, 956, 1525, 1355, 1518, 1355, 1507, + 1199, 1320, 1354, 0, 609, 0, 1527, 158, 162, 0, + 1265, 192, 194, 743, 0, 642, 643, 647, 0, 0, + 647, 626, 569, 1942, 1822, 0, 0, 0, 0, 691, + 732, 0, 723, 688, 689, 0, 687, 1327, 692, 1326, + 693, 696, 697, 659, 1315, 733, 735, 0, 728, 0, + 1321, 575, 594, 0, 0, 0, 0, 0, 558, 557, + 739, 1502, 1502, 1504, 1503, 0, 50, 0, 1695, 74, + 0, 0, 0, 0, 0, 0, 291, 70, 71, 0, + 393, 0, 69, 65, 291, 116, 1695, 463, 1695, 463, + 1589, 1659, 1840, 0, 63, 365, 107, 0, 144, 77, + 79, 396, 0, 350, 0, 0, 97, 112, 137, 0, + 0, 52, 242, 256, 261, 140, 265, 262, 1392, 263, + 151, 0, 48, 0, 138, 0, 1390, 0, 0, 54, + 142, 1394, 1541, 519, 0, 1263, 0, 633, 633, 633, + 631, 632, 1083, 0, 1205, 0, 1207, 1208, 997, 1402, + 1401, 1403, 1400, 490, 503, 0, 390, 0, 516, 493, + 494, 504, 1370, 225, 0, 216, 391, 0, 0, 391, + 0, 1372, 0, 0, 220, 226, 0, 0, 0, 0, + 0, 389, 381, 379, 412, 0, 386, 380, 0, 0, + 336, 0, 1583, 0, 1664, 199, 204, 0, 0, 0, + 0, 484, 0, 0, 0, 0, 0, 0, 273, 274, + 429, 1353, 431, 0, 433, 238, 236, 1415, 2063, 510, + 1203, 0, 508, 515, 509, 512, 513, 507, 506, 0, + 501, 0, 537, 0, 0, 0, 0, 0, 0, 0, + 0, 1093, 1211, 0, 1230, 1229, 1031, 1038, 1041, 1045, + 1046, 1047, 1231, 0, 0, 0, 1042, 1043, 1044, 1034, + 1035, 1036, 1037, 1039, 1040, 1048, 826, 0, 0, 820, + 1240, 1239, 1233, 1234, 0, 1101, 1102, 1103, 1241, 0, + 0, 795, 664, 666, 663, 0, 0, 828, 622, 622, + 622, 622, 619, 0, 0, 0, 827, 0, 719, 680, + 681, 0, 0, 791, 789, 0, 813, 0, 786, 0, + 792, 0, 777, 0, 784, 833, 800, 0, 0, 802, + 1493, 850, 0, 845, 841, 0, 0, 0, 851, 0, + 0, 0, 0, 0, 0, 0, 1210, 0, 628, 1077, + 0, 0, 0, 1250, 0, 1025, 867, 880, 1002, 0, + 1158, 1081, 0, 1181, 1145, 908, 907, 909, 909, 1026, + 0, 1293, 1295, 0, 0, 0, 0, 1305, 0, 1028, + 0, 1199, 1149, 1151, 1306, 1062, 892, 956, 0, 0, + 0, 0, 0, 0, 0, 1009, 999, 0, 1007, 1011, + 0, 0, 0, 993, 0, 0, 991, 1021, 987, 0, + 0, 1022, 1263, 0, 1267, 0, 0, 1114, 1123, 746, + 742, 702, 633, 702, 0, 1487, 1509, 1506, 0, 607, + 0, 0, 1528, 0, 181, 0, 0, 0, 0, 184, + 198, 195, 1527, 0, 0, 637, 639, 0, 1182, 647, + 641, 695, 694, 0, 657, 730, 655, 0, 736, 0, + 592, 0, 578, 0, 769, 0, 0, 1496, 1497, 0, + 0, 0, 340, 0, 0, 0, 291, 0, 401, 0, + 408, 0, 0, 393, 372, 67, 66, 96, 0, 0, + 0, 59, 115, 88, 80, 55, 94, 0, 0, 99, + 0, 92, 109, 110, 108, 113, 0, 301, 326, 0, + 0, 337, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 519, 1534, 1264, 1264, 1260, + 0, 0, 0, 635, 1084, 0, 489, 543, 540, 541, + 539, 247, 400, 0, 0, 0, 214, 388, 0, 0, + 1387, 469, 472, 1369, 426, 0, 225, 0, 229, 0, + 0, 216, 391, 0, 364, 374, 375, 360, 387, 358, + 357, 359, 0, 1584, 240, 0, 1578, 0, 206, 202, + 391, 1386, 0, 0, 485, 476, 0, 481, 0, 0, + 479, 0, 1381, 272, 463, 0, 497, 538, 545, 525, + 530, 0, 536, 532, 531, 526, 534, 533, 529, 1094, + 1105, 1228, 0, 0, 0, 0, 819, 822, 0, 1100, + 1095, 793, 0, 0, 702, 0, 0, 0, 0, 613, + 612, 618, 0, 0, 1117, 0, 683, 788, 0, 0, + 0, 775, 764, 770, 771, 0, 0, 0, 831, 830, + 801, 854, 0, 834, 854, 0, 854, 0, 852, 0, + 861, 949, 950, 951, 952, 953, 954, 955, 886, 0, + 1252, 1248, 1154, 1156, 1193, 904, 902, 1027, 1296, 1289, + 1292, 1198, 1300, 1302, 0, 0, 0, 0, 1313, 0, + 1148, 1314, 1334, 960, 0, 0, 990, 1245, 1012, 0, + 0, 0, 986, 1181, 0, 0, 0, 0, 0, 995, + 0, 1271, 1264, 0, 1270, 0, 0, 0, 0, 1089, + 747, 719, 0, 719, 0, 1256, 0, 603, 605, 608, + 167, 1526, 0, 1521, 159, 160, 161, 0, 0, 0, + 176, 153, 0, 0, 193, 181, 169, 645, 646, 0, + 640, 656, 1316, 1322, 577, 0, 1059, 0, 0, 574, + 0, 145, 291, 0, 0, 73, 0, 410, 352, 402, + 385, 367, 0, 0, 0, 292, 0, 427, 0, 0, + 373, 0, 0, 0, 0, 353, 0, 0, 312, 0, + 0, 385, 0, 392, 308, 309, 0, 58, 89, 0, + 85, 0, 114, 0, 0, 0, 0, 0, 61, 84, + 0, 56, 839, 463, 463, 64, 1347, 1994, 1995, 1996, + 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2119, 2005, + 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2128, 2013, 298, + 2014, 1764, 2015, 2016, 2017, 2018, 2019, 0, 2020, 837, + 2021, 2022, 2208, 2023, 2024, 1166, 1167, 297, 296, 395, + 293, 403, 295, 0, 1348, 294, 398, 351, 0, 0, + 141, 1393, 0, 139, 0, 1391, 148, 146, 143, 1395, + 1533, 0, 0, 1087, 1088, 1085, 633, 0, 0, 0, + 519, 496, 0, 0, 0, 1583, 201, 0, 0, 1695, + 0, 0, 228, 227, 217, 0, 1387, 213, 388, 0, + 418, 336, 839, 413, 0, 1583, 1581, 0, 0, 207, + 0, 205, 1387, 1577, 468, 471, 0, 0, 560, 473, + 0, 0, 0, 434, 511, 0, 535, 1051, 0, 0, + 0, 0, 673, 0, 679, 719, 617, 616, 615, 614, + 701, 1633, 1925, 1821, 0, 705, 700, 703, 708, 710, + 709, 711, 707, 718, 0, 721, 682, 812, 1194, 1196, + 0, 0, 0, 0, 776, 778, 0, 780, 0, 832, + 848, 0, 849, 0, 847, 842, 853, 1251, 1294, 1303, + 1304, 1299, 1308, 1310, 0, 0, 0, 957, 1029, 1018, + 1016, 1013, 0, 1014, 994, 0, 0, 992, 988, 0, + 1023, 0, 0, 1268, 0, 1109, 0, 1112, 1126, 1122, + 1121, 1117, 1084, 1117, 1488, 601, 604, 0, 180, 157, + 183, 182, 0, 1265, 190, 0, 0, 181, 0, 185, + 486, 0, 0, 589, 768, 582, 583, 0, 406, 75, + 0, 385, 0, 291, 369, 368, 371, 366, 370, 0, + 428, 0, 0, 310, 0, 317, 355, 356, 354, 311, + 385, 391, 313, 0, 0, 0, 81, 60, 57, 62, + 82, 0, 0, 83, 86, 833, 838, 98, 91, 1347, + 2128, 2137, 0, 0, 0, 76, 78, 0, 0, 1262, + 1261, 0, 492, 491, 542, 488, 499, 247, 0, 0, + 0, 360, 1580, 0, 0, 0, 388, 0, 230, 0, + 0, 0, 1583, 0, 0, 288, 0, 333, 0, 233, + 1582, 200, 203, 0, 0, 0, 1569, 0, 0, 1379, + 1380, 0, 498, 1052, 0, 1053, 823, 0, 0, 671, + 1117, 0, 0, 0, 712, 706, 0, 1116, 1118, 0, + 668, 1197, 772, 0, 774, 0, 798, 0, 798, 781, + 843, 835, 1301, 1311, 1312, 1307, 1107, 0, 1015, 1019, + 1017, 996, 1264, 1264, 1272, 1269, 1111, 1125, 1128, 721, + 1332, 721, 606, 600, 0, 0, 168, 0, 0, 165, + 152, 170, 1183, 579, 580, 0, 291, 0, 384, 407, + 322, 300, 0, 0, 0, 307, 314, 417, 316, 0, + 90, 106, 0, 0, 397, 149, 147, 1086, 519, 0, + 219, 1387, 336, 1577, 0, 0, 0, 0, 360, 240, + 1579, 349, 342, 343, 344, 345, 346, 347, 348, 363, + 362, 334, 335, 208, 0, 0, 0, 0, 474, 1381, + 0, 187, 196, 0, 187, 1054, 674, 0, 721, 0, + 0, 0, 704, 0, 0, 720, 0, 565, 1195, 0, + 763, 761, 0, 762, 1309, 0, 0, 0, 0, 635, + 668, 668, 154, 0, 155, 191, 0, 0, 0, 391, + 409, 383, 0, 376, 320, 319, 321, 325, 0, 323, + 0, 339, 0, 332, 300, 0, 93, 0, 404, 487, + 495, 0, 290, 1571, 388, 0, 218, 1577, 336, 1583, + 1577, 0, 1574, 0, 0, 0, 0, 189, 1387, 0, + 189, 0, 668, 714, 0, 713, 1120, 1119, 670, 773, + 0, 1108, 1274, 1273, 0, 1132, 564, 563, 0, 0, + 0, 0, 417, 0, 361, 0, 0, 322, 0, 315, + 414, 415, 416, 0, 328, 318, 329, 87, 105, 405, + 0, 388, 1572, 289, 234, 1570, 1575, 1576, 0, 187, + 186, 644, 188, 828, 197, 644, 678, 566, 715, 667, + 779, 1127, 0, 0, 0, 0, 0, 164, 828, 175, + 0, 332, 382, 377, 299, 324, 338, 0, 0, 0, + 330, 0, 331, 1577, 0, 189, 647, 1377, 647, 1911, + 1634, 1876, 0, 1144, 1133, 1144, 1144, 1124, 156, 163, + 0, 291, 304, 0, 303, 0, 394, 327, 1573, 1387, + 644, 177, 178, 0, 1137, 1136, 1135, 1139, 1138, 0, + 1131, 1129, 1130, 828, 411, 302, 306, 305, 828, 647, + 0, 0, 1141, 0, 1142, 174, 1378, 179, 1134, 1140, + 1143 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 47, 48, 49, 760, 2707, 2708, 2709, 2318, 2307, - 2308, 1792, 1793, 1232, 3524, 2319, 1233, 1234, 2711, 761, - 811, 1176, 860, 1114, 1643, 921, 1269, 1270, 762, 1799, - 763, 2953, 2233, 2651, 3506, 54, 3245, 2236, 1190, 3248, - 3470, 2946, 3243, 2652, 3545, 3599, 3246, 2237, 2238, 3471, - 2239, 764, 2770, 2771, 765, 766, 1891, 58, 1334, 555, - 1888, 3116, 2774, 2775, 767, 768, 1367, 1368, 976, 769, - 1892, 1831, 3071, 1252, 1821, 1382, 62, 1915, 770, 107, - 917, 64, 771, 2694, 3072, 3517, 2722, 3654, 3006, 3007, - 3514, 3515, 2697, 2321, 3582, 3583, 2789, 1812, 3577, 2408, - 3458, 2327, 2301, 3008, 2416, 3417, 3124, 2322, 2988, 2781, - 2782, 2409, 3510, 1910, 2410, 3511, 3264, 2411, 1866, 1895, - 2698, 3584, 2328, 1867, 2693, 3073, 1796, 2412, 3521, 2413, - 556, 2992, 772, 751, 752, 968, 1361, 753, 773, 1901, - 1902, 1903, 1904, 1905, 1906, 952, 1907, 774, 775, 2750, - 2386, 3318, 2808, 3319, 2453, 2380, 1391, 2445, 1935, 1869, - 1392, 544, 1949, 2809, 2755, 1936, 776, 1115, 72, 73, - 1023, 74, 3258, 75, 76, 1769, 1770, 1771, 862, 872, - 873, 1723, 2939, 2940, 2645, 1477, 2020, 865, 1195, 1738, - 846, 847, 1855, 888, 1858, 1733, 1734, 2242, 2659, 1762, - 1763, 1204, 1205, 2006, 2007, 3485, 2008, 2009, 1470, 1471, - 3358, 2523, 2524, 1481, 1750, 1754, 1755, 2263, 2253, 1741, - 2520, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 1116, 2847, - 3369, 1758, 1759, 1207, 1208, 1209, 1767, 2273, 78, 79, - 2215, 2633, 2634, 817, 818, 3183, 1501, 1772, 2853, 2854, - 2855, 3186, 3187, 3188, 819, 1018, 1019, 1046, 1041, 1490, - 2032, 820, 821, 1983, 1984, 2491, 1048, 2022, 2044, 2045, - 2861, 2548, 1569, 2304, 1570, 1571, 2059, 1572, 1117, 1573, - 1601, 1118, 1606, 1575, 1119, 1120, 1121, 1578, 1122, 1123, - 1124, 1125, 1594, 1126, 1127, 1618, 2061, 2062, 2063, 2064, - 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, - 1177, 1773, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, - 1137, 1138, 823, 1139, 2592, 1140, 1694, 2209, 2632, 3175, - 3366, 3367, 2933, 3231, 3397, 3497, 3613, 3641, 3642, 3668, - 1141, 1142, 1638, 1639, 1640, 2096, 2097, 2098, 2099, 2203, - 1688, 1689, 1143, 3075, 1691, 2119, 3179, 3180, 1178, 1463, - 1631, 1313, 1314, 1583, 1437, 1438, 1444, 1958, 1452, 1456, - 1988, 1989, 1464, 2170, 1144, 2090, 2091, 2566, 1596, 2593, - 2594, 1145, 1268, 1644, 2928, 2206, 1692, 2163, 1152, 1146, - 1153, 1148, 1627, 2900, 2583, 2584, 1628, 2588, 2896, 2897, - 2132, 2901, 3203, 3204, 2590, 2270, 1720, 2275, 2276, 972, - 1149, 1150, 1151, 1315, 528, 1584, 3600, 1357, 1183, 1316, - 2159, 777, 1053, 2083, 778, 1330, 1881, 779, 3349, 3142, - 1346, 1911, 2421, 557, 780, 781, 537, 85, 2375, 933, - 86, 87, 88, 897, 1384, 782, 1385, 1386, 983, 89, - 2810, 985, 986, 784, 854, 855, 1510, 1708, 1511, 785, - 92, 829, 1782, 786, 1172, 869, 1173, 1175, 787, 1192, - 2648, 2231, 95, 96, 97, 116, 1264, 788, 840, 841, - 878, 100, 101, 1220, 842, 790, 791, 3345, 792, 2792, - 1340, 538, 530, 531, 1586, 725, 1318, 726 + -1, 47, 48, 49, 760, 2713, 2714, 2715, 2323, 2312, + 2313, 1795, 1796, 1233, 3536, 2324, 1234, 1235, 2717, 761, + 811, 1177, 860, 1115, 1646, 921, 1270, 1271, 762, 1802, + 763, 2960, 2238, 2657, 3518, 54, 3254, 2241, 1191, 3257, + 3482, 2953, 3252, 2658, 3557, 3611, 3255, 2242, 2243, 3483, + 2244, 764, 2425, 3140, 3141, 765, 766, 1893, 58, 1334, + 554, 1890, 3122, 2778, 2779, 767, 768, 1369, 1370, 976, + 769, 1894, 1834, 3078, 1253, 1824, 1384, 62, 1919, 770, + 107, 917, 64, 771, 2700, 3079, 3529, 2728, 3666, 3013, + 3014, 3526, 3527, 2703, 2326, 3594, 3595, 2793, 1815, 3589, + 2412, 3469, 2332, 2306, 3015, 2420, 3428, 3130, 2327, 2995, + 2785, 2786, 2413, 3522, 1914, 2414, 3523, 3273, 2415, 1869, + 1897, 2704, 3596, 2333, 1870, 2699, 3080, 1799, 2416, 3533, + 2417, 555, 2999, 772, 751, 752, 968, 1363, 753, 773, + 1905, 1906, 1907, 1908, 1909, 1910, 952, 1911, 774, 775, + 2756, 2391, 3327, 2815, 3328, 2461, 2385, 1393, 2453, 1939, + 1872, 1394, 544, 1953, 2816, 2761, 1940, 776, 1116, 72, + 73, 1023, 74, 3267, 75, 76, 1772, 1773, 1774, 862, + 872, 873, 1726, 2946, 2947, 2651, 1479, 2024, 865, 1196, + 1741, 846, 847, 1858, 888, 1861, 1736, 1737, 2247, 2665, + 1765, 1766, 1205, 1206, 2010, 2011, 3497, 2012, 2013, 1472, + 1473, 3369, 2531, 2532, 1483, 1753, 1757, 1758, 2268, 2258, + 1744, 2528, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 1117, + 2854, 3380, 1761, 1762, 1208, 1209, 1210, 1770, 2278, 78, + 79, 2220, 2639, 2640, 817, 818, 3193, 1503, 1775, 2860, + 2861, 2862, 3196, 3197, 3198, 819, 1018, 1019, 1046, 1041, + 1492, 2036, 820, 821, 1987, 1988, 2499, 1048, 2026, 2048, + 2049, 2868, 2556, 1571, 2309, 1572, 1573, 2063, 1574, 1118, + 1575, 1603, 1119, 1608, 1577, 1120, 1121, 1122, 1580, 1123, + 1124, 1125, 1126, 1596, 1127, 1128, 1621, 2065, 2066, 2067, + 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, + 2078, 1178, 1776, 1130, 1131, 1132, 1133, 1134, 1135, 1136, + 1137, 1138, 1139, 823, 1140, 1141, 1697, 2214, 2638, 3185, + 3377, 3378, 2939, 3240, 3408, 3509, 3625, 3653, 3654, 3680, + 1142, 1143, 1641, 1642, 1643, 2101, 2102, 2103, 2104, 2208, + 1691, 1692, 1144, 3082, 1694, 2124, 3189, 3190, 1179, 1465, + 1634, 1314, 1315, 1585, 1439, 1440, 1446, 1962, 1454, 1458, + 1992, 1993, 1466, 2175, 1145, 2094, 2095, 2574, 1598, 2948, + 1146, 1269, 1647, 2934, 2211, 1695, 2168, 1153, 1147, 1154, + 1149, 1630, 2907, 2592, 2593, 1631, 2597, 2903, 2904, 2137, + 2908, 3213, 3214, 2599, 2275, 1723, 2280, 2281, 972, 1150, + 1151, 1152, 1316, 528, 1586, 3612, 1359, 1184, 1317, 2164, + 777, 1053, 2087, 778, 1331, 1885, 779, 3360, 3152, 1348, + 1915, 2429, 556, 780, 781, 537, 85, 2380, 933, 86, + 87, 88, 897, 1386, 782, 1387, 1388, 983, 89, 2817, + 985, 986, 784, 854, 855, 1512, 1711, 1513, 785, 92, + 829, 1785, 786, 1173, 869, 1174, 1176, 787, 1193, 2654, + 2236, 95, 96, 97, 116, 1265, 788, 840, 841, 878, + 100, 101, 1221, 842, 790, 791, 3356, 792, 2796, 1340, + 538, 530, 531, 1588, 725, 1319, 726 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -3183 +#define YYPACT_NINF -3108 static const int yypact[] = { - 7498, 376, 90, -3183, -3183, 223, 376, 52258, 68277, 157, - 376, 115, 3126, 54753, -3183, -3183, 48744, 43787, 376, 57765, - 74754, 430, 581, 32562, 563, 58267, -3183, -3183, -3183, 68277, - 57765, 58769, 376, 355, 68779, -3183, 376, 35576, 55255, 325, - -3183, 57765, 52, 300, 59271, 57765, 2175, 734, 350, -3183, - -3183, -3183, -3183, -3183, 108, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, 169, -3183, 338, 191, 32562, 32562, 1684, 324, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, 437, - -3183, -3183, 535, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, 35073, -3183, -3183, -3183, -3183, -3183, -3183, 59773, 57765, - 60275, 55757, 60777, -3183, 657, 602, 943, 671, 180, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, 182, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, 537, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, 202, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, 596, -3183, 551, -3183, 208, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, 1613, - -3183, -3183, 914, 1688, 57765, 459, 539, 797, -3183, 61279, - -3183, 788, 57765, -3183, -3183, 799, 996, 1005, -3183, -3183, - 56259, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, 49246, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, 947, -3183, -3183, - 790, -3183, 174, -3183, -3183, 813, 766, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, 872, -3183, -3183, -3183, - 882, 69281, 61781, 62283, -3183, 733, 2594, 8874, 43633, 31556, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, 437, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, 58267, 68277, 748, 754, 1112, 763, 33566, - 776, 36079, 787, 796, 1151, 837, 839, 858, 876, 300, - 32059, 890, 596, 892, 62785, 62785, -28, 33064, 4145, -3183, - 62785, 63287, -3183, 913, -3183, 943, -3183, -3183, -3183, -3183, - 262, 919, -3183, 63789, 63789, 63789, 927, 1219, 63789, -3183, - -3183, -3183, 924, -3183, -3183, 1159, 20059, 20059, 69783, 69783, - 943, 69783, 951, 69783, -3183, -3183, 69, 671, -3183, 596, - -3183, -3183, 1684, -3183, -3183, 55255, -3183, -3183, 170, 1297, - 20059, 57765, 935, -3183, 952, 935, 960, 983, 991, -3183, - 7498, 1348, 1235, 56761, 359, 359, 1485, 359, 623, 1106, - 2816, 3725, -3183, 984, -3183, 1025, -3183, 57765, 58267, 1126, - 1063, 1331, -3183, -3183, 1417, 944, 1221, 1444, 5140, 1480, - 1107, 1484, 1116, 1518, 1495, 1649, 36, -3183, 20059, 49748, - 596, -3183, 11083, 20059, -3183, -3183, -3183, 1270, -3183, -3183, - -3183, -3183, -3183, 57765, 68277, 1177, 1187, -3183, -3183, -3183, - -3183, 1916, 1438, -3183, 1679, 70285, -3183, -3183, 1249, 64291, - 64793, 65295, 65797, 1641, -3183, -3183, 1583, -3183, -3183, -3183, - 1257, -3183, -3183, -3183, 219, 70787, 1595, 1227, 165, -3183, - 1603, 205, -3183, 1605, 1472, 14779, -3183, 1409, -3183, -3183, - -3183, 300, -3183, 256, -3183, -3183, 45814, -3183, -3183, 43633, - 1337, 1258, -3183, 20059, 20059, 1260, 7589, 62785, 63287, 20059, - 57765, -3183, 20059, 25339, 1273, 20059, 20059, 12139, 20059, 30552, - 62785, 4145, 1276, -3183, 605, -3183, 57765, 1281, -3183, 1383, - 1383, 355, 32562, 1588, 32059, 1383, 1765, 1383, -3183, 1024, - 1596, 1517, -3183, 32562, 1517, 1645, 1305, 1609, 1517, -3183, - 290, 1618, 1765, 36581, 1317, -3183, 1383, 1550, -3183, -3183, - 20059, 14779, 66299, 1811, -3183, -3183, -3183, -3183, 1619, -3183, - 68277, 1343, -3183, -3183, -3183, -3183, -3183, -3183, 521, 1866, - 177, 1868, 20059, 177, 177, 1354, 211, 211, -3183, 1552, - 1365, -3183, 212, 1373, 1377, 1887, 1897, 190, 146, 1022, - 177, 20059, -3183, 211, 1387, 1905, 1393, 1912, 181, 214, - -3183, 1399, 215, 20059, 20059, 20059, 319, 20059, 10027, -3183, - 49748, 1922, 57765, 410, -3183, 596, 1414, 943, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, 1418, -3183, 203, 8279, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, 1457, -3183, -3183, - -3183, -3183, 1642, 20059, -3183, -3183, 1421, 1588, -3183, 216, - -3183, -3183, 1588, -3183, -3183, -3183, -3183, -3183, 235, -3183, - 1845, 20059, 20059, -3183, 596, 71289, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, 660, -3183, 437, 615, 47518, 1426, 1430, - 935, 57765, 57765, 1493, -3183, -3183, -3183, -3183, 55255, 257, - 1742, 168, 1573, -3183, -3183, 1684, 1684, 15307, 895, 236, - 72, 15835, 20587, 1807, 1689, 271, 577, 1808, -3183, 1692, - 1919, 25339, 20059, 20059, 623, 1106, 20059, 952, 133, -3183, - -3183, -3183, 1745, 57765, 52760, 783, 786, 1461, 1551, 4, - 1592, 1893, -3183, 1464, -3183, 1558, 57765, 73784, 228, -3183, - 1935, 228, 228, 714, 1936, 1563, 288, 1733, 21, 321, - 1464, 1991, -3183, 55255, 179, 847, 1464, 57765, 1564, 873, - 1464, 1495, 943, 68277, 1258, -3183, -3183, 8587, 1486, -3183, - -3183, -3183, 176, 14779, -3183, 905, 1149, 1178, 1248, 347, - 210, 1315, 1351, 14779, 1371, 1413, 187, 1497, 1525, 1599, - 1674, 1715, 1719, 1739, 1747, 134, 1755, 1760, 1763, 1770, - 1775, 1779, -3183, 1787, 189, 1791, 229, 1399, 14779, 1817, - -3183, 160, 47518, 22, -3183, -3183, 1819, 201, -3183, 47606, - -3183, 1789, 1580, 1582, 68277, 1533, 57765, 1636, 1451, 1867, - 1920, 66786, 1749, -3183, 1823, 57765, 1750, 1991, 1757, 1514, - 1990, 1758, 1187, 1762, 1520, -3183, 71791, 49748, -3183, -3183, - -3183, -3183, -3183, 1895, 1876, 68277, 49748, 1516, -3183, -3183, - 68277, -3183, 57765, 57765, -3183, 57765, 68277, -3183, 702, 47518, - 2036, 1767, 43633, 51254, -3183, -3183, -3183, -3183, 409, 938, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, 943, - 49748, -3183, 4107, 46440, 1528, 20059, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, 1530, 1881, -3183, - -3183, 8146, 1532, 46480, 1536, 25339, 25339, 596, 1804, -3183, - -3183, 25339, 1538, 51756, 46352, 1537, 1539, 46834, 16363, 20059, - 16363, 16363, 46922, -3183, 1542, 46999, 62785, 1534, 57765, 30045, - -3183, -3183, -3183, 20059, 20059, 4145, 57263, 1586, 1546, -3183, - 1549, 1383, -3183, 32562, -3183, 32562, -3183, 1849, 32562, -3183, - -3183, 2879, -3183, 32562, 1850, 20059, 32562, -3183, 32562, 1796, - 1797, 1559, 32562, 1383, 57765, 1566, 57765, -3183, -3183, 47518, - -3183, 1560, 718, 1561, -3183, -3183, -3183, -3183, -3183, -3183, - 1621, -3183, 1621, 1621, -3183, -3183, -3183, -3183, 1567, 1567, - 1569, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, 1571, 1022, -3183, 1621, -3183, 1567, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, 73784, -3183, -3183, - -3183, -3183, 362, 569, -3183, 1572, -3183, -3183, -3183, 1578, - -3183, 1577, 2062, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, 7880, 774, 1567, -3183, -3183, 4373, -3183, -3183, - 20059, 20059, -3183, -3183, 1581, 47518, 1624, -3183, -3183, 20059, - 20059, -3183, -3183, -3183, -3183, 2097, -3183, 20059, 1621, 1621, - -3183, 6844, -3183, 41603, 16891, 1676, 1685, 2097, -3183, 2097, - -3183, 20059, 6844, 2099, 2099, 1594, 37083, -3183, 1766, 47087, - -3183, 1601, 985, 8724, 1600, -3183, -3183, 1593, -3183, 1606, - 1602, 44308, 20059, 158, 596, 596, 20059, -3183, 2097, 20059, - 8008, 8008, -3183, 196, 66299, 20059, 20059, 20059, 20059, 20059, - 20059, 20059, 20059, 48242, 1695, 164, 68277, 20059, 20059, 29532, - 676, -3183, 20059, 1852, -3183, 1616, 20059, 1701, 207, 20059, - 20059, 20059, 20059, 20059, 20059, 20059, 20059, 20059, -3183, -3183, - 28507, 221, 621, 1957, 1977, 13, 534, 20059, 1970, 11083, - -3183, 1970, -3183, -3183, -3183, -3183, -3183, 217, -3183, -3183, - 1560, 1560, 68277, -3183, 57765, 170, 53764, 20059, -3183, -3183, - 1622, 1627, 1917, 2112, 1698, -3183, -3183, 57765, -3183, 40095, - 1943, -3183, 346, 1637, -3183, 46313, 1898, 1943, 1684, -3183, - -3183, 25867, 1772, 1939, 1877, -3183, -3183, 1861, 1863, -3183, - 1653, 47746, 21115, 21115, -3183, 1289, 47518, 1492, -3183, -3183, - -3183, -3183, -3183, -3183, 852, -3183, 57765, 98, 37585, -3183, - 1657, 114, -3183, 2195, 2002, 1966, 1807, 577, 1665, -3183, - 58267, 58267, -3183, -3183, 1200, 1667, 72293, 57765, 1963, 1921, - 1964, -52, 66299, -3183, 1678, -3183, -3183, -3183, 57765, 68277, - 67273, 72795, 50250, 57765, 2143, 2153, 49748, -3183, -3183, 2154, - 2160, -3183, -3183, 57765, 820, 57765, 5451, -3183, -3183, -3183, - -3183, 228, -3183, -3183, -3183, -3183, -3183, 68277, 57765, -3183, - -3183, 228, 68277, 57765, 228, -3183, 1327, 57765, 57765, 68277, - 57765, 1424, 57765, 57765, 943, 1649, -3183, -3183, -3183, 21643, - 27, 27, 1903, 1940, 1942, 1706, 12667, 160, -3183, 20059, - 20059, 1047, 278, 68277, 1894, -3183, -3183, 789, 1944, 247, - -3183, 68277, 1764, 57765, 57765, 57765, 57765, 57765, 888, -3183, - -3183, -3183, -3183, -3183, 1712, -3183, 2091, 2245, 1729, 1730, - 2103, -3183, 1991, 2104, 53262, 574, 1856, 2105, 1776, 2106, - 13195, -3183, -3183, 1735, -3183, -3183, 1737, 2225, 1992, -3183, - -3183, 1976, -3183, 68277, 2265, -3183, 165, -3183, 49748, -3183, - 205, -3183, 1979, 239, -3183, 14779, 20059, -3183, -3183, -3183, - -3183, -3183, -3183, 1258, 29020, -3183, 811, -3183, -3183, 2231, - 943, 2231, 516, -3183, -3183, 2231, -3183, 2214, 2231, -3183, - 66299, -3183, 8895, -3183, 20059, 20059, -3183, 20059, 2102, -3183, - 2267, 2267, 66299, 25339, 25339, 25339, 25339, 25339, 25339, 575, - 1387, 25339, 25339, 25339, 25339, 25339, 25339, 25339, 25339, 25339, - 26395, 592, -3183, -3183, 830, 2240, 20059, 20059, 2114, 2102, - 20059, -3183, 66299, 1761, -3183, 1769, 1771, 20059, -3183, 66299, - -3183, 57765, 1773, -3183, -3183, -3183, -6, 1768, 1777, -3183, - -3183, 1588, -3183, 710, 773, 57765, 4193, 5403, 6185, -3183, - -3183, 20059, 2101, -3183, -20, -3183, 2879, 2879, 32562, -3183, - 20059, 1782, -3183, -3183, 32562, 2119, -3183, 2879, -3183, -3183, - 38087, 2879, -3183, 66299, 832, -3183, 57765, 66299, 870, 20059, - -3183, 14779, 2284, 66299, 2249, 68277, 68277, 2289, 1781, 1785, - 2097, 1872, -3183, 1873, 1874, 1882, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, 66299, -3183, -3183, 153, - -3183, -3183, -3183, -3183, -3183, -3183, 1801, 1774, 20059, 20059, - 44, -3183, 8969, 1802, 1805, 7217, -3183, 1806, -3183, 1795, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, 1825, -3183, 1812, - -3183, 1818, 1826, 1838, 1824, 1828, 42113, 20059, 57765, -3183, - 1834, 22171, 2005, 68277, -3183, -3183, 20059, 20059, 57765, -3183, - 2216, 47518, -3183, 1840, 1844, 42152, -3183, -3183, -3183, 234, - 400, 4034, 534, 2551, 2551, 2551, 6844, -3183, -3183, -3183, - 1869, -3183, 25339, 25339, -3183, 2997, 3613, 10027, -3183, -3183, - -3183, -3183, 2198, -3183, 266, -3183, 1846, -3183, -3183, 4268, - -3183, 41603, 6804, 20059, 186, -3183, 20059, 29532, 20059, 1938, - 2551, 2551, 2551, 388, 388, 234, 234, 234, 400, 534, - -3183, -3183, -3183, 1851, 20059, 49748, -3183, 1853, 1854, 2223, - 1393, 20059, -3183, -3183, 32562, 1586, 22, 1586, 2097, 8008, - -3183, 952, -3183, 952, -3183, 47518, 57765, -3183, 1858, 595, - 32562, 1901, 2342, 2324, 68277, -3183, -3183, 1859, 1970, 1875, - -3183, -3183, 1880, 20059, 778, 1880, -3183, 1943, 19, 2096, - 1065, 1065, 1289, 2098, -3183, -3183, 1933, -3183, -3183, -3183, - 20059, 13723, 1499, -3183, 1512, -3183, -3183, -3183, -3183, -3183, - 1878, -3183, 2147, -3183, 57765, -3183, -3183, 25339, 2334, 20059, - 38589, 2338, 2132, -3183, -3183, -3183, 1927, 1927, -3183, -3183, - 1968, 1464, 20059, 2127, -3183, 110, 1885, 2256, -51, 2206, - 68277, -3183, -3183, -3183, 307, 322, 49748, 1678, -3183, -3183, - 270, 2258, 239, 2260, 239, 49748, 49748, 49748, 880, -3183, - -3183, -3183, 943, -3183, -3183, -3183, 390, 887, -3183, 1892, - 1900, -3183, -3183, -3183, 1981, 1319, 1464, 1991, -3183, -3183, - -3183, -3183, -3183, -3183, -3183, 183, 1412, 1464, 1982, -3183, - 1983, -3183, 1985, 1535, 1464, -3183, -3183, 1649, 1258, 17419, - 47518, 249, 160, 160, 160, -3183, -3183, -3183, 14779, -3183, - 1902, 47518, 47518, 144, -3183, -3183, -3183, -3183, 1904, -3183, - 224, -3183, 68277, -3183, -3183, -3183, 1894, 1920, 1823, 57765, - 1991, 1907, 2379, 1187, 1520, -3183, 2066, 40, 2339, -3183, - 68277, -3183, 49748, 68277, 57765, 57765, 57765, 54266, -3183, -3183, - -3183, 1908, 1906, -3183, 16, 2135, 2136, 57765, 1946, 57765, - 1911, 2397, 57765, -3183, 889, 1520, 1520, 17947, 2286, 57765, - 1876, -3183, -3183, -3183, -3183, 68277, -3183, -3183, 47518, -3183, - 1910, -3183, 20059, 50752, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, 49748, -3183, 943, -3183, 943, 2162, 68277, 44810, 943, - 45312, 943, 1926, -3183, 47518, 42191, 47518, 2114, -3183, 238, - 2267, 3706, 3706, 3706, 3330, 2278, 204, 1931, 3706, 3706, - 3706, 572, 572, 238, 238, 238, 2267, 592, 913, 51756, - 1937, -3183, 47518, 47518, -3183, -3183, 1932, -3183, -3183, -3183, - -3183, 1950, 1951, -3183, -3183, -3183, -3183, 68277, 167, 1586, - 325, 325, 325, 325, -3183, 57765, 57765, 57765, 47518, 2400, - 2275, -3183, -3183, 2448, 1953, -3183, -3183, 2879, 47518, 57765, - -3183, 27451, -3183, 57765, -3183, 2301, -3183, 2396, -3183, 57765, - 897, -3183, -3183, -3183, 910, 1958, 1785, 66299, 920, 937, - -3183, 2097, 163, 1956, 1620, 998, 137, 1509, -3183, 55255, - -3183, -3183, 1959, 47191, 20059, -3183, 2336, -3183, -3183, -3183, - 20059, 20059, -3183, 41603, -3183, -3183, -3183, -3183, -75, -75, - -3183, 42238, 1834, 1960, 1961, 57765, 10027, 47438, -3183, 39091, - -3183, -3183, 2285, 1969, -3183, 42277, 47518, -3183, 1766, -3183, - -3183, 8008, 20059, 2317, 3513, 20059, 1967, 20059, 2314, -3183, - -3183, 1974, -3183, -3183, 66299, 20059, 1975, 4945, 25339, 25339, - 5766, -3183, 6361, 20059, 10027, -3183, 43366, 1962, 1986, 1903, - 18475, -3183, 2197, 1971, -3183, 2101, 160, 2101, 1984, -3183, - -3183, -3183, 68277, -3183, 2253, 1987, -3183, 20059, 2142, 68277, - 501, 1408, 950, -3183, 596, 40095, 1901, 20059, 495, -3183, - -3183, 1988, -3183, 1880, -3183, -3183, -3183, 2219, -3183, -3183, - -3183, 57765, -3183, 1993, -3183, 37585, 2333, 10555, -3183, 37585, - 57765, -3183, -3183, 57765, 42634, 2364, -3183, 68277, 68277, 68277, - -3183, 68277, 1994, 1995, 1070, 1997, 397, -3183, 2807, -3183, - -3183, 1070, 2345, 225, 1911, 288, 3372, 76, -3183, -3183, - -3183, 2078, 57765, -3183, 68277, -3183, -3183, -3183, -3183, -3183, - 50250, -3183, -3183, 41100, 49748, -3183, 49748, 20059, 20059, 57765, - 57765, 57765, 57765, 68277, 57765, 57765, 57765, 57765, 57765, 1258, - -3183, 20059, -3183, 20059, 2004, 2006, 2007, 1903, -3183, 251, - -3183, 2008, -3183, -3183, -3183, 321, -3183, 224, 2011, 2012, - -3183, 53262, 1688, 1776, -3183, 1737, 1920, 988, 67775, -3183, - 2019, 2017, 1823, 20059, -3183, 955, 968, 1991, 2022, 2504, - -3183, -3183, -3183, 574, 53262, -3183, -3183, -3183, 2459, -3183, - 733, 226, -3183, 1187, -3183, 1688, 1520, -3183, -3183, 2508, - -3183, 2509, 1688, 47518, 68277, 2090, -3183, 239, 974, -3183, - -3183, -3183, -3183, -3183, 68277, 2026, -3183, 2026, -3183, -3183, - 2026, -3183, -3183, -3183, -3183, 25339, 2380, 2032, 66299, -3183, - -3183, 57765, -3183, -3183, -3183, 987, 2033, 2101, 57765, 57765, - 57765, 57765, -3183, -3183, -3183, 19003, 20059, 2072, 20059, -3183, - -3183, 2034, 11611, 2361, -3183, 26923, -3183, -3183, 2039, 38087, - 68277, -3183, -3183, -3183, -3183, 2097, -3183, -3183, 68277, -3183, - 2045, -3183, 2048, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, 20059, 47518, -3183, 47518, -3183, -3183, -3183, -3183, - -3183, 57765, -3183, -3183, 8667, -3183, 2050, 2051, 68277, 57765, - 106, -3183, 20059, 68277, -3183, 2005, -3183, 380, 20059, 20059, - 2997, -3183, 6951, 20059, 66299, 1006, 2997, 248, 20059, 4557, - 5364, 20059, 20059, 7009, 42720, -3183, 22699, 14251, -3183, 2055, - 20059, 42759, 40597, -3183, 32562, 2275, 2056, 2275, 943, 2058, - 2057, -3183, -3183, 4373, 47518, 20059, -3183, -3183, -3183, -3183, - 2115, 407, 34570, 2293, -3183, 2075, 68277, -3183, 2142, 47518, - -3183, -3183, 41603, -3183, -3183, -3183, -3183, -3183, 2527, 1589, - 2067, 2068, -3183, 1431, -3183, -3183, 68277, 2077, -3183, 2079, - 1070, -3183, 68277, 2108, -3183, 297, 2383, 79, -3183, 20059, - -3183, 2477, 2562, 2807, 2082, 68277, 57765, 25339, -3183, 309, - 232, -3183, 2378, 57765, 2108, 2518, -3183, -3183, -3183, 397, - -3183, 2418, 2335, -3183, 228, -3183, 20059, 397, 2348, 246, - 68277, -3183, -3183, 1443, -3183, 66299, 239, 239, -3183, 1561, - 2109, 2110, 2111, 2113, 2116, 2120, 2122, 2123, 2124, 2126, - 2128, -3183, 2129, 2131, 2137, 2138, 2146, 2158, 2161, 2163, - 1571, 2164, -3183, 2165, 1988, 2166, 2167, 2168, 2169, 2170, - 73297, 2171, 2172, 2174, 2176, 1572, 2178, 2183, 409, 938, - -3183, -3183, -3183, -3183, -3183, -3183, 1227, 2191, -3183, 2125, - -3183, 2100, 1018, -3183, -3183, 2180, -3183, 2196, -3183, -3183, - -3183, -3183, -3183, -3183, 2139, 2204, -3183, -3183, -3183, 160, - 2193, 2203, 68277, 1258, 149, 49748, 68277, 2207, 1946, 2602, - 918, 2369, 2177, -3183, 943, 2209, -3183, 47518, -3183, 49748, - 1776, -3183, 53262, 2302, 241, 2136, 66299, -3183, 298, 1946, - -3183, 2576, 1776, 2235, -3183, 1737, 2310, 20059, 162, -3183, - 2442, 68277, 2217, -3183, -3183, 50752, 2026, 3476, 25339, 66299, - 1031, 1035, -3183, 2726, 2382, 2275, -3183, -3183, -3183, -3183, - -3183, 2218, -35, 2220, 9499, 2215, -3183, -3183, -3183, -3183, - -3183, -3183, 47518, 47518, 68277, 2405, 47518, -3183, -3183, 2221, - 2222, 39593, 2684, 2226, -3183, -3183, 2548, -3183, 31054, -3183, - 1785, 2229, 1785, 66299, 1785, -3183, -3183, 47518, 1834, 20059, - -3183, -3183, -3183, 2227, 2232, 68277, 43405, 2559, -3183, -3183, - 2997, 2997, 6951, 1040, -3183, 2997, 20059, 20059, 2997, 2997, - 20059, -3183, 19531, 394, -3183, 1041, -3183, 42798, -3183, 74271, - -3183, -3183, 2072, 943, 2072, -3183, -3183, 68277, 2233, 2228, - -3183, -3183, -3183, 2296, -3183, -3183, 1046, 2667, 2142, 20059, - -3183, -3183, 2242, 37585, -3183, -3183, -3183, -3183, 37585, 1070, - -3183, 2421, 2108, 2254, -3183, -3183, -3183, -3183, -3183, -3183, - 42884, -3183, 94, 20059, -3183, 1076, 3330, -3183, -3183, -3183, - -3183, 2108, 1187, -3183, 57765, 2734, 2625, -3183, -3183, 47518, - -3183, -3183, 2097, 2097, -3183, -3183, 2396, -3183, -3183, -3183, - 2257, -3183, -3183, 1227, 415, 41100, -3183, -3183, 57765, 57765, - -3183, -3183, 2259, -3183, -3183, -3183, -3183, -3183, 321, 2655, - 1051, 1064, 574, -3183, 1688, 57765, 2630, 53262, -3183, 49748, - -3183, 2746, 2269, 57765, 1946, 1171, 1171, -3183, 2417, -3183, - 2419, -3183, -3183, 2752, 314, -3183, 1365, 57765, -3183, -3183, - 34068, -3183, 3476, 1102, -3183, -3183, 2271, 2277, -3183, 2072, - 20059, 2279, 20059, -3183, 23227, 2759, 2276, -3183, 20059, 2343, - 27979, -3183, 20059, -3183, 57765, 62785, 2281, 62785, -3183, -3183, - -3183, -3183, 57765, -3183, -3183, -3183, 20059, -3183, 2997, 2997, - 2997, 20059, -3183, 20059, -3183, -3183, -3183, 2494, 2405, -3183, - 2405, -3183, -3183, 20059, 1688, 596, 2624, 68277, 54, -3183, - 47518, -3183, -3183, -3183, 57765, -3183, 49748, -3183, 1070, 60, - 2290, 20059, 43241, 2530, -3183, -3183, 2564, -3183, 2623, -3183, - 2355, 540, 2372, -3183, -3183, -3183, -3183, 1258, 943, -3183, - 1776, 2136, 2235, 2298, 57765, 1104, 1688, 574, 733, -3183, - -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, -3183, - -3183, -3183, 1688, 2743, 2531, 2754, -3183, 2090, 20059, 245, - -3183, 1119, 2740, -3183, -3183, 2827, 2405, 2315, 23227, 2318, - -3183, 2321, 68277, 47518, 2472, -3183, -3183, 2325, -3183, -3183, - 20059, -3183, -3183, 43809, 2329, 2330, 2792, 1903, 2343, 2343, - -3183, 407, -3183, -3183, 2761, 34068, 2719, 1187, 1070, 2346, - 1121, -3183, -3183, -3183, -3183, -3183, 1991, -3183, 43280, 2582, - 641, 2567, 2290, 20059, -3183, 2415, -3183, -3183, -3183, 2821, - -3183, -3183, 53262, 2344, -3183, 2235, 2136, 1946, 2235, 2571, - -3183, 2573, 2347, 43327, 68277, 68277, 1776, 34068, 68277, 2349, - 2343, -3183, 2350, -3183, -3183, -3183, 30045, -3183, 2351, -3183, - -3183, -3183, 20059, 166, -3183, -3183, 2402, 57765, 1142, 46, - 2564, 41100, -3183, 49748, 2909, 60, 2664, -3183, -3183, -3183, - -3183, 197, 2580, -3183, 2584, -3183, 47518, -3183, 1688, 53262, - -3183, -3183, -3183, -3183, -3183, -3183, 34068, 2740, -3183, 346, - -3183, 1586, -3183, 346, -3183, -3183, -3183, -3183, -3183, 1537, - 23755, 23755, 23755, 2354, 1688, -3183, 1586, -3183, 2487, 2567, - -3183, -3183, -3183, -3183, -3183, 200, 200, 2756, -3183, 2422, - -3183, 2235, 1146, 68277, 1880, -3183, 1880, 24811, 2513, 313, - 46391, 2735, -3183, 2735, 2735, -3183, -3183, -3183, 40095, -3183, - -3183, 2859, -3183, 242, -3183, -3183, -3183, 1776, 346, -3183, - -3183, 2849, -3183, -3183, -3183, -3183, -3183, 148, -3183, -3183, - -3183, 1586, 1070, -3183, -3183, -3183, 1586, 1880, 24283, 2519, - -3183, 2592, -3183, -3183, -3183, -3183, -3183, -3183, -3183 + 7465, -24, 1034, -3108, -3108, 237, -24, 52537, 69124, 176, + -24, 110, 1763, 55042, -3108, -3108, 49009, 4834, -24, 58066, + 75626, 404, 373, 32700, 490, 58570, -3108, -3108, -3108, 69124, + 58066, 59074, -24, 349, 69628, -3108, -24, 35726, 55546, 208, + -3108, 58066, 23, 419, 59578, 58066, 4267, 731, 281, -3108, + -3108, -3108, -3108, -3108, 183, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, 155, -3108, 657, 165, 32700, 32700, 73, 369, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, 485, + -3108, -3108, 756, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, 35221, -3108, -3108, -3108, -3108, -3108, -3108, 60082, 58066, + 60586, 56050, 61090, -3108, 866, 645, 1050, 834, 204, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, 206, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, 705, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, 209, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, 548, -3108, 738, -3108, 213, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, 2187, + -3108, -3108, 1073, 3305, 58066, 730, 900, 863, -3108, 61594, + -3108, 896, -3108, -3108, 903, 963, 1091, -3108, -3108, 56554, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, 49513, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, 1045, -3108, -3108, + 876, -3108, 137, -3108, -3108, 880, 848, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, 986, -3108, -3108, -3108, + 998, 70132, 62098, 62602, -3108, 849, 1995, 5938, 75644, 31690, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, 485, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, 58570, 69124, 869, 936, 1265, 944, 33708, + 948, 36231, 966, 975, 1330, 984, 988, 1000, 1007, 419, + 32195, 1019, 548, 1528, 63106, 63106, -33, 33204, 1695, -3108, + 63106, 63610, -3108, 1075, -3108, 1050, -3108, -3108, -3108, -3108, + 447, 1090, -3108, 64114, 64114, 64114, 1057, 1419, 64114, -3108, + -3108, -3108, 1114, -3108, -3108, 1355, 20238, 20238, 70636, 70636, + 1050, 70636, 1155, 70636, -3108, -3108, 62, 834, -3108, 548, + -3108, -3108, 73, -3108, -3108, 55546, -3108, -3108, 335, 1494, + 20238, 58066, 1147, -3108, 1162, 1147, 1163, 1166, 1173, -3108, + 7465, 1532, 1420, 57058, 394, 394, 1651, 394, 913, 1085, + 5317, 2121, -3108, 1172, -3108, 1196, -3108, 58066, 58570, 1303, + 1223, 1516, -3108, -3108, 1597, 844, 1402, 1618, 5690, 1623, + 867, 1627, 1051, 1634, 1691, 1755, 36, -3108, 20238, 50017, + 548, -3108, 11265, 20238, -3108, -3108, -3108, 1387, -3108, -3108, + -3108, -3108, -3108, 58066, 69124, 1316, 1345, -3108, -3108, -3108, + -3108, 909, 1584, -3108, 71140, -3108, -3108, 1399, 64618, 65122, + 65626, 66130, 66634, 1789, -3108, -3108, 1725, -3108, -3108, -3108, + 1391, -3108, -3108, -3108, 179, 71644, 1728, 1357, 107, -3108, + 1731, 257, -3108, 1738, 1591, 14948, -3108, 1536, -3108, -3108, + -3108, 419, -3108, 691, -3108, -3108, 45829, -3108, -3108, 75644, + 1450, 1377, -3108, 20238, 20238, 1380, 6661, 63106, 63610, 20238, + 58066, -3108, 20238, 25528, 1383, 20238, 20238, 11794, 20238, 30682, + 63106, 1695, 1384, -3108, 607, -3108, 58066, 1388, -3108, 1482, + 1482, 349, 32700, 1688, 32195, 1482, 1863, 1482, -3108, 1020, + 1686, 1611, -3108, 32700, 1611, 1120, 1394, 1692, 1611, -3108, + 706, 1699, 1863, 36735, 1403, -3108, 1482, 1628, -3108, -3108, + 20238, 14948, 67138, 1887, -3108, -3108, -3108, -3108, 1702, -3108, + 69124, 1407, -3108, -3108, -3108, -3108, -3108, -3108, 810, 1928, + 198, 1931, 20238, 198, 198, 1425, 214, 214, -3108, 1621, + 1430, -3108, 215, 1433, 1434, 1953, 1973, 201, 58066, 136, + 1200, 198, 20238, -3108, 214, 1457, 1983, 1458, 1985, 173, + 210, -3108, 1470, 216, 20238, 20238, 20238, 350, 20238, 10207, + -3108, 50017, 1986, 58066, 131, -3108, 548, 1474, 1050, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, 1475, -3108, 207, 7811, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, 1506, -3108, + -3108, -3108, -3108, 1696, 20238, -3108, -3108, 1477, 1688, -3108, + 217, -3108, -3108, 1688, -3108, -3108, -3108, -3108, -3108, 272, + -3108, 1902, 20238, 20238, -3108, 548, 72148, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, 698, -3108, 485, 654, 47576, 1485, + 1495, 1147, 58066, 58066, 1560, -3108, -3108, -3108, -3108, 55546, + 192, 1802, 157, 1632, -3108, -3108, 73, 73, 15477, 775, + 646, 1253, 16006, 20767, 1860, 1740, 233, 927, 1865, -3108, + 1749, 1978, 25528, 20238, 20238, 913, 1085, 20238, 1162, 152, + -3108, -3108, -3108, 1801, 58066, 53041, 973, 1017, 1519, 1608, + 455, 860, 1955, -3108, 1529, -3108, 1619, 58066, 74653, 228, + -3108, 1998, 228, 228, 298, 2001, 1620, 282, 1796, 69, + -23, 1529, 1788, -3108, 55546, 171, 859, 1529, 58066, 1633, + 1313, 1529, 1691, 1050, 69124, 1377, -3108, -3108, 43445, 2048, + -3108, -3108, -3108, 175, 14948, -3108, 1414, 1471, 1527, 1575, + 364, 191, 1657, 1687, 14948, 1689, 1701, 180, 1711, 1730, + 1732, 1739, 1741, 1743, 1748, 1750, 154, 1752, 1756, 1761, + 1776, 1778, 1781, -3108, 1792, 185, 1804, 211, 1470, 14948, + 1807, -3108, 266, 47576, -2, -3108, -3108, 1811, 187, -3108, + 47825, -3108, 1846, 1635, 1637, 69124, 1590, 58066, 1700, 1412, + 1925, 1981, 1810, -3108, 1879, 58066, 1813, 1788, 1819, 1561, + 2056, 1821, 2058, 1823, 1345, 1827, 1580, -3108, 72652, 50017, + -3108, -3108, -3108, -3108, -3108, 1954, 1938, 69124, 50017, 1587, + -3108, -3108, 69124, -3108, 58066, 58066, -3108, 58066, 69124, -3108, + 710, 47576, 2102, 969, 75644, 51529, -3108, -3108, -3108, -3108, + 1137, 1181, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, 1050, 50017, -3108, 3215, 46459, 1592, 20238, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, 1595, + 1948, -3108, -3108, 6600, 1599, 46744, 1600, 25528, 25528, 548, + 1994, -3108, -3108, 25528, 1602, 52033, 46348, 1603, 1612, 46762, + 16535, 20238, 16535, 16535, 46873, -3108, 1614, 47117, 63106, 1604, + 58066, 30175, -3108, -3108, -3108, 20238, 20238, 1695, 57562, 1650, + 1616, -3108, 1624, 1482, -3108, 32700, -3108, 32700, -3108, 1915, + 32700, -3108, -3108, 4979, -3108, 32700, 1916, 20238, 32700, -3108, + 32700, 1864, 1867, 1631, 32700, 1482, 58066, 1639, 58066, -3108, + -3108, 47576, -3108, 1629, 757, 1630, -3108, -3108, -3108, -3108, + -3108, -3108, 1685, -3108, 1685, 1685, -3108, -3108, -3108, -3108, + 1640, 1640, 1643, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, 1645, 1200, -3108, 1685, + -3108, 1640, -3108, -3108, -3108, -3108, -3108, -3108, -3108, 74653, + -3108, -3108, -3108, -3108, -56, 596, -3108, 1647, -3108, -3108, + -3108, 1648, -3108, 1652, 2132, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, 6797, 766, 1640, -3108, -3108, 2098, + -3108, -3108, 20238, 20238, -3108, -3108, 1653, 47576, 1697, -3108, + -3108, 20238, 20238, -3108, -3108, -3108, -3108, 2170, -3108, 172, + 20238, 1685, 1685, -3108, 8943, -3108, 41776, 17064, 1747, 1754, + 2170, -3108, 2170, -3108, 20238, 8943, 2172, 2172, 1665, 37239, + -3108, 1835, 47186, -3108, 1676, 1869, 7245, 1673, -3108, -3108, + 2182, -3108, 1677, 1675, 20238, 44317, 167, 548, 548, 20238, + -3108, 2170, 20238, 6956, 6956, -3108, 200, 67138, 20238, 20238, + 20238, 20238, 20238, 20238, 20238, 20238, 48505, 1772, 181, 69124, + 20238, 20238, 29666, 989, -3108, 20238, 1926, -3108, 1693, 20238, + 1775, 1008, 20238, 20238, 20238, 20238, 20238, 20238, 20238, 20238, + 20238, -3108, -3108, 28642, 274, 672, 2032, 2060, 16, 263, + 20238, 2047, 11265, -3108, 2047, -3108, -3108, -3108, -3108, -3108, + 218, -3108, -3108, 1629, 1629, 69124, -3108, 58066, 335, 54049, + 20238, -3108, -3108, 1703, 1705, 1999, 2181, 1769, -3108, -3108, + 58066, -3108, 40263, 2013, -3108, 732, 1708, -3108, 46330, 1968, + 2013, 73, -3108, -3108, 26057, 1844, 2012, 1949, -3108, -3108, + 1927, 1929, -3108, 1717, 47873, 21296, 21296, -3108, 1337, 47576, + 1456, -3108, -3108, -3108, -3108, -3108, -3108, 79, -3108, 58066, + 113, 37743, -3108, 1720, 86, -3108, 2357, 2066, 2033, 1860, + 927, 1729, -3108, 58570, 58570, -3108, -3108, 1328, 1733, 73156, + 58066, 2027, 1980, 2036, 355, 67138, -3108, 1735, -3108, -3108, + -3108, 58066, 69124, 67627, 73660, 50521, 58066, 2201, 2205, 50017, + -3108, -3108, 2206, 2207, -3108, -3108, 58066, 1112, 58066, 7309, + -3108, -3108, -3108, -3108, 228, -3108, -3108, -3108, -3108, -3108, + 69124, 58066, -3108, -3108, 228, 69124, 58066, 228, -3108, 1336, + 58066, 58066, 69124, 58066, 1338, 58066, 58066, 1050, 1755, -3108, + -3108, -3108, 21825, 28, 28, 1971, 1988, 1989, 1757, 12832, + 266, -3108, 20238, 20238, 942, 275, 69124, 1939, -3108, -3108, + 780, 1990, 195, -3108, 69124, 1803, 58066, 58066, 58066, 58066, + 58066, 58066, 637, -3108, -3108, -3108, -3108, -3108, 2126, 2279, + 1760, 1762, 2133, -3108, 1788, 2134, 53545, 990, 1250, 2136, + 68131, 2138, 1808, 2141, 13361, -3108, -3108, 1770, -3108, -3108, + 1771, 2258, 2023, -3108, -3108, 2009, -3108, 69124, 2299, -3108, + 107, -3108, 50017, -3108, 257, -3108, 2011, 269, -3108, 14948, + 20238, -3108, -3108, -3108, -3108, -3108, -3108, 1377, 29157, -3108, + 817, -3108, -3108, 2264, 1050, 2264, 518, -3108, -3108, 2264, + -3108, 2247, 2264, -3108, 67138, -3108, 8698, -3108, 20238, 20238, + -3108, 20238, 2135, -3108, 2298, 2298, 67138, 25528, 25528, 25528, + 25528, 25528, 25528, 640, 1457, 25528, 25528, 25528, 25528, 25528, + 25528, 25528, 25528, 25528, 26586, 304, -3108, -3108, 829, 2269, + 20238, 20238, 2143, 2135, 20238, -3108, 67138, 1793, -3108, 1794, + 1795, 20238, -3108, 67138, -3108, 58066, 1797, -3108, -3108, -3108, + 34, 1799, 1800, -3108, -3108, 1688, -3108, 931, 1153, 58066, + 264, 3761, 4791, -3108, -3108, 20238, 2130, -3108, 380, -3108, + 4979, 4979, 32700, -3108, 20238, 1805, -3108, -3108, 32700, 2148, + -3108, 4979, -3108, -3108, 38247, 4979, -3108, 67138, 835, -3108, + 58066, 67138, 843, 20238, -3108, 14948, 2322, 67138, 2286, 69124, + 69124, 2324, 1812, 1814, 2170, 1897, -3108, 1899, 1904, 1913, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + 67138, -3108, -3108, 286, -3108, -3108, -3108, -3108, -3108, -3108, + 1828, 1829, 20238, 20238, 163, -3108, 8782, 1832, 1837, 20238, + 47228, -3108, 1840, -3108, 1838, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, 1849, -3108, 1851, -3108, 1856, 1847, 1875, 1858, + 1859, 8834, 20238, 58066, -3108, 1861, 22354, 2028, 58066, -3108, + -3108, 20238, 20238, 58066, -3108, 47576, 2236, -3108, 1871, 1872, + 42288, -3108, -3108, -3108, 251, 396, 47920, 263, 3265, 3265, + 3265, 8943, -3108, -3108, -3108, 1882, -3108, 25528, 25528, -3108, + 2984, 3664, 10207, -3108, -3108, -3108, -3108, 2216, -3108, 1009, + -3108, 1874, -3108, -3108, 3821, -3108, 41776, 47960, 20238, 184, + -3108, 20238, 29666, 20238, 1970, 3265, 3265, 3265, 348, 348, + 251, 251, 251, 396, 263, -3108, -3108, -3108, 1883, 20238, + 50017, -3108, 1884, 1885, 2255, 1458, 20238, -3108, -3108, 32700, + 1650, -2, 1650, 2170, 6956, -3108, 1162, -3108, 1162, -3108, + 47576, 58066, -3108, 1889, 584, 32700, 1933, 2378, 2367, 69124, + -3108, -3108, 1903, 2047, 1917, -3108, -3108, 1923, 20238, 1826, + 1923, -3108, 2013, 60, 2139, 1261, 1261, 1337, 2140, -3108, + -3108, 1975, -3108, -3108, -3108, 20238, 13890, 1459, -3108, 1461, + -3108, -3108, -3108, -3108, -3108, 1909, -3108, 2191, -3108, 58066, + -3108, -3108, 25528, 2380, 20238, 38751, 2381, 2174, -3108, -3108, + -3108, 1964, 1964, -3108, -3108, 2010, 1529, 20238, 2171, -3108, + 153, 1934, 2296, 362, 2250, 69124, -3108, -3108, -3108, 328, + 340, 50017, 1735, -3108, -3108, 220, 2303, 269, 2305, 269, + 50017, 50017, 50017, 852, -3108, -3108, -3108, 1050, -3108, -3108, + -3108, 432, 853, -3108, 1936, 1937, -3108, -3108, -3108, 2016, + 1579, 1529, 1788, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + 190, 1690, 1529, 2026, -3108, 2029, -3108, 2031, 1698, 1529, + -3108, -3108, 1755, 1377, 17593, 47576, 189, 266, 266, 266, + -3108, -3108, -3108, 14948, -3108, 1943, 47576, 47576, 139, -3108, + -3108, -3108, -3108, 1940, -3108, 296, -3108, 69124, -3108, -3108, + -3108, 1939, 1981, 1879, 58066, 1788, 1945, 2431, 2432, 1345, + 1580, -3108, 2119, 539, 69124, -3108, 50017, 69124, 58066, 58066, + 58066, 54553, -3108, -3108, -3108, 1956, 1952, -3108, -3, 2192, + 2189, 58066, 2000, 58066, 1961, -3108, -3108, 58066, 1963, 2448, + 58066, -3108, 873, 1580, 1580, 18122, 2339, 58066, 1938, -3108, + -3108, -3108, -3108, 69124, -3108, -3108, 47576, -3108, 1965, -3108, + 20238, 51025, -3108, -3108, -3108, -3108, -3108, -3108, -3108, 50017, + -3108, 1050, -3108, 1050, 2213, 69124, 44821, 1050, 45325, 1050, + 1974, -3108, 47576, 42306, 47576, 2143, -3108, 225, 2298, 1267, + 1267, 1267, 2454, 2326, 351, 1977, 1267, 1267, 1267, 387, + 387, 225, 225, 225, 2298, 304, 1075, 52033, 1979, -3108, + 47576, 47576, -3108, -3108, 1991, -3108, -3108, -3108, -3108, 1992, + 1996, -3108, -3108, -3108, -3108, 69124, 166, 1650, 208, 208, + 208, 208, -3108, 58066, 58066, 58066, 47576, 2437, 2314, -3108, + -3108, 2489, 2002, -3108, -3108, 4979, 47576, 58066, -3108, 27624, + -3108, 58066, -3108, 2346, -3108, 2444, -3108, 58066, 889, -3108, + -3108, -3108, 891, 1997, 1814, 67138, 893, 895, -3108, 2170, + 127, 2003, 1573, 919, 1164, 1469, -3108, 55546, -3108, -3108, + 2004, 47276, 20238, -3108, 2385, -3108, -3108, -3108, 47576, 20238, + 20238, -3108, 41776, -3108, -3108, -3108, -3108, 427, 427, -3108, + 42355, 1861, 2006, 2014, 58066, 10207, 47528, -3108, 39255, -3108, + 38, 42395, 47576, -3108, 1835, -3108, -3108, 6956, 20238, 1297, + 3221, 20238, 2015, 20238, 2361, -3108, -3108, 2007, -3108, -3108, + 67138, 20238, 2018, 4367, 25528, 25528, 4583, -3108, 5526, 20238, + 10207, -3108, 43689, 2516, 2020, 1971, 18651, -3108, 2233, 2019, + -3108, 2130, 266, 2130, 2021, -3108, -3108, -3108, 69124, -3108, + 2285, 2024, -3108, 20238, 2185, 69124, 594, 2929, 908, -3108, + 548, 40263, 1933, 20238, 270, -3108, -3108, 2030, -3108, 1923, + -3108, -3108, -3108, 2257, -3108, -3108, -3108, 58066, -3108, 2034, + -3108, 37743, 2369, 10736, -3108, 37743, 58066, -3108, -3108, 58066, + 42442, 2403, -3108, 69124, 69124, 69124, -3108, 69124, 2035, 2040, + 268, 2037, 778, -3108, 2711, -3108, -3108, 268, 2382, 267, + 1963, 282, 4590, 58, -3108, -3108, -3108, 2122, 58066, -3108, + 69124, -3108, -3108, -3108, -3108, -3108, 50521, -3108, -3108, 41271, + 50017, -3108, 50017, 20238, 20238, 58066, 58066, 58066, 58066, 69124, + 58066, 58066, 58066, 58066, 58066, 1377, -3108, 20238, 20238, -3108, + 2043, 2045, 2046, 1971, -3108, 344, -3108, 2050, -3108, -3108, + -3108, -23, -3108, 296, 2054, 2059, -3108, 53545, 3305, 68131, + 1808, -3108, 1771, 1981, 696, 68620, 1879, 20238, -3108, 910, + 912, 1788, 2061, 2530, -3108, -3108, -3108, 990, 53545, -3108, + -3108, -3108, 2492, -3108, 849, 231, -3108, 2545, 290, -3108, + 1345, -3108, 3305, 1580, -3108, -3108, 2549, -3108, 2551, 3305, + 47576, 69124, 2131, -3108, 269, 920, -3108, -3108, -3108, -3108, + -3108, 69124, 2067, -3108, 2067, -3108, -3108, 2067, -3108, -3108, + -3108, -3108, 25528, 2423, 2074, 67138, -3108, -3108, 58066, -3108, + -3108, -3108, 925, 2075, 2130, 58066, 58066, 58066, 58066, -3108, + -3108, -3108, 19180, 20238, 2114, 20238, -3108, -3108, 2076, 12323, + 2402, -3108, 27115, -3108, -3108, 2079, 38247, 69124, -3108, -3108, + -3108, -3108, 2170, -3108, -3108, 69124, -3108, 2083, -3108, 2087, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, 20238, + 47576, -3108, 47576, -3108, -3108, -3108, -3108, -3108, 58066, -3108, + -3108, 8114, -3108, 2084, 2088, 69124, 58066, 241, -3108, 20238, + -3108, 2028, -3108, 832, 20238, 20238, 2984, -3108, 48008, 20238, + 67138, 972, 2984, 303, 20238, 3687, 4199, 20238, 20238, 5755, + 42747, -3108, 22883, 14419, -3108, 2092, 20238, 42839, 40767, -3108, + 32700, 2314, 2095, 2314, 1050, -3108, 2096, 2097, -3108, -3108, + 2098, 47576, 20238, -3108, -3108, -3108, -3108, 2157, 434, 34716, + 2336, -3108, 2118, 69124, -3108, 2185, 47576, -3108, -3108, 41776, + -3108, -3108, -3108, -3108, -3108, 2575, 2413, 2112, 2113, -3108, + 1386, -3108, -3108, 69124, 2115, -3108, 2116, 268, -3108, 69124, + 2153, -3108, 295, 2435, 106, -3108, 20238, -3108, 2525, 2603, + 2711, 2124, 69124, 58066, 25528, -3108, 312, 253, -3108, 2417, + 58066, 2153, 2561, -3108, -3108, -3108, 778, -3108, 2459, 2373, + -3108, 228, -3108, 20238, 778, 2375, 242, 69124, -3108, -3108, + 2782, -3108, 67138, 269, 269, -3108, 1630, 2142, 2144, 2149, + 2156, 2158, 2159, 2162, 2163, 2164, 2165, 2166, -3108, 2167, + 2168, 2169, 2173, 2175, 2176, 2178, 2179, 1645, 2188, -3108, + 2190, 2030, 2193, 2195, 2196, 2199, 2203, 74164, 2204, 2209, + 2210, 2211, 1647, 2212, 2214, 1137, 1181, -3108, -3108, -3108, + -3108, -3108, -3108, 1357, 2219, -3108, 2146, -3108, 2137, 994, + -3108, -3108, 2224, -3108, 2230, -3108, -3108, -3108, -3108, -3108, + -3108, 2151, 2177, -3108, -3108, -3108, 266, 2183, 2186, 69124, + 1377, 123, 50017, 69124, 2222, 2000, -3108, 2627, 726, 2419, + 2215, 2231, -3108, 47576, -3108, 50017, 1808, -3108, 53545, 2623, + 751, 2189, 67138, -3108, 868, 2000, -3108, 2589, 68131, -3108, + 2223, 2228, 1808, 2221, -3108, 1771, 2289, 20238, 146, -3108, + 2422, 69124, 2235, -3108, -3108, 51025, 2067, 4285, 25528, 67138, + 1024, 1031, -3108, 2721, 2374, 2314, -3108, -3108, -3108, -3108, + -3108, 2237, 54, 2238, 9678, 2229, -3108, -3108, -3108, -3108, + -3108, -3108, 47576, 47576, 69124, 2393, 47576, -3108, -3108, 2232, + 2239, 39759, 2704, 2241, -3108, -3108, 2566, -3108, 31186, -3108, + 1814, 2245, 1814, 67138, 1814, -3108, -3108, 47576, 1861, 20238, + -3108, -3108, -3108, 2242, 2248, 69124, 43775, 2578, -3108, 2984, + 2984, 48008, 1035, -3108, 2984, 20238, 20238, 2984, 2984, 20238, + -3108, 19709, 239, -3108, 1040, -3108, 42918, -3108, 75142, -3108, + -3108, 2114, 1050, 2114, -3108, -3108, 69124, 2249, 2253, -3108, + -3108, -3108, 2307, -3108, -3108, 1047, 2684, 2185, 20238, -3108, + -3108, 2259, 37743, -3108, -3108, -3108, -3108, 37743, 268, -3108, + 2427, 2153, 2262, -3108, -3108, -3108, -3108, -3108, -3108, 42993, + -3108, 41, 20238, -3108, 1744, 2454, -3108, -3108, -3108, -3108, + 2153, 1345, -3108, 58066, 2741, 2635, -3108, -3108, 47576, -3108, + -3108, 2170, 2170, -3108, -3108, 2444, -3108, -3108, -3108, 2268, + -3108, -3108, 1357, 611, 41271, -3108, -3108, 58066, 58066, -3108, + -3108, 2265, -3108, -3108, -3108, -3108, -3108, -23, 2669, 1048, + 1049, 990, -3108, 3305, 58066, 2642, 53545, 50017, -3108, 2756, + 2274, 58066, 2000, 392, 392, -3108, 2429, -3108, 2430, -3108, + -3108, -3108, -3108, 1050, 2758, 280, -3108, 1430, 58066, -3108, + -3108, 34212, -3108, 4285, 1054, -3108, -3108, 2280, 2283, -3108, + 2114, 20238, 2287, 20238, -3108, 23412, 2762, 2281, -3108, 20238, + 2350, 28133, -3108, 20238, -3108, 58066, 63106, 2291, 63106, -3108, + -3108, -3108, -3108, 58066, -3108, -3108, -3108, 20238, -3108, 2984, + 2984, 2984, 20238, 20238, -3108, -3108, -3108, -3108, 2503, 2393, + -3108, 2393, -3108, -3108, 20238, 3305, 548, 2730, 69124, 48, + -3108, 47576, -3108, -3108, -3108, 58066, -3108, 50017, -3108, 268, + 2, 2301, 20238, 43147, 2537, -3108, -3108, 2570, -3108, 2630, + -3108, 2364, 659, 2384, -3108, -3108, -3108, -3108, 1377, 1050, + -3108, 1808, 2189, 2221, 2304, 58066, 1098, 3305, 990, 849, + -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, -3108, + -3108, -3108, -3108, -3108, 3305, 2757, 2542, 2769, -3108, 2131, + 20238, 96, -3108, 1103, 2768, -3108, -3108, 2838, 2393, 2327, + 23412, 2329, -3108, 2333, 69124, 47576, 2476, -3108, -3108, 2334, + -3108, -3108, 20238, -3108, -3108, 43817, 2337, 2338, 2801, 1971, + 2350, 2350, -3108, 434, -3108, -3108, 2771, 34212, 2729, 1345, + 268, 2354, 1109, -3108, -3108, -3108, -3108, -3108, 1788, -3108, + 43291, 2595, 226, 2585, 2301, 20238, -3108, 2433, -3108, -3108, + -3108, 2837, -3108, -3108, 53545, 2358, -3108, 2221, 2189, 2000, + 2221, 2606, -3108, 2609, 2383, 43358, 69124, 69124, 1808, 34212, + 69124, 2356, 2350, -3108, 2366, -3108, -3108, -3108, 30175, -3108, + 2386, -3108, -3108, -3108, 20238, 714, -3108, -3108, 2438, 58066, + 1116, 63, 2570, 41271, -3108, 50017, 1782, 2, 2703, -3108, + -3108, -3108, -3108, 305, 2619, -3108, 2622, -3108, 47576, -3108, + 3305, 53545, -3108, -3108, -3108, -3108, -3108, -3108, 34212, 2768, + -3108, 732, -3108, 1650, -3108, 732, -3108, -3108, -3108, -3108, + -3108, 1603, 23941, 23941, 23941, 2391, 3305, -3108, 1650, -3108, + 2531, 2585, -3108, -3108, -3108, -3108, -3108, 186, 186, 2799, + -3108, 2465, -3108, 2221, 1122, 69124, 1923, -3108, 1923, 24999, + 2556, 194, 46397, 2779, -3108, 2779, 2779, -3108, -3108, -3108, + 40263, -3108, -3108, 2904, -3108, 249, -3108, -3108, -3108, 1808, + 732, -3108, -3108, 2894, -3108, -3108, -3108, -3108, -3108, 284, + -3108, -3108, -3108, 1650, 268, -3108, -3108, -3108, 1650, 1923, + 24470, 2565, -3108, 2632, -3108, -3108, -3108, -3108, -3108, -3108, + -3108 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -3183, -3183, -3183, 2014, 75, -3183, -3183, 185, -3183, -3183, - 589, -1723, -1721, 1083, -3183, 178, -822, 593, -3183, 83, - 3800, 2426, 3721, 946, -522, -900, -1279, 39, 92, -1159, - 7, -3183, -3183, -3183, -3183, -1544, -508, 250, -3183, -3183, - -643, -2705, -593, -3183, -3109, -3156, -3183, -3183, -735, -3112, - -2134, 93, -3183, -3183, 97, 1, -2210, -3183, -1739, 65, - -2200, -3183, -209, -2785, 103, 105, 993, -3183, -2672, 109, - -895, -1220, -925, -1214, -3183, -97, -3183, 500, 113, 1731, - 2074, -3183, 5, -2259, -3023, -597, -3183, -694, -3183, -342, - -3183, -641, -3183, -1172, -649, -683, -2947, -1189, -3183, 1713, - -397, -3183, 645, -3183, -2673, -3183, -3183, 628, -3183, 1156, - 1160, -3183, -3183, -2322, 175, -613, -2742, -2659, -2262, -914, - 264, -620, 237, -2157, -1470, -3183, 669, -3183, -603, -3183, - -909, -2137, 122, -3183, -3183, 1611, -891, -3183, 123, -3183, - 546, -3183, -2220, 547, -2219, 1646, -525, 10, 12, -3183, - -3183, -3183, -3183, -3183, -846, 590, -1237, -3183, 526, -3183, - -3183, -3183, -3183, -166, 227, -3183, 11, 742, -40, -31, - -3183, -24, -3183, -3183, -3183, 704, -3183, -3183, 8, 53, - 1810, -3183, -3183, -3183, -3183, -1058, -3183, -1678, 419, -3183, - 1972, 1973, -1794, -870, -15, 259, 745, -1704, -2206, -594, - 1208, 1790, 1788, -3183, 488, -2692, -3183, -558, -3183, -652, - -3183, -3183, -3183, 1978, -3183, 739, 1259, -1608, -1602, -3183, - -2309, -3183, -477, -362, -3183, -3183, -3183, -3183, -3183, -2554, - -2961, -590, 1228, -3183, 1799, -3183, -3183, -3183, -3183, 49, - -1580, 2980, 780, -3183, 89, -3183, -3183, -3183, -3183, 161, - -3183, 977, -164, -3183, -503, -686, -801, 2024, -92, 143, - -1770, -12, 58, 538, -3183, -3183, 541, -2153, -1449, 487, - -268, 975, -3183, 9, -1287, -3183, -1923, -1203, -3183, -3183, - -747, 2069, -3183, -3183, -3183, 2094, 2121, -3183, -3183, 2929, - 3534, -3183, -924, 3695, -680, -1057, 2037, -937, 2040, -949, - -940, -947, 2041, 2043, 2044, 2046, 2052, 2053, 2059, -1577, - 5090, 700, 4061, -2296, -3183, -1428, -1603, 1096, 1098, 1101, - 135, -3183, -1429, 213, -3183, -3183, -3183, -3183, -3183, -2858, - -3183, -436, -3183, -427, -3183, -3183, -3183, -1707, -3182, -1731, - -3183, 4415, 932, -3183, -3183, 486, -3183, -3183, -3183, -3183, - -1562, -3183, 5933, 814, -3183, -2080, -3183, -3183, -975, -837, - -775, -999, -1238, -1974, -3183, -3183, -3183, -3183, -3183, -3183, - -1531, -1821, -140, 875, -3183, -3183, 981, -3183, -3183, -3183, - -2523, -1517, -1753, -2159, -3183, -3183, -3183, 891, 1598, 129, - -842, -1661, -3183, -1566, -3183, -3183, 933, -2471, -3183, -3183, - 478, -2738, -3183, -3183, 173, -3183, -635, -1157, -2549, 2140, - 31, -3183, -793, -2636, -3183, -3183, -749, -2770, -1146, -894, - -3183, 127, -3183, 150, 128, -1733, -3183, 17, -3183, -387, - -3183, -3183, -2679, -3183, 136, 138, 2287, -3183, 1222, -3183, - -3183, -3183, -3183, -604, -3183, -654, -648, -3183, -3183, 25, - -901, 1710, -3183, 140, 367, -3183, 1037, -3183, 761, 141, - -3183, 2194, -361, 154, 1374, -3183, -3183, -3183, 14, -607, - 435, -3183, 1378, -3183, -3183, -667, -1685, 155, -3183, 536, - 15, -3183, -3183, -3183, 74, 156, 18, -2228, 159, -2911, - -1740, -7, -3183, -3183, -3183, -738, -3183, -2632 + -3108, -3108, -3108, 2057, 80, -3108, -3108, 227, -3108, -3108, + 627, -1726, -1728, 1127, -3108, 221, -785, 631, -3108, 83, + 2313, 2641, 4388, 2208, -523, -893, -1279, 81, 87, -1162, + 3, -3108, -3108, -3108, -3108, -1536, -470, 288, -3108, -3108, + -609, -2710, -561, -3108, -3076, -2766, -3108, -3108, -704, -3107, + -2129, 92, -2540, -3108, -3108, 104, 6, -2200, -3108, -1742, + 56, -2210, -3108, -168, -2795, 105, 108, 1033, -3108, -2709, + 129, -894, -1219, -915, -1226, -3108, -52, -3108, 537, 130, + 1547, 2120, -3108, 8, -2257, -3029, -558, -3108, -660, -3108, + -304, -3108, -606, -3108, -968, -614, -648, -2957, -1174, -3108, + 1759, -358, -3108, 684, -3108, -2686, -3108, -3108, 669, -3108, + 1199, 1201, -3108, -3108, -2293, 203, -587, -2649, -2672, -2267, + -904, 300, -590, 273, -2205, -1064, -3108, 707, -3108, -576, + -3108, -902, -1937, 138, -3108, -3108, 1654, -916, -3108, 140, + -3108, 576, -3108, -2231, 578, -2227, 1681, -574, 10, 11, + -3108, -3108, -3108, -3108, -3108, -831, 622, -1237, -3108, 555, + -3108, -3108, -3108, -3108, -140, 254, -3108, 52, 3053, -41, + -35, -3108, -31, -3108, -3108, -3108, 736, -3108, -3108, 1, + 53, 1841, -3108, -3108, -3108, -3108, -1054, -3108, -1673, 782, + -3108, 2005, 2008, -1800, -878, -40, 285, 772, -1691, -2188, + -636, 1242, 1818, 1822, -3108, 514, -3069, -3108, -536, -3108, + -690, -3108, -3108, -3108, 2017, -3108, 769, 1293, -1572, -1604, + -3108, -1811, -3108, -451, -335, -3108, -3108, -3108, -3108, -3108, + -2517, -2466, -596, 1262, -3108, 1834, -3108, -3108, -3108, -3108, + 15, -1580, 3021, 819, -3108, 39, -3108, -3108, -3108, -3108, + 193, -3108, 1012, -146, -3108, -510, -708, -801, 2064, -89, + -498, -1737, -15, 124, 566, -3108, -3108, 568, -2134, -1450, + 519, -238, 1010, -3108, 37, -1582, -3108, -1824, -1202, -3108, + -3108, -780, 1121, -3108, -3108, -3108, 1976, 2308, -3108, -3108, + 2508, 2766, -3108, -910, 3736, -783, -1055, 2072, -948, 2078, + -947, -956, -945, 2081, 2082, 2085, 2086, 2089, 2090, 2099, + -1577, 5290, 916, 4614, -2268, -3108, -1446, -1606, 1133, 1134, + 1141, 111, -3108, -1426, 236, -3108, -3108, -3108, -3108, -2842, + -3108, -406, -3108, -401, -3108, -3108, -3108, -1760, -2821, -1789, + -3108, 4566, 950, -3108, -3108, 516, -3108, -3108, -3108, -3108, + -1575, -3108, 6101, 851, -3108, -2080, -3108, -3108, -983, -628, + -478, -1031, -1246, -1983, -3108, -3108, -3108, -3108, -3108, -3108, + -1518, -1840, -211, 905, -3108, -3108, 1004, -3108, -3108, -143, + -1528, -1798, -2176, -3108, -3108, -3108, 915, 1636, 159, -839, + -1663, -3108, -1570, -3108, -3108, 961, -2486, -3108, -3108, 505, + -2689, -3108, -3108, 199, -3108, -709, -1148, -2550, 98, 27, + -3108, 871, -2648, -3108, -3108, -739, -2661, -1146, -905, -3108, + 145, -3108, 169, 147, -1740, -3108, 17, -3108, -366, -3108, + -3108, -2688, -3108, 148, 149, 2328, -3108, 1251, -3108, -3108, + -3108, -3108, -601, -3108, -646, -640, -3108, -3108, 24, -919, + 1745, -3108, 151, 473, -3108, 1068, -3108, 708, 156, -3108, + 2225, -415, 158, 1416, -3108, -3108, -3108, 13, -616, 474, + -3108, 1418, -3108, -3108, -674, -1669, 160, -3108, 407, 4, + -3108, -3108, -3108, 103, 161, 18, -2333, 162, -2784, -1755, + -7, -3108, -3108, -3108, -729, -3108, -2645 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -2141 +#define YYTABLE_NINF -2142 static const yytype_int16 yytable[] = { - 529, 57, 969, 920, 1147, 65, 877, 53, 77, 724, - 68, 70, 69, 1251, 94, 99, 529, 82, 103, 1042, - 1271, 988, 1325, 1214, 1985, 1721, 863, 1847, 77, 1834, - 1455, 2245, 1328, 1179, 1818, 789, 2213, 1835, 527, 2664, - 1807, 2010, 1620, 2079, 1885, 783, 893, 1427, 861, 1429, - 2701, 2118, 1512, 894, 527, 723, 1428, 2048, 889, 1425, - 2130, 1381, 2635, 2370, 2637, 2294, 2169, 1801, 529, 529, - 1852, 1779, 815, 2146, 2147, 50, 2654, 1917, 2314, 2544, - 1364, 1370, 750, 51, 3109, 1387, 1250, 3076, 1256, 1698, - 1260, 3078, 52, 55, 1701, 1839, 2361, 56, 875, 910, - 2653, 2616, 3107, 59, 979, 60, 527, 527, 856, 61, - 3125, 982, 903, 63, 1271, 2895, 2350, 971, 3129, 2941, - 2756, 2217, 66, 67, 815, 815, 2967, 80, 81, 1020, - 2972, 2546, 2388, 1634, 2392, 1045, 83, 2387, 84, -1982, - 90, 91, 526, 2692, -1402, 2265, 3205, -2127, -2127, 1597, - 1598, -1982, 2171, 2268, 93, 98, 102, 1394, 822, 104, - 2358, 3202, -471, -1324, 890, 891, 1610, 2494, -388, -544, - 541, 2003, 1066, 1167, 2764, 2765, 2004, 1067, 3337, 989, - 2760, -1343, -898, 2564, 1785, -1343, -906, -1973, 2758, -1340, - -1340, -548, -1973, 1383, -1990, -903, 1439, 3323, 3268, -903, - -2118, -2118, -2136, -2136, 3, 4, -1344, -1990, 826, 2161, - 822, 822, 1066, -1344, -1341, -1341, -865, -878, 3341, -906, - -893, 826, 826, -2113, -2113, 867, -1161, 2751, 1358, 826, - 881, 2161, 1374, 1706, -1161, 2856, 824, 1066, 1702, 1374, - 826, 1160, -2138, -2138, 1066, 1654, 2776, 1262, 988, 1962, - 1656, 2200, 3679, 3251, 1964, 1066, 2525, 2526, 1166, 2201, - 2184, 1797, 3283, 3650, 1271, 1797, 1808, 2532, 1358, -544, - 1630, 2536, 1837, -497, 1850, 881, 2731, 1728, -1182, 1788, - 1664, 960, 3433, 826, 1851, 3420, -1182, 542, 824, 824, - 1014, -548, -244, 108, 1203, 2278, 2702, -244, 1206, 1742, - 2815, 2817, 1358, 2820, 2785, 1780, 3304, 1012, 2504, 1349, - -693, 2002, 1045, 1819, 1666, 1804, 1822, 1823, 886, 3625, - 3320, 882, 3617, 886, 1020, 3544, 2935, 1265, 2937, 3680, - 1602, 113, 1809, 3130, 1651, 1388, 2826, 1164, 2515, 2516, - 2517, 1168, 3010, 1169, 3504, 1743, 1612, 2695, 1350, 2002, - 3610, 3279, 1703, 1853, 2054, 1021, 2837, 3361, 3100, 3674, - -2112, -2112, -835, 3548, 2505, 1383, 882, 2148, 1472, 2981, - 1774, 1775, 1582, 1479, 3398, 1482, 3400, 2271, 3463, 1778, - 3208, 3232, 2210, 3234, 2185, 844, 948, 2240, 3464, 1193, - 3335, 1654, 3603, 3568, 1507, 1833, 1411, 1412, 2608, 1654, - 1739, 2186, 1625, 1655, 1656, 1805, 2187, 2703, 2299, 2299, - 1615, 1654, 2521, 1929, 1744, 114, 3011, 3265, 1066, 2384, - 3338, 3681, 1810, 3449, 3303, 949, 2609, 2467, 1898, 3277, - 2990, 2980, 1616, 1199, 1664, 3339, 2705, 3498, 1499, 3499, - 1790, 3331, 3336, 1857, 2188, 1383, 1664, 539, 1383, 1383, - 1725, 2627, 2522, 3343, 1538, 3661, 2991, 2963, 2495, -544, - 1666, 2768, 1328, 3332, 109, 1745, 3023, 1626, 1666, 2300, - 2689, 3512, 2241, 3651, 1811, 110, 1704, 3658, 1707, 3663, - 1666, -548, 3140, 2696, 3632, 884, -713, 845, 3633, 2827, - 1500, 1194, 3266, 2887, 3530, 2272, 3686, 1022, -835, 3131, - 3012, 3476, 1161, 3618, 3278, 2305, 1620, 3611, 1740, 1201, - 2506, 111, 3280, 951, 995, 3550, 1417, 1418, 115, 1854, - 3415, 1478, 3675, 2089, 1266, 1806, 1359, 1351, 3155, 1746, - 2692, -544, 2692, 3431, 2211, 3513, 3612, 1806, 793, 3425, - 1614, 3269, 1806, 3409, 3445, 1654, 2610, 1856, 3620, 1655, - 1656, 2611, 2051, -548, 935, 3465, 885, 1582, 2376, 2856, - 1791, 3652, 2582, 112, 1227, 883, 1359, 3121, 2744, 2745, - 2746, 1716, 3115, 868, 2279, 3505, 3134, 3135, 3682, 1162, - 1664, 1724, 2162, 1962, 2169, 1930, 1932, 1963, 1964, 3591, - 3653, 724, 1060, 1645, 1844, 961, -1161, 2540, 1597, 1598, - 1359, 3359, 2189, 1962, 2618, 1781, 969, 1963, 1964, 3317, - 2559, 1919, 1838, 1726, 1666, 3421, 2732, 1923, 2369, 2118, - 1776, 2202, 1994, 1610, 1777, 3101, 3592, 3340, 2704, 2585, - 2705, 2011, 2752, 2753, 886, 988, 543, 957, 3664, 2433, - 2915, 1170, 2639, 2265, 3492, 1352, 2824, 1593, -1182, 3441, - 2667, 1582, -544, 2035, 3626, -1982, 794, 3146, 2656, 2960, - 2706, 2772, 2766, 2462, 1607, 2779, 1615, -1982, -1402, 3076, - 2171, 825, 2739, 3078, -548, 2468, 1607, 918, 1835, -1324, - 2385, 919, 2662, 2871, 2100, 2101, -471, -471, 1616, 1324, - 1360, -544, -388, -544, 1109, 1110, 2439, -1343, -898, 1615, - 2216, -1343, 1617, -1973, 3412, 2496, 2612, 2475, -1973, 3413, - -1990, -903, 2501, -548, 3401, -548, 3259, 2613, 1927, 877, - 2756, 1616, -1344, -1990, 1649, 982, 2961, 1920, 3381, -1344, - 1363, 1599, 1600, 1605, 879, 1619, -893, 1699, 2218, 1199, - 1378, 1379, 71, 1271, 2142, 1271, 864, 1378, 1379, 898, - 1008, 1687, 987, 2086, 1630, 1979, 2537, 2850, 3292, 3293, - 2537, 3529, 71, 1630, 918, 814, 77, 2948, 919, 2742, - 877, 1829, 1050, 789, 3536, 2743, 3537, 2121, 1372, 71, - 2000, 1373, 1602, 1051, 984, 1199, 2102, 887, 876, 2558, - 1200, 2456, 529, 2103, 2104, 1830, 2457, 2105, 2106, 2107, - -244, -244, 1612, 529, 1829, 1026, 3564, 3565, 2172, 2143, - 529, 105, 2094, 2369, 3578, 1201, 2087, 814, 814, 892, - 1824, 870, 3250, 2949, 2124, 2093, 2125, 3241, 1830, 2025, - 527, 893, 2838, 2839, 2840, 2841, 2173, 2077, 894, 529, - 529, 527, 2936, 71, 2502, 2643, 1224, 1615, 527, 895, - 2476, 2042, 1225, 1165, 3150, 2144, 2458, 998, 3605, 1010, - 2477, 1201, 106, 529, 1202, 1797, 3242, 3601, 1797, 1616, - 2644, 1165, 3285, 3107, 880, 1027, 1798, 1582, 1215, 1800, - 3290, 57, 3252, 1617, 937, 65, 938, 53, 77, 2502, - 68, 70, 69, 1171, 94, 99, 2338, 82, 103, 1011, - 2723, 2424, 1684, 1685, 1686, 1687, 2341, 1311, 896, 2344, - 1202, 529, 724, 2724, 3392, 1317, 529, 2164, -2108, -2108, - 3393, 2337, 856, 856, 1180, 856, 2628, 856, 2857, 918, - 3332, 3432, 913, 1641, 822, 3076, 1642, 1487, 1918, 3078, - 3213, 3190, 1931, 1494, 3192, 822, 3194, 1066, 826, 3321, - 3579, 2174, 822, 2509, 1736, 50, 2175, 1226, 914, 2264, - 2264, 2176, 2291, 51, 939, 1825, 940, 2978, 1317, 2397, - 1224, 828, 52, 55, 1582, 1826, 1225, 56, 3676, 987, - 2362, 2363, 2364, 59, 877, 60, 529, 529, 3094, 61, - 3095, 3027, 529, 63, 2336, 529, 529, 77, 529, 529, - 529, 529, 66, 67, 789, 3418, 1327, 80, 81, 2444, - 3087, 2118, 824, 916, 2347, 529, 83, 529, 84, 2354, - 90, 91, 934, 824, 2906, 2432, 529, 2699, 1383, 2434, - 824, 1370, 2436, 2449, 93, 98, 102, 3580, 1383, 104, - 1591, 1383, 46, 529, 1317, 1585, 1682, 1683, 1684, 1685, - 1686, 1687, 826, 527, 1615, 527, 3525, 2414, -1982, 2415, - 1985, 1484, 915, 1918, 527, 529, 545, 23, 877, 2665, - 2661, 815, 922, 1010, 1066, 2640, 1616, 2641, 2339, 1742, - 2010, 1226, 815, 2342, 529, 3405, 1976, 1977, 1978, 1979, - 1619, -1388, 1808, 1608, 1609, 2455, 529, 529, 529, 2459, - 529, 529, 2461, 724, 1974, 1975, 1976, 1977, 1978, 1979, - 1645, 1475, 1582, 1011, 1227, 918, 2177, 2673, 1808, 919, - 2305, 2740, 1491, 1835, 918, 1743, -1324, 2178, 919, 546, - 2747, 884, -557, 1224, 918, 2510, 529, 2511, 1641, 1225, - 2204, 1383, 1224, 2716, 2205, 2718, -632, -557, 1225, 1635, - 2994, -632, -557, 941, 529, 529, 3508, 822, 1809, 822, - 2500, 2662, -2109, -2109, 1730, 1731, 545, 1737, 822, -220, - 946, 894, 894, 3223, 894, 3353, 1165, 1492, 1229, 2172, - 945, 1497, 1714, 2396, 1809, 1715, 2733, 1403, 1404, 2984, - 529, -2110, -2110, 2997, 529, 529, 988, 1031, 2512, 958, - 2513, 3450, 885, -557, 529, 529, 529, 2173, 953, 529, - 1230, 26, 27, 28, 3531, 1154, 1155, 2977, 1157, 2979, - 1159, 1840, -632, -557, 1924, 2786, 1224, 1925, 959, 546, - 1585, 2794, 1225, 1032, 962, 824, 1634, 824, 1227, 963, - 2050, 1836, 947, 2051, 1226, 1745, 824, 1843, 1810, 1485, - 964, 2562, 2857, 1226, 975, 3260, 3451, 1411, 1412, 1034, - 2866, -2111, -2111, 965, 1872, 3452, 1317, 2553, -631, 993, - 1582, -632, -557, -631, 1810, 994, 1317, 2985, 33, 995, - 886, -557, 1582, 1231, 996, 71, 2108, 2109, 2110, 3453, - 2111, 2112, 2113, 2114, 2115, 2116, 2075, 999, 1228, 2076, - 1811, 1317, 1229, 1873, 1196, 3312, 1198, 3590, 1002, 1746, - 3593, 2381, 1582, 550, 2382, 978, 38, 1003, 1993, 1582, - 1995, 1996, 2174, 1004, 1585, 3198, 1811, 2373, -2114, -2114, - 2606, 1879, 2176, 2450, 1230, 1880, 2451, 1226, 553, 3325, - 724, 554, 948, 2986, -631, 2987, 2636, 1882, 1883, 724, - 40, 3423, 2488, 1224, 2538, 2489, 3001, 2539, 1005, 1225, - 1006, 43, 3454, 1582, -2115, -2115, 987, 1582, 1806, 1054, - 1055, 1056, 2851, 1582, 1059, 3455, 2858, 1417, 1418, 1007, - 77, 949, 3151, 724, -2116, -2116, 1912, 789, 529, 1038, - 3672, 1875, 2541, -631, 1806, 2539, 1582, 1008, 984, 2079, - 2118, 1227, 2719, 3656, 1013, 2720, 3002, 1231, 1486, 2725, - 1227, 2797, 2726, 550, 2051, 978, 46, 950, 1015, 2863, - 1047, 2713, 2539, 2715, 3003, 2638, -2117, -2117, 3659, 1934, - 3660, 1057, 2864, 887, -557, 2076, 3074, 2676, 529, 529, - 1052, 554, 2867, 1058, 529, 2868, 529, 1060, 3635, 1061, - 1224, 529, 529, 529, 529, 1158, 1225, 2666, 2666, 2869, - 1181, 1254, 2868, 3647, 1226, 1229, 529, 529, 1174, 951, - 1258, 3685, 2955, 1182, 1229, 2956, 529, 3118, 529, 2763, - 3119, 529, 1184, 1237, 527, 3014, 529, 2177, 529, 529, - 3120, 529, 3021, 2382, 1227, 529, 3144, 1255, 2178, 3145, - 71, 876, 3093, 1238, 918, 1185, 1259, 1184, 919, 3152, - -2119, -2119, 3153, 1186, 527, 3013, 527, 3022, 3683, 527, - 1188, 2888, 2889, 3684, 527, 2950, 3004, 527, 3214, 527, - 1189, 2076, 815, 527, 815, 3103, 3005, 815, -2120, -2120, - 3307, 997, 815, 2243, 1197, 815, 1216, 815, 1219, 1239, - 1585, 815, 1009, 3354, 2290, 1222, 2076, 3355, 1229, 1025, - 2539, 1226, 3387, 3394, 1808, 2076, 2051, 1221, 3406, 1223, - 1231, 3407, 2026, 3439, 2027, 1235, 3119, 2029, 3456, 1231, - 23, 3457, 2033, 529, 529, 2036, 3440, 2037, 822, 2382, - 1230, 2041, 529, 529, 2078, 77, 1236, 2080, 2082, 2081, - 529, 2084, 2085, 113, 892, 1630, 2875, 529, 2877, 2879, - 2880, 1634, -2121, -2121, 529, 2876, 2878, 2874, 822, 3017, - 822, 1227, 71, 822, 3473, 946, 3534, 2076, 822, 3119, - 1809, 822, 1253, 822, 724, 529, 1257, 822, 3494, 529, - 3495, 3546, 529, 3572, 3547, 1240, 3573, 1585, 529, 529, - 529, 529, 529, 529, 529, 529, 724, 1808, 2266, 2267, - 529, 529, 529, 1231, 3616, 529, 824, 3547, 3657, 529, - 1261, 3547, 529, 529, 529, 529, 529, 529, 529, 529, - 529, 2345, 1484, 529, 1311, 1229, 2807, -2122, -2122, 1263, - 529, 1320, 1317, 2730, 1241, 923, 824, 947, 824, 1323, - 527, 824, 2158, 1448, 1242, 988, 824, 2247, 1324, 824, - 529, 824, 2951, 1329, 894, 824, 1243, 2346, 1227, 1331, - 1810, 924, 1335, 1809, 26, 27, 28, 1582, -2123, -2123, - 1345, 71, -2124, -2124, 529, 1347, -557, 117, 3297, 991, - 1171, 540, 2213, 2662, 1348, 529, 529, 1355, 1244, 754, - 1356, -557, -2125, -2125, 2142, 1362, -557, 1365, 2870, 2872, - -2126, -2126, 1366, 843, 814, 1371, 1009, 857, -2128, -2128, - 1389, 1049, 1811, -2129, -2129, 814, -2130, -2130, 2352, 1390, - 1808, 1395, 1229, -2131, -2131, 1585, 2734, 925, -2132, -2132, - 1231, 33, -2133, -2133, 1453, 724, 1156, 1872, 1466, 724, - -2135, -2135, 1468, 1246, -2137, -2137, 1469, -557, 1476, 3021, - 1592, 1480, 1065, 1810, 2353, 1962, 926, 1489, 1031, 1963, - 1964, 1488, 1604, 1965, 1966, 1967, 1495, -557, 1247, 38, - -2140, -2140, 1859, 1860, 1496, 2971, 1873, 1808, 1506, 2305, - 1806, 2320, 529, 1502, 828, 2326, 1809, 1508, 1249, 1317, - 1632, 1587, 529, 529, 1032, 1588, 23, 2054, 3110, 927, - 23, -688, -688, 40, 1590, 1811, 3316, 1582, -692, -692, - 1493, -869, 1874, -876, 43, 1599, -557, 3099, 1603, 3132, - 1034, -691, -691, 1413, 1414, -557, 46, 1231, 1417, 1418, - 3081, 44, -866, 1317, -713, 3634, 3256, 3257, -714, 3636, - 2799, 2801, -867, 1809, 3643, 3644, 3380, 2418, 1613, 2738, - -870, 724, 3669, 3670, 1614, 45, 3143, -868, 1317, 529, - 1621, 3472, 1710, 1711, 1875, 2681, 2682, 987, 3225, 2952, - 1383, 1636, 1380, 1806, 1582, 1646, 1810, 892, 892, 1648, - 892, 1693, 1423, 1585, 1695, 545, 1697, 529, 529, 1709, - 529, 1717, 1718, 1722, 3677, 1585, 529, 529, 529, 529, - 529, 529, 1727, 1729, 529, 529, 529, 529, 529, 529, - 529, 529, 529, 529, 1200, 1764, 1202, 1766, 1768, 529, - 529, 1783, 1802, 529, 1803, 1585, 1813, 928, 1811, 1814, - 529, 1815, 1585, 1810, 1820, 1827, 1828, 1842, 929, 1832, - 26, 27, 28, 1968, 26, 27, 28, 2417, 546, 2662, - 1038, 1862, 1849, 1863, 529, 1864, 1868, 1871, 3074, 1877, - 1878, 529, 1887, 529, 1886, 1890, 1969, 529, 23, 1486, - 1896, 1237, 1893, 1897, 930, 1894, 1585, 1899, -557, 1918, - 1585, 1900, 529, 1582, 1317, 1811, 1585, 1913, 1914, 1926, - 1951, 1238, 1953, 1954, 1956, 2001, 1806, 931, 1959, 527, - 1982, 1991, 1990, 1647, 1998, 527, 2021, 33, 2023, 1585, - 2024, 33, 3191, 1650, 2028, 2034, 3472, 815, 2038, 2039, - 2040, 529, 529, 815, 2052, 2049, 932, 2046, 1600, 3288, - 1605, 1593, 2053, 2055, 545, 1700, 1970, 1239, 3437, 2056, - 2057, 2058, 2088, 2089, 1705, 38, 1066, 2122, 918, 38, - 1654, 3189, 919, 1806, 71, 2127, 2123, 2527, 3472, 2137, - 529, 2134, 2131, 2530, 529, 2136, 2160, 877, 2010, 529, - 529, 2138, 2180, 2139, 2183, 3298, 3299, 2181, 2207, 40, - 2208, 1326, 2214, 40, 2228, 1960, 1961, 2226, 1582, 2227, - 43, 1981, 2229, 563, 43, 529, 529, 546, 2230, 755, - 529, 885, 2243, 822, 2246, 2255, 2256, 3472, 2257, 822, - 831, 44, 26, 27, 28, 2258, 529, 2259, 2260, 529, - 529, 529, 2277, 2281, 874, 874, 2282, 2285, 2292, 1634, - 2296, 2298, 550, 1240, 978, 45, 2297, 529, 724, 886, - 3527, 2306, 2324, 1065, 529, 46, 1962, 529, 1845, 46, - 1963, 1964, 2325, 2329, 1965, 1966, 1967, 3488, 527, 2330, - 554, 1383, 2365, 529, 2366, 814, 1383, 814, 2367, 2379, - 814, 548, 2383, 2398, 1582, 814, 529, 2389, 814, 33, - 814, 824, 1241, 2400, 814, 527, 3274, 824, 2401, 906, - 2402, 2403, 1242, 529, 529, 2404, 2405, 2419, 2422, 2420, - 2425, 527, 2426, 815, 1243, 2427, 2429, 2428, 2431, 2435, - 529, 2452, 529, 2460, 1987, 1930, 1932, 38, 1962, 815, - 2490, 1986, 2519, 2497, 3074, 529, 2531, 2543, 2545, 2507, - 1326, 2498, 2550, 2499, 2561, 2503, 1244, -219, 2508, 724, - 2551, 14, 15, 2529, 2552, 2554, 2555, 2556, 724, 724, - 724, 40, 1971, 1972, 1973, 2557, 1974, 1975, 1976, 1977, - 1978, 1979, 43, 2560, 2568, 1065, 2572, 2569, 1962, 71, - 2576, 2571, 1963, 1964, 2574, 1933, 1965, 1966, 1967, 44, - 2575, 550, 2577, 551, 826, 1582, 2578, 23, 2573, 822, - 2579, 1246, 529, 2908, 2320, 2320, 2320, 2585, 877, 2589, - 1835, 1317, 2599, 45, 1626, 822, 2600, 2614, 3426, 554, - 2607, 2623, 2624, 2602, 2629, 2630, 1247, 46, 2631, 2642, - 1582, 2647, 2649, 2650, 2655, 2657, 2658, -694, 1879, 2668, - 2669, 2672, 1880, 2675, 2280, 724, 1249, 2679, 2680, 1781, - 1585, 2683, 2685, 2671, 1882, 1883, 2687, 988, 2688, 2691, - 2712, 2168, 2714, 2727, 2729, 2735, 2736, 1969, 2737, 2762, - 529, 2728, 2767, 2787, 2748, 2749, 2788, 824, 2761, 2791, - 2783, 2784, 1806, 525, 536, 529, 987, 2795, 2804, 561, - 1607, 2773, 2814, 824, 724, 561, 1582, 1645, 2822, 812, - 2825, 827, 2828, 3333, 2832, 830, 561, 839, 2831, 2845, - 839, 2846, 2848, 859, 859, 14, 15, 859, 2859, 1582, - 561, 561, 2833, 2834, 23, 2849, 2860, 2865, 2873, 2884, - 892, 2881, 529, 2892, 2902, 2891, 2913, 1970, 2926, 2911, - 1934, 26, 27, 28, 2903, 2914, 2934, 2917, 2932, 1930, - 1932, 812, 812, 2942, 2945, 2142, 2938, 2927, 2943, 2962, - 2964, 23, 1383, 1582, 2968, 2966, 2976, 2983, 2989, 2982, - 527, 3009, 3025, 3477, 529, 3479, 3096, 859, 3097, 3098, - 3487, 3102, 3105, 3106, 859, 561, 859, 859, 859, 1969, - 1585, 3113, 3114, 3122, 3123, 3128, 877, 1165, 3136, 3137, - 3141, 2382, 3148, 3149, 3174, 3154, 3177, 529, 33, 1653, - 3181, 3185, 1654, 529, 529, 3195, 1655, 1656, 3196, 35, - -2141, -2141, -2141, 3200, 3489, 3199, 3491, 3226, 3233, 529, - 3236, 3240, 3237, 3247, 877, 3249, 3253, 3609, 3267, 3254, - 3255, 3263, 37, 3570, 3271, 529, 38, 1664, 529, 3261, - 529, 3262, 3272, 3273, 1665, 3281, 3284, 1585, 529, 1970, - 3286, 529, 529, 3308, 2929, 3287, 529, 529, 26, 27, - 28, 3574, 3306, 529, 822, 1582, 2399, 3563, 3291, 3309, - 40, 1666, -2107, -2108, -2109, 3305, -2110, 2970, 71, -2111, - 529, 43, 3324, -2112, 3326, -2113, -2114, -2115, 3558, -2116, - 529, -2117, -2119, 2219, -2120, 26, 27, 28, 44, 3310, - -2121, -2122, 2954, 2469, 2470, 2471, 2472, 2473, 2474, -2123, - 529, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, - 2487, -2124, 45, 3342, -2125, 33, -2126, -2128, -2129, -2130, - -2131, -2132, -2133, -2134, -2135, -2136, 46, -2137, 3327, -2138, - 955, -2139, 824, 1971, 1972, 1973, -2140, 1974, 1975, 1976, - 1977, 1978, 1979, 724, -1341, 3313, 3077, 724, 3344, 724, - 529, 529, 33, 38, 3311, 3314, 2287, 2289, 1667, 3322, - 3329, 3346, 3347, 35, 529, 3356, 529, 3357, 3350, 3360, - 3364, 3362, 3368, 3374, 3371, 1668, 3370, 3376, 3375, 3379, - 1669, 3386, 3382, 3403, 3383, 3402, 37, 40, 3408, 2320, - 38, 3404, 3139, 3079, 3411, 2326, 529, 1879, 43, 3414, - 814, 1880, 545, 3108, 3428, 3416, 814, 3429, 1383, 3438, - -1340, 3436, 3444, 1882, 1883, 44, 3446, 3460, 1672, 3461, - 2357, 3447, 3462, 3474, 40, 3598, 23, -1388, 3475, 3481, - 3478, 3482, 3490, 3484, 3496, 43, 3133, 2374, 2374, 45, - 3280, 3516, 877, 3520, 3522, 3523, 3526, 3539, 529, 3532, - 3544, 1585, 44, 46, 3540, 1971, 1972, 1973, 3541, 1974, - 1975, 1976, 1977, 1978, 1979, 546, 3549, 3551, 529, 529, - 3553, 529, 3229, 1675, 3556, 529, 45, 3557, 529, 3560, - 3561, 3562, 3569, 1028, 3567, 3576, 3571, 3581, 1029, 3587, - 46, 3588, 2603, 2604, 3594, 3589, 3595, 3614, 3596, 3624, - 3627, 3604, 3606, 3608, 3629, 529, 3645, 3648, 3625, 3626, - 1380, 2994, 3662, 3667, 3673, 3678, 2454, 2995, 3687, 977, - 3688, 1582, 3024, 974, 1187, 529, 2700, 2332, 3028, 3503, - 2996, 529, 529, 2710, 3602, 2957, 529, 1585, 3566, 1632, - 3330, 529, 877, 3671, 529, 529, 1028, 1030, 2437, 529, - 1317, 1029, 3294, 529, 2997, 3585, 2998, 529, 3501, 2168, - 2806, 1163, 3655, 3424, 3623, 3630, 3649, 1795, 529, 3459, - 26, 27, 28, 2690, 2717, 2625, 1677, 920, 2302, 1237, - 2078, 77, 2303, 2080, 2082, 2081, 814, 2084, 2085, 3127, - 3621, 2993, 3628, 3080, 2686, 527, 1916, 3619, 549, 1238, - 859, 2798, 814, 2800, 1876, 859, 2757, 2811, 859, 3351, - 1030, 2674, 529, 815, 3104, 2284, 561, 3082, 2660, 1031, - 529, 1719, 1760, 1473, 1474, 1761, 2836, 1210, 3607, 2670, - 2252, 3552, 3480, 816, 2283, 1653, 1765, 33, 1654, 529, - 2646, 874, 1655, 1656, 2999, 1239, 3184, 2535, 1585, 550, - 1503, 978, 1440, 1475, 3378, 1032, 2862, 2830, 3430, 2829, - 2446, 2549, 2447, 1424, 3296, 2448, 1426, 1430, 552, 1431, - 1432, 1033, 1433, 1664, 553, 38, 3555, 554, 1434, 1435, - -2141, 1034, 1031, 3077, 3554, 1436, 1678, 2886, 2663, -2141, - -2141, -2141, 2621, 1682, 1683, 1684, 1685, 1686, 1687, 822, - 2597, 2565, 2012, 2598, 3239, 2619, 2905, 1666, 3209, 40, - 3542, 992, 3000, 1928, 2377, 1035, 2542, 3001, 1032, 2222, - 43, 2958, 1218, 3238, 2224, 0, 0, 0, 724, 0, - 0, 0, 0, 0, 1033, 0, 1211, 44, 0, 0, - 0, 1240, 724, 0, 1034, 0, 0, 0, 0, 1585, - 0, 1574, 0, 0, 877, 0, 0, 0, 0, 0, - 529, 45, 1036, 0, 3334, 0, 0, 3002, 987, 1037, - 876, 529, 1585, 0, 2773, 46, 1576, 824, 1035, 0, - 0, 0, 0, 0, 0, 3003, 0, 529, 2773, 0, - 1241, 0, 0, 0, 0, 0, 0, 0, 0, 2030, - 1242, 0, 0, 1577, -2141, 0, 0, 967, 561, 561, - 0, 1038, 1243, 0, 0, 0, 1585, 0, 0, 0, - 0, -2141, 529, 0, 0, 1036, -2141, 0, 0, 0, - 1039, 0, 1037, 0, 0, 0, 0, 0, 0, 529, - 529, 0, 0, 529, 1244, 529, 0, 0, 0, 990, - 536, 0, 0, 0, 0, 525, 0, 859, 0, 0, - 0, 0, 0, 0, -2141, 0, 812, 0, 0, 0, - 1017, 1017, 529, 812, 1038, 0, 1017, 1044, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3004, 0, 839, - 839, 839, 0, 1039, 839, 0, 529, 3005, 2721, 1246, - 0, 1040, 1113, 1113, 839, 839, 1212, 839, 0, 839, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1675, - 0, 859, 0, 0, 1247, 0, 0, 561, 3077, 0, - 0, 0, 0, 0, 545, 0, 1574, 0, 0, 859, - 0, 0, 0, 0, 1249, 0, 0, 0, 2919, 2920, - 0, 874, 724, 859, 827, 0, 2754, 0, 1632, -1388, - 0, 1576, 0, 0, 1040, 3442, 0, 0, 1065, 2031, - 0, 1962, 0, 529, 2769, 1963, 1964, 0, 0, 1965, - 1966, 1967, 0, 529, 0, 529, 0, 529, 1577, 859, - 1322, 529, 0, 529, 0, 529, 1632, 546, 2773, 0, - 0, 1333, 0, 0, 0, 859, 859, 859, 859, 529, - 0, 527, 0, 0, 529, 0, 529, 0, 0, 1380, - 0, 1354, -2141, 71, 0, 0, 529, 0, 0, 2812, - 1574, 2813, 0, 0, 0, 2818, 0, 2821, 0, 724, - 0, 0, 1237, 0, 529, 3500, 0, 3502, 0, 2969, - 0, 547, 0, 1017, 1044, 1576, 859, 0, 0, 1447, - 0, 3622, 1238, 0, 0, 1017, 1017, 0, 0, 0, - 0, 548, 561, 0, 0, 0, 0, 0, 812, 0, - 812, 0, 1577, 0, 0, 3509, 0, 3535, 0, 812, - 0, 529, 0, 0, 0, 0, 0, 0, 0, 561, - 0, 529, 0, 3538, 0, 0, 0, 0, 1239, 3015, - 0, 0, 0, 529, 1065, 822, 1589, 1962, 0, 3016, - 0, 1963, 1964, 0, 0, 1965, 1966, 1967, 529, 0, - 549, 0, -2141, 1921, 71, 1922, 0, -219, 0, 1682, - 1683, 1684, 1685, 1686, 1687, 0, 529, 0, 0, 0, - 0, 1065, 0, 0, 1962, 3147, 0, 0, 1963, 1964, - 0, 0, 1965, 1966, 1967, 0, 527, 71, 561, 0, - 529, 0, 0, 0, 3138, 0, 0, 0, 3017, 2909, - 0, 550, 1969, 551, 0, 529, 0, 0, 0, 0, - 0, 0, 0, 824, 3077, 0, 724, 0, 0, 0, - 552, 0, 0, 0, 1240, 0, 553, 0, 527, 554, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 529, - 0, 1713, 0, 0, 1632, 0, 0, 0, 0, 3631, - 0, 0, 0, 529, 529, 529, 0, 561, 561, 0, - 0, 0, 3509, 0, 859, 0, 0, 0, 0, 0, - 0, 1653, 1970, 1241, 1654, 3646, 1574, 527, 1655, 1656, - 529, 0, 0, 1242, 0, 0, 0, 1447, 1113, 1113, - 822, 0, 0, 0, 0, 1243, 0, 3018, 0, 859, - 1794, 1576, 0, 0, 0, 0, 0, 0, 0, 1664, - 0, 0, 859, 0, 0, 0, -2141, 0, 0, 3070, - 0, 529, 0, 0, 0, 0, 814, 1244, 1577, 859, - 0, 0, 822, 859, 0, 71, 0, 0, 0, 1846, - 0, 0, 0, 1666, 876, 0, 0, 3276, -2141, 0, - 0, 0, 0, 2754, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1065, 0, 0, 1962, 824, 0, - 0, 1963, 1964, 1574, 0, -2141, -2141, -2141, 0, 0, - 0, 822, 1246, 0, 562, 1969, 0, 0, 0, 0, - 562, 0, 0, 0, 813, 0, 0, 0, 1576, 0, - 1865, 562, 859, 0, 0, 0, 0, 1247, 2605, 0, - 824, 859, 1028, 0, 0, 562, 562, 1029, 1970, 0, - 0, 0, 1909, 0, 0, 1577, 0, 1249, 0, 3019, - 0, 967, 3020, 0, 0, 0, 967, 0, 561, 561, - -2141, 561, 967, 0, 0, 0, 813, 813, 0, 0, - 0, 0, 0, 0, 0, 1970, 0, -2141, 0, 824, - 0, 0, -2141, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1030, 0, 0, 0, - 562, 0, 0, 0, 0, 0, 0, 858, 1971, 1972, - 1973, 866, 1974, 1975, 1976, 1977, 1978, 1979, 3352, 0, - -2141, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1574, 0, 0, 0, 71, 0, 0, 0, 0, - 0, 1447, 1447, 0, 0, 0, 0, 1447, 0, 525, - 0, 0, 0, 0, 3235, 0, 1576, 0, 0, 0, - 0, 0, 1017, 1806, 561, 2005, 0, 0, 1031, 1113, - 1113, 902, 859, 0, 0, 1675, 1632, 0, 905, 812, - 908, 812, 912, 1577, 812, 0, 0, 0, 0, 812, - 0, 1113, 812, 0, 812, 0, 0, 2295, 812, 0, - 561, 0, 561, 0, 1032, 0, 0, 0, 2309, 0, - 2312, 0, 0, 2323, 0, 0, 0, 0, 0, 0, - 1033, 0, 0, 2331, 0, 2333, 0, 0, 0, 0, - 1034, 0, 0, 0, 0, 0, 0, 0, 2340, 0, - 0, 0, 0, 2343, 0, 0, 0, 2348, 2349, 0, - 2351, 1579, 2355, 2356, 1971, 1972, 1973, 0, 1974, 1975, - 1976, 1977, 1978, 1979, 1035, 0, 0, 0, 1970, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -2141, 0, - 0, 0, 0, 0, 0, 1213, 0, 0, 0, 1574, - 0, 1971, 1972, 1973, 0, 1974, 1975, 1976, 1977, 1978, - 1979, 1574, 0, 0, 0, 0, 0, 0, 0, 2117, - 0, 1036, 1653, 0, 1576, 1654, 0, 0, 1037, 1655, - 1656, 0, 561, 1659, 1660, 1661, 1576, 0, 0, 0, - 3328, 1574, 0, 0, 0, 0, 71, 0, 1574, 0, - 1662, 1577, 0, 0, 0, 0, 0, 0, 0, 0, - 1664, 0, 0, 1577, 0, 0, 1576, 1665, 3466, 0, - 1038, 1380, 967, 1576, 0, 1447, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039, - 0, 0, 1574, 1577, 1666, 0, 1574, 0, -2141, 0, - 1577, 0, 1574, 1113, 0, 1682, 1683, 1684, 1685, 1686, - 1687, 0, 0, 0, 0, 0, 0, 1576, 2220, 0, - 859, 1576, 859, 0, 0, 1574, 71, 1576, 71, 0, - 0, 0, 0, 859, 0, 2235, 0, 0, 0, 0, - 0, 0, 1937, 0, 1577, 0, 1579, 1447, 1577, 0, - 1576, 0, 0, 0, 1577, 0, 0, 0, 0, 3399, - 1040, 0, 1028, 0, 0, 0, 0, 1029, 71, 0, - 0, 0, 859, -1863, 561, 0, 0, 1577, 0, 0, - 0, 0, 0, 0, 71, 0, 2286, 2288, 0, 1938, - 0, 1667, 1794, 561, -2141, -2141, -2141, 0, 1974, 1975, - 1976, 1977, 1978, 1979, 561, 2310, 561, 1794, 1668, 561, - 1939, 0, 0, 1669, 0, 0, 0, 0, 0, 561, - 0, 561, 0, 0, 0, 0, 1030, 0, 1940, 0, - 0, 3070, 1941, 967, 561, 0, 1670, 1671, 967, 561, - 1579, 0, 0, 561, 561, 1794, 561, 0, 561, 561, - 0, 1672, 0, 0, 0, 1942, 1653, 0, 1943, 1654, - 0, 562, 0, 1655, 1656, 0, 0, 0, 0, 2378, - 0, 0, 0, -1863, 1944, 0, 0, 1333, 0, 859, - 859, 859, 859, 859, 0, 0, 0, 0, 0, 1673, - 0, 0, 1674, 0, 1664, 0, 0, 0, 1031, 0, - 2407, -2141, 0, 0, 0, 0, 1675, 0, 0, 1676, - 71, 0, 0, 0, 0, 0, 0, 0, 0, 2430, - -1863, 0, 0, 0, 936, 0, 0, 0, 1666, 943, - 0, 0, 944, 0, 1032, -1863, 71, 0, 0, 0, - -1863, 0, 0, 0, 0, -1863, 1921, 0, 0, 0, - 1033, 0, 0, 0, -1863, 0, 0, 0, 0, -1863, - 1034, 0, 0, 0, 3528, 0, 0, 1945, 0, 1447, - 1447, 1447, 1447, 1447, 1447, 1946, 0, 1447, 1447, 1447, - 1447, 1447, 1447, 1447, 1447, 1447, 1447, 0, 0, 0, - 0, -1863, 0, 2615, 1035, 0, 0, 1947, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 561, 0, 1677, - 0, -1863, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 859, 0, 0, 0, -2141, 0, 1948, 0, 0, - 0, 0, 0, 0, 812, 0, 0, 0, 0, 0, - 812, 1036, -2141, 0, 0, 0, 561, -2141, 1037, 0, - 0, 11, 561, 562, 562, 0, 1574, 0, 0, 0, - -1863, 2547, 2547, -1863, 0, 0, 1579, 0, 0, -1863, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 15, 1576, 0, 0, 0, -2141, 0, 0, 0, 0, - 1038, 0, 0, 0, 0, 0, 0, 3070, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1577, 1039, - -1863, 813, 0, 0, 0, 0, 0, 0, 0, 1678, - 0, 0, 1679, 1680, 1681, 23, 1682, 1683, 1684, 1685, - 1686, 1687, 0, 0, 561, -1863, 0, 2790, 0, 2591, - 1675, 0, 0, 0, 561, 1065, 0, 0, 1962, 0, - 0, 0, 1963, 1964, 0, 0, 1965, 1966, 1967, 0, - 0, 0, 0, 1579, 0, 0, 1580, 0, 1447, 1447, - 0, 0, 562, 3216, 0, 0, 0, 0, 0, 0, - 1040, 1001, 0, 0, 0, 0, 0, 2117, 0, 0, - 0, 0, 0, 1447, 864, 0, 1574, 0, 0, 0, + 529, 77, 920, 53, 99, 877, 57, 1148, 65, 724, + 68, 69, 969, 94, 1252, 1215, 529, 82, 103, 1042, + 1514, 77, 1457, 863, 789, 2014, 1838, 1272, 1850, 1989, + 988, 1837, 1326, 889, 527, 1724, 1821, 2218, 815, 1329, + 1430, 2123, 893, 971, 783, 1623, 894, 2250, 1427, 1429, + 527, 1431, 70, 2083, 2366, 1366, 1810, 2707, 2052, 2135, + 2375, 2299, 2670, 1855, 2660, 1804, 2174, 1389, 529, 529, + 1372, 1383, 1782, 750, 2552, 2153, 2151, 2152, 2319, 1921, + 50, 3083, 3117, 51, 3085, 3135, 2641, 52, 2643, 861, + 815, 815, 55, 1842, 1701, 3114, 910, 723, 875, 1704, + 2698, 3131, 527, 527, 56, 59, 2622, 1020, 60, 2902, + 2659, 562, 979, 1045, 890, 891, 2355, 755, 526, 982, + 2762, 1272, 2397, 1251, 2222, 1257, 1637, 1261, 831, 61, + 63, 2974, 2393, 2392, 822, 2979, 1066, 856, 66, -1403, + 67, -1983, 874, 874, 2176, 80, -474, 81, 83, 84, + 1644, 90, 2502, 903, 2273, -547, 91, -391, 93, -1983, + 98, 102, 104, 1599, 1600, -551, 541, -2128, -2128, 2771, + 2007, 1360, -1325, 2772, 3345, 2008, 1067, 3556, -909, 2363, + -1344, 1613, 989, 2764, 2270, -1974, 822, 822, -1341, -1341, + -1991, 2099, -1345, -2119, -2119, 2766, 1441, 867, -2137, -2137, + -1342, -1342, 2780, -901, -2114, -2114, -906, 906, 2748, -1344, + -906, -1974, 826, 2310, -1991, -909, 1066, 3212, -1345, -868, + -881, -896, 826, 826, -2139, -2139, 3277, 2166, 1788, 3116, + 2166, -1164, 1376, 3431, 2554, 1161, 1966, 1066, 2909, -1164, + 1263, 1968, 1180, 1853, 1709, 960, 23, 2708, -500, 1167, + 3662, 1066, 1204, 1854, 1800, 3260, -547, 988, 3403, 824, + 2822, 2824, 1657, 2827, -1864, 1840, -551, 1659, 2283, 1584, + 1351, 2863, 1272, 1800, 1657, 1705, 1376, 826, 1658, 1659, + 826, 1066, 3215, 542, 2737, 3444, -247, 2789, 1731, 1014, + 1045, -247, 1207, 2533, 2534, 826, 886, 1604, 1667, 2757, + 1012, 826, 1020, 2572, 2540, 2205, 881, 1745, 2544, 1352, + 1667, 824, 824, 2206, 1615, 1966, 1811, 3329, 2426, 1967, + 1968, 1360, 2006, 1791, 1822, 1783, 886, 1825, 1826, 1266, + 1474, 3332, 1669, 1360, -1185, 1481, 1165, 1484, 1168, 3136, + 3516, 3629, -1185, 1390, 1669, 3475, 113, 2523, 2524, 2525, + 2512, 3349, 1021, -696, 1746, 3476, 1509, 2058, 2709, 1657, + 2006, 3675, 3292, 1658, 1659, -1864, 1396, 3686, 2389, 2701, + 3, 4, 2470, 3288, 1777, 1778, 1710, -2113, -2113, 1609, + 844, -838, 1812, 2844, 2476, 3017, 1728, 2215, 2991, 3691, + 1706, 26, 27, 28, 2276, 1667, 1200, 882, 1966, 3409, + 3590, 3411, 1967, 1968, 2988, 1827, 2513, 1657, 3560, 881, + 3580, 2633, -1864, 105, 2504, 3524, 3274, 14, 15, 3312, + 2711, 2509, 3313, 3461, 3241, 1194, 3243, -1864, 3637, 1669, + 114, 1618, -1864, 3286, 1628, 2967, 1860, -1864, 3339, 2987, + 1902, 3576, 3577, 1667, 2475, 1836, -1864, -547, 3372, 794, + 3030, -1864, 3107, 1619, 3354, 1584, 3340, -551, 33, 3018, + 1856, 3663, 1832, 23, 106, 2545, 3692, 1620, 539, 2545, + 1361, 1329, 1813, 1202, 1748, 2503, 2992, 1669, 3462, 3525, + 1633, 2970, 845, -1864, 2833, 1793, 1833, 3463, 2698, 1353, + 2698, 3275, 1540, 3617, 1022, 3542, 38, 1162, 2566, 1629, + 882, 3644, 2894, 2968, -1864, 2702, 3137, 1169, 3287, 1170, + 1623, 3464, 2277, 793, 1480, 1707, 1228, -838, 3150, -547, + 1809, 3676, 3630, 3477, 1814, 1859, 1267, 1195, 3488, -551, + 40, 3687, 995, 3645, 115, 3289, 1494, 3591, 1749, 2216, + 1499, 43, 3456, 2993, 3019, 2994, 868, 3420, 2284, 3664, + 1729, 1828, 2514, -1864, 3632, 2055, -1864, 2381, 3460, 3693, + 961, 1829, -1864, 2591, 3432, 1365, 3121, 2750, 2751, 2752, + 3278, 3517, 3144, 1727, 1163, 1719, 3145, -716, 3665, 1779, + 2710, 3127, 2711, 1617, 3465, 3326, 2174, 1060, 1847, 1781, + 724, 3603, 1809, 1648, 2863, 935, 46, 3466, 3351, 825, + 2548, 2167, -1164, -1864, 2624, 1794, 1841, 1354, 26, 27, + 28, 2123, 2712, 2374, 1599, 1600, 3156, 918, 969, 1780, + 1361, 919, 3426, 1923, 3592, 2738, 1784, 1857, -1864, 1927, + 2390, 864, 1361, 543, 1362, 2831, 2015, 2921, 2834, 1613, + -547, 3436, 883, 2441, 2093, 3452, 988, 2645, 3370, 2878, + -551, 3442, 918, 2673, 2783, 1924, 1645, 955, 2039, -1983, + 1618, 2773, 2776, 2662, 2176, -1403, 3083, 1610, 1838, 3085, + 1595, 2221, -474, -474, 2668, 33, 2207, -1983, 957, -547, + 1325, -547, 1619, -391, 2270, 1610, 35, 864, 918, -551, + -1325, -551, 919, 2745, 1110, 1111, 1620, 1618, -1344, 1365, + 2447, 2105, 2106, -1974, 3504, -1185, 2758, 2759, -1991, 37, + -1345, 2749, 3423, 38, 1601, -1864, 3694, 3424, 877, 1619, + 3108, -901, 2762, 3392, -906, 3268, -1864, -1344, 1931, -1974, + 1652, 879, -1991, 1622, 1008, 982, -1345, 1602, 1607, -896, + 1702, 2223, 1380, 1381, 1983, 2567, -1864, 40, -1864, -1864, + 3549, 1604, 987, 1272, 2147, 1272, 3301, 3302, 43, 77, + 2004, 3404, 789, 3541, 3638, 3604, 2594, 1832, 1807, 877, + 1690, 1615, 3548, 2483, 2245, 44, 1584, 1685, 1686, 1687, + 1688, 1689, 1690, 984, 1365, -1864, 1380, 1381, -1864, -1864, + -1864, 1833, 529, 2029, 3615, 2464, -247, -247, 2857, 45, + 2465, 3467, 1026, 529, 3468, 884, 2081, 880, 1171, 2374, + 529, 1742, 2997, 46, 2529, 2046, 545, 2304, 1978, 1979, + 1980, 1981, 1982, 1983, 2304, 1010, 527, 893, 3673, 2310, + 2941, 894, 2943, 1998, 3259, 1739, 2649, 527, 2998, 529, + 529, -1389, 2942, 1657, 527, 2845, 2846, 2847, 2848, 1011, + 1166, 974, 3160, 1216, 2530, 1501, 3250, 2510, 1808, 2246, + 2466, 2650, 2955, 529, 1687, 1688, 1689, 1690, 1166, 3698, + 3613, 1225, 3114, 2432, 1584, 545, 885, 1226, 2305, 3670, + 546, 77, 1312, 53, 99, 2695, 57, 947, 65, 3261, + 68, 69, 1172, 94, 1225, 3251, 895, 82, 103, 3622, + 1226, 3343, 2510, 1980, 1981, 1982, 1983, 1502, 3330, 2343, + 822, 529, 724, 1669, 1618, 1318, 529, 2484, 2956, 2346, + 1743, 822, 2349, 998, 1181, 2342, 948, 2485, 822, 3340, + 2169, 2634, 70, 2864, 2402, 3083, 1619, 3222, 3085, 546, + 1489, 1027, 870, 3510, 2729, 3511, 1496, 826, 23, 3101, + 3102, 856, 856, 3344, 856, 886, 856, 2730, 896, 1050, + 50, 2517, 2775, 51, 2090, 1633, 2985, 52, 1318, 874, + 1051, 898, 55, 2873, 1633, 2367, 2368, 2369, 1809, 987, + 2403, 3688, 1227, 877, 56, 59, 529, 529, 60, 2126, + 77, 3346, 529, 789, 3034, 529, 529, 1328, 529, 529, + 529, 529, 2296, 914, 2440, 1227, 3347, 2123, 2442, 61, + 63, 2444, 1584, 3094, 951, 529, 3429, 529, 66, 2457, + 67, 2148, 3562, 2452, 1372, 80, 529, 81, 83, 84, + 2912, 90, 2705, 3165, 2341, 824, 91, 815, 93, 1010, + 98, 102, 104, 529, 1318, 1587, 824, 3200, 815, 527, + 3202, 527, 3204, 824, 2352, 826, 1800, 3623, 1486, 2359, + 527, 1477, 2189, 1011, 550, 529, 978, 1801, 877, 918, + 2014, 1989, 1493, 919, 1875, 2177, 1200, 3416, 1225, 3294, + 2646, 1201, 2647, 1618, 1226, 529, 3624, 3299, 545, 552, + 1200, 2344, 553, 26, 27, 28, 2347, 529, 529, 529, + 1800, 529, 529, 2178, 724, 1619, 1811, 1811, 887, 1405, + 1406, 1803, 1648, 1876, 2463, 2091, 1838, 1584, 2467, 1622, + 3543, 2469, 2177, 550, 2097, 978, 2746, 2753, 918, 3443, + -1325, 2679, 919, 822, 3232, 822, 1922, 529, 945, 1225, + 1228, 1933, 2614, 913, 822, 1226, 1066, 3081, 545, 3334, + 2178, 553, 546, 1202, 2668, 529, 529, 937, 1486, 938, + 33, 1733, 1734, 1228, 1740, 894, 894, 1202, 894, 3520, + 2615, 1584, 1812, 1812, 1166, 918, 3364, 3537, 916, 1645, + 1413, 1414, 934, 1584, 1922, 1935, 2190, 2426, 2739, 1227, + 1066, 529, 1638, 2209, 1031, 529, 529, 2210, 38, 3348, + 1229, 1879, 1203, 2191, 1230, 529, 529, 529, 2192, 988, + 529, 946, 546, 1584, 3602, 1374, 1203, 3605, 1375, 2179, + 1584, 941, 1717, 1255, 2378, 1718, 548, 1230, -1983, 2181, + 1032, 1587, 40, 1637, 1928, 1843, 1231, 1929, 108, 1839, + 1054, 1055, 1056, 43, 2790, 1059, 1487, 2193, -634, 1997, + 1227, 1999, 2000, -634, 2801, 3269, 2864, 1034, 824, 1256, + 824, 922, 1813, 1813, 1584, 2671, 2179, 1318, 1584, 824, + 1066, 2180, 1611, 1612, 1584, 1065, 2181, 1318, 1966, -223, + 874, 2054, 1967, 1968, 2055, 1327, 944, -2142, -2142, -2142, + 2079, 2616, -222, 2080, 1031, 953, 2617, 1584, 46, 958, + 1419, 1420, 1318, 962, 2386, 1065, 3321, 2387, 1966, 1232, + 3668, 947, 1967, 1968, 1814, 1814, 959, 1969, 1970, 1971, + 884, 1155, 1156, 963, 1158, -634, 1160, 939, 3208, 940, + 1032, 1593, 1232, 46, 2914, -635, 550, 1883, 551, 1884, + -635, 2458, 724, 2642, 2459, 1327, 1495, 1228, 1886, 1887, + 948, 724, 2722, 2496, 2724, 1225, 2497, 1034, 2518, 2546, + 2519, 1226, 2547, 1225, 553, 1225, 964, 2549, 987, 1226, + 2547, 1226, 975, 2508, -634, 77, 2725, 2731, 789, 2726, + 2732, 965, 1809, 1809, 2182, 724, 949, 1038, 3161, 2858, + 529, 885, 993, 2865, 2123, 2183, 550, 2804, 978, 984, + 2055, 2719, 2421, 2721, 3684, 2194, 1488, 1259, 1228, 950, + 109, 1230, -635, 2870, 2083, 2871, 2547, 2874, 2080, 2876, + 2875, 110, 2875, 23, 553, 1413, 1414, -2109, -2109, 2600, + 1916, 2182, 2962, 995, 3124, 2963, 3126, 3125, 951, 2387, + 529, 529, 2183, 1260, 3154, 2682, 529, 3155, 529, 3162, + 3306, 2618, 3163, 529, 529, 529, 529, 111, 3671, 994, + 3672, -635, 2619, 1925, 2570, 1926, 1227, 996, 529, 529, + 886, 999, 1230, 1938, 1227, 2418, 1227, 2419, 529, 3647, + 529, 1745, 527, 529, -2110, -2110, 3028, 1038, 529, 1002, + 529, 529, 3021, 529, 3659, 2770, 3223, 529, 1003, 2080, + 815, 3697, 815, 1004, 1231, 815, 1488, 1005, 3100, 112, + 815, 1006, 527, 815, 527, 815, 1232, 527, 3316, 815, + 1973, 2248, 527, 1007, 2030, 527, 2031, 527, 1746, 2033, + 1008, 527, 2895, 2896, 2037, 1013, 3020, 2040, 3029, 2041, + -2111, -2111, 3110, 2045, 2612, 1419, 1420, 1015, 3365, 3695, + 2310, 2080, 1587, 117, 3696, 3366, 2426, 540, 2547, 3398, + 1811, 1974, 2080, 1057, 3405, 754, 822, 2055, 26, 27, + 28, 3417, 3450, 3451, 3418, 3125, 2387, 1232, 3485, 843, + 2520, 2080, 2521, 857, 1047, 529, 529, 945, -2112, -2112, + 77, 1974, 2082, 2089, 529, 529, 822, 1747, 822, 2084, + 2085, 822, 2088, 529, 3506, 3507, 822, 2883, 2885, 822, + 529, 822, 1637, 1052, 2881, 822, 2882, 529, 2884, 2886, + 2887, 3391, 3546, 887, 1228, 3125, 1812, 3558, 1584, 2984, + 3559, 2986, 1228, 3584, 1228, 33, 3585, 529, 724, 1060, + 3628, 2086, 529, 3559, 1058, 529, 3669, 1061, 1748, 3559, + 1587, 529, 529, 529, 529, 529, 529, 529, 529, 724, + 946, 1159, 1312, 529, 529, 529, 1175, 1197, 529, 1199, + -2115, -2115, 529, 38, 1182, 529, 529, 529, 529, 529, + 529, 529, 529, 529, 2295, 1183, 529, 1185, 1230, 1846, + 1186, 824, 2350, 529, 2357, 1318, 1230, 1187, 1230, 527, + -2116, -2116, -2117, -2117, 2814, 1189, 2252, 40, 2271, 2272, + 894, 1198, 1749, 529, -2118, -2118, 1813, 1190, 43, 1217, + 1231, 824, 988, 824, -2120, -2120, 824, 1220, 2351, 1222, + 2358, 824, 3081, 1028, 824, 44, 824, 529, 1029, 2668, + 824, 1223, 1172, -2121, -2121, -2122, -2122, 2163, 529, 529, + 1224, 2218, -2123, -2123, -2124, -2124, -2125, -2125, 1236, 45, + 1875, -2126, -2126, -2127, -2127, -2129, -2129, 2147, 1814, -2130, + -2130, 1237, 1584, 46, -2131, -2131, 1254, -2142, -2142, -2142, + 1258, 1978, 1979, 1980, 1981, 1982, 1983, 1262, 1587, -2132, + -2132, -2133, -2133, 1232, -2134, -2134, 1264, 1030, 724, 1876, + 113, 1232, 724, 1232, 3028, -2136, -2136, 1975, 1976, 1977, + 1321, 1978, 1979, 1980, 1981, 1982, 1983, -2138, -2138, 3001, + -2141, -2141, 1633, 1238, 1862, 1863, 1811, -691, -691, 1238, + -695, -695, -694, -694, 2107, 1877, 1809, 1584, 1415, 1416, + 1324, 2108, 2109, 1239, 2978, 529, 2110, 2111, 2112, 1239, + 1419, 1420, 1318, 3265, 3266, 529, 529, 1385, 1878, 2806, + 2808, 1330, 3004, 3655, 3656, 2058, 3681, 3682, 1325, 1031, + 1713, 1714, 3118, 3325, 1335, 3106, 2687, 2688, 1349, 1347, + 1350, 1357, 1358, 1368, 1364, 1391, 2325, 1879, 2300, 1240, + 2331, 1367, 1812, 1587, 1373, 1240, 3142, 1318, 3153, 2314, + 1392, 2317, 3234, 1397, 2328, 1032, 1455, 1471, 1468, 1478, + 1482, 1470, 1490, 1491, 2336, 724, 2338, 1497, 1498, 1450, + 3646, 1033, 1318, 529, 3648, 1504, 1508, 1510, 1589, 2345, + 1592, 987, 1034, -872, 2348, 3484, -879, 1811, 2353, 2354, + 1590, 2356, 545, 2360, 2361, 1811, 1584, 1587, 1601, 1605, + 2422, 529, 529, 46, 529, 2736, -716, -717, -869, 1587, + 529, 529, 529, 529, 529, 529, 1035, -1389, 529, 529, + 529, 529, 529, 529, 529, 529, 529, 529, -870, 3689, + 1616, 1617, 1813, 529, 529, 1241, 1584, 529, -873, 1587, + -871, 1241, 1696, 1624, 529, 1639, 1587, 1649, 1651, 1654, + 1698, 3081, 1065, 1812, 1700, 1966, 546, 1712, 2668, 1967, + 1968, 1812, 1720, 1036, 1969, 1970, 1971, -560, 529, 1721, + 1037, 3434, 1725, 1730, 1732, 529, 3008, 529, 1201, 1203, + 1385, 529, -560, 1767, 1814, 1242, 1769, -560, 1771, 1786, + 1587, 1242, 1805, 1806, 1587, 1243, 529, 815, 1318, 1816, + 1587, 1243, 1584, 815, 1818, 1831, 1817, 1244, 1823, 527, + 547, 1830, 1038, 1244, 1835, 527, 2740, 1852, 1845, 1865, + 1866, 2535, 1867, 1587, 2744, 1871, 3009, 2538, 1881, 1889, + 548, 1039, 1882, 1874, 1896, 529, 529, 1888, -560, 1245, + 1892, 3484, 529, 1813, 3010, 1245, 1895, 1898, 1899, 1900, + 1901, 1813, 1809, 1904, 1903, 3088, 3297, 1917, 3448, -560, + 1385, 1918, 1922, 1385, 1385, 1930, 1955, 3307, 3308, 1957, + 2667, 1958, 2014, 1960, 1963, 529, 1986, 2005, 3199, 529, + 1994, 877, 2025, 3484, 529, 529, 1995, 1584, 2002, 549, + 2027, 2032, 2038, 822, 1247, 1814, -222, 2028, 2042, 822, + 1247, 2043, 1040, 1814, 2044, 2056, 2053, 1595, -560, 1028, + 529, 529, 2050, 1602, 1029, 529, 1607, -560, 2057, 1248, + 2059, 2060, 2062, 1576, 545, 1248, 2092, 2061, 2093, 1066, + 2127, 529, 3484, 1657, 529, 529, 529, 2128, 2132, 1250, + 550, 1637, 551, 2136, 1972, 1250, 3011, 11, 2139, -1389, + 2141, 2142, 529, 724, 2143, 2165, 3012, 2144, 2185, 529, + 2188, 3539, 529, 1809, 2212, 552, 2186, 1973, 553, 527, + 2219, 1809, 2234, 1030, 2213, 14, 15, 2233, 529, 2232, + 2231, 2235, 885, 828, 815, 2248, 2251, 3500, 546, 2260, + 2261, 529, 2262, 2263, 2265, 2264, 527, 2282, 2286, 1584, + 815, 1934, 1936, 2290, 2287, 2301, 2297, 2302, 529, 529, + 2311, 2329, 527, 3283, 2303, 2330, 2334, 2335, 824, 886, + 923, 23, 2370, 2371, 824, 529, 2384, 529, 2394, 2404, + 2388, 2372, 2405, 2406, 1584, 2407, 2408, 2409, 1974, 2423, + 529, 2427, 977, 2428, 2430, 1031, 924, 2433, 2434, 2435, + 2436, 2437, 2439, 2443, 724, 2460, 3634, 2468, 1991, 1966, + 2498, 1990, 2527, 724, 724, 724, 2539, 2505, 2506, 2507, + -560, 2511, 2515, 2516, 915, 2551, 2553, 2558, 2537, 1925, + 822, 1032, 2562, 2559, 2563, 2560, 2113, 2114, 2115, 2564, + 2116, 2117, 2118, 2119, 2120, 2121, 822, 1033, 2565, 1584, + 858, 2569, 2568, 2585, 866, 1584, 2576, 529, 1034, 1576, + 1838, 2577, 925, 1964, 1965, 1065, 1318, 2580, 1966, 1985, + 2581, 549, 1967, 1968, 2582, 2583, 1584, 1969, 1970, 1971, + 2584, 2586, 2587, 2588, 2598, 1629, 2594, 3437, 2608, 2613, + 918, 926, 1035, 1185, 919, 2605, 2606, 2620, 1883, 724, + 1884, 2325, 2325, 2325, 1587, 2629, 2630, 2635, 2636, 1886, + 1887, 2637, 2648, 1214, 902, 2653, 26, 27, 28, 2655, + 1584, 905, 550, 908, 978, 912, 988, 2656, 529, 2663, + 2661, 2664, -697, 2674, 2675, 927, 2677, 2678, 1784, 1036, + 2681, 2685, 2686, 529, 987, 2689, 1037, 552, 2691, 2694, + 553, 2735, 724, 1648, 2697, 824, 2718, 2693, 2720, 2733, + 2734, 2741, 1065, 2755, 2742, 1966, 2743, 2754, 2767, 1967, + 1968, 824, 2768, 2769, 1969, 1970, 1971, 2774, 2098, 2788, + 2787, 2792, 2791, 33, 2798, 2795, 1809, 2777, 1038, 2802, + 529, 2129, 2811, 2130, 35, 2821, 1610, 2852, 2829, 2832, + 2835, 2853, 2838, 2855, 1975, 1976, 1977, 1039, 1978, 1979, + 1980, 1981, 1982, 1983, 2866, 2839, 2840, 37, 2872, 2794, + 2841, 38, 2149, 2147, 527, 2867, 2856, 2880, 2888, 2891, + 2920, 1584, 529, 2898, 2919, 2932, 2938, 2949, 2899, 2917, + 1938, 39, 2923, 2933, 3499, 2944, 2940, 2950, 1587, 2952, + 2971, 2975, 1166, 2969, 877, 40, 2983, 2285, 2973, 3016, + 2996, -560, 2989, 928, 2990, 529, 43, 3103, 3032, 3104, + 3105, 3129, 529, 529, 929, 3109, -560, 3112, 1040, 3134, + 1973, -560, 3113, 44, 3128, 3501, 3138, 3503, 529, 877, + 3146, 3621, 3147, 3151, 2387, 2935, 3158, 3159, 3184, 3164, + 3187, 529, 3191, 3195, 529, 3205, 529, 45, 822, 3206, + 930, 3209, 3210, 1587, 529, 3582, 3235, 529, 529, 3242, + 3245, 46, 529, 529, 3246, 3249, 2269, 2269, 3256, 529, + 3258, 3575, -560, 931, 3586, 3262, 3263, 3264, 3272, 3270, + 3271, 3276, 2977, 3280, 3281, 3290, 529, 3282, 525, 536, + 3293, 1974, 3295, -560, 560, 3296, 529, 3300, 3314, 3317, + 560, 3315, 932, 3570, 812, 3318, 827, -2108, 3333, -2109, + 830, 560, 839, 3319, -2110, 839, 529, 1973, 859, 859, + 1576, -2111, 859, -2112, -2113, 560, 560, -2114, -2115, -2116, + -2117, -2118, -2120, -2121, -2122, 1385, 3335, 3350, -2123, 3320, + -2124, -2125, -560, -2126, -2127, 1385, 3355, 3322, 1385, 2961, + 3323, -560, 3357, -2129, 3358, -2130, 812, 812, -2131, 724, + -2132, -2133, 3084, 724, -2134, 724, 529, 529, -2135, -2136, + 3367, 3368, 3379, 824, -2137, -2138, -2139, -2140, 3336, -2141, + 529, 529, 859, 3489, -1342, 3491, 3331, 3352, 1974, 859, + 560, 859, 859, 859, 3337, 3353, 3375, 877, 3361, 3381, + 3371, 3373, 1587, 3382, 3385, 3386, 3387, 3390, 3149, 3393, + 529, 3397, 3394, 3413, 3415, 3341, 3419, 3425, 1576, 1883, + 3414, 1884, 3439, 3422, 2980, 3427, 3001, 2981, 3440, 3447, + 1886, 1887, 3002, -1341, 3449, 3455, 23, 3457, 3458, 3474, + 1584, 3471, 3472, 3493, 3486, 3003, 3487, 2325, 3494, 1385, + 3490, 3086, 3496, 2331, 3502, 3508, 3033, 3610, 877, 3289, + 3115, 3532, 3534, 1238, 3528, 529, 3535, 3544, 1587, 3004, + 3538, 3005, 3551, 3090, 3091, 3092, 3093, 3552, 3095, 3096, + 3097, 3098, 3099, 1239, 3553, 529, 529, 3561, 529, 3556, + 3568, 3563, 529, 3565, 3143, 529, 3238, 936, 3569, 3572, + 3573, 3574, 943, 3581, -560, 3579, 3583, 1975, 1976, 1977, + 3588, 1978, 1979, 1980, 1981, 1982, 1983, 3593, 3600, 3599, + 3616, 3601, 529, 2477, 2478, 2479, 2480, 2481, 2482, 1240, + 3618, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, + 2495, 3606, 529, 23, 3607, 3626, 3608, 529, 529, 3636, + 3620, 3639, 529, 1587, 3641, 3657, 1576, 529, 877, 3006, + 529, 529, 3637, 3660, 3638, 529, 1318, 3674, 3679, 529, + 3685, 3690, 3700, 529, 918, 2561, 3699, 1188, 919, 2706, + 3031, 26, 27, 28, 2337, 529, 2716, 3035, 3515, 2964, + 3614, 77, 3578, 2082, 2089, 815, 3683, 3338, 920, 3024, + 2084, 2085, 2445, 2088, 1975, 1976, 1977, 527, 1978, 1979, + 1980, 1981, 1982, 1983, 3303, 2813, 3597, 1164, 3667, 1477, + 3435, 3635, 3642, 3661, 1798, 1241, 3470, 2696, 3007, 529, + 2723, 3133, 1656, 3008, 2307, 1657, 2308, 529, 3633, 1658, + 1659, 991, 2086, 3000, 3640, 3087, 3631, 2692, 33, 2805, + 1880, 1920, 2807, 2763, 2818, 3362, 529, 3111, 2680, 3089, + 2666, 1576, 2289, 1722, 1764, 1587, 1475, 1763, 1578, 1476, + 2843, 1667, 3619, 1049, 2676, 1242, 3513, 2257, -2142, 3564, + 3492, 2288, 1768, 3009, 816, 1243, 38, 2957, 26, 27, + 28, 822, 3389, 71, 2652, 3194, 2543, 1244, 1157, 1505, + 3084, 3010, 1442, 2837, 2836, 1669, 2869, 3441, 1426, 3305, + 2557, 2454, 2455, 71, 1428, 1576, 814, 1432, 1433, 2456, + 40, 1434, 1435, 2609, 2610, 1436, 1437, 1576, 3567, 1245, + 71, 43, 3566, 2603, 2644, 1438, 2893, 2627, 2573, 876, + 2669, 3284, 23, 3412, 2625, 724, 828, 2604, 44, 2911, + 3218, 3248, 2016, 3554, 1001, 33, 2382, 1576, 724, 3247, + 1932, 2550, 992, 1219, 1576, 1587, 2672, 2672, 814, 814, + 892, 1587, 45, 877, 2227, 0, 2965, 2229, 0, 0, + 529, 0, 0, 0, 1247, 0, 46, 0, 987, 0, + 0, 529, 1587, 38, 71, 0, 0, 0, 0, 0, + 0, 0, -2142, 3011, 0, 0, 0, 529, 1576, 1248, + 0, 0, 1576, 3012, 0, 0, 824, 0, 1576, -2142, + 0, 3342, 0, 0, -2142, 859, 0, 40, 0, 1250, + 859, 0, 0, 2777, 1382, 0, 1587, 0, 43, 0, + 560, 1576, 529, 0, 1425, 0, 2777, 0, 0, 0, + 1218, 0, 0, 0, 1578, 44, 0, 0, 529, 529, + 0, 0, 529, -2142, 529, 0, 0, 0, 0, 1065, + 0, 0, 1966, 0, 0, 2958, 1967, 1968, 0, 45, + 0, 1969, 1970, 1971, 0, 0, 1322, 26, 27, 28, + 0, 529, 0, 46, 0, 0, 0, 0, 2915, 0, + 0, 1337, 1339, 1342, 1344, 1346, 0, 0, 0, 0, + 0, 1941, 0, 1656, 0, 529, 1657, 0, 1678, 0, + 1658, 1659, 0, 0, 0, -2142, -2142, -2142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3084, 0, 0, + 0, 0, 1667, 1444, 33, 0, 0, 0, 1942, 1668, + 0, 0, 0, 0, 0, 0, 1650, 0, 0, 0, + 724, 0, 0, 0, 0, 0, 1653, 0, 0, 1943, + 0, 0, 0, 0, 0, 0, 1669, 0, 0, 0, + 0, 0, 38, 0, 529, 0, 0, 1944, 1703, 0, + 1579, 1945, 0, 0, 529, 0, 529, 1708, 529, 0, + 0, 0, 529, 0, 529, 0, 529, 0, 0, 0, + 0, -2142, 0, 0, 1946, 3453, 40, 1947, 527, 0, + 529, 3438, 967, 560, 560, 529, 529, 43, 0, 0, + 0, 0, 0, 1948, 0, 0, 0, 529, 0, 0, + 0, 0, 0, 0, 44, 3445, 3446, 0, 2777, 0, + 724, 0, 0, 0, 0, 529, 0, 0, 0, 0, + 2877, 2879, 0, 0, 990, 536, 0, 0, 45, 3459, + 525, 0, 859, 1670, 1973, 0, 0, 0, 0, 0, + 0, 812, 2959, 0, 0, 1017, 1017, 0, 812, 0, + 1671, 1017, 1044, 0, 0, 1672, 0, 3512, 0, 3514, + 0, 1848, 822, 529, 839, 839, 839, 0, 23, 839, + 0, 0, 0, 529, 0, 0, 0, 1114, 1114, 839, + 839, -2142, 839, 0, 839, 529, 0, 1949, 1685, 1686, + 1687, 1688, 1689, 1690, 1675, 1950, 859, 0, 3521, 3547, + 529, 0, 560, 0, 0, 1974, 0, 0, 0, 0, + 0, 0, 0, 0, 859, 0, 3550, 1951, 529, 0, + 0, 0, 1576, 0, 0, 1578, 0, 1787, 859, 827, + 2925, 2926, 0, 0, 527, 0, 1579, 0, 0, 0, + 1819, 0, 529, 0, 0, 0, 0, 1952, 0, 1678, + 1581, 0, 0, 0, 0, 0, 0, 529, 0, 0, + 0, 1844, 0, 0, 859, 1323, 3084, 0, 724, 0, + 0, 0, 0, 0, 0, 1333, 527, 0, 0, 859, + 859, 859, 859, 859, 0, 0, 71, 824, 0, 1937, + 1385, 529, 0, 0, 0, 0, 1356, 0, 0, 0, + 0, 0, 0, 0, 0, 529, 529, 529, 0, 0, + 0, 0, 0, 26, 27, 28, 0, 0, 822, 0, + 0, 0, 0, 1578, 0, 527, 0, 0, 1017, 1044, + 1873, 859, 529, 0, 1449, 0, 0, 0, 1891, 0, + 1017, 1017, 3643, 0, 0, 0, 0, 560, 0, 0, + 0, 0, 1680, 812, 0, 812, 3521, 0, 0, 0, + 822, 0, 1656, 0, 812, 1657, 1576, 3627, 3658, 1658, + 1659, 0, 0, 529, 560, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 1065, 0, 0, 1966, 0, + 0, 1591, 1967, 1968, 0, 0, 0, 1969, 1970, 1971, + 0, 1667, 0, 0, 0, 0, 0, 0, -2142, 822, + 0, 0, 0, 0, 3225, 0, 0, 0, 38, 560, + 0, 1975, 1976, 1977, 0, 1978, 1979, 1980, 1981, 1982, + 1983, 1576, 0, 3201, 0, 1669, 1581, 0, 3157, 0, + 0, 0, 0, 824, 560, 0, 0, 0, 0, 0, + 0, -1866, 40, 0, 0, 0, 0, 0, 0, 0, + 0, 1578, 1681, 43, 0, -2142, -2142, -2142, 0, 1685, + 1686, 1687, 1688, 1689, 1690, 0, 0, 0, 0, 0, + 44, 2023, 0, 0, 0, 824, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1716, 0, 0, + 2611, 71, 876, 0, 45, 0, 0, 0, 1582, 0, + 0, 0, 0, 560, 560, 0, 0, 0, 46, 1656, + 859, 0, 1657, 0, 0, 0, 1658, 1659, 0, 0, + 0, 0, -2142, 0, 824, 0, 0, 0, 0, 0, + 1576, 0, 997, 1449, 1114, 1114, 0, 0, 0, -2142, + 0, 0, -1866, 1009, -2142, 859, 1797, 1579, 1667, 0, + 1025, 0, 0, 0, 0, -2142, 1578, 0, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 812, 1576, -1863, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 561, -1863, 0, 0, 812, 0, 0, 0, - 2235, 0, 0, -2141, 0, 0, 0, 0, 1577, 0, - 0, 0, 0, -1863, 0, -1863, -1863, 0, 0, 0, - 0, 0, 0, 1574, 0, 0, 0, 0, 0, 26, - 27, 28, 0, 0, 0, 0, 0, 1217, 0, 0, - 561, 0, 0, 1447, 0, 1113, 561, 0, 1576, 0, - 0, 0, -1863, 0, 0, -1863, -1863, -1863, 0, 0, - 0, 1579, 0, 0, 0, 0, 1865, 0, 0, 0, - 0, 0, 0, 1321, 0, 1577, 0, 1467, 0, 0, - 0, 0, 0, 813, 0, 813, 0, 1581, 0, 1337, - 1339, 1342, 1344, 0, 813, 0, 33, 0, 0, 0, - 0, 0, 0, 0, 1505, 0, 0, 35, 0, 0, - 0, 1580, 0, -2141, 0, 0, 0, 0, 0, 1969, - 1682, 1683, 1684, 1685, 1686, 1687, 0, 0, 0, 0, - 37, 0, 1574, 0, 38, 0, 0, 0, 0, 0, - 1442, 0, 0, 0, 0, 0, 0, 0, 1865, 0, - 0, 0, 0, 0, 39, 859, 0, 1576, 0, 0, - 2973, 0, 0, 2974, 0, 0, 1333, 0, 40, 1865, - 859, 859, 859, 1637, 0, 0, 0, 0, 0, 43, - 0, 0, 0, 561, 1577, 859, 0, 0, 859, 1970, - 0, 0, 3026, 0, 0, 859, 44, 0, 0, 0, - 0, 967, 0, 0, 0, 1580, 0, 0, 0, 3083, - 3084, 3085, 3086, 0, 3088, 3089, 3090, 3091, 3092, 1579, - 45, 0, 0, 1865, 1865, 0, 1865, 0, 0, 0, - 0, 1579, 0, 0, 46, 0, 0, 1574, 0, 0, - 0, 0, 562, 562, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 525, 0, 0, 0, 0, - 0, 1579, 1576, 0, 0, 0, 0, 0, 1579, 0, - 0, 0, 1581, 2835, 0, 0, 0, 0, 0, 0, - 0, 859, 859, 859, 0, 0, 0, 0, 0, 1577, - 0, 0, 0, 1653, 0, 561, 1654, 1447, 0, 561, - 1655, 1656, 0, 0, 0, 561, 0, 0, 0, 0, - 0, 0, 1579, 0, 0, 0, 1579, 0, 0, 0, - 0, 0, 1579, 1574, 0, 859, 0, 0, 0, 0, - 0, 1664, 0, 0, 0, 0, 0, 0, -2141, 2117, - 0, 0, 0, 0, 0, 1579, 0, 0, 1576, 0, - 0, 561, 0, 0, 0, 561, 0, 0, 0, 0, - 0, 0, 0, 1784, 0, 1666, 1581, 0, 0, 0, - 0, 0, 0, 0, 0, 1577, 1816, 0, 0, 0, - 0, 0, 0, 0, 1447, 1447, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1841, 0, 0, - 0, 0, 0, 0, 1449, 1971, 1972, 1973, 2591, 1974, - 1975, 1976, 1977, 1978, 1979, 2947, 0, 0, 0, 0, - 0, 2235, 0, 562, 562, 0, 562, 0, 0, 0, - 2918, 1580, 0, 0, 1574, 0, 0, 859, 0, 0, - 0, 561, 0, 1113, 0, 561, 561, 0, 0, 561, - 0, 0, 0, 1865, 1794, 1865, 0, 1909, 0, 1576, - 0, 0, -2141, 0, 0, 0, 1870, 0, 0, 1574, - 0, 0, 0, 0, 0, 1889, 3275, 0, 561, -2141, - 1794, 0, 0, 0, -2141, 0, 1577, 0, 0, 0, - 0, 0, 0, 0, 1576, 561, 561, 561, 561, 1794, - 561, 561, 561, 561, 561, 0, 1224, 0, 0, 0, - 0, 0, 1225, 0, 0, 0, 0, 0, 0, 0, - 1237, 1577, -2141, 0, 0, 0, 0, 2407, 1580, 562, - 0, 0, 0, 0, 859, 1574, 0, 0, 0, 0, - 1238, 0, 0, 0, 813, 0, 813, 0, 0, 813, - 3126, 0, 0, 0, 813, 0, 0, 813, 1574, 813, - 1576, 0, 0, 813, 0, 2043, 0, 2047, 0, 0, - 1909, 0, 0, 0, 0, 0, 0, 1675, 0, 0, - 1865, 0, 0, 1576, 0, 0, 1239, 1577, 0, 0, - 0, 1447, 1581, 0, 0, 0, 0, 561, 0, 0, - 0, 0, 1574, 1757, 859, 859, 859, 859, 0, 0, - 1577, 0, 1449, 0, 0, 0, 2019, 1226, 1447, 0, - 0, 1447, 0, 0, 0, 561, 967, 1576, 0, 0, - 0, 0, 0, 0, 3193, 0, 0, 0, 0, 0, + 1576, 0, 1385, 0, 0, 859, 0, 1385, 0, 859, + 0, 0, 1669, -2142, 0, 1849, 0, 0, 0, -1866, + 1973, 0, 0, 0, 0, 892, 0, 0, 2224, 0, + 3285, 0, 0, 0, -1866, 0, 0, 0, 0, -1866, + 1578, 0, 0, 71, -1866, 0, 0, 0, 0, 0, + 0, 0, 1578, -1866, 0, 0, 1934, 1936, -1866, 0, + 0, 0, 0, 0, 0, 0, 1576, 0, 1678, 0, + 0, 0, 0, 0, 0, 1579, 1868, 2621, 859, 0, + 0, 0, 1578, 0, 0, 0, 859, 0, 0, 1578, + -1866, 1974, 0, 0, 0, 0, 0, 0, 0, 1913, + 0, 2292, 2294, 0, 0, 0, 0, 0, 967, -2142, + 0, -1866, 0, 967, 1582, 560, 560, 0, 560, 967, + 0, 0, 0, 0, 0, 0, -2142, 0, 0, 0, + 0, -2142, 0, 1578, 0, 0, 0, 1578, 0, 0, + 2226, 0, 2228, 1578, 0, 0, 0, 0, 0, 0, + 0, 1576, 71, 2237, 0, 0, 0, 0, 0, 0, + -1866, 0, 0, -1866, 0, 2362, 1578, 0, 0, -1866, + -2142, -2142, 0, 0, 0, 0, 0, 1581, 0, 0, + 0, 0, 2379, 2379, 3363, 814, 0, 1009, 0, 0, + 0, 0, 2274, 0, 0, 0, 814, 0, 1449, 1449, + 0, 0, 0, 0, 1449, 0, 525, 0, 0, 0, + -1866, 0, 0, 1579, 0, 0, 0, 0, 0, 1017, + 0, 560, 2009, 0, 0, 1678, 1114, 1114, 0, 859, + 0, 1594, 0, 0, 0, -1866, 812, 0, 812, 0, + 0, 812, 0, 1606, 0, 0, 812, 0, 1114, 812, + 0, 812, 0, 0, 0, 812, 1382, 560, 0, 560, + 0, 0, 2462, 1576, 0, 0, 0, 0, 0, 0, + 0, 0, 1635, 0, 0, 1581, 0, 0, 0, 0, + 0, -2142, 1934, 1936, 0, 0, 0, 0, 1685, 1686, + 1687, 1688, 1689, 1690, 864, 1385, 0, 0, 1576, 2395, + 2396, 2398, 2399, 2400, 2401, 0, 0, 1975, 1976, 1977, + 0, 1978, 1979, 1980, 1981, 1982, 1983, 1065, 1579, 0, + 1966, 0, -1866, 0, 1967, 1968, 0, 0, -2142, 1969, + 1970, 1971, 0, -1866, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3226, 0, 0, 0, + 0, 0, 0, -1866, 0, -1866, -1866, 0, 0, 892, + 892, 0, 892, 1576, 0, 0, 0, 2122, 0, 1576, + 0, 0, 1579, 0, 0, 0, 0, 0, 0, 0, + 560, 0, 0, 0, 1579, 0, 0, 0, 0, 0, + 1576, 0, -1866, 0, 0, -1866, -1866, -1866, 0, 0, + 0, 0, 0, 1065, 0, 0, 1966, 0, 0, 0, + 1967, 1968, 0, 1581, 1579, 1969, 1970, 1971, 0, 0, + 967, 1579, 0, 1449, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1576, 1582, 0, 0, -2142, 0, + 0, 0, 2522, 0, 0, 1685, 1686, 1687, 1688, 1689, + 1690, 1114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1579, 2225, 0, 859, 1579, + 859, 0, 0, 0, 0, 1579, 0, 0, 0, 0, + 0, 859, 0, 2240, 0, 1656, 0, 0, 1657, 0, + 0, 0, 1658, 1659, 0, 1449, 0, 1578, 1579, 0, + 0, 0, 0, 0, 14, 15, 0, 0, 0, 0, + 0, 561, 0, 0, 0, 0, 0, 561, 1581, 0, + 859, 813, 560, 0, 1667, 0, 0, 0, 561, 0, + 0, -2142, 1973, 1582, 2291, 2293, 0, 71, 0, 0, + 1797, 560, 561, 561, 0, 1576, 0, 0, 0, 0, + 23, 0, 560, 2315, 560, 1797, 0, 560, 1669, 0, + 0, 0, 0, 0, 1385, 0, 0, 560, 0, 560, + 0, 0, 1581, 813, 813, 0, 0, 0, 0, 0, + 0, 967, 560, 0, 1581, 0, 967, 560, 0, 0, + 0, 560, 560, 1797, 560, 0, 560, 560, 0, 0, + 0, 0, 0, 1974, 0, 0, 0, 561, 0, 0, + 0, 0, 0, 0, 1581, 0, 0, 2383, -2142, 0, + 0, 1581, 0, 2924, 0, 1333, 0, 859, 859, 859, + 859, 859, 859, 0, 0, 0, 0, 0, 0, 0, + 0, 1578, 0, 0, 0, 2727, 0, 2411, 814, 0, + 814, 0, 0, 814, 0, -2142, 0, 0, 814, 0, + 0, 814, 0, 814, 0, 1581, 0, 814, 2438, 1581, + 0, 1582, -2142, 0, 0, 1581, 0, -2142, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1974, + 0, 0, 0, 0, 0, 26, 27, 28, 1581, 0, + 0, 1656, 0, 2760, 1657, 0, 1578, 0, 1658, 1659, + 0, 0, 0, 0, 0, 0, -2142, 0, 1449, 1449, + 1449, 1449, 1449, 1449, 0, 0, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 0, 0, 0, 0, + 1667, 1238, 0, 0, 0, 0, 0, -2142, 0, 0, + 0, 0, 71, 0, 0, 0, 560, 0, 0, 0, + 0, 1239, 33, 0, 0, 0, 0, 0, 0, 1382, + 859, 1678, 0, 35, 1669, 0, 1582, 0, 0, 2819, + 0, 2820, 0, 812, 0, 2825, 0, 2828, 0, 812, + 0, 0, 0, 0, 0, 560, 37, 0, 0, 0, + 38, 560, 0, 0, 0, 0, 0, 1240, 3022, 0, + 2555, 2555, 0, 0, 1576, 1578, 0, 2765, 3023, 1975, + 1976, 1977, 0, 1978, 1979, 1980, 1981, 1982, 1983, 1579, + 1582, 2781, 2782, 2784, 40, 2173, 0, 0, 0, 2927, + 0, 0, 1582, 0, 0, 43, 2797, 0, 0, 0, + 2800, 0, 0, 2803, 0, 1578, 0, 0, 0, 0, + 2812, 0, 44, 0, 0, 0, 0, 0, 0, 0, + 0, -2142, 1582, 0, -2142, 0, 0, 3024, 0, 1582, + 0, 0, 0, 0, 560, 0, 45, 0, -2142, 560, + 0, 0, 0, -2142, 560, 0, 0, 0, 1583, 0, + 46, -1881, 0, 1241, 892, 1975, 1976, 1977, 0, 1978, + 1979, 1980, 1981, 1982, 1983, 0, 0, 0, 1449, 1449, + 0, 1578, 0, 1582, 0, 0, 0, 1582, 0, 0, + 0, 0, -2142, 1582, 0, 0, 0, 2122, 0, 0, + 0, 0, 0, 1449, 0, 0, 2849, 2850, 2851, 0, + 0, 0, 0, 1242, 0, 0, 1582, 0, 0, 0, + 0, 0, 0, 1243, 0, 0, 0, 0, 0, 727, + 812, 0, 0, 1579, 0, 1244, 0, 3025, 0, 0, + 0, 0, 560, 0, -2142, 0, 812, 1678, 0, 0, + 2240, 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, 0, + 0, 0, -1881, 0, 0, 0, 1578, 1245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1577, 0, 0, 561, 0, 0, - 0, 0, 0, 0, 3201, 561, 1580, 0, 0, 2591, - 0, 0, 0, 0, 0, 0, 1579, 0, 0, 0, - -2141, 0, 1240, 0, 0, 0, 0, 2129, 0, 1581, - 0, 0, 0, 0, 0, 0, 0, 0, 3230, 0, - 812, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1113, 1065, 0, 1574, 1962, 0, 0, 3244, 1963, - 1964, 0, 2235, 1965, 1966, 1967, 0, 0, 2117, 0, - 0, 1241, 0, 0, 0, 0, 0, 0, 0, 1576, - 3217, 1242, 1794, -1865, 0, 0, 0, 0, 1865, 0, - 0, 0, 0, 1243, 0, 0, 0, 0, 1450, 0, - 0, 967, 561, 1447, 3427, 0, 1577, 0, 0, 859, - 0, 0, 0, 0, 1227, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1244, 3295, 0, 3434, 3435, - -2141, 0, 0, 0, 0, 0, 0, 1682, 1683, 1684, - 1685, 1686, 1687, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3448, 0, 0, 1579, 1224, 0, 0, - 0, 0, 0, 1225, 1580, 0, 0, 1581, 0, 562, - 0, 1237, 0, 0, 1245, 0, 1580, 0, 1229, 0, - 1246, 0, 0, -1865, 0, 0, 1449, 1449, 562, 0, - 0, 1238, 1449, 0, 2221, 0, 2223, 0, 0, 562, - 0, 562, 0, 0, 562, 1247, 1580, 2232, 3315, 0, - 1248, 0, 1865, 1580, 562, 0, 562, 0, 0, 0, - 0, 0, 0, 1579, 0, 1249, 0, 0, 2407, 562, - -1865, 0, 0, 0, 562, 0, 0, 1239, 562, 562, - 0, 562, 0, 562, 562, -1865, 2269, 3348, 0, 0, - -1865, 0, 0, 0, 1447, -1865, 0, 1580, 0, 0, - 0, 1580, 0, 0, -1865, 0, 1969, 1580, 1226, -1865, + 0, 0, 0, 0, 0, 0, 728, 0, 0, 1581, + 560, 0, 0, 1449, 0, 1114, 560, 0, 1579, 0, + 0, 0, 729, 0, 0, 0, 0, 3077, 0, -1881, + 0, 0, 0, 0, 0, 0, 1868, 561, 0, 0, + 0, 71, 1247, 0, -1881, 0, 0, 0, 0, -1881, + 0, 0, 0, 0, -1881, 0, 0, 0, 0, 0, + 0, 2760, 0, -1881, 1583, 0, 0, 1248, -1881, 0, + -2142, 730, 0, 0, 0, 0, 0, 0, 0, 0, + 2972, 731, 0, 0, 0, 0, 0, 1250, 0, 3026, + 0, 0, 3027, 0, 732, 0, 3139, 0, 1578, 733, + -1881, 0, 0, 0, 0, 0, 0, 1028, 0, 0, + 0, 0, 1029, 0, 0, 0, 0, 0, 1868, 0, + 0, -1881, 0, 0, 0, 859, 0, 1579, 734, 0, + 0, 0, 0, 1578, 0, 1333, 0, 0, 1868, 859, + 859, 859, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 560, 1581, 859, 0, 0, 0, 859, 0, + 0, 859, 0, 0, 0, 0, 0, 1579, 859, 0, + -1881, 1030, 735, -1881, 967, 814, 736, 0, 3120, -1881, + -2142, 814, 0, 0, 0, 0, 0, 1685, 1686, 1687, + 1688, 1689, 1690, 0, 0, 0, 1868, 1868, 1578, 1868, + 0, 0, 0, 1809, 1578, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1581, 0, + -1881, 0, 0, 0, 0, 1578, 0, 0, 525, 0, + 561, 561, 0, 1579, 0, 0, 0, 0, 0, 0, + 0, 548, 3244, 1031, 0, -1881, 2842, 737, 3166, 3167, + 3168, 3169, 0, 0, 859, 859, 859, 0, 0, 0, + 0, 0, 738, 0, 0, 0, 0, 1582, 560, 1578, + 1449, 0, 560, 0, 0, 0, 0, 0, 560, 1032, + 0, 0, 0, 0, 0, 0, 0, 0, 813, 0, + 0, 0, 0, 0, 0, 1033, 0, 739, 859, 0, + 740, 0, 0, 0, 864, 0, 1034, 0, 0, 0, + 0, 741, 0, 2122, 742, 1635, 0, 0, 1579, 0, + 0, 0, 0, 0, 0, 560, 0, 1581, 0, 560, + 0, 0, -1881, 743, 0, 2173, 0, 0, 0, 0, + 1035, 0, 0, -1881, 0, 0, 0, 744, 0, 561, + 0, 2631, 0, 745, 746, 1449, 1449, 0, 0, 0, + 0, 2034, 814, -1881, 747, -1881, -1881, 1581, 0, 0, + 748, 0, 0, 0, 0, 0, 0, 0, 814, 2945, + 1578, 0, 0, 0, 0, 1583, 2954, 1036, 0, 0, + 0, 0, 2240, 0, 1037, 0, 0, 0, 0, 749, + 0, 0, -1881, 0, 0, -1881, -1881, -1881, 859, 0, + 0, 1582, 560, 3291, 1114, 0, 560, 560, 0, 0, + 560, 0, 0, 0, 1868, 1797, 1868, 0, 1913, 0, + 1579, 0, 0, 1581, 0, 0, 1038, 0, 0, 0, + 0, 0, 0, 0, 0, 1028, 0, 0, 0, 560, + 1029, 1797, 0, 1382, 0, 1039, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1579, 560, 560, 560, 560, + 1797, 560, 560, 560, 560, 560, 1582, 0, 0, 0, + 0, 0, 0, 1583, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1469, 0, 0, 0, 2411, 0, + 813, 0, 813, 0, 0, 0, 859, 0, 0, 1030, + 0, 813, 0, 0, 0, 0, 0, 0, 1581, 3132, + 0, 1507, 0, 0, 0, 0, 1040, 0, 0, 0, + 1579, 2035, 0, 0, 0, 0, 1579, 0, 0, 0, + 3410, 0, 1913, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1868, 0, 0, 0, 0, 1579, 0, 0, + 0, 0, 0, 1449, 0, 0, 561, 2799, 0, 560, + 0, 0, 0, 0, 0, 0, 859, 859, 859, 859, + 0, 1031, 0, 0, 0, 1582, 0, 0, 0, 1211, + 1449, 1640, 0, 1449, 0, 0, 0, 560, 967, 0, + 0, 1579, 0, 0, 0, 0, 3203, 0, 0, 0, + 0, 0, 3077, 0, 0, 0, 0, 1032, 0, 0, + 0, 1583, 0, 0, 1656, 1582, 0, 1657, 0, 560, + 1581, 1658, 1659, 1033, 0, 0, 3211, 560, 0, 0, + 0, 0, 0, 0, 1034, 0, 0, 0, 0, 1578, + 0, 3473, 0, 0, 0, 0, 0, 0, 0, 1452, + 561, 561, 0, 1667, 0, 1581, 0, 0, 0, 3239, + -2142, 812, 0, 0, 0, 0, 0, 0, 1035, 0, + 0, 0, 0, 1114, 0, 0, 0, 0, 0, 0, + 3253, 1582, 0, 0, 2240, 0, 0, 1669, 0, 1212, + 2122, 0, 0, 0, 0, 0, 0, 1451, 0, 0, + 0, 0, 1579, 0, 1797, 0, 0, 0, 0, 0, + 1868, 0, 0, 0, 0, 1036, 1583, 0, 0, 0, + 1581, 0, 1037, 967, 560, 1449, 1581, 3454, 1635, 0, + 0, 859, 0, 0, 0, 0, 0, 3540, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1581, 3304, 0, + 0, 3479, 2928, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1635, 1038, 0, 1582, 0, 0, 0, + 1583, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1583, 1039, -2142, 0, 0, 0, 0, 0, + 71, 1581, 0, 0, 0, 0, 0, 1225, 0, 0, + 0, -2142, 0, 1226, 0, 0, -2142, 0, 0, 0, + 0, 1238, 1583, 0, 0, 0, 2976, 0, 3519, 1583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3365, 0, 0, 1231, 0, 0, 0, 561, 0, 0, - 1580, 0, 0, 0, 561, 0, 0, 0, 0, 0, - 0, -1865, 0, 0, 0, 0, 1450, 0, 0, 0, - 0, 3384, 0, 0, 0, 0, 0, 0, 0, 0, - 1574, -1865, 0, 0, 0, 1581, 0, 0, 0, 0, - 0, 0, 1579, 1240, 0, 3396, 1970, 1581, 0, 0, - 0, 0, 0, 2591, 0, 1576, 0, 0, 0, 0, - 0, 0, 0, 2390, 2391, 2393, 2394, 2395, 0, 561, - 0, 0, 0, 0, 561, 0, 0, 1581, 0, 0, - -1865, 0, 1577, -1865, 1581, 0, 0, 0, 0, -1865, - 0, 0, 1241, 0, 0, 0, 0, 3615, 0, 0, - 561, 0, 1242, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 0, 1243, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 561, 561, 0, 0, 1581, 0, - -1865, 0, 1581, 0, 0, 1227, 0, 0, 1581, 813, - 0, 859, 0, 3126, 0, 813, 1244, 1579, 0, 561, - 0, 2534, 0, 0, 0, -1865, 0, 2047, 0, 0, - 0, 1581, 0, 859, 1653, 0, 3469, 1654, 0, 0, - 0, 1655, 1656, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1447, 0, 1113, 0, - 561, 1017, 2254, 1017, 0, 2334, 0, 0, 561, 1229, - 0, 1246, 1664, 0, 0, 2514, 0, 0, 0, -2141, - 0, 0, 0, 0, 864, 0, 0, 0, 0, 1113, - 0, 0, 0, 3244, 0, 0, 1247, 0, 0, 0, - 859, 2335, 0, 1579, 0, 0, 1666, 0, 0, 2129, - 0, 0, -1865, 0, 0, 0, 1249, 0, 0, 1637, - 1450, 1450, 0, -1865, 0, 0, 1450, 0, 0, 0, - 859, 0, 1971, 1972, 1973, 0, 1974, 1975, 1976, 1977, - 1978, 1979, 0, -1865, 0, -1865, -1865, 0, 0, 0, + 3324, 1239, 561, 561, 1868, 561, 0, 0, 0, 0, + 0, 0, 0, 1656, 0, -2142, 1657, 0, 3545, 2411, + 1658, 1659, 0, 0, 1040, 0, 0, 0, 1452, 1213, + 0, 0, 0, 1583, 0, 0, 0, 1583, 0, 0, + 0, 3077, 3359, 1583, 0, 0, 0, 1240, 1582, 1449, + 0, 0, 1667, 0, 0, 0, 0, 0, 0, -2142, + 0, 0, 0, 0, 0, 0, 1583, 1760, 0, 0, + 1678, 71, 1581, 0, 0, 3376, 1451, 0, 1227, 0, + 0, 0, 560, 1582, 0, 0, 1669, 0, 0, 560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3365, 0, - 0, 2921, 0, 0, 1231, 0, 1113, 0, 0, 0, - 0, 0, -1865, 0, 0, -1865, -1865, -1865, 0, 0, - 0, 3469, 0, 0, 0, 813, 1128, 1128, 0, 0, - 0, 1580, 0, -2141, 0, 0, 0, 562, 0, 0, - 0, 813, 0, 0, 1579, 0, 0, 0, 3126, 0, - -2141, 0, 0, 0, 0, -2141, 0, 0, 0, 0, - 967, 967, 0, 3469, 967, 0, 0, 0, 0, 0, - 0, 0, 2005, 0, 0, 0, 0, 0, 0, 1579, - 0, 0, 0, 561, 0, 562, 0, 0, 0, 0, - 0, 2678, 0, -2141, 0, 0, 0, 0, 1267, 0, - 0, 0, 1312, 1319, 0, 3126, 0, 0, 0, 0, - 0, 0, 3469, 0, 1449, 1449, 1449, 1449, 1449, 1449, - 0, 0, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, - 1449, 1449, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1579, 0, 0, 1675, 967, - 0, 0, 0, 0, 0, 1369, 0, 0, 0, 0, - 0, 0, 0, 0, 2235, 0, 0, 0, 1579, 0, - 0, 1580, 0, 1393, 0, 0, 0, 0, 0, 1441, - 0, 0, 1443, 0, 0, 1454, 1457, 1462, 1465, 0, - 0, 0, 1581, 0, 0, 0, 0, 0, 0, 0, - 2212, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1579, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 0, - 1509, 1312, 0, 0, 0, 0, 0, 0, 1580, 0, - 0, 0, 0, 0, 0, 0, 1450, 0, 0, 0, - 0, -2141, 1595, 0, 0, 0, 0, 0, 0, 0, + 0, 876, 0, 0, 0, 71, 3395, 0, 561, 0, + 0, 0, 3148, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 813, 0, 813, 0, 0, 813, 3407, + 0, 0, 0, 813, 0, 0, 813, 2945, 813, 0, + 0, 1579, 813, 1241, 2047, 0, 2051, 0, 1582, 0, + 0, 3229, 0, 560, 1582, 0, 0, 0, 560, 0, + 0, 0, 1635, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -2142, 0, 1582, 0, 0, 0, 0, + 0, 0, 0, -2142, 560, 0, 0, 0, 0, 0, + 0, 0, 0, 1242, 0, 0, 0, 0, 0, 0, + -2142, 0, 0, 1243, 0, -2142, 0, 0, 560, 560, + 0, 0, 0, 727, 0, 1244, 0, 0, 0, 1582, + 0, 0, 0, 0, 0, 859, 0, 3132, 0, 0, + 0, 0, 560, 0, 0, 0, 1228, 0, 0, 0, + 0, 0, 0, 814, -2142, 0, 0, 1245, 0, 859, + 0, 0, 3481, 71, 0, 0, 0, 0, 0, 0, + 0, 0, 876, 1452, 1452, 0, 0, 2134, 0, 1452, + 728, 0, 1449, 0, 1114, 0, 560, 1017, 0, 1017, + 0, 0, 0, -2142, 560, 0, 729, 0, 0, 0, + 1685, 1686, 1687, 1688, 1689, 1690, 1246, 0, 0, 1678, + 1230, 0, 1247, 0, 0, 1114, 0, 0, 0, 3253, + 0, 1451, 1451, 0, 0, 0, 859, 1451, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1248, 0, 0, + 1582, 0, 1249, 0, 0, 730, 0, 0, 0, 0, + 0, 1581, 0, 0, 0, 731, 859, 1250, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 732, 0, + 0, 0, 0, 733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1611, 0, 0, 0, -1880, 0, 0, 0, 2759, - 0, 0, 0, 1622, 1623, 1624, 0, 1629, 1633, 0, - 0, 0, 0, 0, 2777, 2778, 2780, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2793, - 0, 0, 2796, 1449, 1449, 0, 0, 0, 0, 2805, - 0, 0, 0, 1696, 1579, 0, 0, 0, 0, 0, - 0, 0, 1581, 0, 0, 0, 0, 0, 0, 0, - 562, 1509, 1509, 0, 562, 0, 0, 1580, 0, 0, - 2043, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -2141, 0, 0, 0, 0, 0, 0, 1682, 1683, - 1684, 1685, 1686, 1687, 0, -1880, 0, 1735, 0, 0, - 0, 1751, 1756, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1128, 1128, 0, 0, 2893, 0, 0, 1581, - 2129, 0, 0, 0, 0, 2842, 2843, 2844, 0, 0, + 0, 0, 0, 0, 0, 3376, 1129, 1129, 0, 0, + 0, 0, 734, 1114, 0, 0, 0, 1583, 0, 0, + 0, 0, -2142, 0, 0, 1232, 0, 0, 3481, 561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1880, 0, 0, 0, 0, 0, 1449, 0, - 0, 0, 0, 0, 0, 0, 0, -1880, 0, 0, - 0, 0, -1880, 0, 0, 0, 0, -1880, 0, 0, - 0, 0, 1580, 1312, 0, 0, -1880, 0, 0, 1653, - 0, -1880, 1654, 1312, 0, 0, 1655, 1656, 1450, 1450, - 1450, 1450, 1450, 1450, 0, 0, 1450, 1450, 1450, 1450, - 1450, 1450, 1450, 1450, 1450, 1450, 562, 0, 1312, 0, - 562, 562, 0, -1880, 562, 0, 0, 1664, 0, 0, - 0, 0, 0, 0, -2141, 0, 0, 0, 1581, 0, - 0, 0, 0, -1880, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 0, 0, 0, 0, 0, 0, - 0, 1666, 0, 0, 0, 0, 0, 0, 1580, 0, - 562, 562, 562, 562, 0, 562, 562, 562, 562, 562, + 0, 0, 0, 0, 0, 0, 0, 0, 561, 0, + 0, 0, 71, 0, 0, 3132, 735, 0, 0, 561, + 736, 561, 0, 0, 561, 0, 0, 967, 967, 0, + 3481, 967, 0, 0, 561, 0, 561, 0, 1268, 2009, + 0, 0, 1313, 1320, 0, 0, 0, 0, 0, 561, + 560, 0, 0, 0, 561, 0, 0, 1635, 561, 561, + 0, 561, 0, 561, 561, 0, 0, 0, 0, 0, + 0, 0, 3132, 0, 0, 0, 0, 0, 0, 3481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2965, -1880, 0, 0, -1880, 0, 0, 0, 0, - 0, -1880, 0, 0, 0, 1952, 0, 0, 0, 0, + 0, 737, -2142, 0, 2217, 1371, 0, 0, 0, 1685, + 1686, 1687, 1688, 1689, 1690, 0, 738, 0, 0, 0, + 0, 0, 0, 1395, 0, 0, 967, 0, 0, 1443, + 0, 1583, 1445, 0, 0, 1456, 1459, 1464, 1467, 0, + 0, 2240, 0, 0, 0, 0, 0, 0, 0, 0, + 1452, 739, 0, 0, 740, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 741, 0, 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1579, 0, 0, 0, 0, 0, 2922, 0, 0, 0, + 1511, 1313, 0, 0, 0, 0, 0, 743, 0, 1582, + 0, 0, 0, 0, 0, 0, 1583, 0, 2259, 0, + 0, 744, 1597, 0, 0, 0, 0, 0, 746, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 747, 0, + 0, 0, 1614, 0, 748, 0, 71, 0, 0, 0, + 0, 0, 0, 561, 1625, 1626, 1627, 0, 1632, 1636, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1880, 1581, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -2141, 0, - 0, 0, 0, 0, 0, 0, 0, -1880, 1462, 0, - 1462, 1462, 2043, 0, 0, -2141, 0, 0, 0, 1580, - -2141, 0, 0, 1128, 1128, 0, 0, 0, 3112, 0, - 0, 0, 0, 0, 0, 0, 0, 1450, 1450, 0, - 2534, 0, 0, 0, 0, 1128, 0, 0, 0, 0, - 0, 0, 0, 0, 1580, 0, 0, 0, -2141, 0, - 0, 0, 0, 0, 0, 0, 864, 0, 0, 1581, - 0, 0, 2129, 0, 0, 0, 0, 0, 0, 0, - 2129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -1880, 0, 0, 0, 3156, 3157, - 3158, 3159, 0, 0, 0, -1880, 0, 0, 0, 0, - 0, 0, 0, 1675, 0, 813, 0, 0, 0, 0, - 1580, 0, 0, 0, 0, -1880, 0, -1880, -1880, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1449, - 1449, 0, 0, 1580, 0, 0, 0, 0, 0, 2092, - 0, 0, 1450, 0, 0, 0, 0, 2095, 0, 0, - 0, 0, 0, 0, -1880, 0, 0, -1880, -1880, -1880, - 0, 2126, 0, 0, 0, 0, 0, 562, 0, 0, - 1581, 0, 0, 0, 0, 0, 0, 1580, 0, 0, - 0, 0, 2141, 0, 0, 0, 0, 0, 0, 2145, - 0, 0, 0, 0, 0, 2149, 2150, 2151, 2152, 2153, - 2154, 2155, 2156, 0, 0, 1581, -2141, 2165, 2166, 0, - 0, 0, 2179, 0, 0, 0, 2182, 0, 0, 2190, - 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 0, 0, - 2199, 0, 0, 0, 0, 0, 0, 1128, 0, 1312, + 3478, 0, 0, 749, 0, 0, 0, 0, 0, 0, + 813, 0, 0, 0, 0, 0, 813, 0, 0, 0, + 0, 0, 2542, 0, 1699, 0, 0, 0, 2051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3282, 0, 0, 0, 2225, 0, 0, - 0, 0, 1653, 0, 0, 1654, 0, 0, 0, 1655, - 1656, 1581, 0, 1659, 1660, 1661, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1580, - 1662, 0, 1623, 1624, 1581, 0, 0, 0, 0, 0, - 1664, 0, 1653, 0, 0, 1654, 0, 1665, 0, 1655, - 1656, 0, 0, 1659, 1660, 1661, -2141, 0, 0, 0, - 0, 0, 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, - 0, 0, 0, 0, 1666, 0, 1449, 0, 1581, 0, - 1664, 0, 0, 0, 0, 0, 0, 1665, 0, 0, - 0, 0, 3373, 0, 0, 0, 0, 0, 0, 2534, - 0, 0, 0, 3178, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1666, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1451, 0, 0, 2360, - 0, 0, 0, 0, 0, 0, 1312, 0, 0, 2371, - 2372, 0, 0, 0, 0, 0, 0, 0, 0, 1653, - 0, 0, 1654, 3207, 0, 0, 1655, 1656, 0, 0, - 1659, 1660, 1661, 0, 562, 0, 0, 0, 0, 562, - 0, 1667, 0, 0, 0, 0, 0, 0, 0, 0, - 1312, 0, 0, 0, 0, 0, 0, 1664, 1668, 0, - 1581, 0, 0, 1669, 1665, 562, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1369, 2438, 1653, 0, 0, - 1654, 1667, 0, 0, 1655, 1656, 1670, 1671, 0, 562, - 562, 1666, 0, 1450, 1450, 0, 0, 0, 1668, 0, - 0, 1672, 0, 1669, 2464, 2465, 0, 2466, 0, 0, - 0, 0, 0, 0, 562, 1664, 0, 0, 1449, 0, - 0, 1690, -2141, 0, 0, 0, 1670, 1671, 0, 0, - 0, 0, 0, 0, 0, 0, 2492, 2493, 0, 1673, - 2225, 1672, 1674, 0, 0, 0, 0, 0, 0, 1666, - 0, 0, 0, 0, 0, 562, 1675, 0, 0, 0, - 0, 0, 0, 2129, 0, 1580, 0, 0, 0, 0, - 1690, 2518, 0, 0, 0, 0, 0, 0, 0, 1673, - 2528, 0, 1674, 0, 0, 3443, 0, 0, 1667, 0, - 0, 0, 0, 0, 0, 0, 1675, 0, 0, 1509, - 0, 1312, 0, 0, 1451, 1668, 0, 3467, 0, 0, - 1669, 0, 0, 0, 3220, 0, 0, 0, 0, 0, + 0, 0, 1511, 1511, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1583, 0, 0, 71, 0, + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1738, 0, + 0, 0, 1754, 1759, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1129, 1129, 1583, 0, 0, 0, 0, + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2134, 0, 0, 0, 0, 561, 71, 0, 0, + 0, 1640, 0, 1452, 1452, 1452, 1452, 1452, 1452, 0, + 0, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, + 1452, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1313, 0, 0, 0, 0, 0, + 0, 1583, 0, 0, 1313, 0, 0, 0, 0, 0, + 0, 1451, 1451, 1451, 1451, 1451, 1451, 0, 0, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1313, + 0, 0, 0, 0, 0, 0, 0, 813, 1656, 0, + 0, 1657, 0, 0, 0, 1658, 1659, 1660, 1661, 561, + 1662, 1663, 1664, 813, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1665, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1667, 0, 0, + 0, 0, 0, 71, 1668, 0, 1583, 0, 0, 0, + 0, 0, 0, 0, 1398, 0, 826, 561, 0, 0, + 0, 0, 0, 2684, 0, 0, 0, 0, 0, 71, + 0, 1669, 0, 0, 0, 0, 0, 1956, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -2141, -2141, 0, 0, 0, 0, 2563, - 0, 0, 0, 0, 0, 0, -2141, 0, 1672, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1677, - 1690, 0, 0, -2141, 0, 0, 0, 0, -2141, 1449, - 0, 0, 0, 0, 3507, 0, 0, 2581, 0, 0, - 0, 2587, 0, 0, 0, 1653, 2595, 2596, 1654, -2141, - 0, 0, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1677, - 1450, 0, 0, 1675, 3533, 1690, -2141, 0, 0, 0, - 0, 0, 1690, 1662, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1664, 0, 0, 1581, 1450, 0, 0, - 1665, 0, 0, 2617, 0, 0, 2620, 0, 2622, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 0, - 0, 0, 0, 0, 2626, 0, 0, 1666, 0, 0, - 0, 1675, 1690, 0, 0, 0, 0, 0, 0, 1678, - 0, 0, 1679, 1680, 1681, 0, 1682, 1683, 1684, 1685, - 1686, 1687, 0, 0, 0, 0, 1690, 0, 0, 0, - 0, 0, 0, 1735, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1677, 0, 0, 1678, - 1756, 2197, 1679, 1680, 1681, 0, 1682, 1683, 1684, 1685, - 1686, 1687, 0, 0, 0, 0, 0, 0, 0, 1128, - 0, 0, 0, 0, 1690, 0, 1690, 0, 1451, 1451, - 0, 1980, 2684, 0, 1451, 0, 0, 1690, 0, 0, - 1690, 0, 0, 0, 1667, 1690, 0, 0, 1690, 0, - 0, 0, 0, 0, -2141, 0, 0, 0, 0, 0, - 0, 1668, 1450, 0, 0, 0, 1669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3486, 0, 0, 0, 0, 0, 0, 0, 1670, - 1671, 0, 1690, 0, 0, 0, 0, 0, 0, 1624, - 0, 0, 0, 0, 1672, 0, 1678, 0, 1312, 1679, - 1680, 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1673, 0, 0, 1674, 0, 0, -46, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1675, - 0, 0, 1676, 0, -2141, 0, 0, 2803, 0, 0, - 1, 1682, 1683, 1684, 1685, 1686, 1687, 0, 1690, 0, - 2, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1690, 5, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 1690, 1690, 1690, 0, 7, - 0, 0, 1690, 1450, 0, 0, 1690, 0, 0, 0, - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 1396, 0, 826, 0, 11, 0, 12, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 1677, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 14, 15, 16, 0, 0, 1690, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 19, - 0, 20, 21, 0, 2883, 0, 0, 1397, 1398, 0, - 2885, 2095, 0, 0, 0, 0, 22, 0, 1690, 0, - 23, 0, 0, 0, 0, 0, 2894, 0, 0, 0, - 0, 0, 0, 0, 1690, 0, 0, 0, 0, 1690, - 0, 0, 2907, 0, 0, 2910, 24, 2912, 1399, 1400, - 0, 0, 1401, 1402, 0, 2916, 1980, 0, 0, 0, - 0, 0, -1497, 2923, 2924, 0, 0, 0, 0, 0, - 2931, 0, 1678, 0, 0, 1679, 1680, 1681, 0, 1682, - 1683, 1684, 1685, 1686, 1687, 0, 0, 2944, 25, 0, - 0, 0, 0, 2570, 0, 0, 0, 2959, 0, 0, + 1399, 1400, 0, 1452, 1452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1403, 1404, - 0, 0, 0, 0, 0, 1450, 0, 0, 0, 0, + 1464, 0, 1464, 1464, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1129, 1129, 0, 1583, 0, + 0, 1401, 1402, 0, 0, 1403, 1404, 0, 1670, 0, + 0, 1451, 1451, 0, 0, 0, 0, 1129, 0, 0, + 0, 0, 0, 0, 0, 1671, 0, 0, 0, 0, + 1672, 0, 0, 1583, 0, 0, 0, 0, 0, 561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1673, 1674, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1675, + 0, 0, 0, 0, 0, 0, 0, 0, 1452, 0, + 0, 1405, 1406, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1399, 1400, 1583, 0, + 0, 0, 0, 0, 1583, 0, 0, 1676, 0, 0, + 1677, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2096, 0, 0, 1678, 1583, 1451, 1679, 0, 0, + 2100, 0, 0, 0, 0, 0, 0, 1401, 1402, 0, + 0, 1403, 1404, 0, 2131, 0, 1407, 1408, 1409, 1410, + 1411, 1412, 1413, 1414, 0, 561, 1415, 1416, 0, 561, + 0, 0, 0, 0, 2145, 2047, 0, 0, 0, 1583, + 0, 0, 2150, 0, 0, 0, 0, 0, 2154, 2155, + 2156, 2157, 2158, 2159, 2160, 2161, 0, 0, 0, 0, + 2170, 2171, 0, 0, 0, 2184, 0, 0, 0, 2187, + 0, 0, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, + 2203, 0, 2900, 2204, 0, 0, 2134, 1405, 1406, 0, + 1129, 0, 1313, 0, 0, 0, 0, 1680, 0, 0, + 0, 1417, 1418, 0, 0, 0, 0, 0, 0, 0, + 2230, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1399, 1400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 26, 27, 28, 0, 1735, 0, - 0, 0, 29, 0, 0, 30, 0, 0, 0, 0, - 0, 2360, 0, 2360, 0, 0, 0, 0, 0, 0, - 0, 0, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, - 0, 0, 1413, 1414, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 3117, 0, 32, 0, 0, 0, 0, + 0, 0, 1419, 1420, 0, 1626, 1627, 0, 0, 0, + 1583, 0, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, + 0, 0, 1415, 1416, 0, 0, 1401, 1402, 0, 561, + 1403, 1404, 0, 561, 561, 0, 0, 561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 0, 1690, 0, 0, 34, 0, - 0, 0, 35, 1980, 1980, 0, 1451, 1451, 1451, 1451, - 1451, 1451, 0, 36, 1451, 1451, 1451, 1451, 1451, 1451, - 1451, 1451, 1451, 1451, 1980, 37, 0, 0, 0, 38, - 0, 0, 0, 0, 0, 0, 0, 1415, 1416, 0, - 0, 0, 0, 0, 0, 3172, 3173, 0, 3176, 39, - 0, 0, 0, 0, 0, 0, 0, 0, 1397, 1398, - 0, 0, 0, 40, 0, 0, 41, 0, 0, 42, - 0, 0, 0, 0, 43, 0, 0, 0, 1417, 1418, - 0, 0, 3197, 0, 0, 0, 0, 0, 0, 0, - 0, 44, 0, 0, 0, 0, 0, 0, 0, 1399, - 1400, 0, 3206, 1401, 1402, 0, 0, 0, 3210, 3211, - 0, 0, 0, 3212, 0, 45, 0, 0, 3215, 0, - 0, 3218, 3219, 0, 0, 0, 2360, 1312, 0, 46, - 3227, 0, -46, 0, 0, 1690, 0, 0, 1690, 0, - 0, 0, 0, 0, 0, 1128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1690, - 0, 0, 0, 0, 0, 0, 1419, 1420, 0, 1403, - 1404, 0, 0, 0, 1690, 0, 1397, 1398, 1690, 3270, - 0, 0, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1421, 1422, 0, 0, 0, 1451, 1451, 0, 1690, 1690, - 0, 0, 0, 0, 0, 0, 3289, 0, 0, 0, - 0, 0, 1690, 0, 0, 1690, 0, 1399, 1400, 0, - 0, 1401, 1402, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1690, 1690, 1690, 1405, 1406, 1407, 1408, 1409, 1410, 1411, - 1412, 0, 0, 1413, 1414, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1653, 0, 0, 1654, 1690, 0, - 0, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 0, 0, + 0, 0, 0, 0, 1453, 0, 561, 1681, 0, 0, + 1682, 1683, 1684, 0, 1685, 1686, 1687, 1688, 1689, 1690, + 0, 0, 0, 561, 561, 561, 561, 1959, 561, 561, + 561, 561, 561, 0, 0, 0, 0, 1417, 1418, 0, + 1421, 1422, 2365, 0, 0, 0, 1405, 1406, 0, 1313, + 0, 0, 2376, 2377, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1423, 1424, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1419, 1420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1662, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1664, 0, 0, 0, 0, 1403, 1404, 1665, + 1452, 1452, 0, 0, 1313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1451, 0, 0, 0, 0, 0, 0, 0, 1415, 1416, - 0, 0, 0, 0, 0, 0, 1666, 2803, 0, 0, + 0, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1371, + 2446, 1415, 1416, 0, 0, 0, 2047, 0, 0, 0, + 1693, 0, 0, 0, 0, 0, 0, 0, 1451, 1451, + 0, 0, 0, 0, 0, 0, 0, 0, 2472, 2473, + 0, 2474, 0, 1656, 2542, 0, 1657, 0, 0, 0, + 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, 0, 0, + 0, 0, 0, 0, 0, 0, 1421, 1422, 0, 1693, + 2500, 2501, 1665, 0, 2230, 0, 2134, 0, 0, 0, + 0, 0, 1667, 0, 2134, 0, 1417, 1418, 0, 1668, + 1423, 1424, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1453, 0, 2526, 0, 0, 0, 1583, + 2064, 0, 0, 0, 2536, 0, 1669, 0, 813, 0, + 0, 0, 0, 0, 0, 0, 1225, 1419, 1420, 0, + 0, 0, 1226, 1511, 0, 1313, 0, 0, 0, 0, + 1238, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1693, + 1239, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2571, 0, 0, 0, 0, 0, 2578, + 0, 561, 0, 0, 0, 0, 0, 0, 1452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1693, 0, 1240, 0, 0, 0, + 0, 1693, 2590, 1670, 0, 1452, 2596, 0, 0, 0, + 0, 2601, 2602, 0, 0, 1421, 1422, 0, 0, 0, + 1671, 0, 0, 0, 0, 1672, 1451, 1227, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1423, + 1424, 0, 0, 0, 0, -46, 0, 0, 1673, 1674, + 0, 0, 1693, 3188, 0, 0, 0, 0, 2623, 0, + 0, 2626, 0, 2628, 1675, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 1693, 0, 2, 2632, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1241, 5, 0, 0, 0, 0, 6, 0, + 0, 0, 1676, 3217, 0, 1677, 0, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1738, 1678, + 0, 8, 1679, 0, 1693, 0, 1693, 0, 1453, 1453, + 9, 1984, 10, 0, 1453, 1759, 2202, 1693, 0, 0, + 1693, 0, 1242, 0, 11, 1693, 12, 0, 1693, 0, + 1452, 0, 1243, 0, 1129, 0, 0, 13, 0, 3384, + 0, 0, 0, 0, 1244, 0, 2542, 2690, 0, 0, + 0, 0, 14, 15, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 1228, 0, 0, 0, 18, + 0, 0, 1693, 0, 0, 0, 1245, 19, 1451, 20, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 22, 0, 0, 0, 23, 0, + 0, 0, 1680, 0, 0, 0, 0, 0, 0, 0, + 561, 0, 0, 0, 1627, 561, 0, 0, 0, 0, + 0, 0, 0, 1313, 24, 2339, 0, 0, 0, 1230, + 0, 1247, 0, 0, 0, 0, 0, 0, 0, 0, + -1498, 561, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1248, 0, 1693, 0, + 0, 2340, 0, 0, 0, 561, 561, 25, 0, 0, + 0, 0, 0, 0, 0, 1693, 1250, 0, 0, 0, + 0, 0, 0, 0, 1452, 2810, 1693, 1693, 1693, 561, + 0, 0, 0, 1693, 0, 0, 0, 1693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1633, 0, 0, 0, 0, 1417, - 1418, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 0, - 0, 1413, 1414, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1652, 0, 0, 0, 0, 1653, 0, 2587, - 1654, 0, 0, 1690, 1655, 1656, 1657, 1658, 1659, 1660, - 1661, 0, 0, 0, 1690, 1690, 3388, 3389, 0, 0, - 3390, 0, 1624, 0, 0, 1662, 0, 0, 0, 1663, - 0, 0, 0, 1667, 0, 1664, 0, 0, 0, 0, - 0, 0, 1665, 0, 0, 0, 0, 0, 0, 3410, - 1668, 0, 0, 0, 0, 1669, 1415, 1416, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1419, 1420, 1666, - 0, 0, 0, 3422, 0, 0, 0, 0, 1670, 1671, - 0, 1690, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1421, 1422, 1672, 0, 0, 0, 1417, 1418, 0, - 0, 0, 0, 0, 0, 0, 0, 1690, 1690, 1690, - 0, 2060, 1980, 1980, 1980, 1980, 1980, 1980, 0, 0, - 0, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, - 1980, 1673, 0, 0, 1674, 1690, 1690, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1675, 0, - 0, 1676, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1690, 0, 0, 3172, 0, 1667, 0, 3483, 0, - 0, 1690, 1128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1668, 0, 0, 3493, 0, 1669, 0, - 0, 2360, 0, 2360, 0, 1419, 1420, 0, 0, 0, - 0, 0, 0, 1128, 0, 0, 1690, 0, 0, 0, - 0, 1670, 1671, 0, 0, 0, 0, 0, 0, 1421, - 1422, 3518, 0, 0, 1690, 0, 1672, 0, 0, 0, - 1690, 0, 0, 0, 0, 0, 0, 0, 1690, 1690, - 0, 0, 0, 0, 0, 0, 1980, 1980, 0, 0, + 0, 0, 1681, 0, 0, 1682, 1683, 1684, 0, 1685, + 1686, 1687, 1688, 1689, 1690, 0, 0, 0, 0, 2140, + 0, 0, 1451, 561, 1232, 0, 0, 0, 0, 0, + 0, 2134, 0, 26, 27, 28, 0, 0, 0, 0, + 0, 29, 0, 0, 30, 0, 0, 0, 0, 0, + 1693, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1655, 0, 0, 0, 0, 1656, + 0, 0, 1657, 0, 0, 31, 1658, 1659, 1660, 1661, + 0, 1662, 1663, 1664, 32, 0, 0, 0, 0, 1693, + 0, 0, 0, 0, 0, 0, 0, 0, 1665, 0, + 33, 0, 1666, 0, 0, 1693, 0, 34, 1667, 0, + 1693, 35, 2890, 0, 0, 1668, 0, 0, 0, 2892, + 2100, 0, 36, 0, 0, 0, 0, 1984, 0, 0, + 0, 0, 0, 0, 37, 2901, 0, 0, 38, 0, + 0, 0, 1669, 0, 0, 0, 0, 0, 2913, 0, + 0, 2916, 0, 2918, 0, 0, 0, 0, 39, 0, + 0, 2922, 0, 0, 0, 0, 0, 0, 0, 2929, + 2930, 0, 40, 0, 0, 41, 2937, 0, 42, 0, + 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2951, 0, 0, 0, 1452, 0, 0, + 44, 0, 0, 2966, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 561, 0, 0, + 0, 0, 0, 1129, 45, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 46, 1670, + 0, -46, 0, 0, 0, 3498, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1671, 0, 0, 0, + 0, 1672, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1738, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1673, 1674, 0, 2365, 2365, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1675, 0, 0, 0, 0, 0, 0, 1693, 0, 0, + 0, 0, 0, 0, 0, 1984, 1984, 3123, 1453, 1453, + 1453, 1453, 1453, 1453, 0, 0, 1453, 1453, 1453, 1453, + 1453, 1453, 1453, 1453, 1453, 1453, 1984, 0, 1676, 0, 0, 1677, 0, 0, 0, 0, 0, 0, 0, 0, - 1690, 1451, 1451, 1690, 1673, 1690, 0, 1674, 3543, 1690, - 0, 0, 0, 0, 0, 0, 0, 0, 3172, 0, - 0, 1675, 0, 0, 1676, 0, 0, 0, 0, 0, - 1128, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1653, 0, 0, 1654, 0, - 0, 0, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 0, - 0, 0, 0, 3586, 0, 0, 0, 1690, 0, 0, - 0, 0, 0, 1662, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1664, 0, 0, 0, 0, 0, 0, - 1665, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1678, 0, 0, 1679, 1680, 1681, 0, 1682, 1683, - 1684, 1685, 1686, 1687, 0, 0, 0, 1666, 0, 0, - 0, 1955, 0, 0, 1677, 1653, 0, 0, 1654, 0, - 0, 0, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 0, + 0, 0, 0, 0, 0, 1678, 0, 0, 1679, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1656, 0, 0, 1657, 0, 0, 0, 1658, + 1659, 1660, 1661, 0, 1662, 1663, 1664, 0, 0, 0, + 0, 0, 3182, 3183, 0, 3186, 0, 0, 0, 0, + 0, 1665, 0, 0, 0, 2905, 0, 0, 0, 0, + 0, 1667, 0, 0, 0, 0, 0, 0, 1668, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3207, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1669, 0, 1693, 0, 3216, + 0, 1693, 0, 0, 3219, 3220, 0, 0, 1680, 3221, + 0, 0, 0, 0, 3224, 0, 0, 3227, 3228, 0, + 0, 0, 2365, 1313, 0, 0, 3236, 0, 0, 0, + 0, 0, 1693, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1129, 0, 0, 0, 1693, 0, 0, 0, + 0, 1693, 0, 0, 0, 1693, 1693, 1693, 1693, 1693, + 1693, 1693, 1693, 0, 0, 0, 0, 0, 1453, 1453, + 0, 1693, 1693, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1693, 3279, 0, 1693, 0, + 0, 0, 1670, 0, 0, 0, 1693, 1693, 1693, 1693, + 1693, 1693, 1693, 1693, 1693, 1693, 0, 0, 0, 1671, + 0, 0, 0, 3298, 1672, 0, 0, 0, 1681, 0, + 0, 1682, 1683, 1684, 0, 1685, 1686, 1687, 1688, 1689, + 1690, 1693, 0, 0, 0, 0, 0, 1673, 1674, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1675, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1453, 0, 0, 0, 0, 0, 0, + 0, 1676, 0, 0, 1677, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1678, 0, + 0, 1679, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2810, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1636, 0, 1693, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1693, 1693, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2596, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1680, 0, 0, 0, 3399, 3400, 0, 0, 3401, + 0, 1627, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1693, 3421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3640, 3640, 3640, 1662, 0, 0, 0, 2898, 0, 0, - 0, 0, 0, 1664, 0, 0, 0, 0, 0, 0, - 1665, 0, 0, 0, 0, 0, 0, 3640, 0, 0, - 0, 0, 1653, 0, 0, 1654, 1690, 0, 0, 1655, - 1656, 1657, 1658, 1659, 1660, 1661, 0, 1666, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1451, 0, - 1662, 0, 0, 0, 1667, 0, 0, 0, 3640, 0, - 1664, 0, 0, 0, 0, 0, 0, 1665, 0, 0, - 0, 1668, 0, 0, 1678, 0, 1669, 1679, 1680, 1681, - 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, 0, 0, - 0, 0, 0, 0, 1666, 0, 0, 0, 0, 1670, - 1671, 0, 0, 0, 0, 0, 1690, 0, 1690, 0, - 0, 0, 0, 0, 1672, 0, 0, 1690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1690, 0, 0, 1690, 1667, 1690, 0, 0, 0, 1690, - 0, 0, 1980, 1980, 0, 0, 1690, 1690, 0, 0, - 0, 1668, 1673, 0, 1690, 1674, 1669, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1690, 0, 1675, - 0, 0, 1676, 0, 0, 0, 0, 0, 0, 1670, - 1671, 0, 1690, 0, 0, 0, 0, 0, 727, 0, - 0, 1667, 0, 1653, 1672, 0, 1654, 0, 0, 0, - 1655, 1656, 1657, 1658, 1659, 1660, 1661, 0, 1668, 0, + 0, 0, 3433, 1693, 1693, 1693, 0, 0, 1984, 1984, + 1984, 1984, 1984, 1984, 0, 0, 0, 1984, 1984, 1984, + 1984, 1984, 1984, 1984, 1984, 1984, 1984, 0, 0, 0, + 0, 1693, 1693, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1681, 0, 0, 1682, 1683, 1684, 1693, 1685, 1686, + 1687, 1688, 1689, 1690, 0, 0, 0, 1693, 2140, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3182, 0, 0, 0, 3495, + 0, 0, 1693, 1129, 0, 0, 0, 0, 0, 1693, + 0, 0, 0, 0, 0, 0, 0, 3505, 0, 0, + 0, 1693, 2365, 2365, 0, 0, 0, 1693, 0, 0, + 0, 0, 1693, 1693, 1129, 0, 1656, 0, 0, 1657, + 1984, 1984, 0, 1658, 1659, 1660, 1661, 0, 1662, 1663, + 1664, 0, 3530, 0, 1693, 1453, 1453, 1693, 0, 1693, + 0, 0, 0, 1693, 0, 1665, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1667, 0, 0, 0, 0, + 0, 0, 1668, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3555, 0, 0, 0, 0, 0, 0, 0, 0, 1669, + 3182, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1656, 1693, 1129, 1657, 0, 0, 0, 1658, 1659, 1660, + 1661, 0, 1662, 1663, 1664, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1665, + 0, 0, 0, 0, 0, 3598, 0, 0, 0, 1667, + 0, 0, 0, 0, 0, 0, 1668, 0, 0, 0, + 0, 0, 1656, 0, 0, 1657, 0, 0, 0, 1658, + 1659, 1660, 1661, 0, 1662, 1663, 1664, 0, 0, 0, 0, 0, 0, 1669, 0, 0, 0, 0, 0, 0, - 1451, 1662, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1664, 1673, 0, 0, 1674, 1670, 1671, 1665, 0, - 0, 0, 0, 0, 0, 728, 0, 0, 0, 1675, - 0, 1672, 1676, 0, 0, 0, 0, 0, 0, 0, - 0, 729, 0, 0, 0, 1666, 0, 1653, 0, 0, - 1654, 0, 1677, 0, 1655, 1656, 1657, 1658, 1659, 1660, - 1661, 0, 0, 0, 0, 0, 0, 0, 0, 1673, - 0, 0, 1674, 0, 0, 1662, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1664, 1675, 0, 0, 1676, - 730, 0, 1665, 0, 0, 0, 0, 0, 0, 0, - 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 732, 0, 0, 0, 0, 733, 1666, - 1690, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1677, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1667, 0, 0, 0, 0, 734, 0, 0, - 1980, 1451, 0, 0, 0, 0, 0, 0, 0, 1668, - 0, 0, 1678, 0, 1669, 1679, 1680, 1681, 0, 1682, - 1683, 1684, 1685, 1686, 1687, 1690, 1690, 1848, 0, 1690, - 0, 0, 0, 0, 0, 0, 0, 1670, 1671, 1677, - 735, 0, 0, 0, 736, 0, 0, 0, 0, 0, - 1690, 0, 1672, 0, 0, 0, 0, 0, 0, 1690, - 0, 0, 0, 1690, 1690, 1690, 1667, 0, 1690, 0, - 0, 1690, 1690, 0, 0, 0, 0, 0, 0, 0, - 1690, 0, 0, 1668, 0, 0, 0, 0, 1669, 0, - 1673, 0, 1678, 1674, 0, 1679, 1680, 1681, 0, 1682, - 1683, 1684, 1685, 1686, 1687, 0, 0, 1675, 0, 2135, - 1676, 1670, 1671, 0, 0, 737, 0, 0, 0, 0, - 0, 0, 0, 1690, 0, 0, 1672, 0, 0, 1980, - 738, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1690, 0, 0, 0, 0, 0, 0, 1678, - 0, 0, 1679, 1680, 1681, 0, 1682, 1683, 1684, 1685, - 1686, 1687, 0, 0, 1673, 739, 2135, 1674, 740, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, - 0, 1675, 742, 0, 1676, 0, 0, 0, 0, 0, + 0, 1665, 0, 0, 0, 0, 1670, 0, 0, 0, + 0, 1667, 0, 0, 0, 0, 0, 0, 1668, 0, + 0, 0, 0, 1671, 0, 0, 0, 0, 1672, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1693, 3652, 3652, 3652, 1669, 0, 0, 0, 0, + 0, 1673, 1674, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1453, 0, 0, 0, 1675, 0, 3652, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1656, 0, 0, 1657, 0, 0, 0, 1658, 1659, + 1670, 0, 0, 1662, 1663, 1664, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1676, 0, 1671, 1677, 0, + 3652, 0, 1672, 0, 0, 0, 0, 0, 0, 0, + 1667, 1693, 1678, 1693, 0, 1679, 0, 1668, 0, 0, + 0, 0, 1693, 0, 0, 1673, 1674, 0, 0, 0, + 0, 0, 1670, 0, 1693, 0, 0, 1693, 0, 1693, + 0, 1675, 0, 1693, 1669, 0, 1984, 1984, 0, 1671, + 1693, 1693, 0, 0, 1672, 0, 0, 0, 1693, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1693, 0, 0, 0, 0, 1673, 1674, 1676, + 0, 0, 1677, 0, 0, 0, 0, 1693, 0, 0, + 0, 0, 0, 1675, 0, 0, 1678, 0, 0, 1679, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1680, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1453, 0, 0, 0, 0, + 0, 1676, 0, 0, 1677, 0, 0, 0, 0, 0, + 0, 1670, 0, 0, 0, 0, 0, 0, 1678, 0, + 0, 1679, 0, 0, 0, 0, 0, 0, 1671, 0, + 0, 0, 0, 1672, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1673, 1674, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1680, + 0, 0, 1675, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1681, 0, 0, 1682, 1683, + 1684, 0, 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, + 1676, 0, 2471, 1677, 1693, 0, 0, 0, 0, 0, + 0, 1680, 0, 0, 0, 0, 0, 1678, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1984, 1453, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 743, 0, 0, 0, 1980, 0, 0, 0, 0, - 1677, 0, 0, 0, 0, 744, 0, 0, 0, 0, - 0, 0, 746, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 747, 0, 0, 0, 0, 0, 748, 0, - 0, 1690, 1690, 1690, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1693, 1693, 0, 0, 1693, 0, 1681, + 0, 0, 1682, 1683, 1684, 0, 1685, 1686, 1687, 1688, + 1689, 1690, 0, 0, 0, 0, 2575, 0, 1693, 0, + 0, 0, 0, 0, 0, 0, 0, 1693, 0, 0, + 1693, 1693, 1693, 0, 0, 1693, 0, 0, 1693, 1693, + 0, 0, 0, 0, 0, 0, 0, 1693, 0, 0, + 1680, 1681, 0, 0, 1682, 1683, 1684, 0, 1685, 1686, + 1687, 1688, 1689, 1690, 0, 0, 0, 0, 2589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1690, 0, 0, 0, 749, 0, 0, - 0, 0, 0, 0, 0, 1690, 0, 0, 0, 0, - 0, 0, 0, 0, 1677, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1693, 0, 0, 0, 0, 0, 1984, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1678, 0, 0, 1679, 1680, 1681, 0, 1682, 1683, 1684, - 1685, 1686, 1687, 0, 0, 0, 1690, 2463, 0, 0, - 0, 0, 0, 0, 0, 0, 1690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1678, 0, 1690, 1679, 1680, 1681, - 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, 0, 0, - 0, 2567, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1690, + 1681, 0, 0, 1682, 1683, 1684, 0, 1685, 1686, 1687, + 1688, 1689, 1690, 0, 1984, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1693, 1693, 1693, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1693, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1693, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1693, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1693, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1693, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1693, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1693, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, - 1073, 1074, 157, 1690, 158, 159, 160, 161, 796, 0, + 1073, 1074, 157, 1693, 158, 159, 160, 161, 796, 0, 797, 0, 1075, 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, @@ -5452,38 +5478,91 @@ static const yytype_int16 yytable[] = 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 280, 281, 282, 283, 284, 285, 286, 287, 1088, 288, + 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, + 296, 297, 298, 299, 300, 301, 302, 1089, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 1090, 325, + 1091, 327, 328, 329, 330, 1092, 331, 332, 333, 334, + 1093, 800, 336, 1094, 338, 339, 340, 0, 341, 342, + 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, + 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 26, 27, 28, 0, + 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 406, 407, 408, 409, 1097, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 33, 0, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 35, 433, 434, 435, 1098, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 805, 37, 0, 454, + 455, 38, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 1099, 1100, 0, 0, 466, 467, 806, 469, 807, + 1101, 471, 472, 808, 474, 475, 476, 477, 478, 0, + 0, 479, 480, 481, 1102, 40, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 809, 1103, 493, 0, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 44, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 1104, 0, 45, 0, 0, + 0, 0, 1105, 1106, 1107, 0, 0, 0, 0, 1108, + 0, 1109, 3374, 0, 0, 0, 1110, 1111, 1112, 1113, + 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, + 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, + 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, + 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, + 1074, 157, 0, 158, 159, 160, 161, 796, 0, 797, + 0, 1075, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, 198, + 199, 200, 201, 202, 14, 15, 203, 204, 205, 206, + 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, + 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, + 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, + 0, 231, 232, 1082, 234, 0, 235, 0, 236, 237, + 23, 238, 239, 240, 241, 242, 243, 244, 245, 0, + 1083, 1084, 248, 249, 0, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, + 281, 282, 283, 284, 285, 286, 287, 1088, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 1088, 304, 305, 306, + 297, 298, 299, 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 1089, 325, 1090, - 327, 328, 329, 330, 1091, 331, 332, 333, 334, 1092, - 800, 336, 1093, 338, 339, 340, 0, 341, 342, 0, - 0, 1094, 344, 345, 0, 0, 346, 347, 348, 349, + 317, 318, 319, 320, 321, 322, 323, 1090, 325, 1091, + 327, 328, 329, 330, 1092, 331, 332, 333, 334, 1093, + 800, 336, 1094, 338, 339, 340, 0, 341, 342, 0, + 0, 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 26, 27, 28, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 1095, 387, 388, 389, 390, 0, 391, 392, + 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 406, 407, 408, 409, 1096, 411, + 403, 0, 404, 405, 406, 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 33, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 35, 433, 434, 435, 1097, 437, 0, + 430, 431, 432, 35, 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 37, 0, 454, 455, 38, 456, 457, 458, 459, 460, 461, 462, 0, 463, - 1098, 1099, 0, 0, 466, 467, 806, 469, 807, 1100, + 1099, 1100, 0, 0, 466, 467, 806, 469, 807, 1101, 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 1101, 40, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 809, 1102, 493, 0, 494, + 479, 480, 481, 1102, 40, 482, 483, 484, 485, 0, + 486, 487, 488, 489, 490, 809, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 44, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 1103, 0, 45, 0, 0, 0, - 0, 1104, 1105, 1106, 0, 0, 0, 0, 1107, 0, - 1108, 3363, 0, 0, 0, 0, 1109, 1110, 1111, 1112, - 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, + 521, 522, 523, 524, 1104, 0, 45, 0, 0, 0, + 0, 1105, 1106, 1107, 0, 0, 0, 0, 1108, 0, + 1109, 0, 0, 0, 0, 1110, 1111, 1112, 1113, 118, + 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, @@ -5495,7 +5574,7 @@ static const yytype_int16 yytable[] = 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, - 200, 201, 202, 14, 15, 203, 204, 205, 206, 0, + 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, @@ -5505,43 +5584,96 @@ static const yytype_int16 yytable[] = 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 1088, 304, 305, 306, 307, 308, + 282, 283, 284, 285, 286, 287, 1088, 288, 289, 290, + 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 1089, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 1090, 325, 1091, 327, + 328, 329, 330, 1092, 331, 332, 333, 334, 1093, 800, + 336, 1094, 338, 339, 340, 0, 341, 342, 0, 0, + 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, + 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 26, 27, 28, 0, 365, 366, + 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 406, 407, 408, 409, 1097, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 33, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 433, 434, 435, 1098, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 805, 0, 0, 454, 455, 38, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 1099, + 1100, 0, 0, 466, 467, 806, 469, 807, 1101, 471, + 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 1102, 40, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 809, 1103, 493, 0, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 44, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 1104, 0, 45, 0, 0, 0, 0, + 1105, 1106, 1107, 0, 0, 0, 0, 1108, 0, 1109, + 0, 0, 0, 0, 1110, 1111, 1112, 1113, 1273, 1062, + 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 1274, 127, 128, 129, + 0, 0, 0, 1275, 0, 1068, 0, 0, 1276, 131, + 132, 0, 1277, 134, 135, 1278, 137, 138, 139, 140, + 1069, 1279, 1070, 1071, 0, 145, 146, 147, 148, 149, + 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, + 0, 158, 159, 160, 161, 796, 0, 1280, 0, 1281, + 165, 166, 167, 168, 169, 1282, 171, 172, 173, 0, + 174, 175, 176, 177, 178, 179, 0, 1283, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 1076, 192, + 193, 1077, 195, 1078, 196, 0, 197, 198, 199, 200, + 201, 202, 0, 0, 203, 204, 205, 206, 1284, 0, + 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, + 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, + 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, + 232, 1082, 234, 0, 235, 0, 236, 1285, 0, 1286, + 239, 240, 1287, 1288, 243, 244, 245, 0, 1083, 1084, + 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, + 1289, 258, 259, 260, 261, 0, 262, 263, 264, 265, + 266, 267, 268, 0, 269, 1290, 271, 272, 273, 274, + 275, 276, 1085, 1086, 0, 1087, 0, 280, 1291, 1292, + 283, 1293, 285, 286, 287, 1088, 288, 289, 290, 0, + 0, 291, 1294, 293, 1295, 0, 295, 296, 297, 298, + 299, 300, 301, 302, 1296, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 1089, 325, 1090, 327, 328, - 329, 330, 1091, 331, 332, 333, 334, 1092, 800, 336, - 1093, 338, 339, 340, 0, 341, 342, 0, 0, 1094, - 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, + 319, 320, 321, 322, 323, 1090, 1297, 1091, 327, 328, + 329, 330, 1092, 331, 332, 1298, 334, 1093, 800, 336, + 1094, 338, 339, 340, 0, 341, 342, 0, 0, 1095, + 344, 345, 0, 886, 346, 347, 348, 1299, 350, 1300, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 26, 27, 28, 0, 365, 366, 803, - 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, + 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, + 1301, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 1095, 387, 388, 389, 390, 0, 391, 392, 393, 394, + 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 406, 407, 408, 409, 1096, 411, 412, 413, + 404, 405, 1302, 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 33, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 35, 433, 434, 435, 1097, 437, 0, 438, 439, + 0, 1303, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 0, 1304, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 805, 37, 0, 454, 455, 38, 456, - 457, 458, 459, 460, 461, 462, 0, 463, 1098, 1099, - 0, 0, 466, 467, 806, 469, 807, 1100, 471, 472, - 808, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 1101, 40, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 809, 1102, 493, 0, 494, 495, 496, + 450, 1305, 452, 805, 0, 0, 454, 455, 0, 456, + 1306, 458, 459, 460, 461, 462, 0, 463, 1099, 1100, + 0, 0, 466, 467, 806, 469, 807, 1101, 471, 472, + 1307, 474, 475, 476, 477, 478, 0, 0, 479, 480, + 481, 1308, 0, 482, 483, 484, 485, 0, 486, 487, + 488, 489, 490, 491, 1103, 493, 1309, 494, 1310, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 44, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 1103, 0, 45, 0, 0, 0, 0, 1104, - 1105, 1106, 0, 0, 0, 0, 1107, 0, 1108, 0, - 0, 0, 0, 0, 1109, 1110, 1111, 1112, 118, 1062, - 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, + 523, 524, 1104, 0, 0, 0, 0, 0, 0, 1105, + 1106, 1107, 0, 0, 0, 0, 1108, 0, 1109, 1311, + 0, 0, 0, 1110, 1111, 1112, 1113, 118, 1062, 826, + 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, 1069, - 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, + 142, 1070, 1071, 1460, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, 1075, 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, @@ -5552,521 +5684,520 @@ static const yytype_int16 yytable[] = 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, 232, - 1082, 234, 0, 235, 0, 236, 237, 23, 238, 239, + 1082, 234, 0, 235, 0, 236, 237, 1461, 238, 239, 240, 241, 242, 243, 244, 245, 0, 1083, 1084, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 0, 0, 291, + 284, 285, 286, 287, 1088, 288, 289, 290, 0, 1462, + 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 1090, 325, 1091, 327, 328, 329, + 330, 1092, 331, 332, 333, 334, 1093, 800, 336, 1094, + 338, 339, 340, 0, 341, 342, 0, 0, 1095, 344, + 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 1096, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 406, 407, 408, 409, 1097, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 0, 433, 434, 435, 1098, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 1099, 1100, 0, + 1463, 466, 467, 806, 469, 807, 1101, 471, 472, 808, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 1102, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 1104, 0, 0, 0, 0, 0, 0, 1105, 1106, + 1107, 0, 0, 0, 0, 1108, 0, 1109, 0, 0, + 0, 0, 1110, 1111, 1112, 1113, 118, 1062, 826, 1063, + 1064, 0, 1066, 1067, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, + 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 1069, 142, + 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, + 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, + 159, 160, 161, 796, 0, 797, 0, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 1076, 192, 193, 1077, + 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, + 14, 15, 203, 204, 205, 206, 0, 0, 207, 208, + 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, + 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, + 226, 227, 228, 798, 1081, 230, 0, 231, 232, 1082, + 234, 0, 235, 0, 236, 237, 23, 238, 239, 240, + 241, 242, 243, 244, 245, 0, 1083, 1084, 248, 249, + 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, 284, + 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 1088, 304, 305, 306, 307, 308, 309, 310, + 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 1089, 325, 1090, 327, 328, 329, 330, - 1091, 331, 332, 333, 334, 1092, 800, 336, 1093, 338, - 339, 340, 0, 341, 342, 0, 0, 1094, 344, 345, + 321, 322, 323, 1090, 325, 1091, 327, 328, 329, 330, + 0, 331, 332, 333, 334, 1093, 800, 336, 1094, 338, + 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 26, 27, 28, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 1095, 387, + 379, 380, 0, 381, 382, 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 406, 407, 408, 409, 1096, 411, 412, 413, 414, 415, + 406, 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 33, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 433, 434, 435, 1097, 437, 0, 438, 439, 440, 441, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 35, + 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 805, 0, 0, 454, 455, 38, 456, 457, 458, - 459, 460, 461, 462, 0, 463, 1098, 1099, 0, 0, - 466, 467, 806, 469, 807, 1100, 471, 472, 808, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 1101, + 452, 805, 37, 0, 454, 455, 38, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 1099, 1100, 0, 0, + 466, 467, 806, 469, 807, 1101, 471, 472, 808, 474, + 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, 40, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 809, 1102, 493, 0, 494, 495, 496, 497, 498, + 490, 809, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 44, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 1103, 0, 45, 0, 0, 0, 0, 1104, 1105, 1106, - 0, 0, 0, 0, 1107, 0, 1108, 0, 0, 0, - 0, 0, 1109, 1110, 1111, 1112, 1272, 1062, 826, 1063, - 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 1273, 127, 128, 129, 0, 0, 0, - 1274, 0, 1068, 0, 0, 1275, 131, 132, 0, 1276, - 134, 135, 1277, 137, 138, 139, 140, 1069, 1278, 1070, + 0, 0, 45, 0, 0, 1273, 1062, 826, 1063, 1064, + 1065, 1066, 1067, 0, 1108, 0, 1109, 0, 0, 0, + 0, 1110, 1111, 1112, 1113, 119, 120, 121, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, + 1275, 0, 1068, 0, 0, 1276, 131, 132, 0, 1277, + 134, 135, 1278, 137, 138, 139, 140, 1069, 1279, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, - 160, 161, 796, 0, 1279, 0, 1280, 165, 166, 167, - 168, 169, 1281, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 1282, 181, 182, 183, 184, 185, + 160, 161, 796, 0, 1280, 0, 1281, 165, 166, 167, + 168, 169, 1282, 171, 172, 173, 0, 174, 175, 176, + 177, 178, 179, 0, 1283, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 1283, 0, 207, 208, 1079, + 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, 232, 1082, 234, - 0, 235, 0, 236, 1284, 0, 1285, 239, 240, 1286, - 1287, 243, 244, 245, 0, 1083, 1084, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 1288, 258, 259, + 0, 235, 0, 236, 1285, 0, 1286, 239, 240, 1287, + 1288, 243, 244, 245, 0, 1083, 1084, 248, 249, 0, + 250, 251, 252, 253, 254, 255, 256, 1289, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 1289, 271, 272, 273, 274, 275, 276, 1085, - 1086, 0, 1087, 0, 280, 1290, 1291, 283, 1292, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 1293, 293, - 1294, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 1295, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 0, 269, 1290, 271, 272, 273, 274, 275, 276, 1085, + 1086, 0, 1087, 0, 280, 1291, 1292, 283, 1293, 285, + 286, 287, 1088, 288, 289, 290, 0, 0, 291, 1294, + 293, 1295, 0, 295, 296, 297, 298, 299, 300, 301, + 302, 1296, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 1090, 1297, 1091, 327, 328, 329, 330, 1092, + 331, 332, 1298, 334, 1093, 800, 336, 1094, 338, 339, + 340, 0, 341, 342, 0, 0, 1095, 344, 345, 0, + 0, 346, 347, 348, 1299, 350, 1300, 802, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 803, 1301, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 1096, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 1302, + 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 1303, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 1304, + 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 1305, 452, + 805, 0, 0, 454, 455, 0, 456, 1306, 458, 459, + 460, 461, 462, 0, 463, 1099, 1100, 0, 0, 466, + 467, 806, 469, 807, 1101, 471, 472, 1307, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 481, 1308, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 1103, 493, 2373, 494, 1310, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 1104, + 0, 0, 0, 0, 0, 0, 1105, 1106, 1107, 0, + 0, 0, 0, 1108, 0, 1109, 0, 0, 0, 0, + 1110, 1111, 1112, 1113, 1273, 1062, 826, 1063, 1064, 1065, + 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 0, 127, 128, 129, 0, 0, 0, 1275, + 0, 1068, 0, 0, 1276, 131, 132, 0, 1277, 134, + 135, 1278, 137, 138, 139, 140, 1069, 1279, 1070, 1071, + 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, + 152, 153, 154, 1073, 1074, 157, 0, 158, 159, 160, + 161, 796, 0, 1280, 0, 1281, 165, 166, 167, 168, + 169, 1282, 171, 172, 173, 0, 174, 175, 176, 177, + 178, 179, 0, 1283, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, + 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, + 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, + 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, + 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, + 228, 798, 1081, 230, 0, 231, 232, 1082, 234, 0, + 235, 0, 236, 1285, 0, 1286, 239, 240, 1287, 1288, + 243, 244, 245, 0, 1083, 1084, 248, 249, 0, 250, + 251, 252, 253, 254, 255, 256, 1289, 258, 259, 260, + 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, + 269, 1290, 271, 272, 273, 274, 275, 276, 1085, 1086, + 0, 1087, 0, 280, 1291, 1292, 283, 1293, 285, 286, + 287, 1088, 288, 289, 290, 0, 0, 291, 1294, 293, + 1295, 0, 295, 296, 297, 298, 299, 300, 301, 302, + 1296, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 1089, 1296, 1090, 327, 328, 329, 330, 1091, 331, - 332, 1297, 334, 1092, 800, 336, 1093, 338, 339, 340, - 0, 341, 342, 0, 0, 1094, 344, 345, 0, 886, - 346, 347, 348, 1298, 350, 1299, 802, 353, 354, 355, + 323, 1090, 1297, 1091, 327, 328, 329, 330, 1092, 331, + 332, 1298, 334, 1093, 800, 336, 1094, 338, 339, 340, + 0, 341, 342, 0, 0, 1095, 344, 345, 0, 0, + 346, 347, 348, 1299, 350, 1300, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 803, 1300, 369, 370, 371, + 0, 0, 0, 365, 366, 803, 1301, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 1095, 387, 388, 389, + 0, 381, 382, 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 1301, 407, - 408, 409, 1096, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 1302, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 1303, 434, - 435, 1097, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 1304, 452, 805, - 0, 0, 454, 455, 0, 456, 1305, 458, 459, 460, - 461, 462, 0, 463, 1098, 1099, 0, 0, 466, 467, - 806, 469, 807, 1100, 471, 472, 1306, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 1307, 0, 482, + 399, 400, 401, 402, 403, 0, 404, 405, 1302, 407, + 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 1303, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 0, 1304, 434, + 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 1305, 452, 805, + 0, 0, 454, 455, 0, 456, 1306, 458, 459, 460, + 461, 462, 0, 463, 1099, 1100, 0, 0, 466, 467, + 806, 469, 807, 1101, 471, 472, 1307, 474, 475, 476, + 477, 478, 0, 0, 479, 480, 481, 1308, 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 1102, 493, 1308, 494, 1309, 496, 497, 498, 499, 500, + 1103, 493, 0, 494, 1310, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 1103, 0, - 0, 0, 0, 0, 0, 1104, 1105, 1106, 0, 0, - 0, 0, 1107, 0, 1108, 1310, 0, 0, 0, 0, - 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, 1064, 0, - 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 521, 522, 523, 524, 1104, 0, + 0, 0, 0, 0, 0, 1105, 1106, 1107, 0, 0, + 0, 0, 1108, 0, 1109, 2431, 0, 0, 0, 1110, + 1111, 1112, 1113, 118, 1062, 826, 1063, 1064, 1065, 1066, + 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, + 126, -1171, 127, 128, 129, 0, 0, 0, 0, -1171, 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, - 796, 0, 797, 0, 164, 165, 166, 167, 168, 169, + 796, 0, 797, 0, 1075, 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 1076, 192, 193, 1077, 195, 0, 196, - 0, 197, 198, 199, 200, 201, 202, 14, 15, 203, + 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, + 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, 232, 1082, 234, 0, 235, - 0, 236, 237, 23, 238, 239, 240, 241, 242, 243, + 0, 236, 237, 0, 238, 239, 240, 241, 242, 243, 244, 245, 0, 1083, 1084, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 1088, 304, + 1088, 288, 289, 290, 0, 0, 291, 292, 293, 294, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 1089, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 1090, 325, 1091, 327, 328, 329, 330, 1092, 331, 332, + 333, 334, 1093, 800, 336, 1094, 338, 339, 340, 0, + 341, 342, 0, 0, 1095, 344, 345, 0, 0, 346, + 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 1096, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 406, 407, 408, + 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 0, 433, 434, 435, + 1098, 437, -1171, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, + 0, 454, 455, 0, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 1099, 1100, 0, 0, 466, 467, 806, + 469, 807, 1101, 471, 472, 808, 474, 475, 476, 477, + 478, 0, 0, 479, 480, 481, 1102, 0, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 491, 1103, + 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 1104, 0, 0, + 0, 0, 0, 0, 1105, 1106, 1107, 0, 0, 0, + 0, 1108, 0, 1109, 0, 0, 0, 0, 1110, 1111, + 1112, 1113, 1273, 1062, 826, 1063, 1064, 1065, 1066, 1067, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 0, 127, 128, 129, 0, 0, 0, 1275, 0, 1068, + 0, 0, 1276, 131, 132, 0, 1277, 134, 135, 1278, + 137, 138, 139, 140, 1069, 1279, 1070, 1071, 0, 145, + 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, + 154, 1073, 1074, 157, 0, 158, 159, 160, 161, 796, + 0, 1280, 0, 1281, 165, 166, 167, 168, 169, 1282, + 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, + 0, 1283, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, + 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, + 205, 206, 0, 0, 207, 208, 1079, 210, 211, 0, + 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, + 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, + 1081, 230, 0, 231, 232, 1082, 234, 0, 235, 0, + 236, 1285, 0, 1286, 239, 240, 1287, 1288, 243, 244, + 245, 0, 1083, 1084, 248, 249, 0, 250, 251, 252, + 253, 254, 255, 256, 1289, 258, 259, 260, 261, 0, + 262, 263, 264, 265, 266, 267, 268, 0, 269, 1290, + 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, + 0, 280, 1291, 1292, 283, 1293, 285, 286, 287, 1088, + 288, 289, 290, 0, 0, 291, 1294, 293, 1295, 0, + 295, 296, 297, 298, 299, 300, 301, 302, 1296, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 1089, - 325, 1090, 327, 328, 329, 330, 0, 331, 332, 333, - 334, 1092, 800, 336, 1093, 338, 339, 340, 0, 341, - 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, - 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 26, 27, 28, - 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 1090, + 1297, 1091, 327, 328, 329, 330, 1092, 331, 332, 1298, + 334, 1093, 800, 336, 1094, 338, 339, 340, 0, 341, + 342, 0, 0, 1095, 344, 345, 0, 0, 346, 347, + 348, 1299, 350, 1300, 802, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, + 0, 365, 366, 803, 1301, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 1095, 387, 388, 389, 390, 0, + 382, 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 406, 407, 408, 409, - 1096, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 33, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 35, 433, 434, 435, 1097, + 401, 402, 403, 0, 404, 405, 1302, 407, 408, 409, + 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 1303, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 0, 1304, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 805, 37, 0, - 454, 455, 38, 456, 457, 458, 459, 460, 461, 462, - 0, 463, 1098, 1099, 0, 0, 466, 467, 806, 469, - 807, 1100, 471, 472, 808, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 0, 40, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 809, 1102, 493, - 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 44, 504, 505, 506, 507, 508, + 446, 447, 448, 449, 450, 1305, 452, 805, 0, 0, + 454, 455, 0, 456, 1306, 458, 459, 460, 461, 462, + 0, 463, 1099, 1100, 0, 0, 466, 467, 806, 469, + 807, 1101, 471, 472, 1307, 474, 475, 476, 477, 478, + 0, 0, 479, 480, 481, 1308, 0, 482, 483, 484, + 485, 0, 486, 487, 488, 489, 490, 491, 1103, 493, + 0, 494, 1310, 496, 497, 498, 499, 500, 501, 502, + 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 0, 0, 45, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1107, 0, 1108, 0, 0, 0, 0, 0, 1109, 1110, - 1111, 1112, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, + 519, 520, 521, 522, 523, 524, 1104, 0, 0, 0, + 0, 0, 0, 1105, 1106, 1107, 0, 0, 0, 0, + 1108, 0, 1109, 3233, 0, 0, 0, 1110, 1111, 1112, + 1113, 1273, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, - 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, - 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 1069, 142, 1070, 1071, 1458, 145, 146, + 127, 128, 129, 0, 0, 0, 1275, 0, 1068, 0, + 0, 1276, 131, 132, 0, 1277, 134, 135, 1278, 137, + 138, 139, 140, 1069, 1279, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, - 797, 0, 1075, 165, 166, 167, 168, 169, 170, 171, + 1280, 0, 1281, 165, 166, 167, 168, 169, 1282, 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 1283, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, 232, 1082, 234, 0, 235, 0, 236, - 237, 1459, 238, 239, 240, 241, 242, 243, 244, 245, + 1285, 0, 1286, 239, 240, 1287, 1288, 243, 244, 245, 0, 1083, 1084, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, - 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 254, 255, 256, 1289, 258, 259, 260, 261, 0, 262, + 263, 264, 265, 266, 267, 268, 0, 269, 1290, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 0, 1460, 291, 292, 293, 294, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 1088, 304, 305, 306, + 280, 1291, 1292, 283, 1293, 285, 286, 287, 1088, 288, + 289, 290, 0, 0, 291, 1294, 293, 1295, 0, 295, + 296, 297, 298, 299, 300, 301, 302, 1296, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 1090, 1297, + 1091, 327, 328, 329, 330, 1092, 331, 332, 1298, 334, + 1093, 800, 336, 1094, 338, 339, 340, 0, 341, 342, + 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, + 1299, 350, 1300, 802, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, + 365, 366, 803, 1301, 369, 370, 371, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 1302, 407, 408, 409, 1097, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 1303, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 0, 1304, 434, 435, 1098, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 1305, 452, 805, 0, 0, 454, + 455, 0, 456, 1306, 458, 459, 460, 461, 462, 0, + 463, 1099, 1100, 0, 0, 466, 467, 806, 469, 807, + 1101, 471, 472, 1307, 474, 475, 476, 477, 478, 0, + 0, 479, 480, 481, 1308, 0, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 491, 1103, 493, 0, + 494, 1310, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 1104, 0, 0, 0, 0, + 0, 0, 1105, 1106, 1107, 0, 0, 0, 0, 1108, + 0, 1109, 0, 0, 0, 0, 1110, 1111, 1112, 1113, + 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 1735, 127, + 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, + 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, + 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, + 1074, 157, 0, 158, 159, 160, 161, 796, 0, 797, + 0, 1075, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, 198, + 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, + 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, + 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, + 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, + 0, 231, 232, 1082, 234, 0, 235, 0, 236, 237, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 0, + 1083, 1084, 248, 249, 0, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, + 281, 282, 283, 284, 285, 286, 287, 1088, 288, 289, + 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, + 297, 298, 299, 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 1089, 325, 1090, - 327, 328, 329, 330, 1091, 331, 332, 333, 334, 1092, - 800, 336, 1093, 338, 339, 340, 0, 341, 342, 0, - 0, 1094, 344, 345, 0, 0, 346, 347, 348, 349, + 317, 318, 319, 320, 321, 322, 323, 1090, 325, 1091, + 327, 328, 329, 330, 1092, 331, 332, 333, 334, 1093, + 800, 336, 1094, 338, 339, 340, 0, 341, 342, 0, + 0, 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 1095, 387, 388, 389, 390, 0, 391, 392, + 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 406, 407, 408, 409, 1096, 411, + 403, 0, 404, 405, 406, 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 0, 433, 434, 435, 1097, 437, 0, + 430, 431, 432, 0, 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, 461, 462, 0, 463, - 1098, 1099, 0, 1461, 466, 467, 806, 469, 807, 1100, + 1099, 1100, 0, 0, 466, 467, 806, 469, 807, 1101, 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 1101, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 1102, 493, 0, 494, + 479, 480, 481, 1102, 0, 482, 483, 484, 485, 0, + 486, 487, 488, 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 1103, 0, 0, 0, 0, 0, - 0, 1104, 1105, 1106, 0, 0, 0, 0, 1107, 0, - 1108, 0, 0, 0, 0, 0, 1109, 1110, 1111, 1112, - 1272, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, + 521, 522, 523, 524, 1104, 0, 0, 0, 0, 0, + 0, 1105, 1106, 1107, 0, 0, 0, 0, 1108, 0, + 1109, 0, 0, 0, 0, 1110, 1111, 1112, 1113, 118, + 1750, 826, 1063, 1064, 1065, 1751, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, - 129, 0, 0, 0, 1274, 0, 1068, 0, 0, 1275, - 131, 132, 0, 1276, 134, 135, 1277, 137, 138, 139, - 140, 1069, 1278, 1070, 1071, 0, 145, 146, 147, 148, + 120, 121, 122, 123, 124, 125, 126, 1752, 127, 128, + 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, + 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, - 157, 0, 158, 159, 160, 161, 796, 0, 1279, 0, - 1280, 165, 166, 167, 168, 169, 1281, 171, 172, 173, - 0, 174, 175, 176, 177, 178, 179, 0, 1282, 181, + 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, + 1075, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, - 231, 232, 1082, 234, 0, 235, 0, 236, 1284, 0, - 1285, 239, 240, 1286, 1287, 243, 244, 245, 0, 1083, + 231, 232, 1082, 234, 0, 235, 0, 236, 237, 0, + 238, 239, 240, 241, 242, 243, 244, 245, 0, 1083, 1084, 248, 249, 0, 250, 251, 252, 253, 254, 255, - 256, 1288, 258, 259, 260, 261, 0, 262, 263, 264, - 265, 266, 267, 268, 0, 269, 1289, 271, 272, 273, - 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 1290, - 1291, 283, 1292, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 1293, 293, 1294, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 1295, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 1089, 1296, 1090, 327, 328, - 329, 330, 1091, 331, 332, 1297, 334, 1092, 800, 336, - 1093, 338, 339, 340, 0, 341, 342, 0, 0, 1094, - 344, 345, 0, 0, 346, 347, 348, 1298, 350, 1299, - 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, - 1300, 369, 370, 371, 372, 373, 374, 0, 375, 376, - 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 1095, 387, 388, 389, 390, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 1301, 407, 408, 409, 1096, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 1302, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 1303, 434, 435, 1097, 437, 0, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 1304, 452, 805, 0, 0, 454, 455, 0, 456, - 1305, 458, 459, 460, 461, 462, 0, 463, 1098, 1099, - 0, 0, 466, 467, 806, 469, 807, 1100, 471, 472, - 1306, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 1307, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 1102, 493, 2368, 494, 1309, 496, - 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 1103, 0, 0, 0, 0, 0, 0, 1104, - 1105, 1106, 0, 0, 0, 0, 1107, 0, 1108, 0, - 0, 0, 0, 0, 1109, 1110, 1111, 1112, 1272, 1062, + 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, + 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, + 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, + 282, 283, 284, 285, 286, 287, 1088, 288, 289, 290, + 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 1089, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 1090, 325, 1091, 327, + 328, 329, 330, 1092, 331, 332, 333, 334, 1093, 800, + 336, 1094, 338, 339, 340, 0, 341, 342, 0, 0, + 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, + 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 406, 407, 408, 409, 1097, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 433, 434, 435, 1098, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 1099, + 1100, 0, 0, 466, 467, 806, 469, 807, 1101, 471, + 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 1102, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 1103, 493, 0, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 1104, 0, 0, 0, 0, 0, 0, + 1105, 1106, 1107, 0, 0, 0, 0, 1108, 0, 1109, + 0, 0, 0, 0, 1110, 1111, 1112, 1113, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, - 0, 0, 1274, 0, 1068, 0, 0, 1275, 131, 132, - 0, 1276, 134, 135, 1277, 137, 138, 139, 140, 1069, - 1278, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, - 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, - 158, 159, 160, 161, 796, 0, 1279, 0, 1280, 165, - 166, 167, 168, 169, 1281, 171, 172, 173, 0, 174, - 175, 176, 177, 178, 179, 0, 1282, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 1076, 192, 193, - 1077, 195, 1078, 196, 0, 197, 198, 199, 200, 201, - 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, - 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, - 216, 217, 0, 218, 219, 220, 221, 1080, 223, 224, - 225, 226, 227, 228, 798, 1081, 230, 0, 231, 232, - 1082, 234, 0, 235, 0, 236, 1284, 0, 1285, 239, - 240, 1286, 1287, 243, 244, 245, 0, 1083, 1084, 248, - 249, 0, 250, 251, 252, 253, 254, 255, 256, 1288, - 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, - 267, 268, 0, 269, 1289, 271, 272, 273, 274, 275, - 276, 1085, 1086, 0, 1087, 0, 280, 1290, 1291, 283, - 1292, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 1293, 293, 1294, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 1295, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 1089, 1296, 1090, 327, 328, 329, 330, - 1091, 331, 332, 1297, 334, 1092, 800, 336, 1093, 338, - 339, 340, 0, 341, 342, 0, 0, 1094, 344, 345, - 0, 0, 346, 347, 348, 1298, 350, 1299, 802, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 803, 1300, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 1095, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 1301, 407, 408, 409, 1096, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 1302, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 1303, 434, 435, 1097, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 1304, - 452, 805, 0, 0, 454, 455, 0, 456, 1305, 458, - 459, 460, 461, 462, 0, 463, 1098, 1099, 0, 0, - 466, 467, 806, 469, 807, 1100, 471, 472, 1306, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 1307, - 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 1102, 493, 0, 494, 1309, 496, 497, 498, - 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 1103, 0, 0, 0, 0, 0, 0, 1104, 1105, 1106, - 0, 0, 0, 0, 1107, 0, 1108, 2423, 0, 0, - 0, 0, 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, - 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 125, 126, -1168, 127, 128, 129, 0, 0, 0, - 0, -1168, 1068, 0, 0, 130, 131, 132, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 1069, 142, 1070, - 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, - 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, - 160, 161, 796, 0, 797, 0, 1075, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 1076, 192, 193, 1077, 195, - 1078, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, - 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, - 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, - 227, 228, 798, 1081, 230, 0, 231, 232, 1082, 234, - 0, 235, 0, 236, 237, 0, 238, 239, 240, 241, - 242, 243, 244, 245, 0, 1083, 1084, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, - 1086, 0, 1087, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 292, 293, - 294, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 1088, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 1089, 325, 1090, 327, 328, 329, 330, 1091, 331, - 332, 333, 334, 1092, 800, 336, 1093, 338, 339, 340, - 0, 341, 342, 0, 0, 1094, 344, 345, 0, 0, - 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 1095, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 406, 407, - 408, 409, 1096, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 433, 434, - 435, 1097, 437, -1168, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, - 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, - 461, 462, 0, 463, 1098, 1099, 0, 0, 466, 467, - 806, 469, 807, 1100, 471, 472, 808, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 1101, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 1102, 493, 0, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 1103, 0, - 0, 0, 0, 0, 0, 1104, 1105, 1106, 0, 0, - 0, 0, 1107, 0, 1108, 0, 0, 0, 0, 0, - 1109, 1110, 1111, 1112, 1272, 1062, 826, 1063, 1064, 1065, - 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 127, 128, 129, 0, 0, 0, 1274, 0, - 1068, 0, 0, 1275, 131, 132, 0, 1276, 134, 135, - 1277, 137, 138, 139, 140, 1069, 1278, 1070, 1071, 0, - 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, - 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, - 796, 0, 1279, 0, 1280, 165, 166, 167, 168, 169, - 1281, 171, 172, 173, 0, 174, 175, 176, 177, 178, - 179, 0, 1282, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, - 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, - 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, - 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, - 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, - 798, 1081, 230, 0, 231, 232, 1082, 234, 0, 235, - 0, 236, 1284, 0, 1285, 239, 240, 1286, 1287, 243, - 244, 245, 0, 1083, 1084, 248, 249, 0, 250, 251, - 252, 253, 254, 255, 256, 1288, 258, 259, 260, 261, - 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, - 1289, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, - 1087, 0, 280, 1290, 1291, 283, 1292, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 1293, 293, 1294, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 1295, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 1089, - 1296, 1090, 327, 328, 329, 330, 1091, 331, 332, 1297, - 334, 1092, 800, 336, 1093, 338, 339, 340, 0, 341, - 342, 0, 0, 1094, 344, 345, 0, 0, 346, 347, - 348, 1298, 350, 1299, 802, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, - 0, 365, 366, 803, 1300, 369, 370, 371, 372, 373, - 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 1095, 387, 388, 389, 390, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 1301, 407, 408, 409, - 1096, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 1302, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 1303, 434, 435, 1097, - 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 1304, 452, 805, 0, 0, - 454, 455, 0, 456, 1305, 458, 459, 460, 461, 462, - 0, 463, 1098, 1099, 0, 0, 466, 467, 806, 469, - 807, 1100, 471, 472, 1306, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 1307, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 1102, 493, - 0, 494, 1309, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 1103, 0, 0, 0, - 0, 0, 0, 1104, 1105, 1106, 0, 0, 0, 0, - 1107, 0, 1108, 3224, 0, 0, 0, 0, 1109, 1110, - 1111, 1112, 1272, 1062, 826, 1063, 1064, 1065, 1066, 1067, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, - 127, 128, 129, 0, 0, 0, 1274, 0, 1068, 0, - 0, 1275, 131, 132, 0, 1276, 134, 135, 1277, 137, - 138, 139, 140, 1069, 1278, 1070, 1071, 0, 145, 146, - 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, - 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, - 1279, 0, 1280, 165, 166, 167, 168, 169, 1281, 171, - 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, - 1282, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, - 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, - 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, - 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, - 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, - 230, 0, 231, 232, 1082, 234, 0, 235, 0, 236, - 1284, 0, 1285, 239, 240, 1286, 1287, 243, 244, 245, - 0, 1083, 1084, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 1288, 258, 259, 260, 261, 0, 262, - 263, 264, 265, 266, 267, 268, 0, 269, 1289, 271, - 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, - 280, 1290, 1291, 283, 1292, 285, 286, 287, 288, 289, - 290, 0, 0, 291, 1293, 293, 1294, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 1295, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 1089, 1296, 1090, - 327, 328, 329, 330, 1091, 331, 332, 1297, 334, 1092, - 800, 336, 1093, 338, 339, 340, 0, 341, 342, 0, - 0, 1094, 344, 345, 0, 0, 346, 347, 348, 1298, - 350, 1299, 802, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, - 366, 803, 1300, 369, 370, 371, 372, 373, 374, 0, - 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 1095, 387, 388, 389, 390, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 1301, 407, 408, 409, 1096, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 1302, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 0, 1303, 434, 435, 1097, 437, 0, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 1304, 452, 805, 0, 0, 454, 455, - 0, 456, 1305, 458, 459, 460, 461, 462, 0, 463, - 1098, 1099, 0, 0, 466, 467, 806, 469, 807, 1100, - 471, 472, 1306, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 1307, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 1102, 493, 0, 494, - 1309, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 1103, 0, 0, 0, 0, 0, - 0, 1104, 1105, 1106, 0, 0, 0, 0, 1107, 0, - 1108, 0, 0, 0, 0, 0, 1109, 1110, 1111, 1112, - 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 1732, 127, 128, - 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, - 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, - 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, - 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, - 1075, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 1076, - 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, - 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, - 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, - 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, - 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, - 231, 232, 1082, 234, 0, 235, 0, 236, 237, 0, - 238, 239, 240, 241, 242, 243, 244, 245, 0, 1083, - 1084, 248, 249, 0, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, - 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, + 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, + 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, + 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, + 0, 158, 159, 160, 161, 796, 0, 797, 0, 1075, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, + 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 1076, 192, + 193, 1077, 195, 1078, 196, 0, 197, 198, 199, 200, + 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, + 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, + 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, + 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, + 232, 1082, 234, 0, 235, 0, 236, 237, 1461, 238, + 239, 240, 241, 242, 243, 244, 245, 0, 1083, 1084, + 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, + 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, + 283, 284, 285, 286, 287, 1088, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 1088, 304, 305, 306, 307, 308, + 299, 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 1089, 325, 1090, 327, 328, - 329, 330, 1091, 331, 332, 333, 334, 1092, 800, 336, - 1093, 338, 339, 340, 0, 341, 342, 0, 0, 1094, + 319, 320, 321, 322, 323, 1090, 325, 1091, 327, 328, + 329, 330, 1092, 331, 332, 333, 334, 1093, 800, 336, + 1094, 338, 339, 340, 0, 341, 342, 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 1095, 387, 388, 389, 390, 0, 391, 392, 393, 394, + 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 406, 407, 408, 409, 1096, 411, 412, 413, + 404, 405, 406, 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 433, 434, 435, 1097, 437, 0, 438, 439, + 432, 0, 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, - 457, 458, 459, 460, 461, 462, 0, 463, 1098, 1099, - 0, 0, 466, 467, 806, 469, 807, 1100, 471, 472, + 457, 458, 459, 460, 461, 462, 0, 463, 1099, 1100, + 0, 0, 466, 467, 806, 469, 807, 1101, 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 1101, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 1102, 493, 0, 494, 495, 496, + 481, 1102, 0, 482, 483, 484, 485, 0, 486, 487, + 488, 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 1103, 0, 0, 0, 0, 0, 0, 1104, - 1105, 1106, 0, 0, 0, 0, 1107, 0, 1108, 0, - 0, 0, 0, 0, 1109, 1110, 1111, 1112, 118, 1747, - 826, 1063, 1064, 1065, 1748, 1067, 0, 0, 0, 0, + 523, 524, 1104, 0, 0, 0, 0, 0, 0, 1105, + 1106, 1107, 0, 0, 0, 0, 1108, 0, 1109, 0, + 0, 0, 0, 1110, 1111, 1112, 1113, 118, 1062, 826, + 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 1749, 127, 128, 129, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, @@ -6086,38 +6217,91 @@ static const yytype_int16 yytable[] = 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 0, 0, 291, + 284, 285, 286, 287, 1088, 288, 289, 290, 0, 0, + 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 1090, 325, 1091, 327, 328, 329, + 330, 1092, 331, 332, 333, 334, 1093, 800, 336, 1094, + 338, 339, 340, 0, 341, 342, 0, 0, 1095, 344, + 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 1096, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 406, 407, 408, 409, 1097, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 0, 433, 434, 435, 1098, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 1099, 1100, 0, + 0, 466, 467, 806, 469, 807, 1101, 471, 472, 808, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 1102, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 1104, 0, 0, 0, 0, 0, 0, 1105, 1106, + 1107, 0, 0, 0, 0, 1108, 0, 1109, 2125, 0, + 0, 0, 1110, 1111, 1112, 1113, 118, 1062, 826, 1063, + 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, + 0, 0, 2747, 0, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, + 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 1069, 142, + 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, + 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, + 159, 160, 161, 796, 0, 797, 0, 1075, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 1076, 192, 193, 1077, + 195, 1078, 196, 0, 197, 198, 199, 200, 201, 202, + 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, + 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, + 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, + 226, 227, 228, 798, 1081, 230, 0, 231, 232, 1082, + 234, 0, 235, 0, 236, 237, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 0, 1083, 1084, 248, 249, + 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, 284, + 285, 286, 287, 1088, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 1088, 304, 305, 306, 307, 308, 309, 310, + 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 1089, 325, 1090, 327, 328, 329, 330, - 1091, 331, 332, 333, 334, 1092, 800, 336, 1093, 338, - 339, 340, 0, 341, 342, 0, 0, 1094, 344, 345, + 321, 322, 323, 1090, 325, 1091, 327, 328, 329, 330, + 1092, 331, 332, 333, 334, 1093, 800, 336, 1094, 338, + 339, 340, 0, 341, 342, 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 1095, 387, + 379, 380, 0, 381, 382, 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 406, 407, 408, 409, 1096, 411, 412, 413, 414, 415, + 406, 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 433, 434, 435, 1097, 437, 0, 438, 439, 440, 441, + 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, - 459, 460, 461, 462, 0, 463, 1098, 1099, 0, 0, - 466, 467, 806, 469, 807, 1100, 471, 472, 808, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 1101, + 459, 460, 461, 462, 0, 463, 1099, 1100, 0, 0, + 466, 467, 806, 469, 807, 1101, 471, 472, 808, 474, + 475, 476, 477, 478, 0, 0, 479, 480, 481, 1102, 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 1102, 493, 0, 494, 495, 496, 497, 498, + 490, 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 1103, 0, 0, 0, 0, 0, 0, 1104, 1105, 1106, - 0, 0, 0, 0, 1107, 0, 1108, 0, 0, 0, - 0, 0, 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, - 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, + 1104, 0, 0, 0, 0, 0, 0, 1105, 1106, 1107, + 0, 0, 0, 0, 1108, 0, 1109, 0, 0, 0, + 0, 1110, 1111, 1112, 1113, 118, 1062, 826, 1063, 1064, + 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, @@ -6133,53 +6317,106 @@ static const yytype_int16 yytable[] = 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, 232, 1082, 234, - 0, 235, 0, 236, 237, 1459, 238, 239, 240, 241, + 0, 235, 0, 236, 237, 0, 238, 239, 240, 241, 242, 243, 244, 245, 0, 1083, 1084, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 292, 293, + 286, 287, 1088, 288, 289, 290, 0, 0, 291, 292, + 293, 294, 0, 295, 296, 297, 298, 299, 300, 301, + 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 1090, 325, 1091, 327, 328, 329, 330, 1092, + 331, 332, 333, 334, 1093, 800, 336, 1094, 338, 339, + 340, 0, 341, 342, 0, 0, 1095, 344, 345, 0, + 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 1096, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 406, + 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 433, + 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 805, 0, 0, 454, 455, 2809, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 1099, 1100, 0, 0, 466, + 467, 806, 469, 807, 1101, 471, 472, 808, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 481, 1102, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 1104, + 0, 0, 0, 0, 0, 0, 1105, 1106, 1107, 0, + 0, 0, 0, 1108, 0, 1109, 0, 0, 0, 0, + 1110, 1111, 1112, 1113, 118, 1062, 826, 1063, 1064, 1065, + 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, + 0, 1068, 0, 0, 130, 131, 132, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 1069, 142, 1070, 1071, + 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, + 152, 153, 154, 1073, 1074, 157, 0, 158, 159, 160, + 161, 796, 0, 797, 0, 1075, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, + 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, + 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, + 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, + 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, + 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, + 228, 798, 1081, 230, 0, 231, 232, 1082, 234, 0, + 235, 0, 236, 237, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 0, 1083, 1084, 248, 249, 0, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, + 0, 1087, 0, 280, 281, 282, 283, 284, 285, 286, + 287, 1088, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 1088, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 1089, 325, 1090, 327, 328, 329, 330, 1091, 331, - 332, 333, 334, 1092, 800, 336, 1093, 338, 339, 340, - 0, 341, 342, 0, 0, 1094, 344, 345, 0, 0, + 323, 1090, 325, 1091, 327, 328, 329, 330, 1092, 331, + 332, 333, 334, 1093, 800, 336, 1094, 338, 339, 340, + 0, 341, 342, 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 1095, 387, 388, 389, + 0, 381, 382, 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, 406, 407, - 408, 409, 1096, 411, 412, 413, 414, 415, 416, 417, + 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, 433, 434, - 435, 1097, 437, 0, 438, 439, 440, 441, 442, 443, + 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, - 461, 462, 0, 463, 1098, 1099, 0, 0, 466, 467, - 806, 469, 807, 1100, 471, 472, 808, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 1101, 0, 482, + 461, 462, 0, 463, 1099, 1100, 0, 0, 466, 467, + 806, 469, 807, 1101, 471, 472, 808, 474, 475, 476, + 477, 478, 0, 0, 479, 480, 481, 1102, 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 1102, 493, 0, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, + 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 0, 2936, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 1103, 0, - 0, 0, 0, 0, 0, 1104, 1105, 1106, 0, 0, - 0, 0, 1107, 0, 1108, 0, 0, 0, 0, 0, - 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, 1064, 1065, - 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 521, 522, 523, 524, 1104, 0, + 0, 0, 0, 0, 0, 1105, 1106, 1107, 0, 0, + 0, 0, 1108, 0, 1109, 0, 0, 0, 0, 1110, + 1111, 1112, 1113, 118, 1062, 826, 1063, 1064, 1065, 1066, + 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, + 126, 3170, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, 1075, 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, 178, - 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, + 179, 0, 180, 181, 3171, 183, 184, 185, 186, 187, 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, @@ -6187,42 +6424,95 @@ static const yytype_int16 yytable[] = 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, 232, 1082, 234, 0, 235, 0, 236, 237, 0, 238, 239, 240, 241, 242, 243, - 244, 245, 0, 1083, 1084, 248, 249, 0, 250, 251, + 244, 245, 0, 3172, 1084, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, 284, 285, 286, 287, + 1088, 288, 289, 290, 0, 0, 291, 292, 293, 294, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 1089, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 1090, 325, 1091, 327, 328, 329, 330, 1092, 331, 332, + 333, 334, 1093, 800, 336, 1094, 338, 339, 340, 0, + 341, 342, 0, 0, 1095, 344, 345, 0, 0, 346, + 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 1096, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 406, 407, 408, + 3173, 1097, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 0, 433, 434, 435, + 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, + 0, 454, 455, 0, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 1099, 1100, 0, 0, 466, 467, 806, + 469, 807, 1101, 471, 472, 808, 474, 475, 476, 477, + 478, 0, 0, 479, 480, 481, 1102, 0, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 491, 1103, + 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 1104, 0, 0, + 0, 0, 0, 0, 1105, 1106, 1107, 0, 0, 0, + 0, 1108, 0, 3174, 0, 0, 0, 0, 1110, 1111, + 1112, 1113, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, + 0, 0, 0, 0, 0, 0, 0, 0, 3402, 0, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, + 0, 0, 130, 131, 132, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 1069, 142, 1070, 1071, 0, 145, + 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, + 154, 1073, 1074, 157, 0, 158, 159, 160, 161, 796, + 0, 797, 0, 1075, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, + 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, + 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, + 205, 206, 0, 0, 207, 208, 1079, 210, 211, 0, + 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, + 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, + 1081, 230, 0, 231, 232, 1082, 234, 0, 235, 0, + 236, 237, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 0, 1083, 1084, 248, 249, 0, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, + 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, + 0, 280, 281, 282, 283, 284, 285, 286, 287, 1088, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 1088, 304, + 295, 296, 297, 298, 299, 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 1089, - 325, 1090, 327, 328, 329, 330, 1091, 331, 332, 333, - 334, 1092, 800, 336, 1093, 338, 339, 340, 0, 341, - 342, 0, 0, 1094, 344, 345, 0, 0, 346, 347, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 1090, + 325, 1091, 327, 328, 329, 330, 1092, 331, 332, 333, + 334, 1093, 800, 336, 1094, 338, 339, 340, 0, 341, + 342, 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 1095, 387, 388, 389, 390, 0, + 382, 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, 406, 407, 408, 409, - 1096, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 433, 434, 435, 1097, + 428, 429, 430, 431, 432, 0, 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, 461, 462, - 0, 463, 1098, 1099, 0, 0, 466, 467, 806, 469, - 807, 1100, 471, 472, 808, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 1101, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 1102, 493, + 0, 463, 1099, 1100, 0, 0, 466, 467, 806, 469, + 807, 1101, 471, 472, 808, 474, 475, 476, 477, 478, + 0, 0, 479, 480, 481, 1102, 0, 482, 483, 484, + 485, 0, 486, 487, 488, 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 1103, 0, 0, 0, - 0, 0, 0, 1104, 1105, 1106, 0, 0, 0, 0, - 1107, 0, 1108, 2120, 0, 0, 0, 0, 1109, 1110, - 1111, 1112, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, + 519, 520, 521, 522, 523, 524, 1104, 0, 0, 0, + 0, 0, 0, 1105, 1106, 1107, 0, 0, 0, 0, + 1108, 0, 1109, 0, 0, 0, 0, 1110, 1111, 1112, + 1113, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, @@ -6244,38 +6534,91 @@ static const yytype_int16 yytable[] = 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 280, 281, 282, 283, 284, 285, 286, 287, 1088, 288, + 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, + 296, 297, 298, 299, 300, 301, 302, 1089, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 1090, 325, + 1091, 327, 328, 329, 330, 1092, 331, 332, 333, 334, + 1093, 800, 336, 1094, 338, 339, 340, 0, 341, 342, + 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, + 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, + 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 406, 407, 408, 409, 1097, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 0, 433, 434, 435, 1098, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, + 455, 0, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 1099, 1100, 0, 0, 466, 467, 806, 469, 807, + 1101, 471, 472, 808, 474, 475, 476, 477, 478, 0, + 0, 479, 480, 481, 1102, 0, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 491, 1103, 493, 0, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 1104, 0, 0, 0, 0, + 0, 0, 1105, 1106, 1107, 0, 0, 0, 0, 1108, + 0, 1109, 0, 0, 0, 0, 1110, 1111, 1112, 1113, + 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, + 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, + 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, + 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, + 1074, 157, 0, 158, 159, 160, 161, 796, 0, 797, + 0, 1075, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, 198, + 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, + 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, + 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, + 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, + 0, 231, 232, 1082, 234, 0, 235, 0, 236, 237, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 0, + 1083, 1084, 248, 249, 0, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, + 281, 282, 283, 284, 285, 286, 287, 1088, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 1088, 304, 305, 306, + 297, 298, 299, 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 1089, 325, 1090, - 327, 328, 329, 330, 1091, 331, 332, 333, 334, 1092, - 800, 336, 1093, 338, 339, 340, 0, 341, 342, 0, - 0, 1094, 344, 345, 0, 0, 346, 347, 348, 349, + 317, 318, 319, 320, 321, 322, 323, 1090, 325, 1091, + 327, 328, 329, 330, 1092, 331, 332, 333, 334, 1093, + 800, 336, 1094, 338, 339, 340, 0, 341, 342, 0, + 0, 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 1095, 387, 388, 389, 390, 0, 391, 392, + 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 406, 407, 408, 409, 1096, 411, + 403, 0, 404, 405, 406, 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 0, 433, 434, 435, 1097, 437, 0, + 430, 431, 432, 0, 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, 461, 462, 0, 463, - 1098, 1099, 0, 0, 466, 467, 806, 469, 807, 1100, + 1099, 1100, 0, 0, 466, 467, 806, 469, 807, 1101, 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 1101, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 1102, 493, 0, 494, + 479, 480, 481, 1102, 0, 482, 483, 484, 485, 0, + 486, 487, 488, 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 1103, 0, 0, 0, 0, 0, - 0, 1104, 1105, 1106, 0, 0, 0, 0, 1107, 0, - 1108, 0, 0, 0, 0, 2741, 1109, 1110, 1111, 1112, - 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, + 521, 522, 523, 524, 1104, 0, 0, 0, 0, 0, + 0, 1755, 1756, 1107, 0, 0, 0, 0, 1108, 0, + 1109, 0, 0, 0, 0, 1110, 1111, 1112, 1113, 118, + 2267, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, @@ -6297,38 +6640,91 @@ static const yytype_int16 yytable[] = 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 0, + 282, 283, 284, 285, 286, 287, 1088, 288, 289, 290, + 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 1089, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 1090, 325, 1091, 327, + 328, 329, 330, 1092, 331, 332, 333, 334, 1093, 800, + 336, 1094, 338, 339, 340, 0, 341, 342, 0, 0, + 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, + 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 406, 407, 408, 409, 1097, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 433, 434, 435, 1098, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 1099, + 1100, 0, 0, 466, 467, 806, 469, 807, 1101, 471, + 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 1102, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 1103, 493, 0, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 1104, 0, 0, 0, 0, 0, 0, + 1105, 1106, 1107, 0, 0, 0, 0, 1108, 0, 1109, + 0, 0, 0, 0, 1110, 1111, 1112, 1113, 118, 1062, + 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, + 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, + 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, + 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, + 0, 158, 159, 160, 161, 796, 0, 797, 0, 1075, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, + 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 1076, 192, + 193, 1077, 195, 1078, 196, 0, 197, 198, 199, 200, + 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, + 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, + 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, + 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, + 232, 1082, 234, 0, 235, 0, 236, 237, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 0, 1083, 1084, + 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, + 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, + 283, 284, 285, 286, 287, 1088, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 1088, 304, 305, 306, 307, 308, + 299, 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 1089, 325, 1090, 327, 328, - 329, 330, 1091, 331, 332, 333, 334, 1092, 800, 336, - 1093, 338, 339, 340, 0, 341, 342, 0, 0, 1094, + 319, 320, 321, 322, 323, 1090, 325, 1091, 327, 328, + 329, 330, 1092, 331, 332, 333, 334, 1093, 800, 336, + 1094, 338, 339, 340, 0, 341, 342, 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 1095, 387, 388, 389, 390, 0, 391, 392, 393, 394, + 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 406, 407, 408, 409, 1096, 411, 412, 413, + 404, 405, 406, 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 433, 434, 435, 1097, 437, 0, 438, 439, + 432, 0, 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 805, 0, 0, 454, 455, 2802, 456, - 457, 458, 459, 460, 461, 462, 0, 463, 1098, 1099, - 0, 0, 466, 467, 806, 469, 807, 1100, 471, 472, + 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, + 457, 458, 459, 460, 461, 462, 0, 463, 1099, 1100, + 0, 0, 466, 467, 806, 469, 807, 1101, 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 1101, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 1102, 493, 0, 494, 495, 496, + 481, 1102, 0, 482, 483, 484, 485, 0, 486, 487, + 488, 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 1103, 0, 0, 0, 0, 0, 0, 1104, - 1105, 1106, 0, 0, 0, 0, 1107, 0, 1108, 0, - 0, 0, 0, 0, 1109, 1110, 1111, 1112, 118, 1062, - 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, + 523, 524, 1104, 0, 0, 0, 0, 0, 0, 1105, + 2364, 1107, 0, 0, 0, 0, 1108, 0, 1109, 0, + 0, 0, 0, 1110, 1111, 1112, 1113, 118, 1062, 826, + 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, @@ -6350,47 +6746,100 @@ static const yytype_int16 yytable[] = 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 292, 293, 294, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 1088, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 1089, 325, 1090, 327, 328, 329, 330, - 1091, 331, 332, 333, 334, 1092, 800, 336, 1093, 338, - 339, 340, 0, 341, 342, 0, 0, 1094, 344, 345, + 284, 285, 286, 287, 1088, 288, 289, 290, 0, 0, + 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 1090, 325, 1091, 327, 328, 329, + 330, 1092, 331, 332, 333, 334, 1093, 800, 336, 1094, + 338, 339, 340, 0, 341, 342, 0, 0, 1095, 344, + 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 1096, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 406, 407, 408, 409, 1097, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 0, 433, 434, 435, 1098, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 1099, 1100, 0, + 0, 466, 467, 806, 469, 807, 1101, 471, 472, 808, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 1102, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 1104, 0, 0, 0, 0, 0, 0, 1105, 1106, + 1107, 0, 0, 0, 0, 1108, 0, 2595, 0, 0, + 0, 0, 1110, 1111, 1112, 1113, 118, 1062, 826, 1063, + 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, + 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 1069, 142, + 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, + 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, + 159, 160, 161, 796, 0, 797, 0, 1075, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 1076, 192, 193, 1077, + 195, 1078, 196, 0, 197, 198, 199, 200, 201, 202, + 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, + 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, + 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, + 226, 227, 228, 798, 1081, 230, 0, 231, 232, 1082, + 234, 0, 235, 0, 236, 237, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 0, 1083, 1084, 248, 249, + 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, 284, + 285, 286, 287, 1088, 288, 289, 290, 0, 0, 291, + 292, 293, 294, 0, 295, 296, 297, 298, 299, 300, + 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 1090, 325, 1091, 327, 328, 329, 330, + 1092, 331, 332, 333, 334, 1093, 800, 336, 1094, 338, + 339, 340, 0, 341, 342, 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 1095, 387, + 379, 380, 0, 381, 382, 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 406, 407, 408, 409, 1096, 411, 412, 413, 414, 415, + 406, 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 433, 434, 435, 1097, 437, 0, 438, 439, 440, 441, + 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, - 459, 460, 461, 462, 0, 463, 1098, 1099, 0, 0, - 466, 467, 806, 469, 807, 1100, 471, 472, 808, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 1101, + 459, 460, 461, 462, 0, 463, 1099, 1100, 0, 0, + 466, 467, 806, 469, 807, 1101, 471, 472, 808, 474, + 475, 476, 477, 478, 0, 0, 479, 480, 481, 1102, 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 1102, 493, 0, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 0, 2930, 503, 0, 0, 504, + 490, 491, 1103, 493, 0, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 1103, 0, 0, 0, 0, 0, 0, 1104, 1105, 1106, - 0, 0, 0, 0, 1107, 0, 1108, 0, 0, 0, - 0, 0, 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, - 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, + 1104, 0, 0, 0, 0, 0, 0, 1105, 3231, 1107, + 0, 0, 0, 0, 1108, 0, 1109, 0, 0, 0, + 0, 1110, 1111, 1112, 1113, 118, 1062, 826, 1063, 1064, + 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 3160, 127, 128, 129, 0, 0, 0, + 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, 1075, 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 180, 181, 3161, 183, 184, 185, + 177, 178, 179, 0, 180, 181, 3171, 183, 184, 185, 186, 187, 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, @@ -6398,43 +6847,96 @@ static const yytype_int16 yytable[] = 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, 232, 1082, 234, 0, 235, 0, 236, 237, 0, 238, 239, 240, 241, - 242, 243, 244, 245, 0, 3162, 1084, 248, 249, 0, + 242, 243, 244, 245, 0, 3172, 1084, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 292, 293, + 286, 287, 1088, 288, 289, 290, 0, 0, 291, 292, + 293, 294, 0, 295, 296, 297, 298, 299, 300, 301, + 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 1090, 325, 1091, 327, 328, 329, 330, 1092, + 331, 332, 333, 334, 1093, 800, 336, 1094, 338, 339, + 340, 0, 341, 342, 0, 0, 1095, 344, 345, 0, + 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 1096, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 406, + 407, 408, 3173, 1097, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 433, + 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 805, 0, 0, 454, 455, 0, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 1099, 1100, 0, 0, 466, + 467, 806, 469, 807, 1101, 471, 472, 808, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 481, 1102, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 1104, + 0, 0, 0, 0, 0, 0, 1105, 1106, 1107, 0, + 0, 0, 0, 1108, 0, 3174, 0, 0, 0, 0, + 1110, 1111, 1112, 1113, 118, 1062, 826, 1063, 1064, 1065, + 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, + 0, 1068, 0, 0, 130, 131, 132, 0, 133, 134, + 135, 136, 137, 138, 139, 3649, 1069, 142, 1070, 1071, + 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, + 152, 153, 154, 1073, 1074, 157, 0, 158, 159, 160, + 161, 796, 0, 797, 0, 1075, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, + 178, 179, 0, 180, 181, 182, 3650, 184, 185, 186, + 187, 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, + 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, + 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, + 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, + 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, + 228, 798, 1081, 230, 0, 231, 232, 1082, 234, 0, + 235, 0, 236, 237, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 0, 1083, 1084, 248, 249, 0, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, + 0, 1087, 0, 280, 281, 282, 283, 284, 285, 286, + 287, 1088, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 1088, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 1089, 325, 1090, 327, 328, 329, 330, 1091, 331, - 332, 333, 334, 1092, 800, 336, 1093, 338, 339, 340, - 0, 341, 342, 0, 0, 1094, 344, 345, 0, 0, + 323, 1090, 325, 1091, 327, 328, 329, 330, 1092, 331, + 332, 333, 334, 1093, 800, 336, 1094, 338, 339, 340, + 0, 341, 342, 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 1095, 387, 388, 389, + 0, 381, 382, 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, 406, 407, - 408, 3163, 1096, 411, 412, 413, 414, 415, 416, 417, + 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, 433, 434, - 435, 1097, 437, 0, 438, 439, 440, 441, 442, 443, + 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, - 461, 462, 0, 463, 1098, 1099, 0, 0, 466, 467, - 806, 469, 807, 1100, 471, 472, 808, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 1101, 0, 482, + 461, 462, 0, 463, 1099, 1100, 0, 0, 466, 467, + 806, 469, 807, 1101, 471, 472, 808, 474, 475, 3651, + 477, 478, 0, 0, 479, 480, 481, 1102, 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 1102, 493, 0, 494, 495, 496, 497, 498, 499, 500, + 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 1103, 0, - 0, 0, 0, 0, 0, 1104, 1105, 1106, 0, 0, - 0, 0, 1107, 0, 3164, 0, 0, 0, 0, 0, - 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, 1064, 1065, - 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 521, 522, 523, 524, 1104, 0, + 0, 0, 0, 0, 0, 1105, 1106, 1107, 0, 0, + 0, 0, 1108, 0, 1109, 0, 0, 0, 0, 1110, + 1111, 1112, 1113, 118, 1062, 826, 1063, 1064, 1065, 1066, + 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, @@ -6443,7 +6945,7 @@ static const yytype_int16 yytable[] = 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, 1075, 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, 178, - 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, + 179, 0, 180, 181, 182, 3650, 184, 185, 186, 187, 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, @@ -6456,37 +6958,90 @@ static const yytype_int16 yytable[] = 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 1088, 304, + 1088, 288, 289, 290, 0, 0, 291, 292, 293, 294, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 1089, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 1090, 325, 1091, 327, 328, 329, 330, 1092, 331, 332, + 333, 334, 1093, 800, 336, 1094, 338, 339, 340, 0, + 341, 342, 0, 0, 1095, 344, 345, 0, 0, 346, + 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 1096, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 406, 407, 408, + 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 0, 433, 434, 435, + 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, + 0, 454, 455, 0, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 1099, 1100, 0, 0, 466, 467, 806, + 469, 807, 1101, 471, 472, 808, 474, 475, 3651, 477, + 478, 0, 0, 479, 480, 481, 1102, 0, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 491, 1103, + 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 1104, 0, 0, + 0, 0, 0, 0, 1105, 1106, 1107, 0, 0, 0, + 0, 1108, 0, 1109, 0, 0, 0, 0, 1110, 1111, + 1112, 1113, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, + 0, 0, 130, 131, 132, 0, 133, 134, 135, 136, + 137, 138, 139, -2142, 1069, 142, 1070, 1071, 0, 145, + 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, + 154, 1073, 1074, 157, 0, 158, 159, 160, 161, 796, + 0, 797, 0, 1075, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, + 0, 180, 181, 182, 3650, 184, 185, 186, 187, 188, + 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, + 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, + 205, 206, 0, 0, 207, 208, 1079, 210, 211, 0, + 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, + 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, + 1081, 230, 0, 231, 232, 1082, 234, 0, 235, 0, + 236, 237, 0, 238, 239, 240, 241, -2142, 243, 244, + 245, 0, 1083, 1084, 248, 249, 0, 250, 251, 252, + 253, 254, 255, 256, -2142, 258, 259, 260, 261, 0, + 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, + 0, 280, 0, 0, 283, 284, 285, 286, 287, 1088, + 288, 289, 290, 0, 0, 291, 292, 293, -2142, 0, + 295, 296, 297, 298, 299, 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 1089, - 325, 1090, 327, 328, 329, 330, 1091, 331, 332, 333, - 334, 1092, 800, 336, 1093, 338, 339, 340, 0, 341, - 342, 0, 0, 1094, 344, 345, 0, 0, 346, 347, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 1090, + 325, 1091, 327, 328, 329, 330, 0, 331, 332, 0, + 334, 1093, 800, 336, 1094, 338, 339, 340, 0, 341, + 342, 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 1095, 387, 388, 389, 390, 0, + 382, 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, 406, 407, 408, 409, - 1096, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 433, 434, 435, 1097, + 428, 429, 430, 431, 432, 0, -2142, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, 461, 462, - 0, 463, 1098, 1099, 0, 0, 466, 467, 806, 469, - 807, 1100, 471, 472, 808, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 1101, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 1102, 493, + 0, 463, 1099, 1100, 0, 0, 466, 467, 806, 469, + 807, 1101, 471, 472, 808, 474, 475, 3651, 477, 478, + 0, 0, 479, 480, 481, 1102, 0, 482, 483, 484, + 485, 0, 486, 487, 488, 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 1103, 0, 0, 0, - 0, 0, 0, 1104, 1105, 1106, 0, 0, 0, 0, - 1107, 0, 1108, 0, 0, 0, 0, 3391, 1109, 1110, - 1111, 1112, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, + 519, 520, 521, 522, 523, 524, -2142, 0, 0, 0, + 0, 0, 0, 1105, 1106, 1107, 0, 0, 0, 0, + 1108, 0, 1109, 0, 0, 0, 0, 1110, 1111, 1112, + 1113, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, @@ -6494,10 +7049,10 @@ static const yytype_int16 yytable[] = 138, 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, - 797, 0, 1075, 165, 166, 167, 168, 169, 170, 171, + 797, 0, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, + 190, 1076, 192, 193, 1077, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, @@ -6508,38 +7063,91 @@ static const yytype_int16 yytable[] = 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 280, 281, 282, 283, 284, 285, 286, 287, 0, 288, + 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, + 296, 297, 298, 299, 300, 301, 302, 1089, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 1090, 325, + 1091, 327, 328, 329, 330, 0, 331, 332, 333, 334, + 1093, 800, 336, 1094, 338, 339, 340, 0, 341, 342, + 0, 0, 1095, 344, 345, 0, 0, 346, 347, 348, + 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, + 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 406, 407, 408, 409, 1097, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 0, 433, 434, 435, 1098, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, + 455, 0, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 1099, 1100, 0, 0, 466, 467, 806, 469, 807, + 1101, 471, 472, 808, 474, 475, 476, 477, 478, 0, + 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 491, 1103, 493, 0, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 0, 0, 1447, 1448, 0, 0, 0, 0, 0, 1108, + 0, 1109, 0, 0, 0, 0, 1110, 1111, 1112, 1113, + 118, 1062, 826, 1063, 1064, 0, 1066, 1067, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, + 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, + 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, + 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, + 1074, 157, 0, 158, 159, 160, 161, 796, 0, 797, + 0, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 1076, 192, 193, 1077, 195, 0, 196, 0, 197, 198, + 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, + 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, + 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, + 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, + 0, 231, 232, 1082, 234, 0, 235, 0, 236, 237, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 0, + 1083, 1084, 248, 249, 0, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, + 281, 282, 283, 284, 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 1088, 304, 305, 306, + 297, 298, 299, 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 1089, 325, 1090, - 327, 328, 329, 330, 1091, 331, 332, 333, 334, 1092, - 800, 336, 1093, 338, 339, 340, 0, 341, 342, 0, - 0, 1094, 344, 345, 0, 0, 346, 347, 348, 349, + 317, 318, 319, 320, 321, 322, 323, 1090, 325, 1091, + 327, 328, 329, 330, 0, 331, 332, 333, 334, 1093, + 800, 336, 1094, 338, 339, 340, 0, 341, 342, 0, + 0, 343, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 1095, 387, 388, 389, 390, 0, 391, 392, + 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 406, 407, 408, 409, 1096, 411, + 403, 0, 404, 405, 406, 407, 408, 409, 2253, 2254, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 0, 433, 434, 435, 1097, 437, 0, + 430, 431, 432, 0, 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, 461, 462, 0, 463, - 1098, 1099, 0, 0, 466, 467, 806, 469, 807, 1100, + 1099, 1100, 0, 0, 466, 467, 806, 469, 807, 1101, 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 1101, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 1102, 493, 0, 494, + 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, + 486, 487, 488, 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 1103, 0, 0, 0, 0, 0, - 0, 1104, 1105, 1106, 0, 0, 0, 0, 1107, 0, - 1108, 0, 0, 0, 0, 0, 1109, 1110, 1111, 1112, - 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, + 521, 522, 523, 524, 0, 0, 0, 0, 0, 0, + 0, 2255, 2256, 0, 0, 0, 0, 0, 1108, 0, + 1109, 0, 0, 0, 0, 1110, 1111, 1112, 1113, 118, + 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, @@ -6547,10 +7155,10 @@ static const yytype_int16 yytable[] = 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, - 1075, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 1076, - 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, + 192, 193, 1077, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, @@ -6560,50 +7168,101 @@ static const yytype_int16 yytable[] = 1084, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, - 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 0, + 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 0, + 282, 283, 284, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 1089, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 1090, 325, 1091, 327, + 328, 329, 330, 0, 331, 332, 333, 334, 1093, 800, + 336, 1094, 338, 339, 340, 0, 341, 342, 0, 0, + 1095, 344, 345, 0, 0, 346, 347, 348, 349, 350, + 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 406, 407, 408, 409, 1097, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 433, 434, 435, 1098, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 1099, + 1100, 0, 0, 466, 467, 806, 469, 807, 1101, 471, + 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 1103, 493, 0, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 0, 0, 0, 0, 0, + 1447, 1448, 0, 0, 0, 0, 0, 1108, 0, 1109, + 0, 0, 0, 0, 1110, 1111, 1112, 1113, 118, 1062, + 826, 1063, 1064, 0, 1066, 1067, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, + 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, + 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, + 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, + 0, 158, 159, 160, 161, 796, 0, 797, 0, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, + 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 1076, 192, + 193, 1077, 195, 0, 196, 0, 197, 198, 199, 200, + 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, + 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, + 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, + 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, + 232, 1082, 234, 0, 235, 0, 236, 237, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 3192, 1083, 1084, + 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, + 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, + 283, 284, 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 1088, 304, 305, 306, 307, 308, + 299, 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 1089, 325, 1090, 327, 328, - 329, 330, 1091, 331, 332, 333, 334, 1092, 800, 336, - 1093, 338, 339, 340, 0, 341, 342, 0, 0, 1094, + 319, 320, 321, 322, 323, 1090, 325, 1091, 327, 328, + 329, 330, 0, 331, 332, 333, 334, 1093, 800, 336, + 1094, 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 1095, 387, 388, 389, 390, 0, 391, 392, 393, 394, + 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 406, 407, 408, 409, 1096, 411, 412, 413, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 433, 434, 435, 1097, 437, 0, 438, 439, + 432, 0, 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, - 457, 458, 459, 460, 461, 462, 0, 463, 1098, 1099, - 0, 0, 466, 467, 806, 469, 807, 1100, 471, 472, + 457, 458, 459, 460, 461, 462, 0, 463, 1099, 1100, + 0, 0, 466, 467, 806, 469, 807, 1101, 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 1101, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 1102, 493, 0, 494, 495, 496, + 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, + 488, 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 1103, 0, 0, 0, 0, 0, 0, 1752, - 1753, 1106, 0, 0, 0, 0, 1107, 0, 1108, 0, - 0, 0, 0, 0, 1109, 1110, 1111, 1112, 118, 2262, - 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, + 523, 524, 0, 0, 0, 0, 0, 118, 1062, 826, + 1063, 1064, 0, 1066, 1067, 0, 1108, 0, 2859, 0, + 0, 0, 0, 1110, 1111, 1112, 1113, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, - 158, 159, 160, 161, 796, 0, 797, 0, 1075, 165, + 158, 159, 160, 161, 796, 0, 797, 0, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 1076, 192, 193, - 1077, 195, 1078, 196, 0, 197, 198, 199, 200, 201, + 1077, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, 223, 224, @@ -6614,42 +7273,91 @@ static const yytype_int16 yytable[] = 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 0, 0, 291, + 284, 285, 286, 287, 0, 288, 289, 290, 0, 0, + 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 1089, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 1090, 325, 1091, 327, 328, 329, + 330, 0, 331, 332, 333, 334, 1093, 800, 336, 1094, + 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, + 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 1096, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 0, 433, 434, 435, 1098, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 1099, 1100, 0, + 0, 466, 467, 806, 469, 807, 1101, 471, 472, 808, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 1103, 493, 0, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 118, 1062, 826, 1063, + 1064, 0, 1066, 1067, 0, 1108, 0, 2859, 0, 0, + 0, 0, 1110, 1111, 1112, 1113, 119, 120, 121, 122, + 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, + 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 1069, 142, + 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, + 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, + 159, 160, 161, 796, 0, 797, 0, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 1076, 192, 193, 1077, + 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, + 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, + 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, + 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, + 226, 227, 228, 798, 1081, 230, 0, 231, 232, 1082, + 234, 0, 235, 0, 236, 237, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 0, 1083, 1084, 248, 249, + 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, 284, + 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 1088, 304, 305, 306, 307, 308, 309, 310, + 301, 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 1089, 325, 1090, 327, 328, 329, 330, - 1091, 331, 332, 333, 334, 1092, 800, 336, 1093, 338, - 339, 340, 0, 341, 342, 0, 0, 1094, 344, 345, + 321, 322, 323, 1090, 325, 1091, 327, 328, 329, 330, + 0, 331, 332, 333, 334, 1093, 800, 336, 1094, 338, + 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 1095, 387, + 379, 380, 0, 381, 382, 383, 384, 385, 1096, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 406, 407, 408, 409, 1096, 411, 412, 413, 414, 415, + 406, 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 433, 434, 435, 1097, 437, 0, 438, 439, 440, 441, + 433, 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, - 459, 460, 461, 462, 0, 463, 1098, 1099, 0, 0, - 466, 467, 806, 469, 807, 1100, 471, 472, 808, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 1101, + 459, 460, 461, 462, 0, 463, 1099, 1100, 0, 0, + 466, 467, 806, 469, 807, 1101, 471, 472, 808, 474, + 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 1102, 493, 0, 494, 495, 496, 497, 498, + 490, 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 1103, 0, 0, 0, 0, 0, 0, 1104, 1105, 1106, - 0, 0, 0, 0, 1107, 0, 1108, 0, 0, 0, - 0, 0, 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, - 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, + 0, 0, 0, 0, 0, 118, 1062, 826, 1063, 1064, + 1065, 1066, 1067, 0, 1108, 0, 1109, 0, 0, 0, + 0, 1110, 1111, 1112, 1113, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 1069, 142, 1070, + 134, 135, 136, 137, 138, 139, 0, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, 1075, 165, 166, 167, @@ -6658,811 +7366,428 @@ static const yytype_int16 yytable[] = 186, 187, 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, - 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, + 210, 211, 0, 212, 213, 214, 0, 215, 0, 217, 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, 231, 232, 1082, 234, 0, 235, 0, 236, 237, 0, 238, 239, 240, 241, - 242, 243, 244, 245, 0, 1083, 1084, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 0, 243, 244, 245, 0, 1083, 1084, 248, 249, 0, + 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, - 1086, 0, 1087, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 292, 293, - 294, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 1088, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 1089, 325, 1090, 327, 328, 329, 330, 1091, 331, - 332, 333, 334, 1092, 800, 336, 1093, 338, 339, 340, - 0, 341, 342, 0, 0, 1094, 344, 345, 0, 0, - 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 1095, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 406, 407, - 408, 409, 1096, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 433, 434, - 435, 1097, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, - 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, - 461, 462, 0, 463, 1098, 1099, 0, 0, 466, 467, - 806, 469, 807, 1100, 471, 472, 808, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 1101, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 1102, 493, 0, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 1103, 0, - 0, 0, 0, 0, 0, 1104, 2359, 1106, 0, 0, - 0, 0, 1107, 0, 1108, 0, 0, 0, 0, 0, - 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, 1064, 1065, - 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, - 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 1069, 142, 1070, 1071, 0, - 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, - 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, - 796, 0, 797, 0, 1075, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 0, 174, 175, 176, 177, 178, - 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, - 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, - 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, - 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, - 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, - 798, 1081, 230, 0, 231, 232, 1082, 234, 0, 235, - 0, 236, 237, 0, 238, 239, 240, 241, 242, 243, - 244, 245, 0, 1083, 1084, 248, 249, 0, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, - 1087, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 1088, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 1089, - 325, 1090, 327, 328, 329, 330, 1091, 331, 332, 333, - 334, 1092, 800, 336, 1093, 338, 339, 340, 0, 341, - 342, 0, 0, 1094, 344, 345, 0, 0, 346, 347, - 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, - 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, - 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 1095, 387, 388, 389, 390, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 406, 407, 408, 409, - 1096, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 433, 434, 435, 1097, - 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, - 454, 455, 0, 456, 457, 458, 459, 460, 461, 462, - 0, 463, 1098, 1099, 0, 0, 466, 467, 806, 469, - 807, 1100, 471, 472, 808, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 1101, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 1102, 493, - 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 1103, 0, 0, 0, - 0, 0, 0, 1104, 1105, 1106, 0, 0, 0, 0, - 1107, 0, 2586, 0, 0, 0, 0, 0, 1109, 1110, - 1111, 1112, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, - 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, - 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, - 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, - 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, - 797, 0, 1075, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 1076, 192, 193, 1077, 195, 1078, 196, 0, 197, - 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, - 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, - 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, - 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, - 230, 0, 231, 232, 1082, 234, 0, 235, 0, 236, - 237, 0, 238, 239, 240, 241, 242, 243, 244, 245, - 0, 1083, 1084, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, - 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 1088, 304, 305, 306, + 1086, 0, 1087, 0, 280, 0, 0, 283, 284, 285, + 286, 287, 1088, 288, 289, 290, 0, 0, 291, 292, + 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, + 302, 1089, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 1090, 325, 1091, 327, 328, 329, 330, 0, + 331, 332, 0, 334, 1093, 800, 336, 1094, 338, 339, + 340, 0, 341, 342, 0, 0, 1095, 344, 345, 0, + 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 1096, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 406, + 407, 408, 409, 1097, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, + 434, 435, 1098, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 805, 0, 0, 454, 455, 0, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 1099, 1100, 0, 0, 466, + 467, 806, 469, 807, 1101, 471, 472, 808, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 481, 1102, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 1103, 493, 0, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 0, 1105, 1106, 1107, 0, + 980, 1376, 826, 1108, 0, 1109, 1066, 0, 0, 0, + 1110, 1111, 1112, 1113, 0, 0, 0, 0, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, + 128, 129, 0, 0, 0, 568, 0, 0, 0, 0, + 573, 131, 132, 0, 575, 134, 135, 576, 137, 138, + 139, 577, 578, 579, 580, 581, 0, 145, 146, 147, + 148, 149, 150, 0, 0, 151, 152, 153, 154, 585, + 586, 157, 0, 158, 159, 160, 161, 588, 0, 590, + 0, 592, 165, 166, 167, 168, 169, 593, 171, 172, + 173, 0, 174, 175, 176, 177, 178, 179, 0, 596, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 598, 192, 193, 599, 195, 0, 196, 0, 197, 198, + 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, + 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, + 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, + 609, 223, 224, 225, 226, 227, 228, 610, 1377, 230, + 0, 231, 232, 613, 234, 0, 235, 0, 236, 616, + 0, 618, 239, 240, 619, 620, 243, 244, 245, 0, + 622, 623, 248, 249, 0, 250, 251, 252, 253, 254, + 255, 256, 625, 258, 259, 260, 261, 0, 262, 263, + 264, 265, 266, 267, 268, 0, 269, 628, 629, 272, + 273, 274, 275, 276, 630, 631, 0, 633, 0, 280, + 635, 636, 283, 637, 285, 286, 287, 0, 288, 289, + 290, 0, 0, 291, 641, 293, 642, 0, 295, 296, + 297, 298, 299, 300, 301, 302, 2448, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 1089, 325, 1090, - 327, 328, 329, 330, 1091, 331, 332, 333, 334, 1092, - 800, 336, 1093, 338, 339, 340, 0, 341, 342, 0, - 0, 1094, 344, 345, 0, 0, 346, 347, 348, 349, - 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, + 317, 318, 319, 320, 321, 322, 323, 645, 646, 647, + 327, 328, 329, 648, 0, 331, 332, 650, 334, 0, + 652, 336, 653, 338, 339, 340, 0, 341, 342, 1378, + 0, 343, 344, 345, 0, 0, 346, 347, 659, 660, + 350, 661, 662, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, - 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, + 366, 667, 668, 369, 370, 669, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 1095, 387, 388, 389, 390, 0, 391, 392, + 384, 385, 672, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 406, 407, 408, 409, 1096, 411, + 403, 0, 404, 405, 675, 407, 408, 409, 676, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 0, 433, 434, 435, 1097, 437, 0, + 422, 423, 0, 678, 424, 425, 426, 427, 428, 429, + 679, 431, 432, 0, 681, 434, 435, 682, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, - 0, 456, 457, 458, 459, 460, 461, 462, 0, 463, - 1098, 1099, 0, 0, 466, 467, 806, 469, 807, 1100, - 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 1101, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 1102, 493, 0, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 1103, 0, 0, 0, 0, 0, - 0, 1104, 3222, 1106, 0, 0, 0, 0, 1107, 0, - 1108, 0, 0, 0, 0, 0, 1109, 1110, 1111, 1112, - 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 448, 449, 450, 684, 452, 685, 0, 0, 454, 455, + 0, 456, 689, 458, 459, 460, 461, 462, 0, 463, + 691, 692, 0, 0, 466, 467, 695, 469, 696, 1379, + 471, 472, 698, 474, 475, 476, 477, 478, 0, 0, + 479, 480, 481, 701, 0, 482, 483, 484, 485, 0, + 486, 487, 488, 489, 490, 704, 705, 493, 0, 494, + 707, 496, 497, 498, 499, 500, 501, 502, 0, 0, + 503, 0, 0, 504, 505, 506, 507, 508, 509, 712, + 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, + 521, 522, 523, 524, 0, 0, 0, 0, 0, 118, + 0, 1380, 1381, 2449, 0, 0, 1067, 0, 2450, 0, + 2451, 0, 0, 0, 0, 0, 0, 0, 1113, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, - 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, + 140, 141, 142, 143, 144, 0, 145, 146, 147, 148, + 149, 150, 1072, 795, 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, - 1075, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, - 3161, 183, 184, 185, 186, 187, 188, 189, 190, 1076, - 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, - 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, - 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, - 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, - 231, 232, 1082, 234, 0, 235, 0, 236, 237, 0, - 238, 239, 240, 241, 242, 243, 244, 245, 0, 3162, - 1084, 248, 249, 0, 250, 251, 252, 253, 254, 255, + 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, + 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 798, 0, 230, 0, + 231, 232, 233, 234, 0, 235, 0, 236, 237, 0, + 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, + 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, - 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 1088, 304, 305, 306, 307, 308, + 274, 275, 276, 277, 278, 0, 279, 0, 280, 281, + 282, 283, 284, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 1089, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 0, 331, 332, 333, 334, 0, 800, + 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, + 343, 344, 345, 0, 0, 346, 347, 348, 349, 350, + 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 433, 434, 435, 436, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 0, 0, 466, 467, 806, 469, 807, 0, 471, + 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 492, 493, 0, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 0, 0, 0, 532, 2007, + 0, 0, 0, 0, 2008, 1067, 0, 1108, 0, 2172, + 0, 0, 0, 0, 1110, 1111, 1112, 1113, 119, 120, + 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, + 141, 0, 143, 144, 0, 145, 146, 147, 148, 149, + 150, 0, 0, 151, 152, 153, 154, 155, 156, 157, + 0, 158, 159, 160, 161, 162, 0, 0, 0, 164, + 165, 166, 167, 168, 169, 0, 171, 172, 173, 0, + 174, 175, 176, 177, 178, 179, 0, 0, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, + 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, + 215, 216, 217, 0, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 231, + 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, + 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, + 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, + 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, + 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, + 283, 0, 285, 286, 287, 0, 288, 289, 290, 0, + 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, + 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 1089, 325, 1090, 327, 328, - 329, 330, 1091, 331, 332, 333, 334, 1092, 800, 336, - 1093, 338, 339, 340, 0, 341, 342, 0, 0, 1094, - 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, - 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, - 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, + 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, + 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, + 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, + 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, + 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 1095, 387, 388, 389, 390, 0, 391, 392, 393, 394, + 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 406, 407, 408, 3163, 1096, 411, 412, 413, + 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 433, 434, 435, 1097, 437, 0, 438, 439, + 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, - 457, 458, 459, 460, 461, 462, 0, 463, 1098, 1099, - 0, 0, 466, 467, 806, 469, 807, 1100, 471, 472, - 808, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 1101, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 1102, 493, 0, 494, 495, 496, + 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, + 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, + 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, + 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, + 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 1103, 0, 0, 0, 0, 0, 0, 1104, - 1105, 1106, 0, 0, 0, 0, 1107, 0, 3164, 0, - 0, 0, 0, 0, 1109, 1110, 1111, 1112, 118, 1062, - 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, - 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, - 0, 133, 134, 135, 136, 137, 138, 139, 3637, 1069, - 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, - 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, - 158, 159, 160, 161, 796, 0, 797, 0, 1075, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, - 175, 176, 177, 178, 179, 0, 180, 181, 182, 3638, - 184, 185, 186, 187, 188, 189, 190, 1076, 192, 193, - 1077, 195, 1078, 196, 0, 197, 198, 199, 200, 201, - 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, - 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, - 216, 217, 0, 218, 219, 220, 221, 1080, 223, 224, - 225, 226, 227, 228, 798, 1081, 230, 0, 231, 232, - 1082, 234, 0, 235, 0, 236, 237, 0, 238, 239, - 240, 241, 242, 243, 244, 245, 0, 1083, 1084, 248, - 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, - 276, 1085, 1086, 0, 1087, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 292, 293, 294, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 1088, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 1089, 325, 1090, 327, 328, 329, 330, - 1091, 331, 332, 333, 334, 1092, 800, 336, 1093, 338, - 339, 340, 0, 341, 342, 0, 0, 1094, 344, 345, - 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 1095, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 406, 407, 408, 409, 1096, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 433, 434, 435, 1097, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, - 459, 460, 461, 462, 0, 463, 1098, 1099, 0, 0, - 466, 467, 806, 469, 807, 1100, 471, 472, 808, 474, - 475, 3639, 477, 478, 0, 0, 479, 480, 481, 1101, - 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 1102, 493, 0, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 1103, 0, 0, 0, 0, 0, 0, 1104, 1105, 1106, - 0, 0, 0, 0, 1107, 0, 1108, 0, 0, 0, - 0, 0, 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, - 1064, 1065, 1066, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, + 523, 524, 0, 0, 0, 532, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1110, 1111, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, - 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 1069, 142, 1070, - 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, - 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, - 160, 161, 796, 0, 797, 0, 1075, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 180, 181, 182, 3638, 184, 185, - 186, 187, 188, 189, 190, 1076, 192, 193, 1077, 195, - 1078, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, + 0, 0, 0, 1016, 0, 0, 131, 132, 0, 0, + 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, + 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, + 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, + 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, + 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, + 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, + 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, - 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, - 227, 228, 798, 1081, 230, 0, 231, 232, 1082, 234, - 0, 235, 0, 236, 237, 0, 238, 239, 240, 241, - 242, 243, 244, 245, 0, 1083, 1084, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + -560, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 0, 230, -560, 231, 232, 233, 234, + -560, 235, 0, 236, 0, 0, 0, 239, 240, 533, + 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, + 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, - 1086, 0, 1087, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 292, 293, - 294, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 1088, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 1089, 325, 1090, 327, 328, 329, 330, 1091, 331, - 332, 333, 334, 1092, 800, 336, 1093, 338, 339, 340, - 0, 341, 342, 0, 0, 1094, 344, 345, 0, 0, - 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 1095, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 406, 407, - 408, 409, 1096, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 433, 434, - 435, 1097, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, - 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, - 461, 462, 0, 463, 1098, 1099, 0, 0, 466, 467, - 806, 469, 807, 1100, 471, 472, 808, 474, 475, 3639, - 477, 478, 0, 0, 479, 480, 481, 1101, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 1102, 493, 0, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 1103, 0, - 0, 0, 0, 0, 0, 1104, 1105, 1106, 0, 0, - 0, 0, 1107, 0, 1108, 0, 0, 0, 0, 0, - 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, 1064, 1065, - 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, - 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, - 136, 137, 138, 139, -2141, 1069, 142, 1070, 1071, 0, - 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, - 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, - 796, 0, 797, 0, 1075, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 0, 174, 175, 176, 177, 178, - 179, 0, 180, 181, 182, 3638, 184, 185, 186, 187, - 188, 189, 190, 1076, 192, 193, 1077, 195, 1078, 196, - 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, - 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, - 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, - 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, - 798, 1081, 230, 0, 231, 232, 1082, 234, 0, 235, - 0, 236, 237, 0, 238, 239, 240, 241, -2141, 243, - 244, 245, 0, 1083, 1084, 248, 249, 0, 250, 251, - 252, 253, 254, 255, 256, -2141, 258, 259, 260, 261, - 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, - 1087, 0, 280, 0, 0, 283, 284, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 292, 293, -2141, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 1088, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 1089, - 325, 1090, 327, 328, 329, 330, 0, 331, 332, 0, - 334, 1092, 800, 336, 1093, 338, 339, 340, 0, 341, - 342, 0, 0, 1094, 344, 345, 0, 0, 346, 347, - 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, - 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, - 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 1095, 387, 388, 389, 390, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 406, 407, 408, 409, - 1096, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, -2141, 434, 435, 1097, - 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, - 454, 455, 0, 456, 457, 458, 459, 460, 461, 462, - 0, 463, 1098, 1099, 0, 0, 466, 467, 806, 469, - 807, 1100, 471, 472, 808, 474, 475, 3639, 477, 478, - 0, 0, 479, 480, 481, 1101, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 1102, 493, - 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, -2141, 0, 0, 0, - 0, 0, 0, 1104, 1105, 1106, 0, 0, 0, 0, - 1107, 0, 1108, 0, 0, 0, 0, 0, 1109, 1110, - 1111, 1112, 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, - 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, - 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, - 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, - 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, - 797, 0, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 1076, 192, 193, 1077, 195, 0, 196, 0, 197, - 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, - 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, - 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, - 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, - 230, 0, 231, 232, 1082, 234, 0, 235, 0, 236, - 237, 0, 238, 239, 240, 241, 242, 243, 244, 245, - 0, 1083, 1084, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, - 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 1088, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 1089, 325, 1090, - 327, 328, 329, 330, 0, 331, 332, 333, 334, 1092, - 800, 336, 1093, 338, 339, 340, 0, 341, 342, 0, - 0, 1094, 344, 345, 0, 0, 346, 347, 348, 349, - 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, - 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, - 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 1095, 387, 388, 389, 390, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 406, 407, 408, 409, 1096, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 0, 433, 434, 435, 1097, 437, 0, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, - 0, 456, 457, 458, 459, 460, 461, 462, 0, 463, - 1098, 1099, 0, 0, 466, 467, 806, 469, 807, 1100, - 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 1102, 493, 0, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 0, 0, 0, 0, 0, 0, - 0, 1445, 1446, 0, 0, 0, 0, 0, 1107, 0, - 1108, 0, 0, 0, 0, 0, 1109, 1110, 1111, 1112, - 118, 1062, 826, 1063, 1064, 0, 1066, 1067, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, + 278, -560, 279, 0, 280, 0, 0, 283, 0, 285, + 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, + 293, 0, -560, 295, 296, 297, 298, 299, 300, 301, + 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, + 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, + 340, -560, 341, 342, 0, 0, 343, 344, 345, 0, + -560, 346, 347, 348, 0, 350, 0, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, + 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, + 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 476, 477, 478, -560, 0, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 532, + 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1185, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, - 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, - 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, - 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, - 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 1076, - 192, 193, 1077, 195, 0, 196, 0, 197, 198, 199, + 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, + 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, + 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, + 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, + 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, + 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, - 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, - 0, 215, 216, 217, 0, 218, 219, 220, 221, 1080, - 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, - 231, 232, 1082, 234, 0, 235, 0, 236, 237, 0, - 238, 239, 240, 241, 242, 243, 244, 245, 0, 1083, - 1084, 248, 249, 0, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, - 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 0, + 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, + 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, + 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, + 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, + 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, + 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, + 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, + 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, + 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 367, 0, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 0, 434, 435, 436, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 535, 452, 453, 0, 0, 454, 455, 0, + 456, 0, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 492, 493, 0, 494, 0, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 980, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2541, + 3388, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 0, 127, 128, 129, 3, 4, 0, 568, 0, + 0, 0, 0, 573, 131, 132, 0, 575, 134, 135, + 576, 137, 138, 139, 577, 578, 579, 580, 581, 0, + 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, + 153, 154, 585, 586, 157, 0, 158, 159, 160, 161, + 588, 0, 590, 0, 592, 165, 166, 167, 168, 169, + 593, 171, 172, 173, 0, 174, 175, 176, 177, 178, + 179, 0, 596, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 598, 192, 193, 599, 195, 0, 196, + 0, 197, 198, 199, 200, 201, 202, 14, 15, 203, + 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, + 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, + 219, 220, 221, 609, 223, 224, 225, 226, 227, 228, + 610, 0, 230, 0, 231, 232, 613, 234, 0, 235, + 0, 236, 616, 23, 618, 239, 240, 619, 620, 243, + 244, 245, 0, 622, 623, 248, 249, 0, 250, 251, + 252, 253, 254, 255, 256, 625, 258, 259, 260, 261, + 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, + 628, 629, 272, 273, 274, 275, 276, 630, 631, 0, + 633, 0, 280, 635, 636, 283, 637, 285, 286, 287, + 0, 288, 289, 290, 0, 0, 291, 641, 293, 642, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 644, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 645, 646, 647, 327, 328, 329, 648, 0, 331, 332, + 650, 334, 0, 652, 336, 653, 338, 339, 340, 0, + 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, + 347, 659, 660, 350, 661, 662, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 26, 27, + 28, 0, 365, 366, 667, 668, 369, 370, 669, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 672, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 675, 407, 408, + 409, 676, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 33, 678, 424, 425, 426, + 427, 428, 429, 679, 431, 432, 35, 681, 434, 435, + 682, 437, 0, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 684, 452, 685, 37, + 0, 454, 455, 38, 456, 689, 458, 459, 460, 461, + 462, 0, 463, 691, 692, 0, 0, 466, 467, 695, + 469, 696, 0, 471, 472, 698, 474, 475, 476, 477, + 478, 0, 0, 479, 480, 481, 701, 40, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 981, 705, + 493, 0, 494, 707, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 44, 504, 505, 506, 507, + 508, 509, 712, 713, 714, 715, 716, 717, 718, 719, + 720, 721, 722, 521, 522, 523, 524, 0, 118, 45, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 46, 0, 0, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, + 0, 0, 0, 0, 0, 0, 0, 0, 130, 131, + 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 0, 145, 146, 147, 148, 149, + 150, 0, 795, 151, 152, 153, 154, 155, 156, 157, + 0, 158, 159, 160, 161, 796, 0, 797, 0, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, + 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 201, 202, 14, 15, 203, 204, 205, 206, 0, 0, + 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, + 215, 216, 217, 0, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 798, 0, 230, 0, 231, + 232, 233, 234, 0, 235, 0, 236, 237, 23, 238, + 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, + 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, + 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, + 283, 284, 285, 286, 287, 0, 288, 289, 290, 799, 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 1088, 304, 305, 306, 307, 308, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 1089, 325, 1090, 327, 328, - 329, 330, 0, 331, 332, 333, 334, 1092, 800, 336, - 1093, 338, 339, 340, 0, 341, 342, 0, 0, 343, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 0, 331, 332, 333, 334, 0, 800, 336, + 337, 338, 339, 340, 0, 341, 342, 0, 801, 343, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, + 362, 363, 364, 26, 27, 28, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 1095, 387, 388, 389, 390, 0, 391, 392, 393, 394, + 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 406, 407, 408, 409, 2248, 2249, 412, 413, + 404, 405, 406, 407, 408, 409, 410, 804, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 433, 434, 435, 1097, 437, 0, 438, 439, + 33, 0, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 35, 433, 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, - 457, 458, 459, 460, 461, 462, 0, 463, 1098, 1099, - 0, 0, 466, 467, 806, 469, 807, 1100, 471, 472, + 450, 451, 452, 805, 37, 0, 454, 455, 38, 456, + 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 0, 0, 466, 467, 806, 469, 807, 0, 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 1102, 493, 0, 494, 495, 496, + 481, 0, 40, 482, 483, 484, 485, 0, 486, 487, + 488, 489, 490, 809, 492, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 44, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 0, 0, 0, 0, 0, 0, 0, 2250, - 2251, 0, 0, 0, 0, 0, 1107, 0, 1108, 0, - 0, 0, 0, 0, 1109, 1110, 1111, 1112, 118, 1062, - 826, 1063, 1064, 1065, 1066, 1067, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, - 0, 0, 0, 0, 1068, 0, 0, 130, 131, 132, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 1069, - 142, 1070, 1071, 0, 145, 146, 147, 148, 149, 150, - 1072, 795, 151, 152, 153, 154, 1073, 1074, 157, 0, - 158, 159, 160, 161, 796, 0, 797, 0, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, - 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 1076, 192, 193, - 1077, 195, 0, 196, 0, 197, 198, 199, 200, 201, - 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, - 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, - 216, 217, 0, 218, 219, 220, 221, 1080, 223, 224, - 225, 226, 227, 228, 798, 1081, 230, 0, 231, 232, - 1082, 234, 0, 235, 0, 236, 237, 0, 238, 239, - 240, 241, 242, 243, 244, 245, 0, 1083, 1084, 248, - 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, - 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, - 276, 1085, 1086, 0, 1087, 0, 280, 0, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 292, 293, 294, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 1088, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 1089, 325, 1090, 327, 328, 329, 330, - 0, 331, 332, 333, 334, 1092, 800, 336, 1093, 338, - 339, 340, 0, 341, 342, 0, 0, 1094, 344, 345, - 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 1095, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 406, 407, 408, 409, 1096, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 433, 434, 435, 1097, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, - 459, 460, 461, 462, 0, 463, 1098, 1099, 0, 0, - 466, 467, 806, 469, 807, 1100, 471, 472, 808, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, - 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 1102, 493, 0, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 0, 0, 0, 0, 0, 0, 0, 1445, 1446, 0, - 0, 0, 0, 0, 1107, 0, 1108, 0, 0, 0, - 0, 0, 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, - 1064, 0, 1066, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, - 0, 0, 1068, 0, 0, 130, 131, 132, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 1069, 142, 1070, - 1071, 0, 145, 146, 147, 148, 149, 150, 1072, 795, - 151, 152, 153, 154, 1073, 1074, 157, 0, 158, 159, - 160, 161, 796, 0, 797, 0, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 1076, 192, 193, 1077, 195, - 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 0, 0, 207, 208, 1079, - 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, - 0, 218, 219, 220, 221, 1080, 223, 224, 225, 226, - 227, 228, 798, 1081, 230, 0, 231, 232, 1082, 234, - 0, 235, 0, 236, 237, 0, 238, 239, 240, 241, - 242, 243, 244, 245, 3182, 1083, 1084, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 270, 271, 272, 273, 274, 275, 276, 1085, - 1086, 0, 1087, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 292, 293, - 294, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 1088, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 1089, 325, 1090, 327, 328, 329, 330, 0, 331, - 332, 333, 334, 1092, 800, 336, 1093, 338, 339, 340, - 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, - 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 1095, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 433, 434, - 435, 1097, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 805, - 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, - 461, 462, 0, 463, 1098, 1099, 0, 0, 466, 467, - 806, 469, 807, 1100, 471, 472, 808, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 1102, 493, 0, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1107, 0, 2852, 0, 0, 0, 0, 0, - 1109, 1110, 1111, 1112, 118, 1062, 826, 1063, 1064, 0, - 1066, 1067, 0, 0, 0, 0, 0, 0, 0, 0, + 523, 524, 0, 118, 45, 557, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 810, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, - 1068, 0, 0, 130, 131, 132, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 1069, 142, 1070, 1071, 0, - 145, 146, 147, 148, 149, 150, 1072, 795, 151, 152, - 153, 154, 1073, 1074, 157, 0, 158, 159, 160, 161, + 0, 0, 0, 130, 131, 132, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 0, + 145, 146, 147, 148, 149, 150, 0, 795, 151, 152, + 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 1076, 192, 193, 1077, 195, 0, 196, + 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, - 204, 205, 206, 0, 0, 207, 208, 1079, 210, 211, + 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, - 219, 220, 221, 1080, 223, 224, 225, 226, 227, 228, - 798, 1081, 230, 0, 231, 232, 1082, 234, 0, 235, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 798, 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 237, 0, 238, 239, 240, 241, 242, 243, - 244, 245, 0, 1083, 1084, 248, 249, 0, 250, 251, + 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, - 270, 271, 272, 273, 274, 275, 276, 1085, 1086, 0, - 1087, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 1088, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 1089, - 325, 1090, 327, 328, 329, 330, 0, 331, 332, 333, - 334, 1092, 800, 336, 1093, 338, 339, 340, 0, 341, - 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, - 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, - 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, - 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 1095, 387, 388, 389, 390, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 433, 434, 435, 1097, - 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 805, 0, 0, - 454, 455, 0, 456, 457, 458, 459, 460, 461, 462, - 0, 463, 1098, 1099, 0, 0, 466, 467, 806, 469, - 807, 1100, 471, 472, 808, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 1102, 493, - 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1107, 0, 2852, 0, 0, 0, 0, 0, 1109, 1110, - 1111, 1112, 118, 1062, 826, 1063, 1064, 0, 1066, 1067, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, - 127, 128, 129, 0, 0, 0, 0, 0, 1068, 0, - 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 1069, 142, 1070, 1071, 0, 145, 146, - 147, 148, 149, 150, 1072, 795, 151, 152, 153, 154, - 1073, 1074, 157, 0, 158, 159, 160, 161, 796, 0, - 797, 0, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 1076, 192, 193, 1077, 195, 0, 196, 0, 197, - 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, - 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, - 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, - 221, 1080, 223, 224, 225, 226, 227, 228, 798, 1081, - 230, 0, 231, 232, 1082, 234, 0, 235, 0, 236, - 237, 0, 238, 239, 240, 241, 242, 243, 244, 245, - 0, 1083, 1084, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, - 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 272, 273, 274, 275, 276, 1085, 1086, 0, 1087, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 1088, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 1089, 325, 1090, - 327, 328, 329, 330, 0, 331, 332, 333, 334, 1092, - 800, 336, 1093, 338, 339, 340, 0, 341, 342, 0, - 0, 343, 344, 345, 0, 0, 346, 347, 348, 349, - 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, - 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, - 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 1095, 387, 388, 389, 390, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 406, 407, 408, 409, 1096, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 0, 433, 434, 435, 1097, 437, 0, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 805, 0, 0, 454, 455, - 0, 456, 457, 458, 459, 460, 461, 462, 0, 463, - 1098, 1099, 0, 0, 466, 467, 806, 469, 807, 1100, - 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 1102, 493, 0, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, - 1108, 0, 0, 0, 0, 0, 1109, 1110, 1111, 1112, - 118, 1062, 826, 1063, 1064, 1065, 1066, 1067, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, - 129, 0, 0, 0, 0, 0, 1068, 0, 0, 130, - 131, 132, 0, 133, 134, 135, 136, 137, 138, 139, - 0, 1069, 142, 1070, 1071, 0, 145, 146, 147, 148, - 149, 150, 1072, 795, 151, 152, 153, 154, 1073, 1074, - 157, 0, 158, 159, 160, 161, 796, 0, 797, 0, - 1075, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 0, 174, 175, 176, 177, 178, 179, 0, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 1076, - 192, 193, 1077, 195, 1078, 196, 0, 197, 198, 199, - 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, - 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, - 0, 215, 0, 217, 0, 218, 219, 220, 221, 1080, - 223, 224, 225, 226, 227, 228, 798, 1081, 230, 0, - 231, 232, 1082, 234, 0, 235, 0, 236, 237, 0, - 238, 239, 240, 241, 0, 243, 244, 245, 0, 1083, - 1084, 248, 249, 0, 250, 251, 252, 253, 254, 255, - 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, - 265, 266, 267, 268, 0, 269, 270, 271, 272, 273, - 274, 275, 276, 1085, 1086, 0, 1087, 0, 280, 0, - 0, 283, 284, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 292, 293, 0, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 1088, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 1089, 325, 1090, 327, 328, - 329, 330, 0, 331, 332, 0, 334, 1092, 800, 336, - 1093, 338, 339, 340, 0, 341, 342, 0, 0, 1094, - 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, - 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, - 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, - 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 1095, 387, 388, 389, 390, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 406, 407, 408, 409, 1096, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 0, 434, 435, 1097, 437, 0, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 805, 0, 0, 454, 455, 0, 456, - 457, 458, 459, 460, 461, 462, 0, 463, 1098, 1099, - 0, 0, 466, 467, 806, 469, 807, 1100, 471, 472, - 808, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 1101, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 1102, 493, 0, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 0, 0, 0, 0, 0, 0, 0, 1104, - 1105, 1106, 0, 980, 1374, 826, 1107, 0, 1108, 1066, - 0, 0, 0, 0, 1109, 1110, 1111, 1112, 0, 0, - 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 127, 128, 129, 0, 0, 0, 569, 0, 0, - 0, 0, 574, 131, 132, 0, 576, 134, 135, 577, - 137, 138, 139, 578, 579, 580, 581, 582, 0, 145, - 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, - 154, 586, 587, 157, 0, 158, 159, 160, 161, 589, - 0, 591, 0, 593, 165, 166, 167, 168, 169, 594, - 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, - 0, 597, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 599, 192, 193, 600, 195, 0, 196, 0, - 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, - 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, - 220, 221, 610, 223, 224, 225, 226, 227, 228, 611, - 1375, 230, 0, 231, 232, 614, 234, 0, 235, 0, - 236, 617, 0, 619, 239, 240, 620, 621, 243, 244, - 245, 0, 623, 624, 248, 249, 0, 250, 251, 252, - 253, 254, 255, 256, 626, 258, 259, 260, 261, 0, - 262, 263, 264, 265, 266, 267, 268, 0, 269, 629, - 630, 272, 273, 274, 275, 276, 631, 632, 0, 634, - 0, 280, 636, 637, 283, 638, 285, 286, 287, 288, - 289, 290, 0, 0, 291, 641, 293, 642, 0, 295, - 296, 297, 298, 299, 300, 301, 302, 2440, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 645, 646, - 647, 327, 328, 329, 648, 0, 331, 332, 650, 334, - 0, 652, 336, 653, 338, 339, 340, 0, 341, 342, - 1376, 0, 343, 344, 345, 0, 0, 346, 347, 659, - 660, 350, 661, 662, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, - 365, 366, 667, 668, 369, 370, 669, 372, 373, 374, - 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, - 383, 384, 385, 672, 387, 388, 389, 390, 0, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 675, 407, 408, 409, 676, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 0, 678, 424, 425, 426, 427, 428, - 429, 679, 431, 432, 0, 681, 434, 435, 682, 437, - 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 684, 452, 685, 0, 0, 454, - 455, 0, 456, 689, 458, 459, 460, 461, 462, 0, - 463, 691, 692, 0, 0, 466, 467, 695, 469, 696, - 1377, 471, 472, 698, 474, 475, 476, 477, 478, 0, - 0, 479, 480, 481, 701, 0, 482, 483, 484, 485, - 0, 486, 487, 488, 489, 490, 704, 705, 493, 0, - 494, 707, 496, 497, 498, 499, 500, 501, 502, 0, - 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, - 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, - 722, 521, 522, 523, 524, 0, 0, 0, 0, 0, - 0, 0, 1378, 1379, 2441, 118, 0, 0, 0, 2442, - 0, 2443, 1067, 0, 0, 0, 0, 0, 0, 0, - 1112, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, - 0, 1068, 0, 0, 130, 131, 132, 0, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 0, 145, 146, 147, 148, 149, 150, 1072, 795, 151, - 152, 153, 154, 155, 156, 157, 0, 158, 159, 160, - 161, 796, 0, 797, 0, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, - 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, - 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, - 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 798, 0, 230, 0, 231, 232, 233, 234, 0, - 235, 0, 236, 237, 0, 238, 239, 240, 241, 242, - 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 291, 292, 293, 294, - 0, 295, 296, 297, 298, 299, 300, 301, 302, 1088, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 0, + 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, + 0, 288, 289, 290, 799, 0, 291, 292, 293, 294, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 0, 331, 332, 333, 334, 0, 800, 336, 337, 338, 339, 340, 0, - 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, + 341, 342, 0, 801, 343, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, @@ -7470,7 +7795,7 @@ static const yytype_int16 yytable[] = 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 409, 410, 804, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, 433, 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, @@ -7479,343 +7804,141 @@ static const yytype_int16 yytable[] = 462, 0, 463, 464, 465, 0, 0, 466, 467, 806, 469, 807, 0, 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, - 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, + 484, 485, 0, 486, 487, 488, 489, 490, 809, 492, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 532, 2003, - 0, 1107, 0, 2167, 2004, 1067, 0, 0, 0, 1109, - 1110, 1111, 1112, 0, 0, 0, 0, 119, 120, 121, + 518, 519, 520, 521, 522, 523, 524, 118, 0, 557, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 810, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, - 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, - 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, - 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, - 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, - 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, + 0, 0, 0, 0, 0, 0, 0, 130, 131, 132, + 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 0, 145, 146, 147, 148, 149, 150, + 0, 795, 151, 152, 153, 154, 155, 156, 157, 0, + 158, 159, 160, 161, 796, 0, 797, 0, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 0, 174, + 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, - 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, - 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, + 225, 226, 227, 228, 798, 0, 230, 0, 231, 232, + 233, 234, 0, 235, 0, 236, 237, 0, 238, 239, + 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, + 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, - 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, - 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, - 0, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, - 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, - 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, - 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, - 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, - 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, - 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 0, 0, 0, 0, 0, 532, 0, 0, 0, 0, + 267, 268, 0, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 0, 279, 0, 280, 281, 282, 283, + 284, 285, 286, 287, 0, 288, 289, 290, 0, 0, + 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 0, 331, 332, 333, 334, 0, 800, 336, 337, + 338, 339, 340, 0, 341, 342, 0, 801, 343, 344, + 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 406, 407, 408, 409, 410, 804, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 0, 433, 434, 435, 436, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, + 0, 466, 467, 806, 469, 807, 0, 471, 472, 808, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 492, 493, 0, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 118, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1024, 0, 0, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, + 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 0, 145, 146, + 147, 148, 149, 150, 0, 795, 151, 152, 153, 154, + 155, 156, 157, 0, 158, 159, 160, 161, 796, 0, + 797, 0, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, + 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, + 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, + 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 798, 0, + 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, + 237, 0, 238, 239, 240, 241, 242, 243, 244, 245, + 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, + 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, + 280, 281, 282, 283, 284, 285, 286, 287, 0, 288, + 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 0, 331, 332, 333, 334, + 0, 800, 336, 337, 338, 339, 340, 0, 341, 342, + 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, + 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, + 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 406, 407, 408, 409, 410, + 804, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 0, 433, 434, 435, 436, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 805, 0, 0, 454, + 455, 0, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 0, 0, 466, 467, 806, 469, 807, + 0, 471, 472, 808, 474, 475, 476, 477, 478, 0, + 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 491, 492, 493, 0, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1109, 1110, 119, 120, 121, 122, 123, 124, - 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, - 0, 0, 1016, 0, 0, 131, 132, 0, 0, 134, - 135, 0, 137, 138, 139, 140, 141, 0, 143, 144, - 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, - 152, 153, 154, 155, 156, 157, 0, 158, 159, 160, - 161, 162, 0, 0, 0, 164, 165, 166, 167, 168, - 169, 0, 171, 172, 173, 0, 174, 175, 176, 177, - 178, 179, 0, 0, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, - 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, - 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 0, 215, 216, 217, -557, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 0, 230, -557, 231, 232, 233, 234, -557, - 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, - 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, - 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, - 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, - 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, - -557, 279, 0, 280, 0, 0, 283, 0, 285, 286, - 287, 288, 289, 290, 0, 0, 291, 0, 293, 0, - -557, 295, 296, 297, 298, 299, 300, 301, 302, 534, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, - 0, 334, 0, 335, 336, 337, 338, 339, 340, -557, - 341, 342, 0, 0, 343, 344, 345, 0, -557, 346, - 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, - 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, - 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, - 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, - 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, - 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, - 478, -557, 0, 479, 480, 481, 0, 0, 482, 483, - 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, - 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, - 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, - 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 532, 0, 558, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1184, 0, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, - 0, 134, 135, 0, 137, 138, 139, 140, 141, 0, - 143, 144, 0, 145, 146, 147, 148, 149, 150, 0, - 0, 151, 152, 153, 154, 155, 156, 157, 0, 158, - 159, 160, 161, 162, 0, 0, 0, 164, 165, 166, - 167, 168, 169, 0, 171, 172, 173, 0, 174, 175, - 176, 177, 178, 179, 0, 0, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, - 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, - 217, 0, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, - 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, - 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, - 0, 250, 251, 252, 253, 254, 255, 256, 0, 258, - 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, - 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, - 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, - 285, 286, 287, 288, 289, 290, 0, 0, 291, 0, - 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, - 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, - 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, - 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, - 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, - 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, - 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, - 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, - 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, - 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, - 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, - 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, - 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 980, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2533, 3377, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, - 3, 4, 0, 569, 0, 0, 0, 0, 574, 131, - 132, 0, 576, 134, 135, 577, 137, 138, 139, 578, - 579, 580, 581, 582, 0, 145, 146, 147, 148, 149, - 150, 0, 0, 151, 152, 153, 154, 586, 587, 157, - 0, 158, 159, 160, 161, 589, 0, 591, 0, 593, - 165, 166, 167, 168, 169, 594, 171, 172, 173, 0, - 174, 175, 176, 177, 178, 179, 0, 597, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 599, 192, - 193, 600, 195, 0, 196, 0, 197, 198, 199, 200, - 201, 202, 14, 15, 203, 204, 205, 206, 0, 0, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, - 215, 216, 217, 0, 218, 219, 220, 221, 610, 223, - 224, 225, 226, 227, 228, 611, 0, 230, 0, 231, - 232, 614, 234, 0, 235, 0, 236, 617, 23, 619, - 239, 240, 620, 621, 243, 244, 245, 0, 623, 624, - 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, - 626, 258, 259, 260, 261, 0, 262, 263, 264, 265, - 266, 267, 268, 0, 269, 629, 630, 272, 273, 274, - 275, 276, 631, 632, 0, 634, 0, 280, 636, 637, - 283, 638, 285, 286, 287, 288, 289, 290, 0, 0, - 291, 641, 293, 642, 0, 295, 296, 297, 298, 299, - 300, 301, 302, 644, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 645, 646, 647, 327, 328, 329, - 648, 0, 331, 332, 650, 334, 0, 652, 336, 653, - 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, - 345, 0, 0, 346, 347, 659, 660, 350, 661, 662, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 26, 27, 28, 0, 365, 366, 667, 668, - 369, 370, 669, 372, 373, 374, 0, 375, 376, 377, - 378, 379, 380, 0, 381, 382, 383, 384, 385, 672, - 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 675, 407, 408, 409, 676, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 33, - 678, 424, 425, 426, 427, 428, 429, 679, 431, 432, - 35, 681, 434, 435, 682, 437, 0, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 684, 452, 685, 37, 0, 454, 455, 38, 456, 689, - 458, 459, 460, 461, 462, 0, 463, 691, 692, 0, - 0, 466, 467, 695, 469, 696, 0, 471, 472, 698, - 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, - 701, 40, 482, 483, 484, 485, 0, 486, 487, 488, - 489, 490, 981, 705, 493, 0, 494, 707, 496, 497, - 498, 499, 500, 501, 502, 0, 0, 503, 0, 44, - 504, 505, 506, 507, 508, 509, 712, 713, 714, 715, - 716, 717, 718, 719, 720, 721, 722, 521, 522, 523, - 524, 0, 118, 45, 558, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, - 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, - 0, 130, 131, 132, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 0, 145, 146, - 147, 148, 149, 150, 0, 795, 151, 152, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 161, 796, 0, - 797, 0, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, - 198, 199, 200, 201, 202, 14, 15, 203, 204, 205, - 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, - 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 798, 0, - 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, - 237, 23, 238, 239, 240, 241, 242, 243, 244, 245, - 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, - 263, 264, 265, 266, 267, 268, 0, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 799, 0, 291, 292, 293, 294, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 0, 331, 332, 333, 334, 0, - 800, 336, 337, 338, 339, 340, 0, 341, 342, 0, - 801, 343, 344, 345, 0, 0, 346, 347, 348, 349, - 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 26, 27, 28, 0, 365, - 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, - 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 406, 407, 408, 409, 410, 804, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 33, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 35, 433, 434, 435, 436, 437, 0, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 805, 37, 0, 454, 455, - 38, 456, 457, 458, 459, 460, 461, 462, 0, 463, - 464, 465, 0, 0, 466, 467, 806, 469, 807, 0, - 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 0, 40, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 809, 492, 493, 0, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 44, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 0, 118, 45, 558, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 810, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, - 0, 0, 0, 0, 130, 131, 132, 0, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 0, 145, 146, 147, 148, 149, 150, 0, 795, 151, - 152, 153, 154, 155, 156, 157, 0, 158, 159, 160, - 161, 796, 0, 797, 0, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 0, 174, 175, 176, 177, - 178, 179, 0, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, - 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, - 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 798, 0, 230, 0, 231, 232, 233, 234, 0, - 235, 0, 236, 237, 0, 238, 239, 240, 241, 242, - 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 0, 279, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 799, 0, 291, 292, 293, 294, - 0, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 0, 331, 332, - 333, 334, 0, 800, 336, 337, 338, 339, 340, 0, - 341, 342, 0, 801, 343, 344, 345, 0, 0, 346, - 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, - 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, - 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 406, 407, 408, - 409, 410, 804, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 0, 433, 434, 435, - 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 805, 0, - 0, 454, 455, 0, 456, 457, 458, 459, 460, 461, - 462, 0, 463, 464, 465, 0, 0, 466, 467, 806, - 469, 807, 0, 471, 472, 808, 474, 475, 476, 477, - 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, - 484, 485, 0, 486, 487, 488, 489, 490, 809, 492, - 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, - 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, - 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 118, 0, 558, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 810, 0, 0, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, - 0, 0, 0, 0, 0, 0, 130, 131, 132, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 0, 145, 146, 147, 148, 149, 150, 0, - 795, 151, 152, 153, 154, 155, 156, 157, 0, 158, - 159, 160, 161, 796, 0, 797, 0, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, - 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, - 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, - 217, 0, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 798, 0, 230, 0, 231, 232, 233, - 234, 0, 235, 0, 236, 237, 0, 238, 239, 240, - 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, - 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, - 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 0, 0, 291, 292, + 0, 46, 0, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, + 0, 0, 0, 0, 0, 130, 131, 132, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 0, 145, 146, 147, 148, 149, 150, 0, 795, + 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, + 160, 161, 796, 0, 797, 0, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 0, 174, 175, 176, + 177, 178, 179, 0, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, + 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, + 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, + 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 798, 0, 230, 0, 231, 232, 233, 234, + 0, 235, 0, 236, 237, 0, 238, 239, 240, 241, + 242, 243, 244, 245, 0, 246, 247, 248, 249, 0, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, + 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 0, 279, 0, 280, 281, 282, 283, 284, 285, + 286, 287, 0, 288, 289, 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 0, 331, 332, 333, 334, 0, 800, 336, 337, 338, 339, - 340, 0, 341, 342, 0, 801, 343, 344, 345, 0, + 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, @@ -7823,7 +7946,7 @@ static const yytype_int16 yytable[] = 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, 406, - 407, 408, 409, 410, 804, 412, 413, 414, 415, 416, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, 433, 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, @@ -7836,181 +7959,81 @@ static const yytype_int16 yytable[] = 491, 492, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 118, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1024, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, - 0, 0, 0, 0, 0, 0, 0, 0, 130, 131, - 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 0, 145, 146, 147, 148, 149, - 150, 0, 795, 151, 152, 153, 154, 155, 156, 157, - 0, 158, 159, 160, 161, 796, 0, 797, 0, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, - 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, - 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, - 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, - 215, 216, 217, 0, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 798, 0, 230, 0, 231, - 232, 233, 234, 0, 235, 0, 236, 237, 0, 238, - 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, - 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 0, 0, - 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 0, 331, 332, 333, 334, 0, 800, 336, 337, - 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, - 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, - 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, - 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 406, 407, 408, 409, 410, 804, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, - 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 0, 433, 434, 435, 436, 437, 0, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, - 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, - 0, 466, 467, 806, 469, 807, 0, 471, 472, 808, - 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, - 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, - 489, 490, 491, 492, 493, 0, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, - 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, - 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, - 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 0, 145, 146, 147, - 148, 149, 150, 0, 795, 151, 152, 153, 154, 155, - 156, 157, 0, 158, 159, 160, 161, 796, 0, 797, - 0, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, - 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, - 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, - 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 798, 0, 230, - 0, 231, 232, 233, 234, 0, 235, 0, 236, 237, - 0, 238, 239, 240, 241, 242, 243, 244, 245, 0, - 246, 247, 248, 249, 0, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, - 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 0, 331, 332, 333, 334, 0, 800, - 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, - 343, 344, 345, 0, 0, 346, 347, 348, 349, 350, - 351, 802, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, - 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, + 0, 0, 0, 0, 0, 3480, 0, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, + 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, + 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, + 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, + 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, + 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, + 200, 201, 202, 14, 15, 203, 204, 205, 206, 0, + 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, + 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 231, 232, 233, 234, 0, 235, 0, 236, 0, 23, + 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, + 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, + 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, + 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, + 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, + 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, + 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 26, 27, 28, 0, 365, 366, + 367, 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 0, 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 0, 433, 434, 435, 436, 437, 0, 438, + 423, 33, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 35, 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 805, 0, 0, 454, 455, 0, - 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, - 465, 0, 0, 466, 467, 806, 469, 807, 0, 471, - 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, - 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, - 487, 488, 489, 490, 491, 492, 493, 0, 494, 495, + 449, 450, 535, 452, 453, 37, 0, 454, 455, 38, + 456, 0, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 40, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 809, 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, - 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 0, 44, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, - 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3468, - 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, - 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, - 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, - 154, 155, 156, 157, 0, 158, 159, 160, 161, 162, - 0, 0, 0, 164, 165, 166, 167, 168, 169, 0, - 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, - 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, - 197, 198, 199, 200, 201, 202, 14, 15, 203, 204, - 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, - 236, 0, 23, 0, 239, 240, 533, 0, 243, 244, - 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, - 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, - 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, - 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, - 0, 280, 0, 0, 283, 0, 285, 286, 287, 288, - 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, - 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, - 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, - 0, 335, 336, 337, 338, 339, 340, 0, 341, 342, - 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, - 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 26, 27, 28, 0, - 365, 366, 367, 0, 369, 370, 371, 372, 373, 374, - 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 33, 0, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 35, 0, 434, 435, 436, 437, - 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 535, 452, 453, 37, 0, 454, - 455, 38, 456, 0, 458, 459, 460, 461, 462, 0, - 463, 464, 465, 0, 0, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 476, 477, 478, 0, - 0, 479, 480, 481, 0, 40, 482, 483, 484, 485, - 0, 486, 487, 488, 489, 490, 809, 492, 493, 0, - 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, - 0, 503, 0, 44, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, - 520, 521, 522, 523, 524, 0, 532, 45, 558, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 46, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 899, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, - 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, - 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, - 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, - 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, - 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 0, 235, 0, 236, 0, 23, 0, 239, 240, 533, - 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, - 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, - 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, + 522, 523, 524, 0, 532, 45, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, + 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 899, 127, 128, 129, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 132, 0, 0, 134, + 135, 0, 137, 138, 139, 140, 141, 0, 143, 144, + 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, + 152, 153, 154, 155, 156, 157, 0, 158, 159, 160, + 161, 162, 0, 0, 0, 164, 165, 166, 167, 168, + 169, 0, 171, 172, 173, 0, 174, 175, 176, 177, + 178, 179, 0, 0, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, + 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, + 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, + 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, + 235, 0, 236, 0, 23, 0, 239, 240, 533, 0, + 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, + 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, + 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, + 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 0, 279, 0, 280, 0, 0, 283, 0, 285, 286, + 287, 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, @@ -8038,8 +8061,109 @@ static const yytype_int16 yytable[] = 501, 502, 0, 0, 503, 0, 44, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 0, 532, - 45, 558, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 46, 0, 0, 0, 119, 120, + 45, 557, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 46, 0, 0, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, + 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, + 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, + 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, + 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, + 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, + 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, + 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, + 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 231, 232, 233, 234, 0, 235, 0, 236, 0, 23, + 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, + 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, + 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, + 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, + 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, + 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, + 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 26, 27, 28, 0, 365, 366, + 367, 0, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 33, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 0, 434, 435, 436, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 535, 452, 453, 0, 0, 454, 455, 38, + 456, 0, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 40, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 809, 492, 493, 0, 494, 0, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 44, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 0, 532, 45, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, + 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 132, 0, 0, 134, + 135, 0, 137, 138, 139, 140, 141, 0, 143, 144, + 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, + 152, 153, 154, 155, 156, 157, 0, 158, 159, 160, + 161, 162, 0, 0, 0, 164, 165, 166, 167, 168, + 169, 0, 171, 172, 173, 0, 174, 175, 176, 177, + 178, 179, 0, 0, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, + 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, + 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, + 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, + 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, + 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, + 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, + 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, + 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 0, 279, 0, 280, 0, 0, 283, 0, 285, 286, + 287, 0, 288, 289, 290, 0, 0, 291, 0, 293, + 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, + 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, + 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, + 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, + 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, + 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, + 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, + 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, + 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, + 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, + 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, + 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, + 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, + 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, + 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1000, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, @@ -8054,113 +8178,63 @@ static const yytype_int16 yytable[] = 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, 231, - 232, 233, 234, 0, 235, 0, 236, 0, 23, 0, + 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, - 283, 0, 285, 286, 287, 288, 289, 290, 0, 0, - 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, - 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 0, 326, 327, 328, 329, - 330, 0, 331, 332, 0, 334, 0, 335, 336, 337, - 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, - 345, 0, 0, 346, 347, 348, 0, 350, 0, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 26, 27, 28, 0, 365, 366, 367, 0, - 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, - 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 0, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 33, - 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 0, 0, 434, 435, 436, 437, 0, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 535, 452, 453, 0, 0, 454, 455, 38, 456, 0, - 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, - 0, 466, 467, 468, 469, 470, 0, 471, 472, 473, - 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, - 0, 40, 482, 483, 484, 485, 0, 486, 487, 488, - 489, 490, 809, 492, 493, 0, 494, 0, 496, 497, - 498, 499, 500, 501, 502, 0, 0, 503, 0, 44, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 0, 532, 45, 558, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, - 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, - 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, - 147, 148, 149, 150, 0, 0, 151, 152, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 161, 162, 0, - 0, 0, 164, 165, 166, 167, 168, 169, 0, 171, - 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, - 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, - 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, - 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, - 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, - 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, - 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, - 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, - 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, - 280, 0, 0, 283, 0, 285, 286, 287, 288, 289, - 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 0, 326, - 327, 328, 329, 330, 0, 331, 332, 0, 334, 0, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, - 0, 343, 344, 345, 0, 0, 346, 347, 348, 0, - 350, 0, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, - 366, 367, 0, 369, 370, 371, 372, 373, 374, 0, - 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 0, 0, 434, 435, 436, 437, 0, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 535, 452, 453, 0, 0, 454, 455, - 0, 456, 0, 458, 459, 460, 461, 462, 0, 463, - 464, 465, 0, 0, 466, 467, 468, 469, 470, 0, - 471, 472, 473, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 492, 493, 0, 494, - 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 532, 0, 558, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1000, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, - 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, - 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, - 162, 0, 0, 0, 164, 165, 166, 167, 168, 169, - 0, 171, 172, 173, 0, 174, 175, 176, 177, 178, - 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, - 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, - 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, - 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, - 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, - 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, - 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, - 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, - 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, - 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, + 283, 0, 285, 286, 287, 0, 288, 289, 290, 0, + 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, + 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, + 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, + 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, + 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, + 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, + 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, + 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, + 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, + 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, + 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, + 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, + 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, + 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, + 523, 524, 532, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1506, 0, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, + 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, + 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, + 154, 155, 156, 157, 0, 158, 159, 160, 161, 162, + 0, 0, 0, 164, 165, 166, 167, 168, 169, 0, + 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, + 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, + 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, + 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, + 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, + 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, + 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, + 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, + 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, + 0, 280, 0, 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, @@ -8188,80 +8262,30 @@ static const yytype_int16 yytable[] = 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 532, 0, 558, 0, + 519, 520, 521, 522, 523, 524, 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1504, 0, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, - 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, - 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, - 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, - 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, - 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, - 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, - 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, - 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, - 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, - 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, - 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, - 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, - 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, - 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, - 558, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2128, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, - 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, - 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, - 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, - 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, - 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, - 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, - 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, - 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, - 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, - 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, - 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, - 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, - 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, - 0, 285, 286, 287, 288, 289, 290, 0, 0, 291, + 0, 0, 2133, 0, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, + 0, 134, 135, 0, 137, 138, 139, 140, 141, 0, + 143, 144, 0, 145, 146, 147, 148, 149, 150, 0, + 0, 151, 152, 153, 154, 155, 156, 157, 0, 158, + 159, 160, 161, 162, 0, 0, 0, 164, 165, 166, + 167, 168, 169, 0, 171, 172, 173, 0, 174, 175, + 176, 177, 178, 179, 0, 0, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, + 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, + 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, + 217, 0, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, + 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, + 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, + 0, 250, 251, 252, 253, 254, 255, 256, 0, 258, + 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, + 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, + 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, + 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, @@ -8289,79 +8313,29 @@ static const yytype_int16 yytable[] = 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 532, 0, 558, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2274, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, - 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, - 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, - 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, - 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, - 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, - 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, - 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, - 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, - 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, - 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, - 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, - 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, - 0, 283, 0, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, - 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, - 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, - 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, - 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, - 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, - 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, - 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, - 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 532, 0, 558, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2533, 0, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, - 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, - 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, - 147, 148, 149, 150, 0, 0, 151, 152, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 161, 162, 0, - 0, 0, 164, 165, 166, 167, 168, 169, 0, 171, - 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, - 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, - 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, - 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, - 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, - 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, - 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, - 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, - 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, - 280, 0, 0, 283, 0, 285, 286, 287, 288, 289, + 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2279, 0, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, + 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 132, 0, 0, 134, 135, 0, 137, 138, + 139, 140, 141, 0, 143, 144, 0, 145, 146, 147, + 148, 149, 150, 0, 0, 151, 152, 153, 154, 155, + 156, 157, 0, 158, 159, 160, 161, 162, 0, 0, + 0, 164, 165, 166, 167, 168, 169, 0, 171, 172, + 173, 0, 174, 175, 176, 177, 178, 179, 0, 0, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, + 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, + 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, + 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, + 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, + 246, 247, 248, 249, 0, 250, 251, 252, 253, 254, + 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, + 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, + 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, + 0, 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, @@ -8389,1433 +8363,623 @@ static const yytype_int16 yytable[] = 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 532, 0, 558, 0, 0, 0, + 521, 522, 523, 524, 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2677, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, - 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, - 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, - 162, 0, 0, 0, 164, 165, 166, 167, 168, 169, - 0, 171, 172, 173, 0, 174, 175, 176, 177, 178, - 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, - 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, - 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, - 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, - 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, - 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, - 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, - 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, - 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, - 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 326, 327, 328, 329, 330, 0, 331, 332, 0, - 334, 0, 335, 336, 337, 338, 339, 340, 0, 341, - 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, - 348, 0, 350, 0, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, - 0, 365, 366, 367, 0, 369, 370, 371, 372, 373, - 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 0, 434, 435, 436, - 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 535, 452, 453, 0, 0, - 454, 455, 0, 456, 0, 458, 459, 460, 461, 462, - 0, 463, 464, 465, 0, 0, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 492, 493, - 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 532, 0, 558, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2899, 0, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, - 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, - 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, - 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, - 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, - 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, - 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, - 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, - 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, - 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, - 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, - 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, - 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, - 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, - 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3372, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, - 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, - 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, - 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, - 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, - 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, - 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, - 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, - 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, - 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, - 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, - 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, - 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, - 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, - 0, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, - 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, - 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, - 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, - 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, - 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, - 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2234, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, - 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, - 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, - 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, - 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, - 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, - 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, - 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, - 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, - 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, - 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, - 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, - 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, - 0, 283, 0, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, - 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, - 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, - 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, - 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, - 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, - 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, - 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, - 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 0, 3029, 1374, 826, 0, 0, 2102, 1066, - 0, 0, 0, 0, 0, 2103, 2104, 0, 3229, 2105, - 2106, 2107, 119, 120, 121, 122, 123, 124, 125, 126, - 565, 127, 128, 129, 566, 567, 568, 3030, 570, 571, - 572, 573, 3031, 131, 132, 575, 3032, 134, 135, 3033, - 137, 138, 139, 0, 1518, 3034, 1520, 1521, 583, 145, - 146, 147, 148, 149, 150, 584, 585, 151, 152, 153, - 154, 1522, 1523, 157, 588, 158, 159, 160, 161, 0, - 590, 3035, 592, 3036, 165, 166, 167, 168, 169, 3037, - 171, 172, 173, 595, 174, 175, 176, 177, 178, 179, - 596, 3038, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 1528, 192, 193, 1529, 195, 601, 196, 602, - 197, 198, 199, 200, 201, 202, 603, 604, 203, 204, - 205, 206, 605, 606, 207, 208, 1079, 210, 211, 607, - 212, 213, 214, 608, 215, 216, 217, 609, 218, 219, - 220, 221, 0, 223, 224, 225, 226, 227, 228, 0, - 612, 230, 613, 231, 232, 1530, 234, 615, 235, 616, - 236, 3039, 618, 3040, 239, 240, 3041, 3042, 243, 244, - 245, 622, 0, 0, 248, 249, 625, 250, 251, 252, - 253, 254, 255, 256, 3043, 258, 259, 260, 261, 627, - 262, 263, 264, 265, 266, 267, 268, 628, 269, 3044, - 0, 272, 273, 274, 275, 276, 1536, 1537, 633, 1538, - 635, 280, 3045, 3046, 283, 3047, 285, 286, 287, 288, - 289, 290, 639, 640, 291, 3048, 293, 3049, 643, 295, - 296, 297, 298, 299, 300, 301, 302, 3050, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 1545, 3051, - 1547, 327, 328, 329, 3052, 649, 331, 332, 3053, 334, - 651, 0, 336, 1549, 338, 339, 340, 654, 341, 342, - 655, 656, 3054, 344, 345, 657, 658, 346, 347, 0, - 3055, 350, 3056, 0, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 663, 664, 665, 666, - 365, 366, 0, 3057, 369, 370, 0, 372, 373, 374, - 670, 375, 376, 377, 378, 379, 380, 671, 381, 382, - 383, 384, 385, 1553, 387, 388, 389, 390, 673, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 674, 404, 405, 3058, 407, 408, 409, 1555, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 677, 3059, 424, 425, 426, 427, 428, - 429, 3060, 431, 432, 680, 3061, 434, 435, 1559, 437, - 683, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 3062, 452, 0, 686, 687, 454, - 455, 688, 456, 3063, 458, 459, 460, 461, 462, 690, - 463, 1562, 1563, 693, 694, 466, 467, 0, 469, 0, - 697, 471, 472, 3064, 474, 475, 476, 477, 478, 3065, - 700, 479, 480, 481, 3066, 702, 482, 483, 484, 485, - 703, 486, 487, 488, 489, 490, 0, 1567, 493, 706, - 494, 3067, 496, 497, 498, 499, 500, 501, 502, 708, - 709, 503, 710, 711, 504, 505, 506, 507, 508, 509, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 521, 522, 523, 524, 0, 532, 0, 2108, 2109, - 2110, 2102, 3068, 3069, 2113, 2114, 2115, 2116, 2103, 2104, - 0, 0, 2105, 2106, 2107, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, - 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, - 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, - 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, - 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, - 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, - 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, - 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, - 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, - 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, - 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, - 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, - 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, - 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, - 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 0, 0, - 0, 2108, 2109, 2110, 0, 2111, 2112, 2113, 2114, 2115, - 2116, 1653, 0, 0, 1654, 0, 0, 0, 1655, 1656, - 1657, 1658, 1659, 1660, 1661, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1662, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1664, - 1653, 0, 0, 1654, 0, 0, 1665, 1655, 1656, 1657, - 1658, 1659, 1660, 1661, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1662, 0, - 0, 0, 0, 1666, 0, 0, 0, 0, 1664, 1653, - 0, 0, 1654, 0, 0, 1665, 1655, 1656, 1657, 1658, - 1659, 1660, 1661, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1662, 0, 0, - 0, 0, 1666, 0, 0, 0, 0, 1664, 0, 0, - 0, 0, 0, 0, 1665, 0, 1653, 0, 0, 1654, - 0, 0, 0, 1655, 1656, 1657, 1658, 1659, 1660, 1661, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1666, 0, 0, 1662, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1664, 1653, 0, 0, 1654, 0, - 1667, 1665, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 0, - 0, 0, 0, 0, 0, 0, 0, 1668, 0, 0, - 0, 0, 1669, 1662, 0, 0, 0, 0, 1666, 0, - 0, 0, 0, 1664, 0, 0, 0, 0, 0, 1667, - 1665, 0, 0, 0, 0, 1670, 1671, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1668, 0, 0, 0, - 1672, 1669, 0, 0, 0, 0, 0, 1666, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1667, 0, - 0, 0, 0, 0, 1670, 1671, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1668, 0, 0, 1673, 1672, - 1669, 1674, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1675, 0, 0, 1676, 0, - 0, 0, 0, 1670, 1671, 1667, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1673, 1672, 0, - 1674, 0, 1668, 0, 0, 0, 0, 1669, 0, 0, - 0, 0, 0, 0, 1675, 0, 0, 1676, 0, 0, - 0, 0, 0, 0, 1667, 0, 0, 0, 0, 0, - 1670, 1671, 0, 0, 0, 0, 1673, 0, 0, 1674, - 0, 1668, 0, 0, 0, 1672, 1669, 0, 0, 0, - 0, 0, 0, 1675, 0, 0, 1676, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1670, - 1671, 0, 0, 0, 0, 0, 0, 0, 1677, 0, - 0, 0, 0, 1673, 1672, 0, 1674, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1675, 0, 0, 1676, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1677, 0, 0, - 0, 0, 1673, 0, 0, 1674, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1675, - 0, 0, 1676, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1677, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1678, 0, - 0, 1679, 1680, 1681, 0, 1682, 1683, 1684, 1685, 1686, - 1687, 0, 0, 1677, 0, 2580, 0, 0, 0, 0, - 0, 0, 1653, 0, 0, 1654, 0, 0, 0, 1655, - 1656, 1657, 1658, 1659, 1660, 1661, 0, 1678, 0, 0, - 1679, 1680, 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, - 1662, 0, 1677, 0, 2601, 0, 0, 0, 0, 0, - 1664, 0, 0, 0, 0, 0, 0, 1665, 0, 0, - 0, 0, 0, 0, 0, 0, 1678, 0, 0, 1679, - 1680, 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, - 0, 0, 0, 2823, 1666, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1653, 0, - 0, 1654, 0, 0, 0, 1655, 1656, 1657, 1658, 1659, - 1660, 1661, 0, 1678, 0, 0, 1679, 1680, 1681, 0, - 1682, 1683, 1684, 1685, 1686, 1687, 1662, 0, 0, 0, - 2890, 0, 0, 0, 0, 0, 1664, 1653, 0, 0, - 1654, 0, 0, 1665, 1655, 1656, 1657, 1658, 1659, 1660, - 1661, 0, 1678, 0, 0, 1679, 1680, 1681, 0, 1682, - 1683, 1684, 1685, 1686, 1687, 1662, 0, 0, 0, 2904, - 1666, 0, 0, 0, 0, 1664, 1653, 0, 0, 1654, - 0, 1667, 1665, 1655, 1656, 1657, 1658, 1659, 1660, 1661, - 0, 0, 0, 0, 0, 0, 0, 0, 1668, 0, - 0, 0, 0, 1669, 1662, 0, 0, 0, 0, 1666, - 0, 0, 0, 0, 1664, 0, 0, 0, 0, 0, - 0, 1665, 0, 0, 0, 0, 1670, 1671, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1672, 0, 0, 0, 0, 0, 0, 1666, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1653, 0, 0, 1654, 0, 1667, 0, 1655, - 1656, 1657, 1658, 1659, 1660, 1661, 0, 0, 0, 1673, - 0, 0, 1674, 0, 1668, 0, 0, 0, 0, 1669, - 1662, 0, 0, 0, 0, 0, 1675, 0, 0, 1676, - 1664, 0, 0, 0, 0, 0, 1667, 1665, 0, 0, - 0, 0, 1670, 1671, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1668, 0, 0, 0, 1672, 1669, 0, - 0, 0, 0, 0, 1666, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1667, 0, 0, 0, 0, - 0, 1670, 1671, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1668, 0, 0, 1673, 1672, 1669, 1674, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1675, 0, 0, 1676, 0, 0, 0, 0, - 1670, 1671, 0, 0, 0, 0, 0, 0, 0, 1677, - 0, 0, 0, 0, 1673, 1672, 0, 1674, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1675, 0, 0, 1676, 0, 0, 0, 0, 0, - 0, 1667, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1673, 0, 0, 1674, 0, 1668, 0, - 0, 0, 0, 1669, 0, 0, 0, 0, 0, 0, - 1675, 0, 0, 1676, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1670, 1671, 0, 0, - 0, 0, 0, 0, 0, 1677, 0, 0, 0, 0, - 0, 1672, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1678, - 0, 0, 1679, 1680, 1681, 0, 1682, 1683, 1684, 1685, - 1686, 1687, 0, 0, 1677, 0, 2975, 0, 0, 1673, - 0, 0, 1674, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1675, 0, 0, 1676, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1677, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1678, 0, 0, 1679, 1680, - 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, 0, - 0, 0, 3221, 0, 0, 0, 0, 0, 0, 1653, - 0, 0, 1654, 0, 0, 0, 1655, 1656, 1657, 1658, - 1659, 1660, 1661, 0, 1678, 0, 0, 1679, 1680, 1681, - 0, 1682, 1683, 1684, 1685, 1686, 1687, 1662, 0, 1677, - 0, 3228, 0, 0, 0, 0, 0, 1664, 1653, 0, - 0, 1654, 0, 0, 1665, 1655, 1656, 1657, 1658, 1659, - 1660, 1661, 0, 1678, 0, 0, 1679, 1680, 1681, 0, - 1682, 1683, 1684, 1685, 1686, 1687, 1662, 0, 0, 0, - 3395, 1666, 0, 0, 0, 0, 1664, 0, 0, 0, - 0, 0, 0, 1665, 0, 1653, 0, 0, 1654, 0, - 0, 0, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1666, 0, 0, 1662, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1664, 1653, 0, 0, 1654, 0, 0, - 1665, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 0, 1678, - 0, 0, 1679, 1680, 1681, 0, 1682, 1683, 1684, 1685, - 1686, 1687, 1662, 0, 0, 0, 3419, 1666, 0, 0, - 0, 0, 1664, 1653, 0, 0, 1654, 0, 1667, 1665, - 1655, 1656, 1657, 1658, 1659, 1660, 1661, 0, 0, 0, - 0, 0, 0, 0, 0, 1668, 0, 0, 0, 0, - 1669, 1662, 0, 0, 0, 0, 1666, 0, 0, 0, - 0, 1664, 0, 0, 0, 0, 0, 1667, 1665, 0, - 0, 0, 0, 1670, 1671, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1668, 0, 0, 0, 1672, 1669, - 0, 0, 0, 0, 0, 1666, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1670, 1671, 1667, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1673, 1672, 0, 1674, - 0, 1668, 0, 0, 0, 0, 1669, 0, 0, 0, - 0, 0, 0, 1675, 0, 0, 1676, 0, 0, 0, - 0, 0, 0, 1667, 0, 0, 0, 0, 0, 1670, - 1671, 0, 0, 0, 0, 1673, 0, 0, 1674, 0, - 1668, 0, 0, 0, 1672, 1669, 0, 0, 0, 0, - 0, 0, 1675, 0, 0, 1676, 0, 0, 0, 0, - 0, 0, 1667, 0, 0, 0, 0, 0, 1670, 1671, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1668, - 0, 0, 1673, 1672, 1669, 1674, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1675, - 0, 0, 1676, 0, 0, 0, 0, 1670, 1671, 0, - 0, 0, 0, 0, 0, 0, 1677, 0, 0, 0, - 0, 1673, 1672, 0, 1674, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1675, 0, - 0, 1676, 0, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1677, 0, 0, 0, 0, - 1673, 0, 0, 1674, 0, 6, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 1675, 0, 0, - 1676, 0, 0, 0, 0, 0, 0, 0, 8, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 0, 1677, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 0, 756, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 1678, 0, 0, 1679, - 1680, 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, 14, - 15, 1677, 0, 3519, 0, 0, 0, 0, 0, 0, - 757, 0, 0, 0, 0, 0, 18, 0, 0, 0, - 0, 0, 0, 0, 19, 1678, 0, 0, 1679, 1680, - 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, 0, - 1677, 22, 3575, 0, 0, 23, 0, 0, 0, 0, - 0, 727, 0, 0, 0, 0, 0, 1653, 0, 0, - 1654, 0, 0, 0, 1655, 1656, 1657, 1658, 1659, 1660, - 1661, 0, 1678, 0, 0, 1679, 1680, 1681, 0, 1682, - 1683, 1684, 1685, 1686, 1687, 1662, 0, -1497, 0, 3597, - 0, 0, 0, 0, 0, 1664, 0, 0, 0, 0, - 0, 0, 1665, 0, 0, 0, 0, 0, 728, 0, - 0, 1678, 0, 25, 1679, 1680, 1681, 0, 1682, 1683, - 1684, 1685, 1686, 1687, 729, 0, 2925, 0, 0, 1666, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1678, 0, 0, 1679, 1680, 1681, 0, 1682, 1683, 1684, - 1685, 1686, 1687, 0, 0, 3385, 0, 0, 0, 0, - 0, 0, 0, 730, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 731, 0, 0, 0, 0, 0, 26, - 27, 28, 0, 0, 0, 0, 732, 29, 0, 0, - 30, 733, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1667, 0, 0, 0, - 734, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 1668, 0, 0, 0, 0, 1669, 0, - 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, - 0, 1670, 1671, 735, 0, 0, 0, 736, 36, 0, - 0, 0, 0, 0, 0, 0, 1672, 0, 0, 0, - 37, 0, 0, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1673, 0, 0, 1674, 40, 0, - 0, 0, 0, 0, 42, 0, 0, 0, 0, 43, - 0, 1675, 548, 0, 1676, 0, 0, 0, 737, 0, - 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, - 0, 0, 0, 738, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 46, 0, 0, 0, 739, 0, - 0, 740, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 741, 0, 0, 742, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 743, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1677, 0, 0, 0, 744, 0, - 0, 0, 0, 0, 745, 746, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 747, 0, 0, 0, 0, - 0, 748, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 564, 0, 0, 1678, 0, 0, 1679, 1680, 1681, - 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, 0, 3559, - 119, 120, 121, 122, 123, 124, 125, 126, 565, 127, - 128, 129, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 131, 132, 575, 576, 134, 135, 577, 137, 138, - 139, 578, 579, 580, 581, 582, 583, 145, 146, 147, - 148, 149, 150, 584, 585, 151, 152, 153, 154, 586, - 587, 157, 588, 158, 159, 160, 161, 589, 590, 591, - 592, 593, 165, 166, 167, 168, 169, 594, 171, 172, - 173, 595, 174, 175, 176, 177, 178, 179, 596, 597, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 599, 192, 193, 600, 195, 601, 196, 602, 197, 198, - 199, 200, 201, 202, 603, 604, 203, 204, 205, 206, - 605, 606, 207, 208, 209, 210, 211, 607, 212, 213, - 214, 608, 215, 216, 217, 609, 218, 219, 220, 221, - 610, 223, 224, 225, 226, 227, 228, 611, 612, 230, - 613, 231, 232, 614, 234, 615, 235, 616, 236, 617, - 618, 619, 239, 240, 620, 621, 243, 244, 245, 622, - 623, 624, 248, 249, 625, 250, 251, 252, 253, 254, - 255, 256, 626, 258, 259, 260, 261, 627, 262, 263, - 264, 265, 266, 267, 268, 628, 269, 629, 630, 272, - 273, 274, 275, 276, 631, 632, 633, 634, 635, 280, - 636, 637, 283, 638, 285, 286, 287, 288, 289, 290, - 639, 640, 291, 641, 293, 642, 643, 295, 296, 297, - 298, 299, 300, 301, 302, 644, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 645, 646, 647, 327, - 328, 329, 648, 649, 331, 332, 650, 334, 651, 652, - 336, 653, 338, 339, 340, 654, 341, 342, 655, 656, - 343, 344, 345, 657, 658, 346, 347, 659, 660, 350, - 661, 662, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 663, 664, 665, 666, 365, 366, - 667, 668, 369, 370, 669, 372, 373, 374, 670, 375, - 376, 377, 378, 379, 380, 671, 381, 382, 383, 384, - 385, 672, 387, 388, 389, 390, 673, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 674, 404, 405, 675, 407, 408, 409, 676, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 677, 678, 424, 425, 426, 427, 428, 429, 679, - 431, 432, 680, 681, 434, 435, 682, 437, 683, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 684, 452, 685, 686, 687, 454, 455, 688, - 456, 689, 458, 459, 460, 461, 462, 690, 463, 691, - 692, 693, 694, 466, 467, 695, 469, 696, 697, 471, - 472, 698, 474, 475, 476, 477, 478, 699, 700, 479, - 480, 481, 701, 702, 482, 483, 484, 485, 703, 486, - 487, 488, 489, 490, 704, 705, 493, 706, 494, 707, - 496, 497, 498, 499, 500, 501, 502, 708, 709, 503, - 710, 711, 504, 505, 506, 507, 508, 509, 712, 713, - 714, 715, 716, 717, 718, 719, 720, 721, 722, 521, - 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 2140, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, - 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, - 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, - 154, 155, 156, 157, 0, 158, 159, 160, 161, 162, - 0, 0, 0, 164, 165, 166, 167, 168, 169, 0, - 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, - 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, - 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, - 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, - 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, - 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, - 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, - 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, - 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, - 0, 280, 0, 0, 283, 0, 285, 286, 287, 288, - 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, - 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, - 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, - 0, 335, 336, 337, 338, 339, 340, 0, 341, 342, - 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, - 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, - 365, 366, 367, 0, 369, 370, 371, 372, 373, 374, - 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 0, 0, 434, 435, 436, 437, - 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 535, 452, 453, 0, 0, 454, - 455, 0, 456, 0, 458, 459, 460, 461, 462, 0, - 463, 464, 465, 0, 0, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 476, 477, 478, 0, - 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, - 0, 486, 487, 488, 489, 490, 491, 492, 493, 0, - 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, - 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, - 520, 521, 522, 523, 524, 532, 0, 0, 0, 0, - 0, 0, 0, 0, 2816, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, + 2541, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, - 152, 153, 154, 155, 156, 157, 0, 158, 159, 160, - 161, 162, 0, 0, 0, 164, 165, 166, 167, 168, - 169, 0, 171, 172, 173, 0, 174, 175, 176, 177, - 178, 179, 0, 0, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, - 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, - 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, - 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, - 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, - 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, - 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, - 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, - 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, - 0, 279, 0, 280, 0, 0, 283, 0, 285, 286, - 287, 288, 289, 290, 0, 0, 291, 0, 293, 0, - 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, - 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, - 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, - 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, - 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, - 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, - 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, - 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, - 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, - 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, - 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, - 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, - 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, - 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 980, 1374, 826, - 0, 0, 0, 1066, 0, 0, 2819, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, - 0, 569, 0, 0, 0, 0, 574, 131, 132, 0, - 576, 134, 135, 577, 137, 138, 139, 578, 579, 580, - 581, 582, 0, 145, 146, 147, 148, 149, 150, 0, - 0, 151, 152, 153, 154, 586, 587, 157, 0, 158, - 159, 160, 161, 589, 0, 591, 0, 593, 165, 166, - 167, 168, 169, 594, 171, 172, 173, 0, 174, 175, - 176, 177, 178, 179, 0, 597, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 599, 192, 193, 600, - 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, - 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, - 217, 0, 218, 219, 220, 221, 610, 223, 224, 225, - 226, 227, 228, 611, 1375, 230, 0, 231, 232, 614, - 234, 0, 235, 0, 236, 617, 0, 619, 239, 240, - 620, 621, 243, 244, 245, 0, 623, 624, 248, 249, - 0, 250, 251, 252, 253, 254, 255, 256, 626, 258, - 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, - 268, 0, 269, 629, 630, 272, 273, 274, 275, 276, - 631, 632, 0, 634, 0, 280, 636, 637, 283, 638, - 285, 286, 287, 288, 289, 290, 0, 0, 291, 641, - 293, 642, 0, 295, 296, 297, 298, 299, 300, 301, - 302, 644, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 645, 646, 647, 327, 328, 329, 648, 0, - 331, 332, 650, 334, 0, 652, 336, 653, 338, 339, - 340, 0, 341, 342, 1376, 0, 343, 344, 345, 0, - 0, 346, 347, 659, 660, 350, 661, 662, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 0, 0, 0, 0, 365, 366, 667, 668, 369, 370, - 669, 372, 373, 374, 0, 375, 376, 377, 378, 379, - 380, 0, 381, 382, 383, 384, 385, 672, 387, 388, - 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 675, - 407, 408, 409, 676, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 0, 678, 424, - 425, 426, 427, 428, 429, 679, 431, 432, 0, 681, - 434, 435, 682, 437, 0, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 684, 452, - 685, 0, 0, 454, 455, 0, 456, 689, 458, 459, - 460, 461, 462, 0, 463, 691, 692, 0, 0, 466, - 467, 695, 469, 696, 1377, 471, 472, 698, 474, 475, - 476, 477, 478, 0, 0, 479, 480, 481, 701, 0, - 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, - 704, 705, 493, 0, 494, 707, 496, 497, 498, 499, - 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, - 506, 507, 508, 509, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 521, 522, 523, 524, 0, - 0, 1653, 0, 0, 1654, 0, 1378, 1379, 1655, 1656, - 1657, 1658, 1659, 1660, 1661, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1662, - 0, 0, 0, 0, 2240, 0, 0, 0, 0, 1664, - 1653, 0, 0, 1654, 0, 0, 1665, 1655, 1656, 1657, - 1658, 1659, 1660, 1661, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1662, 0, - 0, 0, 0, 1666, 0, 0, 0, 0, 1664, 1653, - 0, 0, 1654, 0, 0, 1665, 1655, 1656, 1657, 1658, - 1659, 1660, 1661, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1662, 0, 0, - 0, 0, 1666, 0, 0, 0, 0, 1664, 0, 2241, - 0, 0, 0, 0, 1665, 0, 0, 0, 1653, 0, - 0, 1654, 0, 0, 0, 1655, 1656, 1657, 1658, 1659, - 1660, 1661, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1666, 0, 0, 0, 0, 1662, 0, 0, 0, - 1950, 0, 0, 0, 0, 0, 1664, 0, 1653, 0, - 1667, 1654, 0, 1665, 0, 1655, 1656, 1657, 1658, 1659, - 1660, 1661, 0, 0, 0, 0, 0, 1668, 0, 0, - 0, 0, 1669, 0, 0, 0, 1662, 0, 0, 1986, - 1666, 0, 0, 0, 1987, 0, 1664, 0, 0, 1667, - 0, 0, 0, 1665, 0, 1670, 1671, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1668, 0, 0, 0, - 1672, 1669, 0, 0, 0, 0, 0, 3665, 0, 0, - 1666, 0, 0, 0, 0, 0, 0, 0, 1667, 0, - 0, 0, 0, 0, 1670, 1671, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1668, 0, 0, 1673, 1672, - 1669, 1674, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1675, 0, 0, 1676, 0, - 0, 0, 0, 1670, 1671, 0, 0, 1667, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1673, 1672, 0, - 1674, 0, 0, 0, 1668, 0, 0, 0, 0, 1669, - 0, 0, 0, 0, 1675, 0, 0, 1676, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1667, 0, 0, - 0, 0, 1670, 1671, 0, 0, 1673, 0, 0, 1674, - 0, 0, 0, 0, 1668, 0, 0, 1672, 0, 1669, - 0, 0, 0, 1675, 0, 0, 1676, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1670, 1671, 0, 0, 0, 0, 1677, 0, - 0, 0, 0, 0, 0, 1673, 3666, 1672, 1674, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1675, 0, 0, 1676, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1677, 0, 0, - 0, 0, 0, 0, 0, 1673, 0, 0, 1674, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1675, 2244, 0, 1676, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1677, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1957, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1678, 0, - 0, 1679, 1680, 1681, 0, 1682, 1683, 1684, 1685, 1686, - 1687, 0, 0, 0, 0, 1677, 0, 0, 0, 0, - 0, 0, 1653, 0, 0, 1654, 0, 0, 0, 1655, - 1656, 1657, 1658, 1659, 1660, 1661, 0, 1678, 0, 0, - 1679, 1680, 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, - 1662, 0, 0, 0, 1992, 1677, 0, 0, 0, 0, - 1664, 0, 0, 0, 0, 0, 0, 1665, 0, 0, - 0, 0, 0, 0, 0, 0, 1678, 0, 0, 1679, - 1680, 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, - 0, 0, 0, 0, 1666, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1653, 0, 0, 1654, 0, 0, 0, 1655, 1656, 1657, - 1658, 1659, 1660, 1661, 0, 1678, 0, 0, 1679, 1680, - 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, 1662, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1664, 0, - 0, 0, 0, 0, 0, 1665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1678, 0, 0, 1679, 1680, - 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, 0, - 0, 0, 1666, 0, 0, 0, 0, 1653, 0, 0, - 1654, 1667, 0, 0, 1655, 1656, 1657, 1658, 1659, 1660, - 1661, 0, 0, 0, 0, 0, 0, 0, 1668, 0, - 0, 0, 0, 1669, 0, 1662, 0, 0, 0, 1999, - 0, 0, 0, 0, 0, 1664, 0, 0, 0, 0, - 0, 0, 1665, 0, 0, 0, 1670, 1671, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1672, 0, 0, 0, 0, 0, 0, 0, 1666, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1997, 1653, 0, 0, 1654, 1667, - 0, 0, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1673, - 0, 0, 1674, 0, 0, 0, 1668, 0, 0, 0, - 0, 1669, 0, 1662, 0, 0, 1675, 0, 0, 1676, - 0, 0, 0, 1664, 0, 0, 0, 0, 0, 0, - 1665, 0, 0, 0, 1670, 1671, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1672, - 0, 0, 0, 0, 0, 0, 0, 1666, 0, 0, - 0, 0, 0, 0, 0, 0, 1667, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1668, 0, 0, 0, 1673, 1669, 1653, - 1674, 0, 1654, 0, 0, 0, 1655, 1656, 1657, 1658, - 1659, 1660, 1661, 0, 1675, 0, 0, 1676, 0, 0, - 0, 1670, 1671, 0, 0, 0, 0, 1662, 0, 1677, - 0, 0, 0, 0, 0, 0, 1672, 1664, 0, 0, - 0, 0, 0, 0, 1665, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2133, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1667, 0, 0, 0, 0, 0, - 0, 1666, 0, 0, 1673, 0, 0, 1674, 0, 0, - 0, 1668, 0, 0, 0, 0, 1669, 0, 0, 0, - 0, 1675, 0, 0, 1676, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1670, - 1671, 0, 0, 0, 0, 0, 0, 1677, 0, 0, - 0, 0, 0, 0, 1672, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1678, - 0, 0, 1679, 1680, 1681, 0, 1682, 1683, 1684, 1685, - 1686, 1687, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1673, 0, 0, 1674, 0, 0, 1667, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1675, - 0, 0, 1676, 0, 0, 1668, 0, 0, 0, 0, - 1669, 0, 0, 0, 1677, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1670, 1671, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1678, 1672, 0, - 1679, 1680, 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, - 0, 0, 0, 0, 0, 0, 1653, 0, 0, 1654, - 0, 0, 0, 1655, 1656, 1657, 1658, 1659, 1660, 1661, - 0, 0, 0, 0, 0, 0, 1673, 0, 0, 1674, - 0, 0, 0, 0, 1662, 0, 0, 0, 2898, 0, - 0, 0, 1677, 1675, 1664, 0, 1676, 0, 0, 0, - 0, 1665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1678, 0, 0, 1679, 1680, 1681, - 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, 1666, 0, - 0, 0, 0, 0, 0, 0, 1653, 0, 0, 1654, - 0, 0, 0, 1655, 1656, 1657, 1658, 1659, 1660, 1661, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1662, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1664, 0, 0, 0, 0, 0, - 0, 1665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1677, 0, 0, 0, - 0, 0, 1678, 0, 0, 1679, 1680, 1681, 1666, 1682, - 1683, 1684, 1685, 1686, 1687, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1653, 1667, 0, 1654, 0, 0, - 2882, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 0, 0, - 0, 0, 1668, 0, 0, 0, 0, 1669, 0, 0, - 0, 0, 1662, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1664, 0, 0, 0, 0, 0, 0, 1665, - 1670, 1671, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1672, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1666, 0, 0, 0, - 0, 0, 0, 0, 0, 1667, 1678, 0, 0, 1679, - 1680, 1681, 0, 1682, 1683, 1684, 1685, 1686, 1687, 0, - 0, 0, 1668, 1673, 0, 0, 1674, 1669, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1675, 0, 0, 1676, 0, 0, 0, 0, 0, 0, - 1670, 1671, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1653, 1672, 0, 1654, 0, 0, - 0, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1662, 1667, 0, 0, 0, 0, 0, 0, - 0, 0, 1664, 1673, 0, 0, 1674, 0, 0, 1665, - 1668, 0, 0, 0, 0, 1669, 0, 0, 0, 0, - 1675, 0, 0, 1676, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1666, 0, 1861, 1671, - 0, 0, 0, 1677, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1672, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1673, 0, 0, 1674, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1675, 0, - 0, 1676, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1677, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1667, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1668, 0, 0, 1678, 0, 1669, 1679, 1680, 1681, 0, - 1682, 1683, 1684, 1685, 1686, 1687, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1670, 1671, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1672, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1677, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1673, 0, 1678, 1674, 0, 1679, 1680, 1681, 0, - 1682, 1683, 1684, 1685, 1686, 1687, 0, 0, 1675, 0, - 0, 1676, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1678, 0, 0, 1679, 1680, 1681, 0, 1682, 1683, - 1684, 1685, 1686, 1687, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1677, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 564, 0, 2157, 0, 0, - 0, 1678, 0, 0, 1679, 1680, 1681, 0, 1682, 1683, - 1684, 1685, 2261, 1687, 119, 120, 121, 122, 123, 124, - 125, 126, 565, 127, 128, 129, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 131, 132, 575, 576, 134, - 135, 577, 137, 138, 139, 578, 579, 580, 581, 582, - 583, 145, 146, 147, 148, 149, 150, 584, 585, 151, - 152, 153, 154, 586, 587, 157, 588, 158, 159, 160, - 161, 589, 590, 591, 592, 593, 165, 166, 167, 168, - 169, 594, 171, 172, 173, 595, 174, 175, 176, 177, - 178, 179, 596, 597, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 599, 192, 193, 600, 195, 601, - 196, 602, 197, 198, 199, 200, 201, 202, 603, 604, - 203, 204, 205, 206, 605, 606, 207, 208, 209, 210, - 211, 607, 212, 213, 214, 608, 215, 216, 217, 609, - 218, 219, 220, 221, 610, 223, 224, 225, 226, 227, - 228, 611, 612, 230, 613, 231, 232, 614, 234, 615, - 235, 616, 236, 617, 618, 619, 239, 240, 620, 621, - 243, 244, 245, 622, 623, 624, 248, 249, 625, 250, - 251, 252, 253, 254, 255, 256, 626, 258, 259, 260, - 261, 627, 262, 263, 264, 265, 266, 267, 268, 628, - 269, 629, 630, 272, 273, 274, 275, 276, 631, 632, - 633, 634, 635, 280, 636, 637, 283, 638, 285, 286, - 287, 288, 289, 290, 639, 640, 291, 641, 293, 642, - 643, 295, 296, 297, 298, 299, 300, 301, 302, 644, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 645, 646, 647, 327, 328, 329, 648, 649, 331, 332, - 650, 334, 651, 652, 336, 653, 338, 339, 340, 654, - 341, 342, 655, 656, 343, 344, 345, 657, 658, 346, - 347, 659, 660, 350, 661, 662, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 663, 664, - 665, 666, 365, 366, 667, 668, 369, 370, 669, 372, - 373, 374, 670, 375, 376, 377, 378, 379, 380, 671, - 381, 382, 383, 384, 385, 672, 387, 388, 389, 390, - 673, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 674, 404, 405, 675, 407, 408, - 409, 676, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 677, 678, 424, 425, 426, - 427, 428, 429, 679, 431, 432, 680, 681, 434, 435, - 682, 437, 683, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 684, 452, 685, 686, - 687, 454, 455, 688, 456, 689, 458, 459, 460, 461, - 462, 690, 463, 691, 692, 693, 694, 466, 467, 695, - 469, 696, 697, 471, 472, 698, 474, 475, 476, 477, - 478, 699, 700, 479, 480, 481, 701, 702, 482, 483, - 484, 485, 703, 486, 487, 488, 489, 490, 704, 705, - 493, 706, 494, 707, 496, 497, 498, 499, 500, 501, - 502, 708, 709, 503, 710, 711, 504, 505, 506, 507, - 508, 509, 712, 713, 714, 715, 716, 717, 718, 719, - 720, 721, 722, 521, 522, 523, 524, 564, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, - 123, 124, 125, 126, 565, 127, 128, 129, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 131, 132, 575, - 576, 134, 135, 577, 137, 138, 139, 578, 579, 580, - 581, 582, 583, 145, 146, 147, 148, 149, 150, 584, - 585, 151, 152, 153, 154, 586, 587, 157, 588, 158, - 159, 160, 161, 589, 590, 591, 592, 593, 165, 166, - 167, 168, 169, 594, 171, 172, 173, 595, 174, 175, - 176, 177, 178, 179, 596, 597, 181, 182, 183, 184, - 185, 186, 598, 188, 189, 190, 599, 192, 193, 600, - 195, 601, 196, 602, 197, 198, 199, 200, 201, 202, - 603, 604, 203, 204, 205, 206, 605, 606, 207, 208, - 209, 210, 211, 607, 212, 213, 214, 608, 215, 216, - 217, 609, 218, 219, 220, 221, 610, 223, 224, 225, - 226, 227, 228, 611, 612, 230, 613, 231, 232, 614, - 234, 615, 235, 616, 236, 617, 618, 619, 239, 240, - 620, 621, 243, 244, 245, 622, 623, 624, 248, 249, - 625, 250, 251, 252, 253, 254, 255, 256, 626, 258, - 259, 260, 261, 627, 262, 263, 264, 265, 266, 267, - 268, 628, 269, 629, 630, 272, 273, 274, 275, 276, - 631, 632, 633, 634, 635, 280, 636, 637, 283, 638, - 285, 286, 287, 288, 289, 290, 639, 640, 291, 641, - 293, 642, 643, 295, 296, 297, 298, 299, 300, 301, - 302, 644, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 645, 646, 647, 327, 328, 329, 648, 649, - 331, 332, 650, 334, 651, 652, 336, 653, 338, 339, - 340, 654, 341, 342, 655, 656, 343, 344, 345, 657, - 658, 346, 347, 659, 660, 350, 661, 662, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 663, 664, 665, 666, 365, 366, 667, 668, 369, 370, - 669, 372, 373, 374, 670, 375, 376, 377, 378, 379, - 380, 671, 381, 382, 383, 384, 385, 672, 387, 388, - 389, 390, 673, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 674, 404, 405, 675, - 407, 408, 409, 676, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 677, 678, 424, - 425, 426, 427, 428, 429, 679, 431, 432, 680, 681, - 434, 435, 682, 437, 683, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 684, 452, - 685, 686, 687, 454, 455, 688, 456, 689, 458, 459, - 460, 461, 462, 690, 463, 691, 692, 693, 694, 466, - 467, 695, 469, 696, 697, 471, 472, 698, 474, 475, - 476, 477, 478, 699, 700, 479, 480, 481, 701, 702, - 482, 483, 484, 485, 703, 486, 487, 488, 489, 490, - 704, 705, 493, 706, 494, 707, 496, 497, 498, 499, - 500, 501, 502, 708, 709, 503, 710, 711, 504, 505, - 506, 507, 508, 509, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 521, 522, 523, 524, 564, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 565, 127, 128, 129, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 131, - 132, 575, 576, 134, 135, 577, 137, 138, 139, 578, - 579, 580, 581, 582, 583, 145, 146, 147, 148, 149, - 150, 584, 585, 151, 152, 153, 154, 586, 587, 157, - 588, 158, 159, 160, 161, 589, 590, 591, 592, 593, - 165, 166, 167, 168, 169, 594, 171, 172, 173, 595, - 174, 175, 176, 177, 178, 179, 596, 597, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 599, 192, - 193, 600, 195, 601, 196, 602, 197, 198, 199, 200, - 201, 202, 603, 604, 203, 204, 205, 206, 605, 606, - 207, 208, 209, 210, 211, 607, 212, 213, 214, 608, - 215, 216, 217, 609, 218, 219, 220, 221, 610, 223, - 224, 225, 226, 227, 228, 611, 612, 230, 613, 231, - 232, 614, 234, 615, 235, 616, 236, 617, 618, 619, - 239, 240, 620, 621, 243, 244, 245, 622, 623, 624, - 248, 249, 625, 250, 251, 252, 253, 254, 956, 256, - 626, 258, 259, 260, 261, 627, 262, 263, 264, 265, - 266, 267, 268, 628, 269, 629, 630, 272, 273, 274, - 275, 276, 631, 632, 633, 634, 635, 280, 636, 637, - 283, 638, 285, 286, 287, 288, 289, 290, 639, 640, - 291, 641, 293, 642, 643, 295, 296, 297, 298, 299, - 300, 301, 302, 644, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 645, 646, 647, 327, 328, 329, - 648, 649, 331, 332, 650, 334, 651, 652, 336, 653, - 338, 339, 340, 654, 341, 342, 655, 656, 343, 344, - 345, 657, 658, 346, 347, 659, 660, 350, 661, 662, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 663, 664, 665, 666, 365, 366, 667, 668, - 369, 370, 669, 372, 373, 374, 670, 375, 376, 377, - 378, 379, 380, 671, 381, 382, 383, 384, 385, 672, - 387, 388, 389, 390, 673, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 674, 404, - 405, 675, 407, 408, 409, 676, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 677, - 678, 424, 425, 426, 427, 428, 429, 679, 431, 432, - 680, 681, 434, 435, 682, 437, 683, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 684, 452, 685, 686, 687, 454, 455, 688, 456, 689, - 458, 459, 460, 461, 462, 690, 463, 691, 692, 693, - 694, 466, 467, 695, 469, 696, 697, 471, 472, 698, - 474, 475, 476, 477, 478, 699, 700, 479, 480, 481, - 701, 702, 482, 483, 484, 485, 703, 486, 487, 488, - 489, 490, 704, 705, 493, 706, 494, 707, 496, 497, - 498, 499, 500, 501, 502, 708, 709, 503, 710, 711, - 504, 505, 506, 507, 508, 509, 712, 713, 714, 715, - 716, 717, 718, 719, 720, 721, 722, 521, 522, 523, - 524, 564, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 120, 121, 122, 123, 124, 125, 126, 565, 127, - 128, 129, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 131, 132, 575, 576, 134, 135, 577, 137, 138, - 139, 578, 579, 580, 581, 582, 583, 145, 146, 147, - 148, 149, 150, 584, 585, 151, 152, 153, 154, 586, - 587, 157, 588, 158, 159, 160, 161, 589, 590, 591, - 592, 593, 165, 166, 167, 168, 169, 594, 171, 172, - 173, 595, 174, 175, 176, 177, 178, 179, 596, 597, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 599, 192, 193, 600, 195, 601, 196, 602, 197, 198, - 199, 200, 201, 202, 603, 604, 203, 204, 205, 206, - 605, 606, 207, 208, 209, 210, 211, 607, 212, 213, - 214, 608, 215, 216, 217, 609, 218, 219, 220, 221, - 610, 223, 224, 225, 226, 227, 228, 611, 612, 230, - 613, 231, 232, 614, 234, 615, 235, 616, 236, 617, - 618, 619, 239, 240, 620, 621, 243, 244, 245, 622, - 623, 624, 248, 249, 625, 250, 251, 252, 253, 254, - 255, 256, 626, 258, 259, 260, 261, 627, 262, 263, - 264, 265, 266, 267, 268, 628, 269, 629, 630, 272, - 273, 274, 275, 276, 631, 632, 633, 634, 635, 280, - 636, 637, 283, 638, 285, 286, 287, 288, 289, 290, - 639, 640, 291, 641, 293, 642, 643, 295, 296, 297, - 298, 299, 300, 301, 302, 644, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 645, 646, 647, 327, - 328, 329, 648, 649, 331, 332, 650, 334, 651, 652, - 336, 653, 338, 339, 340, 654, 341, 342, 655, 656, - 343, 344, 345, 657, 658, 346, 347, 659, 660, 350, - 661, 662, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 663, 664, 665, 666, 365, 366, - 667, 668, 369, 370, 669, 372, 373, 374, 670, 375, - 376, 377, 378, 379, 380, 671, 381, 382, 383, 384, - 385, 672, 387, 388, 389, 390, 673, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 674, 404, 405, 675, 407, 408, 409, 676, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 677, 678, 424, 425, 426, 427, 428, 429, 679, - 431, 432, 680, 681, 434, 435, 682, 437, 683, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 684, 452, 685, 686, 687, 454, 455, 688, - 456, 689, 458, 459, 460, 461, 462, 690, 463, 691, - 692, 693, 694, 466, 467, 695, 469, 696, 697, 471, - 472, 698, 474, 475, 476, 477, 478, 699, 700, 479, - 480, 481, 701, 702, 482, 483, 484, 485, 703, 486, - 487, 488, 489, 490, 704, 705, 493, 706, 494, 707, - 496, 497, 498, 499, 500, 501, 502, 708, 709, 503, - 710, 711, 504, 505, 506, 507, 508, 509, 712, 713, - 714, 715, 716, 717, 718, 719, 720, 721, 722, 521, - 522, 523, 524, 564, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 120, 121, 122, 2315, 124, 125, 126, - 565, 127, 128, 129, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 131, 132, 575, 576, 134, 135, 577, - 137, 138, 139, 578, 579, 580, 581, 582, 583, 145, - 146, 147, 148, 149, 150, 584, 585, 151, 152, 153, - 154, 586, 587, 157, 588, 158, 159, 160, 161, 589, - 590, 591, 592, 593, 165, 166, 167, 168, 169, 594, - 171, 172, 173, 595, 174, 175, 176, 177, 178, 179, - 596, 597, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 599, 192, 193, 600, 195, 601, 196, 602, - 197, 198, 199, 200, 201, 202, 603, 604, 203, 204, - 205, 206, 605, 606, 207, 208, 209, 2316, 211, 607, - 212, 213, 214, 608, 215, 216, 217, 609, 218, 219, - 220, 221, 610, 223, 224, 225, 226, 227, 228, 611, - 612, 230, 613, 231, 232, 614, 234, 615, 235, 616, - 236, 617, 618, 619, 239, 240, 620, 621, 243, 244, - 245, 622, 623, 624, 248, 249, 625, 250, 251, 252, - 253, 254, 255, 256, 626, 258, 259, 260, 261, 627, - 262, 263, 264, 265, 266, 267, 268, 628, 269, 629, - 630, 272, 273, 274, 275, 276, 631, 632, 633, 634, - 635, 280, 636, 637, 283, 638, 285, 286, 287, 288, - 289, 290, 639, 640, 291, 641, 293, 642, 643, 295, - 296, 297, 298, 299, 300, 301, 302, 644, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 645, 646, - 647, 327, 328, 329, 648, 649, 331, 332, 650, 334, - 651, 652, 336, 653, 338, 339, 340, 654, 341, 342, - 655, 656, 343, 344, 345, 657, 658, 346, 347, 659, - 660, 350, 661, 662, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 663, 664, 665, 666, - 365, 366, 667, 668, 369, 370, 669, 372, 373, 374, - 670, 375, 376, 377, 378, 379, 380, 671, 381, 382, - 383, 384, 385, 672, 387, 388, 389, 390, 673, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 674, 404, 405, 675, 407, 408, 409, 676, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 677, 678, 424, 425, 426, 427, 428, - 2317, 679, 431, 432, 680, 681, 434, 435, 682, 437, - 683, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 684, 452, 685, 686, 687, 454, - 455, 688, 456, 689, 458, 459, 460, 461, 462, 690, - 463, 691, 692, 693, 694, 466, 467, 695, 469, 696, - 697, 471, 472, 698, 474, 475, 476, 477, 478, 699, - 700, 479, 480, 481, 701, 702, 482, 483, 484, 485, - 703, 486, 487, 488, 489, 490, 704, 705, 493, 706, - 494, 707, 496, 497, 498, 499, 500, 501, 502, 708, - 709, 503, 710, 711, 504, 505, 506, 507, 508, 509, - 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, - 722, 521, 522, 523, 524, 980, 0, 826, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, - 125, 126, 0, 127, 128, 129, 0, 0, 0, 569, - 0, 0, 0, 0, 574, 131, 132, 0, 576, 134, - 135, 577, 137, 138, 139, 578, 579, 580, 581, 582, - 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, - 152, 153, 154, 586, 587, 157, 0, 158, 159, 160, - 161, 589, 0, 591, 0, 593, 165, 166, 167, 168, - 169, 594, 171, 172, 173, 0, 174, 175, 176, 177, - 178, 179, 0, 597, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 599, 192, 193, 600, 195, 0, + 152, 153, 154, 155, 156, 157, 0, 158, 159, 160, + 161, 162, 0, 0, 0, 164, 165, 166, 167, 168, + 169, 0, 171, 172, 173, 0, 174, 175, 176, 177, + 178, 179, 0, 0, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, - 218, 219, 220, 221, 610, 223, 224, 225, 226, 227, - 228, 611, 1375, 230, 0, 231, 232, 614, 234, 0, - 235, 0, 236, 617, 0, 619, 239, 240, 620, 621, - 243, 244, 245, 0, 623, 624, 248, 249, 0, 250, - 251, 252, 253, 254, 255, 256, 626, 258, 259, 260, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, + 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, + 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, + 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, - 269, 629, 630, 272, 273, 274, 275, 276, 631, 632, - 0, 634, 0, 280, 636, 637, 283, 638, 285, 286, - 287, 288, 289, 290, 0, 0, 291, 641, 293, 642, - 0, 295, 296, 297, 298, 299, 300, 301, 302, 644, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 645, 646, 647, 327, 328, 329, 648, 0, 331, 332, - 650, 334, 0, 652, 336, 653, 338, 339, 340, 0, - 341, 342, 1376, 0, 343, 344, 345, 0, 0, 346, - 347, 659, 660, 350, 661, 662, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, - 0, 0, 365, 366, 667, 668, 369, 370, 669, 372, - 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, - 381, 382, 383, 384, 385, 672, 387, 388, 389, 390, - 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 675, 407, 408, - 409, 676, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 0, 678, 424, 425, 426, - 427, 428, 429, 679, 431, 432, 0, 681, 434, 435, - 682, 437, 0, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 684, 452, 685, 0, - 0, 454, 455, 0, 456, 689, 458, 459, 460, 461, - 462, 0, 463, 691, 692, 0, 0, 466, 467, 695, - 469, 696, 1377, 471, 472, 698, 474, 475, 476, 477, - 478, 0, 0, 479, 480, 481, 701, 0, 482, 483, - 484, 485, 0, 486, 487, 488, 489, 490, 704, 705, - 493, 0, 494, 707, 496, 497, 498, 499, 500, 501, - 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, - 508, 509, 712, 713, 714, 715, 716, 717, 718, 719, - 720, 721, 722, 521, 522, 523, 524, 980, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 127, 128, 129, 3, 4, - 0, 569, 0, 0, 0, 0, 574, 131, 132, 0, - 576, 134, 135, 577, 137, 138, 139, 578, 579, 580, - 581, 582, 0, 145, 146, 147, 148, 149, 150, 0, - 0, 151, 152, 153, 154, 586, 587, 157, 0, 158, - 159, 160, 161, 589, 0, 591, 0, 593, 165, 166, - 167, 168, 169, 594, 171, 172, 173, 0, 174, 175, - 176, 177, 178, 179, 0, 597, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 599, 192, 193, 600, - 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, - 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, - 217, 0, 218, 219, 220, 221, 610, 223, 224, 225, - 226, 227, 228, 611, 0, 230, 0, 231, 232, 614, - 234, 0, 235, 0, 236, 617, 0, 619, 239, 240, - 620, 621, 243, 244, 245, 0, 623, 624, 248, 249, - 0, 250, 251, 252, 253, 254, 255, 256, 626, 258, - 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, - 268, 0, 269, 629, 630, 272, 273, 274, 275, 276, - 631, 632, 0, 634, 0, 280, 636, 637, 283, 638, - 285, 286, 287, 288, 289, 290, 0, 0, 291, 641, - 293, 642, 0, 295, 296, 297, 298, 299, 300, 301, - 302, 644, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 645, 646, 647, 327, 328, 329, 648, 0, - 331, 332, 650, 334, 0, 652, 336, 653, 338, 339, - 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, - 0, 346, 347, 659, 660, 350, 661, 662, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 0, 0, 0, 0, 365, 366, 667, 668, 369, 370, - 669, 372, 373, 374, 0, 375, 376, 377, 378, 379, - 380, 0, 381, 382, 383, 384, 385, 672, 387, 388, - 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 675, - 407, 408, 409, 676, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 0, 678, 424, - 425, 426, 427, 428, 429, 679, 431, 432, 0, 681, - 434, 435, 682, 437, 0, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 684, 452, - 685, 0, 0, 454, 455, 0, 456, 689, 458, 459, - 460, 461, 462, 0, 463, 691, 692, 0, 0, 466, - 467, 695, 469, 696, 0, 471, 472, 698, 474, 475, - 476, 477, 478, 0, 0, 479, 480, 481, 701, 0, - 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, - 704, 705, 493, 0, 494, 707, 496, 497, 498, 499, - 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, - 506, 507, 508, 509, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 521, 522, 523, 524, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, + 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 0, 279, 0, 280, 0, 0, 283, 0, 285, 286, + 287, 0, 288, 289, 290, 0, 0, 291, 0, 293, + 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, + 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, + 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, + 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, + 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, + 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, + 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, + 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, + 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, + 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, + 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, + 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, + 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, + 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, + 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2683, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, - 0, 0, 0, 0, 0, 0, 0, 0, 130, 131, - 132, 0, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 0, 145, 146, 147, 148, 149, - 150, 0, 795, 151, 152, 153, 154, 155, 156, 157, - 0, 158, 159, 160, 161, 796, 0, 797, 0, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 0, - 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, + 141, 0, 143, 144, 0, 145, 146, 147, 148, 149, + 150, 0, 0, 151, 152, 153, 154, 155, 156, 157, + 0, 158, 159, 160, 161, 162, 0, 0, 0, 164, + 165, 166, 167, 168, 169, 0, 171, 172, 173, 0, + 174, 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 798, 0, 230, 0, 231, - 232, 233, 234, 0, 235, 0, 236, 237, 0, 238, - 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 231, + 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, + 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, - 266, 267, 268, 0, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 0, 279, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 0, 0, - 291, 292, 293, 294, 0, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 0, 331, 332, 333, 334, 0, 800, 336, 337, - 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, - 345, 0, 0, 346, 347, 348, 349, 350, 351, 802, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 0, 0, 0, 0, 365, 366, 803, 368, - 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, - 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, - 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 0, 433, 434, 435, 436, 437, 0, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 805, 0, 0, 454, 455, 0, 456, 457, - 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, - 0, 466, 467, 806, 469, 807, 0, 471, 472, 808, - 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, - 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, - 489, 490, 491, 492, 493, 0, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 118, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, + 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, + 283, 0, 285, 286, 287, 0, 288, 289, 290, 0, + 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, + 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, + 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, + 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, + 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, + 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, + 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, + 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, + 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, + 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, + 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, + 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, + 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, + 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, + 523, 524, 532, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2906, 0, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, + 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, + 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, + 154, 155, 156, 157, 0, 158, 159, 160, 161, 162, + 0, 0, 0, 164, 165, 166, 167, 168, 169, 0, + 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, + 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, + 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, + 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, + 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, + 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, + 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, + 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, + 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, + 0, 280, 0, 0, 283, 0, 285, 286, 287, 0, + 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, + 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 0, 326, 327, 328, 329, 330, 0, 331, 332, 0, + 334, 0, 335, 336, 337, 338, 339, 340, 0, 341, + 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, + 348, 0, 350, 0, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, + 0, 365, 366, 367, 0, 369, 370, 371, 372, 373, + 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 0, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 0, 0, 434, 435, 436, + 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 535, 452, 453, 0, 0, + 454, 455, 0, 456, 0, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 0, 0, 466, 467, 468, 469, + 470, 0, 471, 472, 473, 474, 475, 476, 477, 478, + 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, + 485, 0, 486, 487, 488, 489, 490, 491, 492, 493, + 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, + 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, + 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3383, 0, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, + 0, 134, 135, 0, 137, 138, 139, 140, 141, 0, + 143, 144, 0, 145, 146, 147, 148, 149, 150, 0, + 0, 151, 152, 153, 154, 155, 156, 157, 0, 158, + 159, 160, 161, 162, 0, 0, 0, 164, 165, 166, + 167, 168, 169, 0, 171, 172, 173, 0, 174, 175, + 176, 177, 178, 179, 0, 0, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, + 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, + 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, + 217, 0, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, + 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, + 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, + 0, 250, 251, 252, 253, 254, 255, 256, 0, 258, + 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, + 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, + 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, + 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, + 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, + 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, + 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, + 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, + 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, + 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, + 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, + 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, + 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, + 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, + 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, + 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, + 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, + 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, + 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2239, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, - 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 0, 145, 146, 147, + 0, 131, 132, 0, 0, 134, 135, 0, 137, 138, + 139, 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, 154, 155, - 156, 157, 0, 158, 159, 160, 161, 162, 0, 163, - 0, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, + 156, 157, 0, 158, 159, 160, 161, 162, 0, 0, + 0, 164, 165, 166, 167, 168, 169, 0, 171, 172, + 173, 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, 230, - 0, 231, 232, 233, 234, 0, 235, 0, 236, 237, - 0, 238, 239, 240, 241, 242, 243, 244, 245, 0, + 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, + 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, - 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, + 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 0, 0, 291, 292, 293, 294, 0, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 0, 0, 283, 0, 285, 286, 287, 0, 288, 289, + 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, + 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 0, 326, + 327, 328, 329, 330, 0, 331, 332, 0, 334, 0, + 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, + 0, 343, 344, 345, 0, 0, 346, 347, 348, 0, + 350, 0, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, + 366, 367, 0, 369, 370, 371, 372, 373, 374, 0, + 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 0, 404, 405, 0, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 0, 0, 434, 435, 436, 437, 0, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 535, 452, 453, 0, 0, 454, 455, + 0, 456, 0, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 0, 0, 466, 467, 468, 469, 470, 0, + 471, 472, 473, 474, 475, 476, 477, 478, 0, 0, + 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, + 486, 487, 488, 489, 490, 491, 492, 493, 0, 494, + 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, + 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, + 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, + 521, 522, 523, 524, 3036, 1376, 826, 0, 0, 2107, + 1066, 0, 0, 0, 0, 0, 2108, 2109, 0, 0, + 3238, 2110, 2111, 2112, 119, 120, 121, 122, 123, 124, + 125, 126, 564, 127, 128, 129, 565, 566, 567, 3037, + 569, 570, 571, 572, 3038, 131, 132, 574, 3039, 134, + 135, 3040, 137, 138, 139, 0, 1520, 3041, 1522, 1523, + 582, 145, 146, 147, 148, 149, 150, 583, 584, 151, + 152, 153, 154, 1524, 1525, 157, 587, 158, 159, 160, + 161, 0, 589, 3042, 591, 3043, 165, 166, 167, 168, + 169, 3044, 171, 172, 173, 594, 174, 175, 176, 177, + 178, 179, 595, 3045, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 1530, 192, 193, 1531, 195, 600, + 196, 601, 197, 198, 199, 200, 201, 202, 602, 603, + 203, 204, 205, 206, 604, 605, 207, 208, 1079, 210, + 211, 606, 212, 213, 214, 607, 215, 216, 217, 608, + 218, 219, 220, 221, 0, 223, 224, 225, 226, 227, + 228, 0, 611, 230, 612, 231, 232, 1532, 234, 614, + 235, 615, 236, 3046, 617, 3047, 239, 240, 3048, 3049, + 243, 244, 245, 621, 0, 0, 248, 249, 624, 250, + 251, 252, 253, 254, 255, 256, 3050, 258, 259, 260, + 261, 626, 262, 263, 264, 265, 266, 267, 268, 627, + 269, 3051, 0, 272, 273, 274, 275, 276, 1538, 1539, + 632, 1540, 634, 280, 3052, 3053, 283, 3054, 285, 286, + 287, 638, 288, 289, 290, 639, 640, 291, 3055, 293, + 3056, 643, 295, 296, 297, 298, 299, 300, 301, 302, + 3057, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 1547, 3058, 1549, 327, 328, 329, 3059, 649, 331, + 332, 3060, 334, 651, 0, 336, 1551, 338, 339, 340, + 654, 341, 342, 655, 656, 3061, 344, 345, 657, 658, + 346, 347, 0, 3062, 350, 3063, 0, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 663, + 664, 665, 666, 365, 366, 0, 3064, 369, 370, 0, + 372, 373, 374, 670, 375, 376, 377, 378, 379, 380, + 671, 381, 382, 383, 384, 385, 1555, 387, 388, 389, + 390, 673, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 674, 404, 405, 3065, 407, + 408, 409, 1557, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 677, 3066, 424, 425, + 426, 427, 428, 429, 3067, 431, 432, 680, 3068, 434, + 435, 1561, 437, 683, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 3069, 452, 0, + 686, 687, 454, 455, 688, 456, 3070, 458, 459, 460, + 461, 462, 690, 463, 1564, 1565, 693, 694, 466, 467, + 0, 469, 0, 697, 471, 472, 3071, 474, 475, 476, + 477, 478, 3072, 700, 479, 480, 481, 3073, 702, 482, + 483, 484, 485, 703, 486, 487, 488, 489, 490, 0, + 1569, 493, 706, 494, 3074, 496, 497, 498, 499, 500, + 501, 502, 708, 709, 503, 710, 711, 504, 505, 506, + 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 521, 522, 523, 524, 0, 532, + 0, 2113, 2114, 2115, 2107, 3075, 3076, 2118, 2119, 2120, + 2121, 2108, 2109, 0, 0, 0, 2110, 2111, 2112, 119, + 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, + 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, + 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, + 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, + 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, + 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, + 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, + 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, + 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, + 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, + 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, + 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, + 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, + 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 0, 331, 332, 333, 334, 0, 335, + 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, + 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, - 343, 344, 345, 0, 0, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 0, 375, + 367, 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 0, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 0, 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 0, 433, 434, 435, 436, 437, 0, 438, + 431, 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 0, 0, 454, 455, 0, - 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 449, 450, 535, 452, 453, 0, 0, 454, 455, 0, + 456, 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, - 487, 488, 489, 490, 491, 492, 493, 0, 494, 495, + 487, 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, - 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, + 522, 523, 524, 0, 0, 0, 2113, 2114, 2115, 0, + 2116, 2117, 2118, 2119, 2120, 2121, 1656, 0, 0, 1657, + 0, 0, 0, 1658, 1659, 1660, 1661, 0, 1662, 1663, + 1664, 0, 0, 0, 1656, 0, 0, 1657, 0, 0, + 0, 1658, 1659, 1660, 1661, 1665, 1662, 1663, 1664, 0, + 0, 0, 0, 0, 0, 1667, 0, 0, 0, 0, + 0, 0, 1668, 1665, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1667, 0, 0, 0, 0, 0, 0, + 1668, 0, 0, 1656, 0, 0, 1657, 0, 0, 1669, + 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1669, 0, 0, + 0, 0, 1665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1667, 1656, 0, 0, 1657, 0, 0, 1668, + 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1665, 0, 0, 0, 1669, 0, 0, 0, + 0, 0, 1667, 0, 0, 0, 0, 0, 0, 1668, + 1656, 0, 0, 1657, 0, 0, 0, 1658, 1659, 1660, + 1661, 0, 1662, 1663, 1664, 0, 1670, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1669, 0, 0, 1665, + 0, 0, 0, 1671, 1670, 0, 0, 0, 1672, 1667, + 0, 0, 0, 0, 0, 0, 1668, 0, 0, 0, + 0, 1671, 0, 0, 0, 0, 1672, 0, 0, 0, + 0, 1673, 1674, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1669, 0, 0, 0, 1675, 0, 1673, + 1674, 0, 0, 1670, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1675, 0, 0, 0, 0, + 1671, 0, 0, 0, 0, 1672, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1676, 0, 0, 1677, 0, + 0, 0, 0, 1670, 0, 0, 0, 0, 1673, 1674, + 0, 0, 1678, 1676, 0, 1679, 1677, 0, 0, 0, + 1671, 0, 0, 0, 1675, 1672, 0, 0, 0, 0, + 1678, 0, 0, 1679, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1673, 1674, + 1670, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1676, 0, 1675, 1677, 0, 1671, 0, 0, + 0, 0, 1672, 0, 0, 0, 0, 0, 0, 1678, + 0, 0, 1679, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1673, 1674, 0, 0, 0, + 0, 0, 1676, 0, 0, 1677, 0, 0, 0, 0, + 0, 1675, 0, 0, 0, 1680, 0, 0, 0, 1678, + 0, 0, 1679, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1680, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1676, + 0, 0, 1677, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1678, 0, 0, 1679, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1680, 0, 0, 1656, 0, 0, 1657, 0, + 0, 0, 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1665, 0, 0, 0, 0, 0, + 0, 0, 1680, 0, 1667, 1681, 0, 0, 1682, 1683, + 1684, 1668, 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, + 0, 0, 2607, 1681, 0, 0, 1682, 1683, 1684, 0, + 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, 1669, 0, + 2830, 0, 0, 0, 0, 0, 0, 0, 0, 1680, + 0, 0, 0, 0, 0, 0, 0, 1656, 0, 0, + 1657, 0, 0, 0, 1658, 1659, 1660, 1661, 0, 1662, + 1663, 1664, 1681, 0, 0, 1682, 1683, 1684, 0, 1685, + 1686, 1687, 1688, 1689, 1690, 0, 1665, 0, 0, 2897, + 0, 0, 0, 0, 0, 0, 1667, 0, 0, 0, + 0, 0, 0, 1668, 0, 0, 0, 0, 0, 0, + 0, 0, 1681, 0, 0, 1682, 1683, 1684, 0, 1685, + 1686, 1687, 1688, 1689, 1690, 0, 0, 0, 0, 2910, + 1669, 0, 0, 0, 0, 1670, 1656, 0, 0, 1657, + 0, 0, 0, 1658, 1659, 1660, 1661, 0, 1662, 1663, + 1664, 0, 1671, 0, 0, 0, 0, 1672, 0, 1681, + 0, 0, 1682, 1683, 1684, 1665, 1685, 1686, 1687, 1688, + 1689, 1690, 0, 0, 0, 1667, 2982, 0, 0, 0, + 1673, 1674, 1668, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1675, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1669, + 0, 1656, 0, 0, 1657, 0, 0, 0, 1658, 1659, + 1660, 1661, 0, 1662, 1663, 1664, 0, 1670, 0, 0, + 0, 0, 0, 0, 1676, 0, 0, 1677, 0, 0, + 1665, 0, 0, 0, 1671, 0, 0, 0, 0, 1672, + 1667, 1678, 0, 0, 1679, 0, 0, 1668, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1673, 1674, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1669, 0, 0, 0, 1675, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1670, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1671, 0, 0, 1676, 0, 1672, 1677, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1678, 0, 0, 1679, 0, 0, 0, + 0, 1673, 1674, 0, 1680, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1656, 0, 1675, 1657, 0, + 0, 0, 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, + 0, 1670, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1665, 0, 0, 0, 1671, 0, + 0, 0, 0, 1672, 1667, 1676, 0, 0, 1677, 0, + 0, 1668, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1678, 0, 0, 1679, 1673, 1674, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1669, 0, + 0, 0, 1675, 0, 0, 0, 1680, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1681, 0, 0, 1682, 1683, 1684, + 0, 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, 0, + 1676, 3230, 0, 1677, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1678, 0, 0, + 1679, 0, 0, 0, 0, 0, 0, 0, 0, 1656, + 0, 0, 1657, 0, 0, 0, 1658, 1659, 1660, 1661, + 0, 1662, 1663, 1664, 0, 1680, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1670, 0, 0, 1665, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1667, 0, + 0, 0, 1671, 0, 0, 1668, 1681, 1672, 0, 1682, + 1683, 1684, 0, 1685, 1686, 1687, 1688, 1689, 1690, 0, + 0, 0, 0, 3237, 0, 0, 1656, 0, 0, 1657, + 1673, 1674, 1669, 1658, 1659, 1660, 1661, 0, 1662, 1663, + 1664, 0, 0, 0, 0, 0, 1675, 0, 0, 0, + 1680, 0, 0, 0, 0, 1665, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1667, 0, 0, 0, 0, + 0, 0, 1668, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1676, 1681, 0, 1677, 1682, 1683, + 1684, 0, 1685, 1686, 1687, 1688, 1689, 1690, 0, 1669, + 0, 1678, 3406, 0, 1679, 0, 0, 0, 0, 0, + 0, 0, 0, 1656, 0, 0, 1657, 0, 0, 0, + 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, 0, 1670, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1665, 0, 0, 0, 1671, 0, 0, 0, + 0, 1672, 1667, 0, 0, 0, 0, 0, 0, 1668, + 1681, 0, 0, 1682, 1683, 1684, 0, 1685, 1686, 1687, + 1688, 1689, 1690, 0, 1673, 1674, 0, 3430, 0, 0, + 0, 0, 0, 0, 0, 0, 1669, 0, 0, 0, + 1675, 0, 0, 0, 0, 0, 1670, 0, 0, 0, + 0, 0, 0, 0, 1680, 0, 0, 0, 0, 0, + 0, 0, 0, 1671, 0, 0, 0, 0, 1672, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1676, 0, + 0, 1677, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1673, 1674, 0, 0, 1678, 0, 0, 1679, 0, + 0, 0, 0, 0, 0, 0, 0, 1675, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1670, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1676, 0, 0, 1677, 0, + 1671, 0, 0, 0, 0, 1672, 0, 0, 0, 0, + 0, 0, 1678, 0, 1681, 1679, 0, 1682, 1683, 1684, + 0, 1685, 1686, 1687, 1688, 1689, 1690, 0, 1673, 1674, + 0, 3531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1675, 0, 0, 0, 1680, 0, + 0, 0, 0, 0, 0, 0, 0, 1656, 0, 0, + 1657, 0, 0, 0, 1658, 1659, 1660, 1661, 0, 1662, + 1663, 1664, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1676, 0, 0, 1677, 1665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1667, 0, 0, 1678, + 0, 0, 1679, 1668, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1680, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1669, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1656, 0, 0, 1657, 0, 0, 0, + 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, 1681, 0, + 0, 1682, 1683, 1684, 0, 1685, 1686, 1687, 1688, 1689, + 1690, 0, 1665, 0, 0, 3587, 0, 0, 0, 0, + 0, 0, 1667, 0, 0, 1656, 0, 0, 1657, 1668, + 0, 0, 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, + 0, 0, 1680, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1665, 0, 1669, 0, 0, 0, + 0, 0, 0, 0, 1667, 1681, 0, 1670, 1682, 1683, + 1684, 1668, 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, + 0, 0, 3609, 0, 1671, 0, 0, 0, 0, 1672, + 0, 0, 0, 0, 0, 0, 0, 0, 1669, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1673, 1674, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1675, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1681, 1670, 0, 1682, 1683, 1684, 0, 1685, + 1686, 1687, 1688, 1689, 1690, 0, 1676, 1851, 0, 1677, + 1671, 0, 0, 0, 0, 1672, 0, 0, 0, 0, + 0, 0, 0, 1678, 0, 0, 1679, 0, 0, 0, + 0, 0, 0, 0, 0, 1670, 0, 0, 1673, 1674, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1671, 0, 1675, 0, 0, 1672, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1673, 1674, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1676, 0, 0, 1677, 1675, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1678, + 0, 0, 1679, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1680, 0, 0, 0, + 0, 0, 0, 0, 1676, 0, 0, 1677, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1678, 0, 0, 1679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, - 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, - 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, - 154, 155, 156, 157, 1785, 158, 159, 160, 161, 162, - 0, 0, 1786, 164, 165, 166, 167, 168, 169, 0, - 171, 172, 173, 1787, 174, 175, 176, 177, 178, 179, - 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, - 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, - 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, - 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 0, 230, 0, 231, 232, 233, 234, 0, 235, 1788, - 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, - 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, - 253, 254, 1789, 256, 0, 258, 259, 260, 261, 0, - 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, - 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, - 0, 280, 0, 0, 283, 0, 285, 286, 287, 288, - 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, - 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, - 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, - 0, 335, 336, 337, 338, 339, 340, 0, 341, 342, - 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, - 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, - 365, 366, 367, 0, 369, 370, 371, 372, 373, 374, - 1790, 375, 376, 377, 378, 379, 380, 0, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 0, 404, 405, 0, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 0, 0, 434, 435, 436, 437, - 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 535, 452, 453, 0, 0, 454, - 455, 0, 456, 0, 458, 459, 460, 461, 462, 0, - 463, 464, 465, 0, 0, 466, 467, 468, 469, 470, - 0, 471, 472, 473, 474, 475, 476, 477, 478, 0, - 1791, 479, 480, 481, 0, 0, 482, 483, 484, 485, - 0, 486, 487, 488, 489, 490, 491, 492, 493, 0, - 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, - 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, - 520, 521, 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1680, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1681, 0, 0, 1682, + 1683, 1684, 0, 1685, 1686, 1687, 1688, 1689, 1690, 0, + 0, 2931, 0, 0, 1680, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1681, 0, 0, 1682, 1683, 1684, 0, 1685, + 1686, 1687, 1688, 1689, 1690, 0, 0, 3396, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 563, 0, 0, 0, 1681, 0, 0, 1682, 1683, 1684, + 0, 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, 3571, + 119, 120, 121, 122, 123, 124, 125, 126, 564, 127, + 128, 129, 565, 566, 567, 568, 569, 570, 571, 572, + 573, 131, 132, 574, 575, 134, 135, 576, 137, 138, + 139, 577, 578, 579, 580, 581, 582, 145, 146, 147, + 148, 149, 150, 583, 584, 151, 152, 153, 154, 585, + 586, 157, 587, 158, 159, 160, 161, 588, 589, 590, + 591, 592, 165, 166, 167, 168, 169, 593, 171, 172, + 173, 594, 174, 175, 176, 177, 178, 179, 595, 596, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 598, 192, 193, 599, 195, 600, 196, 601, 197, 198, + 199, 200, 201, 202, 602, 603, 203, 204, 205, 206, + 604, 605, 207, 208, 209, 210, 211, 606, 212, 213, + 214, 607, 215, 216, 217, 608, 218, 219, 220, 221, + 609, 223, 224, 225, 226, 227, 228, 610, 611, 230, + 612, 231, 232, 613, 234, 614, 235, 615, 236, 616, + 617, 618, 239, 240, 619, 620, 243, 244, 245, 621, + 622, 623, 248, 249, 624, 250, 251, 252, 253, 254, + 255, 256, 625, 258, 259, 260, 261, 626, 262, 263, + 264, 265, 266, 267, 268, 627, 269, 628, 629, 272, + 273, 274, 275, 276, 630, 631, 632, 633, 634, 280, + 635, 636, 283, 637, 285, 286, 287, 638, 288, 289, + 290, 639, 640, 291, 641, 293, 642, 643, 295, 296, + 297, 298, 299, 300, 301, 302, 644, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 645, 646, 647, + 327, 328, 329, 648, 649, 331, 332, 650, 334, 651, + 652, 336, 653, 338, 339, 340, 654, 341, 342, 655, + 656, 343, 344, 345, 657, 658, 346, 347, 659, 660, + 350, 661, 662, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 663, 664, 665, 666, 365, + 366, 667, 668, 369, 370, 669, 372, 373, 374, 670, + 375, 376, 377, 378, 379, 380, 671, 381, 382, 383, + 384, 385, 672, 387, 388, 389, 390, 673, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 674, 404, 405, 675, 407, 408, 409, 676, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 677, 678, 424, 425, 426, 427, 428, 429, + 679, 431, 432, 680, 681, 434, 435, 682, 437, 683, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 684, 452, 685, 686, 687, 454, 455, + 688, 456, 689, 458, 459, 460, 461, 462, 690, 463, + 691, 692, 693, 694, 466, 467, 695, 469, 696, 697, + 471, 472, 698, 474, 475, 476, 477, 478, 699, 700, + 479, 480, 481, 701, 702, 482, 483, 484, 485, 703, + 486, 487, 488, 489, 490, 704, 705, 493, 706, 494, + 707, 496, 497, 498, 499, 500, 501, 502, 708, 709, + 503, 710, 711, 504, 505, 506, 507, 508, 509, 712, + 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, + 521, 522, 523, 524, 532, 0, 0, 0, 0, 0, + 0, 0, 0, 2146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, - 152, 153, 154, 155, 156, 157, 1785, 158, 159, 160, + 152, 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, 168, - 169, 0, 171, 172, 173, 1787, 174, 175, 176, 177, + 169, 0, 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, @@ -9823,162 +8987,13 @@ static const yytype_int16 yytable[] = 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, - 235, 1788, 236, 0, 0, 0, 239, 240, 533, 0, + 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, 286, - 287, 288, 289, 290, 0, 0, 291, 0, 293, 2406, - 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, - 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, - 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, - 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, - 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, - 373, 374, 1790, 375, 376, 377, 378, 379, 380, 0, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, - 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, - 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, - 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, - 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, - 478, 0, 1791, 479, 480, 481, 0, 0, 482, 483, - 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, - 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, - 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, - 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 532, 0, 558, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 127, 128, 129, 3, 4, - 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, - 0, 134, 135, 0, 137, 138, 139, 140, 141, 0, - 143, 144, 0, 145, 146, 147, 148, 149, 150, 0, - 0, 151, 152, 153, 154, 155, 156, 157, 0, 158, - 159, 160, 161, 162, 0, 0, 0, 164, 165, 166, - 167, 168, 169, 0, 171, 172, 173, 0, 174, 175, - 176, 177, 178, 179, 0, 0, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, - 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, - 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, - 217, 0, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, - 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, - 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, - 0, 250, 251, 252, 253, 254, 255, 256, 0, 258, - 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, - 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, - 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, - 285, 286, 287, 288, 289, 290, 0, 0, 291, 0, - 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, - 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, - 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, - 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, - 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, - 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, - 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, - 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, - 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, - 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, - 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, - 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, - 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, - 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, - 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 1513, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, - 0, 0, 0, 1514, 0, 0, -836, 0, 1515, 131, - 132, 0, 1516, 134, 135, 1517, 137, 138, 139, 0, - 1518, 1519, 1520, 1521, 0, 145, 146, 147, 148, 149, - 150, 0, 0, 151, 152, 153, 154, 1522, 1523, 157, - 0, 158, 159, 160, 161, 0, 0, 1524, 0, 1525, - 165, 166, 167, 168, 169, 1526, 171, 172, 173, 0, - 174, 175, 176, 177, 178, 179, 0, 1527, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 1528, 192, - 193, 1529, 195, 0, 196, 0, 197, 198, 199, 200, - 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, - 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, - 215, 216, 217, 0, 218, 219, 220, 221, 0, 223, - 224, 225, 226, 227, 228, 0, 0, 230, 0, 231, - 232, 1530, 234, 0, 235, 0, 236, 1531, 0, 1532, - 239, 240, -836, 1533, 243, 244, 245, 0, 0, 0, - 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, - 1534, 258, 259, 260, 261, 0, 262, 263, 264, 265, - 266, 267, 268, 0, 269, 1535, 0, 272, 273, 274, - 275, 276, 1536, 1537, 0, 1538, 0, 280, 1539, 1540, - 283, 1541, 285, 286, 287, 288, 289, 290, 0, 0, - 291, 1542, 293, 1543, 0, 295, 296, 297, 298, 299, - 300, 301, 302, 1544, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 1545, 1546, 1547, 327, 328, 329, - 0, 0, 331, 332, 1548, 334, 0, 0, 336, 1549, - 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, - 345, 0, 0, 346, 347, 0, 1550, 350, 1551, 0, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 0, 0, 0, 0, 365, 366, 0, 1552, - 369, 370, 0, 372, 373, 374, 0, 375, 376, 377, - 378, 379, 380, 0, 381, 382, 383, 384, 385, 1553, - 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 1554, 407, 408, 409, 1555, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, - 1556, 424, 425, 426, 427, 428, 429, 1557, 431, 432, - 0, 1558, 434, 435, 1559, 437, 0, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 1560, 452, 0, 0, 0, 454, 455, 0, 456, 1561, - 458, 459, 460, 461, 462, 0, 463, 1562, 1563, 0, - 0, 466, 467, 0, 469, 0, 0, 471, 472, 1564, - 474, 475, 476, 477, 478, 1565, 0, 479, 480, 481, - 1566, 0, 482, 483, 484, 485, 0, 486, 487, 488, - 489, 490, 0, 1567, 493, 0, 494, 1568, 496, 497, - 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, - 504, 505, 506, 507, 508, 509, 532, 0, 558, 0, - 0, 0, 0, 0, 0, 0, 0, 521, 522, 523, - 524, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 559, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, - 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, - 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, - 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, - 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, - 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, - 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, - 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, - 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, + 287, 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, @@ -9988,7 +9003,7 @@ static const yytype_int16 yytable[] = 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, - 560, 373, 374, 0, 375, 376, 377, 378, 379, 380, + 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, @@ -10006,89 +9021,861 @@ static const yytype_int16 yytable[] = 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, - 558, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, - 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, - 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, - 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, - 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, - 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, - 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, - 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, - 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, - 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, - 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, - 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, - 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, - 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, - 0, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, + 0, 0, 0, 0, 0, 0, 0, 2823, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, + 141, 0, 143, 144, 0, 145, 146, 147, 148, 149, + 150, 0, 0, 151, 152, 153, 154, 155, 156, 157, + 0, 158, 159, 160, 161, 162, 0, 0, 0, 164, + 165, 166, 167, 168, 169, 0, 171, 172, 173, 0, + 174, 175, 176, 177, 178, 179, 0, 0, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, + 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, + 215, 216, 217, 0, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 231, + 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, + 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, + 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, + 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, + 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, + 283, 0, 285, 286, 287, 0, 288, 289, 290, 0, + 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, + 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, + 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, + 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, + 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, + 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, + 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, + 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, + 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, + 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, + 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, + 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, + 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, + 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, + 523, 524, 980, 1376, 826, 0, 0, 0, 1066, 0, + 0, 2826, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 0, 127, 128, 129, 0, 0, 0, 568, 0, 0, + 0, 0, 573, 131, 132, 0, 575, 134, 135, 576, + 137, 138, 139, 577, 578, 579, 580, 581, 0, 145, + 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, + 154, 585, 586, 157, 0, 158, 159, 160, 161, 588, + 0, 590, 0, 592, 165, 166, 167, 168, 169, 593, + 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, + 0, 596, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 598, 192, 193, 599, 195, 0, 196, 0, + 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, + 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, + 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, + 220, 221, 609, 223, 224, 225, 226, 227, 228, 610, + 1377, 230, 0, 231, 232, 613, 234, 0, 235, 0, + 236, 616, 0, 618, 239, 240, 619, 620, 243, 244, + 245, 0, 622, 623, 248, 249, 0, 250, 251, 252, + 253, 254, 255, 256, 625, 258, 259, 260, 261, 0, + 262, 263, 264, 265, 266, 267, 268, 0, 269, 628, + 629, 272, 273, 274, 275, 276, 630, 631, 0, 633, + 0, 280, 635, 636, 283, 637, 285, 286, 287, 0, + 288, 289, 290, 0, 0, 291, 641, 293, 642, 0, + 295, 296, 297, 298, 299, 300, 301, 302, 644, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 645, + 646, 647, 327, 328, 329, 648, 0, 331, 332, 650, + 334, 0, 652, 336, 653, 338, 339, 340, 0, 341, + 342, 1378, 0, 343, 344, 345, 0, 0, 346, 347, + 659, 660, 350, 661, 662, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, + 0, 365, 366, 667, 668, 369, 370, 669, 372, 373, + 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, + 382, 383, 384, 385, 672, 387, 388, 389, 390, 0, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 675, 407, 408, 409, + 676, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 678, 424, 425, 426, 427, + 428, 429, 679, 431, 432, 0, 681, 434, 435, 682, + 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 684, 452, 685, 0, 0, + 454, 455, 0, 456, 689, 458, 459, 460, 461, 462, + 0, 463, 691, 692, 0, 0, 466, 467, 695, 469, + 696, 1379, 471, 472, 698, 474, 475, 476, 477, 478, + 0, 0, 479, 480, 481, 701, 0, 482, 483, 484, + 485, 0, 486, 487, 488, 489, 490, 704, 705, 493, + 0, 494, 707, 496, 497, 498, 499, 500, 501, 502, + 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, + 509, 712, 713, 714, 715, 716, 717, 718, 719, 720, + 721, 722, 521, 522, 523, 524, 0, 0, 1656, 0, + 0, 1657, 0, 1380, 1381, 1658, 1659, 1660, 1661, 0, + 1662, 1663, 1664, 0, 0, 0, 1656, 0, 0, 1657, + 0, 0, 0, 1658, 1659, 1660, 1661, 1665, 1662, 1663, + 1664, 0, 2245, 0, 0, 0, 0, 1667, 0, 0, + 0, 0, 0, 0, 1668, 1665, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1667, 0, 0, 0, 0, + 0, 0, 1668, 0, 0, 1656, 0, 0, 1657, 0, + 0, 1669, 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1669, + 0, 0, 0, 0, 1665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1667, 0, 0, 0, 0, 0, + 0, 1668, 0, 0, 0, 0, 0, 2246, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1656, 0, 0, + 1657, 0, 0, 0, 1658, 1659, 1660, 1661, 1669, 1662, + 1663, 1664, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1665, 0, 0, 0, + 1954, 0, 0, 0, 0, 0, 1667, 0, 1670, 0, + 0, 0, 0, 1668, 0, 0, 1990, 0, 0, 0, + 0, 1991, 0, 0, 0, 1671, 1670, 0, 0, 0, + 1672, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1669, 0, 0, 1671, 0, 0, 0, 0, 1672, 0, + 0, 0, 0, 1673, 1674, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3677, 0, 0, 0, 0, 1675, + 0, 1673, 1674, 0, 0, 1670, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1675, 0, 0, + 0, 0, 1671, 0, 0, 0, 0, 1672, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1676, 0, 0, + 1677, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1673, 1674, 0, 0, 1678, 1676, 0, 1679, 1677, 0, + 0, 0, 0, 0, 0, 0, 1675, 1670, 0, 0, + 0, 0, 1678, 0, 0, 1679, 0, 0, 0, 0, + 0, 0, 0, 0, 1671, 0, 0, 0, 0, 1672, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1676, 0, 0, 1677, 0, 0, + 0, 0, 1673, 1674, 0, 0, 0, 0, 0, 0, + 0, 1678, 0, 0, 1679, 0, 0, 0, 1675, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3678, 0, 0, 1680, 0, 0, + 0, 0, 0, 0, 0, 0, 1676, 0, 0, 1677, + 0, 0, 0, 0, 0, 1680, 0, 0, 0, 0, + 0, 0, 1656, 1678, 0, 1657, 1679, 0, 0, 1658, + 1659, 1660, 1661, 0, 1662, 1663, 1664, 0, 0, 0, + 1656, 0, 0, 1657, 0, 0, 0, 1658, 1659, 1660, + 1661, 1665, 1662, 1663, 1664, 0, 0, 0, 0, 0, + 0, 1667, 2249, 0, 1680, 0, 0, 0, 1668, 1665, + 0, 0, 0, 1996, 0, 0, 0, 0, 0, 1667, + 0, 0, 0, 0, 0, 0, 1668, 0, 0, 0, + 0, 0, 0, 0, 0, 1669, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1681, 0, 0, + 1682, 1683, 1684, 1669, 1685, 1686, 1687, 1688, 1689, 1690, + 0, 0, 0, 0, 0, 1681, 1680, 0, 1682, 1683, + 1684, 0, 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1656, 0, 0, 1657, 0, 0, 0, 1658, 1659, + 1660, 1661, 0, 1662, 1663, 1664, 0, 0, 0, 0, + 0, 0, 0, 0, 1681, 0, 0, 1682, 1683, 1684, + 1665, 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, 0, + 1667, 0, 1670, 0, 0, 0, 0, 1668, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1671, + 1670, 0, 0, 0, 1672, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1669, 0, 0, 1671, 0, 0, + 0, 0, 1672, 0, 0, 0, 1681, 1673, 1674, 1682, + 1683, 1684, 0, 1685, 1686, 1687, 1688, 1689, 1690, 0, + 0, 0, 0, 1675, 0, 1673, 1674, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1675, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1676, 0, 0, 1677, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1678, 1676, + 0, 1679, 1677, 0, 0, 0, 2001, 0, 0, 0, + 0, 1670, 0, 0, 0, 0, 1678, 0, 0, 1679, + 0, 0, 0, 0, 0, 1961, 0, 0, 1671, 0, + 0, 0, 0, 1672, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1673, 1674, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1675, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1656, 0, 0, 1657, 0, + 0, 0, 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, + 0, 1680, 0, 0, 0, 0, 0, 0, 0, 0, + 1676, 0, 0, 1677, 1665, 0, 0, 0, 2003, 1680, + 0, 0, 0, 0, 1667, 0, 0, 1678, 0, 0, + 1679, 1668, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1656, 0, 0, 1657, 1669, 0, + 0, 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1665, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1667, 0, 0, 1656, 0, 0, 1657, + 1668, 0, 0, 1658, 1659, 1660, 1661, 2579, 1662, 1663, + 1664, 1681, 0, 0, 1682, 1683, 1684, 0, 1685, 1686, + 1687, 1688, 1689, 1690, 0, 1665, 0, 1669, 0, 1681, + 1680, 0, 1682, 1683, 1684, 1667, 1685, 1686, 1687, 1688, + 1689, 1690, 1668, 0, 1656, 0, 0, 1657, 0, 0, + 0, 1658, 1659, 1660, 1661, 1670, 1662, 1663, 1664, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1669, + 0, 0, 1671, 1665, 0, 0, 0, 1672, 0, 0, + 0, 0, 0, 1667, 0, 0, 0, 0, 0, 0, + 1668, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1673, 1674, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2138, 0, 1675, 1669, 0, 0, + 0, 0, 0, 0, 1670, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1681, 1671, 0, 1682, 1683, 1684, 1672, 1685, 1686, 1687, + 1688, 1689, 1690, 0, 1676, 0, 0, 1677, 0, 0, + 0, 0, 0, 0, 0, 0, 1670, 0, 0, 1673, + 1674, 1678, 0, 0, 1679, 0, 0, 0, 0, 0, + 0, 0, 0, 1671, 0, 1675, 0, 0, 1672, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1673, 1674, 0, 1670, 0, 0, 0, 0, 0, + 0, 0, 0, 1676, 0, 0, 1677, 1675, 0, 0, + 0, 1671, 0, 0, 0, 0, 1672, 0, 0, 0, + 1678, 0, 0, 1679, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1673, + 1674, 0, 0, 0, 0, 1676, 0, 0, 1677, 0, + 0, 0, 0, 0, 1680, 1675, 0, 0, 0, 0, + 0, 0, 1678, 0, 0, 1679, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1656, 0, 0, 1657, + 0, 0, 0, 1658, 1659, 1660, 1661, 0, 1662, 1663, + 1664, 0, 0, 1676, 0, 0, 1677, 0, 0, 0, + 0, 0, 0, 0, 0, 1665, 0, 0, 0, 2905, + 1678, 0, 0, 1679, 0, 1667, 0, 0, 0, 0, + 0, 0, 1668, 1680, 1656, 0, 0, 1657, 0, 0, + 0, 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1669, + 0, 0, 0, 1665, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1667, 1681, 1680, 0, 1682, 1683, 1684, + 1668, 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1669, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1680, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1681, 0, 0, 1682, 1683, 1684, 0, + 1685, 1686, 1687, 1688, 1689, 1690, 1670, 2889, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1671, 0, 0, 0, 0, 1672, 0, + 0, 0, 0, 0, 0, 1681, 0, 0, 1682, 1683, + 1684, 0, 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, + 0, 1673, 1674, 0, 1670, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1675, 0, 0, + 0, 1671, 0, 0, 0, 0, 1672, 0, 0, 0, + 0, 0, 0, 1681, 0, 0, 1682, 1683, 1684, 0, + 1685, 1686, 1687, 1688, 1689, 1690, 0, 0, 0, 1673, + 1674, 0, 0, 0, 0, 1676, 0, 0, 1677, 0, + 0, 0, 0, 0, 0, 1675, 0, 0, 0, 0, + 0, 0, 1678, 0, 0, 1679, 0, 0, 0, 0, + 0, 0, 0, 1656, 0, 0, 1657, 0, 0, 0, + 1658, 1659, 1660, 1661, 0, 1662, 1663, 1664, 0, 0, + 0, 0, 0, 1676, 0, 0, 1677, 0, 0, 0, + 0, 0, 1665, 0, 0, 0, 0, 0, 0, 0, + 1678, 0, 1667, 1679, 0, 0, 0, 0, 0, 1668, + 0, 1656, 0, 0, 1657, 0, 0, 0, 1658, 1659, + 1660, 1661, 0, 1662, 1663, 1664, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1669, 0, 0, 0, + 1665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1667, 0, 0, 0, 0, 1680, 0, 1668, 1656, 0, + 0, 1657, 0, 0, 0, 1658, 1659, 0, 0, 0, + 1662, 1663, 1664, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1669, 0, 0, 1665, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1667, 1656, 0, + 0, 1657, 0, 1680, 1668, 1658, 1659, 0, 0, 0, + 1662, 1663, 1664, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1665, 0, 0, + 0, 1669, 0, 1670, 0, 0, 0, 1667, 0, 0, + 0, 0, 0, 0, 1668, 0, 1656, 0, 0, 1657, + 1671, 0, 0, 1658, 1659, 1672, 0, 0, 1662, 1663, + 1664, 0, 0, 0, 0, 1681, 0, 0, 1682, 1683, + 1684, 1669, 1685, 1686, 1687, 1688, 1689, 1690, 1864, 1674, + 0, 1670, 0, 0, 0, 1667, 0, 0, 0, 0, + 0, 0, 1668, 0, 1675, 0, 0, 0, 1671, 0, + 0, 0, 0, 1672, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1681, 0, 0, 1682, 1683, 1684, 1669, + 1685, 1686, 1687, 1688, 1689, 1690, 1673, 1674, 1670, 0, + 0, 0, 1676, 0, 0, 1677, 0, 0, 0, 0, + 0, 0, 1675, 0, 0, 1671, 0, 0, 0, 1678, + 1672, 0, 1679, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1670, 0, + 0, 0, 0, 1673, 1674, 0, 0, 0, 0, 0, + 1676, 0, 0, 1677, 0, 1671, 0, 0, 0, 1675, + 1672, 0, 0, 0, 0, 0, 0, 1678, 0, 0, + 1679, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1673, 1674, 0, 1670, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1676, 0, 1675, + 1677, 0, 0, 1671, 0, 0, 0, 0, 1672, 0, + 0, 0, 0, 0, 1678, 0, 0, 1679, 0, 0, + 0, 0, 1680, 0, 0, 0, 0, 0, 0, 0, + 0, -2142, -2142, 0, 0, 0, 0, 1676, 0, 0, + 1677, 0, 0, 0, 0, 0, 0, 1675, 0, 0, + 0, 0, 0, 0, 1678, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1680, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -2142, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1678, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1680, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1681, 0, 0, 1682, 1683, 1684, 0, 1685, + 1686, 1687, 1688, 1689, 1690, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1680, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1681, 0, 0, 1682, 1683, 1684, 0, 1685, 1686, 1687, + 1688, 2266, 1690, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1680, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1681, 0, 0, + 1682, 1683, 1684, 0, 1685, 1686, 1687, 1688, 1689, 1690, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1681, 0, 0, + 1682, 1683, 1684, 0, 1685, 1686, 1687, 1688, 1689, 1690, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 563, 0, + 2162, 0, 0, 0, 0, 1681, 0, 0, 1682, 1683, + 1684, 0, 1685, 1686, 1687, 1688, 1689, 1690, 119, 120, + 121, 122, 123, 124, 125, 126, 564, 127, 128, 129, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 131, + 132, 574, 575, 134, 135, 576, 137, 138, 139, 577, + 578, 579, 580, 581, 582, 145, 146, 147, 148, 149, + 150, 583, 584, 151, 152, 153, 154, 585, 586, 157, + 587, 158, 159, 160, 161, 588, 589, 590, 591, 592, + 165, 166, 167, 168, 169, 593, 171, 172, 173, 594, + 174, 175, 176, 177, 178, 179, 595, 596, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 598, 192, + 193, 599, 195, 600, 196, 601, 197, 198, 199, 200, + 201, 202, 602, 603, 203, 204, 205, 206, 604, 605, + 207, 208, 209, 210, 211, 606, 212, 213, 214, 607, + 215, 216, 217, 608, 218, 219, 220, 221, 609, 223, + 224, 225, 226, 227, 228, 610, 611, 230, 612, 231, + 232, 613, 234, 614, 235, 615, 236, 616, 617, 618, + 239, 240, 619, 620, 243, 244, 245, 621, 622, 623, + 248, 249, 624, 250, 251, 252, 253, 254, 255, 256, + 625, 258, 259, 260, 261, 626, 262, 263, 264, 265, + 266, 267, 268, 627, 269, 628, 629, 272, 273, 274, + 275, 276, 630, 631, 632, 633, 634, 280, 635, 636, + 283, 637, 285, 286, 287, 638, 288, 289, 290, 639, + 640, 291, 641, 293, 642, 643, 295, 296, 297, 298, + 299, 300, 301, 302, 644, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 645, 646, 647, 327, 328, + 329, 648, 649, 331, 332, 650, 334, 651, 652, 336, + 653, 338, 339, 340, 654, 341, 342, 655, 656, 343, + 344, 345, 657, 658, 346, 347, 659, 660, 350, 661, + 662, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 663, 664, 665, 666, 365, 366, 667, + 668, 369, 370, 669, 372, 373, 374, 670, 375, 376, + 377, 378, 379, 380, 671, 381, 382, 383, 384, 385, + 672, 387, 388, 389, 390, 673, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 674, + 404, 405, 675, 407, 408, 409, 676, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 677, 678, 424, 425, 426, 427, 428, 429, 679, 431, + 432, 680, 681, 434, 435, 682, 437, 683, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 684, 452, 685, 686, 687, 454, 455, 688, 456, + 689, 458, 459, 460, 461, 462, 690, 463, 691, 692, + 693, 694, 466, 467, 695, 469, 696, 697, 471, 472, + 698, 474, 475, 476, 477, 478, 699, 700, 479, 480, + 481, 701, 702, 482, 483, 484, 485, 703, 486, 487, + 488, 489, 490, 704, 705, 493, 706, 494, 707, 496, + 497, 498, 499, 500, 501, 502, 708, 709, 503, 710, + 711, 504, 505, 506, 507, 508, 509, 712, 713, 714, + 715, 716, 717, 718, 719, 720, 721, 722, 521, 522, + 523, 524, 563, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 564, 127, 128, 129, 565, 566, 567, 568, 569, 570, + 571, 572, 573, 131, 132, 574, 575, 134, 135, 576, + 137, 138, 139, 577, 578, 579, 580, 581, 582, 145, + 146, 147, 148, 149, 150, 583, 584, 151, 152, 153, + 154, 585, 586, 157, 587, 158, 159, 160, 161, 588, + 589, 590, 591, 592, 165, 166, 167, 168, 169, 593, + 171, 172, 173, 594, 174, 175, 176, 177, 178, 179, + 595, 596, 181, 182, 183, 184, 185, 186, 597, 188, + 189, 190, 598, 192, 193, 599, 195, 600, 196, 601, + 197, 198, 199, 200, 201, 202, 602, 603, 203, 204, + 205, 206, 604, 605, 207, 208, 209, 210, 211, 606, + 212, 213, 214, 607, 215, 216, 217, 608, 218, 219, + 220, 221, 609, 223, 224, 225, 226, 227, 228, 610, + 611, 230, 612, 231, 232, 613, 234, 614, 235, 615, + 236, 616, 617, 618, 239, 240, 619, 620, 243, 244, + 245, 621, 622, 623, 248, 249, 624, 250, 251, 252, + 253, 254, 255, 256, 625, 258, 259, 260, 261, 626, + 262, 263, 264, 265, 266, 267, 268, 627, 269, 628, + 629, 272, 273, 274, 275, 276, 630, 631, 632, 633, + 634, 280, 635, 636, 283, 637, 285, 286, 287, 638, + 288, 289, 290, 639, 640, 291, 641, 293, 642, 643, + 295, 296, 297, 298, 299, 300, 301, 302, 644, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 645, + 646, 647, 327, 328, 329, 648, 649, 331, 332, 650, + 334, 651, 652, 336, 653, 338, 339, 340, 654, 341, + 342, 655, 656, 343, 344, 345, 657, 658, 346, 347, + 659, 660, 350, 661, 662, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 663, 664, 665, + 666, 365, 366, 667, 668, 369, 370, 669, 372, 373, + 374, 670, 375, 376, 377, 378, 379, 380, 671, 381, + 382, 383, 384, 385, 672, 387, 388, 389, 390, 673, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 674, 404, 405, 675, 407, 408, 409, + 676, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 677, 678, 424, 425, 426, 427, + 428, 429, 679, 431, 432, 680, 681, 434, 435, 682, + 437, 683, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 684, 452, 685, 686, 687, + 454, 455, 688, 456, 689, 458, 459, 460, 461, 462, + 690, 463, 691, 692, 693, 694, 466, 467, 695, 469, + 696, 697, 471, 472, 698, 474, 475, 476, 477, 478, + 699, 700, 479, 480, 481, 701, 702, 482, 483, 484, + 485, 703, 486, 487, 488, 489, 490, 704, 705, 493, + 706, 494, 707, 496, 497, 498, 499, 500, 501, 502, + 708, 709, 503, 710, 711, 504, 505, 506, 507, 508, + 509, 712, 713, 714, 715, 716, 717, 718, 719, 720, + 721, 722, 521, 522, 523, 524, 563, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 564, 127, 128, 129, 565, 566, + 567, 568, 569, 570, 571, 572, 573, 131, 132, 574, + 575, 134, 135, 576, 137, 138, 139, 577, 578, 579, + 580, 581, 582, 145, 146, 147, 148, 149, 150, 583, + 584, 151, 152, 153, 154, 585, 586, 157, 587, 158, + 159, 160, 161, 588, 589, 590, 591, 592, 165, 166, + 167, 168, 169, 593, 171, 172, 173, 594, 174, 175, + 176, 177, 178, 179, 595, 596, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 598, 192, 193, 599, + 195, 600, 196, 601, 197, 198, 199, 200, 201, 202, + 602, 603, 203, 204, 205, 206, 604, 605, 207, 208, + 209, 210, 211, 606, 212, 213, 214, 607, 215, 216, + 217, 608, 218, 219, 220, 221, 609, 223, 224, 225, + 226, 227, 228, 610, 611, 230, 612, 231, 232, 613, + 234, 614, 235, 615, 236, 616, 617, 618, 239, 240, + 619, 620, 243, 244, 245, 621, 622, 623, 248, 249, + 624, 250, 251, 252, 253, 254, 956, 256, 625, 258, + 259, 260, 261, 626, 262, 263, 264, 265, 266, 267, + 268, 627, 269, 628, 629, 272, 273, 274, 275, 276, + 630, 631, 632, 633, 634, 280, 635, 636, 283, 637, + 285, 286, 287, 638, 288, 289, 290, 639, 640, 291, + 641, 293, 642, 643, 295, 296, 297, 298, 299, 300, + 301, 302, 644, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, - 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 0, 801, 343, 344, 345, - 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, + 321, 322, 323, 645, 646, 647, 327, 328, 329, 648, + 649, 331, 332, 650, 334, 651, 652, 336, 653, 338, + 339, 340, 654, 341, 342, 655, 656, 343, 344, 345, + 657, 658, 346, 347, 659, 660, 350, 661, 662, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, + 364, 663, 664, 665, 666, 365, 366, 667, 668, 369, + 370, 669, 372, 373, 374, 670, 375, 376, 377, 378, + 379, 380, 671, 381, 382, 383, 384, 385, 672, 387, + 388, 389, 390, 673, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 674, 404, 405, + 675, 407, 408, 409, 676, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 677, 678, + 424, 425, 426, 427, 428, 429, 679, 431, 432, 680, + 681, 434, 435, 682, 437, 683, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 684, + 452, 685, 686, 687, 454, 455, 688, 456, 689, 458, + 459, 460, 461, 462, 690, 463, 691, 692, 693, 694, + 466, 467, 695, 469, 696, 697, 471, 472, 698, 474, + 475, 476, 477, 478, 699, 700, 479, 480, 481, 701, + 702, 482, 483, 484, 485, 703, 486, 487, 488, 489, + 490, 704, 705, 493, 706, 494, 707, 496, 497, 498, + 499, 500, 501, 502, 708, 709, 503, 710, 711, 504, + 505, 506, 507, 508, 509, 712, 713, 714, 715, 716, + 717, 718, 719, 720, 721, 722, 521, 522, 523, 524, + 563, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 564, 127, + 128, 129, 565, 566, 567, 568, 569, 570, 571, 572, + 573, 131, 132, 574, 575, 134, 135, 576, 137, 138, + 139, 577, 578, 579, 580, 581, 582, 145, 146, 147, + 148, 149, 150, 583, 584, 151, 152, 153, 154, 585, + 586, 157, 587, 158, 159, 160, 161, 588, 589, 590, + 591, 592, 165, 166, 167, 168, 169, 593, 171, 172, + 173, 594, 174, 175, 176, 177, 178, 179, 595, 596, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 598, 192, 193, 599, 195, 600, 196, 601, 197, 198, + 199, 200, 201, 202, 602, 603, 203, 204, 205, 206, + 604, 605, 207, 208, 209, 210, 211, 606, 212, 213, + 214, 607, 215, 216, 217, 608, 218, 219, 220, 221, + 609, 223, 224, 225, 226, 227, 228, 610, 611, 230, + 612, 231, 232, 613, 234, 614, 235, 615, 236, 616, + 617, 618, 239, 240, 619, 620, 243, 244, 245, 621, + 622, 623, 248, 249, 624, 250, 251, 252, 253, 254, + 255, 256, 625, 258, 259, 260, 261, 626, 262, 263, + 264, 265, 266, 267, 268, 627, 269, 628, 629, 272, + 273, 274, 275, 276, 630, 631, 632, 633, 634, 280, + 635, 636, 283, 637, 285, 286, 287, 638, 288, 289, + 290, 639, 640, 291, 641, 293, 642, 643, 295, 296, + 297, 298, 299, 300, 301, 302, 644, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 645, 646, 647, + 327, 328, 329, 648, 649, 331, 332, 650, 334, 651, + 652, 336, 653, 338, 339, 340, 654, 341, 342, 655, + 656, 343, 344, 345, 657, 658, 346, 347, 659, 660, + 350, 661, 662, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 663, 664, 665, 666, 365, + 366, 667, 668, 369, 370, 669, 372, 373, 374, 670, + 375, 376, 377, 378, 379, 380, 671, 381, 382, 383, + 384, 385, 672, 387, 388, 389, 390, 673, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 674, 404, 405, 675, 407, 408, 409, 676, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 677, 678, 424, 425, 426, 427, 428, 429, + 679, 431, 432, 680, 681, 434, 435, 682, 437, 683, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 684, 452, 685, 686, 687, 454, 455, + 688, 456, 689, 458, 459, 460, 461, 462, 690, 463, + 691, 692, 693, 694, 466, 467, 695, 469, 696, 697, + 471, 472, 698, 474, 475, 476, 477, 478, 699, 700, + 479, 480, 481, 701, 702, 482, 483, 484, 485, 703, + 486, 487, 488, 489, 490, 704, 705, 493, 706, 494, + 707, 496, 497, 498, 499, 500, 501, 502, 708, 709, + 503, 710, 711, 504, 505, 506, 507, 508, 509, 712, + 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, + 521, 522, 523, 524, 563, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 120, 121, 122, 2320, 124, + 125, 126, 564, 127, 128, 129, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 131, 132, 574, 575, 134, + 135, 576, 137, 138, 139, 577, 578, 579, 580, 581, + 582, 145, 146, 147, 148, 149, 150, 583, 584, 151, + 152, 153, 154, 585, 586, 157, 587, 158, 159, 160, + 161, 588, 589, 590, 591, 592, 165, 166, 167, 168, + 169, 593, 171, 172, 173, 594, 174, 175, 176, 177, + 178, 179, 595, 596, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 598, 192, 193, 599, 195, 600, + 196, 601, 197, 198, 199, 200, 201, 202, 602, 603, + 203, 204, 205, 206, 604, 605, 207, 208, 209, 2321, + 211, 606, 212, 213, 214, 607, 215, 216, 217, 608, + 218, 219, 220, 221, 609, 223, 224, 225, 226, 227, + 228, 610, 611, 230, 612, 231, 232, 613, 234, 614, + 235, 615, 236, 616, 617, 618, 239, 240, 619, 620, + 243, 244, 245, 621, 622, 623, 248, 249, 624, 250, + 251, 252, 253, 254, 255, 256, 625, 258, 259, 260, + 261, 626, 262, 263, 264, 265, 266, 267, 268, 627, + 269, 628, 629, 272, 273, 274, 275, 276, 630, 631, + 632, 633, 634, 280, 635, 636, 283, 637, 285, 286, + 287, 638, 288, 289, 290, 639, 640, 291, 641, 293, + 642, 643, 295, 296, 297, 298, 299, 300, 301, 302, + 644, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 645, 646, 647, 327, 328, 329, 648, 649, 331, + 332, 650, 334, 651, 652, 336, 653, 338, 339, 340, + 654, 341, 342, 655, 656, 343, 344, 345, 657, 658, + 346, 347, 659, 660, 350, 661, 662, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 663, + 664, 665, 666, 365, 366, 667, 668, 369, 370, 669, + 372, 373, 374, 670, 375, 376, 377, 378, 379, 380, + 671, 381, 382, 383, 384, 385, 672, 387, 388, 389, + 390, 673, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 674, 404, 405, 675, 407, + 408, 409, 676, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 677, 678, 424, 425, + 426, 427, 428, 2322, 679, 431, 432, 680, 681, 434, + 435, 682, 437, 683, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 684, 452, 685, + 686, 687, 454, 455, 688, 456, 689, 458, 459, 460, + 461, 462, 690, 463, 691, 692, 693, 694, 466, 467, + 695, 469, 696, 697, 471, 472, 698, 474, 475, 476, + 477, 478, 699, 700, 479, 480, 481, 701, 702, 482, + 483, 484, 485, 703, 486, 487, 488, 489, 490, 704, + 705, 493, 706, 494, 707, 496, 497, 498, 499, 500, + 501, 502, 708, 709, 503, 710, 711, 504, 505, 506, + 507, 508, 509, 712, 713, 714, 715, 716, 717, 718, + 719, 720, 721, 722, 521, 522, 523, 524, 980, 0, + 826, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, + 0, 0, 0, 568, 0, 0, 0, 0, 573, 131, + 132, 0, 575, 134, 135, 576, 137, 138, 139, 577, + 578, 579, 580, 581, 0, 145, 146, 147, 148, 149, + 150, 0, 0, 151, 152, 153, 154, 585, 586, 157, + 0, 158, 159, 160, 161, 588, 0, 590, 0, 592, + 165, 166, 167, 168, 169, 593, 171, 172, 173, 0, + 174, 175, 176, 177, 178, 179, 0, 596, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 598, 192, + 193, 599, 195, 0, 196, 0, 197, 198, 199, 200, + 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, + 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, + 215, 216, 217, 0, 218, 219, 220, 221, 609, 223, + 224, 225, 226, 227, 228, 610, 1377, 230, 0, 231, + 232, 613, 234, 0, 235, 0, 236, 616, 0, 618, + 239, 240, 619, 620, 243, 244, 245, 0, 622, 623, + 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, + 625, 258, 259, 260, 261, 0, 262, 263, 264, 265, + 266, 267, 268, 0, 269, 628, 629, 272, 273, 274, + 275, 276, 630, 631, 0, 633, 0, 280, 635, 636, + 283, 637, 285, 286, 287, 0, 288, 289, 290, 0, + 0, 291, 641, 293, 642, 0, 295, 296, 297, 298, + 299, 300, 301, 302, 644, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 645, 646, 647, 327, 328, + 329, 648, 0, 331, 332, 650, 334, 0, 652, 336, + 653, 338, 339, 340, 0, 341, 342, 1378, 0, 343, + 344, 345, 0, 0, 346, 347, 659, 660, 350, 661, + 662, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 0, 0, 0, 0, 365, 366, 667, + 668, 369, 370, 669, 372, 373, 374, 0, 375, 376, + 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, + 672, 387, 388, 389, 390, 0, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, + 404, 405, 675, 407, 408, 409, 676, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 678, 424, 425, 426, 427, 428, 429, 679, 431, + 432, 0, 681, 434, 435, 682, 437, 0, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 684, 452, 685, 0, 0, 454, 455, 0, 456, + 689, 458, 459, 460, 461, 462, 0, 463, 691, 692, + 0, 0, 466, 467, 695, 469, 696, 1379, 471, 472, + 698, 474, 475, 476, 477, 478, 0, 0, 479, 480, + 481, 701, 0, 482, 483, 484, 485, 0, 486, 487, + 488, 489, 490, 704, 705, 493, 0, 494, 707, 496, + 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, + 0, 504, 505, 506, 507, 508, 509, 712, 713, 714, + 715, 716, 717, 718, 719, 720, 721, 722, 521, 522, + 523, 524, 980, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 0, 127, 128, 129, 3, 4, 0, 568, 0, 0, + 0, 0, 573, 131, 132, 0, 575, 134, 135, 576, + 137, 138, 139, 577, 578, 579, 580, 581, 0, 145, + 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, + 154, 585, 586, 157, 0, 158, 159, 160, 161, 588, + 0, 590, 0, 592, 165, 166, 167, 168, 169, 593, + 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, + 0, 596, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 598, 192, 193, 599, 195, 0, 196, 0, + 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, + 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, + 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, + 220, 221, 609, 223, 224, 225, 226, 227, 228, 610, + 0, 230, 0, 231, 232, 613, 234, 0, 235, 0, + 236, 616, 0, 618, 239, 240, 619, 620, 243, 244, + 245, 0, 622, 623, 248, 249, 0, 250, 251, 252, + 253, 254, 255, 256, 625, 258, 259, 260, 261, 0, + 262, 263, 264, 265, 266, 267, 268, 0, 269, 628, + 629, 272, 273, 274, 275, 276, 630, 631, 0, 633, + 0, 280, 635, 636, 283, 637, 285, 286, 287, 0, + 288, 289, 290, 0, 0, 291, 641, 293, 642, 0, + 295, 296, 297, 298, 299, 300, 301, 302, 644, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 645, + 646, 647, 327, 328, 329, 648, 0, 331, 332, 650, + 334, 0, 652, 336, 653, 338, 339, 340, 0, 341, + 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, + 659, 660, 350, 661, 662, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, + 0, 365, 366, 667, 668, 369, 370, 669, 372, 373, + 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, + 382, 383, 384, 385, 672, 387, 388, 389, 390, 0, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 0, 404, 405, 675, 407, 408, 409, + 676, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 678, 424, 425, 426, 427, + 428, 429, 679, 431, 432, 0, 681, 434, 435, 682, + 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 684, 452, 685, 0, 0, + 454, 455, 0, 456, 689, 458, 459, 460, 461, 462, + 0, 463, 691, 692, 0, 0, 466, 467, 695, 469, + 696, 0, 471, 472, 698, 474, 475, 476, 477, 478, + 0, 0, 479, 480, 481, 701, 0, 482, 483, 484, + 485, 0, 486, 487, 488, 489, 490, 704, 705, 493, + 0, 494, 707, 496, 497, 498, 499, 500, 501, 502, + 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, + 509, 712, 713, 714, 715, 716, 717, 718, 719, 720, + 721, 722, 521, 522, 523, 524, 118, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, + 0, 0, 0, 0, 0, 0, 130, 131, 132, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 0, 145, 146, 147, 148, 149, 150, 0, + 795, 151, 152, 153, 154, 155, 156, 157, 0, 158, + 159, 160, 161, 796, 0, 797, 0, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 0, 174, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, + 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, + 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, + 217, 0, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 798, 0, 230, 0, 231, 232, 233, + 234, 0, 235, 0, 236, 237, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, + 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, + 268, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 0, 279, 0, 280, 281, 282, 283, 284, + 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, + 292, 293, 294, 0, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 0, 331, 332, 333, 334, 0, 800, 336, 337, 338, + 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, + 0, 0, 346, 347, 348, 349, 350, 351, 802, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 0, 0, 0, 0, 365, 366, 803, 368, 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, - 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, + 433, 434, 435, 436, 437, 0, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 805, 0, 0, 454, 455, 0, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, + 466, 467, 806, 469, 807, 0, 471, 472, 808, 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, + 490, 491, 492, 493, 0, 494, 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 532, 0, 558, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, - 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, - 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, - 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, - 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, - 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, - 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, - 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, - 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, - 247, 248, 249, 0, 250, 251, 252, 253, 254, 909, - 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, - 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, - 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, - 0, 283, 0, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, + 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, + 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, + 130, 131, 132, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 0, 145, 146, 147, + 148, 149, 150, 0, 0, 151, 152, 153, 154, 155, + 156, 157, 0, 158, 159, 160, 161, 162, 0, 163, + 0, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 0, 174, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, + 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, + 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, + 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 231, 232, 233, 234, 0, 235, 0, 236, 237, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 0, + 246, 247, 248, 249, 0, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, + 264, 265, 266, 267, 268, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, + 281, 282, 283, 284, 285, 286, 287, 0, 288, 289, + 290, 0, 0, 291, 292, 293, 294, 0, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 0, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, + 0, 343, 344, 345, 0, 0, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 0, + 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 0, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 0, 433, 434, 435, 436, 437, 0, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 0, 0, 454, 455, + 0, 456, 457, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 0, 0, 466, 467, 468, 469, 470, 0, + 471, 472, 473, 474, 475, 476, 477, 478, 0, 0, + 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, + 486, 487, 488, 489, 490, 491, 492, 493, 0, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 0, 0, + 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, + 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, + 521, 522, 523, 524, 532, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 132, 0, 0, 134, + 135, 0, 137, 138, 139, 140, 141, 0, 143, 144, + 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, + 152, 153, 154, 155, 156, 157, 1788, 158, 159, 160, + 161, 162, 0, 0, 1789, 164, 165, 166, 167, 168, + 169, 0, 171, 172, 173, 1790, 174, 175, 176, 177, + 178, 179, 0, 0, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, + 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, + 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, + 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, + 235, 1791, 236, 0, 0, 0, 239, 240, 533, 0, + 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, + 251, 252, 253, 254, 1792, 256, 0, 258, 259, 260, + 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, + 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 0, 279, 0, 280, 0, 0, 283, 0, 285, 286, + 287, 0, 288, 289, 290, 0, 0, 291, 0, 293, + 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, + 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, + 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, + 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, + 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, + 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, + 372, 373, 374, 1793, 375, 376, 377, 378, 379, 380, + 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, + 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, + 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, + 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, + 477, 478, 0, 1794, 479, 480, 481, 0, 0, 482, + 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, + 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, + 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, + 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, + 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, + 141, 0, 143, 144, 0, 145, 146, 147, 148, 149, + 150, 0, 0, 151, 152, 153, 154, 155, 156, 157, + 1788, 158, 159, 160, 161, 162, 0, 0, 0, 164, + 165, 166, 167, 168, 169, 0, 171, 172, 173, 1790, + 174, 175, 176, 177, 178, 179, 0, 0, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, + 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, + 215, 216, 217, 0, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 231, + 232, 233, 234, 0, 235, 1791, 236, 0, 0, 0, + 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, + 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, + 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, + 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, + 283, 0, 285, 286, 287, 0, 288, 289, 290, 0, + 0, 291, 0, 293, 2410, 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 0, 801, 343, + 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, - 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, + 0, 369, 370, 371, 372, 373, 374, 1793, 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, @@ -10100,92 +9887,42 @@ static const yytype_int16 yytable[] = 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, - 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, + 473, 474, 475, 476, 477, 478, 0, 1794, 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 532, 0, 558, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 954, - 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, - 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, - 147, 148, 149, 150, 0, 0, 151, 152, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 161, 162, 0, - 0, 0, 164, 165, 166, 167, 168, 169, 0, 171, - 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, - 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, - 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, - 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, - 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, - 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, - 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, - 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, - 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, - 280, 0, 0, 283, 0, 285, 286, 287, 288, 289, - 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 0, 326, - 327, 328, 329, 330, 0, 331, 332, 0, 334, 0, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, - 0, 343, 344, 345, 0, 0, 346, 347, 348, 0, - 350, 0, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, - 366, 367, 0, 369, 370, 371, 372, 373, 374, 0, - 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 0, 0, 434, 435, 436, 437, 0, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 535, 452, 453, 0, 0, 454, 455, - 0, 456, 0, 458, 459, 460, 461, 462, 0, 463, - 464, 465, 0, 0, 466, 467, 468, 469, 470, 0, - 471, 472, 473, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 492, 493, 0, 494, - 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 532, 0, 558, 0, 0, 0, + 523, 524, 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, - 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, - 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, - 162, 0, 0, 0, 164, 165, 166, 167, 168, 169, - 0, 171, 172, 173, 0, 174, 175, 176, 177, 178, - 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, - 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, - 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, - 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 1191, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, - 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, - 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, - 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, - 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, - 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, - 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, + 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, + 0, 127, 128, 129, 3, 4, 0, 0, 0, 0, + 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, + 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, + 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, + 154, 155, 156, 157, 0, 158, 159, 160, 161, 162, + 0, 0, 0, 164, 165, 166, 167, 168, 169, 0, + 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, + 0, 0, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, + 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, + 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, + 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, + 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, + 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, + 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, + 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, + 0, 280, 0, 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, 341, - 342, 0, 801, 343, 344, 345, 0, 0, 346, 347, + 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, 373, @@ -10206,108 +9943,107 @@ static const yytype_int16 yytable[] = 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 532, 0, 558, 0, + 519, 520, 521, 522, 523, 524, 1515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, - 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, - 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, - 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, - 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, - 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, - 0, 2013, 244, 245, 0, 246, 247, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, - 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, - 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, - 0, 0, 295, 296, 2014, 298, 299, 300, 301, 302, - 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, - 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, - 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, - 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, - 0, 0, 454, 455, 2015, 456, 0, 458, 2016, 460, - 2017, 462, 0, 463, 464, 465, 0, 0, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 2018, 0, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, - 558, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, - 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, - 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, - 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, - 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, - 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, - 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, - 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, - 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, - 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, - 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, - 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, - 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, - 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, - 0, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, - 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, - 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, - 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, - 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, + 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, + 0, 1516, 0, 0, -839, 0, 1517, 131, 132, 0, + 1518, 134, 135, 1519, 137, 138, 139, 0, 1520, 1521, + 1522, 1523, 0, 145, 146, 147, 148, 149, 150, 0, + 0, 151, 152, 153, 154, 1524, 1525, 157, 0, 158, + 159, 160, 161, 0, 0, 1526, 0, 1527, 165, 166, + 167, 168, 169, 1528, 171, 172, 173, 0, 174, 175, + 176, 177, 178, 179, 0, 1529, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 1530, 192, 193, 1531, + 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, + 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, + 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, + 217, 0, 218, 219, 220, 221, 0, 223, 224, 225, + 226, 227, 228, 0, 0, 230, 0, 231, 232, 1532, + 234, 0, 235, 0, 236, 1533, 0, 1534, 239, 240, + -839, 1535, 243, 244, 245, 0, 0, 0, 248, 249, + 0, 250, 251, 252, 253, 254, 255, 256, 1536, 258, + 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, + 268, 0, 269, 1537, 0, 272, 273, 274, 275, 276, + 1538, 1539, 0, 1540, 0, 280, 1541, 1542, 283, 1543, + 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, + 1544, 293, 1545, 0, 295, 296, 297, 298, 299, 300, + 301, 302, 1546, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 1547, 1548, 1549, 327, 328, 329, 0, + 0, 331, 332, 1550, 334, 0, 0, 336, 1551, 338, + 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, + 0, 0, 346, 347, 0, 1552, 350, 1553, 0, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 0, 0, 0, 0, 365, 366, 0, 1554, 369, + 370, 0, 372, 373, 374, 0, 375, 376, 377, 378, + 379, 380, 0, 381, 382, 383, 384, 385, 1555, 387, + 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, + 1556, 407, 408, 409, 1557, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 1558, + 424, 425, 426, 427, 428, 429, 1559, 431, 432, 0, + 1560, 434, 435, 1561, 437, 0, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 1562, + 452, 0, 0, 0, 454, 455, 0, 456, 1563, 458, + 459, 460, 461, 462, 0, 463, 1564, 1565, 0, 0, + 466, 467, 0, 469, 0, 0, 471, 472, 1566, 474, + 475, 476, 477, 478, 1567, 0, 479, 480, 481, 1568, 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, + 490, 0, 1569, 493, 0, 494, 1570, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 532, 0, 826, 0, 0, 0, 0, 0, 0, 0, + 505, 506, 507, 508, 509, 532, 0, 557, 0, 0, + 0, 0, 0, 0, 0, 0, 521, 522, 523, 524, + 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 558, 127, 128, 129, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, + 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, + 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, + 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, + 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, + 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, + 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, + 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, + 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, + 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, + 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, + 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, + 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, + 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, + 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, + 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, + 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, + 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, + 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, + 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, + 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, + 371, 559, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, + 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, + 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 532, + 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -10329,37 +10065,138 @@ static const yytype_int16 yytable[] = 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, - 0, 283, 0, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, - 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, - 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, - 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, - 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, - 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, - 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, - 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, - 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, + 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 0, 341, 342, 0, 801, + 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 367, 0, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 0, 434, 435, 436, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 535, 452, 453, 0, 0, 454, 455, 0, + 456, 0, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 492, 493, 0, 494, 0, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 532, 0, 557, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, + 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, + 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, + 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, + 162, 0, 0, 0, 164, 165, 166, 167, 168, 169, + 0, 171, 172, 173, 0, 174, 175, 176, 177, 178, + 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, + 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, + 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, + 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, + 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, + 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, + 252, 253, 254, 909, 256, 0, 258, 259, 260, 261, + 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, + 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, + 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, + 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, + 341, 342, 0, 801, 343, 344, 345, 0, 0, 346, + 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, + 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, + 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, + 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, + 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 532, 0, 557, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 954, 127, 128, 129, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, + 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, + 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, + 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, + 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, + 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, + 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, + 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, + 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, + 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, + 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, + 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, + 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, + 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, + 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, + 0, 285, 286, 287, 0, 288, 289, 290, 0, 0, + 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 0, 326, 327, 328, 329, + 330, 0, 331, 332, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, + 345, 0, 0, 346, 347, 348, 0, 350, 0, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 367, 0, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 0, 0, 434, 435, 436, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 535, 452, 453, 0, 0, 454, 455, 0, 456, 0, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, + 0, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 492, 493, 0, 494, 0, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 832, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, @@ -10372,42 +10209,143 @@ static const yytype_int16 yytable[] = 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, + 221, 222, 223, 224, 225, 226, 1192, 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, - 0, 0, 0, 239, 240, 533, 0, 833, 244, 245, + 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, - 280, 0, 0, 283, 0, 285, 286, 287, 288, 289, - 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, - 834, 298, 299, 300, 301, 302, 534, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 0, 326, - 327, 328, 329, 330, 0, 331, 332, 0, 334, 0, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, - 0, 343, 344, 345, 0, 0, 346, 347, 348, 0, - 350, 0, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, - 366, 367, 0, 369, 370, 371, 372, 373, 374, 0, - 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 835, 429, - 430, 431, 432, 0, 0, 434, 435, 436, 437, 0, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 535, 452, 453, 0, 0, 454, 455, - 0, 456, 0, 458, 459, 460, 461, 462, 0, 463, - 836, 465, 0, 0, 837, 467, 468, 469, 470, 0, - 471, 472, 473, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 492, 838, 0, 494, - 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 532, 0, 558, 0, 0, 0, + 280, 0, 0, 283, 0, 285, 286, 287, 0, 288, + 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, + 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, + 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 0, 341, 342, + 0, 801, 343, 344, 345, 0, 0, 346, 347, 348, + 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, + 365, 366, 367, 0, 369, 370, 371, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 0, 0, 434, 435, 436, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 535, 452, 453, 0, 0, 454, + 455, 0, 456, 0, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 0, 0, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 476, 477, 478, 0, + 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 491, 492, 493, 0, + 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 532, 0, 557, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, + 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, + 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, + 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, + 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, + 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, + 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, + 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, + 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, + 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, + 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, + 0, 2017, 244, 245, 0, 246, 247, 248, 249, 0, + 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, + 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, + 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, + 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, + 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, + 293, 0, 0, 295, 296, 2018, 298, 299, 300, 301, + 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, + 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, + 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, + 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, + 453, 0, 0, 454, 455, 2019, 456, 0, 458, 2020, + 460, 2021, 462, 0, 463, 464, 465, 0, 0, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 2022, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 532, + 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, + 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, + 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, + 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, + 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, + 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, + 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, + 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, + 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, + 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, + 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, + 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, + 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, + 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, + 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, + 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 367, 0, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 0, 434, 435, 436, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 535, 452, 453, 0, 0, 454, 455, 0, + 456, 0, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 492, 493, 0, 494, 0, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 532, 0, 826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, @@ -10430,87 +10368,37 @@ static const yytype_int16 yytable[] = 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 326, 327, 328, 329, 330, 0, 331, 332, 0, - 334, 0, 335, 336, 337, 338, 339, 340, 0, 341, - 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, - 348, 0, 350, 0, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, - 0, 365, 366, 367, 0, 369, 370, 371, 372, 373, - 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 386, 387, 388, 871, 390, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 0, 434, 435, 436, - 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 535, 452, 453, 0, 0, - 454, 455, 0, 456, 0, 458, 459, 460, 461, 462, - 0, 463, 464, 465, 0, 0, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 492, 493, - 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 532, 0, 558, 0, + 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, + 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, + 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, + 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, + 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, + 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, + 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, - 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, - 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, - 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, - 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, - 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, - 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, - 250, 251, 252, 253, 254, 904, 256, 0, 258, 259, - 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, - 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, - 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, - 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, - 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, - 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, - 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, - 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, - 558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, + 122, 123, 124, 125, 126, 832, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, @@ -10525,90 +10413,40 @@ static const yytype_int16 yytable[] = 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, - 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, - 249, 0, 250, 251, 252, 253, 254, 907, 256, 0, + 240, 533, 0, 833, 244, 245, 0, 246, 247, 248, + 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, - 0, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, - 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, - 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, - 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, - 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, - 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, - 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 532, 0, 558, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, - 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, - 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, - 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, - 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, - 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, - 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, - 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, - 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, - 247, 248, 249, 0, 250, 251, 252, 253, 254, 911, - 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, - 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, - 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, - 0, 283, 0, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, - 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, - 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, - 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, - 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, - 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, - 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, - 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, - 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 532, 0, 558, 0, 0, 0, 0, 0, + 0, 285, 286, 287, 0, 288, 289, 290, 0, 0, + 291, 0, 293, 0, 0, 295, 296, 834, 298, 299, + 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 0, 326, 327, 328, 329, + 330, 0, 331, 332, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, + 345, 0, 0, 346, 347, 348, 0, 350, 0, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 367, 0, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 835, 429, 430, 431, 432, + 0, 0, 434, 435, 436, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 535, 452, 453, 0, 0, 454, 455, 0, 456, 0, + 458, 459, 460, 461, 462, 0, 463, 836, 465, 0, + 0, 837, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 492, 838, 0, 494, 0, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, @@ -10627,38 +10465,139 @@ static const yytype_int16 yytable[] = 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, - 254, 942, 256, 0, 258, 259, 260, 261, 0, 262, + 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, - 280, 0, 0, 283, 0, 285, 286, 287, 288, 289, - 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 0, 326, - 327, 328, 329, 330, 0, 331, 332, 0, 334, 0, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, - 0, 343, 344, 345, 0, 0, 346, 347, 348, 0, - 350, 0, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, - 366, 367, 0, 369, 370, 371, 372, 373, 374, 0, - 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 0, 0, 434, 435, 436, 437, 0, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 535, 452, 453, 0, 0, 454, 455, - 0, 456, 0, 458, 459, 460, 461, 462, 0, 463, - 464, 465, 0, 0, 466, 467, 468, 469, 470, 0, - 471, 472, 473, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 492, 493, 0, 494, - 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 532, 0, 558, 0, 0, 0, + 280, 0, 0, 283, 0, 285, 286, 287, 0, 288, + 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, + 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, + 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 0, 341, 342, + 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, + 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, + 365, 366, 367, 0, 369, 370, 371, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 386, 387, 388, 871, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 0, 0, 434, 435, 436, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 535, 452, 453, 0, 0, 454, + 455, 0, 456, 0, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 0, 0, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 476, 477, 478, 0, + 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 491, 492, 493, 0, + 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 532, 0, 557, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, + 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, + 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, + 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, + 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, + 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, + 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, + 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, + 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, + 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, + 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, + 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, + 250, 251, 252, 253, 254, 904, 256, 0, 258, 259, + 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, + 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, + 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, + 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, + 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, + 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, + 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, + 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, + 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, + 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 532, + 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, + 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, + 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, + 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, + 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, + 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, + 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, + 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, + 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, + 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, + 247, 248, 249, 0, 250, 251, 252, 253, 254, 907, + 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, + 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, + 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, + 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, + 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 367, 0, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 0, 434, 435, 436, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 535, 452, 453, 0, 0, 454, 455, 0, + 456, 0, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 492, 493, 0, 494, 0, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, @@ -10677,38 +10616,139 @@ static const yytype_int16 yytable[] = 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, - 252, 253, 254, 970, 256, 0, 258, 259, 260, 261, + 252, 253, 254, 911, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 326, 327, 328, 329, 330, 0, 331, 332, 0, - 334, 0, 335, 336, 337, 338, 339, 340, 0, 341, - 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, - 348, 0, 350, 0, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, - 0, 365, 366, 367, 0, 369, 370, 371, 372, 373, - 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 0, 434, 435, 436, - 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 535, 452, 453, 0, 0, - 454, 455, 0, 456, 0, 458, 459, 460, 461, 462, - 0, 463, 464, 465, 0, 0, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 492, 493, - 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 532, 0, 558, 0, + 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, + 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, + 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, + 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, + 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, + 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, + 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 532, 0, 557, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, + 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, + 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, + 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, + 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, + 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, + 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, + 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, + 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, + 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, + 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, + 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, + 249, 0, 250, 251, 252, 253, 254, 942, 256, 0, + 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, + 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, + 0, 285, 286, 287, 0, 288, 289, 290, 0, 0, + 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 0, 326, 327, 328, 329, + 330, 0, 331, 332, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, + 345, 0, 0, 346, 347, 348, 0, 350, 0, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 367, 0, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 0, 0, 434, 435, 436, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 535, 452, 453, 0, 0, 454, 455, 0, 456, 0, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, + 0, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 492, 493, 0, 494, 0, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 532, 0, 557, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, + 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, + 147, 148, 149, 150, 0, 0, 151, 152, 153, 154, + 155, 156, 157, 0, 158, 159, 160, 161, 162, 0, + 0, 0, 164, 165, 166, 167, 168, 169, 0, 171, + 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, + 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, + 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, + 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, + 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, + 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, + 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, + 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, + 254, 970, 256, 0, 258, 259, 260, 261, 0, 262, + 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, + 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, + 280, 0, 0, 283, 0, 285, 286, 287, 0, 288, + 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, + 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, + 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 0, 341, 342, + 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, + 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, + 365, 366, 367, 0, 369, 370, 371, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 0, 0, 434, 435, 436, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 535, 452, 453, 0, 0, 454, + 455, 0, 456, 0, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 0, 0, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 476, 477, 478, 0, + 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 491, 492, 493, 0, + 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, @@ -10731,88 +10771,38 @@ static const yytype_int16 yytable[] = 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, - 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, - 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, - 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, - 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, - 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, - 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, + 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, + 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, + 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, + 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, + 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, + 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, + 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 1016, 0, 0, 131, 132, - 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, - 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, - 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, - 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, - 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, - 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, - 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, - 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, - 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, - 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, - 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, - 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, - 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, - 0, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, - 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, - 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, - 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, - 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, - 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, - 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 1043, 0, 0, + 129, 0, 0, 0, 0, 0, 0, 1016, 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, @@ -10831,37 +10821,138 @@ static const yytype_int16 yytable[] = 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, - 0, 283, 0, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, - 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, - 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, - 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, - 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, - 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, - 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, - 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, - 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, + 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, + 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 367, 0, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 0, 434, 435, 436, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 535, 452, 453, 0, 0, 454, 455, 0, + 456, 0, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 492, 493, 0, 494, 0, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, + 0, 1043, 0, 0, 131, 132, 0, 0, 134, 135, + 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, + 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, + 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, + 162, 0, 0, 0, 164, 165, 166, 167, 168, 169, + 0, 171, 172, 173, 0, 174, 175, 176, 177, 178, + 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, + 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, + 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, + 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, + 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, + 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, + 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, + 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, + 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, + 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, + 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, + 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, + 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, + 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, + 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, + 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, + 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 532, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 832, 127, 128, 129, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, + 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, + 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, + 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, + 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, + 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, + 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, + 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, + 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, + 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, + 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, + 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, + 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, + 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, + 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, + 0, 285, 286, 287, 0, 288, 289, 290, 0, 0, + 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 0, 326, 327, 328, 329, + 330, 0, 331, 332, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, + 345, 0, 0, 346, 347, 348, 0, 350, 0, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 367, 0, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 0, 0, 434, 435, 436, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 535, 452, 453, 0, 0, 454, 455, 0, 456, 0, + 458, 459, 460, 461, 462, 0, 463, 836, 465, 0, + 0, 837, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 492, 493, 0, 494, 0, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 832, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, @@ -10878,88 +10969,38 @@ static const yytype_int16 yytable[] = 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, + 254, 1336, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, - 280, 0, 0, 283, 0, 285, 286, 287, 288, 289, - 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 0, 326, - 327, 328, 329, 330, 0, 331, 332, 0, 334, 0, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, - 0, 343, 344, 345, 0, 0, 346, 347, 348, 0, - 350, 0, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, - 366, 367, 0, 369, 370, 371, 372, 373, 374, 0, - 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 0, 0, 434, 435, 436, 437, 0, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 535, 452, 453, 0, 0, 454, 455, - 0, 456, 0, 458, 459, 460, 461, 462, 0, 463, - 836, 465, 0, 0, 837, 467, 468, 469, 470, 0, - 471, 472, 473, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 492, 493, 0, 494, - 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 532, 0, 558, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, - 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, - 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, - 162, 0, 0, 0, 164, 165, 166, 167, 168, 169, - 0, 171, 172, 173, 0, 174, 175, 176, 177, 178, - 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, - 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, - 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, - 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, - 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, - 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, - 252, 253, 254, 1336, 256, 0, 258, 259, 260, 261, - 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, - 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, - 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 326, 327, 328, 329, 330, 0, 331, 332, 0, - 334, 0, 335, 336, 337, 338, 339, 340, 0, 341, - 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, - 348, 0, 350, 0, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, - 0, 365, 366, 367, 0, 369, 370, 371, 372, 373, - 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 0, 434, 435, 436, - 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 535, 452, 453, 0, 0, - 454, 455, 0, 456, 0, 458, 459, 460, 461, 462, - 0, 463, 464, 465, 0, 0, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 492, 493, - 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 532, 0, 558, 0, + 280, 0, 0, 283, 0, 285, 286, 287, 0, 288, + 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, + 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, + 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 0, 341, 342, + 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, + 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, + 365, 366, 367, 0, 369, 370, 371, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 0, 0, 434, 435, 436, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 535, 452, 453, 0, 0, 454, + 455, 0, 456, 0, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 0, 0, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 476, 477, 478, 0, + 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 491, 492, 493, 0, + 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, @@ -10982,85 +11023,35 @@ static const yytype_int16 yytable[] = 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, - 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, - 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, - 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, - 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, - 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, - 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, - 558, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, - 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, - 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, - 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, - 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, - 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, - 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, - 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, - 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, - 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, - 249, 0, 250, 251, 252, 253, 254, 1341, 256, 0, - 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, - 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, - 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, - 0, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, - 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, - 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, - 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, - 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, - 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, - 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 532, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, + 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, + 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, + 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, + 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, + 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, + 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 532, + 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -11078,187 +11069,90 @@ static const yytype_int16 yytable[] = 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, - 247, 248, 249, 0, 250, 251, 252, 253, 254, 1343, + 247, 248, 249, 0, 250, 251, 252, 253, 254, 1341, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, - 0, 283, 0, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, - 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, - 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, - 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, - 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, - 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, - 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, - 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, - 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 1513, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, - 127, 128, 129, 0, 0, 0, 1514, 0, 0, 0, - 0, 1515, 131, 132, 0, 1516, 134, 135, 1517, 137, - 138, 139, 0, 1518, 1519, 1520, 1521, 0, 145, 146, - 147, 148, 149, 150, 0, 0, 151, 152, 153, 154, - 1522, 1523, 157, 0, 158, 159, 160, 161, 0, 0, - 1524, 0, 1525, 165, 166, 167, 168, 169, 1526, 171, - 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, - 1527, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 1528, 192, 193, 1529, 195, 0, 196, 0, 197, - 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, - 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, - 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, - 221, 0, 223, 224, 225, 226, 227, 228, 0, 0, - 230, 0, 231, 232, 1530, 234, 0, 235, 0, 236, - 1531, 0, 1532, 239, 240, 0, 1533, 243, 244, 245, - 0, 0, 0, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 1534, 258, 259, 260, 261, 0, 262, - 263, 264, 265, 266, 267, 268, 0, 269, 1535, 0, - 272, 273, 274, 275, 276, 1536, 1537, 0, 1538, 0, - 280, 1539, 1540, 283, 1541, 285, 286, 287, 288, 289, - 290, 0, 0, 291, 1542, 293, 1543, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 1544, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 1545, 1546, 1547, - 327, 328, 329, 0, 0, 331, 332, 1548, 334, 0, - 0, 336, 1549, 338, 339, 340, 0, 341, 342, 0, - 0, 343, 344, 345, 0, 0, 346, 347, 0, 1550, - 350, 1551, 0, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, - 366, 0, 1552, 369, 370, 0, 372, 373, 374, 0, - 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 1553, 387, 388, 389, 390, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 1554, 407, 408, 409, 1555, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 1556, 424, 425, 426, 427, 428, 429, - 1557, 431, 432, 0, 1558, 434, 435, 1559, 437, 0, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 1560, 452, 0, 0, 0, 454, 455, - 0, 456, 1561, 458, 459, 460, 461, 462, 0, 463, - 1562, 1563, 0, 0, 466, 467, 0, 469, 0, 0, - 471, 472, 1564, 474, 475, 476, 477, 478, 1565, 0, - 479, 480, 481, 1566, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 0, 1567, 493, 0, 494, - 1568, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 0, 504, 505, 506, 507, 508, 509, 1513, + 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, + 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, + 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 367, 0, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 0, 434, 435, 436, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 535, 452, 453, 0, 0, 454, 455, 0, + 456, 0, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 492, 493, 0, 494, 0, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 532, 0, 557, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, + 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, + 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, + 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, + 162, 0, 0, 0, 164, 165, 166, 167, 168, 169, + 0, 171, 172, 173, 0, 174, 175, 176, 177, 178, + 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, + 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, + 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, + 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, + 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, + 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, + 252, 253, 254, 1343, 256, 0, 258, 259, 260, 261, + 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, + 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, + 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, + 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, + 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, + 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, + 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, + 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, + 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, + 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 521, 522, 523, 524, 0, 0, 0, 0, 119, 120, - 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, - 0, 0, 0, 1514, 0, 0, 0, 0, 1515, 131, - 132, 0, 1516, 134, 135, 1517, 137, 138, 139, 0, - 1518, 1519, 1520, 1521, 0, 145, 146, 147, 148, 149, - 150, 0, 0, 151, 152, 153, 154, 1522, 1523, 157, - 0, 158, 159, 160, 161, 0, 0, 1524, 0, 1525, - 165, 166, 167, 168, 169, 1526, 171, 172, 173, 0, - 174, 175, 176, 177, 178, 179, 0, 1527, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 1528, 192, - 193, 1529, 195, 0, 196, 0, 197, 198, 199, 200, - 201, 202, 0, 0, 203, 204, 205, 206, 0, 0, - 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, - 1884, 216, 217, 0, 218, 219, 220, 221, 0, 223, - 224, 225, 226, 227, 228, 0, 0, 230, 0, 231, - 232, 1530, 234, 0, 235, 0, 236, 1531, 0, 1532, - 239, 240, 0, 1533, 243, 244, 245, 0, 0, 0, - 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, - 1534, 258, 259, 260, 261, 0, 262, 263, 264, 265, - 266, 267, 268, 0, 269, 1535, 0, 272, 273, 274, - 275, 276, 1536, 1537, 0, 1538, 0, 280, 1539, 1540, - 283, 1541, 285, 286, 287, 288, 289, 290, 0, 0, - 291, 1542, 293, 1543, 0, 295, 296, 297, 298, 299, - 300, 301, 302, 1544, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 1545, 1546, 1547, 327, 328, 329, - 0, 0, 331, 332, 1548, 334, 0, 0, 336, 1549, - 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, - 345, 0, 0, 346, 347, 0, 1550, 350, 1551, 0, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 0, 0, 0, 0, 365, 366, 0, 1552, - 369, 370, 0, 372, 373, 374, 0, 375, 376, 377, - 378, 379, 380, 0, 381, 382, 383, 384, 385, 1553, - 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, - 405, 1554, 407, 408, 409, 1555, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, - 1556, 424, 425, 426, 427, 428, 429, 1557, 431, 432, - 0, 1558, 434, 435, 1559, 437, 0, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 1560, 452, 0, 0, 0, 454, 455, 0, 456, 1561, - 458, 459, 460, 461, 462, 0, 463, 1562, 1563, 0, - 0, 466, 467, 0, 469, 0, 0, 471, 472, 1564, - 474, 475, 476, 477, 478, 1565, 0, 479, 480, 481, - 1566, 0, 482, 483, 484, 485, 0, 486, 487, 488, - 489, 490, 0, 1567, 493, 0, 494, 1568, 496, 497, - 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, - 504, 505, 506, 507, 508, 509, 532, 0, 558, 0, - 0, 0, 0, 0, 0, 0, 0, 521, 522, 523, - 524, 0, 0, 0, 0, 119, 120, 121, 122, 123, - 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, - 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, - 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, - 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, - 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, - 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, - 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, - 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, - 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, - 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, - 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, - 250, 251, 252, 253, 254, 2311, 256, 0, 258, 259, - 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, - 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, - 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, - 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, - 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, - 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, - 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, - 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, - 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, - 558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, @@ -11276,113 +11170,112 @@ static const yytype_int16 yytable[] = 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, - 249, 0, 250, 251, 252, 253, 254, 3111, 256, 0, + 249, 0, 250, 251, 252, 253, 254, 1345, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, - 0, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, - 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, - 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, - 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, - 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, - 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, - 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, - 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, - 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, - 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, - 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, - 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, - 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, - 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, - 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, - 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, - 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, - 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, - 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, - 0, 283, 0, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, - 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, - 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, - 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, - 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, - 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, - 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, - 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, - 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, + 0, 285, 286, 287, 0, 288, 289, 290, 0, 0, + 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 0, 326, 327, 328, 329, + 330, 0, 331, 332, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, + 345, 0, 0, 346, 347, 348, 0, 350, 0, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 367, 0, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 0, 0, 434, 435, 436, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 535, 452, 453, 0, 0, 454, 455, 0, 456, 0, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, + 0, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 492, 493, 0, 494, 0, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 1515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, - 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, - 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, + 127, 128, 129, 0, 0, 0, 1516, 0, 0, 0, + 0, 1517, 131, 132, 0, 1518, 134, 135, 1519, 137, + 138, 139, 0, 1520, 1521, 1522, 1523, 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 161, 162, 0, - 0, 0, 164, 165, 166, 167, 168, 169, 0, 171, + 1524, 1525, 157, 0, 158, 159, 160, 161, 0, 0, + 1526, 0, 1527, 165, 166, 167, 168, 169, 1528, 171, 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, - 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, + 1529, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 1530, 192, 193, 1531, 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, - 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, + 206, 0, 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, - 0, 0, 0, 239, 240, 533, 0, 848, 244, 245, - 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, - 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, - 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, - 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, - 280, 0, 0, 283, 0, 285, 286, 287, 288, 289, + 221, 0, 223, 224, 225, 226, 227, 228, 0, 0, + 230, 0, 231, 232, 1532, 234, 0, 235, 0, 236, + 1533, 0, 1534, 239, 240, 0, 1535, 243, 244, 245, + 0, 0, 0, 248, 249, 0, 250, 251, 252, 253, + 254, 255, 256, 1536, 258, 259, 260, 261, 0, 262, + 263, 264, 265, 266, 267, 268, 0, 269, 1537, 0, + 272, 273, 274, 275, 276, 1538, 1539, 0, 1540, 0, + 280, 1541, 1542, 283, 1543, 285, 286, 287, 0, 288, + 289, 290, 0, 0, 291, 1544, 293, 1545, 0, 295, + 296, 297, 298, 299, 300, 301, 302, 1546, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 1547, 1548, + 1549, 327, 328, 329, 0, 0, 331, 332, 1550, 334, + 0, 0, 336, 1551, 338, 339, 340, 0, 341, 342, + 0, 0, 343, 344, 345, 0, 0, 346, 347, 0, + 1552, 350, 1553, 0, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, + 365, 366, 0, 1554, 369, 370, 0, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 1555, 387, 388, 389, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 1556, 407, 408, 409, 1557, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 1558, 424, 425, 426, 427, 428, + 429, 1559, 431, 432, 0, 1560, 434, 435, 1561, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 1562, 452, 0, 0, 0, 454, + 455, 0, 456, 1563, 458, 459, 460, 461, 462, 0, + 463, 1564, 1565, 0, 0, 466, 467, 0, 469, 0, + 0, 471, 472, 1566, 474, 475, 476, 477, 478, 1567, + 0, 479, 480, 481, 1568, 0, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 0, 1569, 493, 0, + 494, 1570, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, + 532, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, + 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 132, 0, 0, 134, 135, 0, 137, 138, + 139, 140, 141, 0, 143, 144, 0, 145, 146, 147, + 148, 149, 150, 0, 0, 151, 152, 153, 154, 155, + 156, 157, 0, 158, 159, 160, 161, 162, 0, 0, + 0, 164, 165, 166, 167, 168, 169, 0, 171, 172, + 173, 0, 174, 175, 176, 177, 178, 179, 0, 0, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, + 199, 200, 201, 202, 0, 0, 203, 204, 205, 206, + 0, 0, 207, 208, 209, 210, 211, 0, 212, 213, + 214, 0, 215, 216, 217, 0, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, + 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, + 246, 247, 248, 249, 0, 250, 251, 252, 253, 254, + 2316, 256, 0, 258, 259, 260, 261, 0, 262, 263, + 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, + 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, + 0, 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, - 849, 298, 299, 300, 301, 302, 534, 304, 305, 306, + 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, 0, @@ -11395,21 +11288,70 @@ static const yytype_int16 yytable[] = 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, 409, 410, 411, - 412, 413, 414, 850, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 851, 429, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, 462, 0, 463, - 852, 465, 0, 0, 466, 467, 468, 469, 470, 0, + 464, 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 492, 853, 0, 494, + 486, 487, 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 532, 0, 0, 0, 0, 0, + 521, 522, 523, 524, 1515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, + 125, 126, 0, 127, 128, 129, 0, 0, 0, 1516, + 0, 0, 0, 0, 1517, 131, 132, 0, 1518, 134, + 135, 1519, 137, 138, 139, 0, 1520, 1521, 1522, 1523, + 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, + 152, 153, 154, 1524, 1525, 157, 0, 158, 159, 160, + 161, 0, 0, 1526, 0, 1527, 165, 166, 167, 168, + 169, 1528, 171, 172, 173, 0, 174, 175, 176, 177, + 178, 179, 0, 1529, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 1530, 192, 193, 1531, 195, 0, + 196, 0, 197, 198, 199, 200, 201, 202, 0, 0, + 203, 204, 205, 206, 0, 0, 207, 208, 1079, 210, + 211, 0, 212, 213, 214, 0, 2424, 216, 217, 0, + 218, 219, 220, 221, 0, 223, 224, 225, 226, 227, + 228, 0, 0, 230, 0, 231, 232, 1532, 234, 0, + 235, 0, 236, 1533, 0, 1534, 239, 240, 0, 1535, + 243, 244, 245, 0, 0, 0, 248, 249, 0, 250, + 251, 252, 253, 254, 255, 256, 1536, 258, 259, 260, + 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, + 269, 1537, 0, 272, 273, 274, 275, 276, 1538, 1539, + 0, 1540, 0, 280, 1541, 1542, 283, 1543, 285, 286, + 287, 0, 288, 289, 290, 0, 0, 291, 1544, 293, + 1545, 0, 295, 296, 297, 298, 299, 300, 301, 302, + 1546, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 1547, 1548, 1549, 327, 328, 329, 0, 0, 331, + 332, 1550, 334, 0, 0, 336, 1551, 338, 339, 340, + 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, + 346, 347, 0, 1552, 350, 1553, 0, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, + 0, 0, 0, 365, 366, 0, 1554, 369, 370, 0, + 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, + 0, 381, 382, 383, 384, 385, 1555, 387, 388, 389, + 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 0, 404, 405, 1556, 407, + 408, 409, 1557, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 1558, 424, 425, + 426, 427, 428, 429, 1559, 431, 432, 0, 1560, 434, + 435, 1561, 437, 0, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 1562, 452, 0, + 0, 0, 454, 455, 0, 456, 1563, 458, 459, 460, + 461, 462, 0, 463, 1564, 1565, 0, 0, 466, 467, + 0, 469, 0, 0, 471, 472, 1566, 474, 475, 476, + 477, 478, 1567, 0, 479, 480, 481, 1568, 0, 482, + 483, 484, 485, 0, 486, 487, 488, 489, 490, 0, + 1569, 493, 0, 494, 1570, 496, 497, 498, 499, 500, + 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, + 507, 508, 509, 532, 0, 557, 0, 0, 0, 0, + 0, 0, 0, 0, 521, 522, 523, 524, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, @@ -11427,38 +11369,139 @@ static const yytype_int16 yytable[] = 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, - 252, 253, 254, 966, 256, 0, 258, 259, 260, 261, + 252, 253, 254, 3119, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 326, 327, 328, 329, 330, 0, 331, 332, 0, - 334, 0, 335, 336, 337, 338, 339, 340, 0, 341, - 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, - 348, 0, 350, 0, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, - 0, 365, 366, 367, 0, 369, 370, 371, 372, 373, - 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 0, 434, 435, 436, - 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 535, 452, 453, 0, 0, - 454, 455, 0, 456, 0, 458, 459, 460, 461, 462, - 0, 463, 464, 465, 0, 0, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 492, 493, - 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 532, 0, 0, 0, + 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, + 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, + 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, + 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, + 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, + 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, + 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 532, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, + 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, + 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, + 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, + 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, + 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, + 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, + 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, + 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, + 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, + 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, + 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, + 249, 0, 250, 251, 252, 253, 254, 255, 256, 0, + 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, + 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, + 0, 285, 286, 287, 0, 288, 289, 290, 0, 0, + 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 0, 326, 327, 328, 329, + 330, 0, 331, 332, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, + 345, 0, 0, 346, 347, 348, 0, 350, 0, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 367, 0, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 0, 0, 434, 435, 436, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 535, 452, 453, 0, 0, 454, 455, 0, 456, 0, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, + 0, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 492, 493, 0, 494, 0, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 532, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, + 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, + 147, 148, 149, 150, 0, 0, 151, 152, 153, 154, + 155, 156, 157, 0, 158, 159, 160, 161, 162, 0, + 0, 0, 164, 165, 166, 167, 168, 169, 0, 171, + 172, 173, 0, 174, 175, 176, 177, 178, 179, 0, + 0, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, + 198, 199, 200, 201, 202, 0, 0, 203, 204, 205, + 206, 0, 0, 207, 208, 209, 210, 211, 0, 212, + 213, 214, 0, 215, 216, 217, 0, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, + 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, + 0, 0, 0, 239, 240, 533, 0, 848, 244, 245, + 0, 246, 247, 248, 249, 0, 250, 251, 252, 253, + 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, + 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, + 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, + 280, 0, 0, 283, 0, 285, 286, 287, 0, 288, + 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, + 296, 849, 298, 299, 300, 301, 302, 534, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, + 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 0, 341, 342, + 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, + 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, + 365, 366, 367, 0, 369, 370, 371, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 407, 408, 409, 410, + 411, 412, 413, 414, 850, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 0, 424, 425, 426, 427, 851, + 429, 430, 431, 432, 0, 0, 434, 435, 436, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 535, 452, 453, 0, 0, 454, + 455, 0, 456, 0, 458, 459, 460, 461, 462, 0, + 463, 852, 465, 0, 0, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 476, 477, 478, 0, + 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 491, 492, 853, 0, + 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, @@ -11477,38 +11520,139 @@ static const yytype_int16 yytable[] = 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, - 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, + 250, 251, 252, 253, 254, 966, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, - 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, - 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, - 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, - 408, 409, 410, 411, 412, 413, 414, 850, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, - 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, - 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, - 461, 462, 0, 463, 852, 465, 0, 0, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, + 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, + 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, + 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, + 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, + 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, + 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, + 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 532, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, + 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, + 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, + 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, + 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, + 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, + 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, + 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, + 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, + 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, + 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, + 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, + 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, + 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, + 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, + 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 367, 0, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 407, 408, 409, 410, 411, 412, + 413, 414, 850, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 0, 434, 435, 436, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 535, 452, 453, 0, 0, 454, 455, 0, + 456, 0, 458, 459, 460, 461, 462, 0, 463, 852, + 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 492, 493, 0, 494, 0, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, + 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, + 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, + 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, + 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, + 162, 0, 0, 0, 164, 165, 166, 167, 168, 169, + 0, 171, 172, 173, 0, 174, 175, 176, 177, 178, + 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, + 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, + 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, + 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, + 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, + 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, + 252, 253, 254, 1332, 256, 0, 258, 259, 260, 261, + 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, + 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, + 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, + 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, + 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, + 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, + 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, + 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, + 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, + 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, @@ -11527,92 +11671,42 @@ static const yytype_int16 yytable[] = 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, - 249, 0, 250, 251, 252, 253, 254, 1332, 256, 0, + 249, 0, 250, 251, 252, 253, 254, 1355, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, - 0, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, - 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, - 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, - 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, - 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, - 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, - 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, - 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, - 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, - 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, - 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, - 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, - 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, - 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, - 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, - 247, 248, 249, 0, 250, 251, 252, 253, 254, 1353, - 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, - 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, - 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, - 0, 283, 0, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 0, 293, 0, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 534, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 326, 327, 328, - 329, 330, 0, 331, 332, 0, 334, 0, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 0, 0, 343, - 344, 345, 0, 0, 346, 347, 348, 0, 350, 0, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 367, - 0, 369, 370, 371, 372, 373, 374, 0, 375, 376, - 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 0, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 0, 0, 434, 435, 436, 437, 0, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 535, 452, 453, 0, 0, 454, 455, 0, 456, - 0, 458, 459, 460, 461, 462, 0, 463, 464, 465, - 0, 0, 466, 467, 468, 469, 470, 0, 471, 472, - 473, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 491, 492, 493, 0, 494, 0, 496, - 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, + 0, 285, 286, 287, 0, 288, 289, 290, 0, 0, + 291, 0, 293, 0, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 534, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 0, 326, 327, 328, 329, + 330, 0, 331, 332, 0, 334, 0, 335, 336, 337, + 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, + 345, 0, 0, 346, 347, 348, 0, 350, 0, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 367, 0, + 369, 370, 371, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 0, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 0, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 0, 0, 434, 435, 436, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 535, 452, 453, 0, 0, 454, 455, 0, 456, 0, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 0, + 0, 466, 467, 468, 469, 470, 0, 471, 472, 473, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 491, 492, 493, 0, 494, 0, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, - 127, 128, 129, 0, 0, 0, 0, 0, 0, 1712, + 127, 128, 129, 0, 0, 0, 0, 0, 0, 1715, 0, 0, 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, 153, 154, @@ -11631,35 +11725,136 @@ static const yytype_int16 yytable[] = 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, - 280, 0, 0, 283, 0, 285, 286, 287, 288, 289, - 290, 0, 0, 291, 0, 293, 0, 0, 295, 296, - 297, 298, 299, 300, 301, 302, 534, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 0, 326, - 327, 328, 329, 330, 0, 331, 332, 0, 334, 0, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, - 0, 343, 344, 345, 0, 0, 346, 347, 348, 0, - 350, 0, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 0, 0, 365, - 366, 367, 0, 369, 370, 371, 372, 373, 374, 0, - 375, 376, 377, 378, 379, 380, 0, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 0, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 0, 404, 405, 0, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 0, - 430, 431, 432, 0, 0, 434, 435, 436, 437, 0, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 535, 452, 453, 0, 0, 454, 455, - 0, 456, 0, 458, 459, 460, 461, 462, 0, 463, - 464, 465, 0, 0, 466, 467, 468, 469, 470, 0, - 471, 472, 473, 474, 475, 476, 477, 478, 0, 0, - 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, - 486, 487, 488, 489, 490, 491, 492, 493, 0, 494, - 0, 496, 497, 498, 499, 500, 501, 502, 0, 0, - 503, 0, 0, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 532, 0, 0, 0, 0, 0, + 280, 0, 0, 283, 0, 285, 286, 287, 0, 288, + 289, 290, 0, 0, 291, 0, 293, 0, 0, 295, + 296, 297, 298, 299, 300, 301, 302, 534, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, + 326, 327, 328, 329, 330, 0, 331, 332, 0, 334, + 0, 335, 336, 337, 338, 339, 340, 0, 341, 342, + 0, 0, 343, 344, 345, 0, 0, 346, 347, 348, + 0, 350, 0, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 0, 0, 0, 0, + 365, 366, 367, 0, 369, 370, 371, 372, 373, 374, + 0, 375, 376, 377, 378, 379, 380, 0, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 0, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 0, 404, 405, 0, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, + 0, 430, 431, 432, 0, 0, 434, 435, 436, 437, + 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 535, 452, 453, 0, 0, 454, + 455, 0, 456, 0, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 0, 0, 466, 467, 468, 469, 470, + 0, 471, 472, 473, 474, 475, 476, 477, 478, 0, + 0, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 488, 489, 490, 491, 492, 493, 0, + 494, 0, 496, 497, 498, 499, 500, 501, 502, 0, + 0, 503, 0, 0, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 532, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, + 134, 135, 0, 137, 138, 139, 140, 141, 0, 143, + 144, 0, 145, 146, 147, 148, 149, 150, 0, 0, + 151, 152, 153, 154, 155, 156, 157, 0, 158, 159, + 160, 161, 162, 0, 0, 0, 164, 165, 166, 167, + 168, 169, 0, 171, 172, 173, 0, 174, 175, 176, + 177, 178, 179, 0, 0, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 0, 196, 0, 197, 198, 199, 200, 201, 202, 0, + 0, 203, 204, 205, 206, 0, 0, 207, 208, 209, + 210, 211, 0, 212, 213, 214, 0, 215, 216, 217, + 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, + 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, + 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, + 250, 251, 252, 253, 254, 1912, 256, 0, 258, 259, + 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, + 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, + 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, + 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, + 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, + 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, + 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, + 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, + 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, + 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 532, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 132, 0, 0, 134, 135, 0, 137, 138, 139, + 140, 141, 0, 143, 144, 0, 145, 146, 147, 148, + 149, 150, 0, 0, 151, 152, 153, 154, 155, 156, + 157, 0, 158, 159, 160, 161, 162, 0, 0, 0, + 164, 165, 166, 167, 168, 169, 0, 171, 172, 173, + 0, 174, 175, 176, 177, 178, 179, 0, 0, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, + 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, + 0, 207, 208, 209, 210, 211, 0, 212, 213, 214, + 0, 215, 216, 217, 0, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, + 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, + 247, 248, 249, 0, 250, 251, 252, 253, 254, 2298, + 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, + 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, + 0, 283, 0, 285, 286, 287, 0, 288, 289, 290, + 0, 0, 291, 0, 293, 0, 0, 295, 296, 297, + 298, 299, 300, 301, 302, 534, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 326, 327, + 328, 329, 330, 0, 331, 332, 0, 334, 0, 335, + 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, + 343, 344, 345, 0, 0, 346, 347, 348, 0, 350, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 0, 0, 0, 0, 365, 366, + 367, 0, 369, 370, 371, 372, 373, 374, 0, 375, + 376, 377, 378, 379, 380, 0, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 0, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 0, 404, 405, 0, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 0, 0, 434, 435, 436, 437, 0, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 535, 452, 453, 0, 0, 454, 455, 0, + 456, 0, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 0, 0, 466, 467, 468, 469, 470, 0, 471, + 472, 473, 474, 475, 476, 477, 478, 0, 0, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 488, 489, 490, 491, 492, 493, 0, 494, 0, + 496, 497, 498, 499, 500, 501, 502, 0, 0, 503, + 0, 0, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, @@ -11678,39 +11873,137 @@ static const yytype_int16 yytable[] = 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, 250, 251, - 252, 253, 254, 1908, 256, 0, 258, 259, 260, 261, + 252, 253, 254, 2318, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 326, 327, 328, 329, 330, 0, 331, 332, 0, - 334, 0, 335, 336, 337, 338, 339, 340, 0, 341, - 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, - 348, 0, 350, 0, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 0, - 0, 365, 366, 367, 0, 369, 370, 371, 372, 373, - 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 0, 434, 435, 436, - 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 535, 452, 453, 0, 0, - 454, 455, 0, 456, 0, 458, 459, 460, 461, 462, - 0, 463, 464, 465, 0, 0, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 492, 493, - 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 532, 0, 0, 0, + 0, 288, 289, 290, 0, 0, 291, 0, 293, 0, + 0, 295, 296, 297, 298, 299, 300, 301, 302, 534, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 326, 327, 328, 329, 330, 0, 331, 332, + 0, 334, 0, 335, 336, 337, 338, 339, 340, 0, + 341, 342, 0, 0, 343, 344, 345, 0, 0, 346, + 347, 348, 0, 350, 0, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 0, 0, 365, 366, 367, 0, 369, 370, 371, 372, + 373, 374, 0, 375, 376, 377, 378, 379, 380, 0, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 0, 404, 405, 0, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 0, 0, 434, 435, + 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 535, 452, 453, 0, + 0, 454, 455, 0, 456, 0, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 0, 0, 466, 467, 468, + 469, 470, 0, 471, 472, 473, 474, 475, 476, 477, + 478, 0, 0, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 488, 489, 490, 491, 492, + 493, 0, 494, 0, 496, 497, 498, 499, 500, 501, + 502, 0, 0, 503, 0, 0, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 3309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, + 0, 0, 3037, 0, 0, 0, 0, 3038, 131, 132, + 0, 3039, 134, 135, 3040, 137, 138, 139, 0, 1520, + 3041, 1522, 1523, 0, 145, 146, 147, 148, 149, 150, + 0, 0, 151, 152, 153, 154, 1524, 1525, 157, 0, + 158, 159, 160, 161, 0, 0, 3042, 0, 3043, 165, + 166, 167, 168, 169, 3044, 171, 172, 173, 0, 174, + 175, 176, 177, 178, 179, 0, 3045, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 1530, 192, 193, + 1531, 195, 0, 196, 0, 197, 198, 199, 200, 201, + 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, + 208, 1079, 210, 211, 0, 212, 213, 214, 0, 215, + 216, 217, 0, 218, 219, 220, 221, 0, 223, 224, + 225, 226, 227, 228, 0, 0, 230, 0, 231, 232, + 1532, 234, 0, 235, 0, 236, 3046, 0, 3047, 239, + 240, 3048, 3049, 243, 244, 245, 0, 0, 0, 248, + 249, 0, 250, 251, 252, 253, 254, 255, 256, 3050, + 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, + 267, 268, 0, 269, 3051, 0, 272, 273, 274, 275, + 276, 1538, 1539, 0, 1540, 0, 280, 3052, 3053, 283, + 3054, 285, 286, 287, 0, 288, 289, 290, 0, 0, + 291, 3055, 293, 3056, 0, 295, 296, 297, 298, 299, + 300, 301, 302, 3310, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 1547, 3058, 1549, 327, 328, 329, + 0, 0, 331, 332, 3060, 334, 0, 0, 336, 1551, + 338, 339, 340, 0, 341, 342, 0, 0, 343, 344, + 345, 0, 0, 346, 347, 0, 3062, 350, 3063, 0, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 0, 0, 0, 0, 365, 366, 0, 3064, + 369, 370, 0, 372, 373, 374, 0, 375, 376, 377, + 378, 379, 380, 0, 381, 382, 383, 384, 385, 1555, + 387, 388, 389, 390, 0, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 0, 404, + 405, 3065, 407, 408, 409, 0, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 3066, 424, 425, 426, 427, 428, 429, 0, 431, 432, + 0, 3068, 434, 435, 1561, 437, 0, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 3311, 452, 0, 0, 0, 454, 455, 0, 456, 3070, + 458, 459, 460, 461, 462, 0, 463, 1564, 1565, 0, + 0, 466, 467, 0, 469, 0, 0, 471, 472, 3071, + 474, 475, 476, 477, 478, 0, 0, 479, 480, 481, + 3073, 0, 482, 483, 484, 485, 0, 486, 487, 488, + 489, 490, 0, 1569, 493, 0, 494, 3074, 496, 497, + 498, 499, 500, 501, 502, 0, 0, 503, 0, 0, + 504, 505, 506, 507, 508, 509, 1820, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 119, 120, 121, 122, + 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, + 0, 1516, 0, 0, 0, 0, 1517, 131, 132, 0, + 1518, 134, 135, 1519, 137, 138, 139, 0, 1520, 1521, + 1522, 1523, 0, 145, 146, 147, 148, 149, 150, 0, + 0, 151, 152, 153, 154, 1524, 1525, 157, 0, 158, + 159, 160, 161, 0, 0, 1526, 0, 1527, 165, 166, + 167, 168, 169, 1528, 171, 172, 173, 0, 174, 175, + 176, 177, 178, 179, 0, 1529, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 1530, 192, 193, 1531, + 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, + 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, + 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, + 217, 0, 218, 219, 220, 221, 0, 223, 224, 225, + 226, 227, 228, 0, 0, 230, 0, 231, 232, 1532, + 234, 0, 235, 0, 236, 1533, 0, 1534, 239, 240, + 0, 1535, 243, 244, 245, 0, 0, 0, 248, 249, + 0, 250, 251, 252, 253, 254, 255, 256, 1536, 258, + 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, + 268, 0, 269, 1537, 0, 272, 273, 274, 275, 276, + 1538, 1539, 0, 1540, 0, 280, 1541, 1542, 283, 1543, + 285, 286, 287, 0, 288, 289, 290, 0, 0, 291, + 1544, 293, 1545, 0, 295, 296, 297, 298, 299, 300, + 301, 302, 0, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 1547, 1548, 1549, 327, 328, 329, 0, + 0, 331, 332, 1550, 334, 0, 0, 336, 1551, 338, + 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, + 0, 0, 346, 347, 0, 1552, 350, 1553, 0, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 0, 0, 0, 0, 365, 366, 0, 1554, 369, + 370, 0, 372, 373, 374, 0, 375, 376, 377, 378, + 379, 380, 0, 381, 382, 383, 384, 385, 1555, 387, + 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, + 1556, 407, 408, 409, 0, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 1558, + 424, 425, 426, 427, 428, 429, 0, 431, 432, 0, + 1560, 434, 435, 1561, 437, 0, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 0, + 452, 0, 0, 0, 454, 455, 0, 456, 1563, 458, + 459, 460, 461, 462, 0, 463, 1564, 1565, 0, 0, + 466, 467, 0, 469, 0, 0, 471, 472, 1566, 474, + 475, 476, 477, 478, 0, 0, 479, 480, 481, 1568, + 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, + 490, 0, 1569, 493, 0, 494, 1570, 496, 497, 498, + 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, + 505, 506, 507, 508, 509, 532, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 521, 522, 523, 524, 0, 0, 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, 0, 0, @@ -11727,8194 +12020,8089 @@ static const yytype_int16 yytable[] = 0, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, 240, 533, - 0, 243, 244, 245, 0, 246, 247, 248, 249, 0, - 250, 251, 252, 253, 254, 2293, 256, 0, 258, 259, + 0, 243, 244, 245, 0, 246, 247, 0, 249, 0, + 250, 251, 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, 0, 285, - 286, 287, 288, 289, 290, 0, 0, 291, 0, 293, - 0, 0, 295, 296, 297, 298, 299, 300, 301, 302, - 534, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 326, 327, 328, 329, 330, 0, 331, - 332, 0, 334, 0, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 0, 0, 343, 344, 345, 0, 0, - 346, 347, 348, 0, 350, 0, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 0, 0, 365, 366, 367, 0, 369, 370, 371, - 372, 373, 374, 0, 375, 376, 377, 378, 379, 380, - 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 0, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 0, 404, 405, 0, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 0, 0, 434, - 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 535, 452, 453, - 0, 0, 454, 455, 0, 456, 0, 458, 459, 460, - 461, 462, 0, 463, 464, 465, 0, 0, 466, 467, - 468, 469, 470, 0, 471, 472, 473, 474, 475, 476, - 477, 478, 0, 0, 479, 480, 481, 0, 0, 482, - 483, 484, 485, 0, 486, 487, 488, 489, 490, 491, - 492, 493, 0, 494, 0, 496, 497, 498, 499, 500, - 501, 502, 0, 0, 503, 0, 0, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 532, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 131, 132, - 0, 0, 134, 135, 0, 137, 138, 139, 140, 141, - 0, 143, 144, 0, 145, 146, 147, 148, 149, 150, - 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 161, 162, 0, 0, 0, 164, 165, - 166, 167, 168, 169, 0, 171, 172, 173, 0, 174, - 175, 176, 177, 178, 179, 0, 0, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 0, 196, 0, 197, 198, 199, 200, 201, - 202, 0, 0, 203, 204, 205, 206, 0, 0, 207, - 208, 209, 210, 211, 0, 212, 213, 214, 0, 215, - 216, 217, 0, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 234, 0, 235, 0, 236, 0, 0, 0, 239, - 240, 533, 0, 243, 244, 245, 0, 246, 247, 248, - 249, 0, 250, 251, 252, 253, 254, 2313, 256, 0, - 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, - 267, 268, 0, 269, 0, 271, 272, 273, 274, 275, - 276, 277, 278, 0, 279, 0, 280, 0, 0, 283, - 0, 285, 286, 287, 288, 289, 290, 0, 0, 291, - 0, 293, 0, 0, 295, 296, 297, 298, 299, 300, - 301, 302, 534, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 326, 327, 328, 329, 330, - 0, 331, 332, 0, 334, 0, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 0, 0, 343, 344, 345, - 0, 0, 346, 347, 348, 0, 350, 0, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 0, 0, 365, 366, 367, 0, 369, - 370, 371, 372, 373, 374, 0, 375, 376, 377, 378, - 379, 380, 0, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 0, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 0, 404, 405, - 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 0, - 0, 434, 435, 436, 437, 0, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 535, - 452, 453, 0, 0, 454, 455, 0, 456, 0, 458, - 459, 460, 461, 462, 0, 463, 464, 465, 0, 0, - 466, 467, 468, 469, 470, 0, 471, 472, 473, 474, - 475, 476, 477, 478, 0, 0, 479, 480, 481, 0, - 0, 482, 483, 484, 485, 0, 486, 487, 488, 489, - 490, 491, 492, 493, 0, 494, 0, 496, 497, 498, - 499, 500, 501, 502, 0, 0, 503, 0, 0, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 3300, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 120, 121, 122, 123, 124, 125, 126, 0, 127, 128, - 129, 0, 0, 0, 3030, 0, 0, 0, 0, 3031, - 131, 132, 0, 3032, 134, 135, 3033, 137, 138, 139, - 0, 1518, 3034, 1520, 1521, 0, 145, 146, 147, 148, - 149, 150, 0, 0, 151, 152, 153, 154, 1522, 1523, - 157, 0, 158, 159, 160, 161, 0, 0, 3035, 0, - 3036, 165, 166, 167, 168, 169, 3037, 171, 172, 173, - 0, 174, 175, 176, 177, 178, 179, 0, 3038, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 1528, - 192, 193, 1529, 195, 0, 196, 0, 197, 198, 199, - 200, 201, 202, 0, 0, 203, 204, 205, 206, 0, - 0, 207, 208, 1079, 210, 211, 0, 212, 213, 214, - 0, 215, 216, 217, 0, 218, 219, 220, 221, 0, - 223, 224, 225, 226, 227, 228, 0, 0, 230, 0, - 231, 232, 1530, 234, 0, 235, 0, 236, 3039, 0, - 3040, 239, 240, 3041, 3042, 243, 244, 245, 0, 0, - 0, 248, 249, 0, 250, 251, 252, 253, 254, 255, - 256, 3043, 258, 259, 260, 261, 0, 262, 263, 264, - 265, 266, 267, 268, 0, 269, 3044, 0, 272, 273, - 274, 275, 276, 1536, 1537, 0, 1538, 0, 280, 3045, - 3046, 283, 3047, 285, 286, 287, 288, 289, 290, 0, - 0, 291, 3048, 293, 3049, 0, 295, 296, 297, 298, - 299, 300, 301, 302, 3301, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 1545, 3051, 1547, 327, 328, - 329, 0, 0, 331, 332, 3053, 334, 0, 0, 336, - 1549, 338, 339, 340, 0, 341, 342, 0, 0, 343, - 344, 345, 0, 0, 346, 347, 0, 3055, 350, 3056, - 0, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 0, 0, 365, 366, 0, - 3057, 369, 370, 0, 372, 373, 374, 0, 375, 376, - 377, 378, 379, 380, 0, 381, 382, 383, 384, 385, - 1553, 387, 388, 389, 390, 0, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 0, - 404, 405, 3058, 407, 408, 409, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 3059, 424, 425, 426, 427, 428, 429, 0, 431, - 432, 0, 3061, 434, 435, 1559, 437, 0, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 3302, 452, 0, 0, 0, 454, 455, 0, 456, - 3063, 458, 459, 460, 461, 462, 0, 463, 1562, 1563, - 0, 0, 466, 467, 0, 469, 0, 0, 471, 472, - 3064, 474, 475, 476, 477, 478, 0, 0, 479, 480, - 481, 3066, 0, 482, 483, 484, 485, 0, 486, 487, - 488, 489, 490, 0, 1567, 493, 0, 494, 3067, 496, - 497, 498, 499, 500, 501, 502, 0, 0, 503, 0, - 0, 504, 505, 506, 507, 508, 509, 1817, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 521, 522, - 523, 524, 0, 0, 0, 0, 119, 120, 121, 122, - 123, 124, 125, 126, 0, 127, 128, 129, 0, 0, - 0, 1514, 0, 0, 0, 0, 1515, 131, 132, 0, - 1516, 134, 135, 1517, 137, 138, 139, 0, 1518, 1519, - 1520, 1521, 0, 145, 146, 147, 148, 149, 150, 0, - 0, 151, 152, 153, 154, 1522, 1523, 157, 0, 158, - 159, 160, 161, 0, 0, 1524, 0, 1525, 165, 166, - 167, 168, 169, 1526, 171, 172, 173, 0, 174, 175, - 176, 177, 178, 179, 0, 1527, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 1528, 192, 193, 1529, - 195, 0, 196, 0, 197, 198, 199, 200, 201, 202, - 0, 0, 203, 204, 205, 206, 0, 0, 207, 208, - 1079, 210, 211, 0, 212, 213, 214, 0, 215, 216, - 217, 0, 218, 219, 220, 221, 0, 223, 224, 225, - 226, 227, 228, 0, 0, 230, 0, 231, 232, 1530, - 234, 0, 235, 0, 236, 1531, 0, 1532, 239, 240, - 0, 1533, 243, 244, 245, 0, 0, 0, 248, 249, - 0, 250, 251, 252, 253, 254, 255, 256, 1534, 258, - 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, - 268, 0, 269, 1535, 0, 272, 273, 274, 275, 276, - 1536, 1537, 0, 1538, 0, 280, 1539, 1540, 283, 1541, - 285, 286, 287, 288, 289, 290, 0, 0, 291, 1542, - 293, 1543, 0, 295, 296, 297, 298, 299, 300, 301, - 302, 0, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 1545, 1546, 1547, 327, 328, 329, 0, 0, - 331, 332, 1548, 334, 0, 0, 336, 1549, 338, 339, - 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, - 0, 346, 347, 0, 1550, 350, 1551, 0, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 0, 0, 0, 0, 365, 366, 0, 1552, 369, 370, - 0, 372, 373, 374, 0, 375, 376, 377, 378, 379, - 380, 0, 381, 382, 383, 384, 385, 1553, 387, 388, - 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 0, 404, 405, 1554, - 407, 408, 409, 0, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 0, 1556, 424, - 425, 426, 427, 428, 429, 0, 431, 432, 0, 1558, - 434, 435, 1559, 437, 0, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 0, 452, - 0, 0, 0, 454, 455, 0, 456, 1561, 458, 459, - 460, 461, 462, 0, 463, 1562, 1563, 0, 0, 466, - 467, 0, 469, 0, 0, 471, 472, 1564, 474, 475, - 476, 477, 478, 0, 0, 479, 480, 481, 1566, 0, - 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, - 0, 1567, 493, 0, 494, 1568, 496, 497, 498, 499, - 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, - 506, 507, 508, 509, 532, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 521, 522, 523, 524, 0, - 0, 0, 0, 119, 120, 121, 122, 123, 124, 125, - 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 132, 0, 0, 134, 135, - 0, 137, 138, 139, 140, 141, 0, 143, 144, 0, - 145, 146, 147, 148, 149, 150, 0, 0, 151, 152, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 161, - 162, 0, 0, 0, 164, 165, 166, 167, 168, 169, - 0, 171, 172, 173, 0, 174, 175, 176, 177, 178, - 179, 0, 0, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, - 0, 197, 198, 199, 200, 201, 202, 0, 0, 203, - 204, 205, 206, 0, 0, 207, 208, 209, 210, 211, - 0, 212, 213, 214, 0, 215, 216, 217, 0, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 231, 232, 233, 234, 0, 235, - 0, 236, 0, 0, 0, 239, 240, 533, 0, 243, - 244, 245, 0, 246, 247, 0, 249, 0, 250, 251, - 252, 253, 254, 255, 256, 0, 258, 259, 260, 261, - 0, 262, 263, 264, 265, 266, 267, 268, 0, 269, - 0, 271, 272, 273, 274, 275, 276, 277, 278, 0, - 279, 0, 280, 0, 0, 283, 0, 285, 286, 287, - 288, 289, 290, 0, 0, 291, 0, 293, 0, 0, - 295, 296, 297, 298, 299, 300, 301, 302, 534, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 326, 327, 328, 329, 330, 0, 331, 332, 0, - 334, 0, 335, 336, 337, 338, 339, 340, 0, 341, - 342, 0, 0, 343, 344, 345, 0, 0, 346, 347, - 348, 0, 350, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 360, 361, 362, 363, 364, 0, 0, 0, - 0, 365, 366, 367, 0, 369, 370, 371, 372, 373, - 374, 0, 375, 376, 377, 378, 379, 380, 0, 381, - 382, 383, 0, 385, 386, 387, 388, 389, 390, 0, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 0, 404, 405, 0, 407, 408, 409, - 410, 0, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 0, 0, 434, 435, 436, - 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 535, 452, 453, 0, 0, - 454, 455, 0, 456, 0, 458, 459, 460, 461, 462, - 0, 463, 464, 465, 0, 0, 466, 467, 468, 469, - 470, 0, 471, 472, 473, 474, 475, 476, 477, 478, - 0, 0, 479, 480, 481, 0, 0, 482, 483, 484, - 485, 0, 486, 487, 488, 489, 490, 491, 492, 493, - 0, 494, 0, 496, 497, 498, 499, 500, 501, 502, - 0, 0, 503, 0, 0, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2, 0, 3, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 11, 0, 756, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 757, 0, 0, 0, 0, 0, 18, 0, 0, - 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1497, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 286, 287, 0, 288, 289, 290, 0, 0, 291, 0, + 293, 0, 0, 295, 296, 297, 298, 299, 300, 301, + 302, 534, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 326, 327, 328, 329, 330, 0, + 331, 332, 0, 334, 0, 335, 336, 337, 338, 339, + 340, 0, 341, 342, 0, 0, 343, 344, 345, 0, + 0, 346, 347, 348, 0, 350, 0, 352, 353, 354, + 355, 356, 357, 358, 0, 360, 361, 362, 363, 364, + 0, 0, 0, 0, 365, 366, 367, 0, 369, 370, + 371, 372, 373, 374, 0, 375, 376, 377, 378, 379, + 380, 0, 381, 382, 383, 0, 385, 386, 387, 388, + 389, 390, 0, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 0, 404, 405, 0, + 407, 408, 409, 410, 0, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 0, 0, + 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 535, 452, + 453, 0, 0, 454, 455, 0, 456, 0, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 0, 0, 466, + 467, 468, 469, 470, 0, 471, 472, 473, 474, 475, + 476, 477, 478, 0, 0, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 488, 489, 490, + 491, 492, 493, 0, 494, 0, 496, 497, 498, 499, + 500, 501, 502, 0, 0, 503, 0, 0, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 3, 4, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 11, 0, 756, 0, 0, + 0, 10, 0, 0, 0, 0, 0, 0, 13, 0, + 0, 0, 0, 11, 0, 756, 0, 0, 0, 0, + 0, 0, 0, 14, 15, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 757, 0, 0, 0, 0, 0, + 18, 14, 15, 0, 0, 0, 0, 0, 19, 0, + 0, 0, 757, 0, 0, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 22, 19, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1498, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -1498, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 26, 27, 28, 0, 0, 0, 0, 0, 29, 0, - 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, - 0, 0, 0, 0, 34, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 37, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, - 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, - 43, 0, 0, 0, 0, 758, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 26, 27, 28, 0, 0, 0, + 0, 0, 29, 0, 0, 30, 0, 0, 0, 0, + 0, 0, 26, 27, 28, 0, 0, 0, 0, 0, + 29, 0, 0, 30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, + 0, 33, 0, 32, 0, 0, 0, 0, 34, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 36, 0, 0, 34, 0, 0, 0, + 35, 0, 0, 0, 0, 37, 0, 0, 0, 38, + 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 0, 0, 0, 38, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 759 + 0, 0, 0, 40, 0, 0, 0, 39, 0, 42, + 0, 0, 0, 0, 43, 0, 0, 0, 0, 758, + 0, 40, 0, 0, 0, 0, 0, 42, 0, 0, + 0, 44, 43, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, + 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 759, + 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 46 }; static const yytype_int16 yycheck[] = { - 7, 0, 751, 525, 846, 0, 46, 0, 0, 16, - 0, 0, 0, 908, 0, 0, 23, 0, 0, 820, - 920, 759, 936, 893, 1453, 1182, 38, 1264, 20, 1249, - 1005, 1735, 941, 870, 1237, 20, 1697, 1251, 7, 2245, - 1229, 1469, 1099, 1587, 1331, 20, 77, 996, 37, 996, - 2309, 1613, 1051, 77, 23, 16, 996, 1506, 73, 996, - 1626, 986, 2215, 1857, 2217, 1786, 1669, 1226, 75, 76, - 1308, 1217, 23, 1650, 1651, 0, 2235, 1356, 1801, 2053, - 971, 975, 17, 0, 2763, 986, 908, 2723, 910, 1147, - 912, 2723, 0, 0, 1152, 1254, 1849, 0, 45, 111, - 2234, 2181, 2761, 0, 758, 0, 75, 76, 34, 0, - 2783, 759, 101, 0, 1014, 2586, 1839, 752, 2790, 2642, - 2382, 1701, 0, 0, 75, 76, 2675, 0, 0, 815, - 2679, 2054, 1871, 1108, 1874, 821, 0, 1870, 0, 5, - 0, 0, 7, 2300, 0, 1753, 40, 13, 14, 1073, - 1074, 5, 1669, 1755, 0, 0, 0, 994, 23, 0, - 1845, 2899, 0, 5, 75, 76, 1090, 1988, 0, 0, - 55, 4, 9, 3, 2394, 2394, 9, 10, 3125, 783, - 2390, 5, 5, 139, 74, 5, 5, 5, 2388, 13, - 14, 0, 5, 986, 5, 5, 997, 3108, 119, 9, - 13, 14, 13, 14, 34, 35, 5, 5, 5, 45, - 75, 76, 9, 5, 13, 14, 5, 5, 3129, 5, - 5, 5, 5, 13, 14, 173, 30, 3, 63, 5, - 122, 45, 4, 1158, 38, 2531, 23, 9, 3, 4, - 5, 172, 13, 14, 9, 11, 2403, 914, 986, 11, - 16, 30, 104, 2958, 16, 9, 2026, 2027, 865, 38, - 53, 82, 3004, 63, 1164, 82, 245, 2037, 63, 100, - 1107, 2041, 93, 124, 1273, 122, 93, 1191, 30, 169, - 46, 107, 3305, 5, 1283, 191, 38, 172, 75, 76, - 812, 100, 4, 203, 888, 181, 26, 9, 888, 227, - 2457, 2458, 63, 2460, 288, 172, 3076, 810, 314, 90, - 291, 1468, 998, 1238, 80, 311, 1241, 1242, 296, 122, - 3105, 213, 276, 296, 1010, 80, 2635, 291, 2637, 181, - 1077, 108, 311, 107, 1127, 989, 132, 859, 2016, 2017, - 2018, 171, 117, 173, 290, 273, 1093, 40, 129, 1506, - 184, 119, 117, 193, 1557, 383, 2509, 392, 107, 117, - 13, 14, 40, 3472, 370, 1158, 213, 1654, 1020, 2691, - 1212, 1213, 1052, 1025, 3232, 1027, 3234, 279, 64, 1216, - 2903, 2935, 369, 2937, 177, 30, 346, 41, 74, 30, - 149, 11, 3548, 3505, 1046, 374, 259, 260, 132, 11, - 164, 194, 83, 15, 16, 401, 199, 137, 460, 460, - 485, 11, 432, 4, 342, 192, 191, 120, 9, 172, - 122, 273, 401, 3334, 3060, 385, 160, 1958, 1342, 120, - 33, 2690, 507, 162, 46, 137, 360, 3398, 148, 3400, - 330, 3120, 201, 1313, 237, 1238, 46, 290, 1241, 1242, - 193, 2204, 472, 3132, 219, 3637, 59, 2663, 1989, 290, - 80, 421, 1371, 3122, 374, 393, 390, 148, 80, 521, - 521, 411, 126, 273, 453, 385, 241, 3633, 1158, 166, - 80, 290, 2804, 176, 3596, 147, 521, 132, 3597, 285, - 200, 132, 195, 2573, 3441, 397, 3678, 525, 176, 273, - 275, 3359, 433, 457, 195, 1792, 1563, 341, 272, 238, - 516, 421, 280, 473, 167, 3476, 379, 380, 295, 359, - 3262, 1024, 280, 479, 488, 521, 361, 308, 2837, 457, - 2687, 362, 2689, 3303, 521, 475, 370, 521, 108, 3281, - 521, 462, 521, 3248, 3329, 11, 280, 525, 3571, 15, - 16, 285, 525, 362, 543, 241, 218, 1237, 280, 2855, - 450, 361, 2128, 473, 294, 457, 361, 2777, 2362, 2363, - 2364, 1175, 2772, 521, 460, 521, 2796, 2796, 430, 510, - 46, 1188, 418, 11, 2187, 1378, 1379, 15, 16, 3536, - 390, 598, 523, 1115, 1261, 421, 400, 2046, 1522, 1523, - 361, 3155, 395, 11, 418, 472, 1355, 15, 16, 460, - 457, 1360, 433, 356, 80, 521, 433, 1366, 1856, 2181, - 1214, 400, 1459, 1547, 1214, 374, 3537, 329, 358, 523, - 360, 1473, 408, 409, 296, 1373, 521, 598, 325, 1918, - 2614, 471, 2219, 2251, 3382, 426, 2467, 470, 400, 3322, - 2252, 1331, 483, 1495, 457, 521, 75, 2814, 2238, 164, - 390, 2400, 2395, 1950, 530, 2405, 485, 521, 524, 3305, - 2187, 108, 2357, 3305, 483, 1962, 530, 519, 1892, 521, - 433, 523, 2244, 520, 1608, 1609, 524, 525, 507, 521, - 525, 522, 524, 524, 527, 528, 1933, 521, 521, 485, - 1699, 521, 521, 521, 3253, 1992, 440, 132, 521, 3258, - 521, 521, 1999, 522, 3237, 524, 2975, 451, 1372, 759, - 2982, 507, 521, 521, 521, 1373, 231, 1362, 3199, 521, - 525, 521, 521, 521, 0, 521, 521, 521, 521, 162, - 512, 513, 0, 1643, 1644, 1645, 421, 512, 513, 214, - 521, 517, 759, 1590, 1591, 517, 2043, 2527, 512, 513, - 2047, 3440, 20, 1600, 519, 23, 758, 266, 523, 520, - 810, 483, 510, 758, 3447, 526, 3448, 1614, 522, 37, - 1466, 525, 1529, 521, 759, 162, 8, 449, 46, 2076, - 167, 275, 799, 15, 16, 507, 280, 19, 20, 21, - 512, 513, 1549, 810, 483, 817, 3498, 3499, 132, 1646, - 817, 435, 1605, 2051, 173, 238, 1591, 75, 76, 77, - 106, 521, 2956, 322, 1617, 1600, 1619, 420, 507, 1481, - 799, 862, 2510, 2511, 2512, 2513, 160, 1584, 862, 846, - 847, 810, 2636, 101, 2001, 250, 26, 485, 817, 525, - 275, 1503, 32, 865, 2828, 1648, 340, 799, 3550, 810, - 285, 238, 486, 870, 287, 82, 459, 3546, 82, 507, - 275, 883, 3009, 3532, 524, 817, 93, 1557, 893, 93, - 3017, 880, 2962, 521, 425, 880, 427, 880, 880, 2046, - 880, 880, 880, 868, 880, 880, 1821, 880, 880, 810, - 510, 1900, 514, 515, 516, 517, 1831, 922, 471, 1834, - 287, 918, 919, 523, 520, 922, 923, 1666, 13, 14, - 526, 1816, 848, 849, 871, 851, 2205, 853, 2531, 519, - 3589, 516, 275, 523, 799, 3571, 526, 1029, 523, 3571, - 2914, 2864, 4, 1035, 2867, 810, 2869, 9, 5, 3106, - 309, 275, 817, 2011, 59, 880, 280, 137, 356, 1752, - 1753, 285, 1784, 880, 425, 251, 427, 2688, 975, 1878, - 26, 25, 880, 880, 1654, 261, 32, 880, 3657, 986, - 1850, 1851, 1852, 880, 1024, 880, 993, 994, 2741, 880, - 2743, 2714, 999, 880, 1816, 1002, 1003, 989, 1005, 1006, - 1007, 1008, 880, 880, 989, 3264, 941, 880, 880, 1934, - 2733, 2573, 799, 342, 1836, 1022, 880, 1024, 880, 1841, - 880, 880, 108, 810, 2601, 1916, 1033, 2306, 1821, 1920, - 817, 1925, 1923, 1934, 880, 880, 880, 396, 1831, 880, - 519, 1834, 521, 1050, 1051, 1052, 512, 513, 514, 515, - 516, 517, 5, 1022, 485, 1024, 516, 483, 521, 485, - 2489, 37, 116, 523, 1033, 1072, 178, 172, 1108, 4, - 292, 1022, 521, 1024, 9, 2221, 507, 2223, 1827, 227, - 2508, 137, 1033, 1832, 1091, 3244, 514, 515, 516, 517, - 521, 203, 245, 71, 72, 1941, 1103, 1104, 1105, 1945, - 1107, 1108, 1948, 1110, 512, 513, 514, 515, 516, 517, - 1632, 1022, 1792, 1024, 294, 519, 440, 2274, 245, 523, - 2407, 2358, 1033, 2337, 519, 273, 521, 451, 523, 241, - 2368, 147, 147, 26, 519, 425, 1143, 427, 523, 32, - 519, 1934, 26, 2315, 523, 2317, 162, 162, 32, 1110, - 74, 167, 167, 356, 1161, 1162, 3415, 1022, 311, 1024, - 1997, 2723, 13, 14, 1195, 1196, 178, 1198, 1033, 381, - 174, 1195, 1196, 2926, 1198, 3149, 1188, 1034, 358, 132, - 381, 1038, 522, 295, 311, 525, 2345, 189, 190, 119, - 1197, 13, 14, 117, 1201, 1202, 1934, 173, 425, 252, - 427, 30, 218, 218, 1211, 1212, 1213, 160, 203, 1216, - 390, 316, 317, 318, 3442, 848, 849, 2687, 851, 2689, - 853, 374, 238, 238, 522, 2414, 26, 525, 438, 241, - 1237, 2420, 32, 209, 421, 1022, 2211, 1024, 294, 473, - 522, 1253, 246, 525, 137, 393, 1033, 374, 401, 225, - 378, 2088, 2855, 137, 521, 2976, 85, 259, 260, 235, - 2547, 13, 14, 381, 346, 94, 1273, 2060, 162, 521, - 1950, 287, 287, 167, 401, 521, 1283, 207, 383, 167, - 296, 296, 1962, 463, 521, 543, 508, 509, 510, 118, - 512, 513, 514, 515, 516, 517, 522, 521, 354, 525, - 453, 1308, 358, 385, 885, 3099, 887, 3535, 521, 457, - 3538, 522, 1992, 425, 525, 427, 421, 521, 1458, 1999, - 1460, 1461, 275, 172, 1331, 2891, 453, 280, 13, 14, - 2167, 1330, 285, 522, 390, 1330, 525, 137, 450, 421, - 1347, 453, 346, 273, 238, 275, 2216, 1330, 1330, 1356, - 455, 275, 522, 26, 522, 525, 280, 525, 521, 32, - 521, 466, 191, 2043, 13, 14, 1373, 2047, 521, 833, - 834, 835, 2529, 2053, 838, 204, 2533, 379, 380, 521, - 1372, 385, 2831, 1390, 13, 14, 1347, 1372, 1395, 365, - 3649, 473, 522, 287, 521, 525, 2076, 521, 1373, 2943, - 2962, 294, 522, 3631, 514, 525, 330, 463, 384, 522, - 294, 522, 525, 425, 525, 427, 521, 421, 526, 522, - 507, 2312, 525, 2314, 348, 2218, 13, 14, 3634, 1390, - 3636, 504, 522, 449, 449, 525, 2723, 2279, 1445, 1446, - 521, 453, 522, 224, 1451, 525, 1453, 523, 3601, 290, - 26, 1458, 1459, 1460, 1461, 504, 32, 2250, 2251, 522, - 525, 354, 525, 3616, 137, 358, 1473, 1474, 171, 473, - 354, 3677, 522, 521, 358, 525, 1483, 522, 1485, 2393, - 525, 1488, 522, 40, 1453, 2705, 1493, 440, 1495, 1496, - 522, 1498, 2706, 525, 294, 1502, 522, 390, 451, 525, - 758, 759, 2739, 60, 519, 522, 390, 522, 523, 522, - 13, 14, 525, 522, 1483, 2704, 1485, 2706, 3671, 1488, - 172, 2578, 2579, 3676, 1493, 117, 450, 1496, 522, 1498, - 295, 525, 1483, 1502, 1485, 2755, 460, 1488, 13, 14, - 522, 799, 1493, 525, 59, 1496, 521, 1498, 422, 106, - 1557, 1502, 810, 522, 354, 224, 525, 522, 358, 817, - 525, 137, 522, 522, 245, 525, 525, 504, 522, 152, - 463, 525, 1483, 522, 1485, 354, 525, 1488, 407, 463, - 172, 410, 1493, 1590, 1591, 1496, 522, 1498, 1453, 525, - 390, 1502, 1599, 1600, 1587, 1587, 152, 1587, 1587, 1587, - 1607, 1587, 1587, 108, 862, 2442, 2555, 1614, 2555, 2556, - 2557, 2586, 13, 14, 1621, 2555, 2556, 2554, 1483, 176, - 1485, 294, 880, 1488, 522, 174, 522, 525, 1493, 525, - 311, 1496, 152, 1498, 1641, 1642, 152, 1502, 3391, 1646, - 3393, 522, 1649, 522, 525, 202, 525, 1654, 1655, 1656, - 1657, 1658, 1659, 1660, 1661, 1662, 1663, 245, 369, 370, - 1667, 1668, 1669, 463, 522, 1672, 1453, 525, 522, 1676, - 152, 525, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, - 1687, 354, 37, 1690, 1699, 358, 2435, 13, 14, 40, - 1697, 421, 1699, 374, 251, 82, 1483, 246, 1485, 522, - 1669, 1488, 1663, 1003, 261, 2443, 1493, 1738, 521, 1496, - 1717, 1498, 304, 275, 1738, 1502, 273, 390, 294, 40, - 401, 108, 473, 311, 316, 317, 318, 2407, 13, 14, - 89, 989, 13, 14, 1741, 152, 147, 6, 3025, 793, - 1715, 10, 3403, 3305, 487, 1752, 1753, 152, 305, 18, - 523, 162, 13, 14, 2654, 152, 167, 152, 2551, 2552, - 13, 14, 290, 32, 1022, 356, 1024, 36, 13, 14, - 433, 825, 453, 13, 14, 1033, 13, 14, 354, 521, - 245, 521, 358, 13, 14, 1792, 374, 174, 13, 14, - 463, 383, 13, 14, 521, 1802, 850, 346, 522, 1806, - 13, 14, 521, 360, 13, 14, 423, 218, 220, 3023, - 1068, 46, 8, 401, 390, 11, 203, 300, 173, 15, - 16, 225, 1080, 19, 20, 21, 521, 238, 385, 421, - 13, 14, 13, 14, 225, 2677, 385, 245, 521, 3126, - 521, 1802, 1849, 225, 898, 1806, 311, 297, 405, 1856, - 1108, 40, 1859, 1860, 209, 236, 172, 3060, 2767, 246, - 172, 369, 370, 455, 521, 453, 3103, 2547, 369, 370, - 225, 5, 421, 5, 466, 521, 287, 2747, 326, 2793, - 235, 369, 370, 263, 264, 296, 521, 463, 379, 380, - 2727, 483, 5, 1900, 521, 3599, 465, 466, 521, 3603, - 2425, 2426, 5, 311, 3611, 3612, 3193, 1896, 521, 374, - 5, 1918, 3643, 3644, 521, 507, 2807, 5, 1925, 1926, - 521, 3350, 1161, 1162, 473, 2286, 2287, 1934, 2927, 521, - 2723, 9, 986, 521, 2614, 521, 401, 1195, 1196, 521, - 1198, 484, 996, 1950, 302, 178, 525, 1954, 1955, 104, - 1957, 525, 522, 460, 3658, 1962, 1963, 1964, 1965, 1966, - 1967, 1968, 220, 390, 1971, 1972, 1973, 1974, 1975, 1976, - 1977, 1978, 1979, 1980, 167, 167, 287, 285, 59, 1986, - 1987, 236, 521, 1990, 433, 1992, 93, 374, 453, 525, - 1997, 433, 1999, 401, 59, 59, 433, 433, 385, 266, - 316, 317, 318, 199, 316, 317, 318, 151, 241, 3571, - 365, 222, 526, 433, 2021, 433, 483, 381, 3305, 152, - 100, 2028, 199, 2030, 275, 275, 222, 2034, 172, 384, - 40, 40, 275, 275, 421, 521, 2043, 275, 449, 523, - 2047, 521, 2049, 2723, 2051, 453, 2053, 152, 172, 13, - 522, 60, 522, 172, 522, 521, 521, 444, 522, 2028, - 522, 522, 525, 1117, 522, 2034, 480, 383, 522, 2076, - 521, 383, 2865, 1127, 225, 225, 3505, 2028, 282, 282, - 521, 2088, 2089, 2034, 523, 525, 473, 521, 521, 3014, - 521, 470, 521, 521, 178, 1149, 292, 106, 3318, 521, - 523, 39, 521, 479, 1158, 421, 9, 431, 519, 421, - 11, 2860, 523, 521, 1372, 521, 431, 2028, 3547, 526, - 2127, 520, 356, 2034, 2131, 525, 431, 2167, 3556, 2136, - 2137, 525, 280, 531, 433, 3026, 3027, 521, 181, 455, - 163, 374, 172, 455, 227, 1445, 1446, 525, 2828, 522, - 466, 1451, 40, 13, 466, 2162, 2163, 241, 460, 19, - 2167, 218, 525, 2028, 266, 393, 227, 3596, 291, 2034, - 30, 483, 316, 317, 318, 314, 2183, 314, 525, 2186, - 2187, 2188, 525, 181, 44, 45, 220, 522, 521, 3164, - 227, 227, 425, 202, 427, 507, 275, 2204, 2205, 296, - 3437, 523, 59, 8, 2211, 521, 11, 2214, 1262, 521, - 15, 16, 59, 59, 19, 20, 21, 3374, 2187, 59, - 453, 3014, 282, 2230, 282, 1483, 3019, 1485, 522, 335, - 1488, 315, 288, 521, 2914, 1493, 2243, 473, 1496, 383, - 1498, 2028, 251, 152, 1502, 2214, 2995, 2034, 3, 109, - 521, 521, 261, 2260, 2261, 152, 152, 152, 152, 483, - 525, 2230, 525, 2214, 273, 40, 290, 275, 3, 290, - 2277, 40, 2279, 59, 172, 3068, 3069, 421, 11, 2230, - 40, 167, 181, 522, 3571, 2292, 167, 3, 39, 521, - 374, 522, 3, 522, 520, 522, 305, 381, 521, 2306, - 519, 126, 127, 521, 519, 433, 433, 433, 2315, 2316, - 2317, 455, 508, 509, 510, 433, 512, 513, 514, 515, - 516, 517, 466, 522, 522, 8, 531, 522, 11, 1587, - 504, 525, 15, 16, 522, 1389, 19, 20, 21, 483, - 522, 425, 504, 427, 5, 3025, 522, 172, 523, 2214, - 522, 360, 2359, 36, 2315, 2316, 2317, 523, 2398, 354, - 3574, 2368, 522, 507, 148, 2230, 522, 521, 3282, 453, - 172, 433, 521, 504, 521, 521, 385, 521, 155, 521, - 3060, 480, 40, 59, 525, 510, 506, 291, 2387, 291, - 457, 244, 2387, 59, 199, 2402, 405, 59, 266, 472, - 2407, 433, 275, 525, 2387, 2387, 521, 3145, 152, 203, - 152, 1669, 152, 521, 433, 433, 433, 222, 433, 40, - 2427, 521, 356, 288, 522, 521, 290, 2214, 521, 483, - 522, 525, 521, 7, 8, 2442, 2443, 40, 152, 13, - 530, 2402, 280, 2230, 2451, 19, 3126, 2969, 522, 23, - 172, 25, 521, 151, 522, 29, 30, 31, 521, 59, - 34, 186, 14, 37, 38, 126, 127, 41, 167, 3149, - 44, 45, 522, 522, 172, 522, 80, 519, 522, 143, - 1738, 522, 2489, 522, 199, 525, 172, 292, 526, 522, - 2451, 316, 317, 318, 525, 521, 525, 522, 301, 3292, - 3293, 75, 76, 250, 362, 3405, 522, 521, 521, 521, - 291, 172, 3305, 3193, 181, 522, 152, 522, 521, 525, - 2489, 176, 444, 3360, 2531, 3362, 522, 101, 522, 522, - 3372, 523, 521, 521, 108, 109, 110, 111, 112, 222, - 2547, 522, 525, 521, 40, 86, 2586, 2559, 40, 40, - 460, 525, 172, 521, 482, 522, 522, 2564, 383, 8, - 199, 522, 11, 2570, 2571, 520, 15, 16, 520, 394, - 19, 20, 21, 522, 3375, 525, 3377, 522, 522, 2586, - 522, 466, 525, 290, 2624, 510, 59, 3562, 205, 522, - 522, 483, 417, 3507, 117, 2602, 421, 46, 2605, 522, - 2607, 522, 40, 521, 53, 227, 88, 2614, 2615, 292, - 192, 2618, 2619, 433, 2629, 280, 2623, 2624, 316, 317, - 318, 3516, 522, 2630, 2489, 3305, 1884, 3497, 280, 433, - 455, 80, 523, 523, 523, 510, 523, 2677, 1896, 523, - 2647, 466, 40, 523, 275, 523, 523, 523, 3490, 523, - 2657, 523, 523, 1707, 523, 316, 317, 318, 483, 520, - 523, 523, 2651, 1963, 1964, 1965, 1966, 1967, 1968, 523, - 2677, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, - 1980, 523, 507, 107, 523, 383, 523, 523, 523, 523, - 523, 523, 523, 523, 523, 523, 521, 523, 521, 523, - 560, 523, 2489, 508, 509, 510, 523, 512, 513, 514, - 515, 516, 517, 2720, 523, 522, 2723, 2724, 483, 2726, - 2727, 2728, 383, 421, 520, 522, 1780, 1781, 177, 522, - 521, 421, 290, 394, 2741, 9, 2743, 355, 521, 521, - 525, 521, 337, 59, 522, 194, 525, 199, 522, 520, - 199, 192, 525, 525, 522, 522, 417, 455, 91, 2720, - 421, 465, 2802, 2724, 522, 2726, 2773, 2766, 466, 348, - 2028, 2766, 178, 2762, 40, 521, 2034, 152, 3571, 124, - 523, 522, 152, 2766, 2766, 483, 40, 370, 237, 370, - 1844, 522, 40, 522, 455, 3544, 172, 203, 521, 40, - 521, 525, 521, 460, 310, 466, 2795, 1861, 1862, 507, - 280, 521, 2852, 249, 191, 460, 444, 74, 2825, 521, - 80, 2828, 483, 521, 293, 508, 509, 510, 74, 512, - 513, 514, 515, 516, 517, 241, 9, 522, 2845, 2846, - 522, 2848, 521, 292, 372, 2852, 507, 522, 2855, 520, - 520, 59, 133, 37, 93, 273, 510, 290, 42, 444, - 521, 40, 2162, 2163, 293, 521, 293, 465, 521, 205, - 290, 522, 522, 522, 290, 2882, 522, 390, 122, 457, - 1934, 74, 369, 148, 25, 36, 1940, 80, 369, 295, - 298, 3571, 2707, 753, 880, 2902, 2307, 1814, 2720, 3407, - 93, 2908, 2909, 2310, 3547, 2655, 2913, 2914, 3501, 2167, - 3119, 2918, 2952, 3648, 2921, 2922, 37, 101, 1925, 2926, - 2927, 42, 3019, 2930, 117, 3522, 119, 2934, 304, 2187, - 2430, 857, 3626, 3275, 3575, 3584, 3619, 1224, 2945, 3336, - 316, 317, 318, 2298, 2316, 2203, 395, 3469, 1792, 40, - 2943, 2943, 1792, 2943, 2943, 2943, 2214, 2943, 2943, 2784, - 3573, 2697, 3582, 2726, 2295, 2934, 1355, 3570, 374, 60, - 544, 2425, 2230, 2426, 1328, 549, 2386, 2451, 552, 3145, - 101, 2277, 2989, 2934, 2757, 1777, 560, 2728, 2243, 173, - 2997, 1181, 1204, 1021, 1021, 1205, 2508, 181, 3556, 2260, - 1741, 3478, 3364, 23, 1776, 8, 1207, 383, 11, 3016, - 2230, 871, 15, 16, 207, 106, 2855, 2040, 3025, 425, - 1042, 427, 998, 2934, 3188, 209, 2539, 2489, 3296, 2488, - 1934, 2056, 1934, 996, 3025, 1934, 996, 996, 444, 996, - 996, 225, 996, 46, 450, 421, 3482, 453, 996, 996, - 53, 235, 173, 3060, 3481, 996, 505, 2571, 2244, 508, - 509, 510, 2187, 512, 513, 514, 515, 516, 517, 2934, - 2138, 2090, 1474, 2140, 2945, 2184, 2598, 80, 2905, 455, - 3467, 794, 275, 1373, 1862, 269, 2049, 280, 209, 1715, - 466, 2656, 898, 2943, 1716, -1, -1, -1, 3105, -1, - -1, -1, -1, -1, 225, -1, 290, 483, -1, -1, - -1, 202, 3119, -1, 235, -1, -1, -1, -1, 3126, - -1, 1052, -1, -1, 3164, -1, -1, -1, -1, -1, - 3137, 507, 316, -1, 3123, -1, -1, 330, 3145, 323, - 2398, 3148, 3149, -1, 3105, 521, 1052, 2934, 269, -1, - -1, -1, -1, -1, -1, 348, -1, 3164, 3119, -1, - 251, -1, -1, -1, -1, -1, -1, -1, -1, 290, - 261, -1, -1, 1052, 177, -1, -1, 751, 752, 753, - -1, 365, 273, -1, -1, -1, 3193, -1, -1, -1, - -1, 194, 3199, -1, -1, 316, 199, -1, -1, -1, - 384, -1, 323, -1, -1, -1, -1, -1, -1, 3216, - 3217, -1, -1, 3220, 305, 3222, -1, -1, -1, 793, - 794, -1, -1, -1, -1, 799, -1, 801, -1, -1, - -1, -1, -1, -1, 237, -1, 810, -1, -1, -1, - 814, 815, 3249, 817, 365, -1, 820, 821, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 450, -1, 833, - 834, 835, -1, 384, 838, -1, 3273, 460, 2322, 360, - -1, 455, 846, 847, 848, 849, 460, 851, -1, 853, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 292, - -1, 865, -1, -1, 385, -1, -1, 871, 3305, -1, - -1, -1, -1, -1, 178, -1, 1237, -1, -1, 883, - -1, -1, -1, -1, 405, -1, -1, -1, 2618, 2619, - -1, 1181, 3329, 897, 898, -1, 2380, -1, 2586, 203, - -1, 1237, -1, -1, 455, 3324, -1, -1, 8, 460, - -1, 11, -1, 3350, 2398, 15, 16, -1, -1, 19, - 20, 21, -1, 3360, -1, 3362, -1, 3364, 1237, 933, - 934, 3368, -1, 3370, -1, 3372, 2624, 241, 3329, -1, - -1, 945, -1, -1, -1, 949, 950, 951, 952, 3386, - -1, 3350, -1, -1, 3391, -1, 3393, -1, -1, 2443, - -1, 965, 395, 2651, -1, -1, 3403, -1, -1, 2453, - 1331, 2455, -1, -1, -1, 2459, -1, 2461, -1, 3416, - -1, -1, 40, -1, 3421, 3404, -1, 3406, -1, 2677, - -1, 295, -1, 997, 998, 1331, 1000, -1, -1, 1003, - -1, 522, 60, -1, -1, 1009, 1010, -1, -1, -1, - -1, 315, 1016, -1, -1, -1, -1, -1, 1022, -1, - 1024, -1, 1331, -1, -1, 3416, -1, 3446, -1, 1033, - -1, 3468, -1, -1, -1, -1, -1, -1, -1, 1043, - -1, 3478, -1, 3462, -1, -1, -1, -1, 106, 107, - -1, -1, -1, 3490, 8, 3350, 1060, 11, -1, 117, - -1, 15, 16, -1, -1, 19, 20, 21, 3505, -1, - 374, -1, 505, 1363, 2762, 1365, -1, 381, -1, 512, - 513, 514, 515, 516, 517, -1, 3523, -1, -1, -1, - -1, 8, -1, -1, 11, 2825, -1, -1, 15, 16, - -1, -1, 19, 20, 21, -1, 3505, 2795, 1112, -1, - 3547, -1, -1, -1, 2802, -1, -1, -1, 176, 36, - -1, 425, 222, 427, -1, 3562, -1, -1, -1, -1, - -1, -1, -1, 3350, 3571, -1, 3573, -1, -1, -1, - 444, -1, -1, -1, 202, -1, 450, -1, 3547, 453, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3596, - -1, 1165, -1, -1, 2852, -1, -1, -1, -1, 3588, - -1, -1, -1, 3610, 3611, 3612, -1, 1181, 1182, -1, - -1, -1, 3573, -1, 1188, -1, -1, -1, -1, -1, - -1, 8, 292, 251, 11, 3614, 1557, 3596, 15, 16, - 3637, -1, -1, 261, -1, -1, -1, 1211, 1212, 1213, - 3505, -1, -1, -1, -1, 273, -1, 275, -1, 1223, - 1224, 1557, -1, -1, -1, -1, -1, -1, -1, 46, - -1, -1, 1236, -1, -1, -1, 53, -1, -1, 2723, - -1, 3678, -1, -1, -1, -1, 2934, 305, 1557, 1253, - -1, -1, 3547, 1257, -1, 2943, -1, -1, -1, 1263, - -1, -1, -1, 80, 2952, -1, -1, 2997, 222, -1, - -1, -1, -1, 2757, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8, -1, -1, 11, 3505, -1, - -1, 15, 16, 1654, -1, 19, 20, 21, -1, -1, - -1, 3596, 360, -1, 13, 222, -1, -1, -1, -1, - 19, -1, -1, -1, 23, -1, -1, -1, 1654, -1, - 1324, 30, 1326, -1, -1, -1, -1, 385, 145, -1, - 3547, 1335, 37, -1, -1, 44, 45, 42, 292, -1, - -1, -1, 1346, -1, -1, 1654, -1, 405, -1, 407, - -1, 1355, 410, -1, -1, -1, 1360, -1, 1362, 1363, - 177, 1365, 1366, -1, -1, -1, 75, 76, -1, -1, - -1, -1, -1, -1, -1, 292, -1, 194, -1, 3596, - -1, -1, 199, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, - 109, -1, -1, -1, -1, -1, -1, 37, 508, 509, - 510, 41, 512, 513, 514, 515, 516, 517, 3148, -1, - 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1792, -1, -1, -1, 3123, -1, -1, -1, -1, - -1, 1445, 1446, -1, -1, -1, -1, 1451, -1, 1453, - -1, -1, -1, -1, 2938, -1, 1792, -1, -1, -1, - -1, -1, 1466, 521, 1468, 1469, -1, -1, 173, 1473, - 1474, 101, 1476, -1, -1, 292, 3164, -1, 108, 1483, - 110, 1485, 112, 1792, 1488, -1, -1, -1, -1, 1493, - -1, 1495, 1496, -1, 1498, -1, -1, 1787, 1502, -1, - 1504, -1, 1506, -1, 209, -1, -1, -1, 1798, -1, - 1800, -1, -1, 1803, -1, -1, -1, -1, -1, -1, - 225, -1, -1, 1813, -1, 1815, -1, -1, -1, -1, - 235, -1, -1, -1, -1, -1, -1, -1, 1828, -1, - -1, -1, -1, 1833, -1, -1, -1, 1837, 1838, -1, - 1840, 1052, 1842, 1843, 508, 509, 510, -1, 512, 513, - 514, 515, 516, 517, 269, -1, -1, -1, 292, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 395, -1, - -1, -1, -1, -1, -1, 290, -1, -1, -1, 1950, - -1, 508, 509, 510, -1, 512, 513, 514, 515, 516, - 517, 1962, -1, -1, -1, -1, -1, -1, -1, 1613, - -1, 316, 8, -1, 1950, 11, -1, -1, 323, 15, - 16, -1, 1626, 19, 20, 21, 1962, -1, -1, -1, - 3114, 1992, -1, -1, -1, -1, 3324, -1, 1999, -1, - 36, 1950, -1, -1, -1, -1, -1, -1, -1, -1, - 46, -1, -1, 1962, -1, -1, 1992, 53, 3346, -1, - 365, 3145, 1666, 1999, -1, 1669, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 384, - -1, -1, 2043, 1992, 80, -1, 2047, -1, 505, -1, - 1999, -1, 2053, 1697, -1, 512, 513, 514, 515, 516, - 517, -1, -1, -1, -1, -1, -1, 2043, 1712, -1, - 1714, 2047, 1716, -1, -1, 2076, 3404, 2053, 3406, -1, - -1, -1, -1, 1727, -1, 1729, -1, -1, -1, -1, - -1, -1, 55, -1, 2043, -1, 1237, 1741, 2047, -1, - 2076, -1, -1, -1, 2053, -1, -1, -1, -1, 3233, - 455, -1, 37, -1, -1, -1, -1, 42, 3446, -1, - -1, -1, 1766, 0, 1768, -1, -1, 2076, -1, -1, - -1, -1, -1, -1, 3462, -1, 1780, 1781, -1, 102, - -1, 177, 1786, 1787, 508, 509, 510, -1, 512, 513, - 514, 515, 516, 517, 1798, 1799, 1800, 1801, 194, 1803, - 123, -1, -1, 199, -1, -1, -1, -1, -1, 1813, - -1, 1815, -1, -1, -1, -1, 101, -1, 141, -1, - -1, 3305, 145, 1827, 1828, -1, 222, 223, 1832, 1833, - 1331, -1, -1, 1837, 1838, 1839, 1840, -1, 1842, 1843, - -1, 237, -1, -1, -1, 168, 8, -1, 171, 11, - -1, 560, -1, 15, 16, -1, -1, -1, -1, 1863, - -1, -1, -1, 100, 187, -1, -1, 1871, -1, 1873, - 1874, 1875, 1876, 1877, -1, -1, -1, -1, -1, 275, - -1, -1, 278, -1, 46, -1, -1, -1, 173, -1, - 1894, 53, -1, -1, -1, -1, 292, -1, -1, 295, - 3588, -1, -1, -1, -1, -1, -1, -1, -1, 1913, - 147, -1, -1, -1, 544, -1, -1, -1, 80, 549, - -1, -1, 552, -1, 209, 162, 3614, -1, -1, -1, - 167, -1, -1, -1, -1, 172, 2226, -1, -1, -1, - 225, -1, -1, -1, 181, -1, -1, -1, -1, 186, - 235, -1, -1, -1, 3438, -1, -1, 280, -1, 1963, - 1964, 1965, 1966, 1967, 1968, 288, -1, 1971, 1972, 1973, - 1974, 1975, 1976, 1977, 1978, 1979, 1980, -1, -1, -1, - -1, 218, -1, 145, 269, -1, -1, 310, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2001, -1, 395, - -1, 238, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2015, -1, -1, -1, 177, -1, 340, -1, -1, - -1, -1, -1, -1, 2028, -1, -1, -1, -1, -1, - 2034, 316, 194, -1, -1, -1, 2040, 199, 323, -1, - -1, 98, 2046, 752, 753, -1, 2407, -1, -1, -1, - 287, 2055, 2056, 290, -1, -1, 1557, -1, -1, 296, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, - 127, 2407, -1, -1, -1, 237, -1, -1, -1, -1, - 365, -1, -1, -1, -1, -1, -1, 3571, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2407, 384, - 337, 810, -1, -1, -1, -1, -1, -1, -1, 505, - -1, -1, 508, 509, 510, 172, 512, 513, 514, 515, - 516, 517, -1, -1, 2128, 362, -1, 2417, -1, 2133, - 292, -1, -1, -1, 2138, 8, -1, -1, 11, -1, - -1, -1, 15, 16, -1, -1, 19, 20, 21, -1, - -1, -1, -1, 1654, -1, -1, 1052, -1, 2162, 2163, - -1, -1, 871, 36, -1, -1, -1, -1, -1, -1, - 455, 801, -1, -1, -1, -1, -1, 2181, -1, -1, - -1, -1, -1, 2187, 421, -1, 2547, -1, -1, -1, + 7, 0, 525, 0, 0, 46, 0, 846, 0, 16, + 0, 0, 751, 0, 908, 893, 23, 0, 0, 820, + 1051, 20, 1005, 38, 20, 1471, 1252, 920, 1265, 1455, + 759, 1250, 936, 73, 7, 1183, 1238, 1700, 23, 941, + 996, 1616, 77, 752, 20, 1100, 77, 1738, 996, 996, + 23, 996, 0, 1589, 1852, 971, 1230, 2314, 1508, 1629, + 1860, 1789, 2250, 1309, 2240, 1227, 1672, 986, 75, 76, + 975, 986, 1218, 17, 2057, 1657, 1653, 1654, 1804, 1358, + 0, 2729, 2770, 0, 2729, 2794, 2220, 0, 2222, 37, + 75, 76, 0, 1255, 1148, 2767, 111, 16, 45, 1153, + 2305, 2787, 75, 76, 0, 0, 2186, 815, 0, 2595, + 2239, 13, 758, 821, 75, 76, 1842, 19, 7, 759, + 2387, 1014, 1877, 908, 1704, 910, 1109, 912, 30, 0, + 0, 2681, 1874, 1873, 23, 2685, 9, 34, 0, 0, + 0, 5, 44, 45, 1672, 0, 0, 0, 0, 0, + 19, 0, 1992, 101, 1758, 0, 0, 0, 0, 5, + 0, 0, 0, 1073, 1074, 0, 56, 13, 14, 2400, + 4, 64, 5, 2400, 3131, 9, 10, 81, 5, 1848, + 5, 1091, 783, 2393, 1756, 5, 75, 76, 13, 14, + 5, 19, 5, 13, 14, 2395, 997, 174, 13, 14, + 13, 14, 2407, 5, 13, 14, 5, 109, 19, 5, + 9, 5, 5, 1795, 5, 5, 9, 2906, 5, 5, + 5, 5, 5, 5, 13, 14, 120, 46, 75, 2769, + 46, 31, 4, 192, 2058, 173, 11, 9, 200, 39, + 914, 16, 870, 1274, 1159, 108, 173, 27, 125, 865, + 64, 9, 888, 1284, 83, 2965, 101, 986, 19, 23, + 2465, 2466, 11, 2468, 0, 94, 101, 16, 182, 1052, + 91, 2539, 1165, 83, 11, 3, 4, 5, 15, 16, + 5, 9, 41, 173, 94, 3314, 4, 290, 1192, 812, + 998, 9, 888, 2030, 2031, 5, 298, 1077, 47, 3, + 810, 5, 1010, 140, 2041, 31, 123, 228, 2045, 130, + 47, 75, 76, 39, 1094, 11, 247, 3112, 1900, 15, + 16, 64, 1470, 170, 1239, 173, 298, 1242, 1243, 293, + 1020, 3115, 81, 64, 31, 1025, 859, 1027, 3, 108, + 292, 278, 39, 989, 81, 65, 109, 2020, 2021, 2022, + 316, 3135, 385, 293, 275, 75, 1046, 1559, 138, 11, + 1508, 167, 3011, 15, 16, 101, 994, 118, 173, 41, + 35, 36, 1954, 120, 1213, 1214, 1159, 13, 14, 1088, + 31, 41, 313, 2517, 1966, 118, 194, 371, 120, 105, + 118, 318, 319, 320, 281, 47, 163, 214, 11, 3241, + 174, 3243, 15, 16, 2697, 107, 372, 11, 3484, 123, + 3517, 2209, 148, 437, 1996, 413, 121, 127, 128, 3067, + 362, 2003, 3083, 31, 2941, 31, 2943, 163, 123, 81, + 193, 487, 168, 121, 84, 165, 1314, 173, 3126, 2696, + 1344, 3510, 3511, 47, 1962, 376, 182, 292, 394, 76, + 392, 187, 108, 509, 3142, 1238, 3128, 292, 385, 192, + 194, 275, 485, 173, 488, 2047, 182, 523, 292, 2051, + 363, 1373, 403, 240, 395, 1993, 208, 81, 86, 477, + 1108, 2669, 133, 219, 133, 332, 509, 95, 2693, 310, + 2695, 196, 220, 3562, 527, 3452, 423, 435, 2080, 149, + 214, 3608, 2582, 233, 240, 177, 275, 172, 196, 174, + 1565, 119, 399, 109, 1024, 243, 296, 177, 2811, 364, + 523, 327, 459, 243, 455, 527, 490, 133, 3370, 364, + 457, 282, 168, 3609, 297, 282, 1034, 311, 459, 523, + 1038, 468, 3337, 275, 277, 277, 523, 3257, 462, 363, + 358, 253, 518, 289, 3583, 527, 292, 282, 3342, 275, + 423, 263, 298, 2133, 523, 527, 2776, 2367, 2368, 2369, + 464, 523, 2803, 1189, 512, 1176, 2803, 523, 392, 1215, + 360, 2781, 362, 523, 192, 462, 2192, 525, 1262, 1217, + 597, 3548, 523, 1116, 2862, 543, 523, 205, 3138, 109, + 2050, 420, 402, 339, 420, 452, 435, 428, 318, 319, + 320, 2186, 392, 1859, 1524, 1525, 2821, 521, 1357, 1215, + 363, 525, 3271, 1362, 398, 435, 474, 361, 364, 1368, + 435, 423, 363, 523, 527, 2475, 1475, 2620, 287, 1549, + 485, 3290, 459, 1922, 481, 3331, 1375, 2224, 3165, 522, + 485, 3312, 521, 2257, 2409, 1364, 525, 559, 1497, 523, + 487, 2401, 2404, 2243, 2192, 526, 3314, 531, 1894, 3314, + 472, 1702, 526, 527, 2249, 385, 402, 523, 597, 524, + 523, 526, 509, 526, 2256, 531, 396, 423, 521, 524, + 523, 526, 525, 2362, 528, 529, 523, 487, 523, 527, + 1937, 1611, 1612, 523, 3393, 402, 410, 411, 523, 419, + 523, 522, 3262, 423, 523, 451, 432, 3267, 759, 509, + 376, 523, 2989, 3209, 523, 2982, 462, 523, 1374, 523, + 523, 0, 523, 523, 523, 1375, 523, 523, 523, 523, + 523, 523, 514, 515, 519, 459, 482, 457, 484, 485, + 3459, 1531, 759, 1646, 1647, 1648, 514, 515, 468, 758, + 1468, 522, 758, 3451, 459, 3549, 525, 485, 313, 810, + 519, 1551, 3458, 133, 42, 485, 1559, 514, 515, 516, + 517, 518, 519, 759, 527, 521, 514, 515, 524, 525, + 526, 509, 799, 1483, 3560, 277, 514, 515, 2535, 509, + 282, 409, 817, 810, 412, 148, 1586, 526, 473, 2055, + 817, 165, 34, 523, 434, 1505, 179, 462, 514, 515, + 516, 517, 518, 519, 462, 810, 799, 862, 3649, 2411, + 2641, 862, 2643, 1461, 2963, 60, 252, 810, 60, 846, + 847, 204, 2642, 11, 817, 2518, 2519, 2520, 2521, 810, + 865, 753, 2835, 893, 474, 149, 422, 2005, 403, 127, + 342, 277, 268, 870, 516, 517, 518, 519, 883, 3690, + 3558, 27, 3544, 1904, 1657, 179, 219, 33, 523, 3645, + 243, 880, 922, 880, 880, 523, 880, 348, 880, 2969, + 880, 880, 868, 880, 27, 461, 527, 880, 880, 185, + 33, 150, 2050, 516, 517, 518, 519, 201, 3113, 1824, + 799, 918, 919, 81, 487, 922, 923, 277, 324, 1834, + 274, 810, 1837, 799, 871, 1819, 387, 287, 817, 3601, + 1669, 2210, 880, 2539, 297, 3583, 509, 2920, 3583, 243, + 1029, 817, 523, 3409, 512, 3411, 1035, 5, 173, 2747, + 2748, 848, 849, 202, 851, 298, 853, 525, 473, 512, + 880, 2015, 423, 880, 1592, 1593, 2694, 880, 975, 871, + 523, 215, 880, 2555, 1602, 1853, 1854, 1855, 523, 986, + 1882, 3669, 138, 1024, 880, 880, 993, 994, 880, 1617, + 989, 123, 999, 989, 2720, 1002, 1003, 941, 1005, 1006, + 1007, 1008, 1787, 358, 1920, 138, 138, 2582, 1924, 880, + 880, 1927, 1795, 2739, 475, 1022, 3273, 1024, 880, 1938, + 880, 1649, 3488, 1938, 1929, 880, 1033, 880, 880, 880, + 2607, 880, 2311, 2844, 1819, 799, 880, 1022, 880, 1024, + 880, 880, 880, 1050, 1051, 1052, 810, 2871, 1033, 1022, + 2874, 1024, 2876, 817, 1839, 5, 83, 343, 38, 1844, + 1033, 1022, 54, 1024, 427, 1072, 429, 94, 1109, 521, + 2516, 2497, 1033, 525, 348, 133, 163, 3253, 27, 3016, + 2226, 168, 2228, 487, 33, 1092, 372, 3024, 179, 452, + 163, 1830, 455, 318, 319, 320, 1835, 1104, 1105, 1106, + 83, 1108, 1109, 161, 1111, 509, 247, 247, 451, 190, + 191, 94, 1635, 387, 1945, 1593, 2342, 1900, 1949, 523, + 3453, 1952, 133, 427, 1602, 429, 2363, 2373, 521, 518, + 523, 2279, 525, 1022, 2932, 1024, 525, 1144, 175, 27, + 296, 4, 133, 277, 1033, 33, 9, 2729, 179, 423, + 161, 455, 243, 240, 2729, 1162, 1163, 427, 38, 429, + 385, 1196, 1197, 296, 1199, 1196, 1197, 240, 1199, 3426, + 161, 1954, 313, 313, 1189, 521, 3159, 518, 344, 525, + 261, 262, 109, 1966, 525, 4, 178, 2769, 2350, 138, + 9, 1198, 1111, 521, 174, 1202, 1203, 525, 423, 331, + 356, 475, 289, 195, 360, 1212, 1213, 1214, 200, 1938, + 1217, 248, 243, 1996, 3547, 524, 289, 3550, 527, 277, + 2003, 358, 524, 356, 282, 527, 317, 360, 523, 287, + 210, 1238, 457, 2216, 524, 376, 392, 527, 204, 1254, + 833, 834, 835, 468, 2418, 838, 226, 239, 163, 1460, + 138, 1462, 1463, 168, 2428, 2983, 2862, 237, 1022, 392, + 1024, 523, 403, 403, 2047, 4, 277, 1274, 2051, 1033, + 9, 282, 72, 73, 2057, 8, 287, 1284, 11, 383, + 1182, 524, 15, 16, 527, 376, 383, 20, 21, 22, + 524, 282, 383, 527, 174, 204, 287, 2080, 523, 254, + 381, 382, 1309, 423, 524, 8, 3106, 527, 11, 465, + 3643, 348, 15, 16, 455, 455, 440, 20, 21, 22, + 148, 848, 849, 475, 851, 240, 853, 427, 2898, 429, + 210, 521, 465, 523, 37, 163, 427, 1331, 429, 1331, + 168, 524, 1349, 2221, 527, 376, 226, 296, 1331, 1331, + 387, 1358, 2320, 524, 2322, 27, 527, 237, 427, 524, + 429, 33, 527, 27, 455, 27, 380, 524, 1375, 33, + 527, 33, 523, 2001, 289, 1374, 524, 524, 1374, 527, + 527, 383, 523, 523, 442, 1392, 423, 367, 2838, 2537, + 1397, 219, 523, 2541, 2969, 453, 427, 524, 429, 1375, + 527, 2317, 152, 2319, 3661, 397, 386, 356, 296, 446, + 376, 360, 240, 524, 2950, 524, 527, 524, 527, 524, + 527, 387, 527, 173, 455, 261, 262, 13, 14, 2138, + 1349, 442, 524, 168, 524, 527, 524, 527, 475, 527, + 1447, 1448, 453, 392, 524, 2284, 1453, 527, 1455, 524, + 3032, 442, 527, 1460, 1461, 1462, 1463, 423, 3646, 523, + 3648, 289, 453, 1365, 2092, 1367, 138, 523, 1475, 1476, + 298, 523, 360, 1392, 138, 485, 138, 487, 1485, 3613, + 1487, 228, 1455, 1490, 13, 14, 2712, 367, 1495, 523, + 1497, 1498, 2711, 1500, 3628, 2399, 524, 1504, 523, 527, + 1485, 3689, 1487, 173, 392, 1490, 386, 523, 2745, 475, + 1495, 523, 1485, 1498, 1487, 1500, 465, 1490, 524, 1504, + 223, 527, 1495, 523, 1485, 1498, 1487, 1500, 275, 1490, + 523, 1504, 2587, 2588, 1495, 516, 2710, 1498, 2712, 1500, + 13, 14, 2761, 1504, 2172, 381, 382, 19, 524, 3683, + 3132, 527, 1559, 6, 3688, 524, 3138, 10, 527, 524, + 247, 294, 527, 506, 524, 18, 1455, 527, 318, 319, + 320, 524, 524, 524, 527, 527, 527, 465, 524, 32, + 427, 527, 429, 36, 509, 1592, 1593, 175, 13, 14, + 1589, 294, 1589, 1589, 1601, 1602, 1485, 344, 1487, 1589, + 1589, 1490, 1589, 1610, 3402, 3403, 1495, 2563, 2564, 1498, + 1617, 1500, 2595, 523, 2562, 1504, 2563, 1624, 2563, 2564, + 2565, 3203, 524, 451, 296, 527, 313, 524, 2411, 2693, + 527, 2695, 296, 524, 296, 385, 527, 1644, 1645, 525, + 524, 1589, 1649, 527, 225, 1652, 524, 292, 395, 527, + 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, + 248, 506, 1702, 1670, 1671, 1672, 172, 885, 1675, 887, + 13, 14, 1679, 423, 527, 1682, 1683, 1684, 1685, 1686, + 1687, 1688, 1689, 1690, 356, 523, 1693, 524, 360, 376, + 524, 1455, 356, 1700, 356, 1702, 360, 524, 360, 1672, + 13, 14, 13, 14, 2443, 173, 1741, 457, 371, 372, + 1741, 60, 459, 1720, 13, 14, 403, 297, 468, 523, + 392, 1485, 2451, 1487, 13, 14, 1490, 424, 392, 506, + 392, 1495, 3314, 38, 1498, 485, 1500, 1744, 43, 3314, + 1504, 225, 1718, 13, 14, 13, 14, 1666, 1755, 1756, + 153, 3414, 13, 14, 13, 14, 13, 14, 356, 509, + 348, 13, 14, 13, 14, 13, 14, 2660, 455, 13, + 14, 153, 2555, 523, 13, 14, 153, 510, 511, 512, + 153, 514, 515, 516, 517, 518, 519, 153, 1795, 13, + 14, 13, 14, 465, 13, 14, 41, 102, 1805, 387, + 109, 465, 1809, 465, 3030, 13, 14, 510, 511, 512, + 423, 514, 515, 516, 517, 518, 519, 13, 14, 75, + 13, 14, 2450, 41, 13, 14, 247, 371, 372, 41, + 371, 372, 371, 372, 8, 423, 523, 2620, 265, 266, + 524, 15, 16, 61, 2683, 1852, 20, 21, 22, 61, + 381, 382, 1859, 467, 468, 1862, 1863, 986, 446, 2433, + 2434, 277, 118, 3623, 3624, 3067, 3655, 3656, 523, 174, + 1162, 1163, 2774, 3110, 475, 2753, 2291, 2292, 153, 90, + 489, 153, 525, 292, 153, 435, 1805, 475, 1790, 107, + 1809, 153, 313, 1900, 358, 107, 2800, 1904, 2814, 1801, + 523, 1803, 2933, 523, 1806, 210, 523, 425, 524, 221, + 47, 523, 226, 302, 1816, 1922, 1818, 523, 226, 1003, + 3611, 226, 1929, 1930, 3615, 226, 523, 299, 41, 1831, + 523, 1938, 237, 5, 1836, 3361, 5, 247, 1840, 1841, + 238, 1843, 179, 1845, 1846, 247, 2729, 1954, 523, 328, + 1898, 1958, 1959, 523, 1961, 376, 523, 523, 5, 1966, + 1967, 1968, 1969, 1970, 1971, 1972, 271, 204, 1975, 1976, + 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 5, 3670, + 523, 523, 403, 1990, 1991, 203, 2769, 1994, 5, 1996, + 5, 203, 486, 523, 2001, 9, 2003, 523, 523, 1128, + 304, 3583, 8, 313, 527, 11, 243, 105, 3583, 15, + 16, 313, 527, 318, 20, 21, 22, 148, 2025, 524, + 325, 277, 462, 221, 392, 2032, 282, 2034, 168, 289, + 1159, 2038, 163, 168, 455, 253, 287, 168, 60, 238, + 2047, 253, 523, 435, 2051, 263, 2053, 2032, 2055, 94, + 2057, 263, 2835, 2038, 435, 435, 527, 275, 60, 2032, + 297, 60, 367, 275, 268, 2038, 376, 19, 435, 223, + 435, 2032, 435, 2080, 376, 485, 332, 2038, 153, 200, + 317, 386, 101, 383, 523, 2092, 2093, 277, 219, 307, + 277, 3517, 2099, 403, 350, 307, 277, 41, 277, 41, + 277, 403, 523, 523, 277, 2733, 3021, 153, 3327, 240, + 1239, 173, 525, 1242, 1243, 13, 524, 3033, 3034, 524, + 294, 173, 3568, 524, 524, 2132, 524, 523, 2867, 2136, + 527, 2172, 482, 3559, 2141, 2142, 524, 2920, 524, 376, + 524, 226, 226, 2032, 362, 455, 383, 523, 284, 2038, + 362, 284, 457, 455, 523, 525, 527, 472, 289, 38, + 2167, 2168, 523, 523, 43, 2172, 523, 298, 523, 387, + 523, 523, 40, 1052, 179, 387, 523, 525, 481, 9, + 433, 2188, 3608, 11, 2191, 2192, 2193, 433, 523, 407, + 427, 3174, 429, 358, 200, 407, 452, 99, 522, 204, + 527, 19, 2209, 2210, 527, 433, 462, 532, 282, 2216, + 435, 3448, 2219, 523, 182, 452, 523, 223, 455, 2192, + 173, 523, 41, 102, 164, 127, 128, 228, 2235, 524, + 527, 462, 219, 25, 2219, 527, 268, 3385, 243, 395, + 228, 2248, 293, 316, 527, 316, 2219, 527, 182, 3032, + 2235, 1380, 1381, 524, 221, 228, 523, 277, 2265, 2266, + 525, 60, 2235, 3002, 228, 60, 60, 60, 2032, 298, + 83, 173, 284, 284, 2038, 2282, 337, 2284, 475, 153, + 290, 524, 3, 523, 3067, 523, 153, 153, 294, 153, + 2297, 153, 297, 485, 153, 174, 109, 527, 527, 41, + 277, 292, 3, 292, 2311, 41, 524, 60, 173, 11, + 41, 168, 182, 2320, 2321, 2322, 168, 524, 524, 524, + 451, 524, 523, 523, 116, 3, 40, 3, 523, 2231, + 2219, 210, 435, 521, 435, 521, 510, 511, 512, 435, + 514, 515, 516, 517, 518, 519, 2235, 226, 435, 3132, + 37, 522, 524, 506, 41, 3138, 524, 2364, 237, 1238, + 3586, 524, 175, 1447, 1448, 8, 2373, 527, 11, 1453, + 532, 376, 15, 16, 525, 524, 3159, 20, 21, 22, + 524, 506, 524, 524, 356, 149, 525, 3291, 506, 173, + 521, 204, 271, 524, 525, 524, 524, 523, 2392, 2406, + 2392, 2320, 2321, 2322, 2411, 435, 523, 523, 523, 2392, + 2392, 156, 523, 292, 101, 482, 318, 319, 320, 41, + 3203, 108, 427, 110, 429, 112, 3155, 60, 2435, 512, + 527, 508, 293, 293, 459, 248, 527, 246, 474, 318, + 60, 60, 268, 2450, 2451, 435, 325, 452, 277, 153, + 455, 435, 2459, 2976, 204, 2219, 153, 523, 153, 523, + 523, 435, 8, 523, 435, 11, 435, 524, 523, 15, + 16, 2235, 41, 41, 20, 21, 22, 358, 1607, 527, + 524, 292, 290, 385, 523, 485, 523, 2406, 367, 41, + 2497, 1620, 153, 1622, 396, 282, 531, 60, 524, 173, + 523, 187, 523, 14, 510, 511, 512, 386, 514, 515, + 516, 517, 518, 519, 168, 524, 524, 419, 521, 2421, + 524, 423, 1651, 3416, 2497, 81, 524, 524, 524, 144, + 523, 3314, 2539, 527, 173, 19, 303, 252, 524, 524, + 2459, 443, 524, 523, 3383, 524, 527, 523, 2555, 364, + 293, 182, 2567, 523, 2595, 457, 153, 200, 524, 177, + 523, 148, 527, 376, 524, 2572, 468, 524, 446, 524, + 524, 41, 2579, 2580, 387, 525, 163, 523, 457, 87, + 223, 168, 523, 485, 523, 3386, 41, 3388, 2595, 2630, + 41, 3574, 41, 462, 527, 2635, 173, 523, 484, 524, + 524, 2608, 200, 524, 2611, 522, 2613, 509, 2497, 522, + 423, 527, 524, 2620, 2621, 3519, 524, 2624, 2625, 524, + 524, 523, 2629, 2630, 527, 468, 1755, 1756, 292, 2636, + 512, 3509, 219, 446, 3528, 60, 524, 524, 485, 524, + 524, 206, 2683, 118, 41, 228, 2653, 523, 7, 8, + 89, 294, 193, 240, 13, 282, 2663, 282, 512, 435, + 19, 524, 475, 3502, 23, 435, 25, 525, 41, 525, + 29, 30, 31, 522, 525, 34, 2683, 223, 37, 38, + 1559, 525, 41, 525, 525, 44, 45, 525, 525, 525, + 525, 525, 525, 525, 525, 1824, 277, 108, 525, 522, + 525, 525, 289, 525, 525, 1834, 485, 524, 1837, 2657, + 524, 298, 423, 525, 292, 525, 75, 76, 525, 2726, + 525, 525, 2729, 2730, 525, 2732, 2733, 2734, 525, 525, + 9, 357, 339, 2497, 525, 525, 525, 525, 523, 525, + 2747, 2748, 101, 3371, 525, 3373, 524, 524, 294, 108, + 109, 110, 111, 112, 523, 527, 527, 2798, 523, 527, + 523, 523, 2769, 524, 60, 524, 200, 522, 2809, 527, + 2777, 193, 524, 524, 467, 152, 92, 350, 1657, 2773, + 527, 2773, 41, 524, 2686, 523, 75, 2689, 153, 524, + 2773, 2773, 81, 525, 125, 153, 173, 41, 524, 41, + 3583, 372, 372, 41, 524, 94, 523, 2726, 527, 1938, + 523, 2730, 462, 2732, 523, 312, 2718, 3556, 2859, 282, + 2768, 251, 192, 41, 523, 2832, 462, 523, 2835, 118, + 446, 120, 75, 2735, 2736, 2737, 2738, 295, 2740, 2741, + 2742, 2743, 2744, 61, 75, 2852, 2853, 9, 2855, 81, + 374, 524, 2859, 524, 2802, 2862, 523, 544, 524, 522, + 522, 60, 549, 134, 451, 94, 512, 510, 511, 512, + 275, 514, 515, 516, 517, 518, 519, 292, 41, 446, + 524, 523, 2889, 1967, 1968, 1969, 1970, 1971, 1972, 107, + 524, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, + 1984, 295, 2909, 173, 295, 467, 523, 2914, 2915, 206, + 524, 292, 2919, 2920, 292, 524, 1795, 2924, 2959, 208, + 2927, 2928, 123, 392, 459, 2932, 2933, 371, 149, 2936, + 26, 37, 300, 2940, 521, 2064, 371, 880, 525, 2312, + 2713, 318, 319, 320, 1817, 2952, 2315, 2726, 3418, 2661, + 3559, 2950, 3513, 2950, 2950, 2940, 3660, 3125, 3481, 177, + 2950, 2950, 1929, 2950, 510, 511, 512, 2940, 514, 515, + 516, 517, 518, 519, 3026, 2438, 3534, 857, 3638, 2940, + 3284, 3587, 3596, 3631, 1225, 203, 3344, 2303, 277, 2996, + 2321, 2788, 8, 282, 1795, 11, 1795, 3004, 3585, 15, + 16, 793, 2950, 2703, 3594, 2732, 3582, 2300, 385, 2433, + 1329, 1357, 2434, 2391, 2459, 3155, 3023, 2763, 2282, 2734, + 2248, 1900, 1780, 1182, 1206, 3032, 1021, 1205, 1052, 1021, + 2516, 47, 3568, 825, 2265, 253, 306, 1744, 54, 3490, + 3375, 1779, 1208, 332, 23, 263, 423, 118, 318, 319, + 320, 2940, 3198, 0, 2235, 2862, 2044, 275, 850, 1042, + 3067, 350, 998, 2497, 2496, 81, 2547, 3305, 996, 3032, + 2060, 1938, 1938, 20, 996, 1954, 23, 996, 996, 1938, + 457, 996, 996, 2167, 2168, 996, 996, 1966, 3494, 307, + 37, 468, 3493, 2143, 2223, 996, 2580, 2192, 2094, 46, + 2249, 3003, 173, 3246, 2189, 3112, 898, 2146, 485, 2604, + 2911, 2952, 1476, 3479, 801, 385, 1865, 1996, 3125, 2950, + 1375, 2053, 794, 898, 2003, 3132, 2255, 2256, 75, 76, + 77, 3138, 509, 3174, 1718, -1, 2662, 1719, -1, -1, + 3147, -1, -1, -1, 362, -1, 523, -1, 3155, -1, + -1, 3158, 3159, 423, 101, -1, -1, -1, -1, -1, + -1, -1, 178, 452, -1, -1, -1, 3174, 2047, 387, + -1, -1, 2051, 462, -1, -1, 2940, -1, 2057, 195, + -1, 3129, -1, -1, 200, 544, -1, 457, -1, 407, + 549, -1, -1, 3112, 986, -1, 3203, -1, 468, -1, + 559, 2080, 3209, -1, 996, -1, 3125, -1, -1, -1, + 897, -1, -1, -1, 1238, 485, -1, -1, 3225, 3226, + -1, -1, 3229, 239, 3231, -1, -1, -1, -1, 8, + -1, -1, 11, -1, -1, 306, 15, 16, -1, 509, + -1, 20, 21, 22, -1, -1, 933, 318, 319, 320, + -1, 3258, -1, 523, -1, -1, -1, -1, 37, -1, + -1, 948, 949, 950, 951, 952, -1, -1, -1, -1, + -1, 56, -1, 8, -1, 3282, 11, -1, 294, -1, + 15, 16, -1, -1, -1, 20, 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3314, -1, -1, + -1, -1, 47, 1000, 385, -1, -1, -1, 103, 54, + -1, -1, -1, -1, -1, -1, 1118, -1, -1, -1, + 3337, -1, -1, -1, -1, -1, 1128, -1, -1, 124, + -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, + -1, -1, 423, -1, 3361, -1, -1, 142, 1150, -1, + 1052, 146, -1, -1, 3371, -1, 3373, 1159, 3375, -1, + -1, -1, 3379, -1, 3381, -1, 3383, -1, -1, -1, + -1, 397, -1, -1, 169, 3333, 457, 172, 3361, -1, + 3397, 3293, 751, 752, 753, 3402, 3403, 468, -1, -1, + -1, -1, -1, 188, -1, -1, -1, 3414, -1, -1, + -1, -1, -1, -1, 485, 3317, 3318, -1, 3337, -1, + 3427, -1, -1, -1, -1, 3432, -1, -1, -1, -1, + 2559, 2560, -1, -1, 793, 794, -1, -1, 509, 3341, + 799, -1, 801, 178, 223, -1, -1, -1, -1, -1, + -1, 810, 523, -1, -1, 814, 815, -1, 817, -1, + 195, 820, 821, -1, -1, 200, -1, 3415, -1, 3417, + -1, 1263, 3361, 3480, 833, 834, 835, -1, 173, 838, + -1, -1, -1, 3490, -1, -1, -1, 846, 847, 848, + 849, 507, 851, -1, 853, 3502, -1, 282, 514, 515, + 516, 517, 518, 519, 239, 290, 865, -1, 3427, 3457, + 3517, -1, 871, -1, -1, 294, -1, -1, -1, -1, + -1, -1, -1, -1, 883, -1, 3474, 312, 3535, -1, + -1, -1, 2411, -1, -1, 1559, -1, 1224, 897, 898, + 2624, 2625, -1, -1, 3517, -1, 1238, -1, -1, -1, + 1237, -1, 3559, -1, -1, -1, -1, 342, -1, 294, + 1052, -1, -1, -1, -1, -1, -1, 3574, -1, -1, + -1, 1258, -1, -1, 933, 934, 3583, -1, 3585, -1, + -1, -1, -1, -1, -1, 944, 3559, -1, -1, 948, + 949, 950, 951, 952, -1, -1, 543, 3361, -1, 1391, + 2729, 3608, -1, -1, -1, -1, 965, -1, -1, -1, + -1, -1, -1, -1, -1, 3622, 3623, 3624, -1, -1, + -1, -1, -1, 318, 319, 320, -1, -1, 3517, -1, + -1, -1, -1, 1657, -1, 3608, -1, -1, 997, 998, + 1327, 1000, 3649, -1, 1003, -1, -1, -1, 1335, -1, + 1009, 1010, 3600, -1, -1, -1, -1, 1016, -1, -1, + -1, -1, 397, 1022, -1, 1024, 3585, -1, -1, -1, + 3559, -1, 8, -1, 1033, 11, 2555, 3579, 3626, 15, + 16, -1, -1, 3690, 1043, -1, -1, -1, -1, -1, + 385, -1, -1, -1, -1, 8, -1, -1, 11, -1, + -1, 1060, 15, 16, -1, -1, -1, 20, 21, 22, + -1, 47, -1, -1, -1, -1, -1, -1, 54, 3608, + -1, -1, -1, -1, 37, -1, -1, -1, 423, 1088, + -1, 510, 511, 512, -1, 514, 515, 516, 517, 518, + 519, 2620, -1, 2872, -1, 81, 1238, -1, 2832, -1, + -1, -1, -1, 3517, 1113, -1, -1, -1, -1, -1, + -1, 0, 457, -1, -1, -1, -1, -1, -1, -1, + -1, 1795, 507, 468, -1, 510, 511, 512, -1, 514, + 515, 516, 517, 518, 519, -1, -1, -1, -1, -1, + 485, 1478, -1, -1, -1, 3559, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1166, -1, -1, + 146, 758, 759, -1, 509, -1, -1, -1, 1052, -1, + -1, -1, -1, 1182, 1183, -1, -1, -1, 523, 8, + 1189, -1, 11, -1, -1, -1, 15, 16, -1, -1, + -1, -1, 178, -1, 3608, -1, -1, -1, -1, -1, + 2729, -1, 799, 1212, 1213, 1214, -1, -1, -1, 195, + -1, -1, 101, 810, 200, 1224, 1225, 1559, 47, -1, + 817, -1, -1, -1, -1, 54, 1900, -1, 1237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2214, 2547, 449, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2226, 460, -1, -1, 2230, -1, -1, -1, - 2234, -1, -1, 395, -1, -1, -1, -1, 2547, -1, - -1, -1, -1, 480, -1, 482, 483, -1, -1, -1, - -1, -1, -1, 2614, -1, -1, -1, -1, -1, 316, - 317, 318, -1, -1, -1, -1, -1, 897, -1, -1, - 2274, -1, -1, 2277, -1, 2279, 2280, -1, 2614, -1, - -1, -1, 519, -1, -1, 522, 523, 524, -1, -1, - -1, 1792, -1, -1, -1, -1, 2300, -1, -1, -1, - -1, -1, -1, 933, -1, 2614, -1, 1016, -1, -1, - -1, -1, -1, 1022, -1, 1024, -1, 1052, -1, 949, - 950, 951, 952, -1, 1033, -1, 383, -1, -1, -1, - -1, -1, -1, -1, 1043, -1, -1, 394, -1, -1, - -1, 1237, -1, 505, -1, -1, -1, -1, -1, 222, - 512, 513, 514, 515, 516, 517, -1, -1, -1, -1, - 417, -1, 2723, -1, 421, -1, -1, -1, -1, -1, - 1000, -1, -1, -1, -1, -1, -1, -1, 2382, -1, - -1, -1, -1, -1, 441, 2389, -1, 2723, -1, -1, - 2680, -1, -1, 2683, -1, -1, 2400, -1, 455, 2403, - 2404, 2405, 2406, 1112, -1, -1, -1, -1, -1, 466, - -1, -1, -1, 2417, 2723, 2419, -1, -1, 2422, 292, - -1, -1, 2712, -1, -1, 2429, 483, -1, -1, -1, - -1, 2435, -1, -1, -1, 1331, -1, -1, -1, 2729, - 2730, 2731, 2732, -1, 2734, 2735, 2736, 2737, 2738, 1950, - 507, -1, -1, 2457, 2458, -1, 2460, -1, -1, -1, - -1, 1962, -1, -1, 521, -1, -1, 2828, -1, -1, - -1, -1, 1181, 1182, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2489, -1, -1, -1, -1, - -1, 1992, 2828, -1, -1, -1, -1, -1, 1999, -1, - -1, -1, 1237, 2507, -1, -1, -1, -1, -1, -1, - -1, 2515, 2516, 2517, -1, -1, -1, -1, -1, 2828, - -1, -1, -1, 8, -1, 2529, 11, 2531, -1, 2533, - 15, 16, -1, -1, -1, 2539, -1, -1, -1, -1, - -1, -1, 2043, -1, -1, -1, 2047, -1, -1, -1, - -1, -1, 2053, 2914, -1, 2559, -1, -1, -1, -1, - -1, 46, -1, -1, -1, -1, -1, -1, 53, 2573, - -1, -1, -1, -1, -1, 2076, -1, -1, 2914, -1, - -1, 2585, -1, -1, -1, 2589, -1, -1, -1, -1, - -1, -1, -1, 1223, -1, 80, 1331, -1, -1, -1, - -1, -1, -1, -1, -1, 2914, 1236, -1, -1, -1, - -1, -1, -1, -1, 2618, 2619, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1257, -1, -1, - -1, -1, -1, -1, 1003, 508, 509, 510, 2642, 512, - 513, 514, 515, 516, 517, 2649, -1, -1, -1, -1, - -1, 2655, -1, 1362, 1363, -1, 1365, -1, -1, -1, - 145, 1557, -1, -1, 3025, -1, -1, 2671, -1, -1, - -1, 2675, -1, 2677, -1, 2679, 2680, -1, -1, 2683, - -1, -1, -1, 2687, 2688, 2689, -1, 2691, -1, 3025, - -1, -1, 177, -1, -1, -1, 1326, -1, -1, 3060, - -1, -1, -1, -1, -1, 1335, 2996, -1, 2712, 194, - 2714, -1, -1, -1, 199, -1, 3025, -1, -1, -1, - -1, -1, -1, -1, 3060, 2729, 2730, 2731, 2732, 2733, - 2734, 2735, 2736, 2737, 2738, -1, 26, -1, -1, -1, - -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, - 40, 3060, 237, -1, -1, -1, -1, 2761, 1654, 1468, - -1, -1, -1, -1, 2768, 3126, -1, -1, -1, -1, - 60, -1, -1, -1, 1483, -1, 1485, -1, -1, 1488, - 2784, -1, -1, -1, 1493, -1, -1, 1496, 3149, 1498, - 3126, -1, -1, 1502, -1, 1504, -1, 1506, -1, -1, - 2804, -1, -1, -1, -1, -1, -1, 292, -1, -1, - 2814, -1, -1, 3149, -1, -1, 106, 3126, -1, -1, - -1, 2825, 1557, -1, -1, -1, -1, 2831, -1, -1, - -1, -1, 3193, 1202, 2838, 2839, 2840, 2841, -1, -1, - 3149, -1, 1211, -1, -1, -1, 1476, 137, 2852, -1, - -1, 2855, -1, -1, -1, 2859, 2860, 3193, -1, -1, - -1, -1, -1, -1, 2868, -1, -1, -1, -1, -1, + 2769, -1, 3021, -1, -1, 1254, -1, 3026, -1, 1258, + -1, -1, 81, 239, -1, 1264, -1, -1, -1, 148, + 223, -1, -1, -1, -1, 862, -1, -1, 1710, -1, + 3004, -1, -1, -1, 163, -1, -1, -1, -1, 168, + 1954, -1, -1, 880, 173, -1, -1, -1, -1, -1, + -1, -1, 1966, 182, -1, -1, 3075, 3076, 187, -1, + -1, -1, -1, -1, -1, -1, 2835, -1, 294, -1, + -1, -1, -1, -1, -1, 1657, 1325, 146, 1327, -1, + -1, -1, 1996, -1, -1, -1, 1335, -1, -1, 2003, + 219, 294, -1, -1, -1, -1, -1, -1, -1, 1348, + -1, 1783, 1784, -1, -1, -1, -1, -1, 1357, 178, + -1, 240, -1, 1362, 1238, 1364, 1365, -1, 1367, 1368, + -1, -1, -1, -1, -1, -1, 195, -1, -1, -1, + -1, 200, -1, 2047, -1, -1, -1, 2051, -1, -1, + 1717, -1, 1719, 2057, -1, -1, -1, -1, -1, -1, + -1, 2920, 989, 1730, -1, -1, -1, -1, -1, -1, + 289, -1, -1, 292, -1, 1847, 2080, -1, -1, 298, + 239, 397, -1, -1, -1, -1, -1, 1559, -1, -1, + -1, -1, 1864, 1865, 3158, 1022, -1, 1024, -1, -1, + -1, -1, 1769, -1, -1, -1, 1033, -1, 1447, 1448, + -1, -1, -1, -1, 1453, -1, 1455, -1, -1, -1, + 339, -1, -1, 1795, -1, -1, -1, -1, -1, 1468, + -1, 1470, 1471, -1, -1, 294, 1475, 1476, -1, 1478, + -1, 1068, -1, -1, -1, 364, 1485, -1, 1487, -1, + -1, 1490, -1, 1080, -1, -1, 1495, -1, 1497, 1498, + -1, 1500, -1, -1, -1, 1504, 1938, 1506, -1, 1508, + -1, -1, 1944, 3032, -1, -1, -1, -1, -1, -1, + -1, -1, 1109, -1, -1, 1657, -1, -1, -1, -1, + -1, 507, 3301, 3302, -1, -1, -1, -1, 514, 515, + 516, 517, 518, 519, 423, 3314, -1, -1, 3067, 1876, + 1877, 1878, 1879, 1880, 1881, -1, -1, 510, 511, 512, + -1, 514, 515, 516, 517, 518, 519, 8, 1900, -1, + 11, -1, 451, -1, 15, 16, -1, -1, 397, 20, + 21, 22, -1, 462, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, + -1, -1, -1, 482, -1, 484, 485, -1, -1, 1196, + 1197, -1, 1199, 3132, -1, -1, -1, 1616, -1, 3138, + -1, -1, 1954, -1, -1, -1, -1, -1, -1, -1, + 1629, -1, -1, -1, 1966, -1, -1, -1, -1, -1, + 3159, -1, 521, -1, -1, 524, 525, 526, -1, -1, + -1, -1, -1, 8, -1, -1, 11, -1, -1, -1, + 15, 16, -1, 1795, 1996, 20, 21, 22, -1, -1, + 1669, 2003, -1, 1672, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3203, 1559, -1, -1, 507, -1, + -1, -1, 2019, -1, -1, 514, 515, 516, 517, 518, + 519, 1700, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2047, 1715, -1, 1717, 2051, + 1719, -1, -1, -1, -1, 2057, -1, -1, -1, -1, + -1, 1730, -1, 1732, -1, 8, -1, -1, 11, -1, + -1, -1, 15, 16, -1, 1744, -1, 2411, 2080, -1, + -1, -1, -1, -1, 127, 128, -1, -1, -1, -1, + -1, 13, -1, -1, -1, -1, -1, 19, 1900, -1, + 1769, 23, 1771, -1, 47, -1, -1, -1, 30, -1, + -1, 54, 223, 1657, 1783, 1784, -1, 1374, -1, -1, + 1789, 1790, 44, 45, -1, 3314, -1, -1, -1, -1, + 173, -1, 1801, 1802, 1803, 1804, -1, 1806, 81, -1, + -1, -1, -1, -1, 3583, -1, -1, 1816, -1, 1818, + -1, -1, 1954, 75, 76, -1, -1, -1, -1, -1, + -1, 1830, 1831, -1, 1966, -1, 1835, 1836, -1, -1, + -1, 1840, 1841, 1842, 1843, -1, 1845, 1846, -1, -1, + -1, -1, -1, 294, -1, -1, -1, 109, -1, -1, + -1, -1, -1, -1, 1996, -1, -1, 1866, 223, -1, + -1, 2003, -1, 146, -1, 1874, -1, 1876, 1877, 1878, + 1879, 1880, 1881, -1, -1, -1, -1, -1, -1, -1, + -1, 2555, -1, -1, -1, 2327, -1, 1896, 1485, -1, + 1487, -1, -1, 1490, -1, 178, -1, -1, 1495, -1, + -1, 1498, -1, 1500, -1, 2047, -1, 1504, 1917, 2051, + -1, 1795, 195, -1, -1, 2057, -1, 200, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, + -1, -1, -1, -1, -1, 318, 319, 320, 2080, -1, + -1, 8, -1, 2385, 11, -1, 2620, -1, 15, 16, + -1, -1, -1, -1, -1, -1, 239, -1, 1967, 1968, + 1969, 1970, 1971, 1972, -1, -1, 1975, 1976, 1977, 1978, + 1979, 1980, 1981, 1982, 1983, 1984, -1, -1, -1, -1, + 47, 41, -1, -1, -1, -1, -1, 54, -1, -1, + -1, -1, 1589, -1, -1, -1, 2005, -1, -1, -1, + -1, 61, 385, -1, -1, -1, -1, -1, -1, 2451, + 2019, 294, -1, 396, 81, -1, 1900, -1, -1, 2461, + -1, 2463, -1, 2032, -1, 2467, -1, 2469, -1, 2038, + -1, -1, -1, -1, -1, 2044, 419, -1, -1, -1, + 423, 2050, -1, -1, -1, -1, -1, 107, 108, -1, + 2059, 2060, -1, -1, 3583, 2729, -1, 2394, 118, 510, + 511, 512, -1, 514, 515, 516, 517, 518, 519, 2411, + 1954, 2408, 2409, 2410, 457, 1672, -1, -1, -1, 146, + -1, -1, 1966, -1, -1, 468, 2423, -1, -1, -1, + 2427, -1, -1, 2430, -1, 2769, -1, -1, -1, -1, + 2437, -1, 485, -1, -1, -1, -1, -1, -1, -1, + -1, 178, 1996, -1, 397, -1, -1, 177, -1, 2003, + -1, -1, -1, -1, 2133, -1, 509, -1, 195, 2138, + -1, -1, -1, 200, 2143, -1, -1, -1, 1052, -1, + 523, 0, -1, 203, 1741, 510, 511, 512, -1, 514, + 515, 516, 517, 518, 519, -1, -1, -1, 2167, 2168, + -1, 2835, -1, 2047, -1, -1, -1, 2051, -1, -1, + -1, -1, 239, 2057, -1, -1, -1, 2186, -1, -1, + -1, -1, -1, 2192, -1, -1, 2523, 2524, 2525, -1, + -1, -1, -1, 253, -1, -1, 2080, -1, -1, -1, + -1, -1, -1, 263, -1, -1, -1, -1, -1, 25, + 2219, -1, -1, 2555, -1, 275, -1, 277, -1, -1, + -1, -1, 2231, -1, 507, -1, 2235, 294, -1, -1, + 2239, 514, 515, 516, 517, 518, 519, -1, -1, -1, + -1, -1, 101, -1, -1, -1, 2920, 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3193, -1, -1, 2891, -1, -1, - -1, -1, -1, -1, 2898, 2899, 1792, -1, -1, 2903, - -1, -1, -1, -1, -1, -1, 2407, -1, -1, -1, - 395, -1, 202, -1, -1, -1, -1, 1626, -1, 1654, - -1, -1, -1, -1, -1, -1, -1, -1, 2932, -1, - 2934, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2945, 8, -1, 3305, 11, -1, -1, 2952, 15, - 16, -1, 2956, 19, 20, 21, -1, -1, 2962, -1, - -1, 251, -1, -1, -1, -1, -1, -1, -1, 3305, - 36, 261, 2976, 0, -1, -1, -1, -1, 2982, -1, - -1, -1, -1, 273, -1, -1, -1, -1, 1003, -1, - -1, 2995, 2996, 2997, 3284, -1, 3305, -1, -1, 3003, - -1, -1, -1, -1, 294, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 305, 3020, -1, 3308, 3309, - 505, -1, -1, -1, -1, -1, -1, 512, 513, 514, - 515, 516, 517, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3333, -1, -1, 2547, 26, -1, -1, - -1, -1, -1, 32, 1950, -1, -1, 1792, -1, 1768, - -1, 40, -1, -1, 354, -1, 1962, -1, 358, -1, - 360, -1, -1, 100, -1, -1, 1445, 1446, 1787, -1, - -1, 60, 1451, -1, 1714, -1, 1716, -1, -1, 1798, - -1, 1800, -1, -1, 1803, 385, 1992, 1727, 3102, -1, - 390, -1, 3106, 1999, 1813, -1, 1815, -1, -1, -1, - -1, -1, -1, 2614, -1, 405, -1, -1, 3122, 1828, - 147, -1, -1, -1, 1833, -1, -1, 106, 1837, 1838, - -1, 1840, -1, 1842, 1843, 162, 1766, 3141, -1, -1, - 167, -1, -1, -1, 3148, 172, -1, 2043, -1, -1, - -1, 2047, -1, -1, 181, -1, 222, 2053, 137, 186, + -1, -1, -1, -1, -1, -1, 82, -1, -1, 2411, + 2279, -1, -1, 2282, -1, 2284, 2285, -1, 2620, -1, + -1, -1, 98, -1, -1, -1, -1, 2729, -1, 148, + -1, -1, -1, -1, -1, -1, 2305, 559, -1, -1, + -1, 1898, 362, -1, 163, -1, -1, -1, -1, 168, + -1, -1, -1, -1, 173, -1, -1, -1, -1, -1, + -1, 2763, -1, 182, 1238, -1, -1, 387, 187, -1, + 397, 147, -1, -1, -1, -1, -1, -1, -1, -1, + 2677, 157, -1, -1, -1, -1, -1, 407, -1, 409, + -1, -1, 412, -1, 170, -1, 2798, -1, 3032, 175, + 219, -1, -1, -1, -1, -1, -1, 38, -1, -1, + -1, -1, 43, -1, -1, -1, -1, -1, 2387, -1, + -1, 240, -1, -1, -1, 2394, -1, 2729, 204, -1, + -1, -1, -1, 3067, -1, 2404, -1, -1, 2407, 2408, + 2409, 2410, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2421, 2555, 2423, -1, -1, -1, 2427, -1, + -1, 2430, -1, -1, -1, -1, -1, 2769, 2437, -1, + 289, 102, 248, 292, 2443, 2032, 252, -1, 2775, 298, + 507, 2038, -1, -1, -1, -1, -1, 514, 515, 516, + 517, 518, 519, -1, -1, -1, 2465, 2466, 3132, 2468, + -1, -1, -1, 523, 3138, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2620, -1, + 339, -1, -1, -1, -1, 3159, -1, -1, 2497, -1, + 752, 753, -1, 2835, -1, -1, -1, -1, -1, -1, + -1, 317, 2944, 174, -1, 364, 2515, 323, 2845, 2846, + 2847, 2848, -1, -1, 2523, 2524, 2525, -1, -1, -1, + -1, -1, 338, -1, -1, -1, -1, 2411, 2537, 3203, + 2539, -1, 2541, -1, -1, -1, -1, -1, 2547, 210, + -1, -1, -1, -1, -1, -1, -1, -1, 810, -1, + -1, -1, -1, -1, -1, 226, -1, 373, 2567, -1, + 376, -1, -1, -1, 423, -1, 237, -1, -1, -1, + -1, 387, -1, 2582, 390, 2172, -1, -1, 2920, -1, + -1, -1, -1, -1, -1, 2594, -1, 2729, -1, 2598, + -1, -1, 451, 409, -1, 2192, -1, -1, -1, -1, + 271, -1, -1, 462, -1, -1, -1, 423, -1, 871, + -1, 2208, -1, 429, 430, 2624, 2625, -1, -1, -1, + -1, 292, 2219, 482, 440, 484, 485, 2769, -1, -1, + 446, -1, -1, -1, -1, -1, -1, -1, 2235, 2648, + 3314, -1, -1, -1, -1, 1559, 2655, 318, -1, -1, + -1, -1, 2661, -1, 325, -1, -1, -1, -1, 475, + -1, -1, 521, -1, -1, 524, 525, 526, 2677, -1, + -1, 2555, 2681, 3010, 2683, -1, 2685, 2686, -1, -1, + 2689, -1, -1, -1, 2693, 2694, 2695, -1, 2697, -1, + 3032, -1, -1, 2835, -1, -1, 367, -1, -1, -1, + -1, -1, -1, -1, -1, 38, -1, -1, -1, 2718, + 43, 2720, -1, 3155, -1, 386, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3067, 2735, 2736, 2737, 2738, + 2739, 2740, 2741, 2742, 2743, 2744, 2620, -1, -1, -1, + -1, -1, -1, 1657, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1016, -1, -1, -1, 2767, -1, + 1022, -1, 1024, -1, -1, -1, 2775, -1, -1, 102, + -1, 1033, -1, -1, -1, -1, -1, -1, 2920, 2788, + -1, 1043, -1, -1, -1, -1, 457, -1, -1, -1, + 3132, 462, -1, -1, -1, -1, 3138, -1, -1, -1, + 3242, -1, 2811, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2821, -1, -1, -1, -1, 3159, -1, -1, + -1, -1, -1, 2832, -1, -1, 1088, 2424, -1, 2838, + -1, -1, -1, -1, -1, -1, 2845, 2846, 2847, 2848, + -1, 174, -1, -1, -1, 2729, -1, -1, -1, 182, + 2859, 1113, -1, 2862, -1, -1, -1, 2866, 2867, -1, + -1, 3203, -1, -1, -1, -1, 2875, -1, -1, -1, + -1, -1, 3314, -1, -1, -1, -1, 210, -1, -1, + -1, 1795, -1, -1, 8, 2769, -1, 11, -1, 2898, + 3032, 15, 16, 226, -1, -1, 2905, 2906, -1, -1, + -1, -1, -1, -1, 237, -1, -1, -1, -1, 3583, + -1, 3353, -1, -1, -1, -1, -1, -1, -1, 1003, + 1182, 1183, -1, 47, -1, 3067, -1, -1, -1, 2938, + 54, 2940, -1, -1, -1, -1, -1, -1, 271, -1, + -1, -1, -1, 2952, -1, -1, -1, -1, -1, -1, + 2959, 2835, -1, -1, 2963, -1, -1, 81, -1, 292, + 2969, -1, -1, -1, -1, -1, -1, 1003, -1, -1, + -1, -1, 3314, -1, 2983, -1, -1, -1, -1, -1, + 2989, -1, -1, -1, -1, 318, 1900, -1, -1, -1, + 3132, -1, 325, 3002, 3003, 3004, 3138, 3334, 2595, -1, + -1, 3010, -1, -1, -1, -1, -1, 3449, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3159, 3027, -1, + -1, 3358, 146, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2630, 367, -1, 2920, -1, -1, -1, + 1954, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1966, 386, 178, -1, -1, -1, -1, -1, + 2657, 3203, -1, -1, -1, -1, -1, 27, -1, -1, + -1, 195, -1, 33, -1, -1, 200, -1, -1, -1, + -1, 41, 1996, -1, -1, -1, 2683, -1, 3425, 2003, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3109, 61, 1364, 1365, 3113, 1367, -1, -1, -1, -1, + -1, -1, -1, 8, -1, 239, 11, -1, 3455, 3128, + 15, 16, -1, -1, 457, -1, -1, -1, 1212, 462, + -1, -1, -1, 2047, -1, -1, -1, 2051, -1, -1, + -1, 3583, 3151, 2057, -1, -1, -1, 107, 3032, 3158, + -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, + -1, -1, -1, -1, -1, -1, 2080, 1203, -1, -1, + 294, 2768, 3314, -1, -1, 3184, 1212, -1, 138, -1, + -1, -1, 3191, 3067, -1, -1, 81, -1, -1, 3198, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2798, -1, -1, -1, 2802, 3215, -1, 1470, -1, + -1, -1, 2809, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1485, -1, 1487, -1, -1, 1490, 3238, + -1, -1, -1, 1495, -1, -1, 1498, 3246, 1500, -1, + -1, 3583, 1504, 203, 1506, -1, 1508, -1, 3132, -1, + -1, 146, -1, 3262, 3138, -1, -1, -1, 3267, -1, + -1, -1, 2859, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 397, -1, 3159, -1, -1, -1, -1, + -1, -1, -1, 178, 3293, -1, -1, -1, -1, -1, + -1, -1, -1, 253, -1, -1, -1, -1, -1, -1, + 195, -1, -1, 263, -1, 200, -1, -1, 3317, 3318, + -1, -1, -1, 25, -1, 275, -1, -1, -1, 3203, + -1, -1, -1, -1, -1, 3334, -1, 3336, -1, -1, + -1, -1, 3341, -1, -1, -1, 296, -1, -1, -1, + -1, -1, -1, 2940, 239, -1, -1, 307, -1, 3358, + -1, -1, 3361, 2950, -1, -1, -1, -1, -1, -1, + -1, -1, 2959, 1447, 1448, -1, -1, 1629, -1, 1453, + 82, -1, 3381, -1, 3383, -1, 3385, 3386, -1, 3388, + -1, -1, -1, 507, 3393, -1, 98, -1, -1, -1, + 514, 515, 516, 517, 518, 519, 356, -1, -1, 294, + 360, -1, 362, -1, -1, 3414, -1, -1, -1, 3418, + -1, 1447, 1448, -1, -1, -1, 3425, 1453, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 387, -1, -1, + 3314, -1, 392, -1, -1, 147, -1, -1, -1, -1, + -1, 3583, -1, -1, -1, 157, 3455, 407, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 170, -1, + -1, -1, -1, 175, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3494, 846, 847, -1, -1, + -1, -1, 204, 3502, -1, -1, -1, 2411, -1, -1, + -1, -1, 397, -1, -1, 465, -1, -1, 3517, 1771, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1790, -1, + -1, -1, 3129, -1, -1, 3544, 248, -1, -1, 1801, + 252, 1803, -1, -1, 1806, -1, -1, 3556, 3557, -1, + 3559, 3560, -1, -1, 1816, -1, 1818, -1, 918, 3568, + -1, -1, 922, 923, -1, -1, -1, -1, -1, 1831, + 3579, -1, -1, -1, 1836, -1, -1, 3174, 1840, 1841, + -1, 1843, -1, 1845, 1846, -1, -1, -1, -1, -1, + -1, -1, 3601, -1, -1, -1, -1, -1, -1, 3608, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 323, 507, -1, 1698, 975, -1, -1, -1, 514, + 515, 516, 517, 518, 519, -1, 338, -1, -1, -1, + -1, -1, -1, 993, -1, -1, 3645, -1, -1, 999, + -1, 2555, 1002, -1, -1, 1005, 1006, 1007, 1008, -1, + -1, 3660, -1, -1, -1, -1, -1, -1, -1, -1, + 1744, 373, -1, -1, 376, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 387, -1, -1, 390, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1050, 1051, -1, -1, -1, -1, -1, 409, -1, 3583, + -1, -1, -1, -1, -1, -1, 2620, -1, 1744, -1, + -1, 423, 1072, -1, -1, -1, -1, -1, 430, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 440, -1, + -1, -1, 1092, -1, 446, -1, 3333, -1, -1, -1, + -1, -1, -1, 2005, 1104, 1105, 1106, -1, 1108, 1109, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3357, -1, -1, 475, -1, -1, -1, -1, -1, -1, + 2032, -1, -1, -1, -1, -1, 2038, -1, -1, -1, + -1, -1, 2044, -1, 1144, -1, -1, -1, 2050, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3174, -1, -1, 463, -1, -1, -1, 3181, -1, -1, - 2076, -1, -1, -1, 3188, -1, -1, -1, -1, -1, - -1, 218, -1, -1, -1, -1, 1211, -1, -1, -1, - -1, 3205, -1, -1, -1, -1, -1, -1, -1, -1, - 3571, 238, -1, -1, -1, 1950, -1, -1, -1, -1, - -1, -1, 2723, 202, -1, 3229, 292, 1962, -1, -1, - -1, -1, -1, 3237, -1, 3571, -1, -1, -1, -1, - -1, -1, -1, 1873, 1874, 1875, 1876, 1877, -1, 3253, - -1, -1, -1, -1, 3258, -1, -1, 1992, -1, -1, - 287, -1, 3571, 290, 1999, -1, -1, -1, -1, 296, - -1, -1, 251, -1, -1, -1, -1, 3567, -1, -1, - 3284, -1, 261, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2001, -1, 273, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3308, 3309, -1, -1, 2043, -1, - 337, -1, 2047, -1, -1, 294, -1, -1, 2053, 2028, - -1, 3325, -1, 3327, -1, 2034, 305, 2828, -1, 3333, - -1, 2040, -1, -1, -1, 362, -1, 2046, -1, -1, - -1, 2076, -1, 3347, 8, -1, 3350, 11, -1, -1, - -1, 15, 16, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3370, -1, 3372, -1, - 3374, 3375, 1741, 3377, -1, 354, -1, -1, 3382, 358, - -1, 360, 46, -1, -1, 2015, -1, -1, -1, 53, - -1, -1, -1, -1, 421, -1, -1, -1, -1, 3403, - -1, -1, -1, 3407, -1, -1, 385, -1, -1, -1, - 3414, 390, -1, 2914, -1, -1, 80, -1, -1, 2128, - -1, -1, 449, -1, -1, -1, 405, -1, -1, 2138, - 1445, 1446, -1, 460, -1, -1, 1451, -1, -1, -1, - 3444, -1, 508, 509, 510, -1, 512, 513, 514, 515, - 516, 517, -1, 480, -1, 482, 483, -1, -1, -1, + -1, -1, 1162, 1163, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2729, -1, -1, 3415, -1, + 3417, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1198, -1, + -1, -1, 1202, 1203, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1213, 1214, 2769, -1, -1, -1, -1, + 3457, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2133, -1, -1, -1, -1, 2138, 3474, -1, -1, + -1, 2143, -1, 1967, 1968, 1969, 1970, 1971, 1972, -1, + -1, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, + 1984, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1274, -1, -1, -1, -1, -1, + -1, 2835, -1, -1, 1284, -1, -1, -1, -1, -1, + -1, 1967, 1968, 1969, 1970, 1971, 1972, -1, -1, 1975, + 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1309, + -1, -1, -1, -1, -1, -1, -1, 2219, 8, -1, + -1, 11, -1, -1, -1, 15, 16, 17, 18, 2231, + 20, 21, 22, 2235, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, + -1, -1, -1, 3600, 54, -1, 2920, -1, -1, -1, + -1, -1, -1, -1, 3, -1, 5, 2279, -1, -1, + -1, -1, -1, 2285, -1, -1, -1, -1, -1, 3626, + -1, 81, -1, -1, -1, -1, -1, 1397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3482, -1, - -1, 145, -1, -1, 463, -1, 3490, -1, -1, -1, - -1, -1, 519, -1, -1, 522, 523, 524, -1, -1, - -1, 3505, -1, -1, -1, 2214, 846, 847, -1, -1, - -1, 2407, -1, 177, -1, -1, -1, 2226, -1, -1, - -1, 2230, -1, -1, 3025, -1, -1, -1, 3532, -1, - 194, -1, -1, -1, -1, 199, -1, -1, -1, -1, - 3544, 3545, -1, 3547, 3548, -1, -1, -1, -1, -1, - -1, -1, 3556, -1, -1, -1, -1, -1, -1, 3060, - -1, -1, -1, 3567, -1, 2274, -1, -1, -1, -1, - -1, 2280, -1, 237, -1, -1, -1, -1, 918, -1, - -1, -1, 922, 923, -1, 3589, -1, -1, -1, -1, - -1, -1, 3596, -1, 1963, 1964, 1965, 1966, 1967, 1968, - -1, -1, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, - 1979, 1980, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3126, -1, -1, 292, 3633, - -1, -1, -1, -1, -1, 975, -1, -1, -1, -1, - -1, -1, -1, -1, 3648, -1, -1, -1, 3149, -1, - -1, 2547, -1, 993, -1, -1, -1, -1, -1, 999, - -1, -1, 1002, -1, -1, 1005, 1006, 1007, 1008, -1, - -1, -1, 2407, -1, -1, -1, -1, -1, -1, -1, - 1695, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3193, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2417, -1, - 1050, 1051, -1, -1, -1, -1, -1, -1, 2614, -1, - -1, -1, -1, -1, -1, -1, 1741, -1, -1, -1, - -1, 395, 1072, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1091, -1, -1, -1, 0, -1, -1, -1, 2389, - -1, -1, -1, 1103, 1104, 1105, -1, 1107, 1108, -1, - -1, -1, -1, -1, 2404, 2405, 2406, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2419, - -1, -1, 2422, 2162, 2163, -1, -1, -1, -1, 2429, - -1, -1, -1, 1143, 3305, -1, -1, -1, -1, -1, - -1, -1, 2547, -1, -1, -1, -1, -1, -1, -1, - 2529, 1161, 1162, -1, 2533, -1, -1, 2723, -1, -1, - 2539, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 505, -1, -1, -1, -1, -1, -1, 512, 513, - 514, 515, 516, 517, -1, 100, -1, 1197, -1, -1, - -1, 1201, 1202, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1212, 1213, -1, -1, 2585, -1, -1, 2614, - 2589, -1, -1, -1, -1, 2515, 2516, 2517, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 147, -1, -1, -1, -1, -1, 2277, -1, - -1, -1, -1, -1, -1, -1, -1, 162, -1, -1, - -1, -1, 167, -1, -1, -1, -1, 172, -1, -1, - -1, -1, 2828, 1273, -1, -1, 181, -1, -1, 8, - -1, 186, 11, 1283, -1, -1, 15, 16, 1963, 1964, - 1965, 1966, 1967, 1968, -1, -1, 1971, 1972, 1973, 1974, - 1975, 1976, 1977, 1978, 1979, 1980, 2675, -1, 1308, -1, - 2679, 2680, -1, 218, 2683, -1, -1, 46, -1, -1, - -1, -1, -1, -1, 53, -1, -1, -1, 2723, -1, - -1, -1, -1, 238, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2712, -1, -1, -1, -1, -1, -1, - -1, 80, -1, -1, -1, -1, -1, -1, 2914, -1, - 2729, 2730, 2731, 2732, -1, 2734, 2735, 2736, 2737, 2738, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2671, 287, -1, -1, 290, -1, -1, -1, -1, - -1, 296, -1, -1, -1, 1395, -1, -1, -1, -1, + 69, 70, -1, 2167, 2168, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3571, -1, -1, -1, -1, -1, 145, -1, -1, -1, + 1460, -1, 1462, 1463, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1475, 1476, -1, 3032, -1, + -1, 110, 111, -1, -1, 114, 115, -1, 178, -1, + -1, 2167, 2168, -1, -1, -1, -1, 1497, -1, -1, + -1, -1, -1, -1, -1, 195, -1, -1, -1, -1, + 200, -1, -1, 3067, -1, -1, -1, -1, -1, 2421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 337, 2828, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 177, -1, - -1, -1, -1, -1, -1, -1, -1, 362, 1458, -1, - 1460, 1461, 2831, -1, -1, 194, -1, -1, -1, 3025, - 199, -1, -1, 1473, 1474, -1, -1, -1, 2768, -1, - -1, -1, -1, -1, -1, -1, -1, 2162, 2163, -1, - 2859, -1, -1, -1, -1, 1495, -1, -1, -1, -1, - -1, -1, -1, -1, 3060, -1, -1, -1, 237, -1, - -1, -1, -1, -1, -1, -1, 421, -1, -1, 2914, - -1, -1, 2891, -1, -1, -1, -1, -1, -1, -1, - 2899, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 449, -1, -1, -1, 2838, 2839, - 2840, 2841, -1, -1, -1, 460, -1, -1, -1, -1, - -1, -1, -1, 292, -1, 2934, -1, -1, -1, -1, - 3126, -1, -1, -1, -1, 480, -1, 482, 483, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2618, - 2619, -1, -1, 3149, -1, -1, -1, -1, -1, 1599, - -1, -1, 2277, -1, -1, -1, -1, 1607, -1, -1, - -1, -1, -1, -1, 519, -1, -1, 522, 523, 524, - -1, 1621, -1, -1, -1, -1, -1, 2996, -1, -1, - 3025, -1, -1, -1, -1, -1, -1, 3193, -1, -1, - -1, -1, 1642, -1, -1, -1, -1, -1, -1, 1649, - -1, -1, -1, -1, -1, 1655, 1656, 1657, 1658, 1659, - 1660, 1661, 1662, -1, -1, 3060, 395, 1667, 1668, -1, - -1, -1, 1672, -1, -1, -1, 1676, -1, -1, 1679, - 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, -1, -1, - 1690, -1, -1, -1, -1, -1, -1, 1697, -1, 1699, + -1, -1, -1, 223, 224, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 239, + -1, -1, -1, -1, -1, -1, -1, -1, 2282, -1, + -1, 190, 191, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 69, 70, 3132, -1, + -1, -1, -1, -1, 3138, -1, -1, 277, -1, -1, + 280, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1601, -1, -1, 294, 3159, 2282, 297, -1, -1, + 1610, -1, -1, -1, -1, -1, -1, 110, 111, -1, + -1, 114, 115, -1, 1624, -1, 255, 256, 257, 258, + 259, 260, 261, 262, -1, 2537, 265, 266, -1, 2541, + -1, -1, -1, -1, 1644, 2547, -1, -1, -1, 3203, + -1, -1, 1652, -1, -1, -1, -1, -1, 1658, 1659, + 1660, 1661, 1662, 1663, 1664, 1665, -1, -1, -1, -1, + 1670, 1671, -1, -1, -1, 1675, -1, -1, -1, 1679, + -1, -1, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, + 1690, -1, 2594, 1693, -1, -1, 2598, 190, 191, -1, + 1700, -1, 1702, -1, -1, -1, -1, 397, -1, -1, + -1, 340, 341, -1, -1, -1, -1, -1, -1, -1, + 1720, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 69, 70, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 381, 382, -1, 1755, 1756, -1, -1, -1, + 3314, -1, 255, 256, 257, 258, 259, 260, 261, 262, + -1, -1, 265, 266, -1, -1, 110, 111, -1, 2681, + 114, 115, -1, 2685, 2686, -1, -1, 2689, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1003, -1, 2718, 507, -1, -1, + 510, 511, 512, -1, 514, 515, 516, 517, 518, 519, + -1, -1, -1, 2735, 2736, 2737, 2738, 527, 2740, 2741, + 2742, 2743, 2744, -1, -1, -1, -1, 340, 341, -1, + 479, 480, 1852, -1, -1, -1, 190, 191, -1, 1859, + -1, -1, 1862, 1863, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 503, 504, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2624, 2625, -1, -1, 1904, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 255, 256, 257, 258, 259, 260, 261, 262, 1929, + 1930, 265, 266, -1, -1, -1, 2838, -1, -1, -1, + 1129, -1, -1, -1, -1, -1, -1, -1, 2624, 2625, + -1, -1, -1, -1, -1, -1, -1, -1, 1958, 1959, + -1, 1961, -1, 8, 2866, -1, 11, -1, -1, -1, + 15, 16, 17, 18, -1, 20, 21, 22, -1, -1, + -1, -1, -1, -1, -1, -1, 479, 480, -1, 1178, + 1990, 1991, 37, -1, 1994, -1, 2898, -1, -1, -1, + -1, -1, 47, -1, 2906, -1, 340, 341, -1, 54, + 503, 504, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1212, -1, 2025, -1, -1, -1, 3583, + 523, -1, -1, -1, 2034, -1, 81, -1, 2940, -1, + -1, -1, -1, -1, -1, -1, 27, 381, 382, -1, + -1, -1, 33, 2053, -1, 2055, -1, -1, -1, -1, + 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1268, + 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2093, -1, -1, -1, -1, -1, 2099, + -1, 3003, -1, -1, -1, -1, -1, -1, 2832, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1313, -1, 107, -1, -1, -1, + -1, 1320, 2132, 178, -1, 2859, 2136, -1, -1, -1, + -1, 2141, 2142, -1, -1, 479, 480, -1, -1, -1, + 195, -1, -1, -1, -1, 200, 2832, 138, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 503, + 504, -1, -1, -1, -1, 0, -1, -1, 223, 224, + -1, -1, 1371, 2859, -1, -1, -1, -1, 2188, -1, + -1, 2191, -1, 2193, 239, -1, -1, -1, 23, -1, + -1, -1, -1, -1, -1, -1, 1395, -1, 33, 2209, + 35, 36, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 203, 48, -1, -1, -1, -1, 53, -1, + -1, -1, 277, 2909, -1, 280, -1, 62, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2248, 294, + -1, 76, 297, -1, 1443, -1, 1445, -1, 1447, 1448, + 85, 1450, 87, -1, 1453, 2265, 2266, 1456, -1, -1, + 1459, -1, 253, -1, 99, 1464, 101, -1, 1467, -1, + 3004, -1, 263, -1, 2284, -1, -1, 112, -1, 3191, + -1, -1, -1, -1, 275, -1, 3198, 2297, -1, -1, + -1, -1, 127, 128, 129, -1, -1, -1, -1, -1, + -1, -1, -1, 138, -1, 296, -1, -1, -1, 144, + -1, -1, 1511, -1, -1, -1, 307, 152, 3004, 154, + 155, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 169, -1, -1, -1, 173, -1, + -1, -1, 397, -1, -1, -1, -1, -1, -1, -1, + 3262, -1, -1, -1, 2364, 3267, -1, -1, -1, -1, + -1, -1, -1, 2373, 199, 356, -1, -1, -1, 360, + -1, 362, -1, -1, -1, -1, -1, -1, -1, -1, + 215, 3293, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 387, -1, 1597, -1, + -1, 392, -1, -1, -1, 3317, 3318, 242, -1, -1, + -1, -1, -1, -1, -1, 1614, 407, -1, -1, -1, + -1, -1, -1, -1, 3158, 2435, 1625, 1626, 1627, 3341, + -1, -1, -1, 1632, -1, -1, -1, 1636, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 507, -1, -1, 510, 511, 512, -1, 514, + 515, 516, 517, 518, 519, -1, -1, -1, -1, 524, + -1, -1, 3158, 3385, 465, -1, -1, -1, -1, -1, + -1, 3393, -1, 318, 319, 320, -1, -1, -1, -1, + -1, 326, -1, -1, 329, -1, -1, -1, -1, -1, + 1699, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3, -1, -1, -1, -1, 8, + -1, -1, 11, -1, -1, 360, 15, 16, 17, 18, + -1, 20, 21, 22, 369, -1, -1, -1, -1, 1738, + -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, + 385, -1, 41, -1, -1, 1754, -1, 392, 47, -1, + 1759, 396, 2572, -1, -1, 54, -1, -1, -1, 2579, + 2580, -1, 407, -1, -1, -1, -1, 1776, -1, -1, + -1, -1, -1, -1, 419, 2595, -1, -1, 423, -1, + -1, -1, 81, -1, -1, -1, -1, -1, 2608, -1, + -1, 2611, -1, 2613, -1, -1, -1, -1, 443, -1, + -1, 2621, -1, -1, -1, -1, -1, -1, -1, 2629, + 2630, -1, 457, -1, -1, 460, 2636, -1, 463, -1, + -1, -1, -1, 468, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2653, -1, -1, -1, 3381, -1, -1, + 485, -1, -1, 2663, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3579, -1, -1, + -1, -1, -1, 2683, 509, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 523, 178, + -1, 526, -1, -1, -1, 3381, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 195, -1, -1, -1, + -1, 200, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2734, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 223, 224, -1, 2747, 2748, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 239, -1, -1, -1, -1, -1, -1, 1956, -1, -1, + -1, -1, -1, -1, -1, 1964, 1965, 2777, 1967, 1968, + 1969, 1970, 1971, 1972, -1, -1, 1975, 1976, 1977, 1978, + 1979, 1980, 1981, 1982, 1983, 1984, 1985, -1, 277, -1, + -1, 280, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 294, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3003, -1, -1, -1, 1717, -1, -1, -1, -1, 8, -1, -1, 11, -1, -1, -1, 15, - 16, 3126, -1, 19, 20, 21, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3305, - 36, -1, 1752, 1753, 3149, -1, -1, -1, -1, -1, - 46, -1, 8, -1, -1, 11, -1, 53, -1, 15, - 16, -1, -1, 19, 20, 21, 505, -1, -1, -1, - -1, -1, -1, 512, 513, 514, 515, 516, 517, -1, - -1, -1, -1, -1, 80, -1, 2825, -1, 3193, -1, - 46, -1, -1, -1, -1, -1, -1, 53, -1, -1, - -1, -1, 3181, -1, -1, -1, -1, -1, -1, 3188, - -1, -1, -1, 2852, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1003, -1, -1, 1849, - -1, -1, -1, -1, -1, -1, 1856, -1, -1, 1859, - 1860, -1, -1, -1, -1, -1, -1, -1, -1, 8, - -1, -1, 11, 2902, -1, -1, 15, 16, -1, -1, - 19, 20, 21, -1, 3253, -1, -1, -1, -1, 3258, - -1, 177, -1, -1, -1, -1, -1, -1, -1, -1, - 1900, -1, -1, -1, -1, -1, -1, 46, 194, -1, - 3305, -1, -1, 199, 53, 3284, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1925, 1926, 8, -1, -1, - 11, 177, -1, -1, 15, 16, 222, 223, -1, 3308, - 3309, 80, -1, 2618, 2619, -1, -1, -1, 194, -1, - -1, 237, -1, 199, 1954, 1955, -1, 1957, -1, -1, - -1, -1, -1, -1, 3333, 46, -1, -1, 2997, -1, - -1, 1128, 53, -1, -1, -1, 222, 223, -1, -1, - -1, -1, -1, -1, -1, -1, 1986, 1987, -1, 275, - 1990, 237, 278, -1, -1, -1, -1, -1, -1, 80, - -1, -1, -1, -1, -1, 3374, 292, -1, -1, -1, - -1, -1, -1, 3382, -1, 3571, -1, -1, -1, -1, - 1177, 2021, -1, -1, -1, -1, -1, -1, -1, 275, - 2030, -1, 278, -1, -1, 3325, -1, -1, 177, -1, - -1, -1, -1, -1, -1, -1, 292, -1, -1, 2049, - -1, 2051, -1, -1, 1211, 194, -1, 3347, -1, -1, - 199, -1, -1, -1, 145, -1, -1, -1, -1, -1, + 16, 17, 18, -1, 20, 21, 22, -1, -1, -1, + -1, -1, 2852, 2853, -1, 2855, -1, -1, -1, -1, + -1, 37, -1, -1, -1, 41, -1, -1, -1, -1, + -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2889, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 222, 223, -1, -1, -1, -1, 2089, - -1, -1, -1, -1, -1, -1, 177, -1, 237, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, - 1267, -1, -1, 194, -1, -1, -1, -1, 199, 3148, - -1, -1, -1, -1, 3414, -1, -1, 2127, -1, -1, - -1, 2131, -1, -1, -1, 8, 2136, 2137, 11, 278, - -1, -1, 15, 16, 17, 18, 19, 20, 21, 395, - 2825, -1, -1, 292, 3444, 1312, 237, -1, -1, -1, - -1, -1, 1319, 36, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 46, -1, -1, 3571, 2852, -1, -1, - 53, -1, -1, 2183, -1, -1, 2186, -1, 2188, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3567, -1, - -1, -1, -1, -1, 2204, -1, -1, 80, -1, -1, - -1, 292, 1369, -1, -1, -1, -1, -1, -1, 505, - -1, -1, 508, 509, 510, -1, 512, 513, 514, 515, - 516, 517, -1, -1, -1, -1, 1393, -1, -1, -1, - -1, -1, -1, 2243, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 395, -1, -1, 505, - 2260, 2261, 508, 509, 510, -1, 512, 513, 514, 515, - 516, 517, -1, -1, -1, -1, -1, -1, -1, 2279, - -1, -1, -1, -1, 1441, -1, 1443, -1, 1445, 1446, - -1, 1448, 2292, -1, 1451, -1, -1, 1454, -1, -1, - 1457, -1, -1, -1, 177, 1462, -1, -1, 1465, -1, - -1, -1, -1, -1, 395, -1, -1, -1, -1, -1, - -1, 194, 2997, -1, -1, -1, 199, -1, -1, -1, + -1, -1, -1, -1, -1, 81, -1, 2096, -1, 2909, + -1, 2100, -1, -1, 2914, 2915, -1, -1, 397, 2919, + -1, -1, -1, -1, 2924, -1, -1, 2927, 2928, -1, + -1, -1, 2932, 2933, -1, -1, 2936, -1, -1, -1, + -1, -1, 2131, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2952, -1, -1, -1, 2145, -1, -1, -1, + -1, 2150, -1, -1, -1, 2154, 2155, 2156, 2157, 2158, + 2159, 2160, 2161, -1, -1, -1, -1, -1, 2167, 2168, + -1, 2170, 2171, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2184, 2996, -1, 2187, -1, + -1, -1, 178, -1, -1, -1, 2195, 2196, 2197, 2198, + 2199, 2200, 2201, 2202, 2203, 2204, -1, -1, -1, 195, + -1, -1, -1, 3023, 200, -1, -1, -1, 507, -1, + -1, 510, 511, 512, -1, 514, 515, 516, 517, 518, + 519, 2230, -1, -1, -1, -1, -1, 223, 224, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3370, -1, -1, -1, -1, -1, -1, -1, 222, - 223, -1, 1509, -1, -1, -1, -1, -1, -1, 2359, - -1, -1, -1, -1, 237, -1, 505, -1, 2368, 508, - 509, 510, -1, 512, 513, 514, 515, 516, 517, -1, + -1, -1, -1, 239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 275, -1, -1, 278, -1, -1, 0, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 292, - -1, -1, 295, -1, 505, -1, -1, 2427, -1, -1, - 22, 512, 513, 514, 515, 516, 517, -1, 1595, -1, - 32, -1, 34, 35, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1611, 47, -1, -1, -1, -1, - 52, -1, -1, -1, -1, 1622, 1623, 1624, -1, 61, - -1, -1, 1629, 3148, -1, -1, 1633, -1, -1, -1, - -1, -1, -1, 75, -1, -1, -1, -1, -1, -1, - -1, -1, 84, -1, 86, -1, -1, -1, -1, -1, - -1, -1, 3, -1, 5, -1, 98, -1, 100, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 111, - -1, -1, 395, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 126, 127, 128, -1, -1, 1696, - -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, - -1, 143, -1, -1, -1, -1, -1, -1, -1, 151, - -1, 153, 154, -1, 2564, -1, -1, 68, 69, -1, - 2570, 2571, -1, -1, -1, -1, 168, -1, 1735, -1, - 172, -1, -1, -1, -1, -1, 2586, -1, -1, -1, - -1, -1, -1, -1, 1751, -1, -1, -1, -1, 1756, - -1, -1, 2602, -1, -1, 2605, 198, 2607, 109, 110, - -1, -1, 113, 114, -1, 2615, 1773, -1, -1, -1, - -1, -1, 214, 2623, 2624, -1, -1, -1, -1, -1, - 2630, -1, 505, -1, -1, 508, 509, 510, -1, 512, - 513, 514, 515, 516, 517, -1, -1, 2647, 240, -1, - -1, -1, -1, 526, -1, -1, -1, 2657, -1, -1, + -1, -1, -1, 2282, -1, -1, -1, -1, -1, -1, + -1, 277, -1, -1, 280, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 294, -1, + -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2677, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 189, 190, - -1, -1, -1, -1, -1, 3370, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 316, 317, 318, -1, 2728, -1, - -1, -1, 324, -1, -1, 327, -1, -1, -1, -1, - -1, 2741, -1, 2743, -1, -1, -1, -1, -1, -1, - -1, -1, 253, 254, 255, 256, 257, 258, 259, 260, - -1, -1, 263, 264, -1, -1, 358, -1, -1, -1, - -1, -1, -1, 2773, -1, 367, -1, -1, -1, -1, + -1, -1, -1, -1, 3174, -1, 2365, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2376, 2377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 383, -1, -1, -1, 1952, -1, -1, 390, -1, - -1, -1, 394, 1960, 1961, -1, 1963, 1964, 1965, 1966, - 1967, 1968, -1, 405, 1971, 1972, 1973, 1974, 1975, 1976, - 1977, 1978, 1979, 1980, 1981, 417, -1, -1, -1, 421, - -1, -1, -1, -1, -1, -1, -1, 338, 339, -1, - -1, -1, -1, -1, -1, 2845, 2846, -1, 2848, 441, - -1, -1, -1, -1, -1, -1, -1, -1, 68, 69, - -1, -1, -1, 455, -1, -1, 458, -1, -1, 461, - -1, -1, -1, -1, 466, -1, -1, -1, 379, 380, - -1, -1, 2882, -1, -1, -1, -1, -1, -1, -1, - -1, 483, -1, -1, -1, -1, -1, -1, -1, 109, - 110, -1, 2902, 113, 114, -1, -1, -1, 2908, 2909, - -1, -1, -1, 2913, -1, 507, -1, -1, 2918, -1, - -1, 2921, 2922, -1, -1, -1, 2926, 2927, -1, 521, - 2930, -1, 524, -1, -1, 2092, -1, -1, 2095, -1, - -1, -1, -1, -1, -1, 2945, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3209, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2126, - -1, -1, -1, -1, -1, -1, 477, 478, -1, 189, - 190, -1, -1, -1, 2141, -1, 68, 69, 2145, 2989, - -1, -1, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, - 501, 502, -1, -1, -1, 2162, 2163, -1, 2165, 2166, - -1, -1, -1, -1, -1, -1, 3016, -1, -1, -1, - -1, -1, 2179, -1, -1, 2182, -1, 109, 110, -1, - -1, 113, 114, 2190, 2191, 2192, 2193, 2194, 2195, 2196, - 2197, 2198, 2199, 253, 254, 255, 256, 257, 258, 259, - 260, -1, -1, 263, 264, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8, -1, -1, 11, 2225, -1, - -1, 15, 16, 17, 18, 19, 20, 21, -1, -1, + -1, 397, -1, -1, -1, 3225, 3226, -1, -1, 3229, + -1, 3231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 46, -1, -1, -1, -1, 189, 190, 53, + -1, -1, -1, -1, -1, -1, -1, 2446, 3258, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2277, -1, -1, -1, -1, -1, -1, -1, 338, 339, - -1, -1, -1, -1, -1, -1, 80, 3137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3282, 2472, 2473, 2474, -1, -1, 2477, 2478, + 2479, 2480, 2481, 2482, -1, -1, -1, 2486, 2487, 2488, + 2489, 2490, 2491, 2492, 2493, 2494, 2495, -1, -1, -1, + -1, 2500, 2501, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3164, -1, -1, -1, -1, 379, - 380, 253, 254, 255, 256, 257, 258, 259, 260, -1, - -1, 263, 264, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3, -1, -1, -1, -1, 8, -1, 3199, - 11, -1, -1, 2360, 15, 16, 17, 18, 19, 20, - 21, -1, -1, -1, 2371, 2372, 3216, 3217, -1, -1, - 3220, -1, 3222, -1, -1, 36, -1, -1, -1, 40, - -1, -1, -1, 177, -1, 46, -1, -1, -1, -1, - -1, -1, 53, -1, -1, -1, -1, -1, -1, 3249, - 194, -1, -1, -1, -1, 199, 338, 339, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 477, 478, 80, - -1, -1, -1, 3273, -1, -1, -1, -1, 222, 223, - -1, 2438, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 501, 502, 237, -1, -1, -1, 379, 380, -1, - -1, -1, -1, -1, -1, -1, -1, 2464, 2465, 2466, - -1, 521, 2469, 2470, 2471, 2472, 2473, 2474, -1, -1, - -1, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, - 2487, 275, -1, -1, 278, 2492, 2493, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 292, -1, - -1, 295, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2518, -1, -1, 3364, -1, 177, -1, 3368, -1, - -1, 2528, 3372, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 194, -1, -1, 3386, -1, 199, -1, - -1, 3391, -1, 3393, -1, 477, 478, -1, -1, -1, - -1, -1, -1, 3403, -1, -1, 2563, -1, -1, -1, - -1, 222, 223, -1, -1, -1, -1, -1, -1, 501, - 502, 3421, -1, -1, 2581, -1, 237, -1, -1, -1, - 2587, -1, -1, -1, -1, -1, -1, -1, 2595, 2596, - -1, -1, -1, -1, -1, -1, 2603, 2604, -1, -1, - -1, 395, -1, -1, -1, -1, -1, -1, -1, -1, - 2617, 2618, 2619, 2620, 275, 2622, -1, 278, 3468, 2626, - -1, -1, -1, -1, -1, -1, -1, -1, 3478, -1, - -1, 292, -1, -1, 295, -1, -1, -1, -1, -1, + -1, 507, -1, -1, 510, 511, 512, 2526, 514, 515, + 516, 517, 518, 519, -1, -1, -1, 2536, 524, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3375, -1, -1, -1, 3379, + -1, -1, 2571, 3383, -1, -1, -1, -1, -1, 2578, + -1, -1, -1, -1, -1, -1, -1, 3397, -1, -1, + -1, 2590, 3402, 3403, -1, -1, -1, 2596, -1, -1, + -1, -1, 2601, 2602, 3414, -1, 8, -1, -1, 11, + 2609, 2610, -1, 15, 16, 17, 18, -1, 20, 21, + 22, -1, 3432, -1, 2623, 2624, 2625, 2626, -1, 2628, + -1, -1, -1, 2632, -1, 37, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, + -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3480, -1, -1, -1, -1, -1, -1, -1, -1, 81, 3490, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8, -1, -1, 11, -1, - -1, -1, 15, 16, 17, 18, 19, 20, 21, -1, - -1, -1, -1, 3523, -1, -1, -1, 2684, -1, -1, - -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, - 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 505, -1, -1, 508, 509, 510, -1, 512, 513, - 514, 515, 516, 517, -1, -1, -1, 80, -1, -1, - -1, 525, -1, -1, 395, 8, -1, -1, 11, -1, - -1, -1, 15, 16, 17, 18, 19, 20, 21, -1, + 8, 2690, 3502, 11, -1, -1, -1, 15, 16, 17, + 18, -1, 20, 21, 22, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + -1, -1, -1, -1, -1, 3535, -1, -1, -1, 47, + -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, + -1, -1, 8, -1, -1, 11, -1, -1, -1, 15, + 16, 17, 18, -1, 20, 21, 22, -1, -1, -1, + -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, + -1, 37, -1, -1, -1, -1, 178, -1, -1, -1, + -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, + -1, -1, -1, 195, -1, -1, -1, -1, 200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3610, 3611, 3612, 36, -1, -1, -1, 40, -1, -1, - -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, - 53, -1, -1, -1, -1, -1, -1, 3637, -1, -1, - -1, -1, 8, -1, -1, 11, 2803, -1, -1, 15, - 16, 17, 18, 19, 20, 21, -1, 80, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2825, -1, - 36, -1, -1, -1, 177, -1, -1, -1, 3678, -1, - 46, -1, -1, -1, -1, -1, -1, 53, -1, -1, - -1, 194, -1, -1, 505, -1, 199, 508, 509, 510, - -1, 512, 513, 514, 515, 516, 517, -1, -1, -1, - -1, -1, -1, -1, 80, -1, -1, -1, -1, 222, - 223, -1, -1, -1, -1, -1, 2883, -1, 2885, -1, - -1, -1, -1, -1, 237, -1, -1, 2894, -1, -1, + -1, 2810, 3622, 3623, 3624, 81, -1, -1, -1, -1, + -1, 223, 224, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2832, -1, -1, -1, 239, -1, 3649, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2907, -1, -1, 2910, 177, 2912, -1, -1, -1, 2916, - -1, -1, 2919, 2920, -1, -1, 2923, 2924, -1, -1, - -1, 194, 275, -1, 2931, 278, 199, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2944, -1, 292, - -1, -1, 295, -1, -1, -1, -1, -1, -1, 222, - 223, -1, 2959, -1, -1, -1, -1, -1, 24, -1, - -1, 177, -1, 8, 237, -1, 11, -1, -1, -1, - 15, 16, 17, 18, 19, 20, 21, -1, 194, -1, - -1, -1, -1, 199, -1, -1, -1, -1, -1, -1, - 2997, 36, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 46, 275, -1, -1, 278, 222, 223, 53, -1, - -1, -1, -1, -1, -1, 81, -1, -1, -1, 292, - -1, 237, 295, -1, -1, -1, -1, -1, -1, -1, - -1, 97, -1, -1, -1, 80, -1, 8, -1, -1, - 11, -1, 395, -1, 15, 16, 17, 18, 19, 20, - 21, -1, -1, -1, -1, -1, -1, -1, -1, 275, - -1, -1, 278, -1, -1, 36, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 46, 292, -1, -1, 295, - 146, -1, 53, -1, -1, -1, -1, -1, -1, -1, - 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 169, -1, -1, -1, -1, 174, 80, - 3117, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 395, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 177, -1, -1, -1, -1, 203, -1, -1, - 3147, 3148, -1, -1, -1, -1, -1, -1, -1, 194, - -1, -1, 505, -1, 199, 508, 509, 510, -1, 512, - 513, 514, 515, 516, 517, 3172, 3173, 520, -1, 3176, - -1, -1, -1, -1, -1, -1, -1, 222, 223, 395, - 246, -1, -1, -1, 250, -1, -1, -1, -1, -1, - 3197, -1, 237, -1, -1, -1, -1, -1, -1, 3206, - -1, -1, -1, 3210, 3211, 3212, 177, -1, 3215, -1, - -1, 3218, 3219, -1, -1, -1, -1, -1, -1, -1, - 3227, -1, -1, 194, -1, -1, -1, -1, 199, -1, - 275, -1, 505, 278, -1, 508, 509, 510, -1, 512, - 513, 514, 515, 516, 517, -1, -1, 292, -1, 522, - 295, 222, 223, -1, -1, 321, -1, -1, -1, -1, - -1, -1, -1, 3270, -1, -1, 237, -1, -1, 3276, - 336, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3289, -1, -1, -1, -1, -1, -1, 505, - -1, -1, 508, 509, 510, -1, 512, 513, 514, 515, - 516, 517, -1, -1, 275, 371, 522, 278, 374, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 385, - -1, 292, 388, -1, 295, -1, -1, -1, -1, -1, + -1, 8, -1, -1, 11, -1, -1, -1, 15, 16, + 178, -1, -1, 20, 21, 22, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 277, -1, 195, 280, -1, + 3690, -1, 200, -1, -1, -1, -1, -1, -1, -1, + 47, 2890, 294, 2892, -1, 297, -1, 54, -1, -1, + -1, -1, 2901, -1, -1, 223, 224, -1, -1, -1, + -1, -1, 178, -1, 2913, -1, -1, 2916, -1, 2918, + -1, 239, -1, 2922, 81, -1, 2925, 2926, -1, 195, + 2929, 2930, -1, -1, 200, -1, -1, -1, 2937, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 407, -1, -1, -1, 3352, -1, -1, -1, -1, - 395, -1, -1, -1, -1, 421, -1, -1, -1, -1, - -1, -1, 428, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 438, -1, -1, -1, -1, -1, 444, -1, - -1, 3388, 3389, 3390, -1, -1, -1, -1, -1, -1, + -1, -1, 2951, -1, -1, -1, -1, 223, 224, 277, + -1, -1, 280, -1, -1, -1, -1, 2966, -1, -1, + -1, -1, -1, 239, -1, -1, 294, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3410, -1, -1, -1, 473, -1, -1, - -1, -1, -1, -1, -1, 3422, -1, -1, -1, -1, - -1, -1, -1, -1, 395, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 397, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3004, -1, -1, -1, -1, + -1, 277, -1, -1, 280, -1, -1, -1, -1, -1, + -1, 178, -1, -1, -1, -1, -1, -1, 294, -1, + -1, 297, -1, -1, -1, -1, -1, -1, 195, -1, + -1, -1, -1, 200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 223, 224, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 397, + -1, -1, 239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 507, -1, -1, 510, 511, + 512, -1, 514, 515, 516, 517, 518, 519, -1, -1, + 277, -1, 524, 280, 3123, -1, -1, -1, -1, -1, + -1, 397, -1, -1, -1, -1, -1, 294, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 505, -1, -1, 508, 509, 510, -1, 512, 513, 514, - 515, 516, 517, -1, -1, -1, 3483, 522, -1, -1, - -1, -1, -1, -1, -1, -1, 3493, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3157, 3158, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3518, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3182, 3183, -1, -1, 3186, -1, 507, + -1, -1, 510, 511, 512, -1, 514, 515, 516, 517, + 518, 519, -1, -1, -1, -1, 524, -1, 3207, -1, + -1, -1, -1, -1, -1, -1, -1, 3216, -1, -1, + 3219, 3220, 3221, -1, -1, 3224, -1, -1, 3227, 3228, + -1, -1, -1, -1, -1, -1, -1, 3236, -1, -1, + 397, 507, -1, -1, 510, 511, 512, -1, 514, 515, + 516, 517, 518, 519, -1, -1, -1, -1, 524, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 505, -1, 3543, 508, 509, 510, - -1, 512, 513, 514, 515, 516, 517, -1, -1, -1, - -1, 522, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3586, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, - -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 3640, 75, 76, 77, 78, 79, -1, - 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, -1, -1, 234, 235, 236, 237, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, -1, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, 454, 455, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - 471, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, -1, 507, -1, -1, -1, - -1, 512, 513, 514, -1, -1, -1, -1, 519, -1, - 521, 522, -1, -1, -1, -1, 527, 528, 529, 530, - 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, 39, -1, -1, 42, - 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, - -1, 234, 235, 236, 237, -1, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, -1, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, -1, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, 454, 455, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, 471, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, -1, 507, -1, -1, -1, -1, 512, - 513, 514, -1, -1, -1, -1, 519, -1, 521, -1, - -1, -1, -1, -1, 527, 528, 529, 530, 3, 4, - 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, - -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, -1, -1, 234, - 235, 236, 237, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, -1, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, 454, - 455, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, 471, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, -1, 507, -1, -1, -1, -1, 512, 513, 514, - -1, -1, -1, -1, 519, -1, 521, -1, -1, -1, - -1, -1, 527, 528, 529, 530, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, - 37, -1, 39, -1, -1, 42, 43, 44, -1, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, 132, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, 171, -1, 173, 174, 175, 176, - 177, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, -1, -1, 234, 235, 236, - 237, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, 423, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, 454, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, -1, - -1, -1, -1, -1, -1, 512, 513, 514, -1, -1, - -1, -1, 519, -1, 521, 522, -1, -1, -1, -1, - 527, 528, 529, 530, 3, 4, 5, 6, 7, -1, - 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, -1, -1, 234, 235, 236, 237, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - -1, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, -1, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, -1, 455, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, -1, -1, 507, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 519, -1, 521, -1, -1, -1, -1, -1, 527, 528, - 529, 530, 3, 4, 5, 6, 7, 8, 9, 10, + 3279, -1, -1, -1, -1, -1, 3285, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3298, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 507, -1, -1, 510, 511, 512, -1, 514, 515, 516, + 517, 518, 519, -1, 3363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, - -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, -1, 233, 234, 235, 236, 237, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, 423, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, 454, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - 471, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, -1, -1, -1, -1, -1, - -1, 512, 513, 514, -1, -1, -1, -1, 519, -1, - 521, -1, -1, -1, -1, -1, 527, 528, 529, 530, - 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, 37, -1, 39, -1, -1, 42, - 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, 171, -1, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, - -1, 234, 235, 236, 237, -1, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - 423, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, 454, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, -1, -1, -1, -1, -1, -1, 512, - 513, 514, -1, -1, -1, -1, 519, -1, 521, -1, - -1, -1, -1, -1, 527, 528, 529, 530, 3, 4, - 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, 37, -1, 39, -1, -1, 42, 43, 44, - -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, 171, -1, 173, 174, - 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, -1, -1, 234, - 235, 236, 237, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, 423, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, 454, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, 471, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, -1, -1, -1, -1, -1, -1, 512, 513, 514, - -1, -1, -1, -1, 519, -1, 521, 522, -1, -1, - -1, -1, 527, 528, 529, 530, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, - -1, 38, 39, -1, -1, 42, 43, 44, -1, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, 171, -1, 173, 174, 175, 176, - 177, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, -1, -1, 234, 235, 236, - 237, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, 423, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, 454, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, 471, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, -1, - -1, -1, -1, -1, -1, 512, 513, 514, -1, -1, - -1, -1, 519, -1, 521, -1, -1, -1, -1, -1, - 527, 528, 529, 530, 3, 4, 5, 6, 7, 8, - 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, 37, -1, - 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, 171, -1, 173, 174, 175, 176, 177, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, -1, -1, 234, 235, 236, 237, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, 423, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, 454, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, -1, -1, -1, - -1, -1, -1, 512, 513, 514, -1, -1, -1, -1, - 519, -1, 521, 522, -1, -1, -1, -1, 527, 528, - 529, 530, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, 37, -1, 39, -1, - -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - 171, -1, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, -1, -1, 234, 235, 236, 237, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, 423, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, 454, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - 471, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, -1, -1, -1, -1, -1, - -1, 512, 513, 514, -1, -1, -1, -1, 519, -1, - 521, -1, -1, -1, -1, -1, 527, 528, 529, 530, - 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, -1, -1, -1, -1, -1, 39, -1, -1, 42, - 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, 171, -1, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, - -1, 234, 235, 236, 237, -1, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - 423, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, 454, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, 471, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, -1, -1, -1, -1, -1, -1, 512, - 513, 514, -1, -1, -1, -1, 519, -1, 521, -1, - -1, -1, -1, -1, 527, 528, 529, 530, 3, 4, - 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, - -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, - -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, 171, -1, 173, 174, - 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, -1, -1, 234, - 235, 236, 237, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, 423, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, 454, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, 471, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, -1, -1, -1, -1, -1, -1, 512, 513, 514, - -1, -1, -1, -1, 519, -1, 521, -1, -1, -1, - -1, -1, 527, 528, 529, 530, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, -1, -1, 234, 235, 236, - 237, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, 423, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, 454, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, 471, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, -1, - -1, -1, -1, -1, -1, 512, 513, 514, -1, -1, - -1, -1, 519, -1, 521, -1, -1, -1, -1, -1, - 527, 528, 529, 530, 3, 4, 5, 6, 7, 8, - 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, 171, -1, 173, 174, 175, 176, 177, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, -1, -1, 234, 235, 236, 237, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, 423, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, 454, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, -1, -1, -1, - -1, -1, -1, 512, 513, 514, -1, -1, -1, -1, - 519, -1, 521, 522, -1, -1, -1, -1, 527, 528, - 529, 530, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, - -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - 171, -1, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, -1, -1, 234, 235, 236, 237, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, 423, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, 454, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - 471, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, -1, -1, -1, -1, -1, - -1, 512, 513, 514, -1, -1, -1, -1, 519, -1, - 521, -1, -1, -1, -1, 526, 527, 528, 529, 530, - 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, 39, -1, -1, 42, - 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, 171, -1, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, - -1, 234, 235, 236, 237, -1, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, 454, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, 471, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, -1, -1, -1, -1, -1, -1, 512, - 513, 514, -1, -1, -1, -1, 519, -1, 521, -1, - -1, -1, -1, -1, 527, 528, 529, 530, 3, 4, - 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, - -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, 171, -1, 173, 174, - 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, -1, -1, 234, - 235, 236, 237, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, 423, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, 454, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, 471, 472, 473, 474, - 475, 476, 477, 478, -1, 480, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, -1, -1, -1, -1, -1, -1, 512, 513, 514, - -1, -1, -1, -1, 519, -1, 521, -1, -1, -1, - -1, -1, 527, 528, 529, 530, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, - -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, 171, -1, 173, 174, 175, 176, - 177, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, -1, -1, 234, 235, 236, - 237, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, 423, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, 454, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, 471, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, -1, - -1, -1, -1, -1, -1, 512, 513, 514, -1, -1, - -1, -1, 519, -1, 521, -1, -1, -1, -1, -1, - 527, 528, 529, 530, 3, 4, 5, 6, 7, 8, - 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, 171, -1, 173, 174, 175, 176, 177, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, -1, -1, 234, 235, 236, 237, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, 423, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, 454, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, -1, -1, -1, - -1, -1, -1, 512, 513, 514, -1, -1, -1, -1, - 519, -1, 521, -1, -1, -1, -1, 526, 527, 528, - 529, 530, 3, 4, 5, 6, 7, 8, 9, 10, + 3399, 3400, 3401, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, - -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - 171, -1, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, -1, -1, 234, 235, 236, 237, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, 423, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, 454, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - 471, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, -1, -1, -1, -1, -1, - -1, 512, 513, 514, -1, -1, -1, -1, 519, -1, - 521, -1, -1, -1, -1, -1, 527, 528, 529, 530, + -1, -1, 3421, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3433, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3495, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3505, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3530, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3555, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3598, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, -1, -1, 40, -1, + -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 3652, 76, 77, 78, 79, 80, -1, + 82, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, 238, 239, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, -1, 290, 291, + -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, -1, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, -1, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, -1, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 454, 455, 456, 457, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 472, 473, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, -1, 509, -1, -1, + -1, -1, 514, 515, 516, -1, -1, -1, -1, 521, + -1, 523, 524, -1, -1, -1, 528, 529, 530, 531, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, 39, -1, -1, 42, - 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, + 33, 34, -1, -1, -1, -1, -1, 40, -1, -1, + 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, 101, 102, + 73, 74, -1, 76, 77, 78, 79, 80, -1, 82, + -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, 171, -1, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, - -1, 234, 235, 236, 237, -1, 239, 240, 241, 242, + 113, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + -1, -1, 135, 136, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + -1, 164, 165, 166, 167, -1, 169, -1, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, -1, + 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, -1, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, -1, 220, -1, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, 300, 301, 302, + 283, 284, 285, 286, 287, 288, -1, 290, 291, -1, + -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, + 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, -1, 401, 402, + 383, 384, 385, -1, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - 423, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, 454, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, 471, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 413, 414, 415, 416, 417, 418, 419, -1, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, + 433, 434, -1, -1, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 453, 454, 455, 456, 457, 458, 459, 460, 461, -1, + 463, 464, 465, 466, 467, 468, 469, 470, -1, 472, + 473, 474, 475, 476, 477, 478, 479, 480, -1, -1, + 483, -1, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, -1, -1, -1, -1, -1, -1, 512, - 513, 514, -1, -1, -1, -1, 519, -1, 521, -1, - -1, -1, -1, -1, 527, 528, 529, 530, 3, 4, + 503, 504, 505, 506, 507, -1, 509, -1, -1, -1, + -1, 514, 515, 516, -1, -1, -1, -1, 521, -1, + 523, -1, -1, -1, -1, 528, 529, 530, 531, 3, + 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, 40, -1, -1, 43, + 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, 82, -1, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, 456, 457, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, 473, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, -1, 509, -1, -1, -1, -1, + 514, 515, 516, -1, -1, -1, -1, 521, -1, 523, + -1, -1, -1, -1, 528, 529, 530, 531, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, - -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, 101, 102, 103, 104, + -1, -1, -1, -1, -1, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, -1, -1, 38, -1, 40, -1, -1, 43, 44, + 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + -1, 76, 77, 78, 79, 80, -1, 82, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, + 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, 171, -1, 173, 174, - 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, -1, -1, 234, - 235, 236, 237, -1, 239, 240, 241, 242, 243, 244, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + 125, 126, -1, -1, 129, 130, 131, 132, 133, -1, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, + 165, 166, 167, -1, 169, -1, 171, 172, -1, 174, + 175, 176, 177, 178, 179, 180, 181, -1, 183, 184, + 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, -1, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, -1, 220, -1, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, 300, 301, 302, 303, 304, + 285, 286, 287, 288, -1, 290, 291, -1, -1, 294, + 295, 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, + 315, 316, 317, -1, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, -1, 333, 334, + 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, -1, 401, 402, 403, 404, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, 423, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, 454, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, 471, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 415, 416, 417, 418, -1, -1, 421, 422, -1, 424, + 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, + -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, -1, -1, 453, 454, + 455, 456, -1, 458, 459, 460, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, -1, -1, 483, -1, + -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, -1, -1, -1, -1, -1, -1, 512, 513, 514, - -1, -1, -1, -1, 519, -1, 521, -1, -1, -1, - -1, -1, 527, 528, 529, 530, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, + 505, 506, 507, -1, -1, -1, -1, -1, -1, 514, + 515, 516, -1, -1, -1, -1, 521, -1, 523, 524, + -1, -1, -1, 528, 529, 530, 531, 3, 4, 5, + 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, + -1, -1, -1, -1, 40, -1, -1, 43, 44, 45, + -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, 82, -1, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, 235, + 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, -1, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, -1, -1, 421, 422, -1, 424, 425, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + 456, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, 473, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, -1, -1, -1, -1, -1, -1, 514, 515, + 516, -1, -1, -1, -1, 521, -1, 523, -1, -1, + -1, -1, 528, 529, 530, 531, 3, 4, 5, 6, + 7, -1, 9, 10, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, + -1, -1, -1, 40, -1, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, 101, 102, 103, 104, 105, 106, + 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, -1, 76, + 77, 78, 79, 80, -1, 82, -1, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, + 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, 171, -1, 173, 174, 175, 176, - 177, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, -1, -1, 234, 235, 236, - 237, -1, 239, 240, 241, 242, 243, 244, 245, 246, + 117, -1, 119, -1, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, -1, -1, 135, 136, + 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, + 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, + 167, -1, 169, -1, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, -1, 183, 184, 185, 186, + -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, -1, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, -1, 220, -1, 222, 223, 224, 225, 226, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, -1, 290, 291, -1, -1, 294, 295, 296, + -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, -1, 333, 334, 335, 336, + 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, + 377, 378, 379, 380, 381, 382, 383, 384, 385, -1, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, 423, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, + 417, 418, 419, -1, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, 454, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, 471, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, + 447, 448, 449, 450, -1, -1, 453, 454, 455, -1, + 457, 458, 459, 460, 461, -1, 463, 464, 465, 466, + 467, 468, 469, 470, -1, 472, 473, 474, 475, 476, + 477, 478, 479, 480, -1, -1, 483, -1, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, -1, - -1, -1, -1, -1, -1, 512, 513, 514, -1, -1, - -1, -1, 519, -1, 521, -1, -1, -1, -1, -1, - 527, 528, 529, 530, 3, 4, 5, 6, 7, 8, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + -1, -1, 509, -1, -1, 3, 4, 5, 6, 7, + 8, 9, 10, -1, 521, -1, 523, -1, -1, -1, + -1, 528, 529, 530, 531, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + 38, -1, 40, -1, -1, 43, 44, 45, -1, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, 82, -1, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, 172, -1, 174, 175, 176, 177, + 178, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, 236, 237, + 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, -1, 424, 425, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, 456, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + -1, -1, -1, -1, -1, -1, 514, 515, 516, -1, + -1, -1, -1, 521, -1, 523, -1, -1, -1, -1, + 528, 529, 530, 531, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, 101, 102, 103, 104, 105, 106, 107, 108, + -1, -1, -1, -1, 23, 24, 25, 26, 27, 28, + 29, 30, -1, 32, 33, 34, -1, -1, -1, 38, + -1, 40, -1, -1, 43, 44, 45, -1, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, + 79, 80, -1, 82, -1, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, + 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, + 119, -1, 121, 122, 123, 124, 125, 126, -1, -1, + 129, 130, 131, 132, -1, -1, 135, 136, 137, 138, + 139, -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, 171, -1, 173, 174, 175, 176, 177, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, + 159, 160, 161, 162, -1, 164, 165, 166, 167, -1, + 169, -1, 171, 172, -1, 174, 175, 176, 177, 178, + 179, 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, -1, -1, 234, 235, 236, 237, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + -1, 220, -1, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, -1, -1, 236, 237, 238, + 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + -1, 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, + 309, 310, 311, 312, 313, 314, 315, 316, 317, -1, + -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, -1, 333, 334, 335, 336, 337, 338, + -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, 423, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, + 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, + 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + -1, -1, 421, 422, -1, 424, 425, 426, 427, 428, + 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, 454, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, + 449, 450, -1, -1, 453, 454, 455, 456, -1, 458, + 459, 460, 461, -1, 463, 464, 465, 466, 467, 468, + 469, 470, -1, 472, 473, 474, 475, 476, 477, 478, + 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, -1, -1, -1, - -1, -1, -1, 512, 513, 514, -1, -1, -1, -1, - 519, -1, 521, -1, -1, -1, -1, -1, 527, 528, - 529, 530, 3, 4, 5, 6, 7, 8, 9, 10, + 499, 500, 501, 502, 503, 504, 505, 506, 507, -1, + -1, -1, -1, -1, -1, 514, 515, 516, -1, -1, + -1, -1, 521, -1, 523, 524, -1, -1, -1, 528, + 529, 530, 531, 3, 4, 5, 6, 7, 8, 9, + 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, -1, -1, -1, -1, 39, + 40, -1, -1, 43, 44, 45, -1, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, 82, -1, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, 172, -1, 174, 175, 176, 177, 178, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, 236, 237, 238, 239, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, 425, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, 456, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, 473, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, -1, -1, + -1, -1, -1, -1, 514, 515, 516, -1, -1, -1, + -1, 521, -1, 523, -1, -1, -1, -1, 528, 529, + 530, 531, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, - -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, + -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, + -1, 32, 33, 34, -1, -1, -1, 38, -1, 40, + -1, -1, 43, 44, 45, -1, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, + 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, + -1, 82, -1, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, 125, 126, -1, -1, 129, 130, + 131, 132, -1, -1, 135, 136, 137, 138, 139, -1, + 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - 171, -1, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, -1, -1, 234, 235, 236, 237, -1, 239, 240, + 161, 162, -1, 164, 165, 166, 167, -1, 169, -1, + 171, 172, -1, 174, 175, 176, 177, 178, 179, 180, + 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, -1, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, -1, 220, + -1, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, 300, + 281, 282, 283, 284, 285, 286, 287, 288, -1, 290, + 291, -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, + 311, 312, 313, 314, 315, 316, 317, -1, -1, -1, + -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, -1, 333, 334, 335, 336, 337, 338, -1, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, + 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, 423, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, 454, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - 471, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, + 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, + 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, -1, + 421, 422, -1, 424, 425, 426, 427, 428, 429, 430, + -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 453, 454, 455, 456, -1, 458, 459, 460, + 461, -1, 463, 464, 465, 466, 467, 468, 469, 470, + -1, 472, 473, 474, 475, 476, 477, 478, 479, 480, + -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, -1, -1, -1, -1, -1, - -1, 512, 513, 514, -1, -1, -1, -1, 519, -1, - 521, -1, -1, -1, -1, -1, 527, 528, 529, 530, + 501, 502, 503, 504, 505, 506, 507, -1, -1, -1, + -1, -1, -1, 514, 515, 516, -1, -1, -1, -1, + 521, -1, 523, 524, -1, -1, -1, 528, 529, 530, + 531, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, 38, -1, 40, -1, + -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, 80, -1, + 82, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, 125, 126, -1, -1, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + 172, -1, 174, 175, 176, 177, 178, 179, 180, 181, + -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, 238, 239, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, -1, 290, 291, + -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, -1, -1, -1, -1, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, -1, -1, 421, + 422, -1, 424, 425, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 454, 455, 456, -1, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 472, 473, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, -1, -1, -1, -1, + -1, -1, 514, 515, 516, -1, -1, -1, -1, 521, + -1, 523, -1, -1, -1, -1, 528, 529, 530, 531, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, 39, -1, -1, 42, - 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, 171, -1, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, - -1, 234, 235, 236, 237, -1, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - 423, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, 454, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, 471, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, -1, -1, -1, -1, -1, -1, 512, - 513, 514, -1, -1, -1, -1, 519, -1, 521, -1, - -1, -1, -1, -1, 527, 528, 529, 530, 3, 4, - 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, - -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, 171, -1, 173, 174, - 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, -1, -1, 234, - 235, 236, 237, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, 423, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, 454, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, 471, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, -1, -1, -1, -1, -1, -1, 512, 513, 514, - -1, -1, -1, -1, 519, -1, 521, -1, -1, -1, - -1, -1, 527, 528, 529, 530, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, 171, -1, 173, 174, 175, 176, - 177, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, -1, -1, 234, 235, 236, - 237, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, 423, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, 454, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, 471, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, -1, - -1, -1, -1, -1, -1, 512, 513, 514, -1, -1, - -1, -1, 519, -1, 521, -1, -1, -1, -1, -1, - 527, 528, 529, 530, 3, 4, 5, 6, 7, 8, - 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, 171, -1, 173, 174, 175, 176, 177, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, -1, -1, 224, 225, 226, 227, 228, - 229, 230, 231, -1, -1, 234, 235, 236, 237, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, -1, 276, 277, -1, - 279, 280, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, 423, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, 454, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, -1, -1, -1, - -1, -1, -1, 512, 513, 514, -1, -1, -1, -1, - 519, -1, 521, -1, -1, -1, -1, -1, 527, 528, - 529, 530, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, - -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - 171, -1, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, -1, -1, 234, 235, 236, 237, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, 423, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, -1, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - 471, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, -1, -1, -1, -1, -1, -1, - -1, 512, 513, -1, -1, -1, -1, -1, 519, -1, - 521, -1, -1, -1, -1, -1, 527, 528, 529, 530, - 3, 4, 5, 6, 7, -1, 9, 10, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, 39, -1, -1, 42, - 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, -1, 59, 60, 61, 62, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, -1, 40, -1, -1, + 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, 101, 102, + 73, 74, -1, 76, 77, 78, 79, 80, -1, 82, + -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, 171, -1, - 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, - -1, 234, 235, 236, 237, -1, 239, 240, 241, 242, + 113, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, 125, 126, -1, -1, 129, 130, 131, 132, + -1, -1, 135, 136, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + -1, 164, 165, 166, 167, -1, 169, -1, 171, 172, + -1, 174, 175, 176, 177, 178, 179, 180, 181, -1, + 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, -1, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, -1, 220, -1, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, 300, 301, 302, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, -1, 290, 291, -1, + -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 313, 314, 315, 316, 317, -1, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, + 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, -1, 401, 402, + 383, 384, -1, -1, 387, 388, 389, 390, 391, 392, + 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - 423, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, -1, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, 471, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 413, 414, 415, 416, 417, 418, -1, -1, 421, 422, + -1, 424, 425, 426, 427, 428, 429, 430, -1, 432, + 433, 434, -1, -1, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 453, 454, 455, 456, -1, 458, 459, 460, 461, -1, + 463, 464, 465, 466, 467, 468, 469, 470, -1, 472, + 473, 474, 475, 476, 477, 478, 479, 480, -1, -1, + 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, -1, -1, -1, -1, -1, -1, -1, 512, - 513, -1, -1, -1, -1, -1, 519, -1, 521, -1, - -1, -1, -1, -1, 527, 528, 529, 530, 3, 4, + 503, 504, 505, 506, 507, -1, -1, -1, -1, -1, + -1, 514, 515, 516, -1, -1, -1, -1, 521, -1, + 523, -1, -1, -1, -1, 528, 529, 530, 531, 3, + 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, -1, -1, -1, -1, -1, 40, -1, -1, 43, + 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, 82, -1, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, 172, -1, + 174, 175, 176, 177, 178, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, 456, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, 473, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, -1, -1, -1, -1, -1, -1, + 514, 515, 516, -1, -1, -1, -1, 521, -1, 523, + -1, -1, -1, -1, 528, 529, 530, 531, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, - -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, 101, 102, 103, 104, + -1, -1, -1, -1, -1, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, + -1, -1, -1, -1, -1, 40, -1, -1, 43, 44, + 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + -1, 76, 77, 78, 79, 80, -1, 82, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, + 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, 171, -1, 173, 174, - 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, 223, 224, - 225, 226, 227, 228, 229, 230, 231, -1, -1, 234, - 235, 236, 237, -1, 239, 240, 241, 242, 243, 244, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + 125, 126, -1, -1, 129, 130, 131, 132, -1, -1, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, + 165, 166, 167, -1, 169, -1, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, -1, 183, 184, + 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, -1, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, -1, 220, -1, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - -1, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, 300, 301, 302, 303, 304, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, -1, 290, 291, -1, -1, 294, + 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, + 315, 316, 317, -1, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, -1, 333, 334, + 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, -1, 401, 402, 403, 404, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + -1, -1, 387, 388, 389, 390, 391, 392, 393, 394, + 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, 423, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, 471, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 415, 416, 417, 418, -1, -1, 421, 422, -1, 424, + 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, + -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, -1, -1, 453, 454, + 455, 456, -1, 458, 459, 460, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, -1, 472, 473, 474, + 475, 476, 477, 478, 479, 480, -1, -1, 483, -1, + -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - -1, -1, -1, -1, -1, -1, -1, 512, 513, -1, - -1, -1, -1, -1, 519, -1, 521, -1, -1, -1, - -1, -1, 527, 528, 529, 530, 3, 4, 5, 6, - 7, -1, 9, 10, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, + 505, 506, 507, -1, -1, -1, -1, -1, -1, 514, + 515, 516, -1, -1, -1, -1, 521, -1, 523, -1, + -1, -1, -1, 528, 529, 530, 531, 3, 4, 5, + 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, + -1, -1, -1, -1, 40, -1, -1, 43, 44, 45, + -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, 82, -1, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, 172, -1, 174, 175, + 176, 177, 178, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, + 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, -1, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, -1, -1, 421, 422, -1, 424, 425, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + 456, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, 473, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, -1, -1, -1, -1, -1, -1, 514, 515, + 516, -1, -1, -1, -1, 521, -1, 523, 524, -1, + -1, -1, 528, 529, 530, 531, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, -1, 19, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, + -1, -1, -1, 40, -1, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, 101, 102, 103, 104, 105, 106, + 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, -1, 76, + 77, 78, 79, 80, -1, 82, -1, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, + 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, 171, -1, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, -1, -1, 234, 235, 236, - 237, -1, 239, 240, 241, 242, 243, 244, 245, 246, + 117, 118, 119, -1, 121, 122, 123, 124, 125, 126, + -1, -1, 129, 130, 131, 132, -1, -1, 135, 136, + 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, + 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, + 167, -1, 169, -1, 171, 172, -1, 174, 175, 176, + 177, 178, 179, 180, 181, -1, 183, 184, 185, 186, + -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, -1, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, -1, 220, -1, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, -1, -1, 236, + 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, + 287, 288, -1, 290, 291, -1, -1, 294, 295, 296, + -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, -1, -1, -1, -1, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, -1, 333, 334, 335, 336, + 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, + 377, 378, 379, 380, 381, 382, 383, 384, -1, -1, + 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, + 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, 423, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, + 417, 418, -1, -1, 421, 422, -1, 424, 425, 426, + 427, 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, 471, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, + 447, 448, 449, 450, -1, -1, 453, 454, 455, 456, + -1, 458, 459, 460, 461, -1, 463, 464, 465, 466, + 467, 468, 469, 470, -1, 472, 473, 474, 475, 476, + 477, 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 519, -1, 521, -1, -1, -1, -1, -1, - 527, 528, 529, 530, 3, 4, 5, 6, 7, -1, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, -1, -1, -1, -1, -1, -1, 514, 515, 516, + -1, -1, -1, -1, 521, -1, 523, -1, -1, -1, + -1, 528, 529, 530, 531, 3, 4, 5, 6, 7, + 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, 40, -1, -1, 43, 44, 45, -1, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, 82, -1, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, 172, -1, 174, 175, 176, 177, + 178, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, 236, 237, + 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, 456, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, 473, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + -1, -1, -1, -1, -1, -1, 514, 515, 516, -1, + -1, -1, -1, 521, -1, 523, -1, -1, -1, -1, + 528, 529, 530, 531, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, + -1, -1, -1, -1, 23, 24, 25, 26, 27, 28, + 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, + -1, 40, -1, -1, 43, 44, 45, -1, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, + 79, 80, -1, 82, -1, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, + 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, 125, 126, -1, -1, + 129, 130, 131, 132, -1, -1, 135, 136, 137, 138, + 139, -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, 171, -1, 173, 174, 175, 176, 177, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, + 159, 160, 161, 162, -1, 164, 165, 166, 167, -1, + 169, -1, 171, 172, -1, 174, 175, 176, 177, 178, + 179, 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, -1, -1, 234, 235, 236, 237, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + -1, 220, -1, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, -1, -1, 236, 237, 238, + 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + -1, 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, + 309, 310, 311, 312, 313, 314, 315, 316, 317, -1, + -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, -1, 333, 334, 335, 336, 337, 338, + -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, 423, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, + 379, 380, 381, 382, 383, 384, -1, -1, 387, 388, + 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, + 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + -1, -1, 421, 422, -1, 424, 425, 426, 427, 428, + 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, -1, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, + 449, 450, -1, -1, 453, 454, 455, 456, -1, 458, + 459, 460, 461, -1, 463, 464, 465, 466, 467, 468, + 469, 470, -1, 472, 473, 474, 475, 476, 477, 478, + 479, 480, -1, 482, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 519, -1, 521, -1, -1, -1, -1, -1, 527, 528, - 529, 530, 3, 4, 5, 6, 7, -1, 9, 10, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, - -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - 171, -1, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, -1, -1, 234, 235, 236, 237, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, 423, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, -1, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - 471, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 519, -1, - 521, -1, -1, -1, -1, -1, 527, 528, 529, 530, - 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, 39, -1, -1, 42, - 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, - -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, -1, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, 171, -1, - 173, 174, 175, 176, -1, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, -1, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, -1, - -1, 224, 225, 226, 227, 228, 229, 230, 231, -1, - -1, 234, 235, 236, -1, -1, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, -1, 276, 277, -1, 279, 280, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, -1, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - 423, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, 454, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, 471, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, -1, -1, -1, -1, -1, -1, -1, 512, - 513, 514, -1, 3, 4, 5, 519, -1, 521, 9, - -1, -1, -1, -1, 527, 528, 529, 530, -1, -1, - -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, - -1, 31, 32, 33, -1, -1, -1, 37, -1, -1, - -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, - 60, 61, 62, 63, 64, -1, -1, 67, 68, 69, - 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, - -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, -1, 94, 95, 96, 97, 98, 99, - -1, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, - 120, 121, 122, 123, 124, 125, -1, -1, 128, 129, - 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, - 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, + 499, 500, 501, 502, 503, 504, 505, 506, 507, -1, + -1, -1, -1, -1, -1, 514, 515, 516, -1, -1, + -1, -1, 521, -1, 523, -1, -1, -1, -1, 528, + 529, 530, 531, 3, 4, 5, 6, 7, 8, 9, + 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, + 40, -1, -1, 43, 44, 45, -1, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, 82, -1, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, -1, 163, 164, 165, 166, -1, 168, -1, - 170, 171, -1, 173, 174, 175, 176, 177, 178, 179, - 180, -1, 182, 183, 184, 185, -1, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, -1, - 200, 201, 202, 203, 204, 205, 206, -1, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, -1, 219, - -1, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, -1, -1, 234, 235, 236, 237, -1, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 160, 161, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, 172, -1, 174, 175, 176, 177, 178, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, 236, 237, 238, 239, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, - -1, 281, 282, 283, 284, 285, 286, -1, 288, 289, - 290, -1, 292, 293, 294, -1, -1, 297, 298, 299, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, -1, -1, -1, -1, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - -1, 331, 332, 333, 334, 335, 336, -1, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, -1, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - -1, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, -1, -1, 419, - 420, -1, 422, 423, 424, 425, 426, 427, 428, -1, - 430, 431, 432, -1, -1, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, -1, - -1, 451, 452, 453, 454, -1, 456, 457, 458, 459, - -1, 461, 462, 463, 464, 465, 466, 467, 468, -1, - 470, 471, 472, 473, 474, 475, 476, 477, 478, -1, - -1, 481, -1, -1, 484, 485, 486, 487, 488, 489, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, 425, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, 456, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, 473, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, 504, -1, -1, -1, -1, -1, - -1, -1, 512, 513, 514, 3, -1, -1, -1, 519, - -1, 521, 10, -1, -1, -1, -1, -1, -1, -1, - 530, -1, -1, -1, 22, 23, 24, 25, 26, 27, - 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, - -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - -1, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, - 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, -1, 94, 95, 96, 97, - 98, 99, -1, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, - 118, -1, 120, 121, 122, 123, 124, 125, -1, -1, - 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, - 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, -1, 161, -1, 163, 164, 165, 166, -1, - 168, -1, 170, 171, -1, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, -1, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, -1, 200, 201, 202, 203, 204, 205, 206, -1, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, -1, -1, 234, 235, 236, 237, - -1, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, - 278, 279, -1, 281, 282, 283, 284, 285, 286, -1, - 288, 289, -1, -1, 292, 293, 294, -1, -1, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, -1, -1, - -1, -1, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, -1, 331, 332, 333, 334, 335, 336, -1, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, -1, -1, 385, 386, 387, - 388, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, -1, - -1, 419, 420, -1, 422, 423, 424, 425, 426, 427, - 428, -1, 430, 431, 432, -1, -1, 435, 436, 437, - 438, 439, -1, 441, 442, 443, 444, 445, 446, 447, - 448, -1, -1, 451, 452, 453, -1, -1, 456, 457, - 458, 459, -1, 461, 462, 463, 464, 465, 466, 467, - 468, -1, 470, 471, 472, 473, 474, 475, 476, 477, - 478, -1, -1, 481, -1, -1, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, - -1, 519, -1, 521, 9, 10, -1, -1, -1, 527, - 528, 529, 530, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, - -1, -1, 47, 48, -1, 50, 51, 52, 53, 54, - -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, - -1, -1, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, -1, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, -1, -1, -1, 174, - 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, -1, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, -1, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, -1, 224, - -1, 226, 227, 228, 229, 230, 231, -1, -1, 234, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, -1, 270, 271, 272, 273, 274, - -1, 276, 277, -1, 279, -1, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, -1, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, -1, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - -1, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - -1, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, -1, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, -1, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 527, 528, 22, 23, 24, 25, 26, 27, - 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, - -1, -1, 40, -1, -1, 43, 44, -1, -1, 47, - 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, - -1, 59, 60, 61, 62, 63, 64, -1, -1, 67, - 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, - 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, - 88, -1, 90, 91, 92, -1, 94, 95, 96, 97, - 98, 99, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, - 118, -1, 120, 121, 122, 123, 124, 125, -1, -1, - 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, - 138, -1, 140, 141, 142, -1, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, -1, 161, 162, 163, 164, 165, 166, 167, - 168, -1, 170, -1, -1, -1, 174, 175, 176, -1, - 178, 179, 180, -1, 182, 183, 184, 185, -1, 187, - 188, 189, 190, 191, 192, 193, -1, 195, 196, 197, - 198, -1, 200, 201, 202, 203, 204, 205, 206, -1, - 208, -1, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, -1, 221, -1, -1, 224, -1, 226, 227, - 228, 229, 230, 231, -1, -1, 234, -1, 236, -1, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, -1, 270, 271, 272, 273, 274, -1, 276, 277, - -1, 279, -1, 281, 282, 283, 284, 285, 286, 287, - 288, 289, -1, -1, 292, 293, 294, -1, 296, 297, - 298, 299, -1, 301, -1, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, -1, -1, - -1, -1, 320, 321, 322, -1, 324, 325, 326, 327, - 328, 329, -1, 331, 332, 333, 334, 335, 336, -1, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, 363, 364, -1, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, -1, -1, 385, 386, 387, - 388, 389, 390, 391, 392, 393, -1, -1, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, -1, - -1, 419, 420, -1, 422, -1, 424, 425, 426, 427, - 428, -1, 430, 431, 432, -1, -1, 435, 436, 437, - 438, 439, -1, 441, 442, 443, 444, 445, 446, 447, - 448, 449, -1, 451, 452, 453, -1, -1, 456, 457, - 458, 459, -1, 461, 462, 463, 464, 465, 466, 467, - 468, -1, 470, -1, 472, 473, 474, 475, 476, 477, - 478, -1, -1, 481, -1, -1, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 3, -1, 5, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 522, -1, 22, 23, 24, 25, - 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 43, 44, -1, - -1, 47, 48, -1, 50, 51, 52, 53, 54, -1, - 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, - -1, 67, 68, 69, 70, 71, 72, 73, -1, 75, - 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, - 86, 87, 88, -1, 90, 91, 92, -1, 94, 95, - 96, 97, 98, 99, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, - -1, -1, 128, 129, 130, 131, -1, -1, 134, 135, - 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, - 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, -1, 161, -1, 163, 164, 165, - 166, -1, 168, -1, 170, -1, -1, -1, 174, 175, - 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, - -1, 187, 188, 189, 190, 191, 192, 193, -1, 195, - 196, 197, 198, -1, 200, 201, 202, 203, 204, 205, - 206, -1, 208, -1, 210, 211, 212, 213, 214, 215, - 216, 217, -1, 219, -1, 221, -1, -1, 224, -1, - 226, 227, 228, 229, 230, 231, -1, -1, 234, -1, - 236, -1, -1, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, -1, 270, 271, 272, 273, 274, -1, - 276, 277, -1, 279, -1, 281, 282, 283, 284, 285, - 286, -1, 288, 289, -1, -1, 292, 293, 294, -1, - -1, 297, 298, 299, -1, 301, -1, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - -1, -1, -1, -1, 320, 321, 322, -1, 324, 325, - 326, 327, 328, 329, -1, 331, 332, 333, 334, 335, - 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, -1, 363, 364, -1, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, -1, -1, 385, - 386, 387, 388, 389, 390, 391, 392, 393, -1, -1, - 396, 397, 398, 399, -1, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, -1, -1, 419, 420, -1, 422, -1, 424, 425, - 426, 427, 428, -1, 430, 431, 432, -1, -1, 435, - 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, - 446, 447, 448, -1, -1, 451, 452, 453, -1, -1, - 456, 457, 458, 459, -1, 461, 462, 463, 464, 465, - 466, 467, 468, -1, 470, -1, 472, 473, 474, 475, - 476, 477, 478, -1, -1, 481, -1, -1, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 502, 503, 504, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 22, 23, - 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, - 34, 35, -1, 37, -1, -1, -1, -1, 42, 43, - 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, 68, 69, 70, 71, 72, 73, - -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, - 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, -1, -1, - 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, - 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, -1, 161, -1, 163, - 164, 165, 166, -1, 168, -1, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, - 184, 185, -1, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, -1, 200, 201, 202, 203, - 204, 205, 206, -1, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, - 234, 235, 236, 237, -1, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, -1, 276, 277, 278, 279, -1, 281, 282, 283, - 284, 285, 286, -1, 288, 289, -1, -1, 292, 293, - 294, -1, -1, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, -1, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, -1, 331, 332, 333, - 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, -1, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, -1, 430, 431, 432, -1, - -1, 435, 436, 437, 438, 439, -1, 441, 442, 443, - 444, 445, 446, 447, 448, -1, -1, 451, 452, 453, - 454, 455, 456, 457, 458, 459, -1, 461, 462, 463, - 464, 465, 466, 467, 468, -1, 470, 471, 472, 473, - 474, 475, 476, 477, 478, -1, -1, 481, -1, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, -1, 3, 507, 5, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 521, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, - -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, -1, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, -1, 234, 235, 236, 237, -1, 239, 240, + 500, 501, 502, 503, 504, 505, 506, 507, -1, -1, + -1, -1, -1, -1, 514, 515, 516, -1, -1, -1, + -1, 521, -1, 523, -1, -1, -1, -1, 528, 529, + 530, 531, 3, 4, 5, 6, 7, 8, 9, 10, + -1, -1, -1, -1, -1, -1, -1, -1, 19, -1, + -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, + -1, 32, 33, 34, -1, -1, -1, -1, -1, 40, + -1, -1, 43, 44, 45, -1, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, + -1, 82, -1, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, 125, 126, -1, -1, 129, 130, + 131, 132, -1, -1, 135, 136, 137, 138, 139, -1, + 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, -1, 164, 165, 166, 167, -1, 169, -1, + 171, 172, -1, 174, 175, 176, 177, 178, 179, 180, + 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, -1, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, -1, 220, + -1, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, -1, 276, 277, 278, 279, -1, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - 291, 292, 293, 294, -1, -1, 297, 298, 299, 300, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, -1, 290, + 291, -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, -1, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, + 311, 312, 313, 314, 315, 316, 317, -1, -1, -1, + -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, -1, 333, 334, 335, 336, 337, 338, -1, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, + 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, -1, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, -1, 455, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - 471, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, 483, 484, 485, 486, 487, 488, 489, 490, + 381, 382, 383, 384, -1, -1, 387, 388, 389, 390, + 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, + 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, -1, + 421, 422, -1, 424, 425, 426, 427, 428, 429, 430, + -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 453, 454, 455, 456, -1, 458, 459, 460, + 461, -1, 463, 464, 465, 466, 467, 468, 469, 470, + -1, 472, 473, 474, 475, 476, 477, 478, 479, 480, + -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, -1, 3, 507, 5, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 521, -1, -1, -1, 22, 23, 24, 25, 26, 27, - 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - -1, 59, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, - 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, -1, 94, 95, 96, 97, - 98, 99, -1, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, - 118, -1, 120, 121, 122, 123, 124, 125, -1, -1, - 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, - 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, -1, 161, -1, 163, 164, 165, 166, -1, - 168, -1, 170, 171, -1, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, -1, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, -1, 200, 201, 202, 203, 204, 205, 206, -1, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, -1, 234, 235, 236, 237, - -1, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, - 278, 279, -1, 281, 282, 283, 284, 285, 286, -1, - 288, 289, -1, 291, 292, 293, 294, -1, -1, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, -1, -1, - -1, -1, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, -1, 331, 332, 333, 334, 335, 336, -1, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, -1, -1, 385, 386, 387, - 388, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, -1, - -1, 419, 420, -1, 422, 423, 424, 425, 426, 427, - 428, -1, 430, 431, 432, -1, -1, 435, 436, 437, - 438, 439, -1, 441, 442, 443, 444, 445, 446, 447, - 448, -1, -1, 451, 452, 453, -1, -1, 456, 457, - 458, 459, -1, 461, 462, 463, 464, 465, 466, 467, - 468, -1, 470, 471, 472, 473, 474, 475, 476, 477, - 478, -1, -1, 481, -1, -1, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 3, -1, 5, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 521, -1, -1, 22, 23, 24, 25, - 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, - -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, - 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, -1, 94, 95, - 96, 97, 98, 99, -1, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, - -1, -1, 128, 129, 130, 131, -1, -1, 134, 135, - 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, - 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, -1, 161, -1, 163, 164, 165, - 166, -1, 168, -1, 170, 171, -1, 173, 174, 175, - 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, - -1, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, -1, 200, 201, 202, 203, 204, 205, - 206, -1, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, -1, -1, 234, 235, - 236, 237, -1, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, - 276, 277, 278, 279, -1, 281, 282, 283, 284, 285, - 286, -1, 288, 289, -1, 291, 292, 293, 294, -1, - -1, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - -1, -1, -1, -1, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, -1, 331, 332, 333, 334, 335, - 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, -1, -1, 385, - 386, 387, 388, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, -1, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, -1, -1, 419, 420, -1, 422, 423, 424, 425, - 426, 427, 428, -1, 430, 431, 432, -1, -1, 435, - 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, - 446, 447, 448, -1, -1, 451, 452, 453, -1, -1, - 456, 457, 458, 459, -1, 461, 462, 463, 464, 465, - 466, 467, 468, -1, 470, 471, 472, 473, 474, 475, - 476, 477, 478, -1, -1, 481, -1, -1, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 502, 503, 504, 3, + 501, 502, 503, 504, 505, 506, 507, -1, -1, -1, + -1, -1, -1, 514, 515, 516, -1, -1, -1, -1, + 521, -1, 523, -1, -1, -1, -1, 528, 529, 530, + 531, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 521, -1, -1, 22, 23, - 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, - -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, - 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, 71, 72, 73, - -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, - 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, - 124, 125, -1, -1, 128, 129, 130, 131, -1, -1, - 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, - 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, -1, 161, -1, 163, - 164, 165, 166, -1, 168, -1, 170, 171, -1, 173, - 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, - 184, 185, -1, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, -1, 200, 201, 202, 203, - 204, 205, 206, -1, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, - 234, 235, 236, 237, -1, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, -1, 276, 277, 278, 279, -1, 281, 282, 283, - 284, 285, 286, -1, 288, 289, -1, -1, 292, 293, - 294, -1, -1, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, -1, -1, -1, -1, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, -1, 331, 332, 333, - 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, -1, - -1, 385, 386, 387, 388, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, -1, -1, 419, 420, -1, 422, 423, - 424, 425, 426, 427, 428, -1, 430, 431, 432, -1, - -1, 435, 436, 437, 438, 439, -1, 441, 442, 443, - 444, 445, 446, 447, 448, -1, -1, 451, 452, 453, - -1, -1, 456, 457, 458, 459, -1, 461, 462, 463, - 464, 465, 466, 467, 468, -1, 470, 471, 472, 473, - 474, 475, 476, 477, 478, -1, -1, 481, -1, -1, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 521, -1, -1, - 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, - 32, 33, -1, -1, -1, -1, -1, -1, -1, -1, - 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, 71, - 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, - -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, -1, 94, 95, 96, 97, 98, 99, -1, 101, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, -1, -1, 40, -1, + -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, 80, -1, + 82, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, - 122, 123, 124, 125, -1, -1, 128, 129, 130, 131, - -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, - 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, -1, 161, - -1, 163, 164, 165, 166, -1, 168, -1, 170, 171, - -1, 173, 174, 175, 176, 177, 178, 179, 180, -1, - 182, 183, 184, 185, -1, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, -1, 200, 201, - 202, 203, 204, 205, 206, -1, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, -1, 219, -1, 221, + 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, + 122, 123, 124, 125, 126, -1, -1, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + 172, -1, 174, 175, 176, 177, 178, 179, 180, 181, + -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - -1, -1, 234, 235, 236, 237, -1, 239, 240, 241, + 232, 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, -1, 276, 277, 278, 279, -1, 281, - 282, 283, 284, 285, 286, -1, 288, 289, -1, -1, - 292, 293, 294, -1, -1, 297, 298, 299, 300, 301, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, -1, 290, 291, + -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, -1, -1, -1, -1, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, -1, 331, - 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, -1, 349, 350, 351, + 312, 313, 314, 315, 316, 317, -1, -1, -1, -1, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, -1, -1, 385, 386, 387, 388, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, -1, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, -1, -1, 419, 420, -1, - 422, 423, 424, 425, 426, 427, 428, -1, 430, 431, - 432, -1, -1, 435, 436, 437, 438, 439, -1, 441, - 442, 443, 444, 445, 446, 447, 448, -1, -1, 451, - 452, 453, -1, -1, 456, 457, 458, 459, -1, 461, - 462, 463, 464, 465, 466, 467, 468, -1, 470, 471, - 472, 473, 474, 475, 476, 477, 478, -1, -1, 481, - -1, -1, 484, 485, 486, 487, 488, 489, 490, 491, + 382, 383, 384, -1, -1, 387, 388, 389, 390, 391, + 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, -1, -1, 421, + 422, -1, 424, 425, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 454, 455, 456, -1, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 472, 473, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, - 502, 503, 504, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 521, - -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, - -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 43, 44, -1, -1, 47, 48, -1, - 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, - 60, 61, 62, 63, 64, -1, -1, 67, 68, 69, - 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, - -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, - 90, 91, 92, -1, 94, 95, 96, 97, 98, 99, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, - 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - -1, 161, -1, 163, 164, 165, 166, -1, 168, -1, - 170, -1, 172, -1, 174, 175, 176, -1, 178, 179, - 180, -1, 182, 183, 184, 185, -1, 187, 188, 189, - 190, 191, 192, 193, -1, 195, 196, 197, 198, -1, - 200, 201, 202, 203, 204, 205, 206, -1, 208, -1, - 210, 211, 212, 213, 214, 215, 216, 217, -1, 219, - -1, 221, -1, -1, 224, -1, 226, 227, 228, 229, - 230, 231, -1, -1, 234, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, -1, - 270, 271, 272, 273, 274, -1, 276, 277, -1, 279, - -1, 281, 282, 283, 284, 285, 286, -1, 288, 289, - -1, -1, 292, 293, 294, -1, -1, 297, 298, 299, - -1, 301, -1, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, - 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, - -1, 331, 332, 333, 334, 335, 336, -1, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, -1, 363, 364, -1, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, -1, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, - -1, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, -1, 419, - 420, 421, 422, -1, 424, 425, 426, 427, 428, -1, - 430, 431, 432, -1, -1, 435, 436, 437, 438, 439, - -1, 441, 442, 443, 444, 445, 446, 447, 448, -1, - -1, 451, 452, 453, -1, 455, 456, 457, 458, 459, - -1, 461, 462, 463, 464, 465, 466, 467, 468, -1, - 470, -1, 472, 473, 474, 475, 476, 477, 478, -1, - -1, 481, -1, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, 504, -1, 3, 507, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 521, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, 172, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, 421, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, 455, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, -1, 3, - 507, 5, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 521, -1, -1, -1, 22, 23, - 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, - 44, -1, -1, 47, 48, -1, 50, 51, 52, 53, - 54, -1, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, 68, 69, 70, 71, 72, 73, - -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, - 84, 85, 86, 87, 88, -1, 90, 91, 92, -1, - 94, 95, 96, 97, 98, 99, -1, -1, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, - 124, 125, -1, -1, 128, 129, 130, 131, -1, -1, - 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, - 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, -1, 161, -1, 163, - 164, 165, 166, -1, 168, -1, 170, -1, 172, -1, - 174, 175, 176, -1, 178, 179, 180, -1, 182, 183, - 184, 185, -1, 187, 188, 189, 190, 191, 192, 193, - -1, 195, 196, 197, 198, -1, 200, 201, 202, 203, - 204, 205, 206, -1, 208, -1, 210, 211, 212, 213, - 214, 215, 216, 217, -1, 219, -1, 221, -1, -1, - 224, -1, 226, 227, 228, 229, 230, 231, -1, -1, - 234, -1, 236, -1, -1, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, -1, 270, 271, 272, 273, - 274, -1, 276, 277, -1, 279, -1, 281, 282, 283, - 284, 285, 286, -1, 288, 289, -1, -1, 292, 293, - 294, -1, -1, 297, 298, 299, -1, 301, -1, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, -1, 320, 321, 322, -1, - 324, 325, 326, 327, 328, 329, -1, 331, 332, 333, - 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, - 364, -1, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - -1, 385, 386, 387, 388, 389, 390, 391, 392, 393, - -1, -1, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, -1, -1, 419, 420, 421, 422, -1, - 424, 425, 426, 427, 428, -1, 430, 431, 432, -1, - -1, 435, 436, 437, 438, 439, -1, 441, 442, 443, - 444, 445, 446, 447, 448, -1, -1, 451, 452, 453, - -1, 455, 456, 457, 458, 459, -1, 461, 462, 463, - 464, 465, 466, 467, 468, -1, 470, -1, 472, 473, - 474, 475, 476, 477, 478, -1, -1, 481, -1, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, -1, 3, 507, 5, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 521, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, 44, -1, -1, 47, 48, -1, 50, - 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, -1, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, -1, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - -1, -1, -1, 174, 175, 176, -1, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, -1, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, -1, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, -1, -1, 224, -1, 226, 227, 228, 229, 230, - 231, -1, -1, 234, -1, 236, -1, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, -1, 270, - 271, 272, 273, 274, -1, 276, 277, -1, 279, -1, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, -1, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, -1, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, -1, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, -1, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, -1, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, -1, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, -1, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - -1, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 3, -1, 5, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 521, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, 44, -1, -1, 47, 48, - -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, - 59, 60, 61, 62, 63, 64, -1, -1, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, - -1, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, -1, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, -1, -1, -1, 174, 175, 176, -1, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, -1, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - -1, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, -1, -1, 224, -1, 226, 227, 228, - 229, 230, 231, -1, -1, 234, -1, 236, -1, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - -1, 270, 271, 272, 273, 274, -1, 276, 277, -1, - 279, -1, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, -1, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, -1, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, -1, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, -1, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, -1, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, -1, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, -1, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 3, -1, 5, -1, + 502, 503, 504, 505, 506, 507, -1, -1, -1, -1, + -1, -1, 514, 515, 516, -1, -1, -1, -1, 521, + -1, 523, -1, -1, -1, -1, 528, 529, 530, 531, + 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 521, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, -1, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 3, -1, - 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 521, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, - -1, -1, 47, 48, -1, 50, 51, 52, 53, 54, - -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, - -1, -1, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, -1, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, -1, -1, -1, 174, - 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, -1, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, -1, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, -1, 224, - -1, 226, 227, 228, 229, 230, 231, -1, -1, 234, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, -1, 270, 271, 272, 273, 274, - -1, 276, 277, -1, 279, -1, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, -1, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, -1, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - -1, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - -1, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, -1, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, -1, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 521, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, 44, -1, -1, 47, 48, -1, 50, 51, 52, - 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, - 63, 64, -1, -1, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, - 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, -1, 102, + 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, + 33, 34, -1, -1, -1, -1, -1, 40, -1, -1, + 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, -1, 76, 77, 78, 79, 80, -1, 82, + -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, -1, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, -1, -1, - -1, 174, 175, 176, -1, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, -1, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, -1, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, -1, - -1, 224, -1, 226, 227, 228, 229, 230, 231, -1, - -1, 234, -1, 236, -1, -1, 239, 240, 241, 242, + 113, 114, 115, 116, 117, 118, 119, -1, 121, 122, + 123, 124, 125, 126, -1, -1, 129, 130, 131, 132, + -1, -1, 135, 136, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + -1, 164, 165, 166, 167, -1, 169, -1, 171, 172, + -1, 174, 175, 176, 177, 178, 179, 180, 181, -1, + 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, -1, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, -1, 220, -1, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, -1, 270, 271, 272, - 273, 274, -1, 276, 277, -1, 279, -1, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, -1, 301, -1, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, -1, 290, 291, -1, + -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - -1, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, -1, 366, 367, 368, 369, 370, 371, 372, + 313, 314, 315, 316, 317, -1, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, + 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, -1, 396, 397, 398, 399, -1, 401, 402, + 383, 384, -1, -1, 387, 388, 389, 390, 391, 392, + 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - -1, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, -1, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, -1, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, -1, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 413, 414, 415, 416, 417, 418, -1, -1, 421, 422, + -1, 424, 425, 426, 427, 428, 429, 430, -1, 432, + 433, 434, -1, -1, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 453, 454, 455, 456, -1, 458, 459, 460, 461, -1, + 463, 464, 465, 466, 467, 468, 469, 470, -1, 472, + 473, 474, 475, 476, 477, 478, 479, 480, -1, -1, + 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 3, -1, 5, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 521, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, 44, -1, -1, 47, 48, -1, 50, - 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, -1, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, -1, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - -1, -1, -1, 174, 175, 176, -1, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, -1, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, -1, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, -1, -1, 224, -1, 226, 227, 228, 229, 230, - 231, -1, -1, 234, -1, 236, -1, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, -1, 270, - 271, 272, 273, 274, -1, 276, 277, -1, 279, -1, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, -1, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, -1, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, -1, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, -1, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, -1, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, -1, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, -1, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - -1, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 3, -1, 5, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 521, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, 44, -1, -1, 47, 48, - -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, - 59, 60, 61, 62, 63, 64, -1, -1, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, - -1, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, -1, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, -1, -1, -1, 174, 175, 176, -1, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, -1, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - -1, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, -1, -1, 224, -1, 226, 227, 228, - 229, 230, 231, -1, -1, 234, -1, 236, -1, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - -1, 270, 271, 272, 273, 274, -1, 276, 277, -1, - 279, -1, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, -1, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, -1, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, -1, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, -1, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, -1, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, -1, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, -1, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 3, -1, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 521, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, -1, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 521, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, - -1, -1, 47, 48, -1, 50, 51, 52, 53, 54, - -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, - -1, -1, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, -1, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, -1, 102, 103, 104, + 503, 504, 505, 506, 507, -1, -1, -1, -1, -1, + -1, 514, 515, 516, -1, -1, -1, -1, 521, -1, + 523, -1, -1, -1, -1, 528, 529, 530, 531, 3, + 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, 40, -1, -1, 43, + 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, 82, -1, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, 172, -1, + 174, 175, 176, 177, 178, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, 456, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, 473, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, -1, -1, -1, -1, -1, -1, + 514, 515, 516, -1, -1, -1, -1, 521, -1, 523, + -1, -1, -1, -1, 528, 529, 530, 531, 3, 4, + 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, + -1, -1, -1, -1, -1, 40, -1, -1, 43, 44, + 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + -1, 76, 77, 78, 79, 80, -1, 82, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, + 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, -1, -1, -1, 174, - 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, -1, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, -1, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, -1, 224, - -1, 226, 227, 228, 229, 230, 231, -1, -1, 234, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, + 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, + 125, 126, -1, -1, 129, 130, 131, 132, -1, -1, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, + 165, 166, 167, -1, 169, -1, 171, 172, -1, 174, + 175, 176, 177, 178, 179, 180, 181, -1, 183, 184, + 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, -1, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, -1, 220, -1, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, -1, + -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, -1, 270, 271, 272, 273, 274, - -1, 276, 277, -1, 279, -1, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, -1, 301, -1, 303, 304, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, -1, 290, 291, -1, -1, 294, + 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, -1, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - -1, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - -1, 396, 397, 398, 399, -1, 401, 402, 403, 404, + 315, 316, 317, -1, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, -1, 333, 334, + 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + -1, -1, 387, 388, 389, 390, 391, 392, 393, 394, + 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, -1, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, -1, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 415, 416, 417, 418, -1, -1, 421, 422, -1, 424, + 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, + -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, -1, -1, 453, 454, + 455, 456, -1, 458, 459, 460, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, -1, 472, 473, 474, + 475, 476, 477, 478, 479, 480, -1, -1, 483, -1, + -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 521, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, 44, -1, -1, 47, 48, -1, 50, 51, 52, - 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, - 63, 64, -1, -1, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, - 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, -1, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, -1, -1, - -1, 174, 175, 176, -1, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, -1, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, -1, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, -1, - -1, 224, -1, 226, 227, 228, 229, 230, 231, -1, - -1, 234, -1, 236, -1, -1, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, -1, 270, 271, 272, - 273, 274, -1, 276, 277, -1, 279, -1, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, -1, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - -1, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, -1, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, -1, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - -1, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, -1, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, -1, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, -1, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, -1, 3, 4, 5, -1, -1, 8, 9, - -1, -1, -1, -1, -1, 15, 16, -1, 521, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, -1, 54, 55, 56, 57, 58, 59, + 505, 506, 507, -1, -1, -1, -1, -1, -1, 514, + 515, 516, -1, -1, -1, -1, 521, -1, 523, -1, + -1, -1, -1, 528, 529, 530, 531, 3, 4, 5, + 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, + -1, -1, -1, -1, 40, -1, -1, 43, 44, 45, + -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, 82, -1, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, 172, -1, 174, 175, + 176, 177, 178, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, + 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, -1, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, -1, -1, 421, 422, -1, 424, 425, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + 456, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, 473, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, -1, -1, -1, -1, -1, -1, 514, 515, + 516, -1, -1, -1, -1, 521, -1, 523, -1, -1, + -1, -1, 528, 529, 530, 531, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, + -1, -1, -1, 40, -1, -1, 43, 44, 45, -1, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, -1, 76, + 77, 78, 79, 80, -1, 82, -1, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, + 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, -1, 121, 122, 123, 124, 125, 126, + -1, -1, 129, 130, 131, 132, -1, -1, 135, 136, + 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, + 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, + 167, -1, 169, -1, 171, 172, -1, 174, 175, 176, + 177, 178, 179, 180, 181, -1, 183, 184, 185, 186, + -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, -1, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, -1, 220, -1, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, -1, -1, 236, + 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, -1, 290, 291, -1, -1, 294, 295, 296, + -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, -1, -1, -1, -1, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, -1, 333, 334, 335, 336, + 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, -1, -1, + 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, + 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, -1, -1, 421, 422, -1, 424, 425, 426, + 427, 428, 429, 430, -1, 432, 433, 434, -1, -1, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, 453, 454, 455, 456, + -1, 458, 459, 460, 461, -1, 463, 464, 465, 466, + 467, 468, 469, 470, -1, 472, 473, 474, 475, 476, + 477, 478, 479, 480, -1, -1, 483, -1, -1, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, -1, -1, -1, -1, -1, -1, 514, 515, 516, + -1, -1, -1, -1, 521, -1, 523, -1, -1, -1, + -1, 528, 529, 530, 531, 3, 4, 5, 6, 7, + 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, 40, -1, -1, 43, 44, 45, -1, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, 82, -1, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, 172, -1, 174, 175, 176, 177, + 178, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, 236, 237, + 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, -1, 424, 425, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, 456, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, 473, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + -1, -1, -1, -1, -1, -1, 514, 515, 516, -1, + -1, -1, -1, 521, -1, 523, -1, -1, -1, -1, + 528, 529, 530, 531, 3, 4, 5, 6, 7, 8, + 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 23, 24, 25, 26, 27, 28, + 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, + -1, 40, -1, -1, 43, 44, 45, -1, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, + 79, 80, -1, 82, -1, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, + 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, -1, 121, 122, 123, 124, 125, 126, -1, -1, + 129, 130, 131, 132, -1, -1, 135, 136, 137, 138, + 139, -1, 141, 142, 143, -1, 145, 146, 147, -1, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, -1, 164, 165, 166, 167, -1, + 169, -1, 171, 172, -1, 174, 175, 176, 177, 178, + 179, 180, 181, -1, 183, 184, 185, 186, -1, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + -1, 220, -1, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, -1, -1, 236, 237, 238, + 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + -1, 290, 291, -1, -1, 294, 295, 296, -1, -1, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, -1, + -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, -1, 333, 334, 335, 336, 337, 338, + -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, -1, -1, 387, 388, + 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, + 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + -1, -1, 421, 422, -1, 424, 425, 426, 427, 428, + 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, -1, -1, 453, 454, 455, 456, -1, 458, + 459, 460, 461, -1, 463, 464, 465, 466, 467, 468, + 469, 470, -1, 472, 473, 474, 475, 476, 477, 478, + 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, -1, + -1, -1, -1, -1, -1, 514, 515, 516, -1, -1, + -1, -1, 521, -1, 523, -1, -1, -1, -1, 528, + 529, 530, 531, 3, 4, 5, 6, 7, 8, 9, + 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, + 40, -1, -1, 43, 44, 45, -1, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, 82, -1, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, -1, 153, 154, 155, 156, 157, 158, -1, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, -1, -1, 184, 185, 186, 187, 188, 189, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, 172, -1, 174, 175, 176, 177, 178, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - -1, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, 236, 237, 238, 239, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, -1, - 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, -1, 323, 324, 325, -1, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 280, 281, 282, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, -1, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, -1, 438, -1, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, 425, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, -1, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 501, 502, 503, 504, -1, 3, -1, 508, 509, - 510, 8, 512, 513, 514, 515, 516, 517, 15, 16, - -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, -1, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, -1, -1, - -1, 508, 509, 510, -1, 512, 513, 514, 515, 516, - 517, 8, -1, -1, 11, -1, -1, -1, 15, 16, - 17, 18, 19, 20, 21, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, - 8, -1, -1, 11, -1, -1, 53, 15, 16, 17, - 18, 19, 20, 21, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, - -1, -1, -1, 80, -1, -1, -1, -1, 46, 8, - -1, -1, 11, -1, -1, 53, 15, 16, 17, 18, - 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, - -1, -1, 80, -1, -1, -1, -1, 46, -1, -1, - -1, -1, -1, -1, 53, -1, 8, -1, -1, 11, - -1, -1, -1, 15, 16, 17, 18, 19, 20, 21, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 80, -1, -1, 36, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 46, 8, -1, -1, 11, -1, - 177, 53, 15, 16, 17, 18, 19, 20, 21, -1, - -1, -1, -1, -1, -1, -1, -1, 194, -1, -1, - -1, -1, 199, 36, -1, -1, -1, -1, 80, -1, - -1, -1, -1, 46, -1, -1, -1, -1, -1, 177, - 53, -1, -1, -1, -1, 222, 223, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 194, -1, -1, -1, - 237, 199, -1, -1, -1, -1, -1, 80, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 177, -1, - -1, -1, -1, -1, 222, 223, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 194, -1, -1, 275, 237, - 199, 278, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 292, -1, -1, 295, -1, - -1, -1, -1, 222, 223, 177, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 275, 237, -1, - 278, -1, 194, -1, -1, -1, -1, 199, -1, -1, - -1, -1, -1, -1, 292, -1, -1, 295, -1, -1, - -1, -1, -1, -1, 177, -1, -1, -1, -1, -1, - 222, 223, -1, -1, -1, -1, 275, -1, -1, 278, - -1, 194, -1, -1, -1, 237, 199, -1, -1, -1, - -1, -1, -1, 292, -1, -1, 295, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 222, - 223, -1, -1, -1, -1, -1, -1, -1, 395, -1, - -1, -1, -1, 275, 237, -1, 278, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 292, -1, -1, 295, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 395, -1, -1, - -1, -1, 275, -1, -1, 278, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 292, - -1, -1, 295, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 395, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 505, -1, - -1, 508, 509, 510, -1, 512, 513, 514, 515, 516, - 517, -1, -1, 395, -1, 522, -1, -1, -1, -1, - -1, -1, 8, -1, -1, 11, -1, -1, -1, 15, - 16, 17, 18, 19, 20, 21, -1, 505, -1, -1, - 508, 509, 510, -1, 512, 513, 514, 515, 516, 517, - 36, -1, 395, -1, 522, -1, -1, -1, -1, -1, - 46, -1, -1, -1, -1, -1, -1, 53, -1, -1, - -1, -1, -1, -1, -1, -1, 505, -1, -1, 508, - 509, 510, -1, 512, 513, 514, 515, 516, 517, -1, - -1, -1, -1, 522, 80, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, - -1, 11, -1, -1, -1, 15, 16, 17, 18, 19, - 20, 21, -1, 505, -1, -1, 508, 509, 510, -1, - 512, 513, 514, 515, 516, 517, 36, -1, -1, -1, - 522, -1, -1, -1, -1, -1, 46, 8, -1, -1, - 11, -1, -1, 53, 15, 16, 17, 18, 19, 20, - 21, -1, 505, -1, -1, 508, 509, 510, -1, 512, - 513, 514, 515, 516, 517, 36, -1, -1, -1, 522, - 80, -1, -1, -1, -1, 46, 8, -1, -1, 11, - -1, 177, 53, 15, 16, 17, 18, 19, 20, 21, - -1, -1, -1, -1, -1, -1, -1, -1, 194, -1, - -1, -1, -1, 199, 36, -1, -1, -1, -1, 80, - -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, - -1, 53, -1, -1, -1, -1, 222, 223, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 237, -1, -1, -1, -1, -1, -1, 80, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 8, -1, -1, 11, -1, 177, -1, 15, - 16, 17, 18, 19, 20, 21, -1, -1, -1, 275, - -1, -1, 278, -1, 194, -1, -1, -1, -1, 199, - 36, -1, -1, -1, -1, -1, 292, -1, -1, 295, - 46, -1, -1, -1, -1, -1, 177, 53, -1, -1, - -1, -1, 222, 223, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 194, -1, -1, -1, 237, 199, -1, - -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 177, -1, -1, -1, -1, - -1, 222, 223, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 194, -1, -1, 275, 237, 199, 278, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 292, -1, -1, 295, -1, -1, -1, -1, - 222, 223, -1, -1, -1, -1, -1, -1, -1, 395, - -1, -1, -1, -1, 275, 237, -1, 278, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 292, -1, -1, 295, -1, -1, -1, -1, -1, - -1, 177, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 275, -1, -1, 278, -1, 194, -1, - -1, -1, -1, 199, -1, -1, -1, -1, -1, -1, - 292, -1, -1, 295, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 222, 223, -1, -1, - -1, -1, -1, -1, -1, 395, -1, -1, -1, -1, - -1, 237, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 505, - -1, -1, 508, 509, 510, -1, 512, 513, 514, 515, - 516, 517, -1, -1, 395, -1, 522, -1, -1, 275, - -1, -1, 278, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 292, -1, -1, 295, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 395, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 505, -1, -1, 508, 509, - 510, -1, 512, 513, 514, 515, 516, 517, -1, -1, - -1, -1, 522, -1, -1, -1, -1, -1, -1, 8, - -1, -1, 11, -1, -1, -1, 15, 16, 17, 18, - 19, 20, 21, -1, 505, -1, -1, 508, 509, 510, - -1, 512, 513, 514, 515, 516, 517, 36, -1, 395, - -1, 522, -1, -1, -1, -1, -1, 46, 8, -1, - -1, 11, -1, -1, 53, 15, 16, 17, 18, 19, - 20, 21, -1, 505, -1, -1, 508, 509, 510, -1, - 512, 513, 514, 515, 516, 517, 36, -1, -1, -1, - 522, 80, -1, -1, -1, -1, 46, -1, -1, -1, - -1, -1, -1, 53, -1, 8, -1, -1, 11, -1, - -1, -1, 15, 16, 17, 18, 19, 20, 21, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 80, -1, -1, 36, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 46, 8, -1, -1, 11, -1, -1, - 53, 15, 16, 17, 18, 19, 20, 21, -1, 505, - -1, -1, 508, 509, 510, -1, 512, 513, 514, 515, - 516, 517, 36, -1, -1, -1, 522, 80, -1, -1, - -1, -1, 46, 8, -1, -1, 11, -1, 177, 53, - 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, - -1, -1, -1, -1, -1, 194, -1, -1, -1, -1, - 199, 36, -1, -1, -1, -1, 80, -1, -1, -1, - -1, 46, -1, -1, -1, -1, -1, 177, 53, -1, - -1, -1, -1, 222, 223, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 194, -1, -1, -1, 237, 199, - -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 222, 223, 177, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 275, 237, -1, 278, - -1, 194, -1, -1, -1, -1, 199, -1, -1, -1, - -1, -1, -1, 292, -1, -1, 295, -1, -1, -1, - -1, -1, -1, 177, -1, -1, -1, -1, -1, 222, - 223, -1, -1, -1, -1, 275, -1, -1, 278, -1, - 194, -1, -1, -1, 237, 199, -1, -1, -1, -1, - -1, -1, 292, -1, -1, 295, -1, -1, -1, -1, - -1, -1, 177, -1, -1, -1, -1, -1, 222, 223, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 194, - -1, -1, 275, 237, 199, 278, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 292, - -1, -1, 295, -1, -1, -1, -1, 222, 223, -1, - -1, -1, -1, -1, -1, -1, 395, -1, -1, -1, - -1, 275, 237, -1, 278, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, -1, -1, 292, -1, - -1, 295, -1, -1, -1, 32, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 395, -1, -1, -1, -1, - 275, -1, -1, 278, -1, 52, -1, -1, -1, -1, - -1, -1, -1, -1, 61, -1, -1, 292, -1, -1, - 295, -1, -1, -1, -1, -1, -1, -1, 75, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 86, - -1, -1, 395, -1, -1, -1, -1, -1, -1, -1, - -1, 98, -1, 100, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 111, -1, 505, -1, -1, 508, - 509, 510, -1, 512, 513, 514, 515, 516, 517, 126, - 127, 395, -1, 522, -1, -1, -1, -1, -1, -1, - 137, -1, -1, -1, -1, -1, 143, -1, -1, -1, - -1, -1, -1, -1, 151, 505, -1, -1, 508, 509, - 510, -1, 512, 513, 514, 515, 516, 517, -1, -1, - 395, 168, 522, -1, -1, 172, -1, -1, -1, -1, - -1, 24, -1, -1, -1, -1, -1, 8, -1, -1, - 11, -1, -1, -1, 15, 16, 17, 18, 19, 20, - 21, -1, 505, -1, -1, 508, 509, 510, -1, 512, - 513, 514, 515, 516, 517, 36, -1, 214, -1, 522, - -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, - -1, -1, 53, -1, -1, -1, -1, -1, 81, -1, - -1, 505, -1, 240, 508, 509, 510, -1, 512, 513, - 514, 515, 516, 517, 97, -1, 520, -1, -1, 80, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 505, -1, -1, 508, 509, 510, -1, 512, 513, 514, - 515, 516, 517, -1, -1, 520, -1, -1, -1, -1, - -1, -1, -1, 146, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 156, -1, -1, -1, -1, -1, 316, - 317, 318, -1, -1, -1, -1, 169, 324, -1, -1, - 327, 174, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 177, -1, -1, -1, - 203, 358, -1, -1, -1, -1, -1, -1, -1, -1, - 367, -1, -1, 194, -1, -1, -1, -1, 199, -1, - -1, -1, -1, -1, -1, -1, 383, -1, -1, -1, - -1, -1, -1, 390, -1, -1, -1, 394, -1, -1, - -1, 222, 223, 246, -1, -1, -1, 250, 405, -1, - -1, -1, -1, -1, -1, -1, 237, -1, -1, -1, - 417, -1, -1, -1, 421, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 441, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 275, -1, -1, 278, 455, -1, - -1, -1, -1, -1, 461, -1, -1, -1, -1, 466, - -1, 292, 315, -1, 295, -1, -1, -1, 321, -1, - -1, -1, -1, -1, -1, -1, 483, -1, -1, -1, - -1, -1, -1, 336, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 507, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 521, -1, -1, -1, 371, -1, - -1, 374, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 385, -1, -1, 388, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 407, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, -1, -1, -1, 421, -1, - -1, -1, -1, -1, 427, 428, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 438, -1, -1, -1, -1, - -1, 444, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 473, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 450, -1, -1, 453, 454, 455, 456, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, 473, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, -1, -1, + -1, -1, -1, -1, 514, 515, 516, -1, -1, -1, + -1, 521, -1, 523, -1, -1, -1, -1, 528, 529, + 530, 531, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, + -1, 32, 33, 34, -1, -1, -1, -1, -1, 40, + -1, -1, 43, 44, 45, -1, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, + -1, 82, -1, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, + 121, 122, 123, 124, 125, 126, -1, -1, 129, 130, + 131, 132, -1, -1, 135, 136, 137, 138, 139, -1, + 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, -1, 164, 165, 166, 167, -1, 169, -1, + 171, 172, -1, 174, 175, 176, 177, 178, 179, 180, + 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, -1, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, -1, 220, + -1, 222, -1, -1, 225, 226, 227, 228, 229, 230, + 231, 232, 233, -1, -1, 236, 237, 238, 239, -1, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + 281, 282, 283, 284, 285, 286, 287, 288, -1, 290, + 291, -1, -1, 294, 295, 296, -1, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, -1, -1, -1, + -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, -1, 333, 334, 335, 336, 337, 338, -1, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, -1, -1, 387, 388, 389, 390, + 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, + 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, -1, + 421, 422, -1, 424, 425, 426, 427, 428, 429, 430, + -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 453, 454, 455, 456, -1, 458, 459, 460, + 461, -1, 463, 464, 465, 466, 467, 468, 469, 470, + -1, 472, 473, 474, 475, 476, 477, 478, 479, 480, + -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, -1, -1, -1, + -1, -1, -1, 514, 515, 516, -1, -1, -1, -1, + 521, -1, 523, -1, -1, -1, -1, 528, 529, 530, + 531, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3, -1, -1, 505, -1, -1, 508, 509, 510, - -1, 512, 513, 514, 515, 516, 517, -1, -1, 520, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, -1, -1, 40, -1, + -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 72, 73, 74, -1, 76, 77, 78, 79, 80, -1, + 82, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 112, 113, 114, 115, 116, 117, -1, 119, -1, 121, + 122, 123, 124, 125, 126, -1, -1, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + 172, -1, 174, 175, 176, 177, 178, 179, 180, 181, + -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, + 222, 223, 224, 225, 226, 227, 228, 229, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, -1, 290, 291, + -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 312, 313, 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, + 382, 383, 384, -1, -1, 387, 388, 389, 390, 391, + 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, -1, -1, 421, + 422, -1, 424, 425, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 454, 455, -1, -1, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 472, 473, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, - 502, 503, 504, 3, -1, -1, -1, -1, -1, -1, - -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, - -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 43, 44, -1, -1, 47, 48, -1, - 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, - 60, 61, 62, 63, 64, -1, -1, 67, 68, 69, - 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, - -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, - 90, 91, 92, -1, 94, 95, 96, 97, 98, 99, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, - 120, 121, 122, 123, 124, 125, -1, -1, 128, 129, - 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, - 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - -1, 161, -1, 163, 164, 165, 166, -1, 168, -1, - 170, -1, -1, -1, 174, 175, 176, -1, 178, 179, - 180, -1, 182, 183, 184, 185, -1, 187, 188, 189, - 190, 191, 192, 193, -1, 195, 196, 197, 198, -1, - 200, 201, 202, 203, 204, 205, 206, -1, 208, -1, - 210, 211, 212, 213, 214, 215, 216, 217, -1, 219, - -1, 221, -1, -1, 224, -1, 226, 227, 228, 229, - 230, 231, -1, -1, 234, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, -1, - 270, 271, 272, 273, 274, -1, 276, 277, -1, 279, - -1, 281, 282, 283, 284, 285, 286, -1, 288, 289, - -1, -1, 292, 293, 294, -1, -1, 297, 298, 299, - -1, 301, -1, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, -1, -1, -1, -1, - 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, - -1, 331, 332, 333, 334, 335, 336, -1, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, -1, 363, 364, -1, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, -1, -1, 385, 386, 387, 388, 389, - 390, 391, 392, 393, -1, -1, 396, 397, 398, 399, - -1, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, -1, -1, 419, - 420, -1, 422, -1, 424, 425, 426, 427, 428, -1, - 430, 431, 432, -1, -1, 435, 436, 437, 438, 439, - -1, 441, 442, 443, 444, 445, 446, 447, 448, -1, - -1, 451, 452, 453, -1, -1, 456, 457, 458, 459, - -1, 461, 462, 463, 464, 465, 466, 467, 468, -1, - 470, -1, 472, 473, 474, 475, 476, 477, 478, -1, - -1, 481, -1, -1, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, 504, 3, -1, -1, -1, -1, - -1, -1, -1, -1, 514, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, - 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 43, 44, -1, -1, 47, - 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, - -1, 59, 60, 61, 62, 63, 64, -1, -1, 67, - 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, - 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, - 88, -1, 90, 91, 92, -1, 94, 95, 96, 97, - 98, 99, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, - 118, -1, 120, 121, 122, 123, 124, 125, -1, -1, - 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, - 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, -1, 161, -1, 163, 164, 165, 166, -1, - 168, -1, 170, -1, -1, -1, 174, 175, 176, -1, - 178, 179, 180, -1, 182, 183, 184, 185, -1, 187, - 188, 189, 190, 191, 192, 193, -1, 195, 196, 197, - 198, -1, 200, 201, 202, 203, 204, 205, 206, -1, - 208, -1, 210, 211, 212, 213, 214, 215, 216, 217, - -1, 219, -1, 221, -1, -1, 224, -1, 226, 227, - 228, 229, 230, 231, -1, -1, 234, -1, 236, -1, - -1, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, -1, 270, 271, 272, 273, 274, -1, 276, 277, - -1, 279, -1, 281, 282, 283, 284, 285, 286, -1, - 288, 289, -1, -1, 292, 293, 294, -1, -1, 297, - 298, 299, -1, 301, -1, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, -1, -1, - -1, -1, 320, 321, 322, -1, 324, 325, 326, 327, - 328, 329, -1, 331, 332, 333, 334, 335, 336, -1, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, 363, 364, -1, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, -1, -1, 385, 386, 387, - 388, 389, 390, 391, 392, 393, -1, -1, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, -1, - -1, 419, 420, -1, 422, -1, 424, 425, 426, 427, - 428, -1, 430, 431, 432, -1, -1, 435, 436, 437, - 438, 439, -1, 441, 442, 443, 444, 445, 446, 447, - 448, -1, -1, 451, 452, 453, -1, -1, 456, 457, - 458, 459, -1, 461, 462, 463, 464, 465, 466, 467, - 468, -1, 470, -1, 472, 473, 474, 475, 476, 477, - 478, -1, -1, 481, -1, -1, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 3, 4, 5, - -1, -1, -1, 9, -1, -1, 514, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, - 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, - -1, 37, -1, -1, -1, -1, 42, 43, 44, -1, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, - -1, 67, 68, 69, 70, 71, 72, 73, -1, 75, - 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, -1, 94, 95, - 96, 97, 98, 99, -1, 101, 102, 103, 104, 105, + 502, 503, 504, 505, 506, -1, -1, -1, -1, -1, + -1, -1, 514, 515, -1, -1, -1, -1, -1, 521, + -1, 523, -1, -1, -1, -1, 528, 529, 530, 531, + 3, 4, 5, 6, 7, -1, 9, 10, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, + 33, 34, -1, -1, -1, -1, -1, 40, -1, -1, + 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, -1, 76, 77, 78, 79, 80, -1, 82, + -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, -1, 119, -1, 121, 122, + 123, 124, 125, 126, -1, -1, 129, 130, 131, 132, + -1, -1, 135, 136, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + -1, 164, 165, 166, 167, -1, 169, -1, 171, 172, + -1, 174, 175, 176, 177, 178, 179, 180, 181, -1, + 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, -1, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, -1, 220, -1, 222, + 223, 224, 225, 226, 227, 228, 229, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, -1, 290, 291, -1, + -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, -1, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, + 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, -1, -1, 387, 388, 389, 390, 391, 392, + 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, -1, -1, 421, 422, + -1, 424, 425, 426, 427, 428, 429, 430, -1, 432, + 433, 434, -1, -1, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 453, 454, 455, -1, -1, 458, 459, 460, 461, -1, + 463, 464, 465, 466, 467, 468, 469, 470, -1, 472, + 473, 474, 475, 476, 477, 478, 479, 480, -1, -1, + 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, -1, -1, -1, -1, -1, -1, + -1, 514, 515, -1, -1, -1, -1, -1, 521, -1, + 523, -1, -1, -1, -1, 528, 529, 530, 531, 3, + 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, 40, -1, -1, 43, + 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, 82, -1, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, 172, -1, + 174, 175, 176, 177, 178, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + 224, 225, 226, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, 473, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, -1, -1, -1, -1, -1, -1, -1, + 514, 515, -1, -1, -1, -1, -1, 521, -1, 523, + -1, -1, -1, -1, 528, 529, 530, 531, 3, 4, + 5, 6, 7, -1, 9, 10, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, + -1, -1, -1, -1, -1, 40, -1, -1, 43, 44, + 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + -1, 76, 77, 78, 79, 80, -1, 82, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, + 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, -1, 119, -1, 121, 122, 123, 124, + 125, 126, -1, -1, 129, 130, 131, 132, -1, -1, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, + 165, 166, 167, -1, 169, -1, 171, 172, -1, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, -1, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, -1, 220, -1, 222, 223, 224, + 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, -1, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, -1, 290, 291, -1, -1, 294, + 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, -1, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, -1, 333, 334, + 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + -1, -1, 387, 388, 389, 390, 391, 392, 393, 394, + 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, -1, -1, 421, 422, -1, 424, + 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, + -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, -1, -1, 453, 454, + 455, -1, -1, 458, 459, 460, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, -1, 472, 473, 474, + 475, 476, 477, 478, 479, 480, -1, -1, 483, -1, + -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, -1, -1, -1, -1, -1, 3, 4, 5, + 6, 7, -1, 9, 10, -1, 521, -1, 523, -1, + -1, -1, -1, 528, 529, 530, 531, 23, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, + -1, -1, -1, -1, 40, -1, -1, 43, 44, 45, + -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, 82, -1, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, - -1, -1, 128, 129, 130, 131, -1, -1, 134, 135, - 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, - 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, -1, 163, 164, 165, - 166, -1, 168, -1, 170, 171, -1, 173, 174, 175, - 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, - -1, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, -1, 200, 201, 202, 203, 204, 205, - 206, -1, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, -1, -1, 234, 235, - 236, 237, -1, 239, 240, 241, 242, 243, 244, 245, + 116, 117, -1, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, 172, -1, 174, 175, + 176, 177, 178, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, 223, 224, 225, + 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, - 276, 277, 278, 279, -1, 281, 282, 283, 284, 285, - 286, -1, 288, 289, 290, -1, 292, 293, 294, -1, - -1, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - -1, -1, -1, -1, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, -1, 331, 332, 333, 334, 335, - 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, + 316, 317, -1, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, -1, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, -1, 401, 402, 403, 404, 405, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, -1, -1, 419, 420, -1, 422, 423, 424, 425, - 426, 427, 428, -1, 430, 431, 432, -1, -1, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, -1, -1, 451, 452, 453, 454, -1, - 456, 457, 458, 459, -1, 461, 462, 463, 464, 465, - 466, 467, 468, -1, 470, 471, 472, 473, 474, 475, - 476, 477, 478, -1, -1, 481, -1, -1, 484, 485, + 416, 417, 418, -1, -1, 421, 422, -1, 424, 425, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + -1, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, 473, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 502, 503, 504, -1, - -1, 8, -1, -1, 11, -1, 512, 513, 15, 16, - 17, 18, 19, 20, 21, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, - -1, -1, -1, -1, 41, -1, -1, -1, -1, 46, - 8, -1, -1, 11, -1, -1, 53, 15, 16, 17, - 18, 19, 20, 21, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, - -1, -1, -1, 80, -1, -1, -1, -1, 46, 8, - -1, -1, 11, -1, -1, 53, 15, 16, 17, 18, - 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, - -1, -1, 80, -1, -1, -1, -1, 46, -1, 126, - -1, -1, -1, -1, 53, -1, -1, -1, 8, -1, - -1, 11, -1, -1, -1, 15, 16, 17, 18, 19, - 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 80, -1, -1, -1, -1, 36, -1, -1, -1, - 40, -1, -1, -1, -1, -1, 46, -1, 8, -1, - 177, 11, -1, 53, -1, 15, 16, 17, 18, 19, - 20, 21, -1, -1, -1, -1, -1, 194, -1, -1, - -1, -1, 199, -1, -1, -1, 36, -1, -1, 167, - 80, -1, -1, -1, 172, -1, 46, -1, -1, 177, - -1, -1, -1, 53, -1, 222, 223, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 194, -1, -1, -1, - 237, 199, -1, -1, -1, -1, -1, 166, -1, -1, - 80, -1, -1, -1, -1, -1, -1, -1, 177, -1, - -1, -1, -1, -1, 222, 223, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 194, -1, -1, 275, 237, - 199, 278, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 292, -1, -1, 295, -1, - -1, -1, -1, 222, 223, -1, -1, 177, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 275, 237, -1, - 278, -1, -1, -1, 194, -1, -1, -1, -1, 199, - -1, -1, -1, -1, 292, -1, -1, 295, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 177, -1, -1, - -1, -1, 222, 223, -1, -1, 275, -1, -1, 278, - -1, -1, -1, -1, 194, -1, -1, 237, -1, 199, - -1, -1, -1, 292, -1, -1, 295, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 222, 223, -1, -1, -1, -1, 395, -1, - -1, -1, -1, -1, -1, 275, 325, 237, 278, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 292, -1, -1, 295, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 395, -1, -1, - -1, -1, -1, -1, -1, 275, -1, -1, 278, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 292, 460, -1, 295, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 395, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 319, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 505, -1, - -1, 508, 509, 510, -1, 512, 513, 514, 515, 516, - 517, -1, -1, -1, -1, 395, -1, -1, -1, -1, - -1, -1, 8, -1, -1, 11, -1, -1, -1, 15, - 16, 17, 18, 19, 20, 21, -1, 505, -1, -1, - 508, 509, 510, -1, 512, 513, 514, 515, 516, 517, - 36, -1, -1, -1, 40, 395, -1, -1, -1, -1, - 46, -1, -1, -1, -1, -1, -1, 53, -1, -1, - -1, -1, -1, -1, -1, -1, 505, -1, -1, 508, - 509, 510, -1, 512, 513, 514, 515, 516, 517, -1, - -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, - 18, 19, 20, 21, -1, 505, -1, -1, 508, 509, - 510, -1, 512, 513, 514, 515, 516, 517, 36, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, - -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 505, -1, -1, 508, 509, - 510, -1, 512, 513, 514, 515, 516, 517, -1, -1, - -1, -1, 80, -1, -1, -1, -1, 8, -1, -1, - 11, 177, -1, -1, 15, 16, 17, 18, 19, 20, - 21, -1, -1, -1, -1, -1, -1, -1, 194, -1, - -1, -1, -1, 199, -1, 36, -1, -1, -1, 40, - -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, - -1, -1, 53, -1, -1, -1, 222, 223, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 237, -1, -1, -1, -1, -1, -1, -1, 80, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 172, 8, -1, -1, 11, 177, - -1, -1, 15, 16, 17, 18, 19, 20, 21, 275, - -1, -1, 278, -1, -1, -1, 194, -1, -1, -1, - -1, 199, -1, 36, -1, -1, 292, -1, -1, 295, - -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, - 53, -1, -1, -1, 222, 223, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 237, - -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, - -1, -1, -1, -1, -1, -1, 177, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 194, -1, -1, -1, 275, 199, 8, - 278, -1, 11, -1, -1, -1, 15, 16, 17, 18, - 19, 20, 21, -1, 292, -1, -1, 295, -1, -1, - -1, 222, 223, -1, -1, -1, -1, 36, -1, 395, - -1, -1, -1, -1, -1, -1, 237, 46, -1, -1, - -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 167, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 177, -1, -1, -1, -1, -1, - -1, 80, -1, -1, 275, -1, -1, 278, -1, -1, - -1, 194, -1, -1, -1, -1, 199, -1, -1, -1, - -1, 292, -1, -1, 295, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 222, - 223, -1, -1, -1, -1, -1, -1, 395, -1, -1, - -1, -1, -1, -1, 237, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 505, - -1, -1, 508, 509, 510, -1, 512, 513, 514, 515, - 516, 517, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 275, -1, -1, 278, -1, -1, 177, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 292, - -1, -1, 295, -1, -1, 194, -1, -1, -1, -1, - 199, -1, -1, -1, 395, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 222, 223, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 505, 237, -1, - 508, 509, 510, -1, 512, 513, 514, 515, 516, 517, - -1, -1, -1, -1, -1, -1, 8, -1, -1, 11, - -1, -1, -1, 15, 16, 17, 18, 19, 20, 21, - -1, -1, -1, -1, -1, -1, 275, -1, -1, 278, - -1, -1, -1, -1, 36, -1, -1, -1, 40, -1, - -1, -1, 395, 292, 46, -1, 295, -1, -1, -1, - -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 505, -1, -1, 508, 509, 510, - -1, 512, 513, 514, 515, 516, 517, -1, 80, -1, - -1, -1, -1, -1, -1, -1, 8, -1, -1, 11, - -1, -1, -1, 15, 16, 17, 18, 19, 20, 21, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, - -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 395, -1, -1, -1, - -1, -1, 505, -1, -1, 508, 509, 510, 80, 512, - 513, 514, 515, 516, 517, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8, 177, -1, 11, -1, -1, - 429, 15, 16, 17, 18, 19, 20, 21, -1, -1, - -1, -1, 194, -1, -1, -1, -1, 199, -1, -1, - -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 46, -1, -1, -1, -1, -1, -1, 53, - 222, 223, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 237, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, - -1, -1, -1, -1, -1, 177, 505, -1, -1, 508, - 509, 510, -1, 512, 513, 514, 515, 516, 517, -1, - -1, -1, 194, 275, -1, -1, 278, 199, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 292, -1, -1, 295, -1, -1, -1, -1, -1, -1, - 222, 223, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8, 237, -1, 11, -1, -1, - -1, 15, 16, 17, 18, 19, 20, 21, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 36, 177, -1, -1, -1, -1, -1, -1, - -1, -1, 46, 275, -1, -1, 278, -1, -1, 53, - 194, -1, -1, -1, -1, 199, -1, -1, -1, -1, - 292, -1, -1, 295, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 80, -1, 222, 223, - -1, -1, -1, 395, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 275, -1, -1, 278, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 292, -1, - -1, 295, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 395, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 177, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 194, -1, -1, 505, -1, 199, 508, 509, 510, -1, - 512, 513, 514, 515, 516, 517, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 222, 223, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 395, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 275, -1, 505, 278, -1, 508, 509, 510, -1, - 512, 513, 514, 515, 516, 517, -1, -1, 292, -1, - -1, 295, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 505, -1, -1, 508, 509, 510, -1, 512, 513, - 514, 515, 516, 517, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 395, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3, -1, 5, -1, -1, - -1, 505, -1, -1, 508, 509, 510, -1, 512, 513, - 514, 515, 516, 517, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, -1, -1, -1, -1, -1, 3, 4, 5, 6, + 7, -1, 9, 10, -1, 521, -1, 523, -1, -1, + -1, -1, 528, 529, 530, 531, 23, 24, 25, 26, + 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, + -1, -1, -1, 40, -1, -1, 43, 44, 45, -1, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, -1, 76, + 77, 78, 79, 80, -1, 82, -1, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, + 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, -1, 119, -1, 121, 122, 123, 124, 125, 126, + -1, -1, 129, 130, 131, 132, -1, -1, 135, 136, + 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, + 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, + 167, -1, 169, -1, 171, 172, -1, 174, 175, 176, + 177, 178, 179, 180, 181, -1, 183, 184, 185, 186, + -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, -1, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, -1, 220, -1, 222, 223, 224, 225, 226, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, -1, 290, 291, -1, -1, 294, 295, 296, + -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, -1, -1, -1, -1, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, -1, 333, 334, 335, 336, + 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, -1, -1, + 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, + 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, -1, -1, 421, 422, -1, 424, 425, 426, + 427, 428, 429, 430, -1, 432, 433, 434, -1, -1, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, 453, 454, 455, -1, + -1, 458, 459, 460, 461, -1, 463, 464, 465, 466, + 467, 468, 469, 470, -1, 472, 473, 474, 475, 476, + 477, 478, 479, 480, -1, -1, 483, -1, -1, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, + 8, 9, 10, -1, 521, -1, 523, -1, -1, -1, + -1, 528, 529, 530, 531, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, 40, -1, -1, 43, 44, 45, -1, 47, + 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, + 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, 82, -1, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 118, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, -1, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, 172, -1, 174, 175, 176, 177, + -1, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, -1, -1, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, 236, 237, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, 281, 282, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, -1, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 418, -1, -1, 421, 422, -1, 424, 425, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 448, 449, 450, -1, -1, 453, 454, 455, 456, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, 473, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 502, 503, 504, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 498, 499, 500, 501, 502, 503, 504, 505, 506, -1, + -1, -1, -1, -1, -1, -1, 514, 515, 516, -1, + 3, 4, 5, 521, -1, 523, 9, -1, -1, -1, + 528, 529, 530, 531, -1, -1, -1, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, + 33, 34, -1, -1, -1, 38, -1, -1, -1, -1, + 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, + 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, + 73, 74, -1, 76, 77, 78, 79, 80, -1, 82, + -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, -1, 119, -1, 121, 122, + 123, 124, 125, 126, -1, -1, 129, 130, 131, 132, + -1, -1, 135, 136, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + -1, 164, 165, 166, 167, -1, 169, -1, 171, 172, + -1, 174, 175, 176, 177, 178, 179, 180, 181, -1, + 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, -1, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, -1, 220, -1, 222, + 223, 224, 225, 226, 227, 228, 229, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, 280, 281, -1, + 283, 284, 285, 286, 287, 288, -1, 290, 291, 292, + -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, -1, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, + 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, -1, -1, 421, 422, + -1, 424, 425, 426, 427, 428, 429, 430, -1, 432, + 433, 434, -1, -1, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 453, 454, 455, 456, -1, 458, 459, 460, 461, -1, + 463, 464, 465, 466, 467, 468, 469, 470, -1, 472, + 473, 474, 475, 476, 477, 478, 479, 480, -1, -1, + 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, -1, -1, -1, -1, -1, 3, + -1, 514, 515, 516, -1, -1, 10, -1, 521, -1, + 523, -1, -1, -1, -1, -1, -1, -1, 531, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, 40, -1, -1, 43, + 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 74, -1, 76, 77, 78, 79, 80, -1, 82, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, 172, -1, + 174, 175, 176, 177, 178, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, 223, + 224, 225, 226, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 274, 275, 276, -1, 278, 279, 280, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, 473, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, - 502, 503, 504, 3, -1, -1, -1, -1, -1, -1, + 504, 505, 506, -1, -1, -1, -1, -1, 3, 4, + -1, -1, -1, -1, 9, 10, -1, 521, -1, 523, + -1, -1, -1, -1, 528, 529, 530, 531, 23, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + 45, -1, -1, 48, 49, -1, 51, 52, 53, 54, + 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, + 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, + -1, 76, 77, 78, 79, 80, -1, -1, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, -1, + 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, -1, 119, -1, 121, 122, 123, 124, + 125, 126, -1, -1, 129, 130, 131, 132, -1, -1, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, + 165, 166, 167, -1, 169, -1, 171, -1, -1, -1, + 175, 176, 177, -1, 179, 180, 181, -1, 183, 184, + 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, + -1, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, -1, 209, -1, 211, 212, 213, 214, + 215, 216, 217, 218, -1, 220, -1, 222, -1, -1, + 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, + -1, 236, -1, 238, -1, -1, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, -1, 272, 273, 274, + 275, 276, -1, 278, 279, -1, 281, -1, 283, 284, + 285, 286, 287, 288, -1, 290, 291, -1, -1, 294, + 295, 296, -1, -1, 299, 300, 301, -1, 303, -1, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, -1, -1, -1, -1, 322, 323, 324, + -1, 326, 327, 328, 329, 330, 331, -1, 333, 334, + 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, + 365, 366, -1, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + -1, -1, 387, 388, 389, 390, 391, 392, 393, 394, + 395, -1, -1, 398, 399, 400, 401, -1, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, -1, -1, 421, 422, -1, 424, + -1, 426, 427, 428, 429, 430, -1, 432, 433, 434, + -1, -1, 437, 438, 439, 440, 441, -1, 443, 444, + 445, 446, 447, 448, 449, 450, -1, -1, 453, 454, + 455, -1, -1, 458, 459, 460, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, -1, 472, -1, 474, + 475, 476, 477, 478, 479, 480, -1, -1, 483, -1, + -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + -1, -1, -1, 528, 529, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, -1, 41, -1, -1, 44, 45, -1, -1, + 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, + 58, -1, 60, 61, 62, 63, 64, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, -1, -1, 84, 85, 86, 87, + 88, 89, -1, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + -1, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, 163, 164, 165, 166, 167, + 168, 169, -1, 171, -1, -1, -1, 175, 176, 177, + -1, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, -1, 222, -1, -1, 225, -1, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, -1, + 238, -1, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, -1, 272, 273, 274, 275, 276, -1, + 278, 279, -1, 281, -1, 283, 284, 285, 286, 287, + 288, 289, 290, 291, -1, -1, 294, 295, 296, -1, + 298, 299, 300, 301, -1, 303, -1, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, -1, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, -1, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, -1, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, -1, 424, -1, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, + 448, 449, 450, 451, -1, 453, 454, 455, -1, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, -1, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 3, + -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 524, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 44, 45, -1, -1, 48, 49, -1, 51, 52, 53, + 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, + 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, -1, -1, + -1, 175, 176, 177, -1, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, -1, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, -1, 303, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, -1, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, -1, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, -1, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, + 524, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, 35, 36, -1, 38, -1, + -1, -1, -1, 43, 44, 45, -1, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, + 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, 82, -1, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + -1, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 160, -1, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, 223, 224, 225, 226, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, + 280, 281, -1, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 320, -1, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + -1, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, 456, 457, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, 473, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, 504, 3, -1, 5, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, - 28, 29, -1, 31, 32, 33, -1, -1, -1, 37, - -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - -1, 59, 60, 61, 62, 63, 64, -1, -1, 67, - 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, - 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, -1, 94, 95, 96, 97, - 98, 99, -1, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, - 118, -1, 120, 121, 122, 123, 124, 125, -1, -1, - 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, - 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, -1, 163, 164, 165, 166, -1, - 168, -1, 170, 171, -1, 173, 174, 175, 176, 177, - 178, 179, 180, -1, 182, 183, 184, 185, -1, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, -1, 200, 201, 202, 203, 204, 205, 206, -1, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, -1, -1, 234, 235, 236, 237, - -1, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, - 278, 279, -1, 281, 282, 283, 284, 285, 286, -1, - 288, 289, 290, -1, 292, 293, 294, -1, -1, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, -1, -1, - -1, -1, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, -1, 331, 332, 333, 334, 335, 336, -1, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, -1, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, -1, - -1, 419, 420, -1, 422, 423, 424, 425, 426, 427, - 428, -1, 430, 431, 432, -1, -1, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, -1, -1, 451, 452, 453, 454, -1, 456, 457, - 458, 459, -1, 461, 462, 463, 464, 465, 466, 467, - 468, -1, 470, 471, 472, 473, 474, 475, 476, 477, - 478, -1, -1, 481, -1, -1, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 3, -1, -1, + 500, 501, 502, 503, 504, 505, 506, -1, 3, 509, + 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 523, -1, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, + -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, + 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, + 65, -1, 67, 68, 69, 70, 71, 72, 73, 74, + -1, 76, 77, 78, 79, 80, -1, 82, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, + 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, -1, 119, -1, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, -1, -1, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, + 165, 166, 167, -1, 169, -1, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, -1, 183, 184, + 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, -1, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, -1, 220, -1, 222, 223, 224, + 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, + -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, -1, 278, 279, 280, 281, -1, 283, 284, + 285, 286, 287, 288, -1, 290, 291, -1, 293, 294, + 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, -1, 333, 334, + 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, -1, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, -1, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, -1, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, + -1, -1, 437, 438, 439, 440, 441, -1, 443, 444, + 445, 446, 447, 448, 449, 450, -1, -1, 453, 454, + 455, -1, 457, 458, 459, 460, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, -1, 472, 473, 474, + 475, 476, 477, 478, 479, 480, -1, -1, 483, -1, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, -1, 3, 509, 5, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 523, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, 43, 44, 45, -1, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, + 60, 61, 62, 63, 64, 65, -1, 67, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, 82, -1, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, -1, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, 172, -1, 174, 175, 176, 177, 178, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, 223, 224, 225, 226, 227, 228, 229, + -1, 231, 232, 233, 234, -1, 236, 237, 238, 239, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, + 280, 281, -1, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, 293, 294, 295, 296, -1, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, 425, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, -1, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, 473, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, - 26, 27, 28, 29, -1, 31, 32, 33, 34, 35, - -1, 37, -1, -1, -1, -1, 42, 43, 44, -1, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, - -1, 67, 68, 69, 70, 71, 72, 73, -1, 75, - 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, -1, 94, 95, - 96, 97, 98, 99, -1, 101, 102, 103, 104, 105, + -1, -1, -1, 523, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, 43, 44, 45, + -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, + -1, 67, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, 82, -1, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, - -1, -1, 128, 129, 130, 131, -1, -1, 134, 135, - 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, - 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, -1, 161, -1, 163, 164, 165, - 166, -1, 168, -1, 170, 171, -1, 173, 174, 175, - 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, - -1, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, -1, 200, 201, 202, 203, 204, 205, - 206, -1, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, -1, -1, 234, 235, - 236, 237, -1, 239, 240, 241, 242, 243, 244, 245, + 116, 117, -1, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, 172, -1, 174, 175, + 176, 177, 178, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, 223, 224, 225, + 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, - 276, 277, 278, 279, -1, 281, 282, 283, 284, 285, - 286, -1, 288, 289, -1, -1, 292, 293, 294, -1, - -1, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, -1, 278, 279, 280, 281, -1, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, 293, 294, 295, + 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - -1, -1, -1, -1, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, -1, 331, 332, 333, 334, 335, - 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, + 316, 317, -1, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, -1, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, -1, 401, 402, 403, 404, 405, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, -1, -1, 419, 420, -1, 422, 423, 424, 425, - 426, 427, 428, -1, 430, 431, 432, -1, -1, 435, - 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, - 446, 447, 448, -1, -1, 451, 452, 453, 454, -1, - 456, 457, 458, 459, -1, 461, 462, 463, 464, 465, - 466, 467, 468, -1, 470, 471, 472, 473, 474, 475, - 476, 477, 478, -1, -1, 481, -1, -1, 484, 485, + 416, 417, 418, -1, -1, 421, 422, -1, 424, 425, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, 439, 440, 441, -1, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + -1, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, 473, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 502, 503, 504, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, - 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, - -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, - 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, 71, 72, 73, - -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, - 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, - 124, 125, -1, -1, 128, 129, 130, 131, -1, -1, - 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, - 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, -1, 161, -1, 163, - 164, 165, 166, -1, 168, -1, 170, 171, -1, 173, - 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, - 184, 185, -1, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, -1, 200, 201, 202, 203, - 204, 205, 206, -1, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, - 234, 235, 236, 237, -1, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, -1, 276, 277, 278, 279, -1, 281, 282, 283, - 284, 285, 286, -1, 288, 289, -1, -1, 292, 293, - 294, -1, -1, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, -1, -1, -1, -1, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, -1, 331, 332, 333, - 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, -1, - -1, 385, 386, 387, 388, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, -1, -1, 419, 420, -1, 422, 423, - 424, 425, 426, 427, 428, -1, 430, 431, 432, -1, - -1, 435, 436, 437, 438, 439, -1, 441, 442, 443, - 444, 445, 446, 447, 448, -1, -1, 451, 452, 453, - -1, -1, 456, 457, 458, 459, -1, 461, 462, 463, - 464, 465, 466, 467, 468, -1, 470, 471, 472, 473, - 474, 475, 476, 477, 478, -1, -1, 481, -1, -1, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, - 32, 33, -1, -1, -1, -1, -1, -1, -1, -1, - 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, - 62, 63, 64, -1, -1, 67, 68, 69, 70, 71, - 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, - -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, -1, 94, 95, 96, 97, 98, 99, -1, 101, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 523, -1, -1, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, + 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, 80, -1, + 82, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, - 122, 123, 124, 125, -1, -1, 128, 129, 130, 131, - -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, - 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, -1, 161, - -1, 163, 164, 165, 166, -1, 168, -1, 170, 171, - -1, 173, 174, 175, 176, 177, 178, 179, 180, -1, - 182, 183, 184, 185, -1, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, -1, 200, 201, - 202, 203, 204, 205, 206, -1, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, -1, 219, -1, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - -1, -1, 234, 235, 236, 237, -1, 239, 240, 241, + 112, 113, 114, 115, 116, 117, -1, 119, -1, 121, + 122, 123, 124, 125, 126, -1, -1, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + 172, -1, 174, 175, 176, 177, 178, 179, 180, 181, + -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, + 222, 223, 224, 225, 226, 227, 228, 229, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, -1, 276, 277, 278, 279, -1, 281, - 282, 283, 284, 285, 286, -1, 288, 289, -1, -1, - 292, 293, 294, -1, -1, 297, 298, 299, 300, 301, + 272, 273, 274, 275, 276, -1, 278, 279, 280, 281, + -1, 283, 284, 285, 286, 287, 288, -1, 290, 291, + -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, -1, -1, -1, -1, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, -1, 331, - 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, -1, 349, 350, 351, + 312, 313, 314, 315, 316, 317, -1, -1, -1, -1, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, -1, -1, 385, 386, 387, 388, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, -1, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, -1, -1, 419, 420, -1, - 422, 423, 424, 425, 426, 427, 428, -1, 430, 431, - 432, -1, -1, 435, 436, 437, 438, 439, -1, 441, - 442, 443, 444, 445, 446, 447, 448, -1, -1, 451, - 452, 453, -1, -1, 456, 457, 458, 459, -1, 461, - 462, 463, 464, 465, 466, 467, 468, -1, 470, 471, - 472, 473, 474, 475, 476, 477, 478, -1, -1, 481, - -1, -1, 484, 485, 486, 487, 488, 489, 490, 491, + 382, 383, 384, -1, -1, 387, 388, 389, 390, 391, + 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, -1, -1, 421, + 422, -1, 424, 425, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, + -1, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 454, 455, -1, -1, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 472, 473, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, - 502, 503, 504, 3, -1, -1, -1, -1, -1, -1, + 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 523, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, 43, 44, 45, -1, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, -1, 60, 61, 62, 63, 64, 65, -1, 67, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, 82, -1, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + -1, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, 172, -1, 174, 175, 176, 177, + 178, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, 223, 224, 225, 226, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, + 278, 279, 280, 281, -1, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, -1, 424, 425, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, -1, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, 473, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 523, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 44, 45, -1, -1, 48, 49, -1, 51, 52, 53, + 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, + 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, -1, 173, + -1, 175, 176, 177, -1, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, -1, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, -1, 303, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, + 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, -1, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, -1, 421, 422, 423, + 424, -1, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, 457, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, -1, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, -1, 3, 509, 5, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, + -1, -1, -1, -1, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 44, 45, -1, -1, 48, + 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, + -1, 60, 61, 62, 63, 64, 65, -1, -1, 68, + 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, + 79, 80, -1, -1, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, -1, 95, 96, 97, 98, + 99, 100, -1, -1, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, + 119, -1, 121, 122, 123, 124, 125, 126, -1, -1, + 129, 130, 131, 132, -1, -1, 135, 136, 137, 138, + 139, -1, 141, 142, 143, -1, 145, 146, 147, -1, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, -1, 162, -1, 164, 165, 166, 167, -1, + 169, -1, 171, -1, 173, -1, 175, 176, 177, -1, + 179, 180, 181, -1, 183, 184, 185, 186, -1, 188, + 189, 190, 191, 192, 193, 194, -1, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, + 209, -1, 211, 212, 213, 214, 215, 216, 217, 218, + -1, 220, -1, 222, -1, -1, 225, -1, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, -1, 238, + -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, -1, 272, 273, 274, 275, 276, -1, 278, + 279, -1, 281, -1, 283, 284, 285, 286, 287, 288, + -1, 290, 291, -1, -1, 294, 295, 296, -1, -1, + 299, 300, 301, -1, 303, -1, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, -1, 322, 323, 324, -1, 326, 327, 328, + 329, 330, 331, -1, 333, 334, 335, 336, 337, 338, + -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, -1, 365, 366, -1, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, -1, 387, 388, + 389, 390, 391, 392, 393, 394, 395, -1, -1, 398, + 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + -1, -1, 421, 422, 423, 424, -1, 426, 427, 428, + 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, + 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, + 449, 450, -1, -1, 453, 454, 455, -1, 457, 458, + 459, 460, 461, -1, 463, 464, 465, 466, 467, 468, + 469, 470, -1, 472, -1, 474, 475, 476, 477, 478, + 479, 480, -1, -1, 483, -1, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, -1, 3, + 509, 5, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 523, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 44, 45, -1, -1, 48, 49, -1, 51, 52, 53, + 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, + 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, -1, 173, + -1, 175, 176, 177, -1, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, -1, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, -1, 303, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, + 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, -1, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, 423, + 424, -1, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, 457, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, -1, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, -1, 3, 509, 5, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, + -1, -1, -1, -1, 23, 24, 25, 26, 27, 28, + 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 44, 45, -1, -1, 48, + 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, + -1, 60, 61, 62, 63, 64, 65, -1, -1, 68, + 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, + 79, 80, -1, -1, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, -1, 95, 96, 97, 98, + 99, 100, -1, -1, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, + 119, -1, 121, 122, 123, 124, 125, 126, -1, -1, + 129, 130, 131, 132, -1, -1, 135, 136, 137, 138, + 139, -1, 141, 142, 143, -1, 145, 146, 147, -1, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, -1, 162, -1, 164, 165, 166, 167, -1, + 169, -1, 171, -1, -1, -1, 175, 176, 177, -1, + 179, 180, 181, -1, 183, 184, 185, 186, -1, 188, + 189, 190, 191, 192, 193, 194, -1, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, + 209, -1, 211, 212, 213, 214, 215, 216, 217, 218, + -1, 220, -1, 222, -1, -1, 225, -1, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, -1, 238, + -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, -1, 272, 273, 274, 275, 276, -1, 278, + 279, -1, 281, -1, 283, 284, 285, 286, 287, 288, + -1, 290, 291, -1, -1, 294, 295, 296, -1, -1, + 299, 300, 301, -1, 303, -1, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, -1, + -1, -1, -1, 322, 323, 324, -1, 326, 327, 328, + 329, 330, 331, -1, 333, 334, 335, 336, 337, 338, + -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, -1, 365, 366, -1, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, -1, -1, 387, 388, + 389, 390, 391, 392, 393, 394, 395, -1, -1, 398, + 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + -1, -1, 421, 422, -1, 424, -1, 426, 427, 428, + 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, + 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, + 449, 450, -1, -1, 453, 454, 455, -1, -1, 458, + 459, 460, 461, -1, 463, 464, 465, 466, 467, 468, + 469, 470, -1, 472, -1, 474, 475, 476, 477, 478, + 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 3, -1, + 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 523, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + 45, -1, -1, 48, 49, -1, 51, 52, 53, 54, + 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, + 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, + -1, 76, 77, 78, 79, 80, -1, -1, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, -1, + 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, -1, 119, -1, 121, 122, 123, 124, + 125, 126, -1, -1, 129, 130, 131, 132, -1, -1, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, + 165, 166, 167, -1, 169, -1, 171, -1, -1, -1, + 175, 176, 177, -1, 179, 180, 181, -1, 183, 184, + 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, + -1, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, -1, 209, -1, 211, 212, 213, 214, + 215, 216, 217, 218, -1, 220, -1, 222, -1, -1, + 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, + -1, 236, -1, 238, -1, -1, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, -1, 272, 273, 274, + 275, 276, -1, 278, 279, -1, 281, -1, 283, 284, + 285, 286, 287, 288, -1, 290, 291, -1, -1, 294, + 295, 296, -1, -1, 299, 300, 301, -1, 303, -1, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, -1, -1, -1, -1, 322, 323, 324, + -1, 326, 327, 328, 329, 330, 331, -1, 333, 334, + 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, + 365, 366, -1, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + -1, -1, 387, 388, 389, 390, 391, 392, 393, 394, + 395, -1, -1, 398, 399, 400, 401, -1, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, -1, -1, 421, 422, -1, 424, + -1, 426, 427, 428, 429, 430, -1, 432, 433, 434, + -1, -1, 437, 438, 439, 440, 441, -1, 443, 444, + 445, 446, 447, 448, 449, 450, -1, -1, 453, 454, + 455, -1, -1, 458, 459, 460, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, -1, 472, -1, 474, + 475, 476, 477, 478, 479, 480, -1, -1, 483, -1, + -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 3, -1, 5, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 523, -1, + -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, + -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 44, 45, -1, -1, 48, 49, -1, + 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, + 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, + 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, + -1, -1, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, + -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, -1, 119, -1, + 121, 122, 123, 124, 125, 126, -1, -1, 129, 130, + 131, 132, -1, -1, 135, 136, 137, 138, 139, -1, + 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + -1, 162, -1, 164, 165, 166, 167, -1, 169, -1, + 171, -1, -1, -1, 175, 176, 177, -1, 179, 180, + 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, + 191, 192, 193, 194, -1, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, -1, 209, -1, + 211, 212, 213, 214, 215, 216, 217, 218, -1, 220, + -1, 222, -1, -1, 225, -1, 227, 228, 229, -1, + 231, 232, 233, -1, -1, 236, -1, 238, -1, -1, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, + 281, -1, 283, 284, 285, 286, 287, 288, -1, 290, + 291, -1, -1, 294, 295, 296, -1, -1, 299, 300, + 301, -1, 303, -1, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, -1, -1, -1, + -1, 322, 323, 324, -1, 326, 327, 328, 329, 330, + 331, -1, 333, 334, 335, 336, 337, 338, -1, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, -1, 365, 366, -1, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, -1, -1, 387, 388, 389, 390, + 391, 392, 393, 394, 395, -1, -1, 398, 399, 400, + 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, -1, + 421, 422, -1, 424, -1, 426, 427, 428, 429, 430, + -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, + 441, -1, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 453, 454, 455, -1, -1, 458, 459, 460, + 461, -1, 463, 464, 465, 466, 467, 468, 469, 470, + -1, 472, -1, 474, 475, 476, 477, 478, 479, 480, + -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 3, -1, 5, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 523, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 44, 45, -1, + -1, 48, 49, -1, 51, 52, 53, 54, 55, -1, + 57, 58, -1, 60, 61, 62, 63, 64, 65, -1, + -1, 68, 69, 70, 71, 72, 73, 74, -1, 76, + 77, 78, 79, 80, -1, -1, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, -1, 95, 96, + 97, 98, 99, 100, -1, -1, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, -1, 119, -1, 121, 122, 123, 124, 125, 126, + -1, -1, 129, 130, 131, 132, -1, -1, 135, 136, + 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, + 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, + 167, -1, 169, -1, 171, -1, -1, -1, 175, 176, + 177, -1, 179, 180, 181, -1, 183, 184, 185, 186, + -1, 188, 189, 190, 191, 192, 193, 194, -1, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, -1, 209, -1, 211, 212, 213, 214, 215, 216, + 217, 218, -1, 220, -1, 222, -1, -1, 225, -1, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + -1, 238, -1, -1, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, -1, 272, 273, 274, 275, 276, + -1, 278, 279, -1, 281, -1, 283, 284, 285, 286, + 287, 288, -1, 290, 291, -1, -1, 294, 295, 296, + -1, -1, 299, 300, 301, -1, 303, -1, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, -1, -1, -1, -1, 322, 323, 324, -1, 326, + 327, 328, 329, 330, 331, -1, 333, 334, 335, 336, + 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, + -1, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, -1, -1, + 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, + -1, 398, 399, 400, 401, -1, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, -1, -1, 421, 422, -1, 424, -1, 426, + 427, 428, 429, 430, -1, 432, 433, 434, -1, -1, + 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, 453, 454, 455, -1, + -1, 458, 459, 460, 461, -1, 463, 464, 465, 466, + 467, 468, 469, 470, -1, 472, -1, 474, 475, 476, + 477, 478, 479, 480, -1, -1, 483, -1, -1, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 523, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, + 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 44, 45, -1, -1, 48, 49, -1, 51, 52, + 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, + 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, + 73, 74, -1, 76, 77, 78, 79, 80, -1, -1, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, -1, 119, -1, 121, 122, + 123, 124, 125, 126, -1, -1, 129, 130, 131, 132, + -1, -1, 135, 136, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, + -1, 164, 165, 166, 167, -1, 169, -1, 171, -1, + -1, -1, 175, 176, 177, -1, 179, 180, 181, -1, + 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, + 193, 194, -1, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, -1, 209, -1, 211, 212, + 213, 214, 215, 216, 217, 218, -1, 220, -1, 222, + -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, + 233, -1, -1, 236, -1, 238, -1, -1, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, -1, 272, + 273, 274, 275, 276, -1, 278, 279, -1, 281, -1, + 283, 284, 285, 286, 287, 288, -1, 290, 291, -1, + -1, 294, 295, 296, -1, -1, 299, 300, 301, -1, + 303, -1, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, -1, -1, -1, -1, 322, + 323, 324, -1, 326, 327, 328, 329, 330, 331, -1, + 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, -1, 365, 366, -1, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, -1, -1, 387, 388, 389, 390, 391, 392, + 393, 394, 395, -1, -1, 398, 399, 400, 401, -1, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, -1, -1, 421, 422, + -1, 424, -1, 426, 427, 428, 429, 430, -1, 432, + 433, 434, -1, -1, 437, 438, 439, 440, 441, -1, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 453, 454, 455, -1, -1, 458, 459, 460, 461, -1, + 463, 464, 465, 466, 467, 468, 469, 470, -1, 472, + -1, 474, 475, 476, 477, 478, 479, 480, -1, -1, + 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 3, -1, 5, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 523, -1, -1, -1, 23, 24, 25, 26, 27, 28, + 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 44, 45, -1, -1, 48, + 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, + -1, 60, 61, 62, 63, 64, 65, -1, -1, 68, + 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, + 79, 80, -1, -1, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, -1, 95, 96, 97, 98, + 99, 100, -1, -1, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, + 119, -1, 121, 122, 123, 124, 125, 126, -1, -1, + 129, 130, 131, 132, -1, -1, 135, 136, 137, 138, + 139, -1, 141, 142, 143, -1, 145, 146, 147, -1, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, -1, 162, -1, 164, 165, 166, 167, -1, + 169, -1, 171, -1, -1, -1, 175, 176, 177, -1, + 179, 180, 181, -1, 183, 184, 185, 186, -1, 188, + 189, 190, 191, 192, 193, 194, -1, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, + 209, -1, 211, 212, 213, 214, 215, 216, 217, 218, + -1, 220, -1, 222, -1, -1, 225, -1, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, -1, 238, + -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, -1, 272, 273, 274, 275, 276, -1, 278, + 279, -1, 281, -1, 283, 284, 285, 286, 287, 288, + -1, 290, 291, -1, -1, 294, 295, 296, -1, -1, + 299, 300, 301, -1, 303, -1, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, -1, + -1, -1, -1, 322, 323, 324, -1, 326, 327, 328, + 329, 330, 331, -1, 333, 334, 335, 336, 337, 338, + -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, -1, 365, 366, -1, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, -1, -1, 387, 388, + 389, 390, 391, 392, 393, 394, 395, -1, -1, 398, + 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + -1, -1, 421, 422, -1, 424, -1, 426, 427, 428, + 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, + 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, + 449, 450, -1, -1, 453, 454, 455, -1, -1, 458, + 459, 460, 461, -1, 463, 464, 465, 466, 467, 468, + 469, 470, -1, 472, -1, 474, 475, 476, 477, 478, + 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 3, -1, + 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 523, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + 45, -1, -1, 48, 49, -1, 51, 52, 53, 54, + 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, + 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, + -1, 76, 77, 78, 79, 80, -1, -1, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, -1, + 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, -1, 119, -1, 121, 122, 123, 124, + 125, 126, -1, -1, 129, 130, 131, 132, -1, -1, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, + 165, 166, 167, -1, 169, -1, 171, -1, -1, -1, + 175, 176, 177, -1, 179, 180, 181, -1, 183, 184, + 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, + -1, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, -1, 209, -1, 211, 212, 213, 214, + 215, 216, 217, 218, -1, 220, -1, 222, -1, -1, + 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, + -1, 236, -1, 238, -1, -1, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, -1, 272, 273, 274, + 275, 276, -1, 278, 279, -1, 281, -1, 283, 284, + 285, 286, 287, 288, -1, 290, 291, -1, -1, 294, + 295, 296, -1, -1, 299, 300, 301, -1, 303, -1, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, -1, -1, -1, -1, 322, 323, 324, + -1, 326, 327, 328, 329, 330, 331, -1, 333, 334, + 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, + 365, 366, -1, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + -1, -1, 387, 388, 389, 390, 391, 392, 393, 394, + 395, -1, -1, 398, 399, 400, 401, -1, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, -1, -1, 421, 422, -1, 424, + -1, 426, 427, 428, 429, 430, -1, 432, 433, 434, + -1, -1, 437, 438, 439, 440, 441, -1, 443, 444, + 445, 446, 447, 448, 449, 450, -1, -1, 453, 454, + 455, -1, -1, 458, 459, 460, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, -1, 472, -1, 474, + 475, 476, 477, 478, 479, 480, -1, -1, 483, -1, + -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 3, -1, 5, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 523, -1, + -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, + -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 44, 45, -1, -1, 48, 49, -1, + 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, + 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, + 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, + -1, -1, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, + -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, -1, 119, -1, + 121, 122, 123, 124, 125, 126, -1, -1, 129, 130, + 131, 132, -1, -1, 135, 136, 137, 138, 139, -1, + 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + -1, 162, -1, 164, 165, 166, 167, -1, 169, -1, + 171, -1, -1, -1, 175, 176, 177, -1, 179, 180, + 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, + 191, 192, 193, 194, -1, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, -1, 209, -1, + 211, 212, 213, 214, 215, 216, 217, 218, -1, 220, + -1, 222, -1, -1, 225, -1, 227, 228, 229, -1, + 231, 232, 233, -1, -1, 236, -1, 238, -1, -1, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, + 281, -1, 283, 284, 285, 286, 287, 288, -1, 290, + 291, -1, -1, 294, 295, 296, -1, -1, 299, 300, + 301, -1, 303, -1, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, -1, -1, -1, + -1, 322, 323, 324, -1, 326, 327, 328, 329, 330, + 331, -1, 333, 334, 335, 336, 337, 338, -1, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, -1, 365, 366, -1, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, -1, -1, 387, 388, 389, 390, + 391, 392, 393, 394, 395, -1, -1, 398, 399, 400, + 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, -1, + 421, 422, -1, 424, -1, 426, 427, 428, 429, 430, + -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, + 441, -1, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 453, 454, 455, -1, -1, 458, 459, 460, + 461, -1, 463, 464, 465, 466, 467, 468, 469, 470, + -1, 472, -1, 474, 475, 476, 477, 478, 479, 480, + -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 523, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 44, 45, -1, + -1, 48, 49, -1, 51, 52, 53, 54, 55, -1, + 57, 58, -1, 60, 61, 62, 63, 64, 65, -1, + -1, 68, 69, 70, 71, 72, 73, 74, -1, 76, + 77, 78, 79, 80, -1, -1, -1, 84, 85, 86, + 87, 88, 89, -1, 91, 92, 93, -1, 95, 96, + 97, 98, 99, 100, -1, -1, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, -1, 119, -1, 121, 122, 123, 124, 125, 126, + -1, -1, 129, 130, 131, 132, -1, -1, 135, 136, + 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, + 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, + 167, -1, 169, -1, 171, -1, -1, -1, 175, 176, + 177, -1, 179, 180, 181, -1, 183, 184, 185, 186, + -1, 188, 189, 190, 191, 192, 193, 194, -1, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, -1, 209, -1, 211, 212, 213, 214, 215, 216, + 217, 218, -1, 220, -1, 222, -1, -1, 225, -1, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + -1, 238, -1, -1, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, -1, 272, 273, 274, 275, 276, + -1, 278, 279, -1, 281, -1, 283, 284, 285, 286, + 287, 288, -1, 290, 291, -1, -1, 294, 295, 296, + -1, -1, 299, 300, 301, -1, 303, -1, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, -1, -1, -1, -1, 322, 323, 324, -1, 326, + 327, 328, 329, 330, 331, -1, 333, 334, 335, 336, + 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, + -1, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, -1, -1, + 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, + -1, 398, 399, 400, 401, -1, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, -1, -1, 421, 422, -1, 424, -1, 426, + 427, 428, 429, 430, -1, 432, 433, 434, -1, -1, + 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, 453, 454, 455, -1, + -1, 458, 459, 460, 461, -1, 463, 464, 465, 466, + 467, 468, 469, 470, -1, 472, -1, 474, 475, 476, + 477, 478, 479, 480, -1, -1, 483, -1, -1, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 523, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, + 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 44, 45, -1, -1, 48, 49, -1, 51, 52, + 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, + 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, + 73, 74, -1, 76, 77, 78, 79, 80, -1, -1, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, -1, 119, -1, 121, 122, + 123, 124, 125, 126, -1, -1, 129, 130, 131, 132, + -1, -1, 135, 136, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, + -1, 164, 165, 166, 167, -1, 169, -1, 171, -1, + -1, -1, 175, 176, 177, -1, 179, 180, 181, -1, + 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, + 193, 194, -1, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, -1, 209, -1, 211, 212, + 213, 214, 215, 216, 217, 218, -1, 220, -1, 222, + -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, + 233, -1, -1, 236, -1, 238, -1, -1, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, -1, 272, + 273, 274, 275, 276, -1, 278, 279, -1, 281, -1, + 283, 284, 285, 286, 287, 288, -1, 290, 291, -1, + -1, 294, 295, 296, -1, -1, 299, 300, 301, -1, + 303, -1, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, -1, -1, -1, -1, 322, + 323, 324, -1, 326, 327, 328, 329, 330, 331, -1, + 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, -1, 365, 366, -1, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, -1, -1, 387, 388, 389, 390, 391, 392, + 393, 394, 395, -1, -1, 398, 399, 400, 401, -1, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, -1, -1, 421, 422, + -1, 424, -1, 426, 427, 428, 429, 430, -1, 432, + 433, 434, -1, -1, 437, 438, 439, 440, 441, -1, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 453, 454, 455, -1, -1, 458, 459, 460, 461, -1, + 463, 464, 465, 466, 467, 468, 469, 470, -1, 472, + -1, 474, 475, 476, 477, 478, 479, 480, -1, -1, + 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 3, 4, 5, -1, -1, 8, + 9, -1, -1, -1, -1, -1, 15, 16, -1, -1, + 523, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, -1, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, -1, 154, 155, 156, 157, 158, + 159, -1, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, -1, -1, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, -1, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, -1, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, -1, 302, 303, 304, -1, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, -1, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, -1, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + -1, 440, -1, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, -1, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 490, 491, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 503, 504, 505, 506, -1, 3, + -1, 510, 511, 512, 8, 514, 515, 516, 517, 518, + 519, 15, 16, -1, -1, -1, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 44, 45, -1, -1, 48, 49, -1, 51, 52, 53, + 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, + 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, -1, -1, + -1, 175, 176, 177, -1, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, -1, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, -1, 303, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, -1, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, -1, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, -1, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, -1, -1, -1, 510, 511, 512, -1, + 514, 515, 516, 517, 518, 519, 8, -1, -1, 11, + -1, -1, -1, 15, 16, 17, 18, -1, 20, 21, + 22, -1, -1, -1, 8, -1, -1, 11, -1, -1, + -1, 15, 16, 17, 18, 37, 20, 21, 22, -1, + -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, + -1, -1, 54, 37, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, + 54, -1, -1, 8, -1, -1, 11, -1, -1, 81, + 15, 16, 17, 18, -1, 20, 21, 22, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, + -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 47, 8, -1, -1, 11, -1, -1, 54, + 15, 16, 17, 18, -1, 20, 21, 22, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 37, -1, -1, -1, 81, -1, -1, -1, + -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, + 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, + 18, -1, 20, 21, 22, -1, 178, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 81, -1, -1, 37, + -1, -1, -1, 195, 178, -1, -1, -1, 200, 47, + -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, + -1, 195, -1, -1, -1, -1, 200, -1, -1, -1, + -1, 223, 224, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 81, -1, -1, -1, 239, -1, 223, + 224, -1, -1, 178, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 239, -1, -1, -1, -1, + 195, -1, -1, -1, -1, 200, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 277, -1, -1, 280, -1, + -1, -1, -1, 178, -1, -1, -1, -1, 223, 224, + -1, -1, 294, 277, -1, 297, 280, -1, -1, -1, + 195, -1, -1, -1, 239, 200, -1, -1, -1, -1, + 294, -1, -1, 297, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 223, 224, + 178, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 277, -1, 239, 280, -1, 195, -1, -1, + -1, -1, 200, -1, -1, -1, -1, -1, -1, 294, + -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 223, 224, -1, -1, -1, + -1, -1, 277, -1, -1, 280, -1, -1, -1, -1, + -1, 239, -1, -1, -1, 397, -1, -1, -1, 294, + -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 397, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 277, + -1, -1, 280, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 294, -1, -1, 297, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 397, -1, -1, 8, -1, -1, 11, -1, + -1, -1, 15, 16, 17, 18, -1, 20, 21, 22, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, + -1, -1, 397, -1, 47, 507, -1, -1, 510, 511, + 512, 54, 514, 515, 516, 517, 518, 519, -1, -1, + -1, -1, 524, 507, -1, -1, 510, 511, 512, -1, + 514, 515, 516, 517, 518, 519, -1, -1, 81, -1, + 524, -1, -1, -1, -1, -1, -1, -1, -1, 397, + -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, + 11, -1, -1, -1, 15, 16, 17, 18, -1, 20, + 21, 22, 507, -1, -1, 510, 511, 512, -1, 514, + 515, 516, 517, 518, 519, -1, 37, -1, -1, 524, + -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, + -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, + -1, -1, 507, -1, -1, 510, 511, 512, -1, 514, + 515, 516, 517, 518, 519, -1, -1, -1, -1, 524, + 81, -1, -1, -1, -1, 178, 8, -1, -1, 11, + -1, -1, -1, 15, 16, 17, 18, -1, 20, 21, + 22, -1, 195, -1, -1, -1, -1, 200, -1, 507, + -1, -1, 510, 511, 512, 37, 514, 515, 516, 517, + 518, 519, -1, -1, -1, 47, 524, -1, -1, -1, + 223, 224, 54, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 239, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, + -1, 8, -1, -1, 11, -1, -1, -1, 15, 16, + 17, 18, -1, 20, 21, 22, -1, 178, -1, -1, + -1, -1, -1, -1, 277, -1, -1, 280, -1, -1, + 37, -1, -1, -1, 195, -1, -1, -1, -1, 200, + 47, 294, -1, -1, 297, -1, -1, 54, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 223, 224, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 81, -1, -1, -1, 239, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 178, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 195, -1, -1, 277, -1, 200, 280, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 294, -1, -1, 297, -1, -1, -1, + -1, 223, 224, -1, 397, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 8, -1, 239, 11, -1, + -1, -1, 15, 16, 17, 18, -1, 20, 21, 22, + -1, 178, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 37, -1, -1, -1, 195, -1, + -1, -1, -1, 200, 47, 277, -1, -1, 280, -1, + -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 294, -1, -1, 297, 223, 224, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, + -1, -1, 239, -1, -1, -1, 397, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 507, -1, -1, 510, 511, 512, + -1, 514, 515, 516, 517, 518, 519, -1, -1, -1, + 277, 524, -1, 280, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 294, -1, -1, + 297, -1, -1, -1, -1, -1, -1, -1, -1, 8, + -1, -1, 11, -1, -1, -1, 15, 16, 17, 18, + -1, 20, 21, 22, -1, 397, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 178, -1, -1, 37, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, + -1, -1, 195, -1, -1, 54, 507, 200, -1, 510, + 511, 512, -1, 514, 515, 516, 517, 518, 519, -1, + -1, -1, -1, 524, -1, -1, 8, -1, -1, 11, + 223, 224, 81, 15, 16, 17, 18, -1, 20, 21, + 22, -1, -1, -1, -1, -1, 239, -1, -1, -1, + 397, -1, -1, -1, -1, 37, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, + -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 277, 507, -1, 280, 510, 511, + 512, -1, 514, 515, 516, 517, 518, 519, -1, 81, + -1, 294, 524, -1, 297, -1, -1, -1, -1, -1, + -1, -1, -1, 8, -1, -1, 11, -1, -1, -1, + 15, 16, 17, 18, -1, 20, 21, 22, -1, 178, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 37, -1, -1, -1, 195, -1, -1, -1, + -1, 200, 47, -1, -1, -1, -1, -1, -1, 54, + 507, -1, -1, 510, 511, 512, -1, 514, 515, 516, + 517, 518, 519, -1, 223, 224, -1, 524, -1, -1, + -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, + 239, -1, -1, -1, -1, -1, 178, -1, -1, -1, + -1, -1, -1, -1, 397, -1, -1, -1, -1, -1, + -1, -1, -1, 195, -1, -1, -1, -1, 200, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 277, -1, + -1, 280, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 223, 224, -1, -1, 294, -1, -1, 297, -1, + -1, -1, -1, -1, -1, -1, -1, 239, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 178, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 277, -1, -1, 280, -1, + 195, -1, -1, -1, -1, 200, -1, -1, -1, -1, + -1, -1, 294, -1, 507, 297, -1, 510, 511, 512, + -1, 514, 515, 516, 517, 518, 519, -1, 223, 224, + -1, 524, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 239, -1, -1, -1, 397, -1, + -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, + 11, -1, -1, -1, 15, 16, 17, 18, -1, 20, + 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 277, -1, -1, 280, 37, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 47, -1, -1, 294, + -1, -1, 297, 54, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 397, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 8, -1, -1, 11, -1, -1, -1, + 15, 16, 17, 18, -1, 20, 21, 22, 507, -1, + -1, 510, 511, 512, -1, 514, 515, 516, 517, 518, + 519, -1, 37, -1, -1, 524, -1, -1, -1, -1, + -1, -1, 47, -1, -1, 8, -1, -1, 11, 54, + -1, -1, 15, 16, 17, 18, -1, 20, 21, 22, + -1, -1, 397, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 37, -1, 81, -1, -1, -1, + -1, -1, -1, -1, 47, 507, -1, 178, 510, 511, + 512, 54, 514, 515, 516, 517, 518, 519, -1, -1, + -1, -1, 524, -1, 195, -1, -1, -1, -1, 200, + -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 223, 224, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 239, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 507, 178, -1, 510, 511, 512, -1, 514, + 515, 516, 517, 518, 519, -1, 277, 522, -1, 280, + 195, -1, -1, -1, -1, 200, -1, -1, -1, -1, + -1, -1, -1, 294, -1, -1, 297, -1, -1, -1, + -1, -1, -1, -1, -1, 178, -1, -1, 223, 224, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 195, -1, 239, -1, -1, 200, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 223, 224, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 277, -1, -1, 280, 239, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, + -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 397, -1, -1, -1, + -1, -1, -1, -1, 277, -1, -1, 280, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 294, -1, -1, 297, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 397, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 507, -1, -1, 510, + 511, 512, -1, 514, 515, 516, 517, 518, 519, -1, + -1, 522, -1, -1, 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, - -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 43, 44, -1, -1, 47, 48, -1, - 50, 51, 52, 53, 54, -1, 56, 57, -1, 59, - 60, 61, 62, 63, 64, -1, -1, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - -1, -1, 82, 83, 84, 85, 86, 87, 88, -1, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, - 120, 121, 122, 123, 124, 125, -1, -1, 128, 129, - 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, - 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - -1, 161, -1, 163, 164, 165, 166, -1, 168, 169, - 170, -1, -1, -1, 174, 175, 176, -1, 178, 179, - 180, -1, 182, 183, 184, 185, -1, 187, 188, 189, - 190, 191, 192, 193, -1, 195, 196, 197, 198, -1, - 200, 201, 202, 203, 204, 205, 206, -1, 208, -1, - 210, 211, 212, 213, 214, 215, 216, 217, -1, 219, - -1, 221, -1, -1, 224, -1, 226, 227, 228, 229, - 230, 231, -1, -1, 234, -1, 236, -1, -1, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, -1, - 270, 271, 272, 273, 274, -1, 276, 277, -1, 279, - -1, 281, 282, 283, 284, 285, 286, -1, 288, 289, - -1, -1, 292, 293, 294, -1, -1, 297, 298, 299, - -1, 301, -1, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, -1, -1, -1, -1, - 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, -1, 363, 364, -1, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, -1, -1, 385, 386, 387, 388, 389, - 390, 391, 392, 393, -1, -1, 396, 397, 398, 399, - -1, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, -1, -1, 419, - 420, -1, 422, -1, 424, 425, 426, 427, 428, -1, - 430, 431, 432, -1, -1, 435, 436, 437, 438, 439, - -1, 441, 442, 443, 444, 445, 446, 447, 448, -1, - 450, 451, 452, 453, -1, -1, 456, 457, 458, 459, - -1, 461, 462, 463, 464, 465, 466, 467, 468, -1, - 470, -1, 472, 473, 474, 475, 476, 477, 478, -1, - -1, 481, -1, -1, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, 504, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, - 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 43, 44, -1, -1, 47, - 48, -1, 50, 51, 52, 53, 54, -1, 56, 57, - -1, 59, 60, 61, 62, 63, 64, -1, -1, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, - 88, -1, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, - 118, -1, 120, 121, 122, 123, 124, 125, -1, -1, - 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, - 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, -1, 161, -1, 163, 164, 165, 166, -1, - 168, 169, 170, -1, -1, -1, 174, 175, 176, -1, - 178, 179, 180, -1, 182, 183, 184, 185, -1, 187, - 188, 189, 190, 191, 192, 193, -1, 195, 196, 197, - 198, -1, 200, 201, 202, 203, 204, 205, 206, -1, - 208, -1, 210, 211, 212, 213, 214, 215, 216, 217, - -1, 219, -1, 221, -1, -1, 224, -1, 226, 227, - 228, 229, 230, 231, -1, -1, 234, -1, 236, 237, - -1, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, -1, 270, 271, 272, 273, 274, -1, 276, 277, - -1, 279, -1, 281, 282, 283, 284, 285, 286, -1, - 288, 289, -1, -1, 292, 293, 294, -1, -1, 297, - 298, 299, -1, 301, -1, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, -1, -1, - -1, -1, 320, 321, 322, -1, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, 363, 364, -1, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, -1, -1, 385, 386, 387, - 388, 389, 390, 391, 392, 393, -1, -1, 396, 397, - 398, 399, -1, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, -1, - -1, 419, 420, -1, 422, -1, 424, 425, 426, 427, - 428, -1, 430, 431, 432, -1, -1, 435, 436, 437, - 438, 439, -1, 441, 442, 443, 444, 445, 446, 447, - 448, -1, 450, 451, 452, 453, -1, -1, 456, 457, - 458, 459, -1, 461, 462, 463, 464, 465, 466, 467, - 468, -1, 470, -1, 472, 473, 474, 475, 476, 477, - 478, -1, -1, 481, -1, -1, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, - 26, 27, 28, 29, -1, 31, 32, 33, 34, 35, - -1, -1, -1, -1, -1, -1, -1, 43, 44, -1, - -1, 47, 48, -1, 50, 51, 52, 53, 54, -1, - 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, - -1, 67, 68, 69, 70, 71, 72, 73, -1, 75, - 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, - 86, 87, 88, -1, 90, 91, 92, -1, 94, 95, - 96, 97, 98, 99, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, - -1, -1, 128, 129, 130, 131, -1, -1, 134, 135, - 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, - 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, -1, 161, -1, 163, 164, 165, - 166, -1, 168, -1, 170, -1, -1, -1, 174, 175, - 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, - -1, 187, 188, 189, 190, 191, 192, 193, -1, 195, - 196, 197, 198, -1, 200, 201, 202, 203, 204, 205, - 206, -1, 208, -1, 210, 211, 212, 213, 214, 215, - 216, 217, -1, 219, -1, 221, -1, -1, 224, -1, - 226, 227, 228, 229, 230, 231, -1, -1, 234, -1, - 236, -1, -1, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, -1, 270, 271, 272, 273, 274, -1, - 276, 277, -1, 279, -1, 281, 282, 283, 284, 285, - 286, -1, 288, 289, -1, -1, 292, 293, 294, -1, - -1, 297, 298, 299, -1, 301, -1, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - -1, -1, -1, -1, 320, 321, 322, -1, 324, 325, - 326, 327, 328, 329, -1, 331, 332, 333, 334, 335, - 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, -1, 363, 364, -1, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, -1, -1, 385, - 386, 387, 388, 389, 390, 391, 392, 393, -1, -1, - 396, 397, 398, 399, -1, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, -1, -1, 419, 420, -1, 422, -1, 424, 425, - 426, 427, 428, -1, 430, 431, 432, -1, -1, 435, - 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, - 446, 447, 448, -1, -1, 451, 452, 453, -1, -1, - 456, 457, 458, 459, -1, 461, 462, 463, 464, 465, - 466, 467, 468, -1, 470, -1, 472, 473, 474, 475, - 476, 477, 478, -1, -1, 481, -1, -1, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 502, 503, 504, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, - 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, - -1, -1, -1, 37, -1, -1, 40, -1, 42, 43, - 44, -1, 46, 47, 48, 49, 50, 51, 52, -1, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, 68, 69, 70, 71, 72, 73, - -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, - 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, - 124, 125, -1, -1, 128, 129, 130, 131, -1, -1, - 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, - 144, 145, 146, -1, 148, 149, 150, 151, -1, 153, - 154, 155, 156, 157, 158, -1, -1, 161, -1, 163, - 164, 165, 166, -1, 168, -1, 170, 171, -1, 173, - 174, 175, 176, 177, 178, 179, 180, -1, -1, -1, - 184, 185, -1, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, -1, 200, 201, 202, 203, - 204, 205, 206, -1, 208, 209, -1, 211, 212, 213, - 214, 215, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, - 234, 235, 236, 237, -1, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - -1, -1, 276, 277, 278, 279, -1, -1, 282, 283, - 284, 285, 286, -1, 288, 289, -1, -1, 292, 293, - 294, -1, -1, 297, 298, -1, 300, 301, 302, -1, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, -1, -1, -1, -1, 320, 321, -1, 323, - 324, 325, -1, 327, 328, 329, -1, 331, 332, 333, - 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, -1, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, -1, -1, -1, 419, 420, -1, 422, 423, - 424, 425, 426, 427, 428, -1, 430, 431, 432, -1, - -1, 435, 436, -1, 438, -1, -1, 441, 442, 443, - 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, - 454, -1, 456, 457, 458, 459, -1, 461, 462, 463, - 464, 465, -1, 467, 468, -1, 470, 471, 472, 473, - 474, 475, 476, 477, 478, -1, -1, 481, -1, -1, - 484, 485, 486, 487, 488, 489, 3, -1, 5, -1, - -1, -1, -1, -1, -1, -1, -1, 501, 502, 503, - 504, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, -1, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 3, -1, - 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, - -1, -1, 47, 48, -1, 50, 51, 52, 53, 54, - -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, - -1, -1, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, -1, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, -1, -1, -1, 174, - 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, -1, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, -1, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, -1, 224, - -1, 226, 227, 228, 229, 230, 231, -1, -1, 234, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, -1, 270, 271, 272, 273, 274, - -1, 276, 277, -1, 279, -1, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, 291, 292, 293, 294, - -1, -1, 297, 298, 299, -1, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, -1, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - -1, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - -1, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, -1, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, -1, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, 44, -1, -1, 47, 48, -1, 50, 51, 52, - 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, - 63, 64, -1, -1, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, - 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, -1, 102, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 507, -1, -1, 510, 511, 512, -1, 514, + 515, 516, 517, 518, 519, -1, -1, 522, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3, -1, -1, -1, 507, -1, -1, 510, 511, 512, + -1, 514, 515, 516, 517, 518, 519, -1, -1, 522, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, -1, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, -1, -1, - -1, 174, 175, 176, -1, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, -1, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, -1, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, -1, - -1, 224, -1, 226, 227, 228, 229, 230, 231, -1, - -1, 234, -1, 236, -1, -1, 239, 240, 241, 242, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, -1, 270, 271, 272, - 273, 274, -1, 276, 277, -1, 279, -1, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, 291, 292, - 293, 294, -1, -1, 297, 298, 299, -1, 301, -1, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - -1, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, -1, 366, 367, 368, 369, 370, 371, 372, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, -1, 396, 397, 398, 399, -1, 401, 402, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - -1, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, -1, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, -1, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, -1, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 3, -1, 5, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, 44, -1, -1, 47, 48, -1, 50, - 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, -1, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, -1, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - -1, -1, -1, 174, 175, 176, -1, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, -1, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, -1, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, -1, -1, 224, -1, 226, 227, 228, 229, 230, - 231, -1, -1, 234, -1, 236, -1, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, -1, 270, - 271, 272, 273, 274, -1, 276, 277, -1, 279, -1, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, -1, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, -1, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, -1, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, -1, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, -1, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, -1, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, -1, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - -1, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 3, -1, 5, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, 44, -1, -1, 47, 48, - -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, - 59, 60, 61, 62, 63, 64, -1, -1, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, - -1, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, + 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, + -1, -1, -1, 516, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 23, 24, 25, 26, 27, 28, + 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 44, 45, -1, -1, 48, + 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, + -1, 60, 61, 62, 63, 64, 65, -1, -1, 68, + 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, + 79, 80, -1, -1, -1, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, -1, 95, 96, 97, 98, + 99, 100, -1, -1, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, + 119, -1, 121, 122, 123, 124, 125, 126, -1, -1, + 129, 130, 131, 132, -1, -1, 135, 136, 137, 138, + 139, -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, -1, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, -1, -1, -1, 174, 175, 176, -1, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, -1, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - -1, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, -1, -1, 224, -1, 226, 227, 228, - 229, 230, 231, -1, -1, 234, -1, 236, -1, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 159, 160, -1, 162, -1, 164, 165, 166, 167, -1, + 169, -1, 171, -1, -1, -1, 175, 176, 177, -1, + 179, 180, 181, -1, 183, 184, 185, 186, -1, 188, + 189, 190, 191, 192, 193, 194, -1, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, + 209, -1, 211, 212, 213, 214, 215, 216, 217, 218, + -1, 220, -1, 222, -1, -1, 225, -1, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, -1, 238, + -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - -1, 270, 271, 272, 273, 274, -1, 276, 277, -1, - 279, -1, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, 291, 292, 293, 294, -1, -1, 297, 298, - 299, -1, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, -1, 366, 367, 368, + 269, 270, -1, 272, 273, 274, 275, 276, -1, 278, + 279, -1, 281, -1, 283, 284, 285, 286, 287, 288, + -1, 290, 291, -1, -1, 294, 295, 296, -1, -1, + 299, 300, 301, -1, 303, -1, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, -1, + -1, -1, -1, 322, 323, 324, -1, 326, 327, 328, + 329, 330, 331, -1, 333, 334, 335, 336, 337, 338, + -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, -1, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, -1, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, -1, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, -1, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, -1, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, + 379, 380, 381, 382, 383, 384, -1, -1, 387, 388, + 389, 390, 391, 392, 393, 394, 395, -1, -1, 398, + 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + -1, -1, 421, 422, -1, 424, -1, 426, 427, 428, + 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, + 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, + 449, 450, -1, -1, 453, 454, 455, -1, -1, 458, + 459, 460, 461, -1, 463, 464, 465, 466, 467, 468, + 469, 470, -1, 472, -1, 474, 475, 476, 477, 478, + 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 3, -1, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, -1, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, 421, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 3, -1, - 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, - -1, -1, 47, 48, -1, 50, 51, 52, 53, 54, - -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, - -1, -1, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, -1, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, -1, 102, 103, 104, + 499, 500, 501, 502, 503, 504, 505, 506, 3, -1, + -1, -1, -1, -1, -1, -1, -1, 516, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + 45, -1, -1, 48, 49, -1, 51, 52, 53, 54, + 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, + 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, + -1, 76, 77, 78, 79, 80, -1, -1, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, -1, + 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, -1, -1, -1, 174, - 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, -1, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, -1, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, -1, 224, - -1, 226, 227, 228, 229, 230, 231, -1, -1, 234, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, + 115, 116, 117, -1, 119, -1, 121, 122, 123, 124, + 125, 126, -1, -1, 129, 130, 131, 132, -1, -1, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, + 165, 166, 167, -1, 169, -1, 171, -1, -1, -1, + 175, 176, 177, -1, 179, 180, 181, -1, 183, 184, + 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, + -1, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, -1, 209, -1, 211, 212, 213, 214, + 215, 216, 217, 218, -1, 220, -1, 222, -1, -1, + 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, + -1, 236, -1, 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, -1, 270, 271, 272, 273, 274, - -1, 276, 277, -1, 279, -1, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, -1, 301, -1, 303, 304, + 265, 266, 267, 268, 269, 270, -1, 272, 273, 274, + 275, 276, -1, 278, 279, -1, 281, -1, 283, 284, + 285, 286, 287, 288, -1, 290, 291, -1, -1, 294, + 295, 296, -1, -1, 299, 300, 301, -1, 303, -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, -1, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - -1, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - -1, 396, 397, 398, 399, -1, 401, 402, 403, 404, + 315, 316, 317, -1, -1, -1, -1, 322, 323, 324, + -1, 326, 327, 328, 329, 330, 331, -1, 333, 334, + 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, + 365, 366, -1, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + -1, -1, 387, 388, 389, 390, 391, 392, 393, 394, + 395, -1, -1, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, -1, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, -1, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 415, 416, 417, 418, -1, -1, 421, 422, -1, 424, + -1, 426, 427, 428, 429, 430, -1, 432, 433, 434, + -1, -1, 437, 438, 439, 440, 441, -1, 443, 444, + 445, 446, 447, 448, 449, 450, -1, -1, 453, 454, + 455, -1, -1, 458, 459, 460, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, -1, 472, -1, 474, + 475, 476, 477, 478, 479, 480, -1, -1, 483, -1, + -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, 44, -1, -1, 47, 48, -1, 50, 51, 52, - 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, - 63, 64, -1, -1, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, - 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, -1, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, -1, -1, - -1, 174, 175, 176, -1, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, -1, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, -1, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, -1, - -1, 224, -1, 226, 227, 228, 229, 230, 231, -1, - -1, 234, -1, 236, -1, -1, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, -1, 270, 271, 272, - 273, 274, -1, 276, 277, -1, 279, -1, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, -1, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - -1, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, -1, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, -1, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - -1, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, -1, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, -1, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, -1, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, 44, -1, -1, 47, 48, -1, 50, - 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, -1, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, + 505, 506, 3, 4, 5, -1, -1, -1, 9, -1, + -1, 516, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, + -1, 32, 33, 34, -1, -1, -1, 38, -1, -1, + -1, -1, 43, 44, 45, -1, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, + 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, + 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, + -1, 82, -1, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, -1, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - -1, -1, -1, 174, 175, 176, -1, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, -1, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, -1, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, -1, -1, 224, -1, 226, 227, 228, 229, 230, - 231, -1, -1, 234, -1, 236, -1, -1, 239, 240, + 111, 112, 113, 114, 115, 116, 117, -1, 119, -1, + 121, 122, 123, 124, 125, 126, -1, -1, 129, 130, + 131, 132, -1, -1, 135, 136, 137, 138, 139, -1, + 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, -1, 164, 165, 166, 167, -1, 169, -1, + 171, 172, -1, 174, 175, 176, 177, 178, 179, 180, + 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, -1, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, -1, 220, + -1, 222, 223, 224, 225, 226, 227, 228, 229, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, -1, 270, - 271, 272, 273, 274, -1, 276, 277, -1, 279, -1, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, -1, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, -1, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, + 281, -1, 283, 284, 285, 286, 287, 288, -1, 290, + 291, 292, -1, 294, 295, 296, -1, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, -1, -1, -1, + -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, -1, 333, 334, 335, 336, 337, 338, -1, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, -1, 366, 367, 368, 369, 370, + 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, -1, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, -1, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, -1, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, -1, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - -1, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, + 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, + 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, -1, + 421, 422, -1, 424, 425, 426, 427, 428, 429, 430, + -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 453, 454, 455, 456, -1, 458, 459, 460, + 461, -1, 463, 464, 465, 466, 467, 468, 469, 470, + -1, 472, 473, 474, 475, 476, 477, 478, 479, 480, + -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 3, -1, 5, -1, -1, -1, + 501, 502, 503, 504, 505, 506, -1, -1, 8, -1, + -1, 11, -1, 514, 515, 15, 16, 17, 18, -1, + 20, 21, 22, -1, -1, -1, 8, -1, -1, 11, + -1, -1, -1, 15, 16, 17, 18, 37, 20, 21, + 22, -1, 42, -1, -1, -1, -1, 47, -1, -1, + -1, -1, -1, -1, 54, 37, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, + -1, -1, 54, -1, -1, 8, -1, -1, 11, -1, + -1, 81, 15, 16, 17, 18, -1, 20, 21, 22, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, + -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, + -1, 54, -1, -1, -1, -1, -1, 127, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, + 11, -1, -1, -1, 15, 16, 17, 18, 81, 20, + 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, + 41, -1, -1, -1, -1, -1, 47, -1, 178, -1, + -1, -1, -1, 54, -1, -1, 168, -1, -1, -1, + -1, 173, -1, -1, -1, 195, 178, -1, -1, -1, + 200, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 81, -1, -1, 195, -1, -1, -1, -1, 200, -1, + -1, -1, -1, 223, 224, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 167, -1, -1, -1, -1, 239, + -1, 223, 224, -1, -1, 178, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 239, -1, -1, + -1, -1, 195, -1, -1, -1, -1, 200, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 277, -1, -1, + 280, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 223, 224, -1, -1, 294, 277, -1, 297, 280, -1, + -1, -1, -1, -1, -1, -1, 239, 178, -1, -1, + -1, -1, 294, -1, -1, 297, -1, -1, -1, -1, + -1, -1, -1, -1, 195, -1, -1, -1, -1, 200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, 44, -1, -1, 47, 48, - -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, - 59, 60, 61, 62, 63, 64, -1, -1, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, - -1, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, -1, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, -1, -1, -1, 174, 175, 176, -1, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, -1, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - -1, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, -1, -1, 224, -1, 226, 227, 228, - 229, 230, 231, -1, -1, 234, -1, 236, -1, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - -1, 270, 271, 272, 273, 274, -1, 276, 277, -1, - 279, -1, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, -1, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, -1, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, -1, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, -1, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, -1, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, -1, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, -1, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 3, -1, 5, -1, + -1, -1, -1, -1, 277, -1, -1, 280, -1, -1, + -1, -1, 223, 224, -1, -1, -1, -1, -1, -1, + -1, 294, -1, -1, 297, -1, -1, -1, 239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, -1, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 3, -1, - 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, - -1, -1, 47, 48, -1, 50, 51, 52, 53, 54, - -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, - -1, -1, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, -1, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, -1, 102, 103, 104, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 327, -1, -1, 397, -1, -1, + -1, -1, -1, -1, -1, -1, 277, -1, -1, 280, + -1, -1, -1, -1, -1, 397, -1, -1, -1, -1, + -1, -1, 8, 294, -1, 11, 297, -1, -1, 15, + 16, 17, 18, -1, 20, 21, 22, -1, -1, -1, + 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, + 18, 37, 20, 21, 22, -1, -1, -1, -1, -1, + -1, 47, 462, -1, 397, -1, -1, -1, 54, 37, + -1, -1, -1, 41, -1, -1, -1, -1, -1, 47, + -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, + -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 507, -1, -1, + 510, 511, 512, 81, 514, 515, 516, 517, 518, 519, + -1, -1, -1, -1, -1, 507, 397, -1, 510, 511, + 512, -1, 514, 515, 516, 517, 518, 519, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 8, -1, -1, 11, -1, -1, -1, 15, 16, + 17, 18, -1, 20, 21, 22, -1, -1, -1, -1, + -1, -1, -1, -1, 507, -1, -1, 510, 511, 512, + 37, 514, 515, 516, 517, 518, 519, -1, -1, -1, + 47, -1, 178, -1, -1, -1, -1, 54, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 195, + 178, -1, -1, -1, 200, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 81, -1, -1, 195, -1, -1, + -1, -1, 200, -1, -1, -1, 507, 223, 224, 510, + 511, 512, -1, 514, 515, 516, 517, 518, 519, -1, + -1, -1, -1, 239, -1, 223, 224, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 239, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 277, -1, -1, 280, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 294, 277, + -1, 297, 280, -1, -1, -1, 173, -1, -1, -1, + -1, 178, -1, -1, -1, -1, 294, -1, -1, 297, + -1, -1, -1, -1, -1, 321, -1, -1, 195, -1, + -1, -1, -1, 200, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 223, 224, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 239, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 8, -1, -1, 11, -1, + -1, -1, 15, 16, 17, 18, -1, 20, 21, 22, + -1, 397, -1, -1, -1, -1, -1, -1, -1, -1, + 277, -1, -1, 280, 37, -1, -1, -1, 41, 397, + -1, -1, -1, -1, 47, -1, -1, 294, -1, -1, + 297, 54, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 8, -1, -1, 11, 81, -1, + -1, 15, 16, 17, 18, -1, 20, 21, 22, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 47, -1, -1, 8, -1, -1, 11, + 54, -1, -1, 15, 16, 17, 18, 19, 20, 21, + 22, 507, -1, -1, 510, 511, 512, -1, 514, 515, + 516, 517, 518, 519, -1, 37, -1, 81, -1, 507, + 397, -1, 510, 511, 512, 47, 514, 515, 516, 517, + 518, 519, 54, -1, 8, -1, -1, 11, -1, -1, + -1, 15, 16, 17, 18, 178, 20, 21, 22, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, + -1, -1, 195, 37, -1, -1, -1, 200, -1, -1, + -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, + 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 223, 224, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 168, -1, 239, 81, -1, -1, + -1, -1, -1, -1, 178, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 507, 195, -1, 510, 511, 512, 200, 514, 515, 516, + 517, 518, 519, -1, 277, -1, -1, 280, -1, -1, + -1, -1, -1, -1, -1, -1, 178, -1, -1, 223, + 224, 294, -1, -1, 297, -1, -1, -1, -1, -1, + -1, -1, -1, 195, -1, 239, -1, -1, 200, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 223, 224, -1, 178, -1, -1, -1, -1, -1, + -1, -1, -1, 277, -1, -1, 280, 239, -1, -1, + -1, 195, -1, -1, -1, -1, 200, -1, -1, -1, + 294, -1, -1, 297, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 223, + 224, -1, -1, -1, -1, 277, -1, -1, 280, -1, + -1, -1, -1, -1, 397, 239, -1, -1, -1, -1, + -1, -1, 294, -1, -1, 297, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 8, -1, -1, 11, + -1, -1, -1, 15, 16, 17, 18, -1, 20, 21, + 22, -1, -1, 277, -1, -1, 280, -1, -1, -1, + -1, -1, -1, -1, -1, 37, -1, -1, -1, 41, + 294, -1, -1, 297, -1, 47, -1, -1, -1, -1, + -1, -1, 54, 397, 8, -1, -1, 11, -1, -1, + -1, 15, 16, 17, 18, -1, 20, 21, 22, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, + -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 47, 507, 397, -1, 510, 511, 512, + 54, 514, 515, 516, 517, 518, 519, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 397, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 507, -1, -1, 510, 511, 512, -1, + 514, 515, 516, 517, 518, 519, 178, 431, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 195, -1, -1, -1, -1, 200, -1, + -1, -1, -1, -1, -1, 507, -1, -1, 510, 511, + 512, -1, 514, 515, 516, 517, 518, 519, -1, -1, + -1, 223, 224, -1, 178, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 239, -1, -1, + -1, 195, -1, -1, -1, -1, 200, -1, -1, -1, + -1, -1, -1, 507, -1, -1, 510, 511, 512, -1, + 514, 515, 516, 517, 518, 519, -1, -1, -1, 223, + 224, -1, -1, -1, -1, 277, -1, -1, 280, -1, + -1, -1, -1, -1, -1, 239, -1, -1, -1, -1, + -1, -1, 294, -1, -1, 297, -1, -1, -1, -1, + -1, -1, -1, 8, -1, -1, 11, -1, -1, -1, + 15, 16, 17, 18, -1, 20, 21, 22, -1, -1, + -1, -1, -1, 277, -1, -1, 280, -1, -1, -1, + -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, + 294, -1, 47, 297, -1, -1, -1, -1, -1, 54, + -1, 8, -1, -1, 11, -1, -1, -1, 15, 16, + 17, 18, -1, 20, 21, 22, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, + 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 47, -1, -1, -1, -1, 397, -1, 54, 8, -1, + -1, 11, -1, -1, -1, 15, 16, -1, -1, -1, + 20, 21, 22, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 81, -1, -1, 37, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 47, 8, -1, + -1, 11, -1, 397, 54, 15, 16, -1, -1, -1, + 20, 21, 22, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, + -1, 81, -1, 178, -1, -1, -1, 47, -1, -1, + -1, -1, -1, -1, 54, -1, 8, -1, -1, 11, + 195, -1, -1, 15, 16, 200, -1, -1, 20, 21, + 22, -1, -1, -1, -1, 507, -1, -1, 510, 511, + 512, 81, 514, 515, 516, 517, 518, 519, 223, 224, + -1, 178, -1, -1, -1, 47, -1, -1, -1, -1, + -1, -1, 54, -1, 239, -1, -1, -1, 195, -1, + -1, -1, -1, 200, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 507, -1, -1, 510, 511, 512, 81, + 514, 515, 516, 517, 518, 519, 223, 224, 178, -1, + -1, -1, 277, -1, -1, 280, -1, -1, -1, -1, + -1, -1, 239, -1, -1, 195, -1, -1, -1, 294, + 200, -1, 297, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 178, -1, + -1, -1, -1, 223, 224, -1, -1, -1, -1, -1, + 277, -1, -1, 280, -1, 195, -1, -1, -1, 239, + 200, -1, -1, -1, -1, -1, -1, 294, -1, -1, + 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 223, 224, -1, 178, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 277, -1, 239, + 280, -1, -1, 195, -1, -1, -1, -1, 200, -1, + -1, -1, -1, -1, 294, -1, -1, 297, -1, -1, + -1, -1, 397, -1, -1, -1, -1, -1, -1, -1, + -1, 223, 224, -1, -1, -1, -1, 277, -1, -1, + 280, -1, -1, -1, -1, -1, -1, 239, -1, -1, + -1, -1, -1, -1, 294, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 294, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 397, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 507, -1, -1, 510, 511, 512, -1, 514, + 515, 516, 517, 518, 519, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 397, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 507, -1, -1, 510, 511, 512, -1, 514, 515, 516, + 517, 518, 519, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 397, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 507, -1, -1, + 510, 511, 512, -1, 514, 515, 516, 517, 518, 519, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 507, -1, -1, + 510, 511, 512, -1, 514, 515, 516, 517, 518, 519, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, + 5, -1, -1, -1, -1, 507, -1, -1, 510, 511, + 512, -1, 514, 515, 516, 517, 518, 519, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, -1, -1, -1, 174, - 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, -1, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, -1, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, -1, 224, - -1, 226, 227, 228, 229, 230, 231, -1, -1, 234, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, -1, 270, 271, 272, 273, 274, - -1, 276, 277, -1, 279, -1, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, -1, 301, -1, 303, 304, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, -1, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - -1, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - -1, 396, 397, 398, 399, -1, 401, 402, 403, 404, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, -1, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, -1, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, 44, -1, -1, 47, 48, -1, 50, 51, 52, - 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, - 63, 64, -1, -1, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, - 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, -1, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, -1, -1, - -1, 174, 175, 176, -1, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, -1, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, -1, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, -1, - -1, 224, -1, 226, 227, 228, 229, 230, 231, -1, - -1, 234, -1, 236, -1, -1, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, -1, 270, 271, 272, - 273, 274, -1, 276, 277, -1, 279, -1, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, -1, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - -1, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, -1, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, -1, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - -1, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, -1, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, -1, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, -1, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 3, -1, 5, -1, -1, -1, -1, -1, + 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, 44, -1, -1, 47, 48, -1, 50, - 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, -1, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, -1, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - -1, -1, -1, 174, 175, 176, -1, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, -1, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, -1, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, -1, -1, 224, -1, 226, 227, 228, 229, 230, - 231, -1, -1, 234, -1, 236, -1, -1, 239, 240, + -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, -1, 270, - 271, 272, 273, 274, -1, 276, 277, -1, 279, -1, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, -1, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, -1, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, -1, 366, 367, 368, 369, 370, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, -1, 396, 397, 398, 399, -1, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, -1, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, -1, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, -1, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - -1, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 3, -1, 5, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, 44, -1, -1, 47, 48, - -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, - 59, 60, 61, 62, 63, 64, -1, -1, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, - -1, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, -1, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, -1, -1, -1, 174, 175, 176, -1, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, -1, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - -1, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, -1, -1, 224, -1, 226, 227, 228, - 229, 230, 231, -1, -1, 234, -1, 236, -1, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - -1, 270, 271, 272, 273, 274, -1, 276, 277, -1, - 279, -1, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, -1, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, -1, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, -1, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, -1, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, -1, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, -1, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, -1, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 3, -1, 5, -1, + 501, 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, + -1, -1, -1, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, -1, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, -1, 40, -1, -1, 43, 44, - -1, -1, 47, 48, -1, 50, 51, 52, 53, 54, - -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, - -1, -1, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, -1, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, -1, -1, -1, 174, - 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, -1, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, -1, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, -1, 224, - -1, 226, 227, 228, 229, 230, 231, -1, -1, 234, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, -1, 270, 271, 272, 273, 274, - -1, 276, 277, -1, 279, -1, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, -1, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, -1, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - -1, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - -1, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, -1, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, -1, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, -1, 40, -1, -1, - 43, 44, -1, -1, 47, 48, -1, 50, 51, 52, - 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, - 63, 64, -1, -1, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, - 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, -1, 102, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, -1, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, -1, -1, - -1, 174, 175, 176, -1, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, -1, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, -1, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, -1, - -1, 224, -1, 226, 227, 228, 229, 230, 231, -1, - -1, 234, -1, 236, -1, -1, 239, 240, 241, 242, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, -1, 270, 271, 272, - 273, 274, -1, 276, 277, -1, 279, -1, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, -1, 301, -1, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - -1, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, -1, 366, 367, 368, 369, 370, 371, 372, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, -1, 396, 397, 398, 399, -1, 401, 402, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - -1, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, -1, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, -1, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, -1, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, 44, -1, -1, 47, 48, -1, 50, - 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, -1, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, -1, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - -1, -1, -1, 174, 175, 176, -1, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, -1, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, -1, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, -1, -1, 224, -1, 226, 227, 228, 229, 230, - 231, -1, -1, 234, -1, 236, -1, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, -1, 270, - 271, 272, 273, 274, -1, 276, 277, -1, 279, -1, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, -1, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, -1, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, -1, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, -1, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, -1, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, -1, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, -1, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - -1, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 3, -1, 5, -1, -1, -1, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, 44, -1, -1, 47, 48, - -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, - 59, 60, 61, 62, 63, 64, -1, -1, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, - -1, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, + -1, -1, -1, -1, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, -1, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, -1, -1, -1, 174, 175, 176, -1, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, -1, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - -1, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, -1, -1, 224, -1, 226, 227, 228, - 229, 230, 231, -1, -1, 234, -1, 236, -1, -1, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - -1, 270, 271, 272, 273, 274, -1, 276, 277, -1, - 279, -1, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, -1, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, -1, 366, 367, 368, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, -1, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, -1, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, -1, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, -1, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, -1, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 3, -1, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, -1, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 3, -1, + 499, 500, 501, 502, 503, 504, 505, 506, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, - -1, -1, 47, 48, -1, 50, 51, 52, 53, 54, - -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, - -1, -1, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, -1, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, -1, 102, 103, 104, + -1, -1, -1, -1, -1, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, + -1, -1, -1, 38, -1, -1, -1, -1, 43, 44, + 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, + 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, + -1, 76, 77, 78, 79, 80, -1, 82, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, + 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, -1, -1, -1, 174, - 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, -1, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, -1, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, -1, 224, - -1, 226, 227, 228, 229, 230, 231, -1, -1, 234, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, + 115, 116, 117, -1, 119, -1, 121, 122, 123, 124, + 125, 126, -1, -1, 129, 130, 131, 132, -1, -1, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, + 165, 166, 167, -1, 169, -1, 171, 172, -1, 174, + 175, 176, 177, 178, 179, 180, 181, -1, 183, 184, + 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, -1, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, -1, 220, -1, 222, 223, 224, + 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, -1, 270, 271, 272, 273, 274, - -1, 276, 277, -1, 279, -1, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, -1, 301, -1, 303, 304, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, -1, 278, 279, 280, 281, -1, 283, 284, + 285, 286, 287, 288, -1, 290, 291, 292, -1, 294, + 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, -1, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - -1, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - -1, 396, 397, 398, 399, -1, 401, 402, 403, 404, + 315, 316, 317, -1, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, -1, 333, 334, + 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, -1, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, -1, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 415, 416, 417, 418, -1, -1, 421, 422, -1, 424, + 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, + -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, -1, -1, 453, 454, + 455, 456, -1, 458, 459, 460, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, -1, 472, 473, 474, + 475, 476, 477, 478, 479, 480, -1, -1, 483, -1, + -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, 44, -1, -1, 47, 48, -1, 50, 51, 52, - 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, - 63, 64, -1, -1, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, - 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, -1, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, -1, -1, - -1, 174, 175, 176, -1, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, -1, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, -1, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, -1, - -1, 224, -1, 226, 227, 228, 229, 230, 231, -1, - -1, 234, -1, 236, -1, -1, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, -1, 270, 271, 272, - 273, 274, -1, 276, 277, -1, 279, -1, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, -1, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - -1, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, -1, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, -1, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - -1, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, -1, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, -1, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, -1, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 3, -1, -1, -1, -1, -1, -1, -1, + 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, 37, -1, -1, -1, - -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, - 51, 52, -1, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, -1, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, - 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, -1, 153, 154, 155, 156, 157, 158, -1, -1, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - 171, -1, 173, 174, 175, -1, 177, 178, 179, 180, - -1, -1, -1, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, 209, -1, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, -1, -1, 234, 235, 236, 237, -1, 239, 240, + -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, + -1, 32, 33, 34, 35, 36, -1, 38, -1, -1, + -1, -1, 43, 44, 45, -1, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, + 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, + 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, + -1, 82, -1, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, + -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, -1, 119, -1, + 121, 122, 123, 124, 125, 126, -1, -1, 129, 130, + 131, 132, -1, -1, 135, 136, 137, 138, 139, -1, + 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + -1, 162, -1, 164, 165, 166, 167, -1, 169, -1, + 171, 172, -1, 174, 175, 176, 177, 178, 179, 180, + 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, -1, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, -1, 220, + -1, 222, 223, 224, 225, 226, 227, 228, 229, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, -1, -1, 276, 277, 278, 279, -1, - -1, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, -1, 300, - 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, -1, 323, 324, 325, -1, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, + 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, + 281, -1, 283, 284, 285, 286, 287, 288, -1, 290, + 291, -1, -1, 294, 295, 296, -1, -1, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, -1, -1, -1, + -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, -1, 333, 334, 335, 336, 337, 338, -1, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, + 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, -1, -1, -1, 419, 420, - -1, 422, 423, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, -1, 438, -1, -1, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - 451, 452, 453, 454, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, -1, 467, 468, -1, 470, - 471, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 3, + 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, + 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, -1, + 421, 422, -1, 424, 425, 426, 427, 428, 429, 430, + -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, + 441, -1, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 453, 454, 455, 456, -1, 458, 459, 460, + 461, -1, 463, 464, 465, 466, 467, 468, 469, 470, + -1, 472, 473, 474, 475, 476, 477, 478, 479, 480, + -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 501, 502, 503, 504, -1, -1, -1, -1, 22, 23, - 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, - -1, -1, -1, 37, -1, -1, -1, -1, 42, 43, - 44, -1, 46, 47, 48, 49, 50, 51, 52, -1, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, -1, 67, 68, 69, 70, 71, 72, 73, - -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, - 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, - 124, 125, -1, -1, 128, 129, 130, 131, -1, -1, - 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, - 144, 145, 146, -1, 148, 149, 150, 151, -1, 153, - 154, 155, 156, 157, 158, -1, -1, 161, -1, 163, - 164, 165, 166, -1, 168, -1, 170, 171, -1, 173, - 174, 175, -1, 177, 178, 179, 180, -1, -1, -1, - 184, 185, -1, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, -1, 200, 201, 202, 203, - 204, 205, 206, -1, 208, 209, -1, 211, 212, 213, - 214, 215, 216, 217, -1, 219, -1, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, - 234, 235, 236, 237, -1, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - -1, -1, 276, 277, 278, 279, -1, -1, 282, 283, - 284, 285, 286, -1, 288, 289, -1, -1, 292, 293, - 294, -1, -1, 297, 298, -1, 300, 301, 302, -1, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, -1, -1, -1, -1, 320, 321, -1, 323, - 324, 325, -1, 327, 328, 329, -1, 331, 332, 333, - 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, -1, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, -1, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, -1, -1, -1, 419, 420, -1, 422, 423, - 424, 425, 426, 427, 428, -1, 430, 431, 432, -1, - -1, 435, 436, -1, 438, -1, -1, 441, 442, 443, - 444, 445, 446, 447, 448, 449, -1, 451, 452, 453, - 454, -1, 456, 457, 458, 459, -1, 461, 462, 463, - 464, 465, -1, 467, 468, -1, 470, 471, 472, 473, - 474, 475, 476, 477, 478, -1, -1, 481, -1, -1, - 484, 485, 486, 487, 488, 489, 3, -1, 5, -1, - -1, -1, -1, -1, -1, -1, -1, 501, 502, 503, - 504, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, + -1, -1, -1, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, + -1, -1, -1, -1, -1, -1, 43, 44, 45, -1, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, -1, 60, 61, 62, 63, 64, 65, -1, + 67, 68, 69, 70, 71, 72, 73, 74, -1, 76, + 77, 78, 79, 80, -1, 82, -1, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, + 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, -1, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, + 117, -1, 119, -1, 121, 122, 123, 124, 125, 126, + -1, -1, 129, 130, 131, 132, -1, -1, 135, 136, + 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, + 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, -1, 162, -1, 164, 165, 166, + 167, -1, 169, -1, 171, 172, -1, 174, 175, 176, + 177, 178, 179, 180, 181, -1, 183, 184, 185, 186, + -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, -1, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, -1, 220, -1, 222, 223, 224, 225, 226, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + -1, 278, 279, 280, 281, -1, 283, 284, 285, 286, + 287, 288, -1, 290, 291, -1, -1, 294, 295, 296, + -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, -1, -1, -1, -1, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, -1, 333, 334, 335, 336, + 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, + 377, 378, 379, 380, 381, 382, 383, 384, -1, -1, + 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, + 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, + 417, 418, -1, -1, 421, 422, -1, 424, 425, 426, + 427, 428, 429, 430, -1, 432, 433, 434, -1, -1, + 437, 438, 439, 440, 441, -1, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, 453, 454, 455, -1, + -1, 458, 459, 460, 461, -1, 463, 464, 465, 466, + 467, 468, 469, 470, -1, 472, 473, 474, 475, 476, + 477, 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 3, -1, - 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, - -1, -1, 47, 48, -1, 50, 51, 52, 53, 54, - -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, - -1, -1, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, -1, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, -1, -1, -1, 174, - 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, -1, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, -1, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, -1, 224, - -1, 226, 227, 228, 229, 230, 231, -1, -1, 234, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, -1, 270, 271, 272, 273, 274, - -1, 276, 277, -1, 279, -1, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, -1, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, -1, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - -1, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - -1, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, -1, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, -1, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, 44, -1, -1, 47, 48, -1, 50, 51, 52, - 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, - 63, 64, -1, -1, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, - 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, -1, 102, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, + 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, + 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, + 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, + 73, 74, -1, 76, 77, 78, 79, 80, -1, 82, + -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, -1, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, -1, -1, - -1, 174, 175, 176, -1, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, -1, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, -1, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, -1, - -1, 224, -1, 226, 227, 228, 229, 230, 231, -1, - -1, 234, -1, 236, -1, -1, 239, 240, 241, 242, + 113, 114, 115, 116, 117, -1, 119, -1, 121, 122, + 123, 124, 125, 126, -1, -1, 129, 130, 131, 132, + -1, -1, 135, 136, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, + -1, 164, 165, 166, 167, -1, 169, -1, 171, 172, + -1, 174, 175, 176, 177, 178, 179, 180, 181, -1, + 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, -1, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, -1, 220, -1, 222, + 223, 224, 225, 226, 227, 228, 229, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, -1, 270, 271, 272, - 273, 274, -1, 276, 277, -1, 279, -1, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, -1, 301, -1, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, 280, 281, -1, + 283, 284, 285, 286, 287, 288, -1, 290, 291, -1, + -1, 294, 295, 296, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - -1, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, -1, 366, 367, 368, 369, 370, 371, 372, + 313, 314, 315, 316, 317, -1, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, + 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, -1, 396, 397, 398, 399, -1, 401, 402, + 383, 384, -1, -1, 387, 388, 389, 390, 391, 392, + 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - -1, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, -1, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, -1, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, -1, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 413, 414, 415, 416, 417, 418, -1, -1, 421, 422, + -1, 424, 425, 426, 427, 428, 429, 430, -1, 432, + 433, 434, -1, -1, 437, 438, 439, 440, 441, -1, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 453, 454, 455, -1, -1, 458, 459, 460, 461, -1, + 463, 464, 465, 466, 467, 468, 469, 470, -1, 472, + 473, 474, 475, 476, 477, 478, 479, 480, -1, -1, + 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 43, 44, -1, -1, 47, 48, -1, 50, - 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, -1, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, -1, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - -1, -1, -1, 174, 175, 176, -1, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, -1, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, -1, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, -1, -1, 224, -1, 226, 227, 228, 229, 230, - 231, -1, -1, 234, -1, 236, -1, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, -1, 270, - 271, 272, 273, 274, -1, 276, 277, -1, 279, -1, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, -1, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, -1, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, -1, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, 390, - 391, 392, 393, -1, -1, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, -1, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, -1, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, -1, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - -1, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 3, -1, -1, -1, -1, -1, + 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, 44, -1, -1, 47, 48, - -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, - 59, 60, 61, 62, 63, 64, -1, -1, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, - -1, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, + -1, -1, -1, -1, 23, 24, 25, 26, 27, 28, + 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 44, 45, -1, -1, 48, + 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, + -1, 60, 61, 62, 63, 64, 65, -1, -1, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, -1, -1, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, -1, -1, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, + 119, -1, 121, 122, 123, 124, 125, 126, -1, -1, + 129, 130, 131, 132, -1, -1, 135, 136, 137, 138, + 139, -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, -1, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, -1, -1, -1, 174, 175, 176, -1, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, -1, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - -1, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, -1, -1, 224, -1, 226, 227, 228, - 229, 230, 231, -1, -1, 234, -1, 236, -1, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 159, 160, -1, 162, -1, 164, 165, 166, 167, -1, + 169, 170, 171, -1, -1, -1, 175, 176, 177, -1, + 179, 180, 181, -1, 183, 184, 185, 186, -1, 188, + 189, 190, 191, 192, 193, 194, -1, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, + 209, -1, 211, 212, 213, 214, 215, 216, 217, 218, + -1, 220, -1, 222, -1, -1, 225, -1, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, -1, 238, + -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - -1, 270, 271, 272, 273, 274, -1, 276, 277, -1, - 279, -1, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, -1, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, -1, 366, 367, 368, + 269, 270, -1, 272, 273, 274, 275, 276, -1, 278, + 279, -1, 281, -1, 283, 284, 285, 286, 287, 288, + -1, 290, 291, -1, -1, 294, 295, 296, -1, -1, + 299, 300, 301, -1, 303, -1, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, -1, + -1, -1, -1, 322, 323, 324, -1, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, -1, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, -1, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, -1, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, -1, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, -1, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, + 379, 380, 381, 382, 383, 384, -1, -1, 387, 388, + 389, 390, 391, 392, 393, 394, 395, -1, -1, 398, + 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + -1, -1, 421, 422, -1, 424, -1, 426, 427, 428, + 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, + 439, 440, 441, -1, 443, 444, 445, 446, 447, 448, + 449, 450, -1, 452, 453, 454, 455, -1, -1, 458, + 459, 460, 461, -1, 463, 464, 465, 466, 467, 468, + 469, 470, -1, 472, -1, 474, 475, 476, 477, 478, + 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 3, -1, -1, -1, + 499, 500, 501, 502, 503, 504, 505, 506, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + 45, -1, -1, 48, 49, -1, 51, 52, 53, 54, + 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, + 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, -1, -1, -1, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, -1, 119, -1, 121, 122, 123, 124, + 125, 126, -1, -1, 129, 130, 131, 132, -1, -1, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, -1, 162, -1, 164, + 165, 166, 167, -1, 169, 170, 171, -1, -1, -1, + 175, 176, 177, -1, 179, 180, 181, -1, 183, 184, + 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, + -1, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, -1, 209, -1, 211, 212, 213, 214, + 215, 216, 217, 218, -1, 220, -1, 222, -1, -1, + 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, + -1, 236, -1, 238, 239, -1, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, -1, 272, 273, 274, + 275, 276, -1, 278, 279, -1, 281, -1, 283, 284, + 285, 286, 287, 288, -1, 290, 291, -1, -1, 294, + 295, 296, -1, -1, 299, 300, 301, -1, 303, -1, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, -1, -1, -1, -1, 322, 323, 324, + -1, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, -1, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, + 365, 366, -1, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + -1, -1, 387, 388, 389, 390, 391, 392, 393, 394, + 395, -1, -1, 398, 399, 400, 401, -1, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, -1, -1, 421, 422, -1, 424, + -1, 426, 427, 428, 429, 430, -1, 432, 433, 434, + -1, -1, 437, 438, 439, 440, 441, -1, 443, 444, + 445, 446, 447, 448, 449, 450, -1, 452, 453, 454, + 455, -1, -1, 458, 459, 460, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, -1, 472, -1, 474, + 475, 476, 477, 478, 479, 480, -1, -1, 483, -1, + -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 3, -1, 5, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, + -1, 32, 33, 34, 35, 36, -1, -1, -1, -1, + -1, -1, -1, 44, 45, -1, -1, 48, 49, -1, + 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, + 61, 62, 63, 64, 65, -1, -1, 68, 69, 70, + 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, + -1, -1, -1, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, + -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, -1, 119, -1, + 121, 122, 123, 124, 125, 126, -1, -1, 129, 130, + 131, 132, -1, -1, 135, 136, 137, 138, 139, -1, + 141, 142, 143, -1, 145, 146, 147, -1, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + -1, 162, -1, 164, 165, 166, 167, -1, 169, -1, + 171, -1, -1, -1, 175, 176, 177, -1, 179, 180, + 181, -1, 183, 184, 185, 186, -1, 188, 189, 190, + 191, 192, 193, 194, -1, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, -1, 209, -1, + 211, 212, 213, 214, 215, 216, 217, 218, -1, 220, + -1, 222, -1, -1, 225, -1, 227, 228, 229, -1, + 231, 232, 233, -1, -1, 236, -1, 238, -1, -1, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, + 281, -1, 283, 284, 285, 286, 287, 288, -1, 290, + 291, -1, -1, 294, 295, 296, -1, -1, 299, 300, + 301, -1, 303, -1, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, -1, -1, -1, + -1, 322, 323, 324, -1, 326, 327, 328, 329, 330, + 331, -1, 333, 334, 335, 336, 337, 338, -1, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, -1, 365, 366, -1, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, -1, -1, 387, 388, 389, 390, + 391, 392, 393, 394, 395, -1, -1, 398, 399, 400, + 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, -1, + 421, 422, -1, 424, -1, 426, 427, 428, 429, 430, + -1, 432, 433, 434, -1, -1, 437, 438, 439, 440, + 441, -1, 443, 444, 445, 446, 447, 448, 449, 450, + -1, -1, 453, 454, 455, -1, -1, 458, 459, 460, + 461, -1, 463, 464, 465, 466, 467, 468, 469, 470, + -1, 472, -1, 474, 475, 476, 477, 478, 479, 480, + -1, -1, 483, -1, -1, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, + -1, -1, -1, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, + -1, 38, -1, -1, 41, -1, 43, 44, 45, -1, + 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, + 57, 58, -1, 60, 61, 62, 63, 64, 65, -1, + -1, 68, 69, 70, 71, 72, 73, 74, -1, 76, + 77, 78, 79, -1, -1, 82, -1, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, + 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, -1, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, + 117, -1, 119, -1, 121, 122, 123, 124, 125, 126, + -1, -1, 129, 130, 131, 132, -1, -1, 135, 136, + 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, + 147, -1, 149, 150, 151, 152, -1, 154, 155, 156, + 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, + 167, -1, 169, -1, 171, 172, -1, 174, 175, 176, + 177, 178, 179, 180, 181, -1, -1, -1, 185, 186, + -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, -1, 209, 210, -1, 212, 213, 214, 215, 216, + 217, 218, -1, 220, -1, 222, 223, 224, 225, 226, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, + 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, + -1, 278, 279, 280, 281, -1, -1, 284, 285, 286, + 287, 288, -1, 290, 291, -1, -1, 294, 295, 296, + -1, -1, 299, 300, -1, 302, 303, 304, -1, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, -1, -1, -1, -1, 322, 323, -1, 325, 326, + 327, -1, 329, 330, 331, -1, 333, 334, 335, 336, + 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, + 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, + 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 3, -1, + 417, -1, -1, -1, 421, 422, -1, 424, 425, 426, + 427, 428, 429, 430, -1, 432, 433, 434, -1, -1, + 437, 438, -1, 440, -1, -1, 443, 444, 445, 446, + 447, 448, 449, 450, 451, -1, 453, 454, 455, 456, + -1, 458, 459, 460, 461, -1, 463, 464, 465, 466, + 467, -1, 469, 470, -1, 472, 473, 474, 475, 476, + 477, 478, 479, 480, -1, -1, 483, -1, -1, 486, + 487, 488, 489, 490, 491, 3, -1, 5, -1, -1, + -1, -1, -1, -1, -1, -1, 503, 504, 505, 506, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 44, 45, -1, -1, + 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, + 58, -1, 60, 61, 62, 63, 64, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, -1, -1, 84, 85, 86, 87, + 88, 89, -1, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + -1, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, -1, -1, -1, 175, 176, 177, + -1, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, -1, -1, 225, -1, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, -1, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, -1, 272, 273, 274, 275, 276, -1, + 278, 279, -1, 281, -1, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, -1, 303, -1, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, -1, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, -1, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, -1, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, -1, 424, -1, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, -1, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, -1, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 3, + -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 44, 45, -1, -1, 48, 49, -1, 51, 52, 53, + 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, + 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, -1, -1, + -1, 175, 176, 177, -1, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, -1, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, 293, + 294, 295, 296, -1, -1, 299, 300, 301, -1, 303, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, -1, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, -1, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, -1, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 3, -1, 5, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 44, 45, -1, -1, 48, 49, + -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, + 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, -1, -1, 84, 85, 86, 87, 88, 89, + -1, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, -1, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, -1, -1, -1, 175, 176, 177, -1, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, + 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, -1, -1, 225, -1, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, -1, 238, -1, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, 272, 273, 274, 275, 276, -1, 278, 279, + -1, 281, -1, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, 293, 294, 295, 296, -1, -1, 299, + 300, 301, -1, 303, -1, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, -1, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, -1, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, -1, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, -1, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, -1, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, -1, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 3, -1, 5, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 44, 45, + -1, -1, 48, 49, -1, 51, 52, 53, 54, 55, + -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, -1, -1, 84, 85, + 86, 87, 88, 89, -1, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, -1, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, -1, -1, -1, 175, + 176, 177, -1, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, -1, -1, 225, + -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, -1, 238, -1, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, + 276, -1, 278, 279, -1, 281, -1, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, 301, -1, 303, -1, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, -1, -1, -1, -1, 322, 323, 324, -1, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, + 366, -1, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, -1, 398, 399, 400, 401, -1, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, -1, -1, 421, 422, -1, 424, -1, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, 439, 440, 441, -1, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + -1, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, -1, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 3, -1, 5, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 44, 45, -1, -1, 48, 49, -1, 51, + 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, + 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, 80, -1, + -1, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, -1, 119, -1, 121, + 122, 123, 124, 125, 126, -1, -1, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + -1, -1, -1, 175, 176, 177, -1, 179, 180, 181, + -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, -1, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, + 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, + 232, 233, -1, -1, 236, -1, 238, -1, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, + 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, + -1, 283, 284, 285, 286, 287, 288, -1, 290, 291, + -1, 293, 294, 295, 296, -1, -1, 299, 300, 301, + -1, 303, -1, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, -1, -1, -1, -1, + 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, -1, 365, 366, -1, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, -1, -1, 387, 388, 389, 390, 391, + 392, 393, 394, 395, -1, -1, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, -1, -1, 421, + 422, -1, 424, -1, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, + -1, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 454, 455, -1, -1, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 3, -1, 5, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 44, 45, -1, -1, + 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, + 58, -1, 60, 61, 62, 63, 64, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, -1, -1, 84, 85, 86, 87, + 88, 89, -1, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + -1, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, -1, -1, -1, 175, 176, 177, + -1, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, -1, -1, 225, -1, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, -1, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, -1, 272, 273, 274, 275, 276, -1, + 278, 279, -1, 281, -1, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, -1, 303, -1, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, -1, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, -1, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, -1, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, 423, 424, -1, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, -1, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, -1, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 3, + -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 44, 45, -1, -1, 48, 49, -1, 51, 52, 53, + 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, + 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, -1, -1, + -1, 175, 176, 177, -1, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, -1, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, -1, 303, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, -1, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, -1, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, -1, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 3, -1, 5, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 44, 45, -1, -1, 48, 49, + -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, + 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, -1, -1, 84, 85, 86, 87, 88, 89, + -1, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, -1, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, -1, -1, -1, 175, 176, 177, -1, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, + 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, -1, -1, 225, -1, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, -1, 238, -1, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, 272, 273, 274, 275, 276, -1, 278, 279, + -1, 281, -1, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, + 300, 301, -1, 303, -1, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, -1, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, -1, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, -1, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, -1, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, -1, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, -1, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 44, 45, + -1, -1, 48, 49, -1, 51, 52, 53, 54, 55, + -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, -1, -1, 84, 85, + 86, 87, 88, 89, -1, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, -1, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, -1, -1, -1, 175, + 176, 177, -1, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, -1, -1, 225, + -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, -1, 238, -1, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, + 276, -1, 278, 279, -1, 281, -1, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, 301, -1, 303, -1, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, -1, -1, -1, -1, 322, 323, 324, -1, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, + 366, -1, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, -1, 398, 399, 400, 401, -1, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, -1, -1, 421, 422, -1, 424, -1, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, 439, 440, 441, -1, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + -1, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, -1, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 3, -1, 5, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 44, 45, -1, -1, 48, 49, -1, 51, + 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, + 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, 80, -1, + -1, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, -1, 119, -1, 121, + 122, 123, 124, 125, 126, -1, -1, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + -1, -1, -1, 175, 176, 177, -1, 179, 180, 181, + -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, -1, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, + 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, + 232, 233, -1, -1, 236, -1, 238, -1, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, + 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, + -1, 283, 284, 285, 286, 287, 288, -1, 290, 291, + -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, + -1, 303, -1, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, -1, -1, -1, -1, + 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, -1, 365, 366, -1, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, -1, -1, 387, 388, 389, 390, 391, + 392, 393, 394, 395, -1, -1, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, -1, -1, 421, + 422, -1, 424, -1, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, + -1, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 454, 455, -1, -1, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 3, -1, 5, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 44, 45, -1, -1, + 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, + 58, -1, 60, 61, 62, 63, 64, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, -1, -1, 84, 85, 86, 87, + 88, 89, -1, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + -1, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, -1, -1, -1, 175, 176, 177, + -1, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, -1, -1, 225, -1, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, -1, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, -1, 272, 273, 274, 275, 276, -1, + 278, 279, -1, 281, -1, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, -1, 303, -1, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, -1, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, -1, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, -1, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, -1, 424, -1, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, -1, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, -1, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 3, + -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 44, 45, -1, -1, 48, 49, -1, 51, 52, 53, + 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, + 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, -1, -1, + -1, 175, 176, 177, -1, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, -1, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, -1, 303, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, -1, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, -1, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, -1, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 3, -1, 5, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 44, 45, -1, -1, 48, 49, + -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, + 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, -1, -1, 84, 85, 86, 87, 88, 89, + -1, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, -1, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, -1, -1, -1, 175, 176, 177, -1, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, + 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, -1, -1, 225, -1, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, -1, 238, -1, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, 272, 273, 274, 275, 276, -1, 278, 279, + -1, 281, -1, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, + 300, 301, -1, 303, -1, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, -1, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, -1, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, -1, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, -1, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, -1, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, -1, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 3, -1, 5, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 44, 45, + -1, -1, 48, 49, -1, 51, 52, 53, 54, 55, + -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, -1, -1, 84, 85, + 86, 87, 88, 89, -1, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, -1, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, -1, -1, -1, 175, + 176, 177, -1, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, -1, -1, 225, + -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, -1, 238, -1, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, + 276, -1, 278, 279, -1, 281, -1, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, 301, -1, 303, -1, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, -1, -1, -1, -1, 322, 323, 324, -1, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, + 366, -1, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, -1, 398, 399, 400, 401, -1, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, -1, -1, 421, 422, -1, 424, -1, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, 439, 440, 441, -1, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + -1, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, -1, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 3, -1, 5, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 44, 45, -1, -1, 48, 49, -1, 51, + 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, + 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, 80, -1, + -1, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, -1, 119, -1, 121, + 122, 123, 124, 125, 126, -1, -1, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + -1, -1, -1, 175, 176, 177, -1, 179, 180, 181, + -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, -1, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, + 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, + 232, 233, -1, -1, 236, -1, 238, -1, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, + 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, + -1, 283, 284, 285, 286, 287, 288, -1, 290, 291, + -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, + -1, 303, -1, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, -1, -1, -1, -1, + 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, -1, 365, 366, -1, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, -1, -1, 387, 388, 389, 390, 391, + 392, 393, 394, 395, -1, -1, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, -1, -1, 421, + 422, -1, 424, -1, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, + -1, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 454, 455, -1, -1, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 3, -1, 5, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 44, 45, -1, -1, + 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, + 58, -1, 60, 61, 62, 63, 64, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, -1, -1, 84, 85, 86, 87, + 88, 89, -1, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + -1, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, -1, -1, -1, 175, 176, 177, + -1, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, -1, -1, 225, -1, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, -1, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, -1, 272, 273, 274, 275, 276, -1, + 278, 279, -1, 281, -1, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, -1, 303, -1, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, -1, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, -1, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, -1, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, -1, 424, -1, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, -1, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, -1, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, -1, 41, -1, -1, + 44, 45, -1, -1, 48, 49, -1, 51, 52, 53, + 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, + 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, -1, -1, + -1, 175, 176, 177, -1, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, -1, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, -1, 303, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, -1, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, -1, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, -1, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, + -1, 41, -1, -1, 44, 45, -1, -1, 48, 49, + -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, + 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, -1, -1, 84, 85, 86, 87, 88, 89, + -1, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, -1, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, -1, -1, -1, 175, 176, 177, -1, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, + 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, -1, -1, 225, -1, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, -1, 238, -1, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, 272, 273, 274, 275, 276, -1, 278, 279, + -1, 281, -1, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, + 300, 301, -1, 303, -1, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, -1, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, -1, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, -1, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, -1, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, -1, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, -1, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 44, 45, + -1, -1, 48, 49, -1, 51, 52, 53, 54, 55, + -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, -1, -1, 84, 85, + 86, 87, 88, 89, -1, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, -1, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, -1, -1, -1, 175, + 176, 177, -1, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, -1, -1, 225, + -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, -1, 238, -1, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, + 276, -1, 278, 279, -1, 281, -1, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, 301, -1, 303, -1, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, -1, -1, -1, -1, 322, 323, 324, -1, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, + 366, -1, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, -1, 398, 399, 400, 401, -1, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, -1, -1, 421, 422, -1, 424, -1, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, 439, 440, 441, -1, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + -1, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, -1, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 3, -1, 5, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 44, 45, -1, -1, 48, 49, -1, 51, + 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, + 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, 80, -1, + -1, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, -1, 119, -1, 121, + 122, 123, 124, 125, 126, -1, -1, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + -1, -1, -1, 175, 176, 177, -1, 179, 180, 181, + -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, -1, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, + 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, + 232, 233, -1, -1, 236, -1, 238, -1, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, + 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, + -1, 283, 284, 285, 286, 287, 288, -1, 290, 291, + -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, + -1, 303, -1, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, -1, -1, -1, -1, + 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, -1, 365, 366, -1, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, -1, -1, 387, 388, 389, 390, 391, + 392, 393, 394, 395, -1, -1, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, -1, -1, 421, + 422, -1, 424, -1, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, + -1, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 454, 455, -1, -1, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 3, -1, 5, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 44, 45, -1, -1, + 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, + 58, -1, 60, 61, 62, 63, 64, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, -1, -1, 84, 85, 86, 87, + 88, 89, -1, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + -1, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, -1, -1, -1, 175, 176, 177, + -1, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, -1, -1, 225, -1, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, -1, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, -1, 272, 273, 274, 275, 276, -1, + 278, 279, -1, 281, -1, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, -1, 303, -1, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, -1, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, -1, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, -1, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, -1, 424, -1, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, -1, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, -1, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 3, + -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 44, 45, -1, -1, 48, 49, -1, 51, 52, 53, + 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, + 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, -1, -1, + -1, 175, 176, 177, -1, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, -1, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, -1, 303, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, -1, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, -1, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, -1, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 3, -1, 5, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 44, 45, -1, -1, 48, 49, + -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, + 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, -1, -1, 84, 85, 86, 87, 88, 89, + -1, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, -1, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, -1, -1, -1, 175, 176, 177, -1, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, + 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, -1, -1, 225, -1, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, -1, 238, -1, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, 272, 273, 274, 275, 276, -1, 278, 279, + -1, 281, -1, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, + 300, 301, -1, 303, -1, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, -1, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, -1, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, -1, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, -1, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, -1, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, -1, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 3, -1, 5, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 44, 45, + -1, -1, 48, 49, -1, 51, 52, 53, 54, 55, + -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, -1, -1, 84, 85, + 86, 87, 88, 89, -1, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, -1, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, -1, -1, -1, 175, + 176, 177, -1, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, -1, -1, 225, + -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, -1, 238, -1, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, + 276, -1, 278, 279, -1, 281, -1, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, 301, -1, 303, -1, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, -1, -1, -1, -1, 322, 323, 324, -1, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, + 366, -1, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, -1, 398, 399, 400, 401, -1, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, -1, -1, 421, 422, -1, 424, -1, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, 439, 440, 441, -1, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + -1, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, -1, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, - -1, -1, 47, 48, -1, 50, 51, 52, 53, 54, - -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, - -1, -1, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, -1, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, -1, -1, -1, 174, - 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, -1, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, -1, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, -1, 224, - -1, 226, 227, 228, 229, 230, 231, -1, -1, 234, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, -1, 270, 271, 272, 273, 274, - -1, 276, 277, -1, 279, -1, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, -1, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, -1, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - -1, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - -1, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, -1, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, -1, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, 44, -1, -1, 47, 48, -1, 50, 51, 52, - 53, 54, -1, 56, 57, -1, 59, 60, 61, 62, - 63, 64, -1, -1, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, - 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, -1, 102, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, 38, -1, -1, -1, + -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, + 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, + 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, -1, -1, + 82, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, -1, 119, -1, 121, + 122, 123, 124, 125, 126, -1, -1, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, + 152, -1, 154, 155, 156, 157, 158, 159, -1, -1, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + 172, -1, 174, 175, 176, -1, 178, 179, 180, 181, + -1, -1, -1, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, 210, -1, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, + 222, 223, 224, 225, 226, 227, 228, 229, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, -1, -1, 278, 279, 280, 281, + -1, -1, 284, 285, 286, 287, 288, -1, 290, 291, + -1, -1, 294, 295, 296, -1, -1, 299, 300, -1, + 302, 303, 304, -1, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, -1, -1, -1, -1, + 322, 323, -1, 325, 326, 327, -1, 329, 330, 331, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, -1, -1, -1, 421, + 422, -1, 424, 425, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, -1, 440, -1, + -1, 443, 444, 445, 446, 447, 448, 449, 450, 451, + -1, 453, 454, 455, 456, -1, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, -1, 469, 470, -1, + 472, 473, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, + 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, + -1, 503, 504, 505, 506, -1, -1, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, + 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 44, 45, -1, -1, 48, 49, -1, 51, 52, + 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, + 63, 64, 65, -1, -1, 68, 69, 70, 71, 72, + 73, 74, -1, 76, 77, 78, 79, 80, -1, -1, + -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, -1, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, -1, -1, - -1, 174, 175, 176, -1, 178, 179, 180, -1, 182, - 183, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, -1, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, -1, 210, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, -1, - -1, 224, -1, 226, 227, 228, 229, 230, 231, -1, - -1, 234, -1, 236, -1, -1, 239, 240, 241, 242, + 113, 114, 115, 116, 117, -1, 119, -1, 121, 122, + 123, 124, 125, 126, -1, -1, 129, 130, 131, 132, + -1, -1, 135, 136, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, -1, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, + -1, 164, 165, 166, 167, -1, 169, -1, 171, -1, + -1, -1, 175, 176, 177, -1, 179, 180, 181, -1, + 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, + 193, 194, -1, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, -1, 209, -1, 211, 212, + 213, 214, 215, 216, 217, 218, -1, 220, -1, 222, + -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, + 233, -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, -1, 270, 271, 272, - 273, 274, -1, 276, 277, -1, 279, -1, 281, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, 299, -1, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, 322, - -1, 324, 325, 326, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, -1, 366, 367, 368, 369, 370, 371, 372, + 263, 264, 265, 266, 267, 268, 269, 270, -1, 272, + 273, 274, 275, 276, -1, 278, 279, -1, 281, -1, + 283, 284, 285, 286, 287, 288, -1, 290, 291, -1, + -1, 294, 295, 296, -1, -1, 299, 300, 301, -1, + 303, -1, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, -1, -1, -1, -1, 322, + 323, 324, -1, 326, 327, 328, 329, 330, 331, -1, + 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, -1, 385, 386, 387, 388, 389, 390, 391, 392, - 393, -1, -1, 396, 397, 398, 399, -1, 401, 402, + 383, 384, -1, -1, 387, 388, 389, 390, 391, 392, + 393, 394, 395, -1, -1, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, -1, -1, 419, 420, -1, 422, - -1, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, 437, 438, 439, -1, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, -1, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, 466, 467, 468, -1, 470, -1, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 413, 414, 415, 416, 417, 418, -1, -1, 421, 422, + -1, 424, -1, 426, 427, 428, 429, 430, -1, 432, + 433, 434, -1, -1, 437, 438, 439, 440, 441, -1, + 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, + 453, 454, 455, -1, -1, 458, 459, 460, 461, -1, + 463, 464, 465, 466, 467, 468, 469, 470, -1, 472, + -1, 474, 475, 476, 477, 478, 479, 480, -1, -1, + 483, -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, -1, 40, - -1, -1, 43, 44, -1, -1, 47, 48, -1, 50, - 51, 52, 53, 54, -1, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, -1, 67, 68, 69, 70, - 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, - -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, - 91, 92, -1, 94, 95, 96, 97, 98, 99, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, -1, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, -1, - 161, -1, 163, 164, 165, 166, -1, 168, -1, 170, - -1, -1, -1, 174, 175, 176, -1, 178, 179, 180, - -1, 182, 183, 184, 185, -1, 187, 188, 189, 190, - 191, 192, 193, -1, 195, 196, 197, 198, -1, 200, - 201, 202, 203, 204, 205, 206, -1, 208, -1, 210, - 211, 212, 213, 214, 215, 216, 217, -1, 219, -1, - 221, -1, -1, 224, -1, 226, 227, 228, 229, 230, - 231, -1, -1, 234, -1, 236, -1, -1, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, -1, 270, - 271, 272, 273, 274, -1, 276, 277, -1, 279, -1, - 281, 282, 283, 284, 285, 286, -1, 288, 289, -1, - -1, 292, 293, 294, -1, -1, 297, 298, 299, -1, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, -1, -1, -1, -1, 320, - 321, 322, -1, 324, 325, 326, 327, 328, 329, -1, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, -1, 363, 364, -1, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, -1, -1, 385, 386, 387, 388, 389, -1, - 391, 392, 393, -1, -1, 396, 397, 398, 399, -1, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, -1, -1, 419, 420, - -1, 422, -1, 424, 425, 426, 427, 428, -1, 430, - 431, 432, -1, -1, 435, 436, 437, 438, 439, -1, - 441, 442, 443, 444, 445, 446, 447, 448, -1, -1, - 451, 452, 453, -1, -1, 456, 457, 458, 459, -1, - 461, 462, 463, 464, 465, 466, 467, 468, -1, 470, - -1, 472, 473, 474, 475, 476, 477, 478, -1, -1, - 481, -1, -1, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 3, -1, -1, -1, -1, -1, + 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, 44, -1, -1, 47, 48, - -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, - 59, 60, 61, 62, 63, 64, -1, -1, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, - -1, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, -1, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, -1, -1, -1, 174, 175, 176, -1, 178, - 179, 180, -1, 182, 183, 184, 185, -1, 187, 188, - 189, 190, 191, 192, 193, -1, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - -1, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, -1, -1, 224, -1, 226, 227, 228, - 229, 230, 231, -1, -1, 234, -1, 236, -1, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + -1, -1, -1, -1, 23, 24, 25, 26, 27, 28, + 29, 30, -1, 32, 33, 34, -1, -1, -1, 38, + -1, -1, -1, -1, 43, 44, 45, -1, 47, 48, + 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, + -1, 60, 61, 62, 63, 64, 65, -1, -1, 68, + 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, + 79, -1, -1, 82, -1, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, + 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, + 119, -1, 121, 122, 123, 124, 125, 126, -1, -1, + 129, 130, 131, 132, -1, -1, 135, 136, 137, 138, + 139, -1, 141, 142, 143, -1, 145, 146, 147, -1, + 149, 150, 151, 152, -1, 154, 155, 156, 157, 158, + 159, -1, -1, 162, -1, 164, 165, 166, 167, -1, + 169, -1, 171, 172, -1, 174, 175, 176, -1, 178, + 179, 180, 181, -1, -1, -1, 185, 186, -1, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, + 209, 210, -1, 212, 213, 214, 215, 216, 217, 218, + -1, 220, -1, 222, 223, 224, 225, 226, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - -1, 270, 271, 272, 273, 274, -1, 276, 277, -1, - 279, -1, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, -1, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, -1, 366, 367, 368, + 269, 270, 271, 272, 273, 274, 275, -1, -1, 278, + 279, 280, 281, -1, -1, 284, 285, 286, 287, 288, + -1, 290, 291, -1, -1, 294, 295, 296, -1, -1, + 299, 300, -1, 302, 303, 304, -1, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, -1, + -1, -1, -1, 322, 323, -1, 325, 326, 327, -1, + 329, 330, 331, -1, 333, 334, 335, 336, 337, 338, + -1, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, -1, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, -1, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, -1, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, -1, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, -1, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, -1, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, - 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, 44, -1, -1, - 47, 48, -1, 50, 51, 52, 53, 54, -1, 56, - 57, -1, 59, 60, 61, 62, 63, 64, -1, -1, - 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, 90, 91, 92, -1, 94, 95, 96, - 97, 98, 99, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - -1, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, -1, 161, -1, 163, 164, 165, 166, - -1, 168, -1, 170, -1, -1, -1, 174, 175, 176, - -1, 178, 179, 180, -1, 182, 183, 184, 185, -1, - 187, 188, 189, 190, 191, 192, 193, -1, 195, 196, - 197, 198, -1, 200, 201, 202, 203, 204, 205, 206, - -1, 208, -1, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, -1, 221, -1, -1, 224, -1, 226, - 227, 228, 229, 230, 231, -1, -1, 234, -1, 236, - -1, -1, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, -1, 276, - 277, -1, 279, -1, 281, 282, 283, 284, 285, 286, - -1, 288, 289, -1, -1, 292, 293, 294, -1, -1, - 297, 298, 299, -1, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, -1, - -1, -1, -1, 320, 321, 322, -1, 324, 325, 326, - 327, 328, 329, -1, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, -1, 363, 364, -1, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, 393, -1, -1, 396, - 397, 398, 399, -1, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - -1, -1, 419, 420, -1, 422, -1, 424, 425, 426, - 427, 428, -1, 430, 431, 432, -1, -1, 435, 436, - 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, - 447, 448, -1, -1, 451, 452, 453, -1, -1, 456, - 457, 458, 459, -1, 461, 462, 463, 464, 465, 466, - 467, 468, -1, 470, -1, 472, 473, 474, 475, 476, - 477, 478, -1, -1, 481, -1, -1, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 3, -1, + 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, + 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, -1, + -1, -1, 421, 422, -1, 424, 425, 426, 427, 428, + 429, 430, -1, 432, 433, 434, -1, -1, 437, 438, + -1, 440, -1, -1, 443, 444, 445, 446, 447, 448, + 449, 450, 451, -1, 453, 454, 455, 456, -1, 458, + 459, 460, 461, -1, 463, 464, 465, 466, 467, -1, + 469, 470, -1, 472, 473, 474, 475, 476, 477, 478, + 479, 480, -1, -1, 483, -1, -1, 486, 487, 488, + 489, 490, 491, 3, -1, 5, -1, -1, -1, -1, + -1, -1, -1, -1, 503, 504, 505, 506, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 44, 45, -1, -1, 48, 49, + -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, + 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, -1, -1, 84, 85, 86, 87, 88, 89, + -1, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, -1, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, -1, -1, -1, 175, 176, 177, -1, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, + 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, -1, -1, 225, -1, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, -1, 238, -1, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, 272, 273, 274, 275, 276, -1, 278, 279, + -1, 281, -1, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, + 300, 301, -1, 303, -1, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, -1, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, -1, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, -1, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, -1, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, -1, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, -1, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, - 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, - -1, -1, 47, 48, -1, 50, 51, 52, 53, 54, - -1, 56, 57, -1, 59, 60, 61, 62, 63, 64, - -1, -1, 67, 68, 69, 70, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, -1, 90, 91, 92, -1, 94, - 95, 96, 97, 98, 99, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, -1, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, -1, 161, -1, 163, 164, - 165, 166, -1, 168, -1, 170, -1, -1, -1, 174, - 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, - 185, -1, 187, 188, 189, 190, 191, 192, 193, -1, - 195, 196, 197, 198, -1, 200, 201, 202, 203, 204, - 205, 206, -1, 208, -1, 210, 211, 212, 213, 214, - 215, 216, 217, -1, 219, -1, 221, -1, -1, 224, - -1, 226, 227, 228, 229, 230, 231, -1, -1, 234, - -1, 236, -1, -1, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, -1, 270, 271, 272, 273, 274, - -1, 276, 277, -1, 279, -1, 281, 282, 283, 284, - 285, 286, -1, 288, 289, -1, -1, 292, 293, 294, - -1, -1, 297, 298, 299, -1, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, -1, -1, -1, -1, 320, 321, 322, -1, 324, - 325, 326, 327, 328, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, - -1, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, - -1, 396, 397, 398, 399, -1, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, -1, -1, 419, 420, -1, 422, -1, 424, - 425, 426, 427, 428, -1, 430, 431, 432, -1, -1, - 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, - 445, 446, 447, 448, -1, -1, 451, 452, 453, -1, - -1, 456, 457, 458, 459, -1, 461, 462, 463, 464, - 465, 466, 467, 468, -1, 470, -1, 472, 473, 474, - 475, 476, 477, 478, -1, -1, 481, -1, -1, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, - 33, -1, -1, -1, 37, -1, -1, -1, -1, 42, - 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, - -1, 54, 55, 56, 57, -1, 59, 60, 61, 62, - 63, 64, -1, -1, 67, 68, 69, 70, 71, 72, - 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -1, 94, 95, 96, 97, 98, 99, -1, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, -1, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, -1, - 153, 154, 155, 156, 157, 158, -1, -1, 161, -1, - 163, 164, 165, 166, -1, 168, -1, 170, 171, -1, - 173, 174, 175, 176, 177, 178, 179, 180, -1, -1, - -1, 184, 185, -1, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, -1, 200, 201, 202, - 203, 204, 205, 206, -1, 208, 209, -1, 211, 212, - 213, 214, 215, 216, 217, -1, 219, -1, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, - -1, 234, 235, 236, 237, -1, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, -1, -1, 276, 277, 278, 279, -1, -1, 282, - 283, 284, 285, 286, -1, 288, 289, -1, -1, 292, - 293, 294, -1, -1, 297, 298, -1, 300, 301, 302, - -1, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, -1, -1, -1, -1, 320, 321, -1, - 323, 324, 325, -1, 327, 328, 329, -1, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, - 363, 364, 365, 366, 367, 368, -1, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - -1, 384, 385, 386, 387, 388, 389, 390, -1, 392, - 393, -1, 395, 396, 397, 398, 399, -1, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, -1, -1, -1, 419, 420, -1, 422, - 423, 424, 425, 426, 427, 428, -1, 430, 431, 432, - -1, -1, 435, 436, -1, 438, -1, -1, 441, 442, - 443, 444, 445, 446, 447, 448, -1, -1, 451, 452, - 453, 454, -1, 456, 457, 458, 459, -1, 461, 462, - 463, 464, 465, -1, 467, 468, -1, 470, 471, 472, - 473, 474, 475, 476, 477, 478, -1, -1, 481, -1, - -1, 484, 485, 486, 487, 488, 489, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 501, 502, - 503, 504, -1, -1, -1, -1, 22, 23, 24, 25, - 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, - -1, 37, -1, -1, -1, -1, 42, 43, 44, -1, - 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, - 56, 57, -1, 59, 60, 61, 62, 63, 64, -1, - -1, 67, 68, 69, 70, 71, 72, 73, -1, 75, - 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, -1, 94, 95, - 96, 97, 98, 99, -1, 101, 102, 103, 104, 105, + -1, -1, -1, -1, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 44, 45, + -1, -1, 48, 49, -1, 51, 52, 53, 54, 55, + -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, -1, -1, 84, 85, + 86, 87, 88, 89, -1, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, - -1, -1, 128, 129, 130, 131, -1, -1, 134, 135, - 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, - 146, -1, 148, 149, 150, 151, -1, 153, 154, 155, - 156, 157, 158, -1, -1, 161, -1, 163, 164, 165, - 166, -1, 168, -1, 170, 171, -1, 173, 174, 175, - -1, 177, 178, 179, 180, -1, -1, -1, 184, 185, - -1, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, -1, 200, 201, 202, 203, 204, 205, - 206, -1, 208, 209, -1, 211, 212, 213, 214, 215, - 216, 217, -1, 219, -1, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, -1, -1, 234, 235, - 236, 237, -1, 239, 240, 241, 242, 243, 244, 245, - 246, -1, 248, 249, 250, 251, 252, 253, 254, 255, + 116, 117, -1, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, -1, -1, -1, 175, + 176, 177, -1, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, -1, -1, 225, + -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, -1, 238, -1, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, -1, -1, - 276, 277, 278, 279, -1, -1, 282, 283, 284, 285, - 286, -1, 288, 289, -1, -1, 292, 293, 294, -1, - -1, 297, 298, -1, 300, 301, 302, -1, 304, 305, + 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, + 276, -1, 278, 279, -1, 281, -1, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, 301, -1, 303, -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - -1, -1, -1, -1, 320, 321, -1, 323, 324, 325, - -1, 327, 328, 329, -1, 331, 332, 333, 334, 335, - 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, - 366, 367, 368, -1, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, -1, 384, 385, - 386, 387, 388, 389, 390, -1, 392, 393, -1, 395, - 396, 397, 398, 399, -1, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, -1, 415, - -1, -1, -1, 419, 420, -1, 422, 423, 424, 425, - 426, 427, 428, -1, 430, 431, 432, -1, -1, 435, - 436, -1, 438, -1, -1, 441, 442, 443, 444, 445, - 446, 447, 448, -1, -1, 451, 452, 453, 454, -1, - 456, 457, 458, 459, -1, 461, 462, 463, 464, 465, - -1, 467, 468, -1, 470, 471, 472, 473, 474, 475, - 476, 477, 478, -1, -1, 481, -1, -1, 484, 485, - 486, 487, 488, 489, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 501, 502, 503, 504, -1, - -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, - 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, 44, -1, -1, 47, 48, - -1, 50, 51, 52, 53, 54, -1, 56, 57, -1, - 59, 60, 61, 62, 63, 64, -1, -1, 67, 68, - 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, - -1, 90, 91, 92, -1, 94, 95, 96, 97, 98, - 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, -1, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, -1, 161, -1, 163, 164, 165, 166, -1, 168, - -1, 170, -1, -1, -1, 174, 175, 176, -1, 178, - 179, 180, -1, 182, 183, -1, 185, -1, 187, 188, - 189, 190, 191, 192, 193, -1, 195, 196, 197, 198, - -1, 200, 201, 202, 203, 204, 205, 206, -1, 208, - -1, 210, 211, 212, 213, 214, 215, 216, 217, -1, - 219, -1, 221, -1, -1, 224, -1, 226, 227, 228, - 229, 230, 231, -1, -1, 234, -1, 236, -1, -1, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - -1, 270, 271, 272, 273, 274, -1, 276, 277, -1, - 279, -1, 281, 282, 283, 284, 285, 286, -1, 288, - 289, -1, -1, 292, 293, 294, -1, -1, 297, 298, - 299, -1, 301, -1, 303, 304, 305, 306, 307, 308, - 309, -1, 311, 312, 313, 314, 315, -1, -1, -1, - -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, - 329, -1, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, -1, 342, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 363, 364, -1, 366, 367, 368, - 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, 385, 386, 387, 388, - 389, 390, 391, 392, 393, -1, -1, 396, 397, 398, - 399, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, - 419, 420, -1, 422, -1, 424, 425, 426, 427, 428, - -1, 430, 431, 432, -1, -1, 435, 436, 437, 438, - 439, -1, 441, 442, 443, 444, 445, 446, 447, 448, - -1, -1, 451, 452, 453, -1, -1, 456, 457, 458, - 459, -1, 461, 462, 463, 464, 465, 466, 467, 468, - -1, 470, -1, 472, 473, 474, 475, 476, 477, 478, - -1, -1, 481, -1, -1, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 22, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 32, -1, 34, 35, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 98, -1, 100, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 111, -1, -1, -1, -1, + 316, 317, -1, -1, -1, -1, 322, 323, 324, -1, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, + 366, -1, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, -1, 398, 399, 400, 401, -1, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, -1, -1, 421, 422, -1, 424, -1, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, 439, 440, 441, -1, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + -1, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, -1, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 126, 127, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 137, -1, -1, -1, -1, -1, 143, -1, -1, - -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 44, 45, -1, -1, 48, 49, -1, 51, + 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, + 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, 80, -1, + -1, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, -1, 119, -1, 121, + 122, 123, 124, 125, 126, -1, -1, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + -1, -1, -1, 175, 176, 177, -1, 179, 180, 181, + -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, -1, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, + 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, + 232, 233, -1, -1, 236, -1, 238, -1, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, + 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, + -1, 283, 284, 285, 286, 287, 288, -1, 290, 291, + -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, + -1, 303, -1, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, -1, -1, -1, -1, + 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, -1, 365, 366, -1, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, -1, -1, 387, 388, 389, 390, 391, + 392, 393, 394, 395, -1, -1, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, -1, -1, 421, + 422, -1, 424, -1, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, + -1, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 454, 455, -1, -1, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 44, 45, -1, -1, + 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, + 58, -1, 60, 61, 62, 63, 64, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, -1, -1, 84, 85, 86, 87, + 88, 89, -1, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + -1, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, -1, -1, -1, 175, 176, 177, + -1, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, -1, -1, 225, -1, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, -1, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, -1, 272, 273, 274, 275, 276, -1, + 278, 279, -1, 281, -1, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, -1, 303, -1, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, -1, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, -1, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, -1, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, -1, 424, -1, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, -1, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, -1, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 44, 45, -1, -1, 48, 49, -1, 51, 52, 53, + 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, + 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, -1, -1, + -1, 175, 176, 177, -1, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, -1, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, -1, 303, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, -1, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, -1, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, -1, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 44, 45, -1, -1, 48, 49, + -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, + 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, -1, -1, 84, 85, 86, 87, 88, 89, + -1, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, -1, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, -1, -1, -1, 175, 176, 177, -1, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, + 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, -1, -1, 225, -1, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, -1, 238, -1, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, 272, 273, 274, 275, 276, -1, 278, 279, + -1, 281, -1, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, + 300, 301, -1, 303, -1, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, -1, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, -1, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, -1, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, -1, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, -1, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, -1, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, + -1, -1, -1, -1, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 44, 45, + -1, -1, 48, 49, -1, 51, 52, 53, 54, 55, + -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, 80, -1, -1, -1, 84, 85, + 86, 87, 88, 89, -1, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, -1, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, -1, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, -1, -1, -1, 175, + 176, 177, -1, 179, 180, 181, -1, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, -1, -1, 225, + -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, -1, 238, -1, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, + 276, -1, 278, 279, -1, 281, -1, 283, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, 301, -1, 303, -1, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, -1, -1, -1, -1, 322, 323, 324, -1, + 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, + 366, -1, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + -1, -1, 398, 399, 400, 401, -1, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, -1, -1, 421, 422, -1, 424, -1, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, 439, 440, 441, -1, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + -1, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 472, -1, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 23, 24, 25, 26, 27, 28, 29, 30, -1, + 32, 33, 34, -1, -1, -1, -1, -1, -1, 41, + -1, -1, 44, 45, -1, -1, 48, 49, -1, 51, + 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, + 62, 63, 64, 65, -1, -1, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, 80, -1, + -1, -1, 84, 85, 86, 87, 88, 89, -1, 91, + 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, -1, 119, -1, 121, + 122, 123, 124, 125, 126, -1, -1, 129, 130, 131, + 132, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, -1, 164, 165, 166, 167, -1, 169, -1, 171, + -1, -1, -1, 175, 176, 177, -1, 179, 180, 181, + -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, + 192, 193, 194, -1, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + 212, 213, 214, 215, 216, 217, 218, -1, 220, -1, + 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, + 232, 233, -1, -1, 236, -1, 238, -1, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, + 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, + -1, 283, 284, 285, 286, 287, 288, -1, 290, 291, + -1, -1, 294, 295, 296, -1, -1, 299, 300, 301, + -1, 303, -1, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, -1, -1, -1, -1, + 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, + -1, 333, 334, 335, 336, 337, 338, -1, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, -1, 365, 366, -1, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, -1, -1, 387, 388, 389, 390, 391, + -1, 393, 394, 395, -1, -1, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, -1, -1, 421, + 422, -1, 424, -1, 426, 427, 428, 429, 430, -1, + 432, 433, 434, -1, -1, 437, 438, 439, 440, 441, + -1, 443, 444, 445, 446, 447, 448, 449, 450, -1, + -1, 453, 454, 455, -1, -1, 458, 459, 460, 461, + -1, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, + -1, 483, -1, -1, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 240, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 44, 45, -1, -1, + 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, + 58, -1, 60, 61, 62, 63, 64, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, -1, -1, 84, 85, 86, 87, + 88, 89, -1, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + -1, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, -1, -1, -1, 175, 176, 177, + -1, 179, 180, 181, -1, 183, 184, 185, 186, -1, + 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, -1, -1, 225, -1, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, -1, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, -1, 272, 273, 274, 275, 276, -1, + 278, 279, -1, 281, -1, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, -1, 303, -1, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, -1, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, -1, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, -1, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, -1, 424, -1, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, -1, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, -1, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, + 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 44, 45, -1, -1, 48, 49, -1, 51, 52, 53, + 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, + 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, -1, 76, 77, 78, 79, 80, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, + -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, -1, 121, 122, 123, + 124, 125, 126, -1, -1, 129, 130, 131, 132, -1, + -1, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, -1, 162, -1, + 164, 165, 166, 167, -1, 169, -1, 171, -1, -1, + -1, 175, 176, 177, -1, 179, 180, 181, -1, 183, + 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, + 194, -1, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, -1, 220, -1, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, -1, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, 281, -1, 283, + 284, 285, 286, 287, 288, -1, 290, 291, -1, -1, + 294, 295, 296, -1, -1, 299, 300, 301, -1, 303, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, -1, -1, -1, -1, 322, 323, + 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, + 334, 335, 336, 337, 338, -1, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + -1, 365, 366, -1, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, -1, -1, 398, 399, 400, 401, -1, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, -1, -1, 421, 422, -1, + 424, -1, 426, 427, 428, 429, 430, -1, 432, 433, + 434, -1, -1, 437, 438, 439, 440, 441, -1, 443, + 444, 445, 446, 447, 448, 449, 450, -1, -1, 453, + 454, 455, -1, -1, 458, 459, 460, 461, -1, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 472, -1, + 474, 475, 476, 477, 478, 479, 480, -1, -1, 483, + -1, -1, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 44, 45, -1, -1, 48, 49, + -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, + 60, 61, 62, 63, 64, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, + 80, -1, -1, -1, 84, 85, 86, 87, 88, 89, + -1, 91, 92, 93, -1, 95, 96, 97, 98, 99, + 100, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + -1, 121, 122, 123, 124, 125, 126, -1, -1, 129, + 130, 131, 132, -1, -1, 135, 136, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, -1, 162, -1, 164, 165, 166, 167, -1, 169, + -1, 171, -1, -1, -1, 175, 176, 177, -1, 179, + 180, 181, -1, 183, 184, 185, 186, -1, 188, 189, + 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, 212, 213, 214, 215, 216, 217, 218, -1, + 220, -1, 222, -1, -1, 225, -1, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, -1, 238, -1, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, 272, 273, 274, 275, 276, -1, 278, 279, + -1, 281, -1, 283, 284, 285, 286, 287, 288, -1, + 290, 291, -1, -1, 294, 295, 296, -1, -1, 299, + 300, 301, -1, 303, -1, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, -1, + -1, -1, 322, 323, 324, -1, 326, 327, 328, 329, + 330, 331, -1, 333, 334, 335, 336, 337, 338, -1, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, -1, 365, 366, -1, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, -1, -1, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, -1, + -1, 421, 422, -1, 424, -1, 426, 427, 428, 429, + 430, -1, 432, 433, 434, -1, -1, 437, 438, 439, + 440, 441, -1, 443, 444, 445, 446, 447, 448, 449, + 450, -1, -1, 453, 454, 455, -1, -1, 458, 459, + 460, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 472, -1, 474, 475, 476, 477, 478, 479, + 480, -1, -1, 483, -1, -1, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 23, 24, 25, + 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, + -1, -1, 38, -1, -1, -1, -1, 43, 44, 45, + -1, 47, 48, 49, 50, 51, 52, 53, -1, 55, + 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, -1, + 76, 77, 78, 79, -1, -1, 82, -1, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, + 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, -1, 119, -1, 121, 122, 123, 124, 125, + 126, -1, -1, 129, 130, 131, 132, -1, -1, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, -1, 149, 150, 151, 152, -1, 154, 155, + 156, 157, 158, 159, -1, -1, 162, -1, 164, 165, + 166, 167, -1, 169, -1, 171, 172, -1, 174, 175, + 176, 177, 178, 179, 180, 181, -1, -1, -1, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, 210, -1, 212, 213, 214, 215, + 216, 217, 218, -1, 220, -1, 222, 223, 224, 225, + 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + -1, -1, 278, 279, 280, 281, -1, -1, 284, 285, + 286, 287, 288, -1, 290, 291, -1, -1, 294, 295, + 296, -1, -1, 299, 300, -1, 302, 303, 304, -1, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, -1, -1, -1, -1, 322, 323, -1, 325, + 326, 327, -1, 329, 330, 331, -1, 333, 334, 335, + 336, 337, 338, -1, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, -1, 365, + 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, -1, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, -1, -1, -1, 421, 422, -1, 424, 425, + 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, + -1, 437, 438, -1, 440, -1, -1, 443, 444, 445, + 446, 447, 448, 449, 450, -1, -1, 453, 454, 455, + 456, -1, 458, 459, 460, 461, -1, 463, 464, 465, + 466, 467, -1, 469, 470, -1, 472, 473, 474, 475, + 476, 477, 478, 479, 480, -1, -1, 483, -1, -1, + 486, 487, 488, 489, 490, 491, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 503, 504, 505, + 506, -1, -1, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, + -1, 38, -1, -1, -1, -1, 43, 44, 45, -1, + 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, + 57, 58, -1, 60, 61, 62, 63, 64, 65, -1, + -1, 68, 69, 70, 71, 72, 73, 74, -1, 76, + 77, 78, 79, -1, -1, 82, -1, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, + 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, -1, 119, -1, 121, 122, 123, 124, 125, 126, + -1, -1, 129, 130, 131, 132, -1, -1, 135, 136, + 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, + 147, -1, 149, 150, 151, 152, -1, 154, 155, 156, + 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, + 167, -1, 169, -1, 171, 172, -1, 174, 175, 176, + -1, 178, 179, 180, 181, -1, -1, -1, 185, 186, + -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, -1, 209, 210, -1, 212, 213, 214, 215, 216, + 217, 218, -1, 220, -1, 222, 223, 224, 225, 226, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, -1, 241, 242, 243, 244, 245, 246, + 247, 248, -1, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, + -1, 278, 279, 280, 281, -1, -1, 284, 285, 286, + 287, 288, -1, 290, 291, -1, -1, 294, 295, 296, + -1, -1, 299, 300, -1, 302, 303, 304, -1, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, -1, -1, -1, -1, 322, 323, -1, 325, 326, + 327, -1, 329, 330, 331, -1, 333, 334, 335, 336, + 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, -1, 365, 366, + 367, 368, 369, 370, -1, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, -1, + 417, -1, -1, -1, 421, 422, -1, 424, 425, 426, + 427, 428, 429, 430, -1, 432, 433, 434, -1, -1, + 437, 438, -1, 440, -1, -1, 443, 444, 445, 446, + 447, 448, 449, 450, -1, -1, 453, 454, 455, 456, + -1, 458, 459, 460, 461, -1, 463, 464, 465, 466, + 467, -1, 469, 470, -1, 472, 473, 474, 475, 476, + 477, 478, 479, 480, -1, -1, 483, -1, -1, 486, + 487, 488, 489, 490, 491, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 503, 504, 505, 506, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 44, 45, -1, -1, + 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, + 58, -1, 60, 61, 62, 63, 64, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, -1, -1, -1, 84, 85, 86, 87, + 88, 89, -1, 91, 92, 93, -1, 95, 96, 97, + 98, 99, 100, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + -1, 119, -1, 121, 122, 123, 124, 125, 126, -1, + -1, 129, 130, 131, 132, -1, -1, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, -1, 164, 165, 166, 167, + -1, 169, -1, 171, -1, -1, -1, 175, 176, 177, + -1, 179, 180, 181, -1, 183, 184, -1, 186, -1, + 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, + 218, -1, 220, -1, 222, -1, -1, 225, -1, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, -1, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, -1, 272, 273, 274, 275, 276, -1, + 278, 279, -1, 281, -1, 283, 284, 285, 286, 287, + 288, -1, 290, 291, -1, -1, 294, 295, 296, -1, + -1, 299, 300, 301, -1, 303, -1, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + -1, -1, -1, -1, 322, 323, 324, -1, 326, 327, + 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, + 338, -1, 340, 341, 342, -1, 344, 345, 346, 347, + 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, -1, 365, 366, -1, + 368, 369, 370, 371, -1, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, -1, -1, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, -1, -1, 421, 422, -1, 424, -1, 426, 427, + 428, 429, 430, -1, 432, 433, 434, -1, -1, 437, + 438, 439, 440, 441, -1, 443, 444, 445, 446, 447, + 448, 449, 450, -1, -1, 453, 454, 455, -1, -1, + 458, 459, 460, 461, -1, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 472, -1, 474, 475, 476, 477, + 478, 479, 480, -1, -1, 483, -1, -1, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 23, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, + -1, 35, 36, -1, -1, -1, -1, 23, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 33, -1, 53, + -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, + -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, + -1, -1, 76, -1, -1, -1, 62, -1, -1, -1, + -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, + 76, -1, -1, -1, -1, 99, -1, 101, -1, -1, + -1, 87, -1, -1, -1, -1, -1, -1, 112, -1, + -1, -1, -1, 99, -1, 101, -1, -1, -1, -1, + -1, -1, -1, 127, 128, -1, 112, -1, -1, -1, + -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, + 144, 127, 128, -1, -1, -1, -1, -1, 152, -1, + -1, -1, 138, -1, -1, -1, -1, -1, 144, -1, + -1, -1, -1, -1, -1, 169, 152, -1, -1, 173, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 169, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 215, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, + -1, -1, -1, -1, -1, -1, -1, -1, 242, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 316, 317, 318, -1, -1, -1, -1, -1, 324, -1, - -1, 327, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 242, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 358, -1, -1, -1, -1, -1, -1, -1, - -1, 367, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 383, -1, -1, - -1, -1, -1, -1, 390, -1, -1, -1, 394, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 405, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 417, -1, -1, -1, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 441, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 455, - -1, -1, -1, -1, -1, 461, -1, -1, -1, -1, - 466, -1, -1, -1, -1, 471, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 483, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 318, 319, 320, -1, -1, -1, + -1, -1, 326, -1, -1, 329, -1, -1, -1, -1, + -1, -1, 318, 319, 320, -1, -1, -1, -1, -1, + 326, -1, -1, 329, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 360, -1, -1, -1, + -1, -1, -1, -1, -1, 369, -1, -1, -1, -1, + -1, -1, -1, -1, 360, -1, -1, -1, -1, -1, + -1, 385, -1, 369, -1, -1, -1, -1, 392, -1, + -1, -1, 396, -1, -1, -1, -1, -1, -1, 385, + -1, -1, -1, 407, -1, -1, 392, -1, -1, -1, + 396, -1, -1, -1, -1, 419, -1, -1, -1, 423, + -1, 407, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 419, -1, -1, -1, 423, -1, 443, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 507, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 521 + -1, -1, -1, 457, -1, -1, -1, 443, -1, 463, + -1, -1, -1, -1, 468, -1, -1, -1, -1, 473, + -1, 457, -1, -1, -1, -1, -1, 463, -1, -1, + -1, 485, 468, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 485, + -1, -1, -1, -1, -1, 509, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, + -1, -1, -1, 509, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 523 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 22, 32, 34, 35, 47, 52, 61, 75, 84, - 86, 98, 100, 111, 126, 127, 128, 137, 143, 151, - 153, 154, 168, 172, 198, 240, 316, 317, 318, 324, - 327, 358, 367, 383, 390, 394, 405, 417, 421, 441, - 455, 458, 461, 466, 483, 507, 521, 533, 534, 535, - 536, 551, 560, 562, 567, 583, 586, 587, 589, 596, - 597, 601, 608, 610, 613, 614, 664, 670, 679, 680, - 698, 699, 700, 701, 703, 705, 706, 710, 770, 771, + 0, 23, 33, 35, 36, 48, 53, 62, 76, 85, + 87, 99, 101, 112, 127, 128, 129, 138, 144, 152, + 154, 155, 169, 173, 199, 242, 318, 319, 320, 326, + 329, 360, 369, 385, 392, 396, 407, 419, 423, 443, + 457, 460, 463, 468, 485, 509, 523, 534, 535, 536, + 537, 552, 561, 563, 568, 584, 588, 589, 591, 598, + 599, 603, 610, 612, 615, 616, 666, 672, 681, 682, + 700, 701, 702, 703, 705, 707, 708, 712, 772, 773, 953, 956, 959, 966, 967, 969, 972, 973, 974, 981, 985, 991, 992, 995, 1000, 1004, 1005, 1006, 1009, 1012, - 1013, 1014, 1017, 1018, 1020, 435, 486, 611, 203, 374, - 385, 421, 473, 108, 192, 295, 1007, 611, 3, 22, - 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, - 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, - 64, 67, 68, 69, 70, 71, 72, 73, 75, 76, - 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 94, 95, 96, 97, 98, 99, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 118, 120, 121, 122, - 123, 124, 125, 128, 129, 130, 131, 134, 135, 136, - 137, 138, 140, 141, 142, 144, 145, 146, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 161, 163, 164, 165, 166, 168, 170, 171, 173, 174, - 175, 176, 177, 178, 179, 180, 182, 183, 184, 185, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 200, 201, 202, 203, 204, 205, 206, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 219, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 234, 235, 236, 237, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 276, 277, 278, 279, 281, 282, 283, 284, 285, - 286, 288, 289, 292, 293, 294, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 331, 332, 333, 334, 335, - 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 395, 396, 397, 398, 399, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 419, 420, 422, 423, 424, 425, - 426, 427, 428, 430, 431, 432, 435, 436, 437, 438, - 439, 441, 442, 443, 444, 445, 446, 447, 448, 451, - 452, 453, 456, 457, 458, 459, 461, 462, 463, 464, - 465, 466, 467, 468, 470, 471, 472, 473, 474, 475, - 476, 477, 478, 481, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, 504, 553, 852, 942, 946, 1023, - 1024, 1025, 3, 176, 247, 414, 553, 968, 1023, 290, - 611, 55, 172, 521, 693, 178, 241, 295, 315, 374, - 425, 427, 444, 450, 453, 591, 662, 965, 5, 30, - 327, 553, 554, 941, 3, 30, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 45, 46, 49, 53, 54, - 55, 56, 57, 58, 65, 66, 71, 72, 74, 79, - 80, 81, 82, 83, 89, 93, 100, 101, 108, 112, - 115, 117, 119, 126, 127, 132, 133, 139, 143, 147, - 152, 159, 160, 162, 165, 167, 169, 171, 172, 173, - 176, 177, 181, 182, 183, 186, 194, 199, 207, 209, - 210, 216, 217, 218, 219, 220, 222, 223, 225, 232, - 233, 235, 237, 238, 247, 268, 269, 270, 274, 275, - 278, 280, 281, 283, 287, 290, 291, 295, 296, 299, - 300, 302, 303, 316, 317, 318, 319, 322, 323, 326, - 330, 337, 343, 348, 362, 365, 369, 383, 384, 391, - 394, 395, 398, 400, 414, 416, 417, 418, 421, 423, - 429, 431, 432, 433, 434, 437, 439, 440, 443, 449, - 450, 454, 455, 460, 466, 467, 469, 471, 479, 480, - 482, 483, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 559, 1023, 1027, 1029, 24, 81, 97, - 146, 156, 169, 174, 203, 246, 250, 321, 336, 371, - 374, 385, 388, 407, 421, 427, 428, 438, 444, 473, - 591, 665, 666, 669, 611, 941, 100, 137, 471, 521, - 536, 551, 560, 562, 583, 586, 587, 596, 597, 601, - 610, 614, 664, 670, 679, 680, 698, 953, 956, 959, + 1013, 1014, 1017, 1018, 1020, 437, 488, 613, 204, 376, + 387, 423, 475, 109, 193, 297, 1007, 613, 3, 23, + 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, + 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 60, 61, 62, 63, 64, + 65, 68, 69, 70, 71, 72, 73, 74, 76, 77, + 78, 79, 80, 82, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 95, 96, 97, 98, 99, 100, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, + 124, 125, 126, 129, 130, 131, 132, 135, 136, 137, + 138, 139, 141, 142, 143, 145, 146, 147, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 162, 164, 165, 166, 167, 169, 171, 172, 174, 175, + 176, 177, 178, 179, 180, 181, 183, 184, 185, 186, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 201, 202, 203, 204, 205, 206, 207, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 220, + 222, 223, 224, 225, 226, 227, 228, 229, 231, 232, + 233, 236, 237, 238, 239, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 278, 279, 280, 281, 283, 284, 285, 286, 287, + 288, 290, 291, 294, 295, 296, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 333, 334, 335, 336, 337, + 338, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 397, 398, 399, 400, 401, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 421, 422, 424, 425, 426, 427, + 428, 429, 430, 432, 433, 434, 437, 438, 439, 440, + 441, 443, 444, 445, 446, 447, 448, 449, 450, 453, + 454, 455, 458, 459, 460, 461, 463, 464, 465, 466, + 467, 468, 469, 470, 472, 473, 474, 475, 476, 477, + 478, 479, 480, 483, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 554, 854, 942, 946, 1023, + 1024, 1025, 3, 177, 249, 416, 554, 968, 1023, 292, + 613, 56, 173, 523, 695, 179, 243, 297, 317, 376, + 427, 429, 452, 455, 593, 664, 965, 5, 31, 329, + 554, 555, 941, 3, 31, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 46, 47, 50, 54, 55, 56, + 57, 58, 59, 66, 67, 72, 73, 75, 80, 81, + 82, 83, 84, 90, 94, 101, 102, 109, 113, 116, + 118, 120, 127, 128, 133, 134, 140, 144, 148, 153, + 160, 161, 163, 166, 168, 170, 172, 173, 174, 177, + 178, 182, 183, 184, 187, 195, 200, 208, 210, 211, + 217, 218, 219, 220, 221, 223, 224, 226, 230, 234, + 235, 237, 239, 240, 249, 270, 271, 272, 276, 277, + 280, 282, 283, 285, 289, 292, 293, 297, 298, 301, + 302, 304, 305, 318, 319, 320, 321, 324, 325, 328, + 332, 339, 345, 350, 364, 367, 371, 385, 386, 393, + 396, 397, 400, 402, 416, 418, 419, 420, 423, 425, + 431, 433, 434, 435, 436, 439, 441, 442, 445, 451, + 452, 456, 457, 462, 468, 469, 471, 473, 481, 482, + 484, 485, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 560, 1023, 1027, 1029, 25, 82, 98, + 147, 157, 170, 175, 204, 248, 252, 323, 338, 373, + 376, 387, 390, 409, 423, 429, 430, 440, 446, 475, + 593, 667, 668, 671, 613, 941, 101, 138, 473, 523, + 537, 552, 561, 563, 584, 588, 589, 598, 599, 603, + 612, 616, 666, 672, 681, 682, 700, 953, 956, 959, 966, 967, 977, 981, 985, 991, 995, 1000, 1009, 1012, - 1017, 1018, 1020, 108, 75, 66, 79, 81, 159, 232, - 281, 291, 303, 322, 370, 416, 437, 439, 443, 466, - 521, 552, 553, 554, 699, 771, 773, 775, 776, 786, - 793, 794, 852, 854, 855, 108, 5, 553, 555, 993, - 553, 941, 30, 178, 241, 389, 431, 435, 468, 553, - 1010, 1011, 1016, 611, 30, 132, 722, 723, 178, 241, - 374, 389, 431, 468, 986, 987, 1016, 611, 552, 553, - 554, 698, 710, 793, 421, 719, 552, 173, 521, 997, - 521, 346, 711, 712, 941, 711, 699, 700, 1012, 0, - 524, 122, 213, 457, 147, 218, 296, 449, 725, 726, - 776, 776, 699, 701, 703, 525, 471, 975, 214, 30, - 431, 435, 552, 698, 192, 552, 941, 192, 552, 192, - 793, 192, 552, 275, 356, 555, 342, 612, 519, 523, - 556, 557, 521, 82, 108, 174, 203, 246, 374, 385, - 421, 444, 473, 971, 108, 698, 552, 425, 427, 425, - 427, 356, 192, 552, 552, 381, 174, 246, 346, 385, - 421, 473, 677, 203, 30, 941, 192, 559, 252, 438, - 107, 421, 421, 473, 378, 381, 192, 553, 667, 948, - 192, 938, 941, 192, 941, 521, 600, 295, 427, 977, - 3, 466, 978, 980, 981, 983, 984, 1023, 1027, 975, - 553, 555, 968, 521, 521, 167, 521, 699, 794, 521, - 521, 552, 521, 521, 172, 521, 521, 521, 521, 699, - 771, 776, 786, 514, 556, 526, 40, 553, 787, 788, - 787, 383, 525, 702, 521, 699, 793, 794, 37, 42, - 101, 173, 209, 225, 235, 269, 316, 323, 365, 384, - 455, 790, 788, 40, 553, 787, 789, 507, 798, 555, - 510, 521, 521, 954, 1011, 1011, 1011, 504, 224, 1011, - 523, 290, 4, 6, 7, 8, 9, 10, 39, 54, - 56, 57, 65, 71, 72, 83, 112, 115, 117, 136, - 152, 160, 165, 182, 183, 216, 217, 219, 247, 268, - 270, 275, 280, 283, 292, 343, 369, 398, 431, 432, - 440, 454, 467, 505, 512, 513, 514, 519, 521, 527, - 528, 529, 530, 553, 555, 699, 760, 810, 813, 816, - 817, 818, 820, 821, 822, 823, 825, 826, 842, 844, - 845, 846, 847, 848, 849, 850, 851, 852, 853, 855, - 857, 872, 873, 884, 906, 913, 921, 922, 923, 942, - 943, 944, 920, 922, 986, 986, 555, 986, 504, 986, - 172, 433, 510, 612, 556, 793, 1001, 3, 171, 173, - 471, 981, 996, 998, 171, 999, 553, 842, 890, 891, - 711, 525, 521, 950, 522, 522, 522, 535, 172, 295, - 570, 157, 1001, 30, 132, 720, 720, 59, 720, 162, - 167, 238, 287, 731, 733, 734, 763, 765, 766, 767, - 181, 290, 460, 290, 725, 726, 521, 552, 993, 422, - 1015, 504, 224, 152, 26, 32, 137, 294, 354, 358, - 390, 463, 545, 548, 549, 354, 152, 40, 60, 106, - 202, 251, 261, 273, 305, 354, 360, 385, 390, 405, - 548, 602, 605, 152, 354, 390, 548, 152, 354, 390, - 548, 152, 1007, 40, 1008, 291, 488, 842, 914, 558, - 559, 557, 3, 30, 37, 42, 46, 49, 55, 81, - 83, 89, 101, 132, 171, 173, 176, 177, 194, 209, - 222, 223, 225, 235, 237, 247, 269, 278, 300, 302, - 323, 365, 384, 395, 414, 423, 443, 454, 469, 471, - 522, 726, 842, 893, 894, 945, 951, 1023, 1028, 842, - 421, 552, 553, 522, 521, 651, 374, 591, 662, 275, - 957, 40, 192, 553, 590, 473, 192, 552, 192, 552, - 1022, 192, 552, 192, 552, 89, 962, 152, 487, 90, - 129, 308, 426, 192, 553, 152, 523, 949, 63, 361, - 525, 668, 152, 525, 668, 152, 290, 598, 599, 842, - 951, 356, 522, 525, 4, 160, 290, 440, 512, 513, - 555, 604, 607, 944, 976, 978, 979, 982, 977, 433, - 521, 688, 692, 842, 891, 521, 3, 68, 69, 109, - 110, 113, 114, 189, 190, 253, 254, 255, 256, 257, - 258, 259, 260, 263, 264, 338, 339, 379, 380, 477, - 478, 501, 502, 555, 828, 829, 830, 831, 832, 833, - 834, 835, 836, 837, 838, 839, 840, 896, 897, 788, - 789, 842, 552, 842, 898, 512, 513, 553, 843, 844, - 873, 884, 900, 521, 842, 890, 901, 842, 58, 172, - 233, 434, 842, 891, 904, 842, 522, 554, 521, 423, - 740, 741, 741, 722, 723, 776, 220, 717, 786, 741, - 46, 745, 741, 225, 37, 225, 384, 790, 225, 300, - 791, 776, 791, 225, 790, 521, 225, 791, 225, 148, - 200, 778, 225, 745, 521, 554, 521, 741, 297, 842, - 988, 990, 893, 3, 37, 42, 46, 49, 54, 55, - 56, 57, 71, 72, 81, 83, 89, 101, 112, 115, - 165, 171, 173, 177, 194, 209, 216, 217, 219, 222, - 223, 225, 235, 237, 247, 268, 269, 270, 278, 283, - 300, 302, 323, 343, 365, 369, 384, 391, 395, 398, - 414, 423, 431, 432, 443, 449, 454, 467, 471, 804, - 806, 807, 809, 811, 813, 815, 817, 818, 819, 821, - 822, 825, 826, 895, 947, 1023, 1026, 40, 236, 553, - 521, 519, 699, 470, 824, 842, 910, 824, 824, 521, - 521, 812, 812, 326, 699, 521, 814, 530, 71, 72, - 824, 842, 812, 521, 521, 485, 507, 521, 827, 521, - 827, 521, 842, 842, 842, 83, 148, 924, 928, 842, - 891, 892, 699, 842, 890, 559, 9, 554, 874, 875, - 876, 523, 526, 556, 915, 556, 521, 555, 521, 521, - 555, 944, 3, 8, 11, 15, 16, 17, 18, 19, - 20, 21, 36, 40, 46, 53, 80, 177, 194, 199, - 222, 223, 237, 275, 278, 292, 295, 395, 505, 508, - 509, 510, 512, 513, 514, 515, 516, 517, 882, 883, - 884, 886, 918, 484, 858, 302, 842, 525, 717, 521, - 555, 717, 3, 117, 241, 555, 604, 826, 989, 104, - 990, 990, 40, 553, 522, 525, 975, 525, 522, 712, - 938, 939, 460, 713, 1001, 193, 356, 220, 651, 390, - 701, 701, 30, 727, 728, 842, 59, 701, 721, 164, - 272, 751, 227, 273, 342, 393, 457, 4, 9, 30, - 746, 842, 512, 513, 747, 748, 842, 844, 763, 764, - 734, 733, 731, 732, 167, 766, 285, 768, 59, 707, - 708, 709, 779, 843, 922, 922, 731, 763, 891, 950, - 172, 472, 994, 236, 552, 74, 82, 93, 169, 192, - 330, 450, 543, 544, 553, 631, 658, 82, 93, 561, - 93, 561, 521, 433, 311, 401, 521, 629, 245, 311, - 401, 453, 629, 93, 525, 433, 552, 3, 809, 604, - 59, 606, 604, 604, 106, 251, 261, 59, 433, 483, - 507, 603, 266, 374, 603, 605, 793, 93, 433, 561, - 374, 552, 433, 374, 1007, 555, 553, 688, 520, 526, - 893, 893, 894, 193, 359, 724, 525, 725, 726, 13, - 14, 222, 222, 433, 433, 553, 650, 655, 483, 691, - 552, 381, 346, 385, 421, 473, 677, 152, 100, 587, - 614, 958, 959, 1018, 144, 806, 275, 199, 592, 552, - 275, 588, 602, 275, 521, 651, 40, 275, 651, 275, - 521, 671, 672, 673, 674, 675, 676, 678, 192, 553, - 645, 963, 559, 152, 172, 609, 667, 558, 523, 948, - 938, 941, 941, 948, 522, 525, 13, 977, 983, 4, - 944, 4, 944, 555, 559, 690, 697, 55, 102, 123, - 141, 145, 168, 171, 187, 280, 288, 310, 340, 694, - 40, 522, 842, 522, 172, 525, 522, 319, 899, 522, - 843, 843, 11, 15, 16, 19, 20, 21, 199, 222, - 292, 508, 509, 510, 512, 513, 514, 515, 516, 517, - 884, 843, 522, 795, 796, 854, 167, 172, 902, 903, - 525, 522, 40, 904, 891, 904, 904, 172, 522, 40, - 787, 521, 939, 4, 9, 553, 735, 736, 738, 739, - 847, 922, 920, 178, 241, 421, 425, 427, 453, 552, - 718, 480, 799, 522, 521, 741, 776, 776, 225, 776, - 290, 460, 792, 776, 225, 922, 776, 776, 282, 282, - 521, 776, 741, 554, 800, 801, 521, 554, 800, 525, - 522, 525, 523, 521, 809, 521, 521, 523, 39, 808, - 521, 828, 829, 830, 831, 832, 833, 834, 835, 836, - 837, 838, 839, 840, 841, 522, 525, 812, 562, 567, - 679, 680, 698, 955, 1000, 1012, 891, 892, 521, 479, - 907, 908, 842, 892, 944, 842, 877, 878, 879, 880, - 824, 824, 8, 15, 16, 19, 20, 21, 508, 509, - 510, 512, 513, 514, 515, 516, 517, 553, 882, 887, - 522, 891, 431, 431, 944, 944, 842, 521, 521, 554, - 925, 356, 932, 167, 520, 522, 525, 526, 525, 531, - 514, 842, 557, 891, 944, 842, 841, 841, 806, 842, - 842, 842, 842, 842, 842, 842, 842, 5, 559, 952, - 431, 45, 418, 919, 948, 842, 842, 521, 699, 848, - 905, 913, 132, 160, 275, 280, 285, 440, 451, 842, - 280, 521, 842, 433, 53, 177, 194, 199, 237, 395, - 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, - 30, 38, 400, 881, 519, 523, 917, 181, 163, 859, - 369, 521, 873, 923, 172, 772, 893, 772, 521, 555, - 553, 552, 996, 552, 1004, 842, 525, 522, 227, 40, - 460, 1003, 552, 564, 521, 553, 569, 579, 580, 582, - 41, 126, 729, 525, 460, 729, 266, 701, 369, 370, - 512, 513, 748, 750, 844, 393, 227, 291, 314, 314, - 525, 516, 4, 749, 944, 749, 369, 370, 750, 552, - 937, 279, 397, 769, 521, 939, 940, 525, 181, 460, - 199, 181, 220, 764, 732, 522, 553, 555, 553, 555, - 354, 548, 521, 192, 544, 941, 227, 275, 227, 460, - 521, 634, 641, 642, 805, 806, 523, 541, 542, 941, - 553, 192, 941, 192, 543, 26, 137, 390, 540, 547, - 559, 625, 639, 941, 59, 59, 559, 633, 654, 59, - 59, 941, 545, 941, 354, 390, 548, 602, 604, 948, - 941, 604, 948, 941, 604, 354, 390, 548, 941, 941, - 543, 941, 354, 390, 548, 941, 941, 555, 1008, 513, - 842, 914, 725, 725, 725, 282, 282, 522, 469, 894, - 724, 842, 842, 280, 555, 970, 280, 970, 553, 335, - 687, 522, 525, 288, 172, 433, 682, 957, 590, 473, - 552, 552, 1022, 552, 552, 552, 295, 662, 521, 699, - 152, 3, 521, 521, 152, 152, 237, 553, 631, 643, - 646, 649, 659, 661, 483, 485, 636, 151, 698, 152, - 483, 964, 152, 522, 893, 525, 525, 40, 275, 290, - 553, 3, 668, 558, 668, 290, 668, 598, 842, 688, - 247, 514, 519, 521, 604, 689, 849, 850, 851, 982, - 522, 525, 40, 686, 555, 686, 275, 280, 340, 686, - 59, 686, 806, 522, 842, 842, 842, 902, 806, 843, - 843, 843, 843, 843, 843, 132, 275, 285, 843, 843, - 843, 843, 843, 843, 843, 843, 843, 843, 522, 525, - 40, 797, 842, 842, 903, 902, 806, 522, 522, 522, - 891, 806, 939, 522, 314, 370, 516, 521, 521, 717, - 425, 427, 425, 427, 552, 719, 719, 719, 842, 181, - 752, 432, 472, 743, 744, 792, 792, 776, 842, 521, - 776, 167, 792, 521, 554, 783, 792, 806, 522, 525, - 800, 522, 988, 3, 895, 39, 808, 553, 803, 803, - 3, 519, 519, 944, 433, 433, 433, 433, 806, 457, - 522, 520, 891, 842, 139, 908, 909, 522, 522, 522, - 526, 525, 531, 523, 522, 522, 504, 504, 522, 522, - 522, 842, 925, 926, 927, 523, 521, 842, 929, 354, - 936, 553, 856, 911, 912, 842, 842, 874, 928, 522, - 522, 522, 504, 843, 843, 145, 891, 172, 132, 160, - 280, 285, 440, 451, 521, 145, 887, 842, 418, 919, - 842, 905, 842, 433, 521, 699, 842, 914, 558, 521, - 521, 155, 860, 773, 774, 799, 725, 799, 944, 841, - 950, 950, 521, 250, 275, 716, 774, 480, 1002, 40, - 59, 565, 575, 582, 915, 525, 772, 510, 506, 730, - 728, 292, 882, 885, 730, 4, 944, 750, 291, 457, - 747, 525, 244, 939, 707, 59, 922, 521, 554, 59, - 266, 994, 994, 433, 842, 275, 658, 521, 152, 521, - 634, 203, 655, 656, 615, 40, 176, 624, 652, 558, - 542, 615, 26, 137, 358, 360, 390, 537, 538, 539, - 549, 550, 152, 668, 152, 668, 625, 639, 625, 522, - 525, 555, 618, 510, 523, 522, 525, 521, 521, 433, - 374, 93, 433, 561, 374, 433, 433, 433, 374, 1008, - 688, 526, 520, 526, 724, 724, 724, 894, 522, 521, - 681, 3, 408, 409, 555, 696, 650, 687, 592, 552, - 588, 521, 40, 651, 674, 676, 957, 356, 421, 555, - 584, 585, 590, 559, 594, 595, 655, 552, 552, 1022, - 552, 641, 642, 522, 525, 288, 629, 288, 290, 628, - 941, 483, 1021, 552, 629, 40, 552, 522, 672, 678, - 675, 678, 421, 842, 152, 552, 609, 948, 684, 695, - 982, 690, 555, 555, 280, 655, 514, 655, 555, 514, - 655, 555, 522, 522, 903, 172, 132, 285, 521, 798, - 795, 521, 522, 522, 522, 553, 736, 799, 719, 719, - 719, 719, 552, 552, 552, 59, 186, 761, 14, 522, - 792, 939, 521, 780, 781, 782, 845, 848, 939, 167, - 80, 802, 801, 522, 522, 519, 806, 522, 525, 522, - 944, 520, 944, 522, 829, 831, 832, 833, 832, 833, - 833, 522, 429, 842, 143, 842, 877, 887, 827, 827, - 522, 525, 522, 554, 842, 929, 930, 931, 40, 521, - 925, 933, 199, 525, 522, 932, 841, 842, 36, 36, - 842, 522, 842, 172, 521, 895, 842, 522, 145, 843, - 843, 145, 145, 842, 842, 520, 526, 521, 916, 726, - 480, 842, 301, 864, 525, 752, 724, 752, 522, 714, - 715, 912, 250, 521, 842, 362, 573, 553, 266, 322, - 117, 304, 521, 563, 698, 522, 525, 569, 1002, 842, - 164, 231, 521, 730, 291, 552, 522, 940, 181, 699, - 700, 922, 940, 941, 941, 522, 152, 656, 544, 656, - 615, 645, 525, 522, 119, 207, 273, 275, 640, 521, - 33, 59, 663, 652, 74, 80, 93, 117, 119, 207, - 275, 280, 330, 348, 450, 460, 620, 621, 635, 176, - 117, 191, 275, 629, 603, 107, 117, 176, 275, 407, - 410, 605, 629, 390, 539, 444, 941, 543, 547, 3, - 37, 42, 46, 49, 55, 81, 83, 89, 101, 171, - 173, 176, 177, 194, 209, 222, 223, 225, 235, 237, - 247, 269, 274, 278, 292, 300, 302, 323, 365, 384, - 391, 395, 414, 423, 443, 449, 454, 471, 512, 513, - 555, 604, 616, 657, 806, 885, 945, 1023, 1029, 559, - 654, 891, 727, 941, 941, 941, 941, 543, 941, 941, - 941, 941, 941, 688, 914, 914, 522, 522, 522, 725, - 107, 374, 523, 603, 696, 521, 521, 649, 698, 964, - 662, 192, 552, 522, 525, 592, 593, 842, 522, 525, - 522, 588, 521, 40, 638, 636, 553, 646, 86, 600, - 107, 273, 651, 698, 674, 676, 40, 40, 699, 700, - 645, 460, 961, 668, 522, 525, 655, 843, 172, 521, - 895, 800, 522, 525, 522, 752, 552, 552, 552, 552, - 30, 103, 182, 368, 521, 753, 754, 755, 756, 757, - 758, 759, 842, 842, 482, 861, 842, 522, 844, 888, - 889, 199, 181, 777, 781, 522, 783, 784, 785, 948, - 808, 944, 808, 553, 808, 520, 520, 842, 925, 525, - 522, 553, 933, 934, 935, 40, 842, 844, 912, 936, - 842, 842, 842, 895, 522, 842, 36, 36, 842, 842, - 145, 522, 513, 914, 522, 893, 522, 842, 522, 521, - 553, 865, 761, 522, 761, 555, 522, 525, 955, 921, - 466, 420, 459, 574, 553, 568, 578, 290, 571, 510, - 582, 573, 887, 59, 522, 522, 465, 466, 704, 615, - 544, 522, 522, 483, 648, 120, 195, 205, 119, 462, - 842, 117, 40, 521, 948, 941, 843, 120, 195, 119, - 280, 227, 552, 648, 88, 663, 192, 280, 604, 842, - 663, 280, 512, 513, 607, 553, 805, 806, 668, 668, - 3, 247, 414, 945, 949, 510, 522, 522, 433, 433, - 520, 520, 724, 522, 522, 553, 688, 460, 683, 685, - 595, 655, 522, 1021, 40, 421, 275, 521, 555, 521, - 594, 964, 649, 151, 698, 149, 201, 628, 122, 137, - 329, 1021, 107, 964, 483, 1019, 421, 290, 553, 960, - 521, 695, 843, 895, 522, 522, 9, 355, 742, 761, - 521, 392, 521, 522, 525, 553, 862, 863, 337, 762, - 525, 522, 521, 554, 59, 522, 199, 522, 784, 520, - 806, 929, 525, 522, 553, 520, 192, 522, 842, 842, - 842, 526, 520, 526, 522, 522, 553, 866, 861, 555, - 861, 912, 522, 525, 465, 915, 522, 525, 91, 573, - 842, 522, 940, 940, 348, 648, 521, 637, 615, 522, - 191, 521, 842, 275, 621, 648, 651, 941, 40, 152, - 802, 949, 516, 616, 941, 941, 522, 603, 124, 522, - 522, 636, 698, 552, 152, 595, 40, 522, 941, 1021, - 30, 85, 94, 118, 191, 204, 407, 410, 632, 632, - 370, 370, 40, 64, 74, 241, 699, 552, 521, 553, - 572, 581, 854, 522, 522, 521, 861, 891, 521, 891, - 755, 40, 525, 842, 460, 737, 844, 922, 939, 788, - 521, 788, 933, 842, 914, 914, 310, 867, 762, 762, - 698, 304, 698, 568, 290, 521, 566, 552, 615, 559, - 644, 647, 411, 475, 622, 623, 521, 617, 842, 522, - 249, 660, 191, 460, 546, 516, 444, 688, 555, 964, - 628, 1019, 521, 552, 522, 698, 636, 600, 698, 74, - 293, 74, 961, 842, 80, 576, 522, 525, 576, 9, - 762, 522, 754, 522, 865, 863, 372, 522, 922, 520, - 520, 520, 59, 725, 737, 737, 574, 93, 581, 133, - 651, 510, 522, 525, 602, 522, 273, 630, 173, 309, - 396, 290, 626, 627, 653, 617, 842, 444, 40, 521, - 1019, 628, 1021, 1019, 293, 293, 521, 522, 948, 577, - 948, 964, 572, 577, 522, 737, 522, 739, 522, 890, - 184, 341, 370, 868, 465, 941, 522, 276, 457, 660, - 616, 647, 522, 623, 205, 122, 457, 290, 653, 290, - 626, 698, 581, 576, 729, 799, 729, 53, 104, 446, - 842, 869, 870, 869, 869, 522, 698, 799, 390, 627, - 63, 273, 361, 390, 619, 619, 1019, 522, 577, 730, - 730, 870, 369, 166, 325, 166, 325, 148, 871, 871, - 871, 580, 615, 25, 117, 280, 964, 729, 36, 104, - 181, 273, 430, 799, 799, 730, 870, 369, 298 + 1017, 1018, 1020, 109, 76, 67, 80, 82, 160, 234, + 283, 293, 305, 324, 372, 418, 439, 441, 445, 468, + 523, 553, 554, 555, 701, 773, 775, 777, 778, 788, + 795, 796, 854, 856, 857, 109, 5, 554, 556, 993, + 554, 941, 31, 179, 243, 391, 433, 437, 470, 554, + 1010, 1011, 1016, 613, 31, 133, 724, 725, 179, 243, + 376, 391, 433, 470, 986, 987, 1016, 613, 553, 554, + 555, 700, 712, 795, 423, 721, 553, 174, 523, 997, + 523, 348, 713, 714, 941, 713, 701, 702, 1012, 0, + 526, 123, 214, 459, 148, 219, 298, 451, 727, 728, + 778, 778, 701, 703, 705, 527, 473, 975, 215, 31, + 433, 437, 553, 700, 193, 553, 941, 193, 553, 193, + 795, 193, 553, 277, 358, 556, 344, 614, 521, 525, + 557, 558, 523, 83, 109, 175, 204, 248, 376, 387, + 423, 446, 475, 971, 109, 700, 553, 427, 429, 427, + 429, 358, 193, 553, 383, 175, 248, 348, 387, 423, + 446, 475, 679, 204, 31, 941, 193, 560, 254, 440, + 108, 423, 423, 475, 380, 383, 193, 554, 669, 948, + 193, 938, 941, 193, 941, 523, 602, 297, 429, 977, + 3, 468, 978, 980, 981, 983, 984, 1023, 1027, 975, + 554, 556, 968, 523, 523, 168, 523, 701, 796, 523, + 523, 553, 523, 523, 173, 523, 523, 523, 523, 701, + 773, 778, 788, 516, 557, 19, 41, 554, 789, 790, + 789, 385, 527, 704, 523, 701, 795, 796, 38, 43, + 102, 174, 210, 226, 237, 271, 318, 325, 367, 386, + 457, 792, 790, 41, 554, 789, 791, 509, 800, 556, + 512, 523, 523, 954, 1011, 1011, 1011, 506, 225, 1011, + 525, 292, 4, 6, 7, 8, 9, 10, 40, 55, + 57, 58, 66, 72, 73, 84, 113, 116, 118, 137, + 153, 161, 166, 183, 184, 217, 218, 220, 230, 249, + 270, 272, 277, 282, 285, 294, 345, 371, 400, 433, + 434, 442, 456, 469, 507, 514, 515, 516, 521, 523, + 528, 529, 530, 531, 554, 556, 701, 762, 812, 815, + 818, 819, 820, 822, 823, 824, 825, 827, 828, 844, + 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, + 857, 858, 873, 874, 885, 907, 913, 921, 922, 923, + 942, 943, 944, 920, 922, 986, 986, 556, 986, 506, + 986, 173, 435, 512, 614, 557, 795, 1001, 3, 172, + 174, 473, 981, 996, 998, 172, 999, 554, 844, 891, + 892, 713, 527, 523, 950, 524, 524, 524, 536, 173, + 297, 571, 158, 1001, 31, 133, 722, 722, 60, 722, + 163, 168, 240, 289, 733, 735, 736, 765, 767, 768, + 769, 182, 292, 462, 292, 727, 728, 523, 553, 993, + 424, 1015, 506, 225, 153, 27, 33, 138, 296, 356, + 360, 392, 465, 546, 549, 550, 356, 153, 41, 61, + 107, 203, 253, 263, 275, 307, 356, 362, 387, 392, + 407, 549, 604, 607, 153, 356, 392, 549, 153, 356, + 392, 549, 153, 1007, 41, 1008, 293, 490, 844, 914, + 559, 560, 558, 3, 31, 38, 43, 47, 50, 56, + 82, 84, 90, 102, 133, 172, 174, 177, 178, 195, + 210, 223, 224, 226, 237, 239, 249, 271, 280, 302, + 304, 325, 367, 386, 397, 416, 425, 445, 456, 471, + 473, 524, 728, 844, 894, 895, 945, 951, 1023, 1028, + 844, 423, 553, 554, 524, 523, 653, 376, 593, 664, + 277, 957, 193, 554, 592, 475, 193, 553, 193, 553, + 1022, 193, 553, 193, 553, 193, 553, 90, 962, 153, + 489, 91, 130, 310, 428, 193, 554, 153, 525, 949, + 64, 363, 527, 670, 153, 527, 670, 153, 292, 600, + 601, 844, 951, 358, 524, 527, 4, 161, 292, 442, + 514, 515, 556, 606, 609, 944, 976, 978, 979, 982, + 977, 435, 523, 690, 694, 844, 892, 523, 3, 69, + 70, 110, 111, 114, 115, 190, 191, 255, 256, 257, + 258, 259, 260, 261, 262, 265, 266, 340, 341, 381, + 382, 479, 480, 503, 504, 556, 830, 831, 832, 833, + 834, 835, 836, 837, 838, 839, 840, 841, 842, 897, + 898, 790, 791, 844, 553, 844, 899, 514, 515, 554, + 845, 846, 874, 885, 901, 523, 844, 891, 902, 844, + 59, 173, 235, 436, 844, 892, 905, 844, 524, 555, + 523, 425, 742, 743, 743, 724, 725, 778, 221, 719, + 788, 743, 47, 747, 743, 226, 38, 226, 386, 792, + 226, 302, 793, 778, 793, 226, 792, 523, 226, 793, + 226, 149, 201, 780, 226, 747, 523, 555, 523, 743, + 299, 844, 988, 990, 894, 3, 38, 43, 47, 50, + 55, 56, 57, 58, 72, 73, 82, 84, 90, 102, + 113, 116, 166, 172, 174, 178, 195, 210, 217, 218, + 220, 223, 224, 226, 237, 239, 249, 270, 271, 272, + 280, 285, 302, 304, 325, 345, 367, 371, 386, 393, + 397, 400, 416, 425, 433, 434, 445, 451, 456, 469, + 473, 806, 808, 809, 811, 813, 815, 817, 819, 820, + 821, 823, 824, 827, 828, 896, 947, 1023, 1026, 41, + 238, 554, 523, 521, 701, 472, 826, 844, 911, 826, + 826, 523, 523, 814, 814, 328, 701, 523, 816, 938, + 531, 72, 73, 826, 844, 814, 523, 523, 487, 509, + 523, 829, 523, 829, 523, 844, 844, 844, 84, 149, + 924, 928, 844, 892, 893, 701, 844, 891, 560, 9, + 555, 875, 876, 877, 19, 525, 557, 915, 557, 523, + 556, 523, 523, 556, 944, 3, 8, 11, 15, 16, + 17, 18, 20, 21, 22, 37, 41, 47, 54, 81, + 178, 195, 200, 223, 224, 239, 277, 280, 294, 297, + 397, 507, 510, 511, 512, 514, 515, 516, 517, 518, + 519, 883, 884, 885, 887, 918, 486, 859, 304, 844, + 527, 719, 523, 556, 719, 3, 118, 243, 556, 606, + 828, 989, 105, 990, 990, 41, 554, 524, 527, 975, + 527, 524, 714, 938, 939, 462, 715, 1001, 194, 358, + 221, 653, 392, 703, 703, 31, 729, 730, 844, 60, + 703, 723, 165, 274, 753, 228, 275, 344, 395, 459, + 4, 9, 31, 748, 844, 514, 515, 749, 750, 844, + 846, 765, 766, 736, 735, 733, 734, 168, 768, 287, + 770, 60, 709, 710, 711, 781, 845, 922, 922, 733, + 765, 892, 950, 173, 474, 994, 238, 553, 75, 83, + 94, 170, 193, 332, 452, 544, 545, 554, 633, 660, + 83, 94, 562, 94, 562, 523, 435, 313, 403, 523, + 631, 247, 313, 403, 455, 631, 94, 527, 435, 553, + 3, 811, 606, 60, 608, 606, 606, 107, 253, 263, + 60, 435, 485, 509, 605, 268, 376, 605, 607, 795, + 94, 435, 562, 376, 553, 435, 376, 1007, 556, 554, + 690, 522, 19, 894, 894, 895, 194, 361, 726, 527, + 727, 728, 13, 14, 223, 223, 435, 435, 554, 652, + 657, 485, 693, 553, 383, 348, 387, 423, 446, 475, + 679, 153, 101, 589, 616, 958, 959, 1018, 277, 200, + 594, 553, 277, 590, 604, 277, 523, 653, 41, 277, + 41, 277, 653, 277, 523, 673, 674, 675, 676, 677, + 678, 680, 193, 554, 647, 963, 560, 153, 173, 611, + 669, 559, 525, 948, 938, 941, 941, 948, 524, 527, + 13, 977, 983, 4, 944, 4, 944, 556, 560, 692, + 699, 56, 103, 124, 142, 146, 169, 172, 188, 282, + 290, 312, 342, 696, 41, 524, 844, 524, 173, 527, + 524, 321, 900, 524, 845, 845, 11, 15, 16, 20, + 21, 22, 200, 223, 294, 510, 511, 512, 514, 515, + 516, 517, 518, 519, 885, 845, 524, 797, 798, 856, + 168, 173, 903, 904, 527, 524, 41, 905, 892, 905, + 905, 173, 524, 41, 789, 523, 939, 4, 9, 554, + 737, 738, 740, 741, 849, 922, 920, 179, 243, 423, + 427, 429, 455, 553, 720, 482, 801, 524, 523, 743, + 778, 778, 226, 778, 292, 462, 794, 778, 226, 922, + 778, 778, 284, 284, 523, 778, 743, 555, 802, 803, + 523, 555, 802, 527, 524, 527, 525, 523, 811, 523, + 523, 525, 40, 810, 523, 830, 831, 832, 833, 834, + 835, 836, 837, 838, 839, 840, 841, 842, 843, 524, + 527, 814, 563, 568, 681, 682, 700, 955, 1000, 1012, + 892, 893, 523, 481, 908, 909, 844, 893, 944, 19, + 844, 878, 879, 880, 881, 826, 826, 8, 15, 16, + 20, 21, 22, 510, 511, 512, 514, 515, 516, 517, + 518, 519, 554, 883, 888, 524, 892, 433, 433, 944, + 944, 844, 523, 523, 555, 925, 358, 932, 168, 522, + 524, 527, 19, 527, 532, 844, 516, 558, 892, 944, + 844, 843, 843, 808, 844, 844, 844, 844, 844, 844, + 844, 844, 5, 560, 952, 433, 46, 420, 919, 948, + 844, 844, 523, 701, 850, 906, 913, 133, 161, 277, + 282, 287, 442, 453, 844, 282, 523, 844, 435, 54, + 178, 195, 200, 239, 397, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 31, 39, 402, 882, 521, + 525, 917, 182, 164, 860, 371, 523, 874, 923, 173, + 774, 894, 774, 523, 556, 554, 553, 996, 553, 1004, + 844, 527, 524, 228, 41, 462, 1003, 553, 565, 523, + 554, 570, 580, 581, 583, 42, 127, 731, 527, 462, + 731, 268, 703, 371, 372, 514, 515, 750, 752, 846, + 395, 228, 293, 316, 316, 527, 518, 4, 751, 944, + 751, 371, 372, 752, 553, 937, 281, 399, 771, 523, + 939, 940, 527, 182, 462, 200, 182, 221, 766, 734, + 524, 554, 556, 554, 556, 356, 549, 523, 193, 545, + 941, 228, 277, 228, 462, 523, 636, 643, 644, 807, + 808, 525, 542, 543, 941, 554, 193, 941, 193, 544, + 27, 138, 392, 541, 548, 560, 627, 641, 941, 60, + 60, 560, 635, 656, 60, 60, 941, 546, 941, 356, + 392, 549, 604, 606, 948, 941, 606, 948, 941, 606, + 356, 392, 549, 941, 941, 544, 941, 356, 392, 549, + 941, 941, 556, 1008, 515, 844, 914, 727, 727, 727, + 284, 284, 524, 471, 895, 726, 844, 844, 282, 556, + 970, 282, 970, 554, 337, 689, 524, 527, 290, 173, + 435, 684, 957, 592, 475, 553, 553, 1022, 553, 553, + 553, 553, 297, 664, 153, 3, 523, 523, 153, 153, + 239, 554, 633, 645, 648, 651, 661, 663, 485, 487, + 638, 152, 700, 153, 145, 585, 808, 153, 485, 964, + 153, 524, 894, 527, 527, 41, 277, 292, 554, 3, + 670, 559, 670, 292, 670, 600, 844, 690, 249, 516, + 521, 523, 606, 691, 851, 852, 853, 982, 524, 527, + 41, 688, 556, 688, 277, 282, 342, 688, 60, 688, + 808, 524, 844, 844, 844, 903, 808, 845, 845, 845, + 845, 845, 845, 133, 277, 287, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 524, 527, 41, 799, + 844, 844, 904, 903, 808, 524, 524, 524, 892, 808, + 939, 524, 316, 372, 518, 523, 523, 719, 427, 429, + 427, 429, 553, 721, 721, 721, 844, 182, 754, 434, + 474, 745, 746, 794, 794, 778, 844, 523, 778, 168, + 794, 523, 555, 785, 794, 808, 524, 527, 802, 524, + 988, 3, 896, 40, 810, 554, 805, 805, 3, 521, + 521, 944, 435, 435, 435, 435, 808, 459, 524, 522, + 892, 844, 140, 909, 910, 524, 524, 524, 844, 19, + 527, 532, 525, 524, 524, 506, 506, 524, 524, 524, + 844, 925, 926, 927, 525, 523, 844, 929, 356, 936, + 938, 844, 844, 875, 928, 524, 524, 524, 506, 845, + 845, 146, 892, 173, 133, 161, 282, 287, 442, 453, + 523, 146, 888, 844, 420, 919, 844, 906, 844, 435, + 523, 701, 844, 914, 559, 523, 523, 156, 861, 775, + 776, 801, 727, 801, 944, 843, 950, 950, 523, 252, + 277, 718, 776, 482, 1002, 41, 60, 566, 576, 583, + 915, 527, 774, 512, 508, 732, 730, 294, 883, 886, + 732, 4, 944, 752, 293, 459, 749, 527, 246, 939, + 709, 60, 922, 523, 555, 60, 268, 994, 994, 435, + 844, 277, 660, 523, 153, 523, 636, 204, 657, 658, + 617, 41, 177, 626, 654, 559, 543, 617, 27, 138, + 360, 362, 392, 538, 539, 540, 550, 551, 153, 670, + 153, 670, 627, 641, 627, 524, 527, 556, 620, 512, + 525, 524, 527, 523, 523, 435, 376, 94, 435, 562, + 376, 435, 435, 435, 376, 1008, 690, 19, 19, 522, + 726, 726, 726, 895, 524, 523, 683, 3, 410, 411, + 556, 698, 652, 689, 594, 553, 590, 523, 41, 41, + 653, 676, 678, 957, 358, 423, 592, 560, 596, 597, + 657, 553, 553, 1022, 553, 643, 644, 524, 527, 290, + 631, 290, 292, 630, 941, 485, 1021, 553, 523, 701, + 553, 631, 41, 553, 524, 674, 680, 677, 680, 423, + 844, 153, 553, 611, 948, 686, 697, 982, 692, 556, + 556, 282, 657, 516, 657, 556, 516, 657, 556, 524, + 524, 904, 173, 133, 287, 523, 800, 797, 523, 524, + 524, 524, 554, 738, 801, 721, 721, 721, 721, 553, + 553, 553, 60, 187, 763, 14, 524, 794, 939, 523, + 782, 783, 784, 847, 850, 939, 168, 81, 804, 803, + 524, 524, 521, 808, 524, 527, 524, 944, 522, 944, + 524, 831, 833, 834, 835, 834, 835, 835, 524, 431, + 844, 144, 844, 878, 888, 829, 829, 524, 527, 524, + 555, 844, 929, 930, 931, 41, 523, 925, 933, 200, + 524, 932, 843, 844, 37, 37, 844, 524, 844, 173, + 523, 896, 844, 524, 146, 845, 845, 146, 146, 844, + 844, 522, 19, 523, 916, 728, 482, 844, 303, 865, + 527, 754, 726, 754, 524, 554, 716, 717, 912, 252, + 523, 844, 364, 574, 554, 268, 324, 118, 306, 523, + 564, 700, 524, 527, 570, 1002, 844, 165, 233, 523, + 732, 293, 553, 524, 940, 182, 701, 702, 922, 940, + 941, 941, 524, 153, 658, 545, 658, 617, 647, 527, + 524, 120, 208, 275, 277, 642, 523, 34, 60, 665, + 654, 75, 81, 94, 118, 120, 208, 277, 282, 332, + 350, 452, 462, 622, 623, 637, 177, 118, 192, 277, + 631, 605, 108, 118, 177, 277, 409, 412, 607, 631, + 392, 540, 446, 941, 544, 548, 3, 38, 43, 47, + 50, 56, 82, 84, 90, 102, 172, 174, 177, 178, + 195, 210, 223, 224, 226, 237, 239, 249, 271, 276, + 280, 294, 302, 304, 325, 367, 386, 393, 397, 416, + 425, 445, 451, 456, 473, 514, 515, 556, 606, 618, + 659, 808, 886, 945, 1023, 1029, 560, 656, 892, 729, + 941, 941, 941, 941, 544, 941, 941, 941, 941, 941, + 690, 914, 914, 524, 524, 524, 727, 108, 376, 525, + 605, 698, 523, 523, 651, 700, 585, 964, 664, 193, + 553, 594, 595, 844, 524, 527, 524, 590, 523, 41, + 640, 638, 554, 648, 87, 602, 108, 275, 41, 556, + 586, 587, 653, 700, 676, 678, 41, 41, 701, 702, + 647, 462, 961, 670, 524, 527, 657, 845, 173, 523, + 896, 802, 524, 527, 524, 754, 553, 553, 553, 553, + 31, 104, 183, 370, 523, 755, 756, 757, 758, 759, + 760, 761, 844, 844, 484, 862, 844, 524, 846, 889, + 890, 200, 182, 779, 783, 524, 785, 786, 787, 948, + 810, 944, 810, 554, 810, 522, 522, 844, 925, 527, + 524, 554, 933, 934, 935, 41, 844, 846, 936, 844, + 844, 844, 896, 524, 844, 37, 37, 844, 844, 146, + 524, 515, 914, 524, 894, 524, 844, 524, 523, 554, + 866, 763, 524, 763, 556, 524, 527, 955, 921, 468, + 422, 461, 575, 554, 569, 579, 292, 572, 512, 583, + 574, 888, 60, 524, 524, 467, 468, 706, 617, 545, + 524, 524, 485, 650, 121, 196, 206, 120, 464, 844, + 118, 41, 523, 948, 941, 845, 121, 196, 120, 282, + 228, 553, 650, 89, 665, 193, 282, 606, 844, 665, + 282, 514, 515, 609, 554, 807, 808, 670, 670, 3, + 249, 416, 945, 949, 512, 524, 524, 435, 435, 522, + 522, 726, 524, 524, 554, 690, 462, 685, 687, 597, + 657, 524, 1021, 41, 423, 277, 523, 523, 596, 964, + 651, 152, 700, 150, 202, 630, 123, 138, 331, 1021, + 108, 585, 524, 527, 964, 485, 1019, 423, 292, 554, + 960, 523, 697, 845, 896, 524, 524, 9, 357, 744, + 763, 523, 394, 523, 524, 527, 554, 863, 864, 339, + 764, 527, 524, 523, 555, 60, 524, 200, 524, 786, + 522, 808, 929, 527, 524, 554, 522, 193, 524, 844, + 844, 844, 19, 19, 522, 524, 524, 554, 867, 862, + 556, 862, 912, 524, 527, 467, 915, 524, 527, 92, + 574, 844, 524, 940, 940, 350, 650, 523, 639, 617, + 524, 192, 523, 844, 277, 623, 650, 653, 941, 41, + 153, 804, 949, 518, 618, 941, 941, 524, 605, 125, + 524, 524, 638, 700, 553, 153, 597, 41, 524, 941, + 1021, 31, 86, 95, 119, 192, 205, 409, 412, 634, + 634, 372, 372, 556, 41, 65, 75, 243, 701, 553, + 523, 554, 573, 582, 856, 524, 524, 523, 862, 892, + 523, 892, 757, 41, 527, 844, 462, 739, 846, 922, + 939, 790, 523, 790, 933, 844, 914, 914, 312, 868, + 764, 764, 700, 306, 700, 569, 292, 523, 567, 553, + 617, 560, 646, 649, 413, 477, 624, 625, 523, 619, + 844, 524, 251, 662, 192, 462, 547, 518, 446, 690, + 556, 964, 630, 1019, 523, 553, 524, 700, 638, 602, + 700, 75, 295, 75, 961, 844, 81, 577, 524, 527, + 577, 9, 764, 524, 756, 524, 866, 864, 374, 524, + 922, 522, 522, 522, 60, 727, 739, 739, 575, 94, + 582, 134, 653, 512, 524, 527, 604, 524, 275, 632, + 174, 311, 398, 292, 628, 629, 655, 619, 844, 446, + 41, 523, 1019, 630, 1021, 1019, 295, 295, 523, 524, + 948, 578, 948, 964, 573, 578, 524, 739, 524, 741, + 524, 891, 185, 343, 372, 869, 467, 941, 524, 278, + 459, 662, 618, 649, 524, 625, 206, 123, 459, 292, + 655, 292, 628, 700, 582, 577, 731, 801, 731, 54, + 105, 448, 844, 870, 871, 870, 870, 524, 700, 801, + 392, 629, 64, 275, 363, 392, 621, 621, 1019, 524, + 578, 732, 732, 871, 371, 167, 327, 167, 327, 149, + 872, 872, 872, 581, 617, 26, 118, 282, 964, 731, + 37, 105, 182, 275, 432, 801, 801, 732, 871, 371, + 300 }; #define yyerrok (yyerrstatus = 0) @@ -22139,70 +22327,100 @@ YYLTYPE yylloc; case 199: #line 8 "third_party/libpg_query/grammar/statements/create_type.y" { - PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); - n->typeName = (yyvsp[(3) - (6)].range); - n->kind = PG_NEWTYPE_ENUM; - n->query = (yyvsp[(6) - (6)].node); - n->vals = NULL; + PGCreateTypeStmt *n = (PGCreateTypeStmt *) (yyvsp[(6) - (6)].node); + (yyvsp[(4) - (6)].range)->relpersistence = (yyvsp[(2) - (6)].ival); + n->typeName = (yyvsp[(4) - (6)].range); + n->onconflict = PG_ERROR_ON_CONFLICT; (yyval.node) = (PGNode *)n; ;} break; case 200: -#line 17 "third_party/libpg_query/grammar/statements/create_type.y" +#line 16 "third_party/libpg_query/grammar/statements/create_type.y" { - PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); - n->typeName = (yyvsp[(3) - (8)].range); - n->kind = PG_NEWTYPE_ENUM; - n->vals = (yyvsp[(7) - (8)].list); - n->query = NULL; + PGCreateTypeStmt *n = (PGCreateTypeStmt *) (yyvsp[(9) - (9)].node); + (yyvsp[(7) - (9)].range)->relpersistence = (yyvsp[(2) - (9)].ival); + n->typeName = (yyvsp[(7) - (9)].range); + n->onconflict = PG_IGNORE_ON_CONFLICT; (yyval.node) = (PGNode *)n; ;} break; case 201: -#line 26 "third_party/libpg_query/grammar/statements/create_type.y" +#line 24 "third_party/libpg_query/grammar/statements/create_type.y" { - PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); - n->typeName = (yyvsp[(3) - (5)].range); - n->query = NULL; - auto name = std::string(reinterpret_cast((yyvsp[(5) - (5)].typnam)->names->tail->data.ptr_value)->val.str); - if (name == "enum") { - n->kind = PG_NEWTYPE_ENUM; - n->vals = (yyvsp[(5) - (5)].typnam)->typmods; - } else { - n->kind = PG_NEWTYPE_ALIAS; - n->ofType = (yyvsp[(5) - (5)].typnam); - } + PGCreateTypeStmt *n = (PGCreateTypeStmt *) (yyvsp[(8) - (8)].node); + (yyvsp[(6) - (8)].range)->relpersistence = (yyvsp[(4) - (8)].ival); + n->typeName = (yyvsp[(6) - (8)].range); + n->onconflict = PG_REPLACE_ON_CONFLICT; (yyval.node) = (PGNode *)n; ;} break; case 202: -#line 46 "third_party/libpg_query/grammar/statements/create_type.y" - { (yyval.list) = (yyvsp[(1) - (1)].list);;} +#line 35 "third_party/libpg_query/grammar/statements/create_type.y" + { + PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); + n->kind = PG_NEWTYPE_ENUM; + n->query = (yyvsp[(2) - (2)].node); + n->vals = NULL; + (yyval.node) = (PGNode *)n; + ;} break; case 203: -#line 47 "third_party/libpg_query/grammar/statements/create_type.y" - {(yyval.list) = NIL;;} +#line 43 "third_party/libpg_query/grammar/statements/create_type.y" + { + PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); + n->kind = PG_NEWTYPE_ENUM; + n->vals = (yyvsp[(3) - (4)].list); + n->query = NULL; + (yyval.node) = (PGNode *)n; + ;} break; case 204: #line 51 "third_party/libpg_query/grammar/statements/create_type.y" + { + PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); + n->query = NULL; + auto name = std::string(reinterpret_cast((yyvsp[(1) - (1)].typnam)->names->tail->data.ptr_value)->val.str); + if (name == "enum") { + n->kind = PG_NEWTYPE_ENUM; + n->vals = (yyvsp[(1) - (1)].typnam)->typmods; + } else { + n->kind = PG_NEWTYPE_ALIAS; + n->ofType = (yyvsp[(1) - (1)].typnam); + } + (yyval.node) = (PGNode *)n; + ;} + break; + + case 205: +#line 68 "third_party/libpg_query/grammar/statements/create_type.y" + { (yyval.list) = (yyvsp[(1) - (1)].list);;} + break; + + case 206: +#line 69 "third_party/libpg_query/grammar/statements/create_type.y" + {(yyval.list) = NIL;;} + break; + + case 207: +#line 73 "third_party/libpg_query/grammar/statements/create_type.y" { (yyval.list) = list_make1(makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)]))); ;} break; - case 205: -#line 55 "third_party/libpg_query/grammar/statements/create_type.y" + case 208: +#line 77 "third_party/libpg_query/grammar/statements/create_type.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)]))); ;} break; - case 206: + case 209: #line 8 "third_party/libpg_query/grammar/statements/pragma.y" { PGPragmaStmt *n = makeNode(PGPragmaStmt); @@ -22212,7 +22430,7 @@ YYLTYPE yylloc; ;} break; - case 207: + case 210: #line 15 "third_party/libpg_query/grammar/statements/pragma.y" { PGPragmaStmt *n = makeNode(PGPragmaStmt); @@ -22223,7 +22441,7 @@ YYLTYPE yylloc; ;} break; - case 208: + case 211: #line 23 "third_party/libpg_query/grammar/statements/pragma.y" { PGPragmaStmt *n = makeNode(PGPragmaStmt); @@ -22234,7 +22452,7 @@ YYLTYPE yylloc; ;} break; - case 209: + case 212: #line 10 "third_party/libpg_query/grammar/statements/create_sequence.y" { PGCreateSeqStmt *n = makeNode(PGCreateSeqStmt); @@ -22247,7 +22465,7 @@ YYLTYPE yylloc; ;} break; - case 210: + case 213: #line 20 "third_party/libpg_query/grammar/statements/create_sequence.y" { PGCreateSeqStmt *n = makeNode(PGCreateSeqStmt); @@ -22260,7 +22478,7 @@ YYLTYPE yylloc; ;} break; - case 211: + case 214: #line 30 "third_party/libpg_query/grammar/statements/create_sequence.y" { PGCreateSeqStmt *n = makeNode(PGCreateSeqStmt); @@ -22273,17 +22491,17 @@ YYLTYPE yylloc; ;} break; - case 212: + case 215: #line 42 "third_party/libpg_query/grammar/statements/create_sequence.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 213: + case 216: #line 43 "third_party/libpg_query/grammar/statements/create_sequence.y" { (yyval.list) = NIL; ;} break; - case 214: + case 217: #line 8 "third_party/libpg_query/grammar/statements/create_secret.y" { PGCreateSecretStmt *n = makeNode(PGCreateSecretStmt); @@ -22296,7 +22514,7 @@ YYLTYPE yylloc; ;} break; - case 215: + case 218: #line 18 "third_party/libpg_query/grammar/statements/create_secret.y" { PGCreateSecretStmt *n = makeNode(PGCreateSecretStmt); @@ -22309,7 +22527,7 @@ YYLTYPE yylloc; ;} break; - case 216: + case 219: #line 28 "third_party/libpg_query/grammar/statements/create_secret.y" { PGCreateSecretStmt *n = makeNode(PGCreateSecretStmt); @@ -22322,68 +22540,68 @@ YYLTYPE yylloc; ;} break; - case 217: + case 220: #line 40 "third_party/libpg_query/grammar/statements/create_secret.y" { (yyval.str) = NULL; ;} break; - case 218: + case 221: #line 41 "third_party/libpg_query/grammar/statements/create_secret.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 219: + case 222: #line 45 "third_party/libpg_query/grammar/statements/create_secret.y" { (yyval.str) = pstrdup("default"); ;} break; - case 220: + case 223: #line 46 "third_party/libpg_query/grammar/statements/create_secret.y" { (yyval.str) = pstrdup("temporary"); ;} break; - case 221: + case 224: #line 47 "third_party/libpg_query/grammar/statements/create_secret.y" { (yyval.str) = pstrdup("persistent"); ;} break; - case 222: + case 225: #line 51 "third_party/libpg_query/grammar/statements/create_secret.y" { (yyval.str) = pstrdup(""); ;} break; - case 223: + case 226: #line 52 "third_party/libpg_query/grammar/statements/create_secret.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 224: + case 227: #line 57 "third_party/libpg_query/grammar/statements/create_secret.y" { (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].node); ;} break; - case 225: + case 228: #line 62 "third_party/libpg_query/grammar/statements/create_secret.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 226: + case 229: #line 69 "third_party/libpg_query/grammar/statements/create_secret.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 227: + case 230: #line 73 "third_party/libpg_query/grammar/statements/create_secret.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 228: + case 231: #line 8 "third_party/libpg_query/grammar/statements/update_extensions.y" { PGUpdateExtensionsStmt *n = makeNode(PGUpdateExtensionsStmt); @@ -22401,7 +22619,7 @@ YYLTYPE yylloc; ;} break; - case 229: + case 232: #line 8 "third_party/libpg_query/grammar/statements/execute.y" { PGExecuteStmt *n = makeNode(PGExecuteStmt); @@ -22411,7 +22629,7 @@ YYLTYPE yylloc; ;} break; - case 230: + case 233: #line 16 "third_party/libpg_query/grammar/statements/execute.y" { PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); @@ -22430,7 +22648,7 @@ YYLTYPE yylloc; ;} break; - case 231: + case 234: #line 33 "third_party/libpg_query/grammar/statements/execute.y" { PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); @@ -22449,14 +22667,14 @@ YYLTYPE yylloc; ;} break; - case 232: + case 235: #line 52 "third_party/libpg_query/grammar/statements/execute.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 233: + case 236: #line 56 "third_party/libpg_query/grammar/statements/execute.y" { PGNamedArgExpr *na = makeNode(PGNamedArgExpr); @@ -22468,31 +22686,31 @@ YYLTYPE yylloc; ;} break; - case 234: + case 237: #line 66 "third_party/libpg_query/grammar/statements/execute.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 235: + case 238: #line 70 "third_party/libpg_query/grammar/statements/execute.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 236: + case 239: #line 75 "third_party/libpg_query/grammar/statements/execute.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 237: + case 240: #line 76 "third_party/libpg_query/grammar/statements/execute.y" { (yyval.list) = NIL; ;} break; - case 238: + case 241: #line 10 "third_party/libpg_query/grammar/statements/alter_sequence.y" { PGAlterSeqStmt *n = makeNode(PGAlterSeqStmt); @@ -22503,7 +22721,7 @@ YYLTYPE yylloc; ;} break; - case 239: + case 242: #line 18 "third_party/libpg_query/grammar/statements/alter_sequence.y" { PGAlterSeqStmt *n = makeNode(PGAlterSeqStmt); @@ -22514,42 +22732,42 @@ YYLTYPE yylloc; ;} break; - case 240: + case 243: #line 29 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 241: + case 244: #line 30 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 242: + case 245: #line 34 "third_party/libpg_query/grammar/statements/alter_sequence.y" {;} break; - case 243: + case 246: #line 35 "third_party/libpg_query/grammar/statements/alter_sequence.y" {;} break; - case 244: + case 247: #line 36 "third_party/libpg_query/grammar/statements/alter_sequence.y" {;} break; - case 245: + case 248: #line 41 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.value) = makeFloat((yyvsp[(1) - (1)].str)); ;} break; - case 246: + case 249: #line 42 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); ;} break; - case 247: + case 250: #line 44 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); @@ -22557,82 +22775,82 @@ YYLTYPE yylloc; ;} break; - case 248: + case 251: #line 48 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.value) = makeInteger((yyvsp[(1) - (1)].ival)); ;} break; - case 249: + case 252: #line 53 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("as", (PGNode *)(yyvsp[(2) - (2)].typnam), (yylsp[(1) - (2)])); ;} break; - case 250: + case 253: #line 57 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("cache", (PGNode *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; - case 251: + case 254: #line 61 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("cycle", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 252: + case 255: #line 65 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("cycle", (PGNode *)makeInteger(false), (yylsp[(1) - (2)])); ;} break; - case 253: + case 256: #line 69 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("increment", (PGNode *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); ;} break; - case 254: + case 257: #line 73 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("maxvalue", (PGNode *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; - case 255: + case 258: #line 77 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("minvalue", (PGNode *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; - case 256: + case 259: #line 81 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[(1) - (2)])); ;} break; - case 257: + case 260: #line 85 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[(1) - (2)])); ;} break; - case 258: + case 261: #line 89 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("owned_by", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 259: + case 262: #line 93 "third_party/libpg_query/grammar/statements/alter_sequence.y" { /* not documented, only used by pg_dump */ @@ -22640,53 +22858,53 @@ YYLTYPE yylloc; ;} break; - case 260: + case 263: #line 98 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("start", (PGNode *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); ;} break; - case 261: + case 264: #line 102 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); ;} break; - case 262: + case 265: #line 106 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.defelt) = makeDefElem("restart", (PGNode *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); ;} break; - case 263: + case 266: #line 112 "third_party/libpg_query/grammar/statements/alter_sequence.y" {;} break; - case 264: + case 267: #line 113 "third_party/libpg_query/grammar/statements/alter_sequence.y" {;} break; - case 265: + case 268: #line 117 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; - case 266: + case 269: #line 118 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.ival) = + (yyvsp[(2) - (2)].ival); ;} break; - case 267: + case 270: #line 119 "third_party/libpg_query/grammar/statements/alter_sequence.y" { (yyval.ival) = - (yyvsp[(2) - (2)].ival); ;} break; - case 268: + case 271: #line 8 "third_party/libpg_query/grammar/statements/drop_secret.y" { PGDropSecretStmt *n = makeNode(PGDropSecretStmt); @@ -22698,7 +22916,7 @@ YYLTYPE yylloc; ;} break; - case 269: + case 272: #line 17 "third_party/libpg_query/grammar/statements/drop_secret.y" { PGDropSecretStmt *n = makeNode(PGDropSecretStmt); @@ -22710,17 +22928,17 @@ YYLTYPE yylloc; ;} break; - case 270: + case 273: #line 28 "third_party/libpg_query/grammar/statements/drop_secret.y" { (yyval.str) = pstrdup(""); ;} break; - case 271: + case 274: #line 29 "third_party/libpg_query/grammar/statements/drop_secret.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 272: + case 275: #line 3 "third_party/libpg_query/grammar/statements/transaction.y" { PGTransactionStmt *n = makeNode(PGTransactionStmt); @@ -22731,7 +22949,7 @@ YYLTYPE yylloc; ;} break; - case 273: + case 276: #line 11 "third_party/libpg_query/grammar/statements/transaction.y" { PGTransactionStmt *n = makeNode(PGTransactionStmt); @@ -22741,7 +22959,7 @@ YYLTYPE yylloc; ;} break; - case 274: + case 277: #line 18 "third_party/libpg_query/grammar/statements/transaction.y" { PGTransactionStmt *n = makeNode(PGTransactionStmt); @@ -22751,7 +22969,7 @@ YYLTYPE yylloc; ;} break; - case 275: + case 278: #line 25 "third_party/libpg_query/grammar/statements/transaction.y" { PGTransactionStmt *n = makeNode(PGTransactionStmt); @@ -22762,7 +22980,7 @@ YYLTYPE yylloc; ;} break; - case 276: + case 279: #line 33 "third_party/libpg_query/grammar/statements/transaction.y" { PGTransactionStmt *n = makeNode(PGTransactionStmt); @@ -22773,7 +22991,7 @@ YYLTYPE yylloc; ;} break; - case 277: + case 280: #line 41 "third_party/libpg_query/grammar/statements/transaction.y" { PGTransactionStmt *n = makeNode(PGTransactionStmt); @@ -22784,37 +23002,37 @@ YYLTYPE yylloc; ;} break; - case 278: + case 281: #line 51 "third_party/libpg_query/grammar/statements/transaction.y" {;} break; - case 279: + case 282: #line 52 "third_party/libpg_query/grammar/statements/transaction.y" {;} break; - case 280: + case 283: #line 53 "third_party/libpg_query/grammar/statements/transaction.y" {;} break; - case 281: + case 284: #line 57 "third_party/libpg_query/grammar/statements/transaction.y" { (yyval.transactiontype) = PG_TRANS_TYPE_READ_ONLY; ;} break; - case 282: + case 285: #line 58 "third_party/libpg_query/grammar/statements/transaction.y" { (yyval.transactiontype) = PG_TRANS_TYPE_READ_WRITE; ;} break; - case 283: + case 286: #line 59 "third_party/libpg_query/grammar/statements/transaction.y" { (yyval.transactiontype) = PG_TRANS_TYPE_DEFAULT; ;} break; - case 284: + case 287: #line 3 "third_party/libpg_query/grammar/statements/use.y" { PGUseStmt *n = makeNode(PGUseStmt); @@ -22823,7 +23041,7 @@ YYLTYPE yylloc; ;} break; - case 285: + case 288: #line 9 "third_party/libpg_query/grammar/statements/create.y" { PGCreateStmt *n = makeNode(PGCreateStmt); @@ -22839,7 +23057,7 @@ YYLTYPE yylloc; ;} break; - case 286: + case 289: #line 24 "third_party/libpg_query/grammar/statements/create.y" { PGCreateStmt *n = makeNode(PGCreateStmt); @@ -22855,7 +23073,7 @@ YYLTYPE yylloc; ;} break; - case 287: + case 290: #line 39 "third_party/libpg_query/grammar/statements/create.y" { PGCreateStmt *n = makeNode(PGCreateStmt); @@ -22871,12 +23089,12 @@ YYLTYPE yylloc; ;} break; - case 288: + case 291: #line 56 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = 0; ;} break; - case 289: + case 292: #line 58 "third_party/libpg_query/grammar/statements/create.y" { /* @@ -22903,77 +23121,77 @@ YYLTYPE yylloc; ;} break; - case 290: + case 293: #line 84 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (PGNode *)(yyvsp[(1) - (1)].typnam); ;} break; - case 291: + case 294: #line 85 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (PGNode *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; - case 292: + case 295: #line 86 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (PGNode *)(yyvsp[(1) - (1)].list); ;} break; - case 293: + case 296: #line 87 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (PGNode *)(yyvsp[(1) - (1)].value); ;} break; - case 294: + case 297: #line 88 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (PGNode *)makeString((yyvsp[(1) - (1)].str)); ;} break; - case 295: + case 298: #line 89 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (PGNode *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; - case 296: + case 299: #line 93 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 297: + case 300: #line 94 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = NIL; ;} break; - case 298: + case 301: #line 99 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} break; - case 299: + case 302: #line 104 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_FKCONSTR_ACTION_NOACTION; ;} break; - case 300: + case 303: #line 105 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_FKCONSTR_ACTION_RESTRICT; ;} break; - case 301: + case 304: #line 106 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_FKCONSTR_ACTION_CASCADE; ;} break; - case 302: + case 305: #line 107 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_FKCONSTR_ACTION_SETNULL; ;} break; - case 303: + case 306: #line 108 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_FKCONSTR_ACTION_SETDEFAULT; ;} break; - case 304: + case 307: #line 114 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = castNode(PGConstraint, (yyvsp[(3) - (3)].node)); @@ -22983,17 +23201,17 @@ YYLTYPE yylloc; ;} break; - case 305: + case 308: #line 120 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 306: + case 309: #line 121 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 307: + case 310: #line 123 "third_party/libpg_query/grammar/statements/create.y" { /* @@ -23009,7 +23227,7 @@ YYLTYPE yylloc; ;} break; - case 308: + case 311: #line 140 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23019,7 +23237,7 @@ YYLTYPE yylloc; ;} break; - case 309: + case 312: #line 147 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23029,7 +23247,7 @@ YYLTYPE yylloc; ;} break; - case 310: + case 313: #line 154 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23042,7 +23260,7 @@ YYLTYPE yylloc; ;} break; - case 311: + case 314: #line 164 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23055,7 +23273,7 @@ YYLTYPE yylloc; ;} break; - case 312: + case 315: #line 174 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23070,7 +23288,7 @@ YYLTYPE yylloc; ;} break; - case 313: + case 316: #line 186 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23081,7 +23299,7 @@ YYLTYPE yylloc; ;} break; - case 314: + case 317: #line 194 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23093,7 +23311,7 @@ YYLTYPE yylloc; ;} break; - case 315: + case 318: #line 203 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23111,27 +23329,27 @@ YYLTYPE yylloc; ;} break; - case 316: + case 319: #line 220 "third_party/libpg_query/grammar/statements/create.y" { (yyval.constr) = PG_CONSTR_GENERATED_VIRTUAL; ;} break; - case 317: + case 320: #line 221 "third_party/libpg_query/grammar/statements/create.y" { (yyval.constr) = PG_CONSTR_GENERATED_STORED; ;} break; - case 318: + case 321: #line 225 "third_party/libpg_query/grammar/statements/create.y" { (yyval.constr) = (yyvsp[(1) - (1)].constr); ;} break; - case 319: + case 322: #line 226 "third_party/libpg_query/grammar/statements/create.y" { (yyval.constr) = PG_CONSTR_GENERATED_VIRTUAL; ;} break; - case 320: + case 323: #line 231 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23143,7 +23361,7 @@ YYLTYPE yylloc; ;} break; - case 321: + case 324: #line 240 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23169,7 +23387,7 @@ YYLTYPE yylloc; ;} break; - case 322: + case 325: #line 263 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23182,79 +23400,79 @@ YYLTYPE yylloc; ;} break; - case 323: + case 326: #line 277 "third_party/libpg_query/grammar/statements/create.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 324: + case 327: #line 283 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = (yyvsp[(3) - (3)].ival); ;} break; - case 325: + case 328: #line 289 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = ((yyvsp[(1) - (1)].ival) << 8) | (PG_FKCONSTR_ACTION_NOACTION & 0xFF); ;} break; - case 326: + case 329: #line 291 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = (PG_FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[(1) - (1)].ival) & 0xFF); ;} break; - case 327: + case 330: #line 293 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = ((yyvsp[(1) - (2)].ival) << 8) | ((yyvsp[(2) - (2)].ival) & 0xFF); ;} break; - case 328: + case 331: #line 295 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = ((yyvsp[(2) - (2)].ival) << 8) | ((yyvsp[(1) - (2)].ival) & 0xFF); ;} break; - case 329: + case 332: #line 297 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = (PG_FKCONSTR_ACTION_NOACTION << 8) | (PG_FKCONSTR_ACTION_NOACTION & 0xFF); ;} break; - case 330: + case 333: #line 300 "third_party/libpg_query/grammar/statements/create.y" { (yyval.oncommit) = ONCOMMIT_DROP; ;} break; - case 331: + case 334: #line 301 "third_party/libpg_query/grammar/statements/create.y" { (yyval.oncommit) = PG_ONCOMMIT_DELETE_ROWS; ;} break; - case 332: + case 335: #line 302 "third_party/libpg_query/grammar/statements/create.y" { (yyval.oncommit) = PG_ONCOMMIT_PRESERVE_ROWS; ;} break; - case 333: + case 336: #line 303 "third_party/libpg_query/grammar/statements/create.y" { (yyval.oncommit) = PG_ONCOMMIT_NOOP; ;} break; - case 334: + case 337: #line 308 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 335: + case 338: #line 312 "third_party/libpg_query/grammar/statements/create.y" { (yyval.boolean) = true; ;} break; - case 336: + case 339: #line 313 "third_party/libpg_query/grammar/statements/create.y" { (yyval.boolean) = false; ;} break; - case 337: + case 340: #line 319 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = castNode(PGConstraint, (yyvsp[(3) - (3)].node)); @@ -23264,67 +23482,67 @@ YYLTYPE yylloc; ;} break; - case 338: + case 341: #line 325 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 339: + case 342: #line 330 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_CREATE_TABLE_LIKE_COMMENTS; ;} break; - case 340: + case 343: #line 331 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_CREATE_TABLE_LIKE_CONSTRAINTS; ;} break; - case 341: + case 344: #line 332 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_CREATE_TABLE_LIKE_DEFAULTS; ;} break; - case 342: + case 345: #line 333 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_CREATE_TABLE_LIKE_IDENTITY; ;} break; - case 343: + case 346: #line 334 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_CREATE_TABLE_LIKE_INDEXES; ;} break; - case 344: + case 347: #line 335 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_CREATE_TABLE_LIKE_STATISTICS; ;} break; - case 345: + case 348: #line 336 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_CREATE_TABLE_LIKE_STORAGE; ;} break; - case 346: + case 349: #line 337 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_CREATE_TABLE_LIKE_ALL; ;} break; - case 347: + case 350: #line 343 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 348: + case 351: #line 344 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 349: + case 352: #line 348 "third_party/libpg_query/grammar/statements/create.y" { (yyval.str) = (yyvsp[(3) - (3)].str); ;} break; - case 350: + case 353: #line 354 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23334,7 +23552,7 @@ YYLTYPE yylloc; ;} break; - case 351: + case 354: #line 361 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23344,7 +23562,7 @@ YYLTYPE yylloc; ;} break; - case 352: + case 355: #line 368 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23354,7 +23572,7 @@ YYLTYPE yylloc; ;} break; - case 353: + case 356: #line 375 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23364,82 +23582,82 @@ YYLTYPE yylloc; ;} break; - case 354: + case 357: #line 386 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 355: + case 358: #line 387 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = list_make1(makeDefElem("oids", (PGNode *) makeInteger(true), (yylsp[(1) - (2)]))); ;} break; - case 356: + case 359: #line 388 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = list_make1(makeDefElem("oids", (PGNode *) makeInteger(false), (yylsp[(1) - (2)]))); ;} break; - case 357: + case 360: #line 389 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = NIL; ;} break; - case 358: + case 361: #line 393 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 359: + case 362: #line 398 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} break; - case 360: + case 363: #line 399 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) & ~(yyvsp[(3) - (3)].ival); ;} break; - case 361: + case 364: #line 400 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = 0; ;} break; - case 362: + case 365: #line 405 "third_party/libpg_query/grammar/statements/create.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 363: + case 366: #line 410 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = CAS_NOT_DEFERRABLE; ;} break; - case 364: + case 367: #line 411 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = CAS_DEFERRABLE; ;} break; - case 365: + case 368: #line 412 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = CAS_INITIALLY_IMMEDIATE; ;} break; - case 366: + case 369: #line 413 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = CAS_INITIALLY_DEFERRED; ;} break; - case 367: + case 370: #line 414 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = CAS_NOT_VALID; ;} break; - case 368: + case 371: #line 415 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = CAS_NO_INHERIT; ;} break; - case 369: + case 372: #line 421 "third_party/libpg_query/grammar/statements/create.y" { PGColumnDef *n = makeNode(PGColumnDef); @@ -23459,7 +23677,7 @@ YYLTYPE yylloc; ;} break; - case 370: + case 373: #line 441 "third_party/libpg_query/grammar/statements/create.y" { PGColumnDef *n = makeNode(PGColumnDef); @@ -23486,7 +23704,7 @@ YYLTYPE yylloc; ;} break; - case 371: + case 374: #line 467 "third_party/libpg_query/grammar/statements/create.y" { PGColumnDef *n = (PGColumnDef *) (yyvsp[(2) - (2)].node); @@ -23496,7 +23714,7 @@ YYLTYPE yylloc; ;} break; - case 372: + case 375: #line 475 "third_party/libpg_query/grammar/statements/create.y" { PGColumnDef *n = (PGColumnDef *) (yyvsp[(2) - (2)].node); @@ -23506,122 +23724,122 @@ YYLTYPE yylloc; ;} break; - case 373: + case 376: #line 484 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 374: + case 377: #line 485 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 375: + case 378: #line 489 "third_party/libpg_query/grammar/statements/create.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 376: + case 379: #line 493 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 377: + case 380: #line 494 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 378: + case 381: #line 495 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 379: + case 382: #line 500 "third_party/libpg_query/grammar/statements/create.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (PGNode *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; - case 380: + case 383: #line 504 "third_party/libpg_query/grammar/statements/create.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); ;} break; - case 381: + case 384: #line 511 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 382: + case 385: #line 512 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = NIL; ;} break; - case 383: + case 386: #line 517 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 384: + case 387: #line 518 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 385: + case 388: #line 519 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = NIL; ;} break; - case 386: + case 389: #line 524 "third_party/libpg_query/grammar/statements/create.y" { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} break; - case 387: + case 390: #line 531 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 388: + case 391: #line 532 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = NIL; ;} break; - case 389: + case 392: #line 537 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 390: + case 393: #line 538 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = NIL; ;} break; - case 391: + case 394: #line 542 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = (yyvsp[(3) - (3)].ival); ;} break; - case 392: + case 395: #line 548 "third_party/libpg_query/grammar/statements/create.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (PGNode *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; - case 393: + case 396: #line 552 "third_party/libpg_query/grammar/statements/create.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); ;} break; - case 394: + case 397: #line 556 "third_party/libpg_query/grammar/statements/create.y" { (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (PGNode *) (yyvsp[(5) - (5)].node), @@ -23629,39 +23847,39 @@ YYLTYPE yylloc; ;} break; - case 395: + case 398: #line 561 "third_party/libpg_query/grammar/statements/create.y" { (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str), NULL, PG_DEFELEM_UNSPEC, (yylsp[(1) - (3)])); ;} break; - case 396: + case 399: #line 568 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 397: + case 400: #line 569 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 398: + case 401: #line 573 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 399: + case 402: #line 574 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 400: + case 403: #line 578 "third_party/libpg_query/grammar/statements/create.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 401: + case 404: #line 580 "third_party/libpg_query/grammar/statements/create.y" { (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(1) - (4)].str)), (yyvsp[(2) - (4)].list))); @@ -23670,7 +23888,7 @@ YYLTYPE yylloc; ;} break; - case 402: + case 405: #line 586 "third_party/libpg_query/grammar/statements/create.y" { (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(2) - (5)].str)), (yyvsp[(3) - (5)].list))); @@ -23680,7 +23898,7 @@ YYLTYPE yylloc; ;} break; - case 403: + case 406: #line 597 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23696,7 +23914,7 @@ YYLTYPE yylloc; ;} break; - case 404: + case 407: #line 611 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23712,7 +23930,7 @@ YYLTYPE yylloc; ;} break; - case 405: + case 408: #line 624 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23729,7 +23947,7 @@ YYLTYPE yylloc; ;} break; - case 406: + case 409: #line 639 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23745,7 +23963,7 @@ YYLTYPE yylloc; ;} break; - case 407: + case 410: #line 652 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23762,7 +23980,7 @@ YYLTYPE yylloc; ;} break; - case 408: + case 411: #line 667 "third_party/libpg_query/grammar/statements/create.y" { PGConstraint *n = makeNode(PGConstraint); @@ -23783,28 +24001,28 @@ YYLTYPE yylloc; ;} break; - case 409: + case 412: #line 689 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 410: + case 413: #line 693 "third_party/libpg_query/grammar/statements/create.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 411: + case 414: #line 700 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_FKCONSTR_MATCH_FULL; ;} break; - case 412: + case 415: #line 704 "third_party/libpg_query/grammar/statements/create.y" { ereport(ERROR, @@ -23815,21 +24033,21 @@ YYLTYPE yylloc; ;} break; - case 413: + case 416: #line 712 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_FKCONSTR_MATCH_SIMPLE; ;} break; - case 414: + case 417: #line 716 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_FKCONSTR_MATCH_SIMPLE; ;} break; - case 415: + case 418: #line 724 "third_party/libpg_query/grammar/statements/create.y" { PGTableLikeClause *n = makeNode(PGTableLikeClause); @@ -23839,27 +24057,27 @@ YYLTYPE yylloc; ;} break; - case 416: + case 419: #line 733 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} break; - case 417: + case 420: #line 734 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} break; - case 418: + case 421: #line 735 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} break; - case 419: + case 422: #line 736 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} break; - case 420: + case 423: #line 738 "third_party/libpg_query/grammar/statements/create.y" { ereport(PGWARNING, @@ -23869,7 +24087,7 @@ YYLTYPE yylloc; ;} break; - case 421: + case 424: #line 745 "third_party/libpg_query/grammar/statements/create.y" { ereport(PGWARNING, @@ -23879,27 +24097,27 @@ YYLTYPE yylloc; ;} break; - case 422: + case 425: #line 751 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_RELPERSISTENCE_UNLOGGED; ;} break; - case 423: + case 426: #line 752 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; ;} break; - case 424: + case 427: #line 757 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = PG_ATTRIBUTE_IDENTITY_ALWAYS; ;} break; - case 425: + case 428: #line 758 "third_party/libpg_query/grammar/statements/create.y" { (yyval.ival) = ATTRIBUTE_IDENTITY_BY_DEFAULT; ;} break; - case 426: + case 429: #line 10 "third_party/libpg_query/grammar/statements/drop.y" { PGDropStmt *n = makeNode(PGDropStmt); @@ -23912,7 +24130,7 @@ YYLTYPE yylloc; ;} break; - case 427: + case 430: #line 20 "third_party/libpg_query/grammar/statements/drop.y" { PGDropStmt *n = makeNode(PGDropStmt); @@ -23925,7 +24143,7 @@ YYLTYPE yylloc; ;} break; - case 428: + case 431: #line 30 "third_party/libpg_query/grammar/statements/drop.y" { PGDropStmt *n = makeNode(PGDropStmt); @@ -23938,7 +24156,7 @@ YYLTYPE yylloc; ;} break; - case 429: + case 432: #line 40 "third_party/libpg_query/grammar/statements/drop.y" { PGDropStmt *n = makeNode(PGDropStmt); @@ -23951,7 +24169,7 @@ YYLTYPE yylloc; ;} break; - case 430: + case 433: #line 50 "third_party/libpg_query/grammar/statements/drop.y" { PGDropStmt *n = makeNode(PGDropStmt); @@ -23964,7 +24182,7 @@ YYLTYPE yylloc; ;} break; - case 431: + case 434: #line 60 "third_party/libpg_query/grammar/statements/drop.y" { PGDropStmt *n = makeNode(PGDropStmt); @@ -23977,167 +24195,167 @@ YYLTYPE yylloc; ;} break; - case 432: + case 435: #line 73 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_TABLE; ;} break; - case 433: + case 436: #line 74 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_SEQUENCE; ;} break; - case 434: + case 437: #line 75 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_FUNCTION; ;} break; - case 435: + case 438: #line 76 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_FUNCTION; ;} break; - case 436: + case 439: #line 77 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_TABLE_MACRO; ;} break; - case 437: + case 440: #line 78 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_VIEW; ;} break; - case 438: + case 441: #line 79 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_MATVIEW; ;} break; - case 439: + case 442: #line 80 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_INDEX; ;} break; - case 440: + case 443: #line 81 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_FOREIGN_TABLE; ;} break; - case 441: + case 444: #line 82 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_COLLATION; ;} break; - case 442: + case 445: #line 83 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_CONVERSION; ;} break; - case 443: + case 446: #line 84 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_SCHEMA; ;} break; - case 444: + case 447: #line 85 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_STATISTIC_EXT; ;} break; - case 445: + case 448: #line 86 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_TSPARSER; ;} break; - case 446: + case 449: #line 87 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_TSDICTIONARY; ;} break; - case 447: + case 450: #line 88 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_TSTEMPLATE; ;} break; - case 448: + case 451: #line 89 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_TSCONFIGURATION; ;} break; - case 449: + case 452: #line 90 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_TYPE; ;} break; - case 450: + case 453: #line 95 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_ACCESS_METHOD; ;} break; - case 451: + case 454: #line 96 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_EVENT_TRIGGER; ;} break; - case 452: + case 455: #line 97 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_EXTENSION; ;} break; - case 453: + case 456: #line 98 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_FDW; ;} break; - case 454: + case 457: #line 99 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_PUBLICATION; ;} break; - case 455: + case 458: #line 100 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_FOREIGN_SERVER; ;} break; - case 456: + case 459: #line 105 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; - case 457: + case 460: #line 106 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; - case 458: + case 461: #line 111 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.dbehavior) = PG_DROP_CASCADE; ;} break; - case 459: + case 462: #line 112 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.dbehavior) = PG_DROP_RESTRICT; ;} break; - case 460: + case 463: #line 113 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.dbehavior) = PG_DROP_RESTRICT; /* default */ ;} break; - case 461: + case 464: #line 118 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_POLICY; ;} break; - case 462: + case 465: #line 119 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_RULE; ;} break; - case 463: + case 466: #line 120 "third_party/libpg_query/grammar/statements/drop.y" { (yyval.objtype) = PG_OBJECT_TRIGGER; ;} break; - case 464: + case 467: #line 9 "third_party/libpg_query/grammar/statements/create_function.y" { PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); @@ -24149,7 +24367,7 @@ YYLTYPE yylloc; ;} break; - case 465: + case 468: #line 19 "third_party/libpg_query/grammar/statements/create_function.y" { PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); @@ -24162,7 +24380,7 @@ YYLTYPE yylloc; ;} break; - case 466: + case 469: #line 30 "third_party/libpg_query/grammar/statements/create_function.y" { PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); @@ -24174,7 +24392,7 @@ YYLTYPE yylloc; ;} break; - case 467: + case 470: #line 40 "third_party/libpg_query/grammar/statements/create_function.y" { PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); @@ -24186,7 +24404,7 @@ YYLTYPE yylloc; ;} break; - case 468: + case 471: #line 50 "third_party/libpg_query/grammar/statements/create_function.y" { PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); @@ -24198,7 +24416,7 @@ YYLTYPE yylloc; ;} break; - case 469: + case 472: #line 60 "third_party/libpg_query/grammar/statements/create_function.y" { PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); @@ -24210,7 +24428,7 @@ YYLTYPE yylloc; ;} break; - case 470: + case 473: #line 72 "third_party/libpg_query/grammar/statements/create_function.y" { PGFunctionDefinition *n = makeNode(PGFunctionDefinition); @@ -24220,7 +24438,7 @@ YYLTYPE yylloc; ;} break; - case 471: + case 474: #line 82 "third_party/libpg_query/grammar/statements/create_function.y" { PGFunctionDefinition *n = makeNode(PGFunctionDefinition); @@ -24230,28 +24448,28 @@ YYLTYPE yylloc; ;} break; - case 472: + case 475: #line 92 "third_party/libpg_query/grammar/statements/create_function.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 473: + case 476: #line 96 "third_party/libpg_query/grammar/statements/create_function.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 474: + case 477: #line 103 "third_party/libpg_query/grammar/statements/create_function.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 476: + case 479: #line 111 "third_party/libpg_query/grammar/statements/create_function.y" { PGFunctionDefinition *n = makeNode(PGFunctionDefinition); @@ -24261,35 +24479,35 @@ YYLTYPE yylloc; ;} break; - case 477: + case 480: #line 120 "third_party/libpg_query/grammar/statements/create_function.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 478: + case 481: #line 124 "third_party/libpg_query/grammar/statements/create_function.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 481: + case 484: #line 136 "third_party/libpg_query/grammar/statements/create_function.y" { (yyval.list) = NIL; ;} break; - case 482: + case 485: #line 140 "third_party/libpg_query/grammar/statements/create_function.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 483: + case 486: #line 12 "third_party/libpg_query/grammar/statements/update.y" { PGUpdateStmt *n = makeNode(PGUpdateStmt); @@ -24303,7 +24521,7 @@ YYLTYPE yylloc; ;} break; - case 484: + case 487: #line 3 "third_party/libpg_query/grammar/statements/copy.y" { PGCopyStmt *n = makeNode(PGCopyStmt); @@ -24334,7 +24552,7 @@ YYLTYPE yylloc; ;} break; - case 485: + case 488: #line 31 "third_party/libpg_query/grammar/statements/copy.y" { PGCopyStmt *n = makeNode(PGCopyStmt); @@ -24356,7 +24574,7 @@ YYLTYPE yylloc; ;} break; - case 486: + case 489: #line 50 "third_party/libpg_query/grammar/statements/copy.y" { PGCopyDatabaseStmt *n = makeNode(PGCopyDatabaseStmt); @@ -24367,357 +24585,357 @@ YYLTYPE yylloc; ;} break; - case 487: + case 490: #line 61 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.conststr) = NULL; ;} break; - case 488: + case 491: #line 62 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.conststr) = "schema"; ;} break; - case 489: + case 492: #line 63 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.conststr) = "data"; ;} break; - case 490: + case 493: #line 67 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.boolean) = true; ;} break; - case 491: + case 494: #line 68 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.boolean) = false; ;} break; - case 492: + case 495: #line 74 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("delimiter", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(2) - (3)])); ;} break; - case 493: + case 496: #line 77 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = NULL; ;} break; - case 494: + case 497: #line 83 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 495: + case 498: #line 87 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 496: + case 499: #line 94 "third_party/libpg_query/grammar/statements/copy.y" {;} break; - case 497: + case 500: #line 95 "third_party/libpg_query/grammar/statements/copy.y" {;} break; - case 498: + case 501: #line 99 "third_party/libpg_query/grammar/statements/copy.y" {;} break; - case 499: + case 502: #line 100 "third_party/libpg_query/grammar/statements/copy.y" {;} break; - case 500: + case 503: #line 105 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.boolean) = true; ;} break; - case 501: + case 504: #line 106 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.boolean) = false; ;} break; - case 502: + case 505: #line 110 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 503: + case 506: #line 111 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 504: + case 507: #line 116 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} break; - case 505: + case 508: #line 117 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].value); ;} break; - case 506: + case 509: #line 118 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].node); ;} break; - case 507: + case 510: #line 119 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.node) = (PGNode *) makeNode(PGAStar); ;} break; - case 508: + case 511: #line 120 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.node) = (PGNode *) (yyvsp[(2) - (3)].list); ;} break; - case 509: + case 512: #line 121 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].node); ;} break; - case 510: + case 513: #line 122 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].node); ;} break; - case 511: + case 514: #line 123 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.node) = NULL; ;} break; - case 512: + case 515: #line 129 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 513: + case 516: #line 137 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("oids", (PGNode *)makeInteger(true), (yylsp[(1) - (2)])); ;} break; - case 514: + case 517: #line 140 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = NULL; ;} break; - case 515: + case 518: #line 145 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 516: + case 519: #line 146 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.list) = NIL; ;} break; - case 517: + case 520: #line 152 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("binary"), (yylsp[(1) - (1)])); ;} break; - case 518: + case 521: #line 155 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = NULL; ;} break; - case 519: + case 522: #line 161 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("binary"), (yylsp[(1) - (1)])); ;} break; - case 520: + case 523: #line 165 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("oids", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 521: + case 524: #line 169 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("freeze", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 522: + case 525: #line 173 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("delimiter", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; - case 523: + case 526: #line 177 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("null", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; - case 524: + case 527: #line 181 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("csv"), (yylsp[(1) - (1)])); ;} break; - case 525: + case 528: #line 185 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("header", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 526: + case 529: #line 189 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("quote", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; - case 527: + case 530: #line 193 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("escape", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; - case 528: + case 531: #line 197 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("force_quote", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 529: + case 532: #line 201 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("force_quote", (PGNode *)makeNode(PGAStar), (yylsp[(1) - (3)])); ;} break; - case 530: + case 533: #line 205 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("partition_by", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 531: + case 534: #line 209 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("partition_by", (PGNode *)makeNode(PGAStar), (yylsp[(1) - (3)])); ;} break; - case 532: + case 535: #line 213 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("force_not_null", (PGNode *)(yyvsp[(4) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 533: + case 536: #line 217 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("force_null", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 534: + case 537: #line 221 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.defelt) = makeDefElem("encoding", (PGNode *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; - case 535: + case 538: #line 228 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} break; - case 536: + case 539: #line 233 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 537: + case 540: #line 234 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.str) = NULL; ;} break; - case 538: + case 541: #line 235 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.str) = NULL; ;} break; - case 539: + case 542: #line 236 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); ;} break; - case 540: + case 543: #line 237 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 541: + case 544: #line 244 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 542: + case 545: #line 248 "third_party/libpg_query/grammar/statements/copy.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 545: + case 548: #line 52 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; - case 546: + case 549: #line 53 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; - case 547: + case 550: #line 55 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; - case 548: + case 551: #line 72 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 549: + case 552: #line 74 "third_party/libpg_query/grammar/statements/select.y" { insertSelectOptions((PGSelectStmt *) (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list), NIL, @@ -24727,7 +24945,7 @@ YYLTYPE yylloc; ;} break; - case 550: + case 553: #line 81 "third_party/libpg_query/grammar/statements/select.y" { insertSelectOptions((PGSelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(3) - (4)].list), @@ -24738,7 +24956,7 @@ YYLTYPE yylloc; ;} break; - case 551: + case 554: #line 89 "third_party/libpg_query/grammar/statements/select.y" { insertSelectOptions((PGSelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(4) - (4)].list), @@ -24749,7 +24967,7 @@ YYLTYPE yylloc; ;} break; - case 552: + case 555: #line 97 "third_party/libpg_query/grammar/statements/select.y" { insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (2)].node), NULL, NIL, @@ -24760,7 +24978,7 @@ YYLTYPE yylloc; ;} break; - case 553: + case 556: #line 105 "third_party/libpg_query/grammar/statements/select.y" { insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].list), NIL, @@ -24771,7 +24989,7 @@ YYLTYPE yylloc; ;} break; - case 554: + case 557: #line 113 "third_party/libpg_query/grammar/statements/select.y" { insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(4) - (5)].list), @@ -24782,7 +25000,7 @@ YYLTYPE yylloc; ;} break; - case 555: + case 558: #line 121 "third_party/libpg_query/grammar/statements/select.y" { insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list), @@ -24793,24 +25011,24 @@ YYLTYPE yylloc; ;} break; - case 556: + case 559: #line 131 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 557: + case 560: #line 132 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 558: + case 561: #line 160 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; - case 559: + case 562: #line 164 "third_party/libpg_query/grammar/statements/select.y" { PGAStar *star = makeNode(PGAStar); @@ -24818,7 +25036,7 @@ YYLTYPE yylloc; ;} break; - case 560: + case 563: #line 175 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *n = makeNode(PGSelectStmt); @@ -24835,7 +25053,7 @@ YYLTYPE yylloc; ;} break; - case 561: + case 564: #line 191 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *n = makeNode(PGSelectStmt); @@ -24853,7 +25071,7 @@ YYLTYPE yylloc; ;} break; - case 562: + case 565: #line 208 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *n = makeNode(PGSelectStmt); @@ -24871,7 +25089,7 @@ YYLTYPE yylloc; ;} break; - case 563: + case 566: #line 226 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *n = makeNode(PGSelectStmt); @@ -24890,12 +25108,12 @@ YYLTYPE yylloc; ;} break; - case 564: + case 567: #line 241 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 565: + case 568: #line 243 "third_party/libpg_query/grammar/statements/select.y" { /* same as SELECT * FROM relation_expr */ @@ -24917,35 +25135,35 @@ YYLTYPE yylloc; ;} break; - case 566: + case 569: #line 262 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeSetOp(PG_SETOP_UNION_BY_NAME, (yyvsp[(3) - (5)].boolean), (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node)); ;} break; - case 567: + case 570: #line 266 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeSetOp(PG_SETOP_UNION, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; - case 568: + case 571: #line 270 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeSetOp(PG_SETOP_INTERSECT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; - case 569: + case 572: #line 274 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeSetOp(PG_SETOP_EXCEPT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; - case 570: + case 573: #line 278 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *res = makeNode(PGSelectStmt); @@ -24958,7 +25176,7 @@ YYLTYPE yylloc; ;} break; - case 571: + case 574: #line 288 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *res = makeNode(PGSelectStmt); @@ -24972,7 +25190,7 @@ YYLTYPE yylloc; ;} break; - case 572: + case 575: #line 299 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *res = makeNode(PGSelectStmt); @@ -24985,7 +25203,7 @@ YYLTYPE yylloc; ;} break; - case 573: + case 576: #line 309 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *res = makeNode(PGSelectStmt); @@ -24997,7 +25215,7 @@ YYLTYPE yylloc; ;} break; - case 574: + case 577: #line 318 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *res = makeNode(PGSelectStmt); @@ -25011,7 +25229,7 @@ YYLTYPE yylloc; ;} break; - case 575: + case 578: #line 329 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *res = makeNode(PGSelectStmt); @@ -25025,7 +25243,7 @@ YYLTYPE yylloc; ;} break; - case 576: + case 579: #line 340 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *res = makeNode(PGSelectStmt); @@ -25040,7 +25258,7 @@ YYLTYPE yylloc; ;} break; - case 577: + case 580: #line 352 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *res = makeNode(PGSelectStmt); @@ -25058,7 +25276,7 @@ YYLTYPE yylloc; ;} break; - case 578: + case 581: #line 367 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *res = makeNode(PGSelectStmt); @@ -25076,7 +25294,7 @@ YYLTYPE yylloc; ;} break; - case 585: + case 588: #line 397 "third_party/libpg_query/grammar/statements/select.y" { PGPivot *n = makeNode(PGPivot); @@ -25085,7 +25303,7 @@ YYLTYPE yylloc; ;} break; - case 586: + case 589: #line 403 "third_party/libpg_query/grammar/statements/select.y" { PGPivot *n = makeNode(PGPivot); @@ -25095,32 +25313,32 @@ YYLTYPE yylloc; ;} break; - case 587: + case 590: #line 409 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 588: + case 591: #line 413 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 589: + case 592: #line 414 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 590: + case 593: #line 418 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 591: + case 594: #line 419 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 592: + case 595: #line 434 "third_party/libpg_query/grammar/statements/select.y" { (yyval.with) = makeNode(PGWithClause); @@ -25130,7 +25348,7 @@ YYLTYPE yylloc; ;} break; - case 593: + case 596: #line 441 "third_party/libpg_query/grammar/statements/select.y" { (yyval.with) = makeNode(PGWithClause); @@ -25140,7 +25358,7 @@ YYLTYPE yylloc; ;} break; - case 594: + case 597: #line 448 "third_party/libpg_query/grammar/statements/select.y" { (yyval.with) = makeNode(PGWithClause); @@ -25150,17 +25368,17 @@ YYLTYPE yylloc; ;} break; - case 595: + case 598: #line 457 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 596: + case 599: #line 458 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 597: + case 600: #line 462 "third_party/libpg_query/grammar/statements/select.y" { PGCommonTableExpr *n = makeNode(PGCommonTableExpr); @@ -25174,52 +25392,52 @@ YYLTYPE yylloc; ;} break; - case 598: + case 601: #line 475 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(4) - (5)].list); ;} break; - case 599: + case 602: #line 476 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(NIL); ;} break; - case 600: + case 603: #line 480 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 601: + case 604: #line 481 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 602: + case 605: #line 485 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 603: + case 606: #line 486 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 604: + case 607: #line 490 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ctematerialize) = PGCTEMaterializeAlways; ;} break; - case 605: + case 608: #line 491 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ctematerialize) = PGCTEMaterializeNever; ;} break; - case 606: + case 609: #line 492 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ctematerialize) = PGCTEMaterializeDefault; ;} break; - case 607: + case 610: #line 497 "third_party/libpg_query/grammar/statements/select.y" { (yyval.into) = makeNode(PGIntoClause); @@ -25232,12 +25450,12 @@ YYLTYPE yylloc; ;} break; - case 608: + case 611: #line 507 "third_party/libpg_query/grammar/statements/select.y" { (yyval.into) = NULL; ;} break; - case 609: + case 612: #line 516 "third_party/libpg_query/grammar/statements/select.y" { (yyval.range) = (yyvsp[(3) - (3)].range); @@ -25245,7 +25463,7 @@ YYLTYPE yylloc; ;} break; - case 610: + case 613: #line 521 "third_party/libpg_query/grammar/statements/select.y" { (yyval.range) = (yyvsp[(3) - (3)].range); @@ -25253,7 +25471,7 @@ YYLTYPE yylloc; ;} break; - case 611: + case 614: #line 526 "third_party/libpg_query/grammar/statements/select.y" { (yyval.range) = (yyvsp[(4) - (4)].range); @@ -25261,7 +25479,7 @@ YYLTYPE yylloc; ;} break; - case 612: + case 615: #line 531 "third_party/libpg_query/grammar/statements/select.y" { (yyval.range) = (yyvsp[(4) - (4)].range); @@ -25269,7 +25487,7 @@ YYLTYPE yylloc; ;} break; - case 613: + case 616: #line 536 "third_party/libpg_query/grammar/statements/select.y" { ereport(PGWARNING, @@ -25280,7 +25498,7 @@ YYLTYPE yylloc; ;} break; - case 614: + case 617: #line 544 "third_party/libpg_query/grammar/statements/select.y" { ereport(PGWARNING, @@ -25291,7 +25509,7 @@ YYLTYPE yylloc; ;} break; - case 615: + case 618: #line 552 "third_party/libpg_query/grammar/statements/select.y" { (yyval.range) = (yyvsp[(3) - (3)].range); @@ -25299,7 +25517,7 @@ YYLTYPE yylloc; ;} break; - case 616: + case 619: #line 557 "third_party/libpg_query/grammar/statements/select.y" { (yyval.range) = (yyvsp[(2) - (2)].range); @@ -25307,7 +25525,7 @@ YYLTYPE yylloc; ;} break; - case 617: + case 620: #line 562 "third_party/libpg_query/grammar/statements/select.y" { (yyval.range) = (yyvsp[(1) - (1)].range); @@ -25315,87 +25533,87 @@ YYLTYPE yylloc; ;} break; - case 618: + case 621: #line 568 "third_party/libpg_query/grammar/statements/select.y" {;} break; - case 619: + case 622: #line 569 "third_party/libpg_query/grammar/statements/select.y" {;} break; - case 620: + case 623: #line 573 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = true; ;} break; - case 621: + case 624: #line 574 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = false; ;} break; - case 622: + case 625: #line 575 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = false; ;} break; - case 623: + case 626: #line 579 "third_party/libpg_query/grammar/statements/select.y" { ;} break; - case 624: + case 627: #line 586 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(NIL); ;} break; - case 625: + case 628: #line 587 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(4) - (5)].list); ;} break; - case 626: + case 629: #line 591 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL;;} break; - case 627: + case 630: #line 592 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 628: + case 631: #line 596 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ignorenulls) = PG_IGNORE_NULLS;;} break; - case 629: + case 632: #line 597 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ignorenulls) = PG_RESPECT_NULLS;;} break; - case 630: + case 633: #line 598 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ignorenulls) = PG_DEFAULT_NULLS; ;} break; - case 631: + case 634: #line 602 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list);;} break; - case 632: + case 635: #line 603 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 633: + case 636: #line 607 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; - case 634: + case 637: #line 609 "third_party/libpg_query/grammar/statements/select.y" { PGSortBy *sort = makeNode(PGSortBy); @@ -25411,17 +25629,17 @@ YYLTYPE yylloc; ;} break; - case 635: + case 638: #line 624 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].sortby)); ;} break; - case 636: + case 639: #line 625 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].sortby)); ;} break; - case 637: + case 640: #line 629 "third_party/libpg_query/grammar/statements/select.y" { (yyval.sortby) = makeNode(PGSortBy); @@ -25433,7 +25651,7 @@ YYLTYPE yylloc; ;} break; - case 638: + case 641: #line 638 "third_party/libpg_query/grammar/statements/select.y" { (yyval.sortby) = makeNode(PGSortBy); @@ -25445,72 +25663,72 @@ YYLTYPE yylloc; ;} break; - case 639: + case 642: #line 648 "third_party/libpg_query/grammar/statements/select.y" { (yyval.sortorder) = PG_SORTBY_ASC; ;} break; - case 640: + case 643: #line 649 "third_party/libpg_query/grammar/statements/select.y" { (yyval.sortorder) = PG_SORTBY_DESC; ;} break; - case 641: + case 644: #line 650 "third_party/libpg_query/grammar/statements/select.y" { (yyval.sortorder) = PG_SORTBY_DEFAULT; ;} break; - case 642: + case 645: #line 653 "third_party/libpg_query/grammar/statements/select.y" { (yyval.nullorder) = PG_SORTBY_NULLS_FIRST; ;} break; - case 643: + case 646: #line 654 "third_party/libpg_query/grammar/statements/select.y" { (yyval.nullorder) = PG_SORTBY_NULLS_LAST; ;} break; - case 644: + case 647: #line 655 "third_party/libpg_query/grammar/statements/select.y" { (yyval.nullorder) = PG_SORTBY_NULLS_DEFAULT; ;} break; - case 645: + case 648: #line 659 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make3((yyvsp[(2) - (2)].node), (yyvsp[(1) - (2)].node), NULL); ;} break; - case 646: + case 649: #line 660 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make3((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node), (yyvsp[(1) - (2)].node)); ;} break; - case 647: + case 650: #line 661 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make3(NULL, (yyvsp[(1) - (1)].node), NULL); ;} break; - case 648: + case 651: #line 662 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make3((yyvsp[(1) - (1)].node), NULL, (yyvsp[(1) - (1)].node)); ;} break; - case 649: + case 652: #line 666 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 650: + case 653: #line 667 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make3(NULL,NULL,NULL); ;} break; - case 651: + case 654: #line 672 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 652: + case 655: #line 674 "third_party/libpg_query/grammar/statements/select.y" { /* Disabled because it was too confusing, bjm 2002-02-18 */ @@ -25522,91 +25740,91 @@ YYLTYPE yylloc; ;} break; - case 653: + case 656: #line 690 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(3) - (5)].node); ;} break; - case 654: + case 657: #line 692 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeIntConst(1, -1); ;} break; - case 655: + case 658: #line 697 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 656: + case 659: #line 700 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; - case 657: + case 660: #line 705 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 658: + case 661: #line 709 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; - case 660: + case 663: #line 720 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeSampleSize((yyvsp[(1) - (2)].node), true); ;} break; - case 661: + case 664: #line 724 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeSampleSize((yyvsp[(1) - (2)].node), true); ;} break; - case 662: + case 665: #line 728 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeSampleSize((yyvsp[(1) - (1)].node), false); ;} break; - case 663: + case 666: #line 732 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeSampleSize((yyvsp[(1) - (2)].node), false); ;} break; - case 664: + case 667: #line 739 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(3) - (3)].node); ;} break; - case 665: + case 668: #line 743 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 666: + case 669: #line 750 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 667: + case 670: #line 751 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = NULL; ;} break; - case 668: + case 671: #line 756 "third_party/libpg_query/grammar/statements/select.y" { int seed = (yyvsp[(5) - (5)].ival); @@ -25614,21 +25832,21 @@ YYLTYPE yylloc; ;} break; - case 669: + case 672: #line 761 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeSampleOptions((yyvsp[(1) - (1)].node), NULL, NULL, (yylsp[(1) - (1)])); ;} break; - case 670: + case 673: #line 765 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeSampleOptions((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].str), NULL, (yylsp[(1) - (4)])); ;} break; - case 671: + case 674: #line 769 "third_party/libpg_query/grammar/statements/select.y" { int seed = (yyvsp[(5) - (6)].ival); @@ -25636,44 +25854,44 @@ YYLTYPE yylloc; ;} break; - case 672: + case 675: #line 777 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 673: + case 676: #line 783 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 674: + case 677: #line 784 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 675: + case 678: #line 789 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = (yyvsp[(3) - (4)].ival); ;} break; - case 676: + case 679: #line 790 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = -1; ;} break; - case 677: + case 680: #line 795 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "TIMESTAMP"; ;} break; - case 678: + case 681: #line 796 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "VERSION"; ;} break; - case 679: + case 682: #line 801 "third_party/libpg_query/grammar/statements/select.y" { PGAtClause *n = makeNode(PGAtClause); @@ -25683,22 +25901,22 @@ YYLTYPE yylloc; ;} break; - case 680: + case 683: #line 810 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; - case 681: + case 684: #line 811 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 682: + case 685: #line 816 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 683: + case 686: #line 818 "third_party/libpg_query/grammar/statements/select.y" { /* LIMIT ALL is represented as a NULL constant */ @@ -25706,77 +25924,77 @@ YYLTYPE yylloc; ;} break; - case 684: + case 687: #line 823 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeLimitPercent((yyvsp[(1) - (2)].node)); ;} break; - case 685: + case 688: #line 825 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeLimitPercent(makeFloatConst((yyvsp[(1) - (2)].str),(yylsp[(1) - (2)]))); ;} break; - case 686: + case 689: #line 827 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeLimitPercent(makeIntConst((yyvsp[(1) - (2)].ival),(yylsp[(1) - (2)]))); ;} break; - case 687: + case 690: #line 831 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 688: + case 691: #line 851 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 689: + case 692: #line 853 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 690: + case 693: #line 855 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 691: + case 694: #line 859 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival),(yylsp[(1) - (1)])); ;} break; - case 692: + case 695: #line 860 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str),(yylsp[(1) - (1)])); ;} break; - case 693: + case 696: #line 864 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = 0; ;} break; - case 694: + case 697: #line 865 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = 0; ;} break; - case 695: + case 698: #line 868 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = 0; ;} break; - case 696: + case 699: #line 869 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = 0; ;} break; - case 697: + case 700: #line 894 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; - case 698: + case 701: #line 896 "third_party/libpg_query/grammar/statements/select.y" { PGNode *node = (PGNode *) makeGroupingSet(GROUPING_SET_ALL, NIL, (yylsp[(3) - (3)])); @@ -25784,145 +26002,145 @@ YYLTYPE yylloc; ;} break; - case 699: + case 702: #line 900 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 700: + case 703: #line 904 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 701: + case 704: #line 905 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].node)); ;} break; - case 702: + case 705: #line 909 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 703: + case 706: #line 910 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 704: + case 707: #line 914 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 705: + case 708: #line 915 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 706: + case 709: #line 916 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 707: + case 710: #line 917 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 708: + case 711: #line 918 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 709: + case 712: #line 923 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[(1) - (2)])); ;} break; - case 710: + case 713: #line 936 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_ROLLUP, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 711: + case 714: #line 943 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_CUBE, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 712: + case 715: #line 950 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_SETS, (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; - case 713: + case 716: #line 956 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 714: + case 717: #line 957 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 715: + case 718: #line 961 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 716: + case 719: #line 962 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 717: + case 720: #line 966 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 718: + case 721: #line 967 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 719: + case 722: #line 971 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 720: + case 723: #line 972 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 721: + case 724: #line 976 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 722: + case 725: #line 977 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 723: + case 726: #line 981 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 724: + case 727: #line 982 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 725: + case 728: #line 987 "third_party/libpg_query/grammar/statements/select.y" { PGLockingClause *n = makeNode(PGLockingClause); @@ -25933,52 +26151,52 @@ YYLTYPE yylloc; ;} break; - case 726: + case 729: #line 997 "third_party/libpg_query/grammar/statements/select.y" { (yyval.lockstrength) = LCS_FORUPDATE; ;} break; - case 727: + case 730: #line 998 "third_party/libpg_query/grammar/statements/select.y" { (yyval.lockstrength) = PG_LCS_FORNOKEYUPDATE; ;} break; - case 728: + case 731: #line 999 "third_party/libpg_query/grammar/statements/select.y" { (yyval.lockstrength) = PG_LCS_FORSHARE; ;} break; - case 729: + case 732: #line 1000 "third_party/libpg_query/grammar/statements/select.y" { (yyval.lockstrength) = PG_LCS_FORKEYSHARE; ;} break; - case 730: + case 733: #line 1004 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 731: + case 734: #line 1005 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 732: + case 735: #line 1010 "third_party/libpg_query/grammar/statements/select.y" { (yyval.lockwaitpolicy) = LockWaitError; ;} break; - case 733: + case 736: #line 1011 "third_party/libpg_query/grammar/statements/select.y" { (yyval.lockwaitpolicy) = PGLockWaitSkip; ;} break; - case 734: + case 737: #line 1012 "third_party/libpg_query/grammar/statements/select.y" { (yyval.lockwaitpolicy) = PGLockWaitBlock; ;} break; - case 735: + case 738: #line 1022 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *n = makeNode(PGSelectStmt); @@ -25987,7 +26205,7 @@ YYLTYPE yylloc; ;} break; - case 736: + case 739: #line 1028 "third_party/libpg_query/grammar/statements/select.y" { PGSelectStmt *n = (PGSelectStmt *) (yyvsp[(1) - (5)].node); @@ -25996,47 +26214,47 @@ YYLTYPE yylloc; ;} break; - case 737: + case 740: #line 1036 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 738: + case 741: #line 1037 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (2)].node); ;} break; - case 739: + case 742: #line 1050 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 740: + case 743: #line 1051 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 741: + case 744: #line 1055 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 742: + case 745: #line 1056 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 743: + case 746: #line 1060 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 744: + case 747: #line 1061 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 745: + case 748: #line 1066 "third_party/libpg_query/grammar/statements/select.y" { (yyval.alias) = makeNode(PGAlias); @@ -26044,7 +26262,7 @@ YYLTYPE yylloc; ;} break; - case 746: + case 749: #line 1077 "third_party/libpg_query/grammar/statements/select.y" { (yyvsp[(1) - (4)].range)->at_clause = (yyvsp[(3) - (4)].node); @@ -26054,7 +26272,7 @@ YYLTYPE yylloc; ;} break; - case 747: + case 750: #line 1084 "third_party/libpg_query/grammar/statements/select.y" { (yyvsp[(2) - (4)].range)->at_clause = (yyvsp[(3) - (4)].node); @@ -26064,7 +26282,7 @@ YYLTYPE yylloc; ;} break; - case 748: + case 751: #line 1091 "third_party/libpg_query/grammar/statements/select.y" { PGRangeFunction *n = (PGRangeFunction *) (yyvsp[(1) - (3)].node); @@ -26075,7 +26293,7 @@ YYLTYPE yylloc; ;} break; - case 749: + case 752: #line 1099 "third_party/libpg_query/grammar/statements/select.y" { PGRangeFunction *n = (PGRangeFunction *) (yyvsp[(2) - (3)].node); @@ -26085,7 +26303,7 @@ YYLTYPE yylloc; ;} break; - case 750: + case 753: #line 1107 "third_party/libpg_query/grammar/statements/select.y" { PGRangeSubselect *n = makeNode(PGRangeSubselect); @@ -26097,7 +26315,7 @@ YYLTYPE yylloc; ;} break; - case 751: + case 754: #line 1117 "third_party/libpg_query/grammar/statements/select.y" { PGRangeFunction *n = (PGRangeFunction *) (yyvsp[(2) - (3)].node); @@ -26108,7 +26326,7 @@ YYLTYPE yylloc; ;} break; - case 752: + case 755: #line 1125 "third_party/libpg_query/grammar/statements/select.y" { PGRangeSubselect *n = makeNode(PGRangeSubselect); @@ -26120,7 +26338,7 @@ YYLTYPE yylloc; ;} break; - case 753: + case 756: #line 1134 "third_party/libpg_query/grammar/statements/select.y" { PGRangeSubselect *n = makeNode(PGRangeSubselect); @@ -26132,7 +26350,7 @@ YYLTYPE yylloc; ;} break; - case 754: + case 757: #line 1143 "third_party/libpg_query/grammar/statements/select.y" { PGRangeSubselect *n = makeNode(PGRangeSubselect); @@ -26144,14 +26362,14 @@ YYLTYPE yylloc; ;} break; - case 755: + case 758: #line 1152 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].jexpr); ;} break; - case 756: + case 759: #line 1156 "third_party/libpg_query/grammar/statements/select.y" { (yyvsp[(2) - (4)].jexpr)->alias = (yyvsp[(4) - (4)].alias); @@ -26159,7 +26377,7 @@ YYLTYPE yylloc; ;} break; - case 757: + case 760: #line 1161 "third_party/libpg_query/grammar/statements/select.y" { (yyvsp[(3) - (4)].jexpr)->alias = (yyvsp[(1) - (4)].alias); @@ -26167,7 +26385,7 @@ YYLTYPE yylloc; ;} break; - case 758: + case 761: #line 1166 "third_party/libpg_query/grammar/statements/select.y" { PGPivotExpr *n = makeNode(PGPivotExpr); @@ -26181,7 +26399,7 @@ YYLTYPE yylloc; ;} break; - case 759: + case 762: #line 1177 "third_party/libpg_query/grammar/statements/select.y" { PGPivotExpr *n = makeNode(PGPivotExpr); @@ -26195,32 +26413,32 @@ YYLTYPE yylloc; ;} break; - case 760: + case 763: #line 1190 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; - case 761: + case 764: #line 1191 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NULL; ;} break; - case 762: + case 765: #line 1194 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = true; ;} break; - case 763: + case 766: #line 1195 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = false; ;} break; - case 764: + case 767: #line 1196 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = false; ;} break; - case 765: + case 768: #line 1200 "third_party/libpg_query/grammar/statements/select.y" { PGPivot *n = makeNode(PGPivot); @@ -26230,7 +26448,7 @@ YYLTYPE yylloc; ;} break; - case 766: + case 769: #line 1208 "third_party/libpg_query/grammar/statements/select.y" { PGPivot *n = makeNode(PGPivot); @@ -26240,22 +26458,22 @@ YYLTYPE yylloc; ;} break; - case 767: + case 770: #line 1217 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 768: + case 771: #line 1218 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 769: + case 772: #line 1219 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 770: + case 773: #line 1223 "third_party/libpg_query/grammar/statements/select.y" { PGPivot *n = makeNode(PGPivot); @@ -26265,7 +26483,7 @@ YYLTYPE yylloc; ;} break; - case 771: + case 774: #line 1231 "third_party/libpg_query/grammar/statements/select.y" { PGPivot *n = makeNode(PGPivot); @@ -26275,31 +26493,31 @@ YYLTYPE yylloc; ;} break; - case 772: + case 775: #line 1240 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 773: + case 776: #line 1244 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 774: + case 777: #line 1250 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 775: + case 778: #line 1251 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 776: + case 779: #line 1256 "third_party/libpg_query/grammar/statements/select.y" { PGPivot *n = makeNode(PGPivot); @@ -26309,28 +26527,28 @@ YYLTYPE yylloc; ;} break; - case 777: + case 780: #line 1265 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 778: + case 781: #line 1269 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 779: + case 782: #line 1294 "third_party/libpg_query/grammar/statements/select.y" { (yyval.jexpr) = (yyvsp[(2) - (3)].jexpr); ;} break; - case 780: + case 783: #line 1298 "third_party/libpg_query/grammar/statements/select.y" { /* CROSS JOIN is same as unqualified inner join */ @@ -26346,7 +26564,7 @@ YYLTYPE yylloc; ;} break; - case 781: + case 784: #line 1311 "third_party/libpg_query/grammar/statements/select.y" { PGJoinExpr *n = makeNode(PGJoinExpr); @@ -26363,7 +26581,7 @@ YYLTYPE yylloc; ;} break; - case 782: + case 785: #line 1325 "third_party/libpg_query/grammar/statements/select.y" { /* letting join_type reduce to empty doesn't work */ @@ -26381,7 +26599,7 @@ YYLTYPE yylloc; ;} break; - case 783: + case 786: #line 1340 "third_party/libpg_query/grammar/statements/select.y" { PGJoinExpr *n = makeNode(PGJoinExpr); @@ -26396,7 +26614,7 @@ YYLTYPE yylloc; ;} break; - case 784: + case 787: #line 1352 "third_party/libpg_query/grammar/statements/select.y" { /* letting join_type reduce to empty doesn't work */ @@ -26412,7 +26630,7 @@ YYLTYPE yylloc; ;} break; - case 785: + case 788: #line 1365 "third_party/libpg_query/grammar/statements/select.y" { PGJoinExpr *n = makeNode(PGJoinExpr); @@ -26429,7 +26647,7 @@ YYLTYPE yylloc; ;} break; - case 786: + case 789: #line 1379 "third_party/libpg_query/grammar/statements/select.y" { PGJoinExpr *n = makeNode(PGJoinExpr); @@ -26446,7 +26664,7 @@ YYLTYPE yylloc; ;} break; - case 787: + case 790: #line 1393 "third_party/libpg_query/grammar/statements/select.y" { /* POSITIONAL JOIN is a coordinated scan */ @@ -26462,7 +26680,7 @@ YYLTYPE yylloc; ;} break; - case 788: + case 791: #line 1406 "third_party/libpg_query/grammar/statements/select.y" { /* ANTI JOIN is a filter */ @@ -26480,7 +26698,7 @@ YYLTYPE yylloc; ;} break; - case 789: + case 792: #line 1421 "third_party/libpg_query/grammar/statements/select.y" { /* SEMI JOIN is also a filter */ @@ -26499,7 +26717,7 @@ YYLTYPE yylloc; ;} break; - case 790: + case 793: #line 1440 "third_party/libpg_query/grammar/statements/select.y" { (yyval.alias) = makeNode(PGAlias); @@ -26508,7 +26726,7 @@ YYLTYPE yylloc; ;} break; - case 791: + case 794: #line 1446 "third_party/libpg_query/grammar/statements/select.y" { (yyval.alias) = makeNode(PGAlias); @@ -26516,7 +26734,7 @@ YYLTYPE yylloc; ;} break; - case 792: + case 795: #line 1451 "third_party/libpg_query/grammar/statements/select.y" { (yyval.alias) = makeNode(PGAlias); @@ -26525,7 +26743,7 @@ YYLTYPE yylloc; ;} break; - case 793: + case 796: #line 1457 "third_party/libpg_query/grammar/statements/select.y" { (yyval.alias) = makeNode(PGAlias); @@ -26533,31 +26751,31 @@ YYLTYPE yylloc; ;} break; - case 794: + case 797: #line 1463 "third_party/libpg_query/grammar/statements/select.y" { (yyval.alias) = (yyvsp[(1) - (1)].alias); ;} break; - case 795: + case 798: #line 1464 "third_party/libpg_query/grammar/statements/select.y" { (yyval.alias) = NULL; ;} break; - case 796: + case 799: #line 1473 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make2((yyvsp[(1) - (1)].alias), NIL); ;} break; - case 797: + case 800: #line 1477 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make2(NULL, (yyvsp[(3) - (4)].list)); ;} break; - case 798: + case 801: #line 1481 "third_party/libpg_query/grammar/statements/select.y" { PGAlias *a = makeNode(PGAlias); @@ -26566,7 +26784,7 @@ YYLTYPE yylloc; ;} break; - case 799: + case 802: #line 1487 "third_party/libpg_query/grammar/statements/select.y" { PGAlias *a = makeNode(PGAlias); @@ -26575,64 +26793,64 @@ YYLTYPE yylloc; ;} break; - case 800: + case 803: #line 1493 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make2(NULL, NIL); ;} break; - case 801: + case 804: #line 1498 "third_party/libpg_query/grammar/statements/select.y" { (yyval.jtype) = PG_JOIN_FULL; ;} break; - case 802: + case 805: #line 1499 "third_party/libpg_query/grammar/statements/select.y" { (yyval.jtype) = PG_JOIN_LEFT; ;} break; - case 803: + case 806: #line 1500 "third_party/libpg_query/grammar/statements/select.y" { (yyval.jtype) = PG_JOIN_RIGHT; ;} break; - case 804: + case 807: #line 1501 "third_party/libpg_query/grammar/statements/select.y" { (yyval.jtype) = PG_JOIN_SEMI; ;} break; - case 805: + case 808: #line 1502 "third_party/libpg_query/grammar/statements/select.y" { (yyval.jtype) = PG_JOIN_ANTI; ;} break; - case 806: + case 809: #line 1503 "third_party/libpg_query/grammar/statements/select.y" { (yyval.jtype) = PG_JOIN_INNER; ;} break; - case 807: + case 810: #line 1507 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 808: + case 811: #line 1508 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 809: + case 812: #line 1520 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) (yyvsp[(3) - (4)].list); ;} break; - case 810: + case 813: #line 1521 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 811: + case 814: #line 1527 "third_party/libpg_query/grammar/statements/select.y" { /* inheritance query, implicitly */ @@ -26642,7 +26860,7 @@ YYLTYPE yylloc; ;} break; - case 812: + case 815: #line 1534 "third_party/libpg_query/grammar/statements/select.y" { /* inheritance query, explicitly */ @@ -26652,7 +26870,7 @@ YYLTYPE yylloc; ;} break; - case 813: + case 816: #line 1541 "third_party/libpg_query/grammar/statements/select.y" { /* no inheritance */ @@ -26662,7 +26880,7 @@ YYLTYPE yylloc; ;} break; - case 814: + case 817: #line 1548 "third_party/libpg_query/grammar/statements/select.y" { /* no inheritance, SQL99-style syntax */ @@ -26672,7 +26890,7 @@ YYLTYPE yylloc; ;} break; - case 815: + case 818: #line 1580 "third_party/libpg_query/grammar/statements/select.y" { PGRangeFunction *n = makeNode(PGRangeFunction); @@ -26686,7 +26904,7 @@ YYLTYPE yylloc; ;} break; - case 816: + case 819: #line 1591 "third_party/libpg_query/grammar/statements/select.y" { PGRangeFunction *n = makeNode(PGRangeFunction); @@ -26700,66 +26918,66 @@ YYLTYPE yylloc; ;} break; - case 817: + case 820: #line 1604 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list)); ;} break; - case 818: + case 821: #line 1608 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; - case 819: + case 822: #line 1609 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; - case 820: + case 823: #line 1612 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 821: + case 824: #line 1613 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 822: + case 825: #line 1616 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = true; ;} break; - case 823: + case 826: #line 1617 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = false; ;} break; - case 824: + case 827: #line 1622 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 825: + case 828: #line 1623 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 826: + case 829: #line 1629 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 827: + case 830: #line 1633 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 828: + case 831: #line 1639 "third_party/libpg_query/grammar/statements/select.y" { PGColumnDef *n = makeNode(PGColumnDef); @@ -26780,7 +26998,7 @@ YYLTYPE yylloc; ;} break; - case 829: + case 832: #line 1660 "third_party/libpg_query/grammar/statements/select.y" { PGCollateClause *n = makeNode(PGCollateClause); @@ -26791,36 +27009,36 @@ YYLTYPE yylloc; ;} break; - case 830: + case 833: #line 1667 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 831: + case 834: #line 1681 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(list_make2(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].typnam))); ;} break; - case 832: + case 835: #line 1684 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (4)].list), list_make2(makeString((yyvsp[(3) - (4)].str)), (yyvsp[(4) - (4)].typnam))); ;} break; - case 835: + case 838: #line 1691 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 836: + case 839: #line 1692 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = NULL; ;} break; - case 837: + case 840: #line 1695 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); @@ -26828,7 +27046,7 @@ YYLTYPE yylloc; ;} break; - case 838: + case 841: #line 1700 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(2) - (3)].typnam); @@ -26837,7 +27055,7 @@ YYLTYPE yylloc; ;} break; - case 839: + case 842: #line 1707 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (5)].typnam); @@ -26845,7 +27063,7 @@ YYLTYPE yylloc; ;} break; - case 840: + case 843: #line 1712 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(2) - (6)].typnam); @@ -26854,7 +27072,7 @@ YYLTYPE yylloc; ;} break; - case 841: + case 844: #line 1718 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); @@ -26862,7 +27080,7 @@ YYLTYPE yylloc; ;} break; - case 842: + case 845: #line 1723 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(2) - (3)].typnam); @@ -26871,14 +27089,14 @@ YYLTYPE yylloc; ;} break; - case 843: + case 846: #line 1729 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = makeTypeNameFromNameList((yyvsp[(1) - (1)].list)); ;} break; - case 844: + case 847: #line 1733 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("struct"); @@ -26888,7 +27106,7 @@ YYLTYPE yylloc; ;} break; - case 845: + case 848: #line 1740 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("map"); @@ -26898,7 +27116,7 @@ YYLTYPE yylloc; ;} break; - case 846: + case 849: #line 1747 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("union"); @@ -26908,57 +27126,57 @@ YYLTYPE yylloc; ;} break; - case 847: + case 850: #line 1756 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make2(makeString((yyvsp[(1) - (3)].str)), makeString((yyvsp[(3) - (3)].str))); ;} break; - case 848: + case 851: #line 1757 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; - case 849: + case 852: #line 1762 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeInteger(-1)); ;} break; - case 850: + case 853: #line 1764 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (4)].list), makeInteger((yyvsp[(3) - (4)].ival))); ;} break; - case 851: + case 854: #line 1766 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 852: + case 855: #line 1770 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 853: + case 856: #line 1771 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 854: + case 857: #line 1772 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 855: + case 858: #line 1773 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 856: + case 859: #line 1774 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 857: + case 860: #line 1776 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); @@ -26966,7 +27184,7 @@ YYLTYPE yylloc; ;} break; - case 858: + case 861: #line 1781 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (4)].typnam); @@ -26975,27 +27193,27 @@ YYLTYPE yylloc; ;} break; - case 859: + case 862: #line 1800 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 860: + case 863: #line 1801 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 861: + case 864: #line 1802 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 862: + case 865: #line 1803 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 863: + case 866: #line 1815 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = makeTypeName((yyvsp[(1) - (2)].str)); @@ -27004,17 +27222,17 @@ YYLTYPE yylloc; ;} break; - case 864: + case 867: #line 1828 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 865: + case 868: #line 1829 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 866: + case 869: #line 1836 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("int4"); @@ -27022,7 +27240,7 @@ YYLTYPE yylloc; ;} break; - case 867: + case 870: #line 1841 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("int4"); @@ -27030,7 +27248,7 @@ YYLTYPE yylloc; ;} break; - case 868: + case 871: #line 1846 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("int2"); @@ -27038,7 +27256,7 @@ YYLTYPE yylloc; ;} break; - case 869: + case 872: #line 1851 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("int8"); @@ -27046,7 +27264,7 @@ YYLTYPE yylloc; ;} break; - case 870: + case 873: #line 1856 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("float4"); @@ -27054,7 +27272,7 @@ YYLTYPE yylloc; ;} break; - case 871: + case 874: #line 1861 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(2) - (2)].typnam); @@ -27062,7 +27280,7 @@ YYLTYPE yylloc; ;} break; - case 872: + case 875: #line 1866 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("float8"); @@ -27070,7 +27288,7 @@ YYLTYPE yylloc; ;} break; - case 873: + case 876: #line 1871 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("numeric"); @@ -27079,7 +27297,7 @@ YYLTYPE yylloc; ;} break; - case 874: + case 877: #line 1877 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("numeric"); @@ -27088,7 +27306,7 @@ YYLTYPE yylloc; ;} break; - case 875: + case 878: #line 1883 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("numeric"); @@ -27097,7 +27315,7 @@ YYLTYPE yylloc; ;} break; - case 876: + case 879: #line 1889 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("bool"); @@ -27105,7 +27323,7 @@ YYLTYPE yylloc; ;} break; - case 877: + case 880: #line 1896 "third_party/libpg_query/grammar/statements/select.y" { /* @@ -27129,35 +27347,35 @@ YYLTYPE yylloc; ;} break; - case 878: + case 881: #line 1917 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("float4"); ;} break; - case 879: + case 882: #line 1927 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 880: + case 883: #line 1931 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 881: + case 884: #line 1939 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 882: + case 885: #line 1943 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); @@ -27165,7 +27383,7 @@ YYLTYPE yylloc; ;} break; - case 883: + case 886: #line 1951 "third_party/libpg_query/grammar/statements/select.y" { const char *typname; @@ -27177,7 +27395,7 @@ YYLTYPE yylloc; ;} break; - case 884: + case 887: #line 1963 "third_party/libpg_query/grammar/statements/select.y" { /* bit defaults to bit(1), varbit to no limit */ @@ -27194,28 +27412,28 @@ YYLTYPE yylloc; ;} break; - case 885: + case 888: #line 1984 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 886: + case 889: #line 1988 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 887: + case 890: #line 1994 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 888: + case 891: #line 1998 "third_party/libpg_query/grammar/statements/select.y" { /* Length was not specified so allow to be unrestricted. @@ -27229,7 +27447,7 @@ YYLTYPE yylloc; ;} break; - case 889: + case 892: #line 2011 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName((yyvsp[(1) - (4)].conststr)); @@ -27238,7 +27456,7 @@ YYLTYPE yylloc; ;} break; - case 890: + case 893: #line 2019 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName((yyvsp[(1) - (1)].conststr)); @@ -27249,47 +27467,47 @@ YYLTYPE yylloc; ;} break; - case 891: + case 894: #line 2029 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; - case 892: + case 895: #line 2031 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; - case 893: + case 896: #line 2033 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "varchar"; ;} break; - case 894: + case 897: #line 2035 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} break; - case 895: + case 898: #line 2037 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} break; - case 896: + case 899: #line 2039 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; - case 897: + case 900: #line 2043 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = true; ;} break; - case 898: + case 901: #line 2044 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = false; ;} break; - case 899: + case 902: #line 2052 "third_party/libpg_query/grammar/statements/select.y" { if ((yyvsp[(5) - (5)].boolean)) @@ -27301,7 +27519,7 @@ YYLTYPE yylloc; ;} break; - case 900: + case 903: #line 2061 "third_party/libpg_query/grammar/statements/select.y" { if ((yyvsp[(2) - (2)].boolean)) @@ -27312,7 +27530,7 @@ YYLTYPE yylloc; ;} break; - case 901: + case 904: #line 2069 "third_party/libpg_query/grammar/statements/select.y" { if ((yyvsp[(5) - (5)].boolean)) @@ -27324,7 +27542,7 @@ YYLTYPE yylloc; ;} break; - case 902: + case 905: #line 2078 "third_party/libpg_query/grammar/statements/select.y" { if ((yyvsp[(2) - (2)].boolean)) @@ -27335,7 +27553,7 @@ YYLTYPE yylloc; ;} break; - case 903: + case 906: #line 2089 "third_party/libpg_query/grammar/statements/select.y" { (yyval.typnam) = SystemTypeName("interval"); @@ -27343,87 +27561,87 @@ YYLTYPE yylloc; ;} break; - case 904: + case 907: #line 2096 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = true; ;} break; - case 905: + case 908: #line 2097 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = false; ;} break; - case 906: + case 909: #line 2098 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = false; ;} break; - case 933: + case 936: #line 2142 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[(1) - (1)]))); ;} break; - case 934: + case 937: #line 2144 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[(1) - (1)]))); ;} break; - case 935: + case 938: #line 2146 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[(1) - (1)]))); ;} break; - case 936: + case 939: #line 2148 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[(1) - (1)]))); ;} break; - case 937: + case 940: #line 2150 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[(1) - (1)]))); ;} break; - case 938: + case 941: #line 2152 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (1)]))); ;} break; - case 939: + case 942: #line 2154 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MILLISECOND), (yylsp[(1) - (1)]))); ;} break; - case 940: + case 943: #line 2156 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MICROSECOND), (yylsp[(1) - (1)]))); ;} break; - case 941: + case 944: #line 2158 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(WEEK), (yylsp[(1) - (1)]))); ;} break; - case 942: + case 945: #line 2160 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(QUARTER), (yylsp[(1) - (1)]))); ;} break; - case 943: + case 946: #line 2162 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DECADE), (yylsp[(1) - (1)]))); ;} break; - case 944: + case 947: #line 2164 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(CENTURY), (yylsp[(1) - (1)]))); ;} break; - case 945: + case 948: #line 2166 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MILLENNIUM), (yylsp[(1) - (1)]))); ;} break; - case 946: + case 949: #line 2168 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | @@ -27431,7 +27649,7 @@ YYLTYPE yylloc; ;} break; - case 947: + case 950: #line 2173 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | @@ -27439,7 +27657,7 @@ YYLTYPE yylloc; ;} break; - case 948: + case 951: #line 2178 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | @@ -27448,7 +27666,7 @@ YYLTYPE yylloc; ;} break; - case 949: + case 952: #line 2184 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | @@ -27458,7 +27676,7 @@ YYLTYPE yylloc; ;} break; - case 950: + case 953: #line 2191 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | @@ -27466,7 +27684,7 @@ YYLTYPE yylloc; ;} break; - case 951: + case 954: #line 2196 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | @@ -27475,7 +27693,7 @@ YYLTYPE yylloc; ;} break; - case 952: + case 955: #line 2202 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE) | @@ -27483,22 +27701,22 @@ YYLTYPE yylloc; ;} break; - case 953: + case 956: #line 2207 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 954: + case 957: #line 2238 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 955: + case 958: #line 2241 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), 0, (yylsp[(2) - (3)])); ;} break; - case 956: + case 959: #line 2243 "third_party/libpg_query/grammar/statements/select.y" { PGCollateClause *n = makeNode(PGCollateClause); @@ -27509,7 +27727,7 @@ YYLTYPE yylloc; ;} break; - case 957: + case 960: #line 2251 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("timezone"), @@ -27518,122 +27736,122 @@ YYLTYPE yylloc; ;} break; - case 958: + case 961: #line 2266 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 959: + case 962: #line 2268 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 960: + case 963: #line 2270 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 961: + case 964: #line 2272 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 962: + case 965: #line 2274 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 963: + case 966: #line 2276 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 964: + case 967: #line 2278 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "//", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 965: + case 968: #line 2280 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 966: + case 969: #line 2282 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 967: + case 970: #line 2284 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "**", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 968: + case 971: #line 2286 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 969: + case 972: #line 2288 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 970: + case 973: #line 2290 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 971: + case 974: #line 2292 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 972: + case 975: #line 2294 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 973: + case 976: #line 2296 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 974: + case 977: #line 2299 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 975: + case 978: #line 2301 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 976: + case 979: #line 2303 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} break; - case 977: + case 980: #line 2306 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeAndExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 978: + case 981: #line 2308 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeOrExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 979: + case 982: #line 2310 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 980: + case 983: #line 2312 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 981: + case 984: #line 2314 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_GLOB, "~~~", @@ -27641,7 +27859,7 @@ YYLTYPE yylloc; ;} break; - case 982: + case 985: #line 2319 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_LIKE, "~~", @@ -27649,7 +27867,7 @@ YYLTYPE yylloc; ;} break; - case 983: + case 986: #line 2324 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall(SystemFuncName("like_escape"), @@ -27659,7 +27877,7 @@ YYLTYPE yylloc; ;} break; - case 984: + case 987: #line 2331 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_LIKE, "!~~", @@ -27667,7 +27885,7 @@ YYLTYPE yylloc; ;} break; - case 985: + case 988: #line 2336 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall(SystemFuncName("not_like_escape"), @@ -27677,7 +27895,7 @@ YYLTYPE yylloc; ;} break; - case 986: + case 989: #line 2343 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "~~*", @@ -27685,7 +27903,7 @@ YYLTYPE yylloc; ;} break; - case 987: + case 990: #line 2348 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall(SystemFuncName("ilike_escape"), @@ -27695,7 +27913,7 @@ YYLTYPE yylloc; ;} break; - case 988: + case 991: #line 2355 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "!~~*", @@ -27703,7 +27921,7 @@ YYLTYPE yylloc; ;} break; - case 989: + case 992: #line 2360 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall(SystemFuncName("not_ilike_escape"), @@ -27713,7 +27931,7 @@ YYLTYPE yylloc; ;} break; - case 990: + case 993: #line 2368 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), @@ -27724,7 +27942,7 @@ YYLTYPE yylloc; ;} break; - case 991: + case 994: #line 2376 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), @@ -27735,7 +27953,7 @@ YYLTYPE yylloc; ;} break; - case 992: + case 995: #line 2384 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), @@ -27746,7 +27964,7 @@ YYLTYPE yylloc; ;} break; - case 993: + case 996: #line 2392 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), @@ -27757,7 +27975,7 @@ YYLTYPE yylloc; ;} break; - case 994: + case 997: #line 2410 "third_party/libpg_query/grammar/statements/select.y" { PGNullTest *n = makeNode(PGNullTest); @@ -27768,7 +27986,7 @@ YYLTYPE yylloc; ;} break; - case 995: + case 998: #line 2418 "third_party/libpg_query/grammar/statements/select.y" { PGNullTest *n = makeNode(PGNullTest); @@ -27779,7 +27997,7 @@ YYLTYPE yylloc; ;} break; - case 996: + case 999: #line 2426 "third_party/libpg_query/grammar/statements/select.y" { PGNullTest *n = makeNode(PGNullTest); @@ -27790,7 +28008,7 @@ YYLTYPE yylloc; ;} break; - case 997: + case 1000: #line 2434 "third_party/libpg_query/grammar/statements/select.y" { PGNullTest *n = makeNode(PGNullTest); @@ -27801,7 +28019,7 @@ YYLTYPE yylloc; ;} break; - case 998: + case 1001: #line 2442 "third_party/libpg_query/grammar/statements/select.y" { PGNullTest *n = makeNode(PGNullTest); @@ -27812,10 +28030,21 @@ YYLTYPE yylloc; ;} break; - case 999: + case 1002: #line 2450 "third_party/libpg_query/grammar/statements/select.y" { PGLambdaFunction *n = makeNode(PGLambdaFunction); + n->lhs = (yyvsp[(2) - (4)].list); + n->rhs = (yyvsp[(4) - (4)].node); + n->location = (yylsp[(2) - (4)]); + (yyval.node) = (PGNode *) n; + ;} + break; + + case 1003: +#line 2458 "third_party/libpg_query/grammar/statements/select.y" + { + PGSingleArrowFunction *n = makeNode(PGSingleArrowFunction); n->lhs = (yyvsp[(1) - (3)].node); n->rhs = (yyvsp[(3) - (3)].node); n->location = (yylsp[(2) - (3)]); @@ -27823,15 +28052,15 @@ YYLTYPE yylloc; ;} break; - case 1000: -#line 2458 "third_party/libpg_query/grammar/statements/select.y" + case 1004: +#line 2466 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "->>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1001: -#line 2462 "third_party/libpg_query/grammar/statements/select.y" + case 1005: +#line 2470 "third_party/libpg_query/grammar/statements/select.y" { if (list_length((yyvsp[(1) - (3)].list)) != 2) ereport(ERROR, @@ -27849,8 +28078,8 @@ YYLTYPE yylloc; ;} break; - case 1002: -#line 2478 "third_party/libpg_query/grammar/statements/select.y" + case 1006: +#line 2486 "third_party/libpg_query/grammar/statements/select.y" { PGBooleanTest *b = makeNode(PGBooleanTest); b->arg = (PGExpr *) (yyvsp[(1) - (3)].node); @@ -27860,8 +28089,8 @@ YYLTYPE yylloc; ;} break; - case 1003: -#line 2486 "third_party/libpg_query/grammar/statements/select.y" + case 1007: +#line 2494 "third_party/libpg_query/grammar/statements/select.y" { PGBooleanTest *b = makeNode(PGBooleanTest); b->arg = (PGExpr *) (yyvsp[(1) - (4)].node); @@ -27871,8 +28100,8 @@ YYLTYPE yylloc; ;} break; - case 1004: -#line 2494 "third_party/libpg_query/grammar/statements/select.y" + case 1008: +#line 2502 "third_party/libpg_query/grammar/statements/select.y" { PGBooleanTest *b = makeNode(PGBooleanTest); b->arg = (PGExpr *) (yyvsp[(1) - (3)].node); @@ -27882,8 +28111,8 @@ YYLTYPE yylloc; ;} break; - case 1005: -#line 2502 "third_party/libpg_query/grammar/statements/select.y" + case 1009: +#line 2510 "third_party/libpg_query/grammar/statements/select.y" { PGBooleanTest *b = makeNode(PGBooleanTest); b->arg = (PGExpr *) (yyvsp[(1) - (4)].node); @@ -27893,8 +28122,8 @@ YYLTYPE yylloc; ;} break; - case 1006: -#line 2510 "third_party/libpg_query/grammar/statements/select.y" + case 1010: +#line 2518 "third_party/libpg_query/grammar/statements/select.y" { PGBooleanTest *b = makeNode(PGBooleanTest); b->arg = (PGExpr *) (yyvsp[(1) - (3)].node); @@ -27904,8 +28133,8 @@ YYLTYPE yylloc; ;} break; - case 1007: -#line 2518 "third_party/libpg_query/grammar/statements/select.y" + case 1011: +#line 2526 "third_party/libpg_query/grammar/statements/select.y" { PGBooleanTest *b = makeNode(PGBooleanTest); b->arg = (PGExpr *) (yyvsp[(1) - (4)].node); @@ -27915,36 +28144,36 @@ YYLTYPE yylloc; ;} break; - case 1008: -#line 2526 "third_party/libpg_query/grammar/statements/select.y" + case 1012: +#line 2534 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); ;} break; - case 1009: -#line 2530 "third_party/libpg_query/grammar/statements/select.y" + case 1013: +#line 2538 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); ;} break; - case 1010: -#line 2534 "third_party/libpg_query/grammar/statements/select.y" + case 1014: +#line 2542 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (PGNode *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); ;} break; - case 1011: -#line 2538 "third_party/libpg_query/grammar/statements/select.y" + case 1015: +#line 2546 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (PGNode *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); ;} break; - case 1012: -#line 2542 "third_party/libpg_query/grammar/statements/select.y" + case 1016: +#line 2550 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_BETWEEN, "BETWEEN", @@ -27954,8 +28183,8 @@ YYLTYPE yylloc; ;} break; - case 1013: -#line 2550 "third_party/libpg_query/grammar/statements/select.y" + case 1017: +#line 2558 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_BETWEEN, "NOT BETWEEN", @@ -27965,8 +28194,8 @@ YYLTYPE yylloc; ;} break; - case 1014: -#line 2558 "third_party/libpg_query/grammar/statements/select.y" + case 1018: +#line 2566 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_BETWEEN_SYM, "BETWEEN SYMMETRIC", @@ -27976,8 +28205,8 @@ YYLTYPE yylloc; ;} break; - case 1015: -#line 2566 "third_party/libpg_query/grammar/statements/select.y" + case 1019: +#line 2574 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_BETWEEN_SYM, "NOT BETWEEN SYMMETRIC", @@ -27987,8 +28216,8 @@ YYLTYPE yylloc; ;} break; - case 1016: -#line 2574 "third_party/libpg_query/grammar/statements/select.y" + case 1020: +#line 2582 "third_party/libpg_query/grammar/statements/select.y" { /* in_expr returns a PGSubLink or a list of a_exprs */ if (IsA((yyvsp[(3) - (3)].node), PGSubLink)) @@ -28010,8 +28239,8 @@ YYLTYPE yylloc; ;} break; - case 1017: -#line 2594 "third_party/libpg_query/grammar/statements/select.y" + case 1021: +#line 2602 "third_party/libpg_query/grammar/statements/select.y" { /* in_expr returns a PGSubLink or a list of a_exprs */ if (IsA((yyvsp[(4) - (4)].node), PGSubLink)) @@ -28035,8 +28264,8 @@ YYLTYPE yylloc; ;} break; - case 1018: -#line 2616 "third_party/libpg_query/grammar/statements/select.y" + case 1022: +#line 2624 "third_party/libpg_query/grammar/statements/select.y" { PGSubLink *n = makeNode(PGSubLink); n->subLinkType = (yyvsp[(3) - (4)].subquerytype); @@ -28049,8 +28278,8 @@ YYLTYPE yylloc; ;} break; - case 1019: -#line 2627 "third_party/libpg_query/grammar/statements/select.y" + case 1023: +#line 2635 "third_party/libpg_query/grammar/statements/select.y" { if ((yyvsp[(3) - (6)].subquerytype) == PG_ANY_SUBLINK) (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP_ANY, (yyvsp[(2) - (6)].list), (yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(2) - (6)])); @@ -28059,8 +28288,8 @@ YYLTYPE yylloc; ;} break; - case 1020: -#line 2634 "third_party/libpg_query/grammar/statements/select.y" + case 1024: +#line 2642 "third_party/libpg_query/grammar/statements/select.y" { /* * The SQL spec only allows DEFAULT in "contextually typed @@ -28076,8 +28305,8 @@ YYLTYPE yylloc; ;} break; - case 1021: -#line 2648 "third_party/libpg_query/grammar/statements/select.y" + case 1025: +#line 2656 "third_party/libpg_query/grammar/statements/select.y" { PGAStar *star = makeNode(PGAStar); star->expr = (yyvsp[(3) - (4)].node); @@ -28087,16 +28316,16 @@ YYLTYPE yylloc; ;} break; - case 1022: -#line 2656 "third_party/libpg_query/grammar/statements/select.y" + case 1026: +#line 2664 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall(SystemFuncName("unpack"), list_make1((yyvsp[(3) - (4)].node)), (yylsp[(1) - (4)])); (yyval.node) = (PGNode *) n; ;} break; - case 1023: -#line 2661 "third_party/libpg_query/grammar/statements/select.y" + case 1027: +#line 2669 "third_party/libpg_query/grammar/statements/select.y" { PGAStar *star = makeNode(PGAStar); star->expr = (yyvsp[(4) - (5)].node); @@ -28108,8 +28337,8 @@ YYLTYPE yylloc; ;} break; - case 1024: -#line 2671 "third_party/libpg_query/grammar/statements/select.y" + case 1028: +#line 2679 "third_party/libpg_query/grammar/statements/select.y" { PGAStar *star = makeNode(PGAStar); star->except_list = (yyvsp[(2) - (4)].list); @@ -28117,157 +28346,157 @@ YYLTYPE yylloc; star->rename_list = (yyvsp[(4) - (4)].list); star->location = (yylsp[(1) - (4)]); (yyval.node) = (PGNode *) star; - ;} - break; - - case 1025: -#line 2680 "third_party/libpg_query/grammar/statements/select.y" - { - PGAStar *star = makeNode(PGAStar); - star->relation = (yyvsp[(1) - (6)].str); - star->except_list = (yyvsp[(4) - (6)].list); - star->replace_list = (yyvsp[(5) - (6)].list); - star->rename_list = (yyvsp[(6) - (6)].list); - star->location = (yylsp[(1) - (6)]); - (yyval.node) = (PGNode *) star; - ;} - break; - - case 1026: -#line 2701 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} - break; - - case 1027: -#line 2703 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), 0, (yylsp[(2) - (3)])); ;} - break; - - case 1028: -#line 2705 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} + ;} break; case 1029: -#line 2707 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 2688 "third_party/libpg_query/grammar/statements/select.y" + { + PGAStar *star = makeNode(PGAStar); + star->relation = (yyvsp[(1) - (6)].str); + star->except_list = (yyvsp[(4) - (6)].list); + star->replace_list = (yyvsp[(5) - (6)].list); + star->rename_list = (yyvsp[(6) - (6)].list); + star->location = (yylsp[(1) - (6)]); + (yyval.node) = (PGNode *) star; + ;} break; case 1030: #line 2709 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1031: #line 2711 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), 0, (yylsp[(2) - (3)])); ;} break; case 1032: #line 2713 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1033: #line 2715 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1034: #line 2717 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "//", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1035: #line 2719 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1036: #line 2721 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1037: #line 2723 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "**", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1038: #line 2725 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "//", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1039: #line 2727 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1040: #line 2729 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1041: #line 2731 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "**", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1042: #line 2733 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1043: #line 2735 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1044: #line 2737 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1045: #line 2739 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1046: #line 2741 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1047: #line 2743 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + break; + + case 1048: +#line 2745 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + break; + + case 1049: +#line 2747 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} + break; + + case 1050: +#line 2749 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} + break; + + case 1051: +#line 2751 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); ;} break; - case 1048: -#line 2747 "third_party/libpg_query/grammar/statements/select.y" + case 1052: +#line 2755 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); ;} break; - case 1049: -#line 2751 "third_party/libpg_query/grammar/statements/select.y" + case 1053: +#line 2759 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (PGNode *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); ;} break; - case 1050: -#line 2755 "third_party/libpg_query/grammar/statements/select.y" + case 1054: +#line 2763 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (PGNode *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); ;} break; - case 1052: -#line 2770 "third_party/libpg_query/grammar/statements/select.y" + case 1056: +#line 2778 "third_party/libpg_query/grammar/statements/select.y" { if ((yyvsp[(2) - (2)].list)) { @@ -28281,18 +28510,18 @@ YYLTYPE yylloc; ;} break; - case 1053: -#line 2783 "third_party/libpg_query/grammar/statements/select.y" + case 1057: +#line 2791 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1054: -#line 2784 "third_party/libpg_query/grammar/statements/select.y" + case 1058: +#line 2792 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1055: -#line 2786 "third_party/libpg_query/grammar/statements/select.y" + case 1059: +#line 2794 "third_party/libpg_query/grammar/statements/select.y" { PGSubLink *n = makeNode(PGSubLink); n->subLinkType = PG_EXPR_SUBLINK; @@ -28305,8 +28534,8 @@ YYLTYPE yylloc; ;} break; - case 1056: -#line 2797 "third_party/libpg_query/grammar/statements/select.y" + case 1060: +#line 2805 "third_party/libpg_query/grammar/statements/select.y" { /* * Because the select_with_parens nonterminal is designed @@ -28332,8 +28561,8 @@ YYLTYPE yylloc; ;} break; - case 1057: -#line 2821 "third_party/libpg_query/grammar/statements/select.y" + case 1061: +#line 2829 "third_party/libpg_query/grammar/statements/select.y" { PGSubLink *n = makeNode(PGSubLink); n->subLinkType = PG_EXISTS_SUBLINK; @@ -28346,8 +28575,8 @@ YYLTYPE yylloc; ;} break; - case 1058: -#line 2832 "third_party/libpg_query/grammar/statements/select.y" + case 1062: +#line 2840 "third_party/libpg_query/grammar/statements/select.y" { PGGroupingFunc *g = makeNode(PGGroupingFunc); g->args = (yyvsp[(3) - (4)].list); @@ -28356,37 +28585,37 @@ YYLTYPE yylloc; ;} break; - case 1059: -#line 2842 "third_party/libpg_query/grammar/statements/select.y" + case 1063: +#line 2850 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; - case 1060: -#line 2846 "third_party/libpg_query/grammar/statements/select.y" + case 1064: +#line 2854 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1061: -#line 2849 "third_party/libpg_query/grammar/statements/select.y" + case 1065: +#line 2857 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall(SystemFuncName("row"), (yyvsp[(1) - (1)].list), (yylsp[(1) - (1)])); (yyval.node) = (PGNode *) n; ;} break; - case 1062: -#line 2857 "third_party/libpg_query/grammar/statements/select.y" + case 1066: +#line 2865 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeParamRef(0, (yylsp[(1) - (1)])); ;} break; - case 1063: -#line 2861 "third_party/libpg_query/grammar/statements/select.y" + case 1067: +#line 2869 "third_party/libpg_query/grammar/statements/select.y" { PGParamRef *p = makeNode(PGParamRef); p->number = (yyvsp[(1) - (1)].ival); @@ -28395,15 +28624,15 @@ YYLTYPE yylloc; ;} break; - case 1064: -#line 2868 "third_party/libpg_query/grammar/statements/select.y" + case 1068: +#line 2876 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeNamedParamRef((yyvsp[(2) - (2)].str), (yylsp[(1) - (2)])); ;} break; - case 1072: -#line 2882 "third_party/libpg_query/grammar/statements/select.y" + case 1076: +#line 2890 "third_party/libpg_query/grammar/statements/select.y" { PGSubLink *n = makeNode(PGSubLink); n->subLinkType = PG_ARRAY_SUBLINK; @@ -28416,8 +28645,8 @@ YYLTYPE yylloc; ;} break; - case 1073: -#line 2892 "third_party/libpg_query/grammar/statements/select.y" + case 1077: +#line 2900 "third_party/libpg_query/grammar/statements/select.y" { PGList *func_name = list_make1(makeString("construct_array")); PGFuncCall *n = makeFuncCall(func_name, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); @@ -28425,8 +28654,8 @@ YYLTYPE yylloc; ;} break; - case 1074: -#line 2898 "third_party/libpg_query/grammar/statements/select.y" + case 1078: +#line 2906 "third_party/libpg_query/grammar/statements/select.y" { PGPositionalReference *n = makeNode(PGPositionalReference); n->position = (yyvsp[(2) - (2)].ival); @@ -28435,24 +28664,24 @@ YYLTYPE yylloc; ;} break; - case 1075: -#line 2906 "third_party/libpg_query/grammar/statements/select.y" + case 1079: +#line 2914 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall(SystemFuncName("list_value"), (yyvsp[(2) - (3)].list), (yylsp[(2) - (3)])); (yyval.node) = (PGNode *) n; ;} break; - case 1076: -#line 2913 "third_party/libpg_query/grammar/statements/select.y" + case 1080: +#line 2921 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *f = makeFuncCall(SystemFuncName("struct_pack"), (yyvsp[(2) - (3)].list), (yylsp[(2) - (3)])); (yyval.node) = (PGNode *) f; ;} break; - case 1077: -#line 2920 "third_party/libpg_query/grammar/statements/select.y" + case 1081: +#line 2928 "third_party/libpg_query/grammar/statements/select.y" { PGList *key_list = NULL; PGList *value_list = NULL; @@ -28471,15 +28700,15 @@ YYLTYPE yylloc; ;} break; - case 1078: -#line 2940 "third_party/libpg_query/grammar/statements/select.y" + case 1082: +#line 2948 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeFuncCall((yyvsp[(1) - (3)].list), NIL, (yylsp[(1) - (3)])); ;} break; - case 1079: -#line 2944 "third_party/libpg_query/grammar/statements/select.y" + case 1083: +#line 2952 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall((yyvsp[(1) - (5)].list), NIL, (yylsp[(1) - (5)])); n->agg_order = (yyvsp[(3) - (5)].list); @@ -28488,8 +28717,8 @@ YYLTYPE yylloc; ;} break; - case 1080: -#line 2951 "third_party/libpg_query/grammar/statements/select.y" + case 1084: +#line 2959 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(3) - (6)].list), (yylsp[(1) - (6)])); n->agg_order = (yyvsp[(4) - (6)].list); @@ -28498,8 +28727,8 @@ YYLTYPE yylloc; ;} break; - case 1081: -#line 2958 "third_party/libpg_query/grammar/statements/select.y" + case 1085: +#line 2966 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall((yyvsp[(1) - (7)].list), list_make1((yyvsp[(4) - (7)].node)), (yylsp[(1) - (7)])); n->func_variadic = true; @@ -28509,8 +28738,8 @@ YYLTYPE yylloc; ;} break; - case 1082: -#line 2966 "third_party/libpg_query/grammar/statements/select.y" + case 1086: +#line 2974 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall((yyvsp[(1) - (9)].list), lappend((yyvsp[(3) - (9)].list), (yyvsp[(6) - (9)].node)), (yylsp[(1) - (9)])); n->func_variadic = true; @@ -28520,8 +28749,8 @@ YYLTYPE yylloc; ;} break; - case 1083: -#line 2974 "third_party/libpg_query/grammar/statements/select.y" + case 1087: +#line 2982 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall((yyvsp[(1) - (7)].list), (yyvsp[(4) - (7)].list), (yylsp[(1) - (7)])); n->agg_order = (yyvsp[(5) - (7)].list); @@ -28534,8 +28763,8 @@ YYLTYPE yylloc; ;} break; - case 1084: -#line 2985 "third_party/libpg_query/grammar/statements/select.y" + case 1088: +#line 2993 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = makeFuncCall((yyvsp[(1) - (7)].list), (yyvsp[(4) - (7)].list), (yylsp[(1) - (7)])); n->agg_order = (yyvsp[(5) - (7)].list); @@ -28545,8 +28774,8 @@ YYLTYPE yylloc; ;} break; - case 1085: -#line 3005 "third_party/libpg_query/grammar/statements/select.y" + case 1089: +#line 3013 "third_party/libpg_query/grammar/statements/select.y" { PGFuncCall *n = (PGFuncCall *) (yyvsp[(1) - (5)].node); /* @@ -28584,23 +28813,23 @@ YYLTYPE yylloc; ;} break; - case 1086: -#line 3041 "third_party/libpg_query/grammar/statements/select.y" + case 1090: +#line 3049 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1087: -#line 3051 "third_party/libpg_query/grammar/statements/select.y" + case 1091: +#line 3059 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1088: -#line 3052 "third_party/libpg_query/grammar/statements/select.y" + case 1092: +#line 3060 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1089: -#line 3060 "third_party/libpg_query/grammar/statements/select.y" + case 1093: +#line 3068 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("pg_collation_for"), list_make1((yyvsp[(4) - (5)].node)), @@ -28608,25 +28837,25 @@ YYLTYPE yylloc; ;} break; - case 1090: -#line 3066 "third_party/libpg_query/grammar/statements/select.y" + case 1094: +#line 3074 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), 0, (yylsp[(1) - (6)])); ;} break; - case 1091: -#line 3068 "third_party/libpg_query/grammar/statements/select.y" + case 1095: +#line 3076 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), 1, (yylsp[(1) - (6)])); ;} break; - case 1092: -#line 3070 "third_party/libpg_query/grammar/statements/select.y" + case 1096: +#line 3078 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("date_part"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 1093: -#line 3074 "third_party/libpg_query/grammar/statements/select.y" + case 1097: +#line 3082 "third_party/libpg_query/grammar/statements/select.y" { /* overlay(A PLACING B FROM C FOR D) is converted to * overlay(A, B, C, D) @@ -28637,16 +28866,16 @@ YYLTYPE yylloc; ;} break; - case 1094: -#line 3083 "third_party/libpg_query/grammar/statements/select.y" + case 1098: +#line 3091 "third_party/libpg_query/grammar/statements/select.y" { /* position(A in B) is converted to position_inverse(A, B) */ (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("__internal_position_operator"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 1095: -#line 3088 "third_party/libpg_query/grammar/statements/select.y" + case 1099: +#line 3096 "third_party/libpg_query/grammar/statements/select.y" { /* substring(A from B for C) is converted to * substring(A, B, C) - thomas 2000-11-28 @@ -28655,8 +28884,8 @@ YYLTYPE yylloc; ;} break; - case 1096: -#line 3095 "third_party/libpg_query/grammar/statements/select.y" + case 1100: +#line 3103 "third_party/libpg_query/grammar/statements/select.y" { /* TREAT(expr AS target) converts expr of a particular type to target, * which is defined to be a subtype of the original expression. @@ -28673,8 +28902,8 @@ YYLTYPE yylloc; ;} break; - case 1097: -#line 3110 "third_party/libpg_query/grammar/statements/select.y" + case 1101: +#line 3118 "third_party/libpg_query/grammar/statements/select.y" { /* various trim expressions are defined in SQL * - thomas 1997-07-19 @@ -28683,36 +28912,36 @@ YYLTYPE yylloc; ;} break; - case 1098: -#line 3117 "third_party/libpg_query/grammar/statements/select.y" + case 1102: +#line 3125 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; - case 1099: -#line 3121 "third_party/libpg_query/grammar/statements/select.y" + case 1103: +#line 3129 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; - case 1100: -#line 3125 "third_party/libpg_query/grammar/statements/select.y" + case 1104: +#line 3133 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("trim"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 1101: -#line 3129 "third_party/libpg_query/grammar/statements/select.y" + case 1105: +#line 3137 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NULLIF, "=", (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(1) - (6)])); ;} break; - case 1102: -#line 3133 "third_party/libpg_query/grammar/statements/select.y" + case 1106: +#line 3141 "third_party/libpg_query/grammar/statements/select.y" { PGCoalesceExpr *c = makeNode(PGCoalesceExpr); c->args = (yyvsp[(3) - (4)].list); @@ -28721,19 +28950,11 @@ YYLTYPE yylloc; ;} break; - case 1103: -#line 3143 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("row"), (yyvsp[(1) - (1)].list), (yylsp[(1) - (1)])); - (yyval.node) = (PGNode *) n; - ;} - break; - - case 1104: + case 1107: #line 3151 "third_party/libpg_query/grammar/statements/select.y" { PGLambdaFunction *lambda = makeNode(PGLambdaFunction); - lambda->lhs = (yyvsp[(4) - (7)].node); + lambda->lhs = (yyvsp[(4) - (7)].list); lambda->rhs = (yyvsp[(2) - (7)].node); lambda->location = (yylsp[(1) - (7)]); PGFuncCall *n = makeFuncCall(SystemFuncName("list_apply"), list_make2((yyvsp[(6) - (7)].node), lambda), (yylsp[(1) - (7)])); @@ -28741,16 +28962,16 @@ YYLTYPE yylloc; ;} break; - case 1105: + case 1108: #line 3160 "third_party/libpg_query/grammar/statements/select.y" { PGLambdaFunction *lambda = makeNode(PGLambdaFunction); - lambda->lhs = (yyvsp[(4) - (9)].node); + lambda->lhs = (yyvsp[(4) - (9)].list); lambda->rhs = (yyvsp[(2) - (9)].node); lambda->location = (yylsp[(1) - (9)]); PGLambdaFunction *lambda_filter = makeNode(PGLambdaFunction); - lambda_filter->lhs = (yyvsp[(4) - (9)].node); + lambda_filter->lhs = (yyvsp[(4) - (9)].list); lambda_filter->rhs = (yyvsp[(8) - (9)].node); lambda_filter->location = (yylsp[(8) - (9)]); PGFuncCall *filter = makeFuncCall(SystemFuncName("list_filter"), list_make2((yyvsp[(6) - (9)].node), lambda_filter), (yylsp[(1) - (9)])); @@ -28759,62 +28980,62 @@ YYLTYPE yylloc; ;} break; - case 1106: + case 1109: #line 3181 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(4) - (5)].list); ;} break; - case 1107: + case 1110: #line 3182 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 1108: + case 1111: #line 3186 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(4) - (5)].node); ;} break; - case 1109: + case 1112: #line 3187 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; - case 1110: + case 1113: #line 3188 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 1111: + case 1114: #line 3192 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = true; ;} break; - case 1112: + case 1115: #line 3193 "third_party/libpg_query/grammar/statements/select.y" { (yyval.boolean) = false; ;} break; - case 1113: + case 1116: #line 3200 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 1114: + case 1117: #line 3201 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 1115: + case 1118: #line 3205 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].windef)); ;} break; - case 1116: + case 1119: #line 3207 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].windef)); ;} break; - case 1117: + case 1120: #line 3212 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = (yyvsp[(3) - (3)].windef); @@ -28823,12 +29044,12 @@ YYLTYPE yylloc; ;} break; - case 1118: + case 1121: #line 3220 "third_party/libpg_query/grammar/statements/select.y" { (yyval.windef) = (yyvsp[(2) - (2)].windef); ;} break; - case 1119: + case 1122: #line 3222 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = makeNode(PGWindowDef); @@ -28844,12 +29065,12 @@ YYLTYPE yylloc; ;} break; - case 1120: + case 1123: #line 3235 "third_party/libpg_query/grammar/statements/select.y" { (yyval.windef) = NULL; ;} break; - case 1121: + case 1124: #line 3240 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = makeNode(PGWindowDef); @@ -28866,27 +29087,27 @@ YYLTYPE yylloc; ;} break; - case 1122: + case 1125: #line 3265 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1123: + case 1126: #line 3266 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = NULL; ;} break; - case 1124: + case 1127: #line 3269 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; - case 1125: + case 1128: #line 3270 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 1126: + case 1129: #line 3279 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = (yyvsp[(2) - (3)].windef); @@ -28897,7 +29118,7 @@ YYLTYPE yylloc; ;} break; - case 1127: + case 1130: #line 3287 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = (yyvsp[(2) - (3)].windef); @@ -28908,7 +29129,7 @@ YYLTYPE yylloc; ;} break; - case 1128: + case 1131: #line 3295 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = (yyvsp[(2) - (3)].windef); @@ -28919,7 +29140,7 @@ YYLTYPE yylloc; ;} break; - case 1129: + case 1132: #line 3303 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = makeNode(PGWindowDef); @@ -28931,7 +29152,7 @@ YYLTYPE yylloc; ;} break; - case 1130: + case 1133: #line 3314 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = (yyvsp[(1) - (1)].windef); @@ -28952,7 +29173,7 @@ YYLTYPE yylloc; ;} break; - case 1131: + case 1134: #line 3332 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n1 = (yyvsp[(2) - (4)].windef); @@ -28993,7 +29214,7 @@ YYLTYPE yylloc; ;} break; - case 1132: + case 1135: #line 3378 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = makeNode(PGWindowDef); @@ -29005,7 +29226,7 @@ YYLTYPE yylloc; ;} break; - case 1133: + case 1136: #line 3387 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = makeNode(PGWindowDef); @@ -29017,7 +29238,7 @@ YYLTYPE yylloc; ;} break; - case 1134: + case 1137: #line 3396 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = makeNode(PGWindowDef); @@ -29029,7 +29250,7 @@ YYLTYPE yylloc; ;} break; - case 1135: + case 1138: #line 3405 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = makeNode(PGWindowDef); @@ -29041,7 +29262,7 @@ YYLTYPE yylloc; ;} break; - case 1136: + case 1139: #line 3414 "third_party/libpg_query/grammar/statements/select.y" { PGWindowDef *n = makeNode(PGWindowDef); @@ -29053,52 +29274,52 @@ YYLTYPE yylloc; ;} break; - case 1137: + case 1140: #line 3425 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_CURRENT_ROW; ;} break; - case 1138: + case 1141: #line 3426 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_GROUP; ;} break; - case 1139: + case 1142: #line 3427 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_TIES; ;} break; - case 1140: + case 1143: #line 3428 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = 0; ;} break; - case 1141: + case 1144: #line 3429 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = 0; ;} break; - case 1142: + case 1145: #line 3443 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 1143: + case 1146: #line 3444 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 1144: + case 1147: #line 3447 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list);;} break; - case 1145: + case 1148: #line 3448 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); ;} break; - case 1146: + case 1149: #line 3452 "third_party/libpg_query/grammar/statements/select.y" { PGNamedArgExpr *na = makeNode(PGNamedArgExpr); @@ -29110,320 +29331,320 @@ YYLTYPE yylloc; ;} break; - case 1147: + case 1150: #line 3462 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1148: + case 1151: #line 3463 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 1149: + case 1152: #line 3467 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1150: + case 1153: #line 3468 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 1151: + case 1154: #line 3473 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make2((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); ;} break; - case 1152: + case 1155: #line 3479 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; - case 1153: + case 1156: #line 3480 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; - case 1154: + case 1157: #line 3485 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1155: + case 1158: #line 3486 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 1156: + case 1159: #line 3491 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1157: + case 1160: #line 3492 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NULL; ;} break; - case 1158: + case 1161: #line 3495 "third_party/libpg_query/grammar/statements/select.y" { (yyval.subquerytype) = PG_ANY_SUBLINK; ;} break; - case 1159: + case 1162: #line 3496 "third_party/libpg_query/grammar/statements/select.y" { (yyval.subquerytype) = PG_ANY_SUBLINK; ;} break; - case 1160: + case 1163: #line 3497 "third_party/libpg_query/grammar/statements/select.y" { (yyval.subquerytype) = PG_ALL_SUBLINK; ;} break; - case 1161: + case 1164: #line 3500 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1162: + case 1165: #line 3501 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) (yyvsp[(1) - (1)].conststr); ;} break; - case 1163: + case 1166: #line 3504 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "+"; ;} break; - case 1164: + case 1167: #line 3505 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "-"; ;} break; - case 1165: + case 1168: #line 3506 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "*"; ;} break; - case 1166: + case 1169: #line 3507 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "/"; ;} break; - case 1167: + case 1170: #line 3508 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "//"; ;} break; - case 1168: + case 1171: #line 3509 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "%"; ;} break; - case 1169: + case 1172: #line 3510 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "^"; ;} break; - case 1170: + case 1173: #line 3511 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "**"; ;} break; - case 1171: + case 1174: #line 3512 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "<"; ;} break; - case 1172: + case 1175: #line 3513 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = ">"; ;} break; - case 1173: + case 1176: #line 3514 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "="; ;} break; - case 1174: + case 1177: #line 3515 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "<="; ;} break; - case 1175: + case 1178: #line 3516 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = ">="; ;} break; - case 1176: + case 1179: #line 3517 "third_party/libpg_query/grammar/statements/select.y" { (yyval.conststr) = "<>"; ;} break; - case 1177: + case 1180: #line 3521 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 1178: + case 1181: #line 3523 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 1179: + case 1182: #line 3528 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 1180: + case 1183: #line 3530 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 1181: + case 1184: #line 3535 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 1182: + case 1185: #line 3537 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 1183: + case 1186: #line 3539 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString("~~")); ;} break; - case 1184: + case 1187: #line 3541 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString("!~~")); ;} break; - case 1185: + case 1188: #line 3543 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString("~~~")); ;} break; - case 1186: + case 1189: #line 3545 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString("!~~~")); ;} break; - case 1187: + case 1190: #line 3547 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString("~~*")); ;} break; - case 1188: + case 1191: #line 3549 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString("!~~*")); ;} break; - case 1189: + case 1192: #line 3563 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 1190: + case 1193: #line 3565 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(3) - (3)].list)); ;} break; - case 1191: + case 1194: #line 3570 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1192: + case 1195: #line 3574 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 1193: + case 1196: #line 3581 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1194: + case 1197: #line 3586 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 1195: + case 1198: #line 3592 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1196: + case 1199: #line 3596 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 1197: + case 1200: #line 3603 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1198: + case 1201: #line 3608 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 1199: + case 1202: #line 3615 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1200: + case 1203: #line 3619 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NULL; ;} break; - case 1201: + case 1204: #line 3628 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1202: + case 1205: #line 3632 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 1203: + case 1206: #line 3638 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1204: + case 1207: #line 3642 "third_party/libpg_query/grammar/statements/select.y" { PGNamedArgExpr *na = makeNode(PGNamedArgExpr); @@ -29435,7 +29656,7 @@ YYLTYPE yylloc; ;} break; - case 1205: + case 1208: #line 3651 "third_party/libpg_query/grammar/statements/select.y" { PGNamedArgExpr *na = makeNode(PGNamedArgExpr); @@ -29447,140 +29668,140 @@ YYLTYPE yylloc; ;} break; - case 1206: + case 1209: #line 3661 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} break; - case 1207: + case 1210: #line 3662 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} break; - case 1208: + case 1211: #line 3667 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make2(makeStringConst((yyvsp[(1) - (3)].str), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); ;} break; - case 1209: + case 1212: #line 3670 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 1210: + case 1213: #line 3677 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1211: + case 1214: #line 3678 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "year"; ;} break; - case 1212: + case 1215: #line 3679 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "month"; ;} break; - case 1213: + case 1216: #line 3680 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "day"; ;} break; - case 1214: + case 1217: #line 3681 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "hour"; ;} break; - case 1215: + case 1218: #line 3682 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "minute"; ;} break; - case 1216: + case 1219: #line 3683 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "second"; ;} break; - case 1217: + case 1220: #line 3684 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "millisecond"; ;} break; - case 1218: + case 1221: #line 3685 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "microsecond"; ;} break; - case 1219: + case 1222: #line 3686 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "week"; ;} break; - case 1220: + case 1223: #line 3687 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "quarter"; ;} break; - case 1221: + case 1224: #line 3688 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "decade"; ;} break; - case 1222: + case 1225: #line 3689 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "century"; ;} break; - case 1223: + case 1226: #line 3690 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (char*) "millennium"; ;} break; - case 1224: + case 1227: #line 3691 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1225: + case 1228: #line 3702 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make4((yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; - case 1226: + case 1229: #line 3706 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); ;} break; - case 1227: + case 1230: #line 3713 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 1228: + case 1231: #line 3719 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make2((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); ;} break; - case 1229: + case 1232: #line 3720 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 1230: + case 1233: #line 3737 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); ;} break; - case 1231: + case 1234: #line 3741 "third_party/libpg_query/grammar/statements/select.y" { /* not legal per SQL99, but might as well allow it */ @@ -29588,14 +29809,14 @@ YYLTYPE yylloc; ;} break; - case 1232: + case 1235: #line 3746 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); ;} break; - case 1233: + case 1236: #line 3750 "third_party/libpg_query/grammar/statements/select.y" { /* @@ -29613,44 +29834,44 @@ YYLTYPE yylloc; ;} break; - case 1234: + case 1237: #line 3765 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1235: + case 1238: #line 3769 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 1236: + case 1239: #line 3773 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 1237: + case 1240: #line 3776 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 1238: + case 1241: #line 3779 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(3) - (3)].list), (yyvsp[(1) - (3)].node)); ;} break; - case 1239: + case 1242: #line 3780 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 1240: + case 1243: #line 3781 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1241: + case 1244: #line 3785 "third_party/libpg_query/grammar/statements/select.y" { PGSubLink *n = makeNode(PGSubLink); @@ -29660,17 +29881,17 @@ YYLTYPE yylloc; ;} break; - case 1242: + case 1245: #line 3791 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *)(yyvsp[(2) - (3)].list); ;} break; - case 1244: + case 1247: #line 3793 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (PGNode *)(yyvsp[(1) - (1)].node); ;} break; - case 1245: + case 1248: #line 3804 "third_party/libpg_query/grammar/statements/select.y" { PGCaseExpr *c = makeNode(PGCaseExpr); @@ -29683,17 +29904,17 @@ YYLTYPE yylloc; ;} break; - case 1246: + case 1249: #line 3817 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1247: + case 1250: #line 3818 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 1248: + case 1251: #line 3823 "third_party/libpg_query/grammar/statements/select.y" { PGCaseWhen *w = makeNode(PGCaseWhen); @@ -29704,58 +29925,48 @@ YYLTYPE yylloc; ;} break; - case 1249: + case 1252: #line 3833 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 1250: + case 1253: #line 3834 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 1251: + case 1254: #line 3837 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1252: + case 1255: #line 3838 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 1253: -#line 3842 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} - break; - - case 1254: -#line 3843 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} - break; - - case 1255: + case 1256: #line 3847 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeColumnRef((yyvsp[(1) - (1)].str), NIL, (yylsp[(1) - (1)]), yyscanner); ;} break; - case 1256: + case 1257: #line 3853 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeColumnRef((yyvsp[(1) - (1)].str), NIL, (yylsp[(1) - (1)]), yyscanner); ;} break; - case 1257: + case 1258: #line 3857 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeColumnRef((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)]), yyscanner); ;} break; - case 1258: + case 1259: #line 3864 "third_party/libpg_query/grammar/statements/select.y" { PGAIndices *ai = makeNode(PGAIndices); @@ -29766,7 +29977,7 @@ YYLTYPE yylloc; ;} break; - case 1259: + case 1260: #line 3872 "third_party/libpg_query/grammar/statements/select.y" { PGAIndices *ai = makeNode(PGAIndices); @@ -29777,7 +29988,7 @@ YYLTYPE yylloc; ;} break; - case 1260: + case 1261: #line 3879 "third_party/libpg_query/grammar/statements/select.y" { PGAIndices *ai = makeNode(PGAIndices); @@ -29789,7 +30000,7 @@ YYLTYPE yylloc; ;} break; - case 1261: + case 1262: #line 3887 "third_party/libpg_query/grammar/statements/select.y" { PGAIndices *ai = makeNode(PGAIndices); @@ -29800,42 +30011,42 @@ YYLTYPE yylloc; ;} break; - case 1262: + case 1263: #line 3897 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1263: + case 1264: #line 3898 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = NULL; ;} break; - case 1264: + case 1265: #line 3903 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 1265: + case 1266: #line 3904 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 1266: + case 1267: #line 3908 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NULL; ;} break; - case 1267: + case 1268: #line 3909 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(NULL); ;} break; - case 1268: + case 1269: #line 3910 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 1269: + case 1270: #line 3915 "third_party/libpg_query/grammar/statements/select.y" { if ((yyvsp[(3) - (3)].list)) { @@ -29847,7 +30058,7 @@ YYLTYPE yylloc; ;} break; - case 1270: + case 1271: #line 3924 "third_party/libpg_query/grammar/statements/select.y" { PGAIndices *ai = makeNode(PGAIndices); @@ -29858,7 +30069,7 @@ YYLTYPE yylloc; ;} break; - case 1271: + case 1272: #line 3932 "third_party/libpg_query/grammar/statements/select.y" { PGAIndices *ai = makeNode(PGAIndices); @@ -29869,7 +30080,7 @@ YYLTYPE yylloc; ;} break; - case 1272: + case 1273: #line 3939 "third_party/libpg_query/grammar/statements/select.y" { PGAIndices *ai = makeNode(PGAIndices); @@ -29881,7 +30092,7 @@ YYLTYPE yylloc; ;} break; - case 1273: + case 1274: #line 3948 "third_party/libpg_query/grammar/statements/select.y" { PGAIndices *ai = makeNode(PGAIndices); @@ -29892,47 +30103,47 @@ YYLTYPE yylloc; ;} break; - case 1274: + case 1275: #line 3963 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 1275: + case 1276: #line 3964 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 1278: + case 1279: #line 3980 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1279: + case 1280: #line 3981 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 1280: + case 1281: #line 3985 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; - case 1281: + case 1282: #line 3986 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; - case 1282: + case 1283: #line 3990 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1283: + case 1284: #line 3991 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 1284: + case 1285: #line 3995 "third_party/libpg_query/grammar/statements/select.y" { (yyval.target) = makeNode(PGResTarget); @@ -29943,7 +30154,7 @@ YYLTYPE yylloc; ;} break; - case 1285: + case 1286: #line 4011 "third_party/libpg_query/grammar/statements/select.y" { (yyval.target) = makeNode(PGResTarget); @@ -29954,7 +30165,7 @@ YYLTYPE yylloc; ;} break; - case 1286: + case 1287: #line 4019 "third_party/libpg_query/grammar/statements/select.y" { (yyval.target) = makeNode(PGResTarget); @@ -29965,7 +30176,7 @@ YYLTYPE yylloc; ;} break; - case 1287: + case 1288: #line 4027 "third_party/libpg_query/grammar/statements/select.y" { (yyval.target) = makeNode(PGResTarget); @@ -29976,191 +30187,191 @@ YYLTYPE yylloc; ;} break; - case 1288: + case 1289: #line 4036 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 1289: + case 1290: #line 4037 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(2) - (2)].list)); ;} break; - case 1290: + case 1291: #line 4042 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].str)); ;} break; - case 1291: + case 1292: #line 4046 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].str)); ;} break; - case 1292: + case 1293: #line 4052 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; - case 1293: + case 1294: #line 4054 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; - case 1294: + case 1295: #line 4058 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1295: + case 1296: #line 4059 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 1296: + case 1297: #line 4063 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1297: + case 1298: #line 4064 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NULL; ;} break; - case 1298: + case 1299: #line 4067 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make2((yyvsp[(1) - (3)].node), makeString((yyvsp[(3) - (3)].str))); ;} break; - case 1299: + case 1300: #line 4071 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; - case 1300: + case 1301: #line 4072 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; - case 1301: + case 1302: #line 4076 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1302: + case 1303: #line 4077 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 1303: + case 1304: #line 4080 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 1304: + case 1305: #line 4081 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(2) - (2)].list)); ;} break; - case 1305: + case 1306: #line 4082 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NULL; ;} break; - case 1306: + case 1307: #line 4085 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make2((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].str)); ;} break; - case 1307: + case 1308: #line 4089 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; - case 1308: + case 1309: #line 4090 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; - case 1309: + case 1310: #line 4094 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1310: + case 1311: #line 4095 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 1311: + case 1312: #line 4097 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 1312: + case 1313: #line 4098 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(2) - (2)].list)); ;} break; - case 1313: + case 1314: #line 4099 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NULL; ;} break; - case 1314: + case 1315: #line 4109 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); ;} break; - case 1315: + case 1316: #line 4110 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); ;} break; - case 1316: + case 1317: #line 4115 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 1317: + case 1318: #line 4117 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; - case 1318: + case 1319: #line 4122 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1319: + case 1320: #line 4123 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (2)].list); ;} break; - case 1320: + case 1321: #line 4127 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1321: + case 1322: #line 4128 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 1322: + case 1323: #line 4131 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1323: + case 1324: #line 4143 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 1324: + case 1325: #line 4146 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), @@ -30168,21 +30379,21 @@ YYLTYPE yylloc; ;} break; - case 1325: + case 1326: #line 4157 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; - case 1326: + case 1327: #line 4161 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 1327: + case 1328: #line 4165 "third_party/libpg_query/grammar/statements/select.y" { if ((yyvsp[(2) - (2)].list)) @@ -30197,14 +30408,14 @@ YYLTYPE yylloc; ;} break; - case 1328: + case 1329: #line 4177 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 1329: + case 1330: #line 4181 "third_party/libpg_query/grammar/statements/select.y" { /* This is a bit constant per SQL99: @@ -30216,7 +30427,7 @@ YYLTYPE yylloc; ;} break; - case 1330: + case 1331: #line 4190 "third_party/libpg_query/grammar/statements/select.y" { /* generic type 'literal' syntax */ @@ -30226,7 +30437,7 @@ YYLTYPE yylloc; ;} break; - case 1331: + case 1332: #line 4197 "third_party/libpg_query/grammar/statements/select.y" { /* generic syntax with a type modifier */ @@ -30267,146 +30478,146 @@ YYLTYPE yylloc; ;} break; - case 1332: + case 1333: #line 4235 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); ;} break; - case 1333: + case 1334: #line 4239 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeIntervalNode((yyvsp[(3) - (5)].node), (yylsp[(3) - (5)]), (yyvsp[(5) - (5)].list)); ;} break; - case 1334: + case 1335: #line 4243 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeIntervalNode((yyvsp[(2) - (3)].ival), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].list)); ;} break; - case 1335: + case 1336: #line 4247 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeIntervalNode((yyvsp[(2) - (3)].str), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].list)); ;} break; - case 1336: + case 1337: #line 4251 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeBoolAConst(true, (yylsp[(1) - (1)])); ;} break; - case 1337: + case 1338: #line 4255 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeBoolAConst(false, (yylsp[(1) - (1)])); ;} break; - case 1338: + case 1339: #line 4259 "third_party/libpg_query/grammar/statements/select.y" { (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); ;} break; - case 1339: + case 1340: #line 4264 "third_party/libpg_query/grammar/statements/select.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; - case 1340: + case 1341: #line 4281 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1341: + case 1342: #line 4282 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1342: + case 1343: #line 4283 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1343: + case 1344: #line 4286 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1344: + case 1345: #line 4287 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1345: + case 1346: #line 4288 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1346: + case 1347: #line 4291 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1347: + case 1348: #line 4292 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1348: + case 1349: #line 4293 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1349: + case 1350: #line 4296 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 1350: + case 1351: #line 4297 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); ;} break; - case 1351: + case 1352: #line 4301 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = list_make1(makeString((yyvsp[(2) - (2)].str))); ;} break; - case 1352: + case 1353: #line 4303 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; - case 1353: + case 1354: #line 4307 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 1354: + case 1355: #line 4308 "third_party/libpg_query/grammar/statements/select.y" { (yyval.list) = NIL; ;} break; - case 1356: + case 1357: #line 4315 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1357: + case 1358: #line 4316 "third_party/libpg_query/grammar/statements/select.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1358: + case 1359: #line 8 "third_party/libpg_query/grammar/statements/prepare.y" { PGPrepareStmt *n = makeNode(PGPrepareStmt); @@ -30417,17 +30628,17 @@ YYLTYPE yylloc; ;} break; - case 1359: + case 1360: #line 18 "third_party/libpg_query/grammar/statements/prepare.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 1360: + case 1361: #line 19 "third_party/libpg_query/grammar/statements/prepare.y" { (yyval.list) = NIL; ;} break; - case 1367: + case 1368: #line 8 "third_party/libpg_query/grammar/statements/create_schema.y" { PGCreateSchemaStmt *n = makeNode(PGCreateSchemaStmt); @@ -30449,7 +30660,7 @@ YYLTYPE yylloc; ;} break; - case 1368: + case 1369: #line 27 "third_party/libpg_query/grammar/statements/create_schema.y" { PGCreateSchemaStmt *n = makeNode(PGCreateSchemaStmt); @@ -30476,7 +30687,7 @@ YYLTYPE yylloc; ;} break; - case 1369: + case 1370: #line 51 "third_party/libpg_query/grammar/statements/create_schema.y" { PGCreateSchemaStmt *n = makeNode(PGCreateSchemaStmt); @@ -30498,7 +30709,7 @@ YYLTYPE yylloc; ;} break; - case 1370: + case 1371: #line 74 "third_party/libpg_query/grammar/statements/create_schema.y" { if ((yyloc) < 0) /* see comments for YYLLOC_DEFAULT */ @@ -30507,12 +30718,12 @@ YYLTYPE yylloc; ;} break; - case 1371: + case 1372: #line 80 "third_party/libpg_query/grammar/statements/create_schema.y" { (yyval.list) = NIL; ;} break; - case 1376: + case 1377: #line 11 "third_party/libpg_query/grammar/statements/index.y" { PGIndexStmt *n = makeNode(PGIndexStmt); @@ -30538,7 +30749,7 @@ YYLTYPE yylloc; ;} break; - case 1377: + case 1378: #line 36 "third_party/libpg_query/grammar/statements/index.y" { PGIndexStmt *n = makeNode(PGIndexStmt); @@ -30564,62 +30775,62 @@ YYLTYPE yylloc; ;} break; - case 1378: + case 1379: #line 62 "third_party/libpg_query/grammar/statements/index.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1379: + case 1380: #line 66 "third_party/libpg_query/grammar/statements/index.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 1380: + case 1381: #line 67 "third_party/libpg_query/grammar/statements/index.y" { (yyval.str) = (char*) DEFAULT_INDEX_TYPE; ;} break; - case 1381: + case 1382: #line 72 "third_party/libpg_query/grammar/statements/index.y" { (yyval.boolean) = true; ;} break; - case 1382: + case 1383: #line 73 "third_party/libpg_query/grammar/statements/index.y" { (yyval.boolean) = false; ;} break; - case 1383: + case 1384: #line 78 "third_party/libpg_query/grammar/statements/index.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1384: + case 1385: #line 79 "third_party/libpg_query/grammar/statements/index.y" { (yyval.str) = NULL; ;} break; - case 1385: + case 1386: #line 83 "third_party/libpg_query/grammar/statements/index.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 1386: + case 1387: #line 84 "third_party/libpg_query/grammar/statements/index.y" { (yyval.list) = NIL; ;} break; - case 1387: + case 1388: #line 89 "third_party/libpg_query/grammar/statements/index.y" { (yyval.boolean) = true; ;} break; - case 1388: + case 1389: #line 90 "third_party/libpg_query/grammar/statements/index.y" { (yyval.boolean) = false; ;} break; - case 1389: + case 1390: #line 8 "third_party/libpg_query/grammar/statements/alter_schema.y" { PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); @@ -30631,7 +30842,7 @@ YYLTYPE yylloc; ;} break; - case 1390: + case 1391: #line 17 "third_party/libpg_query/grammar/statements/alter_schema.y" { PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); @@ -30643,7 +30854,7 @@ YYLTYPE yylloc; ;} break; - case 1391: + case 1392: #line 26 "third_party/libpg_query/grammar/statements/alter_schema.y" { PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); @@ -30655,7 +30866,7 @@ YYLTYPE yylloc; ;} break; - case 1392: + case 1393: #line 35 "third_party/libpg_query/grammar/statements/alter_schema.y" { PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); @@ -30667,7 +30878,7 @@ YYLTYPE yylloc; ;} break; - case 1393: + case 1394: #line 44 "third_party/libpg_query/grammar/statements/alter_schema.y" { PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); @@ -30679,7 +30890,7 @@ YYLTYPE yylloc; ;} break; - case 1394: + case 1395: #line 53 "third_party/libpg_query/grammar/statements/alter_schema.y" { PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); @@ -30691,7 +30902,7 @@ YYLTYPE yylloc; ;} break; - case 1395: + case 1396: #line 6 "third_party/libpg_query/grammar/statements/checkpoint.y" { PGCheckPointStmt *n = makeNode(PGCheckPointStmt); @@ -30701,7 +30912,7 @@ YYLTYPE yylloc; ;} break; - case 1396: + case 1397: #line 13 "third_party/libpg_query/grammar/statements/checkpoint.y" { PGCheckPointStmt *n = makeNode(PGCheckPointStmt); @@ -30711,17 +30922,17 @@ YYLTYPE yylloc; ;} break; - case 1397: + case 1398: #line 22 "third_party/libpg_query/grammar/statements/checkpoint.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1398: + case 1399: #line 23 "third_party/libpg_query/grammar/statements/checkpoint.y" { (yyval.str) = NULL; ;} break; - case 1399: + case 1400: #line 8 "third_party/libpg_query/grammar/statements/comment_on.y" { PGCommentOnStmt *n = makeNode(PGCommentOnStmt); @@ -30732,7 +30943,7 @@ YYLTYPE yylloc; ;} break; - case 1400: + case 1401: #line 16 "third_party/libpg_query/grammar/statements/comment_on.y" { PGCommentOnStmt *n = makeNode(PGCommentOnStmt); @@ -30743,67 +30954,67 @@ YYLTYPE yylloc; ;} break; - case 1401: + case 1402: #line 26 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 1402: + case 1403: #line 27 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); ;} break; - case 1403: + case 1404: #line 30 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.objtype) = PG_OBJECT_TABLE; ;} break; - case 1404: + case 1405: #line 31 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.objtype) = PG_OBJECT_SEQUENCE; ;} break; - case 1405: + case 1406: #line 32 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.objtype) = PG_OBJECT_FUNCTION; ;} break; - case 1406: + case 1407: #line 33 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.objtype) = PG_OBJECT_FUNCTION; ;} break; - case 1407: + case 1408: #line 34 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.objtype) = PG_OBJECT_TABLE_MACRO; ;} break; - case 1408: + case 1409: #line 35 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.objtype) = PG_OBJECT_VIEW; ;} break; - case 1409: + case 1410: #line 36 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.objtype) = PG_OBJECT_DATABASE; ;} break; - case 1410: + case 1411: #line 37 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.objtype) = PG_OBJECT_INDEX; ;} break; - case 1411: + case 1412: #line 38 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.objtype) = PG_OBJECT_SCHEMA; ;} break; - case 1412: + case 1413: #line 39 "third_party/libpg_query/grammar/statements/comment_on.y" { (yyval.objtype) = PG_OBJECT_TYPE; ;} break; - case 1413: + case 1414: #line 8 "third_party/libpg_query/grammar/statements/export.y" { PGExportStmt *n = makeNode(PGExportStmt); @@ -30817,7 +31028,7 @@ YYLTYPE yylloc; ;} break; - case 1414: + case 1415: #line 20 "third_party/libpg_query/grammar/statements/export.y" { PGExportStmt *n = makeNode(PGExportStmt); @@ -30831,7 +31042,7 @@ YYLTYPE yylloc; ;} break; - case 1415: + case 1416: #line 34 "third_party/libpg_query/grammar/statements/export.y" { PGImportStmt *n = makeNode(PGImportStmt); @@ -30840,7 +31051,7 @@ YYLTYPE yylloc; ;} break; - case 1416: + case 1417: #line 10 "third_party/libpg_query/grammar/statements/explain.y" { PGExplainStmt *n = makeNode(PGExplainStmt); @@ -30850,7 +31061,7 @@ YYLTYPE yylloc; ;} break; - case 1417: + case 1418: #line 17 "third_party/libpg_query/grammar/statements/explain.y" { PGExplainStmt *n = makeNode(PGExplainStmt); @@ -30863,7 +31074,7 @@ YYLTYPE yylloc; ;} break; - case 1418: + case 1419: #line 27 "third_party/libpg_query/grammar/statements/explain.y" { PGExplainStmt *n = makeNode(PGExplainStmt); @@ -30873,7 +31084,7 @@ YYLTYPE yylloc; ;} break; - case 1419: + case 1420: #line 34 "third_party/libpg_query/grammar/statements/explain.y" { PGExplainStmt *n = makeNode(PGExplainStmt); @@ -30883,118 +31094,118 @@ YYLTYPE yylloc; ;} break; - case 1420: + case 1421: #line 44 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.boolean) = true; ;} break; - case 1421: + case 1422: #line 45 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.boolean) = false; ;} break; - case 1422: + case 1423: #line 50 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} break; - case 1423: + case 1424: #line 51 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].value); ;} break; - case 1424: + case 1425: #line 52 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.node) = NULL; ;} break; - case 1456: + case 1457: #line 91 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1457: + case 1458: #line 92 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1458: + case 1459: #line 93 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1459: + case 1460: #line 98 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1460: + case 1461: #line 99 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1461: + case 1462: #line 105 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 1462: + case 1463: #line 109 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 1463: + case 1464: #line 116 "third_party/libpg_query/grammar/statements/explain.y" {;} break; - case 1464: + case 1465: #line 117 "third_party/libpg_query/grammar/statements/explain.y" {;} break; - case 1465: + case 1466: #line 122 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.str) = (char*) "true"; ;} break; - case 1466: + case 1467: #line 123 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.str) = (char*) "false"; ;} break; - case 1467: + case 1468: #line 124 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.str) = (char*) "on"; ;} break; - case 1468: + case 1469: #line 130 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1469: + case 1470: #line 136 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1470: + case 1471: #line 143 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1471: + case 1472: #line 144 "third_party/libpg_query/grammar/statements/explain.y" { (yyval.str) = (char*) "analyze"; ;} break; - case 1472: + case 1473: #line 11 "third_party/libpg_query/grammar/statements/variable_set.y" { PGVariableSetStmt *n = (yyvsp[(2) - (2)].vsetstmt); @@ -31003,7 +31214,7 @@ YYLTYPE yylloc; ;} break; - case 1473: + case 1474: #line 17 "third_party/libpg_query/grammar/statements/variable_set.y" { PGVariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); @@ -31012,7 +31223,7 @@ YYLTYPE yylloc; ;} break; - case 1474: + case 1475: #line 23 "third_party/libpg_query/grammar/statements/variable_set.y" { PGVariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); @@ -31021,7 +31232,7 @@ YYLTYPE yylloc; ;} break; - case 1475: + case 1476: #line 29 "third_party/libpg_query/grammar/statements/variable_set.y" { PGVariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); @@ -31030,7 +31241,7 @@ YYLTYPE yylloc; ;} break; - case 1476: + case 1477: #line 35 "third_party/libpg_query/grammar/statements/variable_set.y" { PGVariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); @@ -31039,12 +31250,12 @@ YYLTYPE yylloc; ;} break; - case 1477: + case 1478: #line 44 "third_party/libpg_query/grammar/statements/variable_set.y" {(yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt);;} break; - case 1478: + case 1479: #line 46 "third_party/libpg_query/grammar/statements/variable_set.y" { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); @@ -31054,7 +31265,7 @@ YYLTYPE yylloc; ;} break; - case 1479: + case 1480: #line 54 "third_party/libpg_query/grammar/statements/variable_set.y" { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); @@ -31068,7 +31279,7 @@ YYLTYPE yylloc; ;} break; - case 1480: + case 1481: #line 65 "third_party/libpg_query/grammar/statements/variable_set.y" { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); @@ -31079,7 +31290,7 @@ YYLTYPE yylloc; ;} break; - case 1481: + case 1482: #line 77 "third_party/libpg_query/grammar/statements/variable_set.y" { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); @@ -31090,7 +31301,7 @@ YYLTYPE yylloc; ;} break; - case 1482: + case 1483: #line 85 "third_party/libpg_query/grammar/statements/variable_set.y" { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); @@ -31101,26 +31312,26 @@ YYLTYPE yylloc; ;} break; - case 1483: + case 1484: #line 96 "third_party/libpg_query/grammar/statements/variable_set.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1484: + case 1485: #line 102 "third_party/libpg_query/grammar/statements/variable_set.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 1485: + case 1486: #line 106 "third_party/libpg_query/grammar/statements/variable_set.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 1486: + case 1487: #line 110 "third_party/libpg_query/grammar/statements/variable_set.y" { PGTypeName *t = (yyvsp[(1) - (3)].typnam); @@ -31138,7 +31349,7 @@ YYLTYPE yylloc; ;} break; - case 1487: + case 1488: #line 125 "third_party/libpg_query/grammar/statements/variable_set.y" { PGTypeName *t = (yyvsp[(1) - (5)].typnam); @@ -31148,32 +31359,32 @@ YYLTYPE yylloc; ;} break; - case 1488: + case 1489: #line 131 "third_party/libpg_query/grammar/statements/variable_set.y" { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); ;} break; - case 1489: + case 1490: #line 132 "third_party/libpg_query/grammar/statements/variable_set.y" { (yyval.node) = NULL; ;} break; - case 1490: + case 1491: #line 133 "third_party/libpg_query/grammar/statements/variable_set.y" { (yyval.node) = NULL; ;} break; - case 1491: + case 1492: #line 137 "third_party/libpg_query/grammar/statements/variable_set.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1492: + case 1493: #line 138 "third_party/libpg_query/grammar/statements/variable_set.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 1493: + case 1494: #line 8 "third_party/libpg_query/grammar/statements/load.y" { PGLoadStmt *n = makeNode(PGLoadStmt); @@ -31186,7 +31397,7 @@ YYLTYPE yylloc; ;} break; - case 1494: + case 1495: #line 17 "third_party/libpg_query/grammar/statements/load.y" { PGLoadStmt *n = makeNode(PGLoadStmt); @@ -31199,7 +31410,7 @@ YYLTYPE yylloc; ;} break; - case 1495: + case 1496: #line 26 "third_party/libpg_query/grammar/statements/load.y" { PGLoadStmt *n = makeNode(PGLoadStmt); @@ -31212,7 +31423,7 @@ YYLTYPE yylloc; ;} break; - case 1496: + case 1497: #line 35 "third_party/libpg_query/grammar/statements/load.y" { PGLoadStmt *n = makeNode(PGLoadStmt); @@ -31225,42 +31436,42 @@ YYLTYPE yylloc; ;} break; - case 1497: + case 1498: #line 46 "third_party/libpg_query/grammar/statements/load.y" { (yyval.loadinstalltype) = PG_LOAD_TYPE_INSTALL; ;} break; - case 1498: + case 1499: #line 47 "third_party/libpg_query/grammar/statements/load.y" { (yyval.loadinstalltype) = PG_LOAD_TYPE_FORCE_INSTALL; ;} break; - case 1499: + case 1500: #line 49 "third_party/libpg_query/grammar/statements/load.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1500: + case 1501: #line 50 "third_party/libpg_query/grammar/statements/load.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1501: + case 1502: #line 53 "third_party/libpg_query/grammar/statements/load.y" { (yyval.str) = NULL; ;} break; - case 1502: + case 1503: #line 54 "third_party/libpg_query/grammar/statements/load.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 1503: + case 1504: #line 55 "third_party/libpg_query/grammar/statements/load.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 1504: + case 1505: #line 9 "third_party/libpg_query/grammar/statements/vacuum.y" { PGVacuumStmt *n = makeNode(PGVacuumStmt); @@ -31277,7 +31488,7 @@ YYLTYPE yylloc; ;} break; - case 1505: + case 1506: #line 23 "third_party/libpg_query/grammar/statements/vacuum.y" { PGVacuumStmt *n = makeNode(PGVacuumStmt); @@ -31294,7 +31505,7 @@ YYLTYPE yylloc; ;} break; - case 1506: + case 1507: #line 37 "third_party/libpg_query/grammar/statements/vacuum.y" { PGVacuumStmt *n = (PGVacuumStmt *) (yyvsp[(5) - (5)].node); @@ -31309,7 +31520,7 @@ YYLTYPE yylloc; ;} break; - case 1507: + case 1508: #line 49 "third_party/libpg_query/grammar/statements/vacuum.y" { PGVacuumStmt *n = makeNode(PGVacuumStmt); @@ -31320,7 +31531,7 @@ YYLTYPE yylloc; ;} break; - case 1508: + case 1509: #line 57 "third_party/libpg_query/grammar/statements/vacuum.y" { PGVacuumStmt *n = makeNode(PGVacuumStmt); @@ -31333,27 +31544,27 @@ YYLTYPE yylloc; ;} break; - case 1509: + case 1510: #line 70 "third_party/libpg_query/grammar/statements/vacuum.y" { (yyval.ival) = PG_VACOPT_ANALYZE; ;} break; - case 1510: + case 1511: #line 71 "third_party/libpg_query/grammar/statements/vacuum.y" { (yyval.ival) = PG_VACOPT_VERBOSE; ;} break; - case 1511: + case 1512: #line 72 "third_party/libpg_query/grammar/statements/vacuum.y" { (yyval.ival) = PG_VACOPT_FREEZE; ;} break; - case 1512: + case 1513: #line 73 "third_party/libpg_query/grammar/statements/vacuum.y" { (yyval.ival) = PG_VACOPT_FULL; ;} break; - case 1513: + case 1514: #line 75 "third_party/libpg_query/grammar/statements/vacuum.y" { if (strcmp((yyvsp[(1) - (1)].str), "disable_page_skipping") == 0) @@ -31366,37 +31577,37 @@ YYLTYPE yylloc; ;} break; - case 1514: + case 1515: #line 87 "third_party/libpg_query/grammar/statements/vacuum.y" { (yyval.boolean) = true; ;} break; - case 1515: + case 1516: #line 88 "third_party/libpg_query/grammar/statements/vacuum.y" { (yyval.boolean) = false; ;} break; - case 1516: + case 1517: #line 93 "third_party/libpg_query/grammar/statements/vacuum.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; - case 1517: + case 1518: #line 94 "third_party/libpg_query/grammar/statements/vacuum.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} break; - case 1518: + case 1519: #line 98 "third_party/libpg_query/grammar/statements/vacuum.y" { (yyval.boolean) = true; ;} break; - case 1519: + case 1520: #line 99 "third_party/libpg_query/grammar/statements/vacuum.y" { (yyval.boolean) = false; ;} break; - case 1520: + case 1521: #line 9 "third_party/libpg_query/grammar/statements/delete.y" { PGDeleteStmt *n = makeNode(PGDeleteStmt); @@ -31409,7 +31620,7 @@ YYLTYPE yylloc; ;} break; - case 1521: + case 1522: #line 19 "third_party/libpg_query/grammar/statements/delete.y" { PGDeleteStmt *n = makeNode(PGDeleteStmt); @@ -31422,14 +31633,14 @@ YYLTYPE yylloc; ;} break; - case 1522: + case 1523: #line 32 "third_party/libpg_query/grammar/statements/delete.y" { (yyval.range) = (yyvsp[(1) - (1)].range); ;} break; - case 1523: + case 1524: #line 36 "third_party/libpg_query/grammar/statements/delete.y" { PGAlias *alias = makeNode(PGAlias); @@ -31439,7 +31650,7 @@ YYLTYPE yylloc; ;} break; - case 1524: + case 1525: #line 43 "third_party/libpg_query/grammar/statements/delete.y" { PGAlias *alias = makeNode(PGAlias); @@ -31449,27 +31660,27 @@ YYLTYPE yylloc; ;} break; - case 1525: + case 1526: #line 53 "third_party/libpg_query/grammar/statements/delete.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 1526: + case 1527: #line 54 "third_party/libpg_query/grammar/statements/delete.y" { (yyval.node) = NULL; ;} break; - case 1527: + case 1528: #line 60 "third_party/libpg_query/grammar/statements/delete.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 1528: + case 1529: #line 61 "third_party/libpg_query/grammar/statements/delete.y" { (yyval.list) = NIL; ;} break; - case 1529: + case 1530: #line 10 "third_party/libpg_query/grammar/statements/analyze.y" { PGVacuumStmt *n = makeNode(PGVacuumStmt); @@ -31482,7 +31693,7 @@ YYLTYPE yylloc; ;} break; - case 1530: + case 1531: #line 20 "third_party/libpg_query/grammar/statements/analyze.y" { PGVacuumStmt *n = makeNode(PGVacuumStmt); @@ -31495,7 +31706,7 @@ YYLTYPE yylloc; ;} break; - case 1531: + case 1532: #line 8 "third_party/libpg_query/grammar/statements/attach.y" { PGAttachStmt *n = makeNode(PGAttachStmt); @@ -31507,7 +31718,7 @@ YYLTYPE yylloc; ;} break; - case 1532: + case 1533: #line 17 "third_party/libpg_query/grammar/statements/attach.y" { PGAttachStmt *n = makeNode(PGAttachStmt); @@ -31519,7 +31730,7 @@ YYLTYPE yylloc; ;} break; - case 1533: + case 1534: #line 26 "third_party/libpg_query/grammar/statements/attach.y" { PGAttachStmt *n = makeNode(PGAttachStmt); @@ -31531,7 +31742,7 @@ YYLTYPE yylloc; ;} break; - case 1534: + case 1535: #line 38 "third_party/libpg_query/grammar/statements/attach.y" { PGDetachStmt *n = makeNode(PGDetachStmt); @@ -31541,7 +31752,7 @@ YYLTYPE yylloc; ;} break; - case 1535: + case 1536: #line 45 "third_party/libpg_query/grammar/statements/attach.y" { PGDetachStmt *n = makeNode(PGDetachStmt); @@ -31551,7 +31762,7 @@ YYLTYPE yylloc; ;} break; - case 1536: + case 1537: #line 52 "third_party/libpg_query/grammar/statements/attach.y" { PGDetachStmt *n = makeNode(PGDetachStmt); @@ -31561,27 +31772,27 @@ YYLTYPE yylloc; ;} break; - case 1537: + case 1538: #line 60 "third_party/libpg_query/grammar/statements/attach.y" {;} break; - case 1538: + case 1539: #line 61 "third_party/libpg_query/grammar/statements/attach.y" {;} break; - case 1539: + case 1540: #line 65 "third_party/libpg_query/grammar/statements/attach.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 1540: + case 1541: #line 66 "third_party/libpg_query/grammar/statements/attach.y" { (yyval.str) = NULL; ;} break; - case 1541: + case 1542: #line 3 "third_party/libpg_query/grammar/statements/variable_reset.y" { (yyvsp[(2) - (2)].vsetstmt)->scope = VAR_SET_SCOPE_DEFAULT; @@ -31589,7 +31800,7 @@ YYLTYPE yylloc; ;} break; - case 1542: + case 1543: #line 8 "third_party/libpg_query/grammar/statements/variable_reset.y" { (yyvsp[(3) - (3)].vsetstmt)->scope = VAR_SET_SCOPE_LOCAL; @@ -31597,7 +31808,7 @@ YYLTYPE yylloc; ;} break; - case 1543: + case 1544: #line 13 "third_party/libpg_query/grammar/statements/variable_reset.y" { (yyvsp[(3) - (3)].vsetstmt)->scope = VAR_SET_SCOPE_SESSION; @@ -31605,7 +31816,7 @@ YYLTYPE yylloc; ;} break; - case 1544: + case 1545: #line 18 "third_party/libpg_query/grammar/statements/variable_reset.y" { (yyvsp[(3) - (3)].vsetstmt)->scope = VAR_SET_SCOPE_GLOBAL; @@ -31613,7 +31824,7 @@ YYLTYPE yylloc; ;} break; - case 1545: + case 1546: #line 23 "third_party/libpg_query/grammar/statements/variable_reset.y" { (yyvsp[(3) - (3)].vsetstmt)->scope = VAR_SET_SCOPE_VARIABLE; @@ -31621,7 +31832,7 @@ YYLTYPE yylloc; ;} break; - case 1546: + case 1547: #line 32 "third_party/libpg_query/grammar/statements/variable_reset.y" { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); @@ -31631,7 +31842,7 @@ YYLTYPE yylloc; ;} break; - case 1547: + case 1548: #line 39 "third_party/libpg_query/grammar/statements/variable_reset.y" { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); @@ -31640,12 +31851,12 @@ YYLTYPE yylloc; ;} break; - case 1548: + case 1549: #line 48 "third_party/libpg_query/grammar/statements/variable_reset.y" { (yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt); ;} break; - case 1549: + case 1550: #line 50 "third_party/libpg_query/grammar/statements/variable_reset.y" { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); @@ -31655,7 +31866,7 @@ YYLTYPE yylloc; ;} break; - case 1550: + case 1551: #line 57 "third_party/libpg_query/grammar/statements/variable_reset.y" { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); @@ -31665,7 +31876,7 @@ YYLTYPE yylloc; ;} break; - case 1551: + case 1552: #line 3 "third_party/libpg_query/grammar/statements/variable_show.y" { PGVariableShowSelectStmt *n = makeNode(PGVariableShowSelectStmt); @@ -31676,7 +31887,7 @@ YYLTYPE yylloc; ;} break; - case 1552: + case 1553: #line 10 "third_party/libpg_query/grammar/statements/variable_show.y" { PGVariableShowSelectStmt *n = makeNode(PGVariableShowSelectStmt); @@ -31687,7 +31898,7 @@ YYLTYPE yylloc; ;} break; - case 1553: + case 1554: #line 18 "third_party/libpg_query/grammar/statements/variable_show.y" { PGVariableShowStmt *n = makeNode(PGVariableShowStmt); @@ -31697,7 +31908,7 @@ YYLTYPE yylloc; ;} break; - case 1554: + case 1555: #line 25 "third_party/libpg_query/grammar/statements/variable_show.y" { PGVariableShowStmt *n = makeNode(PGVariableShowStmt); @@ -31707,7 +31918,7 @@ YYLTYPE yylloc; ;} break; - case 1555: + case 1556: #line 32 "third_party/libpg_query/grammar/statements/variable_show.y" { PGVariableShowStmt *n = makeNode(PGVariableShowStmt); @@ -31717,7 +31928,7 @@ YYLTYPE yylloc; ;} break; - case 1556: + case 1557: #line 39 "third_party/libpg_query/grammar/statements/variable_show.y" { PGVariableShowStmt *n = makeNode(PGVariableShowStmt); @@ -31727,7 +31938,7 @@ YYLTYPE yylloc; ;} break; - case 1557: + case 1558: #line 46 "third_party/libpg_query/grammar/statements/variable_show.y" { PGVariableShowStmt *n = makeNode(PGVariableShowStmt); @@ -31737,7 +31948,7 @@ YYLTYPE yylloc; ;} break; - case 1558: + case 1559: #line 53 "third_party/libpg_query/grammar/statements/variable_show.y" { PGVariableShowStmt *n = makeNode(PGVariableShowStmt); @@ -31747,17 +31958,17 @@ YYLTYPE yylloc; ;} break; - case 1565: + case 1566: #line 67 "third_party/libpg_query/grammar/statements/variable_show.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1566: + case 1567: #line 69 "third_party/libpg_query/grammar/statements/variable_show.y" { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); ;} break; - case 1567: + case 1568: #line 7 "third_party/libpg_query/grammar/statements/call.y" { PGCallStmt *n = makeNode(PGCallStmt); @@ -31766,7 +31977,7 @@ YYLTYPE yylloc; ;} break; - case 1568: + case 1569: #line 10 "third_party/libpg_query/grammar/statements/view.y" { PGViewStmt *n = makeNode(PGViewStmt); @@ -31781,7 +31992,7 @@ YYLTYPE yylloc; ;} break; - case 1569: + case 1570: #line 23 "third_party/libpg_query/grammar/statements/view.y" { PGViewStmt *n = makeNode(PGViewStmt); @@ -31796,7 +32007,7 @@ YYLTYPE yylloc; ;} break; - case 1570: + case 1571: #line 36 "third_party/libpg_query/grammar/statements/view.y" { PGViewStmt *n = makeNode(PGViewStmt); @@ -31811,7 +32022,7 @@ YYLTYPE yylloc; ;} break; - case 1571: + case 1572: #line 49 "third_party/libpg_query/grammar/statements/view.y" { PGViewStmt *n = makeNode(PGViewStmt); @@ -31831,7 +32042,7 @@ YYLTYPE yylloc; ;} break; - case 1572: + case 1573: #line 67 "third_party/libpg_query/grammar/statements/view.y" { PGViewStmt *n = makeNode(PGViewStmt); @@ -31851,27 +32062,27 @@ YYLTYPE yylloc; ;} break; - case 1573: + case 1574: #line 87 "third_party/libpg_query/grammar/statements/view.y" { (yyval.viewcheckoption) = CASCADED_CHECK_OPTION; ;} break; - case 1574: + case 1575: #line 88 "third_party/libpg_query/grammar/statements/view.y" { (yyval.viewcheckoption) = CASCADED_CHECK_OPTION; ;} break; - case 1575: + case 1576: #line 89 "third_party/libpg_query/grammar/statements/view.y" { (yyval.viewcheckoption) = PG_LOCAL_CHECK_OPTION; ;} break; - case 1576: + case 1577: #line 90 "third_party/libpg_query/grammar/statements/view.y" { (yyval.viewcheckoption) = PG_NO_CHECK_OPTION; ;} break; - case 1577: + case 1578: #line 12 "third_party/libpg_query/grammar/statements/create_as.y" { PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); @@ -31887,7 +32098,7 @@ YYLTYPE yylloc; ;} break; - case 1578: + case 1579: #line 25 "third_party/libpg_query/grammar/statements/create_as.y" { PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); @@ -31903,7 +32114,7 @@ YYLTYPE yylloc; ;} break; - case 1579: + case 1580: #line 38 "third_party/libpg_query/grammar/statements/create_as.y" { PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); @@ -31919,22 +32130,22 @@ YYLTYPE yylloc; ;} break; - case 1580: + case 1581: #line 54 "third_party/libpg_query/grammar/statements/create_as.y" { (yyval.boolean) = true; ;} break; - case 1581: + case 1582: #line 55 "third_party/libpg_query/grammar/statements/create_as.y" { (yyval.boolean) = false; ;} break; - case 1582: + case 1583: #line 56 "third_party/libpg_query/grammar/statements/create_as.y" { (yyval.boolean) = true; ;} break; - case 1583: + case 1584: #line 62 "third_party/libpg_query/grammar/statements/create_as.y" { (yyval.into) = makeNode(PGIntoClause); @@ -31949,7 +32160,7 @@ YYLTYPE yylloc; /* Line 1267 of yacc.c. */ -#line 31953 "third_party/libpg_query/grammar/grammar_out.cpp" +#line 32164 "third_party/libpg_query/grammar/grammar_out.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); diff --git a/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp b/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp index 378637436..ff52a80dc 100644 --- a/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp +++ b/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp @@ -615,8 +615,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 84 -#define YY_END_OF_BUFFER 85 +#define YY_NUM_RULES 85 +#define YY_END_OF_BUFFER 86 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -628,27 +628,27 @@ static const flex_int16_t yy_accept[309] = { 0, 0, 0, 12, 12, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 55, 55, - 0, 0, 28, 28, 0, 0, 85, 83, 1, 1, - 73, 49, 83, 72, 73, 19, 72, 72, 72, 72, - 72, 76, 72, 72, 72, 72, 83, 82, 82, 82, - 82, 82, 82, 12, 9, 5, 5, 6, 6, 58, + 0, 0, 28, 28, 0, 0, 86, 84, 1, 1, + 74, 49, 84, 73, 74, 19, 73, 73, 73, 73, + 73, 77, 64, 73, 73, 73, 84, 83, 83, 83, + 83, 83, 83, 12, 9, 5, 5, 6, 6, 58, 51, 11, 16, 32, 32, 22, 42, 31, 22, 46, 46, 48, 52, 54, 53, 53, 54, 54, 24, 27, - 26, 26, 27, 27, 35, 36, 35, 1, 73, 71, - 43, 74, 44, 65, 1, 63, 61, 77, 2, 66, + 26, 26, 27, 27, 35, 36, 35, 1, 74, 72, + 43, 75, 44, 66, 1, 63, 61, 78, 2, 67, - 77, 76, 80, 0, 60, 62, 68, 70, 67, 69, - 75, 82, 8, 20, 18, 59, 15, 12, 9, 9, + 78, 77, 81, 0, 60, 62, 69, 71, 68, 70, + 76, 83, 8, 20, 18, 59, 15, 12, 9, 9, 10, 5, 7, 4, 3, 58, 57, 11, 16, 16, 17, 32, 22, 22, 30, 23, 38, 39, 37, 37, 38, 31, 46, 45, 47, 53, 53, 55, 24, 24, - 25, 26, 26, 28, 37, 37, 74, 0, 44, 1, - 1, 64, 77, 0, 2, 78, 77, 81, 79, 76, - 75, 0, 50, 21, 9, 14, 10, 9, 3, 16, + 25, 26, 26, 28, 37, 37, 75, 0, 44, 1, + 1, 65, 78, 0, 2, 79, 78, 82, 80, 77, + 76, 0, 50, 21, 9, 14, 10, 9, 3, 16, 13, 17, 16, 22, 41, 23, 22, 39, 37, 37, 40, 47, 53, 55, 24, 25, 24, 26, 28, 37, - 37, 77, 0, 79, 0, 9, 9, 9, 9, 16, + 37, 78, 0, 80, 0, 9, 9, 9, 9, 16, 16, 16, 16, 22, 22, 22, 22, 39, 37, 37, 40, 55, 24, 24, 24, 24, 28, 37, 37, 9, 9, 9, 9, 9, 16, 16, 16, 16, 16, 22, @@ -1593,7 +1593,7 @@ YY_DECL } { -#line 404 "third_party/libpg_query/scan.l" +#line 405 "third_party/libpg_query/scan.l" #line 1605 "third_party/libpg_query/src_backend_parser_scan.cpp" @@ -1652,14 +1652,14 @@ YY_DECL case 1: /* rule 1 can match eol */ YY_RULE_SETUP -#line 406 "third_party/libpg_query/scan.l" +#line 407 "third_party/libpg_query/scan.l" { /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP -#line 410 "third_party/libpg_query/scan.l" +#line 411 "third_party/libpg_query/scan.l" { /* Set location in case of syntax error in comment */ SET_YYLLOC(); @@ -1671,7 +1671,7 @@ YY_RULE_SETUP YY_BREAK case 3: YY_RULE_SETUP -#line 419 "third_party/libpg_query/scan.l" +#line 420 "third_party/libpg_query/scan.l" { (yyextra->xcdepth)++; /* Put back any characters past slash-star; see above */ @@ -1680,7 +1680,7 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 425 "third_party/libpg_query/scan.l" +#line 426 "third_party/libpg_query/scan.l" { if (yyextra->xcdepth <= 0) BEGIN(INITIAL); @@ -1691,32 +1691,32 @@ YY_RULE_SETUP case 5: /* rule 5 can match eol */ YY_RULE_SETUP -#line 432 "third_party/libpg_query/scan.l" +#line 433 "third_party/libpg_query/scan.l" { /* ignore */ } YY_BREAK case 6: YY_RULE_SETUP -#line 436 "third_party/libpg_query/scan.l" +#line 437 "third_party/libpg_query/scan.l" { /* ignore */ } YY_BREAK case 7: YY_RULE_SETUP -#line 440 "third_party/libpg_query/scan.l" +#line 441 "third_party/libpg_query/scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xc): -#line 444 "third_party/libpg_query/scan.l" +#line 445 "third_party/libpg_query/scan.l" { yyerror("unterminated /* comment"); } YY_BREAK case 8: YY_RULE_SETUP -#line 446 "third_party/libpg_query/scan.l" +#line 447 "third_party/libpg_query/scan.l" { /* Binary bit type. * At some point we should simply pass the string @@ -1732,11 +1732,11 @@ YY_RULE_SETUP YY_BREAK case 9: /* rule 9 can match eol */ -#line 459 "third_party/libpg_query/scan.l" +#line 460 "third_party/libpg_query/scan.l" case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 459 "third_party/libpg_query/scan.l" +#line 460 "third_party/libpg_query/scan.l" { yyless(1); BEGIN(INITIAL); @@ -1746,33 +1746,33 @@ YY_RULE_SETUP YY_BREAK case 11: /* rule 11 can match eol */ -#line 466 "third_party/libpg_query/scan.l" +#line 467 "third_party/libpg_query/scan.l" case 12: /* rule 12 can match eol */ YY_RULE_SETUP -#line 466 "third_party/libpg_query/scan.l" +#line 467 "third_party/libpg_query/scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 13: /* rule 13 can match eol */ -#line 470 "third_party/libpg_query/scan.l" +#line 471 "third_party/libpg_query/scan.l" case 14: /* rule 14 can match eol */ YY_RULE_SETUP -#line 470 "third_party/libpg_query/scan.l" +#line 471 "third_party/libpg_query/scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xb): -#line 473 "third_party/libpg_query/scan.l" +#line 474 "third_party/libpg_query/scan.l" { yyerror("unterminated bit string literal"); } YY_BREAK case 15: YY_RULE_SETUP -#line 475 "third_party/libpg_query/scan.l" +#line 476 "third_party/libpg_query/scan.l" { /* Hexadecimal bit type. * At some point we should simply pass the string @@ -1788,11 +1788,11 @@ YY_RULE_SETUP YY_BREAK case 16: /* rule 16 can match eol */ -#line 488 "third_party/libpg_query/scan.l" +#line 489 "third_party/libpg_query/scan.l" case 17: /* rule 17 can match eol */ YY_RULE_SETUP -#line 488 "third_party/libpg_query/scan.l" +#line 489 "third_party/libpg_query/scan.l" { yyless(1); BEGIN(INITIAL); @@ -1801,12 +1801,12 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(xh): -#line 494 "third_party/libpg_query/scan.l" +#line 495 "third_party/libpg_query/scan.l" { yyerror("unterminated hexadecimal string literal"); } YY_BREAK case 18: YY_RULE_SETUP -#line 496 "third_party/libpg_query/scan.l" +#line 497 "third_party/libpg_query/scan.l" { /* National character. * We will pass this along as a normal character string, @@ -1835,7 +1835,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 522 "third_party/libpg_query/scan.l" +#line 523 "third_party/libpg_query/scan.l" { yyextra->warn_on_first_escape = true; yyextra->saw_non_ascii = false; @@ -1849,7 +1849,7 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 532 "third_party/libpg_query/scan.l" +#line 533 "third_party/libpg_query/scan.l" { yyextra->warn_on_first_escape = false; yyextra->saw_non_ascii = false; @@ -1860,7 +1860,7 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 539 "third_party/libpg_query/scan.l" +#line 540 "third_party/libpg_query/scan.l" { SET_YYLLOC(); if (!yyextra->standard_conforming_strings) @@ -1875,11 +1875,11 @@ YY_RULE_SETUP YY_BREAK case 22: /* rule 22 can match eol */ -#line 551 "third_party/libpg_query/scan.l" +#line 552 "third_party/libpg_query/scan.l" case 23: /* rule 23 can match eol */ YY_RULE_SETUP -#line 551 "third_party/libpg_query/scan.l" +#line 552 "third_party/libpg_query/scan.l" { yyless(1); BEGIN(INITIAL); @@ -1897,11 +1897,11 @@ YY_RULE_SETUP YY_BREAK case 24: /* rule 24 can match eol */ -#line 566 "third_party/libpg_query/scan.l" +#line 567 "third_party/libpg_query/scan.l" case 25: /* rule 25 can match eol */ YY_RULE_SETUP -#line 566 "third_party/libpg_query/scan.l" +#line 567 "third_party/libpg_query/scan.l" { /* throw back all but the quote */ yyless(1); @@ -1912,20 +1912,20 @@ YY_RULE_SETUP case 26: /* rule 26 can match eol */ YY_RULE_SETUP -#line 572 "third_party/libpg_query/scan.l" +#line 573 "third_party/libpg_query/scan.l" { /* stay in xusend state over whitespace */ } YY_BREAK case YY_STATE_EOF(xusend): -#line 575 "third_party/libpg_query/scan.l" +#line 576 "third_party/libpg_query/scan.l" case 27: /* rule 27 can match eol */ -#line 577 "third_party/libpg_query/scan.l" +#line 578 "third_party/libpg_query/scan.l" case 28: /* rule 28 can match eol */ YY_RULE_SETUP -#line 577 "third_party/libpg_query/scan.l" +#line 578 "third_party/libpg_query/scan.l" { /* no UESCAPE after the quote, throw back everything */ yyless(0); @@ -1937,7 +1937,7 @@ YY_RULE_SETUP case 29: /* rule 29 can match eol */ YY_RULE_SETUP -#line 584 "third_party/libpg_query/scan.l" +#line 585 "third_party/libpg_query/scan.l" { /* found UESCAPE after the end quote */ BEGIN(INITIAL); @@ -1954,7 +1954,7 @@ YY_RULE_SETUP YY_BREAK case 30: YY_RULE_SETUP -#line 597 "third_party/libpg_query/scan.l" +#line 598 "third_party/libpg_query/scan.l" { addlitchar('\'', yyscanner); } @@ -1962,7 +1962,7 @@ YY_RULE_SETUP case 31: /* rule 31 can match eol */ YY_RULE_SETUP -#line 600 "third_party/libpg_query/scan.l" +#line 601 "third_party/libpg_query/scan.l" { addlit(yytext, yyleng, yyscanner); } @@ -1970,14 +1970,14 @@ YY_RULE_SETUP case 32: /* rule 32 can match eol */ YY_RULE_SETUP -#line 603 "third_party/libpg_query/scan.l" +#line 604 "third_party/libpg_query/scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 33: YY_RULE_SETUP -#line 606 "third_party/libpg_query/scan.l" +#line 607 "third_party/libpg_query/scan.l" { pg_wchar c = strtoul(yytext + 2, NULL, 16); @@ -1996,7 +1996,7 @@ YY_RULE_SETUP YY_BREAK case 34: YY_RULE_SETUP -#line 621 "third_party/libpg_query/scan.l" +#line 622 "third_party/libpg_query/scan.l" { pg_wchar c = strtoul(yytext + 2, NULL, 16); @@ -2012,22 +2012,22 @@ YY_RULE_SETUP YY_BREAK case 35: YY_RULE_SETUP -#line 633 "third_party/libpg_query/scan.l" +#line 634 "third_party/libpg_query/scan.l" { yyerror("invalid Unicode surrogate pair"); } YY_BREAK case 36: /* rule 36 can match eol */ YY_RULE_SETUP -#line 634 "third_party/libpg_query/scan.l" +#line 635 "third_party/libpg_query/scan.l" { yyerror("invalid Unicode surrogate pair"); } YY_BREAK case YY_STATE_EOF(xeu): -#line 635 "third_party/libpg_query/scan.l" +#line 636 "third_party/libpg_query/scan.l" { yyerror("invalid Unicode surrogate pair"); } YY_BREAK case 37: YY_RULE_SETUP -#line 636 "third_party/libpg_query/scan.l" +#line 637 "third_party/libpg_query/scan.l" { ereport(ERROR, (errcode(PG_ERRCODE_INVALID_ESCAPE_SEQUENCE), @@ -2039,7 +2039,7 @@ YY_RULE_SETUP case 38: /* rule 38 can match eol */ YY_RULE_SETUP -#line 643 "third_party/libpg_query/scan.l" +#line 644 "third_party/libpg_query/scan.l" { // if (yytext[1] == '\'') // { @@ -2059,7 +2059,7 @@ YY_RULE_SETUP YY_BREAK case 39: YY_RULE_SETUP -#line 659 "third_party/libpg_query/scan.l" +#line 660 "third_party/libpg_query/scan.l" { unsigned char c = strtoul(yytext + 1, NULL, 8); @@ -2071,7 +2071,7 @@ YY_RULE_SETUP YY_BREAK case 40: YY_RULE_SETUP -#line 667 "third_party/libpg_query/scan.l" +#line 668 "third_party/libpg_query/scan.l" { unsigned char c = strtoul(yytext + 2, NULL, 16); @@ -2084,14 +2084,14 @@ YY_RULE_SETUP case 41: /* rule 41 can match eol */ YY_RULE_SETUP -#line 675 "third_party/libpg_query/scan.l" +#line 676 "third_party/libpg_query/scan.l" { /* ignore */ } YY_BREAK case 42: YY_RULE_SETUP -#line 678 "third_party/libpg_query/scan.l" +#line 679 "third_party/libpg_query/scan.l" { /* This is only needed for \ just before EOF */ addlitchar(yytext[0], yyscanner); @@ -2100,12 +2100,12 @@ YY_RULE_SETUP case YY_STATE_EOF(xq): case YY_STATE_EOF(xe): case YY_STATE_EOF(xus): -#line 682 "third_party/libpg_query/scan.l" +#line 683 "third_party/libpg_query/scan.l" { yyerror("unterminated quoted string"); } YY_BREAK case 43: YY_RULE_SETUP -#line 684 "third_party/libpg_query/scan.l" +#line 685 "third_party/libpg_query/scan.l" { SET_YYLLOC(); yyextra->dolqstart = pstrdup(yytext); @@ -2115,7 +2115,7 @@ YY_RULE_SETUP YY_BREAK case 44: YY_RULE_SETUP -#line 690 "third_party/libpg_query/scan.l" +#line 691 "third_party/libpg_query/scan.l" { SET_YYLLOC(); /* throw back all but the initial "$" */ @@ -2126,7 +2126,7 @@ YY_RULE_SETUP YY_BREAK case 45: YY_RULE_SETUP -#line 697 "third_party/libpg_query/scan.l" +#line 698 "third_party/libpg_query/scan.l" { if (strcmp(yytext, yyextra->dolqstart) == 0) { @@ -2151,33 +2151,33 @@ YY_RULE_SETUP case 46: /* rule 46 can match eol */ YY_RULE_SETUP -#line 717 "third_party/libpg_query/scan.l" +#line 718 "third_party/libpg_query/scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 47: YY_RULE_SETUP -#line 720 "third_party/libpg_query/scan.l" +#line 721 "third_party/libpg_query/scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 48: YY_RULE_SETUP -#line 723 "third_party/libpg_query/scan.l" +#line 724 "third_party/libpg_query/scan.l" { /* This is only needed for $ inside the quoted text */ addlitchar(yytext[0], yyscanner); } YY_BREAK case YY_STATE_EOF(xdolq): -#line 727 "third_party/libpg_query/scan.l" +#line 728 "third_party/libpg_query/scan.l" { yyerror("unterminated dollar-quoted string"); } YY_BREAK case 49: YY_RULE_SETUP -#line 729 "third_party/libpg_query/scan.l" +#line 730 "third_party/libpg_query/scan.l" { SET_YYLLOC(); BEGIN(xd); @@ -2186,7 +2186,7 @@ YY_RULE_SETUP YY_BREAK case 50: YY_RULE_SETUP -#line 734 "third_party/libpg_query/scan.l" +#line 735 "third_party/libpg_query/scan.l" { SET_YYLLOC(); BEGIN(xui); @@ -2195,7 +2195,7 @@ YY_RULE_SETUP YY_BREAK case 51: YY_RULE_SETUP -#line 739 "third_party/libpg_query/scan.l" +#line 740 "third_party/libpg_query/scan.l" { char *ident; @@ -2209,7 +2209,7 @@ YY_RULE_SETUP YY_BREAK case 52: YY_RULE_SETUP -#line 749 "third_party/libpg_query/scan.l" +#line 750 "third_party/libpg_query/scan.l" { yyless(1); /* xuiend state looks for possible UESCAPE */ @@ -2219,20 +2219,20 @@ YY_RULE_SETUP case 53: /* rule 53 can match eol */ YY_RULE_SETUP -#line 754 "third_party/libpg_query/scan.l" +#line 755 "third_party/libpg_query/scan.l" { /* stay in xuiend state over whitespace */ } YY_BREAK case YY_STATE_EOF(xuiend): -#line 757 "third_party/libpg_query/scan.l" +#line 758 "third_party/libpg_query/scan.l" case 54: /* rule 54 can match eol */ -#line 759 "third_party/libpg_query/scan.l" +#line 760 "third_party/libpg_query/scan.l" case 55: /* rule 55 can match eol */ YY_RULE_SETUP -#line 759 "third_party/libpg_query/scan.l" +#line 760 "third_party/libpg_query/scan.l" { /* no UESCAPE after the quote, throw back everything */ char *ident; @@ -2250,7 +2250,7 @@ YY_RULE_SETUP case 56: /* rule 56 can match eol */ YY_RULE_SETUP -#line 772 "third_party/libpg_query/scan.l" +#line 773 "third_party/libpg_query/scan.l" { /* found UESCAPE after the end quote */ char *ident; @@ -2271,7 +2271,7 @@ YY_RULE_SETUP YY_BREAK case 57: YY_RULE_SETUP -#line 789 "third_party/libpg_query/scan.l" +#line 790 "third_party/libpg_query/scan.l" { addlitchar('"', yyscanner); } @@ -2279,19 +2279,19 @@ YY_RULE_SETUP case 58: /* rule 58 can match eol */ YY_RULE_SETUP -#line 792 "third_party/libpg_query/scan.l" +#line 793 "third_party/libpg_query/scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case YY_STATE_EOF(xd): case YY_STATE_EOF(xui): -#line 795 "third_party/libpg_query/scan.l" +#line 796 "third_party/libpg_query/scan.l" { yyerror("unterminated quoted identifier"); } YY_BREAK case 59: YY_RULE_SETUP -#line 797 "third_party/libpg_query/scan.l" +#line 798 "third_party/libpg_query/scan.l" { char *ident; @@ -2306,7 +2306,7 @@ YY_RULE_SETUP YY_BREAK case 60: YY_RULE_SETUP -#line 809 "third_party/libpg_query/scan.l" +#line 810 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return TYPECAST; @@ -2314,7 +2314,7 @@ YY_RULE_SETUP YY_BREAK case 61: YY_RULE_SETUP -#line 814 "third_party/libpg_query/scan.l" +#line 815 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return DOT_DOT; @@ -2322,7 +2322,7 @@ YY_RULE_SETUP YY_BREAK case 62: YY_RULE_SETUP -#line 819 "third_party/libpg_query/scan.l" +#line 820 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return COLON_EQUALS; @@ -2330,89 +2330,97 @@ YY_RULE_SETUP YY_BREAK case 63: YY_RULE_SETUP -#line 824 "third_party/libpg_query/scan.l" +#line 825 "third_party/libpg_query/scan.l" { SET_YYLLOC(); - return LAMBDA_ARROW; + return SINGLE_ARROW; } YY_BREAK case 64: YY_RULE_SETUP -#line 829 "third_party/libpg_query/scan.l" +#line 830 "third_party/libpg_query/scan.l" +{ + SET_YYLLOC(); + return SINGLE_COLON; + } + YY_BREAK +case 65: +YY_RULE_SETUP +#line 835 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return DOUBLE_ARROW; } YY_BREAK -case 65: +case 66: YY_RULE_SETUP -#line 834 "third_party/libpg_query/scan.l" +#line 840 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return POWER_OF; } YY_BREAK -case 66: +case 67: YY_RULE_SETUP -#line 839 "third_party/libpg_query/scan.l" +#line 845 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return INTEGER_DIVISION; } YY_BREAK -case 67: +case 68: YY_RULE_SETUP -#line 844 "third_party/libpg_query/scan.l" +#line 850 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return EQUALS_GREATER; } YY_BREAK -case 68: +case 69: YY_RULE_SETUP -#line 849 "third_party/libpg_query/scan.l" +#line 855 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return LESS_EQUALS; } YY_BREAK -case 69: +case 70: YY_RULE_SETUP -#line 854 "third_party/libpg_query/scan.l" +#line 860 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return GREATER_EQUALS; } YY_BREAK -case 70: +case 71: YY_RULE_SETUP -#line 859 "third_party/libpg_query/scan.l" +#line 865 "third_party/libpg_query/scan.l" { /* We accept both "<>" and "!=" as meaning NOT_EQUALS */ SET_YYLLOC(); return NOT_EQUALS; } YY_BREAK -case 71: +case 72: YY_RULE_SETUP -#line 865 "third_party/libpg_query/scan.l" +#line 871 "third_party/libpg_query/scan.l" { /* We accept both "<>" and "!=" as meaning NOT_EQUALS */ SET_YYLLOC(); return NOT_EQUALS; } YY_BREAK -case 72: +case 73: YY_RULE_SETUP -#line 871 "third_party/libpg_query/scan.l" +#line 877 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return yytext[0]; } YY_BREAK -case 73: +case 74: YY_RULE_SETUP -#line 876 "third_party/libpg_query/scan.l" +#line 882 "third_party/libpg_query/scan.l" { /* * Check for embedded slash-star or dash-dash; those @@ -2530,44 +2538,44 @@ YY_RULE_SETUP return Op; } YY_BREAK -case 74: +case 75: YY_RULE_SETUP -#line 993 "third_party/libpg_query/scan.l" +#line 999 "third_party/libpg_query/scan.l" { SET_YYLLOC(); yylval->ival = atol(yytext + 1); return PARAM; } YY_BREAK -case 75: +case 76: YY_RULE_SETUP -#line 999 "third_party/libpg_query/scan.l" +#line 1005 "third_party/libpg_query/scan.l" { SET_YYLLOC(); yylval->ival = atol(yytext + 1); return PARAM; } YY_BREAK -case 76: +case 77: YY_RULE_SETUP -#line 1005 "third_party/libpg_query/scan.l" +#line 1011 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return process_integer_literal(yytext, yylval); } YY_BREAK -case 77: +case 78: YY_RULE_SETUP -#line 1009 "third_party/libpg_query/scan.l" +#line 1015 "third_party/libpg_query/scan.l" { SET_YYLLOC(); yylval->str = pstrdup(yytext); return FCONST; } YY_BREAK -case 78: +case 79: YY_RULE_SETUP -#line 1014 "third_party/libpg_query/scan.l" +#line 1020 "third_party/libpg_query/scan.l" { /* throw back the .., and treat as integer */ yyless(yyleng - 2); @@ -2575,18 +2583,18 @@ YY_RULE_SETUP return process_integer_literal(yytext, yylval); } YY_BREAK -case 79: +case 80: YY_RULE_SETUP -#line 1020 "third_party/libpg_query/scan.l" +#line 1026 "third_party/libpg_query/scan.l" { SET_YYLLOC(); yylval->str = pstrdup(yytext); return FCONST; } YY_BREAK -case 80: +case 81: YY_RULE_SETUP -#line 1025 "third_party/libpg_query/scan.l" +#line 1031 "third_party/libpg_query/scan.l" { /* * throw back the [Ee], and treat as {decimal}. Note @@ -2600,9 +2608,9 @@ YY_RULE_SETUP return FCONST; } YY_BREAK -case 81: +case 82: YY_RULE_SETUP -#line 1037 "third_party/libpg_query/scan.l" +#line 1043 "third_party/libpg_query/scan.l" { /* throw back the [Ee][+-], and proceed as above */ yyless(yyleng - 2); @@ -2611,9 +2619,9 @@ YY_RULE_SETUP return FCONST; } YY_BREAK -case 82: +case 83: YY_RULE_SETUP -#line 1046 "third_party/libpg_query/scan.l" +#line 1052 "third_party/libpg_query/scan.l" { const PGScanKeyword *keyword; char *ident; @@ -2647,27 +2655,27 @@ YY_RULE_SETUP return IDENT; } YY_BREAK -case 83: +case 84: YY_RULE_SETUP -#line 1079 "third_party/libpg_query/scan.l" +#line 1085 "third_party/libpg_query/scan.l" { SET_YYLLOC(); return yytext[0]; } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 1084 "third_party/libpg_query/scan.l" +#line 1090 "third_party/libpg_query/scan.l" { SET_YYLLOC(); yyterminate(); } YY_BREAK -case 84: +case 85: YY_RULE_SETUP -#line 1089 "third_party/libpg_query/scan.l" +#line 1095 "third_party/libpg_query/scan.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2676 "third_party/libpg_query/src_backend_parser_scan.cpp" +#line 2684 "third_party/libpg_query/src_backend_parser_scan.cpp" case YY_END_OF_BUFFER: { @@ -3792,7 +3800,7 @@ static int yy_flex_strlen (const char * s , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 1089 "third_party/libpg_query/scan.l" +#line 1095 "third_party/libpg_query/scan.l" /* LCOV_EXCL_STOP */ diff --git a/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp b/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp index a03903779..f852b606d 100644 --- a/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +++ b/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp @@ -348,11 +348,13 @@ #include "extension/icu/third_party/icu/i18n/wintzimpl.cpp" -#include "extension/icu/third_party/icu/i18n/double-conversion-cached-powers.cpp" +#include "extension/icu/third_party/icu/i18n/double-conversion-double-to-string.cpp" #include "extension/icu/third_party/icu/i18n/double-conversion-fast-dtoa.cpp" -#include "extension/icu/third_party/icu/i18n/double-conversion-double-to-string.cpp" +#include "extension/icu/third_party/icu/i18n/double-conversion-cached-powers.cpp" + +#include "extension/icu/third_party/icu/i18n/double-conversion-strtod.cpp" #include "extension/icu/third_party/icu/i18n/double-conversion-bignum-dtoa.cpp" @@ -360,5 +362,3 @@ #include "extension/icu/third_party/icu/i18n/double-conversion-bignum.cpp" -#include "extension/icu/third_party/icu/i18n/double-conversion-strtod.cpp" - diff --git a/src/duckdb/ub_extension_json_json_functions.cpp b/src/duckdb/ub_extension_json_json_functions.cpp index 7a2a1af0f..b32b06e0e 100644 --- a/src/duckdb/ub_extension_json_json_functions.cpp +++ b/src/duckdb/ub_extension_json_json_functions.cpp @@ -4,6 +4,8 @@ #include "extension/json/json_functions/json_contains.cpp" +#include "extension/json/json_functions/json_create.cpp" + #include "extension/json/json_functions/json_exists.cpp" #include "extension/json/json_functions/json_extract.cpp" @@ -16,9 +18,9 @@ #include "extension/json/json_functions/json_structure.cpp" -#include "extension/json/json_functions/json_transform.cpp" +#include "extension/json/json_functions/json_table_in_out.cpp" -#include "extension/json/json_functions/json_create.cpp" +#include "extension/json/json_functions/json_transform.cpp" #include "extension/json/json_functions/json_type.cpp" diff --git a/src/duckdb/ub_src_storage_compression.cpp b/src/duckdb/ub_src_storage_compression.cpp index 491801cd7..db6188a86 100644 --- a/src/duckdb/ub_src_storage_compression.cpp +++ b/src/duckdb/ub_src_storage_compression.cpp @@ -24,5 +24,7 @@ #include "src/storage/compression/fsst.cpp" +#include "src/storage/compression/dict_fsst.cpp" + #include "src/storage/compression/empty_validity.cpp" diff --git a/src/duckdb/ub_src_storage_compression_dict_fsst.cpp b/src/duckdb/ub_src_storage_compression_dict_fsst.cpp new file mode 100644 index 000000000..22d3ee552 --- /dev/null +++ b/src/duckdb/ub_src_storage_compression_dict_fsst.cpp @@ -0,0 +1,6 @@ +#include "src/storage/compression/dict_fsst/analyze.cpp" + +#include "src/storage/compression/dict_fsst/compression.cpp" + +#include "src/storage/compression/dict_fsst/decompression.cpp" +