From e639e252e01827b05ce7489006156caab3bbc4db Mon Sep 17 00:00:00 2001 From: wangfenjin Date: Sat, 11 Sep 2021 21:52:14 +0800 Subject: [PATCH] upgrade to 0.2.9 Change-Id: Ic7e7e8c83ef1c73a88f0d699683f7bf3e0b322a7 --- .github/workflows/rust.yaml | 32 +- Cargo.toml | 6 +- libduckdb-sys/Cargo.toml | 2 +- libduckdb-sys/duckdb/duckdb.cpp | 44040 +++++++++++++++--------------- libduckdb-sys/duckdb/duckdb.hpp | 219 +- libduckdb-sys/upgrade.sh | 2 +- 6 files changed, 22407 insertions(+), 21894 deletions(-) diff --git a/.github/workflows/rust.yaml b/.github/workflows/rust.yaml index a1f55eed..daa220d7 100644 --- a/.github/workflows/rust.yaml +++ b/.github/workflows/rust.yaml @@ -36,28 +36,28 @@ jobs: components: 'rustfmt, clippy' - run: cargo fmt --all -- --check - # - name: Download DuckDB - # run: | - # wget https://github.com/duckdb/duckdb/releases/download/v0.2.8/libduckdb-linux-amd64.zip -O libduckdb.zip - # unzip libduckdb.zip -d libduckdb - # - run: cargo clippy --all-targets --workspace --features buildtime_bindgen --features modern-full -- -D warnings -A clippy::redundant-closure - - run: cargo clippy --all-targets --workspace --features bundled --features modern-full -- -D warnings -A clippy::redundant-closure + - name: Download DuckDB + run: | + wget https://github.com/duckdb/duckdb/releases/download/v0.2.8/libduckdb-linux-amd64.zip -O libduckdb.zip + unzip libduckdb.zip -d libduckdb + # - run: cargo clippy --all-targets --workspace --features bundled --features modern-full -- -D warnings -A clippy::redundant-closure + - run: cargo clippy --all-targets --workspace --features buildtime_bindgen --features modern-full -- -D warnings -A clippy::redundant-closure name: run cargo clippy - # env: - # DUCKDB_LIB_DIR: ${{ github.workspace }}/libduckdb - # DUCKDB_INCLUDE_DIR: ${{ github.workspace }}/libduckdb - # LD_LIBRARY_PATH: ${{ github.workspace }}/libduckdb + env: + DUCKDB_LIB_DIR: ${{ github.workspace }}/libduckdb + DUCKDB_INCLUDE_DIR: ${{ github.workspace }}/libduckdb + LD_LIBRARY_PATH: ${{ github.workspace }}/libduckdb - name: Run cargo-tarpaulin uses: actions-rs/tarpaulin@v0.1 with: # Intentionally omit time feature until we're on time 0.3, at which # point it should be added to `bundled-full`. - # args: '--features "buildtime_bindgen" --features "modern-full" --avoid-cfg-tarpaulin' # TODO restore to normal (https://github.com/xd009642/tarpaulin/issues/756#issuecomment-838769320) - args: '--features "bundled" --features "modern-full" --avoid-cfg-tarpaulin' # TODO restore to normal (https://github.com/xd009642/tarpaulin/issues/756#issuecomment-838769320) - # env: - # DUCKDB_LIB_DIR: ${{ github.workspace }}/libduckdb - # DUCKDB_INCLUDE_DIR: ${{ github.workspace }}/libduckdb - # LD_LIBRARY_PATH: ${{ github.workspace }}/libduckdb + args: '--features "buildtime_bindgen" --features "modern-full" --avoid-cfg-tarpaulin' # TODO restore to normal (https://github.com/xd009642/tarpaulin/issues/756#issuecomment-838769320) + # args: '--features "bundled" --features "modern-full" --avoid-cfg-tarpaulin' # TODO restore to normal (https://github.com/xd009642/tarpaulin/issues/756#issuecomment-838769320) + env: + DUCKDB_LIB_DIR: ${{ github.workspace }}/libduckdb + DUCKDB_INCLUDE_DIR: ${{ github.workspace }}/libduckdb + LD_LIBRARY_PATH: ${{ github.workspace }}/libduckdb - name: Upload to codecov.io uses: codecov/codecov-action@v1 diff --git a/Cargo.toml b/Cargo.toml index 9db78543..1f23e109 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "duckdb" -version = "0.2.4" +version = "0.2.9" authors = ["wangfenjin "] edition = "2018" description = "Ergonomic wrapper for DuckDB" @@ -44,7 +44,7 @@ fallible-streaming-iterator = "0.1" memchr = "2.3" uuid = { version = "0.8", optional = true } smallvec = "1.6.1" -cast = { version = "0.2", features = ["std", "x128"] } +cast = { version = "0.3", features = ["std", "x128"] } arrow = { version = "5.0", default-features = false, features = ["prettyprint"] } rust_decimal = "1.14" strum = { version = "0.21", features = ["derive"] } @@ -65,7 +65,7 @@ rand = "0.8.3" [dependencies.libduckdb-sys] path = "libduckdb-sys" -version = "0.2.4" +version = "0.2.9" [package.metadata.docs.rs] features = [] diff --git a/libduckdb-sys/Cargo.toml b/libduckdb-sys/Cargo.toml index 11e4ecbd..3c0ca279 100644 --- a/libduckdb-sys/Cargo.toml +++ b/libduckdb-sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libduckdb-sys" -version = "0.2.4" +version = "0.2.9" authors = ["wangfenjin "] edition = "2018" build = "build.rs" diff --git a/libduckdb-sys/duckdb/duckdb.cpp b/libduckdb-sys/duckdb/duckdb.cpp index e4a97092..3afd5a0c 100644 --- a/libduckdb-sys/duckdb/duckdb.cpp +++ b/libduckdb-sys/duckdb/duckdb.cpp @@ -712,6 +712,7 @@ class BoundConstraint { + namespace duckdb { class ColumnStatistics; @@ -741,7 +742,7 @@ class TableCatalogEntry : public StandardEntry { //! A list of constraints that are part of this table vector> bound_constraints; //! A map of column name to column index - unordered_map name_map; + case_insensitive_map_t name_map; public: unique_ptr AlterEntry(ClientContext &context, AlterInfo *info) override; @@ -754,9 +755,6 @@ class TableCatalogEntry : public StandardEntry { vector GetTypes(); string ToSQL() override; - //! Add lower case aliases to a name map (e.g. "Hello" -> "hello" is also acceptable) - static void AddLowerCaseAliases(unordered_map &name_map); - //! Serialize the meta information of the TableCatalogEntry a serializer virtual void Serialize(Serializer &serializer); //! Deserializes to a CreateTableInfo @@ -817,6 +815,7 @@ class TableFunctionCatalogEntry : public StandardEntry { + //===----------------------------------------------------------------------===// // DuckDB // @@ -1116,6 +1115,11 @@ class SimpleFunction; struct MacroBinding; +struct BoundColumnReferenceInfo { + string name; + idx_t query_location; +}; + struct BindResult { explicit BindResult(string error) : error(error) { } @@ -1144,7 +1148,10 @@ class ExpressionBinder { bool root_expression = true); //! Returns whether or not any columns have been bound by the expression binder - bool BoundColumns() { + bool HasBoundColumns() { + return !bound_columns.empty(); + } + const vector &GetBoundColumns() { return bound_columns; } @@ -1208,7 +1215,7 @@ class ExpressionBinder { ClientContext &context; ExpressionBinder *stored_binder; MacroBinding *macro_binding; - bool bound_columns = false; + vector bound_columns; }; } // namespace duckdb @@ -1252,7 +1259,7 @@ struct Binding { //! Column names of the subquery vector names; //! Name -> index for the names - unordered_map name_map; + case_insensitive_map_t name_map; public: bool TryGetBindingIndex(const string &column_name, column_t &column_index); @@ -1308,7 +1315,7 @@ struct UsingColumnSet { class BindContext { public: //! Keep track of recursive CTE references - unordered_map> cte_references; + case_insensitive_map_t> cte_references; public: //! Given a column name, find the matching table it belongs to. Throws an @@ -1354,7 +1361,9 @@ class BindContext { void AddCTEBinding(idx_t index, const string &alias, const vector &names, const vector &types); //! Add an implicit join condition (e.g. USING (x)) - void AddUsingBinding(const string &column_name, UsingColumnSet set); + void AddUsingBinding(const string &column_name, UsingColumnSet *set); + + void AddUsingBindingSet(unique_ptr set); //! Returns any using column set for the given column name, or nullptr if there is none. On conflict (multiple using //! column sets with the same name) throw an exception. @@ -1363,11 +1372,21 @@ class BindContext { UsingColumnSet *GetUsingBinding(const string &column_name, const string &binding_name); //! Erase a using binding from the set of using bindings void RemoveUsingBinding(const string &column_name, UsingColumnSet *set); - - unordered_map> GetCTEBindings() { + //! Finds the using bindings for a given column. Returns true if any exists, false otherwise. + bool FindUsingBinding(const string &column_name, unordered_set **using_columns); + //! Transfer a using binding from one bind context to this bind context + void TransferUsingBinding(BindContext ¤t_context, UsingColumnSet *current_set, UsingColumnSet *new_set, + const string &binding, const string &using_column); + + //! Fetch the actual column name from the given binding, or throws if none exists + //! This can be different from "column_name" because of case insensitivity + //! (e.g. "column_name" might return "COLUMN_NAME") + string GetActualColumnName(const string &binding, const string &column_name); + + case_insensitive_map_t> GetCTEBindings() { return cte_bindings; } - void SetCTEBindings(unordered_map> bindings) { + void SetCTEBindings(case_insensitive_map_t> bindings) { cte_bindings = bindings; } @@ -1387,14 +1406,16 @@ class BindContext { private: //! The set of bindings - unordered_map> bindings; + case_insensitive_map_t> bindings; //! The list of bindings in insertion order vector> bindings_list; //! The set of columns used in USING join conditions - unordered_map> using_columns; + case_insensitive_map_t> using_columns; + //! Using column sets + vector> using_column_sets; //! The set of CTE bindings - unordered_map> cte_bindings; + case_insensitive_map_t> cte_bindings; }; } // namespace duckdb @@ -1448,6 +1469,7 @@ class BoundColumnRefExpression : public Expression { + namespace duckdb { class BoundResultModifier; class ClientContext; @@ -1485,6 +1507,7 @@ struct CorrelatedColumnInfo { */ class Binder : public std::enable_shared_from_this { friend class ExpressionBinder; + friend class SelectBinder; friend class RecursiveSubqueryPlanner; public: @@ -1493,7 +1516,7 @@ class Binder : public std::enable_shared_from_this { //! The client context ClientContext &context; //! A mapping of names to common table expressions - unordered_map CTE_bindings; + case_insensitive_map_t CTE_bindings; //! The CTEs that have already been bound unordered_set bound_ctes; //! The bind context @@ -1658,6 +1681,7 @@ class Binder : public std::enable_shared_from_this { void BindModifiers(OrderBinder &order_binder, QueryNode &statement, BoundQueryNode &result); void BindModifierTypes(BoundQueryNode &result, const vector &sql_types, idx_t projection_index); + BoundStatement BindSummarize(ShowStatement &stmt); unique_ptr BindLimit(LimitModifier &limit_mod); unique_ptr BindFilter(unique_ptr condition); unique_ptr BindOrderExpression(OrderBinder &order_binder, unique_ptr expr); @@ -1674,8 +1698,13 @@ class Binder : public std::enable_shared_from_this { string FindBinding(const string &using_column, const string &join_side); bool TryFindBinding(const string &using_column, const string &join_side, string &result); + void AddUsingBindingSet(unique_ptr set); + string RetrieveUsingBinding(Binder ¤t_binder, UsingColumnSet *current_set, const string &column_name, + const string &join_side, UsingColumnSet *new_set); + public: // This should really be a private constructor, but make_shared does not allow it... + // If you are thinking about calling this, you should probably call Binder::CreateBinder Binder(bool I_know_what_I_am_doing, ClientContext &context, shared_ptr parent, bool inherit_ctes); }; @@ -3981,6 +4010,8 @@ class BoundWindowExpression : public Expression { vector> children; //! The set of expressions to partition by vector> partitions; + //! Statistics belonging to the partitions expressions + vector> partitions_stats; //! The set of ordering clauses vector orders; //! The window boundaries @@ -4408,6 +4439,7 @@ class PersistentTableData { } // namespace duckdb + namespace duckdb { class CatalogEntry; @@ -4420,7 +4452,7 @@ struct BoundCreateTableInfo { //! The base CreateInfo object unique_ptr base; //! The map of column names -> column index, used during binding - unordered_map name_map; + case_insensitive_map_t name_map; //! List of constraints on the table vector> constraints; //! List of bound constraints on the table @@ -4743,7 +4775,7 @@ TableCatalogEntry *Catalog::GetEntry(ClientContext &context, string schema_name, return nullptr; } if (entry->type != CatalogType::TABLE_ENTRY) { - throw CatalogException("%s is not a table", name); + throw CatalogException(error_context.FormatError("%s is not a table", name)); } return (TableCatalogEntry *)entry; } @@ -4782,7 +4814,7 @@ AggregateFunctionCatalogEntry *Catalog::GetEntry(ClientContext &context, string auto entry = GetEntry(context, CatalogType::AGGREGATE_FUNCTION_ENTRY, move(schema_name), name, if_exists, error_context); if (entry->type != CatalogType::AGGREGATE_FUNCTION_ENTRY) { - throw CatalogException("%s is not an aggregate function", name); + throw CatalogException(error_context.FormatError("%s is not an aggregate function", name)); } return (AggregateFunctionCatalogEntry *)entry; } @@ -6731,125 +6763,6 @@ string SequenceCatalogEntry::ToSQL() { -//===----------------------------------------------------------------------===// -// DuckDB -// -// duckdb/common/string_util.hpp -// -// -//===----------------------------------------------------------------------===// - - - - - - - -namespace duckdb { -/** - * String Utility Functions - * Note that these are not the most efficient implementations (i.e., they copy - * memory) and therefore they should only be used for debug messages and other - * such things. - */ -class StringUtil { -public: - static bool CharacterIsSpace(char c) { - return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; - } - static bool CharacterIsNewline(char c) { - return c == '\n' || c == '\r'; - } - static bool CharacterIsDigit(char c) { - return c >= '0' && c <= '9'; - } - static char CharacterToLower(char c) { - if (c >= 'A' && c <= 'Z') { - return c - ('A' - 'a'); - } - return c; - } - - //! Returns true if the needle string exists in the haystack - static bool Contains(const string &haystack, const string &needle); - - //! Returns true if the target string starts with the given prefix - static bool StartsWith(string str, string prefix); - - //! Returns true if the target string ends with the given suffix. - static bool EndsWith(const string &str, const string &suffix); - - //! Repeat a string multiple times - static string Repeat(const string &str, const idx_t n); - - //! Split the input string based on newline char - static vector Split(const string &str, char delimiter); - - //! Join multiple strings into one string. Components are concatenated by the given separator - static string Join(const vector &input, const string &separator); - - //! Join multiple items of container with given size, transformed to string - //! using function, into one string using the given separator - template - static string Join(const C &input, S count, const string &separator, Func f) { - // The result - std::string result; - - // If the input isn't empty, append the first element. We do this so we - // don't need to introduce an if into the loop. - if (count > 0) { - result += f(input[0]); - } - - // Append the remaining input components, after the first - for (size_t i = 1; i < count; i++) { - result += separator + f(input[i]); - } - - return result; - } - - //! Return a string that formats the give number of bytes - static string BytesToHumanReadableString(idx_t bytes); - - //! Convert a string to uppercase - static string Upper(const string &str); - - //! Convert a string to lowercase - static string Lower(const string &str); - - //! Format a string using printf semantics - template - static string Format(const string fmt_str, Args... params) { - return Exception::ConstructMessage(fmt_str, params...); - } - - //! Split the input string into a vector of strings based on the split string - static vector Split(const string &input, const string &split); - - //! Remove the whitespace char in the left end of the string - static void LTrim(string &str); - //! Remove the whitespace char in the right end of the string - static void RTrim(string &str); - //! Remove the whitespace char in the left and right end of the string - static void Trim(string &str); - - static string Replace(string source, const string &from, const string &to); - - //! Get the levenshtein distance from two strings - static idx_t LevenshteinDistance(const string &s1, const string &s2); - - //! Get the top-n strings (sorted by the given score distance) from a set of scores. - //! At least one entry is returned (if there is one). - //! Strings are only returned if they have a score less than the threshold. - static vector TopNStrings(vector> scores, idx_t n = 5, idx_t threshold = 5); - //! Computes the levenshtein distance of each string in strings, and compares it to target, then returns TopNStrings - //! with the given params. - static vector TopNLevenshtein(const vector &strings, const string &target, idx_t n = 5, - idx_t threshold = 5); - static string CandidatesMessage(const vector &candidates, const string &candidate = "Candidate bindings"); -}; -} // namespace duckdb @@ -7919,27 +7832,6 @@ class KeywordHelper { namespace duckdb { -void TableCatalogEntry::AddLowerCaseAliases(unordered_map &name_map) { - unordered_map extra_lowercase_names; - for (auto &entry : name_map) { - auto lcase = StringUtil::Lower(entry.first); - // check the lowercase name map if there already exists a lowercase version - if (extra_lowercase_names.find(lcase) == extra_lowercase_names.end()) { - // not yet: add the mapping - extra_lowercase_names[lcase] = entry.second; - } else { - // the lowercase already exists: set it to invalid index - extra_lowercase_names[lcase] = INVALID_INDEX; - } - } - // for any new lowercase names, add them to the original name map - for (auto &entry : extra_lowercase_names) { - if (entry.second != INVALID_INDEX) { - name_map[entry.first] = entry.second; - } - } -} - idx_t TableCatalogEntry::GetColumnIndex(string &column_name, bool if_exists) { auto entry = name_map.find(column_name); if (entry == name_map.end()) { @@ -7964,9 +7856,9 @@ TableCatalogEntry::TableCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schem this->temporary = info->Base().temporary; // add lower case aliases for (idx_t i = 0; i < columns.size(); i++) { + D_ASSERT(name_map.find(columns[i].name) == name_map.end()); name_map[columns[i].name] = i; } - AddLowerCaseAliases(name_map); // add the "rowid" alias, if there is no rowid column specified in the table if (name_map.find("rowid") == name_map.end()) { name_map["rowid"] = COLUMN_IDENTIFIER_ROW_ID; @@ -8736,7 +8628,7 @@ bool CatalogSet::CreateEntry(ClientContext &context, const string &name, unique_ // first check if the entry exists in the unordered set idx_t entry_index; - auto mapping_value = GetMapping(context, name, false); + auto mapping_value = GetMapping(context, name); if (mapping_value == nullptr || mapping_value->deleted) { // if it does not: entry has never been created @@ -8802,7 +8694,7 @@ bool CatalogSet::GetEntryInternal(ClientContext &context, idx_t entry_index, Cat bool CatalogSet::GetEntryInternal(ClientContext &context, const string &name, idx_t &entry_index, CatalogEntry *&catalog_entry) { - auto mapping_value = GetMapping(context, name, true); + auto mapping_value = GetMapping(context, name); if (mapping_value == nullptr || mapping_value->deleted) { // the entry does not exist, check if we can create a default entry return false; @@ -8839,7 +8731,7 @@ bool CatalogSet::AlterEntry(ClientContext &context, const string &name, AlterInf return true; } if (value->name != original_name) { - auto mapping_value = GetMapping(context, value->name, true); + auto mapping_value = GetMapping(context, value->name); if (mapping_value && !mapping_value->deleted) { auto entry = GetEntryForTransaction(context, entries[mapping_value->index].get()); if (!entry->deleted) { @@ -8936,32 +8828,11 @@ bool CatalogSet::HasConflict(ClientContext &context, transaction_t timestamp) { (timestamp < TRANSACTION_ID_START && timestamp > transaction.start_time); } -MappingValue *CatalogSet::GetMapping(ClientContext &context, const string &name, bool allow_lowercase_alias, - bool get_latest) { +MappingValue *CatalogSet::GetMapping(ClientContext &context, const string &name, bool get_latest) { MappingValue *mapping_value; auto entry = mapping.find(name); if (entry != mapping.end()) { mapping_value = entry->second.get(); - } else if (allow_lowercase_alias) { - // entry not found: check if we can find an entry that matches if we lowercase it - auto lowercase_needle = StringUtil::Lower(name); - mapping_value = nullptr; - for (auto &kv : mapping) { - auto lower = StringUtil::Lower(kv.first); - if (lowercase_needle == lower) { - if (mapping_value) { - // multiple candidates exist - // this happens if we have e.g. "AbC" and "ABC" and we search for "abc" - // in this case, there is ambiguity, so we just return null - return nullptr; - } else { - mapping_value = kv.second.get(); - } - } - } - if (!mapping_value) { - return nullptr; - } } else { return nullptr; } @@ -9045,7 +8916,7 @@ string CatalogSet::SimilarEntry(ClientContext &context, const string &name) { string result; idx_t current_score = (idx_t)-1; for (auto &kv : mapping) { - auto mapping_value = GetMapping(context, kv.first, false); + auto mapping_value = GetMapping(context, kv.first); if (mapping_value && !mapping_value->deleted) { auto ldist = StringUtil::LevenshteinDistance(kv.first, name); if (ldist < current_score) { @@ -9075,7 +8946,7 @@ CatalogEntry *CatalogSet::CreateEntryInternal(ClientContext &context, unique_ptr CatalogEntry *CatalogSet::GetEntry(ClientContext &context, const string &name) { unique_lock lock(catalog_lock); - auto mapping_value = GetMapping(context, name, true); + auto mapping_value = GetMapping(context, name); if (mapping_value != nullptr && !mapping_value->deleted) { // we found an entry for this name // check the version numbers @@ -28713,7 +28584,7 @@ struct LocalSortState; struct SortLayout { public: - SortLayout(const vector &orders, const vector> &statistics); + SortLayout(const vector &orders); public: idx_t column_count; @@ -28736,8 +28607,7 @@ struct SortLayout { struct GlobalSortState { public: - GlobalSortState(BufferManager &buffer_manager, vector &orders, - vector> &statistics, RowLayout &payload_layout); + GlobalSortState(BufferManager &buffer_manager, const vector &orders, RowLayout &payload_layout); //! Add local state sorted data to this global state void AddLocalState(LocalSortState &local_sort_state); @@ -28761,7 +28631,7 @@ struct GlobalSortState { //! Sorted data vector> sorted_blocks; vector>> sorted_blocks_temp; - unique_ptr odd_one_out = nullptr; + unique_ptr odd_one_out; //! Pinned heap data (if sorting in memory) vector heap_blocks; @@ -30158,7 +30028,7 @@ static idx_t GetSortingColSize(const LogicalType &type) { } } -SortLayout::SortLayout(const vector &orders, const vector> &statistics) +SortLayout::SortLayout(const vector &orders) : column_count(orders.size()), all_constant(true), comparison_size(0), entry_size(0) { vector blob_layout_types; for (idx_t i = 0; i < orders.size(); i++) { @@ -30175,8 +30045,8 @@ SortLayout::SortLayout(const vector &orders, const vectorCanHaveNull()); } else { stats.push_back(nullptr); @@ -30228,6 +30098,7 @@ void LocalSortState::Initialize(GlobalSortState &global_sort_state, BufferManage } void LocalSortState::SinkChunk(DataChunk &sort, DataChunk &payload) { + D_ASSERT(sort.size() == payload.size()); // Build and serialize sorting data to radix sortable rows auto data_pointers = FlatVector::GetData(addresses); auto handles = radix_sorting_data->Build(sort.size(), data_pointers, nullptr); @@ -30386,9 +30257,9 @@ void LocalSortState::ReOrder(GlobalSortState &gstate) { ReOrder(*sb.payload_data, sorting_ptr, *payload_heap, gstate); } -GlobalSortState::GlobalSortState(BufferManager &buffer_manager, vector &orders, - vector> &statistics, RowLayout &payload_layout) - : buffer_manager(buffer_manager), sort_layout(SortLayout(orders, statistics)), payload_layout(payload_layout), +GlobalSortState::GlobalSortState(BufferManager &buffer_manager, const vector &orders, + RowLayout &payload_layout) + : buffer_manager(buffer_manager), sort_layout(SortLayout(orders)), payload_layout(payload_layout), block_capacity(0), external(false) { } @@ -30784,9 +30655,6 @@ void SortedDataScanner::Scan(DataChunk &chunk) { // Eagerly delete references to blocks that we've passed for (idx_t i = 0; i < sorted_data.block_idx; i++) { sorted_data.data_blocks[i].block = nullptr; - if (!sorted_data.layout.AllConstant() && global_sort_state.external) { - sorted_data.heap_blocks[i].block = nullptr; - } } const idx_t &row_width = sorted_data.layout.GetRowWidth(); // Set up a batch of pointers to scan data from @@ -32390,6 +32258,8 @@ int NumericHelper::UnsignedLength(uint64_t value) { + + //===----------------------------------------------------------------------===// // DuckDB // @@ -32462,8 +32332,6 @@ struct ValueOperations { - - #include #include #include @@ -32588,7 +32456,18 @@ void ChunkCollection::Append(unique_ptr new_chunk) { void ChunkCollection::Fuse(ChunkCollection &other) { if (count == 0) { - Append(other); + chunks.reserve(other.ChunkCount()); + for (idx_t chunk_idx = 0; chunk_idx < other.ChunkCount(); ++chunk_idx) { + auto lhs = make_unique(); + auto &rhs = other.GetChunk(chunk_idx); + lhs->data.reserve(rhs.data.size()); + for (auto &v : rhs.data) { + lhs->data.emplace_back(Vector(v)); + } + lhs->SetCardinality(rhs.size()); + chunks.push_back(move(lhs)); + } + count = other.Count(); } else { D_ASSERT(this->ChunkCount() == other.ChunkCount()); for (idx_t chunk_idx = 0; chunk_idx < ChunkCount(); ++chunk_idx) { @@ -32599,8 +32478,8 @@ void ChunkCollection::Fuse(ChunkCollection &other) { lhs.data.emplace_back(Vector(v)); } } - types.insert(types.end(), other.types.begin(), other.types.end()); } + types.insert(types.end(), other.types.begin(), other.types.end()); } // returns an int similar to a C comparator: @@ -32850,28 +32729,6 @@ void ChunkCollection::Reorder(idx_t order_org[]) { } } -template -static void TemplatedSetValues(ChunkCollection *src_coll, Vector &tgt_vec, idx_t order[], idx_t col_idx, - idx_t start_offset, idx_t remaining_data) { - D_ASSERT(src_coll); - - for (idx_t row_idx = 0; row_idx < remaining_data; row_idx++) { - idx_t chunk_idx_src = order[start_offset + row_idx] / STANDARD_VECTOR_SIZE; - idx_t vector_idx_src = order[start_offset + row_idx] % STANDARD_VECTOR_SIZE; - - auto &src_chunk = src_coll->GetChunk(chunk_idx_src); - Vector &src_vec = src_chunk.data[col_idx]; - auto source_data = FlatVector::GetData(src_vec); - auto target_data = FlatVector::GetData(tgt_vec); - - if (FlatVector::IsNull(src_vec, vector_idx_src)) { - FlatVector::SetNull(tgt_vec, row_idx, true); - } else { - target_data[row_idx] = source_data[vector_idx_src]; - } - } -} - Value ChunkCollection::GetValue(idx_t column, idx_t index) { return chunks[LocateChunk(index)]->GetValue(column, index % STANDARD_VECTOR_SIZE); } @@ -32913,126 +32770,6 @@ bool ChunkCollection::Equals(ChunkCollection &other) { } return true; } -static void Heapify(ChunkCollection *input, vector &desc, vector &null_order, idx_t *heap, - idx_t heap_size, idx_t current_index) { - if (current_index >= heap_size) { - return; - } - idx_t left_child_index = current_index * 2 + 1; - idx_t right_child_index = current_index * 2 + 2; - idx_t swap_index = current_index; - - if (left_child_index < heap_size) { - swap_index = CompareTuple(input, desc, null_order, heap[swap_index], heap[left_child_index]) <= 0 - ? left_child_index - : swap_index; - } - - if (right_child_index < heap_size) { - swap_index = CompareTuple(input, desc, null_order, heap[swap_index], heap[right_child_index]) <= 0 - ? right_child_index - : swap_index; - } - - if (swap_index != current_index) { - std::swap(heap[current_index], heap[swap_index]); - Heapify(input, desc, null_order, heap, heap_size, swap_index); - } -} - -static void HeapCreate(ChunkCollection *input, vector &desc, vector &null_order, - idx_t *heap, idx_t heap_size) { - for (idx_t i = 0; i < heap_size; i++) { - heap[i] = i; - } - - // build heap - for (int64_t i = heap_size / 2 - 1; i >= 0; i--) { - Heapify(input, desc, null_order, heap, heap_size, i); - } - - // Run through all the rows. - for (idx_t i = heap_size; i < input->Count(); i++) { - if (CompareTuple(input, desc, null_order, i, heap[0]) <= 0) { - heap[0] = i; - Heapify(input, desc, null_order, heap, heap_size, 0); - } - } -} - -void ChunkCollection::Heap(vector &desc, vector &null_order, idx_t heap[], - idx_t heap_size) { - D_ASSERT(heap); - if (count == 0) { - return; - } - - HeapCreate(this, desc, null_order, heap, heap_size); - - // Heap is ready. Now do a heapsort - for (int64_t i = heap_size - 1; i >= 0; i--) { - std::swap(heap[i], heap[0]); - Heapify(this, desc, null_order, heap, i, 0); - } -} - -idx_t ChunkCollection::MaterializeHeapChunk(DataChunk &target, idx_t order[], idx_t start_offset, idx_t heap_size) { - idx_t remaining_data = MinValue(STANDARD_VECTOR_SIZE, heap_size - start_offset); - D_ASSERT(target.GetTypes() == types); - - target.SetCardinality(remaining_data); - for (idx_t col_idx = 0; col_idx < ColumnCount(); col_idx++) { - switch (types[col_idx].InternalType()) { - case PhysicalType::BOOL: - case PhysicalType::INT8: - TemplatedSetValues(this, target.data[col_idx], order, col_idx, start_offset, remaining_data); - break; - case PhysicalType::INT16: - TemplatedSetValues(this, target.data[col_idx], order, col_idx, start_offset, remaining_data); - break; - case PhysicalType::INT32: - TemplatedSetValues(this, target.data[col_idx], order, col_idx, start_offset, remaining_data); - break; - case PhysicalType::INT64: - TemplatedSetValues(this, target.data[col_idx], order, col_idx, start_offset, remaining_data); - break; - case PhysicalType::INT128: - TemplatedSetValues(this, target.data[col_idx], order, col_idx, start_offset, remaining_data); - break; - case PhysicalType::FLOAT: - TemplatedSetValues(this, target.data[col_idx], order, col_idx, start_offset, remaining_data); - break; - case PhysicalType::DOUBLE: - TemplatedSetValues(this, target.data[col_idx], order, col_idx, start_offset, remaining_data); - break; - case PhysicalType::VARCHAR: - TemplatedSetValues(this, target.data[col_idx], order, col_idx, start_offset, remaining_data); - break; - // TODO this is ugly and sloooow! - case PhysicalType::STRUCT: - case PhysicalType::LIST: { - for (idx_t row_idx = 0; row_idx < remaining_data; row_idx++) { - idx_t chunk_idx_src = order[start_offset + row_idx] / STANDARD_VECTOR_SIZE; - idx_t vector_idx_src = order[start_offset + row_idx] % STANDARD_VECTOR_SIZE; - - auto &src_chunk = chunks[chunk_idx_src]; - Vector &src_vec = src_chunk->data[col_idx]; - auto &tgt_vec = target.data[col_idx]; - if (FlatVector::IsNull(src_vec, vector_idx_src)) { - FlatVector::SetNull(tgt_vec, row_idx, true); - } else { - tgt_vec.SetValue(row_idx, src_vec.GetValue(vector_idx_src)); - } - } - } break; - - default: - throw NotImplementedException("Type is unsupported in MaterializeHeapChunk()"); - } - } - target.Verify(); - return start_offset + remaining_data; -} } // namespace duckdb @@ -33085,8 +32822,6 @@ struct SelCache { } // namespace duckdb - - //===----------------------------------------------------------------------===// // DuckDB // @@ -33122,6 +32857,8 @@ class VectorCache { + + namespace duckdb { DataChunk::DataChunk() : count(0) { @@ -33215,6 +32952,22 @@ void DataChunk::Copy(DataChunk &other, const SelectionVector &sel, const idx_t s other.SetCardinality(source_count - offset); } +void DataChunk::Split(DataChunk &other, idx_t split_idx) { + D_ASSERT(other.size() == 0); + D_ASSERT(other.data.empty()); + D_ASSERT(split_idx < data.size()); + const idx_t num_cols = data.size(); + for (idx_t col_idx = split_idx; col_idx < num_cols; col_idx++) { + other.data.push_back(move(data[col_idx])); + other.vector_caches.push_back(move(vector_caches[col_idx])); + } + for (idx_t col_idx = split_idx; col_idx < num_cols; col_idx++) { + data.pop_back(); + vector_caches.pop_back(); + } + other.SetCardinality(*this); +} + void DataChunk::Append(const DataChunk &other) { if (other.size() == 0) { return; @@ -33229,6 +32982,20 @@ void DataChunk::Append(const DataChunk &other) { SetCardinality(size() + other.size()); } +void DataChunk::Append(const DataChunk &other, const SelectionVector &sel, idx_t count) { + if (other.size() == 0) { + return; + } + if (ColumnCount() != other.ColumnCount()) { + throw InternalException("Column counts of appending chunk doesn't match!"); + } + for (idx_t i = 0; i < ColumnCount(); i++) { + D_ASSERT(data[i].GetVectorType() == VectorType::FLAT_VECTOR); + VectorOperations::Copy(other.data[i], data[i], sel, count, 0, size()); + } + SetCardinality(size() + count); +} + void DataChunk::Normalify() { for (idx_t i = 0; i < ColumnCount(); i++) { data[i].Normalify(size()); @@ -33376,6 +33143,7 @@ void InitializeChild(DuckDBArrowArrayChildHolder &child_holder, idx_t size) { } void SetChildValidityMask(Vector &vector, ArrowArray &child) { + D_ASSERT(vector.GetVectorType() == VectorType::FLAT_VECTOR); auto &mask = FlatVector::Validity(vector); if (!mask.AllValid()) { //! any bits are set: might have nulls @@ -33679,7 +33447,8 @@ void SetArrowChild(DuckDBArrowArrayChildHolder &child_holder, const LogicalType default: throw std::runtime_error("Unsupported type " + type.ToString()); } -} // namespace duckdb +} + void DataChunk::ToArrowArray(ArrowArray *out_array) { Normalify(); D_ASSERT(out_array); @@ -39464,6 +39233,7 @@ void StringVector::AddHandle(Vector &vector, unique_ptr handle) { void StringVector::AddBuffer(Vector &vector, buffer_ptr buffer) { D_ASSERT(vector.GetType().InternalType() == PhysicalType::VARCHAR); + D_ASSERT(buffer.get() != vector.auxiliary.get()); if (!vector.auxiliary) { vector.auxiliary = make_buffer(); } @@ -39482,13 +39252,7 @@ void StringVector::AddHeapReference(Vector &vector, Vector &other) { if (!other.auxiliary) { return; } - if (!vector.auxiliary) { - vector.auxiliary = make_buffer(); - } - D_ASSERT(vector.auxiliary->GetBufferType() == VectorBufferType::STRING_BUFFER); - D_ASSERT(other.auxiliary->GetBufferType() == VectorBufferType::STRING_BUFFER); - auto &string_buffer = (VectorStringBuffer &)*vector.auxiliary; - string_buffer.AddHeapReference(other.auxiliary); + StringVector::AddBuffer(vector, other.auxiliary); } vector> &StructVector::GetEntries(Vector &vector) { @@ -42691,7 +42455,7 @@ static idx_t DistinctSelectNotNull(VectorData &lvdata, VectorData &rvdata, const const auto rnull = !rmask.RowIsValid(ridx); if (lnull || rnull) { // If either is NULL then we can major distinguish them - if (!OP::Operation(lnull, rnull, false, false)) { + if (!OP::Operation(false, false, lnull, rnull)) { false_vec.Append(false_count, idx); } else { true_vec.Append(true_count, idx); @@ -42976,7 +42740,7 @@ static idx_t DistinctSelectList(Vector &left, Vector &right, idx_t vcount, Vecto return match_count; } -template +template static idx_t DistinctSelectNested(Vector &left, Vector &right, idx_t vcount, const SelectionVector *sel, idx_t count, SelectionVector *true_sel, SelectionVector *false_sel) { // We need multiple, real selections @@ -43011,10 +42775,11 @@ static idx_t DistinctSelectNested(Vector &left, Vector &right, idx_t vcount, con idx_t true_count = 0; if (PhysicalType::LIST == left.GetType().InternalType()) { - true_count = DistinctSelectList(left, right, vcount, lvdata, rvdata, count, maybe_vec, true_opt, false_opt); + true_count = + DistinctSelectList(left, right, vcount, lvdata, rvdata, count, maybe_vec, true_opt, false_opt); } else { true_count = - DistinctSelectStruct(left, right, vcount, lvdata, rvdata, count, maybe_vec, true_opt, false_opt); + DistinctSelectStruct(left, right, vcount, lvdata, rvdata, count, maybe_vec, true_opt, false_opt); } auto false_count = count - true_count; @@ -43089,7 +42854,7 @@ static void ExecuteDistinct(Vector &left, Vector &right, Vector &result, idx_t c } } -template +template static idx_t TemplatedDistinctSelectOperation(Vector &left, Vector &right, idx_t vcount, const SelectionVector *sel, idx_t count, SelectionVector *true_sel, SelectionVector *false_sel) { // the inplace loops take the result as the last parameter @@ -43124,7 +42889,7 @@ static idx_t TemplatedDistinctSelectOperation(Vector &left, Vector &right, idx_t case PhysicalType::MAP: case PhysicalType::STRUCT: case PhysicalType::LIST: - return DistinctSelectNested(left, right, vcount, sel, count, true_sel, false_sel); + return DistinctSelectNested(left, right, vcount, sel, count, true_sel, false_sel); default: throw InternalException("Invalid type for distinct selection"); } @@ -43194,6 +42959,14 @@ idx_t VectorOperations::DistinctGreaterThan(Vector &left, Vector &right, const S return TemplatedDistinctSelectOperation(left, right, count, sel, count, true_sel, false_sel); } + +// true := A > B with nulls being minimal +idx_t VectorOperations::DistinctGreaterThanNullsFirst(Vector &left, Vector &right, const SelectionVector *sel, + idx_t count, SelectionVector *true_sel, + SelectionVector *false_sel) { + return TemplatedDistinctSelectOperation( + left, right, count, sel, count, true_sel, false_sel); +} // true := A >= B with nulls being maximal idx_t VectorOperations::DistinctGreaterThanEquals(Vector &left, Vector &right, const SelectionVector *sel, idx_t count, SelectionVector *true_sel, SelectionVector *false_sel) { @@ -43206,6 +42979,14 @@ idx_t VectorOperations::DistinctLessThan(Vector &left, Vector &right, const Sele return TemplatedDistinctSelectOperation(left, right, count, sel, count, true_sel, false_sel); } + +// true := A < B with nulls being minimal +idx_t VectorOperations::DistinctLessThanNullsFirst(Vector &left, Vector &right, const SelectionVector *sel, idx_t count, + SelectionVector *true_sel, SelectionVector *false_sel) { + return TemplatedDistinctSelectOperation( + left, right, count, sel, count, true_sel, false_sel); +} + // true := A <= B with nulls being maximal idx_t VectorOperations::DistinctLessThanEquals(Vector &left, Vector &right, const SelectionVector *sel, idx_t count, SelectionVector *true_sel, SelectionVector *false_sel) { @@ -52471,6 +52252,8 @@ class PhysicalWindow : public PhysicalSink { + + //===----------------------------------------------------------------------===// // DuckDB // @@ -52572,7 +52355,6 @@ class TaskContext { - #include #include #include @@ -52584,10 +52366,12 @@ using counts_t = std::vector; // Global sink state class WindowGlobalState : public GlobalOperatorState { public: - WindowGlobalState(PhysicalWindow &op_p, ClientContext &context) : op(op_p) { + WindowGlobalState(PhysicalWindow &op_p, ClientContext &context) + : op(op_p), buffer_manager(BufferManager::GetBufferManager(context)) { } PhysicalWindow &op; + BufferManager &buffer_manager; mutex lock; ChunkCollection chunks; ChunkCollection over_collection; @@ -52955,45 +52739,162 @@ static void MaterializeExpression(Expression *expr, ChunkCollection &input, Chun MaterializeExpressions(&expr, 1, input, output, scalar); } -static OrderByNullType NormaliseNullOrder(OrderType type, OrderByNullType null_order) { - if (type != OrderType::DESCENDING) { - return null_order; +// Per-thread read state +class PhysicalWindowOperatorState : public PhysicalOperatorState { +public: + PhysicalWindowOperatorState(PhysicalOperator &op, PhysicalOperator *child) + : PhysicalOperatorState(op, child), parallel_state(nullptr), initialized(false) { } - switch (null_order) { - case OrderByNullType::NULLS_FIRST: - return OrderByNullType::NULLS_LAST; - case OrderByNullType::NULLS_LAST: - return OrderByNullType::NULLS_FIRST; - default: - throw InternalException("Unknown NULL order type"); - } -} + ParallelState *parallel_state; + bool initialized; + + //! The number of partitions to process (0 if there is no partitioning) + size_t partitions; + //! The output read position. + size_t next_part; + //! The generated input chunks + ChunkCollection chunks; + //! The generated output chunks + ChunkCollection window_results; + //! The read cursor + idx_t position; + + BufferManager *buffer_manager; + unique_ptr global_sort_state; +}; -static void SortCollectionForPartition(BoundWindowExpression *wexpr, ChunkCollection &input, - ChunkCollection &sort_collection) { +static void SortCollectionForPartition(PhysicalWindowOperatorState &state, BoundWindowExpression *wexpr, + ChunkCollection &input, ChunkCollection &over, ChunkCollection *hashes, + const hash_t hash_bin, const hash_t hash_mask) { if (input.Count() == 0) { return; } - vector orders; - vector null_order_types; + vector orders; // we sort by both 1) partition by expression list and 2) order by expressions for (idx_t prt_idx = 0; prt_idx < wexpr->partitions.size(); prt_idx++) { - orders.push_back(OrderType::ASCENDING); - null_order_types.push_back(OrderByNullType::NULLS_FIRST); + if (wexpr->partitions_stats.empty() || !wexpr->partitions_stats[prt_idx]) { + orders.emplace_back(OrderType::ASCENDING, OrderByNullType::NULLS_FIRST, wexpr->partitions[prt_idx]->Copy(), + nullptr); + } else { + orders.emplace_back(OrderType::ASCENDING, OrderByNullType::NULLS_FIRST, wexpr->partitions[prt_idx]->Copy(), + wexpr->partitions_stats[prt_idx]->Copy()); + } } - for (const auto &order : wexpr->orders) { - orders.push_back(order.type); - null_order_types.push_back(NormaliseNullOrder(order.type, order.null_order)); + orders.push_back(order.Copy()); + } + + // fuse input and sort collection into one + // (sorting columns are not decoded, and we need them later) + ChunkCollection payload; + payload.Fuse(input); + payload.Fuse(over); + auto payload_types = payload.Types(); + + // initialise partitioning memory + // to minimise copying, we fill up a chunk and then sink it. + SelectionVector sel; + DataChunk over_partition; + DataChunk payload_partition; + if (hashes) { + sel.Initialize(STANDARD_VECTOR_SIZE); + over_partition.Initialize(over.Types()); + payload_partition.Initialize(payload_types); + } + + // initialize row layout for sorting + RowLayout payload_layout; + payload_layout.Initialize(payload_types); + + // initialize sorting states + state.global_sort_state = make_unique(*state.buffer_manager, orders, payload_layout); + auto &global_sort_state = *state.global_sort_state; + LocalSortState local_sort_state; + local_sort_state.Initialize(global_sort_state, *state.buffer_manager); + + // sink collection chunks into row format + const idx_t chunk_count = over.ChunkCount(); + for (idx_t i = 0; i < chunk_count; i++) { + auto &over_chunk = *over.Chunks()[i]; + auto &payload_chunk = *payload.Chunks()[i]; + + // Extract the hash partition, if any + if (hashes) { + auto &hash_chunk = *hashes->Chunks()[i]; + auto hash_size = hash_chunk.size(); + auto hash_data = FlatVector::GetData(hash_chunk.data[0]); + idx_t bin_size = 0; + for (idx_t i = 0; i < hash_size; ++i) { + if ((hash_data[i] & hash_mask) == hash_bin) { + sel.set_index(bin_size++, i); + } + } + + // Flush the partition chunks if we would overflow + if (over_partition.size() + bin_size > STANDARD_VECTOR_SIZE) { + local_sort_state.SinkChunk(over_partition, payload_partition); + over_partition.Reset(); + payload_partition.Reset(); + } + + // Copy the data for each collection. + if (bin_size) { + over_partition.Append(over_chunk, sel, bin_size); + payload_partition.Append(payload_chunk, sel, bin_size); + } + } else { + local_sort_state.SinkChunk(over_chunk, payload_chunk); + } + } + + // Flush any ragged partition chunks + if (over_partition.size() > 0) { + local_sort_state.SinkChunk(over_partition, payload_partition); + over_partition.Reset(); + payload_partition.Reset(); + } + + // If there are no hashes, release the input to save memory. + if (!hashes) { + over.Reset(); + input.Reset(); } - auto sorted_vector = unique_ptr(new idx_t[input.Count()]); - sort_collection.Sort(orders, null_order_types, sorted_vector.get()); + // add local state to global state, which sorts the data + global_sort_state.AddLocalState(local_sort_state); + // Prepare for merge phase (in this case we never have a merge phase, but this call is still needed) + global_sort_state.PrepareMergePhase(); +} + +static void ScanSortedPartition(PhysicalWindowOperatorState &state, ChunkCollection &input, + const vector &input_types, ChunkCollection &over, + const vector &over_types) { + auto &global_sort_state = *state.global_sort_state; - input.Reorder(sorted_vector.get()); - sort_collection.Reorder(sorted_vector.get()); + auto payload_types = input_types; + payload_types.insert(payload_types.end(), over_types.begin(), over_types.end()); + + // scan the sorted row data + SortedDataScanner scanner(*global_sort_state.sorted_blocks[0]->payload_data, global_sort_state); + for (;;) { + DataChunk payload_chunk; + payload_chunk.Initialize(payload_types); + payload_chunk.SetCardinality(0); + scanner.Scan(payload_chunk); + if (payload_chunk.size() == 0) { + break; + } + + // split into two + DataChunk over_chunk; + payload_chunk.Split(over_chunk, input_types.size()); + + // append back to collection + input.Append(payload_chunk); + over.Append(over_chunk); + } } static void HashChunk(counts_t &counts, DataChunk &hash_chunk, DataChunk &sort_chunk, const idx_t partition_cols) { @@ -53636,12 +53537,6 @@ static void ComputeWindowExpressions(WindowExpressions &window_exprs, ChunkColle // Pick out a function for the OVER clause auto over_expr = window_exprs[0]; - // Sort the partition - const auto sort_col_count = over_expr->partitions.size() + over_expr->orders.size(); - if (sort_col_count > 0) { - SortCollectionForPartition(over_expr, input, over); - } - // Set bits for the start of each partition BitArray partition_bits(input.Count()); partition_bits[0] = true; @@ -53652,6 +53547,7 @@ static void ComputeWindowExpressions(WindowExpressions &window_exprs, ChunkColle // Set bits for the start of each peer group. // Partitions also break peer groups, so start with the partition bits. + const auto sort_col_count = over_expr->partitions.size() + over_expr->orders.size(); auto order_bits = partition_bits; for (idx_t c = over_expr->partitions.size(); c < sort_col_count; ++c) { MaskColumn(order_bits, over, c); @@ -53665,44 +53561,6 @@ static void ComputeWindowExpressions(WindowExpressions &window_exprs, ChunkColle } } -static void AppendCollection(const ChunkCollection &source, ChunkCollection &target, SelectionVector &sel, - const idx_t source_count, const idx_t chunk_idx) { - - DataChunk chunk; - chunk.Initialize(source.Types()); - source.GetChunk(chunk_idx).Copy(chunk, sel, source_count); - target.Append(chunk); -} - -static void ExtractPartition(WindowGlobalState &gstate, ChunkCollection &chunks, ChunkCollection &over_collection, - const hash_t hash_bin, const hash_t hash_mask) { - - // Copy the partition data so we can work with it on this thread - ChunkCollection &hashes = gstate.hash_collection; - SelectionVector sel; - for (idx_t chunk_idx = 0; chunk_idx < hashes.ChunkCount(); ++chunk_idx) { - // Build a selection vector of matching hashes - auto &hash_chunk = hashes.GetChunk(chunk_idx); - auto hash_size = hash_chunk.size(); - auto hash_data = FlatVector::GetData(hash_chunk.data[0]); - sel.Initialize(hash_size); - idx_t bin_size = 0; - for (idx_t i = 0; i < hash_size; ++i) { - if ((hash_data[i] & hash_mask) == hash_bin) { - sel.set_index(bin_size++, i); - } - } - - // Copy the data for each collection - if (bin_size == 0) { - continue; - } - - AppendCollection(gstate.chunks, chunks, sel, bin_size, chunk_idx); - AppendCollection(gstate.over_collection, over_collection, sel, bin_size, chunk_idx); - } -} - //===--------------------------------------------------------------------===// // GetChunkInternal //===--------------------------------------------------------------------===// @@ -53742,28 +53600,6 @@ unique_ptr PhysicalWindow::GetParallelState() { return move(result); } -// Per-thread read state -class PhysicalWindowOperatorState : public PhysicalOperatorState { -public: - PhysicalWindowOperatorState(PhysicalOperator &op, PhysicalOperator *child) - : PhysicalOperatorState(op, child), parallel_state(nullptr), initialized(false) { - } - - ParallelState *parallel_state; - bool initialized; - - //! The number of partitions to process (0 if there is no partitioning) - size_t partitions; - //! The output read position. - size_t next_part; - //! The generated input chunks - ChunkCollection chunks; - //! The generated output chunks - ChunkCollection window_results; - //! The read cursor - idx_t position; -}; - unique_ptr PhysicalWindow::GetOperatorState() { return make_unique(*this, children.empty() ? nullptr : children[0].get()); } @@ -53781,20 +53617,48 @@ static void GeneratePartition(PhysicalWindowOperatorState &state, WindowGlobalSt state.chunks.Reset(); state.window_results.Reset(); state.position = 0; + state.global_sort_state = nullptr; + + // Pick out a function for the OVER clause + auto over_expr = window_exprs[0]; + + // There are three types of partitions: + // 1. No partition (no sorting) + // 2. One partition (sorting, but no hashing) + // 3. Multiple partitions (sorting and hashing) + const auto input_types = gstate.chunks.Types(); + const auto over_types = gstate.over_collection.Types(); if (gstate.counts.empty() && hash_bin == 0) { - ChunkCollection &big_data = gstate.chunks; + ChunkCollection &input = gstate.chunks; ChunkCollection output; - ChunkCollection &over_collection = gstate.over_collection; - ComputeWindowExpressions(window_exprs, big_data, output, over_collection); - state.chunks.Merge(big_data); + ChunkCollection &over = gstate.over_collection; + + const auto has_sorting = over_expr->partitions.size() + over_expr->orders.size(); + if (has_sorting && input.Count() > 0) { + // 2. One partition + SortCollectionForPartition(state, over_expr, input, over, nullptr, 0, 0); + + // Overwrite the collections with the sorted data + ScanSortedPartition(state, input, input_types, over, over_types); + } + + ComputeWindowExpressions(window_exprs, input, output, over); + state.chunks.Merge(input); state.window_results.Merge(output); + } else if (hash_bin < gstate.counts.size() && gstate.counts[hash_bin] > 0) { + // 3. Multiple partitions + const auto hash_mask = hash_t(gstate.counts.size() - 1); + SortCollectionForPartition(state, over_expr, gstate.chunks, gstate.over_collection, &gstate.hash_collection, + hash_bin, hash_mask); + + // Scan the sorted data into new Collections ChunkCollection input; ChunkCollection output; ChunkCollection over; - const auto hash_mask = hash_t(gstate.counts.size() - 1); - ExtractPartition(gstate, input, over, hash_bin, hash_mask); + ScanSortedPartition(state, input, input_types, over, over_types); + ComputeWindowExpressions(window_exprs, input, output, over); state.chunks.Merge(input); state.window_results.Merge(output); @@ -53846,6 +53710,7 @@ void PhysicalWindow::GetChunkInternal(ExecutionContext &context, DataChunk &chun // parallel scan init state.parallel_state = task_info->second; } + state.buffer_manager = &BufferManager::GetBufferManager(context.client); state.initialized = true; } @@ -54781,6 +54646,28 @@ string PhysicalReservoirSample::ParamsToString() const { +//===----------------------------------------------------------------------===// +// DuckDB +// +// duckdb/common/enums/set_scope.hpp +// +// +//===----------------------------------------------------------------------===// + + + + + +namespace duckdb { + +enum class SetScope : uint8_t { + LOCAL = 0, /* Not implemented*/ + SESSION = 1, + GLOBAL = 2 +}; + +} // namespace duckdb + //===----------------------------------------------------------------------===// // DuckDB @@ -54808,9 +54695,9 @@ namespace duckdb { //! PhysicalSet represents a SET operation (e.g. SET a = 42) class PhysicalSet : public PhysicalOperator { public: - PhysicalSet(std::string name_p, Value value_p, idx_t estimated_cardinality) + PhysicalSet(std::string name_p, Value value_p, SetScope scope_p, idx_t estimated_cardinality) : PhysicalOperator(PhysicalOperatorType::SET, {LogicalType::BOOLEAN}, estimated_cardinality), name(name_p), - value(value_p) { + value(value_p), scope(scope_p) { } public: @@ -54819,6 +54706,7 @@ class PhysicalSet : public PhysicalOperator { public: std::string name; Value value; + SetScope scope; }; } // namespace duckdb @@ -54829,8 +54717,14 @@ class PhysicalSet : public PhysicalOperator { namespace duckdb { void PhysicalSet::GetChunkInternal(ExecutionContext &context, DataChunk &chunk, PhysicalOperatorState *state) const { - auto &db = context.client.db; - db->config.set_variables[name] = value; // woop + D_ASSERT(scope == SetScope::GLOBAL || scope == SetScope::SESSION); + + if (scope == SetScope::GLOBAL) { + context.client.db->config.set_variables[name] = value; + } else { + context.client.set_variables[name] = value; + } + state->finished = true; } @@ -57708,13 +57602,10 @@ class OrderGlobalState; //! Physically re-orders the input data class PhysicalOrder : public PhysicalSink { public: - PhysicalOrder(vector types, vector orders, - vector> statistics, idx_t estimated_cardinality); + PhysicalOrder(vector types, vector orders, idx_t estimated_cardinality); //! Input data vector orders; - //! Statistics of the order expressions - vector> statistics; public: unique_ptr GetLocalSinkState(ExecutionContext &context) override; @@ -57745,10 +57636,8 @@ class PhysicalOrder : public PhysicalSink { namespace duckdb { -PhysicalOrder::PhysicalOrder(vector types, vector orders, - vector> statistics, idx_t estimated_cardinality) - : PhysicalSink(PhysicalOperatorType::ORDER_BY, move(types), estimated_cardinality), orders(move(orders)), - statistics(move(statistics)) { +PhysicalOrder::PhysicalOrder(vector types, vector orders, idx_t estimated_cardinality) + : PhysicalSink(PhysicalOperatorType::ORDER_BY, move(types), estimated_cardinality), orders(move(orders)) { } //===--------------------------------------------------------------------===// @@ -57756,8 +57645,8 @@ PhysicalOrder::PhysicalOrder(vector types, vector //===--------------------------------------------------------------------===// class OrderGlobalState : public GlobalOperatorState { public: - OrderGlobalState(BufferManager &buffer_manager, PhysicalOrder &order, RowLayout payload_layout) - : global_sort_state(buffer_manager, order.orders, order.statistics, payload_layout) { + OrderGlobalState(BufferManager &buffer_manager, PhysicalOrder &order, RowLayout &payload_layout) + : global_sort_state(buffer_manager, order.orders, payload_layout) { } //! Global sort state @@ -57851,9 +57740,8 @@ class PhysicalOrderMergeTask : public Task { MergeSorter merge_sorter(global_sort_state, BufferManager::GetBufferManager(context)); merge_sorter.PerformInMergeRound(); // Finish task and act if all tasks are finished - lock_guard state_guard(global_sort_state.lock); - parent.finished_tasks++; - if (parent.finished_tasks == parent.total_tasks) { + idx_t finished_tasks = ++parent.finished_tasks; + if (finished_tasks == parent.total_tasks) { global_sort_state.CompleteMergeRound(); if (global_sort_state.sorted_blocks.size() == 1) { // Only one block left: Done! @@ -58011,130 +57899,405 @@ class PhysicalTopN : public PhysicalSink { + + namespace duckdb { //===--------------------------------------------------------------------===// // Heaps //===--------------------------------------------------------------------===// -class TopNHeap { +class TopNHeap; + +struct TopNScanState { + unique_ptr scanner; + idx_t pos; + bool exclude_offset; +}; + +class TopNSortState { public: - static OrderByNullType FlipNullOrder(OrderByNullType order) { - if (order == OrderByNullType::NULLS_FIRST) { - return OrderByNullType::NULLS_LAST; - } else if (order == OrderByNullType::NULLS_LAST) { - return OrderByNullType::NULLS_FIRST; - } - return order; - } + explicit TopNSortState(TopNHeap &heap); - TopNHeap(const vector &orders, idx_t limit, idx_t offset) - : limit(limit), offset(offset), heap_size(0) { - for (auto &order : orders) { - auto &expr = order.expression; - sort_types.push_back(expr->return_type); - order_types.push_back(order.type); - null_order_types.push_back(order.type == OrderType::DESCENDING ? FlipNullOrder(order.null_order) - : order.null_order); - executor.AddExpression(*expr); - } - // preallocate the heap - heap = unique_ptr(new idx_t[limit + offset]); - } + TopNHeap &heap; + unique_ptr local_state; + unique_ptr global_state; + idx_t count; + bool is_sorted; - void Append(DataChunk &top_chunk, DataChunk &heap_chunk) { - top_data.Append(top_chunk); - heap_data.Append(heap_chunk); - D_ASSERT(heap_data.Count() == top_data.Count()); - } +public: + void Initialize(); + void Append(DataChunk &sort_chunk, DataChunk &payload); void Sink(DataChunk &input); - void Combine(TopNHeap &other); - void Reduce(); + void Finalize(); - idx_t MaterializeTopChunk(DataChunk &top_chunk, idx_t position) { - return top_data.MaterializeHeapChunk(top_chunk, heap.get(), position, heap_size); - } + void Move(TopNSortState &other); + + void InitializeScan(TopNScanState &state, bool exclude_offset); + void Scan(TopNScanState &state, DataChunk &chunk); +}; + +class TopNHeap { +public: + TopNHeap(ClientContext &context, const vector &payload_types, const vector &orders, + idx_t limit, idx_t offset); + ClientContext &context; + const vector &payload_types; + const vector &orders; idx_t limit; idx_t offset; - idx_t heap_size; + TopNSortState sort_state; ExpressionExecutor executor; - vector sort_types; - vector order_types; - vector null_order_types; - ChunkCollection top_data; - ChunkCollection heap_data; - unique_ptr heap; + DataChunk sort_chunk; + DataChunk compare_chunk; + DataChunk payload_chunk; + //! A set of boundary values that determine either the minimum or the maximum value we have to consider for our + //! top-n + DataChunk boundary_values; + //! Whether or not the boundary_values has been set. The boundary_values are only set after a reduce step + bool has_boundary_values; + + SelectionVector final_sel; + SelectionVector true_sel; + SelectionVector false_sel; + SelectionVector new_remaining_sel; + +public: + void Sink(DataChunk &input); + void Combine(TopNHeap &other); + void Reduce(); + void Finalize(); + + void ExtractBoundaryValues(DataChunk ¤t_chunk, DataChunk &prev_chunk); + + void InitializeScan(TopNScanState &state, bool exclude_offset); + void Scan(TopNScanState &state, DataChunk &chunk); + + bool CheckBoundaryValues(DataChunk &sort_chunk, DataChunk &payload); }; -void TopNHeap::Sink(DataChunk &input) { - // compute the ordering values for the new chunk - DataChunk heap_chunk; - heap_chunk.Initialize(sort_types); +//===--------------------------------------------------------------------===// +// TopNSortState +//===--------------------------------------------------------------------===// +TopNSortState::TopNSortState(TopNHeap &heap) : heap(heap), count(0), is_sorted(false) { +} + +void TopNSortState::Initialize() { + RowLayout layout; + layout.Initialize(heap.payload_types, false); + auto &buffer_manager = BufferManager::GetBufferManager(heap.context); + global_state = make_unique(buffer_manager, heap.orders, layout); + local_state = make_unique(); + local_state->Initialize(*global_state, buffer_manager); +} - executor.Execute(input, heap_chunk); +void TopNSortState::Append(DataChunk &sort_chunk, DataChunk &payload) { + D_ASSERT(!is_sorted); + if (heap.has_boundary_values) { + if (!heap.CheckBoundaryValues(sort_chunk, payload)) { + return; + } + } + + local_state->SinkChunk(sort_chunk, payload); + count += payload.size(); +} + +void TopNSortState::Sink(DataChunk &input) { + // compute the ordering values for the new chunk + heap.executor.Execute(input, heap.sort_chunk); // append the new chunk to what we have already - Append(input, heap_chunk); + Append(heap.sort_chunk, input); +} + +void TopNSortState::Move(TopNSortState &other) { + local_state = move(other.local_state); + global_state = move(other.global_state); + count = other.count; + is_sorted = other.is_sorted; +} + +void TopNSortState::Finalize() { + D_ASSERT(!is_sorted); + global_state->AddLocalState(*local_state); + + global_state->PrepareMergePhase(); + while (global_state->sorted_blocks.size() > 1) { + MergeSorter merge_sorter(*global_state, BufferManager::GetBufferManager(heap.context)); + merge_sorter.PerformInMergeRound(); + global_state->CompleteMergeRound(); + } + is_sorted = true; +} + +void TopNSortState::InitializeScan(TopNScanState &state, bool exclude_offset) { + D_ASSERT(is_sorted); + if (global_state->sorted_blocks.empty()) { + state.scanner = nullptr; + } else { + D_ASSERT(global_state->sorted_blocks.size() == 1); + state.scanner = make_unique(*global_state->sorted_blocks[0]->payload_data, *global_state); + } + state.pos = 0; + state.exclude_offset = exclude_offset && heap.offset > 0; +} + +void TopNSortState::Scan(TopNScanState &state, DataChunk &chunk) { + if (!state.scanner) { + return; + } + auto offset = heap.offset; + auto limit = heap.limit; + D_ASSERT(is_sorted); + while (chunk.size() == 0) { + state.scanner->Scan(chunk); + if (chunk.size() == 0) { + break; + } + idx_t start = state.pos; + idx_t end = state.pos + chunk.size(); + state.pos = end; + + idx_t chunk_start = 0; + idx_t chunk_end = chunk.size(); + if (state.exclude_offset) { + // we need to exclude all tuples before the OFFSET + // check if we should include anything + if (end <= offset) { + // end is smaller than offset: include nothing! + chunk.Reset(); + continue; + } else if (start < offset) { + // we need to slice + chunk_start = offset - start; + } + } + // check if we need to truncate at the offset + limit mark + if (start >= offset + limit) { + // we are finished + chunk_end = 0; + } else if (end > offset + limit) { + // the end extends past the offset + limit + // truncate the current chunk + chunk_end = offset + limit - start; + } + D_ASSERT(chunk_end - chunk_start <= STANDARD_VECTOR_SIZE); + if (chunk_end == chunk_start) { + chunk.Reset(); + break; + } else if (chunk_start > 0) { + SelectionVector sel(STANDARD_VECTOR_SIZE); + for (idx_t i = chunk_start; i < chunk_end; i++) { + sel.set_index(i - chunk_start, i); + } + chunk.Slice(sel, chunk_end - chunk_start); + } else if (chunk_end != chunk.size()) { + chunk.SetCardinality(chunk_end); + } + } +} + +//===--------------------------------------------------------------------===// +// TopNHeap +//===--------------------------------------------------------------------===// +TopNHeap::TopNHeap(ClientContext &context_p, const vector &payload_types_p, + const vector &orders_p, idx_t limit, idx_t offset) + : context(context_p), payload_types(payload_types_p), orders(orders_p), limit(limit), offset(offset), + sort_state(*this), has_boundary_values(false), final_sel(STANDARD_VECTOR_SIZE), true_sel(STANDARD_VECTOR_SIZE), + false_sel(STANDARD_VECTOR_SIZE), new_remaining_sel(STANDARD_VECTOR_SIZE) { + // initialize the executor and the sort_chunk + vector sort_types; + for (auto &order : orders) { + auto &expr = order.expression; + sort_types.push_back(expr->return_type); + executor.AddExpression(*expr); + } + payload_chunk.Initialize(payload_types); + sort_chunk.Initialize(sort_types); + compare_chunk.Initialize(sort_types); + boundary_values.Initialize(sort_types); + sort_state.Initialize(); +} + +void TopNHeap::Sink(DataChunk &input) { + sort_state.Sink(input); } void TopNHeap::Combine(TopNHeap &other) { - for (idx_t i = 0; i < other.top_data.ChunkCount(); ++i) { - auto &top_chunk = other.top_data.GetChunk(i); - auto &heap_chunk = other.heap_data.GetChunk(i); - Append(top_chunk, heap_chunk); + other.Finalize(); + + TopNScanState state; + other.InitializeScan(state, false); + while (true) { + payload_chunk.Reset(); + other.Scan(state, payload_chunk); + if (payload_chunk.size() == 0) { + break; + } + Sink(payload_chunk); } + Reduce(); +} + +void TopNHeap::Finalize() { + sort_state.Finalize(); } void TopNHeap::Reduce() { - heap_size = (heap_data.Count() > offset) ? MinValue(limit + offset, heap_data.Count()) : 0; - if (heap_size == 0) { + idx_t min_sort_threshold = MaxValue(STANDARD_VECTOR_SIZE * 5, 2 * (limit + offset)); + if (sort_state.count < min_sort_threshold) { + // only reduce when we pass two times the limit + offset, or 5 vectors (whichever comes first) return; } + sort_state.Finalize(); + TopNSortState new_state(*this); + new_state.Initialize(); + + TopNScanState state; + sort_state.InitializeScan(state, false); + + DataChunk new_chunk; + new_chunk.Initialize(payload_types); + + DataChunk *current_chunk = &new_chunk; + DataChunk *prev_chunk = &payload_chunk; + has_boundary_values = false; + while (true) { + current_chunk->Reset(); + Scan(state, *current_chunk); + if (current_chunk->size() == 0) { + ExtractBoundaryValues(*current_chunk, *prev_chunk); + break; + } + new_state.Sink(*current_chunk); + std::swap(current_chunk, prev_chunk); + } - // create the heap - heap_data.Heap(order_types, null_order_types, heap.get(), heap_size); + sort_state.Move(new_state); +} - // extract the top rows into new collections - ChunkCollection new_top; - ChunkCollection new_heap; - DataChunk top_chunk; - top_chunk.Initialize(top_data.Types()); - DataChunk heap_chunk; - heap_chunk.Initialize(heap_data.Types()); - for (idx_t position = 0; position < heap_size;) { - (void)top_data.MaterializeHeapChunk(top_chunk, heap.get(), position, heap_size); - position = heap_data.MaterializeHeapChunk(heap_chunk, heap.get(), position, heap_size); - new_top.Append(top_chunk); - new_heap.Append(heap_chunk); +void TopNHeap::ExtractBoundaryValues(DataChunk ¤t_chunk, DataChunk &prev_chunk) { + // extract the last entry of the prev_chunk and set as minimum value + D_ASSERT(prev_chunk.size() > 0); + for (idx_t col_idx = 0; col_idx < current_chunk.ColumnCount(); col_idx++) { + ConstantVector::Reference(current_chunk.data[col_idx], prev_chunk.data[col_idx], prev_chunk.size() - 1, + prev_chunk.size()); } + current_chunk.SetCardinality(1); + executor.Execute(¤t_chunk, sort_chunk); - // replace the old data - std::swap(top_data, new_top); - std::swap(heap_data, new_heap); + boundary_values.Reset(); + boundary_values.Append(sort_chunk); + boundary_values.SetCardinality(1); + for (idx_t i = 0; i < boundary_values.ColumnCount(); i++) { + boundary_values.data[i].SetVectorType(VectorType::CONSTANT_VECTOR); + } + has_boundary_values = true; +} + +bool TopNHeap::CheckBoundaryValues(DataChunk &sort_chunk, DataChunk &payload) { + // we have boundary values + // from these boundary values, determine which values we should insert (if any) + idx_t final_count = 0; + + SelectionVector remaining_sel(nullptr); + idx_t remaining_count = sort_chunk.size(); + for (idx_t i = 0; i < orders.size(); i++) { + if (remaining_sel.data()) { + compare_chunk.data[i].Slice(sort_chunk.data[i], remaining_sel, remaining_count); + } else { + compare_chunk.data[i].Reference(sort_chunk.data[i]); + } + bool is_last = i + 1 == orders.size(); + idx_t true_count; + if (orders[i].null_order == OrderByNullType::NULLS_LAST) { + if (orders[i].type == OrderType::ASCENDING) { + true_count = VectorOperations::DistinctLessThan(compare_chunk.data[i], boundary_values.data[i], + &remaining_sel, remaining_count, &true_sel, &false_sel); + } else { + true_count = VectorOperations::DistinctGreaterThanNullsFirst(compare_chunk.data[i], + boundary_values.data[i], &remaining_sel, + remaining_count, &true_sel, &false_sel); + } + } else { + D_ASSERT(orders[i].null_order == OrderByNullType::NULLS_FIRST); + if (orders[i].type == OrderType::ASCENDING) { + true_count = VectorOperations::DistinctLessThanNullsFirst(compare_chunk.data[i], + boundary_values.data[i], &remaining_sel, + remaining_count, &true_sel, &false_sel); + } else { + true_count = + VectorOperations::DistinctGreaterThan(compare_chunk.data[i], boundary_values.data[i], + &remaining_sel, remaining_count, &true_sel, &false_sel); + } + } + + if (true_count > 0) { + memcpy(final_sel.data() + final_count, true_sel.data(), true_count * sizeof(sel_t)); + final_count += true_count; + } + idx_t false_count = remaining_count - true_count; + if (false_count > 0) { + // check what we should continue to check + remaining_count = VectorOperations::NotDistinctFrom(compare_chunk.data[i], boundary_values.data[i], + &false_sel, false_count, &new_remaining_sel, nullptr); + if (is_last) { + memcpy(final_sel.data() + final_count, new_remaining_sel.data(), remaining_count * sizeof(sel_t)); + final_count += remaining_count; + } else { + remaining_sel.Initialize(new_remaining_sel); + } + } else { + break; + } + } + if (final_count == 0) { + return false; + } + if (final_count < sort_chunk.size()) { + sort_chunk.Slice(final_sel, final_count); + payload.Slice(final_sel, final_count); + } + return true; +} + +void TopNHeap::InitializeScan(TopNScanState &state, bool exclude_offset) { + sort_state.InitializeScan(state, exclude_offset); +} + +void TopNHeap::Scan(TopNScanState &state, DataChunk &chunk) { + sort_state.Scan(state, chunk); } class TopNGlobalState : public GlobalOperatorState { public: - TopNGlobalState(const vector &orders, idx_t limit, idx_t offset) : heap(orders, limit, offset) { + TopNGlobalState(ClientContext &context, const vector &payload_types, + const vector &orders, idx_t limit, idx_t offset) + : heap(context, payload_types, orders, limit, offset) { } + mutex lock; TopNHeap heap; }; class TopNLocalState : public LocalSinkState { public: - TopNLocalState(const vector &orders, idx_t limit, idx_t offset) : heap(orders, limit, offset) { + TopNLocalState(ClientContext &context, const vector &payload_types, + const vector &orders, idx_t limit, idx_t offset) + : heap(context, payload_types, orders, limit, offset) { } + TopNHeap heap; }; unique_ptr PhysicalTopN::GetLocalSinkState(ExecutionContext &context) { - return make_unique(orders, limit, offset); + return make_unique(context.client, types, orders, limit, offset); } unique_ptr PhysicalTopN::GetGlobalState(ClientContext &context) { - return make_unique(orders, limit, offset); + return make_unique(context, types, orders, limit, offset); } //===--------------------------------------------------------------------===// @@ -58166,7 +58329,7 @@ void PhysicalTopN::Combine(ExecutionContext &context, GlobalOperatorState &state bool PhysicalTopN::Finalize(Pipeline &pipeline, ClientContext &context, unique_ptr state) { auto &gstate = (TopNGlobalState &)*state; // global finalize: compute the final top N - gstate.heap.Reduce(); + gstate.heap.Finalize(); PhysicalSink::Finalize(pipeline, context, move(state)); return true; @@ -58177,24 +58340,25 @@ bool PhysicalTopN::Finalize(Pipeline &pipeline, ClientContext &context, unique_p //===--------------------------------------------------------------------===// class PhysicalTopNOperatorState : public PhysicalOperatorState { public: - PhysicalTopNOperatorState(PhysicalOperator &op, PhysicalOperator *child) - : PhysicalOperatorState(op, child), position(0) { + PhysicalTopNOperatorState(PhysicalOperator &op, PhysicalOperator *child) : PhysicalOperatorState(op, child) { } - idx_t position; + TopNScanState state; + bool initialized = false; }; void PhysicalTopN::GetChunkInternal(ExecutionContext &context, DataChunk &chunk, PhysicalOperatorState *state_p) const { + if (limit == 0) { + return; + } auto &state = (PhysicalTopNOperatorState &)*state_p; auto &gstate = (TopNGlobalState &)*sink_state; - if (state.position >= gstate.heap.heap_size) { - return; - } else if (state.position < offset) { - state.position = offset; + if (!state.initialized) { + gstate.heap.InitializeScan(state.state, true); + state.initialized = true; } - - state.position = gstate.heap.MaterializeTopChunk(chunk, state.position); + gstate.heap.Scan(state.state, chunk); } unique_ptr PhysicalTopN::GetOperatorState() { @@ -58290,7 +58454,7 @@ struct StrTimeFormat { virtual ~StrTimeFormat() { } - static string ParseFormatSpecifier(string format_string, StrTimeFormat &format); + static string ParseFormatSpecifier(const string &format_string, StrTimeFormat &format); protected: //! The format specifiers @@ -58303,6 +58467,8 @@ struct StrTimeFormat { idx_t constant_size; //! The max numeric width of the specifier (if it is parsed as a number), or -1 if it is not a number vector numeric_width; + +protected: void AddLiteral(string literal); virtual void AddFormatSpecifier(string preceding_literal, StrTimeSpecifier specifier); }; @@ -58313,6 +58479,8 @@ struct StrfTimeFormat : public StrTimeFormat { void FormatString(date_t date, int32_t data[7], char *target); void FormatString(date_t date, dtime_t time, char *target); + static string Format(timestamp_t timestamp, const string &format); + protected: //! The variable-length specifiers. To determine total string size, these need to be checked. vector var_length_specifiers; @@ -58320,6 +58488,7 @@ struct StrfTimeFormat : public StrTimeFormat { //! generate) vector is_date_specifier; +protected: void AddFormatSpecifier(string preceding_literal, StrTimeSpecifier specifier) override; static idx_t GetSpecifierLength(StrTimeSpecifier specifier, date_t date, dtime_t time); char *WriteString(char *target, const string_t &str); @@ -65330,7 +65499,6 @@ class LogicalOrder : public LogicalOperator { } vector orders; - vector> statistics; string ParamsToString() const override { string result; @@ -65363,8 +65531,7 @@ unique_ptr PhysicalPlanGenerator::CreatePlan(LogicalOrder &op) auto plan = CreatePlan(*op.children[0]); if (!op.orders.empty()) { - auto order = - make_unique(op.types, move(op.orders), move(op.statistics), op.estimated_cardinality); + auto order = make_unique(op.types, move(op.orders), op.estimated_cardinality); order->children.push_back(move(plan)); plan = move(order); } @@ -65760,15 +65927,18 @@ unique_ptr PhysicalPlanGenerator::CreatePlan(LogicalSample &op + namespace duckdb { class LogicalSet : public LogicalOperator { public: - LogicalSet(std::string name_p, Value value_p) - : LogicalOperator(LogicalOperatorType::LOGICAL_SET), name(name_p), value(value_p) { + LogicalSet(std::string name_p, Value value_p, SetScope scope_p) + : LogicalOperator(LogicalOperatorType::LOGICAL_SET), name(name_p), value(value_p), scope(scope_p) { } + std::string name; Value value; + SetScope scope; protected: void ResolveTypes() override { @@ -65783,7 +65953,7 @@ class LogicalSet : public LogicalOperator { namespace duckdb { unique_ptr PhysicalPlanGenerator::CreatePlan(LogicalSet &op) { - return make_unique(op.name, op.value, op.estimated_cardinality); + return make_unique(op.name, op.value, op.scope, op.estimated_cardinality); } } // namespace duckdb @@ -65896,12 +66066,15 @@ struct ShowSelectInfo : public ParseInfo { unique_ptr query; //! Aliases of projected columns vector aliases; + //! Whether or not we are requesting a summary or a describe + bool is_summary; unique_ptr Copy() { auto result = make_unique(); result->types = types; result->query = query->Copy(); result->aliases = aliases; + result->is_summary = is_summary; return result; } }; @@ -68771,12 +68944,12 @@ struct FirstFunctionString : public FirstFunctionBase { } }; -struct FirstStateValue { - Value *value; +struct FirstStateVector { + Vector *value; }; template -struct FirstValueFunction { +struct FirstVectorFunction { template static void Initialize(STATE *state) { state->value = nullptr; @@ -68793,9 +68966,14 @@ struct FirstValueFunction { } template - static void SetValue(STATE *state, const Value &value) { - Destroy(state); - state->value = new Value(value); + static void SetValue(STATE *state, Vector &input, const idx_t idx) { + if (!state->value) { + state->value = new Vector(input.GetType()); + state->value->SetVectorType(VectorType::CONSTANT_VECTOR); + } + sel_t selv = idx; + SelectionVector sel(&selv); + VectorOperations::Copy(input, *state->value, sel, 1, 0, 0); } static void Update(Vector inputs[], FunctionData *, idx_t input_count, Vector &state_vector, idx_t count) { @@ -68803,11 +68981,11 @@ struct FirstValueFunction { VectorData sdata; state_vector.Orrify(count, sdata); - auto states = (FirstStateValue **)sdata.data; + auto states = (FirstStateVector **)sdata.data; for (idx_t i = 0; i < count; i++) { auto state = states[sdata.sel->get_index(i)]; if (LAST || !state->value) { - SetValue(state, input.GetValue(i)); + SetValue(state, input, i); } } } @@ -68815,16 +68993,23 @@ struct FirstValueFunction { template static void Combine(const STATE &source, STATE *target) { if (source.value && (LAST || !target->value)) { - target->value = new Value(*source.value); + SetValue(target, *source.value, 0); } } template static void Finalize(Vector &result, FunctionData *, STATE *state, T *target, ValidityMask &mask, idx_t idx) { if (!state->value) { - mask.SetInvalid(idx); + // we need to use FlatVector::SetNull here + // since for STRUCT columns only setting the validity mask of the struct is incorrect + // as for a struct column, we need to also set ALL child columns to NULL + if (result.GetVectorType() == VectorType::CONSTANT_VECTOR) { + ConstantVector::SetNull(result, true); + } else { + FlatVector::SetNull(result, idx, true); + } } else { - result.SetValue(idx, *state->value); + VectorOperations::Copy(*state->value, result, 1, 0, idx); } } @@ -68908,12 +69093,12 @@ static AggregateFunction GetFirstFunction(const LogicalType &type) { return function; } default: { - using OP = FirstValueFunction; - return AggregateFunction({type}, type, AggregateFunction::StateSize, - AggregateFunction::StateInitialize, OP::Update, - AggregateFunction::StateCombine, - AggregateFunction::StateFinalize, nullptr, OP::Bind, - AggregateFunction::StateDestroy, nullptr, nullptr, true); + using OP = FirstVectorFunction; + return AggregateFunction({type}, type, AggregateFunction::StateSize, + AggregateFunction::StateInitialize, OP::Update, + AggregateFunction::StateCombine, + AggregateFunction::StateFinalize, nullptr, OP::Bind, + AggregateFunction::StateDestroy, nullptr, nullptr, true); } } } @@ -71314,6 +71499,11 @@ void ModeFun::RegisterFunction(BuiltinFunctions &set) { namespace duckdb { +// HUGEINT scaling by a double +hugeint_t operator*(const hugeint_t &h, const double &d) { + return Hugeint::Convert(Hugeint::Cast(h) * d); +} + using FrameBounds = std::pair; struct QuantileState { @@ -71449,7 +71639,7 @@ struct IndirectLess { template struct Interpolator { - Interpolator(const float q, const idx_t n_p) : n(n_p), RN((double)(n_p - 1) * q), FRN(floor(RN)), CRN(ceil(RN)) { + Interpolator(const double q, const idx_t n_p) : n(n_p), RN((double)(n_p - 1) * q), FRN(floor(RN)), CRN(ceil(RN)) { } TARGET_TYPE operator()(INPUT_TYPE *v_t) const { @@ -71485,7 +71675,7 @@ struct Interpolator { template struct Interpolator { - Interpolator(const float q, const idx_t n_p) : n(n_p), RN((double)(n_p - 1) * q), FRN(floor(RN)), CRN(FRN) { + Interpolator(const double q, const idx_t n_p) : n(n_p), RN((double)(n_p - 1) * q), FRN(floor(RN)), CRN(FRN) { } TARGET_TYPE operator()(INPUT_TYPE *v_t) const { @@ -71504,15 +71694,15 @@ struct Interpolator { }; struct QuantileBindData : public FunctionData { - explicit QuantileBindData(float quantile_p) : quantiles(1, quantile_p), order(1, 0) { + explicit QuantileBindData(double quantile_p) : quantiles(1, quantile_p), order(1, 0) { } - explicit QuantileBindData(const vector &quantiles_p) : quantiles(quantiles_p) { + explicit QuantileBindData(const vector &quantiles_p) : quantiles(quantiles_p) { for (idx_t i = 0; i < quantiles.size(); ++i) { order.push_back(i); } - IndirectLess lt(quantiles.data()); + IndirectLess lt(quantiles.data()); std::sort(order.begin(), order.end(), lt); } @@ -71525,7 +71715,7 @@ struct QuantileBindData : public FunctionData { return quantiles == other.quantiles; } - vector quantiles; + vector quantiles; vector order; }; @@ -71951,7 +72141,7 @@ AggregateFunction GetContinuousQuantileAggregateFunction(const LogicalType &type case PhysicalType::INT128: return GetTypedContinuousQuantileAggregateFunction(type, type); default: - throw NotImplementedException("Unimplemented discrete quantile list aggregate"); + throw NotImplementedException("Unimplemented continuous quantile DECIMAL aggregate"); } break; @@ -71963,7 +72153,7 @@ AggregateFunction GetContinuousQuantileAggregateFunction(const LogicalType &type return GetTypedContinuousQuantileAggregateFunction(type, type); default: - throw NotImplementedException("Unimplemented discrete quantile list aggregate"); + throw NotImplementedException("Unimplemented continuous quantile aggregate"); } } @@ -71997,15 +72187,15 @@ AggregateFunction GetContinuousQuantileListAggregateFunction(const LogicalType & case LogicalTypeId::DECIMAL: switch (type.InternalType()) { case PhysicalType::INT16: - return GetTypedContinuousQuantileListAggregateFunction(type, LogicalType::DOUBLE); + return GetTypedContinuousQuantileListAggregateFunction(type, type); case PhysicalType::INT32: - return GetTypedContinuousQuantileListAggregateFunction(type, LogicalType::DOUBLE); + return GetTypedContinuousQuantileListAggregateFunction(type, type); case PhysicalType::INT64: - return GetTypedContinuousQuantileListAggregateFunction(type, LogicalType::DOUBLE); + return GetTypedContinuousQuantileListAggregateFunction(type, type); case PhysicalType::INT128: - return GetTypedContinuousQuantileListAggregateFunction(type, LogicalType::DOUBLE); + return GetTypedContinuousQuantileListAggregateFunction(type, type); default: - throw NotImplementedException("Unimplemented discrete quantile list aggregate"); + throw NotImplementedException("Unimplemented discrete quantile DECIMAL list aggregate"); } break; @@ -72035,8 +72225,8 @@ unique_ptr BindMedianDecimal(ClientContext &context, AggregateFunc return bind_data; } -static float CheckQuantile(const Value &quantile_val) { - auto quantile = quantile_val.GetValue(); +static double CheckQuantile(const Value &quantile_val) { + auto quantile = quantile_val.GetValue(); if (quantile_val.is_null || quantile < 0 || quantile > 1) { throw BinderException("QUANTILE can only take parameters in the range [0, 1]"); @@ -72051,7 +72241,7 @@ unique_ptr BindQuantile(ClientContext &context, AggregateFunction throw BinderException("QUANTILE can only take constant parameters"); } Value quantile_val = ExpressionExecutor::EvaluateScalar(*arguments[1]); - vector quantiles; + vector quantiles; if (quantile_val.type().id() != LogicalTypeId::LIST) { quantiles.push_back(CheckQuantile(quantile_val)); } else { @@ -72072,6 +72262,14 @@ unique_ptr BindDiscreteQuantileDecimal(ClientContext &context, Agg return bind_data; } +unique_ptr BindDiscreteQuantileDecimalList(ClientContext &context, AggregateFunction &function, + vector> &arguments) { + auto bind_data = BindQuantile(context, function, arguments); + function = GetDiscreteQuantileListAggregateFunction(arguments[0]->return_type); + function.name = "quantile_disc"; + return bind_data; +} + unique_ptr BindContinuousQuantileDecimal(ClientContext &context, AggregateFunction &function, vector> &arguments) { auto bind_data = BindQuantile(context, function, arguments); @@ -72080,6 +72278,14 @@ unique_ptr BindContinuousQuantileDecimal(ClientContext &context, A return bind_data; } +unique_ptr BindContinuousQuantileDecimalList(ClientContext &context, AggregateFunction &function, + vector> &arguments) { + auto bind_data = BindQuantile(context, function, arguments); + function = GetContinuousQuantileListAggregateFunction(arguments[0]->return_type); + function.name = "quantile_cont"; + return bind_data; +} + AggregateFunction GetMedianAggregate(const LogicalType &type) { auto fun = (type.id() != LogicalTypeId::INTERVAL) ? GetContinuousQuantileAggregateFunction(type) : GetDiscreteQuantileAggregateFunction(type); @@ -72091,7 +72297,7 @@ AggregateFunction GetDiscreteQuantileAggregate(const LogicalType &type) { auto fun = GetDiscreteQuantileAggregateFunction(type); fun.bind = BindQuantile; // temporarily push an argument so we can bind the actual quantile - fun.arguments.push_back(LogicalType::FLOAT); + fun.arguments.push_back(LogicalType::DOUBLE); return fun; } @@ -72099,8 +72305,8 @@ AggregateFunction GetDiscreteQuantileListAggregate(const LogicalType &type) { auto fun = GetDiscreteQuantileListAggregateFunction(type); fun.bind = BindQuantile; // temporarily push an argument so we can bind the actual quantile - auto list_of_float = LogicalType::LIST(LogicalType::FLOAT); - fun.arguments.push_back(list_of_float); + auto list_of_double = LogicalType::LIST(LogicalType::DOUBLE); + fun.arguments.push_back(list_of_double); return fun; } @@ -72108,7 +72314,7 @@ AggregateFunction GetContinuousQuantileAggregate(const LogicalType &type) { auto fun = GetContinuousQuantileAggregateFunction(type); fun.bind = BindQuantile; // temporarily push an argument so we can bind the actual quantile - fun.arguments.push_back(LogicalType::FLOAT); + fun.arguments.push_back(LogicalType::DOUBLE); return fun; } @@ -72132,14 +72338,20 @@ void QuantileFun::RegisterFunction(BuiltinFunctions &set) { nullptr, nullptr, nullptr, BindMedianDecimal)); AggregateFunctionSet quantile_disc("quantile_disc"); - quantile_disc.AddFunction(AggregateFunction({LogicalTypeId::DECIMAL, LogicalType::FLOAT}, LogicalTypeId::DECIMAL, + quantile_disc.AddFunction(AggregateFunction({LogicalTypeId::DECIMAL, LogicalType::DOUBLE}, LogicalTypeId::DECIMAL, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, BindDiscreteQuantileDecimal)); + quantile_disc.AddFunction(AggregateFunction({LogicalTypeId::DECIMAL, LogicalType::LIST(LogicalType::DOUBLE)}, + LogicalType::LIST(LogicalTypeId::DECIMAL), nullptr, nullptr, nullptr, + nullptr, nullptr, nullptr, BindDiscreteQuantileDecimalList)); AggregateFunctionSet quantile_cont("quantile_cont"); - quantile_cont.AddFunction(AggregateFunction({LogicalTypeId::DECIMAL, LogicalType::FLOAT}, LogicalTypeId::DECIMAL, + quantile_cont.AddFunction(AggregateFunction({LogicalTypeId::DECIMAL, LogicalType::DOUBLE}, LogicalTypeId::DECIMAL, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, BindContinuousQuantileDecimal)); + quantile_cont.AddFunction(AggregateFunction({LogicalTypeId::DECIMAL, LogicalType::LIST(LogicalType::DOUBLE)}, + LogicalType::LIST(LogicalTypeId::DECIMAL), nullptr, nullptr, nullptr, + nullptr, nullptr, nullptr, BindContinuousQuantileDecimalList)); for (const auto &type : QUANTILES) { median.AddFunction(GetMedianAggregate(type)); @@ -74534,6 +74746,7 @@ AggregateFunction::BindAggregateFunction(ClientContext &context, AggregateFuncti + namespace duckdb { MacroFunction::MacroFunction(unique_ptr expression) : expression(move(expression)) { @@ -74545,14 +74758,14 @@ string MacroFunction::ValidateArguments(MacroCatalogEntry ¯o_func, FunctionE // separate positional and default arguments auto ¯o_def = *macro_func.function; for (auto &arg : function_expr.children) { - if (arg->type == ExpressionType::COMPARE_EQUAL) { + if (arg->type == ExpressionType::VALUE_CONSTANT && !arg->alias.empty()) { // default argument - auto &comp_expr = (ComparisonExpression &)*arg; - if (macro_def.default_parameters.find(comp_expr.left->ToString()) == macro_def.default_parameters.end()) { - return StringUtil::Format("Macro '%s()' does not have default parameter '%'s", macro_func.name, - comp_expr.left->ToString()); + if (macro_def.default_parameters.find(arg->alias) == macro_def.default_parameters.end()) { + return StringUtil::Format("Macro %s does not have default parameter %s!", macro_func.name, arg->alias); + } else if (defaults.find(arg->alias) != defaults.end()) { + return StringUtil::Format("Duplicate default parameters %s!", arg->alias); } - defaults[comp_expr.left->ToString()] = move(comp_expr.right); + defaults[arg->alias] = move(arg); } else if (!defaults.empty()) { return "Positional parameters cannot come after parameters with a default value!"; } else { @@ -77475,1854 +77688,680 @@ void EpochFun::RegisterFunction(BuiltinFunctions &set) { +#include +namespace duckdb { -// LICENSE_CHANGE_BEGIN -// The following code up to LICENSE_CHANGE_END is subject to THIRD PARTY LICENSE #6 -// See the end of this file for a list - -// Copyright 2003-2009 The RE2 Authors. All Rights Reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -#ifndef RE2_RE2_H_ -#define RE2_RE2_H_ - -// C++ interface to the re2 regular-expression library. -// RE2 supports Perl-style regular expressions (with extensions like -// \d, \w, \s, ...). -// -// ----------------------------------------------------------------------- -// REGEXP SYNTAX: -// -// This module uses the re2 library and hence supports -// its syntax for regular expressions, which is similar to Perl's with -// some of the more complicated things thrown away. In particular, -// backreferences and generalized assertions are not available, nor is \Z. -// -// See https://github.com/google/re2/wiki/Syntax for the syntax -// supported by RE2, and a comparison with PCRE and PERL regexps. -// -// For those not familiar with Perl's regular expressions, -// here are some examples of the most commonly used extensions: -// -// "hello (\\w+) world" -- \w matches a "word" character -// "version (\\d+)" -- \d matches a digit -// "hello\\s+world" -- \s matches any whitespace character -// "\\b(\\w+)\\b" -- \b matches non-empty string at word boundary -// "(?i)hello" -- (?i) turns on case-insensitive matching -// "/\\*(.*?)\\*/" -- .*? matches . minimum no. of times possible -// -// ----------------------------------------------------------------------- -// MATCHING INTERFACE: -// -// The "FullMatch" operation checks that supplied text matches a -// supplied pattern exactly. -// -// Example: successful match -// CHECK(RE2::FullMatch("hello", "h.*o")); -// -// Example: unsuccessful match (requires full match): -// CHECK(!RE2::FullMatch("hello", "e")); -// -// ----------------------------------------------------------------------- -// UTF-8 AND THE MATCHING INTERFACE: -// -// By default, the pattern and input text are interpreted as UTF-8. -// The RE2::Latin1 option causes them to be interpreted as Latin-1. -// -// Example: -// CHECK(RE2::FullMatch(utf8_string, RE2(utf8_pattern))); -// CHECK(RE2::FullMatch(latin1_string, RE2(latin1_pattern, RE2::Latin1))); -// -// ----------------------------------------------------------------------- -// MATCHING WITH SUBSTRING EXTRACTION: -// -// You can supply extra pointer arguments to extract matched substrings. -// On match failure, none of the pointees will have been modified. -// On match success, the substrings will be converted (as necessary) and -// their values will be assigned to their pointees until all conversions -// have succeeded or one conversion has failed. -// On conversion failure, the pointees will be in an indeterminate state -// because the caller has no way of knowing which conversion failed. -// However, conversion cannot fail for types like string and StringPiece -// that do not inspect the substring contents. Hence, in the common case -// where all of the pointees are of such types, failure is always due to -// match failure and thus none of the pointees will have been modified. -// -// Example: extracts "ruby" into "s" and 1234 into "i" -// int i; -// std::string s; -// CHECK(RE2::FullMatch("ruby:1234", "(\\w+):(\\d+)", &s, &i)); -// -// Example: fails because string cannot be stored in integer -// CHECK(!RE2::FullMatch("ruby", "(.*)", &i)); -// -// Example: fails because there aren't enough sub-patterns -// CHECK(!RE2::FullMatch("ruby:1234", "\\w+:\\d+", &s)); -// -// Example: does not try to extract any extra sub-patterns -// CHECK(RE2::FullMatch("ruby:1234", "(\\w+):(\\d+)", &s)); -// -// Example: does not try to extract into NULL -// CHECK(RE2::FullMatch("ruby:1234", "(\\w+):(\\d+)", NULL, &i)); -// -// Example: integer overflow causes failure -// CHECK(!RE2::FullMatch("ruby:1234567891234", "\\w+:(\\d+)", &i)); -// -// NOTE(rsc): Asking for substrings slows successful matches quite a bit. -// This may get a little faster in the future, but right now is slower -// than PCRE. On the other hand, failed matches run *very* fast (faster -// than PCRE), as do matches without substring extraction. -// -// ----------------------------------------------------------------------- -// PARTIAL MATCHES -// -// You can use the "PartialMatch" operation when you want the pattern -// to match any substring of the text. -// -// Example: simple search for a string: -// CHECK(RE2::PartialMatch("hello", "ell")); -// -// Example: find first number in a string -// int number; -// CHECK(RE2::PartialMatch("x*100 + 20", "(\\d+)", &number)); -// CHECK_EQ(number, 100); -// -// ----------------------------------------------------------------------- -// PRE-COMPILED REGULAR EXPRESSIONS -// -// RE2 makes it easy to use any string as a regular expression, without -// requiring a separate compilation step. -// -// If speed is of the essence, you can create a pre-compiled "RE2" -// object from the pattern and use it multiple times. If you do so, -// you can typically parse text faster than with sscanf. -// -// Example: precompile pattern for faster matching: -// RE2 pattern("h.*o"); -// while (ReadLine(&str)) { -// if (RE2::FullMatch(str, pattern)) ...; -// } -// -// ----------------------------------------------------------------------- -// SCANNING TEXT INCREMENTALLY -// -// The "Consume" operation may be useful if you want to repeatedly -// match regular expressions at the front of a string and skip over -// them as they match. This requires use of the "StringPiece" type, -// which represents a sub-range of a real string. -// -// Example: read lines of the form "var = value" from a string. -// std::string contents = ...; // Fill string somehow -// StringPiece input(contents); // Wrap a StringPiece around it -// -// std::string var; -// int value; -// while (RE2::Consume(&input, "(\\w+) = (\\d+)\n", &var, &value)) { -// ...; -// } -// -// Each successful call to "Consume" will set "var/value", and also -// advance "input" so it points past the matched text. Note that if the -// regular expression matches an empty string, input will advance -// by 0 bytes. If the regular expression being used might match -// an empty string, the loop body must check for this case and either -// advance the string or break out of the loop. -// -// The "FindAndConsume" operation is similar to "Consume" but does not -// anchor your match at the beginning of the string. For example, you -// could extract all words from a string by repeatedly calling -// RE2::FindAndConsume(&input, "(\\w+)", &word) -// -// ----------------------------------------------------------------------- -// USING VARIABLE NUMBER OF ARGUMENTS -// -// The above operations require you to know the number of arguments -// when you write the code. This is not always possible or easy (for -// example, the regular expression may be calculated at run time). -// You can use the "N" version of the operations when the number of -// match arguments are determined at run time. -// -// Example: -// const RE2::Arg* args[10]; -// int n; -// // ... populate args with pointers to RE2::Arg values ... -// // ... set n to the number of RE2::Arg objects ... -// bool match = RE2::FullMatchN(input, pattern, args, n); -// -// The last statement is equivalent to -// -// bool match = RE2::FullMatch(input, pattern, -// *args[0], *args[1], ..., *args[n - 1]); -// -// ----------------------------------------------------------------------- -// PARSING HEX/OCTAL/C-RADIX NUMBERS -// -// By default, if you pass a pointer to a numeric value, the -// corresponding text is interpreted as a base-10 number. You can -// instead wrap the pointer with a call to one of the operators Hex(), -// Octal(), or CRadix() to interpret the text in another base. The -// CRadix operator interprets C-style "0" (base-8) and "0x" (base-16) -// prefixes, but defaults to base-10. -// -// Example: -// int a, b, c, d; -// CHECK(RE2::FullMatch("100 40 0100 0x40", "(.*) (.*) (.*) (.*)", -// RE2::Octal(&a), RE2::Hex(&b), RE2::CRadix(&c), RE2::CRadix(&d)); -// will leave 64 in a, b, c, and d. - -#include -#include -#include -#include -#include -#include - - - -// LICENSE_CHANGE_BEGIN -// The following code up to LICENSE_CHANGE_END is subject to THIRD PARTY LICENSE #6 -// See the end of this file for a list +idx_t StrfTimepecifierSize(StrTimeSpecifier specifier) { + switch (specifier) { + case StrTimeSpecifier::ABBREVIATED_WEEKDAY_NAME: + case StrTimeSpecifier::ABBREVIATED_MONTH_NAME: + return 3; + case StrTimeSpecifier::WEEKDAY_DECIMAL: + return 1; + case StrTimeSpecifier::DAY_OF_MONTH_PADDED: + case StrTimeSpecifier::MONTH_DECIMAL_PADDED: + case StrTimeSpecifier::YEAR_WITHOUT_CENTURY_PADDED: + case StrTimeSpecifier::HOUR_24_PADDED: + case StrTimeSpecifier::HOUR_12_PADDED: + case StrTimeSpecifier::MINUTE_PADDED: + case StrTimeSpecifier::SECOND_PADDED: + case StrTimeSpecifier::AM_PM: + case StrTimeSpecifier::WEEK_NUMBER_PADDED_SUN_FIRST: + case StrTimeSpecifier::WEEK_NUMBER_PADDED_MON_FIRST: + return 2; + case StrTimeSpecifier::MICROSECOND_PADDED: + return 6; + case StrTimeSpecifier::MILLISECOND_PADDED: + return 3; + case StrTimeSpecifier::DAY_OF_YEAR_PADDED: + return 3; + default: + return 0; + } +} -// Copyright 2001-2010 The RE2 Authors. All Rights Reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +void StrTimeFormat::AddLiteral(string literal) { + constant_size += literal.size(); + literals.push_back(move(literal)); +} -#ifndef RE2_STRINGPIECE_H_ -#define RE2_STRINGPIECE_H_ +void StrTimeFormat::AddFormatSpecifier(string preceding_literal, StrTimeSpecifier specifier) { + AddLiteral(move(preceding_literal)); + specifiers.push_back(specifier); +} -#ifdef min -#undef min -#endif +void StrfTimeFormat::AddFormatSpecifier(string preceding_literal, StrTimeSpecifier specifier) { + is_date_specifier.push_back(IsDateSpecifier(specifier)); + idx_t specifier_size = StrfTimepecifierSize(specifier); + if (specifier_size == 0) { + // variable length specifier + var_length_specifiers.push_back(specifier); + } else { + // constant size specifier + constant_size += specifier_size; + } + StrTimeFormat::AddFormatSpecifier(move(preceding_literal), specifier); +} -// A string-like object that points to a sized piece of memory. -// -// Functions or methods may use const StringPiece& parameters to accept either -// a "const char*" or a "string" value that will be implicitly converted to -// a StringPiece. The implicit conversion means that it is often appropriate -// to include this .h file in other files rather than forward-declaring -// StringPiece as would be appropriate for most other Google classes. -// -// Systematic usage of StringPiece is encouraged as it will reduce unnecessary -// conversions from "const char*" to "string" and back again. -// -// -// Arghh! I wish C++ literals were "string". +idx_t StrfTimeFormat::GetSpecifierLength(StrTimeSpecifier specifier, date_t date, dtime_t time) { + switch (specifier) { + case StrTimeSpecifier::FULL_WEEKDAY_NAME: + return Date::DAY_NAMES[Date::ExtractISODayOfTheWeek(date) % 7].GetSize(); + case StrTimeSpecifier::FULL_MONTH_NAME: + return Date::MONTH_NAMES[Date::ExtractMonth(date) - 1].GetSize(); + case StrTimeSpecifier::YEAR_DECIMAL: { + auto year = Date::ExtractYear(date); + return NumericHelper::SignedLength(year); + } + case StrTimeSpecifier::MONTH_DECIMAL: { + idx_t len = 1; + auto month = Date::ExtractMonth(date); + len += month >= 10; + return len; + } + case StrTimeSpecifier::UTC_OFFSET: + // +00 + return 3; + case StrTimeSpecifier::TZ_NAME: + // empty for now + return 0; + case StrTimeSpecifier::HOUR_24_DECIMAL: + case StrTimeSpecifier::HOUR_12_DECIMAL: + case StrTimeSpecifier::MINUTE_DECIMAL: + case StrTimeSpecifier::SECOND_DECIMAL: { + // time specifiers + idx_t len = 1; + int32_t hour, min, sec, msec; + Time::Convert(time, hour, min, sec, msec); + switch (specifier) { + case StrTimeSpecifier::HOUR_24_DECIMAL: + len += hour >= 10; + break; + case StrTimeSpecifier::HOUR_12_DECIMAL: + hour = hour % 12; + if (hour == 0) { + hour = 12; + } + len += hour >= 10; + break; + case StrTimeSpecifier::MINUTE_DECIMAL: + len += min >= 10; + break; + case StrTimeSpecifier::SECOND_DECIMAL: + len += sec >= 10; + break; + default: + throw InternalException("Time specifier mismatch"); + } + return len; + } + case StrTimeSpecifier::DAY_OF_MONTH: + return NumericHelper::UnsignedLength(Date::ExtractDay(date)); + case StrTimeSpecifier::DAY_OF_YEAR_DECIMAL: + return NumericHelper::UnsignedLength(Date::ExtractDayOfTheYear(date)); + case StrTimeSpecifier::YEAR_WITHOUT_CENTURY: + return NumericHelper::UnsignedLength(Date::ExtractYear(date) % 100); + default: + throw InternalException("Unimplemented specifier for GetSpecifierLength"); + } +} -// Doing this simplifies the logic below. -#ifndef __has_include -#define __has_include(x) 0 -#endif +//! Returns the total length of the date formatted by this format specifier +idx_t StrfTimeFormat::GetLength(date_t date, dtime_t time) { + idx_t size = constant_size; + if (!var_length_specifiers.empty()) { + for (auto &specifier : var_length_specifiers) { + size += GetSpecifierLength(specifier, date, time); + } + } + return size; +} -#include -#include -#include -#include -#include -#include -#if __has_include() && __cplusplus >= 201703L -#include -#endif +char *StrfTimeFormat::WriteString(char *target, const string_t &str) { + idx_t size = str.GetSize(); + memcpy(target, str.GetDataUnsafe(), size); + return target + size; +} -namespace duckdb_re2 { +// write a value in the range of 0..99 unpadded (e.g. "1", "2", ... "98", "99") +char *StrfTimeFormat::Write2(char *target, uint8_t value) { + D_ASSERT(value < 100); + if (value >= 10) { + return WritePadded2(target, value); + } else { + *target = char(uint8_t('0') + value); + return target + 1; + } +} -class StringPiece { - public: - typedef std::char_traits traits_type; - typedef char value_type; - typedef char* pointer; - typedef const char* const_pointer; - typedef char& reference; - typedef const char& const_reference; - typedef const char* const_iterator; - typedef const_iterator iterator; - typedef std::reverse_iterator const_reverse_iterator; - typedef const_reverse_iterator reverse_iterator; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - static const size_type npos = static_cast(-1); +// write a value in the range of 0..99 padded to 2 digits +char *StrfTimeFormat::WritePadded2(char *target, int32_t value) { + D_ASSERT(value < 100); + auto index = static_cast(value * 2); + *target++ = duckdb_fmt::internal::data::digits[index]; + *target++ = duckdb_fmt::internal::data::digits[index + 1]; + return target; +} - // We provide non-explicit singleton constructors so users can pass - // in a "const char*" or a "string" wherever a "StringPiece" is - // expected. - StringPiece() - : data_(NULL), size_(0) {} -#if __has_include() && __cplusplus >= 201703L - StringPiece(const std::string_view& str) - : data_(str.data()), size_(str.size()) {} -#endif - StringPiece(const std::string& str) - : data_(str.data()), size_(str.size()) {} - StringPiece(const char* str) - : data_(str), size_(str == NULL ? 0 : strlen(str)) {} - StringPiece(const char* str, size_type len) - : data_(str), size_(len) {} +// write a value in the range of 0..999 padded +char *StrfTimeFormat::WritePadded3(char *target, uint32_t value) { + D_ASSERT(value < 1000); + if (value >= 100) { + WritePadded2(target + 1, value % 100); + *target = char(uint8_t('0') + value / 100); + return target + 3; + } else { + *target = '0'; + target++; + return WritePadded2(target, value); + } +} - const_iterator begin() const { return data_; } - const_iterator end() const { return data_ + size_; } - const_reverse_iterator rbegin() const { - return const_reverse_iterator(data_ + size_); - } - const_reverse_iterator rend() const { - return const_reverse_iterator(data_); - } +// write a value in the range of 0..999999 padded to 6 digits +char *StrfTimeFormat::WritePadded(char *target, int32_t value, int32_t padding) { + D_ASSERT(padding % 2 == 0); + for (int i = 0; i < padding / 2; i++) { + int decimals = value % 100; + WritePadded2(target + padding - 2 * (i + 1), decimals); + value /= 100; + } + return target + padding; +} - size_type size() const { return size_; } - size_type length() const { return size_; } - bool empty() const { return size_ == 0; } +bool StrfTimeFormat::IsDateSpecifier(StrTimeSpecifier specifier) { + switch (specifier) { + case StrTimeSpecifier::ABBREVIATED_WEEKDAY_NAME: + case StrTimeSpecifier::FULL_WEEKDAY_NAME: + case StrTimeSpecifier::DAY_OF_YEAR_PADDED: + case StrTimeSpecifier::DAY_OF_YEAR_DECIMAL: + case StrTimeSpecifier::WEEK_NUMBER_PADDED_MON_FIRST: + case StrTimeSpecifier::WEEK_NUMBER_PADDED_SUN_FIRST: + case StrTimeSpecifier::WEEKDAY_DECIMAL: + return true; + default: + return false; + } +} - const_reference operator[](size_type i) const { return data_[i]; } - const_pointer data() const { return data_; } +char *StrfTimeFormat::WriteDateSpecifier(StrTimeSpecifier specifier, date_t date, char *target) { + switch (specifier) { + case StrTimeSpecifier::ABBREVIATED_WEEKDAY_NAME: { + auto dow = Date::ExtractISODayOfTheWeek(date); + target = WriteString(target, Date::DAY_NAMES_ABBREVIATED[dow % 7]); + break; + } + case StrTimeSpecifier::FULL_WEEKDAY_NAME: { + auto dow = Date::ExtractISODayOfTheWeek(date); + target = WriteString(target, Date::DAY_NAMES[dow % 7]); + break; + } + case StrTimeSpecifier::WEEKDAY_DECIMAL: { + auto dow = Date::ExtractISODayOfTheWeek(date); + *target = char('0' + uint8_t(dow % 7)); + target++; + break; + } + case StrTimeSpecifier::DAY_OF_YEAR_PADDED: { + int32_t doy = Date::ExtractDayOfTheYear(date); + target = WritePadded3(target, doy); + break; + } + case StrTimeSpecifier::WEEK_NUMBER_PADDED_MON_FIRST: + target = WritePadded2(target, Date::ExtractWeekNumberRegular(date, true)); + break; + case StrTimeSpecifier::WEEK_NUMBER_PADDED_SUN_FIRST: + target = WritePadded2(target, Date::ExtractWeekNumberRegular(date, false)); + break; + case StrTimeSpecifier::DAY_OF_YEAR_DECIMAL: { + uint32_t doy = Date::ExtractDayOfTheYear(date); + target += NumericHelper::UnsignedLength(doy); + NumericHelper::FormatUnsigned(doy, target); + break; + } + default: + throw InternalException("Unimplemented date specifier for strftime"); + } + return target; +} - void remove_prefix(size_type n) { - data_ += n; - size_ -= n; - } +char *StrfTimeFormat::WriteStandardSpecifier(StrTimeSpecifier specifier, int32_t data[], char *target) { + // data contains [0] year, [1] month, [2] day, [3] hour, [4] minute, [5] second, [6] msec + switch (specifier) { + case StrTimeSpecifier::DAY_OF_MONTH_PADDED: + target = WritePadded2(target, data[2]); + break; + case StrTimeSpecifier::ABBREVIATED_MONTH_NAME: { + auto &month_name = Date::MONTH_NAMES_ABBREVIATED[data[1] - 1]; + return WriteString(target, month_name); + } + case StrTimeSpecifier::FULL_MONTH_NAME: { + auto &month_name = Date::MONTH_NAMES[data[1] - 1]; + return WriteString(target, month_name); + } + case StrTimeSpecifier::MONTH_DECIMAL_PADDED: + target = WritePadded2(target, data[1]); + break; + case StrTimeSpecifier::YEAR_WITHOUT_CENTURY_PADDED: + target = WritePadded2(target, AbsValue(data[0]) % 100); + break; + case StrTimeSpecifier::YEAR_DECIMAL: + if (data[0] >= 0 && data[0] <= 9999) { + target = WritePadded(target, data[0], 4); + } else { + int32_t year = data[0]; + if (data[0] < 0) { + *target = '-'; + year = -year; + target++; + } + auto len = NumericHelper::UnsignedLength(year); + NumericHelper::FormatUnsigned(year, target + len); + target += len; + } + break; + case StrTimeSpecifier::HOUR_24_PADDED: { + target = WritePadded2(target, data[3]); + break; + } + case StrTimeSpecifier::HOUR_12_PADDED: { + int hour = data[3] % 12; + if (hour == 0) { + hour = 12; + } + target = WritePadded2(target, hour); + break; + } + case StrTimeSpecifier::AM_PM: + *target++ = data[3] >= 12 ? 'P' : 'A'; + *target++ = 'M'; + break; + case StrTimeSpecifier::MINUTE_PADDED: { + target = WritePadded2(target, data[4]); + break; + } + case StrTimeSpecifier::SECOND_PADDED: + target = WritePadded2(target, data[5]); + break; + case StrTimeSpecifier::MICROSECOND_PADDED: + target = WritePadded(target, data[6], 6); + break; + case StrTimeSpecifier::MILLISECOND_PADDED: + target = WritePadded3(target, data[6] / 1000); + break; + case StrTimeSpecifier::UTC_OFFSET: + *target++ = '+'; + *target++ = '0'; + *target++ = '0'; + break; + case StrTimeSpecifier::TZ_NAME: + // always empty for now, FIXME when we have timestamp with tz + break; + case StrTimeSpecifier::DAY_OF_MONTH: { + target = Write2(target, data[2] % 100); + break; + } + case StrTimeSpecifier::MONTH_DECIMAL: { + target = Write2(target, data[1]); + break; + } + case StrTimeSpecifier::YEAR_WITHOUT_CENTURY: { + target = Write2(target, data[0] % 100); + break; + } + case StrTimeSpecifier::HOUR_24_DECIMAL: { + target = Write2(target, data[3]); + break; + } + case StrTimeSpecifier::HOUR_12_DECIMAL: { + int hour = data[3] % 12; + if (hour == 0) { + hour = 12; + } + target = Write2(target, hour); + break; + } + case StrTimeSpecifier::MINUTE_DECIMAL: { + target = Write2(target, data[4]); + break; + } + case StrTimeSpecifier::SECOND_DECIMAL: { + target = Write2(target, data[5]); + break; + } + default: + throw InternalException("Unimplemented specifier for WriteStandardSpecifier in strftime"); + } + return target; +} - void remove_suffix(size_type n) { - size_ -= n; - } +void StrfTimeFormat::FormatString(date_t date, int32_t data[7], char *target) { + idx_t i; + for (i = 0; i < specifiers.size(); i++) { + // first copy the current literal + memcpy(target, literals[i].c_str(), literals[i].size()); + target += literals[i].size(); + // now copy the specifier + if (is_date_specifier[i]) { + target = WriteDateSpecifier(specifiers[i], date, target); + } else { + target = WriteStandardSpecifier(specifiers[i], data, target); + } + } + // copy the final literal into the target + memcpy(target, literals[i].c_str(), literals[i].size()); +} - void set(const char* str) { - data_ = str; - size_ = str == NULL ? 0 : strlen(str); - } +void StrfTimeFormat::FormatString(date_t date, dtime_t time, char *target) { + int32_t data[7]; // year, month, day, hour, min, sec, msec + Date::Convert(date, data[0], data[1], data[2]); + Time::Convert(time, data[3], data[4], data[5], data[6]); - void set(const char* str, size_type len) { - data_ = str; - size_ = len; - } + FormatString(date, data, target); +} - // Converts to `std::basic_string`. - template - explicit operator std::basic_string() const { - if (!data_) return {}; - return std::basic_string(data_, size_); - } +string StrfTimeFormat::Format(timestamp_t timestamp, const string &format_str) { + StrfTimeFormat format; + format.ParseFormatSpecifier(format_str, format); - std::string as_string() const { - return std::string(data_, size_); - } + auto date = Timestamp::GetDate(timestamp); + auto time = Timestamp::GetTime(timestamp); - // We also define ToString() here, since many other string-like - // interfaces name the routine that converts to a C++ string - // "ToString", and it's confusing to have the method that does that - // for a StringPiece be called "as_string()". We also leave the - // "as_string()" method defined here for existing code. - std::string ToString() const { - return std::string(data_, size_); - } + auto len = format.GetLength(date, time); + auto result = unique_ptr(new char[len]); + format.FormatString(date, time, result.get()); + return string(result.get(), len); +} - void CopyToString(std::string* target) const { - target->assign(data_, size_); - } +string StrTimeFormat::ParseFormatSpecifier(const string &format_string, StrTimeFormat &format) { + format.specifiers.clear(); + format.literals.clear(); + format.numeric_width.clear(); + format.constant_size = 0; + idx_t pos = 0; + string current_literal; + for (idx_t i = 0; i < format_string.size(); i++) { + if (format_string[i] == '%') { + if (i + 1 == format_string.size()) { + return "Trailing format character %"; + } + if (i > pos) { + // push the previous string to the current literal + current_literal += format_string.substr(pos, i - pos); + } + char format_char = format_string[++i]; + if (format_char == '%') { + // special case: %% + // set the pos for the next literal and continue + pos = i; + continue; + } + StrTimeSpecifier specifier; + if (format_char == '-' && i + 1 < format_string.size()) { + format_char = format_string[++i]; + switch (format_char) { + case 'd': + specifier = StrTimeSpecifier::DAY_OF_MONTH; + break; + case 'm': + specifier = StrTimeSpecifier::MONTH_DECIMAL; + break; + case 'y': + specifier = StrTimeSpecifier::YEAR_WITHOUT_CENTURY; + break; + case 'H': + specifier = StrTimeSpecifier::HOUR_24_DECIMAL; + break; + case 'I': + specifier = StrTimeSpecifier::HOUR_12_DECIMAL; + break; + case 'M': + specifier = StrTimeSpecifier::MINUTE_DECIMAL; + break; + case 'S': + specifier = StrTimeSpecifier::SECOND_DECIMAL; + break; + case 'j': + specifier = StrTimeSpecifier::DAY_OF_YEAR_DECIMAL; + break; + default: + return "Unrecognized format for strftime/strptime: %-" + string(1, format_char); + } + } else { + switch (format_char) { + case 'a': + specifier = StrTimeSpecifier::ABBREVIATED_WEEKDAY_NAME; + break; + case 'A': + specifier = StrTimeSpecifier::FULL_WEEKDAY_NAME; + break; + case 'w': + specifier = StrTimeSpecifier::WEEKDAY_DECIMAL; + break; + case 'd': + specifier = StrTimeSpecifier::DAY_OF_MONTH_PADDED; + break; + case 'h': + case 'b': + specifier = StrTimeSpecifier::ABBREVIATED_MONTH_NAME; + break; + case 'B': + specifier = StrTimeSpecifier::FULL_MONTH_NAME; + break; + case 'm': + specifier = StrTimeSpecifier::MONTH_DECIMAL_PADDED; + break; + case 'y': + specifier = StrTimeSpecifier::YEAR_WITHOUT_CENTURY_PADDED; + break; + case 'Y': + specifier = StrTimeSpecifier::YEAR_DECIMAL; + break; + case 'H': + specifier = StrTimeSpecifier::HOUR_24_PADDED; + break; + case 'I': + specifier = StrTimeSpecifier::HOUR_12_PADDED; + break; + case 'p': + specifier = StrTimeSpecifier::AM_PM; + break; + case 'M': + specifier = StrTimeSpecifier::MINUTE_PADDED; + break; + case 'S': + specifier = StrTimeSpecifier::SECOND_PADDED; + break; + case 'f': + specifier = StrTimeSpecifier::MICROSECOND_PADDED; + break; + case 'g': + specifier = StrTimeSpecifier::MILLISECOND_PADDED; + break; + case 'z': + specifier = StrTimeSpecifier::UTC_OFFSET; + break; + case 'Z': + specifier = StrTimeSpecifier::TZ_NAME; + break; + case 'j': + specifier = StrTimeSpecifier::DAY_OF_YEAR_PADDED; + break; + case 'U': + specifier = StrTimeSpecifier::WEEK_NUMBER_PADDED_SUN_FIRST; + break; + case 'W': + specifier = StrTimeSpecifier::WEEK_NUMBER_PADDED_MON_FIRST; + break; + case 'c': + case 'x': + case 'X': { + string subformat; + if (format_char == 'c') { + // %c: Locale’s appropriate date and time representation. + // we push the ISO timestamp representation here + subformat = "%Y-%m-%d %H:%M:%S"; + } else if (format_char == 'x') { + // %x - Locale’s appropriate date representation. + // we push the ISO date format here + subformat = "%Y-%m-%d"; + } else if (format_char == 'X') { + // %X - Locale’s appropriate time representation. + // we push the ISO time format here + subformat = "%H:%M:%S"; + } + // parse the subformat in a separate format specifier + StrfTimeFormat locale_format; + string error = StrTimeFormat::ParseFormatSpecifier(subformat, locale_format); + D_ASSERT(error.empty()); + // add the previous literal to the first literal of the subformat + locale_format.literals[0] = move(current_literal) + locale_format.literals[0]; + current_literal = ""; + // now push the subformat into the current format specifier + for (idx_t i = 0; i < locale_format.specifiers.size(); i++) { + format.AddFormatSpecifier(move(locale_format.literals[i]), locale_format.specifiers[i]); + } + pos = i + 1; + continue; + } + default: + return "Unrecognized format for strftime/strptime: %" + string(1, format_char); + } + } + format.AddFormatSpecifier(move(current_literal), specifier); + current_literal = ""; + pos = i + 1; + } + } + // add the final literal + if (pos < format_string.size()) { + current_literal += format_string.substr(pos, format_string.size() - pos); + } + format.AddLiteral(move(current_literal)); + return string(); +} - void AppendToString(std::string* target) const { - target->append(data_, size_); - } +struct StrfTimeBindData : public FunctionData { + explicit StrfTimeBindData(StrfTimeFormat format) : format(move(format)) { + } - size_type copy(char* buf, size_type n, size_type pos = 0) const; - StringPiece substr(size_type pos = 0, size_type n = npos) const; + StrfTimeFormat format; - int compare(const StringPiece& x) const { - size_type min_size = std::min(size(), x.size()); - if (min_size > 0) { - int r = memcmp(data(), x.data(), min_size); - if (r < 0) return -1; - if (r > 0) return 1; - } - if (size() < x.size()) return -1; - if (size() > x.size()) return 1; - return 0; - } + unique_ptr Copy() override { + return make_unique(format); + } +}; - // Does "this" start with "x"? - bool starts_with(const StringPiece& x) const { - return x.empty() || - (size() >= x.size() && memcmp(data(), x.data(), x.size()) == 0); - } +static unique_ptr StrfTimeBindFunction(ClientContext &context, ScalarFunction &bound_function, + vector> &arguments) { + if (!arguments[1]->IsFoldable()) { + throw InvalidInputException("strftime format must be a constant"); + } + Value options_str = ExpressionExecutor::EvaluateScalar(*arguments[1]); + StrfTimeFormat format; + if (!options_str.is_null && options_str.type().id() == LogicalTypeId::VARCHAR) { + auto format_string = options_str.GetValue(); + string error = StrTimeFormat::ParseFormatSpecifier(format_string, format); + if (!error.empty()) { + throw InvalidInputException("Failed to parse format specifier %s: %s", format_string, error); + } + } + return make_unique(format); +} - // Does "this" end with "x"? - bool ends_with(const StringPiece& x) const { - return x.empty() || - (size() >= x.size() && - memcmp(data() + (size() - x.size()), x.data(), x.size()) == 0); - } +static void StrfTimeFunctionDate(DataChunk &args, ExpressionState &state, Vector &result) { + auto &func_expr = (BoundFunctionExpression &)state.expr; + auto &info = (StrfTimeBindData &)*func_expr.bind_info; - bool contains(const StringPiece& s) const { - return find(s) != npos; - } + if (ConstantVector::IsNull(args.data[1])) { + result.SetVectorType(VectorType::CONSTANT_VECTOR); + ConstantVector::SetNull(result, true); + return; + } + UnaryExecutor::Execute(args.data[0], result, args.size(), [&](date_t input) { + dtime_t time(0); + idx_t len = info.format.GetLength(input, time); + string_t target = StringVector::EmptyString(result, len); + info.format.FormatString(input, time, target.GetDataWriteable()); + target.Finalize(); + return target; + }); +} - size_type find(const StringPiece& s, size_type pos = 0) const; - size_type find(char c, size_type pos = 0) const; - size_type rfind(const StringPiece& s, size_type pos = npos) const; - size_type rfind(char c, size_type pos = npos) const; +static void StrfTimeFunctionTimestamp(DataChunk &args, ExpressionState &state, Vector &result) { + auto &func_expr = (BoundFunctionExpression &)state.expr; + auto &info = (StrfTimeBindData &)*func_expr.bind_info; - private: - const_pointer data_; - size_type size_; -}; + if (ConstantVector::IsNull(args.data[1])) { + result.SetVectorType(VectorType::CONSTANT_VECTOR); + ConstantVector::SetNull(result, true); + return; + } -inline bool operator==(const StringPiece& x, const StringPiece& y) { - StringPiece::size_type len = x.size(); - if (len != y.size()) return false; - return x.data() == y.data() || len == 0 || - memcmp(x.data(), y.data(), len) == 0; + UnaryExecutor::Execute(args.data[0], result, args.size(), [&](timestamp_t input) { + date_t date; + dtime_t time; + Timestamp::Convert(input, date, time); + idx_t len = info.format.GetLength(date, time); + string_t target = StringVector::EmptyString(result, len); + info.format.FormatString(date, time, target.GetDataWriteable()); + target.Finalize(); + return target; + }); } -inline bool operator!=(const StringPiece& x, const StringPiece& y) { - return !(x == y); -} +void StrfTimeFun::RegisterFunction(BuiltinFunctions &set) { + ScalarFunctionSet strftime("strftime"); -inline bool operator<(const StringPiece& x, const StringPiece& y) { - StringPiece::size_type min_size = std::min(x.size(), y.size()); - int r = min_size == 0 ? 0 : memcmp(x.data(), y.data(), min_size); - return (r < 0) || (r == 0 && x.size() < y.size()); -} + strftime.AddFunction(ScalarFunction({LogicalType::DATE, LogicalType::VARCHAR}, LogicalType::VARCHAR, + StrfTimeFunctionDate, false, StrfTimeBindFunction)); -inline bool operator>(const StringPiece& x, const StringPiece& y) { - return y < x; -} + strftime.AddFunction(ScalarFunction({LogicalType::TIMESTAMP, LogicalType::VARCHAR}, LogicalType::VARCHAR, + StrfTimeFunctionTimestamp, false, StrfTimeBindFunction)); -inline bool operator<=(const StringPiece& x, const StringPiece& y) { - return !(x > y); + set.AddFunction(strftime); } -inline bool operator>=(const StringPiece& x, const StringPiece& y) { - return !(x < y); +void StrpTimeFormat::AddFormatSpecifier(string preceding_literal, StrTimeSpecifier specifier) { + numeric_width.push_back(NumericSpecifierWidth(specifier)); + StrTimeFormat::AddFormatSpecifier(move(preceding_literal), specifier); } -// Allow StringPiece to be logged. -std::ostream& operator<<(std::ostream& o, const StringPiece& p); +int StrpTimeFormat::NumericSpecifierWidth(StrTimeSpecifier specifier) { + switch (specifier) { + case StrTimeSpecifier::WEEKDAY_DECIMAL: + return 1; + case StrTimeSpecifier::DAY_OF_MONTH_PADDED: + case StrTimeSpecifier::DAY_OF_MONTH: + case StrTimeSpecifier::MONTH_DECIMAL_PADDED: + case StrTimeSpecifier::MONTH_DECIMAL: + case StrTimeSpecifier::YEAR_WITHOUT_CENTURY_PADDED: + case StrTimeSpecifier::YEAR_WITHOUT_CENTURY: + case StrTimeSpecifier::HOUR_24_PADDED: + case StrTimeSpecifier::HOUR_24_DECIMAL: + case StrTimeSpecifier::HOUR_12_PADDED: + case StrTimeSpecifier::HOUR_12_DECIMAL: + case StrTimeSpecifier::MINUTE_PADDED: + case StrTimeSpecifier::MINUTE_DECIMAL: + case StrTimeSpecifier::SECOND_PADDED: + case StrTimeSpecifier::SECOND_DECIMAL: + case StrTimeSpecifier::WEEK_NUMBER_PADDED_SUN_FIRST: + case StrTimeSpecifier::WEEK_NUMBER_PADDED_MON_FIRST: + return 2; + case StrTimeSpecifier::MILLISECOND_PADDED: + case StrTimeSpecifier::DAY_OF_YEAR_PADDED: + case StrTimeSpecifier::DAY_OF_YEAR_DECIMAL: + return 3; + case StrTimeSpecifier::YEAR_DECIMAL: + return 4; + case StrTimeSpecifier::MICROSECOND_PADDED: + return 6; + default: + return -1; + } +} -} // namespace duckdb_re2 - -#endif // RE2_STRINGPIECE_H_ - - -// LICENSE_CHANGE_END - - -namespace duckdb_re2 { -class Prog; -class Regexp; -} // namespace duckdb_re2 - -namespace duckdb_re2 { - -// Interface for regular expression matching. Also corresponds to a -// pre-compiled regular expression. An "RE2" object is safe for -// concurrent use by multiple threads. -class RE2 { - public: - // We convert user-passed pointers into special Arg objects - class Arg; - class Options; - - // Defined in set.h. - class Set; - - enum ErrorCode { - NoError = 0, - - // Unexpected error - ErrorInternal, - - // Parse errors - ErrorBadEscape, // bad escape sequence - ErrorBadCharClass, // bad character class - ErrorBadCharRange, // bad character class range - ErrorMissingBracket, // missing closing ] - ErrorMissingParen, // missing closing ) - ErrorTrailingBackslash, // trailing \ at end of regexp - ErrorRepeatArgument, // repeat argument missing, e.g. "*" - ErrorRepeatSize, // bad repetition argument - ErrorRepeatOp, // bad repetition operator - ErrorBadPerlOp, // bad perl operator - ErrorBadUTF8, // invalid UTF-8 in regexp - ErrorBadNamedCapture, // bad named capture group - ErrorPatternTooLarge // pattern too large (compile failed) - }; - - // Predefined common options. - // If you need more complicated things, instantiate - // an Option class, possibly passing one of these to - // the Option constructor, change the settings, and pass that - // Option class to the RE2 constructor. - enum CannedOptions { - DefaultOptions = 0, - Latin1, // treat input as Latin-1 (default UTF-8) - POSIX, // POSIX syntax, leftmost-longest match - Quiet // do not log about regexp parse errors - }; - - // Need to have the const char* and const std::string& forms for implicit - // conversions when passing string literals to FullMatch and PartialMatch. - // Otherwise the StringPiece form would be sufficient. -#ifndef SWIG - RE2(const char* pattern); - RE2(const std::string& pattern); -#endif - RE2(const StringPiece& pattern); - RE2(const StringPiece& pattern, const Options& options); - ~RE2(); - - // Returns whether RE2 was created properly. - bool ok() const { return error_code() == NoError; } - - // The string specification for this RE2. E.g. - // RE2 re("ab*c?d+"); - // re.pattern(); // "ab*c?d+" - const std::string& pattern() const { return pattern_; } - - // If RE2 could not be created properly, returns an error string. - // Else returns the empty string. - const std::string& error() const { return *error_; } - - // If RE2 could not be created properly, returns an error code. - // Else returns RE2::NoError (== 0). - ErrorCode error_code() const { return error_code_; } - - // If RE2 could not be created properly, returns the offending - // portion of the regexp. - const std::string& error_arg() const { return error_arg_; } - - // Returns the program size, a very approximate measure of a regexp's "cost". - // Larger numbers are more expensive than smaller numbers. - int ProgramSize() const; - int ReverseProgramSize() const; - - // EXPERIMENTAL! SUBJECT TO CHANGE! - // Outputs the program fanout as a histogram bucketed by powers of 2. - // Returns the number of the largest non-empty bucket. - int ProgramFanout(std::map* histogram) const; - int ReverseProgramFanout(std::map* histogram) const; - - // Returns the underlying Regexp; not for general use. - // Returns entire_regexp_ so that callers don't need - // to know about prefix_ and prefix_foldcase_. - duckdb_re2::Regexp* Regexp() const { return entire_regexp_; } - - /***** The array-based matching interface ******/ - - // The functions here have names ending in 'N' and are used to implement - // the functions whose names are the prefix before the 'N'. It is sometimes - // useful to invoke them directly, but the syntax is awkward, so the 'N'-less - // versions should be preferred. - static bool FullMatchN(const StringPiece& text, const RE2& re, - const Arg* const args[], int n); - static bool PartialMatchN(const StringPiece& text, const RE2& re, - const Arg* const args[], int n); - static bool ConsumeN(StringPiece* input, const RE2& re, - const Arg* const args[], int n); - static bool FindAndConsumeN(StringPiece* input, const RE2& re, - const Arg* const args[], int n); - -#ifndef SWIG - private: - template - static inline bool Apply(F f, SP sp, const RE2& re) { - return f(sp, re, NULL, 0); - } - - template - static inline bool Apply(F f, SP sp, const RE2& re, const A&... a) { - const Arg* const args[] = {&a...}; - const int n = sizeof...(a); - return f(sp, re, args, n); - } - - public: - // In order to allow FullMatch() et al. to be called with a varying number - // of arguments of varying types, we use two layers of variadic templates. - // The first layer constructs the temporary Arg objects. The second layer - // (above) constructs the array of pointers to the temporary Arg objects. - - /***** The useful part: the matching interface *****/ - - // Matches "text" against "re". If pointer arguments are - // supplied, copies matched sub-patterns into them. - // - // You can pass in a "const char*" or a "std::string" for "text". - // You can pass in a "const char*" or a "std::string" or a "RE2" for "re". - // - // The provided pointer arguments can be pointers to any scalar numeric - // type, or one of: - // std::string (matched piece is copied to string) - // StringPiece (StringPiece is mutated to point to matched piece) - // T (where "bool T::ParseFrom(const char*, size_t)" exists) - // (void*)NULL (the corresponding matched sub-pattern is not copied) - // - // Returns true iff all of the following conditions are satisfied: - // a. "text" matches "re" exactly - // b. The number of matched sub-patterns is >= number of supplied pointers - // c. The "i"th argument has a suitable type for holding the - // string captured as the "i"th sub-pattern. If you pass in - // NULL for the "i"th argument, or pass fewer arguments than - // number of sub-patterns, "i"th captured sub-pattern is - // ignored. - // - // CAVEAT: An optional sub-pattern that does not exist in the - // matched string is assigned the empty string. Therefore, the - // following will return false (because the empty string is not a - // valid number): - // int number; - // RE2::FullMatch("abc", "[a-z]+(\\d+)?", &number); - template - static bool FullMatch(const StringPiece& text, const RE2& re, A&&... a) { - return Apply(FullMatchN, text, re, Arg(std::forward(a))...); - } - - // Exactly like FullMatch(), except that "re" is allowed to match - // a substring of "text". - template - static bool PartialMatch(const StringPiece& text, const RE2& re, A&&... a) { - return Apply(PartialMatchN, text, re, Arg(std::forward(a))...); - } - - // Like FullMatch() and PartialMatch(), except that "re" has to match - // a prefix of the text, and "input" is advanced past the matched - // text. Note: "input" is modified iff this routine returns true - // and "re" matched a non-empty substring of "text". - template - static bool Consume(StringPiece* input, const RE2& re, A&&... a) { - return Apply(ConsumeN, input, re, Arg(std::forward(a))...); - } - - // Like Consume(), but does not anchor the match at the beginning of - // the text. That is, "re" need not start its match at the beginning - // of "input". For example, "FindAndConsume(s, "(\\w+)", &word)" finds - // the next word in "s" and stores it in "word". - template - static bool FindAndConsume(StringPiece* input, const RE2& re, A&&... a) { - return Apply(FindAndConsumeN, input, re, Arg(std::forward(a))...); - } -#endif - - // Replace the first match of "re" in "str" with "rewrite". - // Within "rewrite", backslash-escaped digits (\1 to \9) can be - // used to insert text matching corresponding parenthesized group - // from the pattern. \0 in "rewrite" refers to the entire matching - // text. E.g., - // - // std::string s = "yabba dabba doo"; - // CHECK(RE2::Replace(&s, "b+", "d")); - // - // will leave "s" containing "yada dabba doo" - // - // Returns true if the pattern matches and a replacement occurs, - // false otherwise. - static bool Replace(std::string* str, - const RE2& re, - const StringPiece& rewrite); - - // Like Replace(), except replaces successive non-overlapping occurrences - // of the pattern in the string with the rewrite. E.g. - // - // std::string s = "yabba dabba doo"; - // CHECK(RE2::GlobalReplace(&s, "b+", "d")); - // - // will leave "s" containing "yada dada doo" - // Replacements are not subject to re-matching. - // - // Because GlobalReplace only replaces non-overlapping matches, - // replacing "ana" within "banana" makes only one replacement, not two. - // - // Returns the number of replacements made. - static int GlobalReplace(std::string* str, - const RE2& re, - const StringPiece& rewrite); - - // Like Replace, except that if the pattern matches, "rewrite" - // is copied into "out" with substitutions. The non-matching - // portions of "text" are ignored. - // - // Returns true iff a match occurred and the extraction happened - // successfully; if no match occurs, the string is left unaffected. - // - // REQUIRES: "text" must not alias any part of "*out". - static bool Extract(const StringPiece& text, - const RE2& re, - const StringPiece& rewrite, - std::string* out); - - // Escapes all potentially meaningful regexp characters in - // 'unquoted'. The returned string, used as a regular expression, - // will exactly match the original string. For example, - // 1.5-2.0? - // may become: - // 1\.5\-2\.0\? - static std::string QuoteMeta(const StringPiece& unquoted); - - // Computes range for any strings matching regexp. The min and max can in - // some cases be arbitrarily precise, so the caller gets to specify the - // maximum desired length of string returned. - // - // Assuming PossibleMatchRange(&min, &max, N) returns successfully, any - // string s that is an anchored match for this regexp satisfies - // min <= s && s <= max. - // - // Note that PossibleMatchRange() will only consider the first copy of an - // infinitely repeated element (i.e., any regexp element followed by a '*' or - // '+' operator). Regexps with "{N}" constructions are not affected, as those - // do not compile down to infinite repetitions. - // - // Returns true on success, false on error. - bool PossibleMatchRange(std::string* min, std::string* max, - int maxlen) const; - - // Generic matching interface - - // Type of match. - enum Anchor { - UNANCHORED, // No anchoring - ANCHOR_START, // Anchor at start only - ANCHOR_BOTH // Anchor at start and end - }; - - // Return the number of capturing subpatterns, or -1 if the - // regexp wasn't valid on construction. The overall match ($0) - // does not count: if the regexp is "(a)(b)", returns 2. - int NumberOfCapturingGroups() const { return num_captures_; } - - // Return a map from names to capturing indices. - // The map records the index of the leftmost group - // with the given name. - // Only valid until the re is deleted. - const std::map& NamedCapturingGroups() const; - - // Return a map from capturing indices to names. - // The map has no entries for unnamed groups. - // Only valid until the re is deleted. - const std::map& CapturingGroupNames() const; - - // General matching routine. - // Match against text starting at offset startpos - // and stopping the search at offset endpos. - // Returns true if match found, false if not. - // On a successful match, fills in submatch[] (up to nsubmatch entries) - // with information about submatches. - // I.e. matching RE2("(foo)|(bar)baz") on "barbazbla" will return true, with - // submatch[0] = "barbaz", submatch[1].data() = NULL, submatch[2] = "bar", - // submatch[3].data() = NULL, ..., up to submatch[nsubmatch-1].data() = NULL. - // Caveat: submatch[] may be clobbered even on match failure. - // - // Don't ask for more match information than you will use: - // runs much faster with nsubmatch == 1 than nsubmatch > 1, and - // runs even faster if nsubmatch == 0. - // Doesn't make sense to use nsubmatch > 1 + NumberOfCapturingGroups(), - // but will be handled correctly. - // - // Passing text == StringPiece(NULL, 0) will be handled like any other - // empty string, but note that on return, it will not be possible to tell - // whether submatch i matched the empty string or did not match: - // either way, submatch[i].data() == NULL. - bool Match(const StringPiece& text, - size_t startpos, - size_t endpos, - Anchor re_anchor, - StringPiece* submatch, - int nsubmatch) const; - - // Check that the given rewrite string is suitable for use with this - // regular expression. It checks that: - // * The regular expression has enough parenthesized subexpressions - // to satisfy all of the \N tokens in rewrite - // * The rewrite string doesn't have any syntax errors. E.g., - // '\' followed by anything other than a digit or '\'. - // A true return value guarantees that Replace() and Extract() won't - // fail because of a bad rewrite string. - bool CheckRewriteString(const StringPiece& rewrite, - std::string* error) const; - - // Returns the maximum submatch needed for the rewrite to be done by - // Replace(). E.g. if rewrite == "foo \\2,\\1", returns 2. - static int MaxSubmatch(const StringPiece& rewrite); - - // Append the "rewrite" string, with backslash subsitutions from "vec", - // to string "out". - // Returns true on success. This method can fail because of a malformed - // rewrite string. CheckRewriteString guarantees that the rewrite will - // be sucessful. - bool Rewrite(std::string* out, - const StringPiece& rewrite, - const StringPiece* vec, - int veclen) const; - - // Constructor options - class Options { - public: - // The options are (defaults in parentheses): - // - // utf8 (true) text and pattern are UTF-8; otherwise Latin-1 - // posix_syntax (false) restrict regexps to POSIX egrep syntax - // longest_match (false) search for longest match, not first match - // log_errors (true) log syntax and execution errors to ERROR - // max_mem (see below) approx. max memory footprint of RE2 - // literal (false) interpret string as literal, not regexp - // never_nl (false) never match \n, even if it is in regexp - // dot_nl (false) dot matches everything including new line - // never_capture (false) parse all parens as non-capturing - // case_sensitive (true) match is case-sensitive (regexp can override - // with (?i) unless in posix_syntax mode) - // - // The following options are only consulted when posix_syntax == true. - // When posix_syntax == false, these features are always enabled and - // cannot be turned off; to perform multi-line matching in that case, - // begin the regexp with (?m). - // perl_classes (false) allow Perl's \d \s \w \D \S \W - // word_boundary (false) allow Perl's \b \B (word boundary and not) - // one_line (false) ^ and $ only match beginning and end of text - // - // The max_mem option controls how much memory can be used - // to hold the compiled form of the regexp (the Prog) and - // its cached DFA graphs. Code Search placed limits on the number - // of Prog instructions and DFA states: 10,000 for both. - // In RE2, those limits would translate to about 240 KB per Prog - // and perhaps 2.5 MB per DFA (DFA state sizes vary by regexp; RE2 does a - // better job of keeping them small than Code Search did). - // Each RE2 has two Progs (one forward, one reverse), and each Prog - // can have two DFAs (one first match, one longest match). - // That makes 4 DFAs: - // - // forward, first-match - used for UNANCHORED or ANCHOR_START searches - // if opt.longest_match() == false - // forward, longest-match - used for all ANCHOR_BOTH searches, - // and the other two kinds if - // opt.longest_match() == true - // reverse, first-match - never used - // reverse, longest-match - used as second phase for unanchored searches - // - // The RE2 memory budget is statically divided between the two - // Progs and then the DFAs: two thirds to the forward Prog - // and one third to the reverse Prog. The forward Prog gives half - // of what it has left over to each of its DFAs. The reverse Prog - // gives it all to its longest-match DFA. - // - // Once a DFA fills its budget, it flushes its cache and starts over. - // If this happens too often, RE2 falls back on the NFA implementation. - - // For now, make the default budget something close to Code Search. - static const int kDefaultMaxMem = 8<<20; - - enum Encoding { - EncodingUTF8 = 1, - EncodingLatin1 - }; - - Options() : - encoding_(EncodingUTF8), - posix_syntax_(false), - longest_match_(false), - log_errors_(true), - max_mem_(kDefaultMaxMem), - literal_(false), - never_nl_(false), - dot_nl_(false), - never_capture_(false), - case_sensitive_(true), - perl_classes_(false), - word_boundary_(false), - one_line_(false) { - } - - /*implicit*/ Options(CannedOptions); - - Encoding encoding() const { return encoding_; } - void set_encoding(Encoding encoding) { encoding_ = encoding; } - - // Legacy interface to encoding. - // TODO(rsc): Remove once clients have been converted. - bool utf8() const { return encoding_ == EncodingUTF8; } - void set_utf8(bool b) { - if (b) { - encoding_ = EncodingUTF8; - } else { - encoding_ = EncodingLatin1; - } - } - - bool posix_syntax() const { return posix_syntax_; } - void set_posix_syntax(bool b) { posix_syntax_ = b; } - - bool longest_match() const { return longest_match_; } - void set_longest_match(bool b) { longest_match_ = b; } - - bool log_errors() const { return log_errors_; } - void set_log_errors(bool b) { log_errors_ = b; } - - int64_t max_mem() const { return max_mem_; } - void set_max_mem(int64_t m) { max_mem_ = m; } - - bool literal() const { return literal_; } - void set_literal(bool b) { literal_ = b; } - - bool never_nl() const { return never_nl_; } - void set_never_nl(bool b) { never_nl_ = b; } - - bool dot_nl() const { return dot_nl_; } - void set_dot_nl(bool b) { dot_nl_ = b; } - - bool never_capture() const { return never_capture_; } - void set_never_capture(bool b) { never_capture_ = b; } - - bool case_sensitive() const { return case_sensitive_; } - void set_case_sensitive(bool b) { case_sensitive_ = b; } - - bool perl_classes() const { return perl_classes_; } - void set_perl_classes(bool b) { perl_classes_ = b; } - - bool word_boundary() const { return word_boundary_; } - void set_word_boundary(bool b) { word_boundary_ = b; } - - bool one_line() const { return one_line_; } - void set_one_line(bool b) { one_line_ = b; } - - void Copy(const Options& src) { - *this = src; - } - - int ParseFlags() const; - - private: - Encoding encoding_; - bool posix_syntax_; - bool longest_match_; - bool log_errors_; - int64_t max_mem_; - bool literal_; - bool never_nl_; - bool dot_nl_; - bool never_capture_; - bool case_sensitive_; - bool perl_classes_; - bool word_boundary_; - bool one_line_; - }; - - // Returns the options set in the constructor. - const Options& options() const { return options_; } - - // Argument converters; see below. - static inline Arg CRadix(short* x); - static inline Arg CRadix(unsigned short* x); - static inline Arg CRadix(int* x); - static inline Arg CRadix(unsigned int* x); - static inline Arg CRadix(long* x); - static inline Arg CRadix(unsigned long* x); - static inline Arg CRadix(long long* x); - static inline Arg CRadix(unsigned long long* x); - - static inline Arg Hex(short* x); - static inline Arg Hex(unsigned short* x); - static inline Arg Hex(int* x); - static inline Arg Hex(unsigned int* x); - static inline Arg Hex(long* x); - static inline Arg Hex(unsigned long* x); - static inline Arg Hex(long long* x); - static inline Arg Hex(unsigned long long* x); - - static inline Arg Octal(short* x); - static inline Arg Octal(unsigned short* x); - static inline Arg Octal(int* x); - static inline Arg Octal(unsigned int* x); - static inline Arg Octal(long* x); - static inline Arg Octal(unsigned long* x); - static inline Arg Octal(long long* x); - static inline Arg Octal(unsigned long long* x); - - private: - void Init(const StringPiece& pattern, const Options& options); - - bool DoMatch(const StringPiece& text, - Anchor re_anchor, - size_t* consumed, - const Arg* const args[], - int n) const; - - duckdb_re2::Prog* ReverseProg() const; - - std::string pattern_; // string regular expression - Options options_; // option flags - std::string prefix_; // required prefix (before regexp_) - bool prefix_foldcase_; // prefix is ASCII case-insensitive - duckdb_re2::Regexp* entire_regexp_; // parsed regular expression - duckdb_re2::Regexp* suffix_regexp_; // parsed regular expression, prefix removed - duckdb_re2::Prog* prog_; // compiled program for regexp - int num_captures_; // Number of capturing groups - bool is_one_pass_; // can use prog_->SearchOnePass? - - mutable duckdb_re2::Prog* rprog_; // reverse program for regexp - mutable const std::string* error_; // Error indicator - // (or points to empty string) - mutable ErrorCode error_code_; // Error code - mutable std::string error_arg_; // Fragment of regexp showing error - - // Map from capture names to indices - mutable const std::map* named_groups_; - - // Map from capture indices to names - mutable const std::map* group_names_; - - // Onces for lazy computations. - mutable std::once_flag rprog_once_; - mutable std::once_flag named_groups_once_; - mutable std::once_flag group_names_once_; - - RE2(const RE2&) = delete; - RE2& operator=(const RE2&) = delete; -}; - -/***** Implementation details *****/ - -// Hex/Octal/Binary? - -// Special class for parsing into objects that define a ParseFrom() method -template -class _RE2_MatchObject { - public: - static inline bool Parse(const char* str, size_t n, void* dest) { - if (dest == NULL) return true; - T* object = reinterpret_cast(dest); - return object->ParseFrom(str, n); - } -}; - -class RE2::Arg { - public: - // Empty constructor so we can declare arrays of RE2::Arg - Arg(); - - // Constructor specially designed for NULL arguments - Arg(void*); - Arg(std::nullptr_t); - - typedef bool (*Parser)(const char* str, size_t n, void* dest); - -// Type-specific parsers -#define MAKE_PARSER(type, name) \ - Arg(type* p) : arg_(p), parser_(name) {} \ - Arg(type* p, Parser parser) : arg_(p), parser_(parser) {} - - MAKE_PARSER(char, parse_char) - MAKE_PARSER(signed char, parse_schar) - MAKE_PARSER(unsigned char, parse_uchar) - MAKE_PARSER(float, parse_float) - MAKE_PARSER(double, parse_double) - MAKE_PARSER(std::string, parse_string) - MAKE_PARSER(StringPiece, parse_stringpiece) - - MAKE_PARSER(short, parse_short) - MAKE_PARSER(unsigned short, parse_ushort) - MAKE_PARSER(int, parse_int) - MAKE_PARSER(unsigned int, parse_uint) - MAKE_PARSER(long, parse_long) - MAKE_PARSER(unsigned long, parse_ulong) - MAKE_PARSER(long long, parse_longlong) - MAKE_PARSER(unsigned long long, parse_ulonglong) - -#undef MAKE_PARSER - - // Generic constructor templates - template Arg(T* p) - : arg_(p), parser_(_RE2_MatchObject::Parse) { } - template Arg(T* p, Parser parser) - : arg_(p), parser_(parser) { } - - // Parse the data - bool Parse(const char* str, size_t n) const; - - private: - void* arg_; - Parser parser_; - - static bool parse_null (const char* str, size_t n, void* dest); - static bool parse_char (const char* str, size_t n, void* dest); - static bool parse_schar (const char* str, size_t n, void* dest); - static bool parse_uchar (const char* str, size_t n, void* dest); - static bool parse_float (const char* str, size_t n, void* dest); - static bool parse_double (const char* str, size_t n, void* dest); - static bool parse_string (const char* str, size_t n, void* dest); - static bool parse_stringpiece (const char* str, size_t n, void* dest); - -#define DECLARE_INTEGER_PARSER(name) \ - private: \ - static bool parse_##name(const char* str, size_t n, void* dest); \ - static bool parse_##name##_radix(const char* str, size_t n, void* dest, \ - int radix); \ - \ - public: \ - static bool parse_##name##_hex(const char* str, size_t n, void* dest); \ - static bool parse_##name##_octal(const char* str, size_t n, void* dest); \ - static bool parse_##name##_cradix(const char* str, size_t n, void* dest); - - DECLARE_INTEGER_PARSER(short) - DECLARE_INTEGER_PARSER(ushort) - DECLARE_INTEGER_PARSER(int) - DECLARE_INTEGER_PARSER(uint) - DECLARE_INTEGER_PARSER(long) - DECLARE_INTEGER_PARSER(ulong) - DECLARE_INTEGER_PARSER(longlong) - DECLARE_INTEGER_PARSER(ulonglong) - -#undef DECLARE_INTEGER_PARSER - -}; - -inline RE2::Arg::Arg() : arg_(NULL), parser_(parse_null) { } -inline RE2::Arg::Arg(void* p) : arg_(p), parser_(parse_null) { } -inline RE2::Arg::Arg(std::nullptr_t p) : arg_(p), parser_(parse_null) { } - -inline bool RE2::Arg::Parse(const char* str, size_t n) const { - return (*parser_)(str, n, arg_); -} - -// This part of the parser, appropriate only for ints, deals with bases -#define MAKE_INTEGER_PARSER(type, name) \ - inline RE2::Arg RE2::Hex(type* ptr) { \ - return RE2::Arg(ptr, RE2::Arg::parse_##name##_hex); \ - } \ - inline RE2::Arg RE2::Octal(type* ptr) { \ - return RE2::Arg(ptr, RE2::Arg::parse_##name##_octal); \ - } \ - inline RE2::Arg RE2::CRadix(type* ptr) { \ - return RE2::Arg(ptr, RE2::Arg::parse_##name##_cradix); \ - } - -MAKE_INTEGER_PARSER(short, short) -MAKE_INTEGER_PARSER(unsigned short, ushort) -MAKE_INTEGER_PARSER(int, int) -MAKE_INTEGER_PARSER(unsigned int, uint) -MAKE_INTEGER_PARSER(long, long) -MAKE_INTEGER_PARSER(unsigned long, ulong) -MAKE_INTEGER_PARSER(long long, longlong) -MAKE_INTEGER_PARSER(unsigned long long, ulonglong) - -#undef MAKE_INTEGER_PARSER - -#ifndef SWIG - - -// Helper for writing global or static RE2s safely. -// Write -// static LazyRE2 re = {".*"}; -// and then use *re instead of writing -// static RE2 re(".*"); -// The former is more careful about multithreaded -// situations than the latter. -// -// N.B. This class never deletes the RE2 object that -// it constructs: that's a feature, so that it can be used -// for global and function static variables. -class LazyRE2 { - private: - struct NoArg {}; - - public: - typedef RE2 element_type; // support std::pointer_traits - - // Constructor omitted to preserve braced initialization in C++98. - - // Pretend to be a pointer to Type (never NULL due to on-demand creation): - RE2& operator*() const { return *get(); } - RE2* operator->() const { return get(); } - - // Named accessor/initializer: - RE2* get() const { - std::call_once(once_, &LazyRE2::Init, this); - return ptr_; - } - - // All data fields must be public to support {"foo"} initialization. - const char* pattern_; - RE2::CannedOptions options_; - NoArg barrier_against_excess_initializers_; - - mutable RE2* ptr_; - mutable std::once_flag once_; - - private: - static void Init(const LazyRE2* lazy_re2) { - lazy_re2->ptr_ = new RE2(lazy_re2->pattern_, lazy_re2->options_); - } - - void operator=(const LazyRE2&); // disallowed -}; -#endif // SWIG - -} // namespace duckdb_re2 - -using duckdb_re2::RE2; -using duckdb_re2::LazyRE2; - -#endif // RE2_RE2_H_ - - -// LICENSE_CHANGE_END - - -#include - -namespace duckdb { - -idx_t StrfTimepecifierSize(StrTimeSpecifier specifier) { - switch (specifier) { - case StrTimeSpecifier::ABBREVIATED_WEEKDAY_NAME: - case StrTimeSpecifier::ABBREVIATED_MONTH_NAME: - return 3; - case StrTimeSpecifier::WEEKDAY_DECIMAL: - return 1; - case StrTimeSpecifier::DAY_OF_MONTH_PADDED: - case StrTimeSpecifier::MONTH_DECIMAL_PADDED: - case StrTimeSpecifier::YEAR_WITHOUT_CENTURY_PADDED: - case StrTimeSpecifier::HOUR_24_PADDED: - case StrTimeSpecifier::HOUR_12_PADDED: - case StrTimeSpecifier::MINUTE_PADDED: - case StrTimeSpecifier::SECOND_PADDED: - case StrTimeSpecifier::AM_PM: - case StrTimeSpecifier::WEEK_NUMBER_PADDED_SUN_FIRST: - case StrTimeSpecifier::WEEK_NUMBER_PADDED_MON_FIRST: - return 2; - case StrTimeSpecifier::MICROSECOND_PADDED: - return 6; - case StrTimeSpecifier::MILLISECOND_PADDED: - return 3; - case StrTimeSpecifier::DAY_OF_YEAR_PADDED: - return 3; - default: - return 0; - } -} - -void StrTimeFormat::AddLiteral(string literal) { - constant_size += literal.size(); - literals.push_back(move(literal)); -} - -void StrTimeFormat::AddFormatSpecifier(string preceding_literal, StrTimeSpecifier specifier) { - AddLiteral(move(preceding_literal)); - specifiers.push_back(specifier); -} - -void StrfTimeFormat::AddFormatSpecifier(string preceding_literal, StrTimeSpecifier specifier) { - is_date_specifier.push_back(IsDateSpecifier(specifier)); - idx_t specifier_size = StrfTimepecifierSize(specifier); - if (specifier_size == 0) { - // variable length specifier - var_length_specifiers.push_back(specifier); - } else { - // constant size specifier - constant_size += specifier_size; - } - StrTimeFormat::AddFormatSpecifier(move(preceding_literal), specifier); -} - -idx_t StrfTimeFormat::GetSpecifierLength(StrTimeSpecifier specifier, date_t date, dtime_t time) { - switch (specifier) { - case StrTimeSpecifier::FULL_WEEKDAY_NAME: - return Date::DAY_NAMES[Date::ExtractISODayOfTheWeek(date) % 7].GetSize(); - case StrTimeSpecifier::FULL_MONTH_NAME: - return Date::MONTH_NAMES[Date::ExtractMonth(date) - 1].GetSize(); - case StrTimeSpecifier::YEAR_DECIMAL: { - auto year = Date::ExtractYear(date); - return NumericHelper::SignedLength(year); - } - case StrTimeSpecifier::MONTH_DECIMAL: { - idx_t len = 1; - auto month = Date::ExtractMonth(date); - len += month >= 10; - return len; - } - case StrTimeSpecifier::UTC_OFFSET: - // +00 - return 3; - case StrTimeSpecifier::TZ_NAME: - // empty for now - return 0; - case StrTimeSpecifier::HOUR_24_DECIMAL: - case StrTimeSpecifier::HOUR_12_DECIMAL: - case StrTimeSpecifier::MINUTE_DECIMAL: - case StrTimeSpecifier::SECOND_DECIMAL: { - // time specifiers - idx_t len = 1; - int32_t hour, min, sec, msec; - Time::Convert(time, hour, min, sec, msec); - switch (specifier) { - case StrTimeSpecifier::HOUR_24_DECIMAL: - len += hour >= 10; - break; - case StrTimeSpecifier::HOUR_12_DECIMAL: - hour = hour % 12; - if (hour == 0) { - hour = 12; - } - len += hour >= 10; - break; - case StrTimeSpecifier::MINUTE_DECIMAL: - len += min >= 10; - break; - case StrTimeSpecifier::SECOND_DECIMAL: - len += sec >= 10; - break; - default: - throw InternalException("Time specifier mismatch"); - } - return len; - } - case StrTimeSpecifier::DAY_OF_MONTH: - return NumericHelper::UnsignedLength(Date::ExtractDay(date)); - case StrTimeSpecifier::DAY_OF_YEAR_DECIMAL: - return NumericHelper::UnsignedLength(Date::ExtractDayOfTheYear(date)); - case StrTimeSpecifier::YEAR_WITHOUT_CENTURY: - return NumericHelper::UnsignedLength(Date::ExtractYear(date) % 100); - default: - throw InternalException("Unimplemented specifier for GetSpecifierLength"); - } -} - -//! Returns the total length of the date formatted by this format specifier -idx_t StrfTimeFormat::GetLength(date_t date, dtime_t time) { - idx_t size = constant_size; - if (!var_length_specifiers.empty()) { - for (auto &specifier : var_length_specifiers) { - size += GetSpecifierLength(specifier, date, time); - } - } - return size; -} - -char *StrfTimeFormat::WriteString(char *target, const string_t &str) { - idx_t size = str.GetSize(); - memcpy(target, str.GetDataUnsafe(), size); - return target + size; -} - -// write a value in the range of 0..99 unpadded (e.g. "1", "2", ... "98", "99") -char *StrfTimeFormat::Write2(char *target, uint8_t value) { - D_ASSERT(value < 100); - if (value >= 10) { - return WritePadded2(target, value); - } else { - *target = char(uint8_t('0') + value); - return target + 1; - } -} - -// write a value in the range of 0..99 padded to 2 digits -char *StrfTimeFormat::WritePadded2(char *target, int32_t value) { - D_ASSERT(value < 100); - auto index = static_cast(value * 2); - *target++ = duckdb_fmt::internal::data::digits[index]; - *target++ = duckdb_fmt::internal::data::digits[index + 1]; - return target; -} - -// write a value in the range of 0..999 padded -char *StrfTimeFormat::WritePadded3(char *target, uint32_t value) { - D_ASSERT(value < 1000); - if (value >= 100) { - WritePadded2(target + 1, value % 100); - *target = char(uint8_t('0') + value / 100); - return target + 3; - } else { - *target = '0'; - target++; - return WritePadded2(target, value); - } -} - -// write a value in the range of 0..999999 padded to 6 digits -char *StrfTimeFormat::WritePadded(char *target, int32_t value, int32_t padding) { - D_ASSERT(padding % 2 == 0); - for (int i = 0; i < padding / 2; i++) { - int decimals = value % 100; - WritePadded2(target + padding - 2 * (i + 1), decimals); - value /= 100; - } - return target + padding; -} - -bool StrfTimeFormat::IsDateSpecifier(StrTimeSpecifier specifier) { - switch (specifier) { - case StrTimeSpecifier::ABBREVIATED_WEEKDAY_NAME: - case StrTimeSpecifier::FULL_WEEKDAY_NAME: - case StrTimeSpecifier::DAY_OF_YEAR_PADDED: - case StrTimeSpecifier::DAY_OF_YEAR_DECIMAL: - case StrTimeSpecifier::WEEK_NUMBER_PADDED_MON_FIRST: - case StrTimeSpecifier::WEEK_NUMBER_PADDED_SUN_FIRST: - case StrTimeSpecifier::WEEKDAY_DECIMAL: - return true; - default: - return false; - } -} - -char *StrfTimeFormat::WriteDateSpecifier(StrTimeSpecifier specifier, date_t date, char *target) { - switch (specifier) { - case StrTimeSpecifier::ABBREVIATED_WEEKDAY_NAME: { - auto dow = Date::ExtractISODayOfTheWeek(date); - target = WriteString(target, Date::DAY_NAMES_ABBREVIATED[dow % 7]); - break; - } - case StrTimeSpecifier::FULL_WEEKDAY_NAME: { - auto dow = Date::ExtractISODayOfTheWeek(date); - target = WriteString(target, Date::DAY_NAMES[dow % 7]); - break; - } - case StrTimeSpecifier::WEEKDAY_DECIMAL: { - auto dow = Date::ExtractISODayOfTheWeek(date); - *target = char('0' + uint8_t(dow % 7)); - target++; - break; - } - case StrTimeSpecifier::DAY_OF_YEAR_PADDED: { - int32_t doy = Date::ExtractDayOfTheYear(date); - target = WritePadded3(target, doy); - break; - } - case StrTimeSpecifier::WEEK_NUMBER_PADDED_MON_FIRST: - target = WritePadded2(target, Date::ExtractWeekNumberRegular(date, true)); - break; - case StrTimeSpecifier::WEEK_NUMBER_PADDED_SUN_FIRST: - target = WritePadded2(target, Date::ExtractWeekNumberRegular(date, false)); - break; - case StrTimeSpecifier::DAY_OF_YEAR_DECIMAL: { - uint32_t doy = Date::ExtractDayOfTheYear(date); - target += NumericHelper::UnsignedLength(doy); - NumericHelper::FormatUnsigned(doy, target); - break; - } - default: - throw InternalException("Unimplemented date specifier for strftime"); - } - return target; -} - -char *StrfTimeFormat::WriteStandardSpecifier(StrTimeSpecifier specifier, int32_t data[], char *target) { - // data contains [0] year, [1] month, [2] day, [3] hour, [4] minute, [5] second, [6] msec - switch (specifier) { - case StrTimeSpecifier::DAY_OF_MONTH_PADDED: - target = WritePadded2(target, data[2]); - break; - case StrTimeSpecifier::ABBREVIATED_MONTH_NAME: { - auto &month_name = Date::MONTH_NAMES_ABBREVIATED[data[1] - 1]; - return WriteString(target, month_name); - } - case StrTimeSpecifier::FULL_MONTH_NAME: { - auto &month_name = Date::MONTH_NAMES[data[1] - 1]; - return WriteString(target, month_name); - } - case StrTimeSpecifier::MONTH_DECIMAL_PADDED: - target = WritePadded2(target, data[1]); - break; - case StrTimeSpecifier::YEAR_WITHOUT_CENTURY_PADDED: - target = WritePadded2(target, AbsValue(data[0]) % 100); - break; - case StrTimeSpecifier::YEAR_DECIMAL: - if (data[0] >= 0 && data[0] <= 9999) { - target = WritePadded(target, data[0], 4); - } else { - int32_t year = data[0]; - if (data[0] < 0) { - *target = '-'; - year = -year; - target++; - } - auto len = NumericHelper::UnsignedLength(year); - NumericHelper::FormatUnsigned(year, target + len); - target += len; - } - break; - case StrTimeSpecifier::HOUR_24_PADDED: { - target = WritePadded2(target, data[3]); - break; - } - case StrTimeSpecifier::HOUR_12_PADDED: { - int hour = data[3] % 12; - if (hour == 0) { - hour = 12; - } - target = WritePadded2(target, hour); - break; - } - case StrTimeSpecifier::AM_PM: - *target++ = data[3] >= 12 ? 'P' : 'A'; - *target++ = 'M'; - break; - case StrTimeSpecifier::MINUTE_PADDED: { - target = WritePadded2(target, data[4]); - break; - } - case StrTimeSpecifier::SECOND_PADDED: - target = WritePadded2(target, data[5]); - break; - case StrTimeSpecifier::MICROSECOND_PADDED: - target = WritePadded(target, data[6], 6); - break; - case StrTimeSpecifier::MILLISECOND_PADDED: - target = WritePadded3(target, data[6] / 1000); - break; - case StrTimeSpecifier::UTC_OFFSET: - *target++ = '+'; - *target++ = '0'; - *target++ = '0'; - break; - case StrTimeSpecifier::TZ_NAME: - // always empty for now, FIXME when we have timestamp with tz - break; - case StrTimeSpecifier::DAY_OF_MONTH: { - target = Write2(target, data[2] % 100); - break; - } - case StrTimeSpecifier::MONTH_DECIMAL: { - target = Write2(target, data[1]); - break; - } - case StrTimeSpecifier::YEAR_WITHOUT_CENTURY: { - target = Write2(target, data[0] % 100); - break; - } - case StrTimeSpecifier::HOUR_24_DECIMAL: { - target = Write2(target, data[3]); - break; - } - case StrTimeSpecifier::HOUR_12_DECIMAL: { - int hour = data[3] % 12; - if (hour == 0) { - hour = 12; - } - target = Write2(target, hour); - break; - } - case StrTimeSpecifier::MINUTE_DECIMAL: { - target = Write2(target, data[4]); - break; - } - case StrTimeSpecifier::SECOND_DECIMAL: { - target = Write2(target, data[5]); - break; - } - default: - throw InternalException("Unimplemented specifier for WriteStandardSpecifier in strftime"); - } - return target; -} - -void StrfTimeFormat::FormatString(date_t date, int32_t data[7], char *target) { - idx_t i; - for (i = 0; i < specifiers.size(); i++) { - // first copy the current literal - memcpy(target, literals[i].c_str(), literals[i].size()); - target += literals[i].size(); - // now copy the specifier - if (is_date_specifier[i]) { - target = WriteDateSpecifier(specifiers[i], date, target); - } else { - target = WriteStandardSpecifier(specifiers[i], data, target); - } - } - // copy the final literal into the target - memcpy(target, literals[i].c_str(), literals[i].size()); -} - -void StrfTimeFormat::FormatString(date_t date, dtime_t time, char *target) { - int32_t data[7]; // year, month, day, hour, min, sec, msec - Date::Convert(date, data[0], data[1], data[2]); - Time::Convert(time, data[3], data[4], data[5], data[6]); - - FormatString(date, data, target); -} - -string StrTimeFormat::ParseFormatSpecifier(string format_string, StrTimeFormat &format) { - format.specifiers.clear(); - format.literals.clear(); - format.numeric_width.clear(); - format.constant_size = 0; - idx_t pos = 0; - string current_literal; - for (idx_t i = 0; i < format_string.size(); i++) { - if (format_string[i] == '%') { - if (i + 1 == format_string.size()) { - return "Trailing format character %"; - } - if (i > pos) { - // push the previous string to the current literal - current_literal += format_string.substr(pos, i - pos); - } - char format_char = format_string[++i]; - if (format_char == '%') { - // special case: %% - // set the pos for the next literal and continue - pos = i; - continue; - } - StrTimeSpecifier specifier; - if (format_char == '-' && i + 1 < format_string.size()) { - format_char = format_string[++i]; - switch (format_char) { - case 'd': - specifier = StrTimeSpecifier::DAY_OF_MONTH; - break; - case 'm': - specifier = StrTimeSpecifier::MONTH_DECIMAL; - break; - case 'y': - specifier = StrTimeSpecifier::YEAR_WITHOUT_CENTURY; - break; - case 'H': - specifier = StrTimeSpecifier::HOUR_24_DECIMAL; - break; - case 'I': - specifier = StrTimeSpecifier::HOUR_12_DECIMAL; - break; - case 'M': - specifier = StrTimeSpecifier::MINUTE_DECIMAL; - break; - case 'S': - specifier = StrTimeSpecifier::SECOND_DECIMAL; - break; - case 'j': - specifier = StrTimeSpecifier::DAY_OF_YEAR_DECIMAL; - break; - default: - return "Unrecognized format for strftime/strptime: %-" + string(1, format_char); - } - } else { - switch (format_char) { - case 'a': - specifier = StrTimeSpecifier::ABBREVIATED_WEEKDAY_NAME; - break; - case 'A': - specifier = StrTimeSpecifier::FULL_WEEKDAY_NAME; - break; - case 'w': - specifier = StrTimeSpecifier::WEEKDAY_DECIMAL; - break; - case 'd': - specifier = StrTimeSpecifier::DAY_OF_MONTH_PADDED; - break; - case 'h': - case 'b': - specifier = StrTimeSpecifier::ABBREVIATED_MONTH_NAME; - break; - case 'B': - specifier = StrTimeSpecifier::FULL_MONTH_NAME; - break; - case 'm': - specifier = StrTimeSpecifier::MONTH_DECIMAL_PADDED; - break; - case 'y': - specifier = StrTimeSpecifier::YEAR_WITHOUT_CENTURY_PADDED; - break; - case 'Y': - specifier = StrTimeSpecifier::YEAR_DECIMAL; - break; - case 'H': - specifier = StrTimeSpecifier::HOUR_24_PADDED; - break; - case 'I': - specifier = StrTimeSpecifier::HOUR_12_PADDED; - break; - case 'p': - specifier = StrTimeSpecifier::AM_PM; - break; - case 'M': - specifier = StrTimeSpecifier::MINUTE_PADDED; - break; - case 'S': - specifier = StrTimeSpecifier::SECOND_PADDED; - break; - case 'f': - specifier = StrTimeSpecifier::MICROSECOND_PADDED; - break; - case 'g': - specifier = StrTimeSpecifier::MILLISECOND_PADDED; - break; - case 'z': - specifier = StrTimeSpecifier::UTC_OFFSET; - break; - case 'Z': - specifier = StrTimeSpecifier::TZ_NAME; - break; - case 'j': - specifier = StrTimeSpecifier::DAY_OF_YEAR_PADDED; - break; - case 'U': - specifier = StrTimeSpecifier::WEEK_NUMBER_PADDED_SUN_FIRST; - break; - case 'W': - specifier = StrTimeSpecifier::WEEK_NUMBER_PADDED_MON_FIRST; - break; - case 'c': - case 'x': - case 'X': { - string subformat; - if (format_char == 'c') { - // %c: Locale’s appropriate date and time representation. - // we push the ISO timestamp representation here - subformat = "%Y-%m-%d %H:%M:%S"; - } else if (format_char == 'x') { - // %x - Locale’s appropriate date representation. - // we push the ISO date format here - subformat = "%Y-%m-%d"; - } else if (format_char == 'X') { - // %X - Locale’s appropriate time representation. - // we push the ISO time format here - subformat = "%H:%M:%S"; - } - // parse the subformat in a separate format specifier - StrfTimeFormat locale_format; - string error = StrTimeFormat::ParseFormatSpecifier(subformat, locale_format); - D_ASSERT(error.empty()); - // add the previous literal to the first literal of the subformat - locale_format.literals[0] = move(current_literal) + locale_format.literals[0]; - current_literal = ""; - // now push the subformat into the current format specifier - for (idx_t i = 0; i < locale_format.specifiers.size(); i++) { - format.AddFormatSpecifier(move(locale_format.literals[i]), locale_format.specifiers[i]); - } - pos = i + 1; - continue; - } - default: - return "Unrecognized format for strftime/strptime: %" + string(1, format_char); - } - } - format.AddFormatSpecifier(move(current_literal), specifier); - current_literal = ""; - pos = i + 1; - } - } - // add the final literal - if (pos < format_string.size()) { - current_literal += format_string.substr(pos, format_string.size() - pos); - } - format.AddLiteral(move(current_literal)); - return string(); -} - -struct StrfTimeBindData : public FunctionData { - explicit StrfTimeBindData(StrfTimeFormat format) : format(move(format)) { - } - - StrfTimeFormat format; - - unique_ptr Copy() override { - return make_unique(format); - } -}; - -static unique_ptr StrfTimeBindFunction(ClientContext &context, ScalarFunction &bound_function, - vector> &arguments) { - if (!arguments[1]->IsFoldable()) { - throw InvalidInputException("strftime format must be a constant"); - } - Value options_str = ExpressionExecutor::EvaluateScalar(*arguments[1]); - StrfTimeFormat format; - if (!options_str.is_null && options_str.type().id() == LogicalTypeId::VARCHAR) { - auto format_string = options_str.GetValue(); - string error = StrTimeFormat::ParseFormatSpecifier(format_string, format); - if (!error.empty()) { - throw InvalidInputException("Failed to parse format specifier %s: %s", format_string, error); - } - } - return make_unique(format); -} - -static void StrfTimeFunctionDate(DataChunk &args, ExpressionState &state, Vector &result) { - auto &func_expr = (BoundFunctionExpression &)state.expr; - auto &info = (StrfTimeBindData &)*func_expr.bind_info; - - if (ConstantVector::IsNull(args.data[1])) { - result.SetVectorType(VectorType::CONSTANT_VECTOR); - ConstantVector::SetNull(result, true); - return; - } - UnaryExecutor::Execute(args.data[0], result, args.size(), [&](date_t input) { - dtime_t time(0); - idx_t len = info.format.GetLength(input, time); - string_t target = StringVector::EmptyString(result, len); - info.format.FormatString(input, time, target.GetDataWriteable()); - target.Finalize(); - return target; - }); -} - -static void StrfTimeFunctionTimestamp(DataChunk &args, ExpressionState &state, Vector &result) { - auto &func_expr = (BoundFunctionExpression &)state.expr; - auto &info = (StrfTimeBindData &)*func_expr.bind_info; - - if (ConstantVector::IsNull(args.data[1])) { - result.SetVectorType(VectorType::CONSTANT_VECTOR); - ConstantVector::SetNull(result, true); - return; - } - - UnaryExecutor::Execute(args.data[0], result, args.size(), [&](timestamp_t input) { - date_t date; - dtime_t time; - Timestamp::Convert(input, date, time); - idx_t len = info.format.GetLength(date, time); - string_t target = StringVector::EmptyString(result, len); - info.format.FormatString(date, time, target.GetDataWriteable()); - target.Finalize(); - return target; - }); -} - -void StrfTimeFun::RegisterFunction(BuiltinFunctions &set) { - ScalarFunctionSet strftime("strftime"); - - strftime.AddFunction(ScalarFunction({LogicalType::DATE, LogicalType::VARCHAR}, LogicalType::VARCHAR, - StrfTimeFunctionDate, false, StrfTimeBindFunction)); - - strftime.AddFunction(ScalarFunction({LogicalType::TIMESTAMP, LogicalType::VARCHAR}, LogicalType::VARCHAR, - StrfTimeFunctionTimestamp, false, StrfTimeBindFunction)); - - set.AddFunction(strftime); -} - -void StrpTimeFormat::AddFormatSpecifier(string preceding_literal, StrTimeSpecifier specifier) { - numeric_width.push_back(NumericSpecifierWidth(specifier)); - StrTimeFormat::AddFormatSpecifier(move(preceding_literal), specifier); -} - -int StrpTimeFormat::NumericSpecifierWidth(StrTimeSpecifier specifier) { - switch (specifier) { - case StrTimeSpecifier::WEEKDAY_DECIMAL: - return 1; - case StrTimeSpecifier::DAY_OF_MONTH_PADDED: - case StrTimeSpecifier::DAY_OF_MONTH: - case StrTimeSpecifier::MONTH_DECIMAL_PADDED: - case StrTimeSpecifier::MONTH_DECIMAL: - case StrTimeSpecifier::YEAR_WITHOUT_CENTURY_PADDED: - case StrTimeSpecifier::YEAR_WITHOUT_CENTURY: - case StrTimeSpecifier::HOUR_24_PADDED: - case StrTimeSpecifier::HOUR_24_DECIMAL: - case StrTimeSpecifier::HOUR_12_PADDED: - case StrTimeSpecifier::HOUR_12_DECIMAL: - case StrTimeSpecifier::MINUTE_PADDED: - case StrTimeSpecifier::MINUTE_DECIMAL: - case StrTimeSpecifier::SECOND_PADDED: - case StrTimeSpecifier::SECOND_DECIMAL: - case StrTimeSpecifier::WEEK_NUMBER_PADDED_SUN_FIRST: - case StrTimeSpecifier::WEEK_NUMBER_PADDED_MON_FIRST: - return 2; - case StrTimeSpecifier::MILLISECOND_PADDED: - case StrTimeSpecifier::DAY_OF_YEAR_PADDED: - case StrTimeSpecifier::DAY_OF_YEAR_DECIMAL: - return 3; - case StrTimeSpecifier::YEAR_DECIMAL: - return 4; - case StrTimeSpecifier::MICROSECOND_PADDED: - return 6; - default: - return -1; - } -} - -enum class TimeSpecifierAMOrPM : uint8_t { TIME_SPECIFIER_NONE = 0, TIME_SPECIFIER_AM = 1, TIME_SPECIFIER_PM = 2 }; +enum class TimeSpecifierAMOrPM : uint8_t { TIME_SPECIFIER_NONE = 0, TIME_SPECIFIER_AM = 1, TIME_SPECIFIER_PM = 2 }; int32_t StrpTimeFormat::TryParseCollection(const char *data, idx_t &pos, idx_t size, const string_t collection[], idx_t collection_count) { @@ -80161,11 +79200,12 @@ unique_ptr CurrentSettingBind(ClientContext &context, ScalarFuncti throw ParserException("Key name for struct_extract needs to be neither NULL nor empty"); } - auto &config_map = context.db->config.set_variables; - if (config_map.find(key_val.str_value) == config_map.end()) { - throw InvalidInputException("Variable '%s' was not SET in this context", key_val.str_value); + const auto &key = key_val.str_value; + Value val; + if (!context.TryGetCurrentSetting(key, val)) { + throw InvalidInputException("Variable '%s' was not SET in this context", key); } - Value val = config_map[key_val.str_value]; + bound_function.return_type = val.type(); return make_unique(val); } @@ -86075,516 +85115,1701 @@ struct MD5Operator { static void MD5Function(DataChunk &args, ExpressionState &state, Vector &result) { auto &input = args.data[0]; - UnaryExecutor::ExecuteString(input, result, args.size()); -} + UnaryExecutor::ExecuteString(input, result, args.size()); +} + +void MD5Fun::RegisterFunction(BuiltinFunctions &set) { + set.AddFunction(ScalarFunction("md5", // name of the function + {LogicalType::VARCHAR}, // argument list + LogicalType::VARCHAR, // return type + MD5Function)); // pointer to function implementation +} + +} // namespace duckdb + + + +#include +#include + +namespace duckdb { + +static int64_t MismatchesScalarFunction(Vector &result, const string_t str, string_t tgt) { + idx_t str_len = str.GetSize(); + idx_t tgt_len = tgt.GetSize(); + + if (str_len != tgt_len) { + throw InvalidInputException("Mismatch Function: Strings must be of equal length!"); + } + if (str_len < 1) { + throw InvalidInputException("Mismatch Function: Strings must be of length > 0!"); + } + + idx_t mismatches = 0; + auto str_str = str.GetDataUnsafe(); + auto tgt_str = tgt.GetDataUnsafe(); + + for (idx_t idx = 0; idx < str_len; ++idx) { + if (str_str[idx] != tgt_str[idx]) { + mismatches++; + } + } + return (int64_t)mismatches; +} + +static void MismatchesFunction(DataChunk &args, ExpressionState &state, Vector &result) { + auto &str_vec = args.data[0]; + auto &tgt_vec = args.data[1]; + + BinaryExecutor::Execute( + str_vec, tgt_vec, result, args.size(), + [&](string_t str, string_t tgt) { return MismatchesScalarFunction(result, str, tgt); }); +} + +void MismatchesFun::RegisterFunction(BuiltinFunctions &set) { + ScalarFunctionSet mismatches("mismatches"); + mismatches.AddFunction(ScalarFunction("mismatches", {LogicalType::VARCHAR, LogicalType::VARCHAR}, + LogicalType::BIGINT, + MismatchesFunction)); // Pointer to function implementation + set.AddFunction(mismatches); + + ScalarFunctionSet hamming("hamming"); + hamming.AddFunction(ScalarFunction("mismatches", {LogicalType::VARCHAR, LogicalType::VARCHAR}, LogicalType::BIGINT, + MismatchesFunction)); // Pointer to function implementation + set.AddFunction(hamming); +} + +} // namespace duckdb + + + + +namespace duckdb { + +struct NFCNormalizeOperator { + template + static RESULT_TYPE Operation(INPUT_TYPE input, Vector &result) { + auto input_data = input.GetDataUnsafe(); + auto input_length = input.GetSize(); + if (StripAccentsFun::IsAscii(input_data, input_length)) { + return input; + } + auto normalized_str = Utf8Proc::Normalize(input_data, input_length); + D_ASSERT(normalized_str); + auto result_str = StringVector::AddString(result, normalized_str); + free(normalized_str); + return result_str; + } +}; + +static void NFCNormalizeFunction(DataChunk &args, ExpressionState &state, Vector &result) { + D_ASSERT(args.ColumnCount() == 1); + + UnaryExecutor::ExecuteString(args.data[0], result, args.size()); + StringVector::AddHeapReference(result, args.data[0]); +} + +ScalarFunction NFCNormalizeFun::GetFunction() { + return ScalarFunction("nfc_normalize", {LogicalType::VARCHAR}, LogicalType::VARCHAR, NFCNormalizeFunction); +} + +void NFCNormalizeFun::RegisterFunction(BuiltinFunctions &set) { + set.AddFunction(NFCNormalizeFun::GetFunction()); +} + +} // namespace duckdb + + + + + + + + + + +namespace duckdb { + +static pair PadCountChars(const idx_t len, const char *data, const idx_t size) { + // Count how much of str will fit in the output + auto str = reinterpret_cast(data); + idx_t nbytes = 0; + idx_t nchars = 0; + for (; nchars < len && nbytes < size; ++nchars) { + utf8proc_int32_t codepoint; + auto bytes = utf8proc_iterate(str + nbytes, size - nbytes, &codepoint); + D_ASSERT(bytes > 0); + nbytes += bytes; + } + + return pair(nbytes, nchars); +} + +static bool InsertPadding(const idx_t len, const string_t &pad, vector &result) { + // Copy the padding until the output is long enough + auto data = pad.GetDataUnsafe(); + auto size = pad.GetSize(); + + // Check whether we need data that we don't have + if (len > 0 && size == 0) { + return false; + } + + // Insert characters until we have all we need. + auto str = reinterpret_cast(data); + idx_t nbytes = 0; + for (idx_t nchars = 0; nchars < len; ++nchars) { + // If we are at the end of the pad, flush all of it and loop back + if (nbytes >= size) { + result.insert(result.end(), data, data + size); + nbytes = 0; + } + + // Write the next character + utf8proc_int32_t codepoint; + auto bytes = utf8proc_iterate(str + nbytes, size - nbytes, &codepoint); + D_ASSERT(bytes > 0); + nbytes += bytes; + } + + // Flush the remaining pad + result.insert(result.end(), data, data + nbytes); + + return true; +} + +static string_t LeftPadFunction(const string_t &str, const int32_t len, const string_t &pad, vector &result) { + // Reuse the buffer + result.clear(); + + // Get information about the base string + auto data_str = str.GetDataUnsafe(); + auto size_str = str.GetSize(); + + // Count how much of str will fit in the output + auto written = PadCountChars(len, data_str, size_str); + + // Left pad by the number of characters still needed + if (!InsertPadding(len - written.second, pad, result)) { + throw Exception("Insufficient padding in LPAD."); + } + + // Append as much of the original string as fits + result.insert(result.end(), data_str, data_str + written.first); + + return string_t(result.data(), result.size()); +} + +struct LeftPadOperator { + static inline string_t Operation(const string_t &str, const int32_t len, const string_t &pad, + vector &result) { + return LeftPadFunction(str, len, pad, result); + } +}; + +static string_t RightPadFunction(const string_t &str, const int32_t len, const string_t &pad, vector &result) { + // Reuse the buffer + result.clear(); + + // Get information about the base string + auto data_str = str.GetDataUnsafe(); + auto size_str = str.GetSize(); + + // Count how much of str will fit in the output + auto written = PadCountChars(len, data_str, size_str); + + // Append as much of the original string as fits + result.insert(result.end(), data_str, data_str + written.first); + + // Right pad by the number of characters still needed + if (!InsertPadding(len - written.second, pad, result)) { + throw Exception("Insufficient padding in RPAD."); + }; + + return string_t(result.data(), result.size()); +} + +struct RightPadOperator { + static inline string_t Operation(const string_t &str, const int32_t len, const string_t &pad, + vector &result) { + return RightPadFunction(str, len, pad, result); + } +}; + +template +static void PadFunction(DataChunk &args, ExpressionState &state, Vector &result) { + auto &str_vector = args.data[0]; + auto &len_vector = args.data[1]; + auto &pad_vector = args.data[2]; + + vector buffer; + TernaryExecutor::Execute( + str_vector, len_vector, pad_vector, result, args.size(), [&](string_t str, int32_t len, string_t pad) { + len = MaxValue(len, 0); + return StringVector::AddString(result, OP::Operation(str, len, pad, buffer)); + }); +} + +void LpadFun::RegisterFunction(BuiltinFunctions &set) { + set.AddFunction(ScalarFunction("lpad", // name of the function + {LogicalType::VARCHAR, LogicalType::INTEGER, // argument list + LogicalType::VARCHAR}, + LogicalType::VARCHAR, // return type + PadFunction)); // pointer to function implementation +} + +void RpadFun::RegisterFunction(BuiltinFunctions &set) { + set.AddFunction(ScalarFunction("rpad", // name of the function + {LogicalType::VARCHAR, LogicalType::INTEGER, // argument list + LogicalType::VARCHAR}, + LogicalType::VARCHAR, // return type + PadFunction)); // pointer to function implementation +} + +} // namespace duckdb + + + + + +namespace duckdb { + +static bool PrefixFunction(const string_t &str, const string_t &pattern); + +struct PrefixOperator { + template + static inline TR Operation(TA left, TB right) { + return PrefixFunction(left, right); + } +}; +static bool PrefixFunction(const string_t &str, const string_t &pattern) { + auto str_length = str.GetSize(); + auto patt_length = pattern.GetSize(); + if (patt_length > str_length) { + return false; + } + if (patt_length <= string_t::PREFIX_LENGTH) { + // short prefix + if (patt_length == 0) { + // length = 0, return true + return true; + } + + // prefix early out + const char *str_pref = str.GetPrefix(); + const char *patt_pref = pattern.GetPrefix(); + for (idx_t i = 0; i < patt_length; ++i) { + if (str_pref[i] != patt_pref[i]) { + return false; + } + } + return true; + } else { + // prefix early out + const char *str_pref = str.GetPrefix(); + const char *patt_pref = pattern.GetPrefix(); + for (idx_t i = 0; i < string_t::PREFIX_LENGTH; ++i) { + if (str_pref[i] != patt_pref[i]) { + // early out + return false; + } + } + // compare the rest of the prefix + const char *str_data = str.GetDataUnsafe(); + const char *patt_data = pattern.GetDataUnsafe(); + D_ASSERT(patt_length <= str_length); + for (idx_t i = string_t::PREFIX_LENGTH; i < patt_length; ++i) { + if (str_data[i] != patt_data[i]) { + return false; + } + } + return true; + } +} + +ScalarFunction PrefixFun::GetFunction() { + return ScalarFunction("prefix", // name of the function + {LogicalType::VARCHAR, LogicalType::VARCHAR}, // argument list + LogicalType::BOOLEAN, // return type + ScalarFunction::BinaryFunction); +} + +void PrefixFun::RegisterFunction(BuiltinFunctions &set) { + set.AddFunction(GetFunction()); +} + +} // namespace duckdb + + + + + + +namespace duckdb { + +struct FMTPrintf { + template + static string OP(const char *format_str, std::vector> &format_args) { + return duckdb_fmt::vsprintf( + format_str, duckdb_fmt::basic_format_args(format_args.data(), static_cast(format_args.size()))); + } +}; + +struct FMTFormat { + template + static string OP(const char *format_str, std::vector> &format_args) { + return duckdb_fmt::vformat( + format_str, duckdb_fmt::basic_format_args(format_args.data(), static_cast(format_args.size()))); + } +}; + +unique_ptr BindPrintfFunction(ClientContext &context, ScalarFunction &bound_function, + vector> &arguments) { + for (idx_t i = 1; i < arguments.size(); i++) { + switch (arguments[i]->return_type.id()) { + case LogicalTypeId::BOOLEAN: + case LogicalTypeId::TINYINT: + case LogicalTypeId::SMALLINT: + case LogicalTypeId::INTEGER: + case LogicalTypeId::BIGINT: + case LogicalTypeId::FLOAT: + case LogicalTypeId::DOUBLE: + case LogicalTypeId::VARCHAR: + // these types are natively supported + bound_function.arguments.push_back(arguments[i]->return_type); + break; + case LogicalTypeId::DECIMAL: + // decimal type: add cast to double + bound_function.arguments.push_back(LogicalType::DOUBLE); + break; + default: + // all other types: add cast to string + bound_function.arguments.push_back(LogicalType::VARCHAR); + break; + } + } + return nullptr; +} + +template +static void PrintfFunction(DataChunk &args, ExpressionState &state, Vector &result) { + auto &format_string = args.data[0]; + result.SetVectorType(VectorType::CONSTANT_VECTOR); + for (idx_t i = 0; i < args.ColumnCount(); i++) { + switch (args.data[i].GetVectorType()) { + case VectorType::CONSTANT_VECTOR: + if (ConstantVector::IsNull(args.data[i])) { + // constant null! result is always NULL regardless of other input + result.SetVectorType(VectorType::CONSTANT_VECTOR); + ConstantVector::SetNull(result, true); + return; + } + break; + default: + // FLAT VECTOR, we can directly OR the nullmask + args.data[i].Normalify(args.size()); + result.SetVectorType(VectorType::FLAT_VECTOR); + FlatVector::Validity(result).Combine(FlatVector::Validity(args.data[i]), args.size()); + break; + } + } + idx_t count = result.GetVectorType() == VectorType::CONSTANT_VECTOR ? 1 : args.size(); + + auto format_data = FlatVector::GetData(format_string); + auto result_data = FlatVector::GetData(result); + for (idx_t idx = 0; idx < count; idx++) { + if (result.GetVectorType() == VectorType::FLAT_VECTOR && FlatVector::IsNull(result, idx)) { + // this entry is NULL: skip it + continue; + } + + // first fetch the format string + auto fmt_idx = format_string.GetVectorType() == VectorType::CONSTANT_VECTOR ? 0 : idx; + auto format_string = format_data[fmt_idx].GetString(); + + // now gather all the format arguments + std::vector> format_args; + std::vector> string_args; + + for (idx_t col_idx = 1; col_idx < args.ColumnCount(); col_idx++) { + auto &col = args.data[col_idx]; + idx_t arg_idx = col.GetVectorType() == VectorType::CONSTANT_VECTOR ? 0 : idx; + switch (col.GetType().id()) { + case LogicalTypeId::BOOLEAN: { + auto arg_data = FlatVector::GetData(col); + format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); + break; + } + case LogicalTypeId::TINYINT: { + auto arg_data = FlatVector::GetData(col); + format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); + break; + } + case LogicalTypeId::SMALLINT: { + auto arg_data = FlatVector::GetData(col); + format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); + break; + } + case LogicalTypeId::INTEGER: { + auto arg_data = FlatVector::GetData(col); + format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); + break; + } + case LogicalTypeId::BIGINT: { + auto arg_data = FlatVector::GetData(col); + format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); + break; + } + case LogicalTypeId::FLOAT: { + auto arg_data = FlatVector::GetData(col); + format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); + break; + } + case LogicalTypeId::DOUBLE: { + auto arg_data = FlatVector::GetData(col); + format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); + break; + } + case LogicalTypeId::VARCHAR: { + auto arg_data = FlatVector::GetData(col); + auto string_view = + duckdb_fmt::basic_string_view(arg_data[arg_idx].GetDataUnsafe(), arg_data[arg_idx].GetSize()); + format_args.emplace_back(duckdb_fmt::internal::make_arg(string_view)); + break; + } + default: + throw InternalException("Unexpected type for printf format"); + } + } + // finally actually perform the format + string dynamic_result = FORMAT_FUN::template OP(format_string.c_str(), format_args); + result_data[idx] = StringVector::AddString(result, dynamic_result); + } +} + +void PrintfFun::RegisterFunction(BuiltinFunctions &set) { + // duckdb_fmt::printf_context, duckdb_fmt::vsprintf + ScalarFunction printf_fun = + ScalarFunction("printf", {LogicalType::VARCHAR}, LogicalType::VARCHAR, + PrintfFunction, false, BindPrintfFunction); + printf_fun.varargs = LogicalType::ANY; + set.AddFunction(printf_fun); + + // duckdb_fmt::format_context, duckdb_fmt::vformat + ScalarFunction format_fun = + ScalarFunction("format", {LogicalType::VARCHAR}, LogicalType::VARCHAR, + PrintfFunction, false, BindPrintfFunction); + format_fun.varargs = LogicalType::ANY; + set.AddFunction(format_fun); +} + +} // namespace duckdb + + + + + + + + + + +//===----------------------------------------------------------------------===// +// DuckDB +// +// duckdb/function/scalar/regexp.hpp +// +// +//===----------------------------------------------------------------------===// + + + + + + +// LICENSE_CHANGE_BEGIN +// The following code up to LICENSE_CHANGE_END is subject to THIRD PARTY LICENSE #6 +// See the end of this file for a list + +// Copyright 2003-2009 The RE2 Authors. All Rights Reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#ifndef RE2_RE2_H_ +#define RE2_RE2_H_ + +// C++ interface to the re2 regular-expression library. +// RE2 supports Perl-style regular expressions (with extensions like +// \d, \w, \s, ...). +// +// ----------------------------------------------------------------------- +// REGEXP SYNTAX: +// +// This module uses the re2 library and hence supports +// its syntax for regular expressions, which is similar to Perl's with +// some of the more complicated things thrown away. In particular, +// backreferences and generalized assertions are not available, nor is \Z. +// +// See https://github.com/google/re2/wiki/Syntax for the syntax +// supported by RE2, and a comparison with PCRE and PERL regexps. +// +// For those not familiar with Perl's regular expressions, +// here are some examples of the most commonly used extensions: +// +// "hello (\\w+) world" -- \w matches a "word" character +// "version (\\d+)" -- \d matches a digit +// "hello\\s+world" -- \s matches any whitespace character +// "\\b(\\w+)\\b" -- \b matches non-empty string at word boundary +// "(?i)hello" -- (?i) turns on case-insensitive matching +// "/\\*(.*?)\\*/" -- .*? matches . minimum no. of times possible +// +// ----------------------------------------------------------------------- +// MATCHING INTERFACE: +// +// The "FullMatch" operation checks that supplied text matches a +// supplied pattern exactly. +// +// Example: successful match +// CHECK(RE2::FullMatch("hello", "h.*o")); +// +// Example: unsuccessful match (requires full match): +// CHECK(!RE2::FullMatch("hello", "e")); +// +// ----------------------------------------------------------------------- +// UTF-8 AND THE MATCHING INTERFACE: +// +// By default, the pattern and input text are interpreted as UTF-8. +// The RE2::Latin1 option causes them to be interpreted as Latin-1. +// +// Example: +// CHECK(RE2::FullMatch(utf8_string, RE2(utf8_pattern))); +// CHECK(RE2::FullMatch(latin1_string, RE2(latin1_pattern, RE2::Latin1))); +// +// ----------------------------------------------------------------------- +// MATCHING WITH SUBSTRING EXTRACTION: +// +// You can supply extra pointer arguments to extract matched substrings. +// On match failure, none of the pointees will have been modified. +// On match success, the substrings will be converted (as necessary) and +// their values will be assigned to their pointees until all conversions +// have succeeded or one conversion has failed. +// On conversion failure, the pointees will be in an indeterminate state +// because the caller has no way of knowing which conversion failed. +// However, conversion cannot fail for types like string and StringPiece +// that do not inspect the substring contents. Hence, in the common case +// where all of the pointees are of such types, failure is always due to +// match failure and thus none of the pointees will have been modified. +// +// Example: extracts "ruby" into "s" and 1234 into "i" +// int i; +// std::string s; +// CHECK(RE2::FullMatch("ruby:1234", "(\\w+):(\\d+)", &s, &i)); +// +// Example: fails because string cannot be stored in integer +// CHECK(!RE2::FullMatch("ruby", "(.*)", &i)); +// +// Example: fails because there aren't enough sub-patterns +// CHECK(!RE2::FullMatch("ruby:1234", "\\w+:\\d+", &s)); +// +// Example: does not try to extract any extra sub-patterns +// CHECK(RE2::FullMatch("ruby:1234", "(\\w+):(\\d+)", &s)); +// +// Example: does not try to extract into NULL +// CHECK(RE2::FullMatch("ruby:1234", "(\\w+):(\\d+)", NULL, &i)); +// +// Example: integer overflow causes failure +// CHECK(!RE2::FullMatch("ruby:1234567891234", "\\w+:(\\d+)", &i)); +// +// NOTE(rsc): Asking for substrings slows successful matches quite a bit. +// This may get a little faster in the future, but right now is slower +// than PCRE. On the other hand, failed matches run *very* fast (faster +// than PCRE), as do matches without substring extraction. +// +// ----------------------------------------------------------------------- +// PARTIAL MATCHES +// +// You can use the "PartialMatch" operation when you want the pattern +// to match any substring of the text. +// +// Example: simple search for a string: +// CHECK(RE2::PartialMatch("hello", "ell")); +// +// Example: find first number in a string +// int number; +// CHECK(RE2::PartialMatch("x*100 + 20", "(\\d+)", &number)); +// CHECK_EQ(number, 100); +// +// ----------------------------------------------------------------------- +// PRE-COMPILED REGULAR EXPRESSIONS +// +// RE2 makes it easy to use any string as a regular expression, without +// requiring a separate compilation step. +// +// If speed is of the essence, you can create a pre-compiled "RE2" +// object from the pattern and use it multiple times. If you do so, +// you can typically parse text faster than with sscanf. +// +// Example: precompile pattern for faster matching: +// RE2 pattern("h.*o"); +// while (ReadLine(&str)) { +// if (RE2::FullMatch(str, pattern)) ...; +// } +// +// ----------------------------------------------------------------------- +// SCANNING TEXT INCREMENTALLY +// +// The "Consume" operation may be useful if you want to repeatedly +// match regular expressions at the front of a string and skip over +// them as they match. This requires use of the "StringPiece" type, +// which represents a sub-range of a real string. +// +// Example: read lines of the form "var = value" from a string. +// std::string contents = ...; // Fill string somehow +// StringPiece input(contents); // Wrap a StringPiece around it +// +// std::string var; +// int value; +// while (RE2::Consume(&input, "(\\w+) = (\\d+)\n", &var, &value)) { +// ...; +// } +// +// Each successful call to "Consume" will set "var/value", and also +// advance "input" so it points past the matched text. Note that if the +// regular expression matches an empty string, input will advance +// by 0 bytes. If the regular expression being used might match +// an empty string, the loop body must check for this case and either +// advance the string or break out of the loop. +// +// The "FindAndConsume" operation is similar to "Consume" but does not +// anchor your match at the beginning of the string. For example, you +// could extract all words from a string by repeatedly calling +// RE2::FindAndConsume(&input, "(\\w+)", &word) +// +// ----------------------------------------------------------------------- +// USING VARIABLE NUMBER OF ARGUMENTS +// +// The above operations require you to know the number of arguments +// when you write the code. This is not always possible or easy (for +// example, the regular expression may be calculated at run time). +// You can use the "N" version of the operations when the number of +// match arguments are determined at run time. +// +// Example: +// const RE2::Arg* args[10]; +// int n; +// // ... populate args with pointers to RE2::Arg values ... +// // ... set n to the number of RE2::Arg objects ... +// bool match = RE2::FullMatchN(input, pattern, args, n); +// +// The last statement is equivalent to +// +// bool match = RE2::FullMatch(input, pattern, +// *args[0], *args[1], ..., *args[n - 1]); +// +// ----------------------------------------------------------------------- +// PARSING HEX/OCTAL/C-RADIX NUMBERS +// +// By default, if you pass a pointer to a numeric value, the +// corresponding text is interpreted as a base-10 number. You can +// instead wrap the pointer with a call to one of the operators Hex(), +// Octal(), or CRadix() to interpret the text in another base. The +// CRadix operator interprets C-style "0" (base-8) and "0x" (base-16) +// prefixes, but defaults to base-10. +// +// Example: +// int a, b, c, d; +// CHECK(RE2::FullMatch("100 40 0100 0x40", "(.*) (.*) (.*) (.*)", +// RE2::Octal(&a), RE2::Hex(&b), RE2::CRadix(&c), RE2::CRadix(&d)); +// will leave 64 in a, b, c, and d. + +#include +#include +#include +#include +#include +#include + + + +// LICENSE_CHANGE_BEGIN +// The following code up to LICENSE_CHANGE_END is subject to THIRD PARTY LICENSE #6 +// See the end of this file for a list + +// Copyright 2001-2010 The RE2 Authors. All Rights Reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#ifndef RE2_STRINGPIECE_H_ +#define RE2_STRINGPIECE_H_ + +#ifdef min +#undef min +#endif + +// A string-like object that points to a sized piece of memory. +// +// Functions or methods may use const StringPiece& parameters to accept either +// a "const char*" or a "string" value that will be implicitly converted to +// a StringPiece. The implicit conversion means that it is often appropriate +// to include this .h file in other files rather than forward-declaring +// StringPiece as would be appropriate for most other Google classes. +// +// Systematic usage of StringPiece is encouraged as it will reduce unnecessary +// conversions from "const char*" to "string" and back again. +// +// +// Arghh! I wish C++ literals were "string". + +// Doing this simplifies the logic below. +#ifndef __has_include +#define __has_include(x) 0 +#endif + +#include +#include +#include +#include +#include +#include +#if __has_include() && __cplusplus >= 201703L +#include +#endif + +namespace duckdb_re2 { + +class StringPiece { + public: + typedef std::char_traits traits_type; + typedef char value_type; + typedef char* pointer; + typedef const char* const_pointer; + typedef char& reference; + typedef const char& const_reference; + typedef const char* const_iterator; + typedef const_iterator iterator; + typedef std::reverse_iterator const_reverse_iterator; + typedef const_reverse_iterator reverse_iterator; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + static const size_type npos = static_cast(-1); + + // We provide non-explicit singleton constructors so users can pass + // in a "const char*" or a "string" wherever a "StringPiece" is + // expected. + StringPiece() + : data_(NULL), size_(0) {} +#if __has_include() && __cplusplus >= 201703L + StringPiece(const std::string_view& str) + : data_(str.data()), size_(str.size()) {} +#endif + StringPiece(const std::string& str) + : data_(str.data()), size_(str.size()) {} + StringPiece(const char* str) + : data_(str), size_(str == NULL ? 0 : strlen(str)) {} + StringPiece(const char* str, size_type len) + : data_(str), size_(len) {} + + const_iterator begin() const { return data_; } + const_iterator end() const { return data_ + size_; } + const_reverse_iterator rbegin() const { + return const_reverse_iterator(data_ + size_); + } + const_reverse_iterator rend() const { + return const_reverse_iterator(data_); + } + + size_type size() const { return size_; } + size_type length() const { return size_; } + bool empty() const { return size_ == 0; } + + const_reference operator[](size_type i) const { return data_[i]; } + const_pointer data() const { return data_; } + + void remove_prefix(size_type n) { + data_ += n; + size_ -= n; + } + + void remove_suffix(size_type n) { + size_ -= n; + } + + void set(const char* str) { + data_ = str; + size_ = str == NULL ? 0 : strlen(str); + } + + void set(const char* str, size_type len) { + data_ = str; + size_ = len; + } + + // Converts to `std::basic_string`. + template + explicit operator std::basic_string() const { + if (!data_) return {}; + return std::basic_string(data_, size_); + } + + std::string as_string() const { + return std::string(data_, size_); + } + + // We also define ToString() here, since many other string-like + // interfaces name the routine that converts to a C++ string + // "ToString", and it's confusing to have the method that does that + // for a StringPiece be called "as_string()". We also leave the + // "as_string()" method defined here for existing code. + std::string ToString() const { + return std::string(data_, size_); + } + + void CopyToString(std::string* target) const { + target->assign(data_, size_); + } + + void AppendToString(std::string* target) const { + target->append(data_, size_); + } + + size_type copy(char* buf, size_type n, size_type pos = 0) const; + StringPiece substr(size_type pos = 0, size_type n = npos) const; + + int compare(const StringPiece& x) const { + size_type min_size = std::min(size(), x.size()); + if (min_size > 0) { + int r = memcmp(data(), x.data(), min_size); + if (r < 0) return -1; + if (r > 0) return 1; + } + if (size() < x.size()) return -1; + if (size() > x.size()) return 1; + return 0; + } + + // Does "this" start with "x"? + bool starts_with(const StringPiece& x) const { + return x.empty() || + (size() >= x.size() && memcmp(data(), x.data(), x.size()) == 0); + } + + // Does "this" end with "x"? + bool ends_with(const StringPiece& x) const { + return x.empty() || + (size() >= x.size() && + memcmp(data() + (size() - x.size()), x.data(), x.size()) == 0); + } + + bool contains(const StringPiece& s) const { + return find(s) != npos; + } + + size_type find(const StringPiece& s, size_type pos = 0) const; + size_type find(char c, size_type pos = 0) const; + size_type rfind(const StringPiece& s, size_type pos = npos) const; + size_type rfind(char c, size_type pos = npos) const; + + private: + const_pointer data_; + size_type size_; +}; + +inline bool operator==(const StringPiece& x, const StringPiece& y) { + StringPiece::size_type len = x.size(); + if (len != y.size()) return false; + return x.data() == y.data() || len == 0 || + memcmp(x.data(), y.data(), len) == 0; +} + +inline bool operator!=(const StringPiece& x, const StringPiece& y) { + return !(x == y); +} + +inline bool operator<(const StringPiece& x, const StringPiece& y) { + StringPiece::size_type min_size = std::min(x.size(), y.size()); + int r = min_size == 0 ? 0 : memcmp(x.data(), y.data(), min_size); + return (r < 0) || (r == 0 && x.size() < y.size()); +} + +inline bool operator>(const StringPiece& x, const StringPiece& y) { + return y < x; +} + +inline bool operator<=(const StringPiece& x, const StringPiece& y) { + return !(x > y); +} + +inline bool operator>=(const StringPiece& x, const StringPiece& y) { + return !(x < y); +} + +// Allow StringPiece to be logged. +std::ostream& operator<<(std::ostream& o, const StringPiece& p); + +} // namespace duckdb_re2 + +#endif // RE2_STRINGPIECE_H_ + + +// LICENSE_CHANGE_END + + +namespace duckdb_re2 { +class Prog; +class Regexp; +} // namespace duckdb_re2 + +namespace duckdb_re2 { + +// Interface for regular expression matching. Also corresponds to a +// pre-compiled regular expression. An "RE2" object is safe for +// concurrent use by multiple threads. +class RE2 { + public: + // We convert user-passed pointers into special Arg objects + class Arg; + class Options; + + // Defined in set.h. + class Set; + + enum ErrorCode { + NoError = 0, + + // Unexpected error + ErrorInternal, + + // Parse errors + ErrorBadEscape, // bad escape sequence + ErrorBadCharClass, // bad character class + ErrorBadCharRange, // bad character class range + ErrorMissingBracket, // missing closing ] + ErrorMissingParen, // missing closing ) + ErrorTrailingBackslash, // trailing \ at end of regexp + ErrorRepeatArgument, // repeat argument missing, e.g. "*" + ErrorRepeatSize, // bad repetition argument + ErrorRepeatOp, // bad repetition operator + ErrorBadPerlOp, // bad perl operator + ErrorBadUTF8, // invalid UTF-8 in regexp + ErrorBadNamedCapture, // bad named capture group + ErrorPatternTooLarge // pattern too large (compile failed) + }; + + // Predefined common options. + // If you need more complicated things, instantiate + // an Option class, possibly passing one of these to + // the Option constructor, change the settings, and pass that + // Option class to the RE2 constructor. + enum CannedOptions { + DefaultOptions = 0, + Latin1, // treat input as Latin-1 (default UTF-8) + POSIX, // POSIX syntax, leftmost-longest match + Quiet // do not log about regexp parse errors + }; + + // Need to have the const char* and const std::string& forms for implicit + // conversions when passing string literals to FullMatch and PartialMatch. + // Otherwise the StringPiece form would be sufficient. +#ifndef SWIG + RE2(const char* pattern); + RE2(const std::string& pattern); +#endif + RE2(const StringPiece& pattern); + RE2(const StringPiece& pattern, const Options& options); + ~RE2(); + + // Returns whether RE2 was created properly. + bool ok() const { return error_code() == NoError; } -void MD5Fun::RegisterFunction(BuiltinFunctions &set) { - set.AddFunction(ScalarFunction("md5", // name of the function - {LogicalType::VARCHAR}, // argument list - LogicalType::VARCHAR, // return type - MD5Function)); // pointer to function implementation -} + // The string specification for this RE2. E.g. + // RE2 re("ab*c?d+"); + // re.pattern(); // "ab*c?d+" + const std::string& pattern() const { return pattern_; } -} // namespace duckdb + // If RE2 could not be created properly, returns an error string. + // Else returns the empty string. + const std::string& error() const { return *error_; } + // If RE2 could not be created properly, returns an error code. + // Else returns RE2::NoError (== 0). + ErrorCode error_code() const { return error_code_; } + // If RE2 could not be created properly, returns the offending + // portion of the regexp. + const std::string& error_arg() const { return error_arg_; } -#include -#include + // Returns the program size, a very approximate measure of a regexp's "cost". + // Larger numbers are more expensive than smaller numbers. + int ProgramSize() const; + int ReverseProgramSize() const; -namespace duckdb { + // EXPERIMENTAL! SUBJECT TO CHANGE! + // Outputs the program fanout as a histogram bucketed by powers of 2. + // Returns the number of the largest non-empty bucket. + int ProgramFanout(std::map* histogram) const; + int ReverseProgramFanout(std::map* histogram) const; -static int64_t MismatchesScalarFunction(Vector &result, const string_t str, string_t tgt) { - idx_t str_len = str.GetSize(); - idx_t tgt_len = tgt.GetSize(); + // Returns the underlying Regexp; not for general use. + // Returns entire_regexp_ so that callers don't need + // to know about prefix_ and prefix_foldcase_. + duckdb_re2::Regexp* Regexp() const { return entire_regexp_; } - if (str_len != tgt_len) { - throw InvalidInputException("Mismatch Function: Strings must be of equal length!"); - } - if (str_len < 1) { - throw InvalidInputException("Mismatch Function: Strings must be of length > 0!"); - } + /***** The array-based matching interface ******/ - idx_t mismatches = 0; - auto str_str = str.GetDataUnsafe(); - auto tgt_str = tgt.GetDataUnsafe(); + // The functions here have names ending in 'N' and are used to implement + // the functions whose names are the prefix before the 'N'. It is sometimes + // useful to invoke them directly, but the syntax is awkward, so the 'N'-less + // versions should be preferred. + static bool FullMatchN(const StringPiece& text, const RE2& re, + const Arg* const args[], int n); + static bool PartialMatchN(const StringPiece& text, const RE2& re, + const Arg* const args[], int n); + static bool ConsumeN(StringPiece* input, const RE2& re, + const Arg* const args[], int n); + static bool FindAndConsumeN(StringPiece* input, const RE2& re, + const Arg* const args[], int n); - for (idx_t idx = 0; idx < str_len; ++idx) { - if (str_str[idx] != tgt_str[idx]) { - mismatches++; - } - } - return (int64_t)mismatches; -} +#ifndef SWIG + private: + template + static inline bool Apply(F f, SP sp, const RE2& re) { + return f(sp, re, NULL, 0); + } -static void MismatchesFunction(DataChunk &args, ExpressionState &state, Vector &result) { - auto &str_vec = args.data[0]; - auto &tgt_vec = args.data[1]; + template + static inline bool Apply(F f, SP sp, const RE2& re, const A&... a) { + const Arg* const args[] = {&a...}; + const int n = sizeof...(a); + return f(sp, re, args, n); + } - BinaryExecutor::Execute( - str_vec, tgt_vec, result, args.size(), - [&](string_t str, string_t tgt) { return MismatchesScalarFunction(result, str, tgt); }); -} + public: + // In order to allow FullMatch() et al. to be called with a varying number + // of arguments of varying types, we use two layers of variadic templates. + // The first layer constructs the temporary Arg objects. The second layer + // (above) constructs the array of pointers to the temporary Arg objects. -void MismatchesFun::RegisterFunction(BuiltinFunctions &set) { - ScalarFunctionSet mismatches("mismatches"); - mismatches.AddFunction(ScalarFunction("mismatches", {LogicalType::VARCHAR, LogicalType::VARCHAR}, - LogicalType::BIGINT, - MismatchesFunction)); // Pointer to function implementation - set.AddFunction(mismatches); + /***** The useful part: the matching interface *****/ - ScalarFunctionSet hamming("hamming"); - hamming.AddFunction(ScalarFunction("mismatches", {LogicalType::VARCHAR, LogicalType::VARCHAR}, LogicalType::BIGINT, - MismatchesFunction)); // Pointer to function implementation - set.AddFunction(hamming); -} + // Matches "text" against "re". If pointer arguments are + // supplied, copies matched sub-patterns into them. + // + // You can pass in a "const char*" or a "std::string" for "text". + // You can pass in a "const char*" or a "std::string" or a "RE2" for "re". + // + // The provided pointer arguments can be pointers to any scalar numeric + // type, or one of: + // std::string (matched piece is copied to string) + // StringPiece (StringPiece is mutated to point to matched piece) + // T (where "bool T::ParseFrom(const char*, size_t)" exists) + // (void*)NULL (the corresponding matched sub-pattern is not copied) + // + // Returns true iff all of the following conditions are satisfied: + // a. "text" matches "re" exactly + // b. The number of matched sub-patterns is >= number of supplied pointers + // c. The "i"th argument has a suitable type for holding the + // string captured as the "i"th sub-pattern. If you pass in + // NULL for the "i"th argument, or pass fewer arguments than + // number of sub-patterns, "i"th captured sub-pattern is + // ignored. + // + // CAVEAT: An optional sub-pattern that does not exist in the + // matched string is assigned the empty string. Therefore, the + // following will return false (because the empty string is not a + // valid number): + // int number; + // RE2::FullMatch("abc", "[a-z]+(\\d+)?", &number); + template + static bool FullMatch(const StringPiece& text, const RE2& re, A&&... a) { + return Apply(FullMatchN, text, re, Arg(std::forward(a))...); + } -} // namespace duckdb + // Exactly like FullMatch(), except that "re" is allowed to match + // a substring of "text". + template + static bool PartialMatch(const StringPiece& text, const RE2& re, A&&... a) { + return Apply(PartialMatchN, text, re, Arg(std::forward(a))...); + } + // Like FullMatch() and PartialMatch(), except that "re" has to match + // a prefix of the text, and "input" is advanced past the matched + // text. Note: "input" is modified iff this routine returns true + // and "re" matched a non-empty substring of "text". + template + static bool Consume(StringPiece* input, const RE2& re, A&&... a) { + return Apply(ConsumeN, input, re, Arg(std::forward(a))...); + } + // Like Consume(), but does not anchor the match at the beginning of + // the text. That is, "re" need not start its match at the beginning + // of "input". For example, "FindAndConsume(s, "(\\w+)", &word)" finds + // the next word in "s" and stores it in "word". + template + static bool FindAndConsume(StringPiece* input, const RE2& re, A&&... a) { + return Apply(FindAndConsumeN, input, re, Arg(std::forward(a))...); + } +#endif + // Replace the first match of "re" in "str" with "rewrite". + // Within "rewrite", backslash-escaped digits (\1 to \9) can be + // used to insert text matching corresponding parenthesized group + // from the pattern. \0 in "rewrite" refers to the entire matching + // text. E.g., + // + // std::string s = "yabba dabba doo"; + // CHECK(RE2::Replace(&s, "b+", "d")); + // + // will leave "s" containing "yada dabba doo" + // + // Returns true if the pattern matches and a replacement occurs, + // false otherwise. + static bool Replace(std::string* str, + const RE2& re, + const StringPiece& rewrite); -namespace duckdb { + // Like Replace(), except replaces successive non-overlapping occurrences + // of the pattern in the string with the rewrite. E.g. + // + // std::string s = "yabba dabba doo"; + // CHECK(RE2::GlobalReplace(&s, "b+", "d")); + // + // will leave "s" containing "yada dada doo" + // Replacements are not subject to re-matching. + // + // Because GlobalReplace only replaces non-overlapping matches, + // replacing "ana" within "banana" makes only one replacement, not two. + // + // Returns the number of replacements made. + static int GlobalReplace(std::string* str, + const RE2& re, + const StringPiece& rewrite); -struct NFCNormalizeOperator { - template - static RESULT_TYPE Operation(INPUT_TYPE input, Vector &result) { - auto input_data = input.GetDataUnsafe(); - auto input_length = input.GetSize(); - if (StripAccentsFun::IsAscii(input_data, input_length)) { - return input; - } - auto normalized_str = Utf8Proc::Normalize(input_data, input_length); - D_ASSERT(normalized_str); - auto result_str = StringVector::AddString(result, normalized_str); - free(normalized_str); - return result_str; - } -}; + // Like Replace, except that if the pattern matches, "rewrite" + // is copied into "out" with substitutions. The non-matching + // portions of "text" are ignored. + // + // Returns true iff a match occurred and the extraction happened + // successfully; if no match occurs, the string is left unaffected. + // + // REQUIRES: "text" must not alias any part of "*out". + static bool Extract(const StringPiece& text, + const RE2& re, + const StringPiece& rewrite, + std::string* out); -static void NFCNormalizeFunction(DataChunk &args, ExpressionState &state, Vector &result) { - D_ASSERT(args.ColumnCount() == 1); + // Escapes all potentially meaningful regexp characters in + // 'unquoted'. The returned string, used as a regular expression, + // will exactly match the original string. For example, + // 1.5-2.0? + // may become: + // 1\.5\-2\.0\? + static std::string QuoteMeta(const StringPiece& unquoted); - UnaryExecutor::ExecuteString(args.data[0], result, args.size()); - StringVector::AddHeapReference(result, args.data[0]); -} + // Computes range for any strings matching regexp. The min and max can in + // some cases be arbitrarily precise, so the caller gets to specify the + // maximum desired length of string returned. + // + // Assuming PossibleMatchRange(&min, &max, N) returns successfully, any + // string s that is an anchored match for this regexp satisfies + // min <= s && s <= max. + // + // Note that PossibleMatchRange() will only consider the first copy of an + // infinitely repeated element (i.e., any regexp element followed by a '*' or + // '+' operator). Regexps with "{N}" constructions are not affected, as those + // do not compile down to infinite repetitions. + // + // Returns true on success, false on error. + bool PossibleMatchRange(std::string* min, std::string* max, + int maxlen) const; -ScalarFunction NFCNormalizeFun::GetFunction() { - return ScalarFunction("nfc_normalize", {LogicalType::VARCHAR}, LogicalType::VARCHAR, NFCNormalizeFunction); -} + // Generic matching interface -void NFCNormalizeFun::RegisterFunction(BuiltinFunctions &set) { - set.AddFunction(NFCNormalizeFun::GetFunction()); -} + // Type of match. + enum Anchor { + UNANCHORED, // No anchoring + ANCHOR_START, // Anchor at start only + ANCHOR_BOTH // Anchor at start and end + }; -} // namespace duckdb + // Return the number of capturing subpatterns, or -1 if the + // regexp wasn't valid on construction. The overall match ($0) + // does not count: if the regexp is "(a)(b)", returns 2. + int NumberOfCapturingGroups() const { return num_captures_; } + // Return a map from names to capturing indices. + // The map records the index of the leftmost group + // with the given name. + // Only valid until the re is deleted. + const std::map& NamedCapturingGroups() const; + // Return a map from capturing indices to names. + // The map has no entries for unnamed groups. + // Only valid until the re is deleted. + const std::map& CapturingGroupNames() const; + // General matching routine. + // Match against text starting at offset startpos + // and stopping the search at offset endpos. + // Returns true if match found, false if not. + // On a successful match, fills in submatch[] (up to nsubmatch entries) + // with information about submatches. + // I.e. matching RE2("(foo)|(bar)baz") on "barbazbla" will return true, with + // submatch[0] = "barbaz", submatch[1].data() = NULL, submatch[2] = "bar", + // submatch[3].data() = NULL, ..., up to submatch[nsubmatch-1].data() = NULL. + // Caveat: submatch[] may be clobbered even on match failure. + // + // Don't ask for more match information than you will use: + // runs much faster with nsubmatch == 1 than nsubmatch > 1, and + // runs even faster if nsubmatch == 0. + // Doesn't make sense to use nsubmatch > 1 + NumberOfCapturingGroups(), + // but will be handled correctly. + // + // Passing text == StringPiece(NULL, 0) will be handled like any other + // empty string, but note that on return, it will not be possible to tell + // whether submatch i matched the empty string or did not match: + // either way, submatch[i].data() == NULL. + bool Match(const StringPiece& text, + size_t startpos, + size_t endpos, + Anchor re_anchor, + StringPiece* submatch, + int nsubmatch) const; + // Check that the given rewrite string is suitable for use with this + // regular expression. It checks that: + // * The regular expression has enough parenthesized subexpressions + // to satisfy all of the \N tokens in rewrite + // * The rewrite string doesn't have any syntax errors. E.g., + // '\' followed by anything other than a digit or '\'. + // A true return value guarantees that Replace() and Extract() won't + // fail because of a bad rewrite string. + bool CheckRewriteString(const StringPiece& rewrite, + std::string* error) const; + // Returns the maximum submatch needed for the rewrite to be done by + // Replace(). E.g. if rewrite == "foo \\2,\\1", returns 2. + static int MaxSubmatch(const StringPiece& rewrite); + // Append the "rewrite" string, with backslash subsitutions from "vec", + // to string "out". + // Returns true on success. This method can fail because of a malformed + // rewrite string. CheckRewriteString guarantees that the rewrite will + // be sucessful. + bool Rewrite(std::string* out, + const StringPiece& rewrite, + const StringPiece* vec, + int veclen) const; + // Constructor options + class Options { + public: + // The options are (defaults in parentheses): + // + // utf8 (true) text and pattern are UTF-8; otherwise Latin-1 + // posix_syntax (false) restrict regexps to POSIX egrep syntax + // longest_match (false) search for longest match, not first match + // log_errors (true) log syntax and execution errors to ERROR + // max_mem (see below) approx. max memory footprint of RE2 + // literal (false) interpret string as literal, not regexp + // never_nl (false) never match \n, even if it is in regexp + // dot_nl (false) dot matches everything including new line + // never_capture (false) parse all parens as non-capturing + // case_sensitive (true) match is case-sensitive (regexp can override + // with (?i) unless in posix_syntax mode) + // + // The following options are only consulted when posix_syntax == true. + // When posix_syntax == false, these features are always enabled and + // cannot be turned off; to perform multi-line matching in that case, + // begin the regexp with (?m). + // perl_classes (false) allow Perl's \d \s \w \D \S \W + // word_boundary (false) allow Perl's \b \B (word boundary and not) + // one_line (false) ^ and $ only match beginning and end of text + // + // The max_mem option controls how much memory can be used + // to hold the compiled form of the regexp (the Prog) and + // its cached DFA graphs. Code Search placed limits on the number + // of Prog instructions and DFA states: 10,000 for both. + // In RE2, those limits would translate to about 240 KB per Prog + // and perhaps 2.5 MB per DFA (DFA state sizes vary by regexp; RE2 does a + // better job of keeping them small than Code Search did). + // Each RE2 has two Progs (one forward, one reverse), and each Prog + // can have two DFAs (one first match, one longest match). + // That makes 4 DFAs: + // + // forward, first-match - used for UNANCHORED or ANCHOR_START searches + // if opt.longest_match() == false + // forward, longest-match - used for all ANCHOR_BOTH searches, + // and the other two kinds if + // opt.longest_match() == true + // reverse, first-match - never used + // reverse, longest-match - used as second phase for unanchored searches + // + // The RE2 memory budget is statically divided between the two + // Progs and then the DFAs: two thirds to the forward Prog + // and one third to the reverse Prog. The forward Prog gives half + // of what it has left over to each of its DFAs. The reverse Prog + // gives it all to its longest-match DFA. + // + // Once a DFA fills its budget, it flushes its cache and starts over. + // If this happens too often, RE2 falls back on the NFA implementation. + // For now, make the default budget something close to Code Search. + static const int kDefaultMaxMem = 8<<20; + enum Encoding { + EncodingUTF8 = 1, + EncodingLatin1 + }; -namespace duckdb { + Options() : + encoding_(EncodingUTF8), + posix_syntax_(false), + longest_match_(false), + log_errors_(true), + max_mem_(kDefaultMaxMem), + literal_(false), + never_nl_(false), + dot_nl_(false), + never_capture_(false), + case_sensitive_(true), + perl_classes_(false), + word_boundary_(false), + one_line_(false) { + } -static pair PadCountChars(const idx_t len, const char *data, const idx_t size) { - // Count how much of str will fit in the output - auto str = reinterpret_cast(data); - idx_t nbytes = 0; - idx_t nchars = 0; - for (; nchars < len && nbytes < size; ++nchars) { - utf8proc_int32_t codepoint; - auto bytes = utf8proc_iterate(str + nbytes, size - nbytes, &codepoint); - D_ASSERT(bytes > 0); - nbytes += bytes; - } + /*implicit*/ Options(CannedOptions); - return pair(nbytes, nchars); -} + Encoding encoding() const { return encoding_; } + void set_encoding(Encoding encoding) { encoding_ = encoding; } -static bool InsertPadding(const idx_t len, const string_t &pad, vector &result) { - // Copy the padding until the output is long enough - auto data = pad.GetDataUnsafe(); - auto size = pad.GetSize(); + // Legacy interface to encoding. + // TODO(rsc): Remove once clients have been converted. + bool utf8() const { return encoding_ == EncodingUTF8; } + void set_utf8(bool b) { + if (b) { + encoding_ = EncodingUTF8; + } else { + encoding_ = EncodingLatin1; + } + } - // Check whether we need data that we don't have - if (len > 0 && size == 0) { - return false; - } + bool posix_syntax() const { return posix_syntax_; } + void set_posix_syntax(bool b) { posix_syntax_ = b; } - // Insert characters until we have all we need. - auto str = reinterpret_cast(data); - idx_t nbytes = 0; - for (idx_t nchars = 0; nchars < len; ++nchars) { - // If we are at the end of the pad, flush all of it and loop back - if (nbytes >= size) { - result.insert(result.end(), data, data + size); - nbytes = 0; - } + bool longest_match() const { return longest_match_; } + void set_longest_match(bool b) { longest_match_ = b; } - // Write the next character - utf8proc_int32_t codepoint; - auto bytes = utf8proc_iterate(str + nbytes, size - nbytes, &codepoint); - D_ASSERT(bytes > 0); - nbytes += bytes; - } + bool log_errors() const { return log_errors_; } + void set_log_errors(bool b) { log_errors_ = b; } - // Flush the remaining pad - result.insert(result.end(), data, data + nbytes); + int64_t max_mem() const { return max_mem_; } + void set_max_mem(int64_t m) { max_mem_ = m; } - return true; -} + bool literal() const { return literal_; } + void set_literal(bool b) { literal_ = b; } -static string_t LeftPadFunction(const string_t &str, const int32_t len, const string_t &pad, vector &result) { - // Reuse the buffer - result.clear(); + bool never_nl() const { return never_nl_; } + void set_never_nl(bool b) { never_nl_ = b; } - // Get information about the base string - auto data_str = str.GetDataUnsafe(); - auto size_str = str.GetSize(); + bool dot_nl() const { return dot_nl_; } + void set_dot_nl(bool b) { dot_nl_ = b; } - // Count how much of str will fit in the output - auto written = PadCountChars(len, data_str, size_str); + bool never_capture() const { return never_capture_; } + void set_never_capture(bool b) { never_capture_ = b; } - // Left pad by the number of characters still needed - if (!InsertPadding(len - written.second, pad, result)) { - throw Exception("Insufficient padding in LPAD."); - } + bool case_sensitive() const { return case_sensitive_; } + void set_case_sensitive(bool b) { case_sensitive_ = b; } - // Append as much of the original string as fits - result.insert(result.end(), data_str, data_str + written.first); + bool perl_classes() const { return perl_classes_; } + void set_perl_classes(bool b) { perl_classes_ = b; } - return string_t(result.data(), result.size()); -} + bool word_boundary() const { return word_boundary_; } + void set_word_boundary(bool b) { word_boundary_ = b; } -struct LeftPadOperator { - static inline string_t Operation(const string_t &str, const int32_t len, const string_t &pad, - vector &result) { - return LeftPadFunction(str, len, pad, result); - } -}; + bool one_line() const { return one_line_; } + void set_one_line(bool b) { one_line_ = b; } -static string_t RightPadFunction(const string_t &str, const int32_t len, const string_t &pad, vector &result) { - // Reuse the buffer - result.clear(); + void Copy(const Options& src) { + *this = src; + } - // Get information about the base string - auto data_str = str.GetDataUnsafe(); - auto size_str = str.GetSize(); + int ParseFlags() const; - // Count how much of str will fit in the output - auto written = PadCountChars(len, data_str, size_str); + private: + Encoding encoding_; + bool posix_syntax_; + bool longest_match_; + bool log_errors_; + int64_t max_mem_; + bool literal_; + bool never_nl_; + bool dot_nl_; + bool never_capture_; + bool case_sensitive_; + bool perl_classes_; + bool word_boundary_; + bool one_line_; + }; - // Append as much of the original string as fits - result.insert(result.end(), data_str, data_str + written.first); + // Returns the options set in the constructor. + const Options& options() const { return options_; } - // Right pad by the number of characters still needed - if (!InsertPadding(len - written.second, pad, result)) { - throw Exception("Insufficient padding in RPAD."); - }; + // Argument converters; see below. + static inline Arg CRadix(short* x); + static inline Arg CRadix(unsigned short* x); + static inline Arg CRadix(int* x); + static inline Arg CRadix(unsigned int* x); + static inline Arg CRadix(long* x); + static inline Arg CRadix(unsigned long* x); + static inline Arg CRadix(long long* x); + static inline Arg CRadix(unsigned long long* x); - return string_t(result.data(), result.size()); -} + static inline Arg Hex(short* x); + static inline Arg Hex(unsigned short* x); + static inline Arg Hex(int* x); + static inline Arg Hex(unsigned int* x); + static inline Arg Hex(long* x); + static inline Arg Hex(unsigned long* x); + static inline Arg Hex(long long* x); + static inline Arg Hex(unsigned long long* x); -struct RightPadOperator { - static inline string_t Operation(const string_t &str, const int32_t len, const string_t &pad, - vector &result) { - return RightPadFunction(str, len, pad, result); - } -}; + static inline Arg Octal(short* x); + static inline Arg Octal(unsigned short* x); + static inline Arg Octal(int* x); + static inline Arg Octal(unsigned int* x); + static inline Arg Octal(long* x); + static inline Arg Octal(unsigned long* x); + static inline Arg Octal(long long* x); + static inline Arg Octal(unsigned long long* x); -template -static void PadFunction(DataChunk &args, ExpressionState &state, Vector &result) { - auto &str_vector = args.data[0]; - auto &len_vector = args.data[1]; - auto &pad_vector = args.data[2]; + private: + void Init(const StringPiece& pattern, const Options& options); - vector buffer; - TernaryExecutor::Execute( - str_vector, len_vector, pad_vector, result, args.size(), [&](string_t str, int32_t len, string_t pad) { - len = MaxValue(len, 0); - return StringVector::AddString(result, OP::Operation(str, len, pad, buffer)); - }); -} + bool DoMatch(const StringPiece& text, + Anchor re_anchor, + size_t* consumed, + const Arg* const args[], + int n) const; -void LpadFun::RegisterFunction(BuiltinFunctions &set) { - set.AddFunction(ScalarFunction("lpad", // name of the function - {LogicalType::VARCHAR, LogicalType::INTEGER, // argument list - LogicalType::VARCHAR}, - LogicalType::VARCHAR, // return type - PadFunction)); // pointer to function implementation -} + duckdb_re2::Prog* ReverseProg() const; -void RpadFun::RegisterFunction(BuiltinFunctions &set) { - set.AddFunction(ScalarFunction("rpad", // name of the function - {LogicalType::VARCHAR, LogicalType::INTEGER, // argument list - LogicalType::VARCHAR}, - LogicalType::VARCHAR, // return type - PadFunction)); // pointer to function implementation -} + std::string pattern_; // string regular expression + Options options_; // option flags + std::string prefix_; // required prefix (before regexp_) + bool prefix_foldcase_; // prefix is ASCII case-insensitive + duckdb_re2::Regexp* entire_regexp_; // parsed regular expression + duckdb_re2::Regexp* suffix_regexp_; // parsed regular expression, prefix removed + duckdb_re2::Prog* prog_; // compiled program for regexp + int num_captures_; // Number of capturing groups + bool is_one_pass_; // can use prog_->SearchOnePass? -} // namespace duckdb + mutable duckdb_re2::Prog* rprog_; // reverse program for regexp + mutable const std::string* error_; // Error indicator + // (or points to empty string) + mutable ErrorCode error_code_; // Error code + mutable std::string error_arg_; // Fragment of regexp showing error + // Map from capture names to indices + mutable const std::map* named_groups_; + // Map from capture indices to names + mutable const std::map* group_names_; + // Onces for lazy computations. + mutable std::once_flag rprog_once_; + mutable std::once_flag named_groups_once_; + mutable std::once_flag group_names_once_; + RE2(const RE2&) = delete; + RE2& operator=(const RE2&) = delete; +}; -namespace duckdb { +/***** Implementation details *****/ -static bool PrefixFunction(const string_t &str, const string_t &pattern); +// Hex/Octal/Binary? -struct PrefixOperator { - template - static inline TR Operation(TA left, TB right) { - return PrefixFunction(left, right); - } +// Special class for parsing into objects that define a ParseFrom() method +template +class _RE2_MatchObject { + public: + static inline bool Parse(const char* str, size_t n, void* dest) { + if (dest == NULL) return true; + T* object = reinterpret_cast(dest); + return object->ParseFrom(str, n); + } }; -static bool PrefixFunction(const string_t &str, const string_t &pattern) { - auto str_length = str.GetSize(); - auto patt_length = pattern.GetSize(); - if (patt_length > str_length) { - return false; - } - if (patt_length <= string_t::PREFIX_LENGTH) { - // short prefix - if (patt_length == 0) { - // length = 0, return true - return true; - } - - // prefix early out - const char *str_pref = str.GetPrefix(); - const char *patt_pref = pattern.GetPrefix(); - for (idx_t i = 0; i < patt_length; ++i) { - if (str_pref[i] != patt_pref[i]) { - return false; - } - } - return true; - } else { - // prefix early out - const char *str_pref = str.GetPrefix(); - const char *patt_pref = pattern.GetPrefix(); - for (idx_t i = 0; i < string_t::PREFIX_LENGTH; ++i) { - if (str_pref[i] != patt_pref[i]) { - // early out - return false; - } - } - // compare the rest of the prefix - const char *str_data = str.GetDataUnsafe(); - const char *patt_data = pattern.GetDataUnsafe(); - D_ASSERT(patt_length <= str_length); - for (idx_t i = string_t::PREFIX_LENGTH; i < patt_length; ++i) { - if (str_data[i] != patt_data[i]) { - return false; - } - } - return true; - } -} -ScalarFunction PrefixFun::GetFunction() { - return ScalarFunction("prefix", // name of the function - {LogicalType::VARCHAR, LogicalType::VARCHAR}, // argument list - LogicalType::BOOLEAN, // return type - ScalarFunction::BinaryFunction); -} +class RE2::Arg { + public: + // Empty constructor so we can declare arrays of RE2::Arg + Arg(); -void PrefixFun::RegisterFunction(BuiltinFunctions &set) { - set.AddFunction(GetFunction()); -} + // Constructor specially designed for NULL arguments + Arg(void*); + Arg(std::nullptr_t); -} // namespace duckdb + typedef bool (*Parser)(const char* str, size_t n, void* dest); +// Type-specific parsers +#define MAKE_PARSER(type, name) \ + Arg(type* p) : arg_(p), parser_(name) {} \ + Arg(type* p, Parser parser) : arg_(p), parser_(parser) {} + MAKE_PARSER(char, parse_char) + MAKE_PARSER(signed char, parse_schar) + MAKE_PARSER(unsigned char, parse_uchar) + MAKE_PARSER(float, parse_float) + MAKE_PARSER(double, parse_double) + MAKE_PARSER(std::string, parse_string) + MAKE_PARSER(StringPiece, parse_stringpiece) + MAKE_PARSER(short, parse_short) + MAKE_PARSER(unsigned short, parse_ushort) + MAKE_PARSER(int, parse_int) + MAKE_PARSER(unsigned int, parse_uint) + MAKE_PARSER(long, parse_long) + MAKE_PARSER(unsigned long, parse_ulong) + MAKE_PARSER(long long, parse_longlong) + MAKE_PARSER(unsigned long long, parse_ulonglong) +#undef MAKE_PARSER + // Generic constructor templates + template Arg(T* p) + : arg_(p), parser_(_RE2_MatchObject::Parse) { } + template Arg(T* p, Parser parser) + : arg_(p), parser_(parser) { } -namespace duckdb { + // Parse the data + bool Parse(const char* str, size_t n) const; -struct FMTPrintf { - template - static string OP(const char *format_str, std::vector> &format_args) { - return duckdb_fmt::vsprintf( - format_str, duckdb_fmt::basic_format_args(format_args.data(), static_cast(format_args.size()))); - } -}; + private: + void* arg_; + Parser parser_; -struct FMTFormat { - template - static string OP(const char *format_str, std::vector> &format_args) { - return duckdb_fmt::vformat( - format_str, duckdb_fmt::basic_format_args(format_args.data(), static_cast(format_args.size()))); - } -}; + static bool parse_null (const char* str, size_t n, void* dest); + static bool parse_char (const char* str, size_t n, void* dest); + static bool parse_schar (const char* str, size_t n, void* dest); + static bool parse_uchar (const char* str, size_t n, void* dest); + static bool parse_float (const char* str, size_t n, void* dest); + static bool parse_double (const char* str, size_t n, void* dest); + static bool parse_string (const char* str, size_t n, void* dest); + static bool parse_stringpiece (const char* str, size_t n, void* dest); -unique_ptr BindPrintfFunction(ClientContext &context, ScalarFunction &bound_function, - vector> &arguments) { - for (idx_t i = 1; i < arguments.size(); i++) { - switch (arguments[i]->return_type.id()) { - case LogicalTypeId::BOOLEAN: - case LogicalTypeId::TINYINT: - case LogicalTypeId::SMALLINT: - case LogicalTypeId::INTEGER: - case LogicalTypeId::BIGINT: - case LogicalTypeId::FLOAT: - case LogicalTypeId::DOUBLE: - case LogicalTypeId::VARCHAR: - // these types are natively supported - bound_function.arguments.push_back(arguments[i]->return_type); - break; - case LogicalTypeId::DECIMAL: - // decimal type: add cast to double - bound_function.arguments.push_back(LogicalType::DOUBLE); - break; - default: - // all other types: add cast to string - bound_function.arguments.push_back(LogicalType::VARCHAR); - break; - } - } - return nullptr; -} +#define DECLARE_INTEGER_PARSER(name) \ + private: \ + static bool parse_##name(const char* str, size_t n, void* dest); \ + static bool parse_##name##_radix(const char* str, size_t n, void* dest, \ + int radix); \ + \ + public: \ + static bool parse_##name##_hex(const char* str, size_t n, void* dest); \ + static bool parse_##name##_octal(const char* str, size_t n, void* dest); \ + static bool parse_##name##_cradix(const char* str, size_t n, void* dest); -template -static void PrintfFunction(DataChunk &args, ExpressionState &state, Vector &result) { - auto &format_string = args.data[0]; - result.SetVectorType(VectorType::CONSTANT_VECTOR); - for (idx_t i = 0; i < args.ColumnCount(); i++) { - switch (args.data[i].GetVectorType()) { - case VectorType::CONSTANT_VECTOR: - if (ConstantVector::IsNull(args.data[i])) { - // constant null! result is always NULL regardless of other input - result.SetVectorType(VectorType::CONSTANT_VECTOR); - ConstantVector::SetNull(result, true); - return; - } - break; - default: - // FLAT VECTOR, we can directly OR the nullmask - args.data[i].Normalify(args.size()); - result.SetVectorType(VectorType::FLAT_VECTOR); - FlatVector::Validity(result).Combine(FlatVector::Validity(args.data[i]), args.size()); - break; - } - } - idx_t count = result.GetVectorType() == VectorType::CONSTANT_VECTOR ? 1 : args.size(); + DECLARE_INTEGER_PARSER(short) + DECLARE_INTEGER_PARSER(ushort) + DECLARE_INTEGER_PARSER(int) + DECLARE_INTEGER_PARSER(uint) + DECLARE_INTEGER_PARSER(long) + DECLARE_INTEGER_PARSER(ulong) + DECLARE_INTEGER_PARSER(longlong) + DECLARE_INTEGER_PARSER(ulonglong) - auto format_data = FlatVector::GetData(format_string); - auto result_data = FlatVector::GetData(result); - for (idx_t idx = 0; idx < count; idx++) { - if (result.GetVectorType() == VectorType::FLAT_VECTOR && FlatVector::IsNull(result, idx)) { - // this entry is NULL: skip it - continue; - } +#undef DECLARE_INTEGER_PARSER - // first fetch the format string - auto fmt_idx = format_string.GetVectorType() == VectorType::CONSTANT_VECTOR ? 0 : idx; - auto format_string = format_data[fmt_idx].GetString(); +}; - // now gather all the format arguments - std::vector> format_args; - std::vector> string_args; +inline RE2::Arg::Arg() : arg_(NULL), parser_(parse_null) { } +inline RE2::Arg::Arg(void* p) : arg_(p), parser_(parse_null) { } +inline RE2::Arg::Arg(std::nullptr_t p) : arg_(p), parser_(parse_null) { } - for (idx_t col_idx = 1; col_idx < args.ColumnCount(); col_idx++) { - auto &col = args.data[col_idx]; - idx_t arg_idx = col.GetVectorType() == VectorType::CONSTANT_VECTOR ? 0 : idx; - switch (col.GetType().id()) { - case LogicalTypeId::BOOLEAN: { - auto arg_data = FlatVector::GetData(col); - format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); - break; - } - case LogicalTypeId::TINYINT: { - auto arg_data = FlatVector::GetData(col); - format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); - break; - } - case LogicalTypeId::SMALLINT: { - auto arg_data = FlatVector::GetData(col); - format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); - break; - } - case LogicalTypeId::INTEGER: { - auto arg_data = FlatVector::GetData(col); - format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); - break; - } - case LogicalTypeId::BIGINT: { - auto arg_data = FlatVector::GetData(col); - format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); - break; - } - case LogicalTypeId::FLOAT: { - auto arg_data = FlatVector::GetData(col); - format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); - break; - } - case LogicalTypeId::DOUBLE: { - auto arg_data = FlatVector::GetData(col); - format_args.emplace_back(duckdb_fmt::internal::make_arg(arg_data[arg_idx])); - break; - } - case LogicalTypeId::VARCHAR: { - auto arg_data = FlatVector::GetData(col); - auto string_view = - duckdb_fmt::basic_string_view(arg_data[arg_idx].GetDataUnsafe(), arg_data[arg_idx].GetSize()); - format_args.emplace_back(duckdb_fmt::internal::make_arg(string_view)); - break; - } - default: - throw InternalException("Unexpected type for printf format"); - } - } - // finally actually perform the format - string dynamic_result = FORMAT_FUN::template OP(format_string.c_str(), format_args); - result_data[idx] = StringVector::AddString(result, dynamic_result); - } +inline bool RE2::Arg::Parse(const char* str, size_t n) const { + return (*parser_)(str, n, arg_); } -void PrintfFun::RegisterFunction(BuiltinFunctions &set) { - // duckdb_fmt::printf_context, duckdb_fmt::vsprintf - ScalarFunction printf_fun = - ScalarFunction("printf", {LogicalType::VARCHAR}, LogicalType::VARCHAR, - PrintfFunction, false, BindPrintfFunction); - printf_fun.varargs = LogicalType::ANY; - set.AddFunction(printf_fun); +// This part of the parser, appropriate only for ints, deals with bases +#define MAKE_INTEGER_PARSER(type, name) \ + inline RE2::Arg RE2::Hex(type* ptr) { \ + return RE2::Arg(ptr, RE2::Arg::parse_##name##_hex); \ + } \ + inline RE2::Arg RE2::Octal(type* ptr) { \ + return RE2::Arg(ptr, RE2::Arg::parse_##name##_octal); \ + } \ + inline RE2::Arg RE2::CRadix(type* ptr) { \ + return RE2::Arg(ptr, RE2::Arg::parse_##name##_cradix); \ + } - // duckdb_fmt::format_context, duckdb_fmt::vformat - ScalarFunction format_fun = - ScalarFunction("format", {LogicalType::VARCHAR}, LogicalType::VARCHAR, - PrintfFunction, false, BindPrintfFunction); - format_fun.varargs = LogicalType::ANY; - set.AddFunction(format_fun); -} +MAKE_INTEGER_PARSER(short, short) +MAKE_INTEGER_PARSER(unsigned short, ushort) +MAKE_INTEGER_PARSER(int, int) +MAKE_INTEGER_PARSER(unsigned int, uint) +MAKE_INTEGER_PARSER(long, long) +MAKE_INTEGER_PARSER(unsigned long, ulong) +MAKE_INTEGER_PARSER(long long, longlong) +MAKE_INTEGER_PARSER(unsigned long long, ulonglong) + +#undef MAKE_INTEGER_PARSER + +#ifndef SWIG -} // namespace duckdb +// Helper for writing global or static RE2s safely. +// Write +// static LazyRE2 re = {".*"}; +// and then use *re instead of writing +// static RE2 re(".*"); +// The former is more careful about multithreaded +// situations than the latter. +// +// N.B. This class never deletes the RE2 object that +// it constructs: that's a feature, so that it can be used +// for global and function static variables. +class LazyRE2 { + private: + struct NoArg {}; + public: + typedef RE2 element_type; // support std::pointer_traits + // Constructor omitted to preserve braced initialization in C++98. + // Pretend to be a pointer to Type (never NULL due to on-demand creation): + RE2& operator*() const { return *get(); } + RE2* operator->() const { return get(); } + // Named accessor/initializer: + RE2* get() const { + std::call_once(once_, &LazyRE2::Init, this); + return ptr_; + } + // All data fields must be public to support {"foo"} initialization. + const char* pattern_; + RE2::CannedOptions options_; + NoArg barrier_against_excess_initializers_; + mutable RE2* ptr_; + mutable std::once_flag once_; + private: + static void Init(const LazyRE2* lazy_re2) { + lazy_re2->ptr_ = new RE2(lazy_re2->pattern_, lazy_re2->options_); + } + void operator=(const LazyRE2&); // disallowed +}; +#endif // SWIG -//===----------------------------------------------------------------------===// -// DuckDB -// -// duckdb/function/scalar/regexp.hpp -// -// -//===----------------------------------------------------------------------===// +} // namespace duckdb_re2 +using duckdb_re2::RE2; +using duckdb_re2::LazyRE2; +#endif // RE2_RE2_H_ +// LICENSE_CHANGE_END namespace duckdb { @@ -88104,7 +88329,9 @@ void BuiltinFunctions::RegisterTrigonometricsFunctions() { + #include +#include namespace duckdb { //===--------------------------------------------------------------------===// @@ -88135,6 +88362,19 @@ struct ArrowConvertData { }; struct ArrowScanFunctionData : public TableFunctionData { +#ifndef DUCKDB_NO_THREADS + + ArrowScanFunctionData(idx_t rows_per_thread_p, + unique_ptr (*scanner_producer_p)( + uintptr_t stream_factory_ptr, + std::pair, std::vector> &project_columns, + TableFilterCollection *filters), + uintptr_t stream_factory_ptr_p, std::thread::id thread_id_p) + : lines_read(0), rows_per_thread(rows_per_thread_p), stream_factory_ptr(stream_factory_ptr_p), + scanner_producer(scanner_producer_p), number_of_rows(0), thread_id(thread_id_p) { + } +#endif + ArrowScanFunctionData(idx_t rows_per_thread_p, unique_ptr (*scanner_producer_p)( uintptr_t stream_factory_ptr, @@ -88158,6 +88398,10 @@ struct ArrowScanFunctionData : public TableFunctionData { TableFilterCollection *filters); //! Number of rows (Used in cardinality and progress bar) int64_t number_of_rows; +#ifndef DUCKDB_NO_THREADS + // Thread that made first call in the binder + std::thread::id thread_id; +#endif }; struct ArrowScanState : public FunctionOperatorData { @@ -88176,7 +88420,10 @@ struct ParallelArrowScanState : public ParallelState { ParallelArrowScanState() { } unique_ptr stream; - std::mutex lock; + std::mutex main_mutex; + std::mutex sync_mutex; + std::condition_variable cv; + bool ready = false; }; struct ArrowTableFunction { @@ -88401,7 +88648,13 @@ unique_ptr ArrowTableFunction::ArrowScanBind(ClientContext &contex .GetPointer(); auto rows_per_thread = inputs[2].GetValue(); std::pair, std::vector> project_columns; +#ifndef DUCKDB_NO_THREADS + + auto res = make_unique(rows_per_thread, stream_factory_produce, stream_factory_ptr, + std::this_thread::get_id()); +#else auto res = make_unique(rows_per_thread, stream_factory_produce, stream_factory_ptr); +#endif auto &data = *res; auto stream = stream_factory_produce(stream_factory_ptr, project_columns, nullptr); @@ -88438,15 +88691,7 @@ unique_ptr ProduceArrowScan(const ArrowScanFunctionData TableFilterCollection *filters) { //! Generate Projection Pushdown Vector pair, vector> project_columns; - if (scan_state.column_ids.empty()) { - //! We have to push all columns, to generate proper scanners. - auto &schema = function.schema_root.arrow_schema; - for (idx_t col_idx = 0; col_idx < (idx_t)schema.n_children; col_idx++) { - auto &column_schema = *schema.children[col_idx]; - project_columns.first[col_idx] = column_schema.name; - project_columns.second.emplace_back(column_schema.name); - } - } + D_ASSERT(!scan_state.column_ids.empty()); for (idx_t idx = 0; idx < scan_state.column_ids.size(); idx++) { auto col_idx = scan_state.column_ids[idx]; if (col_idx != COLUMN_IDENTIFIER_ROW_ID) { @@ -88737,11 +88982,15 @@ template void TimeConversion(Vector &vector, ArrowArray &array, ArrowScanState &scan_state, int64_t nested_offset, idx_t size, int64_t conversion) { auto tgt_ptr = (dtime_t *)FlatVector::GetData(vector); + auto &validity_mask = FlatVector::Validity(vector); auto src_ptr = (T *)array.buffers[1] + scan_state.chunk_offset + array.offset; if (nested_offset != -1) { src_ptr = (T *)array.buffers[1] + nested_offset + array.offset; } for (idx_t row = 0; row < size; row++) { + if (!validity_mask.RowIsValid(row)) { + continue; + } if (!TryMultiplyOperator::Operation((int64_t)src_ptr[row], conversion, tgt_ptr[row].micros)) { throw ConversionException("Could not convert Interval to Microsecond"); } @@ -89287,12 +89536,29 @@ bool ArrowTableFunction::ArrowScanParallelStateNext(ClientContext &context, cons auto &bind_data = (const ArrowScanFunctionData &)*bind_data_p; auto &state = (ArrowScanState &)*operator_state; auto ¶llel_state = (ParallelArrowScanState &)*parallel_state_p; +#ifndef DUCKDB_NO_THREADS + if (!parallel_state.stream) { + std::unique_lock sync_lock(parallel_state.sync_mutex); - lock_guard parallel_lock(parallel_state.lock); + if (std::this_thread::get_id() == bind_data.thread_id) { + //! Generate a Stream + parallel_state.stream = ProduceArrowScan(bind_data, state, state.filters); + parallel_state.ready = true; + parallel_state.cv.notify_all(); + } else { + parallel_state.cv.wait(sync_lock, [¶llel_state] { return parallel_state.ready; }); + } + } + lock_guard parallel_lock(parallel_state.main_mutex); + +#else + lock_guard parallel_lock(parallel_state.main_mutex); if (!parallel_state.stream) { //! Generate a Stream parallel_state.stream = ProduceArrowScan(bind_data, state, state.filters); } +#endif + state.chunk_offset = 0; auto current_chunk = parallel_state.stream->GetNextChunk(); @@ -96949,6 +97215,22 @@ unique_ptr ClientContext::Execute(const shared_ptr &relat return make_unique(err_str); } +bool ClientContext::TryGetCurrentSetting(const std::string &key, Value &result) { + const auto &session_config_map = set_variables; + const auto &global_config_map = db->config.set_variables; + + auto session_value = session_config_map.find(key); + bool found_session_value = session_value != session_config_map.end(); + auto global_value = global_config_map.find(key); + bool found_global_value = global_value != global_config_map.end(); + if (!found_session_value && !found_global_value) { + return false; + } + + result = found_session_value ? session_value->second : global_value->second; + return true; +} + } // namespace duckdb @@ -103100,7 +103382,8 @@ TableFilterSet FilterCombiner::GenerateTableScanFilters(vector &column_id constant_value.second[0].comparison_type == ExpressionType::COMPARE_LESSTHAN || constant_value.second[0].comparison_type == ExpressionType::COMPARE_LESSTHANOREQUALTO) && (TypeIsNumeric(constant_value.second[0].constant.type().InternalType()) || - constant_value.second[0].constant.type().InternalType() == PhysicalType::VARCHAR)) { + constant_value.second[0].constant.type().InternalType() == PhysicalType::VARCHAR || + constant_value.second[0].constant.type().InternalType() == PhysicalType::BOOL)) { //! Here we check if these filters are column references filter_exp = equivalence_map.find(constant_value.first); if (filter_exp->second.size() == 1 && filter_exp->second[0]->type == ExpressionType::BOUND_COLUMN_REF) { @@ -105970,7 +106253,8 @@ class LikeOptimizationRule : public Rule { unique_ptr Apply(LogicalOperator &op, vector &bindings, bool &changes_made) override; - unique_ptr ApplyRule(BoundFunctionExpression *expr, ScalarFunction function, string pattern); + unique_ptr ApplyRule(BoundFunctionExpression *expr, ScalarFunction function, string pattern, + bool is_not_like); }; } // namespace duckdb @@ -108068,18 +108352,98 @@ namespace duckdb { LikeOptimizationRule::LikeOptimizationRule(ExpressionRewriter &rewriter) : Rule(rewriter) { // match on a FunctionExpression that has a foldable ConstantExpression auto func = make_unique(); - func->matchers.push_back(make_unique()); func->matchers.push_back(make_unique()); - func->policy = SetMatcher::Policy::SOME; - // we only match on LIKE ("~~") - func->function = make_unique("~~"); + func->matchers.push_back(make_unique()); + func->policy = SetMatcher::Policy::ORDERED; + // we match on LIKE ("~~") and NOT LIKE ("!~~") + func->function = make_unique(unordered_set {"!~~", "~~"}); root = move(func); } +static bool PatternIsConstant(const string &pattern) { + for (idx_t i = 0; i < pattern.size(); i++) { + if (pattern[i] == '%' || pattern[i] == '_') { + return false; + } + } + return true; +} + +static bool PatternIsPrefix(const string &pattern) { + idx_t i; + for (i = pattern.size(); i > 0; i--) { + if (pattern[i - 1] != '%') { + break; + } + } + if (i == pattern.size()) { + // no trailing % + // cannot be a prefix + return false; + } + // continue to look in the string + // if there is a % or _ in the string (besides at the very end) this is not a prefix match + for (; i > 0; i--) { + if (pattern[i - 1] == '%' || pattern[i - 1] == '_') { + return false; + } + } + return true; +} + +static bool PatternIsSuffix(const string &pattern) { + idx_t i; + for (i = 0; i < pattern.size(); i++) { + if (pattern[i] != '%') { + break; + } + } + if (i == 0) { + // no leading % + // cannot be a suffix + return false; + } + // continue to look in the string + // if there is a % or _ in the string (besides at the beginning) this is not a suffix match + for (; i < pattern.size(); i++) { + if (pattern[i] == '%' || pattern[i] == '_') { + return false; + } + } + return true; +} + +static bool PatternIsContains(const string &pattern) { + idx_t start; + idx_t end; + for (start = 0; start < pattern.size(); start++) { + if (pattern[start] != '%') { + break; + } + } + for (end = pattern.size(); end > 0; end--) { + if (pattern[end - 1] != '%') { + break; + } + } + if (start == 0 || end == pattern.size()) { + // contains requires both a leading AND a trailing % + return false; + } + // check if there are any other special characters in the string + // if there is a % or _ in the string (besides at the beginning/end) this is not a contains match + for (idx_t i = start; i < end; i++) { + if (pattern[i] == '%' || pattern[i] == '_') { + return false; + } + } + return true; +} + unique_ptr LikeOptimizationRule::Apply(LogicalOperator &op, vector &bindings, bool &changes_made) { auto root = (BoundFunctionExpression *)bindings[0]; - auto constant_expr = (BoundConstantExpression *)bindings[1]; + auto constant_expr = (BoundConstantExpression *)bindings[2]; D_ASSERT(root->children.size() == 2); if (constant_expr->value.is_null) { @@ -108088,42 +108452,52 @@ unique_ptr LikeOptimizationRule::Apply(LogicalOperator &op, vectorIsFoldable()) { - return root->Copy(); + return nullptr; } auto constant_value = ExpressionExecutor::EvaluateScalar(*constant_expr); D_ASSERT(constant_value.type() == constant_expr->return_type); auto patt_str = constant_value.str_value; - duckdb_re2::RE2 prefix_pattern("[^%_]*[%]+"); - duckdb_re2::RE2 suffix_pattern("[%]+[^%_]*"); - duckdb_re2::RE2 contains_pattern("[%]+[^%_]*[%]+"); - - if (duckdb_re2::RE2::FullMatch(patt_str, prefix_pattern)) { + bool is_not_like = root->function.name == "!~~"; + if (PatternIsConstant(patt_str)) { + // Pattern is constant + return make_unique(is_not_like ? ExpressionType::COMPARE_NOTEQUAL + : ExpressionType::COMPARE_EQUAL, + move(root->children[0]), move(root->children[1])); + } else if (PatternIsPrefix(patt_str)) { // Prefix LIKE pattern : [^%_]*[%]+, ignoring underscore - return ApplyRule(root, PrefixFun::GetFunction(), patt_str); - } else if (duckdb_re2::RE2::FullMatch(patt_str, suffix_pattern)) { + return ApplyRule(root, PrefixFun::GetFunction(), patt_str, is_not_like); + } else if (PatternIsSuffix(patt_str)) { // Suffix LIKE pattern: [%]+[^%_]*, ignoring underscore - return ApplyRule(root, SuffixFun::GetFunction(), patt_str); - } else if (duckdb_re2::RE2::FullMatch(patt_str, contains_pattern)) { + return ApplyRule(root, SuffixFun::GetFunction(), patt_str, is_not_like); + } else if (PatternIsContains(patt_str)) { // Contains LIKE pattern: [%]+[^%_]*[%]+, ignoring underscore - return ApplyRule(root, ContainsFun::GetFunction(), patt_str); + return ApplyRule(root, ContainsFun::GetFunction(), patt_str, is_not_like); } - return nullptr; } unique_ptr LikeOptimizationRule::ApplyRule(BoundFunctionExpression *expr, ScalarFunction function, - string pattern) { + string pattern, bool is_not_like) { // replace LIKE by an optimized function - expr->function = move(function); + unique_ptr result; + auto new_function = + make_unique(expr->return_type, move(function), move(expr->children), nullptr); // removing "%" from the pattern pattern.erase(std::remove(pattern.begin(), pattern.end(), '%'), pattern.end()); - expr->children[1] = make_unique(Value(move(pattern))); + new_function->children[1] = make_unique(Value(move(pattern))); + + result = move(new_function); + if (is_not_like) { + auto negation = make_unique(ExpressionType::OPERATOR_NOT, LogicalType::BOOLEAN); + negation->children.push_back(move(result)); + result = move(negation); + } - return expr->Copy(); + return result; } } // namespace duckdb @@ -109336,13 +109710,13 @@ unique_ptr StatisticsPropagator::PropagateStatistics(LogicalOrde node_stats = PropagateStatistics(order.children[0]); // then propagate to each of the order expressions - for (idx_t i = 0; i < order.orders.size(); i++) { - auto &expr = order.orders[i].expression; + for (auto &bound_order : order.orders) { + auto &expr = bound_order.expression; PropagateExpression(expr); if (expr->stats) { - order.statistics.push_back(expr->stats->Copy()); + bound_order.stats = expr->stats->Copy(); } else { - order.statistics.push_back(nullptr); + bound_order.stats = nullptr; } } return move(node_stats); @@ -109452,12 +109826,36 @@ unique_ptr StatisticsPropagator::PropagateStatistics(LogicalSetO + namespace duckdb { -unique_ptr StatisticsPropagator::PropagateStatistics(LogicalWindow &order, +unique_ptr StatisticsPropagator::PropagateStatistics(LogicalWindow &window, unique_ptr *node_ptr) { - // propagate statistics in the child node - return PropagateStatistics(order.children[0]); + // first propagate to the child + node_stats = PropagateStatistics(window.children[0]); + + // then propagate to each of the order expressions + for (auto &window_expr : window.expressions) { + auto over_expr = reinterpret_cast(window_expr.get()); + for (auto &expr : over_expr->partitions) { + PropagateExpression(expr); + if (expr->stats) { + over_expr->partitions_stats.push_back(expr->stats->Copy()); + } else { + over_expr->partitions_stats.push_back(nullptr); + } + } + for (auto &bound_order : over_expr->orders) { + auto &expr = bound_order.expression; + PropagateExpression(expr); + if (expr->stats) { + bound_order.stats = expr->stats->Copy(); + } else { + bound_order.stats = nullptr; + } + } + } + return move(node_stats); } } // namespace duckdb @@ -109508,6 +109906,8 @@ unique_ptr StatisticsPropagator::PropagateStatistics(LogicalOper return PropagateStatistics((LogicalSetOperation &)node, node_ptr); case LogicalOperatorType::LOGICAL_ORDER_BY: return PropagateStatistics((LogicalOrder &)node, node_ptr); + case LogicalOperatorType::LOGICAL_WINDOW: + return PropagateStatistics((LogicalWindow &)node, node_ptr); default: return PropagateChildren(node, node_ptr); } @@ -110152,6 +110552,7 @@ void Pipeline::Schedule() { } break; } + case PhysicalOperatorType::TOP_N: case PhysicalOperatorType::CREATE_TABLE_AS: case PhysicalOperatorType::ORDER_BY: case PhysicalOperatorType::RESERVOIR_SAMPLE: @@ -121466,12 +121867,19 @@ typedef enum { VAR_RESET_ALL /* RESET ALL */ } VariableSetKind; +typedef enum { + VAR_SET_SCOPE_LOCAL, /* SET LOCAL var */ + VAR_SET_SCOPE_SESSION, /* SET SESSION var */ + VAR_SET_SCOPE_GLOBAL, /* SET GLOBAL var */ + VAR_SET_SCOPE_DEFAULT /* SET var (same as SET_SESSION) */ +} VariableSetScope; + typedef struct PGVariableSetStmt { PGNodeTag type; VariableSetKind kind; + VariableSetScope scope; char *name; /* variable to be set */ PGList *args; /* PGList of PGAConst nodes */ - bool is_local; /* SET LOCAL? */ } PGVariableSetStmt; /* ---------------------- @@ -121479,8 +121887,9 @@ typedef struct PGVariableSetStmt { * ---------------------- */ typedef struct PGVariableShowStmt { - PGNodeTag type; - char *name; + PGNodeTag type; + char *name; + int is_summary; // whether or not this is a DESCRIBE or a SUMMARIZE } PGVariableShowStmt; /* ---------------------- @@ -121489,9 +121898,10 @@ typedef struct PGVariableShowStmt { */ typedef struct PGVariableShowSelectStmt { - PGNodeTag type; - PGNode *stmt; - char *name; + PGNodeTag type; + PGNode *stmt; + char *name; + int is_summary; // whether or not this is a DESCRIBE or a SUMMARIZE } PGVariableShowSelectStmt; @@ -122080,7 +122490,7 @@ class Transformer { unique_ptr TransformImport(duckdb_libpgquery::PGNode *node); unique_ptr TransformExplain(duckdb_libpgquery::PGNode *node); unique_ptr TransformVacuum(duckdb_libpgquery::PGNode *node); - unique_ptr TransformShow(duckdb_libpgquery::PGNode *node); + unique_ptr TransformShow(duckdb_libpgquery::PGNode *node); unique_ptr TransformShowSelect(duckdb_libpgquery::PGNode *node); unique_ptr TransformPrepare(duckdb_libpgquery::PGNode *node); @@ -123525,29 +123935,31 @@ bool SelectStatement::Equals(const SQLStatement *other_p) const { + namespace duckdb { class SetStatement : public SQLStatement { public: - SetStatement(std::string name_p, Value value_p); + SetStatement(std::string name_p, Value value_p, SetScope scope_p); public: unique_ptr Copy() const override; std::string name; Value value; + SetScope scope; }; } // namespace duckdb namespace duckdb { -SetStatement::SetStatement(std::string name_p, Value value_p) - : SQLStatement(StatementType::SET_STATEMENT), name(move(name_p)), value(move(value_p)) { +SetStatement::SetStatement(std::string name_p, Value value_p, SetScope scope_p) + : SQLStatement(StatementType::SET_STATEMENT), name(move(name_p)), value(move(value_p)), scope(scope_p) { } unique_ptr SetStatement::Copy() const { - return make_unique(name, value); + return make_unique(name, value, scope); } } // namespace duckdb @@ -124861,7 +125273,7 @@ unique_ptr Transformer::TransformFuncCall(duckdb_libpgquery::P } TransformWindowDef(window_ref, expr.get(), depth); TransformWindowFrame(window_spec, expr.get(), depth); - + expr->query_location = root->location; return move(expr); } @@ -125237,6 +125649,7 @@ unique_ptr Transformer::TransformAExpr(duckdb_libpgquery::PGAE subquery_expr->subquery_type = SubqueryType::ANY; subquery_expr->child = move(left_expr); subquery_expr->comparison_type = OperatorToExpressionType(name); + subquery_expr->query_location = root->location; if (root->kind == duckdb_libpgquery::PG_AEXPR_OP_ALL) { // ALL sublink is equivalent to NOT(ANY) with inverted comparison @@ -125259,6 +125672,7 @@ unique_ptr Transformer::TransformAExpr(duckdb_libpgquery::PGAE operator_type = ExpressionType::COMPARE_IN; } auto result = make_unique(operator_type, move(left_expr)); + result->query_location = root->location; TransformExpressionList(*((duckdb_libpgquery::PGList *)root->rexpr), result->children, depth); return move(result); } @@ -125452,6 +125866,7 @@ unique_ptr Transformer::TransformSubquery(duckdb_libpgquery::P default: throw NotImplementedException("Subquery of type %d not implemented\n", (int)root->subLinkType); } + subquery_expr->query_location = root->location; return move(subquery_expr); } @@ -126881,20 +127296,15 @@ unique_ptr Transformer::TransformCreateFunction(duckdb_libpgque vector> parameters; TransformExpressionList(*stmt->params, parameters, 0); for (auto ¶m : parameters) { - if (param->type == ExpressionType::COMPARE_EQUAL) { - // parameters with default value - auto &comp_expr = (ComparisonExpression &)*param; - if (comp_expr.left->GetExpressionClass() != ExpressionClass::COLUMN_REF) { - throw ParserException("Invalid parameter: '%s'", comp_expr.left->ToString()); + if (param->type == ExpressionType::VALUE_CONSTANT) { + // parameters with default value (must have an alias) + if (param->alias.empty()) { + throw ParserException("Invalid parameter: '%s'", param->ToString()); } - if (comp_expr.right->GetExpressionClass() != ExpressionClass::CONSTANT) { - throw ParserException("Parameters may only have constants as default value!"); + if (macro_func->default_parameters.find(param->alias) != macro_func->default_parameters.end()) { + throw ParserException("Duplicate default parameter: '%s'", param->alias); } - auto ¶m_name_expr = (ColumnRefExpression &)*comp_expr.left; - if (!param_name_expr.table_name.empty()) { - throw BinderException("Invalid parameter name '%s'", param_name_expr.ToString()); - } - macro_func->default_parameters[comp_expr.left->ToString()] = move(comp_expr.right); + macro_func->default_parameters[param->alias] = move(param); } else if (param->GetExpressionClass() == ExpressionClass::COLUMN_REF) { // positional parameters if (!macro_func->default_parameters.empty()) { @@ -127850,6 +128260,26 @@ unique_ptr Transformer::TransformSelectNode(duckdb_libpgquery::PGSele namespace duckdb { +namespace { + +SetScope ToSetScope(duckdb_libpgquery::VariableSetScope pg_scope) { + switch (pg_scope) { + case duckdb_libpgquery::VariableSetScope::VAR_SET_SCOPE_LOCAL: + return SetScope::LOCAL; + case duckdb_libpgquery::VariableSetScope::VAR_SET_SCOPE_SESSION: + return SetScope::SESSION; + case duckdb_libpgquery::VariableSetScope::VAR_SET_SCOPE_GLOBAL: + return SetScope::GLOBAL; + case duckdb_libpgquery::VariableSetScope::VAR_SET_SCOPE_DEFAULT: + // FIXME: This should be SESSION. See https://github.com/duckdb/duckdb/pull/2247 + return SetScope::GLOBAL; + default: + throw InternalException("Unexpected pg_scope: %d", pg_scope); + } +} + +} // namespace + unique_ptr Transformer::TransformSet(duckdb_libpgquery::PGNode *node) { D_ASSERT(node->type == duckdb_libpgquery::T_PGVariableSetStmt); auto stmt = reinterpret_cast(node); @@ -127857,6 +128287,11 @@ unique_ptr Transformer::TransformSet(duckdb_libpgquery::PGNode *no if (stmt->kind != duckdb_libpgquery::VariableSetKind::VAR_SET_VALUE) { throw ParserException("Can only SET a variable to a value"); } + + if (stmt->scope == duckdb_libpgquery::VariableSetScope::VAR_SET_SCOPE_LOCAL) { + throw NotImplementedException("SET LOCAL is not implemented."); + } + auto name = std::string(stmt->name); D_ASSERT(!name.empty()); // parser protect us! if (stmt->args->length != 1) { @@ -127867,19 +128302,37 @@ unique_ptr Transformer::TransformSet(duckdb_libpgquery::PGNode *no auto value = TransformValue(((duckdb_libpgquery::PGAConst *)stmt->args->head->data.ptr_value)->val, 0)->value; - return make_unique(name, value); + return make_unique(name, value, ToSetScope(stmt->scope)); } } // namespace duckdb + + + + namespace duckdb { -unique_ptr Transformer::TransformShow(duckdb_libpgquery::PGNode *node) { +unique_ptr Transformer::TransformShow(duckdb_libpgquery::PGNode *node) { // we transform SHOW x into PRAGMA SHOW('x') auto stmt = reinterpret_cast(node); + if (stmt->is_summary) { + auto result = make_unique(); + auto &info = *result->info; + info.is_summary = stmt->is_summary; + + auto select = make_unique(); + select->select_list.push_back(make_unique()); + auto basetable = make_unique(); + basetable->table_name = stmt->name; + select->from_table = move(basetable); + + info.query = move(select); + return move(result); + } auto result = make_unique(); auto &info = *result->info; @@ -127893,7 +128346,7 @@ unique_ptr Transformer::TransformShow(duckdb_libpgquery::PGNode info.parameters.emplace_back(stmt->name); } - return result; + return move(result); } } // namespace duckdb @@ -127910,6 +128363,7 @@ unique_ptr Transformer::TransformShowSelect(duckdb_libpgquery::PG auto result = make_unique(); auto &info = *result->info; + info.is_summary = stmt->is_summary; info.query = TransformSelectNode(select_stmt); @@ -128378,20 +128832,33 @@ vector BindContext::GetSimilarBindings(const string &column_name) { return StringUtil::TopNStrings(scores); } -void BindContext::AddUsingBinding(const string &column_name, UsingColumnSet set) { - using_columns[column_name].push_back(move(set)); +void BindContext::AddUsingBinding(const string &column_name, UsingColumnSet *set) { + using_columns[column_name].insert(set); } -UsingColumnSet *BindContext::GetUsingBinding(const string &column_name) { +void BindContext::AddUsingBindingSet(unique_ptr set) { + using_column_sets.push_back(move(set)); +} + +bool BindContext::FindUsingBinding(const string &column_name, unordered_set **out) { auto entry = using_columns.find(column_name); - if (entry == using_columns.end()) { + if (entry != using_columns.end()) { + *out = &entry->second; + return true; + } + return false; +} + +UsingColumnSet *BindContext::GetUsingBinding(const string &column_name) { + unordered_set *using_bindings; + if (!FindUsingBinding(column_name, &using_bindings)) { return nullptr; } - if (entry->second.size() > 1) { + if (using_bindings->size() > 1) { string error = "Ambiguous column reference: column \"" + column_name + "\" can refer to either:\n"; - for (auto &using_set : entry->second) { + for (auto &using_set : *using_bindings) { string result_bindings; - for (auto &binding : using_set.bindings) { + for (auto &binding : using_set->bindings) { if (result_bindings.empty()) { result_bindings = "["; } else { @@ -128399,27 +128866,30 @@ UsingColumnSet *BindContext::GetUsingBinding(const string &column_name) { } result_bindings += binding; result_bindings += "."; - result_bindings += column_name; + result_bindings += GetActualColumnName(binding, column_name); } error += result_bindings + "]"; } throw BinderException(error); } - return &entry->second[0]; + for (auto &using_set : *using_bindings) { + return using_set; + } + throw InternalException("Using binding found but no entries"); } UsingColumnSet *BindContext::GetUsingBinding(const string &column_name, const string &binding_name) { if (binding_name.empty()) { - return GetUsingBinding(column_name); + throw InternalException("GetUsingBinding: expected non-empty binding_name"); } - auto entry = using_columns.find(column_name); - if (entry == using_columns.end()) { + unordered_set *using_bindings; + if (!FindUsingBinding(column_name, &using_bindings)) { return nullptr; } - for (auto &using_set : entry->second) { - auto &bindings = using_set.bindings; + for (auto &using_set : *using_bindings) { + auto &bindings = using_set->bindings; if (bindings.find(binding_name) != bindings.end()) { - return &using_set; + return using_set; } } return nullptr; @@ -128430,19 +128900,38 @@ void BindContext::RemoveUsingBinding(const string &column_name, UsingColumnSet * return; } auto entry = using_columns.find(column_name); - D_ASSERT(entry != using_columns.end()); + if (entry == using_columns.end()) { + throw InternalException("Attempting to remove using binding that is not there"); + } auto &bindings = entry->second; - for (size_t i = 0; i < bindings.size(); i++) { - if (&bindings[i] == set) { - bindings.erase(bindings.begin() + i); - break; - } + if (bindings.find(set) != bindings.end()) { + bindings.erase(set); } if (bindings.empty()) { using_columns.erase(column_name); } } +void BindContext::TransferUsingBinding(BindContext ¤t_context, UsingColumnSet *current_set, + UsingColumnSet *new_set, const string &binding, const string &using_column) { + AddUsingBinding(using_column, new_set); + current_context.RemoveUsingBinding(using_column, current_set); +} + +string BindContext::GetActualColumnName(const string &binding_name, const string &column_name) { + string error; + auto binding = GetBinding(binding_name, error); + if (!binding) { + throw InternalException("No binding with name \"%s\"", binding_name); + } + idx_t binding_index; + if (!binding->TryGetBindingIndex(column_name, binding_index)) { // LCOV_EXCL_START + throw InternalException("Binding with name \"%s\" does not have a column named \"%s\"", binding_name, + column_name); + } // LCOV_EXCL_STOP + return binding->names[binding_index]; +} + unordered_set BindContext::GetMatchingBindings(const string &column_name) { unordered_set result; for (auto &kv : bindings) { @@ -128546,6 +129035,7 @@ void BindContext::GenerateAllColumnExpressions(vectorbindings) { coalesce->children.push_back(make_unique(column_name, child_binding)); } + coalesce->alias = column_name; new_select_list.push_back(move(coalesce)); } else { // primary binding: output the qualified column ref @@ -128588,6 +129078,16 @@ void BindContext::AddTableFunction(idx_t index, const string &alias, const vecto AddBinding(alias, make_unique(alias, types, names, get, index)); } +static string AddColumnNameToBinding(const string &base_name, case_insensitive_set_t ¤t_names) { + idx_t index = 1; + string name = base_name; + while (current_names.find(name) != current_names.end()) { + name = base_name + ":" + to_string(index++); + } + current_names.insert(name); + return name; +} + vector BindContext::AliasColumnNames(const string &table_name, const vector &names, const vector &column_aliases) { vector result; @@ -128595,13 +129095,14 @@ vector BindContext::AliasColumnNames(const string &table_name, const vec throw BinderException("table \"%s\" has %lld columns available but %lld columns specified", table_name, names.size(), column_aliases.size()); } + case_insensitive_set_t current_names; // use any provided column aliases first for (idx_t i = 0; i < column_aliases.size(); i++) { - result.push_back(column_aliases[i]); + result.push_back(AddColumnNameToBinding(column_aliases[i], current_names)); } // if not enough aliases were provided, use the default names for remaining columns for (idx_t i = column_aliases.size(); i < names.size(); i++) { - result.push_back(names[i]); + result.push_back(AddColumnNameToBinding(names[i], current_names)); } return result; } @@ -128641,12 +129142,12 @@ void BindContext::AddContext(BindContext other) { for (auto &alias : entry.second) { #ifdef DEBUG for (auto &other_alias : using_columns[entry.first]) { - for (auto &col : alias.bindings) { - D_ASSERT(other_alias.bindings.find(col) == other_alias.bindings.end()); + for (auto &col : alias->bindings) { + D_ASSERT(other_alias->bindings.find(col) == other_alias->bindings.end()); } } #endif - using_columns[entry.first].push_back(alias); + using_columns[entry.first].insert(alias); } } } @@ -128724,7 +129225,7 @@ class SelectBinder : public ExpressionBinder { } void ResetBindings() { this->bound_aggregate = false; - this->bound_columns = false; + this->bound_columns.clear(); } protected: @@ -128887,7 +129388,7 @@ BindResult SelectBinder::BindAggregate(FunctionExpression &aggr, AggregateFuncti if (!error.empty()) { // failed to bind child - if (aggregate_binder.BoundColumns()) { + if (aggregate_binder.HasBoundColumns()) { for (idx_t i = 0; i < aggr.children.size(); i++) { // however, we bound columns! // that means this aggregation belongs to this node @@ -129212,7 +129713,10 @@ BindResult ExpressionBinder::BindExpression(ColumnRefExpression &colref, idx_t d ? binder.macro_binding->Bind(colref, depth) : binder.bind_context.BindColumn(colref, depth); if (!result.HasError()) { - bound_columns = true; + BoundColumnReferenceInfo ref; + ref.name = colref.column_name; + ref.query_location = colref.query_location; + bound_columns.push_back(move(ref)); } else { result.error = binder.FormatError(colref, result.error); } @@ -129827,6 +130331,7 @@ BindResult ExpressionBinder::BindExpression(PositionalReferenceExpression &ref, + namespace duckdb { class BoundSubqueryNode : public QueryNode { @@ -129868,7 +130373,8 @@ BindResult ExpressionBinder::BindExpression(SubqueryExpression &expr, idx_t dept } } if (expr.subquery_type != SubqueryType::EXISTS && bound_node->types.size() > 1) { - throw BinderException("Subquery returns %zu columns - expected 1", bound_node->types.size()); + throw BinderException(binder.FormatError( + expr, StringUtil::Format("Subquery returns %zu columns - expected 1", bound_node->types.size()))); } auto prior_subquery = move(expr.subquery); expr.subquery = make_unique(); @@ -130063,17 +130569,18 @@ static LogicalType BindRangeExpression(ClientContext &context, const string &nam } BindResult SelectBinder::BindWindow(WindowExpression &window, idx_t depth) { + QueryErrorContext error_context(binder.root_statement, window.query_location); if (inside_window) { - throw BinderException("window function calls cannot be nested"); + throw BinderException(error_context.FormatError("window function calls cannot be nested")); } if (depth > 0) { - throw BinderException("correlated columns in window functions not supported"); + throw BinderException(error_context.FormatError("correlated columns in window functions not supported")); } // If we have range expressions, then only one order by clause is allowed. if ((window.start == WindowBoundary::EXPR_PRECEDING_RANGE || window.start == WindowBoundary::EXPR_FOLLOWING_RANGE || window.end == WindowBoundary::EXPR_PRECEDING_RANGE || window.end == WindowBoundary::EXPR_FOLLOWING_RANGE) && window.orders.size() != 1) { - throw BinderException("RANGE frames must have only one ORDER BY expression"); + throw BinderException(error_context.FormatError("RANGE frames must have only one ORDER BY expression")); } // bind inside the children of the window function // we set the inside_window flag to true to prevent binding nested window functions @@ -130133,10 +130640,9 @@ BindResult SelectBinder::BindWindow(WindowExpression &window, idx_t depth) { // Look up the aggregate function in the catalog auto func = (AggregateFunctionCatalogEntry *)Catalog::GetCatalog(context).GetEntry( - context, window.schema, window.function_name); - if (func->type != CatalogType::AGGREGATE_FUNCTION_ENTRY) { - throw BinderException("Unknown windowed aggregate"); - } + context, window.schema, window.function_name, false, error_context); + D_ASSERT(func->type == CatalogType::AGGREGATE_FUNCTION_ENTRY); + // bind the aggregate string error; auto best_function = Function::BindFunction(func->name, func->functions, types, error); @@ -130794,7 +131300,7 @@ unique_ptr Binder::BindNode(SelectNode &statement) { for (idx_t i = 0; i < statement.select_list.size(); i++) { LogicalType result_type; auto expr = select_binder.Bind(statement.select_list[i], &result_type); - if (statement.aggregate_handling == AggregateHandling::FORCE_AGGREGATES && select_binder.BoundColumns()) { + if (statement.aggregate_handling == AggregateHandling::FORCE_AGGREGATES && select_binder.HasBoundColumns()) { if (select_binder.BoundAggregates()) { throw BinderException("Cannot mix aggregates with non-aggregated columns!"); } @@ -130824,8 +131330,12 @@ unique_ptr Binder::BindNode(SelectNode &statement) { if (statement.aggregate_handling == AggregateHandling::NO_AGGREGATES_ALLOWED) { throw BinderException("Aggregates cannot be present in a Project relation!"); } else if (statement.aggregate_handling == AggregateHandling::STANDARD_HANDLING) { - if (select_binder.BoundColumns()) { - throw BinderException("column must appear in the GROUP BY clause or be used in an aggregate function"); + if (select_binder.HasBoundColumns()) { + auto &bound_columns = select_binder.GetBoundColumns(); + throw BinderException( + FormatError(bound_columns[0].query_location, + "column \"%s\" must appear in the GROUP BY clause or be used in an aggregate function", + bound_columns[0].name)); } } } @@ -131050,6 +131560,7 @@ unique_ptr Binder::VisitQueryNode(BoundQueryNode &node, unique_ + namespace duckdb { unique_ptr Binder::CreatePlan(BoundRecursiveCTENode &node) { @@ -132221,13 +132732,21 @@ class CheckBinder : public ExpressionBinder { namespace duckdb { -static void CreateColumnMap(BoundCreateTableInfo &info) { +static void CreateColumnMap(BoundCreateTableInfo &info, bool allow_duplicate_names) { auto &base = (CreateTableInfo &)*info.base; for (uint64_t oid = 0; oid < base.columns.size(); oid++) { auto &col = base.columns[oid]; - if (info.name_map.find(col.name) != info.name_map.end()) { - throw CatalogException("Column with name %s already exists!", col.name); + if (allow_duplicate_names) { + idx_t index = 1; + string base_name = col.name; + while (info.name_map.find(col.name) != info.name_map.end()) { + col.name = base_name + ":" + to_string(index++); + } + } else { + if (info.name_map.find(col.name) != info.name_map.end()) { + throw CatalogException("Column with name %s already exists!", col.name); + } } info.name_map[col.name] = oid; @@ -132353,10 +132872,10 @@ unique_ptr Binder::BindCreateTableInfo(unique_ptr(stmt.name, stmt.value); + result.plan = make_unique(stmt.name, stmt.value, stmt.scope); return result; } @@ -132935,6 +133454,9 @@ namespace duckdb { BoundStatement Binder::Bind(ShowStatement &stmt) { BoundStatement result; + if (stmt.info->is_summary) { + return BindSummarize(stmt); + } auto plan = Bind(*stmt.info->query); stmt.info->types = plan.types; stmt.info->aliases = plan.names; @@ -132995,6 +133517,111 @@ BoundStatement Binder::Bind(TransactionStatement &stmt) { + + + + + +namespace duckdb { + +static unique_ptr SummarizeWrapUnnest(vector> &children, + const string &alias) { + auto list_function = make_unique("list_value", move(children)); + vector> unnest_children; + unnest_children.push_back(move(list_function)); + auto unnest_function = make_unique("unnest", move(unnest_children)); + unnest_function->alias = alias; + return move(unnest_function); +} + +static unique_ptr SummarizeCreateAggregate(const string &aggregate, string column_name) { + vector> children; + children.push_back(make_unique(move(column_name))); + auto aggregate_function = make_unique(aggregate, move(children)); + auto cast_function = make_unique(LogicalType::VARCHAR, move(aggregate_function)); + return move(cast_function); +} + +static unique_ptr SummarizeCreateCountStar() { + vector> children; + auto aggregate_function = make_unique("count_star", move(children)); + return move(aggregate_function); +} + +static unique_ptr SummarizeCreateBinaryFunction(const string &op, unique_ptr left, + unique_ptr right) { + vector> children; + children.push_back(move(left)); + children.push_back(move(right)); + auto binary_function = make_unique(op, move(children)); + return move(binary_function); +} + +static unique_ptr SummarizeCreateNullPercentage(string column_name) { + auto count_star = make_unique(LogicalType::DOUBLE, SummarizeCreateCountStar()); + auto count = make_unique(LogicalType::DOUBLE, SummarizeCreateAggregate("count", move(column_name))); + auto null_percentage = SummarizeCreateBinaryFunction("/", move(count), move(count_star)); + auto negate_x = + SummarizeCreateBinaryFunction("-", make_unique(Value::DOUBLE(1)), move(null_percentage)); + auto percentage_x = + SummarizeCreateBinaryFunction("*", move(negate_x), make_unique(Value::DOUBLE(100))); + auto round_x = + SummarizeCreateBinaryFunction("round", move(percentage_x), make_unique(Value::INTEGER(2))); + auto concat_x = SummarizeCreateBinaryFunction("concat", move(round_x), make_unique(Value("%"))); + + return concat_x; +} + +BoundStatement Binder::BindSummarize(ShowStatement &stmt) { + auto query_copy = stmt.info->query->Copy(); + + // we bind the plan once in a child-node to figure out the column names and column types + auto child_binder = Binder::CreateBinder(context); + auto plan = child_binder->Bind(*stmt.info->query); + D_ASSERT(plan.types.size() == plan.names.size()); + vector> name_children; + vector> type_children; + vector> min_children; + vector> max_children; + vector> unique_children; + vector> avg_children; + vector> count_children; + vector> null_percentage_children; + auto select = make_unique(); + select->node = move(query_copy); + for (idx_t i = 0; i < plan.names.size(); i++) { + name_children.push_back(make_unique(Value(plan.names[i]))); + type_children.push_back(make_unique(Value(plan.types[i].ToString()))); + min_children.push_back(SummarizeCreateAggregate("min", plan.names[i])); + max_children.push_back(SummarizeCreateAggregate("max", plan.names[i])); + unique_children.push_back(SummarizeCreateAggregate("approx_count_distinct", plan.names[i])); + avg_children.push_back(plan.types[i].IsNumeric() ? SummarizeCreateAggregate("avg", plan.names[i]) + : make_unique(Value())); + count_children.push_back(SummarizeCreateCountStar()); + null_percentage_children.push_back(SummarizeCreateNullPercentage(plan.names[i])); + } + auto subquery_ref = make_unique(move(select), "summarize_tbl"); + subquery_ref->column_name_alias = plan.names; + + auto select_node = make_unique(); + select_node->select_list.push_back(SummarizeWrapUnnest(name_children, "column_name")); + select_node->select_list.push_back(SummarizeWrapUnnest(type_children, "column_type")); + select_node->select_list.push_back(SummarizeWrapUnnest(min_children, "min")); + select_node->select_list.push_back(SummarizeWrapUnnest(max_children, "max")); + select_node->select_list.push_back(SummarizeWrapUnnest(unique_children, "approx_unique")); + select_node->select_list.push_back(SummarizeWrapUnnest(avg_children, "avg")); + select_node->select_list.push_back(SummarizeWrapUnnest(count_children, "count")); + select_node->select_list.push_back(SummarizeWrapUnnest(null_percentage_children, "null_percentage")); + select_node->from_table = move(subquery_ref); + + return Bind(*select_node); +} + +} // namespace duckdb + + + + //===----------------------------------------------------------------------===// // DuckDB // @@ -133666,6 +134293,8 @@ class BoundJoinRef : public BoundTableRef { + + namespace duckdb { static unique_ptr BindColumn(Binder &binder, ClientContext &context, const string &alias, @@ -133703,7 +134332,7 @@ bool Binder::TryFindBinding(const string &using_column, const string &join_side, error += "\n\t"; error += binding; error += "."; - error += using_column; + error += bind_context.GetActualColumnName(binding, using_column); } throw BinderException(error); } else { @@ -133748,6 +134377,17 @@ static void SetPrimaryBinding(UsingColumnSet &set, JoinType join_type, const str } } +string Binder::RetrieveUsingBinding(Binder ¤t_binder, UsingColumnSet *current_set, const string &using_column, + const string &join_side, UsingColumnSet *new_set) { + string binding; + if (!current_set) { + binding = current_binder.FindBinding(using_column, join_side); + } else { + binding = current_set->primary_binding; + } + return binding; +} + unique_ptr Binder::Bind(JoinRef &ref) { auto result = make_unique(); result->left_binder = Binder::CreateBinder(context, this); @@ -133760,30 +134400,19 @@ unique_ptr Binder::Bind(JoinRef &ref) { result->right = right_binder.Bind(*ref.right); vector> extra_conditions; + vector extra_using_columns; if (ref.is_natural) { // natural join, figure out which column names are present in both sides of the join // first bind the left hand side and get a list of all the tables and column names - unordered_map lhs_columns; + case_insensitive_set_t lhs_columns; auto &lhs_binding_list = left_binder.bind_context.GetBindingsList(); for (auto &binding : lhs_binding_list) { for (auto &column_name : binding.second->names) { - if (lhs_columns.find(column_name) == lhs_columns.end()) { - // new column candidate: add it to the set - lhs_columns[column_name] = binding.first; - } else { - // this column candidate appears multiple times on the left-hand side of the join - // this is fine ONLY if the column name does not occur in the right hand side - // replace the binding with an empty string - lhs_columns[column_name] = string(); - } + lhs_columns.insert(column_name); } } // now bind the rhs - for (auto &column : lhs_columns) { - auto &column_name = column.first; - auto &left_binding = column.second; - - auto left_using_binding = left_binder.bind_context.GetUsingBinding(column_name, left_binding); + for (auto &column_name : lhs_columns) { auto right_using_binding = right_binder.bind_context.GetUsingBinding(column_name); string right_binding; @@ -133794,28 +134423,9 @@ unique_ptr Binder::Bind(JoinRef &ref) { continue; } } - // found this column name in both the LHS and the RHS of this join - // add it to the natural join! - // first check if the binding is ambiguous on the LHS - if (!left_using_binding && left_binding.empty()) { - // binding is ambiguous on left or right side: throw an exception - string error_msg = "Column name \"" + column_name + - "\" is ambiguous: it exists more than once on the left side of the join."; - throw BinderException(FormatError(ref, error_msg)); - } - // there is a match! create the join condition - extra_conditions.push_back( - AddCondition(context, left_binder, right_binder, left_binding, right_binding, column_name)); - - UsingColumnSet set; - AddUsingBindings(set, left_using_binding, left_binding); - AddUsingBindings(set, right_using_binding, right_binding); - SetPrimaryBinding(set, ref.type, left_binding, right_binding); - left_binder.bind_context.RemoveUsingBinding(column_name, left_using_binding); - right_binder.bind_context.RemoveUsingBinding(column_name, right_using_binding); - bind_context.AddUsingBinding(column_name, move(set)); + extra_using_columns.push_back(column_name); } - if (extra_conditions.empty()) { + if (extra_using_columns.empty()) { // no matching bindings found in natural join: throw an exception string error_msg = "No columns found to join on in NATURAL JOIN.\n"; error_msg += "Use CROSS JOIN if you intended for this to be a cross-product."; @@ -133845,35 +134455,53 @@ unique_ptr Binder::Bind(JoinRef &ref) { } else if (!ref.using_columns.empty()) { // USING columns D_ASSERT(!result->condition); - - for (idx_t i = 0; i < ref.using_columns.size(); i++) { - auto &using_column = ref.using_columns[i]; - string left_binding; - string right_binding; + extra_using_columns = ref.using_columns; + } + if (!extra_using_columns.empty()) { + vector left_using_bindings; + vector right_using_bindings; + for (idx_t i = 0; i < extra_using_columns.size(); i++) { + auto &using_column = extra_using_columns[i]; + // we check if there is ALREADY a using column of the same name in the left and right set + // this can happen if we chain USING clauses + // e.g. x JOIN y USING (c) JOIN z USING (c) auto left_using_binding = left_binder.bind_context.GetUsingBinding(using_column); auto right_using_binding = right_binder.bind_context.GetUsingBinding(using_column); if (!left_using_binding) { - left_binding = left_binder.FindBinding(using_column, "left"); - } else { - left_binding = left_using_binding->primary_binding; + left_binder.bind_context.GetMatchingBinding(using_column); } if (!right_using_binding) { - right_binding = right_binder.FindBinding(using_column, "right"); - } else { - right_binding = right_using_binding->primary_binding; + right_binder.bind_context.GetMatchingBinding(using_column); } + left_using_bindings.push_back(left_using_binding); + right_using_bindings.push_back(right_using_binding); + } + + for (idx_t i = 0; i < extra_using_columns.size(); i++) { + auto &using_column = extra_using_columns[i]; + string left_binding; + string right_binding; + + auto set = make_unique(); + auto left_using_binding = left_using_bindings[i]; + auto right_using_binding = right_using_bindings[i]; + left_binding = RetrieveUsingBinding(left_binder, left_using_binding, using_column, "left", set.get()); + right_binding = RetrieveUsingBinding(right_binder, right_using_binding, using_column, "right", set.get()); + extra_conditions.push_back( AddCondition(context, left_binder, right_binder, left_binding, right_binding, using_column)); - UsingColumnSet set; - AddUsingBindings(set, left_using_binding, left_binding); - AddUsingBindings(set, right_using_binding, right_binding); - SetPrimaryBinding(set, ref.type, left_binding, right_binding); - left_binder.bind_context.RemoveUsingBinding(using_column, left_using_binding); - right_binder.bind_context.RemoveUsingBinding(using_column, right_using_binding); - bind_context.AddUsingBinding(using_column, move(set)); + AddUsingBindings(*set, left_using_binding, left_binding); + AddUsingBindings(*set, right_using_binding, right_binding); + SetPrimaryBinding(*set, ref.type, left_binding, right_binding); + bind_context.TransferUsingBinding(left_binder.bind_context, left_using_binding, set.get(), left_binding, + using_column); + bind_context.TransferUsingBinding(right_binder.bind_context, right_using_binding, set.get(), right_binding, + using_column); + AddUsingBindingSet(move(set)); } } + bind_context.AddContext(move(left_binder.bind_context)); bind_context.AddContext(move(right_binder.bind_context)); MoveCorrelatedExpressions(left_binder); @@ -133941,12 +134569,17 @@ unique_ptr Binder::Bind(SubqueryRef &ref, CommonTableExpressionIn if (cte) { binder->bound_ctes.insert(cte); } - binder->alias = ref.alias; + binder->alias = ref.alias.empty() ? "unnamed_subquery" : ref.alias; auto subquery = binder->BindNode(*ref.subquery->node); idx_t bind_index = subquery->GetRootIndex(); + string alias; + if (ref.alias.empty()) { + alias = "unnamed_subquery" + to_string(bind_index); + } else { + alias = ref.alias; + } auto result = make_unique(move(binder), move(subquery)); - - bind_context.AddSubquery(bind_index, ref.alias, ref, *result->subquery); + bind_context.AddSubquery(bind_index, alias, ref, *result->subquery); MoveCorrelatedExpressions(*result->binder); return move(result); } @@ -134708,6 +135341,14 @@ vector &Binder::GetActiveBinders() { return active_binders; } +void Binder::AddUsingBindingSet(unique_ptr set) { + if (parent) { + parent->AddUsingBindingSet(move(set)); + return; + } + bind_context.AddUsingBindingSet(move(set)); +} + void Binder::MoveCorrelatedExpressions(Binder &other) { MergeCorrelatedColumns(other.correlated_columns); other.correlated_columns.clear(); @@ -134963,14 +135604,14 @@ bool BoundCastExpression::CastIsInvertible(const LogicalType &source_type, const return true; } if (source_type.id() == LogicalTypeId::VARCHAR) { - return target_type.id() == LogicalTypeId::DATE || target_type.id() == LogicalTypeId::TIMESTAMP || - target_type.id() == LogicalTypeId::TIMESTAMP_NS || target_type.id() == LogicalTypeId::TIMESTAMP_MS || - target_type.id() == LogicalTypeId::TIMESTAMP_SEC; + return target_type.id() == LogicalTypeId::DATE || target_type.id() == LogicalTypeId::TIME || + target_type.id() == LogicalTypeId::TIMESTAMP || target_type.id() == LogicalTypeId::TIMESTAMP_NS || + target_type.id() == LogicalTypeId::TIMESTAMP_MS || target_type.id() == LogicalTypeId::TIMESTAMP_SEC; } if (target_type.id() == LogicalTypeId::VARCHAR) { - return source_type.id() == LogicalTypeId::DATE || source_type.id() == LogicalTypeId::TIMESTAMP || - source_type.id() == LogicalTypeId::TIMESTAMP_NS || source_type.id() == LogicalTypeId::TIMESTAMP_MS || - source_type.id() == LogicalTypeId::TIMESTAMP_SEC; + return source_type.id() == LogicalTypeId::DATE || source_type.id() == LogicalTypeId::TIME || + source_type.id() == LogicalTypeId::TIMESTAMP || source_type.id() == LogicalTypeId::TIMESTAMP_NS || + source_type.id() == LogicalTypeId::TIMESTAMP_MS || source_type.id() == LogicalTypeId::TIMESTAMP_SEC; } return true; } @@ -135427,6 +136068,7 @@ unique_ptr BoundUnnestExpression::Copy() { + namespace duckdb { BoundWindowExpression::BoundWindowExpression(ExpressionType type, LogicalType return_type, @@ -135633,7 +136275,13 @@ unique_ptr BoundWindowExpression::Copy() { for (auto &e : partitions) { new_window->partitions.push_back(e->Copy()); } - + for (auto &ps : partitions_stats) { + if (ps) { + new_window->partitions_stats.push_back(ps->Copy()); + } else { + new_window->partitions_stats.push_back(nullptr); + } + } for (auto &o : orders) { new_window->orders.emplace_back(o.type, o.null_order, o.expression->Copy()); } @@ -138671,7 +139319,6 @@ Binding::Binding(const string &alias, vector coltypes, vectorsecond; return true; } - // no match found: try to lowercase the column name - entry = name_map.find(StringUtil::Lower(column_name)); - if (entry != name_map.end()) { - result = entry->second; - return true; - } return false; } @@ -143992,8 +144633,11 @@ static void UpdateChunk(Vector &data, Vector &updates, Vector &row_ids, idx_t co case PhysicalType::DOUBLE: TemplatedUpdateLoop(data, updates, row_ids, count, base_index); break; + case PhysicalType::VARCHAR: + TemplatedUpdateLoop(data, updates, row_ids, count, base_index); + break; default: - throw Exception("Unsupported type for in-place update"); + throw Exception("Unsupported type for in-place update: " + TypeIdToString(data.GetType().InternalType())); } } @@ -205709,17 +206353,17 @@ PGValue *makeString(const char *str) { // The following code up to LICENSE_CHANGE_END is subject to THIRD PARTY LICENSE #8 // See the end of this file for a list -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C +/* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -205727,9 +206371,7 @@ PGValue *makeString(const char *str) { GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -205754,11 +206396,14 @@ PGValue *makeString(const char *str) { define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ + /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "3.5.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -205766,977 +206411,21 @@ PGValue *makeString(const char *str) { /* Pure parsers. */ #define YYPURE 1 -/* Using locations. */ -#define YYLSP_NEEDED 1 +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + /* Substitute the variable and function names. */ -#define yyparse base_yyparse -#define yylex base_yylex -#define yyerror base_yyerror -#define yylval base_yylval -#define yychar base_yychar -#define yydebug base_yydebug -#define yynerrs base_yynerrs -#define yylloc base_yylloc - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - LAMBDA_ARROW = 270, - LESS_EQUALS = 271, - GREATER_EQUALS = 272, - NOT_EQUALS = 273, - ABORT_P = 274, - ABSOLUTE_P = 275, - ACCESS = 276, - ACTION = 277, - ADD_P = 278, - ADMIN = 279, - AFTER = 280, - AGGREGATE = 281, - ALL = 282, - ALSO = 283, - ALTER = 284, - ALWAYS = 285, - ANALYSE = 286, - ANALYZE = 287, - AND = 288, - ANY = 289, - ARRAY = 290, - AS = 291, - ASC_P = 292, - ASSERTION = 293, - ASSIGNMENT = 294, - ASYMMETRIC = 295, - AT = 296, - ATTACH = 297, - ATTRIBUTE = 298, - AUTHORIZATION = 299, - BACKWARD = 300, - BEFORE = 301, - BEGIN_P = 302, - BETWEEN = 303, - BIGINT = 304, - BINARY = 305, - BIT = 306, - BOOLEAN_P = 307, - BOTH = 308, - BY = 309, - CACHE = 310, - CALL_P = 311, - CALLED = 312, - CASCADE = 313, - CASCADED = 314, - CASE = 315, - CAST = 316, - CATALOG_P = 317, - CHAIN = 318, - CHAR_P = 319, - CHARACTER = 320, - CHARACTERISTICS = 321, - CHECK_P = 322, - CHECKPOINT = 323, - CLASS = 324, - CLOSE = 325, - CLUSTER = 326, - COALESCE = 327, - COLLATE = 328, - COLLATION = 329, - COLUMN = 330, - COLUMNS = 331, - COMMENT = 332, - COMMENTS = 333, - COMMIT = 334, - COMMITTED = 335, - CONCURRENTLY = 336, - CONFIGURATION = 337, - CONFLICT = 338, - CONNECTION = 339, - CONSTRAINT = 340, - CONSTRAINTS = 341, - CONTENT_P = 342, - CONTINUE_P = 343, - CONVERSION_P = 344, - COPY = 345, - COST = 346, - CREATE_P = 347, - CROSS = 348, - CSV = 349, - CUBE = 350, - CURRENT_P = 351, - CURRENT_CATALOG = 352, - CURRENT_DATE = 353, - CURRENT_ROLE = 354, - CURRENT_SCHEMA = 355, - CURRENT_TIME = 356, - CURRENT_TIMESTAMP = 357, - CURRENT_USER = 358, - CURSOR = 359, - CYCLE = 360, - DATA_P = 361, - DATABASE = 362, - DAY_P = 363, - DAYS_P = 364, - DEALLOCATE = 365, - DEC = 366, - DECIMAL_P = 367, - DECLARE = 368, - DEFAULT = 369, - DEFAULTS = 370, - DEFERRABLE = 371, - DEFERRED = 372, - DEFINER = 373, - DELETE_P = 374, - DELIMITER = 375, - DELIMITERS = 376, - DEPENDS = 377, - DESC_P = 378, - DESCRIBE = 379, - DETACH = 380, - DICTIONARY = 381, - DISABLE_P = 382, - DISCARD = 383, - DISTINCT = 384, - DO = 385, - DOCUMENT_P = 386, - DOMAIN_P = 387, - DOUBLE_P = 388, - DROP = 389, - EACH = 390, - ELSE = 391, - ENABLE_P = 392, - ENCODING = 393, - ENCRYPTED = 394, - END_P = 395, - ENUM_P = 396, - ESCAPE = 397, - EVENT = 398, - EXCEPT = 399, - EXCLUDE = 400, - EXCLUDING = 401, - EXCLUSIVE = 402, - EXECUTE = 403, - EXISTS = 404, - EXPLAIN = 405, - EXPORT_P = 406, - EXTENSION = 407, - EXTERNAL = 408, - EXTRACT = 409, - FALSE_P = 410, - FAMILY = 411, - FETCH = 412, - FILTER = 413, - FIRST_P = 414, - FLOAT_P = 415, - FOLLOWING = 416, - FOR = 417, - FORCE = 418, - FOREIGN = 419, - FORWARD = 420, - FREEZE = 421, - FROM = 422, - FULL = 423, - FUNCTION = 424, - FUNCTIONS = 425, - GENERATED = 426, - GLOB = 427, - GLOBAL = 428, - GRANT = 429, - GRANTED = 430, - GROUP_P = 431, - GROUPING = 432, - HANDLER = 433, - HAVING = 434, - HEADER_P = 435, - HOLD = 436, - HOUR_P = 437, - HOURS_P = 438, - IDENTITY_P = 439, - IF_P = 440, - ILIKE = 441, - IMMEDIATE = 442, - IMMUTABLE = 443, - IMPLICIT_P = 444, - IMPORT_P = 445, - IN_P = 446, - INCLUDING = 447, - INCREMENT = 448, - INDEX = 449, - INDEXES = 450, - INHERIT = 451, - INHERITS = 452, - INITIALLY = 453, - INLINE_P = 454, - INNER_P = 455, - INOUT = 456, - INPUT_P = 457, - INSENSITIVE = 458, - INSERT = 459, - INSTEAD = 460, - INT_P = 461, - INTEGER = 462, - INTERSECT = 463, - INTERVAL = 464, - INTO = 465, - INVOKER = 466, - IS = 467, - ISNULL = 468, - ISOLATION = 469, - JOIN = 470, - KEY = 471, - LABEL = 472, - LANGUAGE = 473, - LARGE_P = 474, - LAST_P = 475, - LATERAL_P = 476, - LEADING = 477, - LEAKPROOF = 478, - LEFT = 479, - LEVEL = 480, - LIKE = 481, - LIMIT = 482, - LISTEN = 483, - LOAD = 484, - LOCAL = 485, - LOCALTIME = 486, - LOCALTIMESTAMP = 487, - LOCATION = 488, - LOCK_P = 489, - LOCKED = 490, - LOGGED = 491, - MACRO = 492, - MAP = 493, - MAPPING = 494, - MATCH = 495, - MATERIALIZED = 496, - MAXVALUE = 497, - METHOD = 498, - MICROSECOND_P = 499, - MICROSECONDS_P = 500, - MILLISECOND_P = 501, - MILLISECONDS_P = 502, - MINUTE_P = 503, - MINUTES_P = 504, - MINVALUE = 505, - MODE = 506, - MONTH_P = 507, - MONTHS_P = 508, - MOVE = 509, - NAME_P = 510, - NAMES = 511, - NATIONAL = 512, - NATURAL = 513, - NCHAR = 514, - NEW = 515, - NEXT = 516, - NO = 517, - NONE = 518, - NOT = 519, - NOTHING = 520, - NOTIFY = 521, - NOTNULL = 522, - NOWAIT = 523, - NULL_P = 524, - NULLIF = 525, - NULLS_P = 526, - NUMERIC = 527, - OBJECT_P = 528, - OF = 529, - OFF = 530, - OFFSET = 531, - OIDS = 532, - OLD = 533, - ON = 534, - ONLY = 535, - OPERATOR = 536, - OPTION = 537, - OPTIONS = 538, - OR = 539, - ORDER = 540, - ORDINALITY = 541, - OUT_P = 542, - OUTER_P = 543, - OVER = 544, - OVERLAPS = 545, - OVERLAY = 546, - OVERRIDING = 547, - OWNED = 548, - OWNER = 549, - PARALLEL = 550, - PARSER = 551, - PARTIAL = 552, - PARTITION = 553, - PASSING = 554, - PASSWORD = 555, - PERCENT = 556, - PLACING = 557, - PLANS = 558, - POLICY = 559, - POSITION = 560, - PRAGMA_P = 561, - PRECEDING = 562, - PRECISION = 563, - PREPARE = 564, - PREPARED = 565, - PRESERVE = 566, - PRIMARY = 567, - PRIOR = 568, - PRIVILEGES = 569, - PROCEDURAL = 570, - PROCEDURE = 571, - PROGRAM = 572, - PUBLICATION = 573, - QUOTE = 574, - RANGE = 575, - READ_P = 576, - REAL = 577, - REASSIGN = 578, - RECHECK = 579, - RECURSIVE = 580, - REF = 581, - REFERENCES = 582, - REFERENCING = 583, - REFRESH = 584, - REINDEX = 585, - RELATIVE_P = 586, - RELEASE = 587, - RENAME = 588, - REPEATABLE = 589, - REPLACE = 590, - REPLICA = 591, - RESET = 592, - RESTART = 593, - RESTRICT = 594, - RETURNING = 595, - RETURNS = 596, - REVOKE = 597, - RIGHT = 598, - ROLE = 599, - ROLLBACK = 600, - ROLLUP = 601, - ROW = 602, - ROWS = 603, - RULE = 604, - SAMPLE = 605, - SAVEPOINT = 606, - SCHEMA = 607, - SCHEMAS = 608, - SCROLL = 609, - SEARCH = 610, - SECOND_P = 611, - SECONDS_P = 612, - SECURITY = 613, - SELECT = 614, - SEQUENCE = 615, - SEQUENCES = 616, - SERIALIZABLE = 617, - SERVER = 618, - SESSION = 619, - SESSION_USER = 620, - SET = 621, - SETOF = 622, - SETS = 623, - SHARE = 624, - SHOW = 625, - SIMILAR = 626, - SIMPLE = 627, - SKIP = 628, - SMALLINT = 629, - SNAPSHOT = 630, - SOME = 631, - SQL_P = 632, - STABLE = 633, - STANDALONE_P = 634, - START = 635, - STATEMENT = 636, - STATISTICS = 637, - STDIN = 638, - STDOUT = 639, - STORAGE = 640, - STRICT_P = 641, - STRIP_P = 642, - STRUCT = 643, - SUBSCRIPTION = 644, - SUBSTRING = 645, - SYMMETRIC = 646, - SYSID = 647, - SYSTEM_P = 648, - TABLE = 649, - TABLES = 650, - TABLESAMPLE = 651, - TABLESPACE = 652, - TEMP = 653, - TEMPLATE = 654, - TEMPORARY = 655, - TEXT_P = 656, - THEN = 657, - TIME = 658, - TIMESTAMP = 659, - TO = 660, - TRAILING = 661, - TRANSACTION = 662, - TRANSFORM = 663, - TREAT = 664, - TRIGGER = 665, - TRIM = 666, - TRUE_P = 667, - TRUNCATE = 668, - TRUSTED = 669, - TRY_CAST = 670, - TYPE_P = 671, - TYPES_P = 672, - UNBOUNDED = 673, - UNCOMMITTED = 674, - UNENCRYPTED = 675, - UNION = 676, - UNIQUE = 677, - UNKNOWN = 678, - UNLISTEN = 679, - UNLOGGED = 680, - UNTIL = 681, - UPDATE = 682, - USER = 683, - USING = 684, - VACUUM = 685, - VALID = 686, - VALIDATE = 687, - VALIDATOR = 688, - VALUE_P = 689, - VALUES = 690, - VARCHAR = 691, - VARIADIC = 692, - VARYING = 693, - VERBOSE = 694, - VERSION_P = 695, - VIEW = 696, - VIEWS = 697, - VOLATILE = 698, - WHEN = 699, - WHERE = 700, - WHITESPACE_P = 701, - WINDOW = 702, - WITH = 703, - WITHIN = 704, - WITHOUT = 705, - WORK = 706, - WRAPPER = 707, - WRITE_P = 708, - XML_P = 709, - XMLATTRIBUTES = 710, - XMLCONCAT = 711, - XMLELEMENT = 712, - XMLEXISTS = 713, - XMLFOREST = 714, - XMLNAMESPACES = 715, - XMLPARSE = 716, - XMLPI = 717, - XMLROOT = 718, - XMLSERIALIZE = 719, - XMLTABLE = 720, - YEAR_P = 721, - YEARS_P = 722, - YES_P = 723, - ZONE = 724, - NOT_LA = 725, - NULLS_LA = 726, - WITH_LA = 727, - POSTFIXOP = 728, - UMINUS = 729 - }; -#endif -/* Tokens. */ -#define IDENT 258 -#define FCONST 259 -#define SCONST 260 -#define BCONST 261 -#define XCONST 262 -#define Op 263 -#define ICONST 264 -#define PARAM 265 -#define TYPECAST 266 -#define DOT_DOT 267 -#define COLON_EQUALS 268 -#define EQUALS_GREATER 269 -#define LAMBDA_ARROW 270 -#define LESS_EQUALS 271 -#define GREATER_EQUALS 272 -#define NOT_EQUALS 273 -#define ABORT_P 274 -#define ABSOLUTE_P 275 -#define ACCESS 276 -#define ACTION 277 -#define ADD_P 278 -#define ADMIN 279 -#define AFTER 280 -#define AGGREGATE 281 -#define ALL 282 -#define ALSO 283 -#define ALTER 284 -#define ALWAYS 285 -#define ANALYSE 286 -#define ANALYZE 287 -#define AND 288 -#define ANY 289 -#define ARRAY 290 -#define AS 291 -#define ASC_P 292 -#define ASSERTION 293 -#define ASSIGNMENT 294 -#define ASYMMETRIC 295 -#define AT 296 -#define ATTACH 297 -#define ATTRIBUTE 298 -#define AUTHORIZATION 299 -#define BACKWARD 300 -#define BEFORE 301 -#define BEGIN_P 302 -#define BETWEEN 303 -#define BIGINT 304 -#define BINARY 305 -#define BIT 306 -#define BOOLEAN_P 307 -#define BOTH 308 -#define BY 309 -#define CACHE 310 -#define CALL_P 311 -#define CALLED 312 -#define CASCADE 313 -#define CASCADED 314 -#define CASE 315 -#define CAST 316 -#define CATALOG_P 317 -#define CHAIN 318 -#define CHAR_P 319 -#define CHARACTER 320 -#define CHARACTERISTICS 321 -#define CHECK_P 322 -#define CHECKPOINT 323 -#define CLASS 324 -#define CLOSE 325 -#define CLUSTER 326 -#define COALESCE 327 -#define COLLATE 328 -#define COLLATION 329 -#define COLUMN 330 -#define COLUMNS 331 -#define COMMENT 332 -#define COMMENTS 333 -#define COMMIT 334 -#define COMMITTED 335 -#define CONCURRENTLY 336 -#define CONFIGURATION 337 -#define CONFLICT 338 -#define CONNECTION 339 -#define CONSTRAINT 340 -#define CONSTRAINTS 341 -#define CONTENT_P 342 -#define CONTINUE_P 343 -#define CONVERSION_P 344 -#define COPY 345 -#define COST 346 -#define CREATE_P 347 -#define CROSS 348 -#define CSV 349 -#define CUBE 350 -#define CURRENT_P 351 -#define CURRENT_CATALOG 352 -#define CURRENT_DATE 353 -#define CURRENT_ROLE 354 -#define CURRENT_SCHEMA 355 -#define CURRENT_TIME 356 -#define CURRENT_TIMESTAMP 357 -#define CURRENT_USER 358 -#define CURSOR 359 -#define CYCLE 360 -#define DATA_P 361 -#define DATABASE 362 -#define DAY_P 363 -#define DAYS_P 364 -#define DEALLOCATE 365 -#define DEC 366 -#define DECIMAL_P 367 -#define DECLARE 368 -#define DEFAULT 369 -#define DEFAULTS 370 -#define DEFERRABLE 371 -#define DEFERRED 372 -#define DEFINER 373 -#define DELETE_P 374 -#define DELIMITER 375 -#define DELIMITERS 376 -#define DEPENDS 377 -#define DESC_P 378 -#define DESCRIBE 379 -#define DETACH 380 -#define DICTIONARY 381 -#define DISABLE_P 382 -#define DISCARD 383 -#define DISTINCT 384 -#define DO 385 -#define DOCUMENT_P 386 -#define DOMAIN_P 387 -#define DOUBLE_P 388 -#define DROP 389 -#define EACH 390 -#define ELSE 391 -#define ENABLE_P 392 -#define ENCODING 393 -#define ENCRYPTED 394 -#define END_P 395 -#define ENUM_P 396 -#define ESCAPE 397 -#define EVENT 398 -#define EXCEPT 399 -#define EXCLUDE 400 -#define EXCLUDING 401 -#define EXCLUSIVE 402 -#define EXECUTE 403 -#define EXISTS 404 -#define EXPLAIN 405 -#define EXPORT_P 406 -#define EXTENSION 407 -#define EXTERNAL 408 -#define EXTRACT 409 -#define FALSE_P 410 -#define FAMILY 411 -#define FETCH 412 -#define FILTER 413 -#define FIRST_P 414 -#define FLOAT_P 415 -#define FOLLOWING 416 -#define FOR 417 -#define FORCE 418 -#define FOREIGN 419 -#define FORWARD 420 -#define FREEZE 421 -#define FROM 422 -#define FULL 423 -#define FUNCTION 424 -#define FUNCTIONS 425 -#define GENERATED 426 -#define GLOB 427 -#define GLOBAL 428 -#define GRANT 429 -#define GRANTED 430 -#define GROUP_P 431 -#define GROUPING 432 -#define HANDLER 433 -#define HAVING 434 -#define HEADER_P 435 -#define HOLD 436 -#define HOUR_P 437 -#define HOURS_P 438 -#define IDENTITY_P 439 -#define IF_P 440 -#define ILIKE 441 -#define IMMEDIATE 442 -#define IMMUTABLE 443 -#define IMPLICIT_P 444 -#define IMPORT_P 445 -#define IN_P 446 -#define INCLUDING 447 -#define INCREMENT 448 -#define INDEX 449 -#define INDEXES 450 -#define INHERIT 451 -#define INHERITS 452 -#define INITIALLY 453 -#define INLINE_P 454 -#define INNER_P 455 -#define INOUT 456 -#define INPUT_P 457 -#define INSENSITIVE 458 -#define INSERT 459 -#define INSTEAD 460 -#define INT_P 461 -#define INTEGER 462 -#define INTERSECT 463 -#define INTERVAL 464 -#define INTO 465 -#define INVOKER 466 -#define IS 467 -#define ISNULL 468 -#define ISOLATION 469 -#define JOIN 470 -#define KEY 471 -#define LABEL 472 -#define LANGUAGE 473 -#define LARGE_P 474 -#define LAST_P 475 -#define LATERAL_P 476 -#define LEADING 477 -#define LEAKPROOF 478 -#define LEFT 479 -#define LEVEL 480 -#define LIKE 481 -#define LIMIT 482 -#define LISTEN 483 -#define LOAD 484 -#define LOCAL 485 -#define LOCALTIME 486 -#define LOCALTIMESTAMP 487 -#define LOCATION 488 -#define LOCK_P 489 -#define LOCKED 490 -#define LOGGED 491 -#define MACRO 492 -#define MAP 493 -#define MAPPING 494 -#define MATCH 495 -#define MATERIALIZED 496 -#define MAXVALUE 497 -#define METHOD 498 -#define MICROSECOND_P 499 -#define MICROSECONDS_P 500 -#define MILLISECOND_P 501 -#define MILLISECONDS_P 502 -#define MINUTE_P 503 -#define MINUTES_P 504 -#define MINVALUE 505 -#define MODE 506 -#define MONTH_P 507 -#define MONTHS_P 508 -#define MOVE 509 -#define NAME_P 510 -#define NAMES 511 -#define NATIONAL 512 -#define NATURAL 513 -#define NCHAR 514 -#define NEW 515 -#define NEXT 516 -#define NO 517 -#define NONE 518 -#define NOT 519 -#define NOTHING 520 -#define NOTIFY 521 -#define NOTNULL 522 -#define NOWAIT 523 -#define NULL_P 524 -#define NULLIF 525 -#define NULLS_P 526 -#define NUMERIC 527 -#define OBJECT_P 528 -#define OF 529 -#define OFF 530 -#define OFFSET 531 -#define OIDS 532 -#define OLD 533 -#define ON 534 -#define ONLY 535 -#define OPERATOR 536 -#define OPTION 537 -#define OPTIONS 538 -#define OR 539 -#define ORDER 540 -#define ORDINALITY 541 -#define OUT_P 542 -#define OUTER_P 543 -#define OVER 544 -#define OVERLAPS 545 -#define OVERLAY 546 -#define OVERRIDING 547 -#define OWNED 548 -#define OWNER 549 -#define PARALLEL 550 -#define PARSER 551 -#define PARTIAL 552 -#define PARTITION 553 -#define PASSING 554 -#define PASSWORD 555 -#define PERCENT 556 -#define PLACING 557 -#define PLANS 558 -#define POLICY 559 -#define POSITION 560 -#define PRAGMA_P 561 -#define PRECEDING 562 -#define PRECISION 563 -#define PREPARE 564 -#define PREPARED 565 -#define PRESERVE 566 -#define PRIMARY 567 -#define PRIOR 568 -#define PRIVILEGES 569 -#define PROCEDURAL 570 -#define PROCEDURE 571 -#define PROGRAM 572 -#define PUBLICATION 573 -#define QUOTE 574 -#define RANGE 575 -#define READ_P 576 -#define REAL 577 -#define REASSIGN 578 -#define RECHECK 579 -#define RECURSIVE 580 -#define REF 581 -#define REFERENCES 582 -#define REFERENCING 583 -#define REFRESH 584 -#define REINDEX 585 -#define RELATIVE_P 586 -#define RELEASE 587 -#define RENAME 588 -#define REPEATABLE 589 -#define REPLACE 590 -#define REPLICA 591 -#define RESET 592 -#define RESTART 593 -#define RESTRICT 594 -#define RETURNING 595 -#define RETURNS 596 -#define REVOKE 597 -#define RIGHT 598 -#define ROLE 599 -#define ROLLBACK 600 -#define ROLLUP 601 -#define ROW 602 -#define ROWS 603 -#define RULE 604 -#define SAMPLE 605 -#define SAVEPOINT 606 -#define SCHEMA 607 -#define SCHEMAS 608 -#define SCROLL 609 -#define SEARCH 610 -#define SECOND_P 611 -#define SECONDS_P 612 -#define SECURITY 613 -#define SELECT 614 -#define SEQUENCE 615 -#define SEQUENCES 616 -#define SERIALIZABLE 617 -#define SERVER 618 -#define SESSION 619 -#define SESSION_USER 620 -#define SET 621 -#define SETOF 622 -#define SETS 623 -#define SHARE 624 -#define SHOW 625 -#define SIMILAR 626 -#define SIMPLE 627 -#define SKIP 628 -#define SMALLINT 629 -#define SNAPSHOT 630 -#define SOME 631 -#define SQL_P 632 -#define STABLE 633 -#define STANDALONE_P 634 -#define START 635 -#define STATEMENT 636 -#define STATISTICS 637 -#define STDIN 638 -#define STDOUT 639 -#define STORAGE 640 -#define STRICT_P 641 -#define STRIP_P 642 -#define STRUCT 643 -#define SUBSCRIPTION 644 -#define SUBSTRING 645 -#define SYMMETRIC 646 -#define SYSID 647 -#define SYSTEM_P 648 -#define TABLE 649 -#define TABLES 650 -#define TABLESAMPLE 651 -#define TABLESPACE 652 -#define TEMP 653 -#define TEMPLATE 654 -#define TEMPORARY 655 -#define TEXT_P 656 -#define THEN 657 -#define TIME 658 -#define TIMESTAMP 659 -#define TO 660 -#define TRAILING 661 -#define TRANSACTION 662 -#define TRANSFORM 663 -#define TREAT 664 -#define TRIGGER 665 -#define TRIM 666 -#define TRUE_P 667 -#define TRUNCATE 668 -#define TRUSTED 669 -#define TRY_CAST 670 -#define TYPE_P 671 -#define TYPES_P 672 -#define UNBOUNDED 673 -#define UNCOMMITTED 674 -#define UNENCRYPTED 675 -#define UNION 676 -#define UNIQUE 677 -#define UNKNOWN 678 -#define UNLISTEN 679 -#define UNLOGGED 680 -#define UNTIL 681 -#define UPDATE 682 -#define USER 683 -#define USING 684 -#define VACUUM 685 -#define VALID 686 -#define VALIDATE 687 -#define VALIDATOR 688 -#define VALUE_P 689 -#define VALUES 690 -#define VARCHAR 691 -#define VARIADIC 692 -#define VARYING 693 -#define VERBOSE 694 -#define VERSION_P 695 -#define VIEW 696 -#define VIEWS 697 -#define VOLATILE 698 -#define WHEN 699 -#define WHERE 700 -#define WHITESPACE_P 701 -#define WINDOW 702 -#define WITH 703 -#define WITHIN 704 -#define WITHOUT 705 -#define WORK 706 -#define WRAPPER 707 -#define WRITE_P 708 -#define XML_P 709 -#define XMLATTRIBUTES 710 -#define XMLCONCAT 711 -#define XMLELEMENT 712 -#define XMLEXISTS 713 -#define XMLFOREST 714 -#define XMLNAMESPACES 715 -#define XMLPARSE 716 -#define XMLPI 717 -#define XMLROOT 718 -#define XMLSERIALIZE 719 -#define XMLTABLE 720 -#define YEAR_P 721 -#define YEARS_P 722 -#define YES_P 723 -#define ZONE 724 -#define NOT_LA 725 -#define NULLS_LA 726 -#define WITH_LA 727 -#define POSTFIXOP 728 -#define UMINUS 729 - - - - -/* Copy the first part of user declarations. */ +#define yyparse base_yyparse +#define yylex base_yylex +#define yyerror base_yyerror +#define yydebug base_yydebug +#define yynerrs base_yynerrs + +/* First part of user prologue. */ #line 1 "third_party/libpg_query/grammar/grammar.y.tmp" #line 1 "third_party/libpg_query/grammar/grammar.hpp" @@ -206962,17 +206651,17 @@ namespace duckdb_libpgquery { // The following code up to LICENSE_CHANGE_END is subject to THIRD PARTY LICENSE #8 // See the end of this file for a list -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ -/* Skeleton interface for Bison's Yacc-like parsers in C +/* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -206980,9 +206669,7 @@ namespace duckdb_libpgquery { GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -206997,967 +206684,506 @@ namespace duckdb_libpgquery { This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Tokens. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ + +#ifndef YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED +# define YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int base_yydebug; +#endif + +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - LAMBDA_ARROW = 270, - LESS_EQUALS = 271, - GREATER_EQUALS = 272, - NOT_EQUALS = 273, - ABORT_P = 274, - ABSOLUTE_P = 275, - ACCESS = 276, - ACTION = 277, - ADD_P = 278, - ADMIN = 279, - AFTER = 280, - AGGREGATE = 281, - ALL = 282, - ALSO = 283, - ALTER = 284, - ALWAYS = 285, - ANALYSE = 286, - ANALYZE = 287, - AND = 288, - ANY = 289, - ARRAY = 290, - AS = 291, - ASC_P = 292, - ASSERTION = 293, - ASSIGNMENT = 294, - ASYMMETRIC = 295, - AT = 296, - ATTACH = 297, - ATTRIBUTE = 298, - AUTHORIZATION = 299, - BACKWARD = 300, - BEFORE = 301, - BEGIN_P = 302, - BETWEEN = 303, - BIGINT = 304, - BINARY = 305, - BIT = 306, - BOOLEAN_P = 307, - BOTH = 308, - BY = 309, - CACHE = 310, - CALL_P = 311, - CALLED = 312, - CASCADE = 313, - CASCADED = 314, - CASE = 315, - CAST = 316, - CATALOG_P = 317, - CHAIN = 318, - CHAR_P = 319, - CHARACTER = 320, - CHARACTERISTICS = 321, - CHECK_P = 322, - CHECKPOINT = 323, - CLASS = 324, - CLOSE = 325, - CLUSTER = 326, - COALESCE = 327, - COLLATE = 328, - COLLATION = 329, - COLUMN = 330, - COLUMNS = 331, - COMMENT = 332, - COMMENTS = 333, - COMMIT = 334, - COMMITTED = 335, - CONCURRENTLY = 336, - CONFIGURATION = 337, - CONFLICT = 338, - CONNECTION = 339, - CONSTRAINT = 340, - CONSTRAINTS = 341, - CONTENT_P = 342, - CONTINUE_P = 343, - CONVERSION_P = 344, - COPY = 345, - COST = 346, - CREATE_P = 347, - CROSS = 348, - CSV = 349, - CUBE = 350, - CURRENT_P = 351, - CURRENT_CATALOG = 352, - CURRENT_DATE = 353, - CURRENT_ROLE = 354, - CURRENT_SCHEMA = 355, - CURRENT_TIME = 356, - CURRENT_TIMESTAMP = 357, - CURRENT_USER = 358, - CURSOR = 359, - CYCLE = 360, - DATA_P = 361, - DATABASE = 362, - DAY_P = 363, - DAYS_P = 364, - DEALLOCATE = 365, - DEC = 366, - DECIMAL_P = 367, - DECLARE = 368, - DEFAULT = 369, - DEFAULTS = 370, - DEFERRABLE = 371, - DEFERRED = 372, - DEFINER = 373, - DELETE_P = 374, - DELIMITER = 375, - DELIMITERS = 376, - DEPENDS = 377, - DESC_P = 378, - DESCRIBE = 379, - DETACH = 380, - DICTIONARY = 381, - DISABLE_P = 382, - DISCARD = 383, - DISTINCT = 384, - DO = 385, - DOCUMENT_P = 386, - DOMAIN_P = 387, - DOUBLE_P = 388, - DROP = 389, - EACH = 390, - ELSE = 391, - ENABLE_P = 392, - ENCODING = 393, - ENCRYPTED = 394, - END_P = 395, - ENUM_P = 396, - ESCAPE = 397, - EVENT = 398, - EXCEPT = 399, - EXCLUDE = 400, - EXCLUDING = 401, - EXCLUSIVE = 402, - EXECUTE = 403, - EXISTS = 404, - EXPLAIN = 405, - EXPORT_P = 406, - EXTENSION = 407, - EXTERNAL = 408, - EXTRACT = 409, - FALSE_P = 410, - FAMILY = 411, - FETCH = 412, - FILTER = 413, - FIRST_P = 414, - FLOAT_P = 415, - FOLLOWING = 416, - FOR = 417, - FORCE = 418, - FOREIGN = 419, - FORWARD = 420, - FREEZE = 421, - FROM = 422, - FULL = 423, - FUNCTION = 424, - FUNCTIONS = 425, - GENERATED = 426, - GLOB = 427, - GLOBAL = 428, - GRANT = 429, - GRANTED = 430, - GROUP_P = 431, - GROUPING = 432, - HANDLER = 433, - HAVING = 434, - HEADER_P = 435, - HOLD = 436, - HOUR_P = 437, - HOURS_P = 438, - IDENTITY_P = 439, - IF_P = 440, - ILIKE = 441, - IMMEDIATE = 442, - IMMUTABLE = 443, - IMPLICIT_P = 444, - IMPORT_P = 445, - IN_P = 446, - INCLUDING = 447, - INCREMENT = 448, - INDEX = 449, - INDEXES = 450, - INHERIT = 451, - INHERITS = 452, - INITIALLY = 453, - INLINE_P = 454, - INNER_P = 455, - INOUT = 456, - INPUT_P = 457, - INSENSITIVE = 458, - INSERT = 459, - INSTEAD = 460, - INT_P = 461, - INTEGER = 462, - INTERSECT = 463, - INTERVAL = 464, - INTO = 465, - INVOKER = 466, - IS = 467, - ISNULL = 468, - ISOLATION = 469, - JOIN = 470, - KEY = 471, - LABEL = 472, - LANGUAGE = 473, - LARGE_P = 474, - LAST_P = 475, - LATERAL_P = 476, - LEADING = 477, - LEAKPROOF = 478, - LEFT = 479, - LEVEL = 480, - LIKE = 481, - LIMIT = 482, - LISTEN = 483, - LOAD = 484, - LOCAL = 485, - LOCALTIME = 486, - LOCALTIMESTAMP = 487, - LOCATION = 488, - LOCK_P = 489, - LOCKED = 490, - LOGGED = 491, - MACRO = 492, - MAP = 493, - MAPPING = 494, - MATCH = 495, - MATERIALIZED = 496, - MAXVALUE = 497, - METHOD = 498, - MICROSECOND_P = 499, - MICROSECONDS_P = 500, - MILLISECOND_P = 501, - MILLISECONDS_P = 502, - MINUTE_P = 503, - MINUTES_P = 504, - MINVALUE = 505, - MODE = 506, - MONTH_P = 507, - MONTHS_P = 508, - MOVE = 509, - NAME_P = 510, - NAMES = 511, - NATIONAL = 512, - NATURAL = 513, - NCHAR = 514, - NEW = 515, - NEXT = 516, - NO = 517, - NONE = 518, - NOT = 519, - NOTHING = 520, - NOTIFY = 521, - NOTNULL = 522, - NOWAIT = 523, - NULL_P = 524, - NULLIF = 525, - NULLS_P = 526, - NUMERIC = 527, - OBJECT_P = 528, - OF = 529, - OFF = 530, - OFFSET = 531, - OIDS = 532, - OLD = 533, - ON = 534, - ONLY = 535, - OPERATOR = 536, - OPTION = 537, - OPTIONS = 538, - OR = 539, - ORDER = 540, - ORDINALITY = 541, - OUT_P = 542, - OUTER_P = 543, - OVER = 544, - OVERLAPS = 545, - OVERLAY = 546, - OVERRIDING = 547, - OWNED = 548, - OWNER = 549, - PARALLEL = 550, - PARSER = 551, - PARTIAL = 552, - PARTITION = 553, - PASSING = 554, - PASSWORD = 555, - PERCENT = 556, - PLACING = 557, - PLANS = 558, - POLICY = 559, - POSITION = 560, - PRAGMA_P = 561, - PRECEDING = 562, - PRECISION = 563, - PREPARE = 564, - PREPARED = 565, - PRESERVE = 566, - PRIMARY = 567, - PRIOR = 568, - PRIVILEGES = 569, - PROCEDURAL = 570, - PROCEDURE = 571, - PROGRAM = 572, - PUBLICATION = 573, - QUOTE = 574, - RANGE = 575, - READ_P = 576, - REAL = 577, - REASSIGN = 578, - RECHECK = 579, - RECURSIVE = 580, - REF = 581, - REFERENCES = 582, - REFERENCING = 583, - REFRESH = 584, - REINDEX = 585, - RELATIVE_P = 586, - RELEASE = 587, - RENAME = 588, - REPEATABLE = 589, - REPLACE = 590, - REPLICA = 591, - RESET = 592, - RESTART = 593, - RESTRICT = 594, - RETURNING = 595, - RETURNS = 596, - REVOKE = 597, - RIGHT = 598, - ROLE = 599, - ROLLBACK = 600, - ROLLUP = 601, - ROW = 602, - ROWS = 603, - RULE = 604, - SAMPLE = 605, - SAVEPOINT = 606, - SCHEMA = 607, - SCHEMAS = 608, - SCROLL = 609, - SEARCH = 610, - SECOND_P = 611, - SECONDS_P = 612, - SECURITY = 613, - SELECT = 614, - SEQUENCE = 615, - SEQUENCES = 616, - SERIALIZABLE = 617, - SERVER = 618, - SESSION = 619, - SESSION_USER = 620, - SET = 621, - SETOF = 622, - SETS = 623, - SHARE = 624, - SHOW = 625, - SIMILAR = 626, - SIMPLE = 627, - SKIP = 628, - SMALLINT = 629, - SNAPSHOT = 630, - SOME = 631, - SQL_P = 632, - STABLE = 633, - STANDALONE_P = 634, - START = 635, - STATEMENT = 636, - STATISTICS = 637, - STDIN = 638, - STDOUT = 639, - STORAGE = 640, - STRICT_P = 641, - STRIP_P = 642, - STRUCT = 643, - SUBSCRIPTION = 644, - SUBSTRING = 645, - SYMMETRIC = 646, - SYSID = 647, - SYSTEM_P = 648, - TABLE = 649, - TABLES = 650, - TABLESAMPLE = 651, - TABLESPACE = 652, - TEMP = 653, - TEMPLATE = 654, - TEMPORARY = 655, - TEXT_P = 656, - THEN = 657, - TIME = 658, - TIMESTAMP = 659, - TO = 660, - TRAILING = 661, - TRANSACTION = 662, - TRANSFORM = 663, - TREAT = 664, - TRIGGER = 665, - TRIM = 666, - TRUE_P = 667, - TRUNCATE = 668, - TRUSTED = 669, - TRY_CAST = 670, - TYPE_P = 671, - TYPES_P = 672, - UNBOUNDED = 673, - UNCOMMITTED = 674, - UNENCRYPTED = 675, - UNION = 676, - UNIQUE = 677, - UNKNOWN = 678, - UNLISTEN = 679, - UNLOGGED = 680, - UNTIL = 681, - UPDATE = 682, - USER = 683, - USING = 684, - VACUUM = 685, - VALID = 686, - VALIDATE = 687, - VALIDATOR = 688, - VALUE_P = 689, - VALUES = 690, - VARCHAR = 691, - VARIADIC = 692, - VARYING = 693, - VERBOSE = 694, - VERSION_P = 695, - VIEW = 696, - VIEWS = 697, - VOLATILE = 698, - WHEN = 699, - WHERE = 700, - WHITESPACE_P = 701, - WINDOW = 702, - WITH = 703, - WITHIN = 704, - WITHOUT = 705, - WORK = 706, - WRAPPER = 707, - WRITE_P = 708, - XML_P = 709, - XMLATTRIBUTES = 710, - XMLCONCAT = 711, - XMLELEMENT = 712, - XMLEXISTS = 713, - XMLFOREST = 714, - XMLNAMESPACES = 715, - XMLPARSE = 716, - XMLPI = 717, - XMLROOT = 718, - XMLSERIALIZE = 719, - XMLTABLE = 720, - YEAR_P = 721, - YEARS_P = 722, - YES_P = 723, - ZONE = 724, - NOT_LA = 725, - NULLS_LA = 726, - WITH_LA = 727, - POSTFIXOP = 728, - UMINUS = 729 - }; + enum yytokentype + { + IDENT = 258, + FCONST = 259, + SCONST = 260, + BCONST = 261, + XCONST = 262, + Op = 263, + ICONST = 264, + PARAM = 265, + TYPECAST = 266, + DOT_DOT = 267, + COLON_EQUALS = 268, + EQUALS_GREATER = 269, + LAMBDA_ARROW = 270, + LESS_EQUALS = 271, + GREATER_EQUALS = 272, + NOT_EQUALS = 273, + ABORT_P = 274, + ABSOLUTE_P = 275, + ACCESS = 276, + ACTION = 277, + ADD_P = 278, + ADMIN = 279, + AFTER = 280, + AGGREGATE = 281, + ALL = 282, + ALSO = 283, + ALTER = 284, + ALWAYS = 285, + ANALYSE = 286, + ANALYZE = 287, + AND = 288, + ANY = 289, + ARRAY = 290, + AS = 291, + ASC_P = 292, + ASSERTION = 293, + ASSIGNMENT = 294, + ASYMMETRIC = 295, + AT = 296, + ATTACH = 297, + ATTRIBUTE = 298, + AUTHORIZATION = 299, + BACKWARD = 300, + BEFORE = 301, + BEGIN_P = 302, + BETWEEN = 303, + BIGINT = 304, + BINARY = 305, + BIT = 306, + BOOLEAN_P = 307, + BOTH = 308, + BY = 309, + CACHE = 310, + CALL_P = 311, + CALLED = 312, + CASCADE = 313, + CASCADED = 314, + CASE = 315, + CAST = 316, + CATALOG_P = 317, + CHAIN = 318, + CHAR_P = 319, + CHARACTER = 320, + CHARACTERISTICS = 321, + CHECK_P = 322, + CHECKPOINT = 323, + CLASS = 324, + CLOSE = 325, + CLUSTER = 326, + COALESCE = 327, + COLLATE = 328, + COLLATION = 329, + COLUMN = 330, + COLUMNS = 331, + COMMENT = 332, + COMMENTS = 333, + COMMIT = 334, + COMMITTED = 335, + CONCURRENTLY = 336, + CONFIGURATION = 337, + CONFLICT = 338, + CONNECTION = 339, + CONSTRAINT = 340, + CONSTRAINTS = 341, + CONTENT_P = 342, + CONTINUE_P = 343, + CONVERSION_P = 344, + COPY = 345, + COST = 346, + CREATE_P = 347, + CROSS = 348, + CSV = 349, + CUBE = 350, + CURRENT_P = 351, + CURRENT_CATALOG = 352, + CURRENT_DATE = 353, + CURRENT_ROLE = 354, + CURRENT_SCHEMA = 355, + CURRENT_TIME = 356, + CURRENT_TIMESTAMP = 357, + CURRENT_USER = 358, + CURSOR = 359, + CYCLE = 360, + DATA_P = 361, + DATABASE = 362, + DAY_P = 363, + DAYS_P = 364, + DEALLOCATE = 365, + DEC = 366, + DECIMAL_P = 367, + DECLARE = 368, + DEFAULT = 369, + DEFAULTS = 370, + DEFERRABLE = 371, + DEFERRED = 372, + DEFINER = 373, + DELETE_P = 374, + DELIMITER = 375, + DELIMITERS = 376, + DEPENDS = 377, + DESC_P = 378, + DESCRIBE = 379, + DETACH = 380, + DICTIONARY = 381, + DISABLE_P = 382, + DISCARD = 383, + DISTINCT = 384, + DO = 385, + DOCUMENT_P = 386, + DOMAIN_P = 387, + DOUBLE_P = 388, + DROP = 389, + EACH = 390, + ELSE = 391, + ENABLE_P = 392, + ENCODING = 393, + ENCRYPTED = 394, + END_P = 395, + ENUM_P = 396, + ESCAPE = 397, + EVENT = 398, + EXCEPT = 399, + EXCLUDE = 400, + EXCLUDING = 401, + EXCLUSIVE = 402, + EXECUTE = 403, + EXISTS = 404, + EXPLAIN = 405, + EXPORT_P = 406, + EXTENSION = 407, + EXTERNAL = 408, + EXTRACT = 409, + FALSE_P = 410, + FAMILY = 411, + FETCH = 412, + FILTER = 413, + FIRST_P = 414, + FLOAT_P = 415, + FOLLOWING = 416, + FOR = 417, + FORCE = 418, + FOREIGN = 419, + FORWARD = 420, + FREEZE = 421, + FROM = 422, + FULL = 423, + FUNCTION = 424, + FUNCTIONS = 425, + GENERATED = 426, + GLOB = 427, + GLOBAL = 428, + GRANT = 429, + GRANTED = 430, + GROUP_P = 431, + GROUPING = 432, + HANDLER = 433, + HAVING = 434, + HEADER_P = 435, + HOLD = 436, + HOUR_P = 437, + HOURS_P = 438, + IDENTITY_P = 439, + IF_P = 440, + ILIKE = 441, + IMMEDIATE = 442, + IMMUTABLE = 443, + IMPLICIT_P = 444, + IMPORT_P = 445, + IN_P = 446, + INCLUDING = 447, + INCREMENT = 448, + INDEX = 449, + INDEXES = 450, + INHERIT = 451, + INHERITS = 452, + INITIALLY = 453, + INLINE_P = 454, + INNER_P = 455, + INOUT = 456, + INPUT_P = 457, + INSENSITIVE = 458, + INSERT = 459, + INSTEAD = 460, + INT_P = 461, + INTEGER = 462, + INTERSECT = 463, + INTERVAL = 464, + INTO = 465, + INVOKER = 466, + IS = 467, + ISNULL = 468, + ISOLATION = 469, + JOIN = 470, + KEY = 471, + LABEL = 472, + LANGUAGE = 473, + LARGE_P = 474, + LAST_P = 475, + LATERAL_P = 476, + LEADING = 477, + LEAKPROOF = 478, + LEFT = 479, + LEVEL = 480, + LIKE = 481, + LIMIT = 482, + LISTEN = 483, + LOAD = 484, + LOCAL = 485, + LOCALTIME = 486, + LOCALTIMESTAMP = 487, + LOCATION = 488, + LOCK_P = 489, + LOCKED = 490, + LOGGED = 491, + MACRO = 492, + MAP = 493, + MAPPING = 494, + MATCH = 495, + MATERIALIZED = 496, + MAXVALUE = 497, + METHOD = 498, + MICROSECOND_P = 499, + MICROSECONDS_P = 500, + MILLISECOND_P = 501, + MILLISECONDS_P = 502, + MINUTE_P = 503, + MINUTES_P = 504, + MINVALUE = 505, + MODE = 506, + MONTH_P = 507, + MONTHS_P = 508, + MOVE = 509, + NAME_P = 510, + NAMES = 511, + NATIONAL = 512, + NATURAL = 513, + NCHAR = 514, + NEW = 515, + NEXT = 516, + NO = 517, + NONE = 518, + NOT = 519, + NOTHING = 520, + NOTIFY = 521, + NOTNULL = 522, + NOWAIT = 523, + NULL_P = 524, + NULLIF = 525, + NULLS_P = 526, + NUMERIC = 527, + OBJECT_P = 528, + OF = 529, + OFF = 530, + OFFSET = 531, + OIDS = 532, + OLD = 533, + ON = 534, + ONLY = 535, + OPERATOR = 536, + OPTION = 537, + OPTIONS = 538, + OR = 539, + ORDER = 540, + ORDINALITY = 541, + OUT_P = 542, + OUTER_P = 543, + OVER = 544, + OVERLAPS = 545, + OVERLAY = 546, + OVERRIDING = 547, + OWNED = 548, + OWNER = 549, + PARALLEL = 550, + PARSER = 551, + PARTIAL = 552, + PARTITION = 553, + PASSING = 554, + PASSWORD = 555, + PERCENT = 556, + PLACING = 557, + PLANS = 558, + POLICY = 559, + POSITION = 560, + PRAGMA_P = 561, + PRECEDING = 562, + PRECISION = 563, + PREPARE = 564, + PREPARED = 565, + PRESERVE = 566, + PRIMARY = 567, + PRIOR = 568, + PRIVILEGES = 569, + PROCEDURAL = 570, + PROCEDURE = 571, + PROGRAM = 572, + PUBLICATION = 573, + QUOTE = 574, + RANGE = 575, + READ_P = 576, + REAL = 577, + REASSIGN = 578, + RECHECK = 579, + RECURSIVE = 580, + REF = 581, + REFERENCES = 582, + REFERENCING = 583, + REFRESH = 584, + REINDEX = 585, + RELATIVE_P = 586, + RELEASE = 587, + RENAME = 588, + REPEATABLE = 589, + REPLACE = 590, + REPLICA = 591, + RESET = 592, + RESTART = 593, + RESTRICT = 594, + RETURNING = 595, + RETURNS = 596, + REVOKE = 597, + RIGHT = 598, + ROLE = 599, + ROLLBACK = 600, + ROLLUP = 601, + ROW = 602, + ROWS = 603, + RULE = 604, + SAMPLE = 605, + SAVEPOINT = 606, + SCHEMA = 607, + SCHEMAS = 608, + SCROLL = 609, + SEARCH = 610, + SECOND_P = 611, + SECONDS_P = 612, + SECURITY = 613, + SELECT = 614, + SEQUENCE = 615, + SEQUENCES = 616, + SERIALIZABLE = 617, + SERVER = 618, + SESSION = 619, + SESSION_USER = 620, + SET = 621, + SETOF = 622, + SETS = 623, + SHARE = 624, + SHOW = 625, + SIMILAR = 626, + SIMPLE = 627, + SKIP = 628, + SMALLINT = 629, + SNAPSHOT = 630, + SOME = 631, + SQL_P = 632, + STABLE = 633, + STANDALONE_P = 634, + START = 635, + STATEMENT = 636, + STATISTICS = 637, + STDIN = 638, + STDOUT = 639, + STORAGE = 640, + STRICT_P = 641, + STRIP_P = 642, + STRUCT = 643, + SUBSCRIPTION = 644, + SUBSTRING = 645, + SUMMARIZE = 646, + SYMMETRIC = 647, + SYSID = 648, + SYSTEM_P = 649, + TABLE = 650, + TABLES = 651, + TABLESAMPLE = 652, + TABLESPACE = 653, + TEMP = 654, + TEMPLATE = 655, + TEMPORARY = 656, + TEXT_P = 657, + THEN = 658, + TIME = 659, + TIMESTAMP = 660, + TO = 661, + TRAILING = 662, + TRANSACTION = 663, + TRANSFORM = 664, + TREAT = 665, + TRIGGER = 666, + TRIM = 667, + TRUE_P = 668, + TRUNCATE = 669, + TRUSTED = 670, + TRY_CAST = 671, + TYPE_P = 672, + TYPES_P = 673, + UNBOUNDED = 674, + UNCOMMITTED = 675, + UNENCRYPTED = 676, + UNION = 677, + UNIQUE = 678, + UNKNOWN = 679, + UNLISTEN = 680, + UNLOGGED = 681, + UNTIL = 682, + UPDATE = 683, + USER = 684, + USING = 685, + VACUUM = 686, + VALID = 687, + VALIDATE = 688, + VALIDATOR = 689, + VALUE_P = 690, + VALUES = 691, + VARCHAR = 692, + VARIADIC = 693, + VARYING = 694, + VERBOSE = 695, + VERSION_P = 696, + VIEW = 697, + VIEWS = 698, + VOLATILE = 699, + WHEN = 700, + WHERE = 701, + WHITESPACE_P = 702, + WINDOW = 703, + WITH = 704, + WITHIN = 705, + WITHOUT = 706, + WORK = 707, + WRAPPER = 708, + WRITE_P = 709, + XML_P = 710, + XMLATTRIBUTES = 711, + XMLCONCAT = 712, + XMLELEMENT = 713, + XMLEXISTS = 714, + XMLFOREST = 715, + XMLNAMESPACES = 716, + XMLPARSE = 717, + XMLPI = 718, + XMLROOT = 719, + XMLSERIALIZE = 720, + XMLTABLE = 721, + YEAR_P = 722, + YEARS_P = 723, + YES_P = 724, + ZONE = 725, + NOT_LA = 726, + NULLS_LA = 727, + WITH_LA = 728, + POSTFIXOP = 729, + UMINUS = 730 + }; #endif -/* Tokens. */ -#define IDENT 258 -#define FCONST 259 -#define SCONST 260 -#define BCONST 261 -#define XCONST 262 -#define Op 263 -#define ICONST 264 -#define PARAM 265 -#define TYPECAST 266 -#define DOT_DOT 267 -#define COLON_EQUALS 268 -#define EQUALS_GREATER 269 -#define LAMBDA_ARROW 270 -#define LESS_EQUALS 271 -#define GREATER_EQUALS 272 -#define NOT_EQUALS 273 -#define ABORT_P 274 -#define ABSOLUTE_P 275 -#define ACCESS 276 -#define ACTION 277 -#define ADD_P 278 -#define ADMIN 279 -#define AFTER 280 -#define AGGREGATE 281 -#define ALL 282 -#define ALSO 283 -#define ALTER 284 -#define ALWAYS 285 -#define ANALYSE 286 -#define ANALYZE 287 -#define AND 288 -#define ANY 289 -#define ARRAY 290 -#define AS 291 -#define ASC_P 292 -#define ASSERTION 293 -#define ASSIGNMENT 294 -#define ASYMMETRIC 295 -#define AT 296 -#define ATTACH 297 -#define ATTRIBUTE 298 -#define AUTHORIZATION 299 -#define BACKWARD 300 -#define BEFORE 301 -#define BEGIN_P 302 -#define BETWEEN 303 -#define BIGINT 304 -#define BINARY 305 -#define BIT 306 -#define BOOLEAN_P 307 -#define BOTH 308 -#define BY 309 -#define CACHE 310 -#define CALL_P 311 -#define CALLED 312 -#define CASCADE 313 -#define CASCADED 314 -#define CASE 315 -#define CAST 316 -#define CATALOG_P 317 -#define CHAIN 318 -#define CHAR_P 319 -#define CHARACTER 320 -#define CHARACTERISTICS 321 -#define CHECK_P 322 -#define CHECKPOINT 323 -#define CLASS 324 -#define CLOSE 325 -#define CLUSTER 326 -#define COALESCE 327 -#define COLLATE 328 -#define COLLATION 329 -#define COLUMN 330 -#define COLUMNS 331 -#define COMMENT 332 -#define COMMENTS 333 -#define COMMIT 334 -#define COMMITTED 335 -#define CONCURRENTLY 336 -#define CONFIGURATION 337 -#define CONFLICT 338 -#define CONNECTION 339 -#define CONSTRAINT 340 -#define CONSTRAINTS 341 -#define CONTENT_P 342 -#define CONTINUE_P 343 -#define CONVERSION_P 344 -#define COPY 345 -#define COST 346 -#define CREATE_P 347 -#define CROSS 348 -#define CSV 349 -#define CUBE 350 -#define CURRENT_P 351 -#define CURRENT_CATALOG 352 -#define CURRENT_DATE 353 -#define CURRENT_ROLE 354 -#define CURRENT_SCHEMA 355 -#define CURRENT_TIME 356 -#define CURRENT_TIMESTAMP 357 -#define CURRENT_USER 358 -#define CURSOR 359 -#define CYCLE 360 -#define DATA_P 361 -#define DATABASE 362 -#define DAY_P 363 -#define DAYS_P 364 -#define DEALLOCATE 365 -#define DEC 366 -#define DECIMAL_P 367 -#define DECLARE 368 -#define DEFAULT 369 -#define DEFAULTS 370 -#define DEFERRABLE 371 -#define DEFERRED 372 -#define DEFINER 373 -#define DELETE_P 374 -#define DELIMITER 375 -#define DELIMITERS 376 -#define DEPENDS 377 -#define DESC_P 378 -#define DESCRIBE 379 -#define DETACH 380 -#define DICTIONARY 381 -#define DISABLE_P 382 -#define DISCARD 383 -#define DISTINCT 384 -#define DO 385 -#define DOCUMENT_P 386 -#define DOMAIN_P 387 -#define DOUBLE_P 388 -#define DROP 389 -#define EACH 390 -#define ELSE 391 -#define ENABLE_P 392 -#define ENCODING 393 -#define ENCRYPTED 394 -#define END_P 395 -#define ENUM_P 396 -#define ESCAPE 397 -#define EVENT 398 -#define EXCEPT 399 -#define EXCLUDE 400 -#define EXCLUDING 401 -#define EXCLUSIVE 402 -#define EXECUTE 403 -#define EXISTS 404 -#define EXPLAIN 405 -#define EXPORT_P 406 -#define EXTENSION 407 -#define EXTERNAL 408 -#define EXTRACT 409 -#define FALSE_P 410 -#define FAMILY 411 -#define FETCH 412 -#define FILTER 413 -#define FIRST_P 414 -#define FLOAT_P 415 -#define FOLLOWING 416 -#define FOR 417 -#define FORCE 418 -#define FOREIGN 419 -#define FORWARD 420 -#define FREEZE 421 -#define FROM 422 -#define FULL 423 -#define FUNCTION 424 -#define FUNCTIONS 425 -#define GENERATED 426 -#define GLOB 427 -#define GLOBAL 428 -#define GRANT 429 -#define GRANTED 430 -#define GROUP_P 431 -#define GROUPING 432 -#define HANDLER 433 -#define HAVING 434 -#define HEADER_P 435 -#define HOLD 436 -#define HOUR_P 437 -#define HOURS_P 438 -#define IDENTITY_P 439 -#define IF_P 440 -#define ILIKE 441 -#define IMMEDIATE 442 -#define IMMUTABLE 443 -#define IMPLICIT_P 444 -#define IMPORT_P 445 -#define IN_P 446 -#define INCLUDING 447 -#define INCREMENT 448 -#define INDEX 449 -#define INDEXES 450 -#define INHERIT 451 -#define INHERITS 452 -#define INITIALLY 453 -#define INLINE_P 454 -#define INNER_P 455 -#define INOUT 456 -#define INPUT_P 457 -#define INSENSITIVE 458 -#define INSERT 459 -#define INSTEAD 460 -#define INT_P 461 -#define INTEGER 462 -#define INTERSECT 463 -#define INTERVAL 464 -#define INTO 465 -#define INVOKER 466 -#define IS 467 -#define ISNULL 468 -#define ISOLATION 469 -#define JOIN 470 -#define KEY 471 -#define LABEL 472 -#define LANGUAGE 473 -#define LARGE_P 474 -#define LAST_P 475 -#define LATERAL_P 476 -#define LEADING 477 -#define LEAKPROOF 478 -#define LEFT 479 -#define LEVEL 480 -#define LIKE 481 -#define LIMIT 482 -#define LISTEN 483 -#define LOAD 484 -#define LOCAL 485 -#define LOCALTIME 486 -#define LOCALTIMESTAMP 487 -#define LOCATION 488 -#define LOCK_P 489 -#define LOCKED 490 -#define LOGGED 491 -#define MACRO 492 -#define MAP 493 -#define MAPPING 494 -#define MATCH 495 -#define MATERIALIZED 496 -#define MAXVALUE 497 -#define METHOD 498 -#define MICROSECOND_P 499 -#define MICROSECONDS_P 500 -#define MILLISECOND_P 501 -#define MILLISECONDS_P 502 -#define MINUTE_P 503 -#define MINUTES_P 504 -#define MINVALUE 505 -#define MODE 506 -#define MONTH_P 507 -#define MONTHS_P 508 -#define MOVE 509 -#define NAME_P 510 -#define NAMES 511 -#define NATIONAL 512 -#define NATURAL 513 -#define NCHAR 514 -#define NEW 515 -#define NEXT 516 -#define NO 517 -#define NONE 518 -#define NOT 519 -#define NOTHING 520 -#define NOTIFY 521 -#define NOTNULL 522 -#define NOWAIT 523 -#define NULL_P 524 -#define NULLIF 525 -#define NULLS_P 526 -#define NUMERIC 527 -#define OBJECT_P 528 -#define OF 529 -#define OFF 530 -#define OFFSET 531 -#define OIDS 532 -#define OLD 533 -#define ON 534 -#define ONLY 535 -#define OPERATOR 536 -#define OPTION 537 -#define OPTIONS 538 -#define OR 539 -#define ORDER 540 -#define ORDINALITY 541 -#define OUT_P 542 -#define OUTER_P 543 -#define OVER 544 -#define OVERLAPS 545 -#define OVERLAY 546 -#define OVERRIDING 547 -#define OWNED 548 -#define OWNER 549 -#define PARALLEL 550 -#define PARSER 551 -#define PARTIAL 552 -#define PARTITION 553 -#define PASSING 554 -#define PASSWORD 555 -#define PERCENT 556 -#define PLACING 557 -#define PLANS 558 -#define POLICY 559 -#define POSITION 560 -#define PRAGMA_P 561 -#define PRECEDING 562 -#define PRECISION 563 -#define PREPARE 564 -#define PREPARED 565 -#define PRESERVE 566 -#define PRIMARY 567 -#define PRIOR 568 -#define PRIVILEGES 569 -#define PROCEDURAL 570 -#define PROCEDURE 571 -#define PROGRAM 572 -#define PUBLICATION 573 -#define QUOTE 574 -#define RANGE 575 -#define READ_P 576 -#define REAL 577 -#define REASSIGN 578 -#define RECHECK 579 -#define RECURSIVE 580 -#define REF 581 -#define REFERENCES 582 -#define REFERENCING 583 -#define REFRESH 584 -#define REINDEX 585 -#define RELATIVE_P 586 -#define RELEASE 587 -#define RENAME 588 -#define REPEATABLE 589 -#define REPLACE 590 -#define REPLICA 591 -#define RESET 592 -#define RESTART 593 -#define RESTRICT 594 -#define RETURNING 595 -#define RETURNS 596 -#define REVOKE 597 -#define RIGHT 598 -#define ROLE 599 -#define ROLLBACK 600 -#define ROLLUP 601 -#define ROW 602 -#define ROWS 603 -#define RULE 604 -#define SAMPLE 605 -#define SAVEPOINT 606 -#define SCHEMA 607 -#define SCHEMAS 608 -#define SCROLL 609 -#define SEARCH 610 -#define SECOND_P 611 -#define SECONDS_P 612 -#define SECURITY 613 -#define SELECT 614 -#define SEQUENCE 615 -#define SEQUENCES 616 -#define SERIALIZABLE 617 -#define SERVER 618 -#define SESSION 619 -#define SESSION_USER 620 -#define SET 621 -#define SETOF 622 -#define SETS 623 -#define SHARE 624 -#define SHOW 625 -#define SIMILAR 626 -#define SIMPLE 627 -#define SKIP 628 -#define SMALLINT 629 -#define SNAPSHOT 630 -#define SOME 631 -#define SQL_P 632 -#define STABLE 633 -#define STANDALONE_P 634 -#define START 635 -#define STATEMENT 636 -#define STATISTICS 637 -#define STDIN 638 -#define STDOUT 639 -#define STORAGE 640 -#define STRICT_P 641 -#define STRIP_P 642 -#define STRUCT 643 -#define SUBSCRIPTION 644 -#define SUBSTRING 645 -#define SYMMETRIC 646 -#define SYSID 647 -#define SYSTEM_P 648 -#define TABLE 649 -#define TABLES 650 -#define TABLESAMPLE 651 -#define TABLESPACE 652 -#define TEMP 653 -#define TEMPLATE 654 -#define TEMPORARY 655 -#define TEXT_P 656 -#define THEN 657 -#define TIME 658 -#define TIMESTAMP 659 -#define TO 660 -#define TRAILING 661 -#define TRANSACTION 662 -#define TRANSFORM 663 -#define TREAT 664 -#define TRIGGER 665 -#define TRIM 666 -#define TRUE_P 667 -#define TRUNCATE 668 -#define TRUSTED 669 -#define TRY_CAST 670 -#define TYPE_P 671 -#define TYPES_P 672 -#define UNBOUNDED 673 -#define UNCOMMITTED 674 -#define UNENCRYPTED 675 -#define UNION 676 -#define UNIQUE 677 -#define UNKNOWN 678 -#define UNLISTEN 679 -#define UNLOGGED 680 -#define UNTIL 681 -#define UPDATE 682 -#define USER 683 -#define USING 684 -#define VACUUM 685 -#define VALID 686 -#define VALIDATE 687 -#define VALIDATOR 688 -#define VALUE_P 689 -#define VALUES 690 -#define VARCHAR 691 -#define VARIADIC 692 -#define VARYING 693 -#define VERBOSE 694 -#define VERSION_P 695 -#define VIEW 696 -#define VIEWS 697 -#define VOLATILE 698 -#define WHEN 699 -#define WHERE 700 -#define WHITESPACE_P 701 -#define WINDOW 702 -#define WITH 703 -#define WITHIN 704 -#define WITHOUT 705 -#define WORK 706 -#define WRAPPER 707 -#define WRITE_P 708 -#define XML_P 709 -#define XMLATTRIBUTES 710 -#define XMLCONCAT 711 -#define XMLELEMENT 712 -#define XMLEXISTS 713 -#define XMLFOREST 714 -#define XMLNAMESPACES 715 -#define XMLPARSE 716 -#define XMLPI 717 -#define XMLROOT 718 -#define XMLSERIALIZE 719 -#define XMLTABLE 720 -#define YEAR_P 721 -#define YEARS_P 722 -#define YES_P 723 -#define ZONE 724 -#define NOT_LA 725 -#define NULLS_LA 726 -#define WITH_LA 727 -#define POSTFIXOP 728 -#define UMINUS 729 - - - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 14 "third_party/libpg_query/grammar/grammar.y" +union YYSTYPE { +#line 14 "third_party/libpg_query/grammar/grammar.y" + core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; @@ -207998,32 +207224,35 @@ typedef union YYSTYPE PGLockWaitPolicy lockwaitpolicy; PGSubLinkType subquerytype; PGViewCheckOption viewcheckoption; -} -/* Line 1529 of yacc.c. */ -#line 1040 "third_party/libpg_query/grammar/grammar_out.hpp" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif +#line 576 "third_party/libpg_query/grammar/grammar_out.hpp" +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif +/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE +typedef struct YYLTYPE YYLTYPE; +struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -} YYLTYPE; -# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +}; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif +int base_yyparse (core_yyscan_t yyscanner); + +#endif /* !YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED */ + // LICENSE_CHANGE_END @@ -208442,11 +207671,28 @@ static void processCASbits(int cas_bits, int location, const char *constrType, static PGNode *makeRecursiveViewSelect(char *relname, PGList *aliases, PGNode *query); +#line 240 "third_party/libpg_query/grammar/grammar_out.cpp" -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# ifndef YY_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# else +# define YY_NULLPTR ((void*)0) +# endif +# endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE @@ -208456,15 +207702,505 @@ static PGNode *makeRecursiveViewSelect(char *relname, PGList *aliases, PGNode *q # define YYERROR_VERBOSE 0 #endif -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 +/* Use api.header.include to #include this header + instead of duplicating it here. */ +#ifndef YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED +# define YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int base_yydebug; #endif +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + IDENT = 258, + FCONST = 259, + SCONST = 260, + BCONST = 261, + XCONST = 262, + Op = 263, + ICONST = 264, + PARAM = 265, + TYPECAST = 266, + DOT_DOT = 267, + COLON_EQUALS = 268, + EQUALS_GREATER = 269, + LAMBDA_ARROW = 270, + LESS_EQUALS = 271, + GREATER_EQUALS = 272, + NOT_EQUALS = 273, + ABORT_P = 274, + ABSOLUTE_P = 275, + ACCESS = 276, + ACTION = 277, + ADD_P = 278, + ADMIN = 279, + AFTER = 280, + AGGREGATE = 281, + ALL = 282, + ALSO = 283, + ALTER = 284, + ALWAYS = 285, + ANALYSE = 286, + ANALYZE = 287, + AND = 288, + ANY = 289, + ARRAY = 290, + AS = 291, + ASC_P = 292, + ASSERTION = 293, + ASSIGNMENT = 294, + ASYMMETRIC = 295, + AT = 296, + ATTACH = 297, + ATTRIBUTE = 298, + AUTHORIZATION = 299, + BACKWARD = 300, + BEFORE = 301, + BEGIN_P = 302, + BETWEEN = 303, + BIGINT = 304, + BINARY = 305, + BIT = 306, + BOOLEAN_P = 307, + BOTH = 308, + BY = 309, + CACHE = 310, + CALL_P = 311, + CALLED = 312, + CASCADE = 313, + CASCADED = 314, + CASE = 315, + CAST = 316, + CATALOG_P = 317, + CHAIN = 318, + CHAR_P = 319, + CHARACTER = 320, + CHARACTERISTICS = 321, + CHECK_P = 322, + CHECKPOINT = 323, + CLASS = 324, + CLOSE = 325, + CLUSTER = 326, + COALESCE = 327, + COLLATE = 328, + COLLATION = 329, + COLUMN = 330, + COLUMNS = 331, + COMMENT = 332, + COMMENTS = 333, + COMMIT = 334, + COMMITTED = 335, + CONCURRENTLY = 336, + CONFIGURATION = 337, + CONFLICT = 338, + CONNECTION = 339, + CONSTRAINT = 340, + CONSTRAINTS = 341, + CONTENT_P = 342, + CONTINUE_P = 343, + CONVERSION_P = 344, + COPY = 345, + COST = 346, + CREATE_P = 347, + CROSS = 348, + CSV = 349, + CUBE = 350, + CURRENT_P = 351, + CURRENT_CATALOG = 352, + CURRENT_DATE = 353, + CURRENT_ROLE = 354, + CURRENT_SCHEMA = 355, + CURRENT_TIME = 356, + CURRENT_TIMESTAMP = 357, + CURRENT_USER = 358, + CURSOR = 359, + CYCLE = 360, + DATA_P = 361, + DATABASE = 362, + DAY_P = 363, + DAYS_P = 364, + DEALLOCATE = 365, + DEC = 366, + DECIMAL_P = 367, + DECLARE = 368, + DEFAULT = 369, + DEFAULTS = 370, + DEFERRABLE = 371, + DEFERRED = 372, + DEFINER = 373, + DELETE_P = 374, + DELIMITER = 375, + DELIMITERS = 376, + DEPENDS = 377, + DESC_P = 378, + DESCRIBE = 379, + DETACH = 380, + DICTIONARY = 381, + DISABLE_P = 382, + DISCARD = 383, + DISTINCT = 384, + DO = 385, + DOCUMENT_P = 386, + DOMAIN_P = 387, + DOUBLE_P = 388, + DROP = 389, + EACH = 390, + ELSE = 391, + ENABLE_P = 392, + ENCODING = 393, + ENCRYPTED = 394, + END_P = 395, + ENUM_P = 396, + ESCAPE = 397, + EVENT = 398, + EXCEPT = 399, + EXCLUDE = 400, + EXCLUDING = 401, + EXCLUSIVE = 402, + EXECUTE = 403, + EXISTS = 404, + EXPLAIN = 405, + EXPORT_P = 406, + EXTENSION = 407, + EXTERNAL = 408, + EXTRACT = 409, + FALSE_P = 410, + FAMILY = 411, + FETCH = 412, + FILTER = 413, + FIRST_P = 414, + FLOAT_P = 415, + FOLLOWING = 416, + FOR = 417, + FORCE = 418, + FOREIGN = 419, + FORWARD = 420, + FREEZE = 421, + FROM = 422, + FULL = 423, + FUNCTION = 424, + FUNCTIONS = 425, + GENERATED = 426, + GLOB = 427, + GLOBAL = 428, + GRANT = 429, + GRANTED = 430, + GROUP_P = 431, + GROUPING = 432, + HANDLER = 433, + HAVING = 434, + HEADER_P = 435, + HOLD = 436, + HOUR_P = 437, + HOURS_P = 438, + IDENTITY_P = 439, + IF_P = 440, + ILIKE = 441, + IMMEDIATE = 442, + IMMUTABLE = 443, + IMPLICIT_P = 444, + IMPORT_P = 445, + IN_P = 446, + INCLUDING = 447, + INCREMENT = 448, + INDEX = 449, + INDEXES = 450, + INHERIT = 451, + INHERITS = 452, + INITIALLY = 453, + INLINE_P = 454, + INNER_P = 455, + INOUT = 456, + INPUT_P = 457, + INSENSITIVE = 458, + INSERT = 459, + INSTEAD = 460, + INT_P = 461, + INTEGER = 462, + INTERSECT = 463, + INTERVAL = 464, + INTO = 465, + INVOKER = 466, + IS = 467, + ISNULL = 468, + ISOLATION = 469, + JOIN = 470, + KEY = 471, + LABEL = 472, + LANGUAGE = 473, + LARGE_P = 474, + LAST_P = 475, + LATERAL_P = 476, + LEADING = 477, + LEAKPROOF = 478, + LEFT = 479, + LEVEL = 480, + LIKE = 481, + LIMIT = 482, + LISTEN = 483, + LOAD = 484, + LOCAL = 485, + LOCALTIME = 486, + LOCALTIMESTAMP = 487, + LOCATION = 488, + LOCK_P = 489, + LOCKED = 490, + LOGGED = 491, + MACRO = 492, + MAP = 493, + MAPPING = 494, + MATCH = 495, + MATERIALIZED = 496, + MAXVALUE = 497, + METHOD = 498, + MICROSECOND_P = 499, + MICROSECONDS_P = 500, + MILLISECOND_P = 501, + MILLISECONDS_P = 502, + MINUTE_P = 503, + MINUTES_P = 504, + MINVALUE = 505, + MODE = 506, + MONTH_P = 507, + MONTHS_P = 508, + MOVE = 509, + NAME_P = 510, + NAMES = 511, + NATIONAL = 512, + NATURAL = 513, + NCHAR = 514, + NEW = 515, + NEXT = 516, + NO = 517, + NONE = 518, + NOT = 519, + NOTHING = 520, + NOTIFY = 521, + NOTNULL = 522, + NOWAIT = 523, + NULL_P = 524, + NULLIF = 525, + NULLS_P = 526, + NUMERIC = 527, + OBJECT_P = 528, + OF = 529, + OFF = 530, + OFFSET = 531, + OIDS = 532, + OLD = 533, + ON = 534, + ONLY = 535, + OPERATOR = 536, + OPTION = 537, + OPTIONS = 538, + OR = 539, + ORDER = 540, + ORDINALITY = 541, + OUT_P = 542, + OUTER_P = 543, + OVER = 544, + OVERLAPS = 545, + OVERLAY = 546, + OVERRIDING = 547, + OWNED = 548, + OWNER = 549, + PARALLEL = 550, + PARSER = 551, + PARTIAL = 552, + PARTITION = 553, + PASSING = 554, + PASSWORD = 555, + PERCENT = 556, + PLACING = 557, + PLANS = 558, + POLICY = 559, + POSITION = 560, + PRAGMA_P = 561, + PRECEDING = 562, + PRECISION = 563, + PREPARE = 564, + PREPARED = 565, + PRESERVE = 566, + PRIMARY = 567, + PRIOR = 568, + PRIVILEGES = 569, + PROCEDURAL = 570, + PROCEDURE = 571, + PROGRAM = 572, + PUBLICATION = 573, + QUOTE = 574, + RANGE = 575, + READ_P = 576, + REAL = 577, + REASSIGN = 578, + RECHECK = 579, + RECURSIVE = 580, + REF = 581, + REFERENCES = 582, + REFERENCING = 583, + REFRESH = 584, + REINDEX = 585, + RELATIVE_P = 586, + RELEASE = 587, + RENAME = 588, + REPEATABLE = 589, + REPLACE = 590, + REPLICA = 591, + RESET = 592, + RESTART = 593, + RESTRICT = 594, + RETURNING = 595, + RETURNS = 596, + REVOKE = 597, + RIGHT = 598, + ROLE = 599, + ROLLBACK = 600, + ROLLUP = 601, + ROW = 602, + ROWS = 603, + RULE = 604, + SAMPLE = 605, + SAVEPOINT = 606, + SCHEMA = 607, + SCHEMAS = 608, + SCROLL = 609, + SEARCH = 610, + SECOND_P = 611, + SECONDS_P = 612, + SECURITY = 613, + SELECT = 614, + SEQUENCE = 615, + SEQUENCES = 616, + SERIALIZABLE = 617, + SERVER = 618, + SESSION = 619, + SESSION_USER = 620, + SET = 621, + SETOF = 622, + SETS = 623, + SHARE = 624, + SHOW = 625, + SIMILAR = 626, + SIMPLE = 627, + SKIP = 628, + SMALLINT = 629, + SNAPSHOT = 630, + SOME = 631, + SQL_P = 632, + STABLE = 633, + STANDALONE_P = 634, + START = 635, + STATEMENT = 636, + STATISTICS = 637, + STDIN = 638, + STDOUT = 639, + STORAGE = 640, + STRICT_P = 641, + STRIP_P = 642, + STRUCT = 643, + SUBSCRIPTION = 644, + SUBSTRING = 645, + SUMMARIZE = 646, + SYMMETRIC = 647, + SYSID = 648, + SYSTEM_P = 649, + TABLE = 650, + TABLES = 651, + TABLESAMPLE = 652, + TABLESPACE = 653, + TEMP = 654, + TEMPLATE = 655, + TEMPORARY = 656, + TEXT_P = 657, + THEN = 658, + TIME = 659, + TIMESTAMP = 660, + TO = 661, + TRAILING = 662, + TRANSACTION = 663, + TRANSFORM = 664, + TREAT = 665, + TRIGGER = 666, + TRIM = 667, + TRUE_P = 668, + TRUNCATE = 669, + TRUSTED = 670, + TRY_CAST = 671, + TYPE_P = 672, + TYPES_P = 673, + UNBOUNDED = 674, + UNCOMMITTED = 675, + UNENCRYPTED = 676, + UNION = 677, + UNIQUE = 678, + UNKNOWN = 679, + UNLISTEN = 680, + UNLOGGED = 681, + UNTIL = 682, + UPDATE = 683, + USER = 684, + USING = 685, + VACUUM = 686, + VALID = 687, + VALIDATE = 688, + VALIDATOR = 689, + VALUE_P = 690, + VALUES = 691, + VARCHAR = 692, + VARIADIC = 693, + VARYING = 694, + VERBOSE = 695, + VERSION_P = 696, + VIEW = 697, + VIEWS = 698, + VOLATILE = 699, + WHEN = 700, + WHERE = 701, + WHITESPACE_P = 702, + WINDOW = 703, + WITH = 704, + WITHIN = 705, + WITHOUT = 706, + WORK = 707, + WRAPPER = 708, + WRITE_P = 709, + XML_P = 710, + XMLATTRIBUTES = 711, + XMLCONCAT = 712, + XMLELEMENT = 713, + XMLEXISTS = 714, + XMLFOREST = 715, + XMLNAMESPACES = 716, + XMLPARSE = 717, + XMLPI = 718, + XMLROOT = 719, + XMLSERIALIZE = 720, + XMLTABLE = 721, + YEAR_P = 722, + YEARS_P = 723, + YES_P = 724, + ZONE = 725, + NOT_LA = 726, + NULLS_LA = 727, + WITH_LA = 728, + POSTFIXOP = 729, + UMINUS = 730 + }; +#endif + +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 14 "third_party/libpg_query/grammar/grammar.y" +union YYSTYPE { +#line 14 "third_party/libpg_query/grammar/grammar.y" + core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; @@ -208505,64 +208241,110 @@ typedef union YYSTYPE PGLockWaitPolicy lockwaitpolicy; PGSubLinkType subquerytype; PGViewCheckOption viewcheckoption; -} -/* Line 193 of yacc.c. */ -#line 1260 "third_party/libpg_query/grammar/grammar_out.cpp" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 + +#line 811 "third_party/libpg_query/grammar/grammar_out.cpp" + +}; +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 #endif +/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE +typedef struct YYLTYPE YYLTYPE; +struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -} YYLTYPE; -# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +}; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif -/* Copy the second part of user declarations. */ + +int base_yyparse (core_yyscan_t yyscanner); + +#endif /* !YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED */ -/* Line 216 of yacc.c. */ -#line 1285 "third_party/libpg_query/grammar/grammar_out.cpp" #ifdef short # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; +#else typedef signed char yytype_int8; +#endif + +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else -typedef short int yytype_int8; +typedef short yytype_int16; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; #else -typedef unsigned short int yytype_uint16; +typedef short yytype_uint8; #endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; #else -typedef short int yytype_int16; +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif #endif #ifndef YYSIZE_T @@ -208570,54 +208352,97 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T unsigned # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + +/* Stored state numbers (used for stacks). */ +typedef yytype_int16 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ -# define YY_(msgid) msgid +# define YY_(Msgid) Msgid +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(e) ((void) (e)) +# define YYUSE(E) ((void) (E)) #else -# define YYUSE(e) /* empty */ +# define YYUSE(E) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(n) (n) +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int i) -#else -static int -YYID (i) - int i; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return i; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END #endif + +#define YY_ASSERT(E) ((void) (0 && (E))) + #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -208635,11 +208460,11 @@ YYID (i) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # endif @@ -208647,8 +208472,8 @@ YYID (i) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -208662,25 +208487,23 @@ YYID (i) # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined _STDLIB_H \ +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -208690,99 +208513,107 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ - && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss; - YYSTYPE yyvs; - YYLTYPE yyls; + yy_state_t yyss_alloc; + YYSTYPE yyvs_alloc; + YYLTYPE yyls_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \ + + YYSIZEOF (YYLTYPE)) \ + 2 * YYSTACK_GAP_MAXIMUM) -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif +# define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYPTRDIFF_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + } \ + while (0) #endif +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYPTRDIFF_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 578 +#define YYFINAL 584 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 49293 +#define YYLAST 49693 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 496 +#define YYNTOKENS 497 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 369 /* YYNRULES -- Number of rules. */ -#define YYNRULES 1751 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 2868 +#define YYNRULES 1755 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 2874 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 729 +#define YYMAXUTOK 730 -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint16 yytranslate[] = +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex. */ +static const yytype_int16 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, 493, 2, 481, 2, 2, - 486, 487, 479, 477, 490, 478, 488, 480, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 495, 489, - 473, 475, 474, 494, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 494, 2, 482, 2, 2, + 487, 488, 480, 478, 491, 479, 489, 481, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 496, 490, + 474, 476, 475, 495, 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, 484, 2, 485, 482, 2, 2, 2, 2, 2, + 2, 485, 2, 486, 483, 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, 491, 2, 492, 2, 2, 2, 2, + 2, 2, 2, 492, 2, 493, 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, @@ -208842,852 +208673,182 @@ static const yytype_uint16 yytranslate[] = 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, 476, 483 + 465, 466, 467, 468, 469, 470, 471, 472, 473, 477, + 484 }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 5, 9, 11, 13, 15, 17, 19, - 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, - 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, - 61, 63, 65, 67, 69, 71, 73, 75, 77, 78, - 83, 90, 95, 102, 107, 114, 119, 126, 128, 131, - 135, 138, 140, 144, 147, 151, 153, 157, 160, 166, - 170, 177, 182, 189, 196, 203, 209, 215, 222, 232, - 237, 243, 251, 258, 263, 272, 277, 280, 285, 289, - 296, 301, 304, 307, 310, 313, 315, 318, 319, 321, - 324, 327, 330, 332, 336, 341, 344, 346, 347, 350, - 354, 357, 361, 368, 375, 384, 391, 400, 407, 416, - 423, 432, 441, 452, 461, 472, 474, 475, 483, 485, - 490, 495, 503, 506, 508, 512, 517, 521, 522, 524, - 525, 528, 532, 538, 547, 553, 554, 560, 566, 574, - 577, 578, 580, 582, 584, 588, 591, 592, 594, 595, - 597, 601, 603, 607, 609, 613, 616, 619, 624, 630, - 636, 645, 647, 648, 652, 662, 675, 679, 680, 685, - 692, 694, 697, 699, 701, 702, 704, 707, 710, 712, - 715, 718, 720, 723, 727, 730, 733, 736, 739, 743, - 747, 751, 753, 757, 759, 760, 762, 765, 768, 771, - 774, 777, 780, 783, 786, 788, 790, 791, 801, 814, - 815, 818, 820, 822, 824, 826, 828, 830, 834, 835, - 837, 840, 842, 844, 847, 850, 854, 856, 858, 861, - 864, 866, 869, 873, 879, 882, 888, 894, 897, 901, - 903, 905, 908, 911, 912, 917, 918, 922, 927, 932, - 933, 937, 940, 941, 945, 947, 949, 951, 953, 955, - 957, 959, 961, 963, 965, 969, 973, 975, 978, 981, - 984, 987, 990, 993, 994, 998, 1002, 1006, 1007, 1009, - 1012, 1014, 1017, 1020, 1023, 1026, 1031, 1033, 1037, 1039, - 1043, 1045, 1047, 1049, 1051, 1055, 1057, 1060, 1061, 1063, - 1064, 1066, 1070, 1071, 1074, 1075, 1079, 1083, 1085, 1091, - 1095, 1097, 1101, 1103, 1108, 1114, 1120, 1127, 1131, 1139, - 1144, 1156, 1158, 1162, 1165, 1168, 1171, 1172, 1176, 1178, - 1180, 1183, 1186, 1189, 1192, 1194, 1195, 1197, 1200, 1207, - 1212, 1219, 1224, 1231, 1240, 1242, 1244, 1246, 1248, 1250, - 1253, 1255, 1258, 1260, 1262, 1264, 1268, 1272, 1276, 1280, - 1283, 1286, 1288, 1292, 1294, 1296, 1298, 1300, 1304, 1306, - 1308, 1309, 1311, 1313, 1315, 1322, 1324, 1326, 1329, 1333, - 1342, 1354, 1364, 1366, 1368, 1372, 1373, 1375, 1379, 1381, - 1382, 1384, 1385, 1387, 1388, 1390, 1394, 1396, 1398, 1400, - 1404, 1405, 1408, 1411, 1412, 1415, 1416, 1418, 1419, 1421, - 1423, 1425, 1429, 1433, 1435, 1437, 1441, 1445, 1449, 1453, - 1458, 1462, 1465, 1467, 1469, 1471, 1473, 1475, 1479, 1481, - 1483, 1487, 1491, 1493, 1496, 1501, 1506, 1509, 1513, 1519, - 1525, 1527, 1529, 1540, 1551, 1553, 1556, 1561, 1566, 1571, - 1574, 1577, 1581, 1583, 1587, 1594, 1597, 1598, 1602, 1606, - 1611, 1616, 1621, 1626, 1630, 1633, 1635, 1637, 1638, 1640, - 1642, 1643, 1645, 1651, 1653, 1654, 1656, 1657, 1661, 1663, - 1667, 1672, 1676, 1678, 1680, 1681, 1684, 1687, 1688, 1691, - 1694, 1696, 1698, 1700, 1701, 1704, 1709, 1715, 1720, 1723, - 1727, 1730, 1733, 1736, 1739, 1741, 1744, 1748, 1749, 1751, - 1752, 1758, 1760, 1765, 1772, 1775, 1777, 1778, 1783, 1784, - 1786, 1788, 1790, 1792, 1795, 1798, 1800, 1802, 1804, 1806, - 1808, 1810, 1814, 1815, 1817, 1821, 1823, 1825, 1828, 1831, - 1832, 1834, 1838, 1840, 1841, 1843, 1846, 1850, 1853, 1858, - 1861, 1865, 1868, 1869, 1871, 1874, 1875, 1880, 1886, 1889, - 1890, 1892, 1896, 1900, 1904, 1908, 1912, 1916, 1918, 1923, - 1927, 1932, 1938, 1943, 1949, 1954, 1960, 1963, 1968, 1970, - 1972, 1973, 1975, 1980, 1986, 1991, 1992, 1995, 1998, 2001, - 2003, 2005, 2006, 2011, 2014, 2016, 2019, 2022, 2027, 2030, - 2037, 2040, 2042, 2046, 2051, 2052, 2055, 2056, 2059, 2060, - 2062, 2066, 2070, 2073, 2074, 2077, 2082, 2084, 2086, 2089, - 2093, 2099, 2106, 2109, 2113, 2119, 2125, 2129, 2134, 2135, - 2137, 2139, 2141, 2143, 2145, 2148, 2153, 2155, 2157, 2159, - 2161, 2164, 2168, 2169, 2171, 2173, 2175, 2177, 2179, 2182, - 2185, 2188, 2191, 2194, 2196, 2200, 2201, 2203, 2205, 2207, - 2209, 2215, 2218, 2220, 2222, 2224, 2226, 2231, 2233, 2236, - 2239, 2241, 2245, 2249, 2252, 2254, 2255, 2261, 2264, 2270, - 2273, 2275, 2279, 2283, 2284, 2286, 2288, 2290, 2292, 2294, - 2296, 2298, 2300, 2302, 2304, 2306, 2308, 2310, 2312, 2314, - 2316, 2318, 2320, 2322, 2324, 2326, 2328, 2330, 2332, 2336, - 2340, 2344, 2348, 2352, 2356, 2360, 2361, 2363, 2367, 2371, - 2377, 2380, 2383, 2387, 2391, 2395, 2399, 2403, 2407, 2411, - 2415, 2419, 2423, 2427, 2431, 2435, 2438, 2441, 2445, 2449, - 2452, 2455, 2459, 2463, 2469, 2474, 2481, 2485, 2491, 2496, - 2503, 2508, 2515, 2521, 2529, 2533, 2536, 2541, 2545, 2548, - 2550, 2554, 2558, 2562, 2566, 2570, 2574, 2579, 2583, 2588, - 2592, 2597, 2603, 2610, 2617, 2625, 2632, 2640, 2647, 2655, - 2659, 2664, 2669, 2676, 2678, 2683, 2685, 2689, 2692, 2695, - 2699, 2703, 2707, 2711, 2715, 2719, 2723, 2727, 2731, 2735, - 2739, 2743, 2747, 2750, 2753, 2759, 2766, 2773, 2781, 2783, - 2785, 2788, 2791, 2794, 2799, 2801, 2804, 2806, 2809, 2812, - 2816, 2822, 2829, 2838, 2845, 2852, 2857, 2862, 2864, 2866, - 2868, 2874, 2876, 2878, 2883, 2885, 2890, 2892, 2897, 2899, - 2904, 2906, 2908, 2910, 2912, 2914, 2916, 2923, 2930, 2935, - 2940, 2945, 2950, 2957, 2963, 2969, 2975, 2980, 2987, 2992, - 2998, 2999, 3005, 3006, 3009, 3010, 3012, 3016, 3020, 3023, - 3026, 3027, 3034, 3036, 3037, 3041, 3042, 3045, 3048, 3049, - 3051, 3056, 3059, 3062, 3065, 3068, 3071, 3076, 3080, 3082, - 3088, 3092, 3094, 3098, 3100, 3102, 3104, 3106, 3108, 3110, - 3112, 3114, 3116, 3118, 3120, 3122, 3124, 3126, 3128, 3130, - 3132, 3134, 3139, 3141, 3146, 3148, 3153, 3155, 3158, 3160, - 3163, 3165, 3168, 3170, 3174, 3176, 3180, 3182, 3183, 3185, - 3189, 3191, 3195, 3199, 3201, 3205, 3209, 3210, 3212, 3214, - 3216, 3218, 3220, 3222, 3224, 3226, 3228, 3230, 3235, 3239, - 3242, 3246, 3247, 3251, 3255, 3258, 3261, 3263, 3264, 3267, - 3270, 3274, 3277, 3279, 3281, 3285, 3291, 3293, 3296, 3301, - 3304, 3305, 3307, 3308, 3310, 3313, 3316, 3319, 3323, 3329, - 3331, 3332, 3334, 3337, 3338, 3341, 3343, 3344, 3346, 3347, - 3349, 3353, 3357, 3360, 3362, 3364, 3366, 3370, 3372, 3375, - 3377, 3381, 3383, 3385, 3387, 3390, 3392, 3394, 3397, 3399, - 3401, 3404, 3411, 3414, 3420, 3424, 3428, 3430, 3432, 3434, - 3436, 3438, 3440, 3442, 3444, 3446, 3448, 3450, 3452, 3454, - 3456, 3458, 3460, 3462, 3464, 3466, 3468, 3471, 3474, 3478, - 3482, 3483, 3485, 3487, 3489, 3491, 3493, 3495, 3497, 3503, - 3507, 3508, 3510, 3512, 3514, 3516, 3521, 3529, 3532, 3533, - 3535, 3537, 3539, 3541, 3555, 3572, 3574, 3577, 3578, 3580, - 3581, 3583, 3584, 3587, 3588, 3590, 3591, 3598, 3607, 3614, - 3623, 3630, 3639, 3642, 3644, 3649, 3653, 3656, 3661, 3665, - 3671, 3673, 3674, 3676, 3678, 3679, 3681, 3683, 3685, 3687, - 3689, 3691, 3693, 3695, 3697, 3699, 3701, 3705, 3707, 3709, - 3711, 3713, 3715, 3717, 3720, 3722, 3724, 3727, 3731, 3735, - 3737, 3741, 3745, 3748, 3752, 3756, 3760, 3764, 3766, 3768, - 3770, 3772, 3776, 3782, 3784, 3786, 3788, 3790, 3794, 3797, - 3799, 3804, 3810, 3816, 3821, 3828, 3830, 3832, 3834, 3836, - 3838, 3840, 3841, 3843, 3847, 3849, 3850, 3858, 3860, 3863, - 3867, 3870, 3871, 3874, 3875, 3878, 3883, 3886, 3888, 3890, - 3892, 3895, 3899, 3902, 3905, 3909, 3914, 3917, 3919, 3921, - 3923, 3927, 3930, 3940, 3952, 3965, 3980, 3984, 3989, 3994, - 3995, 4003, 4014, 4017, 4021, 4022, 4027, 4029, 4031, 4033, - 4035, 4037, 4039, 4041, 4043, 4045, 4047, 4049, 4051, 4053, - 4055, 4057, 4059, 4061, 4063, 4065, 4067, 4069, 4071, 4073, - 4075, 4077, 4079, 4081, 4083, 4085, 4087, 4089, 4091, 4093, - 4095, 4097, 4099, 4101, 4103, 4105, 4107, 4109, 4111, 4113, - 4115, 4117, 4119, 4121, 4123, 4125, 4127, 4129, 4131, 4133, - 4135, 4137, 4139, 4141, 4143, 4145, 4147, 4149, 4151, 4153, - 4155, 4157, 4159, 4161, 4163, 4165, 4167, 4169, 4171, 4173, - 4175, 4177, 4179, 4181, 4183, 4185, 4187, 4189, 4191, 4193, - 4195, 4197, 4199, 4201, 4203, 4205, 4207, 4209, 4211, 4213, - 4215, 4217, 4219, 4221, 4223, 4225, 4227, 4229, 4231, 4233, - 4235, 4237, 4239, 4241, 4243, 4245, 4247, 4249, 4251, 4253, - 4255, 4257, 4259, 4261, 4263, 4265, 4267, 4269, 4271, 4273, - 4275, 4277, 4279, 4281, 4283, 4285, 4287, 4289, 4291, 4293, - 4295, 4297, 4299, 4301, 4303, 4305, 4307, 4309, 4311, 4313, - 4315, 4317, 4319, 4321, 4323, 4325, 4327, 4329, 4331, 4333, - 4335, 4337, 4339, 4341, 4343, 4345, 4347, 4349, 4351, 4353, - 4355, 4357, 4359, 4361, 4363, 4365, 4367, 4369, 4371, 4373, - 4375, 4377, 4379, 4381, 4383, 4385, 4387, 4389, 4391, 4393, - 4395, 4397, 4399, 4401, 4403, 4405, 4407, 4409, 4411, 4413, - 4415, 4417, 4419, 4421, 4423, 4425, 4427, 4429, 4431, 4433, - 4435, 4437, 4439, 4441, 4443, 4445, 4447, 4449, 4451, 4453, - 4455, 4457, 4459, 4461, 4463, 4465, 4467, 4469, 4471, 4473, - 4475, 4477, 4479, 4481, 4483, 4485, 4487, 4489, 4491, 4493, - 4495, 4497, 4499, 4501, 4503, 4505, 4507, 4509, 4511, 4513, - 4515, 4517, 4519, 4521, 4523, 4525, 4527, 4529, 4531, 4533, - 4535, 4537, 4539, 4541, 4543, 4545, 4547, 4549, 4551, 4553, - 4555, 4557, 4559, 4561, 4563, 4565, 4567, 4569, 4571, 4573, - 4575, 4577, 4579, 4581, 4583, 4585, 4587, 4589, 4591, 4593, - 4595, 4597, 4599, 4601, 4603, 4605, 4607, 4609, 4611, 4613, - 4615, 4617, 4619, 4621, 4623, 4625, 4627, 4629, 4631, 4633, - 4635, 4637, 4639, 4641, 4643, 4645, 4647, 4649, 4651, 4653, - 4655, 4657, 4659, 4661, 4663, 4665, 4667, 4669, 4671, 4673, - 4675, 4677, 4679, 4681, 4683, 4685, 4687, 4689, 4691, 4693, - 4695, 4697, 4699, 4701, 4703, 4705, 4707, 4709, 4711, 4713, - 4715, 4717, 4719, 4721, 4723, 4725, 4727, 4729, 4731, 4733, - 4735, 4737, 4739, 4741, 4743, 4745, 4747, 4749, 4751, 4753, - 4755, 4757, 4759, 4761, 4763, 4765, 4767, 4769, 4771, 4773, - 4775, 4777, 4779, 4781, 4783, 4785, 4787, 4789, 4791, 4793, - 4795, 4797, 4799, 4801, 4803, 4805, 4807, 4809, 4811, 4813, - 4815, 4817, 4819, 4821, 4823, 4825, 4827, 4829, 4831, 4833, - 4835, 4837, 4839, 4841, 4843, 4845, 4847, 4849, 4851, 4853, - 4855, 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, 4933, - 4935, 4937, 4939, 4941, 4943, 4945, 4947, 4949, 4951, 4953, - 4955, 4957, 4959, 4961, 4963, 4965, 4967, 4969, 4971, 4973, - 4975, 4977, 4979, 4981, 4983, 4985, 4987, 4989, 4991, 4993, - 4995, 4997, 4999, 5001, 5003, 5005, 5007, 5009, 5011, 5013, - 5015, 5017, 5019, 5021, 5023, 5025, 5027, 5029, 5031, 5033, - 5035, 5037, 5039, 5041, 5043, 5045, 5047, 5049, 5051, 5053, - 5055, 5057, 5059, 5061, 5063, 5065, 5067, 5069, 5071, 5073, - 5075, 5077, 5079, 5081, 5083, 5085, 5087, 5089, 5091, 5093, - 5095, 5097, 5099, 5101, 5103, 5105, 5107, 5109, 5111, 5113, - 5115, 5117, 5119, 5121, 5123, 5125, 5127, 5129, 5131, 5133, - 5135, 5137 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int16 yyrhs[] = -{ - 497, 0, -1, 498, -1, 498, 489, 499, -1, 499, - -1, 813, -1, 537, -1, 500, -1, 845, -1, 852, - -1, 814, -1, 602, -1, 855, -1, 598, -1, 803, - -1, 533, -1, 546, -1, 511, -1, 841, -1, 592, - -1, 535, -1, 817, -1, 815, -1, 816, -1, 806, - -1, 514, -1, 834, -1, 532, -1, 800, -1, 512, - -1, 619, -1, 544, -1, 601, -1, 836, -1, 846, - -1, 828, -1, 849, -1, 853, -1, -1, 29, 394, - 679, 508, -1, 29, 394, 185, 149, 679, 508, -1, - 29, 194, 781, 508, -1, 29, 194, 185, 149, 781, - 508, -1, 29, 360, 781, 508, -1, 29, 360, 185, - 149, 781, 508, -1, 29, 441, 781, 508, -1, 29, - 441, 185, 149, 781, 508, -1, 503, -1, 501, 503, - -1, 366, 114, 721, -1, 134, 114, -1, 338, -1, - 338, 539, 540, -1, 366, 541, -1, 366, 171, 591, - -1, 507, -1, 504, 490, 507, -1, 23, 571, -1, - 23, 185, 264, 149, 571, -1, 23, 75, 571, -1, - 23, 75, 185, 264, 149, 571, -1, 29, 513, 789, - 502, -1, 29, 513, 789, 134, 264, 269, -1, 29, - 513, 789, 366, 264, 269, -1, 29, 513, 789, 366, - 382, 543, -1, 29, 513, 789, 366, 559, -1, 29, - 513, 789, 337, 559, -1, 29, 513, 789, 366, 385, - 789, -1, 29, 513, 789, 23, 171, 591, 36, 184, - 549, -1, 29, 513, 789, 501, -1, 29, 513, 789, - 134, 184, -1, 29, 513, 789, 134, 184, 185, 149, - -1, 134, 513, 185, 149, 789, 596, -1, 134, 513, - 789, 596, -1, 29, 513, 789, 510, 416, 691, 688, - 506, -1, 29, 513, 789, 509, -1, 23, 561, -1, - 29, 85, 783, 547, -1, 432, 85, 783, -1, 134, - 85, 185, 149, 783, 596, -1, 134, 85, 783, 596, - -1, 366, 236, -1, 366, 425, -1, 366, 559, -1, - 337, 559, -1, 509, -1, 429, 721, -1, -1, 554, - -1, 366, 554, -1, 23, 554, -1, 134, 569, -1, - 505, -1, 508, 490, 505, -1, 283, 486, 504, 487, - -1, 366, 106, -1, 366, -1, -1, 110, 783, -1, - 110, 309, 783, -1, 110, 27, -1, 110, 309, 27, - -1, 29, 352, 783, 333, 405, 783, -1, 29, 394, - 679, 333, 405, 783, -1, 29, 394, 185, 149, 679, - 333, 405, 783, -1, 29, 360, 781, 333, 405, 783, - -1, 29, 360, 185, 149, 781, 333, 405, 783, -1, - 29, 441, 781, 333, 405, 783, -1, 29, 441, 185, - 149, 781, 333, 405, 783, -1, 29, 194, 781, 333, - 405, 783, -1, 29, 194, 185, 149, 781, 333, 405, - 783, -1, 29, 394, 679, 333, 513, 783, 405, 783, - -1, 29, 394, 185, 149, 679, 333, 513, 783, 405, - 783, -1, 29, 394, 679, 333, 85, 783, 405, 783, - -1, 29, 394, 185, 149, 679, 333, 85, 783, 405, - 783, -1, 75, -1, -1, 518, 204, 210, 516, 515, - 521, 523, -1, 619, -1, 292, 524, 434, 619, -1, - 486, 528, 487, 619, -1, 486, 528, 487, 292, 524, - 434, 619, -1, 114, 435, -1, 781, -1, 781, 36, - 789, -1, 486, 530, 487, 685, -1, 279, 85, 783, - -1, -1, 624, -1, -1, 789, 775, -1, 531, 475, - 721, -1, 486, 525, 487, 475, 721, -1, 279, 83, - 517, 130, 427, 366, 529, 685, -1, 279, 83, 517, - 130, 265, -1, -1, 789, 526, 527, 637, 638, -1, - 726, 526, 527, 637, 638, -1, 486, 721, 487, 526, - 527, 637, 638, -1, 340, 778, -1, -1, 428, -1, - 393, -1, 531, -1, 525, 490, 531, -1, 73, 794, - -1, -1, 794, -1, -1, 519, -1, 528, 490, 519, - -1, 520, -1, 529, 490, 520, -1, 522, -1, 530, - 490, 522, -1, 789, 775, -1, 306, 789, -1, 306, - 789, 475, 833, -1, 306, 789, 486, 753, 487, -1, - 92, 590, 360, 781, 534, -1, 92, 590, 360, 185, - 264, 149, 781, 534, -1, 538, -1, -1, 148, 783, - 536, -1, 92, 590, 394, 857, 36, 148, 783, 536, - 856, -1, 92, 590, 394, 185, 264, 149, 857, 36, - 148, 783, 536, 856, -1, 486, 751, 487, -1, -1, - 29, 360, 781, 538, -1, 29, 360, 185, 149, 781, - 538, -1, 541, -1, 538, 541, -1, 448, -1, 472, - -1, -1, 4, -1, 477, 4, -1, 478, 4, -1, - 543, -1, 36, 693, -1, 55, 540, -1, 105, -1, - 262, 105, -1, 193, 542, 540, -1, 242, 540, -1, - 250, 540, -1, 262, 242, -1, 262, 250, -1, 293, - 54, 794, -1, 360, 255, 794, -1, 380, 539, 540, - -1, 338, -1, 338, 539, 540, -1, 54, -1, -1, - 787, -1, 477, 787, -1, 478, 787, -1, 19, 545, - -1, 47, 545, -1, 380, 545, -1, 79, 545, -1, - 140, 545, -1, 345, 545, -1, 451, -1, 407, -1, - -1, 92, 590, 394, 781, 486, 578, 487, 566, 558, - -1, 92, 590, 394, 185, 264, 149, 781, 486, 578, - 487, 566, 558, -1, -1, 547, 570, -1, 585, -1, - 864, -1, 748, -1, 540, -1, 788, -1, 263, -1, - 486, 538, 487, -1, -1, 788, -1, 262, 22, -1, - 339, -1, 58, -1, 366, 269, -1, 366, 114, -1, - 85, 783, 553, -1, 553, -1, 565, -1, 73, 794, - -1, 264, 269, -1, 269, -1, 422, 577, -1, 312, - 216, 577, -1, 67, 486, 721, 487, 560, -1, 114, - 722, -1, 171, 591, 36, 184, 549, -1, 327, 781, - 580, 588, 556, -1, 569, 550, -1, 279, 427, 551, - -1, 555, -1, 582, -1, 555, 582, -1, 582, 555, - -1, -1, 283, 486, 572, 487, -1, -1, 279, 79, - 134, -1, 279, 79, 119, 348, -1, 279, 79, 311, - 348, -1, -1, 486, 563, 487, -1, 262, 196, -1, - -1, 85, 783, 586, -1, 586, -1, 78, -1, 86, - -1, 115, -1, 184, -1, 195, -1, 382, -1, 385, - -1, 27, -1, 583, -1, 563, 490, 583, -1, 429, - 194, 574, -1, 116, -1, 264, 116, -1, 198, 117, - -1, 198, 187, -1, 448, 559, -1, 448, 277, -1, - 450, 277, -1, -1, 486, 573, 487, -1, 568, 192, - 562, -1, 568, 146, 562, -1, -1, 798, -1, 264, - 116, -1, 116, -1, 198, 187, -1, 198, 117, -1, - 264, 431, -1, 262, 196, -1, 789, 691, 557, 581, - -1, 554, -1, 572, 490, 554, -1, 576, -1, 573, - 490, 576, -1, 789, -1, 571, -1, 589, -1, 561, - -1, 798, 475, 548, -1, 798, -1, 448, 567, -1, - -1, 587, -1, -1, 789, -1, 486, 584, 487, -1, - -1, 581, 552, -1, -1, 279, 119, 551, -1, 798, - 475, 548, -1, 798, -1, 798, 488, 798, 475, 548, - -1, 798, 488, 798, -1, 579, -1, 584, 490, 579, - -1, 691, -1, 791, 795, 481, 416, -1, 367, 791, - 795, 481, 416, -1, 67, 486, 721, 487, 547, -1, - 422, 486, 584, 487, 577, 547, -1, 422, 564, 547, - -1, 312, 216, 486, 584, 487, 577, 547, -1, 312, - 216, 564, 547, -1, 164, 216, 486, 584, 487, 327, - 781, 580, 588, 556, 547, -1, 575, -1, 587, 490, - 575, -1, 240, 168, -1, 240, 297, -1, 240, 372, - -1, -1, 226, 781, 568, -1, 400, -1, 398, -1, - 230, 400, -1, 230, 398, -1, 173, 400, -1, 173, - 398, -1, 425, -1, -1, 30, -1, 54, 114, -1, - 134, 593, 185, 149, 595, 596, -1, 134, 593, 595, - 596, -1, 134, 594, 185, 149, 782, 596, -1, 134, - 594, 782, 596, -1, 134, 597, 783, 279, 794, 596, - -1, 134, 597, 185, 149, 783, 279, 794, 596, -1, - 394, -1, 360, -1, 169, -1, 237, -1, 441, -1, - 241, 441, -1, 194, -1, 164, 394, -1, 74, -1, - 89, -1, 382, -1, 401, 355, 296, -1, 401, 355, - 126, -1, 401, 355, 399, -1, 401, 355, 82, -1, - 21, 243, -1, 143, 410, -1, 152, -1, 164, 106, - 452, -1, 318, -1, 352, -1, 363, -1, 794, -1, - 595, 490, 794, -1, 58, -1, 339, -1, -1, 304, - -1, 349, -1, 410, -1, 92, 599, 781, 600, 36, - 721, -1, 169, -1, 237, -1, 486, 487, -1, 486, - 753, 487, -1, 518, 427, 842, 366, 529, 669, 843, - 523, -1, 90, 614, 781, 580, 612, 603, 608, 617, - 604, 539, 609, -1, 90, 486, 802, 487, 405, 608, - 617, 539, 609, -1, 167, -1, 405, -1, 606, 121, - 788, -1, -1, 616, -1, 605, 490, 616, -1, 429, - -1, -1, 36, -1, -1, 317, -1, -1, 613, -1, - 486, 618, 487, -1, 825, -1, 540, -1, 479, -1, - 486, 605, 487, -1, -1, 798, 610, -1, 448, 277, - -1, -1, 613, 615, -1, -1, 50, -1, -1, 50, - -1, 277, -1, 166, -1, 120, 607, 788, -1, 269, - 607, 788, -1, 94, -1, 180, -1, 319, 607, 788, - -1, 142, 607, 788, -1, 163, 319, 584, -1, 163, - 319, 479, -1, 163, 264, 269, 584, -1, 163, 269, - 584, -1, 138, 788, -1, 825, -1, 788, -1, 383, - -1, 384, -1, 611, -1, 618, 490, 611, -1, 621, - -1, 620, -1, 486, 621, 487, -1, 486, 620, 487, - -1, 623, -1, 622, 634, -1, 622, 633, 661, 640, - -1, 622, 633, 639, 662, -1, 624, 622, -1, 624, - 622, 634, -1, 624, 622, 633, 661, 640, -1, 624, - 622, 633, 639, 662, -1, 623, -1, 620, -1, 359, - 632, 777, 627, 669, 685, 656, 660, 730, 644, -1, - 359, 631, 778, 627, 669, 685, 656, 660, 730, 644, - -1, 668, -1, 394, 679, -1, 622, 421, 630, 622, - -1, 622, 208, 630, 622, -1, 622, 144, 630, 622, - -1, 448, 625, -1, 472, 625, -1, 448, 325, 625, - -1, 626, -1, 625, 490, 626, -1, 783, 796, 36, - 486, 802, 487, -1, 210, 628, -1, -1, 400, 629, - 781, -1, 398, 629, 781, -1, 230, 400, 629, 781, - -1, 230, 398, 629, 781, -1, 173, 400, 629, 781, - -1, 173, 398, 629, 781, -1, 425, 629, 781, -1, - 394, 781, -1, 781, -1, 394, -1, -1, 27, -1, - 129, -1, -1, 129, -1, 129, 279, 486, 751, 487, - -1, 27, -1, -1, 634, -1, -1, 285, 54, 635, - -1, 636, -1, 635, 490, 636, -1, 721, 429, 748, - 638, -1, 721, 637, 638, -1, 37, -1, 123, -1, - -1, 471, 159, -1, 471, 220, -1, -1, 641, 642, - -1, 642, 641, -1, 641, -1, 642, -1, 639, -1, - -1, 227, 650, -1, 227, 650, 490, 651, -1, 157, - 655, 652, 654, 280, -1, 157, 655, 654, 280, -1, - 276, 651, -1, 276, 652, 654, -1, 4, 481, -1, - 9, 481, -1, 4, 301, -1, 9, 301, -1, 9, - -1, 9, 348, -1, 429, 350, 646, -1, -1, 789, - -1, -1, 645, 486, 643, 487, 649, -1, 643, -1, - 643, 486, 789, 487, -1, 643, 486, 789, 490, 9, - 487, -1, 396, 646, -1, 647, -1, -1, 334, 486, - 9, 487, -1, -1, 721, -1, 27, -1, 721, -1, - 723, -1, 477, 653, -1, 478, 653, -1, 787, -1, - 4, -1, 347, -1, 348, -1, 159, -1, 261, -1, - 176, 54, 657, -1, -1, 658, -1, 657, 490, 658, - -1, 721, -1, 659, -1, 486, 487, -1, 179, 721, - -1, -1, 663, -1, 162, 321, 280, -1, 661, -1, - -1, 664, -1, 663, 664, -1, 665, 666, 667, -1, - 162, 427, -1, 162, 262, 216, 427, -1, 162, 369, - -1, 162, 216, 369, -1, 274, 780, -1, -1, 268, - -1, 373, 235, -1, -1, 435, 486, 751, 487, -1, - 668, 490, 486, 751, 487, -1, 167, 670, -1, -1, - 671, -1, 670, 490, 671, -1, 679, 674, 648, -1, - 680, 675, 648, -1, 221, 680, 675, -1, 620, 674, - 648, -1, 221, 620, 674, -1, 672, -1, 486, 672, - 487, 673, -1, 486, 672, 487, -1, 671, 93, 215, - 671, -1, 671, 676, 215, 671, 678, -1, 671, 215, - 671, 678, -1, 671, 258, 676, 215, 671, -1, 671, - 258, 215, 671, -1, 36, 789, 486, 782, 487, -1, - 36, 790, -1, 789, 486, 782, 487, -1, 789, -1, - 673, -1, -1, 673, -1, 36, 486, 686, 487, -1, - 36, 789, 486, 686, 487, -1, 789, 486, 686, 487, - -1, -1, 168, 677, -1, 224, 677, -1, 343, 677, - -1, 200, -1, 288, -1, -1, 429, 486, 782, 487, - -1, 279, 721, -1, 781, -1, 781, 479, -1, 280, - 781, -1, 280, 486, 781, 487, -1, 726, 684, -1, - 348, 167, 486, 682, 487, 684, -1, 726, 683, -1, - 681, -1, 682, 490, 681, -1, 36, 486, 686, 487, - -1, -1, 472, 286, -1, -1, 445, 721, -1, -1, - 687, -1, 686, 490, 687, -1, 789, 691, 688, -1, - 73, 794, -1, -1, 789, 691, -1, 689, 490, 789, - 691, -1, 347, -1, 388, -1, 693, 692, -1, 367, - 693, 692, -1, 693, 35, 484, 787, 485, -1, 367, - 693, 35, 484, 787, 485, -1, 693, 35, -1, 367, - 693, 35, -1, 690, 486, 689, 487, 692, -1, 238, - 486, 755, 487, 692, -1, 692, 484, 485, -1, 692, - 484, 787, 485, -1, -1, 695, -1, 697, -1, 699, - -1, 703, -1, 709, -1, 710, 720, -1, 710, 486, - 787, 487, -1, 697, -1, 700, -1, 704, -1, 709, - -1, 793, 696, -1, 486, 751, 487, -1, -1, 206, - -1, 207, -1, 374, -1, 49, -1, 322, -1, 160, - 698, -1, 133, 308, -1, 112, 696, -1, 111, 696, - -1, 272, 696, -1, 52, -1, 486, 787, 487, -1, - -1, 701, -1, 702, -1, 701, -1, 702, -1, 51, - 708, 486, 751, 487, -1, 51, 708, -1, 705, -1, - 706, -1, 705, -1, 706, -1, 707, 486, 787, 487, - -1, 707, -1, 65, 708, -1, 64, 708, -1, 436, - -1, 257, 65, 708, -1, 257, 64, 708, -1, 259, - 708, -1, 438, -1, -1, 404, 486, 787, 487, 711, - -1, 404, 711, -1, 403, 486, 787, 487, 711, -1, - 403, 711, -1, 209, -1, 472, 403, 469, -1, 450, - 403, 469, -1, -1, 466, -1, 467, -1, 252, -1, - 253, -1, 108, -1, 109, -1, 182, -1, 183, -1, - 248, -1, 249, -1, 356, -1, 357, -1, 246, -1, - 247, -1, 244, -1, 245, -1, 712, -1, 713, -1, - 714, -1, 715, -1, 716, -1, 717, -1, 718, -1, - 719, -1, 712, 405, 713, -1, 714, 405, 715, -1, - 714, 405, 716, -1, 714, 405, 717, -1, 715, 405, - 716, -1, 715, 405, 717, -1, 716, 405, 717, -1, - -1, 723, -1, 721, 11, 691, -1, 721, 73, 794, - -1, 721, 41, 403, 469, 721, -1, 477, 721, -1, - 478, 721, -1, 721, 477, 721, -1, 721, 478, 721, - -1, 721, 479, 721, -1, 721, 480, 721, -1, 721, - 481, 721, -1, 721, 482, 721, -1, 721, 473, 721, - -1, 721, 474, 721, -1, 721, 475, 721, -1, 721, - 16, 721, -1, 721, 17, 721, -1, 721, 18, 721, - -1, 721, 747, 721, -1, 747, 721, -1, 721, 747, - -1, 721, 33, 721, -1, 721, 284, 721, -1, 264, - 721, -1, 470, 721, -1, 721, 172, 721, -1, 721, - 226, 721, -1, 721, 226, 721, 142, 721, -1, 721, - 470, 226, 721, -1, 721, 470, 226, 721, 142, 721, - -1, 721, 186, 721, -1, 721, 186, 721, 142, 721, - -1, 721, 470, 186, 721, -1, 721, 470, 186, 721, - 142, 721, -1, 721, 371, 405, 721, -1, 721, 371, - 405, 721, 142, 721, -1, 721, 470, 371, 405, 721, - -1, 721, 470, 371, 405, 721, 142, 721, -1, 721, - 212, 269, -1, 721, 213, -1, 721, 212, 264, 269, - -1, 721, 264, 269, -1, 721, 267, -1, 741, -1, - 491, 743, 492, -1, 484, 752, 485, -1, 741, 15, - 721, -1, 771, 15, 721, -1, 741, 290, 741, -1, - 721, 212, 412, -1, 721, 212, 264, 412, -1, 721, - 212, 155, -1, 721, 212, 264, 155, -1, 721, 212, - 423, -1, 721, 212, 264, 423, -1, 721, 212, 129, - 167, 721, -1, 721, 212, 264, 129, 167, 721, -1, - 721, 212, 274, 486, 755, 487, -1, 721, 212, 264, - 274, 486, 755, 487, -1, 721, 48, 776, 722, 33, - 721, -1, 721, 470, 48, 776, 722, 33, 721, -1, - 721, 48, 391, 722, 33, 721, -1, 721, 470, 48, - 391, 722, 33, 721, -1, 721, 191, 765, -1, 721, - 470, 191, 765, -1, 721, 749, 744, 620, -1, 721, - 749, 744, 486, 721, 487, -1, 114, -1, 35, 484, - 752, 485, -1, 723, -1, 722, 11, 691, -1, 477, - 722, -1, 478, 722, -1, 722, 477, 722, -1, 722, - 478, 722, -1, 722, 479, 722, -1, 722, 480, 722, - -1, 722, 481, 722, -1, 722, 482, 722, -1, 722, - 473, 722, -1, 722, 474, 722, -1, 722, 475, 722, - -1, 722, 16, 722, -1, 722, 17, 722, -1, 722, - 18, 722, -1, 722, 747, 722, -1, 747, 722, -1, - 722, 747, -1, 722, 212, 129, 167, 722, -1, 722, - 212, 264, 129, 167, 722, -1, 722, 212, 274, 486, - 755, 487, -1, 722, 212, 264, 274, 486, 755, 487, - -1, 771, -1, 786, -1, 493, 9, -1, 494, 775, - -1, 10, 775, -1, 486, 721, 487, 775, -1, 766, - -1, 725, 775, -1, 620, -1, 620, 774, -1, 149, - 620, -1, 785, 486, 487, -1, 785, 486, 753, 633, - 487, -1, 785, 486, 437, 754, 633, 487, -1, 785, - 486, 753, 490, 437, 754, 633, 487, -1, 785, 486, - 27, 753, 633, 487, -1, 785, 486, 129, 753, 633, - 487, -1, 785, 486, 479, 487, -1, 724, 728, 729, - 733, -1, 727, -1, 724, -1, 727, -1, 74, 162, - 486, 721, 487, -1, 98, -1, 101, -1, 101, 486, - 787, 487, -1, 102, -1, 102, 486, 787, 487, -1, - 231, -1, 231, 486, 787, 487, -1, 232, -1, 232, - 486, 787, 487, -1, 99, -1, 103, -1, 365, -1, - 428, -1, 97, -1, 100, -1, 61, 486, 721, 36, - 691, 487, -1, 415, 486, 721, 36, 691, 487, -1, - 154, 486, 756, 487, -1, 291, 486, 758, 487, -1, - 305, 486, 760, 487, -1, 390, 486, 761, 487, -1, - 409, 486, 721, 36, 691, 487, -1, 411, 486, 53, - 764, 487, -1, 411, 486, 222, 764, 487, -1, 411, - 486, 406, 764, 487, -1, 411, 486, 764, 487, -1, - 270, 486, 721, 490, 721, 487, -1, 72, 486, 751, - 487, -1, 449, 176, 486, 634, 487, -1, -1, 158, - 486, 445, 721, 487, -1, -1, 447, 731, -1, -1, - 732, -1, 731, 490, 732, -1, 789, 36, 734, -1, - 289, 734, -1, 289, 789, -1, -1, 486, 735, 736, - 633, 737, 487, -1, 789, -1, -1, 298, 54, 751, - -1, -1, 320, 738, -1, 348, 738, -1, -1, 739, - -1, 48, 739, 33, 739, -1, 418, 307, -1, 418, - 161, -1, 96, 347, -1, 721, 307, -1, 721, 161, - -1, 347, 486, 751, 487, -1, 347, 486, 487, -1, - 740, -1, 486, 751, 490, 721, 487, -1, 790, 495, - 721, -1, 742, -1, 743, 490, 742, -1, 34, -1, - 376, -1, 27, -1, 8, -1, 746, -1, 477, -1, - 478, -1, 479, -1, 480, -1, 481, -1, 482, -1, - 473, -1, 474, -1, 475, -1, 16, -1, 17, -1, - 18, -1, 8, -1, 281, 486, 750, 487, -1, 745, - -1, 281, 486, 750, 487, -1, 745, -1, 281, 486, - 750, 487, -1, 226, -1, 470, 226, -1, 172, -1, - 470, 172, -1, 186, -1, 470, 186, -1, 745, -1, - 789, 488, 750, -1, 721, -1, 751, 490, 721, -1, - 751, -1, -1, 754, -1, 753, 490, 754, -1, 721, - -1, 797, 13, 721, -1, 797, 14, 721, -1, 691, - -1, 755, 490, 691, -1, 757, 167, 721, -1, -1, - 3, -1, 712, -1, 713, -1, 714, -1, 715, -1, - 716, -1, 717, -1, 718, -1, 719, -1, 788, -1, - 721, 759, 762, 763, -1, 721, 759, 762, -1, 302, - 721, -1, 722, 191, 722, -1, -1, 721, 762, 763, - -1, 721, 763, 762, -1, 721, 762, -1, 721, 763, - -1, 751, -1, -1, 167, 721, -1, 162, 721, -1, - 721, 167, 751, -1, 167, 751, -1, 751, -1, 620, - -1, 486, 751, 487, -1, 60, 770, 767, 769, 140, - -1, 768, -1, 767, 768, -1, 444, 721, 402, 721, - -1, 136, 721, -1, -1, 721, -1, -1, 789, -1, - 789, 774, -1, 488, 784, -1, 488, 479, -1, 484, - 721, 485, -1, 484, 773, 495, 773, 485, -1, 721, - -1, -1, 772, -1, 774, 772, -1, -1, 775, 772, - -1, 40, -1, -1, 778, -1, -1, 779, -1, 778, - 490, 779, -1, 721, 36, 799, -1, 721, 3, -1, - 721, -1, 479, -1, 781, -1, 780, 490, 781, -1, - 790, -1, 789, 774, -1, 783, -1, 782, 490, 783, - -1, 789, -1, 798, -1, 792, -1, 789, 774, -1, - 787, -1, 4, -1, 788, 775, -1, 6, -1, 7, - -1, 785, 788, -1, 785, 486, 753, 633, 487, 788, - -1, 694, 788, -1, 710, 486, 721, 487, 720, -1, - 710, 787, 720, -1, 710, 788, 720, -1, 412, -1, - 155, -1, 269, -1, 9, -1, 5, -1, 3, -1, - 858, -1, 859, -1, 789, -1, 5, -1, 3, -1, - 858, -1, 863, -1, 3, -1, 858, -1, 860, -1, - 3, -1, 858, -1, 861, -1, 789, -1, 789, 795, - -1, 488, 784, -1, 795, 488, 784, -1, 486, 782, - 487, -1, -1, 791, -1, 3, -1, 862, -1, 858, - -1, 864, -1, 798, -1, 5, -1, 309, 783, 801, - 36, 802, -1, 486, 755, 487, -1, -1, 619, -1, - 514, -1, 601, -1, 841, -1, 92, 352, 789, 804, - -1, 92, 352, 185, 264, 149, 789, 804, -1, 804, - 805, -1, -1, 546, -1, 806, -1, 533, -1, 853, - -1, 92, 812, 194, 809, 810, 279, 781, 808, 486, - 530, 487, 811, 685, -1, 92, 812, 194, 809, 185, - 264, 149, 574, 279, 781, 808, 486, 530, 487, 811, - 685, -1, 789, -1, 429, 807, -1, -1, 81, -1, - -1, 574, -1, -1, 448, 559, -1, -1, 422, -1, - -1, 29, 394, 679, 366, 352, 783, -1, 29, 394, - 185, 149, 679, 366, 352, 783, -1, 29, 360, 781, - 366, 352, 783, -1, 29, 360, 185, 149, 781, 366, - 352, 783, -1, 29, 441, 781, 366, 352, 783, -1, - 29, 441, 185, 149, 781, 366, 352, 783, -1, 163, - 68, -1, 68, -1, 151, 107, 788, 609, -1, 190, - 107, 788, -1, 150, 820, -1, 150, 824, 818, 820, - -1, 150, 439, 820, -1, 150, 486, 823, 487, 820, - -1, 439, -1, -1, 825, -1, 540, -1, -1, 619, - -1, 514, -1, 601, -1, 841, -1, 855, -1, 3, - -1, 858, -1, 862, -1, 821, -1, 788, -1, 826, - -1, 823, 490, 826, -1, 32, -1, 31, -1, 412, - -1, 155, -1, 279, -1, 822, -1, 827, 819, -1, - 821, -1, 824, -1, 366, 829, -1, 366, 230, 829, - -1, 366, 364, 829, -1, 830, -1, 851, 167, 96, - -1, 403, 469, 832, -1, 352, 788, -1, 851, 405, - 833, -1, 851, 475, 833, -1, 851, 405, 114, -1, - 851, 475, 114, -1, 825, -1, 540, -1, 788, -1, - 3, -1, 710, 788, 720, -1, 710, 486, 787, 487, - 788, -1, 540, -1, 114, -1, 230, -1, 831, -1, - 833, 490, 831, -1, 229, 835, -1, 788, -1, 430, - 838, 840, 818, -1, 430, 838, 840, 818, 781, -1, - 430, 838, 840, 818, 845, -1, 430, 486, 839, 487, - -1, 430, 486, 839, 487, 781, 796, -1, 824, -1, - 439, -1, 166, -1, 168, -1, 3, -1, 168, -1, - -1, 837, -1, 839, 490, 837, -1, 166, -1, -1, - 518, 119, 167, 842, 844, 843, 523, -1, 679, -1, - 679, 789, -1, 679, 36, 789, -1, 445, 721, -1, - -1, 429, 670, -1, -1, 824, 818, -1, 824, 818, - 781, 796, -1, 337, 848, -1, 851, -1, 27, -1, - 847, -1, 403, 469, -1, 407, 214, 225, -1, 850, - 619, -1, 850, 851, -1, 850, 403, 469, -1, 850, - 407, 214, 225, -1, 850, 27, -1, 370, -1, 124, - -1, 789, -1, 851, 488, 789, -1, 56, 724, -1, - 92, 590, 441, 781, 580, 811, 36, 619, 854, -1, - 92, 284, 335, 590, 441, 781, 580, 811, 36, 619, - 854, -1, 92, 590, 325, 441, 781, 486, 584, 487, - 811, 36, 619, 854, -1, 92, 284, 335, 590, 325, - 441, 781, 486, 584, 487, 811, 36, 619, 854, -1, - 448, 67, 282, -1, 448, 59, 67, 282, -1, 448, - 230, 67, 282, -1, -1, 92, 590, 394, 857, 36, - 619, 856, -1, 92, 590, 394, 185, 264, 149, 857, - 36, 619, 856, -1, 448, 106, -1, 448, 262, 106, - -1, -1, 781, 580, 566, 558, -1, 19, -1, 20, - -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, - -1, 26, -1, 28, -1, 29, -1, 30, -1, 38, - -1, 39, -1, 41, -1, 42, -1, 43, -1, 45, - -1, 46, -1, 47, -1, 54, -1, 55, -1, 56, - -1, 57, -1, 58, -1, 59, -1, 62, -1, 63, - -1, 66, -1, 68, -1, 69, -1, 70, -1, 71, - -1, 76, -1, 77, -1, 78, -1, 79, -1, 80, - -1, 82, -1, 83, -1, 84, -1, 86, -1, 87, - -1, 88, -1, 89, -1, 90, -1, 91, -1, 94, - -1, 95, -1, 96, -1, 104, -1, 105, -1, 106, - -1, 107, -1, 108, -1, 109, -1, 110, -1, 113, - -1, 115, -1, 117, -1, 118, -1, 119, -1, 120, - -1, 121, -1, 122, -1, 124, -1, 125, -1, 126, - -1, 127, -1, 128, -1, 131, -1, 132, -1, 133, - -1, 134, -1, 135, -1, 137, -1, 138, -1, 139, - -1, 141, -1, 142, -1, 143, -1, 145, -1, 146, - -1, 147, -1, 148, -1, 150, -1, 151, -1, 152, - -1, 153, -1, 156, -1, 158, -1, 159, -1, 161, - -1, 163, -1, 165, -1, 169, -1, 170, -1, 171, - -1, 173, -1, 175, -1, 178, -1, 180, -1, 181, - -1, 182, -1, 183, -1, 184, -1, 185, -1, 187, - -1, 188, -1, 189, -1, 190, -1, 192, -1, 193, - -1, 194, -1, 195, -1, 196, -1, 197, -1, 199, - -1, 202, -1, 203, -1, 204, -1, 205, -1, 211, - -1, 214, -1, 216, -1, 217, -1, 218, -1, 219, - -1, 220, -1, 223, -1, 225, -1, 228, -1, 229, - -1, 230, -1, 233, -1, 234, -1, 235, -1, 236, - -1, 237, -1, 239, -1, 240, -1, 241, -1, 242, - -1, 243, -1, 244, -1, 245, -1, 246, -1, 247, - -1, 248, -1, 249, -1, 250, -1, 251, -1, 252, - -1, 253, -1, 254, -1, 255, -1, 256, -1, 260, - -1, 261, -1, 262, -1, 265, -1, 266, -1, 268, - -1, 271, -1, 273, -1, 274, -1, 275, -1, 277, - -1, 278, -1, 281, -1, 282, -1, 283, -1, 286, - -1, 289, -1, 292, -1, 293, -1, 294, -1, 295, - -1, 296, -1, 297, -1, 298, -1, 299, -1, 300, - -1, 301, -1, 303, -1, 304, -1, 306, -1, 307, - -1, 309, -1, 310, -1, 311, -1, 313, -1, 314, - -1, 315, -1, 316, -1, 317, -1, 318, -1, 319, - -1, 320, -1, 321, -1, 323, -1, 324, -1, 325, - -1, 326, -1, 328, -1, 329, -1, 330, -1, 331, - -1, 332, -1, 333, -1, 334, -1, 335, -1, 336, - -1, 337, -1, 338, -1, 339, -1, 341, -1, 342, - -1, 344, -1, 345, -1, 346, -1, 348, -1, 349, - -1, 350, -1, 351, -1, 352, -1, 353, -1, 354, - -1, 355, -1, 356, -1, 357, -1, 358, -1, 360, - -1, 361, -1, 362, -1, 363, -1, 364, -1, 366, - -1, 368, -1, 369, -1, 370, -1, 372, -1, 373, - -1, 375, -1, 377, -1, 378, -1, 379, -1, 380, - -1, 381, -1, 382, -1, 383, -1, 384, -1, 385, - -1, 386, -1, 387, -1, 389, -1, 392, -1, 393, - -1, 395, -1, 397, -1, 398, -1, 399, -1, 400, - -1, 401, -1, 407, -1, 408, -1, 410, -1, 413, - -1, 414, -1, 416, -1, 417, -1, 418, -1, 419, - -1, 420, -1, 423, -1, 424, -1, 425, -1, 426, - -1, 427, -1, 430, -1, 431, -1, 432, -1, 433, - -1, 434, -1, 438, -1, 440, -1, 441, -1, 442, - -1, 443, -1, 446, -1, 449, -1, 450, -1, 451, - -1, 452, -1, 453, -1, 454, -1, 466, -1, 467, - -1, 468, -1, 469, -1, 48, -1, 49, -1, 51, - -1, 52, -1, 64, -1, 65, -1, 72, -1, 111, - -1, 112, -1, 149, -1, 154, -1, 160, -1, 177, - -1, 201, -1, 206, -1, 207, -1, 209, -1, 238, - -1, 257, -1, 259, -1, 263, -1, 270, -1, 272, - -1, 287, -1, 291, -1, 305, -1, 308, -1, 322, - -1, 347, -1, 367, -1, 374, -1, 388, -1, 390, - -1, 403, -1, 404, -1, 409, -1, 411, -1, 415, - -1, 435, -1, 436, -1, 455, -1, 456, -1, 457, - -1, 458, -1, 459, -1, 460, -1, 461, -1, 462, - -1, 463, -1, 464, -1, 465, -1, 44, -1, 50, - -1, 74, -1, 81, -1, 93, -1, 100, -1, 166, - -1, 168, -1, 172, -1, 186, -1, 200, -1, 212, - -1, 213, -1, 215, -1, 224, -1, 226, -1, 238, - -1, 258, -1, 267, -1, 288, -1, 290, -1, 343, - -1, 371, -1, 388, -1, 396, -1, 439, -1, 44, - -1, 50, -1, 74, -1, 81, -1, 93, -1, 100, - -1, 166, -1, 168, -1, 172, -1, 186, -1, 200, - -1, 212, -1, 213, -1, 215, -1, 224, -1, 226, - -1, 258, -1, 267, -1, 288, -1, 290, -1, 343, - -1, 371, -1, 396, -1, 415, -1, 439, -1, 48, - -1, 49, -1, 51, -1, 52, -1, 65, -1, 64, - -1, 72, -1, 111, -1, 112, -1, 149, -1, 154, - -1, 160, -1, 177, -1, 201, -1, 207, -1, 209, - -1, 206, -1, 238, -1, 257, -1, 259, -1, 263, - -1, 270, -1, 272, -1, 287, -1, 291, -1, 305, - -1, 308, -1, 322, -1, 347, -1, 367, -1, 374, - -1, 388, -1, 390, -1, 403, -1, 404, -1, 409, - -1, 411, -1, 415, -1, 435, -1, 436, -1, 455, - -1, 456, -1, 457, -1, 458, -1, 459, -1, 460, - -1, 461, -1, 462, -1, 463, -1, 464, -1, 465, - -1, 44, -1, 50, -1, 74, -1, 81, -1, 93, - -1, 100, -1, 166, -1, 168, -1, 172, -1, 186, - -1, 200, -1, 212, -1, 213, -1, 215, -1, 224, - -1, 226, -1, 238, -1, 258, -1, 267, -1, 288, - -1, 290, -1, 343, -1, 371, -1, 388, -1, 396, - -1, 415, -1, 439, -1, 27, -1, 31, -1, 32, - -1, 33, -1, 34, -1, 35, -1, 36, -1, 37, - -1, 40, -1, 53, -1, 60, -1, 61, -1, 67, - -1, 73, -1, 75, -1, 85, -1, 92, -1, 97, - -1, 98, -1, 99, -1, 101, -1, 102, -1, 103, - -1, 114, -1, 116, -1, 123, -1, 129, -1, 130, - -1, 136, -1, 140, -1, 144, -1, 155, -1, 157, - -1, 162, -1, 164, -1, 167, -1, 174, -1, 176, - -1, 179, -1, 191, -1, 198, -1, 208, -1, 210, - -1, 221, -1, 222, -1, 227, -1, 231, -1, 232, - -1, 264, -1, 269, -1, 276, -1, 279, -1, 280, - -1, 284, -1, 285, -1, 302, -1, 312, -1, 327, - -1, 340, -1, 359, -1, 365, -1, 376, -1, 391, - -1, 394, -1, 402, -1, 405, -1, 406, -1, 412, - -1, 421, -1, 422, -1, 428, -1, 429, -1, 437, - -1, 444, -1, 445, -1, 447, -1, 448, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_int16 yyrline[] = { 0, 459, 459, 475, 487, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 525, 526, 527, 528, 530, 9, - 18, 27, 36, 45, 54, 63, 72, 85, 87, 93, - 94, 99, 103, 107, 118, 126, 130, 139, 148, 157, - 166, 175, 184, 192, 200, 209, 218, 227, 236, 253, - 262, 271, 280, 290, 303, 318, 327, 335, 350, 358, - 368, 378, 385, 392, 400, 407, 418, 419, 424, 428, - 433, 438, 446, 447, 452, 456, 457, 458, 7, 13, - 19, 25, 6, 15, 25, 35, 45, 55, 65, 75, - 85, 95, 106, 117, 127, 140, 141, 8, 21, 27, - 34, 40, 47, 57, 61, 70, 79, 88, 95, 96, - 101, 113, 118, 143, 153, 163, 169, 180, 191, 206, - 207, 213, 214, 219, 220, 226, 227, 231, 232, 237, - 239, 245, 246, 250, 251, 256, 7, 14, 22, 9, - 19, 32, 33, 7, 14, 31, 51, 52, 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, 2, 9, - 15, 21, 28, 35, 45, 46, 47, 7, 21, 41, - 42, 69, 70, 71, 72, 73, 74, 78, 79, 84, - 89, 90, 91, 92, 93, 98, 105, 106, 107, 124, - 131, 138, 148, 158, 170, 179, 188, 207, 214, 219, - 221, 223, 225, 228, 233, 234, 238, 239, 240, 241, - 246, 250, 251, 256, 263, 268, 269, 270, 271, 272, - 273, 274, 275, 281, 282, 286, 291, 298, 305, 312, - 324, 325, 326, 327, 331, 336, 337, 338, 343, 348, - 349, 350, 351, 352, 353, 358, 381, 385, 392, 393, - 397, 401, 402, 403, 407, 411, 419, 420, 425, 426, - 430, 438, 439, 444, 445, 449, 454, 458, 462, 467, - 475, 476, 480, 481, 487, 498, 511, 525, 539, 553, - 567, 590, 594, 601, 605, 613, 618, 625, 635, 636, - 637, 638, 639, 646, 653, 654, 659, 660, 9, 19, - 29, 39, 49, 59, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 92, - 93, 94, 95, 96, 97, 98, 103, 104, 109, 110, - 111, 116, 117, 118, 7, 18, 19, 23, 27, 7, + 521, 522, 523, 524, 525, 526, 527, 528, 530, 7, + 20, 8, 22, 36, 48, 56, 70, 71, 72, 73, + 74, 87, 88, 93, 94, 98, 99, 6, 15, 25, + 35, 45, 55, 65, 75, 85, 95, 106, 117, 127, + 140, 141, 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, 8, 21, 27, 34, 40, 47, 57, 61, + 70, 79, 88, 95, 96, 101, 113, 118, 143, 153, + 163, 169, 180, 191, 206, 207, 213, 214, 219, 220, + 226, 227, 231, 232, 237, 239, 245, 246, 250, 251, + 256, 8, 33, 62, 66, 67, 72, 73, 78, 79, + 83, 84, 89, 90, 7, 16, 34, 41, 46, 47, + 48, 49, 7, 18, 19, 23, 24, 25, 26, 9, + 19, 32, 33, 9, 16, 26, 33, 44, 45, 50, + 51, 52, 57, 58, 59, 60, 61, 65, 66, 67, + 72, 73, 78, 82, 90, 91, 96, 97, 98, 104, + 109, 117, 118, 7, 14, 31, 51, 52, 2, 9, + 15, 21, 28, 35, 45, 46, 47, 10, 16, 22, + 28, 38, 39, 47, 58, 70, 78, 86, 93, 103, + 105, 111, 115, 119, 134, 141, 142, 143, 147, 148, + 9, 18, 27, 36, 45, 54, 63, 72, 85, 87, + 93, 94, 99, 103, 107, 118, 126, 130, 139, 148, + 157, 166, 175, 184, 192, 200, 209, 218, 227, 236, + 253, 262, 271, 280, 290, 303, 318, 327, 335, 350, + 358, 368, 378, 385, 392, 400, 407, 418, 419, 424, + 428, 433, 438, 446, 447, 452, 456, 457, 458, 7, + 13, 19, 25, 9, 19, 29, 39, 49, 59, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 92, 93, 94, 95, 96, 97, + 98, 103, 104, 109, 110, 111, 116, 117, 118, 7, + 16, 47, 48, 52, 53, 68, 69, 76, 84, 92, + 100, 108, 116, 127, 128, 155, 170, 186, 187, 206, + 210, 214, 231, 238, 245, 255, 256, 259, 271, 282, + 290, 295, 300, 305, 310, 318, 326, 331, 336, 343, + 344, 348, 349, 350, 357, 358, 362, 363, 367, 368, + 372, 376, 377, 380, 389, 400, 401, 402, 405, 406, + 407, 411, 412, 413, 414, 418, 419, 423, 425, 441, + 443, 448, 451, 459, 463, 467, 471, 475, 479, 486, + 491, 498, 499, 503, 507, 511, 515, 522, 529, 530, + 535, 536, 540, 541, 549, 569, 570, 572, 577, 578, + 582, 583, 586, 587, 612, 613, 617, 618, 622, 623, + 627, 640, 641, 645, 646, 650, 651, 655, 656, 660, + 671, 672, 673, 674, 678, 679, 684, 685, 686, 695, + 701, 719, 720, 724, 725, 731, 737, 745, 753, 762, + 771, 775, 801, 805, 818, 832, 847, 859, 875, 881, + 886, 892, 899, 900, 908, 912, 916, 922, 929, 934, + 935, 936, 937, 941, 942, 954, 955, 960, 967, 974, + 981, 1013, 1024, 1037, 1042, 1043, 1046, 1047, 1050, 1051, + 1056, 1057, 1062, 1066, 1072, 1093, 1101, 1114, 1117, 1121, + 1121, 1123, 1128, 1135, 1140, 1146, 1151, 1157, 1163, 1172, + 1174, 1177, 1181, 1182, 1183, 1184, 1185, 1186, 1191, 1211, + 1212, 1213, 1214, 1225, 1239, 1240, 1246, 1251, 1256, 1261, + 1266, 1271, 1276, 1281, 1287, 1293, 1299, 1306, 1328, 1337, + 1341, 1349, 1353, 1361, 1373, 1394, 1398, 1404, 1408, 1421, + 1429, 1439, 1441, 1443, 1445, 1447, 1449, 1454, 1455, 1462, + 1471, 1479, 1488, 1499, 1507, 1508, 1509, 1513, 1513, 1516, + 1516, 1519, 1519, 1522, 1522, 1525, 1525, 1528, 1528, 1531, + 1531, 1534, 1534, 1537, 1539, 1541, 1543, 1545, 1547, 1549, + 1551, 1553, 1558, 1563, 1569, 1576, 1581, 1587, 1593, 1624, + 1626, 1628, 1636, 1651, 1653, 1655, 1657, 1659, 1661, 1663, + 1665, 1667, 1669, 1671, 1673, 1675, 1677, 1680, 1682, 1684, + 1687, 1689, 1691, 1693, 1696, 1701, 1706, 1713, 1718, 1725, + 1730, 1738, 1743, 1752, 1760, 1768, 1776, 1794, 1802, 1810, + 1818, 1826, 1834, 1838, 1842, 1846, 1854, 1862, 1878, 1886, + 1894, 1902, 1910, 1918, 1926, 1930, 1934, 1938, 1942, 1950, + 1958, 1966, 1974, 1994, 2016, 2027, 2034, 2048, 2064, 2066, + 2068, 2070, 2072, 2074, 2076, 2078, 2080, 2082, 2084, 2086, + 2088, 2090, 2092, 2094, 2096, 2098, 2100, 2102, 2106, 2110, + 2114, 2128, 2129, 2130, 2137, 2149, 2164, 2176, 2178, 2190, + 2201, 2225, 2238, 2242, 2248, 2255, 2262, 2272, 2279, 2307, + 2342, 2353, 2354, 2361, 2367, 2371, 2375, 2379, 2383, 2387, + 2391, 2395, 2399, 2403, 2407, 2411, 2415, 2419, 2423, 2427, + 2429, 2431, 2435, 2444, 2449, 2456, 2471, 2478, 2482, 2486, + 2490, 2494, 2508, 2509, 2513, 2514, 2522, 2523, 2527, 2528, + 2533, 2541, 2543, 2557, 2560, 2587, 2588, 2591, 2592, 2603, + 2609, 2616, 2625, 2642, 2687, 2695, 2703, 2711, 2719, 2740, + 2741, 2744, 2745, 2749, 2759, 2760, 2762, 2763, 2764, 2767, + 2768, 2771, 2772, 2773, 2774, 2775, 2776, 2777, 2778, 2779, + 2780, 2781, 2782, 2785, 2787, 2792, 2794, 2799, 2801, 2803, + 2805, 2807, 2809, 2811, 2813, 2827, 2829, 2833, 2837, 2844, + 2849, 2856, 2860, 2866, 2870, 2879, 2890, 2891, 2895, 2899, + 2906, 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914, 2915, + 2925, 2929, 2936, 2943, 2944, 2960, 2964, 2969, 2973, 2988, + 2993, 2997, 3000, 3003, 3004, 3005, 3008, 3015, 3025, 3039, + 3040, 3044, 3055, 3056, 3059, 3060, 3063, 3067, 3074, 3078, + 3082, 3090, 3101, 3102, 3106, 3107, 3111, 3112, 3115, 3116, + 3126, 3127, 3131, 3132, 3135, 3151, 3159, 3167, 3189, 3190, + 3201, 3205, 3232, 3234, 3239, 3241, 3251, 3254, 3265, 3269, + 3273, 3285, 3289, 3298, 3305, 3337, 3341, 3345, 3349, 3353, + 3357, 3361, 3367, 3368, 3384, 3385, 3386, 3389, 3390, 3396, + 3397, 3398, 3401, 3402, 3403, 3406, 3407, 3408, 3411, 3412, + 3415, 3417, 3422, 3423, 3426, 3434, 3435, 3436, 3437, 3440, + 3441, 8, 21, 34, 52, 74, 75, 76, 77, 11, + 24, 41, 42, 43, 48, 7, 14, 22, 7, 21, + 41, 42, 69, 70, 71, 72, 73, 74, 78, 79, + 84, 89, 90, 91, 92, 93, 98, 105, 106, 107, + 124, 131, 138, 148, 158, 170, 179, 188, 207, 214, + 219, 221, 223, 225, 228, 233, 234, 238, 239, 240, + 241, 246, 250, 251, 256, 263, 268, 269, 270, 271, + 272, 273, 274, 275, 281, 282, 286, 291, 298, 305, + 312, 324, 325, 326, 327, 331, 336, 337, 338, 343, + 348, 349, 350, 351, 352, 353, 358, 381, 385, 392, + 393, 397, 401, 402, 403, 407, 411, 419, 420, 425, + 426, 430, 438, 439, 444, 445, 449, 454, 458, 462, + 467, 475, 476, 480, 481, 487, 498, 511, 525, 539, + 553, 567, 590, 594, 601, 605, 613, 618, 625, 635, + 636, 637, 638, 639, 646, 653, 654, 659, 660, 7, + 16, 25, 34, 43, 52, 7, 9, 19, 3, 10, + 17, 24, 31, 38, 45, 55, 55, 57, 58, 6, 1, 30, 53, 54, 59, 63, 68, 72, 80, 81, 85, 86, 91, 92, 96, 97, 102, 103, 104, 105, 106, 111, 119, 123, 128, 129, 134, 138, 143, 147, 151, 155, 159, 163, 167, 171, 175, 179, 183, 187, - 191, 195, 203, 209, 210, 211, 216, 220, 47, 48, - 52, 53, 68, 69, 76, 84, 92, 100, 108, 116, - 127, 128, 155, 170, 186, 187, 206, 210, 214, 231, - 238, 245, 255, 256, 259, 271, 282, 290, 295, 300, - 305, 310, 318, 326, 331, 336, 343, 344, 348, 349, - 350, 357, 358, 362, 363, 367, 368, 372, 376, 377, - 380, 389, 400, 401, 402, 405, 406, 407, 411, 412, - 413, 414, 418, 419, 423, 425, 441, 443, 448, 451, - 459, 463, 467, 471, 475, 479, 486, 491, 498, 499, - 503, 507, 511, 515, 522, 529, 530, 535, 536, 540, - 541, 549, 569, 570, 572, 577, 578, 582, 583, 586, - 587, 612, 613, 617, 618, 622, 623, 627, 640, 641, - 645, 646, 650, 651, 655, 656, 660, 671, 672, 673, - 674, 678, 679, 684, 685, 686, 695, 701, 719, 720, - 724, 725, 731, 737, 745, 753, 789, 815, 819, 845, - 849, 862, 876, 891, 903, 919, 925, 930, 936, 943, - 944, 952, 956, 960, 966, 973, 978, 979, 980, 981, - 985, 986, 998, 999, 1004, 1011, 1018, 1025, 1057, 1068, - 1081, 1086, 1087, 1090, 1091, 1094, 1095, 1100, 1101, 1106, - 1110, 1116, 1137, 1145, 1158, 1161, 1165, 1165, 1167, 1172, - 1179, 1184, 1190, 1195, 1201, 1207, 1216, 1218, 1221, 1225, - 1226, 1227, 1228, 1229, 1230, 1235, 1255, 1256, 1257, 1258, - 1269, 1283, 1284, 1290, 1295, 1300, 1305, 1310, 1315, 1320, - 1325, 1331, 1337, 1343, 1350, 1372, 1381, 1385, 1393, 1397, - 1405, 1417, 1438, 1442, 1448, 1452, 1465, 1473, 1483, 1485, - 1487, 1489, 1491, 1493, 1498, 1499, 1506, 1515, 1523, 1532, - 1543, 1551, 1552, 1553, 1557, 1557, 1560, 1560, 1563, 1563, - 1566, 1566, 1569, 1569, 1572, 1572, 1575, 1575, 1578, 1578, - 1581, 1583, 1585, 1587, 1589, 1591, 1593, 1595, 1597, 1602, - 1607, 1613, 1620, 1625, 1631, 1637, 1668, 1670, 1672, 1680, - 1695, 1697, 1699, 1701, 1703, 1705, 1707, 1709, 1711, 1713, - 1715, 1717, 1719, 1721, 1724, 1726, 1728, 1731, 1733, 1735, - 1737, 1740, 1745, 1750, 1757, 1762, 1769, 1774, 1782, 1787, - 1796, 1804, 1812, 1820, 1838, 1846, 1854, 1862, 1870, 1878, - 1882, 1886, 1890, 1898, 1906, 1922, 1930, 1938, 1946, 1954, - 1962, 1970, 1974, 1978, 1982, 1986, 1994, 2002, 2010, 2018, - 2038, 2060, 2071, 2078, 2092, 2108, 2110, 2112, 2114, 2116, - 2118, 2120, 2122, 2124, 2126, 2128, 2130, 2132, 2134, 2136, - 2138, 2140, 2142, 2144, 2146, 2150, 2154, 2158, 2172, 2173, - 2174, 2181, 2193, 2208, 2220, 2222, 2234, 2245, 2269, 2282, - 2286, 2292, 2299, 2306, 2316, 2323, 2351, 2386, 2397, 2398, - 2405, 2411, 2415, 2419, 2423, 2427, 2431, 2435, 2439, 2443, - 2447, 2451, 2455, 2459, 2463, 2467, 2471, 2473, 2475, 2479, - 2488, 2493, 2500, 2515, 2522, 2526, 2530, 2534, 2538, 2552, - 2553, 2557, 2558, 2566, 2567, 2571, 2572, 2577, 2585, 2587, - 2601, 2604, 2631, 2632, 2635, 2636, 2647, 2653, 2660, 2669, - 2686, 2731, 2739, 2747, 2755, 2763, 2784, 2785, 2788, 2789, - 2793, 2803, 2804, 2806, 2807, 2808, 2811, 2812, 2815, 2816, - 2817, 2818, 2819, 2820, 2821, 2822, 2823, 2824, 2825, 2826, - 2829, 2831, 2836, 2838, 2843, 2845, 2847, 2849, 2851, 2853, - 2855, 2857, 2871, 2873, 2877, 2881, 2888, 2893, 2900, 2904, - 2910, 2914, 2923, 2934, 2935, 2939, 2943, 2950, 2951, 2952, - 2953, 2954, 2955, 2956, 2957, 2958, 2959, 2969, 2973, 2980, - 2987, 2988, 3004, 3008, 3013, 3017, 3032, 3037, 3041, 3044, - 3047, 3048, 3049, 3052, 3059, 3069, 3083, 3084, 3088, 3099, - 3100, 3103, 3104, 3107, 3111, 3118, 3122, 3126, 3134, 3145, - 3146, 3150, 3151, 3155, 3156, 3159, 3160, 3170, 3171, 3175, - 3176, 3179, 3195, 3203, 3211, 3233, 3234, 3245, 3249, 3276, - 3278, 3283, 3285, 3295, 3298, 3309, 3313, 3317, 3329, 3333, - 3342, 3349, 3381, 3385, 3389, 3393, 3397, 3401, 3405, 3411, - 3412, 3428, 3429, 3430, 3433, 3434, 3440, 3441, 3442, 3445, - 3446, 3447, 3450, 3451, 3452, 3455, 3456, 3459, 3461, 3466, - 3467, 3470, 3478, 3479, 3480, 3481, 3484, 3485, 7, 18, - 19, 23, 24, 25, 26, 7, 16, 34, 41, 46, - 47, 48, 49, 8, 33, 62, 66, 67, 72, 73, - 78, 79, 83, 84, 89, 90, 7, 16, 25, 34, - 43, 52, 5, 11, 7, 20, 9, 16, 26, 33, - 44, 45, 50, 51, 52, 57, 58, 59, 60, 61, - 65, 66, 67, 72, 73, 78, 82, 90, 91, 96, - 97, 98, 104, 109, 117, 118, 10, 16, 22, 32, - 33, 41, 52, 64, 72, 80, 87, 97, 99, 105, - 109, 113, 128, 135, 136, 137, 141, 142, 7, 16, - 8, 22, 36, 48, 56, 70, 71, 72, 73, 74, - 87, 88, 93, 94, 98, 99, 7, 21, 25, 32, - 43, 44, 50, 51, 9, 19, 2, 7, 14, 24, - 25, 32, 3, 10, 16, 22, 28, 37, 37, 39, - 40, 6, 8, 21, 34, 52, 74, 75, 76, 77, - 11, 24, 41, 42, 43, 48, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 191, 195, 203, 209, 210, 211, 216, 220, 5, 11, + 2, 7, 14, 24, 25, 32, 7, 18, 19, 23, + 27, 7, 21, 25, 32, 43, 44, 50, 51, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, @@ -209695,41 +208856,11 @@ static const yytype_uint16 yyrline[] = 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67 + 61, 61, 61, 61, 61, 61 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +#if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = @@ -209796,56 +208927,48 @@ static const char *const yytname[] = "SIMPLE", "SKIP", "SMALLINT", "SNAPSHOT", "SOME", "SQL_P", "STABLE", "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", "STORAGE", "STRICT_P", "STRIP_P", "STRUCT", "SUBSCRIPTION", "SUBSTRING", - "SYMMETRIC", "SYSID", "SYSTEM_P", "TABLE", "TABLES", "TABLESAMPLE", - "TABLESPACE", "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", "THEN", "TIME", - "TIMESTAMP", "TO", "TRAILING", "TRANSACTION", "TRANSFORM", "TREAT", - "TRIGGER", "TRIM", "TRUE_P", "TRUNCATE", "TRUSTED", "TRY_CAST", "TYPE_P", - "TYPES_P", "UNBOUNDED", "UNCOMMITTED", "UNENCRYPTED", "UNION", "UNIQUE", - "UNKNOWN", "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", "USER", "USING", - "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VALUE_P", "VALUES", - "VARCHAR", "VARIADIC", "VARYING", "VERBOSE", "VERSION_P", "VIEW", - "VIEWS", "VOLATILE", "WHEN", "WHERE", "WHITESPACE_P", "WINDOW", "WITH", - "WITHIN", "WITHOUT", "WORK", "WRAPPER", "WRITE_P", "XML_P", - "XMLATTRIBUTES", "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", - "XMLNAMESPACES", "XMLPARSE", "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", "alter_table_cmd", "alter_using", - "alter_generic_option_elem", "alter_table_cmds", "alter_generic_options", - "opt_set_data", "DeallocateStmt", "RenameStmt", "opt_column", - "InsertStmt", "insert_rest", "insert_target", "opt_conf_expr", - "opt_with_clause", "insert_column_item", "set_clause", "opt_on_conflict", - "index_elem", "returning_clause", "override_kind", "set_target_list", - "opt_collate", "opt_class", "insert_column_list", "set_clause_list", - "index_params", "set_target", "PragmaStmt", "CreateSeqStmt", - "OptSeqOptList", "ExecuteStmt", "execute_param_clause", "AlterSeqStmt", - "SeqOptList", "opt_with", "NumericOnly", "SeqOptElem", "opt_by", - "SignedIconst", "TransactionStmt", "opt_transaction", "CreateStmt", - "ConstraintAttributeSpec", "def_arg", "OptParenthesizedSeqOptList", - "generic_option_arg", "key_action", "ColConstraint", "ColConstraintElem", - "generic_option_elem", "key_update", "key_actions", - "create_generic_options", "OnCommitOption", "reloptions", - "opt_no_inherit", "TableConstraint", "TableLikeOption", "reloption_list", - "ExistingIndex", "ConstraintAttr", "OptWith", "definition", - "TableLikeOptionList", "generic_option_name", "ConstraintAttributeElem", - "columnDef", "generic_option_list", "def_list", "index_name", - "TableElement", "def_elem", "opt_definition", "OptTableElementList", - "columnElem", "opt_column_list", "ColQualList", "key_delete", - "reloption_elem", "columnList", "func_type", "ConstraintElem", - "TableElementList", "key_match", "TableLikeClause", "OptTemp", - "generated_when", "DropStmt", "drop_type_any_name", "drop_type_name", + "SUMMARIZE", "SYMMETRIC", "SYSID", "SYSTEM_P", "TABLE", "TABLES", + "TABLESAMPLE", "TABLESPACE", "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", + "THEN", "TIME", "TIMESTAMP", "TO", "TRAILING", "TRANSACTION", + "TRANSFORM", "TREAT", "TRIGGER", "TRIM", "TRUE_P", "TRUNCATE", "TRUSTED", + "TRY_CAST", "TYPE_P", "TYPES_P", "UNBOUNDED", "UNCOMMITTED", + "UNENCRYPTED", "UNION", "UNIQUE", "UNKNOWN", "UNLISTEN", "UNLOGGED", + "UNTIL", "UPDATE", "USER", "USING", "VACUUM", "VALID", "VALIDATE", + "VALIDATOR", "VALUE_P", "VALUES", "VARCHAR", "VARIADIC", "VARYING", + "VERBOSE", "VERSION_P", "VIEW", "VIEWS", "VOLATILE", "WHEN", "WHERE", + "WHITESPACE_P", "WINDOW", "WITH", "WITHIN", "WITHOUT", "WORK", "WRAPPER", + "WRITE_P", "XML_P", "XMLATTRIBUTES", "XMLCONCAT", "XMLELEMENT", + "XMLEXISTS", "XMLFOREST", "XMLNAMESPACES", "XMLPARSE", "XMLPI", + "XMLROOT", "XMLSERIALIZE", "XMLTABLE", "YEAR_P", "YEARS_P", "YES_P", + "ZONE", "NOT_LA", "NULLS_LA", "WITH_LA", "'<'", "'>'", "'='", + "POSTFIXOP", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", + "']'", "'('", "')'", "'.'", "';'", "','", "'{'", "'}'", "'#'", "'?'", + "':'", "$accept", "stmtblock", "stmtmulti", "stmt", "ExportStmt", + "ImportStmt", "VacuumStmt", "vacuum_option_elem", "opt_full", + "vacuum_option_list", "opt_freeze", "RenameStmt", "opt_column", + "AlterSeqStmt", "SeqOptList", "opt_with", "NumericOnly", "SeqOptElem", + "opt_by", "SignedIconst", "InsertStmt", "insert_rest", "insert_target", + "opt_conf_expr", "opt_with_clause", "insert_column_item", "set_clause", + "opt_on_conflict", "index_elem", "returning_clause", "override_kind", + "set_target_list", "opt_collate", "opt_class", "insert_column_list", + "set_clause_list", "index_params", "set_target", "IndexStmt", + "access_method", "access_method_clause", "opt_concurrently", + "opt_index_name", "opt_reloptions", "opt_unique", "CreateSchemaStmt", + "OptSchemaEltList", "schema_stmt", "PrepareStmt", "prep_type_clause", + "PreparableStmt", "CreateSeqStmt", "OptSeqOptList", "ExplainStmt", + "opt_verbose", "explain_option_arg", "ExplainableStmt", + "NonReservedWord", "NonReservedWord_or_Sconst", "explain_option_list", + "analyze_keyword", "opt_boolean_or_string", "explain_option_elem", + "explain_option_name", "ExecuteStmt", "execute_param_clause", + "TransactionStmt", "opt_transaction", "VariableSetStmt", "set_rest", + "generic_set", "var_value", "zone_value", "var_list", "AlterTableStmt", + "alter_identity_column_option_list", "alter_column_default", + "alter_identity_column_option", "alter_generic_option_list", + "alter_table_cmd", "alter_using", "alter_generic_option_elem", + "alter_table_cmds", "alter_generic_options", "opt_set_data", + "DeallocateStmt", "DropStmt", "drop_type_any_name", "drop_type_name", "any_name_list", "opt_drop_behavior", "drop_type_name_on_any_name", - "CreateFunctionStmt", "macro_alias", "param_list", "UpdateStmt", - "CopyStmt", "copy_from", "copy_delimiter", "copy_generic_opt_arg_list", - "opt_using", "opt_as", "opt_program", "copy_options", - "copy_generic_opt_arg", "copy_generic_opt_elem", "opt_oids", - "copy_opt_list", "opt_binary", "copy_opt_item", - "copy_generic_opt_arg_list_item", "copy_file_name", - "copy_generic_opt_list", "SelectStmt", "select_with_parens", + "LoadStmt", "file_name", "SelectStmt", "select_with_parens", "select_no_parens", "select_clause", "simple_select", "with_clause", "cte_list", "common_table_expr", "into_clause", "OptTempTableName", "opt_table", "all_or_distinct", "distinct_clause", "opt_all_clause", @@ -209875,3649 +208998,3315 @@ static const char *const yytname[] = "millisecond_keyword", "microsecond_keyword", "opt_interval", "a_expr", "b_expr", "c_expr", "func_application", "func_expr", "func_expr_windowless", "func_expr_common_subexpr", - "within_group_clause", "filter_clause", "window_clause", - "window_definition_list", "window_definition", "over_clause", - "window_specification", "opt_existing_window_name", - "opt_partition_clause", "opt_frame_clause", "frame_extent", - "frame_bound", "qualified_row", "row", "dict_arg", "dict_arguments", - "sub_type", "all_Op", "MathOp", "qual_Op", "qual_all_Op", "subquery_Op", - "any_operator", "expr_list", "opt_expr_list", "func_arg_list", - "func_arg_expr", "type_list", "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", - "columnref", "indirection_el", "opt_slice_bound", "indirection", - "opt_indirection", "opt_asymmetric", "opt_target_list", "target_list", - "target_el", "qualified_name_list", "qualified_name", "name_list", - "name", "attr_name", "func_name", "AexprConst", "Iconst", "Sconst", - "ColId", "ColIdOrString", "type_function_name", "function_name_token", - "type_name_token", "any_name", "attrs", "opt_name_list", "param_name", - "ColLabel", "ColLabelOrString", "PrepareStmt", "prep_type_clause", - "PreparableStmt", "CreateSchemaStmt", "OptSchemaEltList", "schema_stmt", - "IndexStmt", "access_method", "access_method_clause", "opt_concurrently", - "opt_index_name", "opt_reloptions", "opt_unique", - "AlterObjectSchemaStmt", "CheckPointStmt", "ExportStmt", "ImportStmt", - "ExplainStmt", "opt_verbose", "explain_option_arg", "ExplainableStmt", - "NonReservedWord", "NonReservedWord_or_Sconst", "explain_option_list", - "analyze_keyword", "opt_boolean_or_string", "explain_option_elem", - "explain_option_name", "VariableSetStmt", "set_rest", "generic_set", - "var_value", "zone_value", "var_list", "LoadStmt", "file_name", - "VacuumStmt", "vacuum_option_elem", "opt_full", "vacuum_option_list", - "opt_freeze", "DeleteStmt", "relation_expr_opt_alias", - "where_or_current_clause", "using_clause", "AnalyzeStmt", - "VariableResetStmt", "generic_reset", "reset_rest", "VariableShowStmt", - "show_or_describe", "var_name", "CallStmt", "ViewStmt", - "opt_check_option", "CreateAsStmt", "opt_with_data", "create_as_target", - "unreserved_keyword", "col_name_keyword", "func_name_keyword", - "type_name_keyword", "other_keyword", "type_func_name_keyword", - "reserved_keyword", 0 -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const yytype_uint16 yytoknum[] = -{ - 0, 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, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, - 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, - 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, - 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, - 725, 726, 727, 60, 62, 61, 728, 43, 45, 42, - 47, 37, 94, 729, 91, 93, 40, 41, 46, 59, - 44, 123, 125, 35, 63, 58 -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 496, 497, 498, 498, 499, 499, 499, 499, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 499, 500, - 500, 500, 500, 500, 500, 500, 500, 501, 501, 502, - 502, 503, 503, 503, 503, 504, 504, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 506, 506, 507, 507, - 507, 507, 508, 508, 509, 510, 510, 510, 511, 511, - 511, 511, 512, 512, 512, 512, 512, 512, 512, 512, - 512, 512, 512, 512, 512, 513, 513, 514, 515, 515, - 515, 515, 515, 516, 516, 517, 517, 517, 518, 518, - 519, 520, 520, 521, 521, 521, 522, 522, 522, 523, - 523, 524, 524, 525, 525, 526, 526, 527, 527, 528, - 528, 529, 529, 530, 530, 531, 532, 532, 532, 533, - 533, 534, 534, 535, 535, 535, 536, 536, 537, 537, - 538, 538, 539, 539, 539, 540, 540, 540, 540, 541, - 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, - 541, 541, 541, 542, 542, 543, 543, 543, 544, 544, - 544, 544, 544, 544, 545, 545, 545, 546, 546, 547, - 547, 548, 548, 548, 548, 548, 548, 549, 549, 550, - 551, 551, 551, 551, 551, 552, 552, 552, 552, 553, - 553, 553, 553, 553, 553, 553, 553, 554, 555, 556, - 556, 556, 556, 556, 557, 557, 558, 558, 558, 558, - 559, 560, 560, 561, 561, 562, 562, 562, 562, 562, - 562, 562, 562, 563, 563, 564, 565, 565, 565, 565, - 566, 566, 566, 566, 567, 568, 568, 568, 569, 570, - 570, 570, 570, 570, 570, 571, 572, 572, 573, 573, - 574, 575, 575, 575, 576, 576, 577, 577, 578, 578, - 579, 580, 580, 581, 581, 582, 583, 583, 583, 583, - 584, 584, 585, 585, 585, 586, 586, 586, 586, 586, - 586, 587, 587, 588, 588, 588, 588, 589, 590, 590, - 590, 590, 590, 590, 590, 590, 591, 591, 592, 592, - 592, 592, 592, 592, 593, 593, 593, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 593, 593, 593, 594, - 594, 594, 594, 594, 594, 594, 595, 595, 596, 596, - 596, 597, 597, 597, 598, 599, 599, 600, 600, 601, - 602, 602, 603, 603, 604, 604, 605, 605, 606, 606, - 607, 607, 608, 608, 609, 609, 610, 610, 610, 610, - 610, 611, 612, 612, 613, 613, 614, 614, 615, 615, - 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, - 615, 615, 616, 617, 617, 617, 618, 618, 619, 619, - 620, 620, 621, 621, 621, 621, 621, 621, 621, 621, - 622, 622, 623, 623, 623, 623, 623, 623, 623, 624, - 624, 624, 625, 625, 626, 627, 627, 628, 628, 628, - 628, 628, 628, 628, 628, 628, 629, 629, 630, 630, - 630, 631, 631, 632, 632, 633, 633, 634, 635, 635, - 636, 636, 637, 637, 637, 638, 638, 638, 639, 639, - 639, 639, 640, 640, 641, 641, 641, 641, 642, 642, - 643, 643, 643, 643, 643, 643, 644, 644, 645, 645, - 646, 646, 646, 646, 647, 648, 648, 649, 649, 650, - 650, 651, 652, 652, 652, 653, 653, 654, 654, 655, - 655, 656, 656, 657, 657, 658, 658, 659, 660, 660, - 661, 661, 662, 662, 663, 663, 664, 665, 665, 665, - 665, 666, 666, 667, 667, 667, 668, 668, 669, 669, - 670, 670, 671, 671, 671, 671, 671, 671, 671, 672, - 672, 672, 672, 672, 672, 673, 673, 673, 673, 674, - 674, 675, 675, 675, 675, 675, 676, 676, 676, 676, - 677, 677, 678, 678, 679, 679, 679, 679, 680, 680, - 681, 682, 682, 683, 683, 684, 684, 685, 685, 686, - 686, 687, 688, 688, 689, 689, 690, 690, 691, 691, - 691, 691, 691, 691, 691, 691, 692, 692, 692, 693, - 693, 693, 693, 693, 693, 693, 694, 694, 694, 694, - 695, 696, 696, 697, 697, 697, 697, 697, 697, 697, - 697, 697, 697, 697, 698, 698, 699, 699, 700, 700, - 701, 702, 703, 703, 704, 704, 705, 706, 707, 707, - 707, 707, 707, 707, 708, 708, 709, 709, 709, 709, - 710, 711, 711, 711, 712, 712, 713, 713, 714, 714, - 715, 715, 716, 716, 717, 717, 718, 718, 719, 719, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 722, 723, 723, - 723, 723, 723, 723, 723, 723, 723, 723, 723, 724, - 724, 724, 724, 724, 724, 724, 725, 725, 726, 726, - 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, - 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, - 727, 727, 727, 727, 727, 727, 727, 727, 727, 728, - 728, 729, 729, 730, 730, 731, 731, 732, 733, 733, - 733, 734, 735, 735, 736, 736, 737, 737, 737, 738, - 738, 739, 739, 739, 739, 739, 740, 740, 741, 741, - 742, 743, 743, 744, 744, 744, 745, 745, 746, 746, - 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, - 747, 747, 748, 748, 749, 749, 749, 749, 749, 749, - 749, 749, 750, 750, 751, 751, 752, 752, 753, 753, - 754, 754, 754, 755, 755, 756, 756, 757, 757, 757, - 757, 757, 757, 757, 757, 757, 757, 758, 758, 759, - 760, 760, 761, 761, 761, 761, 761, 761, 762, 763, - 764, 764, 764, 765, 765, 766, 767, 767, 768, 769, - 769, 770, 770, 771, 771, 772, 772, 772, 772, 773, - 773, 774, 774, 775, 775, 776, 776, 777, 777, 778, - 778, 779, 779, 779, 779, 780, 780, 781, 781, 782, - 782, 783, 784, 785, 785, 786, 786, 786, 786, 786, - 786, 786, 786, 786, 786, 786, 786, 786, 786, 787, - 788, 789, 789, 789, 790, 790, 791, 791, 791, 792, - 792, 792, 793, 793, 793, 794, 794, 795, 795, 796, - 796, 797, 798, 798, 798, 798, 799, 799, 800, 801, - 801, 802, 802, 802, 802, 803, 803, 804, 804, 805, - 805, 805, 805, 806, 806, 807, 808, 808, 809, 809, - 810, 810, 811, 811, 812, 812, 813, 813, 813, 813, - 813, 813, 814, 814, 815, 816, 817, 817, 817, 817, - 818, 818, 819, 819, 819, 820, 820, 820, 820, 820, - 821, 821, 821, 822, 822, 823, 823, 824, 824, 825, - 825, 825, 825, 826, 827, 827, 828, 828, 828, 829, - 829, 829, 829, 830, 830, 830, 830, 831, 831, 832, - 832, 832, 832, 832, 832, 832, 833, 833, 834, 835, - 836, 836, 836, 836, 836, 837, 837, 837, 837, 837, - 838, 838, 839, 839, 840, 840, 841, 842, 842, 842, - 843, 843, 844, 844, 845, 845, 846, 847, 847, 848, - 848, 848, 849, 849, 849, 849, 849, 850, 850, 851, - 851, 852, 853, 853, 853, 853, 854, 854, 854, 854, - 855, 855, 856, 856, 856, 857, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 859, 859, 859, 859, 859, - 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, - 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, - 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, - 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, - 859, 859, 859, 859, 859, 859, 860, 860, 860, 860, - 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, - 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, - 860, 860, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, 863, 863, - 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, - 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, - 863, 863, 863, 863, 863, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 1, 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, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, - 6, 4, 6, 4, 6, 4, 6, 1, 2, 3, - 2, 1, 3, 2, 3, 1, 3, 2, 5, 3, - 6, 4, 6, 6, 6, 5, 5, 6, 9, 4, - 5, 7, 6, 4, 8, 4, 2, 4, 3, 6, - 4, 2, 2, 2, 2, 1, 2, 0, 1, 2, - 2, 2, 1, 3, 4, 2, 1, 0, 2, 3, - 2, 3, 6, 6, 8, 6, 8, 6, 8, 6, - 8, 8, 10, 8, 10, 1, 0, 7, 1, 4, - 4, 7, 2, 1, 3, 4, 3, 0, 1, 0, - 2, 3, 5, 8, 5, 0, 5, 5, 7, 2, - 0, 1, 1, 1, 3, 2, 0, 1, 0, 1, - 3, 1, 3, 1, 3, 2, 2, 4, 5, 5, - 8, 1, 0, 3, 9, 12, 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, 2, 2, - 2, 2, 2, 2, 1, 1, 0, 9, 12, 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, 2, 5, 5, 2, 3, 1, - 1, 2, 2, 0, 4, 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, 4, 1, 3, 1, 3, - 1, 1, 1, 1, 3, 1, 2, 0, 1, 0, - 1, 3, 0, 2, 0, 3, 3, 1, 5, 3, - 1, 3, 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, 1, 2, - 1, 2, 1, 1, 1, 3, 3, 3, 3, 2, - 2, 1, 3, 1, 1, 1, 1, 3, 1, 1, - 0, 1, 1, 1, 6, 1, 1, 2, 3, 8, - 11, 9, 1, 1, 3, 0, 1, 3, 1, 0, - 1, 0, 1, 0, 1, 3, 1, 1, 1, 3, - 0, 2, 2, 0, 2, 0, 1, 0, 1, 1, - 1, 3, 3, 1, 1, 3, 3, 3, 3, 4, - 3, 2, 1, 1, 1, 1, 1, 3, 1, 1, - 3, 3, 1, 2, 4, 4, 2, 3, 5, 5, - 1, 1, 10, 10, 1, 2, 4, 4, 4, 2, - 2, 3, 1, 3, 6, 2, 0, 3, 3, 4, - 4, 4, 4, 3, 2, 1, 1, 0, 1, 1, - 0, 1, 5, 1, 0, 1, 0, 3, 1, 3, - 4, 3, 1, 1, 0, 2, 2, 0, 2, 2, - 1, 1, 1, 0, 2, 4, 5, 4, 2, 3, - 2, 2, 2, 2, 1, 2, 3, 0, 1, 0, - 5, 1, 4, 6, 2, 1, 0, 4, 0, 1, - 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, - 1, 3, 0, 1, 3, 1, 1, 2, 2, 0, - 1, 3, 1, 0, 1, 2, 3, 2, 4, 2, - 3, 2, 0, 1, 2, 0, 4, 5, 2, 0, - 1, 3, 3, 3, 3, 3, 3, 1, 4, 3, - 4, 5, 4, 5, 4, 5, 2, 4, 1, 1, - 0, 1, 4, 5, 4, 0, 2, 2, 2, 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, 2, 3, - 5, 6, 2, 3, 5, 5, 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, 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, 2, 2, 3, 3, 2, - 2, 3, 3, 5, 4, 6, 3, 5, 4, 6, - 4, 6, 5, 7, 3, 2, 4, 3, 2, 1, - 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, - 4, 5, 6, 6, 7, 6, 7, 6, 7, 3, - 4, 4, 6, 1, 4, 1, 3, 2, 2, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 2, 5, 6, 6, 7, 1, 1, - 2, 2, 2, 4, 1, 2, 1, 2, 2, 3, - 5, 6, 8, 6, 6, 4, 4, 1, 1, 1, - 5, 1, 1, 4, 1, 4, 1, 4, 1, 4, - 1, 1, 1, 1, 1, 1, 6, 6, 4, 4, - 4, 4, 6, 5, 5, 5, 4, 6, 4, 5, - 0, 5, 0, 2, 0, 1, 3, 3, 2, 2, - 0, 6, 1, 0, 3, 0, 2, 2, 0, 1, - 4, 2, 2, 2, 2, 2, 4, 3, 1, 5, - 3, 1, 3, 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, 0, 1, 3, - 1, 3, 3, 1, 3, 3, 0, 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, 5, 1, 2, 4, 2, - 0, 1, 0, 1, 2, 2, 2, 3, 5, 1, - 0, 1, 2, 0, 2, 1, 0, 1, 0, 1, - 3, 3, 2, 1, 1, 1, 3, 1, 2, 1, - 3, 1, 1, 1, 2, 1, 1, 2, 1, 1, - 2, 6, 2, 5, 3, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, - 0, 1, 1, 1, 1, 1, 1, 1, 5, 3, - 0, 1, 1, 1, 1, 4, 7, 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, 2, 1, 4, 3, 2, 4, 3, 5, - 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, - 1, 1, 1, 2, 1, 1, 2, 3, 3, 1, - 3, 3, 2, 3, 3, 3, 3, 1, 1, 1, - 1, 3, 5, 1, 1, 1, 1, 3, 2, 1, - 4, 5, 5, 4, 6, 1, 1, 1, 1, 1, - 1, 0, 1, 3, 1, 0, 7, 1, 2, 3, - 2, 0, 2, 0, 2, 4, 2, 1, 1, 1, - 2, 3, 2, 2, 3, 4, 2, 1, 1, 1, - 3, 2, 9, 11, 12, 14, 3, 4, 4, 0, - 7, 10, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1 + "within_group_clause", "filter_clause", "window_clause", + "window_definition_list", "window_definition", "over_clause", + "window_specification", "opt_existing_window_name", + "opt_partition_clause", "opt_frame_clause", "frame_extent", + "frame_bound", "qualified_row", "row", "dict_arg", "dict_arguments", + "sub_type", "all_Op", "MathOp", "qual_Op", "qual_all_Op", "subquery_Op", + "any_operator", "expr_list", "opt_expr_list", "func_arg_list", + "func_arg_expr", "type_list", "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", + "columnref", "indirection_el", "opt_slice_bound", "indirection", + "opt_indirection", "opt_asymmetric", "opt_target_list", "target_list", + "target_el", "qualified_name_list", "qualified_name", "name_list", + "name", "attr_name", "func_name", "AexprConst", "Iconst", "Sconst", + "ColId", "ColIdOrString", "type_function_name", "function_name_token", + "type_name_token", "any_name", "attrs", "opt_name_list", "param_name", + "ColLabel", "ColLabelOrString", "ViewStmt", "opt_check_option", + "CreateAsStmt", "opt_with_data", "create_as_target", "PragmaStmt", + "CreateStmt", "ConstraintAttributeSpec", "def_arg", + "OptParenthesizedSeqOptList", "generic_option_arg", "key_action", + "ColConstraint", "ColConstraintElem", "generic_option_elem", + "key_update", "key_actions", "create_generic_options", "OnCommitOption", + "reloptions", "opt_no_inherit", "TableConstraint", "TableLikeOption", + "reloption_list", "ExistingIndex", "ConstraintAttr", "OptWith", + "definition", "TableLikeOptionList", "generic_option_name", + "ConstraintAttributeElem", "columnDef", "generic_option_list", + "def_list", "index_name", "TableElement", "def_elem", "opt_definition", + "OptTableElementList", "columnElem", "opt_column_list", "ColQualList", + "key_delete", "reloption_elem", "columnList", "func_type", + "ConstraintElem", "TableElementList", "key_match", "TableLikeClause", + "OptTemp", "generated_when", "AlterObjectSchemaStmt", "UpdateStmt", + "AnalyzeStmt", "VariableShowStmt", "show_or_describe", "var_name", + "CallStmt", "CopyStmt", "copy_from", "copy_delimiter", + "copy_generic_opt_arg_list", "opt_using", "opt_as", "opt_program", + "copy_options", "copy_generic_opt_arg", "copy_generic_opt_elem", + "opt_oids", "copy_opt_list", "opt_binary", "copy_opt_item", + "copy_generic_opt_arg_list_item", "copy_file_name", + "copy_generic_opt_list", "CheckPointStmt", "VariableResetStmt", + "generic_reset", "reset_rest", "CreateFunctionStmt", "macro_alias", + "param_list", "DeleteStmt", "relation_expr_opt_alias", + "where_or_current_clause", "using_clause", "unreserved_keyword", + "col_name_keyword", "func_name_keyword", "type_name_keyword", + "other_keyword", "type_func_name_keyword", "reserved_keyword", YY_NULLPTR }; +#endif -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const yytype_uint16 yydefact[] = -{ - 129, 206, 0, 1108, 1107, 206, 0, 1083, 206, 407, - 335, 0, 1178, 0, 206, 0, 129, 0, 0, 0, - 0, 0, 0, 0, 206, 474, 0, 1177, 206, 0, - 1151, 0, 0, 0, 0, 0, 2, 4, 7, 17, - 29, 25, 0, 27, 15, 20, 6, 31, 16, 19, - 13, 32, 11, 30, 441, 428, 476, 440, 128, 444, - 28, 14, 24, 5, 10, 22, 23, 21, 1091, 35, - 26, 33, 18, 8, 34, 36, 0, 9, 37, 12, - 205, 204, 198, 0, 0, 0, 0, 0, 199, 1021, - 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, - 1206, 1207, 1208, 1209, 1210, 1211, 1546, 1212, 1213, 1214, - 1495, 1496, 1547, 1497, 1498, 1215, 1216, 1217, 1218, 1219, - 1220, 1221, 1222, 1499, 1500, 1223, 1224, 1225, 1226, 1227, - 1501, 1548, 1228, 1229, 1230, 1231, 1232, 1549, 1233, 1234, - 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1550, 1242, 1243, - 1244, 1551, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1502, - 1503, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, - 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, - 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1504, - 1280, 1281, 1282, 1283, 1505, 1284, 1285, 1286, 1506, 1287, - 1288, 1289, 1552, 1553, 1290, 1291, 1292, 1554, 1293, 1294, - 1507, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1555, 1302, - 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, - 1556, 1508, 1313, 1314, 1315, 1316, 1509, 1510, 1511, 1317, - 1557, 1558, 1318, 1559, 1319, 1320, 1321, 1322, 1323, 1324, - 1560, 1325, 1561, 1326, 1327, 1328, 1329, 1330, 1331, 1332, - 1333, 1512, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, - 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, - 1513, 1563, 1514, 1352, 1353, 1354, 1515, 1355, 1356, 1564, - 1357, 1516, 1358, 1517, 1359, 1360, 1361, 1362, 1363, 1364, - 1365, 1366, 1367, 1518, 1565, 1368, 1566, 1519, 1369, 1370, - 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, - 1520, 1381, 1382, 1521, 1383, 1384, 1385, 1386, 1387, 1388, - 1389, 1390, 1391, 1392, 1393, 1394, 1522, 1395, 1396, 1397, - 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, - 1408, 1409, 1410, 1411, 1412, 1567, 1413, 1414, 1415, 1523, - 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, - 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1524, 1433, 1434, - 1435, 1568, 1436, 1437, 1525, 1438, 1439, 1440, 1441, 1442, - 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1526, 1450, 1527, - 1451, 1452, 1453, 1570, 1454, 1455, 1456, 1457, 1458, 1528, - 1529, 1459, 1460, 1530, 1461, 1531, 1462, 1463, 1532, 1464, - 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, - 1475, 1476, 1477, 1478, 1533, 1534, 1479, 1571, 1480, 1481, - 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1535, - 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, - 1491, 1492, 1493, 1494, 1181, 0, 0, 1003, 1022, 1023, - 1031, 201, 406, 129, 0, 375, 0, 0, 376, 0, - 0, 329, 328, 1074, 334, 0, 0, 0, 1021, 100, - 1512, 1383, 1526, 98, 1001, 1022, 0, 352, 353, 0, - 361, 0, 346, 350, 347, 0, 371, 363, 372, 364, - 345, 365, 354, 344, 0, 373, 348, 0, 0, 0, - 202, 167, 335, 129, 0, 1096, 1097, 1095, 1086, 1091, - 1098, 1099, 0, 1082, 0, 1020, 1139, 1138, 156, 1050, - 1168, 1528, 1459, 1179, 1169, 1166, 1167, 203, 473, 471, - 0, 988, 1328, 1420, 1431, 1528, 1116, 1119, 0, 200, - 1025, 0, 445, 594, 1024, 997, 1150, 0, 1155, 0, - 1397, 449, 452, 1040, 450, 441, 0, 0, 1, 129, - 0, 0, 0, 470, 470, 0, 470, 0, 433, 441, - 436, 440, 0, 1090, 1164, 1176, 1528, 1459, 1533, 1172, - 1173, 1301, 0, 0, 1301, 0, 1301, 0, 1301, 0, - 0, 980, 0, 981, 1004, 1052, 1053, 1051, 0, 1054, - 302, 333, 332, 331, 330, 335, 1301, 1058, 0, 0, - 0, 0, 0, 1069, 101, 99, 359, 360, 0, 351, - 349, 0, 1301, 370, 1035, 366, 1301, 370, 999, 1301, - 0, 0, 163, 0, 1088, 1100, 1597, 1598, 1599, 1600, - 1602, 1601, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, - 1613, 1611, 1612, 1614, 1615, 1616, 1617, 1618, 1619, 1620, - 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, - 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, - 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1114, 0, 1115, - 1105, 1094, 1101, 1102, 129, 405, 1085, 0, 0, 0, - 0, 1170, 0, 0, 0, 1006, 1008, 1009, 910, 1019, - 983, 0, 1496, 1497, 1498, 972, 0, 1499, 1500, 1501, - 1548, 844, 831, 840, 845, 832, 834, 841, 1502, 1503, - 783, 1267, 1504, 1505, 1017, 1506, 1509, 1510, 1511, 836, - 838, 1513, 1514, 0, 1018, 1516, 1517, 1364, 1519, 1520, - 1522, 1523, 842, 1525, 1527, 1528, 1529, 1530, 1531, 1016, - 1532, 843, 1534, 0, 0, 0, 994, 927, 0, 0, - 0, 983, 816, 0, 636, 637, 658, 659, 638, 664, - 665, 667, 639, 0, 993, 716, 860, 983, 827, 888, - 759, 0, 814, 808, 456, 989, 0, 809, 1005, 983, - 973, 456, 987, 1117, 1122, 1118, 0, 0, 0, 0, - 0, 596, 595, 998, 1149, 1147, 1148, 1146, 1145, 1152, - 0, 1154, 1091, 924, 0, 451, 0, 0, 0, 431, - 430, 3, 0, 0, 1157, 0, 468, 469, 0, 0, - 0, 0, 0, 0, 0, 0, 543, 490, 491, 493, - 540, 544, 552, 0, 437, 0, 1040, 1174, 0, 0, - 0, 116, 116, 0, 0, 0, 0, 0, 92, 41, - 85, 0, 0, 0, 0, 181, 194, 0, 0, 0, - 0, 0, 191, 0, 0, 174, 43, 168, 170, 0, - 116, 0, 39, 0, 0, 0, 45, 1021, 0, 1546, - 1547, 1548, 1549, 1550, 845, 0, 1552, 1553, 1554, 1555, - 1556, 1557, 1558, 1559, 1560, 1561, 1512, 1563, 1564, 1565, - 1566, 1567, 1568, 1526, 1570, 1532, 0, 1571, 0, 819, - 930, 476, 928, 1041, 0, 1022, 1028, 979, 0, 1042, - 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, - 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, - 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, - 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, - 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, - 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, - 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, - 1745, 1746, 1635, 1747, 1748, 1749, 1750, 1751, 976, 975, - 1002, 1044, 1043, 1045, 982, 0, 0, 403, 0, 0, - 1055, 0, 1301, 162, 1301, 302, 0, 302, 0, 0, - 1068, 1071, 362, 358, 356, 355, 357, 0, 368, 369, - 0, 339, 0, 1036, 0, 0, 341, 0, 0, 0, - 0, 129, 0, 175, 1110, 1111, 1109, 0, 0, 1093, - 178, 195, 1104, 1113, 1103, 1112, 1092, 1087, 0, 1084, - 394, 1128, 1127, 1136, 157, 0, 1032, 1572, 646, 1573, - 675, 653, 675, 675, 1574, 1575, 1576, 1577, 642, 642, - 655, 1578, 1579, 1580, 1581, 1582, 643, 644, 680, 1583, - 1584, 1585, 1586, 1587, 0, 0, 1588, 675, 1589, 642, - 1590, 1591, 647, 1592, 616, 0, 1593, 645, 617, 1594, - 683, 683, 1595, 670, 1596, 0, 933, 628, 629, 630, - 631, 656, 657, 632, 662, 663, 633, 715, 0, 642, - 1033, 1034, 129, 1171, 1180, 0, 812, 927, 674, 661, - 971, 0, 0, 669, 668, 0, 0, 0, 0, 0, - 651, 650, 649, 818, 936, 0, 648, 0, 0, 675, - 675, 673, 739, 0, 652, 0, 0, 951, 0, 957, - 0, 0, 0, 679, 0, 677, 0, 0, 0, 740, - 720, 721, 926, 0, 816, 924, 0, 891, 0, 1024, - 0, 810, 811, 817, 1012, 0, 0, 715, 715, 992, - 910, 0, 907, 908, 909, 0, 0, 0, 986, 0, - 918, 920, 0, 0, 755, 916, 0, 758, 0, 0, - 0, 0, 904, 905, 906, 898, 899, 900, 901, 902, - 903, 914, 897, 736, 0, 0, 862, 815, 0, 0, - 735, 0, 0, 0, 559, 0, 1010, 1007, 974, 559, - 1130, 1134, 1135, 1133, 0, 1129, 1121, 1120, 1125, 1123, - 1126, 1124, 0, 1143, 0, 1140, 556, 0, 453, 0, - 0, 1163, 0, 123, 0, 1158, 0, 448, 447, 477, - 478, 484, 446, 529, 530, 0, 0, 0, 0, 549, - 547, 520, 494, 519, 0, 0, 498, 0, 521, 716, - 542, 435, 488, 489, 492, 434, 0, 545, 0, 555, - 543, 493, 0, 1165, 1175, 0, 0, 0, 0, 0, - 1301, 0, 0, 76, 57, 254, 0, 115, 0, 0, - 0, 0, 0, 0, 0, 84, 81, 82, 83, 0, - 0, 0, 0, 179, 180, 193, 0, 184, 185, 182, - 186, 187, 0, 0, 172, 173, 0, 0, 0, 0, - 171, 0, 0, 0, 0, 0, 0, 0, 0, 476, - 476, 476, 825, 0, 0, 475, 0, 0, 977, 980, - 393, 310, 0, 300, 0, 0, 0, 0, 0, 335, - 1061, 1059, 1057, 1060, 1062, 0, 0, 159, 161, 0, - 299, 273, 0, 1073, 377, 0, 0, 1301, 1070, 290, - 0, 370, 367, 1037, 0, 370, 1000, 0, 370, 166, - 1301, 302, 0, 1089, 1106, 176, 196, 177, 197, 426, - 0, 400, 408, 413, 391, 0, 391, 0, 410, 414, - 391, 409, 391, 404, 0, 158, 0, 0, 628, 0, - 622, 618, 688, 689, 690, 691, 698, 699, 696, 697, - 692, 693, 686, 687, 694, 695, 684, 685, 0, 700, - 701, 702, 703, 704, 705, 706, 707, 634, 1049, 0, - 640, 1048, 0, 984, 0, 0, 0, 970, 966, 0, - 0, 0, 0, 0, 0, 937, 938, 939, 940, 941, - 942, 943, 944, 945, 0, 0, 946, 0, 0, 0, - 672, 671, 0, 896, 907, 908, 909, 904, 905, 906, - 898, 899, 900, 901, 902, 903, 922, 0, 0, 0, - 0, 0, 0, 0, 0, 785, 0, 0, 808, 887, - 0, 924, 956, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 924, 962, 0, 0, 761, 983, 0, - 0, 760, 0, 0, 0, 1014, 1015, 717, 731, 732, - 733, 737, 1047, 1046, 991, 0, 985, 0, 0, 718, - 741, 746, 0, 963, 779, 0, 767, 0, 754, 0, - 765, 769, 742, 757, 0, 738, 0, 986, 919, 921, - 0, 917, 0, 728, 729, 730, 722, 723, 724, 725, - 726, 727, 734, 895, 893, 894, 0, 0, 0, 870, - 762, 0, 0, 764, 763, 1293, 1328, 0, 467, 467, - 467, 455, 465, 990, 0, 608, 476, 608, 0, 715, - 597, 1040, 1153, 1141, 1142, 925, 1039, 129, 0, 1161, - 0, 0, 0, 135, 118, 0, 1159, 0, 151, 559, - 0, 983, 0, 482, 483, 0, 487, 1523, 1416, 0, - 0, 0, 0, 522, 550, 0, 541, 0, 1006, 523, - 1005, 524, 527, 528, 499, 551, 995, 553, 0, 546, - 439, 438, 557, 0, 42, 0, 1301, 59, 0, 0, - 0, 0, 0, 0, 209, 245, 209, 97, 1301, 370, - 1301, 370, 1200, 1268, 1432, 0, 55, 88, 0, 278, - 109, 0, 263, 307, 78, 93, 102, 0, 0, 44, - 169, 183, 188, 105, 192, 189, 1078, 190, 116, 0, - 40, 0, 103, 0, 1076, 0, 0, 46, 107, 1080, - 0, 0, 0, 0, 929, 820, 931, 932, 979, 0, - 392, 0, 301, 0, 402, 382, 383, 393, 0, 302, - 1058, 0, 0, 0, 0, 0, 293, 291, 321, 0, - 298, 292, 300, 0, 0, 249, 0, 1194, 0, 0, - 378, 374, 0, 0, 338, 1038, 340, 0, 342, 0, - 0, 395, 0, 398, 0, 397, 401, 396, 390, 0, - 421, 0, 0, 0, 0, 0, 0, 1137, 0, 623, - 619, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 934, 472, 784, 0, 0, 0, 967, 0, 0, 858, - 0, 833, 835, 641, 848, 0, 654, 837, 839, 0, - 911, 0, 0, 0, 849, 787, 788, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 803, 802, 850, 886, 0, 0, - 954, 955, 851, 682, 681, 683, 683, 0, 0, 961, - 0, 0, 0, 856, 0, 813, 925, 892, 890, 666, - 715, 0, 0, 0, 0, 0, 0, 0, 768, 756, - 0, 766, 770, 0, 0, 0, 750, 0, 0, 748, - 780, 744, 0, 0, 781, 0, 0, 0, 826, 467, - 467, 467, 467, 464, 466, 0, 0, 0, 0, 1416, - 0, 580, 558, 560, 567, 580, 585, 828, 606, 829, - 1024, 0, 532, 0, 532, 0, 1131, 1144, 0, 1162, - 0, 140, 122, 142, 141, 0, 149, 0, 983, 0, - 140, 124, 0, 143, 0, 1161, 0, 155, 479, 0, - 912, 487, 0, 481, 526, 525, 0, 497, 548, 495, - 0, 554, 0, 0, 0, 253, 0, 0, 0, 209, - 0, 0, 317, 0, 304, 77, 0, 0, 0, 51, - 96, 69, 61, 47, 75, 0, 0, 80, 0, 73, - 90, 91, 89, 94, 0, 237, 219, 250, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 823, 824, 821, 476, 978, 424, 425, 174, 423, - 311, 0, 0, 1073, 1056, 0, 0, 162, 302, 0, - 277, 273, 0, 271, 270, 272, 0, 1195, 167, 0, - 1190, 1072, 0, 0, 1067, 370, 0, 427, 0, 386, - 422, 411, 416, 0, 420, 418, 417, 412, 415, 628, - 0, 628, 0, 614, 0, 626, 0, 635, 708, 709, - 710, 711, 712, 713, 714, 660, 0, 969, 965, 0, - 830, 935, 0, 923, 949, 948, 786, 798, 799, 800, - 950, 0, 0, 0, 795, 796, 797, 789, 790, 791, - 792, 793, 794, 801, 959, 958, 952, 953, 678, 676, - 0, 853, 854, 855, 960, 0, 889, 1013, 719, 0, - 0, 747, 964, 771, 0, 0, 0, 743, 911, 0, - 0, 0, 0, 0, 752, 0, 0, 0, 873, 868, - 869, 0, 0, 0, 0, 458, 457, 463, 580, 585, - 0, 441, 0, 567, 0, 579, 516, 578, 0, 0, - 591, 589, 0, 591, 0, 591, 0, 516, 0, 581, - 516, 578, 0, 598, 998, 607, 0, 539, 820, 539, - 0, 454, 1160, 0, 1156, 0, 0, 0, 130, 127, - 117, 0, 0, 152, 140, 131, 0, 480, 485, 486, - 496, 996, 110, 209, 0, 0, 58, 0, 319, 265, - 297, 280, 0, 0, 0, 210, 0, 285, 0, 50, - 70, 0, 66, 0, 95, 0, 0, 0, 0, 0, - 53, 65, 0, 48, 0, 370, 370, 56, 264, 1032, - 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, - 1582, 1583, 1584, 1585, 1586, 1587, 1664, 1588, 216, 1589, - 1364, 1590, 1591, 1592, 0, 1593, 617, 1594, 1595, 1596, - 898, 899, 214, 306, 211, 312, 213, 215, 0, 1033, - 212, 309, 106, 1079, 0, 104, 0, 1077, 113, 111, - 108, 1081, 0, 405, 385, 0, 0, 1301, 0, 1073, - 160, 299, 0, 327, 249, 322, 0, 1194, 1192, 0, - 1189, 0, 0, 0, 343, 0, 399, 0, 419, 625, - 0, 624, 0, 620, 627, 968, 846, 857, 947, 0, - 0, 0, 0, 852, 847, 777, 775, 772, 0, 773, - 751, 0, 0, 749, 745, 0, 782, 859, 0, 875, - 872, 462, 461, 460, 459, 566, 564, 0, 569, 1024, - 576, 509, 515, 565, 0, 561, 0, 590, 586, 0, - 587, 0, 0, 588, 0, 562, 0, 1024, 563, 0, - 605, 0, 0, 864, 1011, 864, 1132, 139, 119, 0, - 120, 150, 0, 0, 0, 0, 144, 379, 0, 315, - 60, 0, 297, 0, 209, 282, 281, 284, 279, 283, - 286, 0, 0, 0, 0, 0, 266, 0, 0, 0, - 230, 0, 0, 297, 303, 226, 227, 336, 0, 0, - 0, 62, 52, 49, 54, 63, 0, 0, 64, 67, - 613, 79, 72, 1664, 1671, 0, 0, 0, 0, 0, - 822, 381, 388, 174, 0, 0, 0, 0, 299, 0, - 0, 0, 1194, 0, 0, 207, 0, 246, 0, 164, - 1193, 0, 1182, 0, 1065, 1066, 0, 0, 387, 621, - 615, 804, 0, 0, 0, 774, 778, 776, 753, 861, - 0, 476, 601, 0, 604, 568, 0, 0, 504, 511, - 0, 514, 508, 0, 570, 0, 0, 572, 574, 0, - 0, 0, 609, 0, 0, 0, 1001, 0, 531, 533, - 536, 535, 538, 0, 507, 507, 0, 0, 0, 153, - 0, 146, 146, 0, 132, 913, 0, 209, 0, 296, - 316, 244, 0, 0, 228, 0, 234, 0, 268, 269, - 267, 229, 297, 302, 231, 337, 0, 71, 0, 87, - 0, 0, 308, 114, 112, 405, 0, 1073, 1189, 0, - 0, 273, 167, 1191, 262, 255, 256, 257, 258, 259, - 260, 261, 276, 275, 247, 248, 0, 0, 0, 1067, - 0, 805, 0, 806, 0, 878, 606, 0, 0, 600, - 0, 502, 500, 503, 505, 501, 0, 0, 577, 593, - 0, 573, 571, 582, 0, 613, 0, 584, 537, 0, - 863, 865, 0, 0, 443, 442, 0, 126, 0, 608, - 0, 0, 148, 148, 134, 0, 302, 318, 0, 288, - 295, 287, 0, 0, 225, 0, 232, 326, 218, 612, - 0, 74, 0, 313, 380, 384, 0, 1183, 0, 1189, - 249, 1194, 0, 1186, 0, 0, 1073, 807, 874, 0, - 0, 0, 599, 602, 0, 575, 0, 0, 0, 610, - 611, 583, 534, 0, 0, 509, 121, 146, 125, 154, - 145, 484, 147, 484, 0, 326, 274, 0, 0, 252, - 218, 0, 243, 0, 68, 86, 314, 0, 299, 1184, - 208, 165, 1187, 1188, 0, 608, 1495, 1244, 1466, 0, - 876, 879, 877, 871, 0, 512, 0, 518, 592, 866, - 867, 506, 148, 487, 487, 608, 243, 289, 294, 0, - 233, 235, 323, 324, 325, 0, 239, 236, 240, 0, - 1189, 0, 1063, 0, 883, 882, 881, 885, 884, 603, - 0, 0, 510, 484, 137, 136, 133, 209, 251, 0, - 0, 0, 241, 0, 242, 217, 1185, 1073, 0, 513, - 0, 487, 320, 222, 0, 221, 0, 305, 238, 608, - 880, 0, 138, 220, 224, 223, 1064, 517 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +static const yytype_int16 yytoknum[] = { - -1, 35, 36, 37, 38, 2051, 2052, 2053, 1755, 888, - 2721, 1756, 889, 890, 2055, 39, 40, 1369, 525, 1693, - 1312, 2464, 42, 2006, 1698, 2010, 2599, 2254, 2005, 2012, - 2702, 2761, 2007, 1699, 2600, 1700, 43, 44, 1437, 45, - 652, 46, 1438, 1396, 1101, 908, 1386, 1090, 47, 82, - 48, 2042, 2343, 2774, 2065, 2857, 2494, 2495, 1757, 2816, - 2817, 2044, 2107, 1378, 2810, 1816, 2652, 1761, 1744, 2496, - 1825, 2609, 2373, 1758, 2285, 1817, 2481, 2708, 1448, 1818, - 2709, 2474, 1819, 1421, 1441, 2287, 2818, 1762, 1422, 2344, - 1365, 1820, 2772, 1821, 485, 2499, 49, 517, 518, 643, - 1071, 519, 50, 486, 1059, 526, 52, 1807, 2523, 2118, - 2524, 1849, 1801, 1099, 1846, 1469, 1425, 1100, 474, 1483, - 2119, 2088, 1470, 527, 792, 55, 56, 57, 577, 571, - 572, 1284, 1671, 1975, 858, 550, 551, 587, 1415, 1319, - 1320, 1706, 2023, 1344, 1345, 867, 868, 2569, 2694, 2570, - 2571, 2432, 2433, 2832, 1332, 1336, 1337, 1719, 1712, 1325, - 2247, 2588, 2589, 2590, 2453, 1340, 1341, 870, 871, 872, - 1349, 1729, 59, 1675, 1982, 1983, 1984, 2225, 2226, 2240, - 2236, 2438, 2577, 1985, 1986, 2562, 2563, 2669, 2243, 1992, - 2581, 2582, 2629, 1861, 1155, 1156, 1491, 1157, 793, 1158, - 1190, 794, 1196, 1160, 795, 796, 797, 1163, 798, 799, - 800, 801, 1179, 802, 803, 1213, 1509, 1510, 1511, 1512, - 1513, 1514, 1515, 1516, 1517, 843, 1574, 805, 806, 807, - 1988, 808, 1276, 1659, 2594, 2690, 2691, 1968, 2209, 2419, - 2561, 2741, 2790, 2791, 809, 810, 1227, 1228, 1656, 1271, - 1272, 811, 2346, 1274, 1567, 1594, 1223, 951, 952, 1168, - 1544, 1545, 1570, 1893, 1577, 1583, 1920, 1921, 1595, 1624, - 812, 1527, 1528, 1877, 1181, 813, 613, 958, 614, 1176, - 1618, 821, 814, 815, 1725, 563, 2573, 648, 1039, 816, - 817, 818, 819, 820, 565, 953, 467, 1169, 2762, 1073, - 848, 954, 1759, 1614, 60, 720, 618, 61, 1050, 1432, - 62, 2545, 2383, 1061, 1450, 1829, 487, 63, 64, 65, - 66, 67, 594, 1093, 528, 1094, 1095, 708, 68, 1102, - 710, 711, 69, 556, 557, 1103, 1296, 1104, 70, 537, - 71, 839, 568, 840, 842, 530, 855, 2001, 1689, 73, - 74, 544, 545, 75, 76, 558, 77, 78, 2542, 531, - 2110, 1056, 495, 469, 470, 1171, 1042, 956, 1043 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -2446 + 0, 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, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, + 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, + 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, + 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, + 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, + 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, + 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, + 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, + 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, + 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, + 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, + 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, + 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 727, 728, 60, 62, 61, 729, 43, 45, + 42, 47, 37, 94, 730, 91, 93, 40, 41, 46, + 59, 44, 123, 125, 35, 63, 58 +}; +# endif + +#define YYPACT_NINF (-2481) + +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) + +#define YYTABLE_NINF (-1679) + +#define yytable_value_is_error(Yyn) \ + ((Yyn) == YYTABLE_NINF) + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const int yypact[] = { - 4928, -98, -2, -2446, -2446, -98, 30641, -2446, -98, 48, - 2466, 35311, -2446, 2230, -98, 41382, 1727, 207, 238, 215, - 343, 41382, 41382, 35778, -98, 246, 41849, -2446, -98, 32976, - -32, -132, 42316, 41382, 1092, 417, -33, -2446, -2446, -2446, - -2446, -2446, 94, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, 125, -2446, 62, 132, -116, -14, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, 64, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, 20347, -2446, -2446, -2446, - -2446, -2446, -2446, 36245, 41382, 36712, 33443, 37179, -2446, 113, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, 115, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, 123, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, 26, 412, -2446, 134, -2446, - -2446, -2446, -2446, 1092, 37646, -2446, 319, 614, -2446, 208, - 42783, -2446, -2446, -2446, -2446, 568, 37646, 301, -2446, -2446, - -2446, 38113, -2446, -2446, -2446, -2446, 311, -2446, -2446, 180, - -2446, 34, -2446, -2446, -2446, 363, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, 256, -2446, -2446, 43250, 43717, 44184, - -2446, 274, 580, 556, 19879, -2446, -2446, -2446, -2446, 64, - -2446, -2446, 343, -2446, 343, -2446, -2446, -2446, -135, 298, - -2446, 356, 618, -2446, -2446, -2446, 351, -2446, -2446, 606, - 8244, 8244, 44651, 343, 44651, 378, -2446, -2446, -18, -2446, - -2446, 21283, -2446, 452, 412, -2446, -2446, 121, 778, 11196, - 41382, 461, -2446, 473, 461, 482, 501, -116, -2446, 4928, - 886, 792, 32976, 267, 267, 979, 267, 592, 894, -2446, - 1274, -2446, 553, -2446, 37646, -2446, 600, 867, -132, -2446, - 351, 928, 529, 773, 966, 4259, 974, 881, 978, 1091, - 6276, 11196, 25146, -2446, 412, -2446, -2446, -2446, 645, -2446, - 626, -2446, -2446, -2446, -2446, 580, 873, -2446, 700, 38580, - 39047, 37646, 667, 1124, -2446, -2446, -2446, -2446, 769, -2446, - -2446, 93, 1066, 59, 735, -2446, 1068, 96, -2446, 1085, - 972, 11196, -2446, 813, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -132, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, 377, -2446, - -2446, 27014, -2446, -2446, 556, 794, -2446, 27014, 11688, 47453, - 1249, -2446, 1073, 41382, 826, -2446, -2446, -2446, -2446, -2446, - -2446, 834, 1321, 92, 1325, 11196, 857, 92, 92, 861, - 1189, -2446, -2446, -2446, 136, 877, 879, -2446, 137, 137, - -2446, 1061, 885, 891, -2446, 138, 1362, 1377, 79, 904, - 908, 220, 92, 11196, -2446, 917, 137, 930, 941, 957, - 1400, 982, -2446, 1428, 987, 81, 90, 991, 999, -2446, - 1003, -2446, 139, 11196, 11196, 11196, -2446, 11196, 7260, 37646, - 1432, -2446, 412, 343, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, 1008, -2446, 114, 4962, -2446, 1009, -2446, -2446, -2446, - 171, 11196, -2446, 1464, -28, -2446, 141, -2446, -2446, -2446, - 412, 1273, 1016, -2446, -2446, -2446, 160, 1426, 26080, 26547, - 37646, -2446, -2446, 412, -2446, -2446, -2446, -2446, -2446, -2446, - 407, -2446, 64, 28165, 495, 461, 41382, 41382, 1488, -2446, - -2446, -2446, 32976, 37646, 45118, 1160, -2446, -2446, -116, -116, - 11196, -116, 172, -13, 8736, 12180, 1370, 1263, 133, 494, - 1385, -2446, 1294, 592, 894, 11196, 473, -2446, 1338, 37646, - 31108, 569, 623, 1094, 1177, 1104, 204, 1510, -2446, 1109, - -2446, 1198, 37646, 48824, 162, -2446, 1556, 162, 162, 564, - 1573, 1235, 184, 1388, 55, 87, 1109, 1832, -2446, 32976, - 83, 421, 1109, 37646, 1240, 613, 1109, 88, 11688, 651, - 863, 244, 950, 994, 91, 11688, 1005, 1154, 1214, 1252, - 1289, 1297, 1342, 1491, 1538, 1541, 95, 1543, 1547, 1558, - 1560, 1563, 1575, 102, 1610, 97, 11688, 1612, 1167, -2446, - 28165, -78, -2446, -2446, 1618, 108, -2446, 24678, 1168, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, 1265, 41382, 1224, -84, 1534, - 1592, 37646, 1424, 1832, 1427, 1208, 1666, 626, 9228, 1670, - -2446, 45585, -2446, -2446, -2446, -2446, -2446, 41382, -2446, -2446, - 41382, -2446, 29240, 1219, 41382, 41382, -2446, 41382, 41382, 507, - 39514, 556, 33910, -2446, -2446, -2446, -2446, 755, 820, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, 29240, -2446, - 2802, -2446, -2446, -2446, 1226, 533, -2446, -2446, -2446, -2446, - 1271, -2446, 1271, 1271, -2446, -2446, -2446, -2446, 1228, 1228, - 1229, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, 1231, 220, -2446, 1271, -2446, 1228, - -2446, -2446, -2446, -2446, -2446, 48824, -2446, -2446, -2446, -2446, - 196, 217, -2446, -2446, -2446, 1232, -2446, 1684, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, 1898, 570, 1228, - -2446, -2446, 1092, -2446, -2446, 11196, 412, 11196, -2446, 1236, - 28165, 1277, 11196, -2446, -2446, 11196, 1237, 1715, 1715, 11196, - -2446, -2446, -2446, -2446, 3962, 1715, -2446, 1715, 1715, 1271, - 1271, -2446, 28262, 11196, -2446, 23626, 11196, 15132, 9720, 11196, - 1322, 1323, 1715, -2446, 1715, -2446, 11196, 7752, 11196, 28262, - 1716, 1716, 1238, 1245, 1851, 5390, 1241, -2446, 511, -2446, - 1239, -2446, 412, 412, -2446, 1715, 11196, 3659, 3659, -2446, - 150, 47453, 11196, 11196, 11196, 11196, 28773, 1329, 105, 41382, - 11196, 11196, 1247, 763, -2446, 11196, 1466, -2446, 1250, 11196, - 1332, 111, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, - 11196, -2446, -2446, 16594, 156, 1562, 1582, 412, 11196, -59, - 194, 11196, 34377, 8244, 1574, 6276, -2446, 412, 82, 1574, - -2446, -2446, -2446, -2446, 145, -2446, -2446, -2446, -2446, 1226, - -2446, 1226, 1255, 37646, 121, 32509, -2446, 11196, -2446, 571, - 1257, 1315, 539, 1709, 41382, -2446, 22219, 1542, -2446, 1259, - -2446, 27477, 1542, -2446, -2446, 15610, 1382, 1537, 1474, -2446, - -2446, -2446, 1266, 28165, 12672, 12672, -2446, 1299, 28165, 1301, - -2446, -2446, -2446, -2446, -2446, -2446, 586, -2446, 37646, 68, - 1370, 494, 575, -2446, -2446, 1137, 1269, 46052, 41382, 1544, - 1493, 1545, -166, -2446, -2446, -2446, 47453, -2446, 41382, 41382, - 46519, 46986, 29707, 41382, 29240, -2446, -2446, -2446, -2446, 41382, - 1605, 41382, 4679, -2446, -2446, -2446, 162, -2446, -2446, -2446, - -2446, -2446, 41382, 41382, -2446, -2446, 162, 41382, 41382, 162, - -2446, 1225, 41382, 41382, 41382, 41382, 1552, 41382, 41382, -69, - -69, 1477, -2446, 10212, 1276, -2446, 11196, 11196, -2446, 11196, - 1448, -2446, 581, -2446, 1489, 27, 1327, 37646, 41382, 2219, - -2446, -2446, -2446, -2446, -2446, 1284, 1633, -2446, 1832, 1634, - 31575, 654, 544, 1336, -2446, 603, 11196, 1524, -2446, -2446, - 1513, 59, -2446, -2446, 29240, 96, -2446, 1521, 127, -2446, - 1539, 626, 1765, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - 608, 19411, -2446, -2446, 1766, 343, 1766, 499, -2446, -2446, - 1766, -2446, 1766, -2446, 27014, -2446, 11688, 47453, 1769, 41382, - 1324, 1326, -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, -2446, 1715, 1402, - -2446, 1404, 1406, 1407, -2446, -2446, -2446, -2446, -2446, 47453, - -2446, -2446, 635, -2446, 1320, 11196, 11196, 40, -2446, 27541, - 646, 11196, 1328, 1339, 659, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, 1340, 1646, -2446, 1341, 1343, 1344, - -2446, -2446, 4915, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, 1345, 1335, 27577, - 1346, 15132, 15132, 7260, 918, -2446, 15132, 1347, -2446, -2446, - 665, 27495, 1238, 1350, 1348, 1356, 1352, 1355, 27661, 10704, - 11196, 10704, 10704, 27893, 1238, 1359, 28028, -2446, -2446, 11196, - 37646, -2446, 11196, 1360, 5443, -2446, -2446, -2446, 1316, 1316, - 1316, 28262, -2446, -2446, -2446, 1374, -2446, 15132, 15132, -2446, - 2728, 2494, 7260, -2446, -2446, 1647, -2446, 801, -2446, 1368, - -2446, -2446, 2645, -2446, 23626, 28204, 11196, 107, -2446, 11196, - 1247, 11196, 1443, 1316, 1316, 1316, 199, 199, 161, 161, - 161, 288, 194, -2446, -2446, -2446, 1369, 1371, 1372, 1570, - 28165, 982, 11196, -2446, 28165, 731, 774, 37646, 2228, 3003, - 4378, -2446, -2446, -2446, 18007, 1415, -78, 1415, 1715, 3659, - -2446, 473, -2446, -2446, -2446, 28165, -2446, 1092, 18007, 1416, - 1429, 392, 20815, 1584, -2446, 41382, -2446, 41382, -2446, -16, - 1390, -2446, 11196, -2446, -2446, 1127, 1399, 1591, 1593, 916, - 916, 1299, 1594, -2446, -2446, 1449, -2446, 11196, 1311, -2446, - 1313, -2446, -2446, -2446, -2446, 1408, -2446, -2446, 1640, -2446, - -2446, -2446, -2446, 1473, 1109, 11196, 1616, -2446, 89, 1423, - 1741, 56, 1720, 41382, -2446, 1627, -2446, 403, 1767, 127, - 1771, 127, 29240, 29240, 29240, 675, -2446, -2446, 343, -2446, - -2446, 719, -2446, 328, -2446, -2446, -2446, 1518, 621, 1109, - 1832, -2446, -2446, -2446, -2446, -2446, -2446, -2446, 177, 624, - 1109, 1519, -2446, 1522, -2446, 1525, 625, 1109, -2446, -2446, - 1442, 1445, 1452, 11688, -2446, -2446, 28165, 28165, 28165, 1430, - -2446, 124, -2446, 41382, -2446, -2446, -2446, 1448, 37646, 626, - -2446, 650, 41382, 37646, 37646, 37646, -2446, -2446, -2446, 1454, - 1446, -2446, 47453, -66, 1667, 1664, 41382, 1497, 1104, 1910, - -2446, 28165, 1800, 37646, -2446, -2446, -2446, 41382, -2446, 1804, - 1092, -2446, 29240, -2446, 32042, -2446, -2446, -2446, -2446, 343, - -2446, 343, 1685, 41382, 25613, 343, 343, -2446, 729, 1471, - 1326, 742, 47453, 1715, 71, 1475, 1384, 839, 993, 1310, - -2446, -2446, -2446, 765, 28074, 11196, -2446, 1818, 47453, -2446, - 5668, -2446, -2446, -2446, -2446, 11196, -2446, -2446, -2446, 11196, - -2446, 23626, 11196, 1793, -2446, 1950, 1950, 5390, 47453, 15132, - 15132, 15132, 15132, 642, 930, 15132, 15132, 15132, 15132, 15132, - 15132, 15132, 15132, 15132, 16102, 255, -2446, -2446, 11196, 11196, - 1801, 1793, -2446, -2446, -2446, 183, 183, 47453, 1479, 1238, - 1480, 1482, 11196, -2446, 47453, 412, 24101, -2446, 28165, -2446, - 3659, 11196, 906, 1056, 11196, 783, 11196, 1797, -2446, -2446, - 1484, -2446, -2446, 47453, 11196, 1492, 2711, 15132, 15132, 2757, - -2446, 3447, 11196, 7260, -2446, 1477, 1531, 22687, -2446, 1587, - 1587, 1587, 1587, -2446, -2446, 37646, 37646, 37646, 18475, 1816, - 17539, 39981, 1501, 144, -2446, 39981, 40448, -2446, 1515, -2446, - 412, 11196, 1822, 1505, 1822, 1514, -2446, -2446, 1527, 1501, - 11196, 1675, -2446, -2446, -2446, 1583, -2446, 810, -2446, 1937, - 1675, -2446, 817, -2446, 22219, 1416, 11196, 412, -2446, 1546, - -2446, 1399, 146, -2446, -2446, -2446, 1744, -2446, -2446, -2446, - 37646, -2446, 41382, 24119, 1878, -2446, 41382, 41382, 41382, -2446, - 41382, 833, 486, 1548, -2446, 486, 1858, 131, 1104, 184, - 3360, 400, -2446, -2446, -2446, 1614, 41382, -2446, 41382, -2446, - -2446, -2446, -2446, -2446, 29707, -2446, -2446, -2446, 29240, 23158, - 29240, 41382, 41382, 41382, 41382, 41382, 41382, 41382, 41382, 41382, - 41382, -2446, -2446, -2446, 1477, -2446, -2446, -2446, 87, -2446, - -2446, 124, 1549, 1336, 1592, 40915, 835, 1832, 1550, 1995, - -2446, 654, 31575, -2446, -2446, -2446, 1954, -2446, 274, 163, - -2446, -2446, 1092, 41382, 1609, 127, 37646, -2446, 855, -2446, - -2446, -2446, -2446, 41382, 1551, -2446, 1551, -2446, -2446, -2446, - 1715, -2446, 41382, -2446, 1554, -2446, 1555, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, 11196, 28165, -2446, 1559, - -2446, 28165, 24137, -2446, 28165, 1801, -2446, 1018, 1018, 1018, - 1298, 1880, 135, 1569, 1018, 1018, 1018, 214, 214, 126, - 126, 126, 1950, 255, 28165, 28165, -2446, -2446, -2446, -2446, - 1561, -2446, -2446, -2446, 1238, 1578, -2446, -2446, 269, 11196, - 11196, 2728, -2446, 28309, 11196, 47453, 914, 2728, 170, 11196, - 1140, 1833, 11196, 11196, 3550, 24165, 1579, 11196, 47905, -2446, - -2446, 37646, 37646, 37646, 37646, -2446, -2446, -2446, 39981, 40448, - 1571, 17070, 144, 1585, 37646, -2446, 1660, 1598, 18007, 1845, - 1773, -2446, 18007, 1773, 128, 1773, 1864, 1660, 21751, -2446, - 1660, 1599, 1787, -2446, 559, 28165, 2033, 1912, 343, 1912, - 343, -2446, 28165, 8244, -2446, 1092, 1683, 41382, 412, -64, - -2446, 1617, 41382, -2446, 1675, 28165, 23626, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, 41382, 919, -2446, 925, 486, -2446, - 1641, -2446, 159, 1897, 44, -2446, 29240, 2165, 655, -2446, - 1911, 1829, -2446, 162, -2446, 11196, 655, 1830, 164, 41382, - -2446, -2446, 1826, -2446, 47453, 127, 127, -2446, -2446, 1613, - 1615, 1619, 1620, 1622, 1623, 1624, 1625, 1628, 1632, 1635, - 1636, 1638, 1642, 1644, 1645, 1649, 1231, 1650, -2446, 1665, - 1546, 1668, 1671, 1672, 48372, 1673, 1679, 1686, 1688, 1689, - 755, 820, -2446, -2446, -2446, -2446, -2446, -2446, 735, 1690, - -2446, 1631, -2446, -2446, 1695, -2446, 1697, -2446, -2446, -2446, - -2446, -2446, 1648, 794, 100, 41382, 2079, 1865, 1655, 1336, - -2446, 31575, 1405, 531, 1664, -2446, 104, 1497, -2446, 2022, - 1700, 1873, 41382, 1693, -2446, 2118, -2446, 32042, 1551, 1326, - 1687, 1326, 47453, -2446, -2446, 28165, -2446, -2446, -2446, 15132, - 1991, 1694, 47453, -2446, -2446, 2728, 2728, 28309, 927, -2446, - 2728, 11196, 11196, 2728, 2728, 11196, -2446, -2446, 24183, 1883, - -2446, -2446, -2446, -2446, -2446, -2446, -2446, 30174, 39981, 1696, - -2446, 34844, -2446, -2446, 41382, 144, 18007, -2446, -2446, 2101, - -2446, 18007, 1972, -2446, 18007, -2446, 41382, 1704, -2446, 41382, - -2446, 13164, 11196, 1751, -2446, 1751, -2446, 1016, -2446, 392, - -2446, -2446, 2115, 18943, 2072, 11196, -2446, -2446, 1721, 486, - -2446, 1876, 1641, 1724, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, 935, 1725, 41382, 41382, 15132, -2446, 655, 250, 130, - -2446, 1999, 37646, 1641, -2446, -2446, -2446, -2446, 2093, 2180, - 2068, -2446, -2446, 28165, -2446, -2446, 1715, 1715, -2446, -2446, - 2145, -2446, -2446, -2446, -2446, 735, 327, 23158, 41382, 41382, - -2446, -2446, -2446, 87, 2098, 936, 1092, 2071, 31575, 2187, - 1737, 41382, 1497, 140, 140, -2446, 1877, -2446, 1879, -2446, - -2446, 189, -2446, 37646, -2446, -2446, 18943, 1092, -2446, -2446, - -2446, 3497, 15132, 47453, 947, -2446, 2728, 2728, 2728, -2446, - 2175, 1477, -2446, 948, 2195, -2446, 41382, -81, -47, 1747, - 1748, -2446, -2446, 955, -2446, 11196, 1749, -2446, -2446, 18007, - 2101, 963, -2446, 47453, 41382, 965, 47453, 6768, 1753, -2446, - -2446, 28165, 28165, 41382, 1808, 1808, 1805, 41382, 11196, -2446, - 969, 2168, 9, -34, 28165, -2446, 37646, -2446, 29240, -2446, - 486, -2446, 29240, 11196, -2446, 1653, 1298, 2208, -2446, -2446, - -2446, -2446, 1641, 626, -2446, -2446, 2061, -2446, 41382, 1817, - 340, 1843, -2446, -2446, -2446, 794, 343, 1336, 1700, 37646, - 1092, 654, 274, -2446, -2446, -2446, -2446, -2446, -2446, -2446, - -2446, -2446, -2446, -2446, -2446, -2446, 2181, 1980, 2182, 1609, - 976, 3497, 977, -2446, 11196, 435, 1515, 30174, 1777, -2446, - 985, -2446, -2446, -2446, -2446, -2446, 41382, 937, -2446, 28165, - 41382, -2446, -2446, -2446, 41382, 2145, 997, -2446, -2446, 13164, - 1774, -2446, 2229, 1916, -2446, -2446, 1092, -2446, 24201, 1415, - 18943, 41382, 41382, 41382, -2446, 1901, 626, 486, 1024, -2446, - 1795, -2446, 24512, 2004, -2446, 2084, -2446, 2034, 1789, -2446, - 11196, -2446, 1860, -2446, -2446, -2446, 2241, -2446, 1796, 1700, - 1664, 1497, 2001, -2446, 2002, 1799, 1336, -2446, 1238, 13656, - 13656, 1803, -2446, -2446, 41382, -2446, 1031, 1806, 1054, -2446, - -2446, -2446, -2446, 41382, 1802, 34844, -2446, 2168, -2446, -2446, - -2446, 240, -2446, 240, 22219, 2034, -2446, 29240, 23158, 2024, - 1789, 41, 2008, 1832, -2446, 28165, -2446, 1092, 31575, -2446, - -2446, -2446, -2446, -2446, 18943, 1415, 14640, 1944, 98, 27513, - -2446, -2446, -2446, -2446, 1058, -2446, 2283, 1960, -2446, -2446, - -2446, -2446, 41382, 1399, 1399, -145, 2008, -2446, -2446, 2099, - -2446, -2446, -2446, -2446, -2446, 120, 2017, -2446, 2018, 866, - 1700, 1059, -2446, 2266, -2446, -2446, -2446, -2446, -2446, -2446, - 1813, 1819, -2446, 240, -2446, -2446, -2446, -2446, -2446, 103, - 103, 2183, -2446, 1882, -2446, -2446, -2446, 1336, 14148, -2446, - 2308, 1399, 486, -2446, 2296, -2446, 119, -2446, -2446, 1415, - -2446, 1834, -2446, -2446, -2446, -2446, -2446, -2446 -}; - -/* YYPGOTO[NTERM-NUM]. */ + 4546, -123, 595, -2481, -2481, -123, 30658, -2481, -123, 45, + 2147, 35338, -2481, 49251, -123, 41422, 975, 200, 302, 326, + 460, 41422, 41422, 35806, -123, 217, 41890, -2481, -123, 21111, + 32998, -17, 61, 42358, 41422, 1164, 562, 136, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, 22, -2481, -2481, -2481, -2481, + -2481, 268, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + 117, -2481, 560, 140, -118, 192, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, 20642, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, 36274, 41422, 36742, 33466, 37210, -2481, + 145, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, 151, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, 152, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, 232, 209, -2481, + 164, -2481, -2481, -2481, -2481, 1164, 37678, -2481, 452, 520, + -2481, 393, 42826, -2481, -2481, -2481, -2481, 550, -80, 37678, + -2481, -2481, -2481, 38146, -2481, -2481, -2481, -2481, 517, -2481, + -2481, 409, -2481, 59, -2481, -2481, -2481, 398, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, 505, -2481, -2481, 43294, + 43762, 44230, -2481, 388, 19, 54, 20173, -2481, -2481, 268, + -2481, -2481, -2481, -2481, 460, -2481, 460, -2481, -2481, -2481, + -127, 421, -2481, 483, 716, -2481, 473, -2481, -2481, -2481, + -2481, 696, 8514, 8514, 44698, 44698, 460, 44698, 540, -2481, + -2481, -3, -2481, 61, -2481, -118, 473, -2481, 21580, -2481, + 537, 209, -2481, -2481, 234, 872, 11472, 41422, 557, -2481, + 574, 557, 590, 600, -2481, 4546, 935, 909, 32998, -2481, + 37678, 219, 219, 1072, 219, 628, 732, -2481, 1793, -2481, + 645, -2481, 668, 929, -2481, 473, 1001, 887, 828, 1039, + 3042, 1043, 1022, 1049, 1199, 6542, 11472, 25255, -2481, 209, + -2481, 727, -2481, -2481, -2481, 738, -2481, -2481, -2481, -2481, + 19, 988, -2481, 1167, 834, 38614, 39082, 37678, 803, -2481, + -2481, -2481, -2481, 847, -2481, -2481, 165, 1122, 39, 835, + -2481, 1213, 124, -2481, 1215, 1087, 11472, -2481, 976, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, 61, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -213, -2481, -2481, 27127, -2481, -2481, 54, + 886, -2481, 27127, 11965, 47506, 1339, -2481, 1154, 41422, 908, + -2481, -2481, -2481, -2481, -2481, -2481, 915, 1407, 85, 1409, + 11472, 936, 85, 85, 940, 1277, -2481, -2481, -2481, 168, + 957, 964, -2481, 169, 169, -2481, 1155, 998, 1006, -2481, + 172, 1490, 1492, 100, 1019, 1031, 978, 85, 11472, -2481, + 1035, 169, 1037, 1061, 1069, 1553, 1073, -2481, 1561, 1083, + 80, 109, 1095, 1098, -2481, 1107, -2481, 173, 11472, 11472, + 11472, -2481, 11472, 7528, 37678, 1578, -2481, 209, 460, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, 1114, -2481, 144, 4797, + -2481, 1160, -2481, -2481, -2481, 139, 11472, -2481, 1597, -47, + -2481, 174, -2481, -2481, -2481, 209, 1404, 1124, -2481, -2481, + -2481, -2481, 197, 1520, 26191, 26659, 37678, -2481, -2481, 209, + -2481, -2481, -2481, -2481, -2481, 404, -2481, -2481, 268, 28274, + 424, 557, 41422, 41422, 1583, -2481, -2481, -2481, 32998, 37678, + 45166, 1257, 574, -2481, -2481, -118, -118, 11472, -118, 112, + 784, 9007, 12458, 1462, 1349, 94, 81, 1464, -2481, 1353, + 628, 732, 11472, -2481, 1403, 37678, 31126, 279, 470, 1144, + 1224, 1146, -21, 1555, -2481, 1151, -2481, 1237, 37678, 48880, + 186, -2481, 1596, 186, 186, 184, 1605, 1254, 254, 1410, + -50, 102, 1622, -2481, 1151, 32998, 50, 6, 1151, 37678, + 1261, 355, 1151, 98, 11965, 1041, 1056, 255, 1309, 1330, + 105, 11965, 1343, 1380, 1421, 1466, 1488, 1491, 1495, 1500, + 1503, 1507, 115, 1514, 1516, 1521, 1524, 1526, 1532, 119, + 1537, 87, 11965, 1539, 1181, -2481, 28274, -61, -2481, -2481, + 1541, 147, -2481, 24786, 1174, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, 1270, 41422, 1231, -90, 1530, 1589, -2481, 45634, 37678, + 1418, 1622, 1419, 1200, 1650, 738, 9500, 1654, -2481, -2481, + -2481, -2481, -2481, 41422, -2481, -2481, 41422, -2481, 29254, 1204, + 41422, 41422, -2481, 41422, 41422, 527, 39550, 54, 33934, -2481, + -2481, -2481, -2481, 873, 974, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, 29254, -2481, 2253, -2481, -2481, -2481, + 1201, 544, -2481, -2481, -2481, -2481, 1259, -2481, 1259, 1259, + -2481, -2481, -2481, -2481, 1212, 1212, 1214, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + 1216, 978, -2481, 1259, -2481, 1212, -2481, -2481, -2481, -2481, + -2481, 48880, -2481, -2481, -2481, -2481, 362, 427, -2481, -2481, + -2481, 1217, -2481, 1665, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, 2884, 559, 1212, -2481, -2481, 1164, -2481, + -2481, 11472, 209, 11472, -2481, 1219, 28274, 1267, 11472, -2481, + -2481, 11472, 1232, 1712, 1712, 11472, -2481, -2481, -2481, -2481, + 2727, 1712, -2481, 1712, 1712, 1259, 1259, -2481, 28321, 11472, + -2481, 23928, 11472, 15416, 9993, 11472, 1319, 1325, 1712, -2481, + 1712, -2481, 11472, 8021, 11472, 28321, 1719, 1719, 1241, 1247, + 2004, 5124, 1243, -2481, 502, -2481, 1240, -2481, 209, 209, + -2481, 1712, 11472, 3702, 3702, -2481, 153, 47506, 11472, 11472, + 11472, 11472, 28786, 1336, 107, 41422, 11472, 11472, 1255, 703, + -2481, 11472, 1472, -2481, 1256, 11472, 1338, 256, 11472, 11472, + 11472, 11472, 11472, 11472, 11472, 11472, 11472, -2481, -2481, 16881, + 162, 1569, 1590, 209, 11472, -44, 324, 11472, 34402, 8514, + 1582, 6542, -2481, 209, 101, 1582, -2481, -2481, -2481, -2481, + -2481, 176, -2481, -2481, -2481, 1201, -2481, 1201, 1263, 37678, + 234, 32530, -2481, 11472, -2481, 568, 1268, 1326, 414, 1721, + 41422, -2481, 22518, -2481, 1550, -2481, 1272, -2481, 27591, 1550, + -2481, -2481, 15895, 1390, 1554, 1494, -2481, -2481, -2481, 1280, + 28274, 12951, 12951, -2481, 1143, 28274, 1221, -2481, -2481, -2481, + -2481, -2481, -2481, 576, -2481, 37678, -28, 1462, 81, 580, + -2481, 1381, 1285, 46102, 41422, 1559, 1513, 1562, -171, 47506, + -2481, -2481, -2481, -2481, 41422, 41422, 46570, 47038, 29722, 41422, + 29254, -2481, -2481, -2481, -2481, 41422, 1100, 41422, 3489, -2481, + -2481, -2481, 186, -2481, -2481, -2481, -2481, -2481, 41422, 41422, + -2481, -2481, 186, 41422, 41422, 186, -2481, 1413, 41422, 41422, + 41422, 41422, 1454, 41422, 41422, -60, -60, 1499, -2481, 10486, + 1297, -2481, 11472, 11472, -2481, 11472, 1471, -2481, -2481, 605, + 1512, 53, 1348, 37678, 41422, 800, -2481, -2481, -2481, -2481, + -2481, 1528, 1515, -2481, -2481, 1308, 1647, 1622, -2481, 1648, + 31594, 720, 838, 1352, -2481, 613, 11472, 39, -2481, -2481, + 29254, 124, -2481, 1519, 130, -2481, 1535, 738, 1764, -2481, + -2481, -2481, -2481, -2481, -2481, 19704, -2481, 619, -2481, -2481, + 1766, 460, 1766, 583, -2481, -2481, 1766, -2481, 1766, -2481, + 27127, -2481, 11965, 47506, 1768, 41422, 1320, 1321, -2481, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, 1712, 1398, -2481, 1401, 1402, 1405, + -2481, -2481, -2481, -2481, -2481, 47506, -2481, -2481, 620, -2481, + 1323, 11472, 11472, 26, -2481, 27655, 621, 11472, 1322, 1324, + 627, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + 1328, 1646, -2481, 1333, 1334, 1335, -2481, -2481, 4270, -2481, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, 1337, 1340, 27775, 1342, 15416, 15416, 7528, + 276, -2481, 15416, 1344, -2481, -2481, 649, 27609, 1241, 1345, + 1361, 1364, 1347, 1355, 27927, 10979, 11472, 10979, 10979, 27956, + 1241, 1356, 28002, -2481, -2481, 11472, 37678, -2481, 11472, 1357, + 5650, -2481, -2481, -2481, 2675, 2675, 2675, 28321, -2481, -2481, + -2481, 1366, -2481, 15416, 15416, -2481, 950, 2276, 7528, -2481, + -2481, 1670, -2481, 767, -2481, 1354, -2481, -2481, 3305, -2481, + 23928, 28303, 11472, 131, -2481, 11472, 1255, 11472, 1432, 2675, + 2675, 2675, 336, 336, 93, 93, 93, 299, 324, -2481, + -2481, -2481, 1372, 1373, 1376, 1551, 28274, 1073, 11472, -2481, + 28274, 678, 785, 37678, 1877, 2936, 3441, -2481, -2481, -2481, + 18297, 1415, -61, 1415, 1712, 3702, -2481, 574, -2481, -2481, + -2481, 28274, -2481, 1164, 18297, 1422, 1429, 291, 21111, 1572, + -2481, 41422, -2481, 41422, -2481, -29, 1393, -2481, 11472, -2481, + -2481, 684, 1399, 1593, 1594, 983, 983, 1143, 1599, -2481, + -2481, 1442, -2481, 11472, 1227, -2481, 1230, -2481, -2481, -2481, + -2481, 1385, -2481, -2481, 1645, -2481, -2481, -2481, -2481, 1475, + 1151, 11472, 1619, -2481, 103, 1406, 1737, -170, 1694, 41422, + -2481, 1607, -2481, 665, 1742, 130, 1745, 130, 29254, 29254, + 29254, 651, -2481, -2481, -2481, 460, -2481, 319, 656, -2481, + -2481, -2481, -2481, 1489, 494, 1622, 1151, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, 133, 637, 1151, 1497, -2481, 1498, + -2481, 1510, 661, 1151, -2481, -2481, 1408, 1433, 1435, 11965, + -2481, -2481, 28274, 28274, 28274, 1411, -2481, 132, -2481, 41422, + -2481, -2481, -2481, 1471, 37678, 738, -2481, 352, 1775, 37678, + 41422, 37678, 37678, 37678, 47506, -2481, -2481, -2481, 1440, 1426, + -2481, -65, 1652, 1651, 41422, 1482, 1146, 1897, -2481, 28274, + -2481, -2481, -2481, 41422, -2481, 1786, 1164, -2481, 32062, -2481, + -2481, -2481, -2481, 29254, -2481, 460, -2481, 460, 1669, 41422, + 25723, 460, 460, -2481, 664, 1455, 1321, 666, 47506, 1712, + 78, 1457, 1351, 1012, 466, 1250, -2481, -2481, -2481, 739, + 28159, 11472, -2481, 1802, 47506, -2481, 5703, -2481, -2481, -2481, + -2481, 11472, -2481, -2481, -2481, 11472, -2481, 23928, 11472, 1776, + -2481, 1936, 1936, 5124, 47506, 15416, 15416, 15416, 15416, 415, + 1037, 15416, 15416, 15416, 15416, 15416, 15416, 15416, 15416, 15416, + 16388, 188, -2481, -2481, 11472, 11472, 1787, 1776, -2481, -2481, + -2481, 280, 280, 47506, 1460, 1241, 1463, 1473, 11472, -2481, + 47506, 209, 5887, -2481, 28274, -2481, 3702, 11472, 1286, 1374, + 11472, 741, 11472, 1785, -2481, -2481, 1478, -2481, -2481, 47506, + 11472, 1476, 3791, 15416, 15416, 4722, -2481, 5140, 11472, 7528, + -2481, 1499, 1522, 22987, -2481, 1564, 1564, 1564, 1564, -2481, + -2481, 37678, 37678, 37678, 18766, 1799, 17828, 40018, 1480, 1396, + -2481, 40018, 40486, -2481, 1502, -2481, 209, 11472, 1791, 1484, + 1791, 1485, -2481, -2481, 1496, 1480, 11472, 1636, -2481, -2481, + -2481, 1548, -2481, 747, -2481, 1902, 1636, -2481, 749, -2481, + 22518, 1422, 11472, 209, -2481, 1506, -2481, 1399, 123, -2481, + -2481, -2481, 1709, -2481, -2481, -2481, 37678, -2481, 41422, 24404, + 1841, -2481, 41422, 41422, 41422, -2481, 41422, 766, 758, 1508, + -2481, 758, 1823, 99, 1146, 254, 3259, -33, -2481, -2481, + -2481, 1579, 41422, -2481, 41422, -2481, -2481, -2481, -2481, -2481, + 29722, -2481, -2481, 23459, 29254, -2481, 29254, 41422, 41422, 41422, + 41422, 41422, 41422, 41422, 41422, 41422, 41422, -2481, -2481, -2481, + 1499, -2481, -2481, -2481, -2481, 102, -2481, 132, 1517, 1352, + 1589, 40954, 41422, 1567, 789, 1622, 1518, 1963, -2481, 720, + 31594, -2481, -2481, -2481, 1924, -2481, 388, 137, -2481, -2481, + 1164, 130, 37678, -2481, 798, -2481, -2481, -2481, -2481, 41422, + 1523, -2481, 1523, -2481, -2481, -2481, 1712, -2481, 41422, -2481, + 1525, -2481, 1527, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, 11472, 28274, -2481, 1529, -2481, 28274, 24422, -2481, + 28274, 1787, -2481, 1765, 1765, 1765, 1655, 1840, 190, 1531, + 1765, 1765, 1765, 243, 243, 111, 111, 111, 1936, 188, + 28274, 28274, -2481, -2481, -2481, -2481, 1534, -2481, -2481, -2481, + 1241, 1536, -2481, -2481, 253, 11472, 11472, 950, -2481, 5284, + 11472, 47506, 804, 950, 183, 11472, 2337, 2791, 11472, 11472, + 5950, 24440, 1538, 11472, 47959, -2481, -2481, 37678, 37678, 37678, + 37678, -2481, -2481, -2481, 40018, 40486, 1540, 17358, 1396, 1545, + 37678, -2481, 1612, 1542, 18297, 1797, 1727, -2481, 18297, 1727, + 829, 1727, 1804, 1612, 22049, -2481, 1612, 1549, 1739, -2481, + 539, 28274, 1969, 1856, 460, 1856, 460, -2481, 28274, 8514, + -2481, 1164, 1148, 41422, 209, -86, -2481, 1566, 41422, -2481, + 1636, 28274, 23928, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + 41422, 808, -2481, 810, 758, -2481, 1588, -2481, 135, 1842, + 23, -2481, 29254, 2141, 691, -2481, 1855, 1774, -2481, 186, + -2481, 11472, 691, 1778, 122, 41422, -2481, -2481, 2285, -2481, + 47506, 130, 130, -2481, 1556, 1560, 1563, 1568, 1570, 1573, + 1574, 1576, 1586, 1587, 1591, 1592, 1595, 1598, 1601, 1602, + 1603, 1216, 1606, -2481, 1608, 1506, 1611, 1618, 1620, 48427, + 1621, 1624, 1625, 1626, 1628, 873, 974, -2481, -2481, -2481, + -2481, 835, -2481, -2481, 1629, -2481, 1575, -2481, -2481, -2481, + 1644, -2481, 1666, -2481, -2481, -2481, -2481, -2481, 1600, 886, + 38, 41422, 2022, 1807, 1614, 1782, 41422, 1633, 1352, -2481, + 31594, 1108, 163, 1651, -2481, 225, 1482, -2481, 1971, 1630, + -2481, 2046, -2481, 32062, 1523, 1321, 1635, 1321, 47506, -2481, + -2481, 28274, -2481, -2481, -2481, 15416, 1916, 1637, 47506, -2481, + -2481, 950, 950, 5284, 818, -2481, 950, 11472, 11472, 950, + 950, 11472, -2481, -2481, 24468, 1788, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, 30190, 40018, 1638, -2481, 34870, -2481, -2481, + 41422, 1396, 18297, -2481, -2481, 55, -2481, 18297, 1879, -2481, + 18297, -2481, 41422, 1639, -2481, 41422, -2481, 13444, 11472, 1663, + -2481, 1663, -2481, 1124, -2481, 291, -2481, -2481, 2037, 19235, + 1993, 11472, -2481, -2481, 1653, 758, -2481, 1812, 1588, 1658, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, 822, 1660, 41422, + 41422, 15416, -2481, 691, 497, 106, -2481, 1933, 37678, 1588, + -2481, -2481, -2481, -2481, 2026, 2114, 2002, -2481, -2481, 28274, + -2481, -2481, 1712, 1712, -2481, -2481, 2079, -2481, -2481, -2481, + -2481, 835, 289, 23459, 41422, 41422, -2481, -2481, -2481, 102, + 2033, 827, 1164, 2006, 31594, 37678, -2481, -2481, 19235, 2121, + 1671, 41422, 1482, 890, 890, -2481, 1810, -2481, 1815, -2481, + -2481, 676, -2481, 1164, -2481, -2481, -2481, 3093, 15416, 47506, + 841, -2481, 950, 950, 950, -2481, 2106, 1499, -2481, 870, + 2128, -2481, 41422, -68, -74, 1678, 1680, -2481, -2481, 889, + -2481, 11472, 1683, -2481, -2481, 18297, 55, 896, -2481, 47506, + 41422, 898, 47506, 7035, 1681, -2481, -2481, 28274, 28274, 41422, + 1743, 1743, 1740, 41422, 11472, -2481, 911, 2101, 29, -12, + 28274, -2481, 37678, -2481, 29254, -2481, 758, -2481, 29254, 11472, + -2481, 856, 1655, 2140, -2481, -2481, -2481, -2481, 1588, 738, + -2481, -2481, 1995, -2481, 41422, 1751, 342, 1767, -2481, -2481, + -2481, 886, 460, 1352, 1630, 37678, 1567, 917, 1164, 720, + 388, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, + -2481, -2481, -2481, -2481, 2115, 1901, 2118, 3093, 918, -2481, + 11472, 640, 1502, 30190, 1699, -2481, 934, -2481, -2481, -2481, + -2481, -2481, 41422, 1005, -2481, 28274, 41422, -2481, -2481, -2481, + 41422, 2079, 955, -2481, -2481, 13444, 1697, -2481, 2157, 1846, + -2481, -2481, 1164, -2481, 24486, 1415, 19235, 41422, 41422, 41422, + -2481, 1831, 738, 758, 1722, 961, -2481, -2481, 24556, 1932, + -2481, 2020, -2481, 1965, 1723, -2481, 11472, -2481, 1789, -2481, + -2481, -2481, 2173, -2481, 1729, 1731, 1352, 1630, 1651, 1482, + 1937, -2481, 1938, -2481, 1241, 13937, 13937, 1733, -2481, -2481, + 41422, -2481, 968, 1746, 970, -2481, -2481, -2481, -2481, 41422, + 1748, 34870, -2481, 2101, -2481, -2481, -2481, 202, -2481, 202, + 22518, 1965, 23459, -2481, 29254, 1968, 1723, 182, 1948, 1622, + -2481, 28274, -2481, 1164, 31594, 19235, 1415, -2481, -2481, -2481, + -2481, -2481, 14923, 1890, 134, 27627, -2481, -2481, -2481, -2481, + 984, -2481, 2229, 1908, -2481, -2481, -2481, -2481, 41422, 1399, + 1399, -149, 1948, -2481, -2481, 2055, -2481, -2481, -2481, -2481, + -2481, 24, 1973, -2481, 1977, 1203, 1630, 990, -2481, 2228, + -2481, -2481, -2481, -2481, -2481, -2481, 1777, 1779, -2481, 202, + -2481, -2481, -2481, -2481, -2481, 425, 425, 2143, -2481, 1835, + -2481, -2481, -2481, 1352, 14430, -2481, 2255, 1399, 758, -2481, + 2245, -2481, 142, -2481, -2481, 1415, -2481, 1780, -2481, -2481, + -2481, -2481, -2481, -2481 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_int16 yydefact[] = +{ + 114, 216, 0, 195, 194, 216, 0, 1179, 216, 1157, + 1106, 0, 1126, 0, 216, 0, 114, 0, 0, 0, + 0, 0, 0, 0, 216, 387, 0, 1125, 216, 0, + 0, 52, 0, 0, 0, 0, 0, 2, 4, 22, + 23, 33, 29, 6, 25, 0, 24, 14, 28, 15, + 21, 178, 20, 31, 35, 7, 17, 19, 26, 30, + 354, 341, 389, 353, 113, 357, 37, 12, 27, 16, + 5, 32, 8, 36, 0, 9, 11, 10, 34, 13, + 18, 215, 214, 208, 0, 0, 0, 0, 0, 209, + 934, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, + 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1550, 1215, 1216, + 1217, 1499, 1500, 1551, 1501, 1502, 1218, 1219, 1220, 1221, + 1222, 1223, 1224, 1225, 1503, 1504, 1226, 1227, 1228, 1229, + 1230, 1505, 1552, 1231, 1232, 1233, 1234, 1235, 1553, 1236, + 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1554, 1245, + 1246, 1247, 1555, 1248, 1249, 1250, 1251, 1252, 1253, 1254, + 1506, 1507, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, + 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, + 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, + 1508, 1283, 1284, 1285, 1286, 1509, 1287, 1288, 1289, 1510, + 1290, 1291, 1292, 1556, 1557, 1293, 1294, 1295, 1558, 1296, + 1297, 1511, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1559, + 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, + 1315, 1560, 1512, 1316, 1317, 1318, 1319, 1513, 1514, 1515, + 1320, 1561, 1562, 1321, 1563, 1322, 1323, 1324, 1325, 1326, + 1327, 1564, 1328, 1565, 1329, 1330, 1331, 1332, 1333, 1334, + 1335, 1336, 1516, 1337, 1338, 1339, 1340, 1341, 1342, 1343, + 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, + 1354, 1517, 1567, 1518, 1355, 1356, 1357, 1519, 1358, 1359, + 1568, 1360, 1520, 1361, 1521, 1362, 1363, 1364, 1365, 1366, + 1367, 1368, 1369, 1370, 1522, 1569, 1371, 1570, 1523, 1372, + 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, + 1383, 1524, 1384, 1385, 1525, 1386, 1387, 1388, 1389, 1390, + 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1526, 1398, 1399, + 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, + 1410, 1411, 1412, 1413, 1414, 1415, 1571, 1416, 1417, 1418, + 1527, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, + 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1528, 1436, + 1437, 1438, 1572, 1439, 1440, 1529, 1441, 1442, 1443, 1444, + 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1530, 1453, + 1531, 1454, 1455, 1456, 1457, 1574, 1458, 1459, 1460, 1461, + 1462, 1532, 1533, 1463, 1464, 1534, 1465, 1535, 1466, 1467, + 1536, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, + 1477, 1478, 1479, 1480, 1481, 1482, 1537, 1538, 1483, 1575, + 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, + 1494, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, + 1548, 1549, 1495, 1496, 1497, 1498, 1129, 0, 0, 916, + 935, 936, 944, 211, 1156, 114, 0, 1187, 0, 0, + 1188, 0, 0, 1100, 1099, 152, 1105, 0, 0, 0, + 934, 301, 1516, 1386, 1530, 299, 914, 935, 0, 317, + 318, 0, 326, 0, 311, 315, 312, 0, 336, 328, + 337, 329, 310, 330, 319, 309, 0, 338, 313, 0, + 0, 0, 212, 207, 1106, 114, 0, 183, 173, 178, + 182, 186, 184, 185, 0, 1178, 0, 933, 339, 340, + 975, 164, 1182, 1532, 1463, 1127, 1181, 1183, 1180, 213, + 386, 384, 0, 901, 1296, 1331, 1423, 1434, 1532, 217, + 221, 0, 210, 1537, 1119, 0, 1120, 938, 0, 358, + 507, 937, 910, 51, 0, 56, 0, 1400, 362, 365, + 953, 363, 354, 0, 1, 114, 0, 0, 0, 177, + 1116, 383, 383, 0, 383, 0, 346, 354, 349, 353, + 0, 1124, 1532, 1463, 1118, 1121, 1304, 0, 0, 1304, + 0, 1304, 0, 1304, 0, 0, 893, 0, 894, 917, + 166, 0, 165, 167, 168, 1073, 1104, 1103, 1102, 1101, + 1106, 1304, 157, 147, 0, 0, 0, 0, 0, 302, + 300, 324, 325, 0, 316, 314, 0, 1304, 335, 948, + 331, 1304, 335, 912, 1304, 0, 0, 203, 0, 175, + 187, 1601, 1602, 1603, 1604, 1606, 1605, 1607, 1608, 1609, + 1610, 1611, 1612, 1613, 1614, 1617, 1615, 1616, 1618, 1619, + 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, + 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, + 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, + 1650, 1651, 201, 0, 202, 192, 181, 188, 189, 114, + 1155, 40, 0, 0, 0, 0, 1184, 0, 0, 0, + 919, 921, 922, 823, 932, 896, 0, 1500, 1501, 1502, + 885, 0, 1503, 1504, 1505, 1552, 757, 744, 753, 758, + 745, 747, 754, 1506, 1507, 696, 1270, 1508, 1509, 930, + 1510, 1513, 1514, 1515, 749, 751, 1517, 1518, 0, 931, + 1520, 1521, 1367, 1523, 1524, 1526, 1527, 755, 1529, 1531, + 1532, 1533, 1534, 1535, 929, 1536, 756, 1538, 0, 0, + 0, 907, 840, 0, 0, 0, 896, 729, 0, 549, + 550, 571, 572, 551, 577, 578, 580, 552, 0, 906, + 629, 773, 896, 740, 801, 672, 0, 727, 721, 369, + 902, 0, 722, 918, 896, 886, 369, 900, 220, 218, + 224, 219, 0, 0, 0, 0, 0, 509, 508, 911, + 50, 48, 49, 47, 53, 0, 46, 55, 178, 837, + 0, 364, 0, 0, 0, 344, 343, 3, 0, 0, + 1192, 0, 953, 381, 382, 0, 0, 0, 0, 0, + 0, 0, 0, 456, 403, 404, 406, 453, 457, 465, + 0, 350, 0, 1122, 0, 0, 0, 71, 71, 0, + 0, 0, 0, 0, 293, 242, 286, 0, 0, 0, + 0, 85, 98, 0, 0, 0, 0, 0, 95, 0, + 0, 78, 72, 74, 244, 0, 71, 0, 240, 0, + 0, 0, 246, 934, 0, 1550, 1551, 1552, 1553, 1554, + 758, 0, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, + 1564, 1565, 1516, 1567, 1568, 1569, 1570, 1571, 1572, 1530, + 1574, 1536, 0, 1575, 0, 732, 843, 389, 841, 954, + 0, 935, 941, 892, 0, 955, 1679, 1680, 1681, 1682, + 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, + 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, + 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, + 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, + 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, + 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, + 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1639, 1751, + 1752, 1753, 1754, 1755, 889, 888, 915, 957, 956, 958, + 895, 0, 0, 1153, 0, 0, 154, 146, 149, 0, + 1304, 172, 1304, 1073, 0, 1073, 0, 0, 327, 323, + 321, 320, 322, 0, 333, 334, 0, 304, 0, 949, + 0, 0, 306, 0, 0, 0, 0, 114, 0, 79, + 197, 198, 196, 0, 0, 180, 82, 200, 190, 199, + 179, 99, 191, 174, 0, 39, 1144, 230, 229, 238, + 976, 0, 945, 1576, 559, 1577, 588, 566, 588, 588, + 1578, 1579, 1580, 1581, 555, 555, 568, 1582, 1583, 1584, + 1585, 1586, 556, 557, 593, 1587, 1588, 1589, 1590, 1591, + 0, 0, 1592, 588, 1593, 555, 1594, 1595, 560, 1596, + 529, 0, 1597, 558, 530, 1598, 596, 596, 1599, 583, + 1600, 0, 846, 541, 542, 543, 544, 569, 570, 545, + 575, 576, 546, 628, 0, 555, 946, 947, 114, 1185, + 1128, 0, 725, 840, 587, 574, 884, 0, 0, 582, + 581, 0, 0, 0, 0, 0, 564, 563, 562, 731, + 849, 0, 561, 0, 0, 588, 588, 586, 652, 0, + 565, 0, 0, 864, 0, 870, 0, 0, 0, 592, + 0, 590, 0, 0, 0, 653, 633, 634, 839, 0, + 729, 837, 0, 804, 0, 937, 0, 723, 724, 730, + 925, 0, 0, 628, 628, 905, 823, 0, 820, 821, + 822, 0, 0, 0, 899, 0, 831, 833, 0, 0, + 668, 829, 0, 671, 0, 0, 0, 0, 817, 818, + 819, 811, 812, 813, 814, 815, 816, 827, 810, 649, + 0, 0, 775, 728, 0, 0, 648, 0, 0, 0, + 472, 0, 923, 920, 887, 472, 232, 236, 237, 235, + 223, 0, 231, 222, 227, 225, 228, 226, 0, 44, + 0, 41, 469, 0, 366, 0, 0, 1198, 0, 108, + 0, 1193, 0, 1117, 361, 360, 390, 391, 397, 359, + 442, 443, 0, 0, 0, 0, 462, 460, 433, 407, + 432, 0, 0, 411, 0, 434, 629, 455, 348, 401, + 402, 405, 347, 0, 458, 0, 468, 456, 406, 0, + 1123, 0, 0, 0, 0, 0, 1304, 0, 0, 0, + 277, 258, 1025, 70, 0, 0, 0, 0, 0, 0, + 0, 285, 282, 283, 284, 0, 0, 0, 0, 83, + 84, 97, 0, 88, 89, 86, 90, 91, 0, 0, + 76, 77, 0, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 389, 389, 389, 738, 0, + 0, 388, 0, 0, 890, 893, 1143, 1071, 1081, 0, + 0, 0, 0, 0, 0, 1106, 159, 156, 160, 161, + 158, 1304, 0, 1061, 148, 0, 0, 171, 169, 0, + 1070, 1044, 0, 151, 1189, 0, 0, 335, 332, 950, + 0, 335, 913, 0, 335, 206, 1304, 1073, 0, 176, + 193, 80, 100, 81, 101, 1150, 1176, 0, 1158, 1163, + 1141, 0, 1141, 0, 1160, 1164, 1141, 1159, 1141, 1154, + 0, 977, 0, 0, 541, 0, 535, 531, 601, 602, + 603, 604, 611, 612, 609, 610, 605, 606, 599, 600, + 607, 608, 597, 598, 0, 613, 614, 615, 616, 617, + 618, 619, 620, 547, 163, 0, 553, 162, 0, 897, + 0, 0, 0, 883, 879, 0, 0, 0, 0, 0, + 0, 850, 851, 852, 853, 854, 855, 856, 857, 858, + 0, 0, 859, 0, 0, 0, 585, 584, 0, 809, + 820, 821, 822, 817, 818, 819, 811, 812, 813, 814, + 815, 816, 835, 0, 0, 0, 0, 0, 0, 0, + 0, 698, 0, 0, 721, 800, 0, 837, 869, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 837, + 875, 0, 0, 674, 896, 0, 0, 673, 0, 0, + 0, 927, 928, 630, 644, 645, 646, 650, 960, 959, + 904, 0, 898, 0, 0, 631, 654, 659, 0, 876, + 692, 0, 680, 0, 667, 0, 678, 682, 655, 670, + 0, 651, 0, 899, 832, 834, 0, 830, 0, 641, + 642, 643, 635, 636, 637, 638, 639, 640, 647, 808, + 806, 807, 0, 0, 0, 783, 675, 0, 0, 677, + 676, 1296, 1331, 0, 380, 380, 380, 368, 378, 903, + 0, 521, 389, 521, 0, 628, 510, 953, 54, 42, + 43, 838, 952, 114, 0, 1196, 0, 0, 0, 120, + 103, 0, 1194, 0, 136, 472, 0, 896, 0, 395, + 396, 0, 400, 1527, 1419, 0, 0, 0, 0, 435, + 463, 0, 454, 0, 919, 436, 918, 437, 440, 441, + 412, 464, 908, 466, 0, 459, 352, 351, 470, 0, + 243, 0, 1304, 260, 0, 0, 0, 0, 0, 0, + 980, 1016, 980, 298, 1304, 335, 1304, 335, 1203, 1271, + 1435, 0, 256, 1049, 289, 0, 64, 1078, 0, 1034, + 279, 294, 57, 0, 0, 73, 245, 87, 92, 60, + 96, 93, 1111, 94, 71, 0, 241, 0, 58, 0, + 1109, 0, 0, 247, 62, 1113, 0, 0, 0, 0, + 842, 733, 844, 845, 892, 0, 1142, 0, 1072, 0, + 1152, 1132, 1133, 1143, 0, 1073, 157, 0, 0, 0, + 0, 0, 0, 0, 1071, 1064, 1062, 1092, 0, 1069, + 1063, 0, 0, 1020, 0, 973, 0, 0, 1190, 1186, + 303, 951, 305, 0, 307, 0, 0, 1148, 0, 1147, + 1146, 1151, 1145, 0, 1140, 0, 1171, 0, 0, 0, + 0, 0, 0, 239, 0, 536, 532, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 847, 385, 697, 0, + 0, 0, 880, 0, 0, 771, 0, 746, 748, 554, + 761, 0, 567, 750, 752, 0, 824, 0, 0, 0, + 762, 700, 701, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 716, 715, 763, 799, 0, 0, 867, 868, 764, 595, + 594, 596, 596, 0, 0, 874, 0, 0, 0, 769, + 0, 726, 838, 805, 803, 579, 628, 0, 0, 0, + 0, 0, 0, 0, 681, 669, 0, 679, 683, 0, + 0, 0, 663, 0, 0, 661, 693, 657, 0, 0, + 694, 0, 0, 0, 739, 380, 380, 380, 380, 377, + 379, 0, 0, 0, 0, 1419, 0, 493, 471, 473, + 480, 493, 498, 741, 519, 742, 937, 0, 445, 0, + 445, 0, 233, 45, 0, 1197, 0, 125, 107, 127, + 126, 0, 134, 0, 896, 0, 125, 109, 0, 128, + 0, 1196, 0, 140, 392, 0, 825, 400, 0, 394, + 439, 438, 0, 410, 461, 408, 0, 467, 0, 0, + 0, 1024, 0, 0, 0, 980, 0, 0, 1088, 0, + 1075, 278, 0, 0, 0, 252, 297, 270, 262, 248, + 276, 0, 0, 281, 0, 274, 291, 292, 290, 295, + 0, 990, 1008, 0, 0, 1021, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 736, 737, 734, + 389, 891, 1174, 1175, 1173, 78, 1082, 0, 0, 151, + 155, 0, 0, 145, 0, 172, 1073, 0, 1048, 1044, + 0, 1042, 1041, 1043, 0, 974, 207, 0, 969, 150, + 0, 335, 0, 1172, 0, 1136, 1177, 1161, 1166, 0, + 1170, 1168, 1167, 1162, 1165, 541, 0, 541, 0, 527, + 0, 539, 0, 548, 621, 622, 623, 624, 625, 626, + 627, 573, 0, 882, 878, 0, 743, 848, 0, 836, + 862, 861, 699, 711, 712, 713, 863, 0, 0, 0, + 708, 709, 710, 702, 703, 704, 705, 706, 707, 714, + 872, 871, 865, 866, 591, 589, 0, 766, 767, 768, + 873, 0, 802, 926, 632, 0, 0, 660, 877, 684, + 0, 0, 0, 656, 824, 0, 0, 0, 0, 0, + 665, 0, 0, 0, 786, 781, 782, 0, 0, 0, + 0, 371, 370, 376, 493, 498, 0, 354, 0, 480, + 0, 492, 429, 491, 0, 0, 504, 502, 0, 504, + 0, 504, 0, 429, 0, 494, 429, 491, 0, 511, + 911, 520, 0, 452, 733, 452, 0, 367, 1195, 0, + 1191, 0, 0, 0, 115, 112, 102, 0, 0, 137, + 125, 116, 0, 393, 398, 399, 409, 909, 65, 980, + 0, 0, 259, 0, 1090, 1036, 1068, 1051, 0, 0, + 0, 981, 0, 1056, 0, 251, 271, 0, 267, 0, + 296, 0, 0, 0, 0, 0, 254, 266, 0, 249, + 0, 335, 335, 257, 945, 1576, 1577, 1578, 1579, 1580, + 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, + 1591, 1668, 1592, 987, 1593, 1367, 1594, 1595, 1596, 0, + 1597, 530, 1598, 1599, 1600, 811, 812, 985, 1083, 984, + 986, 0, 1077, 982, 946, 983, 1080, 1035, 61, 1112, + 0, 59, 0, 1110, 68, 66, 63, 1114, 0, 1155, + 1135, 0, 0, 1304, 0, 0, 0, 0, 151, 170, + 1070, 0, 1098, 1020, 1093, 0, 973, 971, 0, 968, + 308, 0, 1149, 0, 1169, 538, 0, 537, 0, 533, + 540, 881, 759, 770, 860, 0, 0, 0, 0, 765, + 760, 690, 688, 685, 0, 686, 664, 0, 0, 662, + 658, 0, 695, 772, 0, 788, 785, 375, 374, 373, + 372, 479, 477, 0, 482, 937, 489, 422, 428, 478, + 0, 474, 0, 503, 499, 0, 500, 0, 0, 501, + 0, 475, 0, 937, 476, 0, 518, 0, 0, 777, + 924, 777, 234, 124, 104, 0, 105, 135, 0, 0, + 0, 0, 129, 1115, 0, 1086, 261, 0, 1068, 0, + 980, 1053, 1052, 1055, 1050, 1054, 1057, 0, 0, 0, + 0, 0, 1037, 0, 0, 0, 1001, 0, 0, 1068, + 1074, 997, 998, 1107, 0, 0, 0, 263, 253, 250, + 255, 264, 0, 0, 265, 268, 526, 280, 273, 1668, + 1675, 0, 0, 0, 0, 0, 735, 1131, 1138, 78, + 0, 0, 0, 0, 1070, 0, 144, 143, 0, 0, + 0, 0, 973, 0, 0, 978, 0, 1017, 0, 204, + 972, 0, 961, 0, 1137, 534, 528, 717, 0, 0, + 0, 687, 691, 689, 666, 774, 0, 389, 514, 0, + 517, 481, 0, 0, 417, 424, 0, 427, 421, 0, + 483, 0, 0, 485, 487, 0, 0, 0, 522, 0, + 0, 0, 914, 0, 444, 446, 449, 448, 451, 0, + 420, 420, 0, 0, 0, 138, 0, 131, 131, 0, + 117, 826, 0, 980, 0, 1067, 1087, 1015, 0, 0, + 999, 0, 1005, 0, 1039, 1040, 1038, 1000, 1068, 1073, + 1002, 1108, 0, 272, 0, 288, 0, 0, 1079, 69, + 67, 1155, 0, 151, 968, 0, 145, 0, 0, 1044, + 207, 970, 1033, 1026, 1027, 1028, 1029, 1030, 1031, 1032, + 1047, 1046, 1018, 1019, 0, 0, 0, 718, 0, 719, + 0, 791, 519, 0, 0, 513, 0, 415, 413, 416, + 418, 414, 0, 0, 490, 506, 0, 486, 484, 495, + 0, 526, 0, 497, 450, 0, 776, 778, 0, 0, + 356, 355, 0, 111, 0, 521, 0, 0, 133, 133, + 119, 0, 1073, 1089, 1066, 0, 1059, 1058, 0, 0, + 996, 0, 1003, 1097, 989, 525, 0, 275, 0, 1084, + 1130, 1134, 0, 962, 0, 0, 151, 968, 1020, 973, + 0, 965, 0, 720, 787, 0, 0, 0, 512, 515, + 0, 488, 0, 0, 0, 523, 524, 496, 447, 0, + 0, 422, 106, 131, 110, 139, 130, 397, 132, 397, + 0, 1097, 0, 1045, 0, 1023, 989, 0, 1014, 0, + 269, 287, 1085, 0, 1070, 0, 521, 963, 979, 205, + 966, 967, 1499, 1247, 1470, 0, 789, 792, 790, 784, + 0, 425, 0, 431, 505, 779, 780, 419, 133, 400, + 400, 521, 1014, 1065, 1060, 0, 1004, 1006, 1094, 1095, + 1096, 0, 1010, 1007, 1011, 0, 968, 0, 141, 0, + 796, 795, 794, 798, 797, 516, 0, 0, 423, 397, + 122, 121, 118, 980, 1022, 0, 0, 0, 1012, 0, + 1013, 988, 964, 151, 0, 426, 0, 400, 1091, 993, + 0, 992, 0, 1076, 1009, 521, 793, 0, 123, 991, + 995, 994, 142, 430 +}; + + /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -2446, -2446, -2446, 1743, -2446, -2446, -2446, 273, -2446, 946, - -2446, 265, -474, 583, -2446, -2446, -2446, -836, 6, -2446, - -2446, -2446, -2446, 74, 318, -2446, -367, -1821, -125, -2446, - -2366, -2252, -2446, -427, -2346, -1626, -2446, -1014, 243, -2446, - -2029, -2446, -602, -868, -699, -900, -2446, 43, -2446, 1330, - -1012, -1718, -2321, -418, -2446, -487, -2446, -261, -1699, -460, - -446, -2446, -2244, -856, -2446, 1481, -172, -2446, 627, -2446, - -2024, -2446, -2446, 616, -2446, -855, -2446, -2446, -1790, 264, - -400, -2228, -2265, 567, -611, -2446, -445, 307, -1674, -2446, - 638, -2446, -387, -2446, -477, -2064, -2446, -2446, -2446, 1312, - -625, -2446, -2446, -2446, -2446, 17, -2446, -2446, -2446, -2446, - -2446, -571, 576, -2185, -2446, 545, -2446, -2446, -2446, -2446, - 1, 300, -2446, 5, 517, -30, -8, 14, 16, 45, - 1557, 1568, -2446, -1225, 577, -2446, -2446, -575, -54, -2446, - 695, -1950, -1961, -413, 1047, 1532, 1535, -276, -187, -2446, - -345, -2446, -1251, -2446, -2446, 694, 1087, -1201, -1234, -2446, - 420, -2446, -273, -2446, 169, -406, 1070, -2446, 1553, -2446, - -2446, -2446, -2446, -1198, 734, -1921, 445, -1901, -1763, 209, - 192, -1093, -153, 28, 453, -235, -2446, -2446, -233, -1651, - -2292, -247, -246, -2446, -2446, -1071, -1413, -874, -2446, -2446, - -417, 989, -2446, -2446, -2446, 1133, 1178, -2446, -2446, 1988, - 2032, -2446, 317, 2372, 287, -741, 1246, -1127, 1248, -1136, - -1140, -1143, 1254, 1256, -1173, 2891, -1528, -618, 24, -2446, - -2236, -1562, -2446, -2446, -12, -2446, -299, -2446, -298, -2446, - -2446, -2446, -278, -2445, -2446, 1184, 864, -2446, -2446, -1181, - -2446, 3631, 767, -2446, -1578, -559, 1293, -650, -894, -1453, - -2446, -2446, -2446, -2446, -2446, -2446, -1084, -1719, -644, 838, - -2446, -2446, 954, -2446, -2446, -1113, -573, 1055, -541, -758, - 846, -2446, -543, 1192, -2446, 1191, -517, 271, -973, 25, - -2446, 2222, 167, 1967, -762, -2007, -2446, -2446, -506, -2118, - -829, -2446, -599, -2446, -2446, -2446, -1089, -2446, 679, -2446, - -1011, -2446, -169, -2446, -2446, -2030, -2446, -2446, -2446, -2446, - -2446, -2446, -374, -2446, -453, -448, -2446, -2446, 4, -697, - 1409, -2446, -2446, 639, -2446, 1014, -2446, 872, -2446, -2446, - -2446, 1196, -2446, -2446, -2446, 18, 1654, 478, -2446, 1204, - -2446, -2446, -2446, -2446, -2446, 258, -2446, -1010, -2396, 73, - -2215, -1038, -6, -2446, -2446, -2446, -503, -2446, -2003 -}; - -/* 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 -1675 + -2481, -2481, -2481, 1684, -2481, -2481, -2481, 965, -2481, -2481, + -2481, -2481, -840, -2481, -608, -881, -706, -905, -2481, -27, + 32, -2481, -2481, -2481, -2481, 8, 259, -2481, -425, -1849, + -189, -2481, -2351, -2447, -2481, -487, -2334, -1619, -1019, -2481, + -361, -2481, -2481, -2039, -2481, -2481, 474, -2481, -2481, -2481, + -1100, -1014, 187, -2481, -374, -2481, -433, -430, -2481, -2481, + 7, -699, 1205, -2481, -2481, -2028, -2481, 1089, -2481, 397, + -2481, 801, -2481, 774, -2481, -2481, -2481, 237, -2481, 910, + -2481, 227, -540, 545, -2481, -2481, -2481, -2481, -2481, 1235, + -627, -2481, -2481, -2481, 12, 608, -30, -9, 3, 27, + 48, 1448, 1479, -2481, -1500, 610, -2481, -2481, -590, -49, + -2481, 601, -2468, -1966, -388, 952, 1436, 1439, -368, -283, + -2481, -442, -2481, -955, -2481, -2481, 599, 995, -1219, -1228, + -2481, 328, -2481, -365, -2481, 76, -367, 977, -2481, 1458, + -2481, -2481, -2481, -2481, -1188, 638, -1907, 350, -1884, -1800, + 118, 97, -957, -244, 28, 360, -327, -2481, -2481, -322, + -1665, -2239, -338, -335, -2481, -2481, -1211, -1426, -879, -2481, + -2481, -641, 1350, -2481, -2481, -2481, 2242, 2287, -2481, -2481, + 2381, 2395, -2481, -307, 2591, 881, -753, 1157, -1131, 1158, + -1134, -1125, -1137, 1159, 1161, -1179, 3176, -1525, -566, -5, + -2481, -2248, -1654, -2481, -2481, -101, -2481, -396, -2481, -392, + -2481, -2481, -2481, -382, -2480, -2481, 1084, 765, -2481, -2481, + -1192, -2481, 3891, 667, -2481, -1559, -562, 1189, -643, -914, + -1459, -2481, -2481, -2481, -2481, -2481, -2481, -928, -1754, -797, + 729, -2481, -2481, 843, -2481, -2481, -979, -603, 954, -549, + -765, 737, -2481, -544, 1092, -2481, 5, -517, 1477, -951, + 44, -2481, 1996, 241, 1623, -773, -2011, -2481, -2481, -515, + -2137, -808, -2481, -606, -2481, -1011, -2441, 77, -2244, -1057, + -2481, -1010, -1708, -2250, -394, -2481, -463, -2481, -236, -1709, + -438, -424, -2481, -2247, -835, -2481, 1511, -155, -2481, 647, + -2481, -2026, -2481, -2481, 639, -2481, -862, -2481, -2481, -1746, + 286, -373, -2249, -2259, 591, -619, -2481, -419, 331, -1676, + -2481, 660, -2481, -363, -2481, -485, -2083, -2481, 33, 1102, + -2481, -2481, 951, -2481, -2481, -2481, -2481, -2481, -2481, -575, + 596, -2201, -2481, 561, -2481, -2481, -2481, -2481, 30, 323, + -2481, -2481, -2481, -2481, -2481, -2481, -2481, -2481, 35, 1571, + 400, -2481, -6, -2481, -2481, -2481, -511, -2481, -2002 +}; + + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 36, 37, 38, 39, 40, 41, 844, 575, 845, + 848, 42, 1375, 43, 1447, 1402, 1107, 913, 1392, 1096, + 527, 1699, 1318, 2470, 45, 2012, 1704, 2016, 2605, 2260, + 2011, 2018, 2708, 2767, 2013, 1705, 2606, 1706, 46, 2536, + 2377, 1058, 1442, 1837, 487, 47, 1056, 1437, 48, 725, + 621, 49, 1448, 50, 590, 1097, 528, 1098, 1099, 713, + 51, 1108, 715, 716, 52, 657, 53, 83, 54, 559, + 560, 1109, 1300, 1110, 55, 2057, 2058, 2059, 1761, 894, + 2727, 1762, 895, 896, 2061, 56, 57, 519, 520, 648, + 1077, 521, 58, 538, 530, 797, 61, 62, 63, 565, + 578, 579, 1290, 1677, 1981, 865, 552, 553, 595, 1421, + 1326, 1327, 1712, 2029, 1351, 1352, 874, 875, 2575, 2700, + 2576, 2577, 2438, 2439, 2838, 1339, 1343, 1344, 1725, 1718, + 1332, 2253, 2594, 2595, 2596, 2459, 1347, 1348, 877, 878, + 879, 1356, 1735, 65, 1681, 1988, 1989, 1990, 2231, 2232, + 2246, 2242, 2444, 2583, 1991, 1992, 2568, 2569, 2675, 2249, + 1998, 2587, 2588, 2635, 1867, 1161, 1162, 1497, 1163, 798, + 1164, 1196, 799, 1202, 1166, 800, 801, 802, 1169, 803, + 804, 805, 806, 1185, 807, 808, 1219, 1515, 1516, 1517, + 1518, 1519, 1520, 1521, 1522, 1523, 849, 1580, 810, 811, + 812, 1994, 813, 1282, 1665, 2600, 2696, 2697, 1974, 2215, + 2425, 2567, 2747, 2796, 2797, 814, 815, 1233, 1234, 1662, + 1277, 1278, 816, 2349, 1280, 1573, 1600, 1229, 957, 958, + 1174, 1550, 1551, 1576, 1899, 1583, 1589, 1926, 1927, 1601, + 1630, 817, 1533, 1534, 1883, 1187, 818, 618, 964, 619, + 1182, 1624, 826, 819, 820, 1731, 570, 2579, 653, 1045, + 821, 822, 823, 824, 825, 572, 959, 469, 1175, 2768, + 1079, 854, 960, 1763, 1620, 66, 2552, 531, 2118, 1064, + 68, 69, 2048, 2352, 2780, 2072, 2863, 2500, 2501, 1764, + 2822, 2823, 2050, 2115, 1384, 2816, 1825, 2660, 1768, 1750, + 2502, 1833, 2615, 2382, 1765, 2291, 1826, 2487, 2715, 1444, + 1827, 2716, 2480, 1828, 1428, 1451, 2293, 2824, 1769, 1429, + 2353, 1372, 1829, 2778, 1830, 488, 2505, 70, 532, 72, + 73, 74, 561, 75, 76, 1813, 2529, 2124, 2530, 1855, + 1807, 1105, 1851, 1476, 1431, 1106, 476, 1489, 2125, 2095, + 1477, 77, 78, 547, 548, 79, 489, 1067, 533, 861, + 2007, 1695, 497, 471, 472, 1177, 1048, 962, 1049 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 468, 647, 588, 907, 576, 53, 41, 1400, 822, 1047, - 844, 645, 1089, 1040, 1096, 873, 58, 51, 72, 1383, - 529, 713, 1076, 833, 1566, 1364, 1994, 1230, 2045, 1375, - 464, 465, 58, 1232, 1858, 1215, 1430, 1399, 1431, 1433, - 1434, 1044, 1462, 1895, 1896, 653, 1371, 1353, 1915, 1277, - 590, 1541, 1411, 2060, 1540, 2062, 1955, 562, 1539, 2222, - 2267, 1287, 2348, 2366, 1605, 1606, 2350, 1537, 1105, 2041, - 654, 2013, 591, 79, 1404, 1860, 707, 2374, 574, 2377, - 729, 599, 2701, 1521, -680, 2239, -683, -1004, -680, 1942, - 1943, 1677, 1079, -1029, 1578, -683, -1551, -675, 472, 1453, - -1562, -1026, -1026, 1724, -1653, -1653, 2530, -1569, -1664, -1664, - -1673, -1673, 1989, -1030, 607, -1671, -1671, 1068, -1029, 535, - -1562, -1027, -1027, 729, 834, -429, 1989, 1293, -1569, 535, - 2535, 906, -432, 912, 1721, 916, 566, 1898, 2096, -1030, - 638, -1551, -642, -655, -670, 1616, 535, 1616, 1048, 827, - 535, 1674, 3, 4, 1068, 714, 1356, 2585, 1367, 1637, - 2478, 2853, 2539, 1290, 1083, 535, 1083, 2644, 1402, 729, - 1607, 729, 1241, 729, 866, 1063, 1875, -896, 2521, 2124, - 2126, 869, 1282, 1653, -896, 1068, 1278, 536, -174, 2260, - 1654, 2564, 83, -174, 1805, 1384, 2632, -915, 1387, 1388, - 2660, 2176, 1247, 1326, -915, 1241, 583, 585, 713, 2812, - 1241, 2103, 1578, 580, 713, 2462, 585, -429, 2645, 1064, - 2671, -389, 2237, 2536, -432, 1898, 2646, 2601, 1222, 1226, - 2516, 2704, 2504, 2864, 1249, 1247, 2703, 2229, 2537, 2839, - 1247, 1426, 2727, 25, 2607, 2289, 2620, 1339, 2656, 1327, - 2279, 1233, 1367, 1359, 2673, 2647, 2657, -1650, -1650, 2825, - 1044, 1097, 2073, 1742, 2400, 2624, 1898, 1249, 1409, 2378, - 584, 1488, 1249, 548, 1291, 1410, 2475, 1703, 29, 1288, - 1241, 546, 493, 1638, 1199, 1200, 521, 835, 1661, 836, - 862, 1376, 2686, 539, 856, 1745, 2230, 1639, 581, 1241, - 1991, 2674, 1640, 573, 573, 2268, 533, 2435, 1328, 80, - 2601, 2439, 2230, 2153, 532, 2290, 1352, 2643, 2239, 31, - 1743, 2278, 534, 2381, 2648, 713, 713, 2515, 2231, 1247, - 1309, 1323, 1191, 2779, 600, 2649, 1727, 1641, 2813, 2529, - 717, 2823, 1249, 2441, 2231, 2014, 2476, 585, 535, 1204, - 84, 718, 2233, 81, 569, 603, 1329, 1427, 85, 2232, - 864, 1249, 2275, 1704, 2277, 2854, 2269, 2618, 2233, 1128, - 34, 2157, 2158, 2159, 2160, 549, 1414, 2164, 2165, 2166, - 2167, 2168, 2169, 2170, 2171, 2172, 2173, 828, 2865, 1065, - 1292, 2802, 86, 2705, 2716, 2291, 857, 2630, 1069, 2621, - 2672, 1361, 2234, 2860, -429, 2826, 1186, 1398, 1445, 2401, - 1215, -432, 1413, 2814, 1330, 2538, 1989, 578, 1989, 2658, - 1374, 1486, 2463, 2617, 2846, 2379, 2046, 1662, 639, 2200, - 2201, 2564, 1806, 1324, 2675, 1069, 2398, 2619, 2821, 87, - 1376, 1728, 2855, 2467, 1976, 1977, 1443, 2808, 1870, 2388, - 2724, 2763, 2794, 1566, 567, 2425, 579, 829, 1578, 1578, - 1350, 1279, 1283, 1578, 2601, -429, 1069, 1351, 1305, 2856, - 723, 2235, -432, 1040, 2014, 2479, 592, 2026, 617, 615, - 1377, 1835, 1642, 586, 1526, 1742, 2780, 2235, 1403, 58, - 616, 619, 1066, 611, 576, 633, 1617, 612, 1957, 1471, - 2196, 2015, 1737, 593, 1578, 1578, 1996, 2086, 2087, 1721, - 2348, 1362, 610, 2530, 2350, 2574, 2781, 54, 712, 1794, - 2578, 582, 2650, 2580, 2020, 2651, -896, 2565, 709, 2522, - 1178, 1210, 1655, 54, 473, 1394, 874, 2047, 1400, 58, - 1210, 1374, 2038, 625, 468, 468, -915, 2840, 2601, 1070, - 2833, 575, 880, 1211, 636, 2469, 2135, 1455, 881, 1395, - 837, 645, 1211, 468, 1452, -680, 611, 1212, -1004, 590, - 612, 838, 1458, -429, -1029, 589, 1214, -1551, -675, 713, - -432, -1562, 2074, 1218, 53, 41, 1075, 2480, -1569, 1575, - 637, 591, 1794, 54, -1030, 58, 51, 72, 1998, -1029, - 1236, -1562, 2281, 1523, 955, 468, 1041, 2726, 1913, -1569, - 854, 641, -429, 2731, -429, 845, 1522, 2730, 1222, -432, - -1030, -432, -1551, 1189, 1195, -670, 1530, 1285, 1463, 1377, - 1534, 1678, 1394, 1210, 707, 1676, 2466, 1087, 1088, 1087, - 1088, 2506, 2507, 1270, 1367, 468, 1210, 1613, 522, 1580, - 1582, 862, 79, 1690, 1368, 1211, 1395, 1376, 2681, 1523, - 1044, -174, -174, 882, -1648, -1648, 1989, 1210, 1211, 1389, - 1989, 1265, 1266, 1267, 1268, 1269, 1270, 2533, 1267, 1268, - 1269, 1270, 1212, 1233, 2282, 2497, 883, 1771, 2468, 1211, - 1374, 2525, 1826, 1910, 1911, 1912, 1913, 1774, 1367, 715, - 1777, 716, 1191, 1214, 1523, 712, 2785, 1713, 1370, 2498, - 1566, 712, 955, 1170, 1523, 1044, 2389, 621, 2391, 622, - 824, 864, 1204, 2534, 2141, 2143, 2144, 2140, 2142, 468, - 58, 2139, 1908, 1909, 1910, 1911, 1912, 1913, 2049, 2138, - 2048, 2049, 2408, 1619, 2211, 2212, 2213, 2214, 2283, 862, - 2284, 1745, 1520, 476, 863, 2739, 2610, 468, 576, 1465, - 651, 2348, 635, 1852, 729, 2350, 2302, 2187, 1853, 2050, - 865, 2161, 1845, 1405, 1847, 1763, 2099, 468, 468, 468, - 1770, 468, 468, 2740, 719, 2003, 1578, 1578, 1578, 1578, - 650, 2133, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, - 1578, 1578, 1326, 2069, 640, 468, 1390, 2149, 2631, 2155, - 477, 2803, 883, 2804, 1391, 1454, 2070, 2859, 1854, 864, - 2004, 2722, 712, 712, 1467, 721, 1834, 2156, 1454, 729, - 1836, 1691, 722, 1838, 1790, 1791, 1792, 2177, 1230, 723, - 1935, 573, 2834, 2835, 1578, 1578, 1377, 826, 1327, 1376, - 1317, 1318, 1997, 1322, 468, 1040, 2180, 1376, 468, 468, - 1376, 1376, 884, 2185, 1081, 1989, 885, 1082, 865, 468, - 1400, 2551, 591, 591, 1989, 591, -1649, -1649, 1092, 1989, - 854, 1734, 1989, 2851, 1092, 724, 1772, 1170, 2020, 2707, - 2862, 1775, 1625, 628, 1303, 886, 611, 1304, 25, 2084, - 612, 1989, 893, 25, 880, 1851, 2162, 1374, 1769, 1855, - 881, 1856, 955, 2711, 728, 25, 2163, 1898, 1626, 955, - 2024, 894, 1899, 1900, 1901, 729, 728, 1780, 629, 1898, - 1947, 832, 1787, 29, 1899, 1900, 1901, 1401, 29, 2189, - 955, 2567, 2075, 2017, 841, 1928, 2568, 1930, 1931, 2554, - 29, 846, 1811, 1575, 1575, 1329, 1948, 2616, 1575, 847, - 1234, 887, 630, -1651, -1651, 1408, 1873, 2104, 713, 849, - 1238, 895, 2111, 2072, 31, 628, 2076, 2080, 481, 31, - 482, 713, 1306, 1286, 1989, 1307, 2445, 32, 850, 2448, - 54, 31, 32, 1295, 1459, 1092, 1092, 1307, 2345, 1575, - 1575, 1600, 853, 1601, 32, 484, 1167, -1652, -1652, 631, - 629, 33, 623, 1330, 624, 882, 33, 1989, -1654, -1654, - 1485, 1494, 1495, 1486, 2661, 1692, 728, 1627, 33, 1898, - 34, 1929, 1628, 860, -1675, -1675, -1675, 1629, 1377, 875, - 54, 575, 34, 611, 2095, -1004, 1377, 612, 2758, 1377, - 1377, -475, 955, 852, 1183, 1184, -475, 1518, 1686, 896, - 1519, 1075, 1732, 1945, 728, 1307, 1041, 1898, 1802, 877, - 1949, 1803, 1899, 1900, 1901, 1950, 712, 879, 2385, 1201, - 1430, 878, 1431, 1433, 1434, 1566, 709, 1500, 1501, 2190, - 1830, 631, 1041, 1486, 589, 1841, 54, 58, 1842, 1374, - 2662, 1993, 1823, 1226, 1824, 1989, 891, 1374, 897, 1902, - 1374, 1374, 1046, 1294, 880, 892, 898, 573, 1903, 2852, - 881, -475, 1871, 909, 2057, 1307, 2059, 913, 899, 1969, - 1903, 1970, 1045, 1879, 2822, 1553, 1307, 1049, 1989, 1170, - 2440, 1051, 2443, 1554, 1555, 1556, 1883, 2120, 728, 1307, - 2300, 1898, 1917, 1058, 2836, 1307, 1899, 1900, 1901, 900, - 880, 859, 2063, 861, 883, 2064, 881, -1655, -1655, 468, - -475, 468, 1971, 2411, 1972, 1630, 468, 617, 615, 468, - 1167, 2293, 2276, 468, 2178, 2179, 1631, 1904, 58, 616, - 619, 823, 2292, 825, 2301, 1504, 1505, 468, 2093, 1904, - 468, 468, 468, 468, 902, 1060, 2067, 1080, 2866, 2068, - 468, 468, 468, 1951, 910, 1067, 2129, 1074, 885, 1519, - 2363, 1062, 1989, 1072, 1952, 882, 903, -1656, -1656, 2131, - 468, 54, 2132, 2510, 1077, 1170, 468, 468, 468, 468, - 1041, 1500, 1501, 1471, 468, 468, 905, 911, 880, 468, - 2258, 1078, 2145, 468, 881, 1307, 468, 468, 468, 468, - 468, 468, 468, 468, 468, -1657, -1657, 468, 1903, 1193, - 2192, 882, 468, 1307, 602, 468, 605, 468, 609, 955, - 1098, 1575, 1575, 1575, 1575, 1172, 1578, 1575, 1575, 1575, - 1575, 1575, 1575, 1575, 1575, 1575, 1575, 2256, 1173, 1904, - 2257, 468, -1658, -1658, 2261, 1224, 728, 2262, 838, 1898, - -1659, -1659, 1175, 887, 1899, 1900, 1901, 1694, 1177, 468, - 2280, 2550, 2369, 1803, 1240, 1803, -646, 1241, 468, 468, - -653, 2115, -1675, -1675, -1675, 88, 2020, 1904, 471, 1575, - 1575, 713, 2386, 1182, 520, 2387, 1456, 1185, 1457, 1504, - 1505, 1186, 1903, 2845, 547, -1660, -1660, 1247, 559, 882, - 1170, 1546, 1523, 1187, 1248, 1188, 1041, -643, 1041, 1192, - 2342, 34, 1578, 2184, 883, 589, 589, 1194, 589, 1905, - 1906, 1907, -644, 1908, 1909, 1910, 1911, 1912, 1913, 1249, - 1197, 1905, 1906, 1907, 1198, 1908, 1909, 1910, 1911, 1912, - 1913, 2409, 2300, 1203, 1519, -647, 2471, 955, 2019, 1803, - 468, 468, 2472, 468, 2555, 1803, 1205, 1519, 583, 2470, - 883, 1904, 2611, 2637, 914, 2612, 1803, 1206, 885, 1183, - 1184, -476, 1167, -645, 2663, 2666, -476, 1519, 2667, 1578, - 468, 1231, 2678, 1207, 1523, 1075, 2345, 1827, 1041, 2244, - 2683, 25, 2687, 2684, 1201, 2684, 2699, 915, 1275, 2700, - 1488, 1679, 2430, 2736, 2737, 712, 2700, 1519, 1208, 1763, - 1733, 2351, 2745, 1209, 885, 1075, 2430, 1216, 712, 1281, - 955, 1170, 584, 1282, 2751, 1217, 29, 2684, 1250, 1218, - 2384, -1675, -1675, -1675, 1235, 1908, 1909, 1910, 1911, 1912, - 1913, -476, 1251, 886, -1661, -1661, 1283, 1252, 883, 2362, - 1903, 2766, 2685, 1170, 2767, 2685, 1550, 1551, 2795, 468, - 468, 2796, 1297, 887, 1310, 468, 1316, 31, 1167, 1905, - 1906, 1907, 863, 1908, 1909, 1910, 1911, 1912, 1913, 865, - 32, 2798, 1255, 576, 1075, 2829, 2847, 1346, 2684, 2700, - -476, -1662, -1662, 2531, -1663, -1663, -1665, -1665, 1778, 585, - -1666, -1666, 885, 1354, 33, 468, 468, 468, 1348, 887, - 468, -1667, -1667, -1668, -1668, 880, -1669, -1669, 34, 1904, - 1372, 881, 1373, 468, 468, 468, 468, 2020, -1670, -1670, - 1374, 1779, 576, 468, 2502, 1379, 468, 1258, 54, 1380, - 1557, 1558, 1559, 1381, 1560, 1561, 1562, 1563, 1564, 1565, - 1385, 468, 468, 1905, 1906, 1907, 468, 1908, 1909, 1910, - 1911, 1912, 1913, -1672, -1672, -1674, -1674, 1392, 880, 1738, - 468, 1416, 1417, 468, 881, 468, 1502, 1503, 1092, 1746, - 1393, 1749, 1850, 1397, 1760, 1407, 1722, 1723, -522, -522, - 1764, 1092, 1766, 1167, 1412, 2635, 468, 887, -526, -526, - -525, -525, 576, 1419, 1773, 620, 1504, 1505, 468, 1776, - 1420, 1044, 1424, 1781, 1782, 1783, 1784, 632, 1788, 1789, - 2511, 2512, 468, 1428, 1429, 1523, 882, 1260, 1436, 54, - 2120, 1439, 617, 615, 1440, 586, 468, 2345, 1987, 465, - 1299, 1301, 1442, 58, 616, 619, 1446, 1454, 1159, 1178, - 2457, 468, 1987, 465, 1189, 1195, 1484, 1487, 1489, 1490, - 2482, 1526, 1525, 1531, 729, 1584, 1585, 1241, 1307, 468, - 1597, 1599, 1615, 1622, 1602, 1633, 1634, 1636, 1657, 882, - 1658, 1674, 1680, 1687, 1688, 1695, 1041, 1041, 1041, 1702, - 584, 1714, 831, 1715, 1716, 1735, 1717, 1740, 3, 4, - 1739, 1741, 585, 1795, 25, 1800, 1804, 2485, 1808, 1623, - 1812, 1905, 1906, 1907, 1167, 1908, 1909, 1910, 1911, 1912, - 1913, 1575, 1813, 1814, 1828, 876, 1261, 955, 1832, -1675, - -1675, -1675, 1833, 1265, 1266, 1267, 1268, 1269, 1270, 29, - 1837, 1840, 1848, 1839, 1859, 1872, 1167, 1866, 1863, 1867, - 1864, 1868, 1869, 1885, 1946, 1881, 1170, 1923, 2342, 522, - 1053, 1055, 1057, 1891, 2487, 1924, 1882, 1884, 1886, 54, - 1887, 1888, 1890, 1894, 1916, 883, 1041, 1922, 712, 1925, - 31, 728, 1926, 1941, 1898, 1827, 1933, 1939, 1962, 1899, - 1900, 1901, 1161, 32, 1953, 1963, 1170, 1965, 1966, 1967, - 1991, 2000, 893, 2009, 2002, 2016, 2412, 1575, 893, 468, - 2022, -527, 1170, -528, 2027, 2031, 2028, 33, 2032, 468, - 2034, 894, 1159, 468, 713, 1785, 468, 894, 883, 885, - 2037, 34, 1170, 468, 468, 468, 468, 1162, 2030, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 2036, - 2043, 2206, 468, 468, 2040, 2085, 2056, 2713, 1786, 1400, - 2058, 1170, 2490, 2071, 2077, 2066, 468, 2078, 1170, 2081, - 2079, 895, 2082, 576, 1575, 468, 2102, 895, 468, 2083, - 468, 2101, 885, 2106, 2105, 2109, 2112, 1170, 468, 2113, - 576, 468, 468, 2116, 2123, 2130, 468, 468, 2148, 54, - 1919, 1898, 2137, 1918, 2194, 2491, 2181, 2182, 2089, 2183, - 2195, 886, 468, 466, 468, 2459, 2207, 2614, 494, 2198, - 2492, 1974, 494, 2220, 887, 468, 2665, 2242, 538, 494, - 543, 2228, 2248, 543, 468, -441, 564, 2296, 2246, 494, - 494, 2250, 1987, 465, 1987, 465, 1492, 1493, -441, 2710, - 468, 1092, 2717, -441, 2251, 2253, 2121, 2255, 2122, 896, - 2259, 1302, 2127, 2128, 2270, 896, 1161, 2274, 1226, 2288, - 2304, 2372, 2266, 2376, 2286, 2365, 2371, 887, 2382, 2393, - 2394, 1803, 25, 543, 1313, 1903, 2396, 2399, 2403, 2670, - 564, 494, 564, 564, 564, 2402, 2431, 2427, 1041, -441, - 2436, 2437, 1041, 2349, 1041, 2404, 2417, 2670, 897, 2342, - 1355, 1162, 2428, 2450, 897, 2493, 898, 29, -441, 2444, - 1494, 1495, 898, 1382, 2434, 2449, 25, 2451, 899, 2473, - 1224, 2452, 2465, 2477, 899, 2765, 2500, 2108, 2501, 2505, - 2518, -1026, 2519, -1648, 1406, 2738, 2517, -1649, -1650, 1167, - -1651, -1652, -1653, -1654, 1904, 2526, -1655, 2380, 31, 900, - -1656, 29, 2719, -1657, -1658, 900, -1659, -441, 2540, 2527, - -1660, 32, -1661, -1662, 1159, 2520, -441, -1663, -1665, 1224, - 468, 2528, 1496, 1497, 1498, 1499, 1500, 1501, 2541, 1167, - 1502, 1503, 2543, -1666, 2547, 33, -1667, 1623, 2552, -1668, - -1669, -1670, 31, 2748, 902, 1167, 523, -1671, 2710, 34, - 902, 2819, 2549, 1964, -1672, 32, -1673, -1674, -1027, 2546, - 2553, 2560, 2566, 468, 468, 1167, 903, 2579, 468, 1170, - 2584, 1981, 903, 468, 2229, 2760, 468, 468, 2593, 33, - 2597, 468, 2603, 2606, 54, 1981, 905, 2625, 2605, 575, - 2608, 2613, 905, 524, 1167, 2622, 2626, 2627, 2628, 2636, - 2639, 1167, 468, 2640, 2641, 2654, 468, 2655, -1455, 2664, - 1159, 2668, 2482, 2676, 2677, 2680, 2347, 2693, 2483, 2696, - 1167, 2701, 1435, 2689, 2715, 2718, 2720, 468, 2732, 2734, - 2484, 496, 1987, 465, 1504, 1505, 1987, 465, 2089, 2723, - 2458, 2460, 2733, 2744, 2753, 2754, 2755, 2764, 2770, 2230, - 2768, 1461, -441, 2621, 2771, 2773, 2776, 2777, 1161, 2485, - 1041, 2486, 2778, 2782, 2783, 2784, 2809, 2815, 2208, 468, - 2793, 2824, 2830, 2797, 2831, 2838, 2841, 2843, 1170, 2848, - 2849, 2231, 2839, 2272, 497, 2850, 1905, 1906, 1907, 2840, - 1908, 1909, 1910, 1911, 1912, 1913, 2232, 2861, 2863, 498, - -1455, 2867, 851, 1162, 2303, 2233, 1765, 2305, 2349, 2307, - 2054, 2461, 2263, 2759, 2596, 611, 2487, 2805, 849, 612, - 2370, 2508, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, - 2360, 2361, 2811, 2858, 2714, 1159, 1167, 54, 2844, 2234, - 2837, 1363, 2653, 2488, 1506, 1507, 2375, 2807, 2039, 2061, - 2090, 2842, -1455, 499, 1161, 2308, 2035, 2532, 2806, 1451, - 2575, 712, 500, 2091, 1508, -1455, 1170, 2117, 2548, 1289, - -1455, 2364, 476, 468, 501, -1455, 1170, 2018, 1731, 502, - 1343, 2747, 1342, 1308, -1455, 468, 468, -1455, 2695, 468, - 2801, 2029, 1711, -1075, 2249, 2454, 2752, 2456, 2455, 1162, - 1730, 468, 1999, 1347, 503, 2223, 2442, 2682, 2426, 2489, - 468, 2219, 2743, 2742, 2490, 468, -1455, 2749, 468, 2750, - 1536, 564, 1538, 2595, 2235, 468, 468, 627, 1542, 477, - 1543, 1987, 465, 564, 2799, -1455, 2800, 468, 494, 468, - 1987, 465, 2792, 1663, 1937, 1987, 465, 504, 1987, 465, - 1524, 505, 2021, 1672, 1799, 1673, 1159, 2491, 1960, 468, - 1224, 1876, 1167, 1958, 644, 494, 494, 1987, 465, 2094, - 2735, 1464, 2492, 2264, 1681, 2218, 1683, 2221, 1857, 1161, - 1682, 0, 1240, 479, -1455, 1241, 1311, -1455, 1159, 1684, - 0, 2349, 0, -1455, 0, 0, 0, 0, 0, 543, - 0, 543, 0, 0, 0, 0, 0, 0, 564, 0, - 2576, 2638, 0, 0, 506, 1247, 0, 494, 0, 1726, - 468, 0, -1675, 0, 1162, 0, 468, 1170, 507, 564, - 0, 0, 2532, 0, 1092, 0, 0, 576, 0, 0, - 0, 564, 0, 0, 0, 0, 0, 1249, -1455, 468, - 1987, 465, 0, 468, 0, 0, 0, 1170, 0, 508, - 1170, 468, 509, 0, 0, 0, 0, 2493, 0, 0, - 510, 1167, 468, 511, 0, 0, 564, 564, 564, 0, - 0, 0, 1041, 1987, 465, 0, 1041, 468, 0, 0, - 0, 0, 512, 0, 0, 0, 0, 481, 1809, 482, - 1161, 1167, 1974, 0, 513, 0, 0, 0, 0, 54, - 0, 514, 0, 0, 0, 475, 1944, 0, 0, 476, - 515, 483, 0, 0, 484, 2729, 0, 0, 0, -1455, - 0, 0, 1161, 1240, 0, 0, 1241, -1455, 468, 0, - -1075, 468, 0, 0, 0, 1162, -1675, 0, 0, 0, - 0, 516, 0, -1455, 0, -1455, -1455, 0, 0, 1167, - -1675, 0, 0, 468, 2347, -1675, 1247, 0, 0, 1167, - 1174, 1987, 465, -1675, 468, 0, 477, 1162, 0, 0, - 0, 2756, 0, 478, 0, 0, 0, 1164, 0, 0, - 0, 0, -1455, 0, 468, -1455, -1455, -1455, 1249, 1240, - -1675, 0, 1241, 0, 1987, 465, 0, 0, 0, 0, - 0, 0, 0, 468, 468, 0, 1240, 0, 0, 1241, - 0, 0, 0, 0, 0, 1981, 0, 0, 0, 1981, - 479, 1165, 1247, 0, 0, 2615, 1229, 0, 0, -1675, - 0, 1041, 2349, 0, 0, 1240, 0, 0, 1241, 1247, - 0, 0, 54, 54, 0, 1258, -1675, 0, 468, 0, - 468, 0, 2820, 0, 1249, 0, 0, 1954, 0, 2633, - 2634, 0, 0, 0, 0, 0, 0, 564, 1247, 0, - 0, 1249, 2642, 2725, 1167, -1675, 0, 0, 1987, 465, - 0, 1159, 0, 494, 494, 0, 0, -1675, 480, 564, - 564, 1315, 0, 0, 0, 0, 0, 0, 0, 0, - 1249, -1675, 0, 0, 0, 0, -1675, 0, 0, 0, - 1167, 0, 468, 0, 0, 0, 564, 1366, 0, 0, - 0, 1159, 1472, 2199, 0, 0, 0, 0, 1973, 564, - 0, 0, 0, 0, 481, -1675, 482, 1159, 2697, 0, - 1167, -1675, 0, 1167, 0, 0, 564, 0, 0, 0, - 564, 1164, 0, -1675, 0, 0, 0, 1159, 483, 54, - 0, 484, 0, 0, 0, 0, 1473, -1675, 0, 2202, - -1675, 0, -1675, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -1675, 0, 1159, 0, 0, -1675, - 0, 0, 1474, 1159, 0, 1165, 1258, 0, 0, -1675, - 0, 0, 0, 1091, 0, 2347, 0, -1675, 0, 1091, - 1475, 0, 1159, -1675, 1476, 0, 0, 0, -1675, 0, - 0, 0, 0, 1981, -1675, 1161, 0, 0, 1981, 0, - 0, 1981, 0, 0, -1675, 1477, 0, 0, 1478, 0, - 0, 1265, 1266, 1267, 1268, 1269, 1270, 0, 0, 0, - 0, 0, 1479, -1675, 0, 0, 0, 0, 0, 0, - 0, 0, 1258, 0, 0, 1161, 0, 0, 0, 2092, - 1162, 0, 0, -1457, 2097, 2098, 2100, 0, 0, 1258, - 0, 1161, 0, 1423, 0, 0, -1675, 0, 564, 0, - 0, 0, 0, 0, 2114, 1237, 0, 0, 1449, 0, - 0, 1161, 0, 0, 644, 0, 0, 644, 1258, 0, - 1162, 494, 494, 54, 494, 644, 0, 564, 1091, 0, - 1091, 1091, 0, 0, 0, 1167, 1162, 0, 1159, 0, - 1161, 0, 0, 0, 54, 0, 0, 1161, 0, 0, - 0, 1480, 0, 0, 0, 0, 1162, 0, 0, 1481, - 0, 0, -1675, 0, 0, 0, 1161, 0, 0, 0, - 0, 1166, 0, 0, 0, -1457, 1981, 0, 0, -1675, - 0, 0, 0, 0, 1224, 1162, 0, 0, 0, 0, - 0, 0, 1162, 0, 0, -1675, 1091, 0, 0, 1091, - 1091, 1482, 1265, 1266, 1267, 1268, 1269, 1270, -1675, 0, - 0, 1162, 0, 1164, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1457, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, - -1457, 0, 0, 0, 0, -1457, 2215, 2216, 2217, 0, - -1457, 0, 1568, 0, 0, 0, 0, 1165, 0, -1457, - 0, -1675, -1457, 0, 1159, 0, 0, 0, 1265, 1266, - 1267, 1268, 1269, 1270, 0, 0, 0, 0, -1675, 0, - 0, 0, 1161, 0, 0, 1265, 1266, 1267, 1268, 1269, - 1270, -1457, 0, 54, 0, 0, 644, 0, 0, 0, - 0, 2271, 0, 0, 0, 0, 0, -1675, 0, 1164, - -1457, 0, 0, 0, 1265, 1266, 1267, 1268, 1269, 1270, - 0, 0, 0, 0, 0, 0, 0, 1162, 0, 564, + 470, 466, 912, 652, 650, 583, 1053, 1406, 880, 827, + 1095, 1046, 59, 596, 850, 718, 1050, 1100, 2000, 1572, + 1389, 1236, 839, 529, 1371, 1082, 1995, 64, 1221, 1468, + 1405, 1238, 44, 71, 1864, 80, 1613, 1436, 1417, 658, + 1995, 564, 1438, 64, 2051, 1439, 1440, 1283, 1377, 2066, + 467, 2068, 1901, 1902, 1323, 598, 1381, 1921, 569, 1293, + 2372, 2273, 2351, 1547, 1611, 1612, 1545, 599, 1866, 1543, + 914, 2355, 918, 2047, 922, 1546, 1410, 67, 1527, 2228, + 1111, 1961, 581, 2383, 2019, -596, 604, 734, 2386, 607, + -588, 610, 659, 614, 1085, 474, 712, 1074, 1948, 1949, + -1677, -1677, 2707, -942, 1247, -593, -917, 1683, 2245, -593, + -1555, -939, -939, 1197, -596, 612, 1730, -342, -1657, -1657, + -1566, 2540, 1904, 1727, -1573, 1373, 1299, 1459, -1668, -1668, + 1210, 734, -1675, -1675, 1253, 1408, 2545, 537, 1680, 2484, + -345, 586, 2549, 2845, 2104, 1054, 524, 1622, 2235, 537, + -942, 573, -943, 734, 1284, 719, -1566, -1573, 1751, -1139, + -940, -940, 1881, 1288, 833, 643, 1255, 2266, 2527, -943, + 1362, 1622, 2182, -1555, -555, 1982, 1983, -568, -583, 537, + -809, 537, 1074, 2130, 2132, 2570, 1382, -809, 1074, 1659, + 1089, 2243, 478, 2468, 1390, 734, 1660, 1393, 1394, 1904, + 1296, 1089, 537, 2733, 2647, 718, 734, 873, 1373, -342, + -828, 718, 2111, 2295, 2522, 1382, 2591, -828, 2079, 2510, + 1811, 2607, 2626, 2236, 593, 593, 587, 2679, 876, 2613, + 1228, 1232, -345, 2677, 1584, 1432, 1050, 840, 869, 1709, + 1733, 25, 1382, 2387, 550, 634, 863, 1069, 1239, 479, + 2630, 869, 2481, 2710, 1904, 2237, 2870, 2709, -78, 1748, + 1748, 539, 2769, -78, 1247, 3, 4, 1365, -1654, -1654, + 2238, 1330, 1494, 2638, 2680, 1087, 1294, 30, 1088, 2239, + 635, 1415, 2274, 2296, 733, 81, 1103, 1904, 1416, 1395, + 2607, 1070, 1905, 1906, 1907, 2831, 2787, 1997, 2651, 2809, + 2285, 2810, 1404, 1667, 1643, 2055, 1346, 534, 871, 2543, + 1247, 1297, 2829, 2240, 1876, 636, 1749, 2044, 32, 2406, + 1359, 871, 2482, 718, 718, 1710, 1255, 2441, 2521, 82, + 1995, 2445, 1995, 2308, 2581, 1247, 1315, 2284, 2159, 2539, + 1253, 2245, 2020, 2275, 2546, 1734, 551, 1247, 864, 722, + 2818, 2692, 1433, 1584, 1373, 2544, 2375, 872, 1411, 2547, + 723, 2839, 637, 2297, 1374, 1253, 2281, 1420, 2283, 35, + 535, 2857, 1255, 1331, 2866, 2627, 1383, 1253, 1075, 2722, + 2163, 2164, 2165, 2166, 2636, 2852, 2170, 2171, 2172, 2173, + 2174, 2175, 2176, 2177, 2178, 2179, -342, 1255, 2241, 2388, + 841, 2469, 842, 834, 1221, 1383, 1134, 2404, 2681, 1255, + 2623, 2871, 2808, 25, 2678, 1367, 2711, 1192, 483, -345, + 484, 2473, 1380, 1455, 2431, 2570, 1396, 1298, 1644, 1285, + 1419, 1492, 1383, 536, 1397, 1189, 1190, 1380, 2206, 2207, + 2730, 2832, 1645, 1668, 1289, 486, 1453, 1646, 1572, 30, + 588, 2827, 2846, 2394, 644, 2485, 1409, -342, 2607, 1812, + 1207, 1071, 2020, 1075, 2407, 537, 1380, 1908, 2528, 1075, + 574, 1532, 1046, 835, 1311, 2217, 2218, 2219, 2220, 2819, + -345, 625, 1647, 2859, 1197, 2582, 728, 622, 1909, 2032, + 32, 2788, 1357, 1380, 638, 2789, 583, 1727, 1475, 1623, + 2202, 1743, 64, 33, 1210, 1800, 2002, 620, 623, 1841, + 624, 2800, 2351, 1358, 616, 2092, 2093, 2021, 617, 2026, + 717, 2355, 2813, 1963, 1184, 2540, 1368, 34, 1696, -809, + 1076, 1216, 475, 714, 1526, 2580, 2548, 2607, 1661, 2080, + 2584, 35, 1406, 2586, 2167, 1373, 470, 470, 576, 881, + 2571, 1400, 64, 1217, 2820, 1376, 598, 1910, 650, -828, + 1216, 1458, 584, 1461, 2141, 1072, -342, 1218, 599, 1464, + 470, 2475, -588, 837, 1224, 1401, 1276, 718, 1800, 1529, + 1995, 846, 1217, 2486, 1995, -942, 616, -593, -917, -345, + 617, 1382, -1555, 2004, 1919, 862, 1220, 59, 1584, 1584, + 2512, 2513, -1566, 1584, 2732, -342, -1573, -342, 60, 961, + 470, 1047, 64, 1751, 2624, 1081, 860, 44, 71, 1528, + 80, 1228, 2739, 2738, 60, 851, 585, 1648, -345, 1536, + -345, 1242, -942, 1540, -943, 1529, 1050, 60, -1566, -1573, + 1061, 1063, 1065, 582, 1584, 1584, 1619, 1581, 1682, 2472, + 470, -943, 1586, 1588, 1469, -1555, 1195, 2139, 712, 1201, + -583, 1291, 67, 1684, 1093, 1094, 1914, 1915, 1916, 1917, + 1918, 1919, 597, 2155, 843, 1093, 1094, 634, 2687, 2168, + 1529, 1239, 60, 600, 2625, 2009, 1777, 2860, 2052, 2169, + 1529, 1050, 1559, 2162, 616, 2531, 1780, 2786, 617, 1783, + 1560, 1561, 1562, 1400, 591, 1572, 1697, 1414, 589, 2395, + 717, 2397, 635, 2474, 1506, 1507, 717, 961, 1176, 615, + 2010, 2503, 2186, 1916, 1917, 1918, 1919, 1401, 630, 2191, + 1382, 1216, -78, -78, 470, 2664, 2147, 2149, 2150, 2145, + 1625, 2144, 2414, 2665, 633, 2504, 64, 2101, 2146, 2148, + 1911, 1912, 1913, 1217, 1914, 1915, 1916, 1917, 1918, 1919, + 641, 2351, 470, 583, 2861, 2107, 1719, 2193, 592, 1849, + 2355, 2637, 2616, 25, 1767, 720, 1850, 721, 1460, 1995, + 1775, 1383, 470, 470, 470, 869, 470, 470, 1995, 84, + 870, 2862, 1333, 1995, 637, 2073, 1995, 830, 1934, 2053, + 1936, 1937, 1271, 1272, 1273, 1274, 1275, 1276, 2074, 30, + 470, 1189, 1190, 1216, 2865, 1995, 1273, 1274, 1275, 1276, + 642, 1740, 1510, 1511, 2728, 1796, 1797, 1798, 717, 717, + 1840, 1460, 1631, 1236, 1842, 1217, 1207, 1844, 1334, 1941, + 645, 1308, 1380, 2840, 2841, 593, 2078, 1858, 1776, 1218, + 32, 626, 1859, 627, 1046, 871, 1324, 1325, 1632, 1329, + 646, 470, 2348, 33, 1319, 470, 470, 1786, 599, 599, + 1406, 599, 1793, 1382, 2287, 656, 470, 1471, 1216, 2003, + 2557, 2026, 734, 1778, 1995, 2090, 860, 34, 1781, -388, + 1361, 2868, 1309, 1176, -388, 1310, 1953, 1382, 1556, 1557, + 1217, 1698, 1860, 1388, 872, 2713, 2666, 1857, 724, 2717, + 886, 1861, 1312, 1862, 1220, 1313, 887, 2652, 961, 628, + 1383, 629, 1954, 2488, 1412, 961, 1584, 1584, 1584, 1584, + 727, 1995, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, + 1584, 1584, 2023, 1407, 2081, 1336, 961, 85, 889, 2560, + 1817, 828, 829, 726, 831, 86, 2288, 1102, 1246, -388, + 2745, 1247, 728, 1102, 718, 2025, 2622, 1633, 2653, 1879, + 2491, 2161, 1634, 478, 546, 729, 2654, 1635, 1473, 718, + 566, 1380, 594, 734, 1584, 1584, 1834, 2030, 2746, 2082, + 87, 1253, 734, 1606, -153, 1607, 2112, 2236, -1679, 2183, + 1333, 2119, 2054, 2055, 1337, 2655, 3, 4, -388, 2573, + 832, 1581, 1581, 2086, 2574, 1465, 1581, 838, 1313, 1995, + 2289, 888, 2290, 1255, 616, 605, -917, 2493, 617, 2237, + 479, 2056, 1491, 2667, 1935, 1492, 1955, 88, 847, 1240, + 2764, 1956, 1205, 1206, 2447, 886, 1334, 1524, 852, 1244, + 1525, 887, 1995, 2239, -1652, -1652, 1692, 1581, 1581, 1081, + 961, 853, 1292, 1383, 1445, 2391, 1951, 524, 1738, -1653, + -1653, 1313, 1047, 1302, 2656, 1102, 1102, 1975, 855, 1976, + 1572, 1436, 717, 60, 481, 2657, 1438, 1383, 856, 1439, + 1440, 1467, 1999, 1808, 89, 714, 1809, 473, 1047, 2516, + 2668, 1838, 858, 522, 1492, 1335, 1232, 1852, 1877, 1885, + 1853, 1313, 1313, 549, 64, 1889, 1636, 562, 1313, 859, + 2719, 2828, -1679, 886, 1380, 2496, 867, 1637, 2063, 887, + 2065, 1995, 882, 60, 582, 2858, -1679, 1923, 883, 2069, + 1313, -1679, 2070, 884, 2075, 1176, 2842, 2076, 1380, 2123, + 885, 2306, 2135, 1336, 2137, 1525, 888, 2138, 1563, 1564, + 1565, 897, 1566, 1567, 1568, 1569, 1570, 1571, 2497, 1831, + 889, 1832, 2241, 597, 2299, 470, -1679, 470, 2184, 2185, + 1957, 2282, 470, 2498, 1977, 470, 1978, 2556, 898, 470, + 622, 1958, 915, 60, 1500, 1501, 2099, 25, 919, 483, + 2872, 484, 866, 470, 868, 64, 470, 470, 470, 470, + 620, 623, 1337, 624, 2369, 1051, 470, 470, 470, 2298, + 890, 2307, 886, 485, 891, 1052, 486, 2151, 887, 2198, + 1313, 1264, 1313, 30, 888, 2262, 470, 2267, 2263, 899, + 2268, 1176, 470, 470, 470, 470, 1047, 1475, 1057, 2264, + 470, 470, 1055, 892, 2286, 470, 2541, 1809, 900, 470, + 1506, 1507, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 1073, 2658, 470, 32, 2659, 1059, 2378, 470, 2499, + 1809, 470, 2446, 470, 2449, 961, 2392, 33, 2451, 2393, + 1066, 2454, 2415, 1678, 733, 1525, 2477, 1904, 2478, 1809, + 1068, 1809, 1905, 1906, 1907, 889, 2561, 470, 901, 1525, + 2617, 34, 2348, 2618, 1687, 2643, 1689, 846, 1809, 2195, + 893, -1679, -1655, -1655, 1078, 35, 470, 60, 2121, 2669, + 1700, 2026, 1525, 888, 25, 470, 470, 718, 1529, 1581, + 1581, 1581, 1581, -1656, -1656, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 916, -1658, -1658, 2672, 891, + 1732, 2673, 1080, 1176, 1083, 1199, 1084, 2347, 1510, 1511, + 30, 1086, 1047, 1104, 1047, 1178, 2190, 2684, 2691, 1179, + 1081, 2691, 733, 889, 2689, 1904, 2693, 2690, 917, 2690, + 1905, 1906, 1907, -1659, -1659, 1181, 902, 1581, 1581, 2705, + 1183, 1230, 2706, 2306, 886, 2736, 2743, 2196, 2706, 1525, + 887, 32, -559, 961, -566, 525, 470, 470, 2476, 470, + 1529, -1679, 2751, 1188, 33, 1081, 1584, 1191, 1271, 1272, + 1273, 1274, 1275, 1276, -1660, -1660, 886, 891, 1815, 1192, + 2465, 1552, 887, 2757, 1193, 903, 2690, 2250, 34, 2773, + 470, 1194, 2774, 904, 1047, 893, 2801, 2436, 2804, 2802, + 1494, 1081, 526, 1198, 1835, 905, 892, 25, 2356, 717, + 1767, 2436, 2835, 597, 597, 2690, 597, 886, 2853, -1661, + -1661, 2706, 889, 887, 717, 35, 961, 1176, 495, 2235, + 1728, 1729, 523, 1200, 2390, -556, 906, -557, 1909, 541, + 2368, -1662, -1662, 30, -1663, -1663, 1203, 25, -1664, -1664, + 580, 580, 1584, -1665, -1665, 888, -1666, -1666, 1204, 1176, + -1667, -1667, 1209, 25, 1211, 470, 470, -1669, -1669, -1670, + -1670, 470, 920, 893, -1671, -1671, 891, -1672, -1672, -1673, + -1673, 908, 1685, 30, 32, -1674, -1674, 888, 1212, 583, + -1676, -1676, -1678, -1678, 1422, 1423, 1213, 33, -560, 30, + 1214, 2348, 608, 909, 2236, 921, -558, 1910, -435, -435, + 1215, 470, 470, 470, -439, -439, 470, -438, -438, 1584, + 2026, 34, 1222, 911, 32, 1223, 1909, 1237, 888, 470, + 470, 470, 470, 2508, 1224, 35, 2237, 33, 583, 470, + 32, 1241, 470, 1508, 1509, 1173, 1510, 1511, 1305, 1307, + 1281, 2238, 1287, 33, 1288, 1289, 1303, 470, 470, 1316, + 2239, 34, 470, 1322, 870, 872, 1353, 1355, 1360, 468, + 1379, 1378, 893, 1380, 496, 35, 470, 34, 496, 470, + 1385, 470, 1386, 1387, 540, 496, 545, 1050, 2641, 545, + 1391, 35, 545, 571, 2240, 1910, 496, 496, 899, 1398, + 1399, 1529, 470, 733, 889, 1403, 1904, 1413, 583, 1418, + 1425, 1905, 1906, 1907, 470, 1993, 1426, 900, 1979, 1434, + 1430, 1435, 1446, 1449, 2517, 2518, 1452, 1450, 470, 1993, + 1456, 2851, 1490, 1460, 2123, 60, 889, 545, 1184, 1195, + 1496, 1201, 470, 1493, 1495, 622, 1531, 571, 496, 571, + 571, 571, 1532, 1301, 1739, 2463, 1102, 470, 891, 1537, + 64, 734, 1856, 1590, 467, 620, 623, 901, 624, 1591, + 1247, 1102, 1313, 1603, 1605, 470, 1608, 889, 467, 2241, + 1621, 1639, 1628, 1640, 1642, 1663, 1784, 892, 1664, 1680, + 891, 1686, 1047, 1047, 1047, 1693, 1694, 1701, 592, 1720, + 1911, 1912, 1913, 1708, 1914, 1915, 1916, 1917, 1918, 1919, + 1721, 1723, 1741, 733, 1722, 1745, 1904, 1746, 1747, 1785, + 1173, -1679, -1679, -1679, 593, 1801, 60, 1791, 1806, 1810, + 1814, 891, 1818, 961, 1819, 1820, 1821, 1822, 1843, 1845, + 1846, 1836, 1854, 1865, 1872, 1869, 1870, 1873, 1874, 1878, + 1887, 1875, 1888, 1891, 893, 902, 1890, 2347, 1176, 2098, + 1792, 1892, 1893, 1894, 2103, 1896, 2105, 2106, 2108, 1897, + 1900, 1929, 1922, 1928, 1930, 1931, 1947, 1952, 1968, 1581, + 1973, 1959, 717, 1932, 1939, 1945, 893, 1047, 1911, 1912, + 1913, 2015, 1914, 1915, 1916, 1917, 1918, 1919, 1835, 1969, + 1971, 1997, 1176, 1972, 903, 2008, 1629, 1909, 2006, 2022, + 2034, 2028, 904, -440, -441, 470, 2036, -1459, 1176, 2033, + 2037, 2038, 718, 2040, 905, 470, 2043, 893, 2046, 470, + 2049, 2062, 470, 2042, 2064, 2077, 2087, 2091, 1176, 470, + 470, 470, 470, 2083, 2084, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 906, 2085, 2110, 470, 470, + 1406, 2088, 2212, 2089, 2102, 1581, 60, 1176, 2109, 2113, + 2114, 2117, 470, 2120, 1176, 2122, 1910, 591, 2129, 583, + 2136, 470, 2154, 1925, 470, 2143, 470, 1904, 2187, 1924, + -389, 2188, 2200, 1176, 470, -389, 583, 470, 470, 1980, + 908, 2189, 470, 470, 2204, 2201, 2226, 2252, 2213, -1459, + 640, 2234, 2254, 2256, 2620, 2248, 2259, 2671, 470, 1993, + 470, 1993, 909, 2261, 2257, 2265, 2221, 2222, 2223, 2276, + 2280, 470, 1581, 2272, 2294, 2292, 2310, 2376, 655, 2381, + 470, 592, 911, 2385, 2371, 2380, 2071, 2405, 2714, 2437, + 2723, 2399, 2442, 2400, 1809, 2443, 470, 2402, 2408, 2450, + -389, -1459, 2409, 2457, 2410, 2456, 2423, 2433, 467, 2440, + 467, 1232, 1173, 2434, -1459, 2458, 2455, 2479, 2483, -1459, + 2506, 2277, 2471, 2507, -1459, -939, 1910, 2511, 2094, -1652, + 2524, 2523, -1653, -1459, 580, 2676, -1459, -1654, 2532, -1655, + 60, 2535, -1656, -1657, 1047, -1658, 2347, 2354, 1047, -389, + 1047, 2533, 2525, 2676, 1165, -1659, -1660, 2550, 593, 2551, + -1661, -1662, 2553, 2558, -1663, -1459, 2566, -1664, 2526, 1102, + -1665, -1666, -1667, 2771, 2585, -1669, 2127, -1670, 2128, 571, + -1671, 2534, 2133, 2134, -1459, 632, 2374, -1672, 2744, -1673, + -1674, 2599, 571, -1675, -1676, -1677, 496, -1678, -940, 2725, + 2538, 2555, 2603, 2609, 2559, 2572, 2590, 1467, 1173, 1911, + 1912, 1913, 2389, 1914, 1915, 1916, 1917, 1918, 1919, 2612, + 2631, 2611, 649, 496, 496, 2614, 470, 2619, -354, 2628, + 2632, 2633, 2634, -1459, 2642, 2645, -1459, 2648, 2662, 2649, + 2670, -354, -1459, 2663, 2674, 2682, -354, 2683, 2714, 2754, + 2686, 2825, 2695, 2699, 2707, 2702, 2721, 545, 545, 2724, + 545, 2726, 2740, 2741, 2729, 2742, 2750, 1230, 2759, 470, + 470, 571, 2766, 2760, 470, 1176, 2761, 2770, 2772, 470, + 496, 2627, 470, 470, 2776, 2777, 2782, 470, 2488, 2783, + 2779, 571, -354, 571, 2489, 594, 2784, -1459, 2785, 2790, + 2791, 2799, 2427, 2428, 2429, 2430, 2490, 2821, 470, 1993, + 2815, -354, 470, 1993, 2803, 2214, 1230, 2830, 2836, -1679, + -1679, -1679, 2837, 1914, 1915, 1916, 1917, 1918, 1919, 1165, + 1173, 2844, 2847, 470, 1629, 2491, 2849, 2492, 571, 571, + 571, 2854, 2845, 2846, 2867, 2855, 2856, 2869, 2873, 857, + 1970, 2467, 1980, 2464, 2466, 1688, 2602, 2514, 467, 2269, + -354, 2765, 467, 2811, 1246, 2735, 1047, 1247, 1987, -354, + 2100, 1863, 2379, 1470, 2309, 470, 1771, 2313, 2060, -1459, + 1314, 60, 1987, 1478, 1176, 1295, 582, -1459, 1457, 2024, + 1737, 1350, 2493, 1349, 2350, 2753, 477, 1253, 2701, 2807, + 478, 899, 2035, -1459, -1679, -1459, -1459, 1717, 2255, 580, + 2758, 2461, 2005, 2354, 1736, 1354, 2229, 2448, 2094, 2494, + 900, -153, 2688, 2432, 2225, 733, 2749, 1479, 1904, 1255, + 2748, 1180, 2755, 1905, 1906, 1907, 2756, 1542, 1544, 1548, + 2601, 1549, -1459, 2805, 2798, -1459, -1459, -1459, 2806, 1669, + 2417, 1943, 1530, 1480, 1173, 1966, 1882, 479, 2027, 1805, + 1964, 1679, 2817, 2864, 480, 2720, 2850, 717, 2843, 2661, + 901, 1481, 1176, 2542, 2045, 1482, 2384, 1370, 2067, 470, + 2096, 2814, 1176, 2848, 2041, 2495, 1173, 2357, 2812, 2097, + 2496, 470, 470, 1690, 2126, 470, 1483, 1235, 1950, 1484, + 2370, 2270, 0, 2554, 0, 0, -354, 470, 1993, 1317, + 0, 481, 0, 1485, 0, 0, 470, 1993, 0, 0, + 0, 470, 1993, 0, 470, 1993, 0, 0, -1679, 0, + 0, 470, 470, 2497, 60, 0, 2302, 0, 0, 571, + 0, 0, -1679, 470, 1993, 470, 0, -1679, 2498, 0, + 0, 0, 0, 0, 0, 496, 496, 467, 902, 0, + 0, 571, 571, 1321, 0, 470, 467, 0, 0, 616, + 0, 467, 855, 617, 467, 2460, 0, 2462, 0, 482, + 0, 1165, -1679, 2629, 0, 0, 0, 0, 571, 1369, + 0, 0, 0, 467, 0, 0, 0, 2354, 0, 0, + 0, 571, 1486, 0, 0, 0, 0, 903, 0, 0, + 1487, 0, 470, 1993, 0, 904, 0, 0, 571, 0, + 2646, 0, 571, 0, 2644, 0, 483, 905, 484, 1909, + 0, 0, 470, 1176, 0, 0, 0, 1264, 1462, 0, + 1463, 0, 0, 583, 2499, 2542, 0, 0, 0, 0, + 485, 0, 1488, 486, 0, 470, 0, 1230, 906, 470, + 1993, 0, 467, 1176, 0, 0, 1176, 470, 0, 0, + 0, 0, 2224, 0, 2227, 0, 0, 1165, 470, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1047, 0, + 0, 0, 1047, 470, 0, 0, 0, 2712, 1910, 0, + 0, 0, 0, 908, 0, 0, 0, 0, 0, 467, + 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 909, 0, -1679, 0, 0, + 2734, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2737, 0, 0, 0, 470, 911, 0, 470, 1993, 0, + 0, 0, 0, 0, 0, 1427, 0, 0, 0, 0, + 0, 1443, 571, 1246, 0, 0, 1247, 0, 0, 470, + 0, -1679, -1679, -1679, 0, 0, 649, 0, 0, 649, + 470, 1993, 0, 496, 496, 1173, 496, 649, 0, 571, + 0, 0, 1101, 0, 2762, 0, 1253, 467, 1101, 1165, + 470, 0, 0, 1254, 0, 0, 0, 0, 60, 0, + 1541, 0, 537, 0, 0, 0, 0, 0, 0, 470, + 470, 0, 0, 0, 0, 0, 0, -1679, 1255, 1173, + 467, 0, 0, 0, 1271, 1272, 1273, 1274, 1275, 1276, + 0, 0, 0, 0, 2350, 1173, 2354, 0, 1047, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 470, + 1993, 0, 0, 0, 0, 1173, 470, 0, 0, 0, + 0, 0, 0, 0, 0, 2826, 0, 0, 0, 733, + 0, 0, 1904, 0, 1243, 0, 0, 1905, 1906, 1907, + 0, 1911, 1912, 1913, 1173, 1914, 1915, 1916, 1917, 1918, + 1919, 1173, 0, 0, 2418, 0, 0, 0, 1101, 467, + 1101, 1101, 0, 0, 1574, 1498, 1499, 0, 0, 0, + 1173, 1744, 1987, 1165, 0, 0, 1987, 1256, 470, 0, + 0, 1752, 0, 1755, 0, 0, 1766, 0, 0, 0, + 0, 1257, 1770, 0, 1772, 0, 1258, 0, 0, 60, + 60, 0, 0, 0, 0, 1165, 1779, 0, 649, 0, + 0, 1782, 0, 2731, 0, 1787, 1788, 1789, 1790, 0, + 1794, 1795, 0, 0, 0, 0, 1101, 0, 0, 1101, + 1101, 1261, 0, 0, 0, 0, 0, 0, 0, 1500, + 1501, 571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1166, 0, 0, 0, 0, - 564, 0, 564, 1165, 0, 0, 0, 0, 0, -1457, - 0, 1696, -1457, 1701, 0, 0, 2368, 0, -1457, 0, - 0, 0, 0, 1159, 54, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1461, 0, 1466, - 1468, 0, 0, 0, 0, 564, 0, 0, 0, 0, - 0, 0, 0, 1159, 1366, 494, 0, 0, 1161, 0, - 0, 0, 0, 0, 0, 494, 1747, 494, 1751, 0, - 494, 0, 0, -1457, 0, 0, 494, 0, 494, 0, - 0, 0, 0, 0, 1164, 0, 0, 0, 0, 644, - 494, 0, 0, 0, 644, 494, 0, 0, 0, 494, - 494, 494, 494, 1162, 494, 494, 0, 0, 0, 0, - 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1159, 0, 0, 564, 1810, 893, 1974, 1165, 0, - 0, 0, 2421, 2422, 2423, 2424, 0, 1822, 0, 1532, - 1533, 0, 0, 0, 0, 894, 0, 1547, 0, 1548, - 1549, 0, 0, 0, -1457, 0, 0, 0, 0, 0, - 0, 0, -1457, 0, 1586, 0, 1587, 1161, 0, 0, - 0, 804, 804, 0, 0, 0, 0, 0, -1457, 0, - -1457, -1457, 0, 0, 0, 1240, 1862, 1603, 1241, 0, - 0, 0, 0, 0, 0, 895, 2294, 1161, 0, 0, - 0, 0, 0, 0, 2295, 1164, 0, 0, 0, 0, - 0, 0, 1162, 0, 0, 0, 0, -1457, 1247, 0, - -1457, -1457, -1457, 0, 0, -1675, 0, 0, 0, 0, - 0, 950, 957, 0, 0, 728, 1159, 1164, 1898, 0, - 0, 0, 1162, 1899, 1900, 1901, 0, 1166, 0, 1165, - 1249, 0, 0, 0, 0, 1161, 0, 0, 0, 0, - 0, 2296, 0, 0, 0, 1161, 0, 0, 0, 0, - 0, 0, 1159, 0, 0, 0, 0, 0, 0, 0, - 0, 1165, 0, 896, 0, 0, 1720, 1720, 1240, 0, - 0, 1241, 0, 0, 0, 0, 0, 1229, 0, 0, - 1162, 0, 1159, 0, 0, 1159, 0, 0, 0, 0, - 1162, 0, 0, 0, 0, 0, 0, 0, 0, 2203, - 0, 1247, 0, 0, 0, 0, 0, 0, -1675, 0, - 0, 1568, 897, 0, 0, 0, 0, 0, 1091, 950, - 898, 0, 0, 1166, 0, 0, 0, 0, 1091, -1675, - 0, 1091, 899, 1249, 2297, 0, 1180, 0, 0, 0, - 0, 0, 0, -1675, 564, 0, 0, 0, -1675, 0, - 0, 1990, 0, 0, 0, 0, 0, 0, 0, 0, - 1161, 0, 0, 900, 1202, 1990, 0, 0, 0, 2008, - 0, 0, 2011, 0, 1701, 0, 0, 0, 0, 0, - 0, 0, 0, -1675, 1219, 1220, 1221, 0, 0, 1225, - 0, 0, 0, 2623, 0, 0, 1161, 0, 0, 0, - 0, 0, 2415, 1091, 0, 1162, 0, 0, 902, 0, - 0, 0, 1280, 0, 0, 0, 1091, 0, 0, -1675, - 1423, 0, 0, 0, 0, 0, 1161, 0, 0, 1161, - 903, 0, -1675, 0, 0, 0, 0, 0, 1258, 0, - 1865, 1162, 0, 0, 2659, 0, -1675, 0, 1166, 0, - 905, -1675, 2298, 0, 0, 2299, 0, 0, 0, 0, - 0, 1321, 0, 0, 0, 1333, 1338, 1159, 0, 0, - 0, 1162, 0, 0, 1162, 0, 0, 1492, 1493, 0, - 1423, 0, 0, 0, 0, 564, -1675, 0, 1904, 1423, - 564, 564, 564, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 494, 0, 0, 0, 2706, 0, 0, - 564, 0, 0, 0, 644, 0, 0, 0, 0, 950, - 1164, 0, 0, 0, 0, 0, 950, 0, -1675, 0, - 1423, 1423, 0, 0, 0, 0, 0, 0, 0, 0, - 2728, 1258, 0, 0, 0, 0, 0, 950, 0, 0, - 0, 1494, 1495, 0, 0, 0, 1374, 0, 0, 0, - 1164, 0, 0, 0, 1165, 0, 0, 0, 1568, 1166, - 0, 0, 0, 0, 0, 0, 1164, 0, 0, 0, + 0, 0, 571, 0, 571, 0, -1461, 0, 0, 0, + 0, 0, 0, 1702, 0, 1707, 0, 0, 0, 0, + 0, 0, 0, 0, 1173, 0, 1264, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1167, 0, 0, 0, + 0, 1502, 1503, 1504, 1505, 1506, 1507, 0, 571, 1508, + 1509, 0, 0, 0, 0, 0, 1369, 496, 0, 60, + 0, 0, 1498, 1499, 0, 0, 0, 496, 1753, 496, + 1757, 0, 496, 1909, 0, 0, 0, 0, 496, 0, + 496, 1168, 0, 2350, 0, 0, 0, 0, 0, 0, + 0, 649, 496, 0, 0, 0, 649, 496, -1461, 0, + 0, 496, 496, 496, 496, 0, 496, 496, 0, 0, + 0, 0, 0, 0, 0, 0, 1266, 0, 0, 0, + 1987, 0, 0, 0, 0, 1987, 571, 1816, 1987, 0, + 0, 0, 0, 0, 0, 886, 1500, 1501, 0, 0, + 0, 887, 1910, 1824, 0, 0, 0, 0, 899, 0, + -1461, 0, 1173, 1510, 1511, 0, 0, 0, 0, 1472, + 1474, 0, 0, -1461, 0, 0, 0, 900, -1461, 0, + 0, 733, 0, -1461, 1904, 1170, 0, 0, 0, 1905, + 1906, 1907, -1461, 0, 0, -1461, 0, 0, 1868, 1171, + 0, 0, 0, 0, 0, 0, 0, 0, 1502, 1503, + 1504, 1505, 1506, 1507, 0, 0, 1508, 1509, 0, 0, + 60, 1167, 0, 0, -1461, 0, 1267, 901, 0, -1679, + -1679, -1679, 0, 1271, 1272, 1273, 1274, 1275, 1276, 0, + 0, 60, 0, -1461, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1165, 0, 888, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1168, 0, 0, 1538, + 1539, 1173, 0, 1987, 1512, 1513, 0, 1553, 0, 1554, + 1555, 1230, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1461, 0, 1592, -1461, 1593, 0, 1165, 0, + 1173, -1461, 0, 0, 0, 0, 0, 0, 0, 1235, + 0, 0, 0, 0, 1165, 902, 0, 1609, 0, 0, + 1510, 1511, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1165, 0, 60, 0, 0, 0, + 0, 0, 0, 1574, 0, 1911, 1912, 1913, 0, 1914, + 1915, 1916, 1917, 1918, 1919, 0, -1461, 0, 0, 1173, + 1170, 0, 0, 1165, 903, 0, 0, 0, 0, 1173, + 1165, 0, 904, 0, 1171, 899, 571, 0, 0, 0, + 0, 0, 0, 1996, 905, -1679, 0, 0, 0, 1165, + 60, 2116, 0, 1246, 900, 1172, 1247, 1996, 0, 0, + 0, 2014, 0, 0, 2017, 889, 1707, 0, 0, 0, + 0, 1980, 0, 0, 0, 906, 0, 1726, 1726, 0, + 0, 0, 0, 0, 0, 0, 1253, 0, 0, 0, + 0, 1512, 1513, -1679, 0, 0, 0, 0, -1461, 0, + 0, 0, 0, 0, 901, 2300, -1461, 0, 0, 0, + 0, 1514, 1427, 2301, 1910, 907, 0, 0, 1255, 891, + 908, 0, -1461, 0, -1461, -1461, 0, 0, 1101, 0, + 0, 60, 0, 1167, 0, 0, 0, 0, 1101, 0, + 0, 1101, 909, 0, 1173, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1164, 0, 0, 0, - 0, 1166, 0, 0, 1165, 0, 0, 0, 0, 0, - 1995, 1161, 0, 1496, 1497, 1498, 1499, 1500, 1501, 0, - 1165, 1502, 1503, 0, 0, 1164, 0, -1675, 0, 0, - 0, -1675, 1164, 0, 1265, 1266, 1267, 1268, 1269, 1270, - 1165, 2025, 2025, 0, 2210, 0, 0, 0, 0, 0, - 0, 1164, 564, 564, 564, 466, 1162, 1990, 2227, 950, - 0, 0, 2227, 2241, 0, 0, 0, 0, 0, 1165, - 0, 0, 0, 0, 0, 1535, 1165, 535, 0, 0, - 1905, 1906, 1907, 0, 1908, 1909, 1910, 1911, 1912, 1913, - 0, 1701, 0, 0, 0, 1165, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 564, 0, 494, - 0, 0, 0, 1423, 1366, 1423, 0, 1449, 0, 0, - 0, 0, 0, 0, 0, 1504, 1505, 0, 0, 0, - -1675, 0, 0, 494, 0, 2306, 0, 1265, 1266, 1267, - 1268, 1269, 1270, 0, 0, 0, 0, 0, 494, 494, - 494, 494, 494, 494, 494, 494, 494, 494, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1164, 0, 0, - 0, 0, 564, 0, 0, 0, 0, 0, 0, 1366, - 1492, 1493, 0, 1529, 0, 0, 0, 0, 0, 0, - 1449, 0, 0, 564, 0, 2134, 2136, 0, 0, 0, - 1423, 0, 0, 0, 1552, 0, 0, 1569, 0, 2392, - 1581, 1165, 0, 0, 0, 0, 0, 1588, 1593, 1596, + 0, -1461, 911, 1165, -1461, -1461, -1461, 0, 0, 0, + 2302, 0, 1427, 0, 0, 0, 0, 571, 1168, 0, + 1173, -1475, 571, 1427, 571, 571, 571, 1960, 0, 0, + 0, 0, 902, 0, 0, 0, 0, 496, 0, 0, + 0, 0, 0, 0, 0, 0, 649, 0, 0, 0, + 1173, 1101, 0, 1173, 0, 893, 0, -1679, 0, 0, + 0, 0, 1427, 1427, 0, 0, 1101, 0, 0, 1167, + 1172, -1679, 0, 0, 0, 0, -1679, 0, 0, 0, + 0, 903, 0, 0, 0, 0, 0, 0, 0, 904, + 1871, 0, 886, 0, 0, 2278, 0, 0, 887, 0, + 1574, 905, 0, 2303, 0, 899, 0, 0, 0, 0, + 0, -1679, 1170, -1475, 1168, 0, 0, 0, 0, 2311, + 0, 0, 0, 0, 900, 0, 1171, 0, 0, 0, + 0, 1165, 906, 0, 2358, 2359, 2360, 2361, 2362, 2363, + 2364, 2365, 2366, 2367, 0, 0, 0, 1911, 1912, 1913, + 0, 1914, 1915, 1916, 1917, 1918, 1919, 0, 0, 0, + 0, 0, 0, 0, 0, -1475, 1264, 0, 0, 0, + 0, 0, 0, 0, 901, 0, 2216, 908, -1475, 0, + 0, 0, 0, -1475, 571, 571, 571, 468, -1475, 1996, + 2233, 1167, 0, 0, 2233, 2247, 0, -1475, 0, 909, + -1475, 0, 0, 888, 0, 0, 0, 0, 1170, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 911, + 0, 2304, 1171, 1707, 2305, 0, 0, 0, 0, -1475, + 0, 0, 0, 1173, 0, 0, 1168, 0, 0, 571, + 1165, 496, 0, 0, 0, 1427, 1369, 1427, -1475, 1443, + 0, 0, 0, 0, 0, 0, -1679, 0, 0, 0, + 2001, 0, 902, 0, 0, 496, 0, 2312, 0, 1165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1506, 1507, 1604, 0, 0, - 0, 0, 0, 1608, 1609, 1610, 1611, 0, 0, 0, - 0, 1620, 1621, 0, 1494, 1495, 1632, 0, 0, 0, - 1635, 0, 0, 1643, 1644, 1645, 1646, 1647, 1648, 1649, - 1650, 1651, 0, 0, 1652, 0, 0, 0, 0, 1660, - 0, 0, 1664, 0, 804, 2420, 950, 0, 564, 564, - 564, 564, 0, 1164, 0, 2227, 2241, 0, 2227, 0, - 0, 2429, 0, 0, 1166, 1990, 0, 0, 1685, 1990, - 0, 0, 0, 0, 0, 2447, 1496, 1497, 1498, 1499, - 1500, 1501, 0, 0, 1502, 1503, 0, 0, 0, 0, - 0, 0, 0, 0, 2008, 1220, 1221, 1165, 0, 1701, - 0, 0, 0, 1568, 1166, 0, 0, 0, 0, 0, - 0, 1366, 0, 0, 0, 0, 0, 0, 0, 0, - 1166, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2509, 0, 0, 0, - 1166, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 880, 0, 0, 0, 0, 0, 881, 0, - 0, 1091, 1164, 0, 0, 893, 0, 0, 0, 1166, - 0, 0, 0, 0, 950, 0, 1166, 1796, 1797, 0, - 1798, 0, 0, 0, 894, 0, 0, 0, 1504, 1505, - 0, 0, 1164, 0, 0, 1166, 0, 0, 0, 0, - 0, 0, 1423, 0, 0, 0, 1165, 1831, 1822, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2544, - 0, 0, 2390, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 895, 0, 1165, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 950, -1471, 0, - 1164, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1164, 0, 0, 882, 466, 2227, 0, 0, 2572, 0, - 0, 494, 0, 1990, 0, 0, 0, 0, 1990, 0, - 0, 1990, 0, 2583, 0, 0, 2586, 1874, 0, 0, - 0, 0, 1880, 0, 1165, 0, 0, 0, 1506, 1507, - 2602, 0, 0, 0, 1165, 1273, 0, 0, 0, 0, - 0, 1166, 0, 0, 0, 0, 0, 0, 0, 0, - 644, 494, 896, 0, 0, 0, 0, 0, 0, 564, - 0, 0, 0, 0, 1897, 0, 0, 0, 0, 0, - -1471, 0, 0, 0, 1273, 0, 0, 0, 0, 0, - 1593, 0, 1593, 1593, 0, 494, 494, 0, 0, 0, - 1936, 0, 0, 1938, 0, 1366, 0, 0, 494, 0, - 0, 897, 0, 0, 0, 1164, 0, 0, 0, 898, - 564, 0, 0, 2602, 0, 1091, 0, 0, 0, 0, - 1091, 899, -1471, 0, 0, 0, 0, 1956, 0, 0, - 1959, 0, 1961, 494, 0, -1471, 0, 0, 0, 0, - -1471, 1164, 883, 0, 0, -1471, 1990, 0, 0, 1165, - 0, 2586, 900, 0, -1471, 0, 0, -1471, 0, 0, - 2692, 0, 1466, 1468, 494, 0, 0, 1166, 0, 0, - 0, 1164, 0, 564, 1164, 0, 0, 0, 0, 0, - 0, 1273, 0, 0, 0, 1165, -1471, 0, 1273, 0, - 0, 0, 901, 1321, 0, 644, 885, 902, 0, 0, - 0, 0, 0, 0, 0, -1471, 564, 0, 1338, 0, - 0, 0, 0, 0, 0, 1165, 0, 0, 1165, 903, - 0, 0, 0, 0, 0, 904, 2033, 0, 0, 0, - 0, 0, 0, 0, 466, 0, 0, 0, 0, 905, - 0, 0, 0, 2746, 0, 0, 0, 494, 0, 0, - 0, 2583, 0, 0, -1471, 0, 0, -1471, 0, 0, - 0, 0, 0, -1471, 0, 0, 0, 2602, 644, 644, - 644, 0, 0, 0, 0, 0, 1166, 0, 0, 0, - 0, 0, 0, 0, 950, 0, 0, 0, 0, 0, - 0, 887, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 880, 0, 0, 0, 1166, 0, 881, 0, - 0, 2583, 0, 0, 0, 893, 0, 0, -1471, 0, - 2692, 0, 2572, 0, 0, 0, 0, 0, 1466, 1468, - 0, 1701, 0, 0, 894, 0, 0, 0, 0, 1091, - 0, 0, 0, 0, 0, 1366, 0, 0, 0, 0, - 0, 2602, 0, 0, 0, 0, 1164, 0, 0, 0, - 0, 0, 0, 0, 1166, 0, 2147, 0, 0, 644, - 0, 0, 1974, 0, 1166, 0, 2151, 0, 0, 0, - 2152, 0, 0, 2154, 895, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -1471, - 1165, 0, 0, 0, 0, 0, 0, -1471, 0, 2174, - 2175, 1273, 0, 882, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1471, 0, -1471, -1471, 0, 0, 0, - 0, 0, 2188, 1273, 0, 2191, 0, 2193, 1576, 0, - 0, 0, 0, 0, 0, 2197, 0, 0, 0, 0, - 1273, 1273, 1273, 2204, 2205, 0, 1273, 0, 0, 0, - 0, 0, -1471, 0, 0, -1471, -1471, -1471, 0, 0, - 0, 0, 896, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2245, 0, 0, 0, 0, 0, 0, 1166, - 0, 2252, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2265, 0, 0, - 0, 1273, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 897, 0, 1240, 0, 1166, 1241, 0, -38, 898, - 0, 1242, 1243, 1244, 0, 0, 0, 0, 0, 0, - 0, 899, 0, 0, 0, 0, 0, 1, 1245, 0, - 0, 0, 1273, 0, 0, 1166, 1247, 2, 1166, 3, - 4, 0, 883, 1248, 1273, 1239, 0, 0, 0, 1273, - 1240, 0, 900, 1241, 0, 5, 0, 0, 1242, 1243, - 1244, 0, 0, 0, 6, 0, 0, 0, 1249, 0, - 1091, 0, 0, 0, 0, 1245, 7, 0, 1246, 0, - 0, 0, 0, 1247, 0, 0, 0, 8, 0, 0, - 1248, 0, 1767, 0, 0, 0, 885, 902, 9, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1249, 0, 2395, 11, 903, - 0, 0, 0, 0, 0, 1768, 0, 0, 0, 0, - 0, 0, 12, 0, 0, 0, 0, 0, 0, 905, - 0, 0, 13, 0, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 15, 0, 16, 17, - 2405, 2406, 0, 0, 0, 2407, 0, 1250, 0, 0, - 2410, 18, 0, 2413, 2414, 0, 0, 0, 2418, 0, - 0, 1251, 0, 0, 0, 0, 1252, 0, 0, 0, - 0, 887, 0, 0, 0, 0, 0, 0, 19, 0, - 0, 0, 0, 0, 0, 0, 0, 1253, 1254, 0, - 0, 0, 0, 0, 1250, 0, 0, 0, 0, 0, - 1166, 1255, 0, 0, 804, 0, 0, 0, 1251, 0, - 0, 0, 0, 1252, 0, 0, 0, 20, 0, 0, - 1273, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1253, 1254, 0, 0, 0, 1256, - 0, 0, 1257, 1273, 0, 0, 2503, 0, 1255, 0, - 0, 0, 0, 0, 0, 0, 1258, 0, 0, 1259, - 1273, 0, 1576, 1576, 0, 1914, 0, 1576, 0, 0, - 0, 0, 1273, 0, 0, 0, 0, 0, 0, 1273, - 0, 0, 0, 0, 1273, 0, 1256, 1273, 0, 1257, - 0, 0, 0, 0, 21, 1273, 0, 22, 0, 1273, - 1273, 1273, 1273, 1258, 0, 0, 1259, 0, 1576, 1576, - 0, 1273, 1273, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1273, 0, 23, 1273, 0, 0, 0, - 0, 0, 0, 24, 1273, 1273, 1273, 1273, 1273, 1273, - 1273, 1273, 1273, 1273, 0, 0, 1260, 25, 0, 0, - 0, 1273, 0, 0, 26, 1273, 0, 0, 27, 0, - 0, 0, 2556, 2557, 0, 0, 2558, 0, 28, 0, - 0, 0, 0, 0, 0, 0, 1273, 0, 0, 0, - 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1260, 0, 0, 0, 0, 0, 0, - 0, 0, 2591, 2592, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2604, 0, 30, 0, - 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 1261, 0, 0, 1262, 1263, - 1264, 0, 1265, 1266, 1267, 1268, 1269, 1270, 1240, 0, - 33, 1241, 0, 0, 0, 1889, 1242, 1243, 1244, 0, - 0, 0, 0, 0, 34, 0, 0, -38, 0, 0, - 0, 0, 0, 1245, 0, 0, 0, 1273, 1273, 1273, - 0, 1247, 1261, 0, 0, 1262, 1263, 1264, 1248, 1265, - 1266, 1267, 1268, 1269, 1270, 0, 0, 0, 0, 0, - 0, 1240, 0, 0, 1241, 0, 0, 0, 0, 1242, - 1243, 1244, 1273, 1249, 0, 0, 2679, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1245, 0, 1225, 0, - 0, 0, 0, 0, 1247, 0, 0, 0, 0, 2698, - 0, 1248, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2712, 1273, 0, 0, 0, 0, - 0, 1273, 0, 0, 0, 0, 1249, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1914, 1914, 1273, 0, - 1576, 1576, 1576, 1576, 0, 0, 1576, 1576, 1576, 1576, - 1576, 1576, 1576, 1576, 1576, 1576, 1914, 0, 0, 0, + 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, + 0, 2031, 2031, 0, 0, 0, 0, -1475, 0, 0, + -1475, 0, 0, 0, 571, 1443, -1475, 0, 809, 809, + 0, 903, 0, 1369, 0, 1167, 0, 0, 0, 904, + 0, 0, 1172, 0, 0, 571, 1380, 0, 1165, 0, + 1170, 905, 1427, 0, 0, 0, 0, 0, 1165, 0, + 0, 2398, 0, 0, 1171, 0, 0, 1167, 0, 0, + 0, 0, 889, 0, 0, 0, -1679, 0, 0, 0, + 1168, -1475, 906, 1271, 1272, 1273, 1274, 1275, 1276, 0, + 0, 956, 963, 0, 0, 0, 0, 0, 0, 1246, + 0, 0, 1247, 0, 0, 0, 0, 0, 0, 0, + 1498, 1499, 1168, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1773, 0, 0, 0, 891, 908, 0, 0, + 0, 0, 1253, 0, 0, 0, 1980, 2426, 1172, -1679, + 571, 571, 571, 571, 0, 0, 0, 2233, 2247, 909, + 2233, 0, 0, 2435, 0, 1774, 0, 1996, 0, 0, + 0, 1996, 0, -1475, 1255, 2140, 2142, 2453, 0, 911, + 0, -1475, 0, 1165, 1170, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1500, 1501, 2014, -1475, 1171, -1475, + -1475, 1707, 0, 0, 0, 1574, 0, 0, 0, 956, + 0, 0, 0, 1369, 0, 0, 1170, 0, 0, 1165, + 0, 0, 0, 0, 0, 0, 1186, 0, 0, 0, + 1171, 0, 893, 0, 0, 0, -1475, 0, 2515, -1475, + -1475, -1475, 0, 2205, 0, 0, 0, 0, 0, 1165, + 0, 0, 1165, 0, 1208, 0, 1502, 1503, 1504, 1505, + 1506, 1507, 0, 0, 1508, 1509, 0, 0, 0, 0, + 1172, 0, 0, -1679, 1225, 1226, 1227, 2621, 0, 1231, + 0, 0, 0, 0, 0, 0, 0, -1679, 0, 0, + 0, 0, -1679, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1286, 0, 1427, 0, 0, 0, 0, 2537, + 0, 2639, 2640, 1824, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1679, 2650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1250, 0, 0, 0, 0, 1273, 0, 1273, - 0, 0, 0, 1914, 1914, 0, 1251, 0, 0, 0, - 2591, 1252, 0, 0, 0, 0, 0, 1273, 1576, 1576, - 1273, 0, 1273, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1253, 1254, 0, 0, 0, 0, 0, 0, - 0, 2775, 0, 0, 0, 1250, 1255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1251, - 2789, 2789, 0, 0, 1252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1256, 1253, 1254, 1257, 0, 0, - 0, 0, 0, 0, 1273, 0, 0, 0, 0, 1255, - 0, 1258, 0, 0, 1259, 0, 1240, 2789, 0, 1241, - 0, 0, 0, 0, 1242, 1243, 1244, 0, 0, 0, + 0, 0, 0, 1328, 0, 0, 0, 1340, 1345, 0, + 0, 0, 0, 0, 0, 0, 468, 2233, 1510, 1511, + 2578, 0, 0, 496, 0, 1996, 1167, 0, 0, 1101, + 1996, 0, 1264, 1996, 0, 2589, 0, 0, 2592, 0, + 2703, 0, 0, 0, 1172, 0, 0, 0, 0, 0, + 0, 0, 2608, 0, 0, 0, 0, 0, 0, 0, + 956, 0, 0, 0, 0, 0, 0, 956, 0, 0, + 1167, 1168, 649, 496, 0, 0, 1172, 0, 0, 0, + 0, 571, 1165, 0, 0, 0, 1167, 0, 956, 0, + 0, 0, 2396, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1167, 496, 496, 0, + 0, 0, 0, 0, 0, 1168, 0, 1369, 571, 0, + 0, 2608, -1679, 0, 496, 0, 0, 0, 0, 1512, + 1513, 1168, 0, 0, 0, 1167, 0, 0, 0, 0, + 0, 0, 1167, 0, 0, 0, 0, 0, 0, 0, + 0, 1168, 0, 0, 0, 496, 0, 0, 0, 0, + 0, 1167, 0, 0, 0, 1170, 0, 0, 1996, 0, + 0, 0, 0, 2592, 0, 0, 0, 0, 0, 1171, + 1168, 0, 2698, 0, 0, 0, 496, 1168, 0, 0, + 0, 0, 0, 0, 0, 571, 0, 0, 0, 0, + 0, 0, 956, 0, 0, 0, 1168, 0, 0, 1170, + 0, 0, 0, 0, 0, 0, 0, 649, 0, 0, + 0, 0, -1679, 1171, 0, 1170, 0, 0, 571, 1271, + 1272, 1273, 1274, 1275, 1276, 0, 0, 0, 1246, 1171, + 0, 1247, 0, 0, 0, 1170, 1248, 1249, 1250, 0, + 0, 0, 0, 0, 0, 1101, 468, 0, 0, 1171, + 1101, 0, 0, 1251, 0, 2752, 0, 0, 0, 496, + 0, 1253, 0, 2589, 1170, 1167, 0, 0, 1254, 0, + 0, 1170, 0, 0, 0, 0, 0, 0, 1171, 2608, + 649, 649, 649, 0, 0, 1171, 0, 0, 0, 0, + 1170, 1472, 1474, 1255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1171, 0, 0, 0, 0, 0, + 1168, 0, 0, 0, 1535, 0, 0, 0, 0, 0, + 0, 0, 0, 2589, 0, 0, 0, 0, 0, 0, + 0, 0, 2698, 0, 2578, 1558, 0, 0, 1575, 0, + 0, 1587, 0, 1707, 0, 0, 0, 0, 1594, 1599, + 1602, 0, 0, 0, 0, 0, 0, 1369, 2608, 0, + 0, 0, 0, 0, 0, 1172, 0, 0, 1610, 0, + 0, 0, 0, 0, 1614, 1615, 1616, 1617, 0, 0, + 0, 649, 1626, 1627, 0, 0, 0, 1638, 0, 0, + 0, 1641, 1256, 1167, 1649, 1650, 1651, 1652, 1653, 1654, + 1655, 1656, 1657, 0, 1170, 1658, 1257, 0, 0, 1172, + 1666, 1258, 0, 1670, 0, 809, 0, 956, 1171, 0, + 0, 0, 0, 0, 0, 1172, 0, 0, 0, 0, + 0, 0, 1259, 1260, 0, 0, 0, 0, 1168, 1691, + 0, 0, 0, 0, 0, 1172, 1261, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1472, 1474, + 0, 0, 0, 0, 0, 0, 0, 1226, 1227, 1101, + 0, 0, 0, 0, 1172, 0, 0, 0, 0, 0, + 0, 1172, 0, 0, 1262, 0, 0, 1263, 0, 0, + 0, 0, 0, 0, 0, 0, -38, 0, 0, 0, + 1172, 1264, 1167, 0, 1265, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 3, 4, 0, + 0, 1167, 1170, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 0, 956, 1171, 1168, 1802, 1803, + 0, 1804, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 1168, 0, 0, 0, + 0, 0, 1839, 0, 0, 0, 9, 0, 10, 0, + 1167, 1266, 0, 0, 0, 0, 0, 0, 0, 0, + 1167, 0, 0, 0, 0, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 1172, 0, 0, 0, 956, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 1168, 14, 0, 0, 0, + 0, 1170, 0, 0, 15, 1168, 16, 17, 0, 0, + 1279, 0, 0, 0, 0, 1171, 0, 0, 1880, 18, + 0, 0, 0, 1886, 0, 0, 0, 0, 0, 0, + 1170, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1246, 0, 0, 1247, 1171, 0, 19, 0, 0, 0, + 1279, 1267, 0, 0, 1268, 1269, 1270, 0, 1271, 1272, + 1273, 1274, 1275, 1276, 0, 1903, 0, 0, 0, 0, + 0, 1895, 0, 1253, 0, 1167, 0, 0, 1101, 0, + -1679, 1599, 0, 1599, 1599, 20, 0, 0, 0, 1170, + 0, 1942, 0, 0, 1944, 0, 0, 0, 0, 1170, + 0, 0, 1172, 1171, 0, 1255, 0, 0, 0, 0, + 1245, 1167, 0, 1171, 0, 1246, 0, 0, 1247, 0, + 1168, 0, 0, 1248, 1249, 1250, 0, 0, 1962, 0, + 0, 1965, 0, 1967, 0, 0, 0, 0, 0, 0, + 1251, 1167, 0, 1252, 1167, 0, 0, 0, 1253, 0, + 0, 0, 0, 0, 0, 1254, 1168, 1279, 0, 0, + 0, 0, 21, 0, 1279, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 2208, 0, 0, 0, 0, 0, + 1255, 0, 0, 0, 0, 0, 1168, 0, 0, 1168, + 0, 0, 0, 23, 1328, 0, 0, 0, 0, 0, + 0, 24, 0, 0, -1679, 0, 0, 0, 0, 1345, + 0, 1172, 0, 0, 1170, 25, 0, 0, -1679, 0, + 0, 0, 26, -1679, 0, 0, 27, 2039, 1171, 0, + 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 1172, 0, 0, 0, 0, 0, 0, 29, 0, 0, + 1170, 30, 0, 0, 0, 0, 0, 0, -1679, 0, + 0, 0, 0, 0, 1171, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1256, + 1170, 0, 0, 1170, 0, 956, 0, 31, 0, 0, + 0, 0, 32, 1257, 1171, 0, 0, 1171, 1258, 1172, + 0, 0, 0, 0, 0, 33, 0, 0, 0, 1172, + 0, 0, 0, 1264, 0, 0, 0, 0, 0, 1259, + 1260, 0, 0, 0, 1167, 0, 0, 0, 0, 34, + 0, 0, 0, 1261, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 35, 0, 0, -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1245, 0, 0, 0, 0, 0, 1256, 0, 1247, - 1257, 0, 0, 0, 0, 0, 1248, 0, 0, 0, - 0, 0, 0, 0, 1258, 0, 0, 1259, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2789, - 0, 1249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2153, 0, 1168, + 0, 1262, 0, 0, 1263, 0, 0, 2157, 0, 0, + 0, 2158, 0, 0, 2160, 0, 0, 1279, 1264, 0, + 0, 1265, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1679, 0, 0, 0, 0, 0, 1279, + 2180, 2181, 0, 0, 1582, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1172, 0, 1279, 1279, 1279, 0, + 0, 0, 1279, 2194, 0, 0, 2197, 0, 2199, 0, + 0, 0, 1246, 0, 0, 1247, 2203, 0, 0, 0, + 1248, 1249, 1250, 0, 2210, 2211, 0, 0, 1246, 0, + 1172, 1247, 0, 1170, 0, 0, 0, 1251, 0, 0, + 0, 0, 0, 0, 0, 1253, 0, 1171, 1266, 0, + 0, 0, 1254, 2251, 0, 0, 0, 1279, 0, 0, + 1172, 1253, 2258, 1172, 0, 0, 0, 0, -1679, 0, + 0, 0, 0, -1679, 0, 0, 0, 1255, 2271, 0, + 1271, 1272, 1273, 1274, 1275, 1276, 0, 0, 0, 0, + 0, 0, 0, 1255, 0, 0, 0, 0, 0, 1279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1260, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1273, 0, - 0, 0, 1273, 1273, 0, 1273, 0, 0, 1914, 1914, - 1914, 1914, 0, 0, 0, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1273, 1273, 0, 0, 0, - 0, 0, 0, 0, 1260, 0, 0, 0, 0, 1273, - 0, 0, 1273, 0, 1273, 0, 0, 0, 1273, 0, - 0, 1914, 1914, 0, 0, 1273, 1273, 0, 0, 0, - 1250, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1251, 0, 0, 0, 0, 1252, - 1261, 0, 0, 1262, 1263, 1264, 0, 1265, 1266, 1267, - 1268, 1269, 1270, 0, 0, 0, 1273, 1598, 0, 0, - 1253, 1254, 0, 1273, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1255, 0, 1273, 0, 0, 0, + 0, 1279, 0, 0, 0, 0, 1279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1261, 0, 0, 1262, 1263, 1264, 0, - 1265, 1266, 1267, 1268, 1269, 1270, 0, 0, 0, 0, - 1940, 0, 1256, 0, 0, 1257, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1258, - 0, 0, 1259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1267, 0, + 0, 1268, 1269, 1270, 0, 1271, 1272, 1273, 1274, 1275, + 1276, 0, 2209, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1246, 0, 0, 1247, 1256, 0, 0, 0, + 1248, 1249, 1250, 0, 0, 0, 0, 0, 0, 0, + 1257, 0, -1679, 0, 0, 1258, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1253, -1679, 0, 2401, 0, + 0, -1679, 1254, 0, 0, 0, 1259, 1260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1261, 0, 0, 0, 0, 0, 0, 1255, 0, 0, + 0, 0, 0, 1172, 0, 0, -1679, 0, 0, 0, + 0, 2411, 2412, 0, 0, 0, 2413, 0, 0, 0, + 0, 2416, 0, 0, 2419, 2420, 0, 0, 1262, 2424, + 0, 1263, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1264, 0, 0, 1265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1264, 0, 0, 0, 0, 1279, 0, 0, 0, + 0, 0, 0, 0, 0, 809, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1279, + 0, 0, 0, 0, 0, 0, 1256, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1279, 0, 1582, 1582, + 1257, 1920, 0, 1582, 0, 1258, 0, 2509, 1279, 0, + 0, 0, 0, 0, 0, 1279, 0, 0, 0, 0, + 1279, 0, 0, 1279, 0, 1266, -1679, -1679, 0, 0, + 0, 1279, 0, 0, 0, 1279, 1279, 1279, 1279, 0, + 1261, -1679, 0, 0, 1582, 1582, 0, 1279, 1279, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1279, + 0, 0, 1279, 0, 0, 0, 0, 0, 0, 0, + 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, + 0, -1679, 0, 0, 0, 0, 0, 1279, 0, 0, + 0, 1279, 0, 0, 0, 1264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1279, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2562, 2563, 1267, 0, 2564, 1268, 1269, + 1270, 0, 1271, 1272, 1273, 1274, 1275, 1276, 0, 0, + 0, -1679, 1604, 0, 0, 0, 0, 0, 1271, 1272, + 1273, 1274, 1275, 1276, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2597, 2598, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2610, 0, 0, + 0, 0, 0, 0, 0, 1266, 0, 0, 1246, 0, + 0, 1247, 0, 0, 0, 0, 1248, 1249, 1250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1251, 0, 0, 0, 0, 0, 0, + 0, 1253, 0, 1279, 1279, 1279, 0, 0, 1254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1273, 0, 0, 0, - 1576, 0, 0, 0, 0, 0, 1273, 1273, 1273, 1260, - 0, 1273, 0, 0, 1273, 1273, 0, 0, 0, 1273, + 0, 1246, 0, 0, 1247, 0, 0, 0, 0, 1248, + 1249, 1250, 0, 1255, 0, 0, 0, 0, 0, 0, + 1279, 0, 0, 0, 0, 0, 1251, 0, 0, 0, + 0, 0, 0, 0, 1253, 0, 0, 0, 0, 0, + 0, 1254, 0, 0, 0, 1267, 0, 2685, 1268, 1269, + 1270, 0, 1271, 1272, 1273, 1274, 1275, 1276, 0, 1231, + 0, 1279, 0, 0, 0, 0, 1255, 1279, 0, 0, + 2704, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1920, 1920, 1279, 2718, 1582, 1582, 1582, 1582, + 0, 0, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, + 1582, 1582, 1920, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1256, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1279, 0, 1279, 1257, 0, 0, 1920, + 1920, 1258, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1279, 1582, 1582, 1279, 0, 1279, 0, + 0, 0, 1259, 1260, 0, 0, 0, 0, 0, 0, + 0, 2597, 0, 0, 0, 1256, 1261, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1257, + 0, 0, 0, 0, 1258, 1246, 0, 0, 1247, 0, + 0, 0, 2781, 1248, 1249, 1250, 0, 0, 0, 0, + 0, 0, 0, 0, 1262, 1259, 1260, 1263, 0, 0, + 1251, 2795, 2795, 0, 0, 0, 0, 0, 1253, 1261, + 1279, 1264, 0, 0, 1265, 1254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1246, 0, + 1255, 1247, 0, 0, 0, 0, 0, 1262, 2795, 0, + 1263, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1264, 0, 0, 1265, 0, 0, + 0, 1253, 0, 0, 0, 0, 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, 1266, 0, 1255, 0, 0, 0, 0, 0, 0, + 2795, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1279, 0, 0, 0, 1279, 1279, + 0, 1279, 0, 0, 1920, 1920, 1920, 1920, 0, 1256, + 0, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, + 1920, 1279, 1279, 1257, 1266, 0, 0, 0, 1258, 0, + 0, 0, 0, 0, 0, 1279, 0, 0, 1279, 0, + 1279, 0, 2421, 0, 1279, 0, 0, 1920, 1920, 1259, + 1260, 1279, 1279, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1261, 0, 0, 0, 0, 0, 0, + 0, 1267, -1679, 0, 1268, 1269, 1270, 0, 1271, 1272, + 1273, 1274, 1275, 1276, 0, 0, -1679, 0, 1946, 0, + 0, -1679, 1279, 0, 0, 0, 0, 0, 0, 1279, + 0, 1262, 0, 0, 1263, 0, 0, 0, 0, 0, + 0, 0, 1279, 0, 0, 0, 0, 0, 1264, 0, + 0, 1265, 0, 0, 1267, 0, -1679, 1268, 1269, 1270, + 0, 1271, 1272, 1273, 1274, 1275, 1276, 0, 0, 0, + 0, 2156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1576, 0, 0, 0, + 0, 1264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1273, 0, 0, 0, 1261, 0, - 0, 1262, 1263, 1264, 0, 1265, 1266, 1267, 1268, 1269, - 1270, 0, 0, 0, 0, 2150, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1914, 1576, 0, 0, 0, 1273, 1273, 1273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1279, 0, 0, 0, 1582, 0, 0, 0, + 0, 0, 1279, 1279, 1279, 0, 0, 1279, 0, 0, + 1279, 1279, 0, 0, 0, 1279, 0, 0, 0, 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, 0, 0, 0, - 0, 0, 1273, 1273, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1273, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1914, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1267, 0, + 0, 1268, 1269, 1270, 0, 1271, 1272, 1273, 1274, 1275, + 1276, 0, 0, 0, 0, 2192, 0, 0, 0, 0, + 0, 0, 1582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 917, - 725, 535, 726, 727, 728, 729, 730, 0, 0, 0, - 0, 0, 1914, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 918, 98, 99, 100, 0, 0, 0, - 1273, 731, 0, 0, 101, 102, 0, 103, 104, 105, - 919, 107, 108, 109, 110, 732, 920, 733, 734, 1273, - 115, 116, 117, 118, 119, 120, 735, 736, 121, 122, - 737, 738, 125, 1273, 126, 127, 128, 129, 739, 0, - 921, 0, 132, 133, 134, 135, 136, 922, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 146, 0, 923, - 148, 149, 150, 741, 742, 743, 924, 745, 746, 747, - 152, 153, 154, 155, 156, 157, 158, 748, 749, 161, - 750, 162, 0, 163, 164, 165, 166, 167, 168, 0, - 169, 170, 171, 172, 173, 925, 1273, 174, 175, 751, - 177, 178, 0, 179, 180, 181, 0, 182, 183, 184, - 1273, 185, 186, 187, 188, 752, 190, 191, 192, 193, - 753, 754, 195, 0, 196, 197, 755, 199, 0, 200, - 0, 201, 926, 0, 927, 204, 205, 206, 928, 208, - 0, 209, 0, 210, 211, 0, 212, 213, 214, 215, - 216, 217, 929, 219, 220, 221, 222, 0, 223, 224, - 225, 226, 227, 228, 0, 229, 930, 231, 232, 233, - 234, 235, 756, 757, 0, 758, 0, 239, 931, 932, - 242, 933, 244, 245, 246, 247, 248, 0, 0, 249, - 934, 251, 935, 0, 253, 254, 255, 759, 760, 256, - 257, 258, 259, 260, 936, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 761, 937, 762, 283, 284, 285, 286, - 763, 287, 288, 938, 290, 764, 765, 292, 766, 294, - 295, 296, 0, 297, 298, 0, 0, 767, 300, 301, - 0, 0, 302, 303, 939, 305, 940, 768, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 0, 318, - 319, 769, 321, 322, 323, 324, 325, 326, 0, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 770, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 0, 353, 354, 941, - 356, 357, 358, 771, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, - 375, 772, 376, 377, 378, 379, 380, 942, 382, 383, - 773, 385, 0, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 943, 398, 774, 0, 400, 401, - 0, 402, 944, 404, 405, 406, 407, 408, 0, 775, - 776, 0, 0, 411, 412, 777, 414, 778, 779, 416, - 417, 945, 419, 420, 421, 422, 423, 0, 0, 424, - 425, 426, 427, 428, 781, 0, 429, 430, 431, 432, - 433, 434, 782, 946, 436, 947, 438, 439, 440, 441, - 0, 0, 442, 0, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 783, 0, 0, 0, - 0, 0, 0, 784, 785, 948, 0, 0, 0, 0, - 787, 0, 788, 949, 0, 0, 0, 789, 0, 790, - 791, 89, 725, 535, 726, 727, 728, 729, 730, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 94, 95, 96, 97, 0, 98, 99, 100, 0, - 0, 0, 0, 731, 0, 0, 101, 102, 0, 103, - 104, 105, 106, 107, 108, 109, 110, 732, 112, 733, - 734, 0, 115, 116, 117, 118, 119, 120, 735, 736, - 121, 122, 737, 738, 125, 0, 126, 127, 128, 129, - 739, 0, 740, 0, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, - 0, 147, 148, 149, 150, 741, 742, 743, 744, 745, - 746, 747, 152, 153, 154, 155, 156, 157, 158, 748, - 749, 161, 750, 162, 0, 163, 164, 165, 166, 167, - 168, 0, 169, 170, 171, 172, 173, 0, 0, 174, - 175, 751, 177, 178, 0, 179, 180, 181, 0, 182, - 183, 184, 0, 185, 186, 187, 188, 752, 190, 191, - 192, 193, 753, 754, 195, 0, 196, 197, 755, 199, - 0, 200, 0, 201, 202, 0, 203, 204, 205, 206, - 207, 208, 0, 209, 0, 210, 211, 0, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 0, - 223, 224, 225, 226, 227, 228, 0, 229, 230, 231, - 232, 233, 234, 235, 756, 757, 0, 758, 0, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 0, - 0, 249, 250, 251, 252, 0, 253, 254, 255, 759, - 760, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 761, 281, 762, 283, 284, - 285, 286, 763, 287, 288, 289, 290, 764, 765, 292, - 766, 294, 295, 296, 0, 297, 298, 0, 0, 767, - 300, 301, 0, 0, 302, 303, 304, 305, 306, 768, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 0, 318, 319, 769, 321, 322, 323, 324, 325, 326, - 0, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 770, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 355, 356, 357, 358, 771, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 25, 371, 372, - 373, 374, 375, 772, 376, 377, 378, 379, 380, 381, - 382, 383, 773, 385, 0, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 774, 0, - 400, 401, 29, 402, 403, 404, 405, 406, 407, 408, - 0, 775, 776, 0, 0, 411, 412, 777, 414, 778, - 779, 416, 417, 780, 419, 420, 421, 422, 423, 0, - 0, 424, 425, 426, 427, 428, 781, 0, 429, 430, - 431, 432, 433, 598, 782, 0, 436, 437, 438, 439, - 440, 441, 0, 0, 442, 0, 32, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 783, 0, - 33, 0, 0, 0, 0, 784, 785, 0, 0, 0, - 0, 0, 787, 0, 788, 2688, 0, 0, 0, 789, - 0, 790, 791, 89, 725, 535, 726, 727, 728, 729, - 730, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 98, 99, - 100, 0, 0, 0, 0, 731, 0, 0, 101, 102, - 0, 103, 104, 105, 106, 107, 108, 109, 110, 732, - 112, 733, 734, 0, 115, 116, 117, 118, 119, 120, - 735, 736, 121, 122, 737, 738, 125, 0, 126, 127, - 128, 129, 739, 0, 740, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 0, 141, 142, 143, 144, - 145, 146, 0, 147, 148, 149, 150, 741, 742, 743, - 744, 745, 746, 747, 152, 153, 154, 155, 156, 157, - 158, 748, 749, 161, 750, 162, 0, 163, 164, 165, - 166, 167, 168, 0, 169, 170, 171, 172, 173, 0, - 0, 174, 175, 751, 177, 178, 0, 179, 180, 181, - 0, 182, 183, 184, 0, 185, 186, 187, 188, 752, - 190, 191, 192, 193, 753, 754, 195, 0, 196, 197, - 755, 199, 0, 200, 0, 201, 202, 0, 203, 204, - 205, 206, 207, 208, 0, 209, 0, 210, 211, 0, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 0, 223, 224, 225, 226, 227, 228, 0, 229, - 230, 231, 232, 233, 234, 235, 756, 757, 0, 758, - 0, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 0, 0, 249, 250, 251, 252, 0, 253, 254, - 255, 759, 760, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 761, 281, 762, - 283, 284, 285, 286, 763, 287, 288, 289, 290, 764, - 765, 292, 766, 294, 295, 296, 0, 297, 298, 0, - 0, 767, 300, 301, 0, 0, 302, 303, 304, 305, - 306, 768, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 0, 318, 319, 769, 321, 322, 323, 324, - 325, 326, 0, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 770, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 355, 356, 357, 358, 771, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 25, - 371, 372, 373, 374, 375, 772, 376, 377, 378, 379, - 380, 381, 382, 383, 773, 385, 0, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 774, 0, 400, 401, 29, 402, 403, 404, 405, 406, - 407, 408, 0, 775, 776, 0, 0, 411, 412, 777, - 414, 778, 779, 416, 417, 780, 419, 420, 421, 422, - 423, 0, 0, 424, 425, 426, 427, 428, 781, 0, - 429, 430, 431, 432, 433, 598, 782, 0, 436, 437, - 438, 439, 440, 441, 0, 0, 442, 0, 32, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 783, 0, 33, 0, 0, 0, 0, 784, 785, 0, - 0, 0, 0, 0, 787, 0, 788, 0, 0, 0, - 0, 789, 0, 790, 791, 89, 725, 535, 726, 727, - 728, 729, 730, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 98, 99, 100, 0, 0, 0, 0, 731, 0, 0, - 101, 102, 0, 103, 104, 105, 106, 107, 108, 109, - 110, 732, 112, 733, 734, 1589, 115, 116, 117, 118, - 119, 120, 735, 736, 121, 122, 737, 738, 125, 0, - 126, 127, 128, 129, 739, 0, 740, 0, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 0, 141, 142, - 143, 144, 145, 146, 0, 147, 148, 149, 150, 741, - 742, 743, 744, 745, 746, 747, 152, 153, 154, 155, - 156, 157, 158, 748, 749, 161, 750, 162, 0, 163, - 164, 165, 166, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 174, 175, 751, 177, 178, 0, 179, - 180, 181, 0, 182, 183, 184, 0, 185, 186, 187, - 188, 752, 190, 191, 192, 193, 753, 754, 195, 0, - 196, 197, 755, 199, 0, 200, 0, 201, 202, 1590, - 203, 204, 205, 206, 207, 208, 0, 209, 0, 210, - 211, 0, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 0, 223, 224, 225, 226, 227, 228, - 0, 229, 230, 231, 232, 233, 234, 235, 756, 757, - 0, 758, 0, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 0, 1591, 249, 250, 251, 252, 0, - 253, 254, 255, 759, 760, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 761, - 281, 762, 283, 284, 285, 286, 763, 287, 288, 289, - 290, 764, 765, 292, 766, 294, 295, 296, 0, 297, - 298, 0, 0, 767, 300, 301, 0, 0, 302, 303, - 304, 305, 306, 768, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 0, 318, 319, 769, 321, 322, - 323, 324, 325, 326, 0, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 770, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 355, 356, 357, 358, 771, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 0, 371, 372, 373, 374, 375, 772, 376, 377, - 378, 379, 380, 381, 382, 383, 773, 385, 0, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 774, 0, 400, 401, 0, 402, 403, 404, - 405, 406, 407, 408, 0, 775, 776, 0, 1592, 411, - 412, 777, 414, 778, 779, 416, 417, 780, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 781, 0, 429, 430, 431, 432, 433, 434, 782, 0, - 436, 437, 438, 439, 440, 441, 0, 0, 442, 0, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 783, 0, 0, 0, 0, 0, 0, 784, - 785, 0, 0, 0, 0, 0, 787, 0, 788, 0, - 0, 0, 0, 789, 0, 790, 791, 89, 725, 535, - 726, 727, 728, 729, 730, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 98, 99, 100, 0, 0, 0, 0, 731, - 0, 0, 101, 102, 0, 103, 104, 105, 106, 107, - 108, 109, 110, 732, 112, 733, 734, 0, 115, 116, - 117, 118, 119, 120, 735, 736, 121, 122, 737, 738, - 125, 0, 126, 127, 128, 129, 739, 0, 740, 0, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 146, 0, 147, 148, 149, - 150, 741, 742, 743, 744, 745, 746, 747, 152, 153, - 154, 155, 156, 157, 158, 748, 749, 161, 750, 162, - 0, 163, 164, 165, 166, 167, 168, 0, 169, 170, - 171, 172, 173, 0, 0, 174, 175, 751, 177, 178, - 0, 179, 180, 181, 0, 182, 183, 184, 0, 185, - 186, 187, 188, 752, 190, 191, 192, 193, 753, 754, - 195, 0, 196, 197, 755, 199, 0, 200, 0, 201, - 202, 0, 203, 204, 205, 206, 207, 208, 0, 209, - 0, 210, 211, 0, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 0, 223, 224, 225, 226, - 227, 228, 0, 229, 230, 231, 232, 233, 234, 235, - 756, 757, 0, 758, 0, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 0, 0, 249, 250, 251, - 252, 0, 253, 254, 255, 759, 760, 256, 257, 258, + 0, -1679, 0, 0, 0, 0, 0, 0, 1271, 1272, + 1273, 1274, 1275, 1276, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1920, 1582, + 0, 0, 0, 1279, 1279, 1279, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1279, 1279, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1279, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1920, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 923, 730, 537, 731, 732, + 733, 734, 735, 0, 0, 0, 0, 0, 1920, 0, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 924, + 99, 100, 101, 0, 0, 0, 1279, 736, 0, 0, + 102, 103, 0, 104, 105, 106, 925, 108, 109, 110, + 111, 737, 926, 738, 739, 1279, 116, 117, 118, 119, + 120, 121, 740, 741, 122, 123, 742, 743, 126, 1279, + 127, 128, 129, 130, 744, 0, 927, 0, 133, 134, + 135, 136, 137, 928, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 929, 149, 150, 151, 746, + 747, 748, 930, 750, 751, 752, 153, 154, 155, 156, + 157, 158, 159, 753, 754, 162, 755, 163, 0, 164, + 165, 166, 167, 168, 169, 0, 170, 171, 172, 173, + 174, 931, 1279, 175, 176, 756, 178, 179, 0, 180, + 181, 182, 0, 183, 184, 185, 1279, 186, 187, 188, + 189, 757, 191, 192, 193, 194, 758, 759, 196, 0, + 197, 198, 760, 200, 0, 201, 0, 202, 932, 0, + 933, 205, 206, 207, 934, 209, 0, 210, 0, 211, + 212, 0, 213, 214, 215, 216, 217, 218, 935, 220, + 221, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 936, 232, 233, 234, 235, 236, 761, 762, + 0, 763, 0, 240, 937, 938, 243, 939, 245, 246, + 247, 248, 249, 0, 0, 250, 940, 252, 941, 0, + 254, 255, 256, 764, 765, 257, 258, 259, 260, 261, + 942, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 766, + 943, 767, 284, 285, 286, 287, 768, 288, 289, 944, + 291, 769, 770, 293, 771, 295, 296, 297, 0, 298, + 299, 0, 0, 772, 301, 302, 0, 0, 303, 304, + 945, 306, 946, 773, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 0, 319, 320, 774, 322, 323, + 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 775, 338, 339, 340, 341, 0, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 0, 354, 355, 947, 357, 358, 359, 776, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 0, 372, 373, 374, 375, 376, 777, 377, 378, + 379, 380, 381, 948, 383, 384, 778, 386, 0, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 949, 399, 779, 401, 0, 402, 403, 0, 404, 950, + 406, 407, 408, 409, 410, 0, 780, 781, 0, 0, + 413, 414, 782, 416, 783, 784, 418, 419, 951, 421, + 422, 423, 424, 425, 0, 0, 426, 427, 428, 429, + 430, 786, 0, 431, 432, 433, 434, 435, 436, 787, + 952, 438, 953, 440, 441, 442, 443, 0, 0, 444, + 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 788, 0, 0, 0, 0, 0, 0, + 789, 790, 954, 0, 0, 0, 0, 792, 0, 793, + 955, 0, 0, 0, 794, 0, 795, 796, 90, 730, + 537, 731, 732, 733, 734, 735, 0, 0, 0, 0, + 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, + 97, 98, 0, 99, 100, 101, 0, 0, 0, 0, + 736, 0, 0, 102, 103, 0, 104, 105, 106, 107, + 108, 109, 110, 111, 737, 113, 738, 739, 0, 116, + 117, 118, 119, 120, 121, 740, 741, 122, 123, 742, + 743, 126, 0, 127, 128, 129, 130, 744, 0, 745, + 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 148, 149, + 150, 151, 746, 747, 748, 749, 750, 751, 752, 153, + 154, 155, 156, 157, 158, 159, 753, 754, 162, 755, + 163, 0, 164, 165, 166, 167, 168, 169, 0, 170, + 171, 172, 173, 174, 0, 0, 175, 176, 756, 178, + 179, 0, 180, 181, 182, 0, 183, 184, 185, 0, + 186, 187, 188, 189, 757, 191, 192, 193, 194, 758, + 759, 196, 0, 197, 198, 760, 200, 0, 201, 0, + 202, 203, 0, 204, 205, 206, 207, 208, 209, 0, + 210, 0, 211, 212, 0, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 0, 224, 225, 226, + 227, 228, 229, 0, 230, 231, 232, 233, 234, 235, + 236, 761, 762, 0, 763, 0, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 0, 0, 250, 251, + 252, 253, 0, 254, 255, 256, 764, 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 761, 281, 762, 283, 284, 285, 286, 763, 287, - 288, 289, 290, 764, 765, 292, 766, 294, 295, 296, - 0, 297, 298, 0, 0, 767, 300, 301, 0, 0, - 302, 303, 304, 305, 306, 768, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 0, 318, 319, 769, - 321, 322, 323, 324, 325, 326, 0, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 770, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 771, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 0, 371, 372, 373, 374, 375, 772, - 376, 377, 378, 379, 380, 381, 382, 383, 773, 385, - 0, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 774, 0, 400, 401, 0, 402, - 403, 404, 405, 406, 407, 408, 0, 775, 776, 0, - 0, 411, 412, 777, 414, 778, 779, 416, 417, 780, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 781, 0, 429, 430, 431, 432, 433, 434, - 782, 0, 436, 437, 438, 439, 440, 441, 0, 0, - 442, 0, 0, 443, 444, 445, 446, 447, 448, 449, + 279, 280, 766, 282, 767, 284, 285, 286, 287, 768, + 288, 289, 290, 291, 769, 770, 293, 771, 295, 296, + 297, 0, 298, 299, 0, 0, 772, 301, 302, 0, + 0, 303, 304, 305, 306, 307, 773, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 0, 319, 320, + 774, 322, 323, 324, 325, 326, 327, 0, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 775, 338, 339, + 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 0, 354, 355, 356, 357, + 358, 359, 776, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 25, 372, 373, 374, 375, 376, + 777, 377, 378, 379, 380, 381, 382, 383, 384, 778, + 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 779, 401, 0, 402, 403, + 30, 404, 405, 406, 407, 408, 409, 410, 0, 780, + 781, 0, 0, 413, 414, 782, 416, 783, 784, 418, + 419, 785, 421, 422, 423, 424, 425, 0, 0, 426, + 427, 428, 429, 430, 786, 0, 431, 432, 433, 434, + 435, 563, 787, 0, 438, 439, 440, 441, 442, 443, + 0, 0, 444, 0, 33, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 783, 0, 0, 0, 0, 0, - 0, 784, 785, 786, 0, 0, 0, 0, 787, 0, - 788, 0, 0, 0, 0, 789, 0, 790, 791, 89, - 725, 535, 726, 727, 728, 729, 730, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 1331, 98, 99, 100, 0, 0, 0, - 0, 731, 0, 0, 101, 102, 0, 103, 104, 105, - 106, 107, 108, 109, 110, 732, 112, 733, 734, 0, - 115, 116, 117, 118, 119, 120, 735, 736, 121, 122, - 737, 738, 125, 0, 126, 127, 128, 129, 739, 0, - 740, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 146, 0, 147, - 148, 149, 150, 741, 742, 743, 744, 745, 746, 747, - 152, 153, 154, 155, 156, 157, 158, 748, 749, 161, - 750, 162, 0, 163, 164, 165, 166, 167, 168, 0, - 169, 170, 171, 172, 173, 0, 0, 174, 175, 751, - 177, 178, 0, 179, 180, 181, 0, 182, 183, 184, - 0, 185, 186, 187, 188, 752, 190, 191, 192, 193, - 753, 754, 195, 0, 196, 197, 755, 199, 0, 200, - 0, 201, 202, 0, 203, 204, 205, 206, 207, 208, - 0, 209, 0, 210, 211, 0, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 0, 223, 224, - 225, 226, 227, 228, 0, 229, 230, 231, 232, 233, - 234, 235, 756, 757, 0, 758, 0, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 0, 0, 249, - 250, 251, 252, 0, 253, 254, 255, 759, 760, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 761, 281, 762, 283, 284, 285, 286, - 763, 287, 288, 289, 290, 764, 765, 292, 766, 294, - 295, 296, 0, 297, 298, 0, 0, 767, 300, 301, - 0, 0, 302, 303, 304, 305, 306, 768, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 0, 318, - 319, 769, 321, 322, 323, 324, 325, 326, 0, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 770, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, - 356, 357, 358, 771, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, - 375, 772, 376, 377, 378, 379, 380, 381, 382, 383, - 773, 385, 0, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 774, 0, 400, 401, - 0, 402, 403, 404, 405, 406, 407, 408, 0, 775, - 776, 0, 0, 411, 412, 777, 414, 778, 779, 416, - 417, 780, 419, 420, 421, 422, 423, 0, 0, 424, - 425, 426, 427, 428, 781, 0, 429, 430, 431, 432, - 433, 434, 782, 0, 436, 437, 438, 439, 440, 441, - 0, 0, 442, 0, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 783, 0, 0, 0, - 0, 0, 0, 784, 785, 0, 0, 0, 0, 0, - 787, 0, 788, 0, 0, 0, 0, 789, 0, 790, - 791, 917, 725, 535, 726, 727, 728, 729, 730, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 94, 95, 96, 97, 0, 98, 99, 100, 0, - 0, 0, 0, 731, 0, 0, 101, 102, 0, 103, - 104, 105, 919, 107, 108, 109, 110, 732, 920, 733, - 734, 0, 115, 116, 117, 118, 119, 120, 735, 736, - 121, 122, 737, 738, 125, 0, 126, 127, 128, 129, - 739, 0, 921, 0, 132, 133, 134, 135, 136, 922, - 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, - 0, 923, 148, 149, 150, 741, 742, 743, 924, 745, - 746, 747, 152, 153, 154, 155, 156, 157, 158, 748, - 749, 161, 750, 162, 0, 163, 164, 165, 166, 167, - 168, 0, 169, 170, 171, 172, 173, 0, 0, 174, - 175, 751, 177, 178, 0, 179, 180, 181, 0, 182, - 183, 184, 0, 185, 186, 187, 188, 752, 190, 191, - 192, 193, 753, 754, 195, 0, 196, 197, 755, 199, - 0, 200, 0, 201, 926, 0, 927, 204, 205, 206, - 928, 208, 0, 209, 0, 210, 211, 0, 212, 213, - 214, 215, 216, 217, 929, 219, 220, 221, 222, 0, - 223, 224, 225, 226, 227, 228, 0, 229, 930, 231, - 232, 233, 234, 235, 756, 757, 0, 758, 0, 239, - 931, 932, 242, 933, 244, 245, 246, 247, 248, 0, - 0, 249, 934, 251, 935, 0, 253, 254, 255, 759, - 760, 256, 257, 258, 259, 260, 936, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 761, 937, 762, 283, 284, - 285, 286, 763, 287, 288, 938, 290, 764, 765, 292, - 766, 294, 295, 296, 0, 297, 298, 0, 0, 767, - 300, 301, 0, 0, 302, 303, 939, 305, 940, 768, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 0, 318, 319, 769, 321, 322, 323, 324, 325, 326, - 0, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 770, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 941, 356, 357, 358, 771, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, - 373, 374, 375, 772, 376, 377, 378, 379, 380, 942, - 382, 383, 773, 385, 0, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 943, 398, 774, 0, - 400, 401, 0, 402, 944, 404, 405, 406, 407, 408, - 0, 775, 776, 0, 0, 411, 412, 777, 414, 778, - 779, 416, 417, 945, 419, 420, 421, 422, 423, 0, - 0, 424, 425, 426, 427, 428, 781, 0, 429, 430, - 431, 432, 433, 434, 782, 0, 436, 947, 438, 439, - 440, 441, 0, 0, 442, 0, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 783, 0, - 0, 0, 0, 0, 0, 784, 785, 0, 0, 0, - 0, 0, 787, 0, 788, 1444, 0, 0, 0, 789, - 0, 790, 791, 89, 725, 535, 726, 727, 728, 729, - 730, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 98, 99, - 100, 0, 0, 0, 0, 731, 0, 0, 101, 102, - 0, 103, 104, 105, 106, 107, 108, 109, 110, 732, - 112, 733, 734, 0, 115, 116, 117, 118, 119, 120, - 735, 736, 121, 122, 737, 738, 125, 0, 126, 127, - 128, 129, 739, 0, 740, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 0, 141, 142, 143, 144, - 145, 146, 0, 147, 148, 149, 150, 741, 742, 743, - 744, 745, 746, 747, 152, 153, 154, 155, 156, 157, - 158, 748, 749, 161, 750, 162, 0, 163, 164, 165, - 166, 167, 168, 0, 169, 170, 171, 172, 173, 0, - 0, 174, 175, 751, 177, 178, 0, 179, 180, 181, - 0, 182, 183, 184, 0, 185, 186, 187, 188, 752, - 190, 191, 192, 193, 753, 754, 195, 0, 196, 197, - 755, 199, 0, 200, 0, 201, 202, 0, 203, 204, - 205, 206, 207, 208, 0, 209, 0, 210, 211, 0, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 0, 223, 224, 225, 226, 227, 228, 0, 229, - 230, 231, 232, 233, 234, 235, 756, 757, 0, 758, - 0, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 0, 0, 249, 250, 251, 252, 0, 253, 254, - 255, 759, 760, 256, 257, 258, 259, 260, 261, 262, + 460, 461, 462, 463, 464, 465, 788, 0, 34, 0, + 0, 0, 0, 789, 790, 0, 0, 0, 0, 0, + 792, 0, 793, 2694, 0, 0, 0, 794, 0, 795, + 796, 90, 730, 537, 731, 732, 733, 734, 735, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 736, 0, 0, 102, 103, 0, 104, + 105, 106, 107, 108, 109, 110, 111, 737, 113, 738, + 739, 0, 116, 117, 118, 119, 120, 121, 740, 741, + 122, 123, 742, 743, 126, 0, 127, 128, 129, 130, + 744, 0, 745, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 148, 149, 150, 151, 746, 747, 748, 749, 750, + 751, 752, 153, 154, 155, 156, 157, 158, 159, 753, + 754, 162, 755, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 756, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 757, 191, 192, + 193, 194, 758, 759, 196, 0, 197, 198, 760, 200, + 0, 201, 0, 202, 203, 0, 204, 205, 206, 207, + 208, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 231, 232, + 233, 234, 235, 236, 761, 762, 0, 763, 0, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 0, + 0, 250, 251, 252, 253, 0, 254, 255, 256, 764, + 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 766, 282, 767, 284, 285, + 286, 287, 768, 288, 289, 290, 291, 769, 770, 293, + 771, 295, 296, 297, 0, 298, 299, 0, 0, 772, + 301, 302, 0, 0, 303, 304, 305, 306, 307, 773, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 774, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 775, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 356, 357, 358, 359, 776, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 25, 372, 373, + 374, 375, 376, 777, 377, 378, 379, 380, 381, 382, + 383, 384, 778, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 779, 401, + 0, 402, 403, 30, 404, 405, 406, 407, 408, 409, + 410, 0, 780, 781, 0, 0, 413, 414, 782, 416, + 783, 784, 418, 419, 785, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 786, 0, 431, + 432, 433, 434, 435, 563, 787, 0, 438, 439, 440, + 441, 442, 443, 0, 0, 444, 0, 33, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 788, + 0, 34, 0, 0, 0, 0, 789, 790, 0, 0, + 0, 0, 0, 792, 0, 793, 0, 0, 0, 0, + 794, 0, 795, 796, 90, 730, 537, 731, 732, 733, + 734, 735, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 99, + 100, 101, 0, 0, 0, 0, 736, 0, 0, 102, + 103, 0, 104, 105, 106, 107, 108, 109, 110, 111, + 737, 113, 738, 739, 1595, 116, 117, 118, 119, 120, + 121, 740, 741, 122, 123, 742, 743, 126, 0, 127, + 128, 129, 130, 744, 0, 745, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 148, 149, 150, 151, 746, 747, + 748, 749, 750, 751, 752, 153, 154, 155, 156, 157, + 158, 159, 753, 754, 162, 755, 163, 0, 164, 165, + 166, 167, 168, 169, 0, 170, 171, 172, 173, 174, + 0, 0, 175, 176, 756, 178, 179, 0, 180, 181, + 182, 0, 183, 184, 185, 0, 186, 187, 188, 189, + 757, 191, 192, 193, 194, 758, 759, 196, 0, 197, + 198, 760, 200, 0, 201, 0, 202, 203, 1596, 204, + 205, 206, 207, 208, 209, 0, 210, 0, 211, 212, + 0, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, + 230, 231, 232, 233, 234, 235, 236, 761, 762, 0, + 763, 0, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 0, 1597, 250, 251, 252, 253, 0, 254, + 255, 256, 764, 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 761, 281, 762, - 283, 284, 285, 286, 763, 287, 288, 289, 290, 764, - 765, 292, 766, 294, 295, 296, 0, 297, 298, 0, - 0, 767, 300, 301, 0, 0, 302, 303, 304, 305, - 306, 768, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 0, 318, 319, 769, 321, 322, 323, 324, - 325, 326, 0, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 770, 337, 338, 339, 340, 0, 341, 342, + 273, 274, 275, 276, 277, 278, 279, 280, 766, 282, + 767, 284, 285, 286, 287, 768, 288, 289, 290, 291, + 769, 770, 293, 771, 295, 296, 297, 0, 298, 299, + 0, 0, 772, 301, 302, 0, 0, 303, 304, 305, + 306, 307, 773, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 0, 319, 320, 774, 322, 323, 324, + 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 775, 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 355, 356, 357, 358, 771, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 0, - 371, 372, 373, 374, 375, 772, 376, 377, 378, 379, - 380, 381, 382, 383, 773, 385, 0, 386, 387, 388, + 353, 0, 354, 355, 356, 357, 358, 359, 776, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 0, 372, 373, 374, 375, 376, 777, 377, 378, 379, + 380, 381, 382, 383, 384, 778, 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 774, 0, 400, 401, 0, 402, 403, 404, 405, 406, - 407, 408, 0, 775, 776, 0, 0, 411, 412, 777, - 414, 778, 779, 416, 417, 780, 419, 420, 421, 422, - 423, 0, 0, 424, 425, 426, 427, 428, 781, 0, - 429, 430, 431, 432, 433, 434, 782, 0, 436, 437, - 438, 439, 440, 441, 0, 0, 442, 0, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 399, 779, 401, 0, 402, 403, 0, 404, 405, 406, + 407, 408, 409, 410, 0, 780, 781, 0, 1598, 413, + 414, 782, 416, 783, 784, 418, 419, 785, 421, 422, + 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, + 786, 0, 431, 432, 433, 434, 435, 436, 787, 0, + 438, 439, 440, 441, 442, 443, 0, 0, 444, 0, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 783, 0, 0, 0, 0, 0, 0, 784, 785, 0, - 0, 0, 0, 0, 787, 0, 788, 1579, 0, 0, - 0, 789, 0, 790, 791, 917, 725, 535, 726, 727, - 728, 729, 730, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 98, 99, 100, 0, 0, 0, 0, 731, 0, 0, - 101, 102, 0, 103, 104, 105, 919, 107, 108, 109, - 110, 732, 920, 733, 734, 0, 115, 116, 117, 118, - 119, 120, 735, 736, 121, 122, 737, 738, 125, 0, - 126, 127, 128, 129, 739, 0, 921, 0, 132, 133, - 134, 135, 136, 922, 138, 139, 140, 0, 141, 142, - 143, 144, 145, 146, 0, 923, 148, 149, 150, 741, - 742, 743, 924, 745, 746, 747, 152, 153, 154, 155, - 156, 157, 158, 748, 749, 161, 750, 162, 0, 163, - 164, 165, 166, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 174, 175, 751, 177, 178, 0, 179, - 180, 181, 0, 182, 183, 184, 0, 185, 186, 187, - 188, 752, 190, 191, 192, 193, 753, 754, 195, 0, - 196, 197, 755, 199, 0, 200, 0, 201, 926, 0, - 927, 204, 205, 206, 928, 208, 0, 209, 0, 210, - 211, 0, 212, 213, 214, 215, 216, 217, 929, 219, - 220, 221, 222, 0, 223, 224, 225, 226, 227, 228, - 0, 229, 930, 231, 232, 233, 234, 235, 756, 757, - 0, 758, 0, 239, 931, 932, 242, 933, 244, 245, - 246, 247, 248, 0, 0, 249, 934, 251, 935, 0, - 253, 254, 255, 759, 760, 256, 257, 258, 259, 260, - 936, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 761, - 937, 762, 283, 284, 285, 286, 763, 287, 288, 938, - 290, 764, 765, 292, 766, 294, 295, 296, 0, 297, - 298, 0, 0, 767, 300, 301, 0, 0, 302, 303, - 939, 305, 940, 768, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 0, 318, 319, 769, 321, 322, - 323, 324, 325, 326, 0, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 770, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 941, 356, 357, 358, 771, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 0, 371, 372, 373, 374, 375, 772, 376, 377, - 378, 379, 380, 942, 382, 383, 773, 385, 0, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 943, 398, 774, 0, 400, 401, 0, 402, 944, 404, - 405, 406, 407, 408, 0, 775, 776, 0, 0, 411, - 412, 777, 414, 778, 779, 416, 417, 945, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 781, 0, 429, 430, 431, 432, 433, 434, 782, 1793, - 436, 947, 438, 439, 440, 441, 0, 0, 442, 0, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 783, 0, 0, 0, 0, 0, 0, 784, - 785, 0, 0, 0, 0, 0, 787, 0, 788, 0, - 0, 0, 0, 789, 0, 790, 791, 89, 725, 535, - 726, 727, 728, 729, 730, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 98, 99, 100, 0, 0, 0, 0, 731, - 0, 0, 101, 102, 0, 103, 104, 105, 106, 107, - 108, 109, 110, 732, 112, 733, 734, 0, 115, 116, - 117, 118, 119, 120, 735, 736, 121, 122, 737, 738, - 125, 0, 126, 127, 128, 129, 739, 0, 740, 0, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 146, 0, 147, 148, 149, - 150, 741, 742, 743, 744, 745, 746, 747, 152, 153, - 154, 155, 156, 157, 158, 748, 749, 161, 750, 162, - 0, 163, 164, 165, 166, 167, 168, 0, 169, 170, - 171, 172, 173, 0, 0, 174, 175, 751, 177, 178, - 0, 179, 180, 181, 0, 182, 183, 184, 0, 185, - 186, 187, 188, 752, 190, 191, 192, 193, 753, 754, - 195, 0, 196, 197, 755, 199, 0, 200, 0, 201, - 202, 1590, 203, 204, 205, 206, 207, 208, 0, 209, - 0, 210, 211, 0, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 0, 223, 224, 225, 226, - 227, 228, 0, 229, 230, 231, 232, 233, 234, 235, - 756, 757, 0, 758, 0, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 0, 0, 249, 250, 251, - 252, 0, 253, 254, 255, 759, 760, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 761, 281, 762, 283, 284, 285, 286, 763, 287, - 288, 289, 290, 764, 765, 292, 766, 294, 295, 296, - 0, 297, 298, 0, 0, 767, 300, 301, 0, 0, - 302, 303, 304, 305, 306, 768, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 0, 318, 319, 769, - 321, 322, 323, 324, 325, 326, 0, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 770, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 771, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 0, 371, 372, 373, 374, 375, 772, - 376, 377, 378, 379, 380, 381, 382, 383, 773, 385, - 0, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 774, 0, 400, 401, 0, 402, - 403, 404, 405, 406, 407, 408, 0, 775, 776, 0, - 0, 411, 412, 777, 414, 778, 779, 416, 417, 780, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 781, 0, 429, 430, 431, 432, 433, 434, - 782, 0, 436, 437, 438, 439, 440, 441, 0, 0, - 442, 0, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 783, 0, 0, 0, 0, 0, - 0, 784, 785, 0, 0, 0, 0, 0, 787, 0, - 788, 0, 0, 0, 0, 789, 0, 790, 791, 89, - 725, 535, 726, 727, 728, 729, 730, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 98, 99, 100, 0, 0, 0, - 0, 731, 0, 0, 101, 102, 0, 103, 104, 105, - 106, 107, 108, 109, 110, 732, 112, 733, 734, 0, - 115, 116, 117, 118, 119, 120, 735, 736, 121, 122, - 737, 738, 125, 0, 126, 127, 128, 129, 739, 0, - 740, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 146, 0, 147, - 148, 149, 150, 741, 742, 743, 744, 745, 746, 747, - 152, 153, 154, 155, 156, 157, 158, 748, 749, 161, - 750, 162, 0, 163, 164, 165, 166, 167, 168, 0, - 169, 170, 171, 172, 173, 0, 0, 174, 175, 751, - 177, 178, 0, 179, 180, 181, 0, 182, 183, 184, - 0, 185, 186, 187, 188, 752, 190, 191, 192, 193, - 753, 754, 195, 0, 196, 197, 755, 199, 0, 200, - 0, 201, 202, 0, 203, 204, 205, 206, 207, 208, - 0, 209, 0, 210, 211, 0, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 0, 223, 224, - 225, 226, 227, 228, 0, 229, 230, 231, 232, 233, - 234, 235, 756, 757, 0, 758, 0, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 0, 0, 249, - 250, 251, 252, 0, 253, 254, 255, 759, 760, 256, + 464, 465, 788, 0, 0, 0, 0, 0, 0, 789, + 790, 0, 0, 0, 0, 0, 792, 0, 793, 0, + 0, 0, 0, 794, 0, 795, 796, 90, 730, 537, + 731, 732, 733, 734, 735, 0, 0, 0, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 99, 100, 101, 0, 0, 0, 0, 736, + 0, 0, 102, 103, 0, 104, 105, 106, 107, 108, + 109, 110, 111, 737, 113, 738, 739, 0, 116, 117, + 118, 119, 120, 121, 740, 741, 122, 123, 742, 743, + 126, 0, 127, 128, 129, 130, 744, 0, 745, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, + 142, 143, 144, 145, 146, 147, 0, 148, 149, 150, + 151, 746, 747, 748, 749, 750, 751, 752, 153, 154, + 155, 156, 157, 158, 159, 753, 754, 162, 755, 163, + 0, 164, 165, 166, 167, 168, 169, 0, 170, 171, + 172, 173, 174, 0, 0, 175, 176, 756, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 0, 186, + 187, 188, 189, 757, 191, 192, 193, 194, 758, 759, + 196, 0, 197, 198, 760, 200, 0, 201, 0, 202, + 203, 0, 204, 205, 206, 207, 208, 209, 0, 210, + 0, 211, 212, 0, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 0, 224, 225, 226, 227, + 228, 229, 0, 230, 231, 232, 233, 234, 235, 236, + 761, 762, 0, 763, 0, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 0, 0, 250, 251, 252, + 253, 0, 254, 255, 256, 764, 765, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 766, 282, 767, 284, 285, 286, 287, 768, 288, + 289, 290, 291, 769, 770, 293, 771, 295, 296, 297, + 0, 298, 299, 0, 0, 772, 301, 302, 0, 0, + 303, 304, 305, 306, 307, 773, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 0, 319, 320, 774, + 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 775, 338, 339, 340, + 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 0, 354, 355, 356, 357, 358, + 359, 776, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 0, 372, 373, 374, 375, 376, 777, + 377, 378, 379, 380, 381, 382, 383, 384, 778, 386, + 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 779, 401, 0, 402, 403, 0, + 404, 405, 406, 407, 408, 409, 410, 0, 780, 781, + 0, 0, 413, 414, 782, 416, 783, 784, 418, 419, + 785, 421, 422, 423, 424, 425, 0, 0, 426, 427, + 428, 429, 430, 786, 0, 431, 432, 433, 434, 435, + 436, 787, 0, 438, 439, 440, 441, 442, 443, 0, + 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 788, 0, 0, 0, 0, + 0, 0, 789, 790, 791, 0, 0, 0, 0, 792, + 0, 793, 0, 0, 0, 0, 794, 0, 795, 796, + 90, 730, 537, 731, 732, 733, 734, 735, 0, 0, + 0, 0, 0, 0, 0, 0, 91, 92, 93, 94, + 95, 96, 97, 98, 1338, 99, 100, 101, 0, 0, + 0, 0, 736, 0, 0, 102, 103, 0, 104, 105, + 106, 107, 108, 109, 110, 111, 737, 113, 738, 739, + 0, 116, 117, 118, 119, 120, 121, 740, 741, 122, + 123, 742, 743, 126, 0, 127, 128, 129, 130, 744, + 0, 745, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 148, 149, 150, 151, 746, 747, 748, 749, 750, 751, + 752, 153, 154, 155, 156, 157, 158, 159, 753, 754, + 162, 755, 163, 0, 164, 165, 166, 167, 168, 169, + 0, 170, 171, 172, 173, 174, 0, 0, 175, 176, + 756, 178, 179, 0, 180, 181, 182, 0, 183, 184, + 185, 0, 186, 187, 188, 189, 757, 191, 192, 193, + 194, 758, 759, 196, 0, 197, 198, 760, 200, 0, + 201, 0, 202, 203, 0, 204, 205, 206, 207, 208, + 209, 0, 210, 0, 211, 212, 0, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 0, 224, + 225, 226, 227, 228, 229, 0, 230, 231, 232, 233, + 234, 235, 236, 761, 762, 0, 763, 0, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 0, 0, + 250, 251, 252, 253, 0, 254, 255, 256, 764, 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 761, 281, 762, 283, 284, 285, 286, - 763, 287, 288, 289, 290, 764, 765, 292, 766, 294, - 295, 296, 0, 297, 298, 0, 0, 767, 300, 301, - 0, 0, 302, 303, 304, 305, 306, 768, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 0, 318, - 319, 769, 321, 322, 323, 324, 325, 326, 0, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 770, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, - 356, 357, 358, 771, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, - 375, 772, 376, 377, 378, 379, 380, 381, 382, 383, - 773, 385, 0, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 774, 0, 400, 401, - 0, 402, 403, 404, 405, 406, 407, 408, 0, 775, - 776, 0, 0, 411, 412, 777, 414, 778, 779, 416, - 417, 780, 419, 420, 421, 422, 423, 0, 0, 424, - 425, 426, 427, 428, 781, 0, 429, 430, 431, 432, - 433, 434, 782, 0, 436, 437, 438, 439, 440, 441, - 0, 0, 442, 0, 0, 443, 444, 445, 446, 447, + 277, 278, 279, 280, 766, 282, 767, 284, 285, 286, + 287, 768, 288, 289, 290, 291, 769, 770, 293, 771, + 295, 296, 297, 0, 298, 299, 0, 0, 772, 301, + 302, 0, 0, 303, 304, 305, 306, 307, 773, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 0, + 319, 320, 774, 322, 323, 324, 325, 326, 327, 0, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 775, + 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 0, 354, 355, + 356, 357, 358, 359, 776, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, + 375, 376, 777, 377, 378, 379, 380, 381, 382, 383, + 384, 778, 386, 0, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 779, 401, 0, + 402, 403, 0, 404, 405, 406, 407, 408, 409, 410, + 0, 780, 781, 0, 0, 413, 414, 782, 416, 783, + 784, 418, 419, 785, 421, 422, 423, 424, 425, 0, + 0, 426, 427, 428, 429, 430, 786, 0, 431, 432, + 433, 434, 435, 436, 787, 0, 438, 439, 440, 441, + 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 783, 0, 0, 0, - 0, 0, 0, 784, 785, 0, 0, 0, 0, 0, - 787, 0, 788, 0, 0, 0, 0, 789, 0, 790, - 791, 917, 725, 535, 726, 727, 728, 729, 730, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 94, 95, 96, 97, 0, 98, 99, 100, 0, - 0, 0, 0, 731, 0, 0, 101, 102, 0, 103, - 104, 105, 919, 107, 108, 109, 110, 732, 920, 733, - 734, 0, 115, 116, 117, 118, 119, 120, 735, 736, - 121, 122, 737, 738, 125, 0, 126, 127, 128, 129, - 739, 0, 921, 0, 132, 133, 134, 135, 136, 922, - 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, - 0, 923, 148, 149, 150, 741, 742, 743, 924, 745, - 746, 747, 152, 153, 154, 155, 156, 157, 158, 748, - 749, 161, 750, 162, 0, 163, 164, 165, 166, 167, - 168, 0, 169, 170, 171, 172, 173, 0, 0, 174, - 175, 751, 177, 178, 0, 179, 180, 181, 0, 182, - 183, 184, 0, 185, 186, 187, 188, 752, 190, 191, - 192, 193, 753, 754, 195, 0, 196, 197, 755, 199, - 0, 200, 0, 201, 926, 0, 927, 204, 205, 206, - 928, 208, 0, 209, 0, 210, 211, 0, 212, 213, - 214, 215, 216, 217, 929, 219, 220, 221, 222, 0, - 223, 224, 225, 226, 227, 228, 0, 229, 930, 231, - 232, 233, 234, 235, 756, 757, 0, 758, 0, 239, - 931, 932, 242, 933, 244, 245, 246, 247, 248, 0, - 0, 249, 934, 251, 935, 0, 253, 254, 255, 759, - 760, 256, 257, 258, 259, 260, 936, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 761, 937, 762, 283, 284, - 285, 286, 763, 287, 288, 938, 290, 764, 765, 292, - 766, 294, 295, 296, 0, 297, 298, 0, 0, 767, - 300, 301, 0, 0, 302, 303, 939, 305, 940, 768, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 0, 318, 319, 769, 321, 322, 323, 324, 325, 326, - 0, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 770, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 941, 356, 357, 358, 771, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, - 373, 374, 375, 772, 376, 377, 378, 379, 380, 942, - 382, 383, 773, 385, 0, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 943, 398, 774, 0, - 400, 401, 0, 402, 944, 404, 405, 406, 407, 408, - 0, 775, 776, 0, 0, 411, 412, 777, 414, 778, - 779, 416, 417, 945, 419, 420, 421, 422, 423, 0, - 0, 424, 425, 426, 427, 428, 781, 0, 429, 430, - 431, 432, 433, 434, 782, 0, 436, 947, 438, 439, - 440, 441, 0, 0, 442, 0, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 783, 0, - 0, 0, 0, 0, 0, 784, 785, 0, 0, 0, - 0, 0, 787, 0, 788, 0, 0, 0, 0, 789, - 0, 790, 791, 89, 725, 535, 726, 727, 728, 729, - 730, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 98, 99, - 100, 0, 0, 0, 0, 731, 0, 0, 101, 102, - 0, 103, 104, 105, 106, 107, 108, 109, 110, 732, - 112, 733, 734, 0, 115, 116, 117, 118, 119, 120, - 735, 736, 121, 122, 737, 738, 125, 0, 126, 127, - 128, 129, 739, 0, 740, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 0, 141, 142, 143, 144, - 145, 146, 0, 147, 148, 149, 150, 741, 742, 743, - 744, 745, 746, 747, 152, 153, 154, 155, 156, 157, - 158, 748, 749, 161, 750, 162, 0, 163, 164, 165, - 166, 167, 168, 0, 169, 170, 171, 172, 173, 0, - 0, 174, 175, 751, 177, 178, 0, 179, 180, 181, - 0, 182, 183, 184, 0, 185, 186, 187, 188, 752, - 190, 191, 192, 193, 753, 754, 195, 0, 196, 197, - 755, 199, 0, 200, 0, 201, 202, 0, 203, 204, - 205, 206, 207, 208, 0, 209, 0, 210, 211, 0, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 0, 223, 224, 225, 226, 227, 228, 0, 229, - 230, 231, 232, 233, 234, 235, 756, 757, 0, 758, - 0, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 0, 0, 249, 250, 251, 252, 0, 253, 254, - 255, 759, 760, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 761, 281, 762, - 283, 284, 285, 286, 763, 287, 288, 289, 290, 764, - 765, 292, 766, 294, 295, 296, 0, 297, 298, 0, - 0, 767, 300, 301, 0, 0, 302, 303, 304, 305, - 306, 768, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 0, 318, 319, 769, 321, 322, 323, 324, - 325, 326, 0, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 770, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 355, 356, 357, 358, 771, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 0, - 371, 372, 373, 374, 375, 772, 376, 377, 378, 379, - 380, 381, 382, 383, 773, 385, 0, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 774, 0, 400, 401, 0, 402, 403, 404, 405, 406, - 407, 408, 0, 775, 776, 0, 0, 411, 412, 777, - 414, 778, 779, 416, 417, 780, 419, 420, 421, 422, - 423, 0, 0, 424, 425, 426, 427, 428, 781, 0, - 429, 430, 431, 432, 433, 434, 782, 0, 436, 437, - 438, 439, 440, 441, 0, 0, 442, 0, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 783, 0, 0, 0, 0, 0, 0, 1334, 1335, 0, - 0, 0, 0, 0, 787, 0, 788, 0, 0, 0, - 0, 789, 0, 790, 791, 89, 1718, 535, 726, 727, - 728, 729, 730, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 98, 99, 100, 0, 0, 0, 0, 731, 0, 0, - 101, 102, 0, 103, 104, 105, 106, 107, 108, 109, - 110, 732, 112, 733, 734, 0, 115, 116, 117, 118, - 119, 120, 735, 736, 121, 122, 737, 738, 125, 0, - 126, 127, 128, 129, 739, 0, 740, 0, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 0, 141, 142, - 143, 144, 145, 146, 0, 147, 148, 149, 150, 741, - 742, 743, 744, 745, 746, 747, 152, 153, 154, 155, - 156, 157, 158, 748, 749, 161, 750, 162, 0, 163, - 164, 165, 166, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 174, 175, 751, 177, 178, 0, 179, - 180, 181, 0, 182, 183, 184, 0, 185, 186, 187, - 188, 752, 190, 191, 192, 193, 753, 754, 195, 0, - 196, 197, 755, 199, 0, 200, 0, 201, 202, 0, - 203, 204, 205, 206, 207, 208, 0, 209, 0, 210, - 211, 0, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 0, 223, 224, 225, 226, 227, 228, - 0, 229, 230, 231, 232, 233, 234, 235, 756, 757, - 0, 758, 0, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 0, 0, 249, 250, 251, 252, 0, - 253, 254, 255, 759, 760, 256, 257, 258, 259, 260, + 458, 459, 460, 461, 462, 463, 464, 465, 788, 0, + 0, 0, 0, 0, 0, 789, 790, 0, 0, 0, + 0, 0, 792, 0, 793, 0, 0, 0, 0, 794, + 0, 795, 796, 923, 730, 537, 731, 732, 733, 734, + 735, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 0, 0, 0, 0, 736, 0, 0, 102, 103, + 0, 104, 105, 106, 925, 108, 109, 110, 111, 737, + 926, 738, 739, 0, 116, 117, 118, 119, 120, 121, + 740, 741, 122, 123, 742, 743, 126, 0, 127, 128, + 129, 130, 744, 0, 927, 0, 133, 134, 135, 136, + 137, 928, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 929, 149, 150, 151, 746, 747, 748, + 930, 750, 751, 752, 153, 154, 155, 156, 157, 158, + 159, 753, 754, 162, 755, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 756, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 757, + 191, 192, 193, 194, 758, 759, 196, 0, 197, 198, + 760, 200, 0, 201, 0, 202, 932, 0, 933, 205, + 206, 207, 934, 209, 0, 210, 0, 211, 212, 0, + 213, 214, 215, 216, 217, 218, 935, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 936, 232, 233, 234, 235, 236, 761, 762, 0, 763, + 0, 240, 937, 938, 243, 939, 245, 246, 247, 248, + 249, 0, 0, 250, 940, 252, 941, 0, 254, 255, + 256, 764, 765, 257, 258, 259, 260, 261, 942, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 766, 943, 767, + 284, 285, 286, 287, 768, 288, 289, 944, 291, 769, + 770, 293, 771, 295, 296, 297, 0, 298, 299, 0, + 0, 772, 301, 302, 0, 0, 303, 304, 945, 306, + 946, 773, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 774, 322, 323, 324, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 775, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 947, 357, 358, 359, 776, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 376, 777, 377, 378, 379, 380, + 381, 948, 383, 384, 778, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 949, 399, + 779, 401, 0, 402, 403, 0, 404, 950, 406, 407, + 408, 409, 410, 0, 780, 781, 0, 0, 413, 414, + 782, 416, 783, 784, 418, 419, 951, 421, 422, 423, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 786, + 0, 431, 432, 433, 434, 435, 436, 787, 0, 438, + 953, 440, 441, 442, 443, 0, 0, 444, 0, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 788, 0, 0, 0, 0, 0, 0, 789, 790, + 0, 0, 0, 0, 0, 792, 0, 793, 1454, 0, + 0, 0, 794, 0, 795, 796, 90, 730, 537, 731, + 732, 733, 734, 735, 0, 0, 0, 0, 0, 0, + 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, + 0, 99, 100, 101, 0, 0, 0, 0, 736, 0, + 0, 102, 103, 0, 104, 105, 106, 107, 108, 109, + 110, 111, 737, 113, 738, 739, 0, 116, 117, 118, + 119, 120, 121, 740, 741, 122, 123, 742, 743, 126, + 0, 127, 128, 129, 130, 744, 0, 745, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 148, 149, 150, 151, + 746, 747, 748, 749, 750, 751, 752, 153, 154, 155, + 156, 157, 158, 159, 753, 754, 162, 755, 163, 0, + 164, 165, 166, 167, 168, 169, 0, 170, 171, 172, + 173, 174, 0, 0, 175, 176, 756, 178, 179, 0, + 180, 181, 182, 0, 183, 184, 185, 0, 186, 187, + 188, 189, 757, 191, 192, 193, 194, 758, 759, 196, + 0, 197, 198, 760, 200, 0, 201, 0, 202, 203, + 0, 204, 205, 206, 207, 208, 209, 0, 210, 0, + 211, 212, 0, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 0, 224, 225, 226, 227, 228, + 229, 0, 230, 231, 232, 233, 234, 235, 236, 761, + 762, 0, 763, 0, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 0, 0, 250, 251, 252, 253, + 0, 254, 255, 256, 764, 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 761, - 281, 762, 283, 284, 285, 286, 763, 287, 288, 289, - 290, 764, 765, 292, 766, 294, 295, 296, 0, 297, - 298, 0, 0, 767, 300, 301, 0, 0, 302, 303, - 304, 305, 306, 768, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 0, 318, 319, 769, 321, 322, - 323, 324, 325, 326, 0, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 770, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 355, 356, 357, 358, 771, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 0, 371, 372, 373, 374, 375, 772, 376, 377, - 378, 379, 380, 381, 382, 383, 773, 385, 0, 386, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 766, 282, 767, 284, 285, 286, 287, 768, 288, 289, + 290, 291, 769, 770, 293, 771, 295, 296, 297, 0, + 298, 299, 0, 0, 772, 301, 302, 0, 0, 303, + 304, 305, 306, 307, 773, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 0, 319, 320, 774, 322, + 323, 324, 325, 326, 327, 0, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 775, 338, 339, 340, 341, + 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 0, 354, 355, 356, 357, 358, 359, + 776, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 0, 372, 373, 374, 375, 376, 777, 377, + 378, 379, 380, 381, 382, 383, 384, 778, 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 774, 0, 400, 401, 0, 402, 403, 404, - 405, 406, 407, 408, 0, 775, 776, 0, 0, 411, - 412, 777, 414, 778, 779, 416, 417, 780, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 781, 0, 429, 430, 431, 432, 433, 434, 782, 0, - 436, 437, 438, 439, 440, 441, 0, 0, 442, 0, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 397, 398, 399, 779, 401, 0, 402, 403, 0, 404, + 405, 406, 407, 408, 409, 410, 0, 780, 781, 0, + 0, 413, 414, 782, 416, 783, 784, 418, 419, 785, + 421, 422, 423, 424, 425, 0, 0, 426, 427, 428, + 429, 430, 786, 0, 431, 432, 433, 434, 435, 436, + 787, 0, 438, 439, 440, 441, 442, 443, 0, 0, + 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 783, 0, 0, 0, 0, 0, 0, 784, - 785, 0, 0, 0, 0, 0, 787, 0, 788, 0, - 0, 0, 0, 789, 0, 790, 791, 89, 725, 535, - 726, 727, 728, 729, 730, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 98, 99, 100, 0, 0, 0, 0, 731, - 0, 0, 101, 102, 0, 103, 104, 105, 106, 107, - 108, 109, 110, 732, 112, 733, 734, 0, 115, 116, - 117, 118, 119, 120, 735, 736, 121, 122, 737, 738, - 125, 0, 126, 127, 128, 129, 739, 0, 740, 0, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 146, 0, 147, 148, 149, - 150, 741, 742, 743, 744, 745, 746, 747, 152, 153, - 154, 155, 156, 157, 158, 748, 749, 161, 750, 162, - 0, 163, 164, 165, 166, 167, 168, 0, 169, 170, - 171, 172, 173, 0, 0, 174, 175, 751, 177, 178, - 0, 179, 180, 181, 0, 182, 183, 184, 0, 185, - 186, 187, 188, 752, 190, 191, 192, 193, 753, 754, - 195, 0, 196, 197, 755, 199, 0, 200, 0, 201, - 202, 0, 203, 204, 205, 206, 207, 208, 0, 209, - 0, 210, 211, 0, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 0, 223, 224, 225, 226, - 227, 228, 0, 229, 230, 231, 232, 233, 234, 235, - 756, 757, 0, 758, 0, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 0, 0, 249, 250, 251, - 252, 0, 253, 254, 255, 759, 760, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 761, 281, 762, 283, 284, 285, 286, 763, 287, - 288, 289, 290, 764, 765, 292, 766, 294, 295, 296, - 0, 297, 298, 0, 0, 767, 300, 301, 0, 0, - 302, 303, 304, 305, 306, 768, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 0, 318, 319, 769, - 321, 322, 323, 324, 325, 326, 0, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 770, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 771, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 0, 371, 372, 373, 374, 375, 772, - 376, 377, 378, 379, 380, 381, 382, 383, 773, 385, - 0, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 774, 0, 400, 401, 0, 402, - 403, 404, 405, 406, 407, 408, 0, 775, 776, 0, - 0, 411, 412, 777, 414, 778, 779, 416, 417, 780, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 781, 0, 429, 430, 431, 432, 433, 434, - 782, 0, 436, 437, 438, 439, 440, 441, 0, 0, - 442, 0, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 783, 0, 0, 0, 0, 0, - 0, 784, 785, 0, 0, 0, 0, 0, 787, 0, - 2587, 0, 0, 0, 0, 789, 0, 790, 791, 89, - 725, 535, 726, 727, 728, 729, 730, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 98, 99, 100, 0, 0, 0, - 0, 731, 0, 0, 101, 102, 0, 103, 104, 105, - 106, 107, 108, 109, 2786, 732, 112, 733, 734, 0, - 115, 116, 117, 118, 119, 120, 735, 736, 121, 122, - 737, 738, 125, 0, 126, 127, 128, 129, 739, 0, - 740, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 146, 0, 147, - 148, 149, 2787, 741, 742, 743, 744, 745, 746, 747, - 152, 153, 154, 155, 156, 157, 158, 748, 749, 161, - 750, 162, 0, 163, 164, 165, 166, 167, 168, 0, - 169, 170, 171, 172, 173, 0, 0, 174, 175, 751, - 177, 178, 0, 179, 180, 181, 0, 182, 183, 184, - 0, 185, 186, 187, 188, 752, 190, 191, 192, 193, - 753, 754, 195, 0, 196, 197, 755, 199, 0, 200, - 0, 201, 202, 0, 203, 204, 205, 206, 207, 208, - 0, 209, 0, 210, 211, 0, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 0, 223, 224, - 225, 226, 227, 228, 0, 229, 230, 231, 232, 233, - 234, 235, 756, 757, 0, 758, 0, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 0, 0, 249, - 250, 251, 252, 0, 253, 254, 255, 759, 760, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 761, 281, 762, 283, 284, 285, 286, - 763, 287, 288, 289, 290, 764, 765, 292, 766, 294, - 295, 296, 0, 297, 298, 0, 0, 767, 300, 301, - 0, 0, 302, 303, 304, 305, 306, 768, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 0, 318, - 319, 769, 321, 322, 323, 324, 325, 326, 0, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 770, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, - 356, 357, 358, 771, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, - 375, 772, 376, 377, 378, 379, 380, 381, 382, 383, - 773, 385, 0, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 774, 0, 400, 401, - 0, 402, 403, 404, 405, 406, 407, 408, 0, 775, - 776, 0, 0, 411, 412, 777, 414, 778, 779, 416, - 417, 780, 419, 420, 2788, 422, 423, 0, 0, 424, - 425, 426, 427, 428, 781, 0, 429, 430, 431, 432, - 433, 434, 782, 0, 436, 437, 438, 439, 440, 441, - 0, 0, 442, 0, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 783, 0, 0, 0, - 0, 0, 0, 784, 785, 0, 0, 0, 0, 0, - 787, 0, 788, 0, 0, 0, 0, 789, 0, 790, - 791, 89, 725, 535, 726, 727, 728, 729, 730, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 94, 95, 96, 97, 0, 98, 99, 100, 0, - 0, 0, 0, 731, 0, 0, 101, 102, 0, 103, - 104, 105, 106, 107, 108, 109, 110, 732, 112, 733, - 734, 0, 115, 116, 117, 118, 119, 120, 735, 736, - 121, 122, 737, 738, 125, 0, 126, 127, 128, 129, - 739, 0, 740, 0, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, - 0, 147, 148, 149, 2787, 741, 742, 743, 744, 745, - 746, 747, 152, 153, 154, 155, 156, 157, 158, 748, - 749, 161, 750, 162, 0, 163, 164, 165, 166, 167, - 168, 0, 169, 170, 171, 172, 173, 0, 0, 174, - 175, 751, 177, 178, 0, 179, 180, 181, 0, 182, - 183, 184, 0, 185, 186, 187, 188, 752, 190, 191, - 192, 193, 753, 754, 195, 0, 196, 197, 755, 199, - 0, 200, 0, 201, 202, 0, 203, 204, 205, 206, - 207, 208, 0, 209, 0, 210, 211, 0, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 0, - 223, 224, 225, 226, 227, 228, 0, 229, 230, 231, - 232, 233, 234, 235, 756, 757, 0, 758, 0, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 0, - 0, 249, 250, 251, 252, 0, 253, 254, 255, 759, - 760, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 462, 463, 464, 465, 788, 0, 0, 0, 0, 0, + 0, 789, 790, 0, 0, 0, 0, 0, 792, 0, + 793, 1585, 0, 0, 0, 794, 0, 795, 796, 923, + 730, 537, 731, 732, 733, 734, 735, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 99, 100, 101, 0, 0, 0, + 0, 736, 0, 0, 102, 103, 0, 104, 105, 106, + 925, 108, 109, 110, 111, 737, 926, 738, 739, 0, + 116, 117, 118, 119, 120, 121, 740, 741, 122, 123, + 742, 743, 126, 0, 127, 128, 129, 130, 744, 0, + 927, 0, 133, 134, 135, 136, 137, 928, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 929, + 149, 150, 151, 746, 747, 748, 930, 750, 751, 752, + 153, 154, 155, 156, 157, 158, 159, 753, 754, 162, + 755, 163, 0, 164, 165, 166, 167, 168, 169, 0, + 170, 171, 172, 173, 174, 0, 0, 175, 176, 756, + 178, 179, 0, 180, 181, 182, 0, 183, 184, 185, + 0, 186, 187, 188, 189, 757, 191, 192, 193, 194, + 758, 759, 196, 0, 197, 198, 760, 200, 0, 201, + 0, 202, 932, 0, 933, 205, 206, 207, 934, 209, + 0, 210, 0, 211, 212, 0, 213, 214, 215, 216, + 217, 218, 935, 220, 221, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 936, 232, 233, 234, + 235, 236, 761, 762, 0, 763, 0, 240, 937, 938, + 243, 939, 245, 246, 247, 248, 249, 0, 0, 250, + 940, 252, 941, 0, 254, 255, 256, 764, 765, 257, + 258, 259, 260, 261, 942, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 766, 943, 767, 284, 285, 286, 287, + 768, 288, 289, 944, 291, 769, 770, 293, 771, 295, + 296, 297, 0, 298, 299, 0, 0, 772, 301, 302, + 0, 0, 303, 304, 945, 306, 946, 773, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 0, 319, + 320, 774, 322, 323, 324, 325, 326, 327, 0, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 775, 338, + 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 0, 354, 355, 947, + 357, 358, 359, 776, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, + 376, 777, 377, 378, 379, 380, 381, 948, 383, 384, + 778, 386, 0, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 949, 399, 779, 401, 0, 402, + 403, 0, 404, 950, 406, 407, 408, 409, 410, 0, + 780, 781, 0, 0, 413, 414, 782, 416, 783, 784, + 418, 419, 951, 421, 422, 423, 424, 425, 0, 0, + 426, 427, 428, 429, 430, 786, 0, 431, 432, 433, + 434, 435, 436, 787, 1799, 438, 953, 440, 441, 442, + 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 788, 0, 0, + 0, 0, 0, 0, 789, 790, 0, 0, 0, 0, + 0, 792, 0, 793, 0, 0, 0, 0, 794, 0, + 795, 796, 90, 730, 537, 731, 732, 733, 734, 735, + 0, 0, 0, 0, 0, 0, 0, 0, 91, 92, + 93, 94, 95, 96, 97, 98, 0, 99, 100, 101, + 0, 0, 0, 0, 736, 0, 0, 102, 103, 0, + 104, 105, 106, 107, 108, 109, 110, 111, 737, 113, + 738, 739, 0, 116, 117, 118, 119, 120, 121, 740, + 741, 122, 123, 742, 743, 126, 0, 127, 128, 129, + 130, 744, 0, 745, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 0, 142, 143, 144, 145, 146, + 147, 0, 148, 149, 150, 151, 746, 747, 748, 749, + 750, 751, 752, 153, 154, 155, 156, 157, 158, 159, + 753, 754, 162, 755, 163, 0, 164, 165, 166, 167, + 168, 169, 0, 170, 171, 172, 173, 174, 0, 0, + 175, 176, 756, 178, 179, 0, 180, 181, 182, 0, + 183, 184, 185, 0, 186, 187, 188, 189, 757, 191, + 192, 193, 194, 758, 759, 196, 0, 197, 198, 760, + 200, 0, 201, 0, 202, 203, 1596, 204, 205, 206, + 207, 208, 209, 0, 210, 0, 211, 212, 0, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 0, 224, 225, 226, 227, 228, 229, 0, 230, 231, + 232, 233, 234, 235, 236, 761, 762, 0, 763, 0, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 0, 0, 250, 251, 252, 253, 0, 254, 255, 256, + 764, 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 761, 281, 762, 283, 284, - 285, 286, 763, 287, 288, 289, 290, 764, 765, 292, - 766, 294, 295, 296, 0, 297, 298, 0, 0, 767, - 300, 301, 0, 0, 302, 303, 304, 305, 306, 768, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 0, 318, 319, 769, 321, 322, 323, 324, 325, 326, - 0, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 770, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 355, 356, 357, 358, 771, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, - 373, 374, 375, 772, 376, 377, 378, 379, 380, 381, - 382, 383, 773, 385, 0, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 774, 0, - 400, 401, 0, 402, 403, 404, 405, 406, 407, 408, - 0, 775, 776, 0, 0, 411, 412, 777, 414, 778, - 779, 416, 417, 780, 419, 420, 2788, 422, 423, 0, - 0, 424, 425, 426, 427, 428, 781, 0, 429, 430, - 431, 432, 433, 434, 782, 0, 436, 437, 438, 439, - 440, 441, 0, 0, 442, 0, 0, 443, 444, 445, + 275, 276, 277, 278, 279, 280, 766, 282, 767, 284, + 285, 286, 287, 768, 288, 289, 290, 291, 769, 770, + 293, 771, 295, 296, 297, 0, 298, 299, 0, 0, + 772, 301, 302, 0, 0, 303, 304, 305, 306, 307, + 773, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 0, 319, 320, 774, 322, 323, 324, 325, 326, + 327, 0, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 775, 338, 339, 340, 341, 0, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 0, + 354, 355, 356, 357, 358, 359, 776, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, + 373, 374, 375, 376, 777, 377, 378, 379, 380, 381, + 382, 383, 384, 778, 386, 0, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 779, + 401, 0, 402, 403, 0, 404, 405, 406, 407, 408, + 409, 410, 0, 780, 781, 0, 0, 413, 414, 782, + 416, 783, 784, 418, 419, 785, 421, 422, 423, 424, + 425, 0, 0, 426, 427, 428, 429, 430, 786, 0, + 431, 432, 433, 434, 435, 436, 787, 0, 438, 439, + 440, 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 783, 0, - 0, 0, 0, 0, 0, 784, 785, 0, 0, 0, - 0, 0, 787, 0, 788, 0, 0, 0, 0, 789, - 0, 790, 791, 89, 725, 535, 726, 727, 728, 729, - 730, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 98, 99, - 100, 0, 0, 0, 0, 731, 0, 0, 101, 102, - 0, 103, 104, 105, 106, 107, 108, 109, -1675, 732, - 112, 733, 734, 0, 115, 116, 117, 118, 119, 120, - 735, 736, 121, 122, 737, 738, 125, 0, 126, 127, - 128, 129, 739, 0, 740, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 0, 141, 142, 143, 144, - 145, 146, 0, 147, 148, 149, 2787, 741, 742, 743, - 744, 745, 746, 747, 152, 153, 154, 155, 156, 157, - 158, 748, 749, 161, 750, 162, 0, 163, 164, 165, - 166, 167, 168, 0, 169, 170, 171, 172, 173, 0, - 0, 174, 175, 751, 177, 178, 0, 179, 180, 181, - 0, 182, 183, 184, 0, 185, 186, 187, 188, 752, - 190, 191, 192, 193, 753, 754, 195, 0, 196, 197, - 755, 199, 0, 200, 0, 201, 202, 0, 203, 204, - 205, 206, -1675, 208, 0, 209, 0, 210, 211, 0, - 212, 213, 214, 215, 216, 217, -1675, 219, 220, 221, - 222, 0, 223, 224, 225, 226, 227, 228, 0, 229, - 230, 231, 232, 233, 234, 235, 756, 757, 0, 758, - 0, 239, 0, 0, 242, 243, 244, 245, 246, 247, - 248, 0, 0, 249, 250, 251, -1675, 0, 253, 254, - 255, 759, 760, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 761, 281, 762, - 283, 284, 285, 286, 0, 287, 288, 0, 290, 764, - 765, 292, 766, 294, 295, 296, 0, 297, 298, 0, - 0, 767, 300, 301, 0, 0, 302, 303, 304, 305, - 306, 768, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 0, 318, 319, 769, 321, 322, 323, 324, - 325, 326, 0, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 770, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 355, 356, 357, 358, 771, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 0, - 371, 372, 373, 374, 375, 772, 376, 377, 378, 379, - 380, -1675, 382, 383, 773, 385, 0, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 774, 0, 400, 401, 0, 402, 403, 404, 405, 406, - 407, 408, 0, 775, 776, 0, 0, 411, 412, 777, - 414, 778, 779, 416, 417, 780, 419, 420, 2788, 422, - 423, 0, 0, 424, 425, 426, 427, 428, 781, 0, - 429, 430, 431, 432, 433, 434, 782, 0, 436, 437, - 438, 439, 440, 441, 0, 0, 442, 0, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - -1675, 0, 0, 0, 0, 0, 0, 784, 785, 0, - 0, 0, 0, 0, 787, 0, 788, 0, 0, 0, - 0, 789, 0, 790, 791, 89, 725, 535, 726, 727, - 728, 729, 730, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 0, 103, 104, 105, 106, 107, 108, 109, - 110, 732, 112, 733, 734, 0, 115, 116, 117, 118, - 119, 120, 735, 736, 121, 122, 737, 738, 125, 0, - 126, 127, 128, 129, 739, 0, 740, 0, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 0, 141, 142, - 143, 144, 145, 146, 0, 147, 148, 149, 150, 741, - 742, 743, 744, 745, 746, 747, 152, 153, 154, 155, - 156, 157, 158, 748, 749, 161, 0, 162, 0, 163, - 164, 165, 166, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 174, 175, 751, 177, 178, 0, 179, - 180, 181, 0, 182, 183, 184, 0, 185, 186, 187, - 188, 752, 190, 191, 192, 193, 753, 754, 195, 0, - 196, 197, 755, 199, 0, 200, 0, 201, 202, 0, - 203, 204, 205, 206, 207, 208, 0, 209, 0, 210, - 211, 0, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 0, 223, 224, 225, 226, 227, 228, - 0, 229, 230, 231, 232, 233, 234, 235, 756, 757, - 0, 758, 0, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 0, 0, 249, 250, 251, 252, 0, - 253, 254, 255, 759, 760, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 761, - 281, 762, 283, 284, 285, 286, 0, 287, 288, 289, - 290, 764, 765, 292, 766, 294, 295, 296, 0, 297, - 298, 0, 0, 767, 300, 301, 0, 0, 302, 303, - 304, 305, 306, 768, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 0, 318, 319, 769, 321, 322, - 323, 324, 325, 326, 0, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 770, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 0, 371, 372, 373, 374, 375, 772, 376, 377, - 378, 379, 380, 381, 382, 383, 773, 385, 0, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 774, 0, 400, 401, 0, 402, 403, 404, - 405, 406, 407, 408, 0, 775, 776, 0, 0, 411, - 412, 777, 414, 778, 779, 416, 417, 780, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 781, 0, 429, 430, 431, 432, 433, 434, 782, 0, - 436, 437, 438, 439, 440, 441, 0, 0, 442, 0, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 0, 0, 0, 0, 0, 0, 0, 1571, - 1572, 0, 0, 89, 725, 535, 726, 727, 1573, 729, - 730, 0, 0, 0, 0, 790, 791, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 98, 99, - 100, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 0, 103, 104, 105, 106, 107, 108, 109, 110, 732, - 112, 733, 734, 0, 115, 116, 117, 118, 119, 120, - 735, 736, 121, 122, 737, 738, 125, 0, 126, 127, - 128, 129, 739, 0, 740, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 0, 141, 142, 143, 144, - 145, 146, 0, 147, 148, 149, 150, 741, 742, 743, - 744, 745, 746, 747, 152, 153, 154, 155, 156, 157, - 158, 748, 749, 161, 0, 162, 0, 163, 164, 165, - 166, 167, 168, 0, 169, 170, 171, 172, 173, 0, - 0, 174, 175, 751, 177, 178, 0, 179, 180, 181, - 0, 182, 183, 184, 0, 185, 186, 187, 188, 752, - 190, 191, 192, 193, 753, 754, 195, 0, 196, 197, - 755, 199, 0, 200, 0, 201, 202, 0, 203, 204, - 205, 206, 207, 208, 0, 209, 0, 210, 211, 0, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 0, 223, 224, 225, 226, 227, 228, 0, 229, - 230, 231, 232, 233, 234, 235, 756, 757, 0, 758, - 0, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 0, 0, 249, 250, 251, 252, 0, 253, 254, - 255, 759, 760, 256, 257, 258, 259, 260, 261, 262, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 788, 0, 0, 0, 0, 0, 0, 789, 790, 0, + 0, 0, 0, 0, 792, 0, 793, 0, 0, 0, + 0, 794, 0, 795, 796, 90, 730, 537, 731, 732, + 733, 734, 735, 0, 0, 0, 0, 0, 0, 0, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 99, 100, 101, 0, 0, 0, 0, 736, 0, 0, + 102, 103, 0, 104, 105, 106, 107, 108, 109, 110, + 111, 737, 113, 738, 739, 0, 116, 117, 118, 119, + 120, 121, 740, 741, 122, 123, 742, 743, 126, 0, + 127, 128, 129, 130, 744, 0, 745, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 148, 149, 150, 151, 746, + 747, 748, 749, 750, 751, 752, 153, 154, 155, 156, + 157, 158, 159, 753, 754, 162, 755, 163, 0, 164, + 165, 166, 167, 168, 169, 0, 170, 171, 172, 173, + 174, 0, 0, 175, 176, 756, 178, 179, 0, 180, + 181, 182, 0, 183, 184, 185, 0, 186, 187, 188, + 189, 757, 191, 192, 193, 194, 758, 759, 196, 0, + 197, 198, 760, 200, 0, 201, 0, 202, 203, 0, + 204, 205, 206, 207, 208, 209, 0, 210, 0, 211, + 212, 0, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 231, 232, 233, 234, 235, 236, 761, 762, + 0, 763, 0, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 0, 0, 250, 251, 252, 253, 0, + 254, 255, 256, 764, 765, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 766, + 282, 767, 284, 285, 286, 287, 768, 288, 289, 290, + 291, 769, 770, 293, 771, 295, 296, 297, 0, 298, + 299, 0, 0, 772, 301, 302, 0, 0, 303, 304, + 305, 306, 307, 773, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 0, 319, 320, 774, 322, 323, + 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 775, 338, 339, 340, 341, 0, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 0, 354, 355, 356, 357, 358, 359, 776, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 0, 372, 373, 374, 375, 376, 777, 377, 378, + 379, 380, 381, 382, 383, 384, 778, 386, 0, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 779, 401, 0, 402, 403, 0, 404, 405, + 406, 407, 408, 409, 410, 0, 780, 781, 0, 0, + 413, 414, 782, 416, 783, 784, 418, 419, 785, 421, + 422, 423, 424, 425, 0, 0, 426, 427, 428, 429, + 430, 786, 0, 431, 432, 433, 434, 435, 436, 787, + 0, 438, 439, 440, 441, 442, 443, 0, 0, 444, + 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 788, 0, 0, 0, 0, 0, 0, + 789, 790, 0, 0, 0, 0, 0, 792, 0, 793, + 0, 0, 0, 0, 794, 0, 795, 796, 923, 730, + 537, 731, 732, 733, 734, 735, 0, 0, 0, 0, + 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, + 97, 98, 0, 99, 100, 101, 0, 0, 0, 0, + 736, 0, 0, 102, 103, 0, 104, 105, 106, 925, + 108, 109, 110, 111, 737, 926, 738, 739, 0, 116, + 117, 118, 119, 120, 121, 740, 741, 122, 123, 742, + 743, 126, 0, 127, 128, 129, 130, 744, 0, 927, + 0, 133, 134, 135, 136, 137, 928, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 929, 149, + 150, 151, 746, 747, 748, 930, 750, 751, 752, 153, + 154, 155, 156, 157, 158, 159, 753, 754, 162, 755, + 163, 0, 164, 165, 166, 167, 168, 169, 0, 170, + 171, 172, 173, 174, 0, 0, 175, 176, 756, 178, + 179, 0, 180, 181, 182, 0, 183, 184, 185, 0, + 186, 187, 188, 189, 757, 191, 192, 193, 194, 758, + 759, 196, 0, 197, 198, 760, 200, 0, 201, 0, + 202, 932, 0, 933, 205, 206, 207, 934, 209, 0, + 210, 0, 211, 212, 0, 213, 214, 215, 216, 217, + 218, 935, 220, 221, 222, 223, 0, 224, 225, 226, + 227, 228, 229, 0, 230, 936, 232, 233, 234, 235, + 236, 761, 762, 0, 763, 0, 240, 937, 938, 243, + 939, 245, 246, 247, 248, 249, 0, 0, 250, 940, + 252, 941, 0, 254, 255, 256, 764, 765, 257, 258, + 259, 260, 261, 942, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 766, 943, 767, 284, 285, 286, 287, 768, + 288, 289, 944, 291, 769, 770, 293, 771, 295, 296, + 297, 0, 298, 299, 0, 0, 772, 301, 302, 0, + 0, 303, 304, 945, 306, 946, 773, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 0, 319, 320, + 774, 322, 323, 324, 325, 326, 327, 0, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 775, 338, 339, + 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 0, 354, 355, 947, 357, + 358, 359, 776, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, + 777, 377, 378, 379, 380, 381, 948, 383, 384, 778, + 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 949, 399, 779, 401, 0, 402, 403, + 0, 404, 950, 406, 407, 408, 409, 410, 0, 780, + 781, 0, 0, 413, 414, 782, 416, 783, 784, 418, + 419, 951, 421, 422, 423, 424, 425, 0, 0, 426, + 427, 428, 429, 430, 786, 0, 431, 432, 433, 434, + 435, 436, 787, 0, 438, 953, 440, 441, 442, 443, + 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 788, 0, 0, 0, + 0, 0, 0, 789, 790, 0, 0, 0, 0, 0, + 792, 0, 793, 0, 0, 0, 0, 794, 0, 795, + 796, 90, 730, 537, 731, 732, 733, 734, 735, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 736, 0, 0, 102, 103, 0, 104, + 105, 106, 107, 108, 109, 110, 111, 737, 113, 738, + 739, 0, 116, 117, 118, 119, 120, 121, 740, 741, + 122, 123, 742, 743, 126, 0, 127, 128, 129, 130, + 744, 0, 745, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 148, 149, 150, 151, 746, 747, 748, 749, 750, + 751, 752, 153, 154, 155, 156, 157, 158, 159, 753, + 754, 162, 755, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 756, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 757, 191, 192, + 193, 194, 758, 759, 196, 0, 197, 198, 760, 200, + 0, 201, 0, 202, 203, 0, 204, 205, 206, 207, + 208, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 231, 232, + 233, 234, 235, 236, 761, 762, 0, 763, 0, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 0, + 0, 250, 251, 252, 253, 0, 254, 255, 256, 764, + 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 766, 282, 767, 284, 285, + 286, 287, 768, 288, 289, 290, 291, 769, 770, 293, + 771, 295, 296, 297, 0, 298, 299, 0, 0, 772, + 301, 302, 0, 0, 303, 304, 305, 306, 307, 773, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 774, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 775, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 356, 357, 358, 359, 776, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 777, 377, 378, 379, 380, 381, 382, + 383, 384, 778, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 779, 401, + 0, 402, 403, 0, 404, 405, 406, 407, 408, 409, + 410, 0, 780, 781, 0, 0, 413, 414, 782, 416, + 783, 784, 418, 419, 785, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 786, 0, 431, + 432, 433, 434, 435, 436, 787, 0, 438, 439, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 788, + 0, 0, 0, 0, 0, 0, 1341, 1342, 0, 0, + 0, 0, 0, 792, 0, 793, 0, 0, 0, 0, + 794, 0, 795, 796, 90, 1724, 537, 731, 732, 733, + 734, 735, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 99, + 100, 101, 0, 0, 0, 0, 736, 0, 0, 102, + 103, 0, 104, 105, 106, 107, 108, 109, 110, 111, + 737, 113, 738, 739, 0, 116, 117, 118, 119, 120, + 121, 740, 741, 122, 123, 742, 743, 126, 0, 127, + 128, 129, 130, 744, 0, 745, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 148, 149, 150, 151, 746, 747, + 748, 749, 750, 751, 752, 153, 154, 155, 156, 157, + 158, 159, 753, 754, 162, 755, 163, 0, 164, 165, + 166, 167, 168, 169, 0, 170, 171, 172, 173, 174, + 0, 0, 175, 176, 756, 178, 179, 0, 180, 181, + 182, 0, 183, 184, 185, 0, 186, 187, 188, 189, + 757, 191, 192, 193, 194, 758, 759, 196, 0, 197, + 198, 760, 200, 0, 201, 0, 202, 203, 0, 204, + 205, 206, 207, 208, 209, 0, 210, 0, 211, 212, + 0, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, + 230, 231, 232, 233, 234, 235, 236, 761, 762, 0, + 763, 0, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 0, 0, 250, 251, 252, 253, 0, 254, + 255, 256, 764, 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 761, 281, 762, - 283, 284, 285, 286, 0, 287, 288, 289, 290, 764, - 765, 292, 766, 294, 295, 296, 0, 297, 298, 0, - 0, 299, 300, 301, 0, 0, 302, 303, 304, 305, - 306, 768, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 0, 318, 319, 769, 321, 322, 323, 324, - 325, 326, 0, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 770, 337, 338, 339, 340, 0, 341, 342, + 273, 274, 275, 276, 277, 278, 279, 280, 766, 282, + 767, 284, 285, 286, 287, 768, 288, 289, 290, 291, + 769, 770, 293, 771, 295, 296, 297, 0, 298, 299, + 0, 0, 772, 301, 302, 0, 0, 303, 304, 305, + 306, 307, 773, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 0, 319, 320, 774, 322, 323, 324, + 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 775, 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 355, 356, 357, 358, 1707, 1708, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 0, - 371, 372, 373, 374, 375, 772, 376, 377, 378, 379, - 380, 381, 382, 383, 773, 385, 0, 386, 387, 388, + 353, 0, 354, 355, 356, 357, 358, 359, 776, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 0, 372, 373, 374, 375, 376, 777, 377, 378, 379, + 380, 381, 382, 383, 384, 778, 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 774, 0, 400, 401, 0, 402, 403, 404, 405, 406, - 407, 408, 0, 775, 776, 0, 0, 411, 412, 777, - 414, 778, 779, 416, 417, 780, 419, 420, 421, 422, - 423, 0, 0, 424, 425, 426, 427, 428, 781, 0, - 429, 430, 431, 432, 433, 434, 782, 0, 436, 437, - 438, 439, 440, 441, 0, 0, 442, 0, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 399, 779, 401, 0, 402, 403, 0, 404, 405, 406, + 407, 408, 409, 410, 0, 780, 781, 0, 0, 413, + 414, 782, 416, 783, 784, 418, 419, 785, 421, 422, + 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, + 786, 0, 431, 432, 433, 434, 435, 436, 787, 0, + 438, 439, 440, 441, 442, 443, 0, 0, 444, 0, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 0, 0, 0, 0, 0, 0, 0, 1709, 1710, 0, - 0, 0, 0, 0, 0, 0, 1573, 0, 0, 0, - 0, 0, 0, 790, 791, 89, 725, 535, 726, 727, - 728, 729, 730, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 0, 103, 104, 105, 106, 107, 108, 109, - 110, 732, 112, 733, 734, 0, 115, 116, 117, 118, - 119, 120, 735, 736, 121, 122, 737, 738, 125, 0, - 126, 127, 128, 129, 739, 0, 740, 0, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 0, 141, 142, - 143, 144, 145, 146, 0, 147, 148, 149, 150, 741, - 742, 743, 744, 745, 746, 747, 152, 153, 154, 155, - 156, 157, 158, 748, 749, 161, 0, 162, 0, 163, - 164, 165, 166, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 174, 175, 751, 177, 178, 0, 179, - 180, 181, 0, 182, 183, 184, 0, 185, 186, 187, - 188, 752, 190, 191, 192, 193, 753, 754, 195, 0, - 196, 197, 755, 199, 0, 200, 0, 201, 202, 0, - 203, 204, 205, 206, 207, 208, 0, 209, 0, 210, - 211, 0, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 0, 223, 224, 225, 226, 227, 228, - 0, 229, 230, 231, 232, 233, 234, 235, 756, 757, - 0, 758, 0, 239, 0, 241, 242, 243, 244, 245, - 246, 247, 248, 0, 0, 249, 250, 251, 252, 0, - 253, 254, 255, 759, 760, 256, 257, 258, 259, 260, + 464, 465, 788, 0, 0, 0, 0, 0, 0, 789, + 790, 0, 0, 0, 0, 0, 792, 0, 793, 0, + 0, 0, 0, 794, 0, 795, 796, 90, 730, 537, + 731, 732, 733, 734, 735, 0, 0, 0, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 99, 100, 101, 0, 0, 0, 0, 736, + 0, 0, 102, 103, 0, 104, 105, 106, 107, 108, + 109, 110, 111, 737, 113, 738, 739, 0, 116, 117, + 118, 119, 120, 121, 740, 741, 122, 123, 742, 743, + 126, 0, 127, 128, 129, 130, 744, 0, 745, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, + 142, 143, 144, 145, 146, 147, 0, 148, 149, 150, + 151, 746, 747, 748, 749, 750, 751, 752, 153, 154, + 155, 156, 157, 158, 159, 753, 754, 162, 755, 163, + 0, 164, 165, 166, 167, 168, 169, 0, 170, 171, + 172, 173, 174, 0, 0, 175, 176, 756, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 0, 186, + 187, 188, 189, 757, 191, 192, 193, 194, 758, 759, + 196, 0, 197, 198, 760, 200, 0, 201, 0, 202, + 203, 0, 204, 205, 206, 207, 208, 209, 0, 210, + 0, 211, 212, 0, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 0, 224, 225, 226, 227, + 228, 229, 0, 230, 231, 232, 233, 234, 235, 236, + 761, 762, 0, 763, 0, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 0, 0, 250, 251, 252, + 253, 0, 254, 255, 256, 764, 765, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 766, 282, 767, 284, 285, 286, 287, 768, 288, + 289, 290, 291, 769, 770, 293, 771, 295, 296, 297, + 0, 298, 299, 0, 0, 772, 301, 302, 0, 0, + 303, 304, 305, 306, 307, 773, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 0, 319, 320, 774, + 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 775, 338, 339, 340, + 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 0, 354, 355, 356, 357, 358, + 359, 776, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 0, 372, 373, 374, 375, 376, 777, + 377, 378, 379, 380, 381, 382, 383, 384, 778, 386, + 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 779, 401, 0, 402, 403, 0, + 404, 405, 406, 407, 408, 409, 410, 0, 780, 781, + 0, 0, 413, 414, 782, 416, 783, 784, 418, 419, + 785, 421, 422, 423, 424, 425, 0, 0, 426, 427, + 428, 429, 430, 786, 0, 431, 432, 433, 434, 435, + 436, 787, 0, 438, 439, 440, 441, 442, 443, 0, + 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 788, 0, 0, 0, 0, + 0, 0, 789, 790, 0, 0, 0, 0, 0, 792, + 0, 2593, 0, 0, 0, 0, 794, 0, 795, 796, + 90, 730, 537, 731, 732, 733, 734, 735, 0, 0, + 0, 0, 0, 0, 0, 0, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 99, 100, 101, 0, 0, + 0, 0, 736, 0, 0, 102, 103, 0, 104, 105, + 106, 107, 108, 109, 110, 2792, 737, 113, 738, 739, + 0, 116, 117, 118, 119, 120, 121, 740, 741, 122, + 123, 742, 743, 126, 0, 127, 128, 129, 130, 744, + 0, 745, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 148, 149, 150, 2793, 746, 747, 748, 749, 750, 751, + 752, 153, 154, 155, 156, 157, 158, 159, 753, 754, + 162, 755, 163, 0, 164, 165, 166, 167, 168, 169, + 0, 170, 171, 172, 173, 174, 0, 0, 175, 176, + 756, 178, 179, 0, 180, 181, 182, 0, 183, 184, + 185, 0, 186, 187, 188, 189, 757, 191, 192, 193, + 194, 758, 759, 196, 0, 197, 198, 760, 200, 0, + 201, 0, 202, 203, 0, 204, 205, 206, 207, 208, + 209, 0, 210, 0, 211, 212, 0, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 0, 224, + 225, 226, 227, 228, 229, 0, 230, 231, 232, 233, + 234, 235, 236, 761, 762, 0, 763, 0, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 0, 0, + 250, 251, 252, 253, 0, 254, 255, 256, 764, 765, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 766, 282, 767, 284, 285, 286, + 287, 768, 288, 289, 290, 291, 769, 770, 293, 771, + 295, 296, 297, 0, 298, 299, 0, 0, 772, 301, + 302, 0, 0, 303, 304, 305, 306, 307, 773, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 0, + 319, 320, 774, 322, 323, 324, 325, 326, 327, 0, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 775, + 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 0, 354, 355, + 356, 357, 358, 359, 776, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, + 375, 376, 777, 377, 378, 379, 380, 381, 382, 383, + 384, 778, 386, 0, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 779, 401, 0, + 402, 403, 0, 404, 405, 406, 407, 408, 409, 410, + 0, 780, 781, 0, 0, 413, 414, 782, 416, 783, + 784, 418, 419, 785, 421, 422, 2794, 424, 425, 0, + 0, 426, 427, 428, 429, 430, 786, 0, 431, 432, + 433, 434, 435, 436, 787, 0, 438, 439, 440, 441, + 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 788, 0, + 0, 0, 0, 0, 0, 789, 790, 0, 0, 0, + 0, 0, 792, 0, 793, 0, 0, 0, 0, 794, + 0, 795, 796, 90, 730, 537, 731, 732, 733, 734, + 735, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 0, 0, 0, 0, 736, 0, 0, 102, 103, + 0, 104, 105, 106, 107, 108, 109, 110, 111, 737, + 113, 738, 739, 0, 116, 117, 118, 119, 120, 121, + 740, 741, 122, 123, 742, 743, 126, 0, 127, 128, + 129, 130, 744, 0, 745, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 148, 149, 150, 2793, 746, 747, 748, + 749, 750, 751, 752, 153, 154, 155, 156, 157, 158, + 159, 753, 754, 162, 755, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 756, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 757, + 191, 192, 193, 194, 758, 759, 196, 0, 197, 198, + 760, 200, 0, 201, 0, 202, 203, 0, 204, 205, + 206, 207, 208, 209, 0, 210, 0, 211, 212, 0, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 231, 232, 233, 234, 235, 236, 761, 762, 0, 763, + 0, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 0, 0, 250, 251, 252, 253, 0, 254, 255, + 256, 764, 765, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 766, 282, 767, + 284, 285, 286, 287, 768, 288, 289, 290, 291, 769, + 770, 293, 771, 295, 296, 297, 0, 298, 299, 0, + 0, 772, 301, 302, 0, 0, 303, 304, 305, 306, + 307, 773, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 774, 322, 323, 324, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 775, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 356, 357, 358, 359, 776, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 376, 777, 377, 378, 379, 380, + 381, 382, 383, 384, 778, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 779, 401, 0, 402, 403, 0, 404, 405, 406, 407, + 408, 409, 410, 0, 780, 781, 0, 0, 413, 414, + 782, 416, 783, 784, 418, 419, 785, 421, 422, 2794, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 786, + 0, 431, 432, 433, 434, 435, 436, 787, 0, 438, + 439, 440, 441, 442, 443, 0, 0, 444, 0, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 788, 0, 0, 0, 0, 0, 0, 789, 790, + 0, 0, 0, 0, 0, 792, 0, 793, 0, 0, + 0, 0, 794, 0, 795, 796, 90, 730, 537, 731, + 732, 733, 734, 735, 0, 0, 0, 0, 0, 0, + 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, + 0, 99, 100, 101, 0, 0, 0, 0, 736, 0, + 0, 102, 103, 0, 104, 105, 106, 107, 108, 109, + 110, -1679, 737, 113, 738, 739, 0, 116, 117, 118, + 119, 120, 121, 740, 741, 122, 123, 742, 743, 126, + 0, 127, 128, 129, 130, 744, 0, 745, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 148, 149, 150, 2793, + 746, 747, 748, 749, 750, 751, 752, 153, 154, 155, + 156, 157, 158, 159, 753, 754, 162, 755, 163, 0, + 164, 165, 166, 167, 168, 169, 0, 170, 171, 172, + 173, 174, 0, 0, 175, 176, 756, 178, 179, 0, + 180, 181, 182, 0, 183, 184, 185, 0, 186, 187, + 188, 189, 757, 191, 192, 193, 194, 758, 759, 196, + 0, 197, 198, 760, 200, 0, 201, 0, 202, 203, + 0, 204, 205, 206, 207, -1679, 209, 0, 210, 0, + 211, 212, 0, 213, 214, 215, 216, 217, 218, -1679, + 220, 221, 222, 223, 0, 224, 225, 226, 227, 228, + 229, 0, 230, 231, 232, 233, 234, 235, 236, 761, + 762, 0, 763, 0, 240, 0, 0, 243, 244, 245, + 246, 247, 248, 249, 0, 0, 250, 251, 252, -1679, + 0, 254, 255, 256, 764, 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 761, - 281, 762, 283, 284, 285, 286, 0, 287, 288, 289, - 290, 764, 765, 292, 766, 294, 295, 296, 0, 297, - 298, 0, 0, 767, 300, 301, 0, 0, 302, 303, - 304, 305, 306, 768, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 0, 318, 319, 769, 321, 322, - 323, 324, 325, 326, 0, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 770, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 0, 371, 372, 373, 374, 375, 772, 376, 377, - 378, 379, 380, 381, 382, 383, 773, 385, 0, 386, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 766, 282, 767, 284, 285, 286, 287, 0, 288, 289, + 0, 291, 769, 770, 293, 771, 295, 296, 297, 0, + 298, 299, 0, 0, 772, 301, 302, 0, 0, 303, + 304, 305, 306, 307, 773, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 0, 319, 320, 774, 322, + 323, 324, 325, 326, 327, 0, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 775, 338, 339, 340, 341, + 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 0, 354, 355, 356, 357, 358, 359, + 776, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 0, 372, 373, 374, 375, 376, 777, 377, + 378, 379, 380, 381, -1679, 383, 384, 778, 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 774, 0, 400, 401, 0, 402, 403, 404, - 405, 406, 407, 408, 0, 775, 776, 0, 0, 411, - 412, 777, 414, 778, 779, 416, 417, 780, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 781, 0, 429, 430, 431, 432, 433, 434, 782, 0, - 436, 437, 438, 439, 440, 441, 0, 0, 442, 0, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 397, 398, 399, 779, 401, 0, 402, 403, 0, 404, + 405, 406, 407, 408, 409, 410, 0, 780, 781, 0, + 0, 413, 414, 782, 416, 783, 784, 418, 419, 785, + 421, 422, 2794, 424, 425, 0, 0, 426, 427, 428, + 429, 430, 786, 0, 431, 432, 433, 434, 435, 436, + 787, 0, 438, 439, 440, 441, 442, 443, 0, 0, + 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 0, 0, 0, 0, 0, 0, 0, 1571, - 1572, 0, 0, 0, 0, 0, 0, 0, 1573, 0, - 0, 0, 0, 0, 0, 790, 791, 89, 725, 535, - 726, 727, 728, 729, 730, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 98, 99, 100, 0, 0, 0, 0, 731, - 0, 0, 101, 102, 0, 103, 104, 105, 106, 107, - 108, 109, 0, 732, 112, 733, 734, 0, 115, 116, - 117, 118, 119, 120, 735, 736, 121, 122, 737, 738, - 125, 0, 126, 127, 128, 129, 739, 0, 740, 0, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 146, 0, 147, 148, 149, - 150, 741, 742, 743, 744, 745, 746, 747, 152, 153, - 154, 155, 156, 157, 158, 748, 749, 161, 750, 162, - 0, 163, 164, 165, 166, 167, 168, 0, 169, 170, - 171, 172, 173, 0, 0, 174, 175, 751, 177, 178, - 0, 179, 180, 181, 0, 182, 0, 184, 0, 185, - 186, 187, 188, 752, 190, 191, 192, 193, 753, 754, - 195, 0, 196, 197, 755, 199, 0, 200, 0, 201, - 202, 0, 203, 204, 205, 206, 0, 208, 0, 209, - 0, 210, 211, 0, 212, 213, 214, 215, 216, 217, - 0, 219, 220, 221, 222, 0, 223, 224, 225, 226, - 227, 228, 0, 229, 230, 231, 232, 233, 234, 235, - 756, 757, 0, 758, 0, 239, 0, 0, 242, 243, - 244, 245, 246, 247, 248, 0, 0, 249, 250, 251, - 0, 0, 253, 254, 255, 759, 760, 256, 257, 258, + 462, 463, 464, 465, -1679, 0, 0, 0, 0, 0, + 0, 789, 790, 0, 0, 0, 0, 0, 792, 0, + 793, 0, 0, 0, 0, 794, 0, 795, 796, 90, + 730, 537, 731, 732, 733, 734, 735, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 99, 100, 101, 0, 0, 0, + 0, 0, 0, 0, 102, 103, 0, 104, 105, 106, + 107, 108, 109, 110, 111, 737, 113, 738, 739, 0, + 116, 117, 118, 119, 120, 121, 740, 741, 122, 123, + 742, 743, 126, 0, 127, 128, 129, 130, 744, 0, + 745, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 148, + 149, 150, 151, 746, 747, 748, 749, 750, 751, 752, + 153, 154, 155, 156, 157, 158, 159, 753, 754, 162, + 0, 163, 0, 164, 165, 166, 167, 168, 169, 0, + 170, 171, 172, 173, 174, 0, 0, 175, 176, 756, + 178, 179, 0, 180, 181, 182, 0, 183, 184, 185, + 0, 186, 187, 188, 189, 757, 191, 192, 193, 194, + 758, 759, 196, 0, 197, 198, 760, 200, 0, 201, + 0, 202, 203, 0, 204, 205, 206, 207, 208, 209, + 0, 210, 0, 211, 212, 0, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 231, 232, 233, 234, + 235, 236, 761, 762, 0, 763, 0, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 0, 0, 250, + 251, 252, 253, 0, 254, 255, 256, 764, 765, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 766, 282, 767, 284, 285, 286, 287, + 0, 288, 289, 290, 291, 769, 770, 293, 771, 295, + 296, 297, 0, 298, 299, 0, 0, 772, 301, 302, + 0, 0, 303, 304, 305, 306, 307, 773, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 0, 319, + 320, 774, 322, 323, 324, 325, 326, 327, 0, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 775, 338, + 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 0, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, + 376, 777, 377, 378, 379, 380, 381, 382, 383, 384, + 778, 386, 0, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 779, 401, 0, 402, + 403, 0, 404, 405, 406, 407, 408, 409, 410, 0, + 780, 781, 0, 0, 413, 414, 782, 416, 783, 784, + 418, 419, 785, 421, 422, 423, 424, 425, 0, 0, + 426, 427, 428, 429, 430, 786, 0, 431, 432, 433, + 434, 435, 436, 787, 0, 438, 439, 440, 441, 442, + 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 0, 0, 0, + 0, 0, 0, 0, 1577, 1578, 0, 0, 90, 730, + 537, 731, 732, 1579, 734, 735, 0, 0, 0, 0, + 795, 796, 0, 0, 91, 92, 93, 94, 95, 96, + 97, 98, 0, 99, 100, 101, 0, 0, 0, 0, + 0, 0, 0, 102, 103, 0, 104, 105, 106, 107, + 108, 109, 110, 111, 737, 113, 738, 739, 0, 116, + 117, 118, 119, 120, 121, 740, 741, 122, 123, 742, + 743, 126, 0, 127, 128, 129, 130, 744, 0, 745, + 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 148, 149, + 150, 151, 746, 747, 748, 749, 750, 751, 752, 153, + 154, 155, 156, 157, 158, 159, 753, 754, 162, 0, + 163, 0, 164, 165, 166, 167, 168, 169, 0, 170, + 171, 172, 173, 174, 0, 0, 175, 176, 756, 178, + 179, 0, 180, 181, 182, 0, 183, 184, 185, 0, + 186, 187, 188, 189, 757, 191, 192, 193, 194, 758, + 759, 196, 0, 197, 198, 760, 200, 0, 201, 0, + 202, 203, 0, 204, 205, 206, 207, 208, 209, 0, + 210, 0, 211, 212, 0, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 0, 224, 225, 226, + 227, 228, 229, 0, 230, 231, 232, 233, 234, 235, + 236, 761, 762, 0, 763, 0, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 0, 0, 250, 251, + 252, 253, 0, 254, 255, 256, 764, 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 761, 281, 762, 283, 284, 285, 286, 0, 287, - 288, 0, 290, 764, 765, 292, 766, 294, 295, 296, - 0, 297, 298, 0, 0, 767, 300, 301, 0, 0, - 302, 303, 304, 305, 306, 768, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 0, 318, 319, 769, - 321, 322, 323, 324, 325, 326, 0, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 770, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 771, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 0, 371, 372, 373, 374, 375, 772, - 376, 377, 378, 379, 380, 0, 382, 383, 773, 385, - 0, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 774, 0, 400, 401, 0, 402, - 403, 404, 405, 406, 407, 408, 0, 775, 776, 0, - 0, 411, 412, 777, 414, 778, 779, 416, 417, 780, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 781, 0, 429, 430, 431, 432, 433, 434, - 782, 0, 436, 437, 438, 439, 440, 441, 0, 0, - 442, 0, 0, 443, 444, 445, 446, 447, 448, 449, + 279, 280, 766, 282, 767, 284, 285, 286, 287, 0, + 288, 289, 290, 291, 769, 770, 293, 771, 295, 296, + 297, 0, 298, 299, 0, 0, 300, 301, 302, 0, + 0, 303, 304, 305, 306, 307, 773, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 0, 319, 320, + 774, 322, 323, 324, 325, 326, 327, 0, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 775, 338, 339, + 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 0, 354, 355, 356, 357, + 358, 359, 1713, 1714, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, + 777, 377, 378, 379, 380, 381, 382, 383, 384, 778, + 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 779, 401, 0, 402, 403, + 0, 404, 405, 406, 407, 408, 409, 410, 0, 780, + 781, 0, 0, 413, 414, 782, 416, 783, 784, 418, + 419, 785, 421, 422, 423, 424, 425, 0, 0, 426, + 427, 428, 429, 430, 786, 0, 431, 432, 433, 434, + 435, 436, 787, 0, 438, 439, 440, 441, 442, 443, + 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 0, 0, 0, 0, 0, 0, - 0, 784, 785, 488, 0, 0, 0, 0, 787, 0, - 788, 0, 0, 0, 0, 789, 0, 790, 791, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 98, 99, - 100, 0, 0, 0, 0, 0, 2224, 0, 101, 102, - 0, 103, 104, 105, 0, 107, 108, 109, 110, 111, - 0, 113, 114, 0, 115, 116, 117, 118, 119, 120, - 0, 0, 121, 122, 123, 124, 125, 0, 126, 127, - 128, 129, 130, 0, 0, 0, 132, 133, 134, 135, - 136, 0, 138, 139, 140, 0, 141, 142, 143, 144, - 145, 146, 0, -580, 148, 149, 150, 0, 0, 0, - 0, 0, 0, 0, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 0, 162, 0, 163, 164, 165, - 166, 167, 168, 0, 169, 170, 171, 172, 173, 0, - 0, 174, 175, 176, 177, 178, 0, 179, 180, 181, - 0, 182, 183, 184, 0, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 0, 195, 0, 196, 197, - 198, 199, 0, 200, 0, 201, 0, 0, -580, 204, - 205, 206, 0, 208, 0, 209, 0, 210, 211, 0, - 212, 213, 214, 215, 216, 217, 0, 219, 220, 221, - 222, 0, 223, 224, 225, 226, 227, 228, 0, 229, - -580, 231, 232, 233, 234, 235, 236, 237, 0, 238, - 0, 239, 0, 0, 242, -580, 244, 245, 246, 247, - 248, 0, 0, 249, -580, 251, 0, 0, 253, 254, - 255, 0, 0, 256, 257, 258, 259, 260, 490, 262, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 0, 1715, 1716, 0, 0, 0, 0, 0, + 0, 0, 1579, 0, 0, 0, 0, 0, 0, 795, + 796, 90, 730, 537, 731, 732, 733, 734, 735, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 0, 104, + 105, 106, 107, 108, 109, 110, 111, 737, 113, 738, + 739, 0, 116, 117, 118, 119, 120, 121, 740, 741, + 122, 123, 742, 743, 126, 0, 127, 128, 129, 130, + 744, 0, 745, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 148, 149, 150, 151, 746, 747, 748, 749, 750, + 751, 752, 153, 154, 155, 156, 157, 158, 159, 753, + 754, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 756, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 757, 191, 192, + 193, 194, 758, 759, 196, 0, 197, 198, 760, 200, + 0, 201, 0, 202, 203, 0, 204, 205, 206, 207, + 208, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 231, 232, + 233, 234, 235, 236, 761, 762, 0, 763, 0, 240, + 0, 242, 243, 244, 245, 246, 247, 248, 249, 0, + 0, 250, 251, 252, 253, 0, 254, 255, 256, 764, + 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 766, 282, 767, 284, 285, + 286, 287, 0, 288, 289, 290, 291, 769, 770, 293, + 771, 295, 296, 297, 0, 298, 299, 0, 0, 772, + 301, 302, 0, 0, 303, 304, 305, 306, 307, 773, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 774, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 775, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 777, 377, 378, 379, 380, 381, 382, + 383, 384, 778, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 779, 401, + 0, 402, 403, 0, 404, 405, 406, 407, 408, 409, + 410, 0, 780, 781, 0, 0, 413, 414, 782, 416, + 783, 784, 418, 419, 785, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 786, 0, 431, + 432, 433, 434, 435, 436, 787, 0, 438, 439, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 0, + 0, 0, 0, 0, 0, 0, 1577, 1578, 0, 0, + 0, 0, 0, 0, 0, 1579, 0, 0, 0, 0, + 0, 0, 795, 796, 90, 730, 537, 731, 732, 733, + 734, 735, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 99, + 100, 101, 0, 0, 0, 0, 736, 0, 0, 102, + 103, 0, 104, 105, 106, 107, 108, 109, 110, 0, + 737, 113, 738, 739, 0, 116, 117, 118, 119, 120, + 121, 740, 741, 122, 123, 742, 743, 126, 0, 127, + 128, 129, 130, 744, 0, 745, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 148, 149, 150, 151, 746, 747, + 748, 749, 750, 751, 752, 153, 154, 155, 156, 157, + 158, 159, 753, 754, 162, 755, 163, 0, 164, 165, + 166, 167, 168, 169, 0, 170, 171, 172, 173, 174, + 0, 0, 175, 176, 756, 178, 179, 0, 180, 181, + 182, 0, 183, 0, 185, 0, 186, 187, 188, 189, + 757, 191, 192, 193, 194, 758, 759, 196, 0, 197, + 198, 760, 200, 0, 201, 0, 202, 203, 0, 204, + 205, 206, 207, 0, 209, 0, 210, 0, 211, 212, + 0, 213, 214, 215, 216, 217, 218, 0, 220, 221, + 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, + 230, 231, 232, 233, 234, 235, 236, 761, 762, 0, + 763, 0, 240, 0, 0, 243, 244, 245, 246, 247, + 248, 249, 0, 0, 250, 251, 252, 0, 0, 254, + 255, 256, 764, 765, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, -580, 282, - 283, 284, 285, 286, 0, 287, 288, 0, 290, 0, - 291, 292, 293, 294, 295, 296, 0, 297, 298, 0, - 0, 299, 300, 301, 0, 0, 302, 303, 0, 305, - 0, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 0, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 0, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, + 273, 274, 275, 276, 277, 278, 279, 280, 766, 282, + 767, 284, 285, 286, 287, 0, 288, 289, 0, 291, + 769, 770, 293, 771, 295, 296, 297, 0, 298, 299, + 0, 0, 772, 301, 302, 0, 0, 303, 304, 305, + 306, 307, 773, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 0, 319, 320, 774, 322, 323, 324, + 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 775, 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 0, 353, 354, -580, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 0, - 371, 372, 373, 374, 375, 0, 376, 377, 378, 379, - 380, 0, 382, 383, 384, 385, 0, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 492, 398, - 399, 0, 400, 401, 0, 402, -580, 404, 405, 406, - 407, 408, 0, 409, 410, 0, 0, 411, 412, 413, - 414, 415, 0, 416, 417, 418, 419, 420, 421, 422, - 423, 0, 0, 424, 425, 426, 427, 428, 0, 0, - 429, 430, 431, 432, 433, 434, 435, 0, 436, 0, - 438, 439, 440, 441, 0, 0, 442, 0, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 353, 0, 354, 355, 356, 357, 358, 359, 776, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 0, 372, 373, 374, 375, 376, 777, 377, 378, 379, + 380, 381, 0, 383, 384, 778, 386, 0, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 779, 401, 0, 402, 403, 0, 404, 405, 406, + 407, 408, 409, 410, 0, 780, 781, 0, 0, 413, + 414, 782, 416, 783, 784, 418, 419, 785, 421, 422, + 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, + 786, 0, 431, 432, 433, 434, 435, 436, 787, 0, + 438, 439, 440, 441, 442, 443, 0, 0, 444, 0, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 0, 0, 89, 0, 560, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 849, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 0, 115, 116, 117, 118, 119, 120, 0, - 736, 121, 122, 123, 124, 125, 0, 126, 127, 128, - 129, 739, 0, 740, 0, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 0, 141, 142, 143, 144, 145, - 146, 0, 147, 148, 149, 150, 741, 742, 743, 744, - 745, 746, 747, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 0, 162, 0, 163, 164, 165, 166, - 167, 168, 0, 169, 170, 171, 172, 173, 0, 0, - 174, 175, 176, 177, 178, 0, 179, 180, 181, 0, - 182, 183, 184, 0, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 753, 0, 195, 0, 196, 197, 198, - 199, 0, 200, 0, 201, 202, 0, 203, 204, 205, - 206, 207, 208, 0, 209, 0, 210, 211, 0, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 0, 223, 224, 225, 226, 227, 228, 0, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 0, 238, 0, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 1978, 0, 249, 250, 251, 252, 0, 253, 254, 255, - 759, 760, 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, 0, 287, 288, 289, 290, 0, 765, - 292, 293, 294, 295, 296, 0, 297, 298, 0, 561, - 299, 300, 301, 0, 0, 302, 303, 304, 305, 306, - 768, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 0, 318, 319, 769, 321, 322, 323, 324, 325, - 326, 0, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 0, - 353, 354, 355, 356, 357, 358, 359, 1979, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 25, 371, - 372, 373, 374, 375, 772, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 0, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 774, - 0, 400, 401, 29, 402, 403, 404, 405, 406, 407, - 408, 0, 409, 410, 0, 0, 411, 412, 777, 414, - 778, 0, 416, 417, 780, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 781, 0, 429, - 430, 431, 432, 433, 598, 435, 0, 436, 437, 438, - 439, 440, 441, 0, 0, 442, 0, 32, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 0, - 89, 33, 560, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1980, 90, 91, 92, 93, - 94, 95, 96, 97, 0, 98, 99, 100, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 0, 103, 104, + 464, 465, 0, 0, 0, 0, 0, 0, 0, 789, + 790, 490, 0, 0, 0, 0, 792, 0, 793, 0, + 0, 0, 0, 794, 0, 795, 796, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 2230, 0, 102, 103, 0, 104, + 105, 106, 0, 108, 109, 110, 111, 112, 0, 114, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 131, 0, 0, 0, 133, 134, 135, 136, 137, 0, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, -493, 149, 150, 151, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 0, 0, -493, 205, 206, 207, + 0, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 0, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, -493, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 0, 0, 243, -493, 245, 246, 247, 248, 249, 0, + 0, 250, -493, 252, 0, 0, 254, 255, 256, 0, + 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, -493, 283, 284, 285, + 286, 287, 0, 288, 289, 0, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 0, 300, + 301, 302, 0, 0, 303, 304, 0, 306, 0, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, -493, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 0, 377, 378, 379, 380, 381, 0, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 494, 399, 400, 401, + 0, 402, 403, 0, 404, -493, 406, 407, 408, 409, + 410, 0, 411, 412, 0, 0, 413, 414, 415, 416, + 417, 0, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 0, 0, 431, + 432, 433, 434, 435, 436, 437, 0, 438, 0, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 0, + 0, 90, 0, 567, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 855, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 0, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 0, 115, 116, 117, 118, 119, 120, 0, 736, 121, - 122, 123, 124, 125, 0, 126, 127, 128, 129, 739, - 0, 740, 0, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 0, 141, 142, 143, 144, 145, 146, 0, - 147, 148, 149, 150, 741, 742, 743, 744, 745, 746, - 747, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 0, 162, 0, 163, 164, 165, 166, 167, 168, - 0, 169, 170, 171, 172, 173, 0, 0, 174, 175, - 176, 177, 178, 0, 179, 180, 181, 0, 182, 183, - 184, 0, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 753, 0, 195, 0, 196, 197, 198, 199, 0, - 200, 0, 201, 202, 0, 203, 204, 205, 206, 207, - 208, 0, 209, 0, 210, 211, 0, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 0, 223, - 224, 225, 226, 227, 228, 0, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 0, 238, 0, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 1978, 0, - 249, 250, 251, 252, 0, 253, 254, 255, 759, 760, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 741, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 744, 0, 745, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 148, 149, 150, 151, 746, 747, 748, 749, 750, + 751, 752, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 758, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 203, 0, 204, 205, 206, 207, + 208, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 1984, + 0, 250, 251, 252, 253, 0, 254, 255, 256, 764, + 765, 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, 0, 287, 288, 289, 290, 0, 765, 292, 293, - 294, 295, 296, 0, 297, 298, 0, 561, 299, 300, - 301, 0, 0, 302, 303, 304, 305, 306, 768, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 0, - 318, 319, 769, 321, 322, 323, 324, 325, 326, 0, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, - 355, 356, 357, 358, 359, 1979, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 0, 371, 372, 373, - 374, 375, 772, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 0, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 774, 0, 400, - 401, 0, 402, 403, 404, 405, 406, 407, 408, 0, - 409, 410, 0, 0, 411, 412, 777, 414, 778, 0, - 416, 417, 780, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 781, 0, 429, 430, 431, - 432, 433, 434, 435, 0, 436, 437, 438, 439, 440, - 441, 0, 0, 442, 0, 0, 443, 444, 445, 446, + 286, 287, 0, 288, 289, 290, 291, 0, 770, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 568, 300, + 301, 302, 0, 0, 303, 304, 305, 306, 307, 773, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 774, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 356, 357, 358, 359, 360, 1985, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 25, 372, 373, + 374, 375, 376, 777, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 779, 401, + 0, 402, 403, 30, 404, 405, 406, 407, 408, 409, + 410, 0, 411, 412, 0, 0, 413, 414, 782, 416, + 783, 0, 418, 419, 785, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 786, 0, 431, + 432, 433, 434, 435, 563, 437, 0, 438, 439, 440, + 441, 442, 443, 0, 0, 444, 0, 33, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 0, 89, 0, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 0, + 90, 34, 567, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1986, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 99, 100, 101, 0, 0, + 0, 0, 0, 0, 0, 102, 103, 0, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 0, 116, 117, 118, 119, 120, 121, 0, 741, 122, + 123, 124, 125, 126, 0, 127, 128, 129, 130, 744, + 0, 745, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 148, 149, 150, 151, 746, 747, 748, 749, 750, 751, + 752, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 0, 163, 0, 164, 165, 166, 167, 168, 169, + 0, 170, 171, 172, 173, 174, 0, 0, 175, 176, + 177, 178, 179, 0, 180, 181, 182, 0, 183, 184, + 185, 0, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 758, 0, 196, 0, 197, 198, 199, 200, 0, + 201, 0, 202, 203, 0, 204, 205, 206, 207, 208, + 209, 0, 210, 0, 211, 212, 0, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 0, 224, + 225, 226, 227, 228, 229, 0, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 0, 239, 0, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 1984, 0, + 250, 251, 252, 253, 0, 254, 255, 256, 764, 765, + 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, 0, 288, 289, 290, 291, 0, 770, 293, 294, + 295, 296, 297, 0, 298, 299, 0, 568, 300, 301, + 302, 0, 0, 303, 304, 305, 306, 307, 773, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 0, + 319, 320, 774, 322, 323, 324, 325, 326, 327, 0, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 0, 354, 355, + 356, 357, 358, 359, 360, 1985, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, + 375, 376, 777, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 0, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 779, 401, 0, + 402, 403, 0, 404, 405, 406, 407, 408, 409, 410, + 0, 411, 412, 0, 0, 413, 414, 782, 416, 783, + 0, 418, 419, 785, 421, 422, 423, 424, 425, 0, + 0, 426, 427, 428, 429, 430, 786, 0, 431, 432, + 433, 434, 435, 436, 437, 0, 438, 439, 440, 441, + 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1980, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 98, 99, 100, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 0, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 0, 115, - 116, 117, 118, 119, 120, 0, 736, 121, 122, 123, - 124, 125, 0, 126, 127, 128, 129, 739, 0, 740, - 0, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 0, 141, 142, 143, 144, 145, 146, 0, 147, 148, - 149, 150, 741, 742, 743, 744, 745, 746, 747, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 0, - 162, 0, 163, 164, 165, 166, 167, 168, 0, 169, - 170, 171, 172, 173, 0, 0, 174, 175, 176, 177, - 178, 0, 179, 180, 181, 0, 182, 183, 184, 0, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 753, - 0, 195, 0, 196, 197, 198, 199, 0, 200, 0, - 201, 202, 0, 203, 204, 205, 206, 207, 208, 0, - 209, 0, 210, 211, 0, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 0, 223, 224, 225, - 226, 227, 228, 0, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 0, 238, 0, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 0, 0, 249, 250, - 251, 252, 0, 253, 254, 255, 759, 760, 256, 257, + 0, 0, 0, 0, 1986, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 99, 100, 101, 0, 0, 0, + 0, 0, 0, 0, 102, 103, 0, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 0, + 116, 117, 118, 119, 120, 121, 0, 741, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 130, 744, 0, + 745, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 148, + 149, 150, 151, 746, 747, 748, 749, 750, 751, 752, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 0, 163, 0, 164, 165, 166, 167, 168, 169, 0, + 170, 171, 172, 173, 174, 0, 0, 175, 176, 177, + 178, 179, 0, 180, 181, 182, 0, 183, 184, 185, + 0, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 758, 0, 196, 0, 197, 198, 199, 200, 0, 201, + 0, 202, 203, 0, 204, 205, 206, 207, 208, 209, + 0, 210, 0, 211, 212, 0, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 0, 239, 0, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 0, 0, 250, + 251, 252, 253, 0, 254, 255, 256, 764, 765, 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, 0, - 287, 288, 289, 290, 0, 765, 292, 293, 294, 295, - 296, 0, 297, 298, 0, 0, 299, 300, 301, 0, - 0, 302, 303, 304, 305, 306, 768, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, - 769, 321, 322, 323, 324, 325, 326, 0, 327, 328, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 0, 288, 289, 290, 291, 0, 770, 293, 294, 295, + 296, 297, 0, 298, 299, 0, 0, 300, 301, 302, + 0, 0, 303, 304, 305, 306, 307, 773, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 0, 319, + 320, 774, 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, - 357, 358, 359, 1979, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 0, 371, 372, 373, 374, 375, - 772, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 0, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 774, 0, 400, 401, 0, - 402, 403, 404, 405, 406, 407, 408, 0, 409, 410, - 0, 0, 411, 412, 777, 414, 778, 0, 416, 417, - 780, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 781, 0, 429, 430, 431, 432, 433, - 434, 435, 0, 436, 437, 438, 439, 440, 441, 0, - 0, 442, 0, 0, 443, 444, 445, 446, 447, 448, + 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 0, 354, 355, 356, + 357, 358, 359, 360, 1985, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, + 376, 777, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 0, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 779, 401, 0, 402, + 403, 0, 404, 405, 406, 407, 408, 409, 410, 0, + 411, 412, 0, 0, 413, 414, 782, 416, 783, 0, + 418, 419, 785, 421, 422, 423, 424, 425, 0, 0, + 426, 427, 428, 429, 430, 786, 0, 431, 432, 433, + 434, 435, 436, 437, 0, 438, 439, 440, 441, 442, + 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 0, 89, 0, 0, 0, + 459, 460, 461, 462, 463, 464, 465, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 34, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 98, 99, 100, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 0, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 0, 115, 116, 117, - 118, 119, 120, 0, 736, 121, 122, 123, 124, 125, - 0, 126, 127, 128, 129, 739, 0, 740, 0, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 0, 141, - 142, 143, 144, 145, 146, 0, 147, 148, 149, 150, - 741, 742, 743, 744, 745, 746, 747, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 0, 162, 0, - 163, 164, 165, 166, 167, 168, 0, 169, 170, 171, - 172, 173, 0, 0, 174, 175, 176, 177, 178, 0, - 179, 180, 181, 0, 182, 183, 184, 0, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 753, 0, 195, - 0, 196, 197, 198, 199, 0, 200, 0, 201, 202, - 0, 203, 204, 205, 206, 207, 208, 0, 209, 0, - 210, 211, 0, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 0, 223, 224, 225, 226, 227, - 228, 0, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 0, 238, 0, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 0, 0, 249, 250, 251, 252, - 0, 253, 254, 255, 759, 760, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 0, 0, 0, 35, 91, 92, 93, 94, 95, 96, + 97, 98, 0, 99, 100, 101, 0, 0, 0, 0, + 0, 0, 0, 102, 103, 0, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 0, 116, + 117, 118, 119, 120, 121, 0, 741, 122, 123, 124, + 125, 126, 0, 127, 128, 129, 130, 744, 0, 745, + 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 148, 149, + 150, 151, 746, 747, 748, 749, 750, 751, 752, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 0, + 163, 0, 164, 165, 166, 167, 168, 169, 0, 170, + 171, 172, 173, 174, 0, 0, 175, 176, 177, 178, + 179, 0, 180, 181, 182, 0, 183, 184, 185, 0, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 758, + 0, 196, 0, 197, 198, 199, 200, 0, 201, 0, + 202, 203, 0, 204, 205, 206, 207, 208, 209, 0, + 210, 0, 211, 212, 0, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 0, 224, 225, 226, + 227, 228, 229, 0, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 0, 239, 0, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 0, 0, 250, 251, + 252, 253, 0, 254, 255, 256, 764, 765, 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, 0, + 288, 289, 290, 291, 0, 770, 293, 294, 295, 296, + 297, 0, 298, 299, 0, 0, 300, 301, 302, 0, + 0, 303, 304, 305, 306, 307, 773, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 0, 319, 320, + 774, 322, 323, 324, 325, 326, 327, 0, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 0, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 0, 372, 373, 374, 375, 376, + 777, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 779, 401, 0, 402, 403, + 0, 404, 405, 406, 407, 408, 409, 410, 0, 411, + 412, 0, 0, 413, 414, 782, 416, 783, 0, 418, + 419, 785, 421, 422, 423, 424, 425, 0, 0, 426, + 427, 428, 429, 430, 786, 0, 431, 432, 433, 434, + 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, + 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 0, 660, 1089, 537, + 0, 0, 0, 734, 0, 0, 0, 0, 0, 0, + 0, 0, 2604, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 99, 100, 101, 0, 0, 0, 0, 0, + 0, 0, 102, 103, 0, 104, 105, 106, 0, 108, + 109, 110, 661, 662, 0, 663, 664, 0, 116, 117, + 118, 119, 120, 121, 0, 0, 122, 123, 665, 666, + 126, 0, 127, 128, 129, 130, 667, 0, 0, 0, + 133, 134, 135, 136, 137, 0, 139, 140, 141, 0, + 142, 143, 144, 145, 146, 147, 0, 0, 149, 150, + 151, 0, 0, 0, 0, 0, 0, 0, 153, 154, + 155, 156, 157, 158, 159, 668, 669, 162, 0, 163, + 0, 164, 165, 166, 167, 168, 169, 0, 170, 171, + 172, 173, 174, 0, 0, 175, 176, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 0, 186, + 187, 188, 189, 670, 191, 192, 193, 194, 671, 1090, + 196, 0, 197, 198, 672, 200, 0, 201, 0, 202, + 0, 0, 0, 205, 206, 207, 0, 209, 0, 210, + 0, 673, 212, 0, 213, 214, 215, 216, 217, 218, + 0, 220, 221, 222, 223, 0, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 674, 233, 234, 235, 236, + 675, 676, 0, 677, 0, 240, 0, 0, 243, 0, + 245, 246, 247, 248, 249, 0, 0, 250, 0, 252, + 0, 0, 254, 255, 256, 0, 0, 257, 258, 259, + 260, 261, 678, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 0, 287, 288, - 289, 290, 0, 765, 292, 293, 294, 295, 296, 0, - 297, 298, 0, 0, 299, 300, 301, 0, 0, 302, - 303, 304, 305, 306, 768, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 0, 318, 319, 769, 321, - 322, 323, 324, 325, 326, 0, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 0, 371, 372, 373, 374, 375, 772, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 0, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 774, 0, 400, 401, 0, 402, 403, - 404, 405, 406, 407, 408, 0, 409, 410, 0, 0, - 411, 412, 777, 414, 778, 0, 416, 417, 780, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 781, 0, 429, 430, 431, 432, 433, 434, 435, - 0, 436, 437, 438, 439, 440, 441, 0, 0, 442, - 0, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 0, 655, 1083, 535, 0, 0, 0, - 729, 0, 0, 0, 0, 0, 0, 0, 0, 2598, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 98, - 99, 100, 0, 0, 0, 0, 0, 0, 0, 101, - 102, 0, 103, 104, 105, 0, 107, 108, 109, 656, - 657, 0, 658, 659, 0, 115, 116, 117, 118, 119, - 120, 0, 0, 121, 122, 660, 661, 125, 0, 126, - 127, 128, 129, 662, 0, 0, 0, 132, 133, 134, - 135, 136, 0, 138, 139, 140, 0, 141, 142, 143, - 144, 145, 146, 0, 0, 148, 149, 150, 0, 0, - 0, 0, 0, 0, 0, 152, 153, 154, 155, 156, - 157, 158, 663, 664, 161, 0, 162, 0, 163, 164, - 165, 166, 167, 168, 0, 169, 170, 171, 172, 173, - 0, 0, 174, 175, 176, 177, 178, 0, 179, 180, - 181, 0, 182, 183, 184, 0, 185, 186, 187, 188, - 665, 190, 191, 192, 193, 666, 1084, 195, 0, 196, - 197, 667, 199, 0, 200, 0, 201, 0, 0, 0, - 204, 205, 206, 0, 208, 0, 209, 0, 668, 211, - 0, 212, 213, 214, 215, 216, 217, 0, 219, 220, - 221, 222, 0, 223, 224, 225, 226, 227, 228, 0, - 229, 0, 669, 232, 233, 234, 235, 670, 671, 0, - 672, 0, 239, 0, 0, 242, 0, 244, 245, 246, - 247, 248, 0, 0, 249, 0, 251, 0, 0, 253, - 254, 255, 0, 0, 256, 257, 258, 259, 260, 673, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 674, 0, - 675, 283, 284, 285, 676, 0, 287, 288, 0, 290, - 0, 677, 292, 678, 294, 295, 296, 0, 297, 298, - 1085, 0, 299, 300, 301, 0, 0, 302, 679, 0, - 305, 0, 680, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 0, 318, 319, 681, 321, 322, 682, - 324, 325, 326, 0, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 683, 337, 338, 339, 340, 0, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 0, 353, 354, 0, 356, 357, 358, 684, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 0, 371, 372, 373, 374, 375, 0, 376, 685, 378, - 379, 380, 0, 382, 383, 686, 385, 0, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 687, - 398, 688, 0, 400, 401, 0, 402, 0, 404, 405, - 406, 407, 408, 0, 689, 690, 0, 0, 411, 412, - 691, 414, 692, 1086, 416, 417, 693, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 0, - 0, 429, 430, 431, 432, 433, 1032, 695, 0, 436, - 0, 438, 439, 440, 441, 0, 0, 442, 0, 0, - 443, 444, 445, 446, 447, 448, 696, 697, 698, 699, - 700, 701, 702, 703, 704, 705, 706, 460, 461, 462, - 463, 0, 655, 0, 0, 0, 0, 0, 1087, 1088, - 1843, 0, 0, 0, 0, 0, 0, 1844, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 98, 99, 100, - 3, 4, 0, 0, 0, 0, 0, 101, 102, 0, - 103, 104, 105, 0, 107, 108, 109, 656, 657, 0, - 658, 659, 0, 115, 116, 117, 118, 119, 120, 0, - 0, 121, 122, 660, 661, 125, 0, 126, 127, 128, - 129, 662, 0, 0, 0, 132, 133, 134, 135, 136, - 0, 138, 139, 140, 0, 141, 142, 143, 144, 145, - 146, 0, 0, 148, 149, 150, 0, 0, 0, 0, - 0, 0, 0, 152, 153, 154, 155, 156, 157, 158, - 663, 664, 161, 0, 162, 0, 163, 164, 165, 166, - 167, 168, 0, 169, 170, 171, 172, 173, 0, 0, - 174, 175, 176, 177, 178, 0, 179, 180, 181, 0, - 182, 183, 184, 0, 185, 186, 187, 188, 665, 190, - 191, 192, 193, 666, 0, 195, 0, 196, 197, 667, - 199, 0, 200, 0, 201, 0, 0, 0, 204, 205, - 206, 0, 208, 0, 209, 0, 668, 211, 0, 212, - 213, 214, 215, 216, 217, 0, 219, 220, 221, 222, - 0, 223, 224, 225, 226, 227, 228, 0, 229, 0, - 669, 232, 233, 234, 235, 670, 671, 0, 672, 0, - 239, 0, 0, 242, 0, 244, 245, 246, 247, 248, - 0, 0, 249, 0, 251, 0, 0, 253, 254, 255, - 0, 0, 256, 257, 258, 259, 260, 673, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 674, 0, 675, 283, - 284, 285, 676, 0, 287, 288, 0, 290, 0, 677, - 292, 678, 294, 295, 296, 0, 297, 298, 0, 0, - 299, 300, 301, 0, 0, 302, 679, 0, 305, 0, - 680, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 0, 318, 319, 681, 321, 322, 682, 324, 325, - 326, 0, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 683, 337, 338, 339, 340, 0, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 0, - 353, 354, 0, 356, 357, 358, 684, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 25, 371, - 372, 373, 374, 375, 0, 376, 685, 378, 379, 380, - 0, 382, 383, 686, 385, 0, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 687, 398, 688, - 0, 400, 401, 29, 402, 0, 404, 405, 406, 407, - 408, 0, 689, 690, 0, 0, 411, 412, 691, 414, - 692, 0, 416, 417, 693, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 0, 0, 429, - 430, 431, 432, 433, 694, 695, 0, 436, 0, 438, - 439, 440, 441, 0, 0, 442, 0, 32, 443, 444, - 445, 446, 447, 448, 696, 697, 698, 699, 700, 701, - 702, 703, 704, 705, 706, 460, 461, 462, 463, 0, - 488, 33, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 34, 90, 91, 92, 93, - 94, 95, 96, 97, 595, 98, 99, 100, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 0, 103, 104, - 105, 0, 107, 108, 109, 110, 111, 0, 113, 114, - 0, 115, 116, 117, 118, 119, 120, 0, 0, 121, - 122, 123, 124, 125, 0, 126, 127, 128, 129, 130, - 0, 0, 0, 132, 133, 134, 135, 136, 0, 138, - 139, 140, 0, 141, 142, 143, 144, 145, 146, 0, - 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, - 0, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 0, 162, 0, 163, 164, 165, 166, 167, 168, - 0, 169, 170, 171, 172, 173, 0, 0, 174, 175, - 176, 177, 178, 0, 179, 180, 181, 0, 182, 183, - 184, 0, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 0, 195, 0, 196, 197, 198, 199, 0, - 200, 0, 201, 0, 0, 0, 204, 205, 206, 0, - 208, 0, 209, 0, 210, 211, 0, 212, 213, 214, - 215, 216, 217, 0, 219, 220, 221, 222, 0, 223, - 224, 225, 226, 227, 228, 0, 229, 0, 231, 232, - 233, 234, 235, 236, 237, 0, 238, 0, 239, 0, - 0, 242, 0, 244, 245, 246, 247, 248, 0, 0, - 249, 0, 251, 0, 0, 253, 254, 255, 0, 0, - 256, 257, 258, 259, 260, 490, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 0, 282, 283, 284, 285, - 286, 0, 287, 288, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 0, 0, 299, 300, - 301, 0, 0, 302, 303, 0, 305, 0, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 0, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, - 0, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 25, 371, 372, 373, - 374, 375, 0, 376, 377, 378, 379, 380, 0, 382, - 383, 384, 385, 0, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 492, 398, 399, 0, 400, - 401, 29, 402, 0, 404, 405, 406, 407, 408, 0, - 596, 410, 0, 0, 597, 412, 413, 414, 415, 0, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 0, 0, 429, 430, 431, - 432, 433, 598, 435, 0, 436, 0, 438, 439, 440, - 441, 0, 0, 442, 0, 32, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 0, 488, 33, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 34, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 98, 99, 100, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 0, 103, 104, 105, 0, - 107, 108, 109, 110, 111, 0, 113, 114, 0, 115, - 116, 117, 118, 119, 120, 0, 0, 121, 122, 123, - 124, 125, 0, 126, 127, 128, 129, 130, 0, 0, - 0, 132, 133, 134, 135, 136, 0, 138, 139, 140, - 0, 141, 142, 143, 144, 145, 146, 0, 0, 148, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 0, - 162, 0, 163, 164, 165, 166, 167, 168, 0, 169, - 170, 171, 172, 173, 0, 0, 174, 175, 176, 177, - 178, 0, 179, 180, 181, 0, 182, 183, 184, 0, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 0, 195, 0, 196, 197, 198, 199, 0, 200, 0, - 201, 0, 0, 0, 204, 205, 206, 0, 208, 0, - 209, 0, 210, 211, 0, 212, 213, 214, 215, 216, - 217, 0, 219, 220, 221, 222, 0, 223, 224, 225, - 226, 227, 228, 0, 229, 0, 231, 232, 233, 234, - 235, 236, 237, 0, 238, 0, 239, 0, 0, 242, - 0, 244, 245, 246, 247, 248, 0, 0, 249, 0, - 251, 0, 0, 253, 254, 255, 0, 0, 256, 257, - 258, 259, 260, 490, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 0, 282, 283, 284, 285, 286, 0, - 287, 288, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 0, 0, 299, 300, 301, 0, - 0, 302, 303, 0, 305, 0, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 0, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 0, 353, 354, 0, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 25, 371, 372, 373, 374, 375, - 0, 376, 377, 378, 379, 380, 0, 382, 383, 384, - 385, 0, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 492, 398, 399, 0, 400, 401, 29, - 402, 0, 404, 405, 406, 407, 408, 0, 409, 410, - 0, 0, 411, 412, 413, 414, 415, 0, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 0, 0, 429, 430, 431, 432, 433, - 598, 435, 0, 436, 0, 438, 439, 440, 441, 0, - 0, 442, 0, 32, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 0, 488, 33, 560, 0, + 280, 679, 0, 680, 284, 285, 286, 681, 0, 288, + 289, 0, 291, 0, 682, 293, 683, 295, 296, 297, + 0, 298, 299, 1091, 0, 300, 301, 302, 0, 0, + 303, 684, 0, 306, 0, 685, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 0, 319, 320, 686, + 322, 323, 687, 325, 326, 327, 0, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 688, 338, 339, 340, + 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, + 359, 689, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 0, 372, 373, 374, 375, 376, 0, + 377, 690, 379, 380, 381, 0, 383, 384, 691, 386, + 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 692, 399, 693, 401, 0, 402, 403, 0, + 404, 0, 406, 407, 408, 409, 410, 0, 694, 695, + 0, 0, 413, 414, 696, 416, 697, 1092, 418, 419, + 698, 421, 422, 423, 424, 425, 0, 0, 426, 427, + 428, 429, 430, 0, 0, 431, 432, 433, 434, 435, + 1038, 700, 0, 438, 0, 440, 441, 442, 443, 0, + 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, + 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, + 711, 462, 463, 464, 465, 0, 660, 0, 0, 0, + 0, 0, 1093, 1094, 1847, 0, 0, 0, 0, 0, + 0, 1848, 91, 92, 93, 94, 95, 96, 97, 98, + 0, 99, 100, 101, 3, 4, 0, 0, 0, 0, + 0, 102, 103, 0, 104, 105, 106, 0, 108, 109, + 110, 661, 662, 0, 663, 664, 0, 116, 117, 118, + 119, 120, 121, 0, 0, 122, 123, 665, 666, 126, + 0, 127, 128, 129, 130, 667, 0, 0, 0, 133, + 134, 135, 136, 137, 0, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 0, 149, 150, 151, + 0, 0, 0, 0, 0, 0, 0, 153, 154, 155, + 156, 157, 158, 159, 668, 669, 162, 0, 163, 0, + 164, 165, 166, 167, 168, 169, 0, 170, 171, 172, + 173, 174, 0, 0, 175, 176, 177, 178, 179, 0, + 180, 181, 182, 0, 183, 184, 185, 0, 186, 187, + 188, 189, 670, 191, 192, 193, 194, 671, 0, 196, + 0, 197, 198, 672, 200, 0, 201, 0, 202, 0, + 0, 0, 205, 206, 207, 0, 209, 0, 210, 0, + 673, 212, 0, 213, 214, 215, 216, 217, 218, 0, + 220, 221, 222, 223, 0, 224, 225, 226, 227, 228, + 229, 0, 230, 0, 674, 233, 234, 235, 236, 675, + 676, 0, 677, 0, 240, 0, 0, 243, 0, 245, + 246, 247, 248, 249, 0, 0, 250, 0, 252, 0, + 0, 254, 255, 256, 0, 0, 257, 258, 259, 260, + 261, 678, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 679, 0, 680, 284, 285, 286, 681, 0, 288, 289, + 0, 291, 0, 682, 293, 683, 295, 296, 297, 0, + 298, 299, 0, 0, 300, 301, 302, 0, 0, 303, + 684, 0, 306, 0, 685, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 0, 319, 320, 686, 322, + 323, 687, 325, 326, 327, 0, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 688, 338, 339, 340, 341, + 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 0, 354, 355, 0, 357, 358, 359, + 689, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 25, 372, 373, 374, 375, 376, 0, 377, + 690, 379, 380, 381, 0, 383, 384, 691, 386, 0, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 692, 399, 693, 401, 0, 402, 403, 30, 404, + 0, 406, 407, 408, 409, 410, 0, 694, 695, 0, + 0, 413, 414, 696, 416, 697, 0, 418, 419, 698, + 421, 422, 423, 424, 425, 0, 0, 426, 427, 428, + 429, 430, 0, 0, 431, 432, 433, 434, 435, 699, + 700, 0, 438, 0, 440, 441, 442, 443, 0, 0, + 444, 0, 33, 445, 446, 447, 448, 449, 450, 701, + 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, + 462, 463, 464, 465, 0, 490, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 34, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 98, 99, 100, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 0, 103, 104, 105, 0, 107, 108, - 109, 110, 111, 0, 113, 114, 0, 115, 116, 117, - 118, 119, 120, 0, 0, 121, 122, 123, 124, 125, - 0, 126, 127, 128, 129, 130, 0, 0, 0, 132, - 133, 134, 135, 136, 0, 138, 139, 140, 0, 141, - 142, 143, 144, 145, 146, 0, 0, 148, 149, 150, - 0, 0, 0, 0, 0, 0, 0, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 0, 162, 0, - 163, 164, 165, 166, 167, 168, 0, 169, 170, 171, - 172, 173, 0, 0, 174, 175, 176, 177, 178, 0, - 179, 180, 181, 0, 182, 183, 184, 0, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 0, 195, - 0, 196, 197, 198, 199, 0, 200, 0, 201, 0, - 0, 0, 204, 205, 206, 0, 208, 0, 209, 0, - 210, 211, 0, 212, 213, 214, 215, 216, 217, 0, - 219, 220, 221, 222, 0, 223, 224, 225, 226, 227, - 228, 0, 229, 0, 231, 232, 233, 234, 235, 236, - 237, 0, 238, 0, 239, 0, 0, 242, 0, 244, - 245, 246, 247, 248, 0, 0, 249, 0, 251, 0, - 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, - 260, 490, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 0, 282, 283, 284, 285, 286, 0, 287, 288, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 0, 0, 299, 300, 301, 0, 0, 302, - 303, 0, 305, 0, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 0, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 0, 353, 354, 0, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 0, 371, 372, 373, 374, 375, 0, 376, - 377, 378, 379, 380, 0, 382, 383, 384, 385, 0, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 492, 398, 399, 0, 400, 401, 0, 402, 0, - 404, 405, 406, 407, 408, 0, 409, 410, 0, 0, - 411, 412, 413, 414, 415, 0, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 0, 0, 429, 430, 431, 432, 433, 434, 435, - 0, 436, 0, 438, 439, 440, 441, 0, 0, 442, - 0, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 0, 488, 0, 560, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 98, - 99, 100, 0, 0, 0, 0, 0, 0, 0, 101, - 102, 0, 103, 104, 105, 0, 107, 108, 109, 110, - 111, 0, 113, 114, 0, 115, 116, 117, 118, 119, - 120, 0, 0, 121, 122, 123, 124, 125, 0, 126, - 127, 128, 129, 130, 0, 0, 0, 132, 133, 134, - 135, 136, 0, 138, 139, 140, 0, 141, 142, 143, - 144, 145, 146, 0, 0, 148, 149, 150, 0, 0, - 0, 0, 0, 0, 0, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 0, 162, 0, 163, 164, - 165, 166, 167, 168, 0, 169, 170, 171, 172, 173, - 0, 0, 174, 175, 176, 177, 178, 0, 179, 180, - 181, 0, 182, 183, 184, 0, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 0, 195, 0, 196, - 197, 198, 199, 0, 200, 0, 201, 0, 0, 0, - 204, 205, 206, 0, 208, 0, 209, 0, 210, 211, - 0, 212, 213, 214, 215, 216, 217, 0, 219, 220, - 221, 222, 0, 223, 224, 225, 226, 227, 228, 0, - 229, 0, 231, 232, 233, 234, 235, 236, 237, 0, - 238, 0, 239, 0, 0, 242, 0, 244, 245, 246, - 247, 248, 0, 0, 249, 0, 251, 0, 0, 253, - 254, 255, 0, 0, 256, 257, 258, 259, 260, 490, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 0, - 282, 283, 284, 285, 286, 0, 287, 288, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 0, 0, 299, 300, 301, 0, 0, 302, 303, 0, - 305, 0, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 0, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 0, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, + 35, 91, 92, 93, 94, 95, 96, 97, 98, 601, + 99, 100, 101, 0, 0, 0, 0, 0, 0, 0, + 102, 103, 0, 104, 105, 106, 0, 108, 109, 110, + 111, 112, 0, 114, 115, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 122, 123, 124, 125, 126, 0, + 127, 128, 129, 130, 131, 0, 0, 0, 133, 134, + 135, 136, 137, 0, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 0, 149, 150, 151, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 0, 163, 0, 164, + 165, 166, 167, 168, 169, 0, 170, 171, 172, 173, + 174, 0, 0, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 0, 183, 184, 185, 0, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, + 197, 198, 199, 200, 0, 201, 0, 202, 0, 0, + 0, 205, 206, 207, 0, 209, 0, 210, 0, 211, + 212, 0, 213, 214, 215, 216, 217, 218, 0, 220, + 221, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 232, 233, 234, 235, 236, 237, 238, + 0, 239, 0, 240, 0, 0, 243, 0, 245, 246, + 247, 248, 249, 0, 0, 250, 0, 252, 0, 0, + 254, 255, 256, 0, 0, 257, 258, 259, 260, 261, + 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 0, 283, 284, 285, 286, 287, 0, 288, 289, 0, + 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, + 299, 0, 0, 300, 301, 302, 0, 0, 303, 304, + 0, 306, 0, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 0, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 0, 353, 354, 0, 356, 357, 358, 359, 360, + 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 0, 371, 372, 373, 374, 375, 0, 376, 377, 378, - 379, 380, 0, 382, 383, 384, 385, 0, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 492, - 398, 399, 0, 400, 401, 0, 402, 0, 404, 405, - 406, 407, 408, 0, 409, 410, 0, 0, 411, 412, - 413, 414, 415, 0, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 0, - 0, 429, 430, 431, 432, 433, 434, 435, 0, 436, - 0, 438, 439, 440, 441, 0, 0, 442, 0, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 371, 25, 372, 373, 374, 375, 376, 0, 377, 378, + 379, 380, 381, 0, 383, 384, 385, 386, 0, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 494, 399, 400, 401, 0, 402, 403, 30, 404, 0, + 406, 407, 408, 409, 410, 0, 602, 412, 0, 0, + 603, 414, 415, 416, 417, 0, 418, 419, 420, 421, + 422, 423, 424, 425, 0, 0, 426, 427, 428, 429, + 430, 0, 0, 431, 432, 433, 434, 435, 563, 437, + 0, 438, 0, 440, 441, 442, 443, 0, 0, 444, + 0, 33, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 0, 488, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2446, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, - 103, 104, 105, 0, 107, 108, 109, 110, 111, 0, - 113, 114, 0, 115, 116, 117, 118, 119, 120, 0, - 0, 121, 122, 123, 124, 125, 0, 126, 127, 128, - 129, 130, 0, 0, 0, 132, 133, 134, 135, 136, - 0, 138, 139, 140, 0, 141, 142, 143, 144, 145, - 146, 0, 0, 148, 149, 150, 0, 0, 0, 0, - 0, 0, 0, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 0, 162, 0, 163, 164, 165, 166, - 167, 168, 0, 169, 170, 171, 172, 173, 0, 0, - 174, 175, 176, 177, 178, 0, 179, 180, 181, 0, - 182, 183, 184, 0, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 0, 195, 0, 196, 197, 198, - 199, 0, 200, 0, 201, 0, 0, 0, 204, 205, - 206, 0, 208, 0, 209, 0, 210, 211, 0, 212, - 213, 214, 215, 216, 217, 0, 219, 220, 221, 222, - 0, 223, 224, 225, 226, 227, 228, 0, 229, 0, - 231, 232, 233, 234, 235, 236, 237, 0, 238, 0, - 239, 0, 0, 242, 0, 244, 245, 246, 247, 248, - 0, 0, 249, 0, 251, 0, 0, 253, 254, 255, - 0, 0, 256, 257, 258, 259, 260, 490, 262, 263, + 463, 464, 465, 0, 490, 34, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 99, + 100, 101, 0, 0, 0, 0, 0, 0, 0, 102, + 103, 0, 104, 105, 106, 0, 108, 109, 110, 111, + 112, 0, 114, 115, 0, 116, 117, 118, 119, 120, + 121, 0, 0, 122, 123, 124, 125, 126, 0, 127, + 128, 129, 130, 131, 0, 0, 0, 133, 134, 135, + 136, 137, 0, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 0, 149, 150, 151, 0, 0, + 0, 0, 0, 0, 0, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 0, 163, 0, 164, 165, + 166, 167, 168, 169, 0, 170, 171, 172, 173, 174, + 0, 0, 175, 176, 177, 178, 179, 0, 180, 181, + 182, 0, 183, 184, 185, 0, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 0, 196, 0, 197, + 198, 199, 200, 0, 201, 0, 202, 0, 0, 0, + 205, 206, 207, 0, 209, 0, 210, 0, 211, 212, + 0, 213, 214, 215, 216, 217, 218, 0, 220, 221, + 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, + 230, 0, 232, 233, 234, 235, 236, 237, 238, 0, + 239, 0, 240, 0, 0, 243, 0, 245, 246, 247, + 248, 249, 0, 0, 250, 0, 252, 0, 0, 254, + 255, 256, 0, 0, 257, 258, 259, 260, 261, 492, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 0, + 283, 284, 285, 286, 287, 0, 288, 289, 0, 291, + 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, + 0, 0, 300, 301, 302, 0, 0, 303, 304, 0, + 306, 0, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 0, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 0, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 0, 354, 355, 0, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 25, 372, 373, 374, 375, 376, 0, 377, 378, 379, + 380, 381, 0, 383, 384, 385, 386, 0, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 494, + 399, 400, 401, 0, 402, 403, 30, 404, 0, 406, + 407, 408, 409, 410, 0, 411, 412, 0, 0, 413, + 414, 415, 416, 417, 0, 418, 419, 420, 421, 422, + 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, + 0, 0, 431, 432, 433, 434, 435, 563, 437, 0, + 438, 0, 440, 441, 442, 443, 0, 0, 444, 0, + 33, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 0, 490, 34, 567, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 0, 0, 0, 0, 0, 0, 0, 102, 103, + 0, 104, 105, 106, 0, 108, 109, 110, 111, 112, + 0, 114, 115, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 130, 131, 0, 0, 0, 133, 134, 135, 136, + 137, 0, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 0, 149, 150, 151, 0, 0, 0, + 0, 0, 0, 0, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 0, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, + 199, 200, 0, 201, 0, 202, 0, 0, 0, 205, + 206, 207, 0, 209, 0, 210, 0, 211, 212, 0, + 213, 214, 215, 216, 217, 218, 0, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 232, 233, 234, 235, 236, 237, 238, 0, 239, + 0, 240, 0, 0, 243, 0, 245, 246, 247, 248, + 249, 0, 0, 250, 0, 252, 0, 0, 254, 255, + 256, 0, 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 0, 282, 283, - 284, 285, 286, 0, 287, 288, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 0, 0, - 299, 300, 301, 0, 0, 302, 303, 0, 305, 0, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 0, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 0, - 353, 354, 0, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 0, 371, - 372, 373, 374, 375, 0, 376, 377, 378, 379, 380, - 0, 382, 383, 384, 385, 0, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 492, 398, 399, - 0, 400, 401, 0, 402, 0, 404, 405, 406, 407, - 408, 0, 409, 410, 0, 0, 411, 412, 413, 414, - 415, 0, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 0, 0, 429, - 430, 431, 432, 433, 434, 435, 0, 436, 0, 438, - 439, 440, 441, 0, 0, 442, 0, 0, 443, 444, + 274, 275, 276, 277, 278, 279, 280, 281, 0, 283, + 284, 285, 286, 287, 0, 288, 289, 0, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 298, 299, 0, + 0, 300, 301, 302, 0, 0, 303, 304, 0, 306, + 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, + 381, 0, 383, 384, 385, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 494, 399, + 400, 401, 0, 402, 403, 0, 404, 0, 406, 407, + 408, 409, 410, 0, 411, 412, 0, 0, 413, 414, + 415, 416, 417, 0, 418, 419, 420, 421, 422, 423, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 0, + 0, 431, 432, 433, 434, 435, 436, 437, 0, 438, + 0, 440, 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 0, - 488, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1697, 90, 91, 92, 93, - 94, 95, 96, 97, 0, 98, 99, 100, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 0, 103, 104, - 105, 0, 107, 108, 109, 110, 111, 0, 113, 114, - 0, 115, 116, 117, 118, 119, 120, 0, 0, 121, - 122, 123, 124, 125, 0, 126, 127, 128, 129, 130, - 0, 0, 0, 132, 133, 134, 135, 136, 0, 138, - 139, 140, 0, 141, 142, 143, 144, 145, 146, 0, - 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, - 0, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 0, 162, 0, 163, 164, 165, 166, 167, 168, - 0, 169, 170, 171, 172, 173, 0, 0, 174, 175, - 176, 177, 178, 0, 179, 180, 181, 0, 182, 183, - 184, 0, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 0, 195, 0, 196, 197, 198, 199, 0, - 200, 0, 201, 0, 0, 0, 204, 205, 206, 0, - 208, 0, 209, 0, 210, 211, 0, 212, 213, 214, - 215, 216, 217, 0, 219, 220, 221, 222, 0, 223, - 224, 225, 226, 227, 228, 0, 229, 0, 231, 232, - 233, 234, 235, 236, 237, 0, 238, 0, 239, 0, - 0, 242, 0, 244, 245, 246, 247, 248, 0, 0, - 249, 0, 251, 0, 0, 253, 254, 255, 0, 0, - 256, 257, 258, 259, 260, 490, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 0, 282, 283, 284, 285, - 286, 0, 287, 288, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 0, 0, 299, 300, - 301, 0, 0, 302, 303, 0, 305, 0, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 0, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, - 0, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 0, 371, 372, 373, - 374, 375, 0, 376, 377, 378, 379, 380, 0, 382, - 383, 384, 385, 0, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 492, 398, 399, 0, 400, - 401, 0, 402, 0, 404, 405, 406, 407, 408, 0, - 409, 410, 0, 0, 411, 412, 413, 414, 415, 0, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 0, 0, 429, 430, 431, - 432, 433, 434, 435, 0, 436, 0, 438, 439, 440, - 441, 0, 0, 442, 0, 0, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 0, 0, 0, - 0, 2309, 1083, 535, 0, 0, 1553, 729, 0, 0, - 0, 0, 0, 2208, 1554, 1555, 1556, 90, 91, 92, - 93, 94, 95, 96, 97, 960, 98, 99, 100, 961, - 962, 963, 964, 965, 966, 967, 101, 102, 968, 103, - 104, 105, 2310, 107, 108, 109, 0, 1108, 2311, 1110, - 1111, 969, 115, 116, 117, 118, 119, 120, 970, 971, - 121, 122, 1112, 1113, 125, 972, 126, 127, 128, 129, - 0, 973, 2312, 974, 132, 133, 134, 135, 136, 2313, - 138, 139, 140, 975, 141, 142, 143, 144, 145, 146, - 976, 2314, 148, 149, 150, 977, 978, 979, 2315, 980, - 981, 982, 152, 153, 154, 155, 156, 157, 158, 1118, - 1119, 161, 983, 162, 984, 163, 164, 165, 166, 167, - 168, 985, 169, 170, 171, 172, 173, 986, 987, 174, - 175, 751, 177, 178, 988, 179, 180, 181, 989, 182, - 183, 184, 990, 185, 186, 187, 188, 0, 190, 191, - 192, 193, 0, 991, 195, 992, 196, 197, 1120, 199, - 993, 200, 994, 201, 2316, 995, 2317, 204, 205, 206, - 2318, 208, 996, 209, 997, 0, 211, 998, 212, 213, - 214, 215, 216, 217, 2319, 219, 220, 221, 222, 999, - 223, 224, 225, 226, 227, 228, 1000, 229, 2320, 0, - 232, 233, 234, 235, 1126, 1127, 1001, 1128, 1002, 239, - 2321, 2322, 242, 2323, 244, 245, 246, 247, 248, 1003, - 1004, 249, 2324, 251, 2325, 1005, 253, 254, 255, 1006, - 1007, 256, 257, 258, 259, 260, 2326, 262, 263, 264, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 0, 490, 0, 567, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 836, 91, 92, + 93, 94, 95, 96, 97, 98, 0, 99, 100, 101, + 0, 0, 0, 0, 0, 0, 0, 102, 103, 0, + 104, 105, 106, 0, 108, 109, 110, 111, 112, 0, + 114, 115, 0, 116, 117, 118, 119, 120, 121, 0, + 0, 122, 123, 124, 125, 126, 0, 127, 128, 129, + 130, 131, 0, 0, 0, 133, 134, 135, 136, 137, + 0, 139, 140, 141, 0, 142, 143, 144, 145, 146, + 147, 0, 0, 149, 150, 151, 0, 0, 0, 0, + 0, 0, 0, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 0, 163, 0, 164, 165, 166, 167, + 168, 169, 0, 170, 171, 172, 173, 174, 0, 0, + 175, 176, 177, 178, 179, 0, 180, 181, 182, 0, + 183, 184, 185, 0, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, + 200, 0, 201, 0, 202, 0, 0, 0, 205, 206, + 207, 0, 209, 0, 210, 0, 211, 212, 0, 213, + 214, 215, 216, 217, 218, 0, 220, 221, 222, 223, + 0, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 232, 233, 234, 235, 236, 237, 238, 0, 239, 0, + 240, 0, 0, 243, 0, 245, 246, 247, 248, 249, + 0, 0, 250, 0, 252, 0, 0, 254, 255, 256, + 0, 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 1135, 2327, 1137, 283, 284, - 285, 2328, 1008, 287, 288, 2329, 290, 1009, 0, 292, - 1139, 294, 295, 296, 1010, 297, 298, 1011, 1012, 2330, - 300, 301, 1013, 1014, 302, 0, 2331, 305, 2332, 0, + 275, 276, 277, 278, 279, 280, 281, 0, 283, 284, + 285, 286, 287, 0, 288, 289, 0, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 298, 299, 0, 0, + 300, 301, 302, 0, 0, 303, 304, 0, 306, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 1015, 318, 319, 0, 321, 322, 0, 324, 325, 326, - 1016, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 1142, 337, 338, 339, 340, 1017, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 1018, 353, - 354, 2333, 356, 357, 358, 1144, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 1019, 371, 372, - 373, 374, 375, 1020, 376, 2334, 378, 379, 380, 2335, - 382, 383, 1147, 385, 1021, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 2336, 398, 0, 1022, - 400, 401, 1023, 402, 2337, 404, 405, 406, 407, 408, - 1024, 1150, 1151, 1025, 1026, 411, 412, 0, 414, 0, - 1027, 416, 417, 2338, 419, 420, 421, 422, 423, 1028, - 1029, 424, 425, 426, 427, 428, 1030, 1031, 429, 430, - 431, 432, 433, 0, 1153, 1033, 436, 2339, 438, 439, - 440, 441, 1034, 1035, 442, 1036, 1037, 443, 444, 445, - 446, 447, 448, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 460, 461, 462, 463, 0, 488, - 0, 1557, 1558, 1559, 1553, 2340, 2341, 1562, 1563, 1564, - 1565, 0, 1554, 1555, 1556, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 98, 99, 100, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 0, 103, 104, 105, - 0, 107, 108, 109, 110, 111, 0, 113, 114, 0, - 115, 116, 117, 118, 119, 120, 0, 0, 121, 122, - 123, 124, 125, 0, 126, 127, 128, 129, 130, 0, - 0, 0, 132, 133, 134, 135, 136, 0, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 146, 0, 0, - 148, 149, 150, 0, 0, 0, 0, 0, 0, 0, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 0, 162, 0, 163, 164, 165, 166, 167, 168, 0, - 169, 170, 171, 172, 173, 0, 0, 174, 175, 176, - 177, 178, 0, 179, 180, 181, 0, 182, 183, 184, - 0, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 0, 195, 0, 196, 197, 198, 199, 0, 200, - 0, 201, 0, 0, 0, 204, 205, 206, 0, 208, - 0, 209, 0, 210, 211, 0, 212, 213, 214, 215, - 216, 217, 0, 219, 220, 221, 222, 0, 223, 224, - 225, 226, 227, 228, 0, 229, 0, 231, 232, 233, - 234, 235, 236, 237, 0, 238, 0, 239, 0, 0, - 242, 0, 244, 245, 246, 247, 248, 0, 0, 249, - 0, 251, 0, 0, 253, 254, 255, 0, 0, 256, - 257, 258, 259, 260, 490, 262, 263, 264, 265, 266, + 318, 0, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 0, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, 341, 0, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 0, + 354, 355, 0, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, + 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, + 0, 383, 384, 385, 386, 0, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 494, 399, 400, + 401, 0, 402, 403, 0, 404, 0, 406, 407, 408, + 409, 410, 0, 411, 412, 0, 0, 413, 414, 415, + 416, 417, 0, 418, 419, 420, 421, 422, 423, 424, + 425, 0, 0, 426, 427, 428, 429, 430, 0, 0, + 431, 432, 433, 434, 435, 436, 437, 0, 438, 0, + 440, 441, 442, 443, 0, 0, 444, 0, 0, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 0, 490, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2452, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 0, 104, + 105, 106, 0, 108, 109, 110, 111, 112, 0, 114, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 131, 0, 0, 0, 133, 134, 135, 136, 137, 0, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 0, 149, 150, 151, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 0, 0, 0, 205, 206, 207, + 0, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 0, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 0, 0, 243, 0, 245, 246, 247, 248, 249, 0, + 0, 250, 0, 252, 0, 0, 254, 255, 256, 0, + 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 0, 283, 284, 285, + 286, 287, 0, 288, 289, 0, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 0, 300, + 301, 302, 0, 0, 303, 304, 0, 306, 0, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 0, 377, 378, 379, 380, 381, 0, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 494, 399, 400, 401, + 0, 402, 403, 0, 404, 0, 406, 407, 408, 409, + 410, 0, 411, 412, 0, 0, 413, 414, 415, 416, + 417, 0, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 0, 0, 431, + 432, 433, 434, 435, 436, 437, 0, 438, 0, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 0, + 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1703, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 99, 100, 101, 0, 0, + 0, 0, 0, 0, 0, 102, 103, 0, 104, 105, + 106, 0, 108, 109, 110, 111, 112, 0, 114, 115, + 0, 116, 117, 118, 119, 120, 121, 0, 0, 122, + 123, 124, 125, 126, 0, 127, 128, 129, 130, 131, + 0, 0, 0, 133, 134, 135, 136, 137, 0, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 0, 149, 150, 151, 0, 0, 0, 0, 0, 0, + 0, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 0, 163, 0, 164, 165, 166, 167, 168, 169, + 0, 170, 171, 172, 173, 174, 0, 0, 175, 176, + 177, 178, 179, 0, 180, 181, 182, 0, 183, 184, + 185, 0, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 0, 196, 0, 197, 198, 199, 200, 0, + 201, 0, 202, 0, 0, 0, 205, 206, 207, 0, + 209, 0, 210, 0, 211, 212, 0, 213, 214, 215, + 216, 217, 218, 0, 220, 221, 222, 223, 0, 224, + 225, 226, 227, 228, 229, 0, 230, 0, 232, 233, + 234, 235, 236, 237, 238, 0, 239, 0, 240, 0, + 0, 243, 0, 245, 246, 247, 248, 249, 0, 0, + 250, 0, 252, 0, 0, 254, 255, 256, 0, 0, + 257, 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 0, 282, 283, 284, 285, 286, - 0, 287, 288, 0, 290, 0, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 0, 0, 299, 300, 301, - 0, 0, 302, 303, 0, 305, 0, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 0, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 0, 327, + 277, 278, 279, 280, 281, 0, 283, 284, 285, 286, + 287, 0, 288, 289, 0, 291, 0, 292, 293, 294, + 295, 296, 297, 0, 298, 299, 0, 0, 300, 301, + 302, 0, 0, 303, 304, 0, 306, 0, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 0, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 0, 353, 354, 0, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, - 375, 0, 376, 377, 378, 379, 380, 0, 382, 383, - 384, 385, 0, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 492, 398, 399, 0, 400, 401, - 0, 402, 0, 404, 405, 406, 407, 408, 0, 409, - 410, 0, 0, 411, 412, 413, 414, 415, 0, 416, - 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, - 425, 426, 427, 428, 0, 0, 429, 430, 431, 432, - 433, 434, 435, 0, 436, 0, 438, 439, 440, 441, - 0, 0, 442, 0, 0, 443, 444, 445, 446, 447, + 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 0, 354, 355, + 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, + 375, 376, 0, 377, 378, 379, 380, 381, 0, 383, + 384, 385, 386, 0, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 494, 399, 400, 401, 0, + 402, 403, 0, 404, 0, 406, 407, 408, 409, 410, + 0, 411, 412, 0, 0, 413, 414, 415, 416, 417, + 0, 418, 419, 420, 421, 422, 423, 424, 425, 0, + 0, 426, 427, 428, 429, 430, 0, 0, 431, 432, + 433, 434, 435, 436, 437, 0, 438, 0, 440, 441, + 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 0, 0, 0, 1557, - 1558, 1559, 0, 1560, 1561, 1562, 1563, 1564, 1565, 1240, - 0, 0, 1241, 0, 0, 0, 0, 1242, 1243, 1244, - 0, 0, 0, 0, 0, 0, 0, 1240, 0, 0, - 1241, 0, 0, 0, 1245, 1242, 1243, 1244, 0, 0, - 0, 0, 1247, 0, 0, 1240, 0, 0, 1241, 1248, - 0, 0, 1245, 1242, 1243, 1244, 0, 0, 0, 0, - 1247, 0, 0, 0, 0, 0, 0, 1248, 0, 0, - 1245, 0, 0, 1240, 1249, 0, 1241, 0, 1247, 0, - 0, 1242, 1243, 1244, 0, 1248, 0, 0, 0, 0, - 0, 1240, 1249, 0, 1241, 0, 0, 0, 1245, 1242, - 1243, 1244, 0, 0, 0, 0, 1247, 0, 0, 1240, - 1249, 0, 1241, 1248, 0, 0, 1245, 1242, 1243, 1244, - 0, 0, 0, 0, 1247, 0, 0, 0, 0, 0, - 0, 1248, 0, 0, 1245, 0, 0, 0, 1249, 0, - 0, 0, 1247, 0, 0, 0, 0, 0, 0, 1248, - 0, 0, 0, 0, 0, 0, 1249, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1250, 1249, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1251, 0, 0, - 0, 1250, 1252, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1251, 0, 0, 0, 1250, - 1252, 0, 0, 1253, 1254, 0, 0, 0, 0, 0, - 0, 0, 0, 1251, 0, 0, 0, 1255, 1252, 0, - 0, 1253, 1254, 0, 0, 0, 0, 1250, 0, 0, - 0, 0, 0, 0, 0, 1255, 0, 0, 0, 1253, - 1254, 1251, 0, 0, 0, 1250, 1252, 0, 0, 0, - 0, 0, 0, 1255, 0, 1256, 0, 0, 1257, 1251, - 0, 0, 0, 1250, 1252, 0, 0, 1253, 1254, 0, - 0, 0, 1258, 1256, 0, 1259, 1257, 1251, 0, 0, - 0, 1255, 1252, 0, 0, 1253, 1254, 0, 0, 0, - 1258, 1256, 0, 1259, 1257, 0, 0, 0, 0, 1255, - 0, 0, 0, 1253, 1254, 0, 0, 0, 1258, 0, - 0, 1259, 0, 0, 0, 0, 0, 1255, 0, 1256, - 0, 0, 1257, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1258, 1256, 0, 1259, - 1257, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1258, 1256, 0, 1259, 1257, 0, - 0, 0, 1260, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1258, 0, 0, 1259, 0, 0, 0, 0, - 1260, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1260, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1240, 0, 0, 1241, 0, 0, 0, 0, 1242, 1243, - 1244, 0, 0, 0, 0, 0, 1260, 0, 0, 0, - 0, 0, 0, 0, 0, 1245, 0, 0, 0, 0, - 0, 0, 0, 1247, 1260, 0, 0, 0, 0, 0, - 1248, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1261, 1260, 0, 1262, 1263, 1264, 0, 1265, 1266, - 1267, 1268, 1269, 1270, 0, 1249, 0, 0, 2186, 1261, - 0, 0, 1262, 1263, 1264, 0, 1265, 1266, 1267, 1268, - 1269, 1270, 0, 0, 0, 0, 2273, 1261, 0, 0, - 1262, 1263, 1264, 0, 1265, 1266, 1267, 1268, 1269, 1270, - 0, 0, 0, 0, 2397, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1261, 0, 0, 1262, 1263, - 1264, 0, 1265, 1266, 1267, 1268, 1269, 1270, 0, 0, - 0, 0, 2416, 1261, 0, 0, 1262, 1263, 1264, 0, - 1265, 1266, 1267, 1268, 1269, 1270, 0, 0, 0, 0, - 2559, 1261, 0, 0, 1262, 1263, 1264, 0, 1265, 1266, - 1267, 1268, 1269, 1270, 1250, 0, 1240, 0, 2757, 1241, - 0, 0, 0, 0, 1242, 1243, 1244, 0, 1251, 0, - 0, 0, 0, 1252, 0, 0, 0, 0, 0, 0, - 0, 1245, 0, 0, 0, 0, 0, 0, 0, 1247, - 0, 0, 0, 0, 1253, 1254, 1248, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1255, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1256, 0, 0, 1257, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1258, 0, 0, 1259, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 458, 459, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 2314, 1089, 537, 0, 0, 1559, 734, 0, + 0, 0, 0, 0, 2214, 1560, 1561, 1562, 91, 92, + 93, 94, 95, 96, 97, 98, 966, 99, 100, 101, + 967, 968, 969, 970, 971, 972, 973, 102, 103, 974, + 104, 105, 106, 2315, 108, 109, 110, 0, 1114, 2316, + 1116, 1117, 975, 116, 117, 118, 119, 120, 121, 976, + 977, 122, 123, 1118, 1119, 126, 978, 127, 128, 129, + 130, 0, 979, 2317, 980, 133, 134, 135, 136, 137, + 2318, 139, 140, 141, 981, 142, 143, 144, 145, 146, + 147, 982, 2319, 149, 150, 151, 983, 984, 985, 2320, + 986, 987, 988, 153, 154, 155, 156, 157, 158, 159, + 1124, 1125, 162, 989, 163, 990, 164, 165, 166, 167, + 168, 169, 991, 170, 171, 172, 173, 174, 992, 993, + 175, 176, 756, 178, 179, 994, 180, 181, 182, 995, + 183, 184, 185, 996, 186, 187, 188, 189, 0, 191, + 192, 193, 194, 0, 997, 196, 998, 197, 198, 1126, + 200, 999, 201, 1000, 202, 2321, 1001, 2322, 205, 206, + 207, 2323, 209, 1002, 210, 1003, 0, 212, 1004, 213, + 214, 215, 216, 217, 218, 2324, 220, 221, 222, 223, + 1005, 224, 225, 226, 227, 228, 229, 1006, 230, 2325, + 0, 233, 234, 235, 236, 1132, 1133, 1007, 1134, 1008, + 240, 2326, 2327, 243, 2328, 245, 246, 247, 248, 249, + 1009, 1010, 250, 2329, 252, 2330, 1011, 254, 255, 256, + 1012, 1013, 257, 258, 259, 260, 261, 2331, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 1141, 2332, 1143, 284, + 285, 286, 2333, 1014, 288, 289, 2334, 291, 1015, 0, + 293, 1145, 295, 296, 297, 1016, 298, 299, 1017, 1018, + 2335, 301, 302, 1019, 1020, 303, 0, 2336, 306, 2337, + 0, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 1021, 319, 320, 0, 322, 323, 0, 325, 326, + 327, 1022, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 1148, 338, 339, 340, 341, 1023, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 1024, + 354, 355, 2338, 357, 358, 359, 1150, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 1025, 372, + 373, 374, 375, 376, 1026, 377, 2339, 379, 380, 381, + 2340, 383, 384, 1153, 386, 1027, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 2341, 399, 0, + 401, 1028, 402, 403, 1029, 404, 2342, 406, 407, 408, + 409, 410, 1030, 1156, 1157, 1031, 1032, 413, 414, 0, + 416, 0, 1033, 418, 419, 2343, 421, 422, 423, 424, + 425, 1034, 1035, 426, 427, 428, 429, 430, 1036, 1037, + 431, 432, 433, 434, 435, 0, 1159, 1039, 438, 2344, + 440, 441, 442, 443, 1040, 1041, 444, 1042, 1043, 445, + 446, 447, 448, 449, 450, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 462, 463, 464, 465, + 0, 490, 0, 1563, 1564, 1565, 1559, 2345, 2346, 1568, + 1569, 1570, 1571, 0, 1560, 1561, 1562, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 0, 104, + 105, 106, 0, 108, 109, 110, 111, 112, 0, 114, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 131, 0, 0, 0, 133, 134, 135, 136, 137, 0, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 0, 149, 150, 151, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 0, 0, 0, 205, 206, 207, + 0, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 0, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 0, 0, 243, 0, 245, 246, 247, 248, 249, 0, + 0, 250, 0, 252, 0, 0, 254, 255, 256, 0, + 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 0, 283, 284, 285, + 286, 287, 0, 288, 289, 0, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 0, 300, + 301, 302, 0, 0, 303, 304, 0, 306, 0, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 0, 377, 378, 379, 380, 381, 0, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 494, 399, 400, 401, + 0, 402, 403, 0, 404, 0, 406, 407, 408, 409, + 410, 0, 411, 412, 0, 0, 413, 414, 415, 416, + 417, 0, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 0, 0, 431, + 432, 433, 434, 435, 436, 437, 0, 438, 0, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 0, + 0, 0, 1563, 1564, 1565, 0, 1566, 1567, 1568, 1569, + 1570, 1571, 1246, 0, 0, 1247, 0, 0, 0, 0, + 1248, 1249, 1250, 0, 0, 0, 0, 0, 0, 0, + 1246, 0, 0, 1247, 0, 0, 0, 1251, 1248, 1249, + 1250, 0, 0, 0, 0, 1253, 0, 0, 1246, 0, + 0, 1247, 1254, 0, 0, 1251, 1248, 1249, 1250, 0, + 0, 0, 0, 1253, 0, 0, 0, 0, 0, 0, + 1254, 0, 0, 1251, 0, 0, 1246, 1255, 0, 1247, + 0, 1253, 0, 0, 1248, 1249, 1250, 0, 1254, 0, + 0, 0, 0, 0, 1246, 1255, 0, 1247, 0, 0, + 0, 1251, 1248, 1249, 1250, 0, 0, 0, 0, 1253, + 0, 0, 0, 1255, 0, 0, 1254, 0, 0, 1251, + 0, 0, 0, 0, 0, 0, 0, 1253, 0, 0, + 0, 0, 0, 0, 1254, 0, 0, 0, 0, 0, + 0, 1255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1255, + 0, 0, 0, 0, 1246, 0, 0, 1247, 0, 0, + 0, 0, 1248, 1249, 1250, 0, 1256, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1251, + 1257, 0, 0, 0, 1256, 1258, 0, 1253, 0, 0, + 0, 0, 0, 0, 1254, 0, 0, 0, 1257, 0, + 0, 0, 1256, 1258, 0, 0, 1259, 1260, 0, 0, + 0, 0, 0, 0, 0, 0, 1257, 0, 0, 1255, + 1261, 1258, 0, 0, 1259, 1260, 0, 0, 0, 0, + 1256, 0, 0, 0, 0, 0, 0, 0, 1261, 0, + 0, 0, 1259, 1260, 1257, 0, 0, 0, 1256, 1258, + 0, 0, 0, 0, 0, 0, 1261, 0, 1262, 0, + 0, 1263, 1257, 0, 0, 0, 0, 1258, 0, 0, + 1259, 1260, 0, 0, 0, 1264, 1262, 0, 1265, 1263, + 0, 0, 0, 0, 1261, 0, 0, 0, 1259, 1260, + 0, 0, 0, 1264, 1262, 0, 1265, 1263, 0, 0, + 0, 0, 1261, 0, 0, 0, 0, 0, 0, 0, + 0, 1264, 0, 0, 1265, 0, 0, 0, 1256, 0, + 0, 0, 1262, 0, 0, 1263, 0, 0, 0, 0, + 0, 0, 1257, 0, 0, 0, 0, 1258, 0, 1264, + 1262, 0, 1265, 1263, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1264, 1259, 1260, + 1265, 0, 0, 0, 0, 1266, 0, 0, 0, 0, + 0, 0, 1261, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1266, 1246, 0, 0, 1247, 0, 0, + 0, 0, 1248, 1249, 1250, 0, 0, 0, 0, 0, + 0, 1266, 0, 0, 0, 0, 0, 0, 0, 1251, + 1262, 0, 0, 1263, 0, 0, 0, 1253, 0, 0, + 0, 0, 0, 0, 1254, 0, 0, 1264, 0, 1266, + 1265, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1266, 0, 1255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1250, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1251, 0, 0, 0, 0, 1252, + 0, 0, 0, 0, 0, 1267, 0, 0, 1268, 1269, + 1270, 0, 1271, 1272, 1273, 1274, 1275, 1276, 0, 0, + 0, 0, 2279, 1267, 0, 0, 1268, 1269, 1270, 0, + 1271, 1272, 1273, 1274, 1275, 1276, 0, 0, 0, 0, + 2403, 1267, 0, 0, 1268, 1269, 1270, 0, 1271, 1272, + 1273, 1274, 1275, 1276, 0, 0, 0, 1266, 2422, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1267, + 0, 0, 1268, 1269, 1270, 0, 1271, 1272, 1273, 1274, + 1275, 1276, 0, 0, 0, 0, 2565, 1267, 1256, 0, + 1268, 1269, 1270, 0, 1271, 1272, 1273, 1274, 1275, 1276, + 0, 0, 1257, 0, 2763, 0, 0, 1258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1260, 0, 0, 0, 0, 0, 0, - 1253, 1254, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1259, 1260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1261, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1267, 0, 0, + 1268, 1269, 1270, 0, 1271, 1272, 1273, 1274, 1275, 1276, + 0, 0, 0, 0, 2775, 0, 0, 0, 0, 0, + 1262, 0, 0, 1263, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1264, 0, 0, + 1265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1256, 0, 0, 1257, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1258, - 0, 0, 1259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1261, 0, 0, 1262, 1263, 1264, 0, 1265, - 1266, 1267, 1268, 1269, 1270, 0, 0, 0, 0, 2769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1260, + 0, 0, 0, 0, 0, 0, 0, 1266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -213527,3462 +212316,3124 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1261, 959, - 0, 1262, 1263, 1264, 0, 1265, 1266, 1267, 1268, 1269, - 1270, 0, 0, 1418, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 960, 98, 99, 100, 961, 962, 963, - 964, 965, 966, 967, 101, 102, 968, 103, 104, 105, - 0, 107, 108, 109, 656, 657, 0, 658, 659, 969, - 115, 116, 117, 118, 119, 120, 970, 971, 121, 122, - 660, 661, 125, 972, 126, 127, 128, 129, 662, 973, - 0, 974, 132, 133, 134, 135, 136, 0, 138, 139, - 140, 975, 141, 142, 143, 144, 145, 146, 976, 0, - 148, 149, 150, 977, 978, 979, 0, 980, 981, 982, - 152, 153, 154, 155, 156, 157, 158, 663, 664, 161, - 983, 162, 984, 163, 164, 165, 166, 167, 168, 985, - 169, 170, 171, 172, 173, 986, 987, 174, 175, 176, - 177, 178, 988, 179, 180, 181, 989, 182, 183, 184, - 990, 185, 186, 187, 188, 665, 190, 191, 192, 193, - 666, 991, 195, 992, 196, 197, 667, 199, 993, 200, - 994, 201, 0, 995, 0, 204, 205, 206, 0, 208, - 996, 209, 997, 668, 211, 998, 212, 213, 214, 215, - 216, 217, 0, 219, 220, 221, 222, 999, 223, 224, - 225, 226, 227, 228, 1000, 229, 0, 669, 232, 233, - 234, 235, 670, 671, 1001, 672, 1002, 239, 0, 0, - 242, 0, 244, 245, 246, 247, 248, 1003, 1004, 249, - 0, 251, 0, 1005, 253, 254, 255, 1006, 1007, 256, - 257, 258, 259, 260, 673, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 674, 0, 675, 283, 284, 285, 676, - 1008, 287, 288, 0, 290, 1009, 677, 292, 678, 294, - 295, 296, 1010, 297, 298, 1011, 1012, 299, 300, 301, - 1013, 1014, 302, 679, 0, 305, 0, 680, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 1015, 318, - 319, 681, 321, 322, 682, 324, 325, 326, 1016, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 683, 337, - 338, 339, 340, 1017, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 1018, 353, 354, 0, - 356, 357, 358, 684, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 1019, 371, 372, 373, 374, - 375, 1020, 376, 685, 378, 379, 380, 0, 382, 383, - 686, 385, 1021, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 687, 398, 688, 1022, 400, 401, - 1023, 402, 0, 404, 405, 406, 407, 408, 1024, 689, - 690, 1025, 1026, 411, 412, 691, 414, 692, 1027, 416, - 417, 693, 419, 420, 421, 422, 423, 1028, 1029, 424, - 425, 426, 427, 428, 1030, 1031, 429, 430, 431, 432, - 433, 1032, 695, 1033, 436, 0, 438, 439, 440, 441, - 1034, 1035, 442, 1036, 1037, 443, 444, 445, 446, 447, - 448, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 460, 461, 462, 463, 488, 0, 0, 0, - 0, 0, 0, 0, 0, 1038, 0, 0, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 98, 99, 100, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 0, 103, 104, 105, 0, 107, 108, - 109, 110, 111, 0, 113, 114, 0, 115, 116, 117, - 118, 119, 120, 0, 0, 121, 122, 123, 124, 125, - 0, 126, 127, 128, 129, 130, 0, 0, 0, 132, - 133, 134, 135, 136, 0, 138, 139, 140, 0, 141, - 142, 143, 144, 145, 146, 0, 0, 148, 149, 150, - 0, 0, 0, 0, 0, 0, 0, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 0, 162, 0, - 163, 164, 165, 166, 167, 168, 0, 169, 170, 171, - 172, 173, 0, 0, 174, 175, 176, 177, 178, 0, - 179, 180, 181, 0, 182, 183, 184, 0, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 0, 195, - 0, 196, 197, 198, 199, 0, 200, 0, 201, 0, - 0, 0, 204, 205, 206, 0, 208, 0, 209, 0, - 210, 211, 0, 212, 213, 214, 215, 216, 217, 0, - 219, 220, 221, 222, 0, 223, 224, 225, 226, 227, - 228, 0, 229, 0, 231, 232, 233, 234, 235, 236, - 237, 0, 238, 0, 239, 0, 0, 242, 0, 244, - 245, 246, 247, 248, 0, 0, 249, 0, 251, 0, - 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, - 260, 490, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 0, 282, 283, 284, 285, 286, 0, 287, 288, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 0, 0, 299, 300, 301, 0, 0, 302, - 303, 0, 305, 0, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 0, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 0, 353, 354, 0, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 0, 371, 372, 373, 374, 375, 0, 376, - 377, 378, 379, 380, 0, 382, 383, 384, 385, 0, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 492, 398, 399, 0, 400, 401, 0, 402, 0, - 404, 405, 406, 407, 408, 0, 409, 410, 0, 0, - 411, 412, 413, 414, 415, 0, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 0, 0, 429, 430, 431, 432, 433, 434, 435, - 0, 436, 0, 438, 439, 440, 441, 0, 0, 442, - 0, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 655, 1083, 535, 0, 0, 0, 729, - 0, 0, 2125, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 98, 99, - 100, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 0, 103, 104, 105, 0, 107, 108, 109, 656, 657, - 0, 658, 659, 0, 115, 116, 117, 118, 119, 120, - 0, 0, 121, 122, 660, 661, 125, 0, 126, 127, - 128, 129, 662, 0, 0, 0, 132, 133, 134, 135, - 136, 0, 138, 139, 140, 0, 141, 142, 143, 144, - 145, 146, 0, 0, 148, 149, 150, 0, 0, 0, - 0, 0, 0, 0, 152, 153, 154, 155, 156, 157, - 158, 663, 664, 161, 1298, 162, 0, 163, 164, 165, - 166, 167, 168, 0, 169, 170, 171, 172, 173, 0, - 0, 174, 175, 176, 177, 178, 0, 179, 180, 181, - 0, 182, 183, 184, 0, 185, 186, 187, 188, 665, - 190, 191, 192, 193, 666, 1084, 195, 0, 196, 197, - 667, 199, 0, 200, 0, 201, 0, 0, 0, 204, - 205, 206, 0, 208, 0, 209, 0, 668, 211, 0, - 212, 213, 214, 215, 216, 217, 0, 219, 220, 221, - 222, 0, 223, 224, 225, 226, 227, 228, 0, 229, - 0, 669, 232, 233, 234, 235, 670, 671, 0, 672, - 0, 239, 0, 0, 242, 0, 244, 245, 246, 247, - 248, 0, 0, 249, 0, 251, 0, 0, 253, 254, - 255, 0, 0, 256, 257, 258, 259, 260, 673, 262, + 0, 0, 0, 0, 0, 0, 0, 1267, 965, 0, + 1268, 1269, 1270, 0, 1271, 1272, 1273, 1274, 1275, 1276, + 0, 0, 1424, 0, 91, 92, 93, 94, 95, 96, + 97, 98, 966, 99, 100, 101, 967, 968, 969, 970, + 971, 972, 973, 102, 103, 974, 104, 105, 106, 0, + 108, 109, 110, 661, 662, 0, 663, 664, 975, 116, + 117, 118, 119, 120, 121, 976, 977, 122, 123, 665, + 666, 126, 978, 127, 128, 129, 130, 667, 979, 0, + 980, 133, 134, 135, 136, 137, 0, 139, 140, 141, + 981, 142, 143, 144, 145, 146, 147, 982, 0, 149, + 150, 151, 983, 984, 985, 0, 986, 987, 988, 153, + 154, 155, 156, 157, 158, 159, 668, 669, 162, 989, + 163, 990, 164, 165, 166, 167, 168, 169, 991, 170, + 171, 172, 173, 174, 992, 993, 175, 176, 177, 178, + 179, 994, 180, 181, 182, 995, 183, 184, 185, 996, + 186, 187, 188, 189, 670, 191, 192, 193, 194, 671, + 997, 196, 998, 197, 198, 672, 200, 999, 201, 1000, + 202, 0, 1001, 0, 205, 206, 207, 0, 209, 1002, + 210, 1003, 673, 212, 1004, 213, 214, 215, 216, 217, + 218, 0, 220, 221, 222, 223, 1005, 224, 225, 226, + 227, 228, 229, 1006, 230, 0, 674, 233, 234, 235, + 236, 675, 676, 1007, 677, 1008, 240, 0, 0, 243, + 0, 245, 246, 247, 248, 249, 1009, 1010, 250, 0, + 252, 0, 1011, 254, 255, 256, 1012, 1013, 257, 258, + 259, 260, 261, 678, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 679, 0, 680, 284, 285, 286, 681, 1014, + 288, 289, 0, 291, 1015, 682, 293, 683, 295, 296, + 297, 1016, 298, 299, 1017, 1018, 300, 301, 302, 1019, + 1020, 303, 684, 0, 306, 0, 685, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 1021, 319, 320, + 686, 322, 323, 687, 325, 326, 327, 1022, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 688, 338, 339, + 340, 341, 1023, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 1024, 354, 355, 0, 357, + 358, 359, 689, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 1025, 372, 373, 374, 375, 376, + 1026, 377, 690, 379, 380, 381, 0, 383, 384, 691, + 386, 1027, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 692, 399, 693, 401, 1028, 402, 403, + 1029, 404, 0, 406, 407, 408, 409, 410, 1030, 694, + 695, 1031, 1032, 413, 414, 696, 416, 697, 1033, 418, + 419, 698, 421, 422, 423, 424, 425, 1034, 1035, 426, + 427, 428, 429, 430, 1036, 1037, 431, 432, 433, 434, + 435, 1038, 700, 1039, 438, 0, 440, 441, 442, 443, + 1040, 1041, 444, 1042, 1043, 445, 446, 447, 448, 449, + 450, 701, 702, 703, 704, 705, 706, 707, 708, 709, + 710, 711, 462, 463, 464, 465, 490, 0, 0, 0, + 0, 0, 0, 0, 0, 1044, 0, 0, 0, 0, + 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, + 0, 99, 100, 101, 0, 0, 0, 0, 0, 0, + 0, 102, 103, 0, 104, 105, 106, 0, 108, 109, + 110, 111, 112, 0, 114, 115, 0, 116, 117, 118, + 119, 120, 121, 0, 0, 122, 123, 124, 125, 126, + 0, 127, 128, 129, 130, 131, 0, 0, 0, 133, + 134, 135, 136, 137, 0, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 0, 149, 150, 151, + 0, 0, 0, 0, 0, 0, 0, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 0, 163, 0, + 164, 165, 166, 167, 168, 169, 0, 170, 171, 172, + 173, 174, 0, 0, 175, 176, 177, 178, 179, 0, + 180, 181, 182, 0, 183, 184, 185, 0, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, + 0, 197, 198, 199, 200, 0, 201, 0, 202, 0, + 0, 0, 205, 206, 207, 0, 209, 0, 210, 0, + 211, 212, 0, 213, 214, 215, 216, 217, 218, 0, + 220, 221, 222, 223, 0, 224, 225, 226, 227, 228, + 229, 0, 230, 0, 232, 233, 234, 235, 236, 237, + 238, 0, 239, 0, 240, 0, 0, 243, 0, 245, + 246, 247, 248, 249, 0, 0, 250, 0, 252, 0, + 0, 254, 255, 256, 0, 0, 257, 258, 259, 260, + 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 0, 283, 284, 285, 286, 287, 0, 288, 289, + 0, 291, 0, 292, 293, 294, 295, 296, 297, 0, + 298, 299, 0, 0, 300, 301, 302, 0, 0, 303, + 304, 0, 306, 0, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 0, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 0, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 0, 354, 355, 0, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 0, 372, 373, 374, 375, 376, 0, 377, + 378, 379, 380, 381, 0, 383, 384, 385, 386, 0, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 494, 399, 400, 401, 0, 402, 403, 0, 404, + 0, 406, 407, 408, 409, 410, 0, 411, 412, 0, + 0, 413, 414, 415, 416, 417, 0, 418, 419, 420, + 421, 422, 423, 424, 425, 0, 0, 426, 427, 428, + 429, 430, 0, 0, 431, 432, 433, 434, 435, 436, + 437, 0, 438, 0, 440, 441, 442, 443, 0, 0, + 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 660, 1089, 537, 0, 0, 0, + 734, 0, 0, 2131, 0, 0, 0, 0, 0, 0, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 99, + 100, 101, 0, 0, 0, 0, 0, 0, 0, 102, + 103, 0, 104, 105, 106, 0, 108, 109, 110, 661, + 662, 0, 663, 664, 0, 116, 117, 118, 119, 120, + 121, 0, 0, 122, 123, 665, 666, 126, 0, 127, + 128, 129, 130, 667, 0, 0, 0, 133, 134, 135, + 136, 137, 0, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 0, 149, 150, 151, 0, 0, + 0, 0, 0, 0, 0, 153, 154, 155, 156, 157, + 158, 159, 668, 669, 162, 1304, 163, 0, 164, 165, + 166, 167, 168, 169, 0, 170, 171, 172, 173, 174, + 0, 0, 175, 176, 177, 178, 179, 0, 180, 181, + 182, 0, 183, 184, 185, 0, 186, 187, 188, 189, + 670, 191, 192, 193, 194, 671, 1090, 196, 0, 197, + 198, 672, 200, 0, 201, 0, 202, 0, 0, 0, + 205, 206, 207, 0, 209, 0, 210, 0, 673, 212, + 0, 213, 214, 215, 216, 217, 218, 0, 220, 221, + 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, + 230, 0, 674, 233, 234, 235, 236, 675, 676, 0, + 677, 0, 240, 0, 0, 243, 0, 245, 246, 247, + 248, 249, 0, 0, 250, 0, 252, 0, 0, 254, + 255, 256, 0, 0, 257, 258, 259, 260, 261, 678, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 674, 0, 675, - 283, 284, 285, 676, 0, 287, 288, 0, 290, 0, - 677, 292, 678, 294, 295, 296, 0, 297, 298, 1085, - 0, 299, 300, 301, 0, 0, 302, 679, 0, 305, - 0, 680, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 0, 318, 319, 681, 321, 322, 682, 324, - 325, 326, 0, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 683, 337, 338, 339, 340, 0, 341, 342, + 273, 274, 275, 276, 277, 278, 279, 280, 679, 0, + 680, 284, 285, 286, 681, 0, 288, 289, 0, 291, + 0, 682, 293, 683, 295, 296, 297, 0, 298, 299, + 1091, 0, 300, 301, 302, 0, 0, 303, 684, 0, + 306, 0, 685, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 0, 319, 320, 686, 322, 323, 687, + 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 688, 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 0, 356, 357, 358, 684, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 0, - 371, 372, 373, 374, 375, 0, 376, 685, 378, 379, - 380, 0, 382, 383, 686, 385, 0, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 687, 398, - 688, 0, 400, 401, 0, 402, 0, 404, 405, 406, - 407, 408, 0, 689, 690, 0, 0, 411, 412, 691, - 414, 692, 1086, 416, 417, 693, 419, 420, 421, 422, - 423, 0, 0, 424, 425, 426, 427, 428, 0, 0, - 429, 430, 431, 432, 433, 1032, 695, 0, 436, 0, - 438, 439, 440, 441, 0, 0, 442, 0, 0, 443, - 444, 445, 446, 447, 448, 696, 697, 698, 699, 700, - 701, 702, 703, 704, 705, 706, 460, 461, 462, 463, - 655, 1083, 535, 0, 0, 0, 729, 1087, 1088, 0, - 0, 0, 0, 0, 0, 0, 90, 91, 92, 93, - 94, 95, 96, 97, 0, 98, 99, 100, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 0, 103, 104, - 105, 0, 107, 108, 109, 656, 657, 0, 658, 659, - 0, 115, 116, 117, 118, 119, 120, 0, 0, 121, - 122, 660, 661, 125, 0, 126, 127, 128, 129, 662, - 0, 0, 0, 132, 133, 134, 135, 136, 0, 138, - 139, 140, 0, 141, 142, 143, 144, 145, 146, 0, - 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, - 0, 152, 153, 154, 155, 156, 157, 158, 663, 664, - 161, 1300, 162, 0, 163, 164, 165, 166, 167, 168, - 0, 169, 170, 171, 172, 173, 0, 0, 174, 175, - 176, 177, 178, 0, 179, 180, 181, 0, 182, 183, - 184, 0, 185, 186, 187, 188, 665, 190, 191, 192, - 193, 666, 1084, 195, 0, 196, 197, 667, 199, 0, - 200, 0, 201, 0, 0, 0, 204, 205, 206, 0, - 208, 0, 209, 0, 668, 211, 0, 212, 213, 214, - 215, 216, 217, 0, 219, 220, 221, 222, 0, 223, - 224, 225, 226, 227, 228, 0, 229, 0, 669, 232, - 233, 234, 235, 670, 671, 0, 672, 0, 239, 0, - 0, 242, 0, 244, 245, 246, 247, 248, 0, 0, - 249, 0, 251, 0, 0, 253, 254, 255, 0, 0, - 256, 257, 258, 259, 260, 673, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 674, 0, 675, 283, 284, 285, - 676, 0, 287, 288, 0, 290, 0, 677, 292, 678, - 294, 295, 296, 0, 297, 298, 1085, 0, 299, 300, - 301, 0, 0, 302, 679, 0, 305, 0, 680, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 0, - 318, 319, 681, 321, 322, 682, 324, 325, 326, 0, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 683, - 337, 338, 339, 340, 0, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, - 0, 356, 357, 358, 684, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 0, 371, 372, 373, - 374, 375, 0, 376, 685, 378, 379, 380, 0, 382, - 383, 686, 385, 0, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 687, 398, 688, 0, 400, - 401, 0, 402, 0, 404, 405, 406, 407, 408, 0, - 689, 690, 0, 0, 411, 412, 691, 414, 692, 1086, - 416, 417, 693, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 0, 0, 429, 430, 431, - 432, 433, 1032, 695, 0, 436, 0, 438, 439, 440, - 441, 0, 0, 442, 0, 0, 443, 444, 445, 446, - 447, 448, 696, 697, 698, 699, 700, 701, 702, 703, - 704, 705, 706, 460, 461, 462, 463, 655, 1083, 535, - 0, 0, 0, 729, 1087, 1088, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 98, 99, 100, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 0, 103, 104, 105, 0, 107, - 108, 109, 656, 657, 0, 658, 659, 0, 115, 116, - 117, 118, 119, 120, 0, 0, 121, 122, 660, 661, - 125, 0, 126, 127, 128, 129, 662, 0, 0, 0, - 132, 133, 134, 135, 136, 0, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 146, 0, 0, 148, 149, - 150, 0, 0, 0, 0, 0, 0, 0, 152, 153, - 154, 155, 156, 157, 158, 663, 664, 161, 0, 162, - 0, 163, 164, 165, 166, 167, 168, 0, 169, 170, - 171, 172, 173, 0, 0, 174, 175, 176, 177, 178, - 0, 179, 180, 181, 0, 182, 183, 184, 0, 185, - 186, 187, 188, 665, 190, 191, 192, 193, 666, 1084, - 195, 0, 196, 197, 667, 199, 0, 200, 0, 201, - 0, 0, 0, 204, 205, 206, 0, 208, 0, 209, - 0, 668, 211, 0, 212, 213, 214, 215, 216, 217, - 0, 219, 220, 221, 222, 0, 223, 224, 225, 226, - 227, 228, 0, 229, 0, 669, 232, 233, 234, 235, - 670, 671, 0, 672, 0, 239, 0, 0, 242, 0, - 244, 245, 246, 247, 248, 0, 0, 249, 0, 251, - 0, 0, 253, 254, 255, 0, 0, 256, 257, 258, - 259, 260, 673, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 674, 0, 675, 283, 284, 285, 676, 0, 287, - 288, 0, 290, 0, 677, 292, 678, 294, 295, 296, - 0, 297, 298, 1085, 0, 299, 300, 301, 0, 0, - 302, 679, 0, 305, 0, 680, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 0, 318, 319, 681, - 321, 322, 682, 324, 325, 326, 0, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 683, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 0, 353, 354, 0, 356, 357, - 358, 684, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 0, 371, 372, 373, 374, 375, 0, - 376, 685, 378, 379, 380, 0, 382, 383, 686, 385, - 0, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 687, 398, 688, 0, 400, 401, 0, 402, - 0, 404, 405, 406, 407, 408, 0, 689, 690, 0, - 0, 411, 412, 691, 414, 692, 1086, 416, 417, 693, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 0, 0, 429, 430, 431, 432, 433, 1032, - 695, 0, 436, 0, 438, 439, 440, 441, 0, 0, - 442, 0, 0, 443, 444, 445, 446, 447, 448, 696, - 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, - 460, 461, 462, 463, 0, 1240, 0, 0, 1241, 0, - 0, 1087, 1088, 1242, 1243, 1244, 0, 0, 0, 0, - 0, 0, 0, 1240, 0, 0, 1241, 0, 0, 0, - 1245, 1242, 1243, 1244, 1703, 0, 0, 0, 1247, 0, - 0, 1240, 0, 0, 1241, 1248, 0, 0, 1245, 1242, - 1243, 1244, 0, 0, 0, 0, 1247, 0, 0, 0, - 0, 0, 0, 1248, 0, 0, 1245, 0, 0, 1240, - 1249, 0, 1241, 0, 1247, 0, 0, 1242, 1243, 1244, - 0, 1248, 0, 0, 0, 0, 0, 0, 1249, 0, - 0, 0, 0, 0, 1245, 0, 0, 1878, 0, 0, - 0, 0, 1247, 0, 0, 1240, 1249, 0, 1241, 1248, - 0, 0, 0, 1242, 1243, 1244, 0, 0, 0, 0, - 1704, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1245, 0, 0, 0, 1249, 0, 0, 0, 1247, 0, - 0, 0, 0, 0, 0, 1248, 0, 0, 0, 0, + 353, 0, 354, 355, 0, 357, 358, 359, 689, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 0, 372, 373, 374, 375, 376, 0, 377, 690, 379, + 380, 381, 0, 383, 384, 691, 386, 0, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 692, + 399, 693, 401, 0, 402, 403, 0, 404, 0, 406, + 407, 408, 409, 410, 0, 694, 695, 0, 0, 413, + 414, 696, 416, 697, 1092, 418, 419, 698, 421, 422, + 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, + 0, 0, 431, 432, 433, 434, 435, 1038, 700, 0, + 438, 0, 440, 441, 442, 443, 0, 0, 444, 0, + 0, 445, 446, 447, 448, 449, 450, 701, 702, 703, + 704, 705, 706, 707, 708, 709, 710, 711, 462, 463, + 464, 465, 660, 1089, 537, 0, 0, 0, 734, 1093, + 1094, 0, 0, 0, 0, 0, 0, 0, 91, 92, + 93, 94, 95, 96, 97, 98, 0, 99, 100, 101, + 0, 0, 0, 0, 0, 0, 0, 102, 103, 0, + 104, 105, 106, 0, 108, 109, 110, 661, 662, 0, + 663, 664, 0, 116, 117, 118, 119, 120, 121, 0, + 0, 122, 123, 665, 666, 126, 0, 127, 128, 129, + 130, 667, 0, 0, 0, 133, 134, 135, 136, 137, + 0, 139, 140, 141, 0, 142, 143, 144, 145, 146, + 147, 0, 0, 149, 150, 151, 0, 0, 0, 0, + 0, 0, 0, 153, 154, 155, 156, 157, 158, 159, + 668, 669, 162, 1306, 163, 0, 164, 165, 166, 167, + 168, 169, 0, 170, 171, 172, 173, 174, 0, 0, + 175, 176, 177, 178, 179, 0, 180, 181, 182, 0, + 183, 184, 185, 0, 186, 187, 188, 189, 670, 191, + 192, 193, 194, 671, 1090, 196, 0, 197, 198, 672, + 200, 0, 201, 0, 202, 0, 0, 0, 205, 206, + 207, 0, 209, 0, 210, 0, 673, 212, 0, 213, + 214, 215, 216, 217, 218, 0, 220, 221, 222, 223, + 0, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 674, 233, 234, 235, 236, 675, 676, 0, 677, 0, + 240, 0, 0, 243, 0, 245, 246, 247, 248, 249, + 0, 0, 250, 0, 252, 0, 0, 254, 255, 256, + 0, 0, 257, 258, 259, 260, 261, 678, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 679, 0, 680, 284, + 285, 286, 681, 0, 288, 289, 0, 291, 0, 682, + 293, 683, 295, 296, 297, 0, 298, 299, 1091, 0, + 300, 301, 302, 0, 0, 303, 684, 0, 306, 0, + 685, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 0, 319, 320, 686, 322, 323, 687, 325, 326, + 327, 0, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 688, 338, 339, 340, 341, 0, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 0, + 354, 355, 0, 357, 358, 359, 689, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, + 373, 374, 375, 376, 0, 377, 690, 379, 380, 381, + 0, 383, 384, 691, 386, 0, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 692, 399, 693, + 401, 0, 402, 403, 0, 404, 0, 406, 407, 408, + 409, 410, 0, 694, 695, 0, 0, 413, 414, 696, + 416, 697, 1092, 418, 419, 698, 421, 422, 423, 424, + 425, 0, 0, 426, 427, 428, 429, 430, 0, 0, + 431, 432, 433, 434, 435, 1038, 700, 0, 438, 0, + 440, 441, 442, 443, 0, 0, 444, 0, 0, 445, + 446, 447, 448, 449, 450, 701, 702, 703, 704, 705, + 706, 707, 708, 709, 710, 711, 462, 463, 464, 465, + 660, 1089, 537, 0, 0, 0, 734, 1093, 1094, 0, + 0, 0, 0, 0, 0, 0, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 99, 100, 101, 0, 0, + 0, 0, 0, 0, 0, 102, 103, 0, 104, 105, + 106, 0, 108, 109, 110, 661, 662, 0, 663, 664, + 0, 116, 117, 118, 119, 120, 121, 0, 0, 122, + 123, 665, 666, 126, 0, 127, 128, 129, 130, 667, + 0, 0, 0, 133, 134, 135, 136, 137, 0, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 0, 149, 150, 151, 0, 0, 0, 0, 0, 0, + 0, 153, 154, 155, 156, 157, 158, 159, 668, 669, + 162, 0, 163, 0, 164, 165, 166, 167, 168, 169, + 0, 170, 171, 172, 173, 174, 0, 0, 175, 176, + 177, 178, 179, 0, 180, 181, 182, 0, 183, 184, + 185, 0, 186, 187, 188, 189, 670, 191, 192, 193, + 194, 671, 1090, 196, 0, 197, 198, 672, 200, 0, + 201, 0, 202, 0, 0, 0, 205, 206, 207, 0, + 209, 0, 210, 0, 673, 212, 0, 213, 214, 215, + 216, 217, 218, 0, 220, 221, 222, 223, 0, 224, + 225, 226, 227, 228, 229, 0, 230, 0, 674, 233, + 234, 235, 236, 675, 676, 0, 677, 0, 240, 0, + 0, 243, 0, 245, 246, 247, 248, 249, 0, 0, + 250, 0, 252, 0, 0, 254, 255, 256, 0, 0, + 257, 258, 259, 260, 261, 678, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 679, 0, 680, 284, 285, 286, + 681, 0, 288, 289, 0, 291, 0, 682, 293, 683, + 295, 296, 297, 0, 298, 299, 1091, 0, 300, 301, + 302, 0, 0, 303, 684, 0, 306, 0, 685, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 0, + 319, 320, 686, 322, 323, 687, 325, 326, 327, 0, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 688, + 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 0, 354, 355, + 0, 357, 358, 359, 689, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, + 375, 376, 0, 377, 690, 379, 380, 381, 0, 383, + 384, 691, 386, 0, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 692, 399, 693, 401, 0, + 402, 403, 0, 404, 0, 406, 407, 408, 409, 410, + 0, 694, 695, 0, 0, 413, 414, 696, 416, 697, + 1092, 418, 419, 698, 421, 422, 423, 424, 425, 0, + 0, 426, 427, 428, 429, 430, 0, 0, 431, 432, + 433, 434, 435, 1038, 700, 0, 438, 0, 440, 441, + 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, + 448, 449, 450, 701, 702, 703, 704, 705, 706, 707, + 708, 709, 710, 711, 462, 463, 464, 465, 0, 1246, + 0, 0, 1247, 0, 0, 1093, 1094, 1248, 1249, 1250, + 0, 0, 0, 0, 0, 0, 0, 1246, 0, 0, + 1247, 0, 0, 0, 1251, 1248, 1249, 1250, 1709, 0, + 0, 0, 1253, 0, 0, 1246, 0, 0, 1247, 1254, + 0, 0, 1251, 1248, 1249, 1250, 0, 0, 0, 0, + 1253, 0, 0, 0, 0, 0, 0, 1254, 0, 0, + 1251, 0, 0, 1246, 1255, 0, 1247, 0, 1253, 0, + 0, 1248, 1249, 1250, 0, 1254, 0, 0, 0, 0, + 0, 0, 1255, 0, 0, 0, 0, 0, 1251, 0, + 0, 1884, 0, 0, 0, 0, 1253, 0, 0, 0, + 1255, 0, 0, 1254, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1710, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1250, - 1249, 0, 0, 0, 0, 0, 0, 1918, 0, 0, - 0, 0, 1919, 1251, 0, 0, 0, 1250, 1252, 1240, - 0, 0, 1241, 0, 2827, 0, 0, 1242, 1243, 1244, - 0, 1251, 0, 0, 0, 1250, 1252, 0, 0, 1253, - 1254, 0, 0, 0, 1245, 0, 0, 1927, 0, 1251, - 0, 0, 1247, 1255, 1252, 0, 0, 1253, 1254, 1248, - 0, 0, 0, 1250, 0, 0, 0, 0, 0, 0, - 0, 1255, 0, 0, 0, 1253, 1254, 1251, 0, 0, - 0, 0, 1252, 0, 1249, 0, 0, 0, 0, 1255, - 0, 1256, 0, 0, 1257, 0, 0, 0, 0, 1250, - 0, 0, 0, 1253, 1254, 0, 0, 0, 1258, 1256, - 0, 1259, 1257, 1251, 0, 0, 0, 1255, 1252, 0, - 0, 0, 0, 0, 0, 0, 1258, 1256, 0, 1259, - 1257, 0, 0, 0, 0, 0, 0, 0, 0, 1253, - 1254, 0, 0, 0, 1258, 0, 0, 1259, 0, 0, - 0, 0, 0, 1255, 0, 1256, 0, 0, 1257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2828, 0, 1258, 0, 0, 1259, 0, 0, 0, 0, - 0, 0, 0, 1250, 0, 0, 0, 0, 0, 0, - 0, 1256, 0, 0, 1257, 0, 0, 1251, 1260, 0, - 0, 0, 1252, 0, 0, 0, 0, 0, 1258, 0, - 0, 1259, 0, 0, 0, 0, 1260, 0, 0, 0, - 0, 0, 0, 1253, 1254, 0, 0, 0, 0, 1892, - 0, 0, 0, 0, 1260, 0, 0, 1255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1240, 0, 0, 1241, 0, 1705, 0, 0, 1242, - 1243, 1244, 1260, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1256, 1245, 0, 1257, 0, - 0, 0, 0, 0, 1247, 0, 0, 0, 0, 0, - 0, 1248, 1258, 0, 0, 1259, 0, 1261, 1260, 0, - 1262, 1263, 1264, 0, 1265, 1266, 1267, 1268, 1269, 1270, - 0, 0, 0, 0, 0, 1261, 1249, 0, 1262, 1263, - 1264, 0, 1265, 1266, 1267, 1268, 1269, 1270, 0, 0, - 0, 0, 0, 1261, 0, 0, 1262, 1263, 1264, 0, - 1265, 1266, 1267, 1268, 1269, 1270, 0, 0, 0, 0, + 0, 0, 0, 1256, 0, 0, 0, 0, 0, 0, + 0, 1924, 0, 0, 0, 0, 1925, 1257, 0, 0, + 0, 1256, 1258, 1246, 0, 0, 1247, 0, 2833, 0, + 0, 1248, 1249, 1250, 0, 1257, 0, 0, 0, 1256, + 1258, 0, 0, 1259, 1260, 0, 0, 0, 1251, 0, + 0, 0, 0, 1257, 0, 0, 1253, 1261, 1258, 0, + 0, 1259, 1260, 1254, 0, 0, 0, 1256, 0, 0, + 0, 0, 0, 0, 0, 1261, 0, 0, 0, 1259, + 1260, 1257, 0, 0, 0, 0, 1258, 0, 1255, 0, + 0, 0, 0, 1261, 0, 1262, 0, 0, 1263, 0, + 0, 0, 0, 0, 0, 0, 0, 1259, 1260, 0, + 0, 0, 1264, 1262, 0, 1265, 1263, 0, 0, 0, + 0, 1261, 0, 0, 0, 0, 0, 0, 0, 0, + 1264, 1262, 0, 1265, 1263, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1264, 0, + 0, 1265, 0, 0, 0, 0, 0, 0, 0, 1262, + 0, 0, 1263, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2834, 1246, 1264, 0, 1247, 1265, + 0, 0, 0, 1248, 1249, 1250, 0, 1256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1261, 0, 0, 1262, 1263, 1264, 0, 1265, 1266, - 1267, 1268, 1269, 1270, 0, 0, 0, 0, 0, 0, - 0, 0, 1260, 0, 0, 0, 1240, 0, 0, 1241, - 0, 0, 0, 0, 1242, 1243, 1244, 1261, 0, 0, - 1262, 1263, 1264, 0, 1265, 1266, 1267, 1268, 1269, 1270, - 1932, 1245, 0, 0, 1934, 1250, 0, 0, 0, 1247, - 0, 0, 0, 0, 0, 0, 1248, 0, 0, 1251, - 0, 0, 1240, 0, 1252, 1241, 0, 0, 0, 0, - 1242, 1243, 1244, 0, 0, 0, 0, 0, 0, 0, - 0, 1249, 0, 0, 0, 1253, 1254, 1245, 0, 0, - 0, 0, 0, 0, 0, 1247, 0, 0, 0, 1255, - 0, 0, 1248, 0, 0, 0, 0, 0, 0, 0, - 0, 1261, 0, 0, 1262, 1263, 1264, 0, 1265, 1266, - 1267, 1268, 1269, 1270, 0, 0, 0, 1249, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1256, 0, 0, - 1257, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1240, 1258, 0, 1241, 1259, 0, 0, - 0, 1242, 1243, 1244, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1245, 0, - 1250, 0, 0, 0, 0, 0, 1247, 0, 0, 0, - 0, 0, 1240, 1248, 1251, 1241, 0, 0, 0, 1252, - 1242, 1243, 1244, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1245, 1249, 0, - 1253, 1254, 0, 0, 0, 1247, 1250, 0, 0, 0, - 0, 0, 1248, 0, 1255, 0, 0, 0, 0, 0, - 1251, 0, 0, 0, 1260, 1252, 0, 0, 0, 0, - 1240, 0, 0, 1241, 0, 0, 0, 1249, 1242, 1243, - 1244, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, - 0, 0, 1256, 0, 0, 1257, 0, 0, 0, 0, - 1255, 0, 0, 1247, 0, 0, 0, 0, 0, 1258, - 1248, 0, 1259, 0, 0, 0, 0, 1240, 0, 0, - 1241, 0, 0, 0, 0, 1242, 1243, 1244, 0, 0, - 0, 0, 0, 0, 0, 1249, 0, 1250, 1256, 0, - 0, 1257, 0, 0, 0, 0, 0, 0, 0, 0, - 1247, 1251, 0, 0, 0, 1258, 1252, 1248, 1259, 0, - 0, 0, 0, 1261, 0, 0, 1262, 1263, 1264, 0, - 1265, 1266, 1267, 1268, 1269, 1270, 1250, 1253, 1254, 0, - 0, 0, 1249, 0, 0, 0, 0, 0, 0, 0, - 1251, 1255, 0, 0, 0, 1252, 0, 0, 0, 1260, + 1251, 1257, 1266, 1933, 1246, 0, 1258, 1247, 1253, 0, + 0, 0, 1248, 1249, 1250, 1254, 0, 0, 0, 0, + 1266, 0, 0, 0, 0, 0, 0, 1259, 1260, 1251, + 0, 0, 0, 0, 0, 0, 0, 1253, 1266, 0, + 1255, 1261, 0, 0, 1254, 0, 0, 0, 0, 0, + 1246, 0, 0, 1247, 0, 0, 0, 0, 1248, 1249, + 1250, 1711, 0, 0, 0, 0, 1266, 0, 0, 1255, + 0, 0, 0, 0, 0, 1251, 0, 0, 1940, 1262, + 0, 0, 1263, 1253, 0, 0, 0, 0, 0, 0, + 1254, 0, 0, 0, 0, 0, 1264, 0, 0, 1265, + 0, 0, 1267, 0, 0, 1268, 1269, 1270, 0, 1271, + 1272, 1273, 1274, 1275, 1276, 1255, 0, 1898, 0, 0, + 1267, 0, 0, 1268, 1269, 1270, 0, 1271, 1272, 1273, + 1274, 1275, 1276, 0, 0, 0, 0, 0, 1267, 1256, + 0, 1268, 1269, 1270, 0, 1271, 1272, 1273, 1274, 1275, + 1276, 0, 0, 1257, 0, 0, 0, 0, 1258, 0, + 0, 0, 0, 1938, 0, 0, 1267, 0, 1256, 1268, + 1269, 1270, 0, 1271, 1272, 1273, 1274, 1275, 1276, 1259, + 1260, 0, 1257, 0, 0, 0, 1266, 1258, 0, 0, + 0, 0, 0, 1261, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1246, 1259, 1260, + 1247, 0, 0, 0, 1256, 1248, 1249, 1250, 0, 0, + 0, 0, 1261, 0, 0, 0, 0, 0, 1257, 0, + 0, 1262, 1251, 1258, 1263, 0, 0, 0, 0, 0, + 1253, 0, 0, 0, 0, 0, 0, 1254, 1264, 0, + 0, 1265, 0, 0, 1259, 1260, 0, 0, 0, 0, + 1262, 0, 0, 1263, 0, 0, 0, 0, 1261, 0, + 0, 0, 1255, 0, 0, 0, 0, 1264, 0, 0, + 1265, 0, 0, 0, 0, 0, 1267, 0, 0, 1268, + 1269, 1270, 0, 1271, 1272, 1273, 1274, 1275, 1276, 0, + 0, 0, 0, 0, 0, 0, 1262, 0, 0, 1263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1253, 1254, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1256, - 1255, 0, 1257, 0, 1250, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1260, 1258, 0, 1251, 1259, - 0, 0, 0, 1252, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1256, 0, - 0, 1257, 0, 0, 1253, 1254, 2146, 0, 0, 0, - 0, 1250, 0, 0, 0, 1258, 0, 0, 1255, 0, - 0, 0, 0, 0, 0, 1251, 0, 0, 1261, 0, - 1252, 1262, 1263, 1264, 0, 1265, 1266, 1267, 1268, 1269, - 1270, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1675, -1675, 0, 0, 0, 1256, 0, 0, 1257, - 0, 0, 0, 0, 0, 1255, 1260, 0, 0, 0, - 0, 0, 0, 1258, 1261, 0, 0, 1262, 1263, 1264, - 0, 1265, 1266, 1267, 1268, 1269, 1270, 0, 0, 0, + 0, 0, 1246, 1264, 0, 1247, 1265, 0, 0, 0, + 1248, 1249, 1250, 0, 0, 0, 0, 0, 1266, 0, + 0, 0, 0, 0, 0, 0, 0, 1251, 0, 0, + 0, 1246, 0, 0, 1247, 1253, 0, 0, 0, 1248, + 1249, 1250, 1254, 0, 0, 0, 0, 1266, 0, 1246, + 0, 1256, 1247, 0, 0, 0, 1251, 1248, 1249, 1250, + 0, 0, 0, 0, 1253, 1257, 0, 1255, 0, 0, + 1258, 1254, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1253, 0, 0, 0, 0, 0, 0, 1254, + 0, 1259, 1260, 1266, 0, 0, 1255, 0, 0, 0, + 0, 0, 0, 0, 0, 1261, 0, 0, 0, 0, + 0, 0, 0, 0, 1255, 0, 0, 0, 1267, 0, + 0, 1268, 1269, 1270, 0, 1271, 1272, 1273, 1274, 1275, + 1276, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1262, 0, 0, 1263, 1267, 0, 0, + 1268, 1269, 1270, 0, 1271, 1272, 1273, 1274, 1275, 1276, + 1264, 0, 0, 1265, 0, 0, 1256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1260, -1675, 0, 0, 0, + 1257, 0, 0, 0, 0, 1258, 0, 0, 0, 0, + 0, 0, 0, 1267, 0, 1256, 1268, 1269, 1270, 0, + 1271, 1272, 1273, 1274, 1275, 1276, 1259, 1260, 0, 1257, + 0, 0, 0, 1256, 1258, 0, 0, 0, 0, 0, + 1261, 0, 0, 0, 0, 0, 0, 1257, 0, 0, + 0, 0, 1258, 0, 0, 1259, 1260, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1261, + 1266, 0, 0, 1259, 1260, 0, 0, 0, 1262, 0, + 0, 1263, 0, 0, 0, 0, 0, 1261, 0, 0, + 0, 0, 0, 0, 0, 1264, 0, 0, 1265, 0, + 0, 0, 2152, 0, 0, 0, 0, 1262, 0, 0, + 1263, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1264, 1262, 0, 0, 1263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1258, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1267, 0, 0, 1268, 1269, 1270, 0, 1271, 1272, 1273, + 1274, 1275, 1276, 0, 0, 1266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1260, 0, 1261, 0, 0, 1262, 1263, - 1264, 0, 1265, 1266, 1267, 1268, 1269, 1270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1261, 0, 0, 1262, 1263, 1264, - 1260, 1265, 1266, 1267, 1268, 1269, 1270, 0, 0, 0, + 0, 0, 1266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1261, 0, 0, 1262, 1263, 1264, 0, 1265, - 1266, 1267, 1268, 1269, 1270, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1267, 0, 0, 1268, 1269, + 1270, 0, 1271, 1272, 1273, 1274, 1275, 1276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1267, 0, 0, 1268, 1269, 1270, + 0, 1271, 1272, 1273, 1274, 1275, 1276, 0, 0, 965, + 0, 1618, 1267, 0, 0, 1268, 1269, 1270, 0, 1271, + 1272, 1273, 1274, 1275, 1276, 91, 92, 93, 94, 95, + 96, 97, 98, 966, 99, 100, 101, 967, 968, 969, + 970, 971, 972, 973, 102, 103, 974, 104, 105, 106, + 0, 108, 109, 110, 661, 662, 0, 663, 664, 975, + 116, 117, 118, 119, 120, 121, 976, 977, 122, 123, + 665, 666, 126, 978, 127, 128, 129, 130, 667, 979, + 0, 980, 133, 134, 135, 136, 137, 0, 139, 140, + 141, 981, 142, 143, 144, 145, 146, 147, 982, 0, + 149, 150, 151, 983, 984, 985, 0, 986, 987, 988, + 153, 154, 155, 156, 157, 158, 159, 668, 669, 162, + 989, 163, 990, 164, 165, 166, 167, 168, 169, 991, + 170, 171, 172, 173, 174, 992, 993, 175, 176, 177, + 178, 179, 994, 180, 181, 182, 995, 183, 184, 185, + 996, 186, 187, 188, 189, 670, 191, 192, 193, 194, + 671, 997, 196, 998, 197, 198, 672, 200, 999, 201, + 1000, 202, 0, 1001, 0, 205, 206, 207, 0, 209, + 1002, 210, 1003, 673, 212, 1004, 213, 214, 215, 216, + 217, 218, 0, 220, 221, 222, 223, 1005, 224, 225, + 226, 227, 228, 229, 1006, 230, 0, 674, 233, 234, + 235, 236, 675, 676, 1007, 677, 1008, 240, 0, 0, + 243, 0, 245, 246, 247, 248, 249, 1009, 1010, 250, + 0, 252, 0, 1011, 254, 255, 256, 1012, 1013, 257, + 258, 259, 260, 261, 678, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 679, 0, 680, 284, 285, 286, 681, + 1014, 288, 289, 0, 291, 1015, 682, 293, 683, 295, + 296, 297, 1016, 298, 299, 1017, 1018, 300, 301, 302, + 1019, 1020, 303, 684, 0, 306, 0, 685, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 1021, 319, + 320, 686, 322, 323, 687, 325, 326, 327, 1022, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 688, 338, + 339, 340, 341, 1023, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 1024, 354, 355, 0, + 357, 358, 359, 689, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 1025, 372, 373, 374, 375, + 376, 1026, 377, 690, 379, 380, 381, 0, 383, 384, + 691, 386, 1027, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 692, 399, 693, 401, 1028, 402, + 403, 1029, 404, 0, 406, 407, 408, 409, 410, 1030, + 694, 695, 1031, 1032, 413, 414, 696, 416, 697, 1033, + 418, 419, 698, 421, 422, 423, 424, 425, 1034, 1035, + 426, 427, 428, 429, 430, 1036, 1037, 431, 432, 433, + 434, 435, 1038, 700, 1039, 438, 0, 440, 441, 442, + 443, 1040, 1041, 444, 1042, 1043, 445, 446, 447, 448, + 449, 450, 701, 702, 703, 704, 705, 706, 707, 708, + 709, 710, 711, 462, 463, 464, 465, 965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 959, 0, 1612, 1261, - 0, 0, 1262, 1263, 1264, 0, 1265, 1266, 1267, 1268, - 1269, 1270, 90, 91, 92, 93, 94, 95, 96, 97, - 960, 98, 99, 100, 961, 962, 963, 964, 965, 966, - 967, 101, 102, 968, 103, 104, 105, 0, 107, 108, - 109, 656, 657, 0, 658, 659, 969, 115, 116, 117, - 118, 119, 120, 970, 971, 121, 122, 660, 661, 125, - 972, 126, 127, 128, 129, 662, 973, 0, 974, 132, - 133, 134, 135, 136, 0, 138, 139, 140, 975, 141, - 142, 143, 144, 145, 146, 976, 0, 148, 149, 150, - 977, 978, 979, 0, 980, 981, 982, 152, 153, 154, - 155, 156, 157, 158, 663, 664, 161, 983, 162, 984, - 163, 164, 165, 166, 167, 168, 985, 169, 170, 171, - 172, 173, 986, 987, 174, 175, 176, 177, 178, 988, - 179, 180, 181, 989, 182, 183, 184, 990, 185, 186, - 187, 188, 665, 190, 191, 192, 193, 666, 991, 195, - 992, 196, 197, 667, 199, 993, 200, 994, 201, 0, - 995, 0, 204, 205, 206, 0, 208, 996, 209, 997, - 668, 211, 998, 212, 213, 214, 215, 216, 217, 0, - 219, 220, 221, 222, 999, 223, 224, 225, 226, 227, - 228, 1000, 229, 0, 669, 232, 233, 234, 235, 670, - 671, 1001, 672, 1002, 239, 0, 0, 242, 0, 244, - 245, 246, 247, 248, 1003, 1004, 249, 0, 251, 0, - 1005, 253, 254, 255, 1006, 1007, 256, 257, 258, 259, - 260, 673, 262, 263, 264, 265, 266, 267, 268, 269, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 966, 99, 100, 101, 967, 968, 969, 970, 971, + 972, 973, 102, 103, 974, 104, 105, 106, 0, 108, + 109, 110, 661, 662, 0, 663, 664, 975, 116, 117, + 118, 119, 120, 121, 976, 977, 122, 123, 665, 666, + 126, 978, 127, 128, 129, 130, 667, 979, 0, 980, + 133, 134, 135, 136, 137, 0, 139, 140, 141, 981, + 142, 143, 144, 145, 146, 147, 982, 0, 149, 150, + 151, 983, 984, 985, 0, 986, 987, 988, 153, 154, + 155, 156, 157, 158, 159, 668, 669, 162, 989, 163, + 990, 164, 165, 166, 167, 168, 169, 991, 170, 171, + 172, 173, 174, 992, 993, 175, 176, 177, 178, 179, + 994, 180, 181, 182, 995, 183, 184, 185, 996, 186, + 187, 188, 189, 670, 191, 192, 193, 194, 671, 997, + 196, 998, 197, 198, 672, 200, 999, 201, 1000, 202, + 0, 1001, 0, 205, 206, 207, 0, 209, 1002, 210, + 1003, 673, 212, 1004, 213, 214, 215, 216, 217, 218, + 0, 220, 221, 222, 223, 1005, 224, 225, 226, 227, + 228, 229, 1006, 230, 0, 674, 233, 234, 235, 236, + 675, 676, 1007, 677, 1008, 240, 0, 0, 243, 0, + 245, 246, 247, 248, 249, 1009, 1010, 250, 0, 252, + 0, 1011, 254, 255, 256, 1012, 1013, 257, 258, 259, + 260, 261, 678, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 674, 0, 675, 283, 284, 285, 676, 1008, 287, 288, - 0, 290, 1009, 677, 292, 678, 294, 295, 296, 1010, - 297, 298, 1011, 1012, 299, 300, 301, 1013, 1014, 302, - 679, 0, 305, 0, 680, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 1015, 318, 319, 681, 321, - 322, 682, 324, 325, 326, 1016, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 683, 337, 338, 339, 340, - 1017, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 1018, 353, 354, 0, 356, 357, 358, - 684, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 1019, 371, 372, 373, 374, 375, 1020, 376, - 685, 378, 379, 380, 0, 382, 383, 686, 385, 1021, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 687, 398, 688, 1022, 400, 401, 1023, 402, 0, - 404, 405, 406, 407, 408, 1024, 689, 690, 1025, 1026, - 411, 412, 691, 414, 692, 1027, 416, 417, 693, 419, - 420, 421, 422, 423, 1028, 1029, 424, 425, 426, 427, - 428, 1030, 1031, 429, 430, 431, 432, 433, 1032, 695, - 1033, 436, 0, 438, 439, 440, 441, 1034, 1035, 442, - 1036, 1037, 443, 444, 445, 446, 447, 448, 696, 697, - 698, 699, 700, 701, 702, 703, 704, 705, 706, 460, - 461, 462, 463, 959, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 960, 98, 99, - 100, 961, 962, 963, 964, 965, 966, 967, 101, 102, - 968, 103, 104, 105, 0, 107, 108, 109, 656, 657, - 0, 658, 659, 969, 115, 116, 117, 118, 119, 120, - 970, 971, 121, 122, 660, 661, 125, 972, 126, 127, - 128, 129, 662, 973, 0, 974, 132, 133, 134, 135, - 136, 0, 138, 139, 140, 975, 141, 142, 143, 144, - 145, 146, 976, 0, 148, 149, 150, 977, 978, 979, - 0, 980, 981, 982, 152, 153, 154, 155, 156, 157, - 158, 663, 664, 161, 983, 162, 984, 163, 164, 165, - 166, 167, 168, 985, 169, 170, 171, 172, 173, 986, - 987, 174, 175, 176, 177, 178, 988, 179, 180, 181, - 989, 182, 183, 184, 990, 185, 186, 187, 188, 665, - 190, 191, 192, 193, 666, 991, 195, 992, 196, 197, - 667, 199, 993, 200, 994, 201, 0, 995, 0, 204, - 205, 206, 0, 208, 996, 209, 997, 668, 211, 998, - 212, 213, 214, 215, 216, 217, 0, 219, 220, 221, - 222, 999, 223, 224, 225, 226, 227, 228, 1000, 229, - 0, 669, 232, 233, 234, 235, 670, 671, 1001, 672, - 1002, 239, 0, 0, 242, 0, 244, 245, 246, 247, - 248, 1003, 1004, 249, 0, 251, 0, 1005, 253, 254, - 255, 1006, 1007, 256, 257, 258, 259, 260, 673, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 674, 0, 675, - 283, 284, 285, 676, 1008, 287, 288, 0, 290, 1009, - 677, 292, 678, 294, 295, 296, 1010, 297, 298, 1011, - 1012, 299, 300, 301, 1013, 1014, 302, 679, 0, 305, - 0, 680, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 1015, 318, 319, 681, 321, 322, 682, 324, - 325, 326, 1016, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 683, 337, 338, 339, 340, 1017, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 1018, 353, 354, 0, 356, 357, 358, 684, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 1019, - 371, 372, 373, 374, 375, 1020, 376, 685, 378, 379, - 380, 0, 382, 383, 686, 385, 1021, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 687, 398, - 688, 1022, 400, 401, 1023, 402, 0, 404, 405, 406, - 407, 408, 1024, 689, 690, 1025, 1026, 411, 412, 691, - 414, 692, 1027, 416, 417, 693, 419, 420, 421, 422, - 423, 1028, 1029, 424, 425, 426, 427, 428, 1030, 1031, - 429, 430, 431, 432, 433, 1032, 695, 1033, 436, 0, - 438, 439, 440, 441, 1034, 1035, 442, 1036, 1037, 443, - 444, 445, 446, 447, 448, 696, 697, 698, 699, 700, - 701, 702, 703, 704, 705, 706, 460, 461, 462, 463, - 959, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 91, 92, 93, - 1752, 95, 96, 97, 960, 98, 99, 100, 961, 962, - 963, 964, 965, 966, 967, 101, 102, 968, 103, 104, - 105, 0, 107, 108, 109, 656, 657, 0, 658, 659, - 969, 115, 116, 117, 118, 119, 120, 970, 971, 121, - 122, 660, 661, 125, 972, 126, 127, 128, 129, 662, - 973, 0, 974, 132, 133, 134, 135, 136, 0, 138, - 139, 140, 975, 141, 142, 143, 144, 145, 146, 976, - 0, 148, 149, 150, 977, 978, 979, 0, 980, 981, - 982, 152, 153, 154, 155, 156, 157, 158, 663, 664, - 161, 983, 162, 984, 163, 164, 165, 166, 167, 168, - 985, 169, 170, 171, 172, 173, 986, 987, 174, 175, - 176, 1753, 178, 988, 179, 180, 181, 989, 182, 183, - 184, 990, 185, 186, 187, 188, 665, 190, 191, 192, - 193, 666, 991, 195, 992, 196, 197, 667, 199, 993, - 200, 994, 201, 0, 995, 0, 204, 205, 206, 0, - 208, 996, 209, 997, 668, 211, 998, 212, 213, 214, - 215, 216, 217, 0, 219, 220, 221, 222, 999, 223, - 224, 225, 226, 227, 228, 1000, 229, 0, 669, 232, - 233, 234, 235, 670, 671, 1001, 672, 1002, 239, 0, - 0, 242, 0, 244, 245, 246, 247, 248, 1003, 1004, - 249, 0, 251, 0, 1005, 253, 254, 255, 1006, 1007, - 256, 257, 258, 259, 260, 673, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 674, 0, 675, 283, 284, 285, - 676, 1008, 287, 288, 0, 290, 1009, 677, 292, 678, - 294, 295, 296, 1010, 297, 298, 1011, 1012, 299, 300, - 301, 1013, 1014, 302, 679, 0, 305, 0, 680, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 1015, - 318, 319, 681, 321, 322, 682, 324, 325, 326, 1016, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 683, - 337, 338, 339, 340, 1017, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 1018, 353, 354, - 0, 356, 357, 358, 684, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 1019, 371, 372, 373, - 374, 375, 1020, 1754, 685, 378, 379, 380, 0, 382, - 383, 686, 385, 1021, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 687, 398, 688, 1022, 400, - 401, 1023, 402, 0, 404, 405, 406, 407, 408, 1024, - 689, 690, 1025, 1026, 411, 412, 691, 414, 692, 1027, - 416, 417, 693, 419, 420, 421, 422, 423, 1028, 1029, - 424, 425, 426, 427, 428, 1030, 1031, 429, 430, 431, - 432, 433, 1032, 695, 1033, 436, 0, 438, 439, 440, - 441, 1034, 1035, 442, 1036, 1037, 443, 444, 445, 446, - 447, 448, 696, 697, 698, 699, 700, 701, 702, 703, - 704, 705, 706, 460, 461, 462, 463, 89, 0, 0, + 280, 679, 0, 680, 284, 285, 286, 681, 1014, 288, + 289, 0, 291, 1015, 682, 293, 683, 295, 296, 297, + 1016, 298, 299, 1017, 1018, 300, 301, 302, 1019, 1020, + 303, 684, 0, 306, 0, 685, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 1021, 319, 320, 686, + 322, 323, 687, 325, 326, 327, 1022, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 688, 338, 339, 340, + 341, 1023, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 1024, 354, 355, 0, 357, 358, + 359, 689, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 1025, 372, 373, 374, 375, 376, 1026, + 377, 690, 379, 380, 381, 0, 383, 384, 691, 386, + 1027, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 692, 399, 693, 401, 1028, 402, 403, 1029, + 404, 0, 406, 407, 408, 409, 410, 1030, 694, 695, + 1031, 1032, 413, 414, 696, 416, 697, 1033, 418, 419, + 698, 421, 422, 423, 424, 425, 1034, 1035, 426, 427, + 428, 429, 430, 1036, 1037, 431, 432, 433, 434, 435, + 1038, 700, 1039, 438, 0, 440, 441, 442, 443, 1040, + 1041, 444, 1042, 1043, 445, 446, 447, 448, 449, 450, + 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, + 711, 462, 463, 464, 465, 965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 98, 99, 100, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 0, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 0, 115, 116, - 117, 118, 119, 120, 0, 736, 121, 122, 123, 124, - 125, 0, 126, 127, 128, 129, 739, 0, 740, 0, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 146, 0, 147, 148, 149, - 150, 741, 742, 743, 744, 745, 746, 747, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 0, 162, - 0, 163, 164, 165, 166, 167, 168, 0, 169, 170, - 171, 172, 173, 0, 0, 174, 175, 176, 177, 178, - 0, 179, 180, 181, 0, 182, 183, 184, 0, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 753, 0, - 195, 0, 196, 197, 198, 199, 0, 200, 0, 201, - 202, 0, 203, 204, 205, 206, 207, 208, 0, 209, - 0, 210, 211, 0, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 0, 223, 224, 225, 226, - 227, 228, 0, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 0, 238, 0, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 0, 0, 249, 250, 251, - 252, 0, 253, 254, 255, 759, 760, 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, 0, 287, - 288, 289, 290, 0, 765, 292, 293, 294, 295, 296, - 0, 297, 298, 0, 0, 299, 300, 301, 0, 0, - 302, 303, 304, 305, 306, 768, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 0, 318, 319, 769, - 321, 322, 323, 324, 325, 326, 0, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 0, 371, 372, 373, 374, 375, 772, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 0, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 774, 0, 400, 401, 0, 402, - 403, 404, 405, 406, 407, 408, 0, 409, 410, 0, - 0, 411, 412, 777, 414, 778, 0, 416, 417, 780, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 781, 0, 429, 430, 431, 432, 433, 434, - 435, 0, 436, 437, 438, 439, 440, 441, 0, 0, - 442, 0, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 89, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 98, - 99, 100, 0, 0, 0, 0, 0, 0, 0, 101, - 102, 0, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 0, 115, 116, 117, 118, 119, - 120, 0, 0, 121, 122, 123, 124, 125, 0, 126, - 127, 128, 129, 130, 0, 131, 0, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 0, 141, 142, 143, - 144, 145, 146, 0, 147, 148, 149, 150, 0, 0, - 0, 151, 0, 0, 0, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 0, 162, 0, 163, 164, - 165, 166, 167, 168, 0, 169, 170, 171, 172, 173, - 0, 0, 174, 175, 176, 177, 178, 0, 179, 180, - 181, 0, 182, 183, 184, 0, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 0, 195, 0, 196, - 197, 198, 199, 0, 200, 0, 201, 202, 0, 203, - 204, 205, 206, 207, 208, 0, 209, 0, 210, 211, - 0, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 0, 223, 224, 225, 226, 227, 228, 0, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 0, - 238, 0, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 0, 0, 249, 250, 251, 252, 0, 253, - 254, 255, 0, 0, 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, 0, 287, 288, 289, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 0, 0, 299, 300, 301, 0, 0, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 0, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 0, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, + 0, 91, 92, 93, 94, 1758, 96, 97, 98, 966, + 99, 100, 101, 967, 968, 969, 970, 971, 972, 973, + 102, 103, 974, 104, 105, 106, 0, 108, 109, 110, + 661, 662, 0, 663, 664, 975, 116, 117, 118, 119, + 120, 121, 976, 977, 122, 123, 665, 666, 126, 978, + 127, 128, 129, 130, 667, 979, 0, 980, 133, 134, + 135, 136, 137, 0, 139, 140, 141, 981, 142, 143, + 144, 145, 146, 147, 982, 0, 149, 150, 151, 983, + 984, 985, 0, 986, 987, 988, 153, 154, 155, 156, + 157, 158, 159, 668, 669, 162, 989, 163, 990, 164, + 165, 166, 167, 168, 169, 991, 170, 171, 172, 173, + 174, 992, 993, 175, 176, 177, 1759, 179, 994, 180, + 181, 182, 995, 183, 184, 185, 996, 186, 187, 188, + 189, 670, 191, 192, 193, 194, 671, 997, 196, 998, + 197, 198, 672, 200, 999, 201, 1000, 202, 0, 1001, + 0, 205, 206, 207, 0, 209, 1002, 210, 1003, 673, + 212, 1004, 213, 214, 215, 216, 217, 218, 0, 220, + 221, 222, 223, 1005, 224, 225, 226, 227, 228, 229, + 1006, 230, 0, 674, 233, 234, 235, 236, 675, 676, + 1007, 677, 1008, 240, 0, 0, 243, 0, 245, 246, + 247, 248, 249, 1009, 1010, 250, 0, 252, 0, 1011, + 254, 255, 256, 1012, 1013, 257, 258, 259, 260, 261, + 678, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 679, + 0, 680, 284, 285, 286, 681, 1014, 288, 289, 0, + 291, 1015, 682, 293, 683, 295, 296, 297, 1016, 298, + 299, 1017, 1018, 300, 301, 302, 1019, 1020, 303, 684, + 0, 306, 0, 685, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 1021, 319, 320, 686, 322, 323, + 687, 325, 326, 327, 1022, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 688, 338, 339, 340, 341, 1023, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 0, 353, 354, 355, 356, 357, 358, 359, 360, + 352, 353, 1024, 354, 355, 0, 357, 358, 359, 689, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 0, 371, 372, 373, 374, 375, 0, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 0, 386, 387, + 371, 1025, 372, 373, 374, 375, 376, 1026, 1760, 690, + 379, 380, 381, 0, 383, 384, 691, 386, 1027, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 0, 400, 401, 0, 402, 403, 404, 405, - 406, 407, 408, 0, 409, 410, 0, 0, 411, 412, - 413, 414, 415, 0, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 0, - 0, 429, 430, 431, 432, 433, 434, 435, 0, 436, - 437, 438, 439, 440, 441, 0, 0, 442, 0, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 488, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 94, 95, 96, 97, 0, 98, 99, 100, 0, - 0, 0, 0, 0, 0, 0, 101, 102, 0, 103, - 104, 105, 0, 107, 108, 109, 110, 111, 0, 113, - 114, 0, 115, 116, 117, 118, 119, 120, 0, 0, - 121, 122, 123, 124, 125, 1356, 126, 127, 128, 129, - 130, 0, 0, 1357, 132, 133, 134, 135, 136, 0, - 138, 139, 140, 1358, 141, 142, 143, 144, 145, 146, - 0, 0, 148, 149, 150, 0, 0, 0, 0, 0, - 0, 0, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 0, 162, 0, 163, 164, 165, 166, 167, - 168, 0, 169, 170, 171, 172, 173, 0, 0, 174, - 175, 176, 177, 178, 0, 179, 180, 181, 0, 182, - 183, 184, 0, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 0, 195, 0, 196, 197, 198, 199, - 0, 200, 1359, 201, 0, 0, 0, 204, 205, 206, - 0, 208, 0, 209, 0, 210, 211, 0, 212, 213, - 214, 215, 216, 1360, 0, 219, 220, 221, 222, 0, - 223, 224, 225, 226, 227, 228, 0, 229, 0, 231, - 232, 233, 234, 235, 236, 237, 0, 238, 0, 239, - 0, 0, 242, 0, 244, 245, 246, 247, 248, 0, - 0, 249, 0, 251, 0, 0, 253, 254, 255, 0, - 0, 256, 257, 258, 259, 260, 490, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 0, 282, 283, 284, - 285, 286, 0, 287, 288, 0, 290, 0, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 0, 0, 299, - 300, 301, 0, 0, 302, 303, 0, 305, 0, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 0, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 1361, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 0, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, - 373, 374, 375, 0, 376, 377, 378, 379, 380, 0, - 382, 383, 384, 385, 0, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 492, 398, 399, 0, - 400, 401, 0, 402, 0, 404, 405, 406, 407, 408, - 0, 409, 410, 0, 0, 411, 412, 413, 414, 415, - 0, 416, 417, 418, 419, 420, 421, 422, 423, 0, - 1362, 424, 425, 426, 427, 428, 0, 0, 429, 430, - 431, 432, 433, 434, 435, 0, 436, 0, 438, 439, - 440, 441, 0, 0, 442, 0, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 488, 0, + 692, 399, 693, 401, 1028, 402, 403, 1029, 404, 0, + 406, 407, 408, 409, 410, 1030, 694, 695, 1031, 1032, + 413, 414, 696, 416, 697, 1033, 418, 419, 698, 421, + 422, 423, 424, 425, 1034, 1035, 426, 427, 428, 429, + 430, 1036, 1037, 431, 432, 433, 434, 435, 1038, 700, + 1039, 438, 0, 440, 441, 442, 443, 1040, 1041, 444, + 1042, 1043, 445, 446, 447, 448, 449, 450, 701, 702, + 703, 704, 705, 706, 707, 708, 709, 710, 711, 462, + 463, 464, 465, 90, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 0, 0, 0, 0, 0, 0, 0, 102, 103, + 0, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 0, 116, 117, 118, 119, 120, 121, + 0, 741, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 130, 744, 0, 745, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 148, 149, 150, 151, 746, 747, 748, + 749, 750, 751, 752, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 0, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 758, 0, 196, 0, 197, 198, + 199, 200, 0, 201, 0, 202, 203, 0, 204, 205, + 206, 207, 208, 209, 0, 210, 0, 211, 212, 0, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 0, 239, + 0, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 0, 0, 250, 251, 252, 253, 0, 254, 255, + 256, 764, 765, 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, 0, 288, 289, 290, 291, 0, + 770, 293, 294, 295, 296, 297, 0, 298, 299, 0, + 0, 300, 301, 302, 0, 0, 303, 304, 305, 306, + 307, 773, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 774, 322, 323, 324, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 376, 777, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 779, 401, 0, 402, 403, 0, 404, 405, 406, 407, + 408, 409, 410, 0, 411, 412, 0, 0, 413, 414, + 782, 416, 783, 0, 418, 419, 785, 421, 422, 423, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 786, + 0, 431, 432, 433, 434, 435, 436, 437, 0, 438, + 439, 440, 441, 442, 443, 0, 0, 444, 0, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 90, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 0, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 131, 0, 132, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 148, 149, 150, 151, 0, 0, 0, 152, 0, + 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 203, 0, 204, 205, 206, 207, + 208, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 0, + 0, 250, 251, 252, 253, 0, 254, 255, 256, 0, + 0, 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, 0, 288, 289, 290, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 0, 300, + 301, 302, 0, 0, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 0, 402, 403, 0, 404, 405, 406, 407, 408, 409, + 410, 0, 411, 412, 0, 0, 413, 414, 415, 416, + 417, 0, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 0, 0, 431, + 432, 433, 434, 435, 436, 437, 0, 438, 439, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 98, 99, 100, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 0, 103, 104, 105, 0, - 107, 108, 109, 110, 111, 0, 113, 114, 0, 115, - 116, 117, 118, 119, 120, 0, 0, 121, 122, 123, - 124, 125, 1356, 126, 127, 128, 129, 130, 0, 0, - 0, 132, 133, 134, 135, 136, 0, 138, 139, 140, - 1358, 141, 142, 143, 144, 145, 146, 0, 0, 148, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 0, - 162, 0, 163, 164, 165, 166, 167, 168, 0, 169, - 170, 171, 172, 173, 0, 0, 174, 175, 176, 177, - 178, 0, 179, 180, 181, 0, 182, 183, 184, 0, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 0, 195, 0, 196, 197, 198, 199, 0, 200, 1359, - 201, 0, 0, 0, 204, 205, 206, 0, 208, 0, - 209, 0, 210, 211, 0, 212, 213, 214, 215, 216, - 217, 0, 219, 220, 221, 222, 0, 223, 224, 225, - 226, 227, 228, 0, 229, 0, 231, 232, 233, 234, - 235, 236, 237, 0, 238, 0, 239, 0, 0, 242, - 0, 244, 245, 246, 247, 248, 0, 0, 249, 0, - 251, 1815, 0, 253, 254, 255, 0, 0, 256, 257, - 258, 259, 260, 490, 262, 263, 264, 265, 266, 267, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 99, 100, 101, 0, 0, 0, + 0, 0, 0, 0, 102, 103, 0, 104, 105, 106, + 0, 108, 109, 110, 111, 112, 0, 114, 115, 0, + 116, 117, 118, 119, 120, 121, 0, 0, 122, 123, + 124, 125, 126, 1362, 127, 128, 129, 130, 131, 0, + 0, 1363, 133, 134, 135, 136, 137, 0, 139, 140, + 141, 1364, 142, 143, 144, 145, 146, 147, 0, 0, + 149, 150, 151, 0, 0, 0, 0, 0, 0, 0, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 0, 163, 0, 164, 165, 166, 167, 168, 169, 0, + 170, 171, 172, 173, 174, 0, 0, 175, 176, 177, + 178, 179, 0, 180, 181, 182, 0, 183, 184, 185, + 0, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 0, 196, 0, 197, 198, 199, 200, 0, 201, + 1365, 202, 0, 0, 0, 205, 206, 207, 0, 209, + 0, 210, 0, 211, 212, 0, 213, 214, 215, 216, + 217, 1366, 0, 220, 221, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 232, 233, 234, + 235, 236, 237, 238, 0, 239, 0, 240, 0, 0, + 243, 0, 245, 246, 247, 248, 249, 0, 0, 250, + 0, 252, 0, 0, 254, 255, 256, 0, 0, 257, + 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 0, 282, 283, 284, 285, 286, 0, - 287, 288, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 0, 0, 299, 300, 301, 0, - 0, 302, 303, 0, 305, 0, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 1361, 327, 328, + 278, 279, 280, 281, 0, 283, 284, 285, 286, 287, + 0, 288, 289, 0, 291, 0, 292, 293, 294, 295, + 296, 297, 0, 298, 299, 0, 0, 300, 301, 302, + 0, 0, 303, 304, 0, 306, 0, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 0, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 1367, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 0, 353, 354, 0, 356, + 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 0, 371, 372, 373, 374, 375, - 0, 376, 377, 378, 379, 380, 0, 382, 383, 384, - 385, 0, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 492, 398, 399, 0, 400, 401, 0, - 402, 0, 404, 405, 406, 407, 408, 0, 409, 410, - 0, 0, 411, 412, 413, 414, 415, 0, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 1362, 424, 425, - 426, 427, 428, 0, 0, 429, 430, 431, 432, 433, - 434, 435, 0, 436, 0, 438, 439, 440, 441, 0, - 0, 442, 0, 0, 443, 444, 445, 446, 447, 448, + 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, + 376, 0, 377, 378, 379, 380, 381, 0, 383, 384, + 385, 386, 0, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 494, 399, 400, 401, 0, 402, + 403, 0, 404, 0, 406, 407, 408, 409, 410, 0, + 411, 412, 0, 0, 413, 414, 415, 416, 417, 0, + 418, 419, 420, 421, 422, 423, 424, 425, 0, 1368, + 426, 427, 428, 429, 430, 0, 0, 431, 432, 433, + 434, 435, 436, 437, 0, 438, 0, 440, 441, 442, + 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 655, 0, 535, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 0, 103, 104, 105, 0, 107, 108, 109, - 656, 657, 0, 658, 659, 0, 115, 116, 117, 118, - 119, 120, 0, 0, 121, 122, 660, 661, 125, 0, - 126, 127, 128, 129, 662, 0, 0, 0, 132, 133, - 134, 135, 136, 0, 138, 139, 140, 0, 141, 142, - 143, 144, 145, 146, 0, 0, 148, 149, 150, 0, - 0, 0, 0, 0, 0, 0, 152, 153, 154, 155, - 156, 157, 158, 663, 664, 161, 0, 162, 0, 163, - 164, 165, 166, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 174, 175, 176, 177, 178, 0, 179, - 180, 181, 0, 182, 183, 184, 0, 185, 186, 187, - 188, 665, 190, 191, 192, 193, 666, 1084, 195, 0, - 196, 197, 667, 199, 0, 200, 0, 201, 0, 0, - 0, 204, 205, 206, 0, 208, 0, 209, 0, 668, - 211, 0, 212, 213, 214, 215, 216, 217, 0, 219, - 220, 221, 222, 0, 223, 224, 225, 226, 227, 228, - 0, 229, 0, 669, 232, 233, 234, 235, 670, 671, - 0, 672, 0, 239, 0, 0, 242, 0, 244, 245, - 246, 247, 248, 0, 0, 249, 0, 251, 0, 0, - 253, 254, 255, 0, 0, 256, 257, 258, 259, 260, - 673, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 674, - 0, 675, 283, 284, 285, 676, 0, 287, 288, 0, - 290, 0, 677, 292, 678, 294, 295, 296, 0, 297, - 298, 1085, 0, 299, 300, 301, 0, 0, 302, 679, - 0, 305, 0, 680, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 0, 318, 319, 681, 321, 322, - 682, 324, 325, 326, 0, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 683, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 0, 356, 357, 358, 684, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 0, 371, 372, 373, 374, 375, 0, 376, 685, - 378, 379, 380, 0, 382, 383, 686, 385, 0, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 687, 398, 688, 0, 400, 401, 0, 402, 0, 404, - 405, 406, 407, 408, 0, 689, 690, 0, 0, 411, - 412, 691, 414, 692, 1086, 416, 417, 693, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 0, 0, 429, 430, 431, 432, 433, 1032, 695, 0, - 436, 0, 438, 439, 440, 441, 0, 0, 442, 0, - 0, 443, 444, 445, 446, 447, 448, 696, 697, 698, - 699, 700, 701, 702, 703, 704, 705, 706, 460, 461, - 462, 463, 488, 0, 560, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 98, 99, 100, - 3, 4, 0, 0, 0, 0, 0, 101, 102, 0, - 103, 104, 105, 0, 107, 108, 109, 110, 111, 0, - 113, 114, 0, 115, 116, 117, 118, 119, 120, 0, - 0, 121, 122, 123, 124, 125, 0, 126, 127, 128, - 129, 130, 0, 0, 0, 132, 133, 134, 135, 136, - 0, 138, 139, 140, 0, 141, 142, 143, 144, 145, - 146, 0, 0, 148, 149, 150, 0, 0, 0, 0, - 0, 0, 0, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 0, 162, 0, 163, 164, 165, 166, - 167, 168, 0, 169, 170, 171, 172, 173, 0, 0, - 174, 175, 176, 177, 178, 0, 179, 180, 181, 0, - 182, 183, 184, 0, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 0, 195, 0, 196, 197, 198, - 199, 0, 200, 0, 201, 0, 0, 0, 204, 205, - 206, 0, 208, 0, 209, 0, 210, 211, 0, 212, - 213, 214, 215, 216, 217, 0, 219, 220, 221, 222, - 0, 223, 224, 225, 226, 227, 228, 0, 229, 0, - 231, 232, 233, 234, 235, 236, 237, 0, 238, 0, - 239, 0, 0, 242, 0, 244, 245, 246, 247, 248, - 0, 0, 249, 0, 251, 0, 0, 253, 254, 255, - 0, 0, 256, 257, 258, 259, 260, 490, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 0, 282, 283, - 284, 285, 286, 0, 287, 288, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 0, 0, - 299, 300, 301, 0, 0, 302, 303, 0, 305, 0, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 0, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 0, - 353, 354, 0, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 0, 371, - 372, 373, 374, 375, 0, 376, 377, 378, 379, 380, - 0, 382, 383, 384, 385, 0, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 492, 398, 399, - 0, 400, 401, 0, 402, 0, 404, 405, 406, 407, - 408, 0, 409, 410, 0, 0, 411, 412, 413, 414, - 415, 0, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 0, 0, 429, - 430, 431, 432, 433, 434, 435, 0, 436, 0, 438, - 439, 440, 441, 0, 0, 442, 0, 0, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 488, - 0, 560, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 98, 99, 100, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 0, 103, 104, 105, - 0, 107, 108, 109, 110, 111, 0, 113, 114, 0, - 115, 116, 117, 118, 119, 120, 0, 0, 121, 122, - 123, 124, 125, 0, 126, 127, 128, 129, 130, 0, - 0, 0, 132, 133, 134, 135, 136, 0, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 146, 0, 0, - 148, 149, 150, 0, 0, 0, 0, 0, 0, 0, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 0, 162, 0, 163, 164, 165, 166, 167, 168, 0, - 169, 170, 171, 172, 173, 0, 0, 174, 175, 176, - 177, 178, 0, 179, 180, 181, 0, 182, 183, 184, - 0, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 0, 195, 0, 196, 197, 198, 199, 0, 200, - 0, 201, 0, 0, 0, 204, 205, 206, 0, 208, - 0, 209, 0, 210, 211, 0, 212, 213, 214, 215, - 216, 217, 0, 219, 220, 221, 222, 0, 223, 224, - 225, 226, 227, 228, 0, 229, 0, 231, 232, 233, - 234, 235, 236, 237, 0, 238, 0, 239, 0, 0, - 242, 0, 244, 245, 246, 247, 248, 0, 0, 249, - 0, 251, 0, 0, 253, 254, 255, 0, 0, 256, - 257, 258, 259, 260, 490, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 0, 282, 283, 284, 285, 286, - 0, 287, 288, 0, 290, 0, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 0, 561, 299, 300, 301, - 0, 0, 302, 303, 0, 305, 0, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 0, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 0, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 0, 353, 354, 0, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, - 375, 0, 376, 377, 378, 379, 380, 0, 382, 383, - 384, 385, 0, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 492, 398, 399, 0, 400, 401, - 0, 402, 0, 404, 405, 406, 407, 408, 0, 409, - 410, 0, 0, 411, 412, 413, 414, 415, 0, 416, - 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, - 425, 426, 427, 428, 0, 0, 429, 430, 431, 432, - 433, 434, 435, 0, 436, 0, 438, 439, 440, 441, - 0, 0, 442, 0, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 488, 0, 560, 0, + 459, 460, 461, 462, 463, 464, 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 98, 99, 100, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 0, 103, 104, 105, 0, 107, 108, - 109, 110, 111, 0, 113, 114, 0, 115, 116, 117, - 118, 119, 120, 0, 0, 121, 122, 123, 124, 125, - 0, 126, 127, 128, 129, 130, 0, 0, 0, 132, - 133, 134, 135, 136, 0, 138, 139, 140, 0, 141, - 142, 143, 144, 145, 146, 0, 0, 148, 149, 150, - 0, 0, 0, 0, 0, 0, 0, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 0, 162, 0, - 163, 164, 165, 166, 167, 168, 0, 169, 170, 171, - 172, 173, 0, 0, 174, 175, 176, 177, 178, 0, - 179, 180, 181, 0, 182, 183, 184, 0, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 0, 195, - 0, 196, 197, 198, 199, 0, 200, 0, 201, 0, - 0, 0, 204, 205, 206, 0, 208, 0, 209, 0, - 210, 211, 0, 212, 213, 214, 215, 216, 606, 0, - 219, 220, 221, 222, 0, 223, 224, 225, 226, 227, - 228, 0, 229, 0, 231, 232, 233, 234, 235, 236, - 237, 0, 238, 0, 239, 0, 0, 242, 0, 244, - 245, 246, 247, 248, 0, 0, 249, 0, 251, 0, - 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, - 260, 490, 262, 263, 264, 265, 266, 267, 268, 269, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 99, 100, 101, 0, 0, 0, 0, 0, + 0, 0, 102, 103, 0, 104, 105, 106, 0, 108, + 109, 110, 111, 112, 0, 114, 115, 0, 116, 117, + 118, 119, 120, 121, 0, 0, 122, 123, 124, 125, + 126, 1362, 127, 128, 129, 130, 131, 0, 0, 0, + 133, 134, 135, 136, 137, 0, 139, 140, 141, 1364, + 142, 143, 144, 145, 146, 147, 0, 0, 149, 150, + 151, 0, 0, 0, 0, 0, 0, 0, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 0, 163, + 0, 164, 165, 166, 167, 168, 169, 0, 170, 171, + 172, 173, 174, 0, 0, 175, 176, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 0, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, + 196, 0, 197, 198, 199, 200, 0, 201, 1365, 202, + 0, 0, 0, 205, 206, 207, 0, 209, 0, 210, + 0, 211, 212, 0, 213, 214, 215, 216, 217, 218, + 0, 220, 221, 222, 223, 0, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 232, 233, 234, 235, 236, + 237, 238, 0, 239, 0, 240, 0, 0, 243, 0, + 245, 246, 247, 248, 249, 0, 0, 250, 0, 252, + 1823, 0, 254, 255, 256, 0, 0, 257, 258, 259, + 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 0, 282, 283, 284, 285, 286, 0, 287, 288, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 0, 561, 299, 300, 301, 0, 0, 302, - 303, 0, 305, 0, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 0, 327, 328, 329, 330, + 280, 281, 0, 283, 284, 285, 286, 287, 0, 288, + 289, 0, 291, 0, 292, 293, 294, 295, 296, 297, + 0, 298, 299, 0, 0, 300, 301, 302, 0, 0, + 303, 304, 0, 306, 0, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 0, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 1367, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 0, 353, 354, 0, 356, 357, 358, + 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 0, 371, 372, 373, 374, 375, 0, 376, - 377, 378, 379, 380, 0, 382, 383, 384, 385, 0, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 492, 398, 399, 0, 400, 401, 0, 402, 0, - 404, 405, 406, 407, 408, 0, 409, 410, 0, 0, - 411, 412, 413, 414, 415, 0, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 0, 0, 429, 430, 431, 432, 433, 434, 435, - 0, 436, 0, 438, 439, 440, 441, 0, 0, 442, - 0, 0, 443, 444, 445, 446, 447, 448, 449, 450, + 369, 370, 371, 0, 372, 373, 374, 375, 376, 0, + 377, 378, 379, 380, 381, 0, 383, 384, 385, 386, + 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 494, 399, 400, 401, 0, 402, 403, 0, + 404, 0, 406, 407, 408, 409, 410, 0, 411, 412, + 0, 0, 413, 414, 415, 416, 417, 0, 418, 419, + 420, 421, 422, 423, 424, 425, 0, 1368, 426, 427, + 428, 429, 430, 0, 0, 431, 432, 433, 434, 435, + 436, 437, 0, 438, 0, 440, 441, 442, 443, 0, + 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 655, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 98, 99, - 100, 3, 4, 0, 0, 0, 0, 0, 101, 102, - 0, 103, 104, 105, 0, 107, 108, 109, 656, 657, - 0, 658, 659, 0, 115, 116, 117, 118, 119, 120, - 0, 0, 121, 122, 660, 661, 125, 0, 126, 127, - 128, 129, 662, 0, 0, 0, 132, 133, 134, 135, - 136, 0, 138, 139, 140, 0, 141, 142, 143, 144, - 145, 146, 0, 0, 148, 149, 150, 0, 0, 0, - 0, 0, 0, 0, 152, 153, 154, 155, 156, 157, - 158, 663, 664, 161, 0, 162, 0, 163, 164, 165, - 166, 167, 168, 0, 169, 170, 171, 172, 173, 0, - 0, 174, 175, 176, 177, 178, 0, 179, 180, 181, - 0, 182, 183, 184, 0, 185, 186, 187, 188, 665, - 190, 191, 192, 193, 666, 0, 195, 0, 196, 197, - 667, 199, 0, 200, 0, 201, 0, 0, 0, 204, - 205, 206, 0, 208, 0, 209, 0, 668, 211, 0, - 212, 213, 214, 215, 216, 217, 0, 219, 220, 221, - 222, 0, 223, 224, 225, 226, 227, 228, 0, 229, - 0, 669, 232, 233, 234, 235, 670, 671, 0, 672, - 0, 239, 0, 0, 242, 0, 244, 245, 246, 247, - 248, 0, 0, 249, 0, 251, 0, 0, 253, 254, - 255, 0, 0, 256, 257, 258, 259, 260, 673, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 674, 0, 675, - 283, 284, 285, 676, 0, 287, 288, 0, 290, 0, - 677, 292, 678, 294, 295, 296, 0, 297, 298, 0, - 0, 299, 300, 301, 0, 0, 302, 679, 0, 305, - 0, 680, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 0, 318, 319, 681, 321, 322, 682, 324, - 325, 326, 0, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 683, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 0, 356, 357, 358, 684, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 0, - 371, 372, 373, 374, 375, 0, 376, 685, 378, 379, - 380, 0, 382, 383, 686, 385, 0, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 687, 398, - 688, 0, 400, 401, 0, 402, 0, 404, 405, 406, - 407, 408, 0, 689, 690, 0, 0, 411, 412, 691, - 414, 692, 0, 416, 417, 693, 419, 420, 421, 422, - 423, 0, 0, 424, 425, 426, 427, 428, 0, 0, - 429, 430, 431, 432, 433, 1032, 695, 0, 436, 0, - 438, 439, 440, 441, 0, 0, 442, 0, 0, 443, - 444, 445, 446, 447, 448, 696, 697, 698, 699, 700, - 701, 702, 703, 704, 705, 706, 460, 461, 462, 463, - 488, 0, 560, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 91, 92, 93, - 94, 95, 96, 97, 0, 98, 99, 100, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 0, 103, 104, - 105, 0, 107, 108, 109, 110, 111, 0, 113, 114, - 0, 115, 116, 117, 118, 119, 120, 0, 0, 121, - 122, 123, 124, 125, 0, 126, 127, 128, 129, 130, - 0, 0, 0, 132, 133, 134, 135, 136, 0, 138, - 139, 140, 0, 141, 142, 143, 144, 145, 146, 0, - 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, - 0, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 0, 162, 0, 163, 164, 165, 166, 167, 168, - 0, 169, 170, 171, 172, 173, 0, 0, 174, 175, - 176, 177, 178, 0, 179, 180, 181, 0, 182, 183, - 184, 0, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 0, 195, 0, 196, 197, 198, 199, 0, - 200, 0, 201, 0, 0, 0, 204, 205, 206, 0, - 1665, 0, 209, 0, 210, 211, 0, 212, 213, 214, - 215, 216, 217, 0, 219, 220, 221, 222, 0, 223, - 224, 225, 226, 227, 228, 0, 229, 0, 231, 232, - 233, 234, 235, 236, 237, 0, 238, 0, 239, 0, - 0, 242, 0, 244, 245, 246, 247, 248, 0, 0, - 249, 0, 251, 0, 0, 253, 254, 1666, 0, 0, - 256, 257, 258, 259, 260, 490, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 0, 282, 283, 284, 285, - 286, 0, 287, 288, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 0, 0, 299, 300, - 301, 0, 0, 302, 303, 0, 305, 0, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 0, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, - 0, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 0, 371, 372, 373, - 374, 375, 0, 376, 377, 378, 379, 380, 0, 382, - 383, 384, 385, 0, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 492, 398, 399, 0, 400, - 401, 1667, 402, 0, 404, 1668, 406, 1669, 408, 0, - 409, 410, 0, 0, 411, 412, 413, 414, 415, 0, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 1670, 427, 428, 0, 0, 429, 430, 431, - 432, 433, 434, 435, 0, 436, 0, 438, 439, 440, - 441, 0, 0, 442, 0, 0, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 488, 2567, 0, - 0, 0, 0, 2568, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 98, 99, 100, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 0, 103, 104, 105, 0, 107, - 108, 109, 110, 111, 0, 113, 114, 0, 115, 116, - 117, 118, 119, 120, 0, 0, 121, 122, 123, 124, - 125, 0, 126, 127, 128, 129, 130, 0, 0, 0, - 132, 133, 134, 135, 136, 0, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 146, 0, 0, 148, 149, - 150, 0, 0, 0, 0, 0, 0, 0, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 0, 162, - 0, 163, 164, 165, 166, 167, 168, 0, 169, 170, - 171, 172, 173, 0, 0, 174, 175, 176, 177, 178, - 0, 179, 180, 181, 0, 182, 183, 184, 0, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 0, - 195, 0, 196, 197, 198, 199, 0, 200, 0, 201, - 0, 0, 0, 204, 205, 206, 0, 208, 0, 209, - 0, 210, 211, 0, 212, 213, 214, 215, 216, 217, - 0, 219, 220, 221, 222, 0, 223, 224, 225, 226, - 227, 228, 0, 229, 0, 231, 232, 233, 234, 235, - 236, 237, 0, 238, 0, 239, 0, 0, 242, 0, - 244, 245, 246, 247, 248, 0, 0, 249, 0, 251, - 0, 0, 253, 254, 255, 0, 0, 256, 257, 258, - 259, 260, 490, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 0, 282, 283, 284, 285, 286, 0, 287, - 288, 0, 290, 0, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 0, 0, 299, 300, 301, 0, 0, - 302, 303, 0, 305, 0, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 0, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 0, 353, 354, 0, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 0, 371, 372, 373, 374, 375, 0, - 376, 377, 378, 379, 380, 0, 382, 383, 384, 385, - 0, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 492, 398, 399, 0, 400, 401, 0, 402, - 0, 404, 405, 406, 407, 408, 0, 409, 410, 0, - 0, 411, 412, 413, 414, 415, 0, 416, 417, 418, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 0, 0, 429, 430, 431, 432, 433, 434, - 435, 0, 436, 0, 438, 439, 440, 441, 0, 0, - 442, 0, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 488, 0, 0, 0, 0, 0, + 461, 462, 463, 464, 465, 660, 0, 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 95, 96, 97, 489, 98, - 99, 100, 0, 0, 0, 0, 0, 0, 0, 101, - 102, 0, 103, 104, 105, 0, 107, 108, 109, 110, - 111, 0, 113, 114, 0, 115, 116, 117, 118, 119, - 120, 0, 0, 121, 122, 123, 124, 125, 0, 126, - 127, 128, 129, 130, 0, 0, 0, 132, 133, 134, - 135, 136, 0, 138, 139, 140, 0, 141, 142, 143, - 144, 145, 146, 0, 0, 148, 149, 150, 0, 0, - 0, 0, 0, 0, 0, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 0, 162, 0, 163, 164, - 165, 166, 167, 168, 0, 169, 170, 171, 172, 173, - 0, 0, 174, 175, 176, 177, 178, 0, 179, 180, - 181, 0, 182, 183, 184, 0, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 0, 195, 0, 196, - 197, 198, 199, 0, 200, 0, 201, 0, 0, 0, - 204, 205, 206, 0, 208, 0, 209, 0, 210, 211, - 0, 212, 213, 214, 215, 216, 217, 0, 219, 220, - 221, 222, 0, 223, 224, 225, 226, 227, 228, 0, - 229, 0, 231, 232, 233, 234, 235, 236, 237, 0, - 238, 0, 239, 0, 0, 242, 0, 244, 245, 246, - 247, 248, 0, 0, 249, 0, 251, 0, 0, 253, - 254, 255, 0, 0, 256, 257, 258, 259, 260, 490, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 0, - 282, 283, 284, 285, 286, 0, 287, 288, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 0, 0, 299, 300, 301, 0, 0, 302, 303, 0, - 305, 0, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 0, 318, 319, 320, 321, 322, 323, - 491, 325, 326, 0, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 99, 100, 101, 0, 0, 0, 0, 0, 0, 0, + 102, 103, 0, 104, 105, 106, 0, 108, 109, 110, + 661, 662, 0, 663, 664, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 122, 123, 665, 666, 126, 0, + 127, 128, 129, 130, 667, 0, 0, 0, 133, 134, + 135, 136, 137, 0, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 0, 149, 150, 151, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 155, 156, + 157, 158, 159, 668, 669, 162, 0, 163, 0, 164, + 165, 166, 167, 168, 169, 0, 170, 171, 172, 173, + 174, 0, 0, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 0, 183, 184, 185, 0, 186, 187, 188, + 189, 670, 191, 192, 193, 194, 671, 1090, 196, 0, + 197, 198, 672, 200, 0, 201, 0, 202, 0, 0, + 0, 205, 206, 207, 0, 209, 0, 210, 0, 673, + 212, 0, 213, 214, 215, 216, 217, 218, 0, 220, + 221, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 674, 233, 234, 235, 236, 675, 676, + 0, 677, 0, 240, 0, 0, 243, 0, 245, 246, + 247, 248, 249, 0, 0, 250, 0, 252, 0, 0, + 254, 255, 256, 0, 0, 257, 258, 259, 260, 261, + 678, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 679, + 0, 680, 284, 285, 286, 681, 0, 288, 289, 0, + 291, 0, 682, 293, 683, 295, 296, 297, 0, 298, + 299, 1091, 0, 300, 301, 302, 0, 0, 303, 684, + 0, 306, 0, 685, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 0, 319, 320, 686, 322, 323, + 687, 325, 326, 327, 0, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 688, 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 0, 353, 354, 0, 356, 357, 358, 359, 360, + 352, 353, 0, 354, 355, 0, 357, 358, 359, 689, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 0, 371, 372, 373, 374, 375, 0, 376, 377, 378, - 379, 380, 0, 382, 383, 384, 385, 0, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 492, - 398, 399, 0, 400, 401, 0, 402, 0, 404, 405, - 406, 407, 408, 0, 409, 410, 0, 0, 411, 412, - 413, 414, 415, 0, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 0, - 0, 429, 430, 431, 432, 433, 434, 435, 0, 436, - 0, 438, 439, 440, 441, 0, 0, 442, 0, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 488, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 94, 95, 96, 97, 540, 98, 99, 100, 0, - 0, 0, 0, 0, 0, 0, 101, 102, 0, 103, - 104, 105, 0, 107, 108, 109, 110, 111, 0, 113, - 114, 0, 115, 116, 117, 118, 119, 120, 0, 0, - 121, 122, 123, 124, 125, 0, 126, 127, 128, 129, - 130, 0, 0, 0, 132, 133, 134, 135, 136, 0, - 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, - 0, 0, 148, 149, 150, 0, 0, 0, 0, 0, - 0, 0, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 0, 162, 0, 163, 164, 165, 166, 167, - 168, 0, 169, 170, 171, 172, 173, 0, 0, 174, - 175, 176, 177, 178, 0, 179, 180, 181, 0, 182, - 183, 184, 0, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 0, 195, 0, 196, 197, 198, 199, - 0, 200, 0, 201, 0, 0, 0, 204, 205, 206, - 0, 208, 0, 209, 0, 210, 211, 0, 212, 213, - 214, 215, 216, 217, 0, 219, 220, 221, 222, 0, - 223, 224, 225, 226, 227, 228, 0, 229, 0, 231, - 232, 233, 234, 235, 236, 237, 0, 238, 0, 239, - 0, 0, 242, 0, 244, 245, 246, 247, 248, 0, - 0, 249, 0, 251, 0, 0, 253, 254, 255, 0, - 0, 256, 257, 258, 259, 260, 490, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 0, 282, 283, 284, - 285, 286, 0, 287, 288, 0, 290, 0, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 0, 0, 299, - 300, 301, 0, 0, 302, 303, 0, 305, 0, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 0, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 0, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 0, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, - 373, 374, 375, 0, 376, 377, 378, 379, 380, 0, - 382, 383, 384, 385, 0, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 492, 398, 399, 0, - 400, 401, 0, 402, 0, 404, 405, 406, 407, 408, - 0, 541, 410, 0, 0, 542, 412, 413, 414, 415, - 0, 416, 417, 418, 419, 420, 421, 422, 423, 0, - 0, 424, 425, 426, 427, 428, 0, 0, 429, 430, - 431, 432, 433, 434, 435, 0, 436, 0, 438, 439, - 440, 441, 0, 0, 442, 0, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 488, 0, - 560, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 98, 99, 100, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 0, 103, 104, 105, 0, - 107, 108, 109, 110, 111, 0, 113, 114, 0, 115, - 116, 117, 118, 119, 120, 0, 0, 121, 122, 123, - 124, 125, 0, 126, 127, 128, 129, 130, 0, 0, - 0, 132, 133, 134, 135, 136, 0, 138, 139, 140, - 0, 141, 142, 143, 144, 145, 146, 0, 0, 148, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 0, - 162, 0, 163, 164, 165, 166, 167, 168, 0, 169, - 170, 171, 172, 173, 0, 0, 174, 175, 176, 177, - 178, 0, 179, 180, 181, 0, 182, 183, 184, 0, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 0, 195, 0, 196, 197, 198, 199, 0, 200, 0, - 201, 0, 0, 0, 204, 205, 206, 0, 208, 0, - 209, 0, 210, 211, 0, 212, 213, 214, 215, 216, - 601, 0, 219, 220, 221, 222, 0, 223, 224, 225, - 226, 227, 228, 0, 229, 0, 231, 232, 233, 234, - 235, 236, 237, 0, 238, 0, 239, 0, 0, 242, - 0, 244, 245, 246, 247, 248, 0, 0, 249, 0, - 251, 0, 0, 253, 254, 255, 0, 0, 256, 257, - 258, 259, 260, 490, 262, 263, 264, 265, 266, 267, + 371, 0, 372, 373, 374, 375, 376, 0, 377, 690, + 379, 380, 381, 0, 383, 384, 691, 386, 0, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 692, 399, 693, 401, 0, 402, 403, 0, 404, 0, + 406, 407, 408, 409, 410, 0, 694, 695, 0, 0, + 413, 414, 696, 416, 697, 1092, 418, 419, 698, 421, + 422, 423, 424, 425, 0, 0, 426, 427, 428, 429, + 430, 0, 0, 431, 432, 433, 434, 435, 1038, 700, + 0, 438, 0, 440, 441, 442, 443, 0, 0, 444, + 0, 0, 445, 446, 447, 448, 449, 450, 701, 702, + 703, 704, 705, 706, 707, 708, 709, 710, 711, 462, + 463, 464, 465, 490, 0, 567, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 3, 4, 0, 0, 0, 0, 0, 102, 103, + 0, 104, 105, 106, 0, 108, 109, 110, 111, 112, + 0, 114, 115, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 130, 131, 0, 0, 0, 133, 134, 135, 136, + 137, 0, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 0, 149, 150, 151, 0, 0, 0, + 0, 0, 0, 0, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 0, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, + 199, 200, 0, 201, 0, 202, 0, 0, 0, 205, + 206, 207, 0, 209, 0, 210, 0, 211, 212, 0, + 213, 214, 215, 216, 217, 218, 0, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 232, 233, 234, 235, 236, 237, 238, 0, 239, + 0, 240, 0, 0, 243, 0, 245, 246, 247, 248, + 249, 0, 0, 250, 0, 252, 0, 0, 254, 255, + 256, 0, 0, 257, 258, 259, 260, 261, 492, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 0, 283, + 284, 285, 286, 287, 0, 288, 289, 0, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 298, 299, 0, + 0, 300, 301, 302, 0, 0, 303, 304, 0, 306, + 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, + 381, 0, 383, 384, 385, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 494, 399, + 400, 401, 0, 402, 403, 0, 404, 0, 406, 407, + 408, 409, 410, 0, 411, 412, 0, 0, 413, 414, + 415, 416, 417, 0, 418, 419, 420, 421, 422, 423, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 0, + 0, 431, 432, 433, 434, 435, 436, 437, 0, 438, + 0, 440, 441, 442, 443, 0, 0, 444, 0, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 490, 0, 567, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 0, 104, + 105, 106, 0, 108, 109, 110, 111, 112, 0, 114, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 131, 0, 0, 0, 133, 134, 135, 136, 137, 0, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 0, 149, 150, 151, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 0, 0, 0, 205, 206, 207, + 0, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 0, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 0, 0, 243, 0, 245, 246, 247, 248, 249, 0, + 0, 250, 0, 252, 0, 0, 254, 255, 256, 0, + 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 0, 283, 284, 285, + 286, 287, 0, 288, 289, 0, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 568, 300, + 301, 302, 0, 0, 303, 304, 0, 306, 0, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 0, 377, 378, 379, 380, 381, 0, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 494, 399, 400, 401, + 0, 402, 403, 0, 404, 0, 406, 407, 408, 409, + 410, 0, 411, 412, 0, 0, 413, 414, 415, 416, + 417, 0, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 0, 0, 431, + 432, 433, 434, 435, 436, 437, 0, 438, 0, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 490, + 0, 567, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 99, 100, 101, 0, 0, 0, + 0, 0, 0, 0, 102, 103, 0, 104, 105, 106, + 0, 108, 109, 110, 111, 112, 0, 114, 115, 0, + 116, 117, 118, 119, 120, 121, 0, 0, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 130, 131, 0, + 0, 0, 133, 134, 135, 136, 137, 0, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 0, + 149, 150, 151, 0, 0, 0, 0, 0, 0, 0, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 0, 163, 0, 164, 165, 166, 167, 168, 169, 0, + 170, 171, 172, 173, 174, 0, 0, 175, 176, 177, + 178, 179, 0, 180, 181, 182, 0, 183, 184, 185, + 0, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 0, 196, 0, 197, 198, 199, 200, 0, 201, + 0, 202, 0, 0, 0, 205, 206, 207, 0, 209, + 0, 210, 0, 211, 212, 0, 213, 214, 215, 216, + 217, 611, 0, 220, 221, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 232, 233, 234, + 235, 236, 237, 238, 0, 239, 0, 240, 0, 0, + 243, 0, 245, 246, 247, 248, 249, 0, 0, 250, + 0, 252, 0, 0, 254, 255, 256, 0, 0, 257, + 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 0, 282, 283, 284, 285, 286, 0, - 287, 288, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 0, 0, 299, 300, 301, 0, - 0, 302, 303, 0, 305, 0, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 0, 327, 328, + 278, 279, 280, 281, 0, 283, 284, 285, 286, 287, + 0, 288, 289, 0, 291, 0, 292, 293, 294, 295, + 296, 297, 0, 298, 299, 0, 568, 300, 301, 302, + 0, 0, 303, 304, 0, 306, 0, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 0, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 0, 353, 354, 0, 356, + 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 0, 371, 372, 373, 374, 375, - 0, 376, 377, 378, 379, 380, 0, 382, 383, 384, - 385, 0, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 492, 398, 399, 0, 400, 401, 0, - 402, 0, 404, 405, 406, 407, 408, 0, 409, 410, - 0, 0, 411, 412, 413, 414, 415, 0, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 0, 0, 429, 430, 431, 432, 433, - 434, 435, 0, 436, 0, 438, 439, 440, 441, 0, - 0, 442, 0, 0, 443, 444, 445, 446, 447, 448, + 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, + 376, 0, 377, 378, 379, 380, 381, 0, 383, 384, + 385, 386, 0, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 494, 399, 400, 401, 0, 402, + 403, 0, 404, 0, 406, 407, 408, 409, 410, 0, + 411, 412, 0, 0, 413, 414, 415, 416, 417, 0, + 418, 419, 420, 421, 422, 423, 424, 425, 0, 0, + 426, 427, 428, 429, 430, 0, 0, 431, 432, 433, + 434, 435, 436, 437, 0, 438, 0, 440, 441, 442, + 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 488, 0, 560, 0, 0, + 459, 460, 461, 462, 463, 464, 465, 660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 0, 103, 104, 105, 0, 107, 108, 109, - 110, 111, 0, 113, 114, 0, 115, 116, 117, 118, - 119, 120, 0, 0, 121, 122, 123, 124, 125, 0, - 126, 127, 128, 129, 130, 0, 0, 0, 132, 133, - 134, 135, 136, 0, 138, 139, 140, 0, 141, 142, - 143, 144, 145, 146, 0, 0, 148, 149, 150, 0, - 0, 0, 0, 0, 0, 0, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 0, 162, 0, 163, - 164, 165, 166, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 174, 175, 176, 177, 178, 0, 179, - 180, 181, 0, 182, 183, 184, 0, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 0, 195, 0, - 196, 197, 198, 199, 0, 200, 0, 201, 0, 0, - 0, 204, 205, 206, 0, 208, 0, 209, 0, 210, - 211, 0, 212, 213, 214, 215, 216, 604, 0, 219, - 220, 221, 222, 0, 223, 224, 225, 226, 227, 228, - 0, 229, 0, 231, 232, 233, 234, 235, 236, 237, - 0, 238, 0, 239, 0, 0, 242, 0, 244, 245, - 246, 247, 248, 0, 0, 249, 0, 251, 0, 0, - 253, 254, 255, 0, 0, 256, 257, 258, 259, 260, - 490, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 0, 282, 283, 284, 285, 286, 0, 287, 288, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 0, 0, 299, 300, 301, 0, 0, 302, 303, - 0, 305, 0, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 0, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 0, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 0, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 0, 371, 372, 373, 374, 375, 0, 376, 377, - 378, 379, 380, 0, 382, 383, 384, 385, 0, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 492, 398, 399, 0, 400, 401, 0, 402, 0, 404, - 405, 406, 407, 408, 0, 409, 410, 0, 0, 411, - 412, 413, 414, 415, 0, 416, 417, 418, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 0, 0, 429, 430, 431, 432, 433, 434, 435, 0, - 436, 0, 438, 439, 440, 441, 0, 0, 442, 0, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 488, 0, 560, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, - 103, 104, 105, 0, 107, 108, 109, 110, 111, 0, - 113, 114, 0, 115, 116, 117, 118, 119, 120, 0, - 0, 121, 122, 123, 124, 125, 0, 126, 127, 128, - 129, 130, 0, 0, 0, 132, 133, 134, 135, 136, - 0, 138, 139, 140, 0, 141, 142, 143, 144, 145, - 146, 0, 0, 148, 149, 150, 0, 0, 0, 0, - 0, 0, 0, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 0, 162, 0, 163, 164, 165, 166, - 167, 168, 0, 169, 170, 171, 172, 173, 0, 0, - 174, 175, 176, 177, 178, 0, 179, 180, 181, 0, - 182, 183, 184, 0, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 0, 195, 0, 196, 197, 198, - 199, 0, 200, 0, 201, 0, 0, 0, 204, 205, - 206, 0, 208, 0, 209, 0, 210, 211, 0, 212, - 213, 214, 215, 216, 608, 0, 219, 220, 221, 222, - 0, 223, 224, 225, 226, 227, 228, 0, 229, 0, - 231, 232, 233, 234, 235, 236, 237, 0, 238, 0, - 239, 0, 0, 242, 0, 244, 245, 246, 247, 248, - 0, 0, 249, 0, 251, 0, 0, 253, 254, 255, - 0, 0, 256, 257, 258, 259, 260, 490, 262, 263, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 99, 100, 101, 3, 4, 0, 0, 0, + 0, 0, 102, 103, 0, 104, 105, 106, 0, 108, + 109, 110, 661, 662, 0, 663, 664, 0, 116, 117, + 118, 119, 120, 121, 0, 0, 122, 123, 665, 666, + 126, 0, 127, 128, 129, 130, 667, 0, 0, 0, + 133, 134, 135, 136, 137, 0, 139, 140, 141, 0, + 142, 143, 144, 145, 146, 147, 0, 0, 149, 150, + 151, 0, 0, 0, 0, 0, 0, 0, 153, 154, + 155, 156, 157, 158, 159, 668, 669, 162, 0, 163, + 0, 164, 165, 166, 167, 168, 169, 0, 170, 171, + 172, 173, 174, 0, 0, 175, 176, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 0, 186, + 187, 188, 189, 670, 191, 192, 193, 194, 671, 0, + 196, 0, 197, 198, 672, 200, 0, 201, 0, 202, + 0, 0, 0, 205, 206, 207, 0, 209, 0, 210, + 0, 673, 212, 0, 213, 214, 215, 216, 217, 218, + 0, 220, 221, 222, 223, 0, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 674, 233, 234, 235, 236, + 675, 676, 0, 677, 0, 240, 0, 0, 243, 0, + 245, 246, 247, 248, 249, 0, 0, 250, 0, 252, + 0, 0, 254, 255, 256, 0, 0, 257, 258, 259, + 260, 261, 678, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 679, 0, 680, 284, 285, 286, 681, 0, 288, + 289, 0, 291, 0, 682, 293, 683, 295, 296, 297, + 0, 298, 299, 0, 0, 300, 301, 302, 0, 0, + 303, 684, 0, 306, 0, 685, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 0, 319, 320, 686, + 322, 323, 687, 325, 326, 327, 0, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 688, 338, 339, 340, + 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, + 359, 689, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 0, 372, 373, 374, 375, 376, 0, + 377, 690, 379, 380, 381, 0, 383, 384, 691, 386, + 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 692, 399, 693, 401, 0, 402, 403, 0, + 404, 0, 406, 407, 408, 409, 410, 0, 694, 695, + 0, 0, 413, 414, 696, 416, 697, 0, 418, 419, + 698, 421, 422, 423, 424, 425, 0, 0, 426, 427, + 428, 429, 430, 0, 0, 431, 432, 433, 434, 435, + 1038, 700, 0, 438, 0, 440, 441, 442, 443, 0, + 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, + 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, + 711, 462, 463, 464, 465, 490, 0, 567, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 99, 100, 101, 0, 0, 0, 0, 0, 0, 0, + 102, 103, 0, 104, 105, 106, 0, 108, 109, 110, + 111, 112, 0, 114, 115, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 122, 123, 124, 125, 126, 0, + 127, 128, 129, 130, 131, 0, 0, 0, 133, 134, + 135, 136, 137, 0, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 0, 149, 150, 151, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 0, 163, 0, 164, + 165, 166, 167, 168, 169, 0, 170, 171, 172, 173, + 174, 0, 0, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 0, 183, 184, 185, 0, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, + 197, 198, 199, 200, 0, 201, 0, 202, 0, 0, + 0, 205, 206, 207, 0, 1671, 0, 210, 0, 211, + 212, 0, 213, 214, 215, 216, 217, 218, 0, 220, + 221, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 232, 233, 234, 235, 236, 237, 238, + 0, 239, 0, 240, 0, 0, 243, 0, 245, 246, + 247, 248, 249, 0, 0, 250, 0, 252, 0, 0, + 254, 255, 1672, 0, 0, 257, 258, 259, 260, 261, + 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 0, 283, 284, 285, 286, 287, 0, 288, 289, 0, + 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, + 299, 0, 0, 300, 301, 302, 0, 0, 303, 304, + 0, 306, 0, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 0, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 0, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 0, 372, 373, 374, 375, 376, 0, 377, 378, + 379, 380, 381, 0, 383, 384, 385, 386, 0, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 494, 399, 400, 401, 0, 402, 403, 1673, 404, 0, + 406, 1674, 408, 1675, 410, 0, 411, 412, 0, 0, + 413, 414, 415, 416, 417, 0, 418, 419, 420, 421, + 422, 423, 424, 425, 0, 0, 426, 427, 1676, 429, + 430, 0, 0, 431, 432, 433, 434, 435, 436, 437, + 0, 438, 0, 440, 441, 442, 443, 0, 0, 444, + 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 490, 2573, 0, 0, 0, 0, 2574, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 0, 0, 0, 0, 0, 0, 0, 102, 103, + 0, 104, 105, 106, 0, 108, 109, 110, 111, 112, + 0, 114, 115, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 130, 131, 0, 0, 0, 133, 134, 135, 136, + 137, 0, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 0, 149, 150, 151, 0, 0, 0, + 0, 0, 0, 0, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 0, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, + 199, 200, 0, 201, 0, 202, 0, 0, 0, 205, + 206, 207, 0, 209, 0, 210, 0, 211, 212, 0, + 213, 214, 215, 216, 217, 218, 0, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 232, 233, 234, 235, 236, 237, 238, 0, 239, + 0, 240, 0, 0, 243, 0, 245, 246, 247, 248, + 249, 0, 0, 250, 0, 252, 0, 0, 254, 255, + 256, 0, 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 0, 282, 283, - 284, 285, 286, 0, 287, 288, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 0, 0, - 299, 300, 301, 0, 0, 302, 303, 0, 305, 0, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 0, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 0, - 353, 354, 0, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 0, 371, - 372, 373, 374, 375, 0, 376, 377, 378, 379, 380, - 0, 382, 383, 384, 385, 0, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 492, 398, 399, - 0, 400, 401, 0, 402, 0, 404, 405, 406, 407, - 408, 0, 409, 410, 0, 0, 411, 412, 413, 414, - 415, 0, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 0, 0, 429, - 430, 431, 432, 433, 434, 435, 0, 436, 0, 438, - 439, 440, 441, 0, 0, 442, 0, 0, 443, 444, + 274, 275, 276, 277, 278, 279, 280, 281, 0, 283, + 284, 285, 286, 287, 0, 288, 289, 0, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 298, 299, 0, + 0, 300, 301, 302, 0, 0, 303, 304, 0, 306, + 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, + 381, 0, 383, 384, 385, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 494, 399, + 400, 401, 0, 402, 403, 0, 404, 0, 406, 407, + 408, 409, 410, 0, 411, 412, 0, 0, 413, 414, + 415, 416, 417, 0, 418, 419, 420, 421, 422, 423, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 0, + 0, 431, 432, 433, 434, 435, 436, 437, 0, 438, + 0, 440, 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 488, - 0, 560, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 98, 99, 100, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 0, 103, 104, 105, - 0, 107, 108, 109, 110, 111, 0, 113, 114, 0, - 115, 116, 117, 118, 119, 120, 0, 0, 121, 122, - 123, 124, 125, 0, 126, 127, 128, 129, 130, 0, - 0, 0, 132, 133, 134, 135, 136, 0, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 146, 0, 0, - 148, 149, 150, 0, 0, 0, 0, 0, 0, 0, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 0, 162, 0, 163, 164, 165, 166, 167, 168, 0, - 169, 170, 171, 172, 173, 0, 0, 174, 175, 176, - 177, 178, 0, 179, 180, 181, 0, 182, 183, 184, - 0, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 0, 195, 0, 196, 197, 198, 199, 0, 200, - 0, 201, 0, 0, 0, 204, 205, 206, 0, 208, - 0, 209, 0, 210, 211, 0, 212, 213, 214, 215, - 216, 217, 0, 219, 220, 221, 222, 0, 223, 224, - 225, 226, 227, 228, 0, 229, 0, 231, 232, 233, - 234, 235, 236, 237, 0, 238, 0, 239, 0, 0, - 242, 0, 244, 245, 246, 247, 248, 0, 0, 249, - 0, 251, 0, 0, 253, 254, 255, 0, 0, 256, - 257, 258, 259, 260, 490, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 0, 282, 283, 284, 285, 286, - 0, 287, 288, 0, 290, 0, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 0, 0, 299, 300, 301, - 0, 0, 302, 303, 0, 305, 0, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 0, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 0, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 0, 353, 354, 0, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, - 375, 0, 376, 377, 378, 379, 380, 0, 382, 383, - 384, 385, 0, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 492, 398, 399, 0, 400, 401, - 0, 402, 0, 404, 405, 406, 407, 408, 0, 409, - 410, 0, 0, 411, 412, 413, 414, 415, 0, 416, - 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, - 425, 426, 427, 428, 0, 0, 429, 430, 431, 432, - 433, 434, 435, 0, 436, 0, 438, 439, 440, 441, - 0, 0, 442, 0, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 488, 0, 0, 0, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 491, 99, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 0, 104, + 105, 106, 0, 108, 109, 110, 111, 112, 0, 114, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 131, 0, 0, 0, 133, 134, 135, 136, 137, 0, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 0, 149, 150, 151, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 0, 0, 0, 205, 206, 207, + 0, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 0, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 0, 0, 243, 0, 245, 246, 247, 248, 249, 0, + 0, 250, 0, 252, 0, 0, 254, 255, 256, 0, + 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 0, 283, 284, 285, + 286, 287, 0, 288, 289, 0, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 0, 300, + 301, 302, 0, 0, 303, 304, 0, 306, 0, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 321, 322, 323, 324, 493, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 0, 377, 378, 379, 380, 381, 0, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 494, 399, 400, 401, + 0, 402, 403, 0, 404, 0, 406, 407, 408, 409, + 410, 0, 411, 412, 0, 0, 413, 414, 415, 416, + 417, 0, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 0, 0, 431, + 432, 433, 434, 435, 436, 437, 0, 438, 0, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 490, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 542, 99, 100, 101, 0, 0, 0, + 0, 0, 0, 0, 102, 103, 0, 104, 105, 106, + 0, 108, 109, 110, 111, 112, 0, 114, 115, 0, + 116, 117, 118, 119, 120, 121, 0, 0, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 130, 131, 0, + 0, 0, 133, 134, 135, 136, 137, 0, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 0, + 149, 150, 151, 0, 0, 0, 0, 0, 0, 0, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 0, 163, 0, 164, 165, 166, 167, 168, 169, 0, + 170, 171, 172, 173, 174, 0, 0, 175, 176, 177, + 178, 179, 0, 180, 181, 182, 0, 183, 184, 185, + 0, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 0, 196, 0, 197, 198, 199, 200, 0, 201, + 0, 202, 0, 0, 0, 205, 206, 207, 0, 209, + 0, 210, 0, 211, 212, 0, 213, 214, 215, 216, + 217, 218, 0, 220, 221, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 232, 233, 234, + 235, 236, 237, 238, 0, 239, 0, 240, 0, 0, + 243, 0, 245, 246, 247, 248, 249, 0, 0, 250, + 0, 252, 0, 0, 254, 255, 256, 0, 0, 257, + 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 0, 283, 284, 285, 286, 287, + 0, 288, 289, 0, 291, 0, 292, 293, 294, 295, + 296, 297, 0, 298, 299, 0, 0, 300, 301, 302, + 0, 0, 303, 304, 0, 306, 0, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 0, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 0, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 0, 354, 355, 0, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, + 376, 0, 377, 378, 379, 380, 381, 0, 383, 384, + 385, 386, 0, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 494, 399, 400, 401, 0, 402, + 403, 0, 404, 0, 406, 407, 408, 409, 410, 0, + 543, 412, 0, 0, 544, 414, 415, 416, 417, 0, + 418, 419, 420, 421, 422, 423, 424, 425, 0, 0, + 426, 427, 428, 429, 430, 0, 0, 431, 432, 433, + 434, 435, 436, 437, 0, 438, 0, 440, 441, 442, + 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 490, 0, 567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 634, 98, 99, 100, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 0, 103, 104, 105, 0, 107, 108, - 109, 110, 111, 0, 113, 114, 0, 115, 116, 117, - 118, 119, 120, 0, 0, 121, 122, 123, 124, 125, - 0, 126, 127, 128, 129, 130, 0, 0, 0, 132, - 133, 134, 135, 136, 0, 138, 139, 140, 0, 141, - 142, 143, 144, 145, 146, 0, 0, 148, 149, 150, - 0, 0, 0, 0, 0, 0, 0, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 0, 162, 0, - 163, 164, 165, 166, 167, 168, 0, 169, 170, 171, - 172, 173, 0, 0, 174, 175, 176, 177, 178, 0, - 179, 180, 181, 0, 182, 183, 184, 0, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 0, 195, - 0, 196, 197, 198, 199, 0, 200, 0, 201, 0, - 0, 0, 204, 205, 206, 0, 208, 0, 209, 0, - 210, 211, 0, 212, 213, 214, 215, 216, 217, 0, - 219, 220, 221, 222, 0, 223, 224, 225, 226, 227, - 228, 0, 229, 0, 231, 232, 233, 234, 235, 236, - 237, 0, 238, 0, 239, 0, 0, 242, 0, 244, - 245, 246, 247, 248, 0, 0, 249, 0, 251, 0, - 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, - 260, 490, 262, 263, 264, 265, 266, 267, 268, 269, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 99, 100, 101, 0, 0, 0, 0, 0, + 0, 0, 102, 103, 0, 104, 105, 106, 0, 108, + 109, 110, 111, 112, 0, 114, 115, 0, 116, 117, + 118, 119, 120, 121, 0, 0, 122, 123, 124, 125, + 126, 0, 127, 128, 129, 130, 131, 0, 0, 0, + 133, 134, 135, 136, 137, 0, 139, 140, 141, 0, + 142, 143, 144, 145, 146, 147, 0, 0, 149, 150, + 151, 0, 0, 0, 0, 0, 0, 0, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 0, 163, + 0, 164, 165, 166, 167, 168, 169, 0, 170, 171, + 172, 173, 174, 0, 0, 175, 176, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 0, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, + 196, 0, 197, 198, 199, 200, 0, 201, 0, 202, + 0, 0, 0, 205, 206, 207, 0, 209, 0, 210, + 0, 211, 212, 0, 213, 214, 215, 216, 217, 606, + 0, 220, 221, 222, 223, 0, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 232, 233, 234, 235, 236, + 237, 238, 0, 239, 0, 240, 0, 0, 243, 0, + 245, 246, 247, 248, 249, 0, 0, 250, 0, 252, + 0, 0, 254, 255, 256, 0, 0, 257, 258, 259, + 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 0, 282, 283, 284, 285, 286, 0, 287, 288, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 0, 0, 299, 300, 301, 0, 0, 302, - 303, 0, 305, 0, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 0, 327, 328, 329, 330, + 280, 281, 0, 283, 284, 285, 286, 287, 0, 288, + 289, 0, 291, 0, 292, 293, 294, 295, 296, 297, + 0, 298, 299, 0, 0, 300, 301, 302, 0, 0, + 303, 304, 0, 306, 0, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 0, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 0, 353, 354, 0, 356, 357, 358, + 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 0, 371, 372, 373, 374, 375, 0, 376, - 377, 378, 379, 380, 0, 382, 383, 384, 385, 0, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 492, 398, 399, 0, 400, 401, 0, 402, 0, - 404, 405, 406, 407, 408, 0, 409, 410, 0, 0, - 411, 412, 413, 414, 415, 0, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 0, 0, 429, 430, 431, 432, 433, 434, 435, - 0, 436, 0, 438, 439, 440, 441, 0, 0, 442, - 0, 0, 443, 444, 445, 446, 447, 448, 449, 450, + 369, 370, 371, 0, 372, 373, 374, 375, 376, 0, + 377, 378, 379, 380, 381, 0, 383, 384, 385, 386, + 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 494, 399, 400, 401, 0, 402, 403, 0, + 404, 0, 406, 407, 408, 409, 410, 0, 411, 412, + 0, 0, 413, 414, 415, 416, 417, 0, 418, 419, + 420, 421, 422, 423, 424, 425, 0, 0, 426, 427, + 428, 429, 430, 0, 0, 431, 432, 433, 434, 435, + 436, 437, 0, 438, 0, 440, 441, 442, 443, 0, + 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 488, 0, 560, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 98, 99, - 100, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 0, 103, 104, 105, 0, 107, 108, 109, 110, 111, - 0, 113, 114, 0, 115, 116, 117, 118, 119, 120, - 0, 0, 121, 122, 123, 124, 125, 0, 126, 127, - 128, 129, 130, 0, 0, 0, 132, 133, 134, 135, - 136, 0, 138, 139, 140, 0, 141, 142, 143, 144, - 145, 146, 0, 0, 148, 149, 150, 0, 0, 0, - 0, 0, 0, 0, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 0, 162, 0, 163, 164, 165, - 166, 167, 168, 0, 169, 170, 171, 172, 173, 0, - 0, 174, 175, 176, 177, 178, 0, 179, 180, 181, - 0, 182, 183, 184, 0, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 0, 195, 0, 196, 197, - 198, 199, 0, 200, 0, 201, 0, 0, 0, 204, - 205, 206, 0, 208, 0, 209, 0, 210, 211, 0, - 212, 213, 214, 215, 216, 1052, 0, 219, 220, 221, - 222, 0, 223, 224, 225, 226, 227, 228, 0, 229, - 0, 231, 232, 233, 234, 235, 236, 237, 0, 238, - 0, 239, 0, 0, 242, 0, 244, 245, 246, 247, - 248, 0, 0, 249, 0, 251, 0, 0, 253, 254, - 255, 0, 0, 256, 257, 258, 259, 260, 490, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 0, 282, - 283, 284, 285, 286, 0, 287, 288, 0, 290, 0, - 291, 292, 293, 294, 295, 296, 0, 297, 298, 0, - 0, 299, 300, 301, 0, 0, 302, 303, 0, 305, - 0, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 0, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 0, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 0, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 0, - 371, 372, 373, 374, 375, 0, 376, 377, 378, 379, - 380, 0, 382, 383, 384, 385, 0, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 492, 398, - 399, 0, 400, 401, 0, 402, 0, 404, 405, 406, - 407, 408, 0, 409, 410, 0, 0, 411, 412, 413, - 414, 415, 0, 416, 417, 418, 419, 420, 421, 422, - 423, 0, 0, 424, 425, 426, 427, 428, 0, 0, - 429, 430, 431, 432, 433, 434, 435, 0, 436, 0, - 438, 439, 440, 441, 0, 0, 442, 0, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 488, 0, 560, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 91, 92, 93, - 94, 95, 96, 97, 0, 98, 99, 100, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 0, 103, 104, - 105, 0, 107, 108, 109, 110, 111, 0, 113, 114, - 0, 115, 116, 117, 118, 119, 120, 0, 0, 121, - 122, 123, 124, 125, 0, 126, 127, 128, 129, 130, - 0, 0, 0, 132, 133, 134, 135, 136, 0, 138, - 139, 140, 0, 141, 142, 143, 144, 145, 146, 0, - 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, - 0, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 0, 162, 0, 163, 164, 165, 166, 167, 168, - 0, 169, 170, 171, 172, 173, 0, 0, 174, 175, - 176, 177, 178, 0, 179, 180, 181, 0, 182, 183, - 184, 0, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 0, 195, 0, 196, 197, 198, 199, 0, - 200, 0, 201, 0, 0, 0, 204, 205, 206, 0, - 208, 0, 209, 0, 210, 211, 0, 212, 213, 214, - 215, 216, 1054, 0, 219, 220, 221, 222, 0, 223, - 224, 225, 226, 227, 228, 0, 229, 0, 231, 232, - 233, 234, 235, 236, 237, 0, 238, 0, 239, 0, - 0, 242, 0, 244, 245, 246, 247, 248, 0, 0, - 249, 0, 251, 0, 0, 253, 254, 255, 0, 0, - 256, 257, 258, 259, 260, 490, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 0, 282, 283, 284, 285, - 286, 0, 287, 288, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 0, 0, 299, 300, - 301, 0, 0, 302, 303, 0, 305, 0, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 0, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, - 0, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 0, 371, 372, 373, - 374, 375, 0, 376, 377, 378, 379, 380, 0, 382, - 383, 384, 385, 0, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 492, 398, 399, 0, 400, - 401, 0, 402, 0, 404, 405, 406, 407, 408, 0, - 409, 410, 0, 0, 411, 412, 413, 414, 415, 0, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 0, 0, 429, 430, 431, - 432, 433, 434, 435, 0, 436, 0, 438, 439, 440, - 441, 0, 0, 442, 0, 0, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 488, 0, 560, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 98, 99, 100, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 0, 103, 104, 105, 0, 107, - 108, 109, 110, 111, 0, 113, 114, 0, 115, 116, - 117, 118, 119, 120, 0, 0, 121, 122, 123, 124, - 125, 0, 126, 127, 128, 129, 130, 0, 0, 0, - 132, 133, 134, 135, 136, 0, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 146, 0, 0, 148, 149, - 150, 0, 0, 0, 0, 0, 0, 0, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 0, 162, - 0, 163, 164, 165, 166, 167, 168, 0, 169, 170, - 171, 172, 173, 0, 0, 174, 175, 176, 177, 178, - 0, 179, 180, 181, 0, 182, 183, 184, 0, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 0, - 195, 0, 196, 197, 198, 199, 0, 200, 0, 201, - 0, 0, 0, 204, 205, 206, 0, 208, 0, 209, - 0, 210, 211, 0, 212, 213, 214, 215, 216, 1460, - 0, 219, 220, 221, 222, 0, 223, 224, 225, 226, - 227, 228, 0, 229, 0, 231, 232, 233, 234, 235, - 236, 237, 0, 238, 0, 239, 0, 0, 242, 0, - 244, 245, 246, 247, 248, 0, 0, 249, 0, 251, - 0, 0, 253, 254, 255, 0, 0, 256, 257, 258, - 259, 260, 490, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 0, 282, 283, 284, 285, 286, 0, 287, - 288, 0, 290, 0, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 0, 0, 299, 300, 301, 0, 0, - 302, 303, 0, 305, 0, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 0, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 0, 353, 354, 0, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 0, 371, 372, 373, 374, 375, 0, - 376, 377, 378, 379, 380, 0, 382, 383, 384, 385, - 0, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 492, 398, 399, 0, 400, 401, 0, 402, - 0, 404, 405, 406, 407, 408, 0, 409, 410, 0, - 0, 411, 412, 413, 414, 415, 0, 416, 417, 418, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 0, 0, 429, 430, 431, 432, 433, 434, - 435, 0, 436, 0, 438, 439, 440, 441, 0, 0, - 442, 0, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 488, 0, 0, 0, 0, 0, + 461, 462, 463, 464, 465, 490, 0, 567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 98, - 99, 100, 0, 0, 0, 0, 0, 2224, 0, 101, - 102, 0, 103, 104, 105, 0, 107, 108, 109, 110, - 111, 0, 113, 114, 0, 115, 116, 117, 118, 119, - 120, 0, 0, 121, 122, 123, 124, 125, 0, 126, - 127, 128, 129, 130, 0, 0, 0, 132, 133, 134, - 135, 136, 0, 138, 139, 140, 0, 141, 142, 143, - 144, 145, 146, 0, 0, 148, 149, 150, 0, 0, - 0, 0, 0, 0, 0, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 0, 162, 0, 163, 164, - 165, 166, 167, 168, 0, 169, 170, 171, 172, 173, - 0, 0, 174, 175, 176, 177, 178, 0, 179, 180, - 181, 0, 182, 183, 184, 0, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 0, 195, 0, 196, - 197, 198, 199, 0, 200, 0, 201, 0, 0, 0, - 204, 205, 206, 0, 208, 0, 209, 0, 210, 211, - 0, 212, 213, 214, 215, 216, 217, 0, 219, 220, - 221, 222, 0, 223, 224, 225, 226, 227, 228, 0, - 229, 0, 231, 232, 233, 234, 235, 236, 237, 0, - 238, 0, 239, 0, 0, 242, 0, 244, 245, 246, - 247, 248, 0, 0, 249, 0, 251, 0, 0, 253, - 254, 255, 0, 0, 256, 257, 258, 259, 260, 490, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 0, - 282, 283, 284, 285, 286, 0, 287, 288, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 0, 0, 299, 300, 301, 0, 0, 302, 303, 0, - 305, 0, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 0, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 0, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 99, 100, 101, 0, 0, 0, 0, 0, 0, 0, + 102, 103, 0, 104, 105, 106, 0, 108, 109, 110, + 111, 112, 0, 114, 115, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 122, 123, 124, 125, 126, 0, + 127, 128, 129, 130, 131, 0, 0, 0, 133, 134, + 135, 136, 137, 0, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 0, 149, 150, 151, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 0, 163, 0, 164, + 165, 166, 167, 168, 169, 0, 170, 171, 172, 173, + 174, 0, 0, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 0, 183, 184, 185, 0, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, + 197, 198, 199, 200, 0, 201, 0, 202, 0, 0, + 0, 205, 206, 207, 0, 209, 0, 210, 0, 211, + 212, 0, 213, 214, 215, 216, 217, 609, 0, 220, + 221, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 232, 233, 234, 235, 236, 237, 238, + 0, 239, 0, 240, 0, 0, 243, 0, 245, 246, + 247, 248, 249, 0, 0, 250, 0, 252, 0, 0, + 254, 255, 256, 0, 0, 257, 258, 259, 260, 261, + 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 0, 283, 284, 285, 286, 287, 0, 288, 289, 0, + 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, + 299, 0, 0, 300, 301, 302, 0, 0, 303, 304, + 0, 306, 0, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 0, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 0, 353, 354, 0, 356, 357, 358, 359, 360, + 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 0, 371, 372, 373, 374, 375, 0, 376, 377, 378, - 379, 380, 0, 382, 383, 384, 385, 0, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 492, - 398, 399, 0, 400, 401, 0, 402, 0, 404, 405, - 406, 407, 408, 0, 409, 410, 0, 0, 411, 412, - 413, 414, 415, 0, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 0, - 0, 429, 430, 431, 432, 433, 434, 435, 0, 436, - 0, 438, 439, 440, 441, 0, 0, 442, 0, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 371, 0, 372, 373, 374, 375, 376, 0, 377, 378, + 379, 380, 381, 0, 383, 384, 385, 386, 0, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 494, 399, 400, 401, 0, 402, 403, 0, 404, 0, + 406, 407, 408, 409, 410, 0, 411, 412, 0, 0, + 413, 414, 415, 416, 417, 0, 418, 419, 420, 421, + 422, 423, 424, 425, 0, 0, 426, 427, 428, 429, + 430, 0, 0, 431, 432, 433, 434, 435, 436, 437, + 0, 438, 0, 440, 441, 442, 443, 0, 0, 444, + 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 488, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 94, 95, 96, 97, 0, 98, 99, 100, 0, - 0, 0, 0, 0, 2238, 0, 101, 102, 0, 103, - 104, 105, 0, 107, 108, 109, 110, 111, 0, 113, - 114, 0, 115, 116, 117, 118, 119, 120, 0, 0, - 121, 122, 123, 124, 125, 0, 126, 127, 128, 129, - 130, 0, 0, 0, 132, 133, 134, 135, 136, 0, - 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, - 0, 0, 148, 149, 150, 0, 0, 0, 0, 0, - 0, 0, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 0, 162, 0, 163, 164, 165, 166, 167, - 168, 0, 169, 170, 171, 172, 173, 0, 0, 174, - 175, 176, 177, 178, 0, 179, 180, 181, 0, 182, - 183, 184, 0, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 0, 195, 0, 196, 197, 198, 199, - 0, 200, 0, 201, 0, 0, 0, 204, 205, 206, - 0, 208, 0, 209, 0, 210, 211, 0, 212, 213, - 214, 215, 216, 217, 0, 219, 220, 221, 222, 0, - 223, 224, 225, 226, 227, 228, 0, 229, 0, 231, - 232, 233, 234, 235, 236, 237, 0, 238, 0, 239, - 0, 0, 242, 0, 244, 245, 246, 247, 248, 0, - 0, 249, 0, 251, 0, 0, 253, 254, 255, 0, - 0, 256, 257, 258, 259, 260, 490, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 0, 282, 283, 284, - 285, 286, 0, 287, 288, 0, 290, 0, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 0, 0, 299, - 300, 301, 0, 0, 302, 303, 0, 305, 0, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 0, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 0, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 0, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, - 373, 374, 375, 0, 376, 377, 378, 379, 380, 0, - 382, 383, 384, 385, 0, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 492, 398, 399, 0, - 400, 401, 0, 402, 0, 404, 405, 406, 407, 408, - 0, 409, 410, 0, 0, 411, 412, 413, 414, 415, - 0, 416, 417, 418, 419, 420, 421, 422, 423, 0, - 0, 424, 425, 426, 427, 428, 0, 0, 429, 430, - 431, 432, 433, 434, 435, 0, 436, 0, 438, 439, - 440, 441, 0, 0, 442, 0, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 488, 0, - 560, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 98, 99, 100, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 0, 103, 104, 105, 0, - 107, 108, 109, 110, 111, 0, 113, 114, 0, 115, - 116, 117, 118, 119, 120, 0, 0, 121, 122, 123, - 124, 125, 0, 126, 127, 128, 129, 130, 0, 0, - 0, 132, 133, 134, 135, 136, 0, 138, 139, 140, - 0, 141, 142, 143, 144, 145, 146, 0, 0, 148, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 0, - 162, 0, 163, 164, 165, 166, 167, 168, 0, 169, - 170, 171, 172, 173, 0, 0, 174, 175, 176, 177, - 178, 0, 179, 180, 181, 0, 182, 183, 184, 0, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 0, 195, 0, 196, 197, 198, 199, 0, 200, 0, - 201, 0, 0, 0, 204, 205, 206, 0, 208, 0, - 209, 0, 210, 211, 0, 212, 213, 214, 215, 216, - 2367, 0, 219, 220, 221, 222, 0, 223, 224, 225, - 226, 227, 228, 0, 229, 0, 231, 232, 233, 234, - 235, 236, 237, 0, 238, 0, 239, 0, 0, 242, - 0, 244, 245, 246, 247, 248, 0, 0, 249, 0, - 251, 0, 0, 253, 254, 255, 0, 0, 256, 257, - 258, 259, 260, 490, 262, 263, 264, 265, 266, 267, + 463, 464, 465, 490, 0, 567, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 0, 0, 0, 0, 0, 0, 0, 102, 103, + 0, 104, 105, 106, 0, 108, 109, 110, 111, 112, + 0, 114, 115, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 130, 131, 0, 0, 0, 133, 134, 135, 136, + 137, 0, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 0, 149, 150, 151, 0, 0, 0, + 0, 0, 0, 0, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 0, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, + 199, 200, 0, 201, 0, 202, 0, 0, 0, 205, + 206, 207, 0, 209, 0, 210, 0, 211, 212, 0, + 213, 214, 215, 216, 217, 613, 0, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 232, 233, 234, 235, 236, 237, 238, 0, 239, + 0, 240, 0, 0, 243, 0, 245, 246, 247, 248, + 249, 0, 0, 250, 0, 252, 0, 0, 254, 255, + 256, 0, 0, 257, 258, 259, 260, 261, 492, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 0, 283, + 284, 285, 286, 287, 0, 288, 289, 0, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 298, 299, 0, + 0, 300, 301, 302, 0, 0, 303, 304, 0, 306, + 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, + 381, 0, 383, 384, 385, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 494, 399, + 400, 401, 0, 402, 403, 0, 404, 0, 406, 407, + 408, 409, 410, 0, 411, 412, 0, 0, 413, 414, + 415, 416, 417, 0, 418, 419, 420, 421, 422, 423, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 0, + 0, 431, 432, 433, 434, 435, 436, 437, 0, 438, + 0, 440, 441, 442, 443, 0, 0, 444, 0, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 490, 0, 567, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 0, 104, + 105, 106, 0, 108, 109, 110, 111, 112, 0, 114, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 131, 0, 0, 0, 133, 134, 135, 136, 137, 0, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 0, 149, 150, 151, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 0, 0, 0, 205, 206, 207, + 0, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 0, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 0, 0, 243, 0, 245, 246, 247, 248, 249, 0, + 0, 250, 0, 252, 0, 0, 254, 255, 256, 0, + 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 0, 283, 284, 285, + 286, 287, 0, 288, 289, 0, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 0, 300, + 301, 302, 0, 0, 303, 304, 0, 306, 0, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 0, 377, 378, 379, 380, 381, 0, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 494, 399, 400, 401, + 0, 402, 403, 0, 404, 0, 406, 407, 408, 409, + 410, 0, 411, 412, 0, 0, 413, 414, 415, 416, + 417, 0, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 0, 0, 431, + 432, 433, 434, 435, 436, 437, 0, 438, 0, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 490, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 639, 99, 100, 101, 0, 0, 0, + 0, 0, 0, 0, 102, 103, 0, 104, 105, 106, + 0, 108, 109, 110, 111, 112, 0, 114, 115, 0, + 116, 117, 118, 119, 120, 121, 0, 0, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 130, 131, 0, + 0, 0, 133, 134, 135, 136, 137, 0, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 0, + 149, 150, 151, 0, 0, 0, 0, 0, 0, 0, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 0, 163, 0, 164, 165, 166, 167, 168, 169, 0, + 170, 171, 172, 173, 174, 0, 0, 175, 176, 177, + 178, 179, 0, 180, 181, 182, 0, 183, 184, 185, + 0, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 0, 196, 0, 197, 198, 199, 200, 0, 201, + 0, 202, 0, 0, 0, 205, 206, 207, 0, 209, + 0, 210, 0, 211, 212, 0, 213, 214, 215, 216, + 217, 218, 0, 220, 221, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 232, 233, 234, + 235, 236, 237, 238, 0, 239, 0, 240, 0, 0, + 243, 0, 245, 246, 247, 248, 249, 0, 0, 250, + 0, 252, 0, 0, 254, 255, 256, 0, 0, 257, + 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 0, 282, 283, 284, 285, 286, 0, - 287, 288, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 0, 0, 299, 300, 301, 0, - 0, 302, 303, 0, 305, 0, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 0, 327, 328, + 278, 279, 280, 281, 0, 283, 284, 285, 286, 287, + 0, 288, 289, 0, 291, 0, 292, 293, 294, 295, + 296, 297, 0, 298, 299, 0, 0, 300, 301, 302, + 0, 0, 303, 304, 0, 306, 0, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 0, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 0, 353, 354, 0, 356, + 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 0, 371, 372, 373, 374, 375, - 0, 376, 377, 378, 379, 380, 0, 382, 383, 384, - 385, 0, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 492, 398, 399, 0, 400, 401, 0, - 402, 0, 404, 405, 406, 407, 408, 0, 409, 410, - 0, 0, 411, 412, 413, 414, 415, 0, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 0, 0, 429, 430, 431, 432, 433, - 434, 435, 0, 436, 0, 438, 439, 440, 441, 0, - 0, 442, 0, 0, 443, 444, 445, 446, 447, 448, + 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, + 376, 0, 377, 378, 379, 380, 381, 0, 383, 384, + 385, 386, 0, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 494, 399, 400, 401, 0, 402, + 403, 0, 404, 0, 406, 407, 408, 409, 410, 0, + 411, 412, 0, 0, 413, 414, 415, 416, 417, 0, + 418, 419, 420, 421, 422, 423, 424, 425, 0, 0, + 426, 427, 428, 429, 430, 0, 0, 431, 432, 433, + 434, 435, 436, 437, 0, 438, 0, 440, 441, 442, + 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 488, 0, 0, 0, 0, + 459, 460, 461, 462, 463, 464, 465, 490, 0, 567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 0, 103, 104, 105, 0, 107, 108, 109, - 110, 111, 0, 113, 114, 0, 115, 116, 117, 118, - 119, 120, 0, 0, 121, 122, 123, 124, 125, 0, - 126, 127, 128, 129, 130, 0, 0, 0, 132, 133, - 134, 135, 136, 0, 138, 139, 140, 0, 141, 142, - 143, 144, 145, 146, 0, 0, 148, 149, 150, 0, - 0, 0, 0, 0, 0, 0, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 0, 162, 0, 163, - 164, 165, 166, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 174, 175, 176, 177, 178, 0, 179, - 180, 181, 0, 182, 183, 184, 0, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 0, 195, 0, - 196, 197, 198, 199, 0, 200, 0, 201, 0, 0, - 0, 204, 205, 206, 0, 208, 0, 209, 0, 210, - 211, 0, 212, 213, 214, 215, 216, 217, 0, 219, - 220, 221, 222, 0, 223, 224, 225, 226, 227, 228, - 0, 229, 0, 231, 232, 233, 234, 235, 236, 237, - 0, 238, 0, 239, 0, 0, 242, 0, 244, 245, - 246, 247, 248, 0, 0, 249, 0, 251, 0, 0, - 253, 254, 255, 0, 0, 256, 257, 258, 259, 260, - 490, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 0, 282, 283, 284, 285, 286, 0, 287, 288, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 0, 0, 299, 300, 301, 0, 0, 302, 303, - 0, 305, 0, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 0, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 0, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 0, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 0, 371, 372, 373, 374, 375, 0, 376, 377, - 378, 379, 380, 0, 382, 383, 384, 385, 0, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 492, 398, 399, 0, 400, 401, 0, 402, 0, 404, - 405, 406, 407, 408, 0, 409, 410, 0, 0, 411, - 412, 413, 414, 415, 0, 416, 417, 418, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 0, 0, 429, 430, 431, 432, 433, 434, 435, 0, - 436, 0, 438, 439, 440, 441, 0, 0, 442, 0, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 488, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, - 103, 104, 105, 0, 107, 108, 109, 110, 111, 0, - 113, 114, 0, 115, 116, 117, 118, 119, 120, 0, - 0, 121, 122, 123, 124, 125, 0, 126, 127, 128, - 129, 130, 0, 0, 0, 132, 133, 134, 135, 136, - 0, 138, 139, 140, 0, 141, 142, 143, 144, 145, - 146, 0, 0, 148, 149, 150, 0, 0, 0, 0, - 0, 0, 0, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 0, 162, 0, 163, 164, 165, 166, - 167, 168, 0, 169, 170, 171, 172, 173, 0, 0, - 174, 175, 176, 177, 178, 0, 179, 180, 181, 0, - 182, 183, 184, 0, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 0, 195, 0, 196, 197, 198, - 199, 0, 200, 0, 201, 0, 0, 0, 204, 205, - 206, 0, 208, 0, 209, 0, 210, 211, 0, 212, - 213, 214, 215, 216, 217, 0, 219, 220, 221, 222, - 0, 223, 224, 225, 226, 227, 228, 0, 229, 0, - 231, 232, 233, 234, 235, 236, 237, 0, 238, 0, - 239, 0, 0, 242, 0, 244, 245, 246, 247, 248, - 0, 0, 249, 0, 251, 0, 0, 253, 254, 552, - 0, 0, 256, 257, 258, 259, 260, 490, 262, 263, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 99, 100, 101, 0, 0, 0, 0, 0, + 0, 0, 102, 103, 0, 104, 105, 106, 0, 108, + 109, 110, 111, 112, 0, 114, 115, 0, 116, 117, + 118, 119, 120, 121, 0, 0, 122, 123, 124, 125, + 126, 0, 127, 128, 129, 130, 131, 0, 0, 0, + 133, 134, 135, 136, 137, 0, 139, 140, 141, 0, + 142, 143, 144, 145, 146, 147, 0, 0, 149, 150, + 151, 0, 0, 0, 0, 0, 0, 0, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 0, 163, + 0, 164, 165, 166, 167, 168, 169, 0, 170, 171, + 172, 173, 174, 0, 0, 175, 176, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 0, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, + 196, 0, 197, 198, 199, 200, 0, 201, 0, 202, + 0, 0, 0, 205, 206, 207, 0, 209, 0, 210, + 0, 211, 212, 0, 213, 214, 215, 216, 217, 1060, + 0, 220, 221, 222, 223, 0, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 232, 233, 234, 235, 236, + 237, 238, 0, 239, 0, 240, 0, 0, 243, 0, + 245, 246, 247, 248, 249, 0, 0, 250, 0, 252, + 0, 0, 254, 255, 256, 0, 0, 257, 258, 259, + 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 0, 283, 284, 285, 286, 287, 0, 288, + 289, 0, 291, 0, 292, 293, 294, 295, 296, 297, + 0, 298, 299, 0, 0, 300, 301, 302, 0, 0, + 303, 304, 0, 306, 0, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 0, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 0, 372, 373, 374, 375, 376, 0, + 377, 378, 379, 380, 381, 0, 383, 384, 385, 386, + 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 494, 399, 400, 401, 0, 402, 403, 0, + 404, 0, 406, 407, 408, 409, 410, 0, 411, 412, + 0, 0, 413, 414, 415, 416, 417, 0, 418, 419, + 420, 421, 422, 423, 424, 425, 0, 0, 426, 427, + 428, 429, 430, 0, 0, 431, 432, 433, 434, 435, + 436, 437, 0, 438, 0, 440, 441, 442, 443, 0, + 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 490, 0, 567, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 99, 100, 101, 0, 0, 0, 0, 0, 0, 0, + 102, 103, 0, 104, 105, 106, 0, 108, 109, 110, + 111, 112, 0, 114, 115, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 122, 123, 124, 125, 126, 0, + 127, 128, 129, 130, 131, 0, 0, 0, 133, 134, + 135, 136, 137, 0, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 0, 149, 150, 151, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 0, 163, 0, 164, + 165, 166, 167, 168, 169, 0, 170, 171, 172, 173, + 174, 0, 0, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 0, 183, 184, 185, 0, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, + 197, 198, 199, 200, 0, 201, 0, 202, 0, 0, + 0, 205, 206, 207, 0, 209, 0, 210, 0, 211, + 212, 0, 213, 214, 215, 216, 217, 1062, 0, 220, + 221, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 232, 233, 234, 235, 236, 237, 238, + 0, 239, 0, 240, 0, 0, 243, 0, 245, 246, + 247, 248, 249, 0, 0, 250, 0, 252, 0, 0, + 254, 255, 256, 0, 0, 257, 258, 259, 260, 261, + 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 0, 283, 284, 285, 286, 287, 0, 288, 289, 0, + 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, + 299, 0, 0, 300, 301, 302, 0, 0, 303, 304, + 0, 306, 0, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 0, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 0, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 0, 372, 373, 374, 375, 376, 0, 377, 378, + 379, 380, 381, 0, 383, 384, 385, 386, 0, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 494, 399, 400, 401, 0, 402, 403, 0, 404, 0, + 406, 407, 408, 409, 410, 0, 411, 412, 0, 0, + 413, 414, 415, 416, 417, 0, 418, 419, 420, 421, + 422, 423, 424, 425, 0, 0, 426, 427, 428, 429, + 430, 0, 0, 431, 432, 433, 434, 435, 436, 437, + 0, 438, 0, 440, 441, 442, 443, 0, 0, 444, + 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 490, 0, 567, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 0, 0, 0, 0, 0, 0, 0, 102, 103, + 0, 104, 105, 106, 0, 108, 109, 110, 111, 112, + 0, 114, 115, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 130, 131, 0, 0, 0, 133, 134, 135, 136, + 137, 0, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 0, 149, 150, 151, 0, 0, 0, + 0, 0, 0, 0, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 0, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, + 199, 200, 0, 201, 0, 202, 0, 0, 0, 205, + 206, 207, 0, 209, 0, 210, 0, 211, 212, 0, + 213, 214, 215, 216, 217, 1466, 0, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 232, 233, 234, 235, 236, 237, 238, 0, 239, + 0, 240, 0, 0, 243, 0, 245, 246, 247, 248, + 249, 0, 0, 250, 0, 252, 0, 0, 254, 255, + 256, 0, 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 0, 282, 283, - 284, 285, 286, 0, 287, 288, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 0, 0, - 299, 300, 301, 0, 0, 302, 303, 0, 305, 0, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 0, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 0, - 353, 354, 0, 356, 357, 358, 359, 360, 361, 362, - 363, 553, 365, 366, 367, 368, 369, 370, 0, 371, - 372, 373, 374, 554, 0, 376, 377, 378, 379, 380, - 0, 382, 383, 384, 385, 0, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 492, 398, 399, - 0, 400, 401, 0, 402, 0, 404, 405, 406, 407, - 408, 0, 555, 410, 0, 0, 411, 412, 413, 414, - 415, 0, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 0, 0, 429, - 430, 431, 432, 433, 434, 435, 0, 436, 0, 438, - 439, 440, 441, 0, 0, 442, 0, 0, 443, 444, + 274, 275, 276, 277, 278, 279, 280, 281, 0, 283, + 284, 285, 286, 287, 0, 288, 289, 0, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 298, 299, 0, + 0, 300, 301, 302, 0, 0, 303, 304, 0, 306, + 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, + 381, 0, 383, 384, 385, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 494, 399, + 400, 401, 0, 402, 403, 0, 404, 0, 406, 407, + 408, 409, 410, 0, 411, 412, 0, 0, 413, 414, + 415, 416, 417, 0, 418, 419, 420, 421, 422, 423, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 0, + 0, 431, 432, 433, 434, 435, 436, 437, 0, 438, + 0, 440, 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 488, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 2230, 0, 102, 103, 0, 104, + 105, 106, 0, 108, 109, 110, 111, 112, 0, 114, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 131, 0, 0, 0, 133, 134, 135, 136, 137, 0, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 0, 149, 150, 151, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 0, 0, 0, 205, 206, 207, + 0, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 0, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 0, 0, 243, 0, 245, 246, 247, 248, 249, 0, + 0, 250, 0, 252, 0, 0, 254, 255, 256, 0, + 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 0, 283, 284, 285, + 286, 287, 0, 288, 289, 0, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 0, 300, + 301, 302, 0, 0, 303, 304, 0, 306, 0, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 0, 377, 378, 379, 380, 381, 0, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 494, 399, 400, 401, + 0, 402, 403, 0, 404, 0, 406, 407, 408, 409, + 410, 0, 411, 412, 0, 0, 413, 414, 415, 416, + 417, 0, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 0, 0, 431, + 432, 433, 434, 435, 436, 437, 0, 438, 0, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 98, 99, 100, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 0, 103, 104, 105, - 0, 107, 108, 109, 110, 111, 0, 113, 114, 0, - 115, 116, 117, 118, 119, 120, 0, 0, 121, 122, - 123, 124, 125, 0, 126, 127, 128, 129, 130, 0, - 0, 0, 132, 133, 134, 135, 136, 0, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 146, 0, 0, - 148, 149, 150, 0, 0, 0, 0, 0, 0, 0, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 0, 162, 0, 163, 164, 165, 166, 167, 168, 0, - 169, 170, 171, 172, 173, 0, 0, 174, 175, 176, - 177, 178, 0, 179, 180, 181, 0, 182, 183, 184, - 0, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 0, 195, 0, 196, 197, 198, 199, 0, 200, - 0, 201, 0, 0, 0, 204, 205, 206, 0, 208, - 0, 209, 0, 210, 211, 0, 212, 213, 214, 215, - 216, 217, 0, 219, 220, 221, 222, 0, 223, 224, - 225, 226, 227, 228, 0, 229, 0, 231, 232, 233, - 234, 235, 236, 237, 0, 238, 0, 239, 0, 0, - 242, 0, 244, 245, 246, 247, 248, 0, 0, 249, - 0, 251, 0, 0, 253, 254, 255, 0, 0, 256, - 257, 258, 259, 260, 490, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 0, 282, 283, 284, 285, 286, - 0, 287, 288, 0, 290, 0, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 0, 0, 299, 300, 301, - 0, 0, 302, 303, 0, 305, 0, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 0, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 0, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 570, 340, 0, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 0, 353, 354, 0, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, - 375, 0, 376, 377, 378, 379, 380, 0, 382, 383, - 384, 385, 0, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 492, 398, 399, 0, 400, 401, - 0, 402, 0, 404, 405, 406, 407, 408, 0, 409, - 410, 0, 0, 411, 412, 413, 414, 415, 0, 416, - 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, - 425, 426, 427, 428, 0, 0, 429, 430, 431, 432, - 433, 434, 435, 0, 436, 0, 438, 439, 440, 441, - 0, 0, 442, 0, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 488, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 99, 100, 101, 0, 0, 0, + 0, 0, 2244, 0, 102, 103, 0, 104, 105, 106, + 0, 108, 109, 110, 111, 112, 0, 114, 115, 0, + 116, 117, 118, 119, 120, 121, 0, 0, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 130, 131, 0, + 0, 0, 133, 134, 135, 136, 137, 0, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 0, + 149, 150, 151, 0, 0, 0, 0, 0, 0, 0, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 0, 163, 0, 164, 165, 166, 167, 168, 169, 0, + 170, 171, 172, 173, 174, 0, 0, 175, 176, 177, + 178, 179, 0, 180, 181, 182, 0, 183, 184, 185, + 0, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 0, 196, 0, 197, 198, 199, 200, 0, 201, + 0, 202, 0, 0, 0, 205, 206, 207, 0, 209, + 0, 210, 0, 211, 212, 0, 213, 214, 215, 216, + 217, 218, 0, 220, 221, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 232, 233, 234, + 235, 236, 237, 238, 0, 239, 0, 240, 0, 0, + 243, 0, 245, 246, 247, 248, 249, 0, 0, 250, + 0, 252, 0, 0, 254, 255, 256, 0, 0, 257, + 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 0, 283, 284, 285, 286, 287, + 0, 288, 289, 0, 291, 0, 292, 293, 294, 295, + 296, 297, 0, 298, 299, 0, 0, 300, 301, 302, + 0, 0, 303, 304, 0, 306, 0, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 0, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 0, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 0, 354, 355, 0, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, + 376, 0, 377, 378, 379, 380, 381, 0, 383, 384, + 385, 386, 0, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 494, 399, 400, 401, 0, 402, + 403, 0, 404, 0, 406, 407, 408, 409, 410, 0, + 411, 412, 0, 0, 413, 414, 415, 416, 417, 0, + 418, 419, 420, 421, 422, 423, 424, 425, 0, 0, + 426, 427, 428, 429, 430, 0, 0, 431, 432, 433, + 434, 435, 436, 437, 0, 438, 0, 440, 441, 442, + 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 490, 0, 567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 98, 99, 100, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 0, 103, 104, 105, 0, 107, 108, - 109, 110, 111, 0, 113, 114, 0, 115, 116, 117, - 118, 119, 120, 0, 0, 121, 122, 123, 124, 125, - 0, 126, 127, 128, 129, 130, 0, 0, 0, 132, - 133, 134, 135, 136, 0, 138, 139, 140, 0, 141, - 142, 143, 144, 145, 146, 0, 0, 148, 149, 150, - 0, 0, 0, 0, 0, 0, 0, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 0, 162, 0, - 163, 164, 165, 166, 167, 168, 0, 169, 170, 171, - 172, 173, 0, 0, 174, 175, 176, 177, 178, 0, - 179, 180, 181, 0, 182, 183, 184, 0, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 0, 195, - 0, 196, 197, 198, 199, 0, 200, 0, 201, 0, - 0, 0, 204, 205, 206, 0, 208, 0, 209, 0, - 210, 211, 0, 212, 213, 214, 215, 216, 626, 0, - 219, 220, 221, 222, 0, 223, 224, 225, 226, 227, - 228, 0, 229, 0, 231, 232, 233, 234, 235, 236, - 237, 0, 238, 0, 239, 0, 0, 242, 0, 244, - 245, 246, 247, 248, 0, 0, 249, 0, 251, 0, - 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, - 260, 490, 262, 263, 264, 265, 266, 267, 268, 269, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 99, 100, 101, 0, 0, 0, 0, 0, + 0, 0, 102, 103, 0, 104, 105, 106, 0, 108, + 109, 110, 111, 112, 0, 114, 115, 0, 116, 117, + 118, 119, 120, 121, 0, 0, 122, 123, 124, 125, + 126, 0, 127, 128, 129, 130, 131, 0, 0, 0, + 133, 134, 135, 136, 137, 0, 139, 140, 141, 0, + 142, 143, 144, 145, 146, 147, 0, 0, 149, 150, + 151, 0, 0, 0, 0, 0, 0, 0, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 0, 163, + 0, 164, 165, 166, 167, 168, 169, 0, 170, 171, + 172, 173, 174, 0, 0, 175, 176, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 0, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, + 196, 0, 197, 198, 199, 200, 0, 201, 0, 202, + 0, 0, 0, 205, 206, 207, 0, 209, 0, 210, + 0, 211, 212, 0, 213, 214, 215, 216, 217, 2373, + 0, 220, 221, 222, 223, 0, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 232, 233, 234, 235, 236, + 237, 238, 0, 239, 0, 240, 0, 0, 243, 0, + 245, 246, 247, 248, 249, 0, 0, 250, 0, 252, + 0, 0, 254, 255, 256, 0, 0, 257, 258, 259, + 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 0, 282, 283, 284, 285, 286, 0, 287, 288, - 0, 290, 0, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 0, 0, 299, 300, 301, 0, 0, 302, - 303, 0, 305, 0, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 0, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 0, 327, 328, 329, 330, + 280, 281, 0, 283, 284, 285, 286, 287, 0, 288, + 289, 0, 291, 0, 292, 293, 294, 295, 296, 297, + 0, 298, 299, 0, 0, 300, 301, 302, 0, 0, + 303, 304, 0, 306, 0, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 0, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 0, 353, 354, 0, 356, 357, 358, + 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 0, 371, 372, 373, 374, 375, 0, 376, - 377, 378, 379, 380, 0, 382, 383, 384, 385, 0, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 492, 398, 399, 0, 400, 401, 0, 402, 0, - 404, 405, 406, 407, 408, 0, 409, 410, 0, 0, - 411, 412, 413, 414, 415, 0, 416, 417, 418, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 0, 0, 429, 430, 431, 432, 433, 434, 435, - 0, 436, 0, 438, 439, 440, 441, 0, 0, 442, - 0, 0, 443, 444, 445, 446, 447, 448, 449, 450, + 369, 370, 371, 0, 372, 373, 374, 375, 376, 0, + 377, 378, 379, 380, 381, 0, 383, 384, 385, 386, + 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 494, 399, 400, 401, 0, 402, 403, 0, + 404, 0, 406, 407, 408, 409, 410, 0, 411, 412, + 0, 0, 413, 414, 415, 416, 417, 0, 418, 419, + 420, 421, 422, 423, 424, 425, 0, 0, 426, 427, + 428, 429, 430, 0, 0, 431, 432, 433, 434, 435, + 436, 437, 0, 438, 0, 440, 441, 442, 443, 0, + 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 488, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 98, 99, - 100, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 0, 103, 104, 105, 0, 107, 108, 109, 110, 111, - 0, 113, 114, 0, 115, 116, 117, 118, 119, 120, - 0, 0, 121, 122, 123, 124, 125, 0, 126, 127, - 128, 129, 130, 0, 0, 0, 132, 133, 134, 135, - 136, 0, 138, 139, 140, 0, 141, 142, 143, 144, - 145, 146, 0, 0, 148, 149, 150, 0, 0, 0, - 0, 0, 0, 0, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 0, 162, 0, 163, 164, 165, - 166, 167, 168, 0, 169, 170, 171, 172, 173, 0, - 0, 174, 175, 176, 177, 178, 0, 179, 180, 181, - 0, 182, 183, 184, 0, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 0, 195, 0, 196, 197, - 198, 199, 0, 200, 0, 201, 0, 0, 0, 204, - 205, 206, 0, 208, 0, 209, 0, 210, 211, 0, - 212, 213, 214, 215, 216, 642, 0, 219, 220, 221, - 222, 0, 223, 224, 225, 226, 227, 228, 0, 229, - 0, 231, 232, 233, 234, 235, 236, 237, 0, 238, - 0, 239, 0, 0, 242, 0, 244, 245, 246, 247, - 248, 0, 0, 249, 0, 251, 0, 0, 253, 254, - 255, 0, 0, 256, 257, 258, 259, 260, 490, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 0, 282, - 283, 284, 285, 286, 0, 287, 288, 0, 290, 0, - 291, 292, 293, 294, 295, 296, 0, 297, 298, 0, - 0, 299, 300, 301, 0, 0, 302, 303, 0, 305, - 0, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 0, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 0, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 0, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 0, - 371, 372, 373, 374, 375, 0, 376, 377, 378, 379, - 380, 0, 382, 383, 384, 385, 0, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 492, 398, - 399, 0, 400, 401, 0, 402, 0, 404, 405, 406, - 407, 408, 0, 409, 410, 0, 0, 411, 412, 413, - 414, 415, 0, 416, 417, 418, 419, 420, 421, 422, - 423, 0, 0, 424, 425, 426, 427, 428, 0, 0, - 429, 430, 431, 432, 433, 434, 435, 0, 436, 0, - 438, 439, 440, 441, 0, 0, 442, 0, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 488, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 91, 92, 93, - 94, 95, 96, 97, 0, 98, 99, 100, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 0, 103, 104, - 105, 0, 107, 108, 109, 110, 111, 0, 113, 114, - 0, 115, 116, 117, 118, 119, 120, 0, 0, 121, - 122, 123, 124, 125, 0, 126, 127, 128, 129, 130, - 0, 0, 0, 132, 133, 134, 135, 136, 0, 138, - 139, 140, 0, 141, 142, 143, 144, 145, 146, 0, - 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, - 0, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 0, 162, 0, 163, 164, 165, 166, 167, 168, - 0, 169, 170, 171, 172, 173, 0, 0, 174, 175, - 176, 177, 178, 0, 179, 180, 181, 0, 182, 183, - 184, 0, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 0, 195, 0, 196, 197, 198, 199, 0, - 200, 0, 201, 0, 0, 0, 204, 205, 206, 0, - 208, 0, 209, 0, 210, 211, 0, 212, 213, 214, - 215, 216, 646, 0, 219, 220, 221, 222, 0, 223, - 224, 225, 226, 227, 228, 0, 229, 0, 231, 232, - 233, 234, 235, 236, 237, 0, 238, 0, 239, 0, - 0, 242, 0, 244, 245, 246, 247, 248, 0, 0, - 249, 0, 251, 0, 0, 253, 254, 255, 0, 0, - 256, 257, 258, 259, 260, 490, 262, 263, 264, 265, + 461, 462, 463, 464, 465, 490, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 99, 100, 101, 0, 0, 0, 0, 0, 0, 0, + 102, 103, 0, 104, 105, 106, 0, 108, 109, 110, + 111, 112, 0, 114, 115, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 122, 123, 124, 125, 126, 0, + 127, 128, 129, 130, 131, 0, 0, 0, 133, 134, + 135, 136, 137, 0, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 0, 149, 150, 151, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 0, 163, 0, 164, + 165, 166, 167, 168, 169, 0, 170, 171, 172, 173, + 174, 0, 0, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 0, 183, 184, 185, 0, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, + 197, 198, 199, 200, 0, 201, 0, 202, 0, 0, + 0, 205, 206, 207, 0, 209, 0, 210, 0, 211, + 212, 0, 213, 214, 215, 216, 217, 218, 0, 220, + 221, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 232, 233, 234, 235, 236, 237, 238, + 0, 239, 0, 240, 0, 0, 243, 0, 245, 246, + 247, 248, 249, 0, 0, 250, 0, 252, 0, 0, + 254, 255, 256, 0, 0, 257, 258, 259, 260, 261, + 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 0, 283, 284, 285, 286, 287, 0, 288, 289, 0, + 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, + 299, 0, 0, 300, 301, 302, 0, 0, 303, 304, + 0, 306, 0, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 0, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 0, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 0, 372, 373, 374, 375, 376, 0, 377, 378, + 379, 380, 381, 0, 383, 384, 385, 386, 0, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 494, 399, 400, 401, 0, 402, 403, 0, 404, 0, + 406, 407, 408, 409, 410, 0, 411, 412, 0, 0, + 413, 414, 415, 416, 417, 0, 418, 419, 420, 421, + 422, 423, 424, 425, 0, 0, 426, 427, 428, 429, + 430, 0, 0, 431, 432, 433, 434, 435, 436, 437, + 0, 438, 0, 440, 441, 442, 443, 0, 0, 444, + 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 490, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 0, 0, 0, 0, 0, 0, 0, 102, 103, + 0, 104, 105, 106, 0, 108, 109, 110, 111, 112, + 0, 114, 115, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 130, 131, 0, 0, 0, 133, 134, 135, 136, + 137, 0, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 0, 149, 150, 151, 0, 0, 0, + 0, 0, 0, 0, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 0, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, + 199, 200, 0, 201, 0, 202, 0, 0, 0, 205, + 206, 207, 0, 554, 0, 210, 0, 211, 212, 0, + 213, 214, 215, 216, 217, 218, 0, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 232, 233, 234, 235, 236, 237, 238, 0, 239, + 0, 240, 0, 0, 243, 0, 245, 246, 247, 248, + 249, 0, 0, 250, 0, 252, 0, 0, 254, 255, + 555, 0, 0, 257, 258, 259, 260, 261, 492, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 0, 283, + 284, 285, 286, 287, 0, 288, 289, 0, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 298, 299, 0, + 0, 300, 301, 302, 0, 0, 303, 304, 0, 306, + 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, + 363, 364, 556, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 557, 0, 377, 378, 379, 380, + 381, 0, 383, 384, 385, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 494, 399, + 400, 401, 0, 402, 403, 0, 404, 0, 406, 407, + 408, 409, 410, 0, 558, 412, 0, 0, 413, 414, + 415, 416, 417, 0, 418, 419, 420, 421, 422, 423, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 0, + 0, 431, 432, 433, 434, 435, 436, 437, 0, 438, + 0, 440, 441, 442, 443, 0, 0, 444, 0, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 0, 104, + 105, 106, 0, 108, 109, 110, 111, 112, 0, 114, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 131, 0, 0, 0, 133, 134, 135, 136, 137, 0, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 0, 149, 150, 151, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 0, 0, 0, 205, 206, 207, + 0, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 0, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 0, 0, 243, 0, 245, 246, 247, 248, 249, 0, + 0, 250, 0, 252, 0, 0, 254, 255, 256, 0, + 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 0, 282, 283, 284, 285, - 286, 0, 287, 288, 0, 290, 0, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 0, 0, 299, 300, - 301, 0, 0, 302, 303, 0, 305, 0, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 0, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 0, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, - 0, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 0, 371, 372, 373, - 374, 375, 0, 376, 377, 378, 379, 380, 0, 382, - 383, 384, 385, 0, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 492, 398, 399, 0, 400, - 401, 0, 402, 0, 404, 405, 406, 407, 408, 0, - 409, 410, 0, 0, 411, 412, 413, 414, 415, 0, - 416, 417, 418, 419, 420, 421, 422, 423, 0, 0, - 424, 425, 426, 427, 428, 0, 0, 429, 430, 431, - 432, 433, 434, 435, 0, 436, 0, 438, 439, 440, - 441, 0, 0, 442, 0, 0, 443, 444, 445, 446, + 276, 277, 278, 279, 280, 281, 0, 283, 284, 285, + 286, 287, 0, 288, 289, 0, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 0, 300, + 301, 302, 0, 0, 303, 304, 0, 306, 0, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 577, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 0, 377, 378, 379, 380, 381, 0, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 494, 399, 400, 401, + 0, 402, 403, 0, 404, 0, 406, 407, 408, 409, + 410, 0, 411, 412, 0, 0, 413, 414, 415, 416, + 417, 0, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 0, 0, 431, + 432, 433, 434, 435, 436, 437, 0, 438, 0, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 488, 0, 0, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 98, 99, 100, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 0, 103, 104, 105, 0, 107, - 108, 109, 110, 111, 0, 113, 114, 0, 115, 116, - 117, 118, 119, 120, 0, 0, 121, 122, 123, 124, - 125, 0, 126, 127, 128, 129, 130, 0, 0, 0, - 132, 133, 134, 135, 136, 0, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 146, 0, 0, 148, 149, - 150, 0, 0, 0, 0, 0, 0, 0, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 0, 162, - 0, 163, 164, 165, 166, 167, 168, 0, 169, 170, - 171, 172, 173, 0, 0, 174, 175, 176, 177, 178, - 0, 179, 180, 181, 0, 182, 183, 184, 0, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 0, - 195, 0, 196, 197, 198, 199, 0, 200, 0, 201, - 0, 0, 0, 204, 205, 206, 0, 208, 0, 209, - 0, 210, 211, 0, 212, 213, 214, 215, 216, 649, - 0, 219, 220, 221, 222, 0, 223, 224, 225, 226, - 227, 228, 0, 229, 0, 231, 232, 233, 234, 235, - 236, 237, 0, 238, 0, 239, 0, 0, 242, 0, - 244, 245, 246, 247, 248, 0, 0, 249, 0, 251, - 0, 0, 253, 254, 255, 0, 0, 256, 257, 258, - 259, 260, 490, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 0, 282, 283, 284, 285, 286, 0, 287, - 288, 0, 290, 0, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 0, 0, 299, 300, 301, 0, 0, - 302, 303, 0, 305, 0, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 0, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 0, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 0, 353, 354, 0, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 0, 371, 372, 373, 374, 375, 0, - 376, 377, 378, 379, 380, 0, 382, 383, 384, 385, - 0, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 492, 398, 399, 0, 400, 401, 0, 402, - 0, 404, 405, 406, 407, 408, 0, 409, 410, 0, - 0, 411, 412, 413, 414, 415, 0, 416, 417, 418, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 0, 0, 429, 430, 431, 432, 433, 434, - 435, 0, 436, 0, 438, 439, 440, 441, 0, 0, - 442, 0, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 488, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 99, 100, 101, 0, 0, 0, + 0, 0, 0, 0, 102, 103, 0, 104, 105, 106, + 0, 108, 109, 110, 111, 112, 0, 114, 115, 0, + 116, 117, 118, 119, 120, 121, 0, 0, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 130, 131, 0, + 0, 0, 133, 134, 135, 136, 137, 0, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 0, + 149, 150, 151, 0, 0, 0, 0, 0, 0, 0, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 0, 163, 0, 164, 165, 166, 167, 168, 169, 0, + 170, 171, 172, 173, 174, 0, 0, 175, 176, 177, + 178, 179, 0, 180, 181, 182, 0, 183, 184, 185, + 0, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 0, 196, 0, 197, 198, 199, 200, 0, 201, + 0, 202, 0, 0, 0, 205, 206, 207, 0, 209, + 0, 210, 0, 211, 212, 0, 213, 214, 215, 216, + 217, 631, 0, 220, 221, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 232, 233, 234, + 235, 236, 237, 238, 0, 239, 0, 240, 0, 0, + 243, 0, 245, 246, 247, 248, 249, 0, 0, 250, + 0, 252, 0, 0, 254, 255, 256, 0, 0, 257, + 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 0, 283, 284, 285, 286, 287, + 0, 288, 289, 0, 291, 0, 292, 293, 294, 295, + 296, 297, 0, 298, 299, 0, 0, 300, 301, 302, + 0, 0, 303, 304, 0, 306, 0, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 0, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 0, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 0, 354, 355, 0, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, + 376, 0, 377, 378, 379, 380, 381, 0, 383, 384, + 385, 386, 0, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 494, 399, 400, 401, 0, 402, + 403, 0, 404, 0, 406, 407, 408, 409, 410, 0, + 411, 412, 0, 0, 413, 414, 415, 416, 417, 0, + 418, 419, 420, 421, 422, 423, 424, 425, 0, 0, + 426, 427, 428, 429, 430, 0, 0, 431, 432, 433, + 434, 435, 436, 437, 0, 438, 0, 440, 441, 442, + 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 98, - 99, 100, 0, 0, 0, 0, 0, 0, 0, 101, - 102, 0, 103, 104, 105, 0, 107, 108, 109, 110, - 111, 0, 113, 114, 0, 115, 116, 117, 118, 119, - 120, 0, 0, 121, 122, 123, 124, 125, 0, 126, - 127, 128, 129, 130, 0, 0, 0, 132, 133, 134, - 135, 136, 0, 138, 139, 140, 0, 141, 142, 143, - 144, 145, 146, 0, 0, 148, 149, 150, 0, 0, - 0, 0, 0, 0, 0, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 0, 162, 0, 163, 164, - 165, 166, 167, 168, 0, 169, 170, 171, 172, 173, - 0, 0, 174, 175, 176, 177, 178, 0, 179, 180, - 181, 0, 182, 183, 184, 0, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 0, 195, 0, 196, - 197, 198, 199, 0, 200, 0, 201, 0, 0, 0, - 204, 205, 206, 0, 208, 0, 209, 0, 210, 211, - 0, 212, 213, 214, 215, 216, 217, 0, 219, 220, - 221, 222, 0, 223, 224, 225, 226, 227, 228, 0, - 229, 0, 231, 232, 233, 234, 235, 236, 237, 0, - 238, 0, 239, 0, 0, 242, 0, 244, 245, 246, - 247, 248, 0, 0, 249, 0, 251, 0, 0, 253, - 254, 255, 0, 0, 256, 257, 258, 259, 260, 490, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 0, - 282, 283, 284, 285, 286, 0, 287, 288, 0, 290, - 0, 291, 292, 293, 294, 295, 296, 0, 297, 298, - 0, 0, 299, 300, 301, 0, 0, 302, 303, 0, - 305, 0, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 0, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 0, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 99, 100, 101, 0, 0, 0, 0, 0, + 0, 0, 102, 103, 0, 104, 105, 106, 0, 108, + 109, 110, 111, 112, 0, 114, 115, 0, 116, 117, + 118, 119, 120, 121, 0, 0, 122, 123, 124, 125, + 126, 0, 127, 128, 129, 130, 131, 0, 0, 0, + 133, 134, 135, 136, 137, 0, 139, 140, 141, 0, + 142, 143, 144, 145, 146, 147, 0, 0, 149, 150, + 151, 0, 0, 0, 0, 0, 0, 0, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 0, 163, + 0, 164, 165, 166, 167, 168, 169, 0, 170, 171, + 172, 173, 174, 0, 0, 175, 176, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 0, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, + 196, 0, 197, 198, 199, 200, 0, 201, 0, 202, + 0, 0, 0, 205, 206, 207, 0, 209, 0, 210, + 0, 211, 212, 0, 213, 214, 215, 216, 217, 647, + 0, 220, 221, 222, 223, 0, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 232, 233, 234, 235, 236, + 237, 238, 0, 239, 0, 240, 0, 0, 243, 0, + 245, 246, 247, 248, 249, 0, 0, 250, 0, 252, + 0, 0, 254, 255, 256, 0, 0, 257, 258, 259, + 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 0, 283, 284, 285, 286, 287, 0, 288, + 289, 0, 291, 0, 292, 293, 294, 295, 296, 297, + 0, 298, 299, 0, 0, 300, 301, 302, 0, 0, + 303, 304, 0, 306, 0, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 0, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 0, 372, 373, 374, 375, 376, 0, + 377, 378, 379, 380, 381, 0, 383, 384, 385, 386, + 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 494, 399, 400, 401, 0, 402, 403, 0, + 404, 0, 406, 407, 408, 409, 410, 0, 411, 412, + 0, 0, 413, 414, 415, 416, 417, 0, 418, 419, + 420, 421, 422, 423, 424, 425, 0, 0, 426, 427, + 428, 429, 430, 0, 0, 431, 432, 433, 434, 435, + 436, 437, 0, 438, 0, 440, 441, 442, 443, 0, + 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 490, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 99, 100, 101, 0, 0, 0, 0, 0, 0, 0, + 102, 103, 0, 104, 105, 106, 0, 108, 109, 110, + 111, 112, 0, 114, 115, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 122, 123, 124, 125, 126, 0, + 127, 128, 129, 130, 131, 0, 0, 0, 133, 134, + 135, 136, 137, 0, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 0, 149, 150, 151, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 0, 163, 0, 164, + 165, 166, 167, 168, 169, 0, 170, 171, 172, 173, + 174, 0, 0, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 0, 183, 184, 185, 0, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, + 197, 198, 199, 200, 0, 201, 0, 202, 0, 0, + 0, 205, 206, 207, 0, 209, 0, 210, 0, 211, + 212, 0, 213, 214, 215, 216, 217, 651, 0, 220, + 221, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 232, 233, 234, 235, 236, 237, 238, + 0, 239, 0, 240, 0, 0, 243, 0, 245, 246, + 247, 248, 249, 0, 0, 250, 0, 252, 0, 0, + 254, 255, 256, 0, 0, 257, 258, 259, 260, 261, + 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 0, 283, 284, 285, 286, 287, 0, 288, 289, 0, + 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, + 299, 0, 0, 300, 301, 302, 0, 0, 303, 304, + 0, 306, 0, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 0, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 0, 353, 354, 0, 356, 357, 358, 359, 360, - 361, 362, 363, 553, 365, 366, 367, 368, 369, 370, - 0, 371, 372, 373, 374, 375, 0, 376, 377, 378, - 379, 380, 0, 382, 383, 384, 385, 0, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 492, - 398, 399, 0, 400, 401, 0, 402, 0, 404, 405, - 406, 407, 408, 0, 555, 410, 0, 0, 411, 412, - 413, 414, 415, 0, 416, 417, 418, 419, 420, 421, - 422, 423, 0, 0, 424, 425, 426, 427, 428, 0, - 0, 429, 430, 431, 432, 433, 434, 435, 0, 436, - 0, 438, 439, 440, 441, 0, 0, 442, 0, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 0, 372, 373, 374, 375, 376, 0, 377, 378, + 379, 380, 381, 0, 383, 384, 385, 386, 0, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 494, 399, 400, 401, 0, 402, 403, 0, 404, 0, + 406, 407, 408, 409, 410, 0, 411, 412, 0, 0, + 413, 414, 415, 416, 417, 0, 418, 419, 420, 421, + 422, 423, 424, 425, 0, 0, 426, 427, 428, 429, + 430, 0, 0, 431, 432, 433, 434, 435, 436, 437, + 0, 438, 0, 440, 441, 442, 443, 0, 0, 444, + 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 488, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 94, 95, 96, 97, 0, 98, 99, 100, 0, - 0, 0, 0, 0, 1314, 0, 101, 102, 0, 103, - 104, 105, 0, 107, 108, 109, 110, 111, 0, 113, - 114, 0, 115, 116, 117, 118, 119, 120, 0, 0, - 121, 122, 123, 124, 125, 0, 126, 127, 128, 129, - 130, 0, 0, 0, 132, 133, 134, 135, 136, 0, - 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, - 0, 0, 148, 149, 150, 0, 0, 0, 0, 0, - 0, 0, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 0, 162, 0, 163, 164, 165, 166, 167, - 168, 0, 169, 170, 171, 172, 173, 0, 0, 174, - 175, 176, 177, 178, 0, 179, 180, 181, 0, 182, - 183, 184, 0, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 0, 195, 0, 196, 197, 198, 199, - 0, 200, 0, 201, 0, 0, 0, 204, 205, 206, - 0, 208, 0, 209, 0, 210, 211, 0, 212, 213, - 214, 215, 216, 217, 0, 219, 220, 221, 222, 0, - 223, 224, 225, 226, 227, 228, 0, 229, 0, 231, - 232, 233, 234, 235, 236, 237, 0, 238, 0, 239, - 0, 0, 242, 0, 244, 245, 246, 247, 248, 0, - 0, 249, 0, 251, 0, 0, 253, 254, 255, 0, - 0, 256, 257, 258, 259, 260, 490, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 0, 282, 283, 284, - 285, 286, 0, 287, 288, 0, 290, 0, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 0, 0, 299, - 300, 301, 0, 0, 302, 303, 0, 305, 0, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 0, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 0, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 0, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 0, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, - 373, 374, 375, 0, 0, 377, 378, 379, 380, 0, - 382, 383, 384, 385, 0, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 492, 398, 399, 0, - 400, 401, 0, 402, 0, 404, 405, 406, 407, 408, - 0, 409, 410, 0, 0, 411, 412, 413, 414, 415, - 0, 416, 417, 418, 419, 420, 421, 422, 423, 0, - 0, 424, 425, 426, 427, 428, 0, 0, 429, 430, - 431, 432, 433, 434, 435, 0, 436, 0, 438, 439, - 440, 441, 0, 0, 442, 0, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 488, 0, + 463, 464, 465, 490, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 0, 0, 0, 0, 0, 0, 0, 102, 103, + 0, 104, 105, 106, 0, 108, 109, 110, 111, 112, + 0, 114, 115, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 130, 131, 0, 0, 0, 133, 134, 135, 136, + 137, 0, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 0, 149, 150, 151, 0, 0, 0, + 0, 0, 0, 0, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 0, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, + 199, 200, 0, 201, 0, 202, 0, 0, 0, 205, + 206, 207, 0, 209, 0, 210, 0, 211, 212, 0, + 213, 214, 215, 216, 217, 654, 0, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 232, 233, 234, 235, 236, 237, 238, 0, 239, + 0, 240, 0, 0, 243, 0, 245, 246, 247, 248, + 249, 0, 0, 250, 0, 252, 0, 0, 254, 255, + 256, 0, 0, 257, 258, 259, 260, 261, 492, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 0, 283, + 284, 285, 286, 287, 0, 288, 289, 0, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 298, 299, 0, + 0, 300, 301, 302, 0, 0, 303, 304, 0, 306, + 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, + 381, 0, 383, 384, 385, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 494, 399, + 400, 401, 0, 402, 403, 0, 404, 0, 406, 407, + 408, 409, 410, 0, 411, 412, 0, 0, 413, 414, + 415, 416, 417, 0, 418, 419, 420, 421, 422, 423, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 0, + 0, 431, 432, 433, 434, 435, 436, 437, 0, 438, + 0, 440, 441, 442, 443, 0, 0, 444, 0, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 0, 104, + 105, 106, 0, 108, 109, 110, 111, 112, 0, 114, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 131, 0, 0, 0, 133, 134, 135, 136, 137, 0, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 0, 149, 150, 151, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 0, 0, 0, 205, 206, 207, + 0, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 218, 0, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 0, 0, 243, 0, 245, 246, 247, 248, 249, 0, + 0, 250, 0, 252, 0, 0, 254, 255, 256, 0, + 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 0, 283, 284, 285, + 286, 287, 0, 288, 289, 0, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 0, 300, + 301, 302, 0, 0, 303, 304, 0, 306, 0, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, + 556, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 0, 377, 378, 379, 380, 381, 0, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 494, 399, 400, 401, + 0, 402, 403, 0, 404, 0, 406, 407, 408, 409, + 410, 0, 558, 412, 0, 0, 413, 414, 415, 416, + 417, 0, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 0, 0, 431, + 432, 433, 434, 435, 436, 437, 0, 438, 0, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 98, 99, 100, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 0, 103, 104, 105, 0, - 107, 108, 109, 110, 111, 0, 113, 114, 0, 115, - 116, 117, 118, 119, 120, 0, 0, 121, 122, 123, - 124, 125, 0, 126, 127, 128, 129, 130, 0, 0, - 0, 132, 133, 134, 135, 136, 0, 138, 139, 140, - 0, 141, 142, 143, 144, 145, 146, 0, 0, 148, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 0, - 162, 0, 163, 164, 165, 166, 167, 168, 0, 169, - 170, 171, 172, 173, 0, 0, 174, 175, 176, 177, - 178, 0, 179, 180, 181, 0, 182, 183, 184, 0, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 0, 195, 0, 196, 197, 198, 199, 0, 200, 0, - 201, 0, 0, 0, 204, 205, 206, 0, 208, 0, - 209, 0, 210, 211, 0, 212, 213, 214, 215, 216, - 1447, 0, 219, 220, 221, 222, 0, 223, 224, 225, - 226, 227, 228, 0, 229, 0, 231, 232, 233, 234, - 235, 236, 237, 0, 238, 0, 239, 0, 0, 242, - 0, 244, 245, 246, 247, 248, 0, 0, 249, 0, - 251, 0, 0, 253, 254, 255, 0, 0, 256, 257, - 258, 259, 260, 490, 262, 263, 264, 265, 266, 267, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 99, 100, 101, 0, 0, 0, + 0, 0, 1320, 0, 102, 103, 0, 104, 105, 106, + 0, 108, 109, 110, 111, 112, 0, 114, 115, 0, + 116, 117, 118, 119, 120, 121, 0, 0, 122, 123, + 124, 125, 126, 0, 127, 128, 129, 130, 131, 0, + 0, 0, 133, 134, 135, 136, 137, 0, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 0, + 149, 150, 151, 0, 0, 0, 0, 0, 0, 0, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 0, 163, 0, 164, 165, 166, 167, 168, 169, 0, + 170, 171, 172, 173, 174, 0, 0, 175, 176, 177, + 178, 179, 0, 180, 181, 182, 0, 183, 184, 185, + 0, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 0, 196, 0, 197, 198, 199, 200, 0, 201, + 0, 202, 0, 0, 0, 205, 206, 207, 0, 209, + 0, 210, 0, 211, 212, 0, 213, 214, 215, 216, + 217, 218, 0, 220, 221, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 232, 233, 234, + 235, 236, 237, 238, 0, 239, 0, 240, 0, 0, + 243, 0, 245, 246, 247, 248, 249, 0, 0, 250, + 0, 252, 0, 0, 254, 255, 256, 0, 0, 257, + 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 0, 282, 283, 284, 285, 286, 0, - 287, 288, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 0, 0, 299, 300, 301, 0, - 0, 302, 303, 0, 305, 0, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 0, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 0, 327, 328, + 278, 279, 280, 281, 0, 283, 284, 285, 286, 287, + 0, 288, 289, 0, 291, 0, 292, 293, 294, 295, + 296, 297, 0, 298, 299, 0, 0, 300, 301, 302, + 0, 0, 303, 304, 0, 306, 0, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 0, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 0, 353, 354, 0, 356, + 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 0, 371, 372, 373, 374, 375, - 0, 376, 377, 378, 379, 380, 0, 382, 383, 384, - 385, 0, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 492, 398, 399, 0, 400, 401, 0, - 402, 0, 404, 405, 406, 407, 408, 0, 409, 410, - 0, 0, 411, 412, 413, 414, 415, 0, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 0, 0, 429, 430, 431, 432, 433, - 434, 435, 0, 436, 0, 438, 439, 440, 441, 0, - 0, 442, 0, 0, 443, 444, 445, 446, 447, 448, + 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, + 376, 0, 0, 378, 379, 380, 381, 0, 383, 384, + 385, 386, 0, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 494, 399, 400, 401, 0, 402, + 403, 0, 404, 0, 406, 407, 408, 409, 410, 0, + 411, 412, 0, 0, 413, 414, 415, 416, 417, 0, + 418, 419, 420, 421, 422, 423, 424, 425, 0, 0, + 426, 427, 428, 429, 430, 0, 0, 431, 432, 433, + 434, 435, 436, 437, 0, 438, 0, 440, 441, 442, + 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 488, 0, 0, 0, 0, + 459, 460, 461, 462, 463, 464, 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 0, 103, 104, 105, 0, 107, 108, 109, - 110, 111, 0, 113, 114, 0, 115, 116, 117, 118, - 119, 120, 0, 0, 121, 122, 123, 124, 125, 0, - 126, 127, 128, 129, 130, 0, 0, 0, 132, 133, - 134, 135, 136, 0, 138, 139, 140, 0, 141, 142, - 143, 144, 145, 146, 0, 0, 148, 149, 150, 0, - 0, 0, 0, 0, 0, 0, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 0, 162, 0, 163, - 164, 165, 166, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 174, 175, 176, 177, 178, 0, 179, - 180, 181, 0, 182, 183, 184, 0, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 0, 195, 0, - 196, 197, 198, 199, 0, 200, 0, 201, 0, 0, - 0, 204, 205, 206, 0, 208, 0, 209, 0, 210, - 211, 0, 212, 213, 214, 215, 216, 1736, 0, 219, - 220, 221, 222, 0, 223, 224, 225, 226, 227, 228, - 0, 229, 0, 231, 232, 233, 234, 235, 236, 237, - 0, 238, 0, 239, 0, 0, 242, 0, 244, 245, - 246, 247, 248, 0, 0, 249, 0, 251, 0, 0, - 253, 254, 255, 0, 0, 256, 257, 258, 259, 260, - 490, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 0, 282, 283, 284, 285, 286, 0, 287, 288, 0, - 290, 0, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 0, 0, 299, 300, 301, 0, 0, 302, 303, - 0, 305, 0, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 0, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 0, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 0, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 0, 371, 372, 373, 374, 375, 0, 376, 377, - 378, 379, 380, 0, 382, 383, 384, 385, 0, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 492, 398, 399, 0, 400, 401, 0, 402, 0, 404, - 405, 406, 407, 408, 0, 409, 410, 0, 0, 411, - 412, 413, 414, 415, 0, 416, 417, 418, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 0, 0, 429, 430, 431, 432, 433, 434, 435, 0, - 436, 0, 438, 439, 440, 441, 0, 0, 442, 0, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 488, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, - 103, 104, 105, 0, 107, 108, 109, 110, 111, 0, - 113, 114, 0, 115, 116, 117, 118, 119, 120, 0, - 0, 121, 122, 123, 124, 125, 0, 126, 127, 128, - 129, 130, 0, 0, 0, 132, 133, 134, 135, 136, - 0, 138, 139, 140, 0, 141, 142, 143, 144, 145, - 146, 0, 0, 148, 149, 150, 0, 0, 0, 0, - 0, 0, 0, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 0, 162, 0, 163, 164, 165, 166, - 167, 168, 0, 169, 170, 171, 172, 173, 0, 0, - 174, 175, 176, 177, 178, 0, 179, 180, 181, 0, - 182, 183, 184, 0, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 0, 195, 0, 196, 197, 198, - 199, 0, 200, 0, 201, 0, 0, 0, 204, 205, - 206, 0, 208, 0, 209, 0, 210, 211, 0, 212, - 213, 214, 215, 216, 1748, 0, 219, 220, 221, 222, - 0, 223, 224, 225, 226, 227, 228, 0, 229, 0, - 231, 232, 233, 234, 235, 236, 237, 0, 238, 0, - 239, 0, 0, 242, 0, 244, 245, 246, 247, 248, - 0, 0, 249, 0, 251, 0, 0, 253, 254, 255, - 0, 0, 256, 257, 258, 259, 260, 490, 262, 263, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 99, 100, 101, 0, 0, 0, 0, 0, + 0, 0, 102, 103, 0, 104, 105, 106, 0, 108, + 109, 110, 111, 112, 0, 114, 115, 0, 116, 117, + 118, 119, 120, 121, 0, 0, 122, 123, 124, 125, + 126, 0, 127, 128, 129, 130, 131, 0, 0, 0, + 133, 134, 135, 136, 137, 0, 139, 140, 141, 0, + 142, 143, 144, 145, 146, 147, 0, 0, 149, 150, + 151, 0, 0, 0, 0, 0, 0, 0, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 0, 163, + 0, 164, 165, 166, 167, 168, 169, 0, 170, 171, + 172, 173, 174, 0, 0, 175, 176, 177, 178, 179, + 0, 180, 181, 182, 0, 183, 184, 185, 0, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 0, + 196, 0, 197, 198, 199, 200, 0, 201, 0, 202, + 0, 0, 0, 205, 206, 207, 0, 209, 0, 210, + 0, 211, 212, 0, 213, 214, 215, 216, 217, 1441, + 0, 220, 221, 222, 223, 0, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 232, 233, 234, 235, 236, + 237, 238, 0, 239, 0, 240, 0, 0, 243, 0, + 245, 246, 247, 248, 249, 0, 0, 250, 0, 252, + 0, 0, 254, 255, 256, 0, 0, 257, 258, 259, + 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 0, 283, 284, 285, 286, 287, 0, 288, + 289, 0, 291, 0, 292, 293, 294, 295, 296, 297, + 0, 298, 299, 0, 0, 300, 301, 302, 0, 0, + 303, 304, 0, 306, 0, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 0, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 0, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 0, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 0, 354, 355, 0, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 0, 372, 373, 374, 375, 376, 0, + 377, 378, 379, 380, 381, 0, 383, 384, 385, 386, + 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 494, 399, 400, 401, 0, 402, 403, 0, + 404, 0, 406, 407, 408, 409, 410, 0, 411, 412, + 0, 0, 413, 414, 415, 416, 417, 0, 418, 419, + 420, 421, 422, 423, 424, 425, 0, 0, 426, 427, + 428, 429, 430, 0, 0, 431, 432, 433, 434, 435, + 436, 437, 0, 438, 0, 440, 441, 442, 443, 0, + 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 490, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 99, 100, 101, 0, 0, 0, 0, 0, 0, 0, + 102, 103, 0, 104, 105, 106, 0, 108, 109, 110, + 111, 112, 0, 114, 115, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 122, 123, 124, 125, 126, 0, + 127, 128, 129, 130, 131, 0, 0, 0, 133, 134, + 135, 136, 137, 0, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 0, 149, 150, 151, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 0, 163, 0, 164, + 165, 166, 167, 168, 169, 0, 170, 171, 172, 173, + 174, 0, 0, 175, 176, 177, 178, 179, 0, 180, + 181, 182, 0, 183, 184, 185, 0, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 0, 196, 0, + 197, 198, 199, 200, 0, 201, 0, 202, 0, 0, + 0, 205, 206, 207, 0, 209, 0, 210, 0, 211, + 212, 0, 213, 214, 215, 216, 217, 1742, 0, 220, + 221, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 232, 233, 234, 235, 236, 237, 238, + 0, 239, 0, 240, 0, 0, 243, 0, 245, 246, + 247, 248, 249, 0, 0, 250, 0, 252, 0, 0, + 254, 255, 256, 0, 0, 257, 258, 259, 260, 261, + 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 0, 283, 284, 285, 286, 287, 0, 288, 289, 0, + 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, + 299, 0, 0, 300, 301, 302, 0, 0, 303, 304, + 0, 306, 0, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 0, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 0, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 0, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 0, 354, 355, 0, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 0, 372, 373, 374, 375, 376, 0, 377, 378, + 379, 380, 381, 0, 383, 384, 385, 386, 0, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 494, 399, 400, 401, 0, 402, 403, 0, 404, 0, + 406, 407, 408, 409, 410, 0, 411, 412, 0, 0, + 413, 414, 415, 416, 417, 0, 418, 419, 420, 421, + 422, 423, 424, 425, 0, 0, 426, 427, 428, 429, + 430, 0, 0, 431, 432, 433, 434, 435, 436, 437, + 0, 438, 0, 440, 441, 442, 443, 0, 0, 444, + 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 490, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 0, 0, 0, 0, 0, 0, 0, 102, 103, + 0, 104, 105, 106, 0, 108, 109, 110, 111, 112, + 0, 114, 115, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 122, 123, 124, 125, 126, 0, 127, 128, + 129, 130, 131, 0, 0, 0, 133, 134, 135, 136, + 137, 0, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 0, 149, 150, 151, 0, 0, 0, + 0, 0, 0, 0, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 0, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 177, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 0, 196, 0, 197, 198, + 199, 200, 0, 201, 0, 202, 0, 0, 0, 205, + 206, 207, 0, 209, 0, 210, 0, 211, 212, 0, + 213, 214, 215, 216, 217, 1754, 0, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 232, 233, 234, 235, 236, 237, 238, 0, 239, + 0, 240, 0, 0, 243, 0, 245, 246, 247, 248, + 249, 0, 0, 250, 0, 252, 0, 0, 254, 255, + 256, 0, 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 0, 282, 283, - 284, 285, 286, 0, 287, 288, 0, 290, 0, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 0, 0, - 299, 300, 301, 0, 0, 302, 303, 0, 305, 0, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 0, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 0, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 0, - 353, 354, 0, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 0, 371, - 372, 373, 374, 375, 0, 376, 377, 378, 379, 380, - 0, 382, 383, 384, 385, 0, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 492, 398, 399, - 0, 400, 401, 0, 402, 0, 404, 405, 406, 407, - 408, 0, 409, 410, 0, 0, 411, 412, 413, 414, - 415, 0, 416, 417, 418, 419, 420, 421, 422, 423, - 0, 0, 424, 425, 426, 427, 428, 0, 0, 429, - 430, 431, 432, 433, 434, 435, 0, 436, 0, 438, - 439, 440, 441, 0, 0, 442, 0, 0, 443, 444, + 274, 275, 276, 277, 278, 279, 280, 281, 0, 283, + 284, 285, 286, 287, 0, 288, 289, 0, 291, 0, + 292, 293, 294, 295, 296, 297, 0, 298, 299, 0, + 0, 300, 301, 302, 0, 0, 303, 304, 0, 306, + 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 0, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, + 381, 0, 383, 384, 385, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 494, 399, + 400, 401, 0, 402, 403, 0, 404, 0, 406, 407, + 408, 409, 410, 0, 411, 412, 0, 0, 413, 414, + 415, 416, 417, 0, 418, 419, 420, 421, 422, 423, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 0, + 0, 431, 432, 433, 434, 435, 436, 437, 0, 438, + 0, 440, 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 488, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 490, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 99, 100, 101, 0, + 0, 0, 0, 0, 0, 0, 102, 103, 0, 104, + 105, 106, 0, 108, 109, 110, 111, 112, 0, 114, + 115, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 122, 123, 124, 125, 126, 0, 127, 128, 129, 130, + 131, 0, 0, 0, 133, 134, 135, 136, 137, 0, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 0, 149, 150, 151, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 0, 163, 0, 164, 165, 166, 167, 168, + 169, 0, 170, 171, 172, 173, 174, 0, 0, 175, + 176, 177, 178, 179, 0, 180, 181, 182, 0, 183, + 184, 185, 0, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 0, 196, 0, 197, 198, 199, 200, + 0, 201, 0, 202, 0, 0, 0, 205, 206, 207, + 0, 209, 0, 210, 0, 211, 212, 0, 213, 214, + 215, 216, 217, 1756, 0, 220, 221, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 232, + 233, 234, 235, 236, 237, 238, 0, 239, 0, 240, + 0, 0, 243, 0, 245, 246, 247, 248, 249, 0, + 0, 250, 0, 252, 0, 0, 254, 255, 256, 0, + 0, 257, 258, 259, 260, 261, 492, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 0, 283, 284, 285, + 286, 287, 0, 288, 289, 0, 291, 0, 292, 293, + 294, 295, 296, 297, 0, 298, 299, 0, 0, 300, + 301, 302, 0, 0, 303, 304, 0, 306, 0, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 0, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 354, + 355, 0, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 0, 372, 373, + 374, 375, 376, 0, 377, 378, 379, 380, 381, 0, + 383, 384, 385, 386, 0, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 494, 399, 400, 401, + 0, 402, 403, 0, 404, 0, 406, 407, 408, 409, + 410, 0, 411, 412, 0, 0, 413, 414, 415, 416, + 417, 0, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 0, 426, 427, 428, 429, 430, 0, 0, 431, + 432, 433, 434, 435, 436, 437, 0, 438, 0, 440, + 441, 442, 443, 0, 0, 444, 0, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 1112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 98, 99, 100, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 0, 103, 104, 105, - 0, 107, 108, 109, 110, 111, 0, 113, 114, 0, - 115, 116, 117, 118, 119, 120, 0, 0, 121, 122, - 123, 124, 125, 0, 126, 127, 128, 129, 130, 0, - 0, 0, 132, 133, 134, 135, 136, 0, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 146, 0, 0, - 148, 149, 150, 0, 0, 0, 0, 0, 0, 0, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 0, 162, 0, 163, 164, 165, 166, 167, 168, 0, - 169, 170, 171, 172, 173, 0, 0, 174, 175, 176, - 177, 178, 0, 179, 180, 181, 0, 182, 183, 184, - 0, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 0, 195, 0, 196, 197, 198, 199, 0, 200, - 0, 201, 0, 0, 0, 204, 205, 206, 0, 208, - 0, 209, 0, 210, 211, 0, 212, 213, 214, 215, - 216, 1750, 0, 219, 220, 221, 222, 0, 223, 224, - 225, 226, 227, 228, 0, 229, 0, 231, 232, 233, - 234, 235, 236, 237, 0, 238, 0, 239, 0, 0, - 242, 0, 244, 245, 246, 247, 248, 0, 0, 249, - 0, 251, 0, 0, 253, 254, 255, 0, 0, 256, - 257, 258, 259, 260, 490, 262, 263, 264, 265, 266, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 99, 100, 101, 0, 0, 0, + 0, 0, 0, 0, 102, 103, 0, 104, 105, 106, + 1113, 108, 109, 110, 0, 1114, 1115, 1116, 1117, 0, + 116, 117, 118, 119, 120, 121, 0, 0, 122, 123, + 1118, 1119, 126, 0, 127, 128, 129, 130, 0, 0, + 1120, 0, 133, 134, 135, 136, 137, 1121, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 1122, + 149, 150, 151, 0, 0, 0, 1123, 0, 0, 0, + 153, 154, 155, 156, 157, 158, 159, 1124, 1125, 162, + 0, 163, 0, 164, 165, 166, 167, 168, 169, 0, + 170, 171, 172, 173, 174, 0, 0, 175, 176, 756, + 178, 179, 0, 180, 181, 182, 0, 183, 184, 185, + 0, 186, 187, 188, 189, 0, 191, 192, 193, 194, + 0, 0, 196, 0, 197, 198, 1126, 200, 0, 201, + 0, 202, 1127, 0, 1128, 205, 206, 207, 1129, 209, + 0, 210, 0, 0, 212, 0, 213, 214, 215, 216, + 217, 218, 1130, 220, 221, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 1131, 0, 233, 234, + 235, 236, 1132, 1133, 0, 1134, 0, 240, 1135, 1136, + 243, 1137, 245, 246, 247, 248, 249, 0, 0, 250, + 1138, 252, 1139, 0, 254, 255, 256, 0, 0, 257, + 258, 259, 260, 261, 1140, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 1141, 1142, 1143, 284, 285, 286, 0, + 0, 288, 289, 1144, 291, 0, 0, 293, 1145, 295, + 296, 297, 0, 298, 299, 0, 0, 300, 301, 302, + 0, 0, 303, 0, 1146, 306, 1147, 0, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 0, 319, + 320, 0, 322, 323, 0, 325, 326, 327, 0, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 1148, 338, + 339, 340, 341, 0, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 0, 354, 355, 1149, + 357, 358, 359, 1150, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 0, 372, 373, 374, 375, + 376, 0, 377, 1151, 379, 380, 381, 1152, 383, 384, + 1153, 386, 0, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 1154, 399, 0, 401, 0, 402, + 403, 0, 404, 1155, 406, 407, 408, 409, 410, 0, + 1156, 1157, 0, 0, 413, 414, 0, 416, 0, 0, + 418, 419, 1158, 421, 422, 423, 424, 425, 0, 0, + 426, 427, 428, 429, 430, 0, 0, 431, 432, 433, + 434, 435, 0, 1159, 0, 438, 1160, 440, 441, 442, + 443, 0, 0, 444, 0, 0, 445, 446, 447, 448, + 449, 450, 490, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 462, 463, 464, 465, 0, 91, 92, + 93, 94, 95, 96, 97, 98, 0, 99, 100, 101, + 0, 0, 0, 0, 0, 0, 0, 102, 103, 0, + 104, 105, 106, 0, 108, 109, 110, 111, 112, 0, + 114, 115, 0, 116, 117, 118, 119, 120, 121, 0, + 0, 122, 123, 124, 125, 126, 0, 127, 128, 129, + 130, 131, 0, 0, 0, 133, 134, 135, 136, 137, + 0, 139, 140, 141, 0, 142, 143, 144, 145, 146, + 147, 0, 0, 149, 150, 151, 0, 0, 0, 0, + 0, 0, 0, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 0, 163, 0, 164, 165, 166, 167, + 168, 169, 0, 170, 171, 172, 173, 174, 0, 0, + 175, 176, 177, 178, 179, 0, 180, 181, 182, 0, + 183, 184, 185, 0, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 0, 196, 0, 197, 198, 199, + 200, 0, 201, 0, 202, 0, 0, 0, 205, 206, + 207, 0, 209, 0, 210, 0, 211, 212, 0, 213, + 214, 215, 216, 217, 218, 0, 220, 221, 222, 223, + 0, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 232, 233, 234, 235, 236, 237, 238, 0, 239, 0, + 240, 0, 0, 243, 0, 245, 246, 247, 248, 249, + 0, 0, 250, 0, 252, 0, 0, 254, 255, 256, + 0, 0, 257, 258, 259, 260, 261, 492, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 0, 283, 284, + 285, 286, 287, 0, 288, 289, 0, 291, 0, 292, + 293, 294, 295, 296, 297, 0, 298, 299, 0, 0, + 300, 301, 302, 0, 0, 303, 304, 0, 306, 0, + 308, 309, 310, 311, 312, 313, 314, 0, 316, 317, + 318, 0, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 0, 328, 329, 330, 331, 332, 333, 334, 0, + 336, 337, 338, 339, 340, 341, 0, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 0, + 354, 355, 0, 357, 358, 359, 360, 0, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 0, 372, + 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, + 0, 383, 384, 385, 386, 0, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 494, 399, 400, + 401, 0, 402, 403, 0, 404, 0, 406, 407, 408, + 409, 410, 0, 411, 412, 0, 0, 413, 414, 415, + 416, 417, 0, 418, 419, 420, 421, 422, 423, 424, + 425, 0, 0, 426, 427, 428, 429, 430, 0, 0, + 431, 432, 433, 434, 435, 436, 437, 0, 438, 0, + 440, 441, 442, 443, 0, 0, 444, 0, 0, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 2314, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 99, 100, 101, 0, 0, + 0, 0, 0, 0, 0, 102, 103, 0, 104, 105, + 106, 2315, 108, 109, 110, 0, 1114, 2316, 1116, 1117, + 0, 116, 117, 118, 119, 120, 121, 0, 0, 122, + 123, 1118, 1119, 126, 0, 127, 128, 129, 130, 0, + 0, 2317, 0, 133, 134, 135, 136, 137, 2318, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 2319, 149, 150, 151, 0, 0, 0, 2320, 0, 0, + 0, 153, 154, 155, 156, 157, 158, 159, 1124, 1125, + 162, 0, 163, 0, 164, 165, 166, 167, 168, 169, + 0, 170, 171, 172, 173, 174, 0, 0, 175, 176, + 756, 178, 179, 0, 180, 181, 182, 0, 183, 184, + 185, 0, 186, 187, 188, 189, 0, 191, 192, 193, + 194, 0, 0, 196, 0, 197, 198, 1126, 200, 0, + 201, 0, 202, 2321, 0, 2322, 205, 206, 207, 2323, + 209, 0, 210, 0, 0, 212, 0, 213, 214, 215, + 216, 217, 218, 2324, 220, 221, 222, 223, 0, 224, + 225, 226, 227, 228, 229, 0, 230, 2325, 0, 233, + 234, 235, 236, 1132, 1133, 0, 1134, 0, 240, 2326, + 2327, 243, 2328, 245, 246, 247, 248, 249, 0, 0, + 250, 2329, 252, 2330, 0, 254, 255, 256, 0, 0, + 257, 258, 259, 260, 261, 2519, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 0, 282, 283, 284, 285, 286, - 0, 287, 288, 0, 290, 0, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 0, 0, 299, 300, 301, - 0, 0, 302, 303, 0, 305, 0, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 0, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 0, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 0, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 0, 353, 354, 0, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 0, 371, 372, 373, 374, - 375, 0, 376, 377, 378, 379, 380, 0, 382, 383, - 384, 385, 0, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 492, 398, 399, 0, 400, 401, - 0, 402, 0, 404, 405, 406, 407, 408, 0, 409, - 410, 0, 0, 411, 412, 413, 414, 415, 0, 416, - 417, 418, 419, 420, 421, 422, 423, 0, 0, 424, - 425, 426, 427, 428, 0, 0, 429, 430, 431, 432, - 433, 434, 435, 0, 436, 0, 438, 439, 440, 441, - 0, 0, 442, 0, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 1106, 0, 0, 0, + 277, 278, 279, 280, 1141, 2332, 1143, 284, 285, 286, + 0, 0, 288, 289, 2334, 291, 0, 0, 293, 1145, + 295, 296, 297, 0, 298, 299, 0, 0, 300, 301, + 302, 0, 0, 303, 0, 2336, 306, 2337, 0, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 0, + 319, 320, 0, 322, 323, 0, 325, 326, 327, 0, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 1148, + 338, 339, 340, 341, 0, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 0, 354, 355, + 2338, 357, 358, 359, 0, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 0, 372, 373, 374, + 375, 376, 0, 377, 0, 379, 380, 381, 2340, 383, + 384, 1153, 386, 0, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 2520, 399, 0, 401, 0, + 402, 403, 0, 404, 2342, 406, 407, 408, 409, 410, + 0, 1156, 1157, 0, 0, 413, 414, 0, 416, 0, + 0, 418, 419, 2343, 421, 422, 423, 424, 425, 0, + 0, 426, 427, 428, 429, 430, 0, 0, 431, 432, + 433, 434, 435, 0, 1159, 0, 438, 2344, 440, 441, + 442, 443, 0, 0, 444, 0, 0, 445, 446, 447, + 448, 449, 450, 1112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 462, 463, 464, 465, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 99, 100, + 101, 0, 0, 0, 0, 0, 0, 0, 102, 103, + 0, 104, 105, 106, 1113, 108, 109, 110, 0, 1114, + 1115, 1116, 1117, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 122, 123, 1118, 1119, 126, 0, 127, 128, + 129, 130, 0, 0, 1120, 0, 133, 134, 135, 136, + 137, 1121, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 1122, 149, 150, 151, 0, 0, 0, + 1123, 0, 0, 0, 153, 154, 155, 156, 157, 158, + 159, 1124, 1125, 162, 0, 163, 0, 164, 165, 166, + 167, 168, 169, 0, 170, 171, 172, 173, 174, 0, + 0, 175, 176, 756, 178, 179, 0, 180, 181, 182, + 0, 183, 184, 185, 0, 186, 187, 188, 189, 0, + 191, 192, 193, 194, 0, 0, 196, 0, 197, 198, + 1126, 200, 0, 201, 0, 202, 1127, 0, 1128, 205, + 206, 207, 1129, 209, 0, 210, 0, 0, 212, 0, + 213, 214, 215, 216, 217, 218, 1130, 220, 221, 222, + 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, + 1131, 0, 233, 234, 235, 236, 1132, 1133, 0, 1134, + 0, 240, 1135, 1136, 243, 1137, 245, 246, 247, 248, + 249, 0, 0, 250, 1138, 252, 1139, 0, 254, 255, + 256, 0, 0, 257, 258, 259, 260, 261, 0, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 1141, 1142, 1143, + 284, 285, 286, 0, 0, 288, 289, 1144, 291, 0, + 0, 293, 1145, 295, 296, 297, 0, 298, 299, 0, + 0, 300, 301, 302, 0, 0, 303, 0, 1146, 306, + 1147, 0, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 0, 319, 320, 0, 322, 323, 0, 325, + 326, 327, 0, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 1148, 338, 339, 340, 341, 0, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 354, 355, 1149, 357, 358, 359, 0, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 0, + 372, 373, 374, 375, 376, 0, 377, 0, 379, 380, + 381, 1152, 383, 384, 1153, 386, 0, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 0, 399, + 0, 401, 498, 402, 403, 0, 404, 1155, 406, 407, + 408, 409, 410, 0, 1156, 1157, 0, 0, 413, 414, + 0, 416, 0, 0, 418, 419, 1158, 421, 422, 423, + 424, 425, 0, 0, 426, 427, 428, 429, 430, 0, + 0, 431, 432, 433, 434, 435, 0, 1159, 0, 438, + 1160, 440, 441, 442, 443, 499, 0, 444, 0, 0, + 445, 446, 447, 448, 449, 450, 0, 0, 0, 0, + 500, 0, 0, 0, 0, 0, 0, 462, 463, 464, + 465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 98, 99, 100, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 0, 103, 104, 105, 1107, 107, 108, - 109, 0, 1108, 1109, 1110, 1111, 0, 115, 116, 117, - 118, 119, 120, 0, 0, 121, 122, 1112, 1113, 125, - 0, 126, 127, 128, 129, 0, 0, 1114, 0, 132, - 133, 134, 135, 136, 1115, 138, 139, 140, 0, 141, - 142, 143, 144, 145, 146, 0, 1116, 148, 149, 150, - 0, 0, 0, 1117, 0, 0, 0, 152, 153, 154, - 155, 156, 157, 158, 1118, 1119, 161, 0, 162, 0, - 163, 164, 165, 166, 167, 168, 0, 169, 170, 171, - 172, 173, 0, 0, 174, 175, 751, 177, 178, 0, - 179, 180, 181, 0, 182, 183, 184, 0, 185, 186, - 187, 188, 0, 190, 191, 192, 193, 0, 0, 195, - 0, 196, 197, 1120, 199, 0, 200, 0, 201, 1121, - 0, 1122, 204, 205, 206, 1123, 208, 0, 209, 0, - 0, 211, 0, 212, 213, 214, 215, 216, 217, 1124, - 219, 220, 221, 222, 0, 223, 224, 225, 226, 227, - 228, 0, 229, 1125, 0, 232, 233, 234, 235, 1126, - 1127, 0, 1128, 0, 239, 1129, 1130, 242, 1131, 244, - 245, 246, 247, 248, 0, 0, 249, 1132, 251, 1133, - 0, 253, 254, 255, 0, 0, 256, 257, 258, 259, - 260, 1134, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 1135, 1136, 1137, 283, 284, 285, 0, 0, 287, 288, - 1138, 290, 0, 0, 292, 1139, 294, 295, 296, 0, - 297, 298, 0, 0, 299, 300, 301, 0, 0, 302, - 0, 1140, 305, 1141, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 0, 318, 319, 0, 321, - 322, 0, 324, 325, 326, 0, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 1142, 337, 338, 339, 340, - 0, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 0, 353, 354, 1143, 356, 357, 358, - 1144, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 0, 371, 372, 373, 374, 375, 0, 376, - 1145, 378, 379, 380, 1146, 382, 383, 1147, 385, 0, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 1148, 398, 0, 0, 400, 401, 0, 402, 1149, - 404, 405, 406, 407, 408, 0, 1150, 1151, 0, 0, - 411, 412, 0, 414, 0, 0, 416, 417, 1152, 419, - 420, 421, 422, 423, 0, 0, 424, 425, 426, 427, - 428, 0, 0, 429, 430, 431, 432, 433, 0, 1153, - 0, 436, 1154, 438, 439, 440, 441, 0, 0, 442, - 0, 0, 443, 444, 445, 446, 447, 448, 488, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 460, - 461, 462, 463, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 98, 99, 100, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 0, 103, 104, 105, 0, - 107, 108, 109, 110, 111, 0, 113, 114, 0, 115, - 116, 117, 118, 119, 120, 0, 0, 121, 122, 123, - 124, 125, 0, 126, 127, 128, 129, 130, 0, 0, - 0, 132, 133, 134, 135, 136, 0, 138, 139, 140, - 0, 141, 142, 143, 144, 145, 146, 0, 0, 148, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 0, - 162, 0, 163, 164, 165, 166, 167, 168, 0, 169, - 170, 171, 172, 173, 0, 0, 174, 175, 176, 177, - 178, 0, 179, 180, 181, 0, 182, 183, 184, 0, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 0, 195, 0, 196, 197, 198, 199, 0, 200, 0, - 201, 0, 0, 0, 204, 205, 206, 0, 208, 0, - 209, 0, 210, 211, 0, 212, 213, 214, 215, 216, - 217, 0, 219, 220, 221, 222, 0, 223, 224, 225, - 226, 227, 228, 0, 229, 0, 231, 232, 233, 234, - 235, 236, 237, 0, 238, 0, 239, 0, 0, 242, - 0, 244, 245, 246, 247, 248, 0, 0, 249, 0, - 251, 0, 0, 253, 254, 255, 0, 0, 256, 257, - 258, 259, 260, 490, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 0, 282, 283, 284, 285, 286, 0, - 287, 288, 0, 290, 0, 291, 292, 293, 294, 295, - 296, 0, 297, 298, 0, 0, 299, 300, 301, 0, - 0, 302, 303, 0, 305, 0, 307, 308, 309, 310, - 311, 312, 313, 0, 315, 316, 317, 0, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 0, 327, 328, - 329, 330, 331, 332, 333, 0, 335, 336, 337, 338, - 339, 340, 0, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 0, 353, 354, 0, 356, - 357, 358, 359, 0, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 0, 371, 372, 373, 374, 375, - 0, 376, 377, 378, 379, 380, 0, 382, 383, 384, - 385, 0, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 492, 398, 399, 0, 400, 401, 0, - 402, 0, 404, 405, 406, 407, 408, 0, 409, 410, - 0, 0, 411, 412, 413, 414, 415, 0, 416, 417, - 418, 419, 420, 421, 422, 423, 0, 0, 424, 425, - 426, 427, 428, 0, 0, 429, 430, 431, 432, 433, - 434, 435, 0, 436, 0, 438, 439, 440, 441, 0, - 0, 442, 0, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 2309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 0, 103, 104, 105, 2310, 107, 108, 109, - 0, 1108, 2311, 1110, 1111, 0, 115, 116, 117, 118, - 119, 120, 0, 0, 121, 122, 1112, 1113, 125, 0, - 126, 127, 128, 129, 0, 0, 2312, 0, 132, 133, - 134, 135, 136, 2313, 138, 139, 140, 0, 141, 142, - 143, 144, 145, 146, 0, 2314, 148, 149, 150, 0, - 0, 0, 2315, 0, 0, 0, 152, 153, 154, 155, - 156, 157, 158, 1118, 1119, 161, 0, 162, 0, 163, - 164, 165, 166, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 174, 175, 751, 177, 178, 0, 179, - 180, 181, 0, 182, 183, 184, 0, 185, 186, 187, - 188, 0, 190, 191, 192, 193, 0, 0, 195, 0, - 196, 197, 1120, 199, 0, 200, 0, 201, 2316, 0, - 2317, 204, 205, 206, 2318, 208, 0, 209, 0, 0, - 211, 0, 212, 213, 214, 215, 216, 217, 2319, 219, - 220, 221, 222, 0, 223, 224, 225, 226, 227, 228, - 0, 229, 2320, 0, 232, 233, 234, 235, 1126, 1127, - 0, 1128, 0, 239, 2321, 2322, 242, 2323, 244, 245, - 246, 247, 248, 0, 0, 249, 2324, 251, 2325, 0, - 253, 254, 255, 0, 0, 256, 257, 258, 259, 260, - 2513, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 1135, - 2327, 1137, 283, 284, 285, 0, 0, 287, 288, 2329, - 290, 0, 0, 292, 1139, 294, 295, 296, 0, 297, - 298, 0, 0, 299, 300, 301, 0, 0, 302, 0, - 2331, 305, 2332, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 0, 318, 319, 0, 321, 322, - 0, 324, 325, 326, 0, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 1142, 337, 338, 339, 340, 0, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 2333, 356, 357, 358, 0, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 0, 371, 372, 373, 374, 375, 0, 376, 0, - 378, 379, 380, 2335, 382, 383, 1147, 385, 0, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 2514, 398, 0, 0, 400, 401, 0, 402, 2337, 404, - 405, 406, 407, 408, 0, 1150, 1151, 0, 0, 411, - 412, 0, 414, 0, 0, 416, 417, 2338, 419, 420, - 421, 422, 423, 0, 0, 424, 425, 426, 427, 428, - 0, 0, 429, 430, 431, 432, 433, 0, 1153, 0, - 436, 2339, 438, 439, 440, 441, 0, 0, 442, 0, - 0, 443, 444, 445, 446, 447, 448, 1106, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 460, 461, - 462, 463, 0, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 98, 99, 100, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 0, 103, 104, 105, 1107, 107, - 108, 109, 0, 1108, 1109, 1110, 1111, 0, 115, 116, - 117, 118, 119, 120, 0, 0, 121, 122, 1112, 1113, - 125, 0, 126, 127, 128, 129, 0, 0, 1114, 0, - 132, 133, 134, 135, 136, 1115, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 146, 0, 1116, 148, 149, - 150, 0, 0, 0, 1117, 0, 0, 0, 152, 153, - 154, 155, 156, 157, 158, 1118, 1119, 161, 0, 162, - 0, 163, 164, 165, 166, 167, 168, 0, 169, 170, - 171, 172, 173, 0, 0, 174, 175, 751, 177, 178, - 0, 179, 180, 181, 0, 182, 183, 184, 0, 185, - 186, 187, 188, 0, 190, 191, 192, 193, 0, 0, - 195, 0, 196, 197, 1120, 199, 0, 200, 0, 201, - 1121, 0, 1122, 204, 205, 206, 1123, 208, 0, 209, - 0, 0, 211, 0, 212, 213, 214, 215, 216, 217, - 1124, 219, 220, 221, 222, 0, 223, 224, 225, 226, - 227, 228, 0, 229, 1125, 0, 232, 233, 234, 235, - 1126, 1127, 0, 1128, 0, 239, 1129, 1130, 242, 1131, - 244, 245, 246, 247, 248, 0, 0, 249, 1132, 251, - 1133, 0, 253, 254, 255, 0, 0, 256, 257, 258, - 259, 260, 0, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 1135, 1136, 1137, 283, 284, 285, 0, 0, 287, - 288, 1138, 290, 0, 0, 292, 1139, 294, 295, 296, - 0, 297, 298, 0, 0, 299, 300, 301, 0, 0, - 302, 0, 1140, 305, 1141, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 0, 318, 319, 0, - 321, 322, 0, 324, 325, 326, 0, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 1142, 337, 338, 339, - 340, 0, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 0, 353, 354, 1143, 356, 357, - 358, 0, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 0, 371, 372, 373, 374, 375, 0, - 376, 0, 378, 379, 380, 1146, 382, 383, 1147, 385, - 0, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 0, 398, 0, 0, 400, 401, 0, 402, - 1149, 404, 405, 406, 407, 408, 0, 1150, 1151, 0, - 0, 411, 412, 0, 414, 0, 0, 416, 417, 1152, - 419, 420, 421, 422, 423, 0, 0, 424, 425, 426, - 427, 428, 0, 0, 429, 430, 431, 432, 433, 0, - 1153, 0, 436, 1154, 438, 439, 440, 441, 0, 0, - 442, 0, 0, 443, 444, 445, 446, 447, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 460, 461, 462, 463 + 0, 0, 0, 0, 501, 0, 0, 0, 0, 0, + 0, 0, 0, 502, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 503, 0, 0, 0, 0, + 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 505, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 506, 0, + 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 508, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 509, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 510, 0, 0, 511, 0, 0, 0, 0, 0, 0, + 0, 512, 0, 0, 513, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 514, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 0, 0, 0, 0, + 0, 0, 517, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 518 }; static const yytype_int16 yycheck[] = { - 6, 518, 56, 605, 34, 0, 0, 907, 551, 620, - 569, 517, 711, 612, 711, 590, 0, 0, 0, 893, - 16, 524, 647, 564, 1205, 880, 1677, 789, 1746, 885, - 6, 6, 16, 791, 1487, 776, 1050, 905, 1050, 1050, - 1050, 614, 1080, 1571, 1572, 522, 882, 876, 1576, 807, - 58, 1194, 946, 1752, 1194, 1754, 1634, 29, 1194, 1980, - 2021, 819, 2069, 2093, 1237, 1238, 2069, 1194, 718, 1743, - 523, 1697, 58, 0, 910, 1488, 524, 2101, 33, 2108, - 9, 76, 73, 1172, 5, 1986, 5, 5, 9, 1617, - 1618, 1289, 651, 5, 1207, 5, 5, 5, 50, 1072, - 5, 13, 14, 1337, 13, 14, 2371, 5, 13, 14, - 13, 14, 1674, 5, 86, 13, 14, 58, 5, 5, - 5, 13, 14, 9, 3, 0, 1688, 826, 5, 5, - 2374, 605, 0, 607, 1335, 609, 168, 11, 1812, 5, - 106, 5, 5, 5, 5, 40, 5, 40, 625, 167, - 5, 167, 31, 32, 58, 529, 67, 2449, 75, 48, - 116, 58, 2377, 3, 4, 5, 4, 27, 85, 9, - 1241, 9, 11, 9, 587, 82, 136, 27, 2363, 1853, - 1854, 587, 210, 27, 34, 58, 15, 20, 4, 2010, - 34, 2427, 194, 9, 167, 894, 2517, 27, 897, 898, - 2546, 1920, 41, 216, 34, 11, 144, 285, 711, 168, - 11, 277, 1325, 119, 717, 279, 285, 92, 78, 126, - 301, 121, 1985, 119, 92, 11, 86, 2463, 787, 788, - 2348, 265, 2296, 114, 73, 41, 2602, 93, 134, 119, - 41, 325, 2638, 359, 2472, 114, 116, 865, 59, 262, - 2040, 792, 75, 164, 301, 115, 67, 13, 14, 161, - 833, 714, 85, 429, 129, 2493, 11, 73, 918, 106, - 208, 1145, 73, 27, 114, 925, 117, 37, 394, 820, - 11, 23, 11, 172, 64, 65, 15, 166, 347, 168, - 157, 236, 2584, 22, 27, 1366, 168, 186, 204, 11, - 445, 348, 191, 32, 33, 159, 68, 2228, 321, 407, - 2546, 2232, 168, 1891, 107, 184, 875, 2532, 2219, 435, - 486, 2039, 107, 2113, 184, 828, 829, 2334, 200, 41, - 847, 159, 749, 2729, 76, 195, 268, 226, 297, 2369, - 475, 2786, 73, 215, 200, 490, 187, 285, 5, 766, - 352, 486, 224, 451, 486, 84, 369, 441, 360, 215, - 227, 73, 2036, 123, 2038, 262, 220, 117, 224, 209, - 486, 1899, 1900, 1901, 1902, 129, 951, 1905, 1906, 1907, - 1908, 1909, 1910, 1911, 1912, 1913, 1914, 405, 269, 296, - 230, 2757, 394, 427, 2622, 264, 129, 2515, 339, 269, - 481, 312, 258, 2848, 279, 307, 162, 352, 1058, 274, - 1151, 279, 490, 372, 427, 311, 1978, 0, 1980, 230, - 486, 490, 486, 2487, 2820, 262, 23, 486, 394, 1957, - 1958, 2667, 405, 261, 481, 339, 2155, 187, 2784, 441, - 236, 373, 339, 2264, 1669, 1670, 1057, 2768, 1519, 2123, - 2635, 2703, 2744, 1634, 486, 2218, 489, 475, 1571, 1572, - 873, 290, 490, 1576, 2700, 340, 339, 873, 842, 366, - 488, 343, 340, 1072, 490, 431, 490, 1711, 473, 473, - 425, 1454, 371, 421, 444, 429, 2730, 343, 405, 473, - 473, 473, 399, 484, 524, 194, 391, 488, 391, 1098, - 1953, 1699, 1357, 439, 1617, 1618, 1679, 383, 384, 1710, - 2517, 422, 486, 2778, 2517, 2436, 2731, 0, 524, 1413, - 2441, 427, 382, 2444, 1705, 385, 376, 2428, 524, 429, - 438, 450, 376, 16, 486, 448, 590, 134, 1438, 523, - 450, 486, 486, 335, 550, 551, 376, 427, 2784, 490, - 2802, 34, 23, 472, 243, 2273, 485, 1074, 29, 472, - 439, 1067, 472, 569, 1070, 486, 484, 486, 486, 577, - 488, 567, 1078, 448, 486, 58, 486, 486, 486, 1082, - 448, 486, 405, 486, 579, 579, 490, 2286, 486, 1207, - 410, 577, 1486, 76, 486, 579, 579, 579, 1687, 486, - 486, 486, 116, 1176, 610, 611, 612, 2637, 482, 486, - 582, 355, 487, 2642, 489, 570, 1175, 2641, 1177, 487, - 486, 489, 486, 486, 486, 486, 1185, 486, 1081, 425, - 1189, 486, 448, 450, 1082, 1285, 2262, 477, 478, 477, - 478, 477, 478, 482, 75, 651, 450, 1246, 92, 1208, - 1209, 157, 579, 114, 85, 472, 472, 236, 2579, 1232, - 1233, 477, 478, 134, 13, 14, 2228, 450, 472, 105, - 2232, 477, 478, 479, 480, 481, 482, 146, 479, 480, - 481, 482, 486, 1224, 198, 30, 283, 1386, 2266, 472, - 486, 2365, 148, 479, 480, 481, 482, 1396, 75, 532, - 1399, 534, 1119, 486, 1277, 711, 2736, 1325, 85, 54, - 1891, 717, 718, 719, 1287, 1288, 2129, 398, 2131, 400, - 553, 227, 1139, 192, 1867, 1868, 1869, 1867, 1868, 735, - 714, 1867, 477, 478, 479, 480, 481, 482, 338, 1866, - 337, 338, 2195, 1249, 1969, 1970, 1971, 1972, 262, 157, - 264, 1822, 1169, 173, 162, 320, 2474, 763, 788, 4, - 486, 2768, 491, 264, 9, 2768, 366, 1940, 269, 366, - 276, 129, 1471, 352, 1471, 1374, 1814, 783, 784, 785, - 1382, 787, 788, 348, 486, 393, 1899, 1900, 1901, 1902, - 519, 1862, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, - 1913, 1914, 216, 475, 441, 811, 242, 1878, 481, 1893, - 230, 2761, 283, 2763, 250, 488, 488, 2847, 319, 227, - 428, 481, 828, 829, 4, 469, 1451, 1898, 488, 9, - 1455, 292, 214, 1458, 1409, 1410, 1411, 1921, 1600, 488, - 1598, 570, 2803, 2804, 1957, 1958, 425, 469, 262, 236, - 858, 859, 1681, 861, 860, 1454, 1927, 236, 864, 865, - 236, 236, 333, 1934, 487, 2427, 337, 490, 276, 875, - 1770, 2399, 858, 859, 2436, 861, 13, 14, 711, 2441, - 852, 1355, 2444, 2833, 717, 279, 1392, 893, 2069, 2607, - 2851, 1397, 129, 325, 487, 366, 484, 490, 359, 1793, - 488, 2463, 36, 359, 23, 1476, 264, 486, 1382, 1480, - 29, 1482, 918, 2612, 8, 359, 274, 11, 155, 925, - 4, 55, 16, 17, 18, 9, 8, 1401, 360, 11, - 129, 479, 1406, 394, 16, 17, 18, 909, 394, 33, - 946, 4, 1778, 1701, 166, 1589, 9, 1591, 1592, 2402, - 394, 490, 1429, 1571, 1572, 369, 155, 2485, 1576, 486, - 793, 432, 394, 13, 14, 352, 1525, 1823, 1471, 487, - 803, 105, 1828, 352, 435, 325, 352, 352, 398, 435, - 400, 1484, 487, 816, 2546, 490, 2237, 448, 487, 2240, - 473, 435, 448, 826, 487, 828, 829, 490, 2069, 1617, - 1618, 490, 210, 492, 448, 425, 719, 13, 14, 441, - 360, 472, 398, 427, 400, 134, 472, 2579, 13, 14, - 487, 182, 183, 490, 2552, 486, 8, 264, 472, 11, - 486, 1590, 269, 54, 16, 17, 18, 274, 425, 486, - 523, 524, 486, 484, 394, 486, 425, 488, 2699, 425, - 425, 157, 1058, 167, 737, 738, 162, 487, 487, 193, - 490, 490, 487, 1622, 8, 490, 1072, 11, 487, 469, - 269, 490, 16, 17, 18, 274, 1082, 149, 2116, 762, - 2094, 214, 2094, 2094, 2094, 2266, 1082, 248, 249, 33, - 487, 441, 1098, 490, 577, 487, 579, 1081, 490, 486, - 2553, 1676, 448, 1662, 450, 2667, 333, 486, 242, 191, - 486, 486, 486, 826, 23, 149, 250, 846, 212, 2837, - 29, 227, 487, 149, 1749, 490, 1751, 149, 262, 398, - 212, 400, 487, 487, 2785, 8, 490, 264, 2700, 1145, - 2233, 441, 2235, 16, 17, 18, 487, 1844, 8, 490, - 2050, 11, 487, 486, 2805, 490, 16, 17, 18, 293, - 23, 584, 487, 586, 283, 490, 29, 13, 14, 1175, - 276, 1177, 398, 33, 400, 412, 1182, 1172, 1172, 1185, - 893, 2049, 2037, 1189, 1925, 1926, 423, 281, 1172, 1172, - 1172, 552, 2048, 554, 2050, 356, 357, 1203, 1809, 281, - 1206, 1207, 1208, 1209, 338, 81, 487, 394, 2859, 490, - 1216, 1217, 1218, 412, 333, 149, 487, 149, 337, 490, - 2088, 452, 2784, 488, 423, 134, 360, 13, 14, 487, - 1236, 714, 490, 2304, 149, 1241, 1242, 1243, 1244, 1245, - 1246, 248, 249, 1842, 1250, 1251, 380, 366, 23, 1255, - 2008, 279, 487, 1259, 29, 490, 1262, 1263, 1264, 1265, - 1266, 1267, 1268, 1269, 1270, 13, 14, 1273, 212, 752, - 487, 134, 1278, 490, 83, 1281, 85, 1283, 87, 1285, - 486, 1899, 1900, 1901, 1902, 36, 2399, 1905, 1906, 1907, - 1908, 1909, 1910, 1911, 1912, 1913, 1914, 487, 225, 281, - 490, 1307, 13, 14, 487, 788, 8, 490, 1304, 11, - 13, 14, 486, 432, 16, 17, 18, 1312, 484, 1325, - 487, 2392, 487, 490, 8, 490, 5, 11, 1334, 1335, - 5, 1837, 16, 17, 18, 5, 2517, 281, 8, 1957, - 1958, 1844, 487, 486, 14, 490, 1075, 486, 1077, 356, - 357, 162, 212, 487, 24, 13, 14, 41, 28, 134, - 1366, 1194, 1935, 486, 48, 486, 1372, 5, 1374, 308, - 2069, 486, 2485, 1932, 283, 858, 859, 486, 861, 473, - 474, 475, 5, 477, 478, 479, 480, 481, 482, 73, - 486, 473, 474, 475, 486, 477, 478, 479, 480, 481, - 482, 487, 2302, 486, 490, 5, 487, 1413, 281, 490, - 1416, 1417, 487, 1419, 487, 490, 486, 490, 144, 2274, - 283, 281, 487, 487, 333, 490, 490, 486, 337, 1112, - 1113, 157, 1145, 5, 487, 487, 162, 490, 490, 2552, - 1446, 9, 487, 486, 2017, 490, 2517, 1442, 1454, 1990, - 487, 359, 487, 490, 1137, 490, 487, 366, 449, 490, - 2334, 1294, 2224, 487, 487, 1471, 490, 490, 486, 2068, - 333, 2070, 487, 486, 337, 490, 2238, 486, 1484, 15, - 1486, 1487, 208, 210, 487, 486, 394, 490, 172, 486, - 2115, 473, 474, 475, 486, 477, 478, 479, 480, 481, - 482, 227, 186, 366, 13, 14, 490, 191, 283, 2084, - 212, 487, 2583, 1519, 490, 2586, 1199, 1200, 487, 1525, - 1526, 490, 96, 432, 36, 1531, 366, 435, 1241, 473, - 474, 475, 162, 477, 478, 479, 480, 481, 482, 276, - 448, 487, 226, 1573, 490, 487, 487, 162, 490, 490, - 276, 13, 14, 148, 13, 14, 13, 14, 333, 285, - 13, 14, 337, 225, 472, 1571, 1572, 1573, 274, 432, - 1576, 13, 14, 13, 14, 23, 13, 14, 486, 281, - 486, 29, 405, 1589, 1590, 1591, 1592, 2768, 13, 14, - 486, 366, 1622, 1599, 2293, 85, 1602, 281, 1081, 490, - 473, 474, 475, 405, 477, 478, 479, 480, 481, 482, - 54, 1617, 1618, 473, 474, 475, 1622, 477, 478, 479, - 480, 481, 482, 13, 14, 13, 14, 54, 23, 1358, - 1636, 13, 14, 1639, 29, 1641, 252, 253, 1471, 1368, - 405, 1370, 1475, 255, 1373, 405, 347, 348, 347, 348, - 1379, 1484, 1381, 1366, 487, 2523, 1662, 432, 347, 348, - 347, 348, 1692, 495, 1393, 474, 356, 357, 1674, 1398, - 405, 2244, 448, 1402, 1403, 1404, 1405, 486, 1407, 1408, - 2305, 2306, 1688, 149, 92, 2258, 134, 371, 264, 1172, - 2387, 264, 1687, 1687, 486, 421, 1702, 2768, 1674, 1674, - 828, 829, 36, 1687, 1687, 1687, 36, 488, 719, 438, - 2253, 1717, 1688, 1688, 486, 486, 490, 486, 486, 35, - 67, 444, 486, 486, 9, 403, 403, 11, 490, 1735, - 485, 490, 403, 486, 495, 269, 486, 405, 176, 134, - 158, 167, 487, 486, 429, 36, 1752, 1753, 1754, 490, - 208, 369, 561, 216, 280, 486, 490, 264, 31, 32, - 216, 216, 285, 487, 359, 317, 277, 114, 441, 1252, - 486, 473, 474, 475, 1487, 477, 478, 479, 480, 481, - 482, 2399, 149, 149, 448, 594, 470, 1793, 264, 473, - 474, 475, 279, 477, 478, 479, 480, 481, 482, 394, - 279, 36, 36, 264, 35, 485, 1519, 405, 484, 405, - 484, 405, 405, 167, 167, 487, 1822, 469, 2517, 92, - 629, 630, 631, 488, 171, 469, 487, 487, 487, 1312, - 487, 487, 487, 487, 487, 283, 1842, 487, 1844, 487, - 435, 8, 487, 469, 11, 1840, 487, 487, 405, 16, - 17, 18, 719, 448, 486, 486, 1862, 486, 486, 289, - 445, 445, 36, 279, 435, 475, 33, 2485, 36, 1875, - 471, 280, 1878, 280, 280, 235, 427, 472, 405, 1885, - 264, 55, 893, 1889, 2387, 333, 1892, 55, 283, 337, - 149, 486, 1898, 1899, 1900, 1901, 1902, 719, 490, 1905, - 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 486, - 283, 1965, 1918, 1919, 194, 485, 149, 264, 366, 2819, - 149, 1927, 269, 405, 405, 1758, 1932, 405, 1934, 487, - 405, 105, 487, 1963, 2552, 1941, 490, 105, 1944, 487, - 1946, 487, 337, 279, 277, 448, 36, 1953, 1954, 149, - 1980, 1957, 1958, 149, 269, 484, 1962, 1963, 140, 1442, - 167, 11, 487, 162, 167, 312, 487, 487, 1801, 487, - 486, 366, 1978, 6, 1980, 292, 445, 2483, 11, 487, - 327, 394, 15, 167, 432, 1991, 2561, 472, 21, 22, - 23, 490, 487, 26, 2000, 144, 29, 171, 176, 32, - 33, 487, 1978, 1978, 1980, 1980, 108, 109, 157, 2608, - 2016, 1844, 2623, 162, 487, 340, 1849, 434, 1851, 193, - 83, 830, 1855, 1856, 280, 193, 893, 149, 2587, 171, - 416, 36, 486, 79, 486, 486, 486, 432, 429, 485, - 485, 490, 359, 76, 853, 212, 487, 167, 487, 2566, - 83, 84, 85, 86, 87, 486, 396, 486, 2064, 208, - 215, 288, 2068, 2069, 2070, 487, 487, 2584, 242, 2768, - 879, 893, 487, 286, 242, 422, 250, 394, 227, 215, - 182, 183, 250, 892, 486, 486, 359, 54, 262, 448, - 1573, 179, 475, 196, 262, 2706, 185, 1826, 269, 269, - 405, 488, 405, 488, 913, 2664, 475, 488, 488, 1822, - 488, 488, 488, 488, 281, 36, 488, 2112, 435, 293, - 488, 394, 2628, 488, 488, 293, 488, 276, 106, 264, - 488, 448, 488, 488, 1145, 487, 285, 488, 488, 1622, - 2146, 486, 244, 245, 246, 247, 248, 249, 448, 1862, - 252, 253, 279, 488, 36, 472, 488, 1640, 167, 488, - 488, 488, 435, 2680, 338, 1878, 439, 488, 2767, 486, - 338, 2773, 485, 1656, 488, 448, 488, 488, 488, 486, - 486, 298, 486, 2189, 2190, 1898, 360, 215, 2194, 2195, - 486, 1674, 360, 2199, 93, 2701, 2202, 2203, 447, 472, - 85, 2207, 130, 327, 1687, 1688, 380, 114, 487, 1692, - 486, 486, 380, 486, 1927, 216, 36, 149, 73, 121, - 149, 1934, 2228, 36, 487, 348, 2232, 348, 0, 54, - 1241, 36, 67, 486, 486, 486, 2069, 429, 73, 434, - 1953, 73, 1051, 490, 36, 184, 429, 2253, 67, 67, - 85, 21, 2228, 2228, 356, 357, 2232, 2232, 2091, 416, - 2255, 2256, 282, 486, 490, 36, 350, 366, 184, 168, - 475, 1080, 421, 269, 240, 486, 416, 36, 1145, 114, - 2286, 116, 486, 282, 282, 486, 262, 279, 486, 2295, - 487, 347, 9, 487, 334, 196, 279, 279, 2304, 33, - 487, 200, 119, 2032, 74, 486, 473, 474, 475, 427, - 477, 478, 479, 480, 481, 482, 215, 9, 22, 89, - 92, 487, 579, 1145, 2051, 224, 1380, 2056, 2334, 2064, - 1747, 2257, 2014, 2700, 2459, 484, 171, 2764, 487, 488, - 2097, 2298, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, - 2079, 2080, 2770, 2840, 2615, 1366, 2069, 1840, 2818, 258, - 2806, 880, 2534, 198, 466, 467, 2102, 2767, 1741, 1753, - 1803, 2816, 144, 143, 1241, 2068, 1738, 2372, 2765, 1067, - 279, 2387, 152, 1807, 486, 157, 2392, 1842, 2387, 821, - 162, 2091, 173, 2399, 164, 167, 2402, 1702, 1351, 169, - 868, 2677, 867, 846, 176, 2411, 2412, 179, 2595, 2415, - 2755, 1717, 1325, 194, 1994, 2248, 2689, 2250, 2249, 1241, - 1350, 2427, 1688, 870, 194, 1980, 2234, 2580, 2219, 264, - 2436, 1978, 2667, 2666, 269, 2441, 208, 2684, 2444, 2685, - 1194, 474, 1194, 2455, 343, 2451, 2452, 480, 1194, 230, - 1194, 2427, 2427, 486, 2753, 227, 2754, 2463, 491, 2465, - 2436, 2436, 2740, 1279, 1600, 2441, 2441, 237, 2444, 2444, - 1177, 241, 1705, 1282, 1419, 1283, 1487, 312, 1640, 2485, - 1963, 1527, 2195, 1637, 517, 518, 519, 2463, 2463, 1810, - 2659, 1082, 327, 2015, 1303, 1978, 1305, 1980, 1484, 1366, - 1304, -1, 8, 284, 276, 11, 852, 279, 1519, 1305, - -1, 2517, -1, 285, -1, -1, -1, -1, -1, 552, - -1, 554, -1, -1, -1, -1, -1, -1, 561, -1, - 429, 2526, -1, -1, 304, 41, -1, 570, -1, 1348, - 2546, -1, 48, -1, 1366, -1, 2552, 2553, 318, 582, - -1, -1, 2547, -1, 2387, -1, -1, 2587, -1, -1, - -1, 594, -1, -1, -1, -1, -1, 73, 340, 2575, - 2546, 2546, -1, 2579, -1, -1, -1, 2583, -1, 349, - 2586, 2587, 352, -1, -1, -1, -1, 422, -1, -1, - 360, 2304, 2598, 363, -1, -1, 629, 630, 631, -1, - -1, -1, 2608, 2579, 2579, -1, 2612, 2613, -1, -1, - -1, -1, 382, -1, -1, -1, -1, 398, 1427, 400, - 1487, 2334, 394, -1, 394, -1, -1, -1, -1, 2112, - -1, 401, -1, -1, -1, 169, 142, -1, -1, 173, - 410, 422, -1, -1, 425, 2640, -1, -1, -1, 421, - -1, -1, 1519, 8, -1, -1, 11, 429, 2664, -1, - 194, 2667, -1, -1, -1, 1487, 172, -1, -1, -1, - -1, 441, -1, 445, -1, 447, 448, -1, -1, 2392, - 186, -1, -1, 2689, 2517, 191, 41, -1, -1, 2402, - 723, 2667, 2667, 48, 2700, -1, 230, 1519, -1, -1, - -1, 2696, -1, 237, -1, -1, -1, 719, -1, -1, - -1, -1, 484, -1, 2720, 487, 488, 489, 73, 8, - 226, -1, 11, -1, 2700, 2700, -1, -1, -1, -1, - -1, -1, -1, 2739, 2740, -1, 8, -1, -1, 11, - -1, -1, -1, -1, -1, 2228, -1, -1, -1, 2232, - 284, 719, 41, -1, -1, 2484, 789, -1, -1, 48, - -1, 2767, 2768, -1, -1, 8, -1, -1, 11, 41, - -1, -1, 2255, 2256, -1, 281, 48, -1, 2784, -1, - 2786, -1, 2777, -1, 73, -1, -1, 142, -1, 2518, - 2519, -1, -1, -1, -1, -1, -1, 830, 41, -1, - -1, 73, 2531, 2636, 2517, 48, -1, -1, 2784, 2784, - -1, 1822, -1, 846, 847, -1, -1, 172, 352, 852, - 853, 854, -1, -1, -1, -1, -1, -1, -1, -1, - 73, 186, -1, -1, -1, -1, 191, -1, -1, -1, - 2553, -1, 2848, -1, -1, -1, 879, 880, -1, -1, - -1, 1862, 50, 142, -1, -1, -1, -1, 1667, 892, - -1, -1, -1, -1, 398, 371, 400, 1878, 2597, -1, - 2583, 226, -1, 2586, -1, -1, 909, -1, -1, -1, - 913, 893, -1, 172, -1, -1, -1, 1898, 422, 2372, - -1, 425, -1, -1, -1, -1, 94, 186, -1, 142, - 172, -1, 191, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 186, -1, 1927, -1, -1, 191, - -1, -1, 120, 1934, -1, 893, 281, -1, -1, 172, - -1, -1, -1, 711, -1, 2768, -1, 226, -1, 717, - 138, -1, 1953, 186, 142, -1, -1, -1, 191, -1, - -1, -1, -1, 2436, 226, 1822, -1, -1, 2441, -1, - -1, 2444, -1, -1, 470, 163, -1, -1, 166, -1, - -1, 477, 478, 479, 480, 481, 482, -1, -1, -1, - -1, -1, 180, 226, -1, -1, -1, -1, -1, -1, - -1, -1, 281, -1, -1, 1862, -1, -1, -1, 1808, - 1822, -1, -1, 0, 1813, 1814, 1815, -1, -1, 281, - -1, 1878, -1, 1046, -1, -1, 371, -1, 1051, -1, - -1, -1, -1, -1, 1833, 803, -1, -1, 1061, -1, - -1, 1898, -1, -1, 1067, -1, -1, 1070, 281, -1, - 1862, 1074, 1075, 2526, 1077, 1078, -1, 1080, 826, -1, - 828, 829, -1, -1, -1, 2768, 1878, -1, 2069, -1, - 1927, -1, -1, -1, 2547, -1, -1, 1934, -1, -1, - -1, 269, -1, -1, -1, -1, 1898, -1, -1, 277, - -1, -1, 371, -1, -1, -1, 1953, -1, -1, -1, - -1, 719, -1, -1, -1, 92, 2579, -1, -1, 371, - -1, -1, -1, -1, 2587, 1927, -1, -1, -1, -1, - -1, -1, 1934, -1, -1, 470, 894, -1, -1, 897, - 898, 319, 477, 478, 479, 480, 481, 482, 371, -1, - -1, 1953, -1, 1145, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 144, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2640, -1, -1, - 157, -1, -1, -1, -1, 162, 1975, 1976, 1977, -1, - 167, -1, 1205, -1, -1, -1, -1, 1145, -1, 176, - -1, 470, 179, -1, 2195, -1, -1, -1, 477, 478, - 479, 480, 481, 482, -1, -1, -1, -1, 470, -1, - -1, -1, 2069, -1, -1, 477, 478, 479, 480, 481, - 482, 208, -1, 2696, -1, -1, 1249, -1, -1, -1, - -1, 2030, -1, -1, -1, -1, -1, 470, -1, 1241, - 227, -1, -1, -1, 477, 478, 479, 480, 481, 482, - -1, -1, -1, -1, -1, -1, -1, 2069, -1, 1282, + 6, 6, 610, 520, 519, 35, 625, 912, 598, 553, + 716, 617, 0, 62, 576, 526, 619, 716, 1683, 1211, + 899, 794, 571, 16, 886, 652, 1680, 0, 781, 1086, + 911, 796, 0, 0, 1493, 0, 1247, 1056, 952, 524, + 1694, 29, 1056, 16, 1752, 1056, 1056, 812, 888, 1758, + 6, 1760, 1577, 1578, 862, 64, 891, 1582, 30, 824, + 2099, 2027, 2073, 1200, 1243, 1244, 1200, 64, 1494, 1200, + 610, 2073, 612, 1749, 614, 1200, 916, 0, 1178, 1986, + 723, 1640, 34, 2109, 1703, 5, 74, 9, 2116, 84, + 5, 86, 525, 88, 656, 50, 526, 58, 1623, 1624, + 13, 14, 73, 5, 11, 5, 5, 1295, 1992, 9, + 5, 13, 14, 754, 5, 87, 1344, 0, 13, 14, + 5, 2380, 11, 1342, 5, 75, 832, 1078, 13, 14, + 771, 9, 13, 14, 41, 85, 2383, 5, 167, 116, + 0, 119, 2386, 119, 1820, 630, 92, 40, 93, 5, + 5, 168, 5, 9, 15, 529, 5, 5, 1369, 121, + 13, 14, 136, 210, 167, 106, 73, 2016, 2369, 5, + 67, 40, 1926, 5, 5, 1675, 1676, 5, 5, 5, + 27, 5, 58, 1859, 1860, 2433, 236, 34, 58, 27, + 4, 1991, 173, 279, 900, 9, 34, 903, 904, 11, + 3, 4, 5, 2644, 2538, 716, 9, 595, 75, 92, + 27, 722, 277, 114, 2351, 236, 2455, 34, 85, 2302, + 167, 2469, 116, 168, 285, 285, 204, 301, 595, 2478, + 792, 793, 92, 301, 1213, 325, 839, 3, 157, 37, + 268, 359, 236, 106, 27, 325, 27, 82, 797, 230, + 2499, 157, 117, 265, 11, 200, 114, 2608, 4, 430, + 430, 20, 2709, 9, 11, 31, 32, 164, 13, 14, + 215, 159, 1151, 2523, 348, 488, 825, 395, 491, 224, + 360, 924, 159, 184, 8, 408, 719, 11, 931, 105, + 2538, 126, 16, 17, 18, 161, 2737, 446, 2542, 2767, + 2046, 2769, 352, 347, 48, 338, 872, 107, 227, 146, + 11, 114, 2792, 258, 1525, 395, 487, 487, 436, 129, + 882, 227, 187, 834, 835, 123, 73, 2234, 2339, 452, + 1984, 2238, 1986, 366, 279, 11, 853, 2045, 1897, 2378, + 41, 2225, 491, 220, 119, 373, 129, 11, 129, 476, + 168, 2590, 442, 1332, 75, 192, 2102, 276, 352, 134, + 487, 2808, 442, 264, 85, 41, 2042, 957, 2044, 487, + 68, 2839, 73, 261, 2854, 269, 426, 41, 339, 2628, + 1905, 1906, 1907, 1908, 2521, 2826, 1911, 1912, 1913, 1914, + 1915, 1916, 1917, 1918, 1919, 1920, 279, 73, 343, 262, + 166, 487, 168, 406, 1157, 426, 209, 2161, 482, 73, + 2493, 269, 2763, 359, 482, 312, 428, 162, 399, 279, + 401, 2270, 487, 1066, 2224, 2673, 242, 230, 172, 290, + 491, 491, 426, 107, 250, 742, 743, 487, 1963, 1964, + 2641, 307, 186, 487, 491, 426, 1065, 191, 1640, 395, + 428, 2785, 428, 2129, 395, 432, 406, 340, 2706, 406, + 767, 296, 491, 339, 274, 5, 487, 191, 430, 339, + 487, 445, 1078, 476, 848, 1975, 1976, 1977, 1978, 297, + 340, 476, 226, 58, 1125, 430, 489, 475, 212, 1717, + 436, 2738, 880, 487, 489, 2739, 526, 1716, 1104, 392, + 1959, 1363, 475, 449, 1145, 1419, 1685, 475, 475, 1460, + 475, 2750, 2523, 880, 485, 383, 384, 1705, 489, 1711, + 526, 2523, 2772, 392, 439, 2784, 423, 473, 114, 376, + 491, 451, 487, 526, 1175, 2442, 311, 2785, 376, 406, + 2447, 487, 1447, 2450, 129, 75, 552, 553, 487, 598, + 2434, 449, 525, 473, 372, 85, 565, 281, 1073, 376, + 451, 1076, 0, 1080, 486, 400, 449, 487, 565, 1084, + 576, 2279, 487, 568, 487, 473, 483, 1088, 1492, 1182, + 2234, 574, 473, 2292, 2238, 487, 485, 487, 487, 449, + 489, 236, 487, 1693, 483, 590, 487, 585, 1577, 1578, + 478, 479, 487, 1582, 2643, 488, 487, 490, 0, 615, + 616, 617, 585, 1824, 117, 491, 588, 585, 585, 1181, + 585, 1183, 2650, 2649, 16, 577, 490, 371, 488, 1191, + 490, 487, 487, 1195, 487, 1238, 1239, 29, 487, 487, + 635, 636, 637, 35, 1623, 1624, 1252, 1213, 1291, 2268, + 656, 487, 1214, 1215, 1087, 487, 487, 1868, 1088, 487, + 487, 487, 585, 487, 478, 479, 478, 479, 480, 481, + 482, 483, 64, 1884, 440, 478, 479, 325, 2585, 264, + 1283, 1230, 74, 491, 187, 394, 1392, 262, 23, 274, + 1293, 1294, 8, 1904, 485, 2371, 1402, 2736, 489, 1405, + 16, 17, 18, 449, 144, 1897, 292, 352, 440, 2135, + 716, 2137, 360, 2272, 248, 249, 722, 723, 724, 487, + 429, 30, 1933, 480, 481, 482, 483, 473, 335, 1940, + 236, 451, 478, 479, 740, 59, 1873, 1874, 1875, 1873, + 1255, 1872, 2201, 67, 194, 54, 719, 395, 1873, 1874, + 474, 475, 476, 473, 478, 479, 480, 481, 482, 483, + 243, 2772, 768, 793, 339, 1822, 1332, 1946, 208, 1475, + 2772, 482, 2480, 359, 1380, 534, 1475, 536, 489, 2433, + 1388, 426, 788, 789, 790, 157, 792, 793, 2442, 194, + 162, 366, 216, 2447, 442, 476, 2450, 556, 1595, 134, + 1597, 1598, 478, 479, 480, 481, 482, 483, 489, 395, + 816, 1118, 1119, 451, 2853, 2469, 480, 481, 482, 483, + 411, 1361, 356, 357, 482, 1415, 1416, 1417, 834, 835, + 1457, 489, 129, 1606, 1461, 473, 1143, 1464, 262, 1604, + 442, 836, 487, 2809, 2810, 285, 352, 264, 1388, 487, + 436, 399, 269, 401, 1460, 227, 865, 866, 155, 868, + 355, 867, 2073, 449, 859, 871, 872, 1407, 865, 866, + 1775, 868, 1412, 236, 116, 487, 882, 4, 451, 1687, + 2405, 2073, 9, 1398, 2538, 1799, 858, 473, 1403, 157, + 885, 2857, 488, 899, 162, 491, 129, 236, 1205, 1206, + 473, 487, 319, 898, 276, 2613, 230, 1482, 487, 2618, + 23, 1486, 488, 1488, 487, 491, 29, 27, 924, 399, + 426, 401, 155, 67, 919, 931, 1905, 1906, 1907, 1908, + 214, 2585, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, + 1919, 1920, 1707, 915, 1784, 369, 952, 352, 283, 2408, + 1435, 554, 555, 470, 557, 360, 198, 716, 8, 227, + 320, 11, 489, 722, 1475, 281, 2491, 264, 78, 1531, + 114, 1899, 269, 173, 23, 279, 86, 274, 4, 1490, + 29, 487, 422, 9, 1963, 1964, 148, 4, 348, 352, + 395, 41, 9, 491, 194, 493, 1831, 168, 48, 1927, + 216, 1836, 337, 338, 428, 115, 31, 32, 276, 4, + 470, 1577, 1578, 352, 9, 488, 1582, 480, 491, 2673, + 262, 134, 264, 73, 485, 74, 487, 171, 489, 200, + 230, 366, 488, 2558, 1596, 491, 269, 442, 166, 798, + 2705, 274, 64, 65, 215, 23, 262, 488, 491, 808, + 491, 29, 2706, 224, 13, 14, 488, 1623, 1624, 491, + 1066, 487, 821, 426, 1059, 2122, 1628, 92, 488, 13, + 14, 491, 1078, 832, 184, 834, 835, 399, 488, 401, + 2272, 2100, 1088, 475, 284, 195, 2100, 426, 488, 2100, + 2100, 1086, 1682, 488, 5, 1088, 491, 8, 1104, 2310, + 2559, 488, 167, 14, 491, 321, 1668, 488, 488, 488, + 491, 491, 491, 24, 1087, 488, 413, 28, 491, 210, + 264, 2786, 172, 23, 487, 269, 54, 424, 1755, 29, + 1757, 2785, 487, 525, 526, 2843, 186, 488, 470, 488, + 491, 191, 491, 214, 488, 1151, 2811, 491, 487, 1848, + 149, 2056, 488, 369, 488, 491, 134, 491, 474, 475, + 476, 333, 478, 479, 480, 481, 482, 483, 312, 449, + 283, 451, 343, 565, 2055, 1181, 226, 1183, 1931, 1932, + 413, 2043, 1188, 327, 399, 1191, 401, 2398, 149, 1195, + 1178, 424, 149, 585, 182, 183, 1815, 359, 149, 399, + 2865, 401, 592, 1209, 594, 1178, 1212, 1213, 1214, 1215, + 1178, 1178, 428, 1178, 2095, 488, 1222, 1223, 1224, 2054, + 333, 2056, 23, 423, 337, 487, 426, 488, 29, 488, + 491, 281, 491, 395, 134, 488, 1242, 488, 491, 36, + 491, 1247, 1248, 1249, 1250, 1251, 1252, 1853, 81, 2014, + 1256, 1257, 264, 366, 488, 1261, 148, 491, 55, 1265, + 248, 249, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, + 1276, 149, 382, 1279, 436, 385, 442, 488, 1284, 423, + 491, 1287, 2239, 1289, 2241, 1291, 488, 449, 2243, 491, + 487, 2246, 488, 1288, 8, 491, 488, 11, 488, 491, + 453, 491, 16, 17, 18, 283, 488, 1313, 105, 491, + 488, 473, 2523, 491, 1309, 488, 1311, 1310, 491, 33, + 433, 371, 13, 14, 489, 487, 1332, 719, 1843, 488, + 1318, 2523, 491, 134, 359, 1341, 1342, 1848, 1941, 1905, + 1906, 1907, 1908, 13, 14, 1911, 1912, 1913, 1914, 1915, + 1916, 1917, 1918, 1919, 1920, 333, 13, 14, 488, 337, + 1355, 491, 149, 1369, 149, 757, 279, 2073, 356, 357, + 395, 395, 1378, 487, 1380, 36, 1938, 488, 2589, 225, + 491, 2592, 8, 283, 488, 11, 488, 491, 366, 491, + 16, 17, 18, 13, 14, 487, 193, 1963, 1964, 488, + 485, 793, 491, 2308, 23, 488, 488, 33, 491, 491, + 29, 436, 5, 1419, 5, 440, 1422, 1423, 2280, 1425, + 2023, 471, 488, 487, 449, 491, 2405, 487, 478, 479, + 480, 481, 482, 483, 13, 14, 23, 337, 1433, 162, + 292, 1200, 29, 488, 487, 242, 491, 1996, 473, 488, + 1456, 487, 491, 250, 1460, 433, 488, 2230, 488, 491, + 2339, 491, 487, 308, 1452, 262, 366, 359, 2074, 1475, + 2076, 2244, 488, 865, 866, 491, 868, 23, 488, 13, + 14, 491, 283, 29, 1490, 487, 1492, 1493, 11, 93, + 347, 348, 15, 487, 2121, 5, 293, 5, 212, 22, + 2090, 13, 14, 395, 13, 14, 487, 359, 13, 14, + 33, 34, 2491, 13, 14, 134, 13, 14, 487, 1525, + 13, 14, 487, 359, 487, 1531, 1532, 13, 14, 13, + 14, 1537, 333, 433, 13, 14, 337, 13, 14, 13, + 14, 338, 1301, 395, 436, 13, 14, 134, 487, 1579, + 13, 14, 13, 14, 13, 14, 487, 449, 5, 395, + 487, 2772, 85, 360, 168, 366, 5, 281, 347, 348, + 487, 1577, 1578, 1579, 347, 348, 1582, 347, 348, 2558, + 2772, 473, 487, 380, 436, 487, 212, 9, 134, 1595, + 1596, 1597, 1598, 2299, 487, 487, 200, 449, 1628, 1605, + 436, 487, 1608, 252, 253, 724, 356, 357, 834, 835, + 450, 215, 15, 449, 210, 491, 96, 1623, 1624, 36, + 224, 473, 1628, 366, 162, 276, 162, 274, 225, 6, + 406, 487, 433, 487, 11, 487, 1642, 473, 15, 1645, + 85, 1647, 491, 406, 21, 22, 23, 2250, 2529, 26, + 54, 487, 29, 30, 258, 281, 33, 34, 36, 54, + 406, 2264, 1668, 8, 283, 255, 11, 406, 1698, 488, + 496, 16, 17, 18, 1680, 1680, 406, 55, 1673, 149, + 449, 92, 264, 264, 2311, 2312, 36, 487, 1694, 1694, + 36, 488, 491, 489, 2393, 1087, 283, 74, 439, 487, + 35, 487, 1708, 487, 487, 1693, 487, 84, 85, 86, + 87, 88, 445, 832, 333, 2259, 1475, 1723, 337, 487, + 1693, 9, 1481, 404, 1680, 1693, 1693, 105, 1693, 404, + 11, 1490, 491, 486, 491, 1741, 496, 283, 1694, 343, + 404, 269, 487, 487, 406, 176, 333, 366, 158, 167, + 337, 488, 1758, 1759, 1760, 487, 430, 36, 208, 369, + 474, 475, 476, 491, 478, 479, 480, 481, 482, 483, + 216, 491, 487, 8, 280, 216, 11, 264, 216, 366, + 899, 16, 17, 18, 285, 488, 1178, 333, 317, 277, + 442, 337, 264, 1799, 279, 487, 149, 149, 279, 264, + 36, 449, 36, 35, 406, 485, 485, 406, 406, 486, + 488, 406, 488, 167, 433, 193, 488, 2523, 1824, 1814, + 366, 488, 488, 488, 1819, 488, 1821, 1822, 1823, 489, + 488, 470, 488, 488, 470, 488, 470, 167, 406, 2405, + 289, 487, 1848, 488, 488, 488, 433, 1853, 474, 475, + 476, 279, 478, 479, 480, 481, 482, 483, 1846, 487, + 487, 446, 1868, 487, 242, 436, 1258, 212, 446, 476, + 428, 472, 250, 280, 280, 1881, 491, 0, 1884, 280, + 235, 406, 2393, 264, 262, 1891, 149, 433, 194, 1895, + 283, 149, 1898, 487, 149, 406, 488, 486, 1904, 1905, + 1906, 1907, 1908, 406, 406, 1911, 1912, 1913, 1914, 1915, + 1916, 1917, 1918, 1919, 1920, 293, 406, 491, 1924, 1925, + 2825, 488, 1971, 488, 149, 2491, 1318, 1933, 488, 277, + 279, 449, 1938, 36, 1940, 149, 281, 144, 269, 1969, + 485, 1947, 140, 167, 1950, 488, 1952, 11, 488, 162, + 157, 488, 167, 1959, 1960, 162, 1986, 1963, 1964, 395, + 338, 488, 1968, 1969, 488, 487, 167, 176, 446, 92, + 493, 491, 488, 488, 2489, 473, 340, 2567, 1984, 1984, + 1986, 1986, 360, 435, 488, 83, 1981, 1982, 1983, 280, + 149, 1997, 2558, 487, 171, 487, 417, 430, 521, 36, + 2006, 208, 380, 79, 487, 487, 1765, 167, 2614, 397, + 2629, 486, 215, 486, 491, 288, 2022, 488, 487, 215, + 227, 144, 488, 54, 488, 286, 488, 487, 1984, 487, + 1986, 2593, 1151, 488, 157, 179, 487, 449, 196, 162, + 185, 2036, 476, 269, 167, 489, 281, 269, 1807, 489, + 406, 476, 489, 176, 577, 2572, 179, 489, 36, 489, + 1452, 279, 489, 489, 2070, 489, 2772, 2073, 2074, 276, + 2076, 264, 406, 2590, 724, 489, 489, 106, 285, 449, + 489, 489, 36, 167, 489, 208, 298, 489, 488, 1848, + 489, 489, 489, 2712, 215, 489, 1855, 489, 1857, 476, + 489, 487, 1861, 1862, 227, 482, 2101, 489, 2670, 489, + 489, 448, 489, 489, 489, 489, 493, 489, 489, 2634, + 487, 486, 85, 130, 487, 487, 487, 2122, 1247, 474, + 475, 476, 2120, 478, 479, 480, 481, 482, 483, 327, + 114, 488, 519, 520, 521, 487, 2152, 487, 144, 216, + 36, 149, 73, 276, 121, 149, 279, 36, 348, 488, + 54, 157, 285, 348, 36, 487, 162, 487, 2774, 2686, + 487, 2779, 491, 430, 73, 435, 36, 554, 555, 184, + 557, 430, 67, 282, 417, 67, 487, 1579, 491, 2195, + 2196, 568, 2707, 36, 2200, 2201, 350, 366, 476, 2205, + 577, 269, 2208, 2209, 184, 240, 417, 2213, 67, 36, + 487, 588, 208, 590, 73, 422, 487, 340, 487, 282, + 282, 488, 2217, 2218, 2219, 2220, 85, 279, 2234, 2234, + 262, 227, 2238, 2238, 488, 487, 1628, 347, 9, 474, + 475, 476, 334, 478, 479, 480, 481, 482, 483, 899, + 1369, 196, 279, 2259, 1646, 114, 279, 116, 635, 636, + 637, 33, 119, 428, 9, 488, 487, 22, 488, 585, + 1662, 2263, 395, 2261, 2262, 1310, 2465, 2304, 2234, 2020, + 276, 2706, 2238, 2770, 8, 2646, 2292, 11, 1680, 285, + 1816, 1490, 2105, 1088, 2057, 2301, 1386, 2070, 1753, 422, + 852, 1693, 1694, 50, 2310, 826, 1698, 430, 1073, 1708, + 1358, 875, 171, 874, 2073, 2683, 169, 41, 2601, 2761, + 173, 36, 1723, 446, 48, 448, 449, 1332, 2000, 852, + 2695, 2255, 1694, 2339, 1357, 877, 1986, 2240, 2097, 198, + 55, 194, 2586, 2225, 1984, 8, 2673, 94, 11, 73, + 2672, 728, 2690, 16, 17, 18, 2691, 1200, 1200, 1200, + 2461, 1200, 485, 2759, 2746, 488, 489, 490, 2760, 1285, + 33, 1606, 1183, 120, 1493, 1646, 1533, 230, 1711, 1425, + 1643, 1289, 2776, 2846, 237, 2621, 2824, 2393, 2812, 2544, + 105, 138, 2398, 2381, 1747, 142, 2110, 886, 1759, 2405, + 1809, 2774, 2408, 2822, 1744, 264, 1525, 2076, 2771, 1813, + 269, 2417, 2418, 1311, 1853, 2421, 163, 794, 142, 166, + 2097, 2021, -1, 2393, -1, -1, 422, 2433, 2433, 858, + -1, 284, -1, 180, -1, -1, 2442, 2442, -1, -1, + -1, 2447, 2447, -1, 2450, 2450, -1, -1, 172, -1, + -1, 2457, 2458, 312, 1846, -1, 171, -1, -1, 836, + -1, -1, 186, 2469, 2469, 2471, -1, 191, 327, -1, + -1, -1, -1, -1, -1, 852, 853, 2433, 193, -1, + -1, 858, 859, 860, -1, 2491, 2442, -1, -1, 485, + -1, 2447, 488, 489, 2450, 2254, -1, 2256, -1, 352, + -1, 1151, 226, 2498, -1, -1, -1, -1, 885, 886, + -1, -1, -1, 2469, -1, -1, -1, 2523, -1, -1, + -1, 898, 269, -1, -1, -1, -1, 242, -1, -1, + 277, -1, 2538, 2538, -1, 250, -1, -1, 915, -1, + 2535, -1, 919, -1, 2532, -1, 399, 262, 401, 212, + -1, -1, 2558, 2559, -1, -1, -1, 281, 1081, -1, + 1083, -1, -1, 2593, 423, 2553, -1, -1, -1, -1, + 423, -1, 319, 426, -1, 2581, -1, 1969, 293, 2585, + 2585, -1, 2538, 2589, -1, -1, 2592, 2593, -1, -1, + -1, -1, 1984, -1, 1986, -1, -1, 1247, 2604, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2614, -1, + -1, -1, 2618, 2619, -1, -1, -1, 2612, 281, -1, + -1, -1, -1, 338, -1, -1, -1, -1, -1, 2585, + -1, -1, -1, -1, 2393, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 360, -1, 371, -1, -1, + 2645, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2648, -1, -1, -1, 2670, 380, -1, 2673, 2673, -1, + -1, -1, -1, -1, -1, 1052, -1, -1, -1, -1, + -1, 1058, 1059, 8, -1, -1, 11, -1, -1, 2695, + -1, 16, 17, 18, -1, -1, 1073, -1, -1, 1076, + 2706, 2706, -1, 1080, 1081, 1824, 1083, 1084, -1, 1086, + -1, -1, 716, -1, 2702, -1, 41, 2673, 722, 1369, + 2726, -1, -1, 48, -1, -1, -1, -1, 2120, -1, + 3, -1, 5, -1, -1, -1, -1, -1, -1, 2745, + 2746, -1, -1, -1, -1, -1, -1, 471, 73, 1868, + 2706, -1, -1, -1, 478, 479, 480, 481, 482, 483, + -1, -1, -1, -1, 2523, 1884, 2772, -1, 2774, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2785, + 2785, -1, -1, -1, -1, 1904, 2792, -1, -1, -1, + -1, -1, -1, -1, -1, 2783, -1, -1, -1, 8, + -1, -1, 11, -1, 808, -1, -1, 16, 17, 18, + -1, 474, 475, 476, 1933, 478, 479, 480, 481, 482, + 483, 1940, -1, -1, 33, -1, -1, -1, 832, 2785, + 834, 835, -1, -1, 1211, 108, 109, -1, -1, -1, + 1959, 1364, 2234, 1493, -1, -1, 2238, 172, 2854, -1, + -1, 1374, -1, 1376, -1, -1, 1379, -1, -1, -1, + -1, 186, 1385, -1, 1387, -1, 191, -1, -1, 2261, + 2262, -1, -1, -1, -1, 1525, 1399, -1, 1255, -1, + -1, 1404, -1, 2642, -1, 1408, 1409, 1410, 1411, -1, + 1413, 1414, -1, -1, -1, -1, 900, -1, -1, 903, + 904, 226, -1, -1, -1, -1, -1, -1, -1, 182, + 183, 1288, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 893, -1, -1, -1, -1, - 1303, -1, 1305, 1241, -1, -1, -1, -1, -1, 276, - -1, 1314, 279, 1316, -1, -1, 2095, -1, 285, -1, - -1, -1, -1, 2304, 2777, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2116, -1, 1087, - 1088, -1, -1, -1, -1, 1348, -1, -1, -1, -1, - -1, -1, -1, 2334, 1357, 1358, -1, -1, 2195, -1, - -1, -1, -1, -1, -1, 1368, 1369, 1370, 1371, -1, - 1373, -1, -1, 340, -1, -1, 1379, -1, 1381, -1, - -1, -1, -1, -1, 1366, -1, -1, -1, -1, 1392, - 1393, -1, -1, -1, 1397, 1398, -1, -1, -1, 1402, - 1403, 1404, 1405, 2195, 1407, 1408, -1, -1, -1, -1, - -1, 2392, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2402, -1, -1, 1427, 1428, 36, 394, 1366, -1, - -1, -1, 2211, 2212, 2213, 2214, -1, 1440, -1, 1187, - 1188, -1, -1, -1, -1, 55, -1, 1195, -1, 1197, - 1198, -1, -1, -1, 421, -1, -1, -1, -1, -1, - -1, -1, 429, -1, 1212, -1, 1214, 2304, -1, -1, - -1, 550, 551, -1, -1, -1, -1, -1, 445, -1, - 447, 448, -1, -1, -1, 8, 1489, 1235, 11, -1, - -1, -1, -1, -1, -1, 105, 106, 2334, -1, -1, - -1, -1, -1, -1, 114, 1487, -1, -1, -1, -1, - -1, -1, 2304, -1, -1, -1, -1, 484, 41, -1, - 487, 488, 489, -1, -1, 48, -1, -1, -1, -1, - -1, 610, 611, -1, -1, 8, 2517, 1519, 11, -1, - -1, -1, 2334, 16, 17, 18, -1, 1145, -1, 1487, - 73, -1, -1, -1, -1, 2392, -1, -1, -1, -1, - -1, 171, -1, -1, -1, 2402, -1, -1, -1, -1, - -1, -1, 2553, -1, -1, -1, -1, -1, -1, -1, - -1, 1519, -1, 193, -1, -1, 1334, 1335, 8, -1, - -1, 11, -1, -1, -1, -1, -1, 1600, -1, -1, - 2392, -1, 2583, -1, -1, 2586, -1, -1, -1, -1, - 2402, -1, -1, -1, -1, -1, -1, -1, -1, 142, - -1, 41, -1, -1, -1, -1, -1, -1, 48, -1, - -1, 1634, 242, -1, -1, -1, -1, -1, 1386, 718, - 250, -1, -1, 1241, -1, -1, -1, -1, 1396, 172, - -1, 1399, 262, 73, 264, -1, 735, -1, -1, -1, - -1, -1, -1, 186, 1667, -1, -1, -1, 191, -1, - -1, 1674, -1, -1, -1, -1, -1, -1, -1, -1, - 2517, -1, -1, 293, 763, 1688, -1, -1, -1, 1692, - -1, -1, 1695, -1, 1697, -1, -1, -1, -1, -1, - -1, -1, -1, 226, 783, 784, 785, -1, -1, 788, - -1, -1, -1, 2492, -1, -1, 2553, -1, -1, -1, - -1, -1, 142, 1471, -1, 2517, -1, -1, 338, -1, - -1, -1, 811, -1, -1, -1, 1484, -1, -1, 212, - 1743, -1, -1, -1, -1, -1, 2583, -1, -1, 2586, - 360, -1, 172, -1, -1, -1, -1, -1, 281, -1, - 1508, 2553, -1, -1, 2543, -1, 186, -1, 1366, -1, - 380, 191, 382, -1, -1, 385, -1, -1, -1, -1, - -1, 860, -1, -1, -1, 864, 865, 2768, -1, -1, - -1, 2583, -1, -1, 2586, -1, -1, 108, 109, -1, - 1803, -1, -1, -1, -1, 1808, 226, -1, 281, 1812, - 1813, 1814, 1815, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1826, -1, -1, -1, 2606, -1, -1, - 1833, -1, -1, -1, 1837, -1, -1, -1, -1, 918, - 1822, -1, -1, -1, -1, -1, 925, -1, 371, -1, - 1853, 1854, -1, -1, -1, -1, -1, -1, -1, -1, - 2639, 281, -1, -1, -1, -1, -1, 946, -1, -1, - -1, 182, 183, -1, -1, -1, 486, -1, -1, -1, - 1862, -1, -1, -1, 1822, -1, -1, -1, 1891, 1487, - -1, -1, -1, -1, -1, -1, 1878, -1, -1, -1, + -1, -1, 1309, -1, 1311, -1, 0, -1, -1, -1, + -1, -1, -1, 1320, -1, 1322, -1, -1, -1, -1, + -1, -1, -1, -1, 2073, -1, 281, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 724, -1, -1, -1, + -1, 244, 245, 246, 247, 248, 249, -1, 1355, 252, + 253, -1, -1, -1, -1, -1, 1363, 1364, -1, 2381, + -1, -1, 108, 109, -1, -1, -1, 1374, 1375, 1376, + 1377, -1, 1379, 212, -1, -1, -1, -1, 1385, -1, + 1387, 724, -1, 2772, -1, -1, -1, -1, -1, -1, + -1, 1398, 1399, -1, -1, -1, 1403, 1404, 92, -1, + -1, 1408, 1409, 1410, 1411, -1, 1413, 1414, -1, -1, + -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, + 2442, -1, -1, -1, -1, 2447, 1433, 1434, 2450, -1, + -1, -1, -1, -1, -1, 23, 182, 183, -1, -1, + -1, 29, 281, 1450, -1, -1, -1, -1, 36, -1, + 144, -1, 2201, 356, 357, -1, -1, -1, -1, 1093, + 1094, -1, -1, 157, -1, -1, -1, 55, 162, -1, + -1, 8, -1, 167, 11, 724, -1, -1, -1, 16, + 17, 18, 176, -1, -1, 179, -1, -1, 1495, 724, + -1, -1, -1, -1, -1, -1, -1, -1, 244, 245, + 246, 247, 248, 249, -1, -1, 252, 253, -1, -1, + 2532, 899, -1, -1, 208, -1, 471, 105, -1, 474, + 475, 476, -1, 478, 479, 480, 481, 482, 483, -1, + -1, 2553, -1, 227, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1824, -1, 134, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 899, -1, -1, 1193, + 1194, 2310, -1, 2585, 467, 468, -1, 1201, -1, 1203, + 1204, 2593, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 276, -1, 1218, 279, 1220, -1, 1868, -1, + 2339, 285, -1, -1, -1, -1, -1, -1, -1, 1606, + -1, -1, -1, -1, 1884, 193, -1, 1241, -1, -1, + 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1904, -1, 2648, -1, -1, -1, + -1, -1, -1, 1640, -1, 474, 475, 476, -1, 478, + 479, 480, 481, 482, 483, -1, 340, -1, -1, 2398, + 899, -1, -1, 1933, 242, -1, -1, -1, -1, 2408, + 1940, -1, 250, -1, 899, 36, 1673, -1, -1, -1, + -1, -1, -1, 1680, 262, 212, -1, -1, -1, 1959, + 2702, 1834, -1, 8, 55, 724, 11, 1694, -1, -1, + -1, 1698, -1, -1, 1701, 283, 1703, -1, -1, -1, + -1, 395, -1, -1, -1, 293, -1, 1341, 1342, -1, + -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, + -1, 467, 468, 48, -1, -1, -1, -1, 422, -1, + -1, -1, -1, -1, 105, 106, 430, -1, -1, -1, + -1, 487, 1749, 114, 281, 333, -1, -1, 73, 337, + 338, -1, 446, -1, 448, 449, -1, -1, 1392, -1, + -1, 2783, -1, 1151, -1, -1, -1, -1, 1402, -1, + -1, 1405, 360, -1, 2523, -1, -1, -1, 366, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1898, -1, -1, -1, - -1, 1519, -1, -1, 1862, -1, -1, -1, -1, -1, - 1678, 2768, -1, 244, 245, 246, 247, 248, 249, -1, - 1878, 252, 253, -1, -1, 1927, -1, 470, -1, -1, - -1, 371, 1934, -1, 477, 478, 479, 480, 481, 482, - 1898, 1709, 1710, -1, 1967, -1, -1, -1, -1, -1, - -1, 1953, 1975, 1976, 1977, 1978, 2768, 1980, 1981, 1058, - -1, -1, 1985, 1986, -1, -1, -1, -1, -1, 1927, - -1, -1, -1, -1, -1, 3, 1934, 5, -1, -1, - 473, 474, 475, -1, 477, 478, 479, 480, 481, 482, - -1, 2014, -1, -1, -1, 1953, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2030, -1, 2032, - -1, -1, -1, 2036, 2037, 2038, -1, 2040, -1, -1, - -1, -1, -1, -1, -1, 356, 357, -1, -1, -1, - 470, -1, -1, 2056, -1, 2058, -1, 477, 478, 479, - 480, 481, 482, -1, -1, -1, -1, -1, 2071, 2072, - 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2069, -1, -1, - -1, -1, 2095, -1, -1, -1, -1, -1, -1, 2102, - 108, 109, -1, 1182, -1, -1, -1, -1, -1, -1, - 2113, -1, -1, 2116, -1, 1863, 1864, -1, -1, -1, - 2123, -1, -1, -1, 1203, -1, -1, 1206, -1, 2132, - 1209, 2069, -1, -1, -1, -1, -1, 1216, 1217, 1218, + -1, 485, 380, 2073, 488, 489, 490, -1, -1, -1, + 171, -1, 1809, -1, -1, -1, -1, 1814, 1151, -1, + 2559, 0, 1819, 1820, 1821, 1822, 1823, 142, -1, -1, + -1, -1, 193, -1, -1, -1, -1, 1834, -1, -1, + -1, -1, -1, -1, -1, -1, 1843, -1, -1, -1, + 2589, 1475, -1, 2592, -1, 433, -1, 172, -1, -1, + -1, -1, 1859, 1860, -1, -1, 1490, -1, -1, 1247, + 899, 186, -1, -1, -1, -1, 191, -1, -1, -1, + -1, 242, -1, -1, -1, -1, -1, -1, -1, 250, + 1514, -1, 23, -1, -1, 2038, -1, -1, 29, -1, + 1897, 262, -1, 264, -1, 36, -1, -1, -1, -1, + -1, 226, 1151, 92, 1247, -1, -1, -1, -1, 2062, + -1, -1, -1, -1, 55, -1, 1151, -1, -1, -1, + -1, 2201, 293, -1, 2077, 2078, 2079, 2080, 2081, 2082, + 2083, 2084, 2085, 2086, -1, -1, -1, 474, 475, 476, + -1, 478, 479, 480, 481, 482, 483, -1, -1, -1, + -1, -1, -1, -1, -1, 144, 281, -1, -1, -1, + -1, -1, -1, -1, 105, -1, 1973, 338, 157, -1, + -1, -1, -1, 162, 1981, 1982, 1983, 1984, 167, 1986, + 1987, 1369, -1, -1, 1991, 1992, -1, 176, -1, 360, + 179, -1, -1, 134, -1, -1, -1, -1, 1247, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 380, + -1, 382, 1247, 2020, 385, -1, -1, -1, -1, 208, + -1, -1, -1, 2772, -1, -1, 1369, -1, -1, 2036, + 2310, 2038, -1, -1, -1, 2042, 2043, 2044, 227, 2046, + -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, + 1684, -1, 193, -1, -1, 2062, -1, 2064, -1, 2339, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 466, 467, 1236, -1, -1, - -1, -1, -1, 1242, 1243, 1244, 1245, -1, -1, -1, - -1, 1250, 1251, -1, 182, 183, 1255, -1, -1, -1, - 1259, -1, -1, 1262, 1263, 1264, 1265, 1266, 1267, 1268, - 1269, 1270, -1, -1, 1273, -1, -1, -1, -1, 1278, - -1, -1, 1281, -1, 1283, 2208, 1285, -1, 2211, 2212, - 2213, 2214, -1, 2195, -1, 2218, 2219, -1, 2221, -1, - -1, 2224, -1, -1, 1822, 2228, -1, -1, 1307, 2232, - -1, -1, -1, -1, -1, 2238, 244, 245, 246, 247, + 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, + -1, 1715, 1716, -1, -1, -1, -1, 276, -1, -1, + 279, -1, -1, -1, 2101, 2102, 285, -1, 552, 553, + -1, 242, -1, 2110, -1, 1493, -1, -1, -1, 250, + -1, -1, 1151, -1, -1, 2122, 487, -1, 2398, -1, + 1369, 262, 2129, -1, -1, -1, -1, -1, 2408, -1, + -1, 2138, -1, -1, 1369, -1, -1, 1525, -1, -1, + -1, -1, 283, -1, -1, -1, 471, -1, -1, -1, + 1493, 340, 293, 478, 479, 480, 481, 482, 483, -1, + -1, 615, 616, -1, -1, -1, -1, -1, -1, 8, + -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, + 108, 109, 1525, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 333, -1, -1, -1, 337, 338, -1, -1, + -1, -1, 41, -1, -1, -1, 395, 2214, 1247, 48, + 2217, 2218, 2219, 2220, -1, -1, -1, 2224, 2225, 360, + 2227, -1, -1, 2230, -1, 366, -1, 2234, -1, -1, + -1, 2238, -1, 422, 73, 1869, 1870, 2244, -1, 380, + -1, 430, -1, 2523, 1493, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 182, 183, 2263, 446, 1493, 448, + 449, 2268, -1, -1, -1, 2272, -1, -1, -1, 723, + -1, -1, -1, 2280, -1, -1, 1525, -1, -1, 2559, + -1, -1, -1, -1, -1, -1, 740, -1, -1, -1, + 1525, -1, 433, -1, -1, -1, 485, -1, 2305, 488, + 489, 490, -1, 142, -1, -1, -1, -1, -1, 2589, + -1, -1, 2592, -1, 768, -1, 244, 245, 246, 247, 248, 249, -1, -1, 252, 253, -1, -1, -1, -1, - -1, -1, -1, -1, 2257, 1334, 1335, 2195, -1, 2262, - -1, -1, -1, 2266, 1862, -1, -1, -1, -1, -1, - -1, 2274, -1, -1, -1, -1, -1, -1, -1, -1, - 1878, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2299, -1, -1, -1, - 1898, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 23, -1, -1, -1, -1, -1, 29, -1, - -1, 2069, 2304, -1, -1, 36, -1, -1, -1, 1927, - -1, -1, -1, -1, 1413, -1, 1934, 1416, 1417, -1, - 1419, -1, -1, -1, 55, -1, -1, -1, 356, 357, - -1, -1, 2334, -1, -1, 1953, -1, -1, -1, -1, - -1, -1, 2365, -1, -1, -1, 2304, 1446, 2371, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2382, - -1, -1, 2130, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 105, -1, 2334, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1486, 0, -1, - 2392, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2402, -1, -1, 134, 2427, 2428, -1, -1, 2431, -1, - -1, 2434, -1, 2436, -1, -1, -1, -1, 2441, -1, - -1, 2444, -1, 2446, -1, -1, 2449, 1526, -1, -1, - -1, -1, 1531, -1, 2392, -1, -1, -1, 466, 467, - 2463, -1, -1, -1, 2402, 804, -1, -1, -1, -1, - -1, 2069, -1, -1, -1, -1, -1, -1, -1, -1, - 2483, 2484, 193, -1, -1, -1, -1, -1, -1, 2492, - -1, -1, -1, -1, 1573, -1, -1, -1, -1, -1, - 92, -1, -1, -1, 843, -1, -1, -1, -1, -1, - 1589, -1, 1591, 1592, -1, 2518, 2519, -1, -1, -1, - 1599, -1, -1, 1602, -1, 2528, -1, -1, 2531, -1, - -1, 242, -1, -1, -1, 2517, -1, -1, -1, 250, - 2543, -1, -1, 2546, -1, 2293, -1, -1, -1, -1, - 2298, 262, 144, -1, -1, -1, -1, 1636, -1, -1, - 1639, -1, 1641, 2566, -1, 157, -1, -1, -1, -1, - 162, 2553, 283, -1, -1, 167, 2579, -1, -1, 2517, - -1, 2584, 293, -1, 176, -1, -1, 179, -1, -1, - 2593, -1, 2340, 2341, 2597, -1, -1, 2195, -1, -1, - -1, 2583, -1, 2606, 2586, -1, -1, -1, -1, -1, - -1, 950, -1, -1, -1, 2553, 208, -1, 957, -1, - -1, -1, 333, 1702, -1, 2628, 337, 338, -1, -1, - -1, -1, -1, -1, -1, 227, 2639, -1, 1717, -1, - -1, -1, -1, -1, -1, 2583, -1, -1, 2586, 360, - -1, -1, -1, -1, -1, 366, 1735, -1, -1, -1, - -1, -1, -1, -1, 2667, -1, -1, -1, -1, 380, - -1, -1, -1, 2676, -1, -1, -1, 2680, -1, -1, - -1, 2684, -1, -1, 276, -1, -1, 279, -1, -1, - -1, -1, -1, 285, -1, -1, -1, 2700, 2701, 2702, - 2703, -1, -1, -1, -1, -1, 2304, -1, -1, -1, - -1, -1, -1, -1, 1793, -1, -1, -1, -1, -1, - -1, 432, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 23, -1, -1, -1, 2334, -1, 29, -1, - -1, 2744, -1, -1, -1, 36, -1, -1, 340, -1, - 2753, -1, 2755, -1, -1, -1, -1, -1, 2506, 2507, - -1, 2764, -1, -1, 55, -1, -1, -1, -1, 2517, - -1, -1, -1, -1, -1, 2778, -1, -1, -1, -1, - -1, 2784, -1, -1, -1, -1, 2768, -1, -1, -1, - -1, -1, -1, -1, 2392, -1, 1875, -1, -1, 2802, - -1, -1, 394, -1, 2402, -1, 1885, -1, -1, -1, - 1889, -1, -1, 1892, 105, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 421, - 2768, -1, -1, -1, -1, -1, -1, 429, -1, 1918, - 1919, 1180, -1, 134, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 445, -1, 447, 448, -1, -1, -1, - -1, -1, 1941, 1202, -1, 1944, -1, 1946, 1207, -1, - -1, -1, -1, -1, -1, 1954, -1, -1, -1, -1, - 1219, 1220, 1221, 1962, 1963, -1, 1225, -1, -1, -1, - -1, -1, 484, -1, -1, 487, 488, 489, -1, -1, - -1, -1, 193, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1991, -1, -1, -1, -1, -1, -1, 2517, - -1, 2000, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2016, -1, -1, - -1, 1280, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 242, -1, 8, -1, 2553, 11, -1, 0, 250, - -1, 16, 17, 18, -1, -1, -1, -1, -1, -1, - -1, 262, -1, -1, -1, -1, -1, 19, 33, -1, - -1, -1, 1321, -1, -1, 2583, 41, 29, 2586, 31, - 32, -1, 283, 48, 1333, 3, -1, -1, -1, 1338, - 8, -1, 293, 11, -1, 47, -1, -1, 16, 17, - 18, -1, -1, -1, 56, -1, -1, -1, 73, -1, - 2768, -1, -1, -1, -1, 33, 68, -1, 36, -1, - -1, -1, -1, 41, -1, -1, -1, 79, -1, -1, - 48, -1, 333, -1, -1, -1, 337, 338, 90, -1, - 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 73, -1, 2146, 110, 360, - -1, -1, -1, -1, -1, 366, -1, -1, -1, -1, - -1, -1, 124, -1, -1, -1, -1, -1, -1, 380, - -1, -1, 134, -1, -1, -1, -1, -1, 140, -1, - -1, -1, -1, -1, -1, -1, 148, -1, 150, 151, - 2189, 2190, -1, -1, -1, 2194, -1, 172, -1, -1, - 2199, 163, -1, 2202, 2203, -1, -1, -1, 2207, -1, - -1, 186, -1, -1, -1, -1, 191, -1, -1, -1, - -1, 432, -1, -1, -1, -1, -1, -1, 190, -1, - -1, -1, -1, -1, -1, -1, -1, 212, 213, -1, - -1, -1, -1, -1, 172, -1, -1, -1, -1, -1, - 2768, 226, -1, -1, 2253, -1, -1, -1, 186, -1, - -1, -1, -1, 191, -1, -1, -1, 229, -1, -1, - 1529, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 212, 213, -1, -1, -1, 264, - -1, -1, 267, 1552, -1, -1, 2295, -1, 226, -1, - -1, -1, -1, -1, -1, -1, 281, -1, -1, 284, - 1569, -1, 1571, 1572, -1, 1574, -1, 1576, -1, -1, - -1, -1, 1581, -1, -1, -1, -1, -1, -1, 1588, - -1, -1, -1, -1, 1593, -1, 264, 1596, -1, 267, - -1, -1, -1, -1, 306, 1604, -1, 309, -1, 1608, - 1609, 1610, 1611, 281, -1, -1, 284, -1, 1617, 1618, - -1, 1620, 1621, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1632, -1, 337, 1635, -1, -1, -1, - -1, -1, -1, 345, 1643, 1644, 1645, 1646, 1647, 1648, - 1649, 1650, 1651, 1652, -1, -1, 371, 359, -1, -1, - -1, 1660, -1, -1, 366, 1664, -1, -1, 370, -1, - -1, -1, 2411, 2412, -1, -1, 2415, -1, 380, -1, - -1, -1, -1, -1, -1, -1, 1685, -1, -1, -1, - -1, -1, 394, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 371, -1, -1, -1, -1, -1, -1, - -1, -1, 2451, 2452, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2465, -1, 430, -1, - -1, -1, -1, 435, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 448, -1, -1, -1, - -1, -1, -1, -1, -1, 470, -1, -1, 473, 474, - 475, -1, 477, 478, 479, 480, 481, 482, 8, -1, - 472, 11, -1, -1, -1, 490, 16, 17, 18, -1, - -1, -1, -1, -1, 486, -1, -1, 489, -1, -1, - -1, -1, -1, 33, -1, -1, -1, 1796, 1797, 1798, - -1, 41, 470, -1, -1, 473, 474, 475, 48, 477, - 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, - -1, 8, -1, -1, 11, -1, -1, -1, -1, 16, - 17, 18, 1831, 73, -1, -1, 2575, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 33, -1, 2587, -1, - -1, -1, -1, -1, 41, -1, -1, -1, -1, 2598, - -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2613, 1874, -1, -1, -1, -1, - -1, 1880, -1, -1, -1, -1, 73, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1895, 1896, 1897, -1, - 1899, 1900, 1901, 1902, -1, -1, 1905, 1906, 1907, 1908, - 1909, 1910, 1911, 1912, 1913, 1914, 1915, -1, -1, -1, + 1369, -1, -1, 172, 788, 789, 790, 2490, -1, 793, + -1, -1, -1, -1, -1, -1, -1, 186, -1, -1, + -1, -1, 191, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 816, -1, 2371, -1, -1, -1, -1, 2376, + -1, 2524, 2525, 2380, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 226, 2541, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 172, -1, -1, -1, -1, 1936, -1, 1938, - -1, -1, -1, 1942, 1943, -1, 186, -1, -1, -1, - 2689, 191, -1, -1, -1, -1, -1, 1956, 1957, 1958, - 1959, -1, 1961, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 212, 213, -1, -1, -1, -1, -1, -1, - -1, 2720, -1, -1, -1, 172, 226, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 186, - 2739, 2740, -1, -1, 191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 264, 212, 213, 267, -1, -1, - -1, -1, -1, -1, 2033, -1, -1, -1, -1, 226, - -1, 281, -1, -1, 284, -1, 8, 2786, -1, 11, - -1, -1, -1, -1, 16, 17, 18, -1, -1, -1, + -1, -1, -1, 867, -1, -1, -1, 871, 872, -1, + -1, -1, -1, -1, -1, -1, 2433, 2434, 356, 357, + 2437, -1, -1, 2440, -1, 2442, 1824, -1, -1, 2073, + 2447, -1, 281, 2450, -1, 2452, -1, -1, 2455, -1, + 2603, -1, -1, -1, 1493, -1, -1, -1, -1, -1, + -1, -1, 2469, -1, -1, -1, -1, -1, -1, -1, + 924, -1, -1, -1, -1, -1, -1, 931, -1, -1, + 1868, 1824, 2489, 2490, -1, -1, 1525, -1, -1, -1, + -1, 2498, 2772, -1, -1, -1, 1884, -1, 952, -1, + -1, -1, 2136, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1904, 2524, 2525, -1, + -1, -1, -1, -1, -1, 1868, -1, 2534, 2535, -1, + -1, 2538, 371, -1, 2541, -1, -1, -1, -1, 467, + 468, 1884, -1, -1, -1, 1933, -1, -1, -1, -1, + -1, -1, 1940, -1, -1, -1, -1, -1, -1, -1, + -1, 1904, -1, -1, -1, 2572, -1, -1, -1, -1, + -1, 1959, -1, -1, -1, 1824, -1, -1, 2585, -1, + -1, -1, -1, 2590, -1, -1, -1, -1, -1, 1824, + 1933, -1, 2599, -1, -1, -1, 2603, 1940, -1, -1, + -1, -1, -1, -1, -1, 2612, -1, -1, -1, -1, + -1, -1, 1066, -1, -1, -1, 1959, -1, -1, 1868, + -1, -1, -1, -1, -1, -1, -1, 2634, -1, -1, + -1, -1, 471, 1868, -1, 1884, -1, -1, 2645, 478, + 479, 480, 481, 482, 483, -1, -1, -1, 8, 1884, + -1, 11, -1, -1, -1, 1904, 16, 17, 18, -1, + -1, -1, -1, -1, -1, 2299, 2673, -1, -1, 1904, + 2304, -1, -1, 33, -1, 2682, -1, -1, -1, 2686, + -1, 41, -1, 2690, 1933, 2073, -1, -1, 48, -1, + -1, 1940, -1, -1, -1, -1, -1, -1, 1933, 2706, + 2707, 2708, 2709, -1, -1, 1940, -1, -1, -1, -1, + 1959, 2345, 2346, 73, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1959, -1, -1, -1, -1, -1, + 2073, -1, -1, -1, 1188, -1, -1, -1, -1, -1, + -1, -1, -1, 2750, -1, -1, -1, -1, -1, -1, + -1, -1, 2759, -1, 2761, 1209, -1, -1, 1212, -1, + -1, 1215, -1, 2770, -1, -1, -1, -1, 1222, 1223, + 1224, -1, -1, -1, -1, -1, -1, 2784, 2785, -1, + -1, -1, -1, -1, -1, 1824, -1, -1, 1242, -1, + -1, -1, -1, -1, 1248, 1249, 1250, 1251, -1, -1, + -1, 2808, 1256, 1257, -1, -1, -1, 1261, -1, -1, + -1, 1265, 172, 2201, 1268, 1269, 1270, 1271, 1272, 1273, + 1274, 1275, 1276, -1, 2073, 1279, 186, -1, -1, 1868, + 1284, 191, -1, 1287, -1, 1289, -1, 1291, 2073, -1, + -1, -1, -1, -1, -1, 1884, -1, -1, -1, -1, + -1, -1, 212, 213, -1, -1, -1, -1, 2201, 1313, + -1, -1, -1, -1, -1, 1904, 226, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2512, 2513, + -1, -1, -1, -1, -1, -1, -1, 1341, 1342, 2523, + -1, -1, -1, -1, 1933, -1, -1, -1, -1, -1, + -1, 1940, -1, -1, 264, -1, -1, 267, -1, -1, + -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + 1959, 281, 2310, -1, 284, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 29, -1, 31, 32, -1, + -1, 2339, 2201, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 47, -1, 1419, 2201, 2310, 1422, 1423, + -1, 1425, 56, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 68, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 79, 2339, -1, -1, -1, + -1, -1, 1456, -1, -1, -1, 90, -1, 92, -1, + 2398, 371, -1, -1, -1, -1, -1, -1, -1, -1, + 2408, -1, -1, -1, -1, -1, 110, -1, -1, -1, + -1, -1, -1, -1, 2073, -1, -1, -1, 1492, -1, + 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 134, -1, -1, -1, -1, 2398, 140, -1, -1, -1, + -1, 2310, -1, -1, 148, 2408, 150, 151, -1, -1, + 809, -1, -1, -1, -1, 2310, -1, -1, 1532, 163, + -1, -1, -1, 1537, -1, -1, -1, -1, -1, -1, + 2339, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 8, -1, -1, 11, 2339, -1, 190, -1, -1, -1, + 849, 471, -1, -1, 474, 475, 476, -1, 478, 479, + 480, 481, 482, 483, -1, 1579, -1, -1, -1, -1, + -1, 491, -1, 41, -1, 2523, -1, -1, 2772, -1, + 48, 1595, -1, 1597, 1598, 229, -1, -1, -1, 2398, + -1, 1605, -1, -1, 1608, -1, -1, -1, -1, 2408, + -1, -1, 2201, 2398, -1, 73, -1, -1, -1, -1, + 3, 2559, -1, 2408, -1, 8, -1, -1, 11, -1, + 2523, -1, -1, 16, 17, 18, -1, -1, 1642, -1, + -1, 1645, -1, 1647, -1, -1, -1, -1, -1, -1, + 33, 2589, -1, 36, 2592, -1, -1, -1, 41, -1, + -1, -1, -1, -1, -1, 48, 2559, 956, -1, -1, + -1, -1, 306, -1, 963, 309, -1, -1, -1, -1, + -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, + 73, -1, -1, -1, -1, -1, 2589, -1, -1, 2592, + -1, -1, -1, 337, 1708, -1, -1, -1, -1, -1, + -1, 345, -1, -1, 172, -1, -1, -1, -1, 1723, + -1, 2310, -1, -1, 2523, 359, -1, -1, 186, -1, + -1, -1, 366, 191, -1, -1, 370, 1741, 2523, -1, + -1, -1, -1, -1, -1, -1, 380, -1, -1, -1, + 2339, -1, -1, -1, -1, -1, -1, 391, -1, -1, + 2559, 395, -1, -1, -1, -1, -1, -1, 226, -1, + -1, -1, -1, -1, 2559, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, + 2589, -1, -1, 2592, -1, 1799, -1, 431, -1, -1, + -1, -1, 436, 186, 2589, -1, -1, 2592, 191, 2398, + -1, -1, -1, -1, -1, 449, -1, -1, -1, 2408, + -1, -1, -1, 281, -1, -1, -1, -1, -1, 212, + 213, -1, -1, -1, 2772, -1, -1, -1, -1, 473, + -1, -1, -1, 226, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 487, -1, -1, 490, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 33, -1, -1, -1, -1, -1, 264, -1, 41, - 267, -1, -1, -1, -1, -1, 48, -1, -1, -1, - -1, -1, -1, -1, 281, -1, -1, 284, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2848, - -1, 73, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1881, -1, 2772, + -1, 264, -1, -1, 267, -1, -1, 1891, -1, -1, + -1, 1895, -1, -1, 1898, -1, -1, 1186, 281, -1, + -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 371, -1, -1, -1, -1, -1, 1208, + 1924, 1925, -1, -1, 1213, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2523, -1, 1225, 1226, 1227, -1, + -1, -1, 1231, 1947, -1, -1, 1950, -1, 1952, -1, + -1, -1, 8, -1, -1, 11, 1960, -1, -1, -1, + 16, 17, 18, -1, 1968, 1969, -1, -1, 8, -1, + 2559, 11, -1, 2772, -1, -1, -1, 33, -1, -1, + -1, -1, -1, -1, -1, 41, -1, 2772, 371, -1, + -1, -1, 48, 1997, -1, -1, -1, 1286, -1, -1, + 2589, 41, 2006, 2592, -1, -1, -1, -1, 48, -1, + -1, -1, -1, 471, -1, -1, -1, 73, 2022, -1, + 478, 479, 480, 481, 482, 483, -1, -1, -1, -1, + -1, -1, -1, 73, -1, -1, -1, -1, -1, 1328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 371, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2147, -1, - -1, -1, 2151, 2152, -1, 2154, -1, -1, 2157, 2158, - 2159, 2160, -1, -1, -1, 2164, 2165, 2166, 2167, 2168, - 2169, 2170, 2171, 2172, 2173, 2174, 2175, -1, -1, -1, - -1, -1, -1, -1, 371, -1, -1, -1, -1, 2188, - -1, -1, 2191, -1, 2193, -1, -1, -1, 2197, -1, - -1, 2200, 2201, -1, -1, 2204, 2205, -1, -1, -1, - 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 186, -1, -1, -1, -1, 191, - 470, -1, -1, 473, 474, 475, -1, 477, 478, 479, - 480, 481, 482, -1, -1, -1, 2245, 487, -1, -1, - 212, 213, -1, 2252, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 226, -1, 2265, -1, -1, -1, + -1, 1340, -1, -1, -1, -1, 1345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 470, -1, -1, 473, 474, 475, -1, - 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, - 487, -1, 264, -1, -1, 267, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, - -1, -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 471, -1, + -1, 474, 475, 476, -1, 478, 479, 480, 481, 482, + 483, -1, 142, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 8, -1, -1, 11, 172, -1, -1, -1, + 16, 17, 18, -1, -1, -1, -1, -1, -1, -1, + 186, -1, 172, -1, -1, 191, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 41, 186, -1, 2152, -1, + -1, 191, 48, -1, -1, -1, 212, 213, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 226, -1, -1, -1, -1, -1, -1, 73, -1, -1, + -1, -1, -1, 2772, -1, -1, 226, -1, -1, -1, + -1, 2195, 2196, -1, -1, -1, 2200, -1, -1, -1, + -1, 2205, -1, -1, 2208, 2209, -1, -1, 264, 2213, + -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 281, -1, -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 281, -1, -1, -1, -1, 1535, -1, -1, -1, + -1, -1, -1, -1, -1, 2259, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1558, + -1, -1, -1, -1, -1, -1, 172, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1575, -1, 1577, 1578, + 186, 1580, -1, 1582, -1, 191, -1, 2301, 1587, -1, + -1, -1, -1, -1, -1, 1594, -1, -1, -1, -1, + 1599, -1, -1, 1602, -1, 371, 212, 213, -1, -1, + -1, 1610, -1, -1, -1, 1614, 1615, 1616, 1617, -1, + 226, 371, -1, -1, 1623, 1624, -1, 1626, 1627, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1638, + -1, -1, 1641, -1, -1, -1, -1, -1, -1, -1, + 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, + -1, 267, -1, -1, -1, -1, -1, 1666, -1, -1, + -1, 1670, -1, -1, -1, 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1691, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2417, 2418, 471, -1, 2421, 474, 475, + 476, -1, 478, 479, 480, 481, 482, 483, -1, -1, + -1, 471, 488, -1, -1, -1, -1, -1, 478, 479, + 480, 481, 482, 483, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2457, 2458, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2471, -1, -1, + -1, -1, -1, -1, -1, 371, -1, -1, 8, -1, + -1, 11, -1, -1, -1, -1, 16, 17, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, + -1, 41, -1, 1802, 1803, 1804, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2395, -1, -1, -1, - 2399, -1, -1, -1, -1, -1, 2405, 2406, 2407, 371, - -1, 2410, -1, -1, 2413, 2414, -1, -1, -1, 2418, + -1, 8, -1, -1, 11, -1, -1, -1, -1, 16, + 17, 18, -1, 73, -1, -1, -1, -1, -1, -1, + 1839, -1, -1, -1, -1, -1, 33, -1, -1, -1, + -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, + -1, 48, -1, -1, -1, 471, -1, 2581, 474, 475, + 476, -1, 478, 479, 480, 481, 482, 483, -1, 2593, + -1, 1880, -1, -1, -1, -1, 73, 1886, -1, -1, + 2604, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1901, 1902, 1903, 2619, 1905, 1906, 1907, 1908, + -1, -1, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, + 1919, 1920, 1921, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1942, -1, 1944, 186, -1, -1, 1948, + 1949, 191, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1962, 1963, 1964, 1965, -1, 1967, -1, + -1, -1, 212, 213, -1, -1, -1, -1, -1, -1, + -1, 2695, -1, -1, -1, 172, 226, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 186, + -1, -1, -1, -1, 191, 8, -1, -1, 11, -1, + -1, -1, 2726, 16, 17, 18, -1, -1, -1, -1, + -1, -1, -1, -1, 264, 212, 213, 267, -1, -1, + 33, 2745, 2746, -1, -1, -1, -1, -1, 41, 226, + 2039, 281, -1, -1, 284, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, + 73, 11, -1, -1, -1, -1, -1, 264, 2792, -1, + 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 281, -1, -1, 284, -1, -1, + -1, 41, -1, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 371, -1, 73, -1, -1, -1, -1, -1, -1, + 2854, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2153, -1, -1, -1, 2157, 2158, + -1, 2160, -1, -1, 2163, 2164, 2165, 2166, -1, 172, + -1, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, + 2179, 2180, 2181, 186, 371, -1, -1, -1, 191, -1, + -1, -1, -1, -1, -1, 2194, -1, -1, 2197, -1, + 2199, -1, 142, -1, 2203, -1, -1, 2206, 2207, 212, + 213, 2210, 2211, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 226, -1, -1, -1, -1, -1, -1, + -1, 471, 172, -1, 474, 475, 476, -1, 478, 479, + 480, 481, 482, 483, -1, -1, 186, -1, 488, -1, + -1, 191, 2251, -1, -1, -1, -1, -1, -1, 2258, + -1, 264, -1, -1, 267, -1, -1, -1, -1, -1, + -1, -1, 2271, -1, -1, -1, -1, -1, 281, -1, + -1, 284, -1, -1, 471, -1, 226, 474, 475, 476, + -1, 478, 479, 480, 481, 482, 483, -1, -1, -1, + -1, 488, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2485, -1, -1, -1, + -1, 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2503, -1, -1, -1, 470, -1, - -1, 473, 474, 475, -1, 477, 478, 479, 480, 481, - 482, -1, -1, -1, -1, 487, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2551, 2552, -1, -1, -1, 2556, 2557, 2558, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2401, -1, -1, -1, 2405, -1, -1, -1, + -1, -1, 2411, 2412, 2413, -1, -1, 2416, -1, -1, + 2419, 2420, -1, -1, -1, 2424, -1, -1, -1, -1, + -1, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2591, 2592, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2604, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2616, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 471, -1, + -1, 474, 475, 476, -1, 478, 479, 480, 481, 482, + 483, -1, -1, -1, -1, 488, -1, -1, -1, -1, + -1, -1, 2491, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2509, -1, -1, -1, -1, -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, 2661, -1, -1, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, -1, -1, -1, - 2679, 35, -1, -1, 38, 39, -1, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 2698, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 2712, 68, 69, 70, 71, 72, -1, - 74, -1, 76, 77, 78, 79, 80, 81, 82, 83, - 84, -1, 86, 87, 88, 89, 90, 91, -1, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, -1, - 124, 125, 126, 127, 128, 129, 2775, 131, 132, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 2789, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, -1, 158, 159, 160, 161, -1, 163, - -1, 165, 166, -1, 168, 169, 170, 171, 172, 173, - -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, -1, 192, 193, - 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, - 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, -1, -1, 223, - 224, 225, 226, -1, 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, -1, 277, 278, -1, -1, 281, 282, 283, - -1, -1, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, -1, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, 403, - 404, -1, -1, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, -1, -1, 423, - 424, 425, 426, 427, 428, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - -1, -1, 446, -1, -1, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, -1, -1, -1, - -1, -1, -1, 477, 478, 479, -1, -1, -1, -1, - 484, -1, 486, 487, -1, -1, -1, 491, -1, 493, - 494, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, - 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, - -1, -1, -1, 35, -1, -1, 38, 39, -1, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, -1, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - 72, -1, 74, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, - -1, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, - 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, - 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, - -1, 163, -1, 165, 166, -1, 168, 169, 170, 171, - 172, 173, -1, 175, -1, 177, 178, -1, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, -1, - 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, - 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, -1, - -1, 223, 224, 225, 226, -1, 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, -1, 277, 278, -1, -1, 281, - 282, 283, -1, -1, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, -1, 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, -1, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - -1, 403, 404, -1, -1, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, -1, - -1, 423, 424, 425, 426, 427, 428, -1, 430, 431, - 432, 433, 434, 435, 436, -1, 438, 439, 440, 441, - 442, 443, -1, -1, 446, -1, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, -1, - 472, -1, -1, -1, -1, 477, 478, -1, -1, -1, - -1, -1, 484, -1, 486, 487, -1, -1, -1, 491, - -1, 493, 494, 3, 4, 5, 6, 7, 8, 9, - 10, -1, -1, -1, -1, -1, -1, -1, -1, 19, - 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, - 30, -1, -1, -1, -1, 35, -1, -1, 38, 39, - -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, - 70, 71, 72, -1, 74, -1, 76, 77, 78, 79, - 80, 81, 82, 83, 84, -1, 86, 87, 88, 89, - 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, -1, 117, 118, 119, - 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, - -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, -1, 158, 159, - 160, 161, -1, 163, -1, 165, 166, -1, 168, 169, - 170, 171, 172, 173, -1, 175, -1, 177, 178, -1, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, - 200, 201, 202, 203, 204, 205, 206, 207, -1, 209, - -1, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, -1, -1, 223, 224, 225, 226, -1, 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, -1, 277, 278, -1, - -1, 281, 282, 283, -1, -1, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - -1, 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, -1, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, -1, 403, 404, -1, -1, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, -1, -1, 423, 424, 425, 426, 427, 428, -1, - 430, 431, 432, 433, 434, 435, 436, -1, 438, 439, - 440, 441, 442, 443, -1, -1, 446, -1, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, -1, 472, -1, -1, -1, -1, 477, 478, -1, - -1, -1, -1, -1, 484, -1, 486, -1, -1, -1, - -1, 491, -1, 493, 494, 3, 4, 5, 6, 7, - 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, - -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, - 28, 29, 30, -1, -1, -1, -1, 35, -1, -1, - 38, 39, -1, 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, -1, - 68, 69, 70, 71, 72, -1, 74, -1, 76, 77, - 78, 79, 80, 81, 82, 83, 84, -1, 86, 87, - 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, - 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, -1, - 158, 159, 160, 161, -1, 163, -1, 165, 166, 167, - 168, 169, 170, 171, 172, 173, -1, 175, -1, 177, - 178, -1, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, - -1, 199, 200, 201, 202, 203, 204, 205, 206, 207, - -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, -1, 222, 223, 224, 225, 226, -1, - 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, -1, 277, - 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, -1, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, 403, 404, -1, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, -1, -1, 423, 424, 425, 426, 427, - 428, -1, 430, 431, 432, 433, 434, 435, 436, -1, - 438, 439, 440, 441, 442, 443, -1, -1, 446, -1, - -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, -1, -1, -1, -1, -1, -1, 477, - 478, -1, -1, -1, -1, -1, 484, -1, 486, -1, - -1, -1, -1, 491, -1, 493, 494, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, - 26, -1, 28, 29, 30, -1, -1, -1, -1, 35, - -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, 72, -1, 74, -1, - 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, - 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, - 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, - 166, -1, 168, 169, 170, 171, 172, 173, -1, 175, - -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, -1, 192, 193, 194, 195, - 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, - 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, -1, -1, 223, 224, 225, - 226, -1, 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, - -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, -1, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, -1, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, -1, - -1, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, -1, -1, 423, 424, 425, - 426, 427, 428, -1, 430, 431, 432, 433, 434, 435, - 436, -1, 438, 439, 440, 441, 442, 443, -1, -1, - 446, -1, -1, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, -1, -1, -1, -1, -1, - -1, 477, 478, 479, -1, -1, -1, -1, 484, -1, - 486, -1, -1, -1, -1, 491, -1, 493, 494, 3, - 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, - -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, -1, -1, -1, - -1, 35, -1, -1, 38, 39, -1, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, -1, 68, 69, 70, 71, 72, -1, - 74, -1, 76, 77, 78, 79, 80, 81, 82, 83, - 84, -1, 86, 87, 88, 89, 90, 91, -1, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, -1, - 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, -1, 158, 159, 160, 161, -1, 163, - -1, 165, 166, -1, 168, 169, 170, 171, 172, 173, - -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, -1, 192, 193, - 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, - 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, -1, -1, 223, - 224, 225, 226, -1, 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, -1, 277, 278, -1, -1, 281, 282, 283, - -1, -1, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, -1, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, 403, - 404, -1, -1, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, -1, -1, 423, - 424, 425, 426, 427, 428, -1, 430, 431, 432, 433, - 434, 435, 436, -1, 438, 439, 440, 441, 442, 443, - -1, -1, 446, -1, -1, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, -1, -1, -1, - -1, -1, -1, 477, 478, -1, -1, -1, -1, -1, - 484, -1, 486, -1, -1, -1, -1, 491, -1, 493, - 494, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, - 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, - -1, -1, -1, 35, -1, -1, 38, 39, -1, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, -1, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - 72, -1, 74, -1, 76, 77, 78, 79, 80, 81, - 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, - -1, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, - 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, - 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, - -1, 163, -1, 165, 166, -1, 168, 169, 170, 171, - 172, 173, -1, 175, -1, 177, 178, -1, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, -1, - 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, - 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, -1, - -1, 223, 224, 225, 226, -1, 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, -1, 277, 278, -1, -1, 281, - 282, 283, -1, -1, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, 403, 404, -1, -1, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, -1, - -1, 423, 424, 425, 426, 427, 428, -1, 430, 431, - 432, 433, 434, 435, 436, -1, 438, 439, 440, 441, - 442, 443, -1, -1, 446, -1, -1, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, -1, - -1, -1, -1, -1, -1, 477, 478, -1, -1, -1, - -1, -1, 484, -1, 486, 487, -1, -1, -1, 491, - -1, 493, 494, 3, 4, 5, 6, 7, 8, 9, - 10, -1, -1, -1, -1, -1, -1, -1, -1, 19, - 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, - 30, -1, -1, -1, -1, 35, -1, -1, 38, 39, - -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, - 70, 71, 72, -1, 74, -1, 76, 77, 78, 79, - 80, 81, 82, 83, 84, -1, 86, 87, 88, 89, - 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, -1, 117, 118, 119, - 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, - -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, -1, 158, 159, - 160, 161, -1, 163, -1, 165, 166, -1, 168, 169, - 170, 171, 172, 173, -1, 175, -1, 177, 178, -1, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, - 200, 201, 202, 203, 204, 205, 206, 207, -1, 209, - -1, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, -1, -1, 223, 224, 225, 226, -1, 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, -1, 277, 278, -1, - -1, 281, 282, 283, -1, -1, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - -1, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, 403, 404, -1, -1, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, -1, -1, 423, 424, 425, 426, 427, 428, -1, - 430, 431, 432, 433, 434, 435, 436, -1, 438, 439, - 440, 441, 442, 443, -1, -1, 446, -1, -1, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, -1, -1, -1, -1, -1, -1, 477, 478, -1, - -1, -1, -1, -1, 484, -1, 486, 487, -1, -1, - -1, 491, -1, 493, 494, 3, 4, 5, 6, 7, - 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, - -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, - 28, 29, 30, -1, -1, -1, -1, 35, -1, -1, + -1, 471, -1, -1, -1, -1, -1, -1, 478, 479, + 480, 481, 482, 483, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2557, 2558, + -1, -1, -1, 2562, 2563, 2564, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2597, 2598, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2610, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2622, -1, -1, -1, -1, -1, -1, + -1, -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, 2667, -1, + -1, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, -1, -1, -1, 2685, 35, -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, + 48, 49, 50, 51, 52, 2704, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 2718, 68, 69, 70, 71, 72, -1, 74, -1, 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, - 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + 128, 129, 2781, 131, 132, 133, 134, 135, -1, 137, + 138, 139, -1, 141, 142, 143, 2795, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, 166, -1, 168, 169, 170, 171, 172, 173, -1, 175, -1, 177, @@ -217007,116 +215458,67 @@ static const yytype_int16 yycheck[] = 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, 403, 404, -1, -1, 407, + 388, 389, 390, 391, -1, 393, 394, -1, 396, 397, + 398, 399, 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, -1, -1, 423, 424, 425, 426, 427, - 428, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, -1, -1, 446, -1, - -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 418, 419, 420, 421, -1, -1, 424, 425, 426, 427, + 428, 429, -1, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, + -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, -1, -1, -1, -1, -1, -1, 477, - 478, -1, -1, -1, -1, -1, 484, -1, 486, -1, - -1, -1, -1, 491, -1, 493, 494, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, - 26, -1, 28, 29, 30, -1, -1, -1, -1, 35, - -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, 72, -1, 74, -1, - 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, - 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, - 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, - 166, 167, 168, 169, 170, 171, 172, 173, -1, 175, - -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, -1, 192, 193, 194, 195, - 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, - 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, -1, -1, 223, 224, 225, - 226, -1, 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, - -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, -1, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, -1, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, -1, - -1, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, -1, -1, 423, 424, 425, - 426, 427, 428, -1, 430, 431, 432, 433, 434, 435, - 436, -1, 438, 439, 440, 441, 442, 443, -1, -1, - 446, -1, -1, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, -1, -1, -1, -1, -1, - -1, 477, 478, -1, -1, -1, -1, -1, 484, -1, - 486, -1, -1, -1, -1, 491, -1, 493, 494, 3, - 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, - -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, - 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, - -1, 35, -1, -1, 38, 39, -1, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, -1, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, -1, 68, 69, 70, 71, 72, -1, - 74, -1, 76, 77, 78, 79, 80, 81, 82, 83, - 84, -1, 86, 87, 88, 89, 90, 91, -1, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, -1, - 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, -1, 158, 159, 160, 161, -1, 163, - -1, 165, 166, -1, 168, 169, 170, 171, 172, 173, - -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, -1, 192, 193, - 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, - 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, -1, -1, 223, - 224, 225, 226, -1, 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, -1, 277, 278, -1, -1, 281, 282, 283, - -1, -1, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, -1, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, 403, - 404, -1, -1, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, -1, -1, 423, - 424, 425, 426, 427, 428, -1, 430, 431, 432, 433, - 434, 435, 436, -1, 438, 439, 440, 441, 442, 443, - -1, -1, 446, -1, -1, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, -1, -1, -1, - -1, -1, -1, 477, 478, -1, -1, -1, -1, -1, - 484, -1, 486, -1, -1, -1, -1, 491, -1, 493, - 494, 3, 4, 5, 6, 7, 8, 9, 10, -1, + 468, 469, 470, 471, -1, -1, -1, -1, -1, -1, + 478, 479, 480, -1, -1, -1, -1, 485, -1, 487, + 488, -1, -1, -1, 492, -1, 494, 495, 3, 4, + 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, + -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, + 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, + 35, -1, -1, 38, 39, -1, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, -1, 68, 69, 70, 71, 72, -1, 74, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 84, + -1, 86, 87, 88, 89, 90, 91, -1, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, + 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, -1, 158, 159, 160, 161, -1, 163, -1, + 165, 166, -1, 168, 169, 170, 171, 172, 173, -1, + 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, -1, 192, 193, 194, + 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, + 205, 206, 207, -1, 209, -1, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, -1, -1, 223, 224, + 225, 226, -1, 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, -1, 277, 278, -1, -1, 281, 282, 283, -1, + -1, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, -1, 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, -1, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, -1, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, -1, 404, + 405, -1, -1, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, -1, -1, 424, + 425, 426, 427, 428, 429, -1, 431, 432, 433, 434, + 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, + -1, -1, 447, -1, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, -1, 473, -1, + -1, -1, -1, 478, 479, -1, -1, -1, -1, -1, + 485, -1, 487, 488, -1, -1, -1, 492, -1, 494, + 495, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, 35, -1, -1, 38, 39, -1, 41, @@ -217151,21 +215553,169 @@ static const yytype_int16 yycheck[] = 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, 403, 404, -1, -1, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, -1, - -1, 423, 424, 425, 426, 427, 428, -1, 430, 431, - 432, 433, 434, 435, 436, -1, 438, 439, 440, 441, - 442, 443, -1, -1, 446, -1, -1, 449, 450, 451, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, 429, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, 440, 441, + 442, 443, 444, -1, -1, 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, -1, - -1, -1, -1, -1, -1, 477, 478, -1, -1, -1, - -1, -1, 484, -1, 486, -1, -1, -1, -1, 491, - -1, 493, 494, 3, 4, 5, 6, 7, 8, 9, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + -1, 473, -1, -1, -1, -1, 478, 479, -1, -1, + -1, -1, -1, 485, -1, 487, -1, -1, -1, -1, + 492, -1, 494, 495, 3, 4, 5, 6, 7, 8, + 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, + 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, + 29, 30, -1, -1, -1, -1, 35, -1, -1, 38, + 39, -1, 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, -1, 68, + 69, 70, 71, 72, -1, 74, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 84, -1, 86, 87, 88, + 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, 118, + 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, + -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, -1, 158, + 159, 160, 161, -1, 163, -1, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, 175, -1, 177, 178, + -1, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, + 199, 200, 201, 202, 203, 204, 205, 206, 207, -1, + 209, -1, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, -1, 222, 223, 224, 225, 226, -1, 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, -1, 277, 278, + -1, -1, 281, 282, 283, -1, -1, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, -1, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, -1, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, 404, 405, -1, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, 424, 425, 426, 427, 428, + 429, -1, 431, 432, 433, 434, 435, 436, 437, -1, + 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, + -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, -1, -1, -1, -1, -1, -1, 478, + 479, -1, -1, -1, -1, -1, 485, -1, 487, -1, + -1, -1, -1, 492, -1, 494, 495, 3, 4, 5, + 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, + -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, + 26, -1, 28, 29, 30, -1, -1, -1, -1, 35, + -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, -1, 68, 69, 70, 71, 72, -1, 74, -1, + 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, + 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, + 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, + -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, + 166, -1, 168, 169, 170, 171, 172, 173, -1, 175, + -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, -1, 192, 193, 194, 195, + 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, -1, -1, 223, 224, 225, + 226, -1, 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, + -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, -1, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, -1, 393, 394, -1, + 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, + -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, 424, 425, + 426, 427, 428, 429, -1, 431, 432, 433, 434, 435, + 436, 437, -1, 439, 440, 441, 442, 443, 444, -1, + -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, -1, -1, -1, -1, + -1, -1, 478, 479, 480, -1, -1, -1, -1, 485, + -1, 487, -1, -1, -1, -1, 492, -1, 494, 495, + 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, + -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, -1, -1, + -1, -1, 35, -1, -1, 38, 39, -1, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, + -1, 74, -1, 76, 77, 78, 79, 80, 81, 82, + 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, + -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, -1, 158, 159, 160, 161, -1, + 163, -1, 165, 166, -1, 168, 169, 170, 171, 172, + 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, -1, 192, + 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, + 203, 204, 205, 206, 207, -1, 209, -1, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, -1, -1, + 223, 224, 225, 226, -1, 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, -1, 277, 278, -1, -1, 281, 282, + 283, -1, -1, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, -1, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, 404, 405, -1, -1, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, 424, 425, 426, 427, 428, 429, -1, 431, 432, + 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, + 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, + -1, -1, -1, -1, -1, 478, 479, -1, -1, -1, + -1, -1, 485, -1, 487, -1, -1, -1, -1, 492, + -1, 494, 495, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, 35, -1, -1, 38, 39, @@ -217204,17 +215754,165 @@ static const yytype_int16 yycheck[] = 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, 403, 404, -1, -1, 407, 408, 409, + 390, 391, -1, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, -1, -1, 423, 424, 425, 426, 427, 428, -1, - 430, 431, 432, 433, 434, 435, 436, -1, 438, 439, - 440, 441, 442, 443, -1, -1, 446, -1, -1, 449, + 420, 421, -1, -1, 424, 425, 426, 427, 428, 429, + -1, 431, 432, 433, 434, 435, 436, 437, -1, 439, + 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, -1, -1, -1, -1, -1, -1, 477, 478, -1, - -1, -1, -1, -1, 484, -1, 486, -1, -1, -1, - -1, 491, -1, 493, 494, 3, 4, 5, 6, 7, + 470, 471, -1, -1, -1, -1, -1, -1, 478, 479, + -1, -1, -1, -1, -1, 485, -1, 487, 488, -1, + -1, -1, 492, -1, 494, 495, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, + -1, 28, 29, 30, -1, -1, -1, -1, 35, -1, + -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, 68, 69, 70, 71, 72, -1, 74, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 84, -1, 86, + 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, + 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + -1, 158, 159, 160, 161, -1, 163, -1, 165, 166, + -1, 168, 169, 170, 171, 172, 173, -1, 175, -1, + 177, 178, -1, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, + 197, -1, 199, 200, 201, 202, 203, 204, 205, 206, + 207, -1, 209, -1, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, -1, -1, 223, 224, 225, 226, + -1, 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, -1, + 277, 278, -1, -1, 281, 282, 283, -1, -1, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, -1, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, -1, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, + -1, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, 424, 425, 426, + 427, 428, 429, -1, 431, 432, 433, 434, 435, 436, + 437, -1, 439, 440, 441, 442, 443, 444, -1, -1, + 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, -1, -1, -1, -1, -1, + -1, 478, 479, -1, -1, -1, -1, -1, 485, -1, + 487, 488, -1, -1, -1, 492, -1, 494, 495, 3, + 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, + -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, + 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, + -1, 35, -1, -1, 38, 39, -1, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, -1, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, -1, 68, 69, 70, 71, 72, -1, + 74, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 84, -1, 86, 87, 88, 89, 90, 91, -1, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, 118, 119, 120, 121, 122, -1, + 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, + 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, -1, 163, + -1, 165, 166, -1, 168, 169, 170, 171, 172, 173, + -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, -1, 192, 193, + 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, -1, -1, 223, + 224, 225, 226, -1, 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, -1, 277, 278, -1, -1, 281, 282, 283, + -1, -1, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, -1, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, + 394, -1, 396, 397, 398, 399, 400, 401, 402, -1, + 404, 405, -1, -1, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + 424, 425, 426, 427, 428, 429, -1, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, + -1, -1, -1, -1, 478, 479, -1, -1, -1, -1, + -1, 485, -1, 487, -1, -1, -1, -1, 492, -1, + 494, 495, 3, 4, 5, 6, 7, 8, 9, 10, + -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, + 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, + -1, -1, -1, -1, 35, -1, -1, 38, 39, -1, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, -1, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, + 71, 72, -1, 74, -1, 76, 77, 78, 79, 80, + 81, 82, 83, 84, -1, 86, 87, 88, 89, 90, + 91, -1, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, 118, 119, 120, + 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, + 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, + 141, 142, 143, -1, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, -1, 158, 159, 160, + 161, -1, 163, -1, 165, 166, 167, 168, 169, 170, + 171, 172, 173, -1, 175, -1, 177, 178, -1, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + -1, 192, 193, 194, 195, 196, 197, -1, 199, 200, + 201, 202, 203, 204, 205, 206, 207, -1, 209, -1, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + -1, -1, 223, 224, 225, 226, -1, 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, -1, 277, 278, -1, -1, + 281, 282, 283, -1, -1, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, + 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, -1, 393, 394, -1, 396, 397, 398, 399, 400, + 401, 402, -1, 404, 405, -1, -1, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, -1, -1, 424, 425, 426, 427, 428, 429, -1, + 431, 432, 433, 434, 435, 436, 437, -1, 439, 440, + 441, 442, 443, 444, -1, -1, 447, -1, -1, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, -1, -1, -1, -1, -1, -1, 478, 479, -1, + -1, -1, -1, -1, 485, -1, 487, -1, -1, -1, + -1, 492, -1, 494, 495, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, 35, -1, -1, @@ -217253,17 +215951,165 @@ static const yytype_int16 yycheck[] = 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, 403, 404, -1, -1, 407, + 388, 389, 390, 391, -1, 393, 394, -1, 396, 397, + 398, 399, 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, -1, -1, 423, 424, 425, 426, 427, - 428, -1, 430, 431, 432, 433, 434, 435, 436, -1, - 438, 439, 440, 441, 442, 443, -1, -1, 446, -1, - -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 418, 419, 420, 421, -1, -1, 424, 425, 426, 427, + 428, 429, -1, 431, 432, 433, 434, 435, 436, 437, + -1, 439, 440, 441, 442, 443, 444, -1, -1, 447, + -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, -1, -1, -1, -1, -1, -1, 477, - 478, -1, -1, -1, -1, -1, 484, -1, 486, -1, - -1, -1, -1, 491, -1, 493, 494, 3, 4, 5, + 468, 469, 470, 471, -1, -1, -1, -1, -1, -1, + 478, 479, -1, -1, -1, -1, -1, 485, -1, 487, + -1, -1, -1, -1, 492, -1, 494, 495, 3, 4, + 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, + -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, + 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, + 35, -1, -1, 38, 39, -1, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, -1, 68, 69, 70, 71, 72, -1, 74, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 84, + -1, 86, 87, 88, 89, 90, 91, -1, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, + 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, -1, 158, 159, 160, 161, -1, 163, -1, + 165, 166, -1, 168, 169, 170, 171, 172, 173, -1, + 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, -1, 192, 193, 194, + 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, + 205, 206, 207, -1, 209, -1, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, -1, -1, 223, 224, + 225, 226, -1, 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, -1, 277, 278, -1, -1, 281, 282, 283, -1, + -1, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, -1, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, -1, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, 404, + 405, -1, -1, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, -1, -1, 424, + 425, 426, 427, 428, 429, -1, 431, 432, 433, 434, + 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, + -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, -1, -1, -1, + -1, -1, -1, 478, 479, -1, -1, -1, -1, -1, + 485, -1, 487, -1, -1, -1, -1, 492, -1, 494, + 495, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, + 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, + -1, -1, -1, 35, -1, -1, 38, 39, -1, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, -1, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 72, -1, 74, -1, 76, 77, 78, 79, 80, 81, + 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, + -1, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, + 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, + 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + -1, 163, -1, 165, 166, -1, 168, 169, 170, 171, + 172, 173, -1, 175, -1, 177, 178, -1, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, -1, + 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, -1, + -1, 223, 224, 225, 226, -1, 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, -1, 277, 278, -1, -1, 281, + 282, 283, -1, -1, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, 429, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, 440, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + -1, -1, -1, -1, -1, -1, 478, 479, -1, -1, + -1, -1, -1, 485, -1, 487, -1, -1, -1, -1, + 492, -1, 494, 495, 3, 4, 5, 6, 7, 8, + 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, + 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, + 29, 30, -1, -1, -1, -1, 35, -1, -1, 38, + 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, -1, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, -1, 68, + 69, 70, 71, 72, -1, 74, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 84, -1, 86, 87, 88, + 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, 118, + 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, + -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, + 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, -1, 158, + 159, 160, 161, -1, 163, -1, 165, 166, -1, 168, + 169, 170, 171, 172, 173, -1, 175, -1, 177, 178, + -1, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, + 199, 200, 201, 202, 203, 204, 205, 206, 207, -1, + 209, -1, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, -1, -1, 223, 224, 225, 226, -1, 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, -1, 277, 278, + -1, -1, 281, 282, 283, -1, -1, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, -1, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, -1, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, 404, 405, -1, -1, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, 424, 425, 426, 427, 428, + 429, -1, 431, 432, 433, 434, 435, 436, 437, -1, + 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, + -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, -1, -1, -1, -1, -1, -1, 478, + 479, -1, -1, -1, -1, -1, 485, -1, 487, -1, + -1, -1, -1, 492, -1, 494, 495, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, 35, @@ -217302,21 +216148,169 @@ static const yytype_int16 yycheck[] = 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, -1, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, -1, - -1, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, -1, -1, 423, 424, 425, - 426, 427, 428, -1, 430, 431, 432, 433, 434, 435, - 436, -1, 438, 439, 440, 441, 442, 443, -1, -1, - 446, -1, -1, 449, 450, 451, 452, 453, 454, 455, + 386, 387, 388, 389, 390, 391, -1, 393, 394, -1, + 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, + -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, 424, 425, + 426, 427, 428, 429, -1, 431, 432, 433, 434, 435, + 436, 437, -1, 439, 440, 441, 442, 443, 444, -1, + -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, -1, -1, -1, -1, -1, - -1, 477, 478, -1, -1, -1, -1, -1, 484, -1, - 486, -1, -1, -1, -1, 491, -1, 493, 494, 3, + 466, 467, 468, 469, 470, 471, -1, -1, -1, -1, + -1, -1, 478, 479, -1, -1, -1, -1, -1, 485, + -1, 487, -1, -1, -1, -1, 492, -1, 494, 495, + 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, + -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, + 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, + -1, -1, 35, -1, -1, 38, 39, -1, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, + -1, 74, -1, 76, 77, 78, 79, 80, 81, 82, + 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, + -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, -1, 158, 159, 160, 161, -1, + 163, -1, 165, 166, -1, 168, 169, 170, 171, 172, + 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, -1, 192, + 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, + 203, 204, 205, 206, 207, -1, 209, -1, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, -1, -1, + 223, 224, 225, 226, -1, 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, -1, 277, 278, -1, -1, 281, 282, + 283, -1, -1, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, -1, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, 404, 405, -1, -1, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, 424, 425, 426, 427, 428, 429, -1, 431, 432, + 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, + 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, + -1, -1, -1, -1, -1, 478, 479, -1, -1, -1, + -1, -1, 485, -1, 487, -1, -1, -1, -1, 492, + -1, 494, 495, 3, 4, 5, 6, 7, 8, 9, + 10, -1, -1, -1, -1, -1, -1, -1, -1, 19, + 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, + 30, -1, -1, -1, -1, 35, -1, -1, 38, 39, + -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, -1, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, + 70, 71, 72, -1, 74, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 84, -1, 86, 87, 88, 89, + 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, -1, 117, 118, 119, + 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, + -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, -1, 158, 159, + 160, 161, -1, 163, -1, 165, 166, -1, 168, 169, + 170, 171, 172, 173, -1, 175, -1, 177, 178, -1, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, + 200, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, -1, -1, 223, 224, 225, 226, -1, 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, -1, 277, 278, -1, + -1, 281, 282, 283, -1, -1, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + -1, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, -1, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 424, 425, 426, 427, 428, 429, + -1, 431, 432, 433, 434, 435, 436, 437, -1, 439, + 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, -1, -1, -1, -1, -1, -1, 478, 479, + -1, -1, -1, -1, -1, 485, -1, 487, -1, -1, + -1, -1, 492, -1, 494, 495, 3, 4, 5, 6, + 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, + -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, + -1, 28, 29, 30, -1, -1, -1, -1, 35, -1, + -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, 68, 69, 70, 71, 72, -1, 74, -1, 76, + 77, 78, 79, 80, 81, 82, 83, 84, -1, 86, + 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, + 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, + 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + -1, 158, 159, 160, 161, -1, 163, -1, 165, 166, + -1, 168, 169, 170, 171, 172, 173, -1, 175, -1, + 177, 178, -1, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, + 197, -1, 199, 200, 201, 202, 203, 204, 205, 206, + 207, -1, 209, -1, 211, -1, -1, 214, 215, 216, + 217, 218, 219, 220, -1, -1, 223, 224, 225, 226, + -1, 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, -1, 265, 266, + -1, 268, 269, 270, 271, 272, 273, 274, 275, -1, + 277, 278, -1, -1, 281, 282, 283, -1, -1, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, -1, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, -1, 393, 394, -1, 396, + 397, 398, 399, 400, 401, 402, -1, 404, 405, -1, + -1, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, 424, 425, 426, + 427, 428, 429, -1, 431, 432, 433, 434, 435, 436, + 437, -1, 439, 440, 441, 442, 443, 444, -1, -1, + 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, -1, -1, -1, -1, -1, + -1, 478, 479, -1, -1, -1, -1, -1, 485, -1, + 487, -1, -1, -1, -1, 492, -1, 494, 495, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, - -1, 35, -1, -1, 38, 39, -1, 41, 42, 43, + -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, -1, @@ -217324,7 +216318,7 @@ static const yytype_int16 yycheck[] = 84, -1, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, -1, + -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, @@ -217339,7 +216333,7 @@ static const yytype_int16 yycheck[] = 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, + -1, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, @@ -217351,21 +216345,69 @@ static const yytype_int16 yycheck[] = 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, 403, - 404, -1, -1, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, -1, -1, 423, - 424, 425, 426, 427, 428, -1, 430, 431, 432, 433, - 434, 435, 436, -1, 438, 439, 440, 441, 442, 443, - -1, -1, 446, -1, -1, 449, 450, 451, 452, 453, + 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, + 394, -1, 396, 397, 398, 399, 400, 401, 402, -1, + 404, 405, -1, -1, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + 424, 425, 426, 427, 428, 429, -1, 431, 432, 433, + 434, 435, 436, 437, -1, 439, 440, 441, 442, 443, + 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, -1, -1, -1, - -1, -1, -1, 477, 478, -1, -1, -1, -1, -1, - 484, -1, 486, -1, -1, -1, -1, 491, -1, 493, - 494, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, 478, 479, -1, -1, 3, 4, + 5, 6, 7, 487, 9, 10, -1, -1, -1, -1, + 494, 495, -1, -1, 19, 20, 21, 22, 23, 24, + 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, + -1, -1, -1, 38, 39, -1, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, -1, 68, 69, 70, 71, 72, -1, 74, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 84, + -1, 86, 87, 88, 89, 90, 91, -1, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, -1, + 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, + 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, + 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, -1, 158, 159, 160, 161, -1, 163, -1, + 165, 166, -1, 168, 169, 170, 171, 172, 173, -1, + 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, -1, 192, 193, 194, + 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, + 205, 206, 207, -1, 209, -1, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, -1, -1, 223, 224, + 225, 226, -1, 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, -1, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, -1, 277, 278, -1, -1, 281, 282, 283, -1, + -1, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, -1, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, -1, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, 404, + 405, -1, -1, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, -1, -1, 424, + 425, 426, 427, 428, 429, -1, 431, 432, 433, 434, + 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, + -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, -1, -1, -1, -1, + -1, -1, -1, 478, 479, -1, -1, -1, -1, -1, + -1, -1, 487, -1, -1, -1, -1, -1, -1, 494, + 495, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, - -1, -1, -1, 35, -1, -1, 38, 39, -1, 41, + -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, @@ -217373,7 +216415,7 @@ static const yytype_int16 yycheck[] = 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, + 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, @@ -217383,12 +216425,12 @@ static const yytype_int16 yycheck[] = 182, 183, 184, 185, 186, 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, -1, + -1, 213, 214, 215, 216, 217, 218, 219, 220, -1, -1, 223, 224, 225, 226, -1, 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, + 262, 263, -1, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, @@ -217400,356 +216442,161 @@ static const yytype_int16 yycheck[] = 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, 403, 404, -1, -1, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, -1, - -1, 423, 424, 425, 426, 427, 428, -1, 430, 431, - 432, 433, 434, 435, 436, -1, 438, 439, 440, 441, - 442, 443, -1, -1, 446, -1, -1, 449, 450, 451, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, 429, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, 440, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, -1, - -1, -1, -1, -1, -1, 477, 478, -1, -1, -1, - -1, -1, 484, -1, 486, -1, -1, -1, -1, 491, - -1, 493, 494, 3, 4, 5, 6, 7, 8, 9, - 10, -1, -1, -1, -1, -1, -1, -1, -1, 19, - 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, - 30, -1, -1, -1, -1, 35, -1, -1, 38, 39, - -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, - 70, 71, 72, -1, 74, -1, 76, 77, 78, 79, - 80, 81, 82, 83, 84, -1, 86, 87, 88, 89, - 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, -1, 117, 118, 119, - 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, - -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, -1, 158, 159, - 160, 161, -1, 163, -1, 165, 166, -1, 168, 169, - 170, 171, 172, 173, -1, 175, -1, 177, 178, -1, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, - 200, 201, 202, 203, 204, 205, 206, 207, -1, 209, - -1, 211, -1, -1, 214, 215, 216, 217, 218, 219, - 220, -1, -1, 223, 224, 225, 226, -1, 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, -1, 265, 266, -1, 268, 269, - 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, - -1, 281, 282, 283, -1, -1, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - -1, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, 403, 404, -1, -1, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, -1, -1, 423, 424, 425, 426, 427, 428, -1, - 430, 431, 432, 433, 434, 435, 436, -1, 438, 439, - 440, 441, 442, 443, -1, -1, 446, -1, -1, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, -1, -1, -1, -1, -1, -1, 477, 478, -1, - -1, -1, -1, -1, 484, -1, 486, -1, -1, -1, - -1, 491, -1, 493, 494, 3, 4, 5, 6, 7, - 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, - -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, - 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, - 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, - 68, 69, 70, 71, 72, -1, 74, -1, 76, 77, - 78, 79, 80, 81, 82, 83, 84, -1, 86, 87, - 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, - 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, - 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, -1, - 158, 159, 160, 161, -1, 163, -1, 165, 166, -1, - 168, 169, 170, 171, 172, 173, -1, 175, -1, 177, - 178, -1, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, - -1, 199, 200, 201, 202, 203, 204, 205, 206, 207, - -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, -1, -1, 223, 224, 225, 226, -1, - 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, -1, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, -1, 277, - 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, -1, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, 403, 404, -1, -1, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, -1, -1, 423, 424, 425, 426, 427, - 428, -1, 430, 431, 432, 433, 434, 435, 436, -1, - 438, 439, 440, 441, 442, 443, -1, -1, 446, -1, - -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, -1, -1, -1, -1, -1, -1, -1, 477, - 478, -1, -1, 3, 4, 5, 6, 7, 486, 9, - 10, -1, -1, -1, -1, 493, 494, -1, -1, 19, - 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, - 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, - -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, - 70, 71, 72, -1, 74, -1, 76, 77, 78, 79, - 80, 81, 82, 83, 84, -1, 86, 87, 88, 89, - 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, - 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, - -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, -1, 158, 159, - 160, 161, -1, 163, -1, 165, 166, -1, 168, 169, - 170, 171, 172, 173, -1, 175, -1, 177, 178, -1, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, - 200, 201, 202, 203, 204, 205, 206, 207, -1, 209, - -1, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, -1, -1, 223, 224, 225, 226, -1, 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, -1, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, - -1, 281, 282, 283, -1, -1, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - -1, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, 403, 404, -1, -1, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, -1, -1, 423, 424, 425, 426, 427, 428, -1, - 430, 431, 432, 433, 434, 435, 436, -1, 438, 439, - 440, 441, 442, 443, -1, -1, 446, -1, -1, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - -1, -1, -1, -1, -1, -1, -1, 477, 478, -1, - -1, -1, -1, -1, -1, -1, 486, -1, -1, -1, - -1, -1, -1, 493, 494, 3, 4, 5, 6, 7, - 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, - -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, - 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, - 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, -1, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, - 68, 69, 70, 71, 72, -1, 74, -1, 76, 77, - 78, 79, 80, 81, 82, 83, 84, -1, 86, 87, - 88, 89, 90, 91, -1, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, - 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, - 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, -1, - 158, 159, 160, 161, -1, 163, -1, 165, 166, -1, - 168, 169, 170, 171, 172, 173, -1, 175, -1, 177, - 178, -1, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, - -1, 199, 200, 201, 202, 203, 204, 205, 206, 207, - -1, 209, -1, 211, -1, 213, 214, 215, 216, 217, - 218, 219, 220, -1, -1, 223, 224, 225, 226, -1, - 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, -1, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, -1, 277, - 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, -1, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, 403, 404, -1, -1, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, -1, -1, 423, 424, 425, 426, 427, - 428, -1, 430, 431, 432, 433, 434, 435, 436, -1, - 438, 439, 440, 441, 442, 443, -1, -1, 446, -1, - -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, -1, -1, -1, -1, -1, -1, -1, 477, - 478, -1, -1, -1, -1, -1, -1, -1, 486, -1, - -1, -1, -1, -1, -1, 493, 494, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, - 26, -1, 28, 29, 30, -1, -1, -1, -1, 35, - -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, - 46, 47, -1, 49, 50, 51, 52, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, 72, -1, 74, -1, - 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, - 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, - 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, - -1, 137, 138, 139, -1, 141, -1, 143, -1, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, - 166, -1, 168, 169, 170, 171, -1, 173, -1, 175, - -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, - -1, 187, 188, 189, 190, -1, 192, 193, 194, 195, - 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, - 206, 207, -1, 209, -1, 211, -1, -1, 214, 215, - 216, 217, 218, 219, 220, -1, -1, 223, 224, 225, - -1, -1, 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, -1, 265, - 266, -1, 268, 269, 270, 271, 272, 273, 274, 275, - -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, -1, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, -1, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, -1, - -1, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, -1, -1, 423, 424, 425, - 426, 427, 428, -1, 430, 431, 432, 433, 434, 435, - 436, -1, 438, 439, 440, 441, 442, 443, -1, -1, - 446, -1, -1, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, -1, -1, -1, -1, -1, -1, - -1, 477, 478, 3, -1, -1, -1, -1, 484, -1, - 486, -1, -1, -1, -1, 491, -1, 493, 494, 19, - 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, - 30, -1, -1, -1, -1, -1, 36, -1, 38, 39, - -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, - -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, - -1, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, 71, 72, -1, -1, -1, 76, 77, 78, 79, - 80, -1, 82, 83, 84, -1, 86, 87, 88, 89, - 90, 91, -1, 93, 94, 95, 96, -1, -1, -1, - -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, - 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, - -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, -1, 156, -1, 158, 159, - 160, 161, -1, 163, -1, 165, -1, -1, 168, 169, - 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, - 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, - 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, - 200, 201, 202, 203, 204, 205, 206, 207, -1, 209, - -1, 211, -1, -1, 214, 215, 216, 217, 218, 219, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, -1, -1, 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, -1, 265, 266, -1, 268, -1, - 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, - -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, - -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - -1, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, - 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, 403, 404, -1, -1, 407, 408, 409, - 410, 411, -1, 413, 414, 415, 416, 417, 418, 419, - 420, -1, -1, 423, 424, 425, 426, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, -1, 438, -1, - 440, 441, 442, 443, -1, -1, 446, -1, -1, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - -1, -1, 3, -1, 5, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 487, 19, 20, - 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, - -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, -1, 54, 55, 56, 57, 58, 59, -1, - 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, - 71, 72, -1, 74, -1, 76, 77, 78, 79, 80, - 81, 82, 83, 84, -1, 86, 87, 88, 89, 90, - 91, -1, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, -1, 115, -1, 117, 118, 119, 120, - 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, - 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, -1, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, -1, 156, -1, 158, 159, 160, - 161, -1, 163, -1, 165, 166, -1, 168, 169, 170, - 171, 172, 173, -1, 175, -1, 177, 178, -1, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - -1, 192, 193, 194, 195, 196, 197, -1, 199, 200, - 201, 202, 203, 204, 205, 206, 207, -1, 209, -1, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, -1, 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, -1, 265, 266, 267, 268, -1, 270, - 271, 272, 273, 274, 275, -1, 277, 278, -1, 280, - 281, 282, 283, -1, -1, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, - 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, -1, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, -1, -1, 407, 408, 409, 410, - 411, -1, 413, 414, 415, 416, 417, 418, 419, 420, - -1, -1, 423, 424, 425, 426, 427, 428, -1, 430, - 431, 432, 433, 434, 435, 436, -1, 438, 439, 440, - 441, 442, 443, -1, -1, 446, -1, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, -1, - 3, 472, 5, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 486, 19, 20, 21, 22, + -1, -1, -1, -1, -1, -1, 478, 479, -1, -1, + -1, -1, -1, -1, -1, 487, -1, -1, -1, -1, + -1, -1, 494, 495, 3, 4, 5, 6, 7, 8, + 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, + 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, + 29, 30, -1, -1, -1, -1, 35, -1, -1, 38, + 39, -1, 41, 42, 43, 44, 45, 46, 47, -1, + 49, 50, 51, 52, -1, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, -1, 68, + 69, 70, 71, 72, -1, 74, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 84, -1, 86, 87, 88, + 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, 118, + 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, + -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, + 139, -1, 141, -1, 143, -1, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, -1, 158, + 159, 160, 161, -1, 163, -1, 165, 166, -1, 168, + 169, 170, 171, -1, 173, -1, 175, -1, 177, 178, + -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, + 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, + 199, 200, 201, 202, 203, 204, 205, 206, 207, -1, + 209, -1, 211, -1, -1, 214, 215, 216, 217, 218, + 219, 220, -1, -1, 223, 224, 225, -1, -1, 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, -1, 265, 266, -1, 268, + 269, 270, 271, 272, 273, 274, 275, -1, 277, 278, + -1, -1, 281, 282, 283, -1, -1, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, -1, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, -1, 393, 394, -1, 396, 397, 398, + 399, 400, 401, 402, -1, 404, 405, -1, -1, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, 424, 425, 426, 427, 428, + 429, -1, 431, 432, 433, 434, 435, 436, 437, -1, + 439, 440, 441, 442, 443, 444, -1, -1, 447, -1, + -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, -1, -1, -1, -1, -1, -1, -1, 478, + 479, 3, -1, -1, -1, -1, 485, -1, 487, -1, + -1, -1, -1, 492, -1, 494, 495, 19, 20, 21, + 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, + -1, -1, -1, -1, 36, -1, 38, 39, -1, 41, + 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, + 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, + 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 72, -1, -1, -1, 76, 77, 78, 79, 80, -1, + 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, + -1, 93, 94, 95, 96, -1, -1, -1, -1, -1, + -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, + 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, + 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, + -1, 163, -1, 165, -1, -1, 168, 169, 170, 171, + -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, + 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, + 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + -1, -1, 214, 215, 216, 217, 218, 219, 220, -1, + -1, 223, 224, 225, -1, -1, 228, 229, 230, -1, + -1, 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, -1, 265, 266, -1, 268, -1, 270, 271, + 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, + 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, + 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, -1, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, -1, + -1, 3, -1, 5, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 488, 19, 20, 21, + 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, + -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, -1, 54, 55, 56, 57, 58, 59, -1, 61, + 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 72, -1, 74, -1, 76, 77, 78, 79, 80, 81, + 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, + -1, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, + 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, + 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, + -1, 163, -1, 165, 166, -1, 168, 169, 170, 171, + 172, 173, -1, 175, -1, 177, 178, -1, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, -1, + 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + -1, 223, 224, 225, 226, -1, 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, -1, 265, 266, 267, 268, -1, 270, 271, + 272, 273, 274, 275, -1, 277, 278, -1, 280, 281, + 282, 283, -1, -1, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, -1, 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, -1, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, 429, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, 440, 441, + 442, 443, 444, -1, -1, 447, -1, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 3, 473, 5, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 487, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, @@ -217786,17 +216633,64 @@ static const yytype_int16 yycheck[] = 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, - 393, -1, 395, 396, 397, 398, 399, 400, 401, -1, - 403, 404, -1, -1, 407, 408, 409, 410, 411, -1, - 413, 414, 415, 416, 417, 418, 419, 420, -1, -1, - 423, 424, 425, 426, 427, 428, -1, 430, 431, 432, - 433, 434, 435, 436, -1, 438, 439, 440, 441, 442, - 443, -1, -1, 446, -1, -1, 449, 450, 451, 452, + 383, 384, 385, 386, 387, 388, 389, 390, 391, -1, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, 404, 405, -1, -1, 408, 409, 410, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, 424, 425, 426, 427, 428, 429, -1, 431, 432, + 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, + 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, -1, 3, -1, + 463, 464, 465, 466, 467, 468, 469, 470, -1, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 487, 19, 20, 21, 22, 23, + 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, + -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, -1, + 54, 55, 56, 57, 58, 59, -1, 61, 62, 63, + 64, 65, 66, -1, 68, 69, 70, 71, 72, -1, + 74, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 84, -1, 86, 87, 88, 89, 90, 91, -1, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, + 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, + 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, -1, 156, -1, 158, 159, 160, 161, -1, 163, + -1, 165, 166, -1, 168, 169, 170, 171, 172, 173, + -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, -1, 192, 193, + 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, -1, -1, 223, + 224, 225, 226, -1, 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, + -1, 265, 266, 267, 268, -1, 270, 271, 272, 273, + 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, + -1, -1, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, -1, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, + 394, -1, 396, 397, 398, 399, 400, 401, 402, -1, + 404, 405, -1, -1, 408, 409, 410, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + 424, 425, 426, 427, 428, 429, -1, 431, 432, 433, + 434, 435, 436, 437, -1, 439, 440, 441, 442, 443, + 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 486, 19, 20, 21, 22, 23, 24, + -1, -1, -1, 487, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, @@ -217833,63 +216727,157 @@ static const yytype_int16 yycheck[] = 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, -1, 392, 393, -1, - 395, 396, 397, 398, 399, 400, 401, -1, 403, 404, - -1, -1, 407, 408, 409, 410, 411, -1, 413, 414, - 415, 416, 417, 418, 419, 420, -1, -1, 423, 424, - 425, 426, 427, 428, -1, 430, 431, 432, 433, 434, - 435, 436, -1, 438, 439, 440, 441, 442, 443, -1, - -1, 446, -1, -1, 449, 450, 451, 452, 453, 454, + 385, 386, 387, 388, 389, 390, 391, -1, 393, 394, + -1, 396, 397, 398, 399, 400, 401, 402, -1, 404, + 405, -1, -1, 408, 409, 410, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 420, 421, -1, -1, 424, + 425, 426, 427, 428, 429, -1, 431, 432, 433, 434, + 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, + -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, -1, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 486, 19, 20, 21, 22, 23, 24, 25, 26, - -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, - -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, -1, 54, 55, 56, - 57, 58, 59, -1, 61, 62, 63, 64, 65, 66, - -1, 68, 69, 70, 71, 72, -1, 74, -1, 76, - 77, 78, 79, 80, 81, 82, 83, 84, -1, 86, - 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 465, 466, 467, 468, 469, 470, -1, 3, 4, 5, + -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, + -1, -1, 487, 19, 20, 21, 22, 23, 24, 25, + 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, + -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, + 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, + 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, + 66, -1, 68, 69, 70, 71, 72, -1, -1, -1, + 76, 77, 78, 79, 80, -1, 82, 83, 84, -1, + 86, 87, 88, 89, 90, 91, -1, -1, 94, 95, + 96, -1, -1, -1, -1, -1, -1, -1, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, -1, 115, + -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, + 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, + -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, + -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, + -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, + -1, 187, 188, 189, 190, -1, 192, 193, 194, 195, + 196, 197, -1, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, -1, -1, 214, -1, + 216, 217, 218, 219, 220, -1, -1, 223, -1, 225, + -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, 265, + 266, -1, 268, -1, 270, 271, 272, 273, 274, 275, + -1, 277, 278, 279, -1, 281, 282, 283, -1, -1, + 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, -1, 341, 342, -1, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, + 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, + -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, -1, 393, 394, -1, + 396, -1, 398, 399, 400, 401, 402, -1, 404, 405, + -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, 424, 425, + 426, 427, 428, -1, -1, 431, 432, 433, 434, 435, + 436, 437, -1, 439, -1, 441, 442, 443, 444, -1, + -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, -1, 3, -1, -1, -1, + -1, -1, 478, 479, 480, -1, -1, -1, -1, -1, + -1, 487, 19, 20, 21, 22, 23, 24, 25, 26, + -1, 28, 29, 30, 31, 32, -1, -1, -1, -1, + -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, + 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, + 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, + -1, 68, 69, 70, 71, 72, -1, -1, -1, 76, + 77, 78, 79, 80, -1, 82, 83, 84, -1, 86, + 87, 88, 89, 90, 91, -1, -1, 94, 95, 96, + -1, -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, -1, 156, - -1, 158, 159, 160, 161, -1, 163, -1, 165, 166, - -1, 168, 169, 170, 171, 172, 173, -1, 175, -1, - 177, 178, -1, 180, 181, 182, 183, 184, 185, 186, + -1, 158, 159, 160, 161, -1, 163, -1, 165, -1, + -1, -1, 169, 170, 171, -1, 173, -1, 175, -1, + 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, - 197, -1, 199, 200, 201, 202, 203, 204, 205, 206, - 207, -1, 209, -1, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, -1, -1, 223, 224, 225, 226, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 197, -1, 199, -1, 201, 202, 203, 204, 205, 206, + 207, -1, 209, -1, 211, -1, -1, 214, -1, 216, + 217, 218, 219, 220, -1, -1, 223, -1, 225, -1, + -1, 228, 229, 230, -1, -1, 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, -1, 265, 266, - 267, 268, -1, 270, 271, 272, 273, 274, 275, -1, + 257, -1, 259, 260, 261, 262, 263, -1, 265, 266, + -1, 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 287, -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, -1, 341, 342, 343, 344, 345, 346, + 337, 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, + 357, 358, 359, 360, 361, 362, 363, 364, -1, 366, + 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, -1, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, -1, 403, 404, -1, -1, - 407, 408, 409, 410, 411, -1, 413, 414, 415, 416, - 417, 418, 419, 420, -1, -1, 423, 424, 425, 426, - 427, 428, -1, 430, 431, 432, 433, 434, 435, 436, - -1, 438, 439, 440, 441, 442, 443, -1, -1, 446, - -1, -1, 449, 450, 451, 452, 453, 454, 455, 456, + 387, 388, 389, 390, 391, -1, 393, 394, 395, 396, + -1, 398, 399, 400, 401, 402, -1, 404, 405, -1, + -1, 408, 409, 410, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, 424, 425, 426, + 427, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, -1, 439, -1, 441, 442, 443, 444, -1, -1, + 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, -1, 3, 4, 5, -1, -1, -1, - 9, -1, -1, -1, -1, -1, -1, -1, -1, 486, + 467, 468, 469, 470, -1, 3, 473, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 487, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, + 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, + 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, + 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, + 68, 69, 70, 71, 72, -1, -1, -1, 76, 77, + 78, 79, 80, -1, 82, 83, 84, -1, 86, 87, + 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, + -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, + 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, + 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, -1, 156, -1, + 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, + -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, + 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, + 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, + -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, -1, -1, 214, -1, 216, 217, + 218, 219, 220, -1, -1, 223, -1, 225, -1, -1, + 228, 229, 230, -1, -1, 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, + -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, + 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, + 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, + -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, -1, 366, 367, + 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, -1, 393, 394, 395, 396, -1, + 398, 399, 400, 401, 402, -1, 404, 405, -1, -1, + 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, 424, 425, 426, 427, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + -1, 439, -1, 441, 442, 443, 444, -1, -1, 447, + -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, -1, 3, 473, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 487, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, @@ -217903,7 +216891,7 @@ static const yytype_int16 yycheck[] = 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, -1, 158, + 149, 150, 151, 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, @@ -217916,7 +216904,7 @@ static const yytype_int16 yycheck[] = 249, 250, 251, 252, 253, 254, 255, 256, 257, -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, 278, - 279, -1, 281, 282, 283, -1, -1, 286, 287, -1, + -1, -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, @@ -217924,21 +216912,68 @@ static const yytype_int16 yycheck[] = 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, + 359, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, -1, 392, 393, -1, 395, -1, 397, 398, - 399, 400, 401, -1, 403, 404, -1, -1, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, -1, -1, 423, 424, 425, 426, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, -1, 438, - -1, 440, 441, 442, 443, -1, -1, 446, -1, -1, + 389, 390, 391, -1, 393, 394, 395, 396, -1, 398, + 399, 400, 401, 402, -1, 404, 405, -1, -1, 408, + 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, 424, 425, 426, 427, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, -1, + 439, -1, 441, 442, 443, 444, -1, -1, 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, -1, 3, -1, -1, -1, -1, -1, 477, 478, - 479, -1, -1, -1, -1, -1, -1, 486, 19, 20, + 469, 470, -1, 3, 473, 5, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 487, 19, + 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, + 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, + -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, + -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, + -1, -1, 62, 63, 64, 65, 66, -1, 68, 69, + 70, 71, 72, -1, -1, -1, 76, 77, 78, 79, + 80, -1, 82, 83, 84, -1, 86, 87, 88, 89, + 90, 91, -1, -1, 94, 95, 96, -1, -1, -1, + -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, + 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, + -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, -1, 156, -1, 158, 159, + 160, 161, -1, 163, -1, 165, -1, -1, -1, 169, + 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, + 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, + 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, -1, -1, 214, -1, 216, 217, 218, 219, + 220, -1, -1, 223, -1, 225, -1, -1, 228, 229, + 230, -1, -1, 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, -1, 259, + 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, + 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, + -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, + -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + -1, 341, 342, -1, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, + 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, + 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, -1, 393, 394, -1, 396, -1, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, + 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 424, 425, 426, 427, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, -1, 439, + -1, 441, 442, 443, 444, -1, -1, 447, -1, -1, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, -1, 3, -1, 5, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 487, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, - 31, 32, -1, -1, -1, -1, -1, 38, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, 69, 70, @@ -217970,21 +217005,68 @@ static const yytype_int16 yycheck[] = 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - -1, 392, 393, 394, 395, -1, 397, 398, 399, 400, - 401, -1, 403, 404, -1, -1, 407, 408, 409, 410, - 411, -1, 413, 414, 415, 416, 417, 418, 419, 420, - -1, -1, 423, 424, 425, 426, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, 438, -1, 440, - 441, 442, 443, -1, -1, 446, -1, 448, 449, 450, + 391, -1, 393, 394, -1, 396, -1, 398, 399, 400, + 401, 402, -1, 404, 405, -1, -1, 408, 409, 410, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, + 421, -1, -1, 424, 425, 426, 427, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, -1, 439, -1, + 441, 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, -1, - 3, 472, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 486, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, -1, -1, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 487, 19, 20, 21, + 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, + -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, + 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, + 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, + 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 72, -1, -1, -1, 76, 77, 78, 79, 80, -1, + 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, + -1, -1, 94, 95, 96, -1, -1, -1, -1, -1, + -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, + 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, + 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, + -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, + -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, + 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, + 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + -1, -1, 214, -1, 216, 217, 218, 219, 220, -1, + -1, 223, -1, 225, -1, -1, 228, 229, 230, -1, + -1, 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, -1, 259, 260, 261, + 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, + 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, + 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, + 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, -1, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, -1, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, -1, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 487, 19, 20, 21, 22, + 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, @@ -218017,67 +217099,247 @@ static const yytype_int16 yycheck[] = 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, - 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, - 403, 404, -1, -1, 407, 408, 409, 410, 411, -1, - 413, 414, 415, 416, 417, 418, 419, 420, -1, -1, - 423, 424, 425, 426, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, -1, 438, -1, 440, 441, 442, - 443, -1, -1, 446, -1, 448, 449, 450, 451, 452, + 383, 384, 385, 386, 387, 388, 389, 390, 391, -1, + 393, 394, -1, 396, -1, 398, 399, 400, 401, 402, + -1, 404, 405, -1, -1, 408, 409, 410, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, 424, 425, 426, 427, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, -1, 439, -1, 441, 442, + 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, -1, 3, 472, + 463, 464, 465, 466, 467, 468, 469, 470, -1, -1, + -1, -1, 3, 4, 5, -1, -1, 8, 9, -1, + -1, -1, -1, -1, 487, 16, 17, 18, 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, -1, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, -1, 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, -1, 150, + 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, -1, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + -1, 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, -1, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, -1, 288, 289, 290, + -1, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, -1, 306, 307, -1, 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, -1, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, -1, + 411, -1, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, -1, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 467, 468, 469, 470, + -1, 3, -1, 474, 475, 476, 8, 478, 479, 480, + 481, 482, 483, -1, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, + -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, + 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, + 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, + 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 72, -1, -1, -1, 76, 77, 78, 79, 80, -1, + 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, + -1, -1, 94, 95, 96, -1, -1, -1, -1, -1, + -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, + 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, + 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, + -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, + -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, + 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, + 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + -1, -1, 214, -1, 216, 217, 218, 219, 220, -1, + -1, 223, -1, 225, -1, -1, 228, 229, 230, -1, + -1, 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, -1, 259, 260, 261, + 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, + 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, + 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, + 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, -1, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, -1, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, -1, + -1, -1, 474, 475, 476, -1, 478, 479, 480, 481, + 482, 483, 8, -1, -1, 11, -1, -1, -1, -1, + 16, 17, 18, -1, -1, -1, -1, -1, -1, -1, + 8, -1, -1, 11, -1, -1, -1, 33, 16, 17, + 18, -1, -1, -1, -1, 41, -1, -1, 8, -1, + -1, 11, 48, -1, -1, 33, 16, 17, 18, -1, + -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, + 48, -1, -1, 33, -1, -1, 8, 73, -1, 11, + -1, 41, -1, -1, 16, 17, 18, -1, 48, -1, + -1, -1, -1, -1, 8, 73, -1, 11, -1, -1, + -1, 33, 16, 17, 18, -1, -1, -1, -1, 41, + -1, -1, -1, 73, -1, -1, 48, -1, -1, 33, + -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, + -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, + -1, 73, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 73, + -1, -1, -1, -1, 8, -1, -1, 11, -1, -1, + -1, -1, 16, 17, 18, -1, 172, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, + 186, -1, -1, -1, 172, 191, -1, 41, -1, -1, + -1, -1, -1, -1, 48, -1, -1, -1, 186, -1, + -1, -1, 172, 191, -1, -1, 212, 213, -1, -1, + -1, -1, -1, -1, -1, -1, 186, -1, -1, 73, + 226, 191, -1, -1, 212, 213, -1, -1, -1, -1, + 172, -1, -1, -1, -1, -1, -1, -1, 226, -1, + -1, -1, 212, 213, 186, -1, -1, -1, 172, 191, + -1, -1, -1, -1, -1, -1, 226, -1, 264, -1, + -1, 267, 186, -1, -1, -1, -1, 191, -1, -1, + 212, 213, -1, -1, -1, 281, 264, -1, 284, 267, + -1, -1, -1, -1, 226, -1, -1, -1, 212, 213, + -1, -1, -1, 281, 264, -1, 284, 267, -1, -1, + -1, -1, 226, -1, -1, -1, -1, -1, -1, -1, + -1, 281, -1, -1, 284, -1, -1, -1, 172, -1, + -1, -1, 264, -1, -1, 267, -1, -1, -1, -1, + -1, -1, 186, -1, -1, -1, -1, 191, -1, 281, + 264, -1, 284, 267, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 281, 212, 213, + 284, -1, -1, -1, -1, 371, -1, -1, -1, -1, + -1, -1, 226, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 371, 8, -1, -1, 11, -1, -1, + -1, -1, 16, 17, 18, -1, -1, -1, -1, -1, + -1, 371, -1, -1, -1, -1, -1, -1, -1, 33, + 264, -1, -1, 267, -1, -1, -1, 41, -1, -1, + -1, -1, -1, -1, 48, -1, -1, 281, -1, 371, + 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 371, -1, 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 486, 19, 20, 21, 22, 23, 24, - 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, - -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, - 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, - 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, - 65, 66, -1, 68, 69, 70, 71, 72, -1, -1, - -1, 76, 77, 78, 79, 80, -1, 82, 83, 84, - -1, 86, 87, 88, 89, 90, 91, -1, -1, 94, - 95, 96, -1, -1, -1, -1, -1, -1, -1, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, -1, - 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, - 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, + -1, -1, -1, -1, -1, 471, -1, -1, 474, 475, + 476, -1, 478, 479, 480, 481, 482, 483, -1, -1, + -1, -1, 488, 471, -1, -1, 474, 475, 476, -1, + 478, 479, 480, 481, 482, 483, -1, -1, -1, -1, + 488, 471, -1, -1, 474, 475, 476, -1, 478, 479, + 480, 481, 482, 483, -1, -1, -1, 371, 488, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 471, + -1, -1, 474, 475, 476, -1, 478, 479, 480, 481, + 482, 483, -1, -1, -1, -1, 488, 471, 172, -1, + 474, 475, 476, -1, 478, 479, 480, 481, 482, 483, + -1, -1, 186, -1, 488, -1, -1, 191, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 212, 213, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 226, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 471, -1, -1, + 474, 475, 476, -1, 478, 479, 480, 481, 482, 483, + -1, -1, -1, -1, 488, -1, -1, -1, -1, -1, + 264, -1, -1, 267, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 281, -1, -1, + 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 471, 3, -1, + 474, 475, 476, -1, 478, 479, 480, 481, 482, 483, + -1, -1, 486, -1, 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, -1, + 45, 46, 47, 48, 49, -1, 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, 80, -1, 82, 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, 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, - -1, 156, -1, 158, 159, 160, 161, -1, 163, -1, - 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, - 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, - 185, -1, 187, 188, 189, 190, -1, 192, 193, 194, - 195, 196, 197, -1, 199, -1, 201, 202, 203, 204, - 205, 206, 207, -1, 209, -1, 211, -1, -1, 214, - -1, 216, 217, 218, 219, 220, -1, -1, 223, -1, - 225, -1, -1, 228, 229, 230, -1, -1, 233, 234, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, -1, 167, -1, 169, 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, 199, -1, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, -1, -1, 214, + -1, 216, 217, 218, 219, 220, 221, 222, 223, -1, + 225, -1, 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, -1, 259, 260, 261, 262, 263, -1, - 265, 266, -1, 268, -1, 270, 271, 272, 273, 274, - 275, -1, 277, 278, -1, -1, 281, 282, 283, -1, - -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 255, 256, 257, -1, 259, 260, 261, 262, 263, 264, + 265, 266, -1, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, -1, 289, -1, 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, -1, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, -1, 341, 342, -1, 344, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, - 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, - 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, - -1, -1, 407, 408, 409, 410, 411, -1, 413, 414, - 415, 416, 417, 418, 419, 420, -1, -1, 423, 424, - 425, 426, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, -1, 438, -1, 440, 441, 442, 443, -1, - -1, 446, -1, 448, 449, 450, 451, 452, 453, 454, + 365, 366, 367, 368, 369, 370, -1, 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, -1, 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, -1, 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, -1, 3, 472, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 486, 19, 20, 21, 22, 23, 24, 25, 26, + 465, 466, 467, 468, 469, 470, 3, -1, -1, -1, + -1, -1, -1, -1, -1, 480, -1, -1, -1, -1, + -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, @@ -218114,16 +217376,16 @@ static const yytype_int16 yycheck[] = 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, -1, 392, 393, -1, 395, -1, - 397, 398, 399, 400, 401, -1, 403, 404, -1, -1, - 407, 408, 409, 410, 411, -1, 413, 414, 415, 416, - 417, 418, 419, 420, -1, -1, 423, 424, 425, 426, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - -1, 438, -1, 440, 441, 442, 443, -1, -1, 446, - -1, -1, 449, 450, 451, 452, 453, 454, 455, 456, + 387, 388, 389, 390, 391, -1, 393, 394, -1, 396, + -1, 398, 399, 400, 401, 402, -1, 404, 405, -1, + -1, 408, 409, 410, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, 424, 425, 426, + 427, 428, -1, -1, 431, 432, 433, 434, 435, 436, + 437, -1, 439, -1, 441, 442, 443, 444, -1, -1, + 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, -1, 3, -1, 5, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 486, + 467, 468, 469, 470, 3, 4, 5, -1, -1, -1, + 9, -1, -1, 480, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, @@ -218133,11 +217395,11 @@ static const yytype_int16 yycheck[] = 79, 80, -1, 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, -1, 115, -1, 117, 118, + 109, 110, 111, 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, -1, 156, -1, 158, + 149, 150, 151, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, @@ -218150,7 +217412,7 @@ static const yytype_int16 yycheck[] = 249, 250, 251, 252, 253, 254, 255, 256, 257, -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, 278, - -1, -1, 281, 282, 283, -1, -1, 286, 287, -1, + 279, -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, @@ -218161,16 +217423,16 @@ static const yytype_int16 yycheck[] = -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, -1, 392, 393, -1, 395, -1, 397, 398, - 399, 400, 401, -1, 403, 404, -1, -1, 407, 408, - 409, 410, 411, -1, 413, 414, 415, 416, 417, 418, - 419, 420, -1, -1, 423, 424, 425, 426, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, -1, 438, - -1, 440, 441, 442, 443, -1, -1, 446, -1, -1, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 389, 390, 391, -1, 393, 394, -1, 396, -1, 398, + 399, 400, 401, 402, -1, 404, 405, -1, -1, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, 424, 425, 426, 427, 428, + -1, -1, 431, 432, 433, 434, 435, 436, 437, -1, + 439, -1, 441, 442, 443, 444, -1, -1, 447, -1, + -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, -1, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 486, 19, 20, + 469, 470, 3, 4, 5, -1, -1, -1, 9, 478, + 479, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, @@ -218180,11 +217442,11 @@ static const yytype_int16 yycheck[] = -1, 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, -1, 115, -1, 117, 118, 119, 120, + 111, 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, -1, 156, -1, 158, 159, 160, + 151, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, 190, @@ -218196,7 +217458,7 @@ static const yytype_int16 yycheck[] = 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, 270, - 271, 272, 273, 274, 275, -1, 277, 278, -1, -1, + 271, 272, 273, 274, 275, -1, 277, 278, 279, -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, @@ -218208,16 +217470,16 @@ static const yytype_int16 yycheck[] = 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - -1, 392, 393, -1, 395, -1, 397, 398, 399, 400, - 401, -1, 403, 404, -1, -1, 407, 408, 409, 410, - 411, -1, 413, 414, 415, 416, 417, 418, 419, 420, - -1, -1, 423, 424, 425, 426, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, 438, -1, 440, - 441, 442, 443, -1, -1, 446, -1, -1, 449, 450, + 391, -1, 393, 394, -1, 396, -1, 398, 399, 400, + 401, 402, -1, 404, 405, -1, -1, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, -1, -1, 424, 425, 426, 427, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, -1, 439, -1, + 441, 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, -1, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 486, 19, 20, 21, 22, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 3, 4, 5, -1, -1, -1, 9, 478, 479, -1, + -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, @@ -218231,7 +217493,7 @@ static const yytype_int16 yycheck[] = -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, -1, 156, -1, 158, 159, 160, 161, -1, + 153, 154, 155, 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, 192, @@ -218243,7 +217505,7 @@ static const yytype_int16 yycheck[] = 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, 272, - 273, 274, 275, -1, 277, 278, -1, -1, 281, 282, + 273, 274, 275, -1, 277, 278, 279, -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, @@ -218254,216 +217516,136 @@ static const yytype_int16 yycheck[] = 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, - 393, -1, 395, -1, 397, 398, 399, 400, 401, -1, - 403, 404, -1, -1, 407, 408, 409, 410, 411, -1, - 413, 414, 415, 416, 417, 418, 419, 420, -1, -1, - 423, 424, 425, 426, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, -1, 438, -1, 440, 441, 442, - 443, -1, -1, 446, -1, -1, 449, 450, 451, 452, + 383, 384, 385, 386, 387, 388, 389, 390, 391, -1, + 393, 394, -1, 396, -1, 398, 399, 400, 401, 402, + -1, 404, 405, -1, -1, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, 424, 425, 426, 427, 428, -1, -1, 431, 432, + 433, 434, 435, 436, 437, -1, 439, -1, 441, 442, + 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, -1, -1, -1, - -1, 3, 4, 5, -1, -1, 8, 9, -1, -1, - -1, -1, -1, 486, 16, 17, 18, 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, -1, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - -1, 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, -1, 150, 151, - 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, -1, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, -1, - 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, -1, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, -1, 288, 289, 290, -1, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, -1, 306, 307, -1, 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, -1, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, 410, -1, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 466, 467, 468, 469, -1, 3, - -1, 473, 474, 475, 8, 477, 478, 479, 480, 481, - 482, -1, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, - -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, - -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, - 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, 71, 72, -1, - -1, -1, 76, 77, 78, 79, 80, -1, 82, 83, - 84, -1, 86, 87, 88, 89, 90, 91, -1, -1, - 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, - 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, -1, 156, -1, 158, 159, 160, 161, -1, 163, - -1, 165, -1, -1, -1, 169, 170, 171, -1, 173, - -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, - 184, 185, -1, 187, 188, 189, 190, -1, 192, 193, - 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, - 204, 205, 206, 207, -1, 209, -1, 211, -1, -1, - 214, -1, 216, 217, 218, 219, 220, -1, -1, 223, - -1, 225, -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, - -1, 265, 266, -1, 268, -1, 270, 271, 272, 273, - 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, - -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, -1, 341, 342, -1, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, - 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, - -1, 395, -1, 397, 398, 399, 400, 401, -1, 403, - 404, -1, -1, 407, 408, 409, 410, 411, -1, 413, - 414, 415, 416, 417, 418, 419, 420, -1, -1, 423, - 424, 425, 426, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, -1, 438, -1, 440, 441, 442, 443, - -1, -1, 446, -1, -1, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, -1, -1, -1, 473, - 474, 475, -1, 477, 478, 479, 480, 481, 482, 8, - -1, -1, 11, -1, -1, -1, -1, 16, 17, 18, + 463, 464, 465, 466, 467, 468, 469, 470, -1, 8, + -1, -1, 11, -1, -1, 478, 479, 16, 17, 18, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, - 11, -1, -1, -1, 33, 16, 17, 18, -1, -1, + 11, -1, -1, -1, 33, 16, 17, 18, 37, -1, -1, -1, 41, -1, -1, 8, -1, -1, 11, 48, -1, -1, 33, 16, 17, 18, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, 48, -1, -1, 33, -1, -1, 8, 73, -1, 11, -1, 41, -1, -1, 16, 17, 18, -1, 48, -1, -1, -1, -1, - -1, 8, 73, -1, 11, -1, -1, -1, 33, 16, - 17, 18, -1, -1, -1, -1, 41, -1, -1, 8, - 73, -1, 11, 48, -1, -1, 33, 16, 17, 18, - -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, - -1, 48, -1, -1, 33, -1, -1, -1, 73, -1, - -1, -1, 41, -1, -1, -1, -1, -1, -1, 48, - -1, -1, -1, -1, -1, -1, 73, -1, -1, -1, + -1, -1, 73, -1, -1, -1, -1, -1, 33, -1, + -1, 36, -1, -1, -1, -1, 41, -1, -1, -1, + 73, -1, -1, 48, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 123, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 172, 73, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 186, -1, -1, - -1, 172, 191, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 186, -1, -1, -1, 172, - 191, -1, -1, 212, 213, -1, -1, -1, -1, -1, - -1, -1, -1, 186, -1, -1, -1, 226, 191, -1, - -1, 212, 213, -1, -1, -1, -1, 172, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, + -1, 162, -1, -1, -1, -1, 167, 186, -1, -1, + -1, 172, 191, 8, -1, -1, 11, -1, 161, -1, + -1, 16, 17, 18, -1, 186, -1, -1, -1, 172, + 191, -1, -1, 212, 213, -1, -1, -1, 33, -1, + -1, -1, -1, 186, -1, -1, 41, 226, 191, -1, + -1, 212, 213, 48, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, 226, -1, -1, -1, 212, - 213, 186, -1, -1, -1, 172, 191, -1, -1, -1, - -1, -1, -1, 226, -1, 264, -1, -1, 267, 186, - -1, -1, -1, 172, 191, -1, -1, 212, 213, -1, - -1, -1, 281, 264, -1, 284, 267, 186, -1, -1, - -1, 226, 191, -1, -1, 212, 213, -1, -1, -1, - 281, 264, -1, 284, 267, -1, -1, -1, -1, 226, - -1, -1, -1, 212, 213, -1, -1, -1, 281, -1, - -1, 284, -1, -1, -1, -1, -1, 226, -1, 264, + 213, 186, -1, -1, -1, -1, 191, -1, 73, -1, + -1, -1, -1, 226, -1, 264, -1, -1, 267, -1, + -1, -1, -1, -1, -1, -1, -1, 212, 213, -1, + -1, -1, 281, 264, -1, 284, 267, -1, -1, -1, + -1, 226, -1, -1, -1, -1, -1, -1, -1, -1, + 281, 264, -1, 284, 267, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, + -1, 284, -1, -1, -1, -1, -1, -1, -1, 264, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 281, 264, -1, 284, - 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 281, 264, -1, 284, 267, -1, - -1, -1, 371, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 281, -1, -1, 284, -1, -1, -1, -1, - 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 371, -1, + -1, -1, -1, -1, 307, 8, 281, -1, 11, 284, + -1, -1, -1, 16, 17, 18, -1, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 33, 186, 371, 36, 8, -1, 191, 11, 41, -1, + -1, -1, 16, 17, 18, 48, -1, -1, -1, -1, + 371, -1, -1, -1, -1, -1, -1, 212, 213, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 371, -1, + 73, 226, -1, -1, 48, -1, -1, -1, -1, -1, 8, -1, -1, 11, -1, -1, -1, -1, 16, 17, - 18, -1, -1, -1, -1, -1, 371, -1, -1, -1, - -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, - -1, -1, -1, 41, 371, -1, -1, -1, -1, -1, - 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 470, 371, -1, 473, 474, 475, -1, 477, 478, - 479, 480, 481, 482, -1, 73, -1, -1, 487, 470, - -1, -1, 473, 474, 475, -1, 477, 478, 479, 480, - 481, 482, -1, -1, -1, -1, 487, 470, -1, -1, - 473, 474, 475, -1, 477, 478, 479, 480, 481, 482, - -1, -1, -1, -1, 487, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 470, -1, -1, 473, 474, - 475, -1, 477, 478, 479, 480, 481, 482, -1, -1, - -1, -1, 487, 470, -1, -1, 473, 474, 475, -1, - 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, - 487, 470, -1, -1, 473, 474, 475, -1, 477, 478, - 479, 480, 481, 482, 172, -1, 8, -1, 487, 11, - -1, -1, -1, -1, 16, 17, 18, -1, 186, -1, - -1, -1, -1, 191, -1, -1, -1, -1, -1, -1, - -1, 33, -1, -1, -1, -1, -1, -1, -1, 41, - -1, -1, -1, -1, 212, 213, 48, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 226, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 73, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 18, 430, -1, -1, -1, -1, 371, -1, -1, 73, + -1, -1, -1, -1, -1, 33, -1, -1, 36, 264, + -1, -1, 267, 41, -1, -1, -1, -1, -1, -1, + 48, -1, -1, -1, -1, -1, 281, -1, -1, 284, + -1, -1, 471, -1, -1, 474, 475, 476, -1, 478, + 479, 480, 481, 482, 483, 73, -1, 302, -1, -1, + 471, -1, -1, 474, 475, 476, -1, 478, 479, 480, + 481, 482, 483, -1, -1, -1, -1, -1, 471, 172, + -1, 474, 475, 476, -1, 478, 479, 480, 481, 482, + 483, -1, -1, 186, -1, -1, -1, -1, 191, -1, + -1, -1, -1, 167, -1, -1, 471, -1, 172, 474, + 475, 476, -1, 478, 479, 480, 481, 482, 483, 212, + 213, -1, 186, -1, -1, -1, 371, 191, -1, -1, + -1, -1, -1, 226, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 8, 212, 213, + 11, -1, -1, -1, 172, 16, 17, 18, -1, -1, + -1, -1, 226, -1, -1, -1, -1, -1, 186, -1, + -1, 264, 33, 191, 267, -1, -1, -1, -1, -1, + 41, -1, -1, -1, -1, -1, -1, 48, 281, -1, + -1, 284, -1, -1, 212, 213, -1, -1, -1, -1, + 264, -1, -1, 267, -1, -1, -1, -1, 226, -1, + -1, -1, 73, -1, -1, -1, -1, 281, -1, -1, + 284, -1, -1, -1, -1, -1, 471, -1, -1, 474, + 475, 476, -1, 478, 479, 480, 481, 482, 483, -1, -1, -1, -1, -1, -1, -1, 264, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 281, -1, -1, 284, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 186, -1, -1, -1, -1, 191, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 371, -1, -1, -1, -1, -1, -1, - 212, 213, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 226, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 264, -1, -1, 267, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, - -1, -1, 284, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 470, -1, -1, 473, 474, 475, -1, 477, - 478, 479, 480, 481, 482, -1, -1, -1, -1, 487, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 8, 281, -1, 11, 284, -1, -1, -1, + 16, 17, 18, -1, -1, -1, -1, -1, 371, -1, + -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, + -1, 8, -1, -1, 11, 41, -1, -1, -1, 16, + 17, 18, 48, -1, -1, -1, -1, 371, -1, 8, + -1, 172, 11, -1, -1, -1, 33, 16, 17, 18, + -1, -1, -1, -1, 41, 186, -1, 73, -1, -1, + 191, 48, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 41, -1, -1, -1, -1, -1, -1, 48, + -1, 212, 213, 371, -1, -1, 73, -1, -1, -1, + -1, -1, -1, -1, -1, 226, -1, -1, -1, -1, + -1, -1, -1, -1, 73, -1, -1, -1, 471, -1, + -1, 474, 475, 476, -1, 478, 479, 480, 481, 482, + 483, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 264, -1, -1, 267, 471, -1, -1, + 474, 475, 476, -1, 478, 479, 480, 481, 482, 483, + 281, -1, -1, 284, -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 186, -1, -1, -1, -1, 191, -1, -1, -1, -1, + -1, -1, -1, 471, -1, 172, 474, 475, 476, -1, + 478, 479, 480, 481, 482, 483, 212, 213, -1, 186, + -1, -1, -1, 172, 191, -1, -1, -1, -1, -1, + 226, -1, -1, -1, -1, -1, -1, 186, -1, -1, + -1, -1, 191, -1, -1, 212, 213, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 226, + 371, -1, -1, 212, 213, -1, -1, -1, 264, -1, + -1, 267, -1, -1, -1, -1, -1, 226, -1, -1, + -1, -1, -1, -1, -1, 281, -1, -1, 284, -1, + -1, -1, 403, -1, -1, -1, -1, 264, -1, -1, + 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 281, 264, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 471, -1, -1, 474, 475, 476, -1, 478, 479, 480, + 481, 482, 483, -1, -1, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 471, -1, -1, 474, 475, + 476, -1, 478, 479, 480, 481, 482, 483, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 470, 3, - -1, 473, 474, 475, -1, 477, 478, 479, 480, 481, - 482, -1, -1, 485, -1, 19, 20, 21, 22, 23, + -1, -1, -1, -1, 471, -1, -1, 474, 475, 476, + -1, 478, 479, 480, 481, 482, 483, -1, -1, 3, + -1, 5, 471, -1, -1, 474, 475, 476, -1, 478, + 479, 480, 481, 482, 483, 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, -1, 45, 46, 47, 48, 49, -1, 51, 52, 53, @@ -218501,185 +217683,279 @@ static const yytype_int16 yycheck[] = 364, 365, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, + 394, 395, 396, -1, 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, -1, 440, 441, 442, 443, + 434, 435, 436, 437, 438, 439, -1, 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, 3, -1, -1, -1, - -1, -1, -1, -1, -1, 479, -1, -1, -1, -1, - -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, - -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, - -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, - 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, - 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, - -1, 68, 69, 70, 71, 72, -1, -1, -1, 76, - 77, 78, 79, 80, -1, 82, 83, 84, -1, 86, - 87, 88, 89, 90, 91, -1, -1, 94, 95, 96, - -1, -1, -1, -1, -1, -1, -1, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, -1, 115, -1, - 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, - 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, -1, 156, - -1, 158, 159, 160, 161, -1, 163, -1, 165, -1, - -1, -1, 169, 170, 171, -1, 173, -1, 175, -1, - 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, - 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, - 197, -1, 199, -1, 201, 202, 203, 204, 205, 206, - 207, -1, 209, -1, 211, -1, -1, 214, -1, 216, - 217, 218, 219, 220, -1, -1, 223, -1, 225, -1, - -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, 265, 266, - -1, 268, -1, 270, 271, 272, 273, 274, 275, -1, - 277, 278, -1, -1, 281, 282, 283, -1, -1, 286, - 287, -1, 289, -1, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, -1, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, - 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, -1, 392, 393, -1, 395, -1, - 397, 398, 399, 400, 401, -1, 403, 404, -1, -1, - 407, 408, 409, 410, 411, -1, 413, 414, 415, 416, - 417, 418, 419, 420, -1, -1, 423, 424, 425, 426, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - -1, 438, -1, 440, 441, 442, 443, -1, -1, 446, - -1, -1, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 3, 4, 5, -1, -1, -1, 9, - -1, -1, 479, -1, -1, -1, -1, -1, -1, 19, + 464, 465, 466, 467, 468, 469, 470, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 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, -1, 45, + 46, 47, 48, 49, -1, 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, 80, -1, 82, 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, 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, + -1, 167, -1, 169, 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, 199, -1, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, -1, -1, 214, -1, + 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, + -1, 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, -1, 259, 260, 261, 262, 263, 264, 265, + 266, -1, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, -1, 289, -1, 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, -1, 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, -1, 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, -1, 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, -1, 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, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 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, -1, 45, 46, 47, + 48, 49, -1, 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, 80, -1, 82, 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, 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, -1, 167, + -1, 169, 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, 199, -1, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, -1, -1, 214, -1, 216, 217, + 218, 219, 220, 221, 222, 223, -1, 225, -1, 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, + -1, 259, 260, 261, 262, 263, 264, 265, 266, -1, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + -1, 289, -1, 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, -1, 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, -1, 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, -1, + 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, -1, 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, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, - -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, - -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, - -1, -1, 62, 63, 64, 65, 66, -1, 68, 69, - 70, 71, 72, -1, -1, -1, 76, 77, 78, 79, - 80, -1, 82, 83, 84, -1, 86, 87, 88, 89, - 90, 91, -1, -1, 94, 95, 96, -1, -1, -1, - -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, -1, 117, 118, 119, + -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, -1, 54, 55, 56, 57, 58, 59, + -1, 61, 62, 63, 64, 65, 66, -1, 68, 69, + 70, 71, 72, -1, 74, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 84, -1, 86, 87, 88, 89, + 90, 91, -1, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, -1, 158, 159, - 160, 161, -1, 163, -1, 165, -1, -1, -1, 169, - 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, - 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, + 150, 151, 152, 153, 154, -1, 156, -1, 158, 159, + 160, 161, -1, 163, -1, 165, 166, -1, 168, 169, + 170, 171, 172, 173, -1, 175, -1, 177, 178, -1, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, - -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, - -1, 211, -1, -1, 214, -1, 216, 217, 218, 219, - 220, -1, -1, 223, -1, 225, -1, -1, 228, 229, - 230, -1, -1, 233, 234, 235, 236, 237, 238, 239, + 200, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, -1, -1, 223, 224, 225, 226, -1, 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, -1, 259, - 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, - 270, 271, 272, 273, 274, 275, -1, 277, 278, 279, - -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, - -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, -1, 265, 266, 267, 268, -1, + 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, + -1, 281, 282, 283, -1, -1, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - -1, 341, 342, -1, 344, 345, 346, 347, 348, 349, + -1, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, - 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, -1, 395, -1, 397, 398, 399, - 400, 401, -1, 403, 404, -1, -1, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, -1, -1, 423, 424, 425, 426, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, -1, 438, -1, - 440, 441, 442, 443, -1, -1, 446, -1, -1, 449, + 390, 391, -1, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, + 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 424, 425, 426, 427, 428, 429, + -1, 431, 432, 433, 434, 435, 436, 437, -1, 439, + 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 3, 4, 5, -1, -1, -1, 9, 477, 478, -1, - -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, - 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, - -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, - 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, - -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, - 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, - -1, -1, -1, 76, 77, 78, 79, 80, -1, 82, - 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, - -1, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, - -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, -1, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, -1, 158, 159, 160, 161, -1, - 163, -1, 165, -1, -1, -1, 169, 170, 171, -1, - 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, - 183, 184, 185, -1, 187, 188, 189, 190, -1, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, -1, 209, -1, 211, -1, - -1, 214, -1, 216, 217, 218, 219, 220, -1, -1, - 223, -1, 225, -1, -1, 228, 229, 230, -1, -1, - 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, -1, 259, 260, 261, 262, - 263, -1, 265, 266, -1, 268, -1, 270, 271, 272, - 273, 274, 275, -1, 277, 278, 279, -1, 281, 282, - 283, -1, -1, 286, 287, -1, 289, -1, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, - -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, - 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, - 393, -1, 395, -1, 397, 398, 399, 400, 401, -1, - 403, 404, -1, -1, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, -1, -1, - 423, 424, 425, 426, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, -1, 438, -1, 440, 441, 442, - 443, -1, -1, 446, -1, -1, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 3, 4, 5, - -1, -1, -1, 9, 477, 478, -1, -1, -1, -1, + 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, + 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, + -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, + 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 72, -1, 74, -1, 76, 77, 78, 79, 80, 81, + 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, + -1, 93, 94, 95, 96, -1, -1, -1, 100, -1, + -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, + 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, + 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, + -1, 163, -1, 165, 166, -1, 168, 169, 170, 171, + 172, 173, -1, 175, -1, 177, 178, -1, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, -1, + 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, -1, + -1, 223, 224, 225, 226, -1, 228, 229, 230, -1, + -1, 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, -1, 265, 266, 267, 268, -1, 270, 271, + 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, + 282, 283, -1, -1, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 362, 363, 364, -1, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, 440, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, + 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, + -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, + -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, + 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, + -1, 75, 76, 77, 78, 79, 80, -1, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, -1, -1, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, + 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, + 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, -1, 156, -1, 158, 159, 160, 161, -1, 163, + 164, 165, -1, -1, -1, 169, 170, 171, -1, 173, + -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, + 184, 185, -1, 187, 188, 189, 190, -1, 192, 193, + 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, -1, -1, + 214, -1, 216, 217, 218, 219, 220, -1, -1, 223, + -1, 225, -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, + -1, 265, 266, -1, 268, -1, 270, 271, 272, 273, + 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, + -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, -1, 341, 342, -1, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, + 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, + 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, + 394, -1, 396, -1, 398, 399, 400, 401, 402, -1, + 404, 405, -1, -1, 408, 409, 410, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, -1, 423, + 424, 425, 426, 427, 428, -1, -1, 431, 432, 433, + 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, + 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, 72, -1, -1, -1, - 76, 77, 78, 79, 80, -1, 82, 83, 84, -1, + 66, 67, 68, 69, 70, 71, 72, -1, -1, -1, + 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, + 146, 147, 148, 149, 150, 151, 152, 153, 154, -1, + 156, -1, 158, 159, 160, 161, -1, 163, 164, 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, -1, -1, 214, -1, 216, 217, 218, 219, 220, -1, -1, 223, -1, 225, - -1, -1, 228, 229, 230, -1, -1, 233, 234, 235, + 226, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, 272, 273, 274, 275, - -1, 277, 278, 279, -1, 281, 282, 283, -1, -1, + -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, -1, 344, 345, @@ -218687,386 +217963,117 @@ static const yytype_int16 yycheck[] = 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, -1, 392, 393, -1, 395, - -1, 397, 398, 399, 400, 401, -1, 403, 404, -1, - -1, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, -1, -1, 423, 424, 425, - 426, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, -1, 438, -1, 440, 441, 442, 443, -1, -1, - 446, -1, -1, 449, 450, 451, 452, 453, 454, 455, + 386, 387, 388, 389, 390, 391, -1, 393, 394, -1, + 396, -1, 398, 399, 400, 401, 402, -1, 404, 405, + -1, -1, 408, 409, 410, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, 423, 424, 425, + 426, 427, 428, -1, -1, 431, 432, 433, 434, 435, + 436, 437, -1, 439, -1, 441, 442, 443, 444, -1, + -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, -1, 8, -1, -1, 11, -1, - -1, 477, 478, 16, 17, 18, -1, -1, -1, -1, - -1, -1, -1, 8, -1, -1, 11, -1, -1, -1, - 33, 16, 17, 18, 37, -1, -1, -1, 41, -1, - -1, 8, -1, -1, 11, 48, -1, -1, 33, 16, - 17, 18, -1, -1, -1, -1, 41, -1, -1, -1, - -1, -1, -1, 48, -1, -1, 33, -1, -1, 8, - 73, -1, 11, -1, 41, -1, -1, 16, 17, 18, - -1, 48, -1, -1, -1, -1, -1, -1, 73, -1, - -1, -1, -1, -1, 33, -1, -1, 36, -1, -1, - -1, -1, 41, -1, -1, 8, 73, -1, 11, 48, - -1, -1, -1, 16, 17, 18, -1, -1, -1, -1, - 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 33, -1, -1, -1, 73, -1, -1, -1, 41, -1, - -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, - 73, -1, -1, -1, -1, -1, -1, 162, -1, -1, - -1, -1, 167, 186, -1, -1, -1, 172, 191, 8, - -1, -1, 11, -1, 161, -1, -1, 16, 17, 18, - -1, 186, -1, -1, -1, 172, 191, -1, -1, 212, - 213, -1, -1, -1, 33, -1, -1, 36, -1, 186, - -1, -1, 41, 226, 191, -1, -1, 212, 213, 48, - -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, - -1, 226, -1, -1, -1, 212, 213, 186, -1, -1, - -1, -1, 191, -1, 73, -1, -1, -1, -1, 226, - -1, 264, -1, -1, 267, -1, -1, -1, -1, 172, - -1, -1, -1, 212, 213, -1, -1, -1, 281, 264, - -1, 284, 267, 186, -1, -1, -1, 226, 191, -1, - -1, -1, -1, -1, -1, -1, 281, 264, -1, 284, - 267, -1, -1, -1, -1, -1, -1, -1, -1, 212, - 213, -1, -1, -1, 281, -1, -1, 284, -1, -1, - -1, -1, -1, 226, -1, 264, -1, -1, 267, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 307, -1, 281, -1, -1, 284, -1, -1, -1, -1, - -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, - -1, 264, -1, -1, 267, -1, -1, 186, 371, -1, - -1, -1, 191, -1, -1, -1, -1, -1, 281, -1, - -1, 284, -1, -1, -1, -1, 371, -1, -1, -1, - -1, -1, -1, 212, 213, -1, -1, -1, -1, 302, - -1, -1, -1, -1, 371, -1, -1, 226, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8, -1, -1, 11, -1, 429, -1, -1, 16, - 17, 18, 371, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 264, 33, -1, 267, -1, - -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, - -1, 48, 281, -1, -1, 284, -1, 470, 371, -1, - 473, 474, 475, -1, 477, 478, 479, 480, 481, 482, - -1, -1, -1, -1, -1, 470, 73, -1, 473, 474, - 475, -1, 477, 478, 479, 480, 481, 482, -1, -1, - -1, -1, -1, 470, -1, -1, 473, 474, 475, -1, - 477, 478, 479, 480, 481, 482, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 470, -1, -1, 473, 474, 475, -1, 477, 478, - 479, 480, 481, 482, -1, -1, -1, -1, -1, -1, - -1, -1, 371, -1, -1, -1, 8, -1, -1, 11, - -1, -1, -1, -1, 16, 17, 18, 470, -1, -1, - 473, 474, 475, -1, 477, 478, 479, 480, 481, 482, - 167, 33, -1, -1, 36, 172, -1, -1, -1, 41, - -1, -1, -1, -1, -1, -1, 48, -1, -1, 186, - -1, -1, 8, -1, 191, 11, -1, -1, -1, -1, - 16, 17, 18, -1, -1, -1, -1, -1, -1, -1, - -1, 73, -1, -1, -1, 212, 213, 33, -1, -1, - -1, -1, -1, -1, -1, 41, -1, -1, -1, 226, - -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, - -1, 470, -1, -1, 473, 474, 475, -1, 477, 478, - 479, 480, 481, 482, -1, -1, -1, 73, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 264, -1, -1, - 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8, 281, -1, 11, 284, -1, -1, - -1, 16, 17, 18, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, - 172, -1, -1, -1, -1, -1, 41, -1, -1, -1, - -1, -1, 8, 48, 186, 11, -1, -1, -1, 191, - 16, 17, 18, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 33, 73, -1, - 212, 213, -1, -1, -1, 41, 172, -1, -1, -1, - -1, -1, 48, -1, 226, -1, -1, -1, -1, -1, - 186, -1, -1, -1, 371, 191, -1, -1, -1, -1, - 8, -1, -1, 11, -1, -1, -1, 73, 16, 17, - 18, -1, -1, -1, -1, -1, 212, 213, -1, -1, - -1, -1, 264, -1, -1, 267, -1, -1, -1, -1, - 226, -1, -1, 41, -1, -1, -1, -1, -1, 281, - 48, -1, 284, -1, -1, -1, -1, 8, -1, -1, - 11, -1, -1, -1, -1, 16, 17, 18, -1, -1, - -1, -1, -1, -1, -1, 73, -1, 172, 264, -1, - -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, - 41, 186, -1, -1, -1, 281, 191, 48, 284, -1, - -1, -1, -1, 470, -1, -1, 473, 474, 475, -1, - 477, 478, 479, 480, 481, 482, 172, 212, 213, -1, - -1, -1, 73, -1, -1, -1, -1, -1, -1, -1, - 186, 226, -1, -1, -1, 191, -1, -1, -1, 371, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 212, 213, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 264, - 226, -1, 267, -1, 172, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 371, 281, -1, 186, 284, - -1, -1, -1, 191, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 264, -1, - -1, 267, -1, -1, 212, 213, 402, -1, -1, -1, - -1, 172, -1, -1, -1, 281, -1, -1, 226, -1, - -1, -1, -1, -1, -1, 186, -1, -1, 470, -1, - 191, 473, 474, 475, -1, 477, 478, 479, 480, 481, - 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 212, 213, -1, -1, -1, 264, -1, -1, 267, - -1, -1, -1, -1, -1, 226, 371, -1, -1, -1, - -1, -1, -1, 281, 470, -1, -1, 473, 474, 475, - -1, 477, 478, 479, 480, 481, 482, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 371, 267, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 371, -1, 470, -1, -1, 473, 474, - 475, -1, 477, 478, 479, 480, 481, 482, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 470, -1, -1, 473, 474, 475, - 371, 477, 478, 479, 480, 481, 482, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 470, -1, -1, 473, 474, 475, -1, 477, - 478, 479, 480, 481, 482, -1, -1, -1, -1, -1, + 466, 467, 468, 469, 470, 3, -1, 5, -1, -1, -1, -1, -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, 470, - -1, -1, 473, 474, 475, -1, 477, 478, 479, 480, - 481, 482, 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, -1, 45, 46, - 47, 48, 49, -1, 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, 80, -1, 82, 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, 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, -1, - 167, -1, 169, 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, 199, -1, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, -1, -1, 214, -1, 216, - 217, 218, 219, 220, 221, 222, 223, -1, 225, -1, - 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, -1, 259, 260, 261, 262, 263, 264, 265, 266, - -1, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, -1, 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, -1, 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, -1, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 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, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, -1, 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, 3, -1, -1, -1, -1, -1, -1, + -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, + 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, + 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, + 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, + 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, + 68, 69, 70, 71, 72, -1, -1, -1, 76, 77, + 78, 79, 80, -1, 82, 83, 84, -1, 86, 87, + 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, + -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, + 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, + 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, -1, + 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, + -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, + 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, + 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, + -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, -1, -1, 214, -1, 216, 217, + 218, 219, 220, -1, -1, 223, -1, 225, -1, -1, + 228, 229, 230, -1, -1, 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, + -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, + 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, + 278, 279, -1, 281, 282, 283, -1, -1, 286, 287, + -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, + 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, -1, 393, 394, -1, 396, -1, + 398, 399, 400, 401, 402, -1, 404, 405, -1, -1, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, 424, 425, 426, 427, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + -1, 439, -1, 441, 442, 443, 444, -1, -1, 447, + -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, 45, 46, 47, 48, 49, - -1, 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, - 80, -1, 82, 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, 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, -1, 167, -1, 169, - 170, 171, -1, 173, 174, 175, 176, 177, 178, 179, + 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, + 30, 31, 32, -1, -1, -1, -1, -1, 38, 39, + -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, + -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, + -1, -1, 62, 63, 64, 65, 66, -1, 68, 69, + 70, 71, 72, -1, -1, -1, 76, 77, 78, 79, + 80, -1, 82, 83, 84, -1, 86, 87, 88, 89, + 90, 91, -1, -1, 94, 95, 96, -1, -1, -1, + -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, + 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, + -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, -1, 156, -1, 158, 159, + 160, 161, -1, 163, -1, 165, -1, -1, -1, 169, + 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, -1, -1, 214, -1, 216, 217, 218, 219, - 220, 221, 222, 223, -1, 225, -1, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, -1, -1, 214, -1, 216, 217, 218, 219, + 220, -1, -1, 223, -1, 225, -1, -1, 228, 229, + 230, -1, -1, 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, -1, 259, - 260, 261, 262, 263, 264, 265, 266, -1, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, + 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, + 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, + -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, -1, 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, + 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, -1, 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, -1, 372, 373, 374, 375, 376, 377, 378, 379, + -1, 341, 342, -1, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, + 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, + 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 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, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, -1, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 390, 391, -1, 393, 394, -1, 396, -1, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, + 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 424, 425, 426, 427, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, -1, 439, + -1, 441, 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 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, -1, 45, 46, 47, 48, 49, -1, 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, 80, -1, 82, - 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, 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, -1, 167, -1, 169, 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, 199, -1, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, -1, - -1, 214, -1, 216, 217, 218, 219, 220, 221, 222, - 223, -1, 225, -1, 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, -1, 259, 260, 261, 262, - 263, 264, 265, 266, -1, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, -1, 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, - -1, 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, -1, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 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, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, -1, 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, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, - 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, - -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, - 56, 57, 58, 59, -1, 61, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, 72, -1, 74, -1, - 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, - 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, -1, 115, - -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, - 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, -1, - 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, - 166, -1, 168, 169, 170, 171, 172, 173, -1, 175, - -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, -1, 192, 193, 194, 195, - 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, - 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, -1, -1, 223, 224, 225, - 226, -1, 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, -1, 265, - 266, 267, 268, -1, 270, 271, 272, 273, 274, 275, - -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, -1, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, -1, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, -1, - -1, 407, 408, 409, 410, 411, -1, 413, 414, 415, - 416, 417, 418, 419, 420, -1, -1, 423, 424, 425, - 426, 427, 428, -1, 430, 431, 432, 433, 434, 435, - 436, -1, 438, 439, 440, 441, 442, 443, -1, -1, - 446, -1, -1, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, - 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, - 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, -1, 54, 55, 56, 57, 58, - 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, - 69, 70, 71, 72, -1, 74, -1, 76, 77, 78, - 79, 80, 81, 82, 83, 84, -1, 86, 87, 88, - 89, 90, 91, -1, 93, 94, 95, 96, -1, -1, - -1, 100, -1, -1, -1, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, -1, 115, -1, 117, 118, - 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, - -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, -1, 156, -1, 158, - 159, 160, 161, -1, 163, -1, 165, 166, -1, 168, - 169, 170, 171, 172, 173, -1, 175, -1, 177, 178, - -1, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, - 199, 200, 201, 202, 203, 204, 205, 206, 207, -1, - 209, -1, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, -1, -1, 223, 224, 225, 226, -1, 228, - 229, 230, -1, -1, 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, -1, 265, 266, 267, 268, - -1, 270, 271, 272, 273, 274, 275, -1, 277, 278, - -1, -1, 281, 282, 283, -1, -1, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, -1, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, -1, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, 403, 404, -1, -1, 407, 408, - 409, 410, 411, -1, 413, 414, 415, 416, 417, 418, - 419, 420, -1, -1, 423, 424, 425, 426, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, -1, 438, - 439, 440, 441, 442, 443, -1, -1, 446, -1, -1, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 3, -1, -1, -1, -1, -1, -1, -1, -1, + 470, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, -1, -1, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 72, -1, -1, -1, 76, 77, 78, 79, 80, -1, + 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, @@ -219074,7 +218081,7 @@ static const yytype_int16 yycheck[] = 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, - -1, 163, 164, 165, -1, -1, -1, 169, 170, 171, + -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, @@ -219085,166 +218092,26 @@ static const yytype_int16 yycheck[] = 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, - 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, + 272, 273, 274, 275, -1, 277, 278, -1, 280, 281, 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, - 392, 393, -1, 395, -1, 397, 398, 399, 400, 401, - -1, 403, 404, -1, -1, 407, 408, 409, 410, 411, - -1, 413, 414, 415, 416, 417, 418, 419, 420, -1, - 422, 423, 424, 425, 426, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, -1, 438, -1, 440, 441, - 442, 443, -1, -1, 446, -1, -1, 449, 450, 451, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, -1, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, -1, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, - 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, - -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, - 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, - 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, -1, -1, - -1, 76, 77, 78, 79, 80, -1, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, -1, -1, 94, - 95, 96, -1, -1, -1, -1, -1, -1, -1, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, -1, - 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, - 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - -1, 156, -1, 158, 159, 160, 161, -1, 163, 164, - 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, - 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, - 185, -1, 187, 188, 189, 190, -1, 192, 193, 194, - 195, 196, 197, -1, 199, -1, 201, 202, 203, 204, - 205, 206, 207, -1, 209, -1, 211, -1, -1, 214, - -1, 216, 217, 218, 219, 220, -1, -1, 223, -1, - 225, 226, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, - 265, 266, -1, 268, -1, 270, 271, 272, 273, 274, - 275, -1, 277, 278, -1, -1, 281, 282, 283, -1, - -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, -1, 341, 342, -1, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, - 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, -1, 392, 393, -1, - 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, - -1, -1, 407, 408, 409, 410, 411, -1, 413, 414, - 415, 416, 417, 418, 419, 420, -1, 422, 423, 424, - 425, 426, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, -1, 438, -1, 440, 441, 442, 443, -1, - -1, 446, -1, -1, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 3, -1, 5, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, - 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, - 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, - 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, - 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, 71, 72, -1, -1, -1, 76, 77, - 78, 79, 80, -1, 82, 83, 84, -1, 86, 87, - 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, - -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, - 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, - 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, -1, - 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, - -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, - 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, - 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - -1, 209, -1, 211, -1, -1, 214, -1, 216, 217, - 218, 219, 220, -1, -1, 223, -1, 225, -1, -1, - 228, 229, 230, -1, -1, 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, - -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, - 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, - 278, 279, -1, 281, 282, 283, -1, -1, 286, 287, - -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, - 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, 392, 393, -1, 395, -1, 397, - 398, 399, 400, 401, -1, 403, 404, -1, -1, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, -1, -1, 423, 424, 425, 426, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, - 438, -1, 440, 441, 442, 443, -1, -1, 446, -1, - -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 3, -1, 5, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, - 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, - 31, 32, -1, -1, -1, -1, -1, 38, 39, -1, - 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, - 51, 52, -1, 54, 55, 56, 57, 58, 59, -1, - -1, 62, 63, 64, 65, 66, -1, 68, 69, 70, - 71, 72, -1, -1, -1, 76, 77, 78, 79, 80, - -1, 82, 83, 84, -1, 86, 87, 88, 89, 90, - 91, -1, -1, 94, 95, 96, -1, -1, -1, -1, - -1, -1, -1, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, -1, 115, -1, 117, 118, 119, 120, - 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, - 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, -1, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, -1, 156, -1, 158, 159, 160, - 161, -1, 163, -1, 165, -1, -1, -1, 169, 170, - 171, -1, 173, -1, 175, -1, 177, 178, -1, 180, - 181, 182, 183, 184, 185, -1, 187, 188, 189, 190, - -1, 192, 193, 194, 195, 196, 197, -1, 199, -1, - 201, 202, 203, 204, 205, 206, 207, -1, 209, -1, - 211, -1, -1, 214, -1, 216, 217, 218, 219, 220, - -1, -1, 223, -1, 225, -1, -1, 228, 229, 230, - -1, -1, 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, -1, 259, 260, - 261, 262, 263, -1, 265, 266, -1, 268, -1, 270, - 271, 272, 273, 274, 275, -1, 277, 278, -1, -1, - 281, 282, 283, -1, -1, 286, 287, -1, 289, -1, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, - 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, - -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - -1, 392, 393, -1, 395, -1, 397, 398, 399, 400, - 401, -1, 403, 404, -1, -1, 407, 408, 409, 410, - 411, -1, 413, 414, 415, 416, 417, 418, 419, 420, - -1, -1, 423, 424, 425, 426, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, 438, -1, 440, - 441, 442, 443, -1, -1, 446, -1, -1, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 3, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, @@ -219283,65 +218150,112 @@ static const yytype_int16 yycheck[] = 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, - -1, 395, -1, 397, 398, 399, 400, 401, -1, 403, - 404, -1, -1, 407, 408, 409, 410, 411, -1, 413, - 414, 415, 416, 417, 418, 419, 420, -1, -1, 423, - 424, 425, 426, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, -1, 438, -1, 440, 441, 442, 443, - -1, -1, 446, -1, -1, 449, 450, 451, 452, 453, + 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, + 394, -1, 396, -1, 398, 399, 400, 401, 402, -1, + 404, 405, -1, -1, 408, 409, 410, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + 424, 425, 426, 427, 428, -1, -1, 431, 432, 433, + 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, + 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 3, -1, 5, -1, + 464, 465, 466, 467, 468, 469, 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, - -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, - -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, - 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, - 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, - -1, 68, 69, 70, 71, 72, -1, -1, -1, 76, - 77, 78, 79, 80, -1, 82, 83, 84, -1, 86, - 87, 88, 89, 90, 91, -1, -1, 94, 95, 96, - -1, -1, -1, -1, -1, -1, -1, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, -1, 115, -1, - 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, - 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, -1, 156, - -1, 158, 159, 160, 161, -1, 163, -1, 165, -1, - -1, -1, 169, 170, 171, -1, 173, -1, 175, -1, - 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, - 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, - 197, -1, 199, -1, 201, 202, 203, 204, 205, 206, - 207, -1, 209, -1, 211, -1, -1, 214, -1, 216, - 217, 218, 219, 220, -1, -1, 223, -1, 225, -1, - -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, 265, 266, - -1, 268, -1, 270, 271, 272, 273, 274, 275, -1, - 277, 278, -1, 280, 281, 282, 283, -1, -1, 286, - 287, -1, 289, -1, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, -1, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, - 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, -1, 392, 393, -1, 395, -1, - 397, 398, 399, 400, 401, -1, 403, 404, -1, -1, - 407, 408, 409, 410, 411, -1, 413, 414, 415, 416, - 417, 418, 419, 420, -1, -1, 423, 424, 425, 426, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - -1, 438, -1, 440, 441, 442, 443, -1, -1, 446, - -1, -1, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, + 26, -1, 28, 29, 30, 31, 32, -1, -1, -1, + -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, + 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, + 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, + 66, -1, 68, 69, 70, 71, 72, -1, -1, -1, + 76, 77, 78, 79, 80, -1, 82, 83, 84, -1, + 86, 87, 88, 89, 90, 91, -1, -1, 94, 95, + 96, -1, -1, -1, -1, -1, -1, -1, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, -1, 115, + -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, + 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, + -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, -1, + 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, + -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, + -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, + -1, 187, 188, 189, 190, -1, 192, 193, 194, 195, + 196, 197, -1, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, -1, -1, 214, -1, + 216, 217, 218, 219, 220, -1, -1, 223, -1, 225, + -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, 265, + 266, -1, 268, -1, 270, 271, 272, 273, 274, 275, + -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, + 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, -1, 341, 342, -1, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, + 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, + -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, -1, 393, 394, -1, + 396, -1, 398, 399, 400, 401, 402, -1, 404, 405, + -1, -1, 408, 409, 410, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, 424, 425, + 426, 427, 428, -1, -1, 431, 432, 433, 434, 435, + 436, 437, -1, 439, -1, 441, 442, 443, 444, -1, + -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 3, -1, 5, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, + 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, + 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, + 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, + 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, + 68, 69, 70, 71, 72, -1, -1, -1, 76, 77, + 78, 79, 80, -1, 82, 83, 84, -1, 86, 87, + 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, + -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, + 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, + 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, -1, 156, -1, + 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, + -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, + 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, + 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, + -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, -1, -1, 214, -1, 216, 217, + 218, 219, 220, -1, -1, 223, -1, 225, -1, -1, + 228, 229, 230, -1, -1, 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, + -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, + 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, + 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, + -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, + 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, -1, 393, 394, 395, 396, -1, + 398, 399, 400, 401, 402, -1, 404, 405, -1, -1, + 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, 424, 425, 426, 427, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + -1, 439, -1, 441, 442, 443, 444, -1, -1, 447, + -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 3, 4, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, - 30, 31, 32, -1, -1, -1, -1, -1, 38, 39, + 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, 69, @@ -219377,155 +218291,15 @@ static const yytype_int16 yycheck[] = 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, -1, 395, -1, 397, 398, 399, - 400, 401, -1, 403, 404, -1, -1, 407, 408, 409, - 410, 411, -1, 413, 414, 415, 416, 417, 418, 419, - 420, -1, -1, 423, 424, 425, 426, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, -1, 438, -1, - 440, 441, 442, 443, -1, -1, 446, -1, -1, 449, + 390, 391, -1, 393, 394, -1, 396, -1, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, + 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 424, 425, 426, 427, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, -1, 439, + -1, 441, 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, - 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, - -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, - 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, - -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, - 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, - -1, -1, -1, 76, 77, 78, 79, 80, -1, 82, - 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, - -1, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, -1, 115, -1, 117, 118, 119, 120, 121, 122, - -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, -1, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, -1, 156, -1, 158, 159, 160, 161, -1, - 163, -1, 165, -1, -1, -1, 169, 170, 171, -1, - 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, - 183, 184, 185, -1, 187, 188, 189, 190, -1, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, -1, 209, -1, 211, -1, - -1, 214, -1, 216, 217, 218, 219, 220, -1, -1, - 223, -1, 225, -1, -1, 228, 229, 230, -1, -1, - 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, -1, 259, 260, 261, 262, - 263, -1, 265, 266, -1, 268, -1, 270, 271, 272, - 273, 274, 275, -1, 277, 278, -1, -1, 281, 282, - 283, -1, -1, 286, 287, -1, 289, -1, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, - -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, - 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, - 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, - 403, 404, -1, -1, 407, 408, 409, 410, 411, -1, - 413, 414, 415, 416, 417, 418, 419, 420, -1, -1, - 423, 424, 425, 426, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, -1, 438, -1, 440, 441, 442, - 443, -1, -1, 446, -1, -1, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 3, 4, -1, - -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, - 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, - -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, - 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, - 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, 72, -1, -1, -1, - 76, 77, 78, 79, 80, -1, 82, 83, 84, -1, - 86, 87, 88, 89, 90, 91, -1, -1, 94, 95, - 96, -1, -1, -1, -1, -1, -1, -1, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, -1, 115, - -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, - 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, -1, - 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, - -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, - -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, - -1, 187, 188, 189, 190, -1, 192, 193, 194, 195, - 196, 197, -1, 199, -1, 201, 202, 203, 204, 205, - 206, 207, -1, 209, -1, 211, -1, -1, 214, -1, - 216, 217, 218, 219, 220, -1, -1, 223, -1, 225, - -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, 265, - 266, -1, 268, -1, 270, 271, 272, 273, 274, 275, - -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, - 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, -1, 341, 342, -1, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, - 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, -1, 392, 393, -1, 395, - -1, 397, 398, 399, 400, 401, -1, 403, 404, -1, - -1, 407, 408, 409, 410, 411, -1, 413, 414, 415, - 416, 417, 418, 419, 420, -1, -1, 423, 424, 425, - 426, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, -1, 438, -1, 440, 441, 442, 443, -1, -1, - 446, -1, -1, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, - 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, - 49, -1, 51, 52, -1, 54, 55, 56, 57, 58, - 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, - 69, 70, 71, 72, -1, -1, -1, 76, 77, 78, - 79, 80, -1, 82, 83, 84, -1, 86, 87, 88, - 89, 90, 91, -1, -1, 94, 95, 96, -1, -1, - -1, -1, -1, -1, -1, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, -1, 115, -1, 117, 118, - 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, - -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, -1, 156, -1, 158, - 159, 160, 161, -1, 163, -1, 165, -1, -1, -1, - 169, 170, 171, -1, 173, -1, 175, -1, 177, 178, - -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, - 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, - 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, - 209, -1, 211, -1, -1, 214, -1, 216, 217, 218, - 219, 220, -1, -1, 223, -1, 225, -1, -1, 228, - 229, 230, -1, -1, 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, -1, - 259, 260, 261, 262, 263, -1, 265, 266, -1, 268, - -1, 270, 271, 272, 273, 274, 275, -1, 277, 278, - -1, -1, 281, 282, 283, -1, -1, 286, 287, -1, - 289, -1, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, -1, 341, 342, -1, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, - 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, -1, 392, 393, -1, 395, -1, 397, 398, - 399, 400, 401, -1, 403, 404, -1, -1, 407, 408, - 409, 410, 411, -1, 413, 414, 415, 416, 417, 418, - 419, 420, -1, -1, 423, 424, 425, 426, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, -1, 438, - -1, 440, 441, 442, 443, -1, -1, 446, -1, -1, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 3, -1, -1, -1, -1, -1, -1, -1, -1, + 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, @@ -219563,158 +218337,18 @@ static const yytype_int16 yycheck[] = 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, - 392, 393, -1, 395, -1, 397, 398, 399, 400, 401, - -1, 403, 404, -1, -1, 407, 408, 409, 410, 411, - -1, 413, 414, 415, 416, 417, 418, 419, 420, -1, - -1, 423, 424, 425, 426, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, -1, 438, -1, 440, 441, - 442, 443, -1, -1, 446, -1, -1, 449, 450, 451, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, -1, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, -1, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 3, -1, - 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, - 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, - -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, - 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, - 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, - 65, 66, -1, 68, 69, 70, 71, 72, -1, -1, - -1, 76, 77, 78, 79, 80, -1, 82, 83, 84, - -1, 86, 87, 88, 89, 90, 91, -1, -1, 94, - 95, 96, -1, -1, -1, -1, -1, -1, -1, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, -1, - 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, - 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - -1, 156, -1, 158, 159, 160, 161, -1, 163, -1, - 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, - 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, - 185, -1, 187, 188, 189, 190, -1, 192, 193, 194, - 195, 196, 197, -1, 199, -1, 201, 202, 203, 204, - 205, 206, 207, -1, 209, -1, 211, -1, -1, 214, - -1, 216, 217, 218, 219, 220, -1, -1, 223, -1, - 225, -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, - 265, 266, -1, 268, -1, 270, 271, 272, 273, 274, - 275, -1, 277, 278, -1, -1, 281, 282, 283, -1, - -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, -1, 341, 342, -1, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, - 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, -1, 392, 393, -1, - 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, - -1, -1, 407, 408, 409, 410, 411, -1, 413, 414, - 415, 416, 417, 418, 419, 420, -1, -1, 423, 424, - 425, 426, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, -1, 438, -1, 440, 441, 442, 443, -1, - -1, 446, -1, -1, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 3, -1, 5, -1, -1, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, - 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, - 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, - 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, - 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, 71, 72, -1, -1, -1, 76, 77, - 78, 79, 80, -1, 82, 83, 84, -1, 86, 87, - 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, - -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, - 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, - 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, -1, 156, -1, - 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, - -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, - 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, - 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, - -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, - -1, 209, -1, 211, -1, -1, 214, -1, 216, 217, - 218, 219, 220, -1, -1, 223, -1, 225, -1, -1, - 228, 229, 230, -1, -1, 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, - -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, - 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, - 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, - -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, - 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, 392, 393, -1, 395, -1, 397, - 398, 399, 400, 401, -1, 403, 404, -1, -1, 407, - 408, 409, 410, 411, -1, 413, 414, 415, 416, 417, - 418, 419, 420, -1, -1, 423, 424, 425, 426, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, - 438, -1, 440, 441, 442, 443, -1, -1, 446, -1, - -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 3, -1, 5, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, - 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, - -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, - 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, - 51, 52, -1, 54, 55, 56, 57, 58, 59, -1, - -1, 62, 63, 64, 65, 66, -1, 68, 69, 70, - 71, 72, -1, -1, -1, 76, 77, 78, 79, 80, - -1, 82, 83, 84, -1, 86, 87, 88, 89, 90, - 91, -1, -1, 94, 95, 96, -1, -1, -1, -1, - -1, -1, -1, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, -1, 115, -1, 117, 118, 119, 120, - 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, - 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, -1, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, -1, 156, -1, 158, 159, 160, - 161, -1, 163, -1, 165, -1, -1, -1, 169, 170, - 171, -1, 173, -1, 175, -1, 177, 178, -1, 180, - 181, 182, 183, 184, 185, -1, 187, 188, 189, 190, - -1, 192, 193, 194, 195, 196, 197, -1, 199, -1, - 201, 202, 203, 204, 205, 206, 207, -1, 209, -1, - 211, -1, -1, 214, -1, 216, 217, 218, 219, 220, - -1, -1, 223, -1, 225, -1, -1, 228, 229, 230, - -1, -1, 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, -1, 259, 260, - 261, 262, 263, -1, 265, 266, -1, 268, -1, 270, - 271, 272, 273, 274, 275, -1, 277, 278, -1, -1, - 281, 282, 283, -1, -1, 286, 287, -1, 289, -1, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, - 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, - -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - -1, 392, 393, -1, 395, -1, 397, 398, 399, 400, - 401, -1, 403, 404, -1, -1, 407, 408, 409, 410, - 411, -1, 413, 414, 415, 416, 417, 418, 419, 420, - -1, -1, 423, 424, 425, 426, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, 438, -1, 440, - 441, 442, 443, -1, -1, 446, -1, -1, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 3, - -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, - 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, + 24, 25, 26, 27, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, @@ -219750,62 +218384,109 @@ static const yytype_int16 yycheck[] = 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, - -1, 395, -1, 397, 398, 399, 400, 401, -1, 403, - 404, -1, -1, 407, 408, 409, 410, 411, -1, 413, - 414, 415, 416, 417, 418, 419, 420, -1, -1, 423, - 424, 425, 426, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, -1, 438, -1, 440, 441, 442, 443, - -1, -1, 446, -1, -1, 449, 450, 451, 452, 453, + 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, + 394, -1, 396, -1, 398, 399, 400, 401, 402, -1, + 404, 405, -1, -1, 408, 409, 410, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + 424, 425, 426, 427, 428, -1, -1, 431, 432, 433, + 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, + 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 3, -1, -1, -1, + 464, 465, 466, 467, 468, 469, 470, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, -1, -1, -1, -1, -1, -1, - -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, - 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, - 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, - -1, 68, 69, 70, 71, 72, -1, -1, -1, 76, - 77, 78, 79, 80, -1, 82, 83, 84, -1, 86, - 87, 88, 89, 90, 91, -1, -1, 94, 95, 96, - -1, -1, -1, -1, -1, -1, -1, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, -1, 115, -1, - 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, - 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, -1, 156, - -1, 158, 159, 160, 161, -1, 163, -1, 165, -1, - -1, -1, 169, 170, 171, -1, 173, -1, 175, -1, - 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, - 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, - 197, -1, 199, -1, 201, 202, 203, 204, 205, 206, - 207, -1, 209, -1, 211, -1, -1, 214, -1, 216, - 217, 218, 219, 220, -1, -1, 223, -1, 225, -1, - -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, 265, 266, - -1, 268, -1, 270, 271, 272, 273, 274, 275, -1, - 277, 278, -1, -1, 281, 282, 283, -1, -1, 286, - 287, -1, 289, -1, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, -1, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, - 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, -1, 392, 393, -1, 395, -1, - 397, 398, 399, 400, 401, -1, 403, 404, -1, -1, - 407, 408, 409, 410, 411, -1, 413, 414, 415, 416, - 417, 418, 419, 420, -1, -1, 423, 424, 425, 426, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - -1, 438, -1, 440, 441, 442, 443, -1, -1, 446, - -1, -1, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 3, -1, 5, -1, -1, -1, -1, + -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, + 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, + -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, + 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, + 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, + 66, -1, 68, 69, 70, 71, 72, -1, -1, -1, + 76, 77, 78, 79, 80, -1, 82, 83, 84, -1, + 86, 87, 88, 89, 90, 91, -1, -1, 94, 95, + 96, -1, -1, -1, -1, -1, -1, -1, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, -1, 115, + -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, + 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, + -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, -1, + 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, + -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, + -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, + -1, 187, 188, 189, 190, -1, 192, 193, 194, 195, + 196, 197, -1, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, -1, -1, 214, -1, + 216, 217, 218, 219, 220, -1, -1, 223, -1, 225, + -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, 265, + 266, -1, 268, -1, 270, 271, 272, 273, 274, 275, + -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, + 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, -1, 341, 342, -1, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, + 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, + -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, -1, 393, 394, -1, + 396, -1, 398, 399, 400, 401, 402, -1, 404, 405, + -1, -1, 408, 409, 410, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, 424, 425, + 426, 427, 428, -1, -1, 431, 432, 433, 434, 435, + 436, 437, -1, 439, -1, 441, 442, 443, 444, -1, + -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 3, -1, 5, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, + 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, + 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, + 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, + 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, + 68, 69, 70, 71, 72, -1, -1, -1, 76, 77, + 78, 79, 80, -1, 82, 83, 84, -1, 86, 87, + 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, + -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, + 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, + 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, -1, 156, -1, + 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, + -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, + 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, + 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, + -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, -1, -1, 214, -1, 216, 217, + 218, 219, 220, -1, -1, 223, -1, 225, -1, -1, + 228, 229, 230, -1, -1, 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, + -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, + 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, + 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, + -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, + 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, -1, 393, 394, -1, 396, -1, + 398, 399, 400, 401, 402, -1, 404, 405, -1, -1, + 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, 424, 425, 426, 427, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + -1, 439, -1, 441, 442, 443, 444, -1, -1, 447, + -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, @@ -219844,61 +218525,108 @@ static const yytype_int16 yycheck[] = 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, -1, 395, -1, 397, 398, 399, - 400, 401, -1, 403, 404, -1, -1, 407, 408, 409, - 410, 411, -1, 413, 414, 415, 416, 417, 418, 419, - 420, -1, -1, 423, 424, 425, 426, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, -1, 438, -1, - 440, 441, 442, 443, -1, -1, 446, -1, -1, 449, + 390, 391, -1, 393, 394, -1, 396, -1, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, + 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 424, 425, 426, 427, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, -1, 439, + -1, 441, 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, - 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, - -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, - 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, - -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, - 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, - -1, -1, -1, 76, 77, 78, 79, 80, -1, 82, - 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, - -1, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, -1, 115, -1, 117, 118, 119, 120, 121, 122, - -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, -1, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, -1, 156, -1, 158, 159, 160, 161, -1, - 163, -1, 165, -1, -1, -1, 169, 170, 171, -1, - 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, - 183, 184, 185, -1, 187, 188, 189, 190, -1, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, -1, 209, -1, 211, -1, - -1, 214, -1, 216, 217, 218, 219, 220, -1, -1, - 223, -1, 225, -1, -1, 228, 229, 230, -1, -1, - 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, -1, 259, 260, 261, 262, - 263, -1, 265, 266, -1, 268, -1, 270, 271, 272, - 273, 274, 275, -1, 277, 278, -1, -1, 281, 282, - 283, -1, -1, 286, 287, -1, 289, -1, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, - -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, - 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, - 393, -1, 395, -1, 397, 398, 399, 400, 401, -1, - 403, 404, -1, -1, 407, 408, 409, 410, 411, -1, - 413, 414, 415, 416, 417, 418, 419, 420, -1, -1, - 423, 424, 425, 426, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, -1, 438, -1, 440, 441, 442, - 443, -1, -1, 446, -1, -1, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 3, -1, 5, + 470, 3, -1, 5, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, + 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, + -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, + 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, + 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, + 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 72, -1, -1, -1, 76, 77, 78, 79, 80, -1, + 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, + -1, -1, 94, 95, 96, -1, -1, -1, -1, -1, + -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, + 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, + 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, + -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, + -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, + 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, + 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + -1, -1, 214, -1, 216, 217, 218, 219, 220, -1, + -1, 223, -1, 225, -1, -1, 228, 229, 230, -1, + -1, 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, -1, 259, 260, 261, + 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, + 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, + 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, + 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, -1, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, -1, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, -1, -1, -1, + -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, + -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, + 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, + 64, 65, 66, -1, 68, 69, 70, 71, 72, -1, + -1, -1, 76, 77, 78, 79, 80, -1, 82, 83, + 84, -1, 86, 87, 88, 89, 90, 91, -1, -1, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, + 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, + 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, -1, 156, -1, 158, 159, 160, 161, -1, 163, + -1, 165, -1, -1, -1, 169, 170, 171, -1, 173, + -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, + 184, 185, -1, 187, 188, 189, 190, -1, 192, 193, + 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, -1, -1, + 214, -1, 216, 217, 218, 219, 220, -1, -1, 223, + -1, 225, -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, + -1, 265, 266, -1, 268, -1, 270, 271, 272, 273, + 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, + -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, -1, 341, 342, -1, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, + 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, + 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, + 394, -1, 396, -1, 398, 399, 400, 401, 402, -1, + 404, 405, -1, -1, 408, 409, 410, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + 424, 425, 426, 427, 428, -1, -1, 431, 432, 433, + 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, + 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, @@ -219937,62 +218665,109 @@ static const yytype_int16 yycheck[] = 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, -1, 392, 393, -1, 395, - -1, 397, 398, 399, 400, 401, -1, 403, 404, -1, - -1, 407, 408, 409, 410, 411, -1, 413, 414, 415, - 416, 417, 418, 419, 420, -1, -1, 423, 424, 425, - 426, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, -1, 438, -1, 440, 441, 442, 443, -1, -1, - 446, -1, -1, 449, 450, 451, 452, 453, 454, 455, + 386, 387, 388, 389, 390, 391, -1, 393, 394, -1, + 396, -1, 398, 399, 400, 401, 402, -1, 404, 405, + -1, -1, 408, 409, 410, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, 424, 425, + 426, 427, 428, -1, -1, 431, 432, 433, 434, 435, + 436, 437, -1, 439, -1, 441, 442, 443, 444, -1, + -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 3, -1, -1, -1, -1, -1, + 466, 467, 468, 469, 470, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, - 29, 30, -1, -1, -1, -1, -1, 36, -1, 38, - 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, - 49, -1, 51, 52, -1, 54, 55, 56, 57, 58, - 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, - 69, 70, 71, 72, -1, -1, -1, 76, 77, 78, - 79, 80, -1, 82, 83, 84, -1, 86, 87, 88, - 89, 90, 91, -1, -1, 94, 95, 96, -1, -1, - -1, -1, -1, -1, -1, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, -1, 115, -1, 117, 118, - 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, - -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, -1, 156, -1, 158, - 159, 160, 161, -1, 163, -1, 165, -1, -1, -1, - 169, 170, 171, -1, 173, -1, 175, -1, 177, 178, - -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, - 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, - 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, - 209, -1, 211, -1, -1, 214, -1, 216, 217, 218, - 219, 220, -1, -1, 223, -1, 225, -1, -1, 228, - 229, 230, -1, -1, 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, -1, - 259, 260, 261, 262, 263, -1, 265, 266, -1, 268, - -1, 270, 271, 272, 273, 274, 275, -1, 277, 278, - -1, -1, 281, 282, 283, -1, -1, 286, 287, -1, - 289, -1, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, -1, 341, 342, -1, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, - 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, -1, 392, 393, -1, 395, -1, 397, 398, - 399, 400, 401, -1, 403, 404, -1, -1, 407, 408, - 409, 410, 411, -1, 413, 414, 415, 416, 417, 418, - 419, 420, -1, -1, 423, 424, 425, 426, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, -1, 438, - -1, 440, 441, 442, 443, -1, -1, 446, -1, -1, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, + 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, + 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, + 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, + 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, + 68, 69, 70, 71, 72, -1, -1, -1, 76, 77, + 78, 79, 80, -1, 82, 83, 84, -1, 86, 87, + 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, + -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, + 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, + 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, -1, 156, -1, + 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, + -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, + 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, + 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, + -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, -1, -1, 214, -1, 216, 217, + 218, 219, 220, -1, -1, 223, -1, 225, -1, -1, + 228, 229, 230, -1, -1, 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, + -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, + 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, + 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, + -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, + 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, -1, 393, 394, -1, 396, -1, + 398, 399, 400, 401, 402, -1, 404, 405, -1, -1, + 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, 424, 425, 426, 427, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + -1, 439, -1, 441, 442, 443, 444, -1, -1, 447, + -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 3, -1, 5, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, + 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, + 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, + -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, + -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, + -1, -1, 62, 63, 64, 65, 66, -1, 68, 69, + 70, 71, 72, -1, -1, -1, 76, 77, 78, 79, + 80, -1, 82, 83, 84, -1, 86, 87, 88, 89, + 90, 91, -1, -1, 94, 95, 96, -1, -1, -1, + -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, + 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, + -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, -1, 156, -1, 158, 159, + 160, 161, -1, 163, -1, 165, -1, -1, -1, 169, + 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, + 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, + 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, -1, -1, 214, -1, 216, 217, 218, 219, + 220, -1, -1, 223, -1, 225, -1, -1, 228, 229, + 230, -1, -1, 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, -1, 259, + 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, + 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, + -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, + -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + -1, 341, 342, -1, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, + 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, + 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, -1, 393, 394, -1, 396, -1, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, + 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 424, 425, 426, 427, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, -1, 439, + -1, 441, 442, 443, 444, -1, -1, 447, -1, -1, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, 36, -1, 38, 39, -1, 41, @@ -220030,62 +218805,109 @@ static const yytype_int16 yycheck[] = 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, - 392, 393, -1, 395, -1, 397, 398, 399, 400, 401, - -1, 403, 404, -1, -1, 407, 408, 409, 410, 411, - -1, 413, 414, 415, 416, 417, 418, 419, 420, -1, - -1, 423, 424, 425, 426, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, -1, 438, -1, 440, 441, - 442, 443, -1, -1, 446, -1, -1, 449, 450, 451, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, -1, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, -1, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 3, -1, - 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, - 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, - -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, - 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, - 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, - 65, 66, -1, 68, 69, 70, 71, 72, -1, -1, - -1, 76, 77, 78, 79, 80, -1, 82, 83, 84, - -1, 86, 87, 88, 89, 90, 91, -1, -1, 94, - 95, 96, -1, -1, -1, -1, -1, -1, -1, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, -1, - 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, - 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - -1, 156, -1, 158, 159, 160, 161, -1, 163, -1, - 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, - 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, - 185, -1, 187, 188, 189, 190, -1, 192, 193, 194, - 195, 196, 197, -1, 199, -1, 201, 202, 203, 204, - 205, 206, 207, -1, 209, -1, 211, -1, -1, 214, - -1, 216, 217, 218, 219, 220, -1, -1, 223, -1, - 225, -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, - 265, 266, -1, 268, -1, 270, 271, 272, 273, 274, - 275, -1, 277, 278, -1, -1, 281, 282, 283, -1, - -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, -1, 341, 342, -1, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, - 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, -1, 392, 393, -1, - 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, - -1, -1, 407, 408, 409, 410, 411, -1, 413, 414, - 415, 416, 417, 418, 419, 420, -1, -1, 423, 424, - 425, 426, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, -1, 438, -1, 440, 441, 442, 443, -1, - -1, 446, -1, -1, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 3, -1, -1, -1, -1, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, + 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, + -1, -1, 36, -1, 38, 39, -1, 41, 42, 43, + -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, + 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, + 64, 65, 66, -1, 68, 69, 70, 71, 72, -1, + -1, -1, 76, 77, 78, 79, 80, -1, 82, 83, + 84, -1, 86, 87, 88, 89, 90, 91, -1, -1, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, + 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, + 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, -1, 156, -1, 158, 159, 160, 161, -1, 163, + -1, 165, -1, -1, -1, 169, 170, 171, -1, 173, + -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, + 184, 185, -1, 187, 188, 189, 190, -1, 192, 193, + 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, -1, -1, + 214, -1, 216, 217, 218, 219, 220, -1, -1, 223, + -1, 225, -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, + -1, 265, 266, -1, 268, -1, 270, 271, 272, 273, + 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, + -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, -1, 341, 342, -1, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, + 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, + 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, + 394, -1, 396, -1, 398, 399, 400, 401, 402, -1, + 404, 405, -1, -1, 408, 409, 410, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + 424, 425, 426, 427, 428, -1, -1, 431, 432, 433, + 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, + 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 3, -1, 5, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, + 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, + -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, + 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, + 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, + 66, -1, 68, 69, 70, 71, 72, -1, -1, -1, + 76, 77, 78, 79, 80, -1, 82, 83, 84, -1, + 86, 87, 88, 89, 90, 91, -1, -1, 94, 95, + 96, -1, -1, -1, -1, -1, -1, -1, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, -1, 115, + -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, + 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, + -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, -1, + 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, + -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, + -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, + -1, 187, 188, 189, 190, -1, 192, 193, 194, 195, + 196, 197, -1, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, -1, -1, 214, -1, + 216, 217, 218, 219, 220, -1, -1, 223, -1, 225, + -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, 265, + 266, -1, 268, -1, 270, 271, 272, 273, 274, 275, + -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, + 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, -1, 341, 342, -1, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, + 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, + -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, -1, 393, 394, -1, + 396, -1, 398, 399, 400, 401, 402, -1, 404, 405, + -1, -1, 408, 409, 410, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, 424, 425, + 426, 427, 428, -1, -1, 431, 432, 433, 434, 435, + 436, 437, -1, 439, -1, 441, 442, 443, 444, -1, + -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, @@ -220124,61 +218946,108 @@ static const yytype_int16 yycheck[] = 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, 392, 393, -1, 395, -1, 397, - 398, 399, 400, 401, -1, 403, 404, -1, -1, 407, - 408, 409, 410, 411, -1, 413, 414, 415, 416, 417, - 418, 419, 420, -1, -1, 423, 424, 425, 426, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, - 438, -1, 440, 441, 442, 443, -1, -1, 446, -1, - -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 388, 389, 390, 391, -1, 393, 394, -1, 396, -1, + 398, 399, 400, 401, 402, -1, 404, 405, -1, -1, + 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, 424, 425, 426, 427, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + -1, 439, -1, 441, 442, 443, 444, -1, -1, 447, + -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, - 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, - -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, - 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, - 51, 52, -1, 54, 55, 56, 57, 58, 59, -1, - -1, 62, 63, 64, 65, 66, -1, 68, 69, 70, - 71, 72, -1, -1, -1, 76, 77, 78, 79, 80, - -1, 82, 83, 84, -1, 86, 87, 88, 89, 90, - 91, -1, -1, 94, 95, 96, -1, -1, -1, -1, - -1, -1, -1, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, -1, 115, -1, 117, 118, 119, 120, - 121, 122, -1, 124, 125, 126, 127, 128, -1, -1, - 131, 132, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, -1, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, -1, 156, -1, 158, 159, 160, - 161, -1, 163, -1, 165, -1, -1, -1, 169, 170, - 171, -1, 173, -1, 175, -1, 177, 178, -1, 180, - 181, 182, 183, 184, 185, -1, 187, 188, 189, 190, - -1, 192, 193, 194, 195, 196, 197, -1, 199, -1, - 201, 202, 203, 204, 205, 206, 207, -1, 209, -1, - 211, -1, -1, 214, -1, 216, 217, 218, 219, 220, - -1, -1, 223, -1, 225, -1, -1, 228, 229, 230, - -1, -1, 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, -1, 259, 260, - 261, 262, 263, -1, 265, 266, -1, 268, -1, 270, - 271, 272, 273, 274, 275, -1, 277, 278, -1, -1, - 281, 282, 283, -1, -1, 286, 287, -1, 289, -1, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, - 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, - -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - -1, 392, 393, -1, 395, -1, 397, 398, 399, 400, - 401, -1, 403, 404, -1, -1, 407, 408, 409, 410, - 411, -1, 413, 414, 415, 416, 417, 418, 419, 420, - -1, -1, 423, 424, 425, 426, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, 438, -1, 440, - 441, 442, 443, -1, -1, 446, -1, -1, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 3, + 468, 469, 470, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, + 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, + 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, + -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, + -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, + -1, -1, 62, 63, 64, 65, 66, -1, 68, 69, + 70, 71, 72, -1, -1, -1, 76, 77, 78, 79, + 80, -1, 82, 83, 84, -1, 86, 87, 88, 89, + 90, 91, -1, -1, 94, 95, 96, -1, -1, -1, + -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, + 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, + -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, -1, 156, -1, 158, 159, + 160, 161, -1, 163, -1, 165, -1, -1, -1, 169, + 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, + 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, + 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, -1, -1, 214, -1, 216, 217, 218, 219, + 220, -1, -1, 223, -1, 225, -1, -1, 228, 229, + 230, -1, -1, 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, -1, 259, + 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, + 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, + -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, + -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + -1, 341, 342, -1, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, + 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, + 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, -1, 393, 394, -1, 396, -1, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, + 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 424, 425, 426, 427, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, -1, 439, + -1, 441, 442, 443, 444, -1, -1, 447, -1, -1, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, + 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, + -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, + 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, + 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, + 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 72, -1, -1, -1, 76, 77, 78, 79, 80, -1, + 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, + -1, -1, 94, 95, 96, -1, -1, -1, -1, -1, + -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, + 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, + 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, + -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, + -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, + 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, + 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + -1, -1, 214, -1, 216, 217, 218, 219, 220, -1, + -1, 223, -1, 225, -1, -1, 228, 229, 230, -1, + -1, 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, -1, 259, 260, 261, + 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, + 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, + 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, + 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, -1, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, -1, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, @@ -220217,62 +219086,109 @@ static const yytype_int16 yycheck[] = 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, - -1, 395, -1, 397, 398, 399, 400, 401, -1, 403, - 404, -1, -1, 407, 408, 409, 410, 411, -1, 413, - 414, 415, 416, 417, 418, 419, 420, -1, -1, 423, - 424, 425, 426, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, -1, 438, -1, 440, 441, 442, 443, - -1, -1, 446, -1, -1, 449, 450, 451, 452, 453, + 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, + 394, -1, 396, -1, 398, 399, 400, 401, 402, -1, + 404, 405, -1, -1, 408, 409, 410, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + 424, 425, 426, 427, 428, -1, -1, 431, 432, 433, + 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, + 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 3, -1, -1, -1, + 464, 465, 466, 467, 468, 469, 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, - -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, - -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, - 47, 48, 49, -1, 51, 52, -1, 54, 55, 56, - 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, - -1, 68, 69, 70, 71, 72, -1, -1, -1, 76, - 77, 78, 79, 80, -1, 82, 83, 84, -1, 86, - 87, 88, 89, 90, 91, -1, -1, 94, 95, 96, - -1, -1, -1, -1, -1, -1, -1, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, -1, 115, -1, - 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, - 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, -1, 156, - -1, 158, 159, 160, 161, -1, 163, -1, 165, -1, - -1, -1, 169, 170, 171, -1, 173, -1, 175, -1, - 177, 178, -1, 180, 181, 182, 183, 184, 185, -1, - 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, - 197, -1, 199, -1, 201, 202, 203, 204, 205, 206, - 207, -1, 209, -1, 211, -1, -1, 214, -1, 216, - 217, 218, 219, 220, -1, -1, 223, -1, 225, -1, - -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, 265, 266, - -1, 268, -1, 270, 271, 272, 273, 274, 275, -1, - 277, 278, -1, -1, 281, 282, 283, -1, -1, 286, - 287, -1, 289, -1, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, -1, 341, 342, -1, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, - 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, -1, 392, 393, -1, 395, -1, - 397, 398, 399, 400, 401, -1, 403, 404, -1, -1, - 407, 408, 409, 410, 411, -1, 413, 414, 415, 416, - 417, 418, 419, 420, -1, -1, 423, 424, 425, 426, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - -1, 438, -1, 440, 441, 442, 443, -1, -1, 446, - -1, -1, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, + 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, + -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, + 46, 47, 48, 49, -1, 51, 52, -1, 54, 55, + 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, + 66, -1, 68, 69, 70, 71, 72, -1, -1, -1, + 76, 77, 78, 79, 80, -1, 82, 83, 84, -1, + 86, 87, 88, 89, 90, 91, -1, -1, 94, 95, + 96, -1, -1, -1, -1, -1, -1, -1, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, -1, 115, + -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, + 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, + -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, -1, + 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, + -1, -1, -1, 169, 170, 171, -1, 173, -1, 175, + -1, 177, 178, -1, 180, 181, 182, 183, 184, 185, + -1, 187, 188, 189, 190, -1, 192, 193, 194, 195, + 196, 197, -1, 199, -1, 201, 202, 203, 204, 205, + 206, 207, -1, 209, -1, 211, -1, -1, 214, -1, + 216, 217, 218, 219, 220, -1, -1, 223, -1, 225, + -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, 265, + 266, -1, 268, -1, 270, 271, 272, 273, 274, 275, + -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, + 286, 287, -1, 289, -1, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, -1, 303, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, -1, 341, 342, -1, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, + 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, + -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, -1, 393, 394, -1, + 396, -1, 398, 399, 400, 401, 402, -1, 404, 405, + -1, -1, 408, 409, 410, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, 424, 425, + 426, 427, 428, -1, -1, 431, 432, 433, 434, 435, + 436, 437, -1, 439, -1, 441, 442, 443, 444, -1, + -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, + 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, + 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, + 48, 49, -1, 51, 52, -1, 54, 55, 56, 57, + 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, + 68, 69, 70, 71, 72, -1, -1, -1, 76, 77, + 78, 79, 80, -1, 82, 83, 84, -1, 86, 87, + 88, 89, 90, 91, -1, -1, 94, 95, 96, -1, + -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, + 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, + 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, + 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, -1, 156, -1, + 158, 159, 160, 161, -1, 163, -1, 165, -1, -1, + -1, 169, 170, 171, -1, 173, -1, 175, -1, 177, + 178, -1, 180, 181, 182, 183, 184, 185, -1, 187, + 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, + -1, 199, -1, 201, 202, 203, 204, 205, 206, 207, + -1, 209, -1, 211, -1, -1, 214, -1, 216, 217, + 218, 219, 220, -1, -1, 223, -1, 225, -1, -1, + 228, 229, 230, -1, -1, 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, + -1, 259, 260, 261, 262, 263, -1, 265, 266, -1, + 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, + 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, + -1, 289, -1, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, -1, 341, 342, -1, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, + 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, -1, 393, 394, -1, 396, -1, + 398, 399, 400, 401, 402, -1, 404, 405, -1, -1, + 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, 424, 425, 426, 427, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + -1, 439, -1, 441, 442, 443, 444, -1, -1, 447, + -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, @@ -220311,61 +219227,108 @@ static const yytype_int16 yycheck[] = 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, -1, 395, -1, 397, 398, 399, - 400, 401, -1, 403, 404, -1, -1, 407, 408, 409, - 410, 411, -1, 413, 414, 415, 416, 417, 418, 419, - 420, -1, -1, 423, 424, 425, 426, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, -1, 438, -1, - 440, 441, 442, 443, -1, -1, 446, -1, -1, 449, + 390, 391, -1, 393, 394, -1, 396, -1, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, + 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 424, 425, 426, 427, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, -1, 439, + -1, 441, 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, - 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, - -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, - 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, - -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, - 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, - -1, -1, -1, 76, 77, 78, 79, 80, -1, 82, - 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, - -1, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, -1, 115, -1, 117, 118, 119, 120, 121, 122, - -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, -1, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, -1, 156, -1, 158, 159, 160, 161, -1, - 163, -1, 165, -1, -1, -1, 169, 170, 171, -1, - 173, -1, 175, -1, 177, 178, -1, 180, 181, 182, - 183, 184, 185, -1, 187, 188, 189, 190, -1, 192, - 193, 194, 195, 196, 197, -1, 199, -1, 201, 202, - 203, 204, 205, 206, 207, -1, 209, -1, 211, -1, - -1, 214, -1, 216, 217, 218, 219, 220, -1, -1, - 223, -1, 225, -1, -1, 228, 229, 230, -1, -1, - 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, -1, 259, 260, 261, 262, - 263, -1, 265, 266, -1, 268, -1, 270, 271, 272, - 273, 274, 275, -1, 277, 278, -1, -1, 281, 282, - 283, -1, -1, 286, 287, -1, 289, -1, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, - -1, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, - 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, - 393, -1, 395, -1, 397, 398, 399, 400, 401, -1, - 403, 404, -1, -1, 407, 408, 409, 410, 411, -1, - 413, 414, 415, 416, 417, 418, 419, 420, -1, -1, - 423, 424, 425, 426, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, -1, 438, -1, 440, 441, 442, - 443, -1, -1, 446, -1, -1, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 3, -1, -1, + 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, + 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, + -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, + 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, + 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, + 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 72, -1, -1, -1, 76, 77, 78, 79, 80, -1, + 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, + -1, -1, 94, 95, 96, -1, -1, -1, -1, -1, + -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, + 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, + 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, + -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, + -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, + 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, + 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + -1, -1, 214, -1, 216, 217, 218, 219, 220, -1, + -1, 223, -1, 225, -1, -1, 228, 229, 230, -1, + -1, 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, -1, 259, 260, 261, + 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, + 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, + 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, + 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, -1, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, -1, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, + 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, + -1, -1, 36, -1, 38, 39, -1, 41, 42, 43, + -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, + 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, + 64, 65, 66, -1, 68, 69, 70, 71, 72, -1, + -1, -1, 76, 77, 78, 79, 80, -1, 82, 83, + 84, -1, 86, 87, 88, 89, 90, 91, -1, -1, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, + 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, + 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, -1, 156, -1, 158, 159, 160, 161, -1, 163, + -1, 165, -1, -1, -1, 169, 170, 171, -1, 173, + -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, + 184, 185, -1, 187, 188, 189, 190, -1, 192, 193, + 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, -1, -1, + 214, -1, 216, 217, 218, 219, 220, -1, -1, 223, + -1, 225, -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, + -1, 265, 266, -1, 268, -1, 270, 271, 272, 273, + 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, + -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, -1, 341, 342, -1, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, + 364, -1, -1, 367, 368, 369, 370, -1, 372, 373, + 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, -1, 393, + 394, -1, 396, -1, 398, 399, 400, 401, 402, -1, + 404, 405, -1, -1, 408, 409, 410, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + 424, 425, 426, 427, 428, -1, -1, 431, 432, 433, + 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, + 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, @@ -220404,155 +219367,15 @@ static const yytype_int16 yycheck[] = 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, -1, 392, 393, -1, 395, - -1, 397, 398, 399, 400, 401, -1, 403, 404, -1, - -1, 407, 408, 409, 410, 411, -1, 413, 414, 415, - 416, 417, 418, 419, 420, -1, -1, 423, 424, 425, - 426, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, -1, 438, -1, 440, 441, 442, 443, -1, -1, - 446, -1, -1, 449, 450, 451, 452, 453, 454, 455, + 386, 387, 388, 389, 390, 391, -1, 393, 394, -1, + 396, -1, 398, 399, 400, 401, 402, -1, 404, 405, + -1, -1, 408, 409, 410, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, 424, 425, + 426, 427, 428, -1, -1, 431, 432, 433, 434, 435, + 436, 437, -1, 439, -1, 441, 442, 443, 444, -1, + -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, - 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, - 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, - 49, -1, 51, 52, -1, 54, 55, 56, 57, 58, - 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, - 69, 70, 71, 72, -1, -1, -1, 76, 77, 78, - 79, 80, -1, 82, 83, 84, -1, 86, 87, 88, - 89, 90, 91, -1, -1, 94, 95, 96, -1, -1, - -1, -1, -1, -1, -1, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, -1, 115, -1, 117, 118, - 119, 120, 121, 122, -1, 124, 125, 126, 127, 128, - -1, -1, 131, 132, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, -1, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, -1, 156, -1, 158, - 159, 160, 161, -1, 163, -1, 165, -1, -1, -1, - 169, 170, 171, -1, 173, -1, 175, -1, 177, 178, - -1, 180, 181, 182, 183, 184, 185, -1, 187, 188, - 189, 190, -1, 192, 193, 194, 195, 196, 197, -1, - 199, -1, 201, 202, 203, 204, 205, 206, 207, -1, - 209, -1, 211, -1, -1, 214, -1, 216, 217, 218, - 219, 220, -1, -1, 223, -1, 225, -1, -1, 228, - 229, 230, -1, -1, 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, -1, - 259, 260, 261, 262, 263, -1, 265, 266, -1, 268, - -1, 270, 271, 272, 273, 274, 275, -1, 277, 278, - -1, -1, 281, 282, 283, -1, -1, 286, 287, -1, - 289, -1, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, -1, 341, 342, -1, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, - 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, -1, 392, 393, -1, 395, -1, 397, 398, - 399, 400, 401, -1, 403, 404, -1, -1, 407, 408, - 409, 410, 411, -1, 413, 414, 415, 416, 417, 418, - 419, 420, -1, -1, 423, 424, 425, 426, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, -1, 438, - -1, 440, 441, 442, 443, -1, -1, 446, -1, -1, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, - 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, - -1, -1, -1, -1, 36, -1, 38, 39, -1, 41, - 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, - 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, - 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, - 72, -1, -1, -1, 76, 77, 78, 79, 80, -1, - 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, - -1, -1, 94, 95, 96, -1, -1, -1, -1, -1, - -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, - 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, - 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, - -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, - -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, - 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, - 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, - 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, - -1, -1, 214, -1, 216, 217, 218, 219, 220, -1, - -1, 223, -1, 225, -1, -1, 228, 229, 230, -1, - -1, 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, -1, 259, 260, 261, - 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, - 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, - 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, - 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, - 362, 363, 364, -1, -1, 367, 368, 369, 370, -1, - 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, - 392, 393, -1, 395, -1, 397, 398, 399, 400, 401, - -1, 403, 404, -1, -1, 407, 408, 409, 410, 411, - -1, 413, 414, 415, 416, 417, 418, 419, 420, -1, - -1, 423, 424, 425, 426, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, -1, 438, -1, 440, 441, - 442, 443, -1, -1, 446, -1, -1, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, - 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, - -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, - 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, - 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, - 65, 66, -1, 68, 69, 70, 71, 72, -1, -1, - -1, 76, 77, 78, 79, 80, -1, 82, 83, 84, - -1, 86, 87, 88, 89, 90, 91, -1, -1, 94, - 95, 96, -1, -1, -1, -1, -1, -1, -1, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, -1, - 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, - 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - -1, 156, -1, 158, 159, 160, 161, -1, 163, -1, - 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, - 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, - 185, -1, 187, 188, 189, 190, -1, 192, 193, 194, - 195, 196, 197, -1, 199, -1, 201, 202, 203, 204, - 205, 206, 207, -1, 209, -1, 211, -1, -1, 214, - -1, 216, 217, 218, 219, 220, -1, -1, 223, -1, - 225, -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, - 265, 266, -1, 268, -1, 270, 271, 272, 273, 274, - 275, -1, 277, 278, -1, -1, 281, 282, 283, -1, - -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, -1, 341, 342, -1, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, - 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, -1, 392, 393, -1, - 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, - -1, -1, 407, 408, 409, 410, 411, -1, 413, 414, - 415, 416, 417, 418, 419, 420, -1, -1, 423, 424, - 425, 426, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, -1, 438, -1, 440, 441, 442, 443, -1, - -1, 446, -1, -1, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 3, -1, -1, -1, -1, + 466, 467, 468, 469, 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, @@ -220591,16 +219414,155 @@ static const yytype_int16 yycheck[] = 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, 392, 393, -1, 395, -1, 397, - 398, 399, 400, 401, -1, 403, 404, -1, -1, 407, - 408, 409, 410, 411, -1, 413, 414, 415, 416, 417, - 418, 419, 420, -1, -1, 423, 424, 425, 426, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, -1, - 438, -1, 440, 441, 442, 443, -1, -1, 446, -1, - -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 388, 389, 390, 391, -1, 393, 394, -1, 396, -1, + 398, 399, 400, 401, 402, -1, 404, 405, -1, -1, + 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, 424, 425, 426, 427, + 428, -1, -1, 431, 432, 433, 434, 435, 436, 437, + -1, 439, -1, 441, 442, 443, 444, -1, -1, 447, + -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, + 468, 469, 470, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, + 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, + 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, + -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, + -1, 51, 52, -1, 54, 55, 56, 57, 58, 59, + -1, -1, 62, 63, 64, 65, 66, -1, 68, 69, + 70, 71, 72, -1, -1, -1, 76, 77, 78, 79, + 80, -1, 82, 83, 84, -1, 86, 87, 88, 89, + 90, 91, -1, -1, 94, 95, 96, -1, -1, -1, + -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, + 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, + -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, -1, 156, -1, 158, 159, + 160, 161, -1, 163, -1, 165, -1, -1, -1, 169, + 170, 171, -1, 173, -1, 175, -1, 177, 178, -1, + 180, 181, 182, 183, 184, 185, -1, 187, 188, 189, + 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, + -1, 201, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, -1, -1, 214, -1, 216, 217, 218, 219, + 220, -1, -1, 223, -1, 225, -1, -1, 228, 229, + 230, -1, -1, 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, -1, 259, + 260, 261, 262, 263, -1, 265, 266, -1, 268, -1, + 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, + -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, + -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + -1, 341, 342, -1, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, + 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, + 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, -1, 393, 394, -1, 396, -1, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, + 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 424, 425, 426, 427, 428, -1, + -1, 431, 432, 433, 434, 435, 436, 437, -1, 439, + -1, 441, 442, 443, 444, -1, -1, 447, -1, -1, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 19, 20, 21, + 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, + -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, + 42, 43, -1, 45, 46, 47, 48, 49, -1, 51, + 52, -1, 54, 55, 56, 57, 58, 59, -1, -1, + 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, + 72, -1, -1, -1, 76, 77, 78, 79, 80, -1, + 82, 83, 84, -1, 86, 87, 88, 89, 90, 91, + -1, -1, 94, 95, 96, -1, -1, -1, -1, -1, + -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, -1, 115, -1, 117, 118, 119, 120, 121, + 122, -1, 124, 125, 126, 127, 128, -1, -1, 131, + 132, 133, 134, 135, -1, 137, 138, 139, -1, 141, + 142, 143, -1, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, -1, 156, -1, 158, 159, 160, 161, + -1, 163, -1, 165, -1, -1, -1, 169, 170, 171, + -1, 173, -1, 175, -1, 177, 178, -1, 180, 181, + 182, 183, 184, 185, -1, 187, 188, 189, 190, -1, + 192, 193, 194, 195, 196, 197, -1, 199, -1, 201, + 202, 203, 204, 205, 206, 207, -1, 209, -1, 211, + -1, -1, 214, -1, 216, 217, 218, 219, 220, -1, + -1, 223, -1, 225, -1, -1, 228, 229, 230, -1, + -1, 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, -1, 259, 260, 261, + 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, + 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, + 282, 283, -1, -1, 286, 287, -1, 289, -1, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, -1, 341, + 342, -1, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, + 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + -1, 393, 394, -1, 396, -1, 398, 399, 400, 401, + 402, -1, 404, 405, -1, -1, 408, 409, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 424, 425, 426, 427, 428, -1, -1, 431, + 432, 433, 434, 435, 436, 437, -1, 439, -1, 441, + 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, + 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, + -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, + 44, 45, 46, 47, -1, 49, 50, 51, 52, -1, + 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, + 64, 65, 66, -1, 68, 69, 70, 71, -1, -1, + 74, -1, 76, 77, 78, 79, 80, 81, 82, 83, + 84, -1, 86, 87, 88, 89, 90, 91, -1, 93, + 94, 95, 96, -1, -1, -1, 100, -1, -1, -1, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, + 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, + 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, + -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, + -1, -1, 156, -1, 158, 159, 160, 161, -1, 163, + -1, 165, 166, -1, 168, 169, 170, 171, 172, 173, + -1, 175, -1, -1, 178, -1, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, -1, 192, 193, + 194, 195, 196, 197, -1, 199, 200, -1, 202, 203, + 204, 205, 206, 207, -1, 209, -1, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, -1, -1, 223, + 224, 225, 226, -1, 228, 229, 230, -1, -1, 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, -1, + -1, 265, 266, 267, 268, -1, -1, 271, 272, 273, + 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, + -1, -1, 286, -1, 288, 289, 290, -1, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, + 304, -1, 306, 307, -1, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, -1, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, + 364, -1, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, -1, 391, -1, 393, + 394, -1, 396, 397, 398, 399, 400, 401, 402, -1, + 404, 405, -1, -1, 408, 409, -1, 411, -1, -1, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + 424, 425, 426, 427, 428, -1, -1, 431, 432, 433, + 434, 435, -1, 437, -1, 439, 440, 441, 442, 443, + 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, + 454, 455, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 467, 468, 469, 470, -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, 49, -1, @@ -220628,615 +219590,885 @@ static const yytype_int16 yycheck[] = 261, 262, 263, -1, 265, 266, -1, 268, -1, 270, 271, 272, 273, 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, 286, 287, -1, 289, -1, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 291, 292, 293, 294, 295, 296, 297, -1, 299, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 311, -1, 313, 314, 315, 316, 317, 318, 319, -1, 321, 322, 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, - 341, 342, -1, 344, 345, 346, 347, 348, 349, 350, + 341, 342, -1, 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - -1, 392, 393, -1, 395, -1, 397, 398, 399, 400, - 401, -1, 403, 404, -1, -1, 407, 408, 409, 410, - 411, -1, 413, 414, 415, 416, 417, 418, 419, 420, - -1, -1, 423, 424, 425, 426, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, 438, -1, 440, - 441, 442, 443, -1, -1, 446, -1, -1, 449, 450, + 391, -1, 393, 394, -1, 396, -1, 398, 399, 400, + 401, 402, -1, 404, 405, -1, -1, 408, 409, 410, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, + 421, -1, -1, 424, 425, 426, 427, 428, -1, -1, + 431, 432, 433, 434, 435, 436, 437, -1, 439, -1, + 441, 442, 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 3, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 19, 20, 21, 22, + 23, 24, 25, 26, -1, 28, 29, 30, -1, -1, + -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, + 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, + -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, + 63, 64, 65, 66, -1, 68, 69, 70, 71, -1, + -1, 74, -1, 76, 77, 78, 79, 80, 81, 82, + 83, 84, -1, 86, 87, 88, 89, 90, 91, -1, + 93, 94, 95, 96, -1, -1, -1, 100, -1, -1, + -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, -1, 115, -1, 117, 118, 119, 120, 121, 122, + -1, 124, 125, 126, 127, 128, -1, -1, 131, 132, + 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, + 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, + 153, -1, -1, 156, -1, 158, 159, 160, 161, -1, + 163, -1, 165, 166, -1, 168, 169, 170, 171, 172, + 173, -1, 175, -1, -1, 178, -1, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, -1, 192, + 193, 194, 195, 196, 197, -1, 199, 200, -1, 202, + 203, 204, 205, 206, 207, -1, 209, -1, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, -1, -1, + 223, 224, 225, 226, -1, 228, 229, 230, -1, -1, + 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, + -1, -1, 265, 266, 267, 268, -1, -1, 271, 272, + 273, 274, 275, -1, 277, 278, -1, -1, 281, 282, + 283, -1, -1, 286, -1, 288, 289, 290, -1, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, + 303, 304, -1, 306, 307, -1, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, -1, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, -1, 341, 342, + 343, 344, 345, 346, -1, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, + 363, 364, -1, 366, -1, 368, 369, 370, 371, 372, + 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, -1, 391, -1, + 393, 394, -1, 396, 397, 398, 399, 400, 401, 402, + -1, 404, 405, -1, -1, 408, 409, -1, 411, -1, + -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, 424, 425, 426, 427, 428, -1, -1, 431, 432, + 433, 434, 435, -1, 437, -1, 439, 440, 441, 442, + 443, 444, -1, -1, 447, -1, -1, 450, 451, 452, + 453, 454, 455, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 467, 468, 469, 470, -1, 19, + 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, + 30, -1, -1, -1, -1, -1, -1, -1, 38, 39, + -1, 41, 42, 43, 44, 45, 46, 47, -1, 49, + 50, 51, 52, -1, 54, 55, 56, 57, 58, 59, + -1, -1, 62, 63, 64, 65, 66, -1, 68, 69, + 70, 71, -1, -1, 74, -1, 76, 77, 78, 79, + 80, 81, 82, 83, 84, -1, 86, 87, 88, 89, + 90, 91, -1, 93, 94, 95, 96, -1, -1, -1, + 100, -1, -1, -1, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, -1, 115, -1, 117, 118, 119, + 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, + -1, 131, 132, 133, 134, 135, -1, 137, 138, 139, + -1, 141, 142, 143, -1, 145, 146, 147, 148, -1, + 150, 151, 152, 153, -1, -1, 156, -1, 158, 159, + 160, 161, -1, 163, -1, 165, 166, -1, 168, 169, + 170, 171, 172, 173, -1, 175, -1, -1, 178, -1, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, -1, 192, 193, 194, 195, 196, 197, -1, 199, + 200, -1, 202, 203, 204, 205, 206, 207, -1, 209, + -1, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, -1, -1, 223, 224, 225, 226, -1, 228, 229, + 230, -1, -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, -1, -1, 265, 266, 267, 268, -1, + -1, 271, 272, 273, 274, 275, -1, 277, 278, -1, + -1, 281, 282, 283, -1, -1, 286, -1, 288, 289, + 290, -1, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, -1, 303, 304, -1, 306, 307, -1, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + -1, 341, 342, 343, 344, 345, 346, -1, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, + 360, 361, 362, 363, 364, -1, 366, -1, 368, 369, + 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, -1, 389, + -1, 391, 21, 393, 394, -1, 396, 397, 398, 399, + 400, 401, 402, -1, 404, 405, -1, -1, 408, 409, + -1, 411, -1, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 424, 425, 426, 427, 428, -1, + -1, 431, 432, 433, 434, 435, -1, 437, -1, 439, + 440, 441, 442, 443, 444, 74, -1, 447, -1, -1, + 450, 451, 452, 453, 454, 455, -1, -1, -1, -1, + 89, -1, -1, -1, -1, -1, -1, 467, 468, 469, + 470, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 19, 20, 21, 22, 23, - 24, 25, 26, -1, 28, 29, 30, -1, -1, -1, - -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, - -1, 45, 46, 47, 48, 49, -1, 51, 52, -1, - 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, - 64, 65, 66, -1, 68, 69, 70, 71, 72, -1, - -1, -1, 76, 77, 78, 79, 80, -1, 82, 83, - 84, -1, 86, 87, 88, 89, 90, 91, -1, -1, - 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - -1, 115, -1, 117, 118, 119, 120, 121, 122, -1, - 124, 125, 126, 127, 128, -1, -1, 131, 132, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, -1, 156, -1, 158, 159, 160, 161, -1, 163, - -1, 165, -1, -1, -1, 169, 170, 171, -1, 173, - -1, 175, -1, 177, 178, -1, 180, 181, 182, 183, - 184, 185, -1, 187, 188, 189, 190, -1, 192, 193, - 194, 195, 196, 197, -1, 199, -1, 201, 202, 203, - 204, 205, 206, 207, -1, 209, -1, 211, -1, -1, - 214, -1, 216, 217, 218, 219, 220, -1, -1, 223, - -1, 225, -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, - -1, 265, 266, -1, 268, -1, 270, 271, 272, 273, - 274, 275, -1, 277, 278, -1, -1, 281, 282, 283, - -1, -1, 286, 287, -1, 289, -1, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, -1, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, -1, 341, 342, -1, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, -1, 366, 367, 368, 369, 370, -1, 372, 373, - 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, - -1, 395, -1, 397, 398, 399, 400, 401, -1, 403, - 404, -1, -1, 407, 408, 409, 410, 411, -1, 413, - 414, 415, 416, 417, 418, 419, 420, -1, -1, 423, - 424, 425, 426, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, -1, 438, -1, 440, 441, 442, 443, - -1, -1, 446, -1, -1, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, - -1, 28, 29, 30, -1, -1, -1, -1, -1, -1, - -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, - 47, -1, 49, 50, 51, 52, -1, 54, 55, 56, - 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, - -1, 68, 69, 70, 71, -1, -1, 74, -1, 76, - 77, 78, 79, 80, 81, 82, 83, 84, -1, 86, - 87, 88, 89, 90, 91, -1, 93, 94, 95, 96, - -1, -1, -1, 100, -1, -1, -1, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, -1, 115, -1, - 117, 118, 119, 120, 121, 122, -1, 124, 125, 126, - 127, 128, -1, -1, 131, 132, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, -1, 145, 146, - 147, 148, -1, 150, 151, 152, 153, -1, -1, 156, - -1, 158, 159, 160, 161, -1, 163, -1, 165, 166, - -1, 168, 169, 170, 171, 172, 173, -1, 175, -1, - -1, 178, -1, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, -1, 192, 193, 194, 195, 196, - 197, -1, 199, 200, -1, 202, 203, 204, 205, 206, - 207, -1, 209, -1, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, -1, -1, 223, 224, 225, 226, - -1, 228, 229, 230, -1, -1, 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, -1, -1, 265, 266, - 267, 268, -1, -1, 271, 272, 273, 274, 275, -1, - 277, 278, -1, -1, 281, 282, 283, -1, -1, 286, - -1, 288, 289, 290, -1, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, -1, 303, 304, -1, 306, - 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - -1, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, -1, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, -1, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, -1, -1, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, -1, 403, 404, -1, -1, - 407, 408, -1, 410, -1, -1, 413, 414, 415, 416, - 417, 418, 419, 420, -1, -1, 423, 424, 425, 426, - 427, -1, -1, 430, 431, 432, 433, 434, -1, 436, - -1, 438, 439, 440, 441, 442, 443, -1, -1, 446, - -1, -1, 449, 450, 451, 452, 453, 454, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 466, - 467, 468, 469, -1, 19, 20, 21, 22, 23, 24, - 25, 26, -1, 28, 29, 30, -1, -1, -1, -1, - -1, -1, -1, 38, 39, -1, 41, 42, 43, -1, - 45, 46, 47, 48, 49, -1, 51, 52, -1, 54, - 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, - 65, 66, -1, 68, 69, 70, 71, 72, -1, -1, - -1, 76, 77, 78, 79, 80, -1, 82, 83, 84, - -1, 86, 87, 88, 89, 90, 91, -1, -1, 94, - 95, 96, -1, -1, -1, -1, -1, -1, -1, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, -1, - 115, -1, 117, 118, 119, 120, 121, 122, -1, 124, - 125, 126, 127, 128, -1, -1, 131, 132, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, -1, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - -1, 156, -1, 158, 159, 160, 161, -1, 163, -1, - 165, -1, -1, -1, 169, 170, 171, -1, 173, -1, - 175, -1, 177, 178, -1, 180, 181, 182, 183, 184, - 185, -1, 187, 188, 189, 190, -1, 192, 193, 194, - 195, 196, 197, -1, 199, -1, 201, 202, 203, 204, - 205, 206, 207, -1, 209, -1, 211, -1, -1, 214, - -1, 216, 217, 218, 219, 220, -1, -1, 223, -1, - 225, -1, -1, 228, 229, 230, -1, -1, 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, -1, 259, 260, 261, 262, 263, -1, - 265, 266, -1, 268, -1, 270, 271, 272, 273, 274, - 275, -1, 277, 278, -1, -1, 281, 282, 283, -1, - -1, 286, 287, -1, 289, -1, 291, 292, 293, 294, - 295, 296, 297, -1, 299, 300, 301, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, 317, 318, 319, -1, 321, 322, 323, 324, - 325, 326, -1, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, -1, 341, 342, -1, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - -1, 366, 367, 368, 369, 370, -1, 372, 373, 374, - 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, -1, 392, 393, -1, - 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, - -1, -1, 407, 408, 409, 410, 411, -1, 413, 414, - 415, 416, 417, 418, 419, 420, -1, -1, 423, 424, - 425, 426, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, -1, 438, -1, 440, 441, 442, 443, -1, - -1, 446, -1, -1, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 19, 20, 21, 22, 23, 24, 25, 26, -1, - 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, - 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, - -1, 49, 50, 51, 52, -1, 54, 55, 56, 57, - 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, - 68, 69, 70, 71, -1, -1, 74, -1, 76, 77, - 78, 79, 80, 81, 82, 83, 84, -1, 86, 87, - 88, 89, 90, 91, -1, 93, 94, 95, 96, -1, - -1, -1, 100, -1, -1, -1, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, -1, 115, -1, 117, - 118, 119, 120, 121, 122, -1, 124, 125, 126, 127, - 128, -1, -1, 131, 132, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, -1, 145, 146, 147, - 148, -1, 150, 151, 152, 153, -1, -1, 156, -1, - 158, 159, 160, 161, -1, 163, -1, 165, 166, -1, - 168, 169, 170, 171, 172, 173, -1, 175, -1, -1, - 178, -1, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, -1, 192, 193, 194, 195, 196, 197, - -1, 199, 200, -1, 202, 203, 204, 205, 206, 207, - -1, 209, -1, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, -1, -1, 223, 224, 225, 226, -1, - 228, 229, 230, -1, -1, 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, -1, -1, 265, 266, 267, - 268, -1, -1, 271, 272, 273, 274, 275, -1, 277, - 278, -1, -1, 281, 282, 283, -1, -1, 286, -1, - 288, 289, 290, -1, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, -1, 303, 304, -1, 306, 307, - -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, -1, 341, 342, 343, 344, 345, 346, -1, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, -1, 366, -1, - 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, -1, -1, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, 403, 404, -1, -1, 407, - 408, -1, 410, -1, -1, 413, 414, 415, 416, 417, - 418, 419, 420, -1, -1, 423, 424, 425, 426, 427, - -1, -1, 430, 431, 432, 433, 434, -1, 436, -1, - 438, 439, 440, 441, 442, 443, -1, -1, 446, -1, - -1, 449, 450, 451, 452, 453, 454, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 466, 467, - 468, 469, -1, 19, 20, 21, 22, 23, 24, 25, - 26, -1, 28, 29, 30, -1, -1, -1, -1, -1, - -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, - 46, 47, -1, 49, 50, 51, 52, -1, 54, 55, - 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, - 66, -1, 68, 69, 70, 71, -1, -1, 74, -1, - 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, - 86, 87, 88, 89, 90, 91, -1, 93, 94, 95, - 96, -1, -1, -1, 100, -1, -1, -1, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, -1, 115, - -1, 117, 118, 119, 120, 121, 122, -1, 124, 125, - 126, 127, 128, -1, -1, 131, 132, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, -1, 145, - 146, 147, 148, -1, 150, 151, 152, 153, -1, -1, - 156, -1, 158, 159, 160, 161, -1, 163, -1, 165, - 166, -1, 168, 169, 170, 171, 172, 173, -1, 175, - -1, -1, 178, -1, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, -1, 192, 193, 194, 195, - 196, 197, -1, 199, 200, -1, 202, 203, 204, 205, - 206, 207, -1, 209, -1, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, -1, -1, 223, 224, 225, - 226, -1, 228, 229, 230, -1, -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, -1, -1, 265, - 266, 267, 268, -1, -1, 271, 272, 273, 274, 275, - -1, 277, 278, -1, -1, 281, 282, 283, -1, -1, - 286, -1, 288, 289, 290, -1, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, -1, 303, 304, -1, - 306, 307, -1, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, -1, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, -1, 341, 342, 343, 344, 345, - 346, -1, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, -1, - 366, -1, 368, 369, 370, 371, 372, 373, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, -1, 389, -1, -1, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, -1, - -1, 407, 408, -1, 410, -1, -1, 413, 414, 415, - 416, 417, 418, 419, 420, -1, -1, 423, 424, 425, - 426, 427, -1, -1, 430, 431, 432, 433, 434, -1, - 436, -1, 438, 439, 440, 441, 442, 443, -1, -1, - 446, -1, -1, 449, 450, 451, 452, 453, 454, -1, + -1, -1, -1, -1, 143, -1, -1, -1, -1, -1, + -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, + 169, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 466, 467, 468, 469 + -1, -1, -1, -1, -1, 194, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 237, -1, + -1, -1, 241, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 304, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 318, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 349, -1, -1, 352, -1, -1, -1, -1, -1, -1, + -1, 360, -1, -1, 363, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 395, -1, -1, -1, + -1, -1, -1, 402, -1, -1, -1, -1, -1, -1, + -1, -1, 411, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 442 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_int16 yystos[] = { 0, 19, 29, 31, 32, 47, 56, 68, 79, 90, 92, 110, 124, 134, 140, 148, 150, 151, 163, 190, - 229, 306, 309, 337, 345, 359, 366, 370, 380, 394, - 430, 435, 448, 472, 486, 497, 498, 499, 500, 511, - 512, 514, 518, 532, 533, 535, 537, 544, 546, 592, - 598, 601, 602, 619, 620, 621, 622, 623, 624, 668, - 800, 803, 806, 813, 814, 815, 816, 817, 824, 828, - 834, 836, 841, 845, 846, 849, 850, 852, 853, 855, - 407, 451, 545, 194, 352, 360, 394, 441, 545, 3, - 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, - 30, 38, 39, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, - 59, 62, 63, 64, 65, 66, 68, 69, 70, 71, - 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 86, 87, 88, 89, 90, 91, 93, 94, 95, - 96, 100, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 115, 117, 118, 119, 120, 121, 122, 124, - 125, 126, 127, 128, 131, 132, 133, 134, 135, 137, - 138, 139, 141, 142, 143, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 156, 158, 159, 160, 161, - 163, 165, 166, 168, 169, 170, 171, 172, 173, 175, - 177, 178, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 192, 193, 194, 195, 196, 197, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 209, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 223, - 224, 225, 226, 228, 229, 230, 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, 265, 266, 267, - 268, 270, 271, 272, 273, 274, 275, 277, 278, 281, - 282, 283, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 360, 361, 362, 363, 364, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 392, 393, 395, 396, 397, 398, 399, 400, 401, 403, - 404, 407, 408, 409, 410, 411, 413, 414, 415, 416, - 417, 418, 419, 420, 423, 424, 425, 426, 427, 430, - 431, 432, 433, 434, 435, 436, 438, 439, 440, 441, - 442, 443, 446, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 724, 785, 789, 792, 858, 859, - 860, 545, 50, 486, 614, 169, 173, 230, 237, 284, - 352, 398, 400, 422, 425, 590, 599, 812, 3, 27, - 238, 309, 388, 783, 789, 858, 21, 74, 89, 143, - 152, 164, 169, 194, 237, 241, 304, 318, 349, 352, - 360, 363, 382, 394, 401, 410, 441, 593, 594, 597, - 545, 783, 92, 439, 486, 514, 601, 619, 820, 824, - 841, 855, 107, 68, 107, 5, 788, 835, 789, 783, - 27, 403, 407, 789, 847, 848, 851, 545, 27, 129, - 631, 632, 230, 352, 364, 403, 829, 830, 851, 545, - 5, 280, 679, 781, 789, 790, 168, 486, 838, 486, - 325, 625, 626, 783, 625, 620, 621, 624, 0, 489, - 119, 204, 427, 144, 208, 285, 421, 633, 634, 620, - 622, 623, 490, 439, 818, 27, 403, 407, 435, 619, - 851, 185, 781, 783, 185, 781, 185, 679, 185, 781, - 486, 484, 488, 772, 774, 514, 601, 619, 802, 841, - 781, 398, 400, 398, 400, 335, 185, 789, 325, 360, - 394, 441, 781, 194, 27, 783, 243, 410, 106, 394, - 441, 355, 185, 595, 789, 794, 185, 782, 783, 185, - 783, 486, 536, 590, 820, 3, 48, 49, 51, 52, - 64, 65, 72, 111, 112, 149, 154, 160, 177, 201, - 206, 207, 209, 238, 257, 259, 263, 270, 272, 287, - 291, 305, 308, 322, 347, 367, 374, 388, 390, 403, - 404, 409, 411, 415, 435, 436, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 821, 823, 824, - 826, 827, 858, 862, 818, 788, 788, 475, 486, 486, - 801, 469, 214, 488, 279, 4, 6, 7, 8, 9, - 10, 35, 49, 51, 52, 60, 61, 64, 65, 72, - 74, 97, 98, 99, 100, 101, 102, 103, 111, 112, - 114, 133, 149, 154, 155, 160, 206, 207, 209, 231, - 232, 257, 259, 264, 269, 270, 272, 281, 291, 305, - 322, 347, 365, 374, 390, 403, 404, 409, 411, 412, - 415, 428, 436, 470, 477, 478, 479, 484, 486, 491, - 493, 494, 620, 694, 697, 700, 701, 702, 704, 705, - 706, 707, 709, 710, 721, 723, 724, 725, 727, 740, - 741, 747, 766, 771, 778, 779, 785, 786, 787, 788, - 789, 777, 778, 829, 788, 829, 469, 167, 405, 475, - 486, 781, 479, 774, 3, 166, 168, 439, 824, 837, - 839, 166, 840, 721, 751, 625, 490, 486, 796, 487, - 487, 499, 167, 210, 679, 842, 27, 129, 630, 630, - 54, 630, 157, 162, 227, 276, 639, 641, 642, 661, - 663, 664, 665, 633, 634, 486, 781, 469, 214, 149, - 23, 29, 134, 283, 333, 337, 366, 432, 505, 508, - 509, 333, 149, 36, 55, 105, 193, 242, 250, 262, - 293, 333, 338, 360, 366, 380, 508, 538, 541, 149, - 333, 366, 508, 149, 333, 366, 508, 3, 27, 44, - 50, 74, 81, 93, 100, 129, 166, 168, 172, 186, - 200, 212, 213, 215, 224, 226, 238, 258, 267, 288, - 290, 343, 371, 388, 396, 415, 437, 439, 479, 487, - 721, 753, 754, 791, 797, 858, 863, 721, 773, 3, - 27, 31, 32, 33, 34, 35, 36, 37, 40, 53, - 60, 61, 67, 73, 75, 85, 92, 97, 98, 99, - 101, 102, 103, 114, 116, 123, 129, 130, 136, 140, - 144, 155, 157, 162, 164, 167, 174, 176, 179, 191, - 198, 208, 210, 221, 222, 227, 231, 232, 264, 269, - 276, 279, 280, 284, 285, 302, 312, 327, 340, 359, - 365, 376, 391, 394, 402, 405, 406, 412, 421, 422, - 428, 429, 435, 437, 444, 445, 447, 448, 479, 784, - 798, 858, 862, 864, 772, 487, 486, 580, 590, 264, - 804, 441, 185, 781, 185, 781, 857, 781, 486, 600, - 81, 809, 452, 82, 126, 296, 399, 149, 58, 339, - 490, 596, 488, 795, 149, 490, 596, 149, 279, 751, - 394, 487, 490, 4, 155, 279, 412, 477, 478, 540, - 543, 787, 788, 819, 821, 822, 825, 820, 486, 609, - 613, 540, 825, 831, 833, 753, 3, 44, 49, 50, - 51, 52, 64, 65, 74, 81, 93, 100, 111, 112, - 160, 166, 168, 172, 186, 200, 206, 207, 209, 212, - 213, 215, 224, 226, 238, 257, 258, 259, 267, 272, - 288, 290, 322, 343, 347, 367, 371, 374, 388, 396, - 403, 404, 415, 436, 439, 690, 691, 693, 695, 697, - 699, 701, 702, 703, 705, 706, 709, 710, 755, 793, - 858, 861, 36, 225, 789, 486, 775, 484, 438, 708, - 721, 770, 486, 708, 708, 486, 162, 486, 486, 486, - 696, 696, 308, 620, 486, 486, 698, 486, 486, 64, - 65, 708, 721, 486, 696, 486, 486, 486, 486, 486, - 450, 472, 486, 711, 486, 711, 486, 486, 486, 721, - 721, 721, 751, 752, 620, 721, 751, 742, 743, 789, - 790, 9, 775, 774, 788, 486, 486, 787, 788, 3, - 8, 11, 16, 17, 18, 33, 36, 41, 48, 73, - 172, 186, 191, 212, 213, 226, 264, 267, 281, 284, - 371, 470, 473, 474, 475, 477, 478, 479, 480, 481, - 482, 745, 746, 747, 749, 449, 728, 775, 15, 290, - 721, 15, 210, 490, 627, 486, 788, 775, 774, 627, - 3, 114, 230, 540, 710, 788, 832, 96, 114, 833, - 114, 833, 781, 487, 490, 818, 487, 490, 626, 782, - 36, 842, 516, 781, 36, 789, 366, 622, 622, 635, - 636, 721, 622, 159, 261, 655, 216, 262, 321, 369, - 427, 27, 650, 721, 477, 478, 651, 652, 721, 723, - 661, 662, 642, 641, 639, 640, 162, 664, 274, 666, - 639, 661, 751, 796, 225, 781, 67, 75, 85, 164, - 185, 312, 422, 561, 571, 586, 789, 75, 85, 513, - 85, 513, 486, 405, 486, 559, 236, 425, 559, 85, - 490, 405, 781, 693, 540, 54, 542, 540, 540, 105, - 242, 250, 54, 405, 448, 472, 539, 255, 352, 539, - 541, 679, 85, 405, 513, 352, 781, 405, 352, 753, - 753, 754, 487, 490, 633, 634, 13, 14, 485, 495, - 405, 579, 584, 789, 448, 612, 325, 441, 149, 92, - 533, 546, 805, 806, 853, 781, 264, 534, 538, 264, - 486, 580, 36, 580, 487, 753, 36, 185, 574, 789, - 810, 595, 794, 784, 488, 782, 783, 783, 794, 487, - 185, 781, 857, 820, 826, 4, 787, 4, 787, 611, - 618, 798, 50, 94, 120, 138, 142, 163, 166, 180, - 269, 277, 319, 615, 490, 487, 490, 486, 693, 486, - 35, 692, 108, 109, 182, 183, 244, 245, 246, 247, - 248, 249, 252, 253, 356, 357, 466, 467, 486, 712, - 713, 714, 715, 716, 717, 718, 719, 720, 487, 490, - 696, 802, 751, 772, 752, 486, 444, 767, 768, 721, - 751, 486, 787, 787, 751, 3, 712, 713, 714, 715, - 716, 717, 718, 719, 756, 757, 788, 787, 787, 787, - 708, 708, 721, 8, 16, 17, 18, 473, 474, 475, - 477, 478, 479, 480, 481, 482, 745, 750, 789, 721, - 758, 477, 478, 486, 722, 723, 747, 760, 771, 487, - 751, 721, 751, 761, 403, 403, 787, 787, 721, 53, - 167, 222, 406, 721, 751, 764, 721, 485, 487, 490, - 490, 492, 495, 787, 721, 720, 720, 691, 721, 721, - 721, 721, 5, 798, 799, 403, 40, 391, 776, 794, - 721, 721, 486, 620, 765, 129, 155, 264, 269, 274, - 412, 423, 721, 269, 486, 721, 405, 48, 172, 186, - 191, 226, 371, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 27, 34, 376, 744, 176, 158, 729, - 721, 347, 486, 741, 721, 173, 230, 394, 398, 400, - 425, 628, 781, 779, 167, 669, 753, 669, 486, 788, - 487, 781, 837, 781, 845, 721, 487, 486, 429, 844, - 114, 292, 486, 515, 619, 36, 789, 486, 520, 529, - 531, 789, 490, 37, 123, 429, 637, 347, 348, 477, - 478, 652, 654, 723, 369, 216, 280, 490, 4, 653, - 787, 653, 347, 348, 654, 780, 781, 268, 373, 667, - 662, 640, 487, 333, 508, 486, 185, 571, 783, 216, - 264, 216, 429, 486, 564, 691, 783, 789, 185, 783, - 185, 789, 23, 134, 366, 504, 507, 554, 569, 798, - 783, 563, 583, 798, 783, 505, 783, 333, 366, 508, - 538, 540, 794, 783, 540, 794, 783, 540, 333, 366, - 508, 783, 783, 783, 783, 333, 366, 508, 783, 783, - 633, 633, 633, 437, 754, 487, 721, 721, 721, 773, - 317, 608, 487, 490, 277, 167, 405, 603, 441, 781, - 789, 590, 486, 149, 149, 226, 561, 571, 575, 578, - 587, 589, 789, 448, 450, 566, 148, 619, 448, 811, - 487, 721, 264, 279, 596, 784, 596, 279, 596, 264, - 36, 487, 490, 479, 486, 540, 610, 825, 36, 607, - 788, 607, 264, 269, 319, 607, 607, 831, 755, 35, - 692, 689, 789, 484, 484, 787, 405, 405, 405, 405, - 691, 487, 485, 751, 721, 136, 768, 769, 36, 487, - 721, 487, 487, 487, 487, 167, 487, 487, 487, 490, - 487, 488, 302, 759, 487, 722, 722, 721, 11, 16, - 17, 18, 191, 212, 281, 473, 474, 475, 477, 478, - 479, 480, 481, 482, 747, 722, 487, 487, 162, 167, - 762, 763, 487, 469, 469, 487, 487, 36, 764, 751, - 764, 764, 167, 487, 36, 775, 721, 742, 721, 487, - 487, 469, 722, 722, 142, 751, 167, 129, 155, 269, - 274, 412, 423, 486, 142, 750, 721, 391, 776, 721, - 765, 721, 405, 486, 620, 486, 486, 289, 733, 398, - 400, 398, 400, 781, 394, 629, 629, 629, 221, 348, - 486, 620, 670, 671, 672, 679, 680, 724, 726, 727, - 789, 445, 685, 633, 685, 787, 720, 796, 802, 670, - 445, 843, 435, 393, 428, 524, 519, 528, 789, 279, - 521, 789, 525, 531, 490, 669, 475, 775, 636, 281, - 745, 748, 471, 638, 4, 787, 654, 280, 427, 651, - 490, 235, 405, 721, 264, 586, 486, 149, 486, 564, - 194, 584, 547, 283, 557, 547, 23, 134, 337, 338, - 366, 501, 502, 503, 509, 510, 149, 596, 149, 596, - 554, 569, 554, 487, 490, 550, 788, 487, 490, 475, - 488, 405, 352, 85, 405, 513, 352, 405, 405, 405, - 352, 487, 487, 487, 754, 485, 383, 384, 617, 788, - 579, 608, 781, 580, 804, 394, 584, 781, 781, 857, - 781, 487, 490, 277, 559, 277, 279, 558, 783, 448, - 856, 559, 36, 149, 781, 794, 149, 611, 605, 616, - 825, 788, 788, 269, 584, 479, 584, 788, 788, 487, - 484, 487, 490, 691, 787, 485, 787, 487, 713, 715, - 716, 717, 716, 717, 717, 487, 402, 721, 140, 691, - 487, 721, 721, 750, 721, 762, 691, 722, 722, 722, - 722, 129, 264, 274, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 721, 721, 763, 762, 711, 711, - 691, 487, 487, 487, 751, 691, 487, 720, 721, 33, - 33, 721, 487, 721, 167, 486, 755, 721, 487, 142, - 722, 722, 142, 142, 721, 721, 634, 445, 486, 734, - 789, 629, 629, 629, 629, 781, 781, 781, 620, 680, - 167, 620, 671, 672, 36, 673, 674, 789, 490, 93, - 168, 200, 215, 224, 258, 343, 676, 674, 36, 673, - 675, 789, 472, 684, 774, 721, 176, 656, 487, 656, - 487, 487, 721, 340, 523, 434, 487, 490, 775, 83, - 523, 487, 490, 520, 843, 721, 486, 638, 159, 220, - 280, 781, 783, 487, 149, 584, 571, 584, 547, 574, - 487, 116, 198, 262, 264, 570, 486, 581, 171, 114, - 184, 264, 559, 539, 106, 114, 171, 264, 382, 385, - 541, 559, 366, 503, 416, 783, 789, 507, 583, 3, - 44, 50, 74, 81, 93, 100, 166, 168, 172, 186, - 200, 212, 213, 215, 224, 226, 238, 258, 263, 267, - 281, 288, 290, 343, 367, 371, 388, 396, 415, 439, - 477, 478, 540, 548, 585, 691, 748, 788, 791, 858, - 864, 798, 783, 783, 783, 783, 783, 783, 783, 783, - 783, 783, 633, 539, 617, 486, 811, 185, 781, 487, - 534, 486, 36, 568, 566, 575, 79, 536, 106, 262, - 619, 574, 429, 808, 596, 857, 487, 490, 584, 692, - 787, 692, 789, 485, 485, 721, 487, 487, 763, 167, - 129, 274, 486, 487, 487, 721, 721, 721, 755, 487, - 721, 33, 33, 721, 721, 142, 487, 487, 721, 735, - 789, 781, 781, 781, 781, 674, 675, 486, 487, 789, - 790, 396, 647, 648, 486, 671, 215, 288, 677, 671, - 677, 215, 676, 677, 215, 648, 486, 789, 648, 486, - 286, 54, 179, 660, 788, 660, 788, 778, 619, 292, - 619, 519, 279, 486, 517, 475, 531, 523, 750, 547, - 571, 487, 487, 448, 577, 117, 187, 196, 116, 431, - 554, 572, 67, 73, 85, 114, 116, 171, 198, 264, - 269, 312, 327, 422, 552, 553, 565, 30, 54, 591, - 185, 269, 540, 721, 591, 269, 477, 478, 543, 789, - 691, 596, 596, 238, 388, 791, 795, 475, 405, 405, - 487, 609, 429, 604, 606, 584, 36, 264, 486, 811, - 578, 148, 619, 146, 192, 558, 119, 134, 311, 856, - 106, 448, 854, 279, 789, 807, 486, 36, 616, 485, - 691, 722, 167, 486, 755, 487, 721, 721, 721, 487, - 298, 736, 681, 682, 726, 673, 486, 4, 9, 643, - 645, 646, 789, 782, 671, 279, 429, 678, 671, 215, - 671, 686, 687, 789, 486, 686, 789, 486, 657, 658, - 659, 721, 721, 447, 730, 730, 524, 85, 486, 522, - 530, 726, 789, 130, 721, 487, 327, 577, 486, 567, - 547, 487, 490, 486, 794, 783, 722, 591, 117, 187, - 116, 269, 216, 781, 577, 114, 36, 149, 73, 688, - 795, 481, 548, 783, 783, 539, 121, 487, 619, 149, - 36, 487, 783, 856, 27, 78, 86, 115, 184, 195, - 382, 385, 562, 562, 348, 348, 59, 67, 230, 781, - 530, 722, 755, 487, 54, 633, 487, 490, 36, 683, - 782, 301, 481, 301, 348, 481, 486, 486, 487, 721, - 486, 671, 678, 487, 490, 691, 686, 487, 487, 490, - 731, 732, 789, 429, 644, 644, 434, 783, 721, 487, - 490, 73, 526, 526, 265, 427, 781, 547, 573, 576, - 798, 554, 721, 264, 553, 36, 577, 580, 184, 794, - 429, 506, 481, 416, 609, 788, 811, 854, 781, 619, - 566, 536, 67, 282, 67, 808, 487, 487, 751, 320, - 348, 737, 684, 681, 486, 487, 789, 643, 782, 687, - 688, 487, 658, 490, 36, 350, 619, 487, 685, 522, - 794, 527, 794, 527, 366, 580, 487, 490, 475, 487, - 184, 240, 588, 486, 549, 721, 416, 36, 486, 854, - 558, 856, 282, 282, 486, 811, 48, 96, 418, 721, - 738, 739, 738, 487, 686, 487, 490, 487, 487, 732, - 734, 646, 526, 637, 637, 529, 588, 576, 548, 262, - 560, 549, 168, 297, 372, 279, 555, 556, 582, 538, - 619, 530, 685, 739, 347, 161, 307, 161, 307, 487, - 9, 334, 649, 527, 638, 638, 685, 556, 196, 119, - 427, 279, 582, 279, 555, 487, 854, 487, 33, 487, - 486, 637, 547, 58, 262, 339, 366, 551, 551, 811, - 739, 9, 638, 22, 114, 269, 685, 487 -}; - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ - -#define YYFAIL goto yyerrlab + 229, 306, 309, 337, 345, 359, 366, 370, 380, 391, + 395, 431, 436, 449, 473, 487, 498, 499, 500, 501, + 502, 503, 508, 510, 517, 521, 535, 542, 545, 548, + 550, 557, 561, 563, 565, 571, 582, 583, 589, 591, + 592, 593, 594, 595, 596, 640, 772, 774, 777, 778, + 824, 825, 826, 827, 828, 830, 831, 848, 849, 852, + 855, 408, 452, 564, 194, 352, 360, 395, 442, 564, + 3, 19, 20, 21, 22, 23, 24, 25, 26, 28, + 29, 30, 38, 39, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 54, 55, 56, 57, + 58, 59, 62, 63, 64, 65, 66, 68, 69, 70, + 71, 72, 74, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 86, 87, 88, 89, 90, 91, 93, 94, + 95, 96, 100, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 115, 117, 118, 119, 120, 121, 122, + 124, 125, 126, 127, 128, 131, 132, 133, 134, 135, + 137, 138, 139, 141, 142, 143, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 156, 158, 159, 160, + 161, 163, 165, 166, 168, 169, 170, 171, 172, 173, + 175, 177, 178, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 192, 193, 194, 195, 196, 197, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 223, 224, 225, 226, 228, 229, 230, 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, 265, 266, + 267, 268, 270, 271, 272, 273, 274, 275, 277, 278, + 281, 282, 283, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 360, 361, 362, 363, 364, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 393, 394, 396, 397, 398, 399, 400, 401, + 402, 404, 405, 408, 409, 410, 411, 412, 414, 415, + 416, 417, 418, 419, 420, 421, 424, 425, 426, 427, + 428, 431, 432, 433, 434, 435, 436, 437, 439, 440, + 441, 442, 443, 444, 447, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 696, 757, 761, 764, + 859, 860, 861, 564, 50, 487, 843, 169, 173, 230, + 237, 284, 352, 399, 401, 423, 426, 541, 822, 853, + 3, 27, 238, 309, 388, 755, 761, 859, 21, 74, + 89, 143, 152, 164, 169, 194, 237, 241, 304, 318, + 349, 352, 360, 363, 382, 395, 402, 411, 442, 584, + 585, 588, 564, 755, 92, 440, 487, 517, 553, 557, + 591, 774, 825, 855, 107, 68, 107, 5, 590, 760, + 761, 755, 27, 404, 408, 761, 829, 850, 851, 564, + 27, 129, 603, 604, 173, 230, 352, 364, 404, 566, + 567, 829, 564, 436, 591, 596, 829, 5, 280, 651, + 753, 761, 762, 168, 487, 505, 487, 325, 597, 598, + 755, 597, 592, 593, 0, 490, 119, 204, 428, 440, + 551, 144, 208, 285, 422, 605, 606, 592, 594, 595, + 491, 27, 404, 408, 591, 829, 185, 753, 755, 185, + 753, 185, 651, 185, 753, 487, 485, 489, 744, 746, + 517, 547, 591, 825, 855, 753, 399, 401, 399, 401, + 335, 185, 761, 194, 325, 360, 395, 442, 753, 27, + 755, 243, 411, 106, 395, 442, 355, 185, 586, 761, + 766, 185, 754, 755, 185, 755, 487, 562, 822, 553, + 3, 48, 49, 51, 52, 64, 65, 72, 111, 112, + 149, 154, 160, 177, 201, 206, 207, 209, 238, 257, + 259, 263, 270, 272, 287, 291, 305, 308, 322, 347, + 367, 374, 388, 390, 404, 405, 410, 412, 416, 436, + 437, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 554, 556, 557, 559, 560, 859, 863, 551, + 760, 760, 476, 487, 487, 546, 470, 214, 489, 279, + 4, 6, 7, 8, 9, 10, 35, 49, 51, 52, + 60, 61, 64, 65, 72, 74, 97, 98, 99, 100, + 101, 102, 103, 111, 112, 114, 133, 149, 154, 155, + 160, 206, 207, 209, 231, 232, 257, 259, 264, 269, + 270, 272, 281, 291, 305, 322, 347, 365, 374, 390, + 404, 405, 410, 412, 413, 416, 429, 437, 471, 478, + 479, 480, 485, 487, 492, 494, 495, 592, 666, 669, + 672, 673, 674, 676, 677, 678, 679, 681, 682, 693, + 695, 696, 697, 699, 712, 713, 719, 738, 743, 750, + 751, 757, 758, 759, 760, 761, 749, 750, 566, 566, + 760, 566, 470, 167, 406, 476, 487, 753, 480, 746, + 3, 166, 168, 440, 504, 506, 557, 166, 507, 693, + 723, 597, 491, 487, 768, 488, 488, 500, 167, 210, + 651, 856, 753, 27, 129, 602, 602, 54, 602, 157, + 162, 227, 276, 611, 613, 614, 633, 635, 636, 637, + 605, 606, 487, 470, 214, 149, 23, 29, 134, 283, + 333, 337, 366, 433, 576, 579, 580, 333, 149, 36, + 55, 105, 193, 242, 250, 262, 293, 333, 338, 360, + 366, 380, 511, 514, 579, 149, 333, 366, 579, 149, + 333, 366, 579, 3, 27, 44, 50, 74, 81, 93, + 100, 129, 166, 168, 172, 186, 200, 212, 213, 215, + 224, 226, 238, 258, 267, 288, 290, 343, 371, 388, + 397, 416, 438, 440, 480, 488, 693, 725, 726, 763, + 769, 859, 864, 693, 745, 3, 27, 31, 32, 33, + 34, 35, 36, 37, 40, 53, 60, 61, 67, 73, + 75, 85, 92, 97, 98, 99, 101, 102, 103, 114, + 116, 123, 129, 130, 136, 140, 144, 155, 157, 162, + 164, 167, 174, 176, 179, 191, 198, 208, 210, 221, + 222, 227, 231, 232, 264, 269, 276, 279, 280, 284, + 285, 302, 312, 327, 340, 359, 365, 376, 392, 395, + 403, 406, 407, 413, 422, 423, 429, 430, 436, 438, + 445, 446, 448, 449, 480, 756, 770, 859, 863, 865, + 744, 488, 487, 812, 822, 264, 543, 81, 538, 442, + 185, 753, 185, 753, 776, 753, 487, 854, 453, 82, + 126, 296, 400, 149, 58, 339, 491, 587, 489, 767, + 149, 491, 587, 149, 279, 723, 395, 488, 491, 4, + 155, 279, 413, 478, 479, 513, 516, 552, 554, 555, + 558, 759, 760, 553, 487, 838, 842, 513, 558, 568, + 570, 725, 3, 44, 49, 50, 51, 52, 64, 65, + 74, 81, 93, 100, 111, 112, 160, 166, 168, 172, + 186, 200, 206, 207, 209, 212, 213, 215, 224, 226, + 238, 257, 258, 259, 267, 272, 288, 290, 322, 343, + 347, 367, 371, 374, 388, 397, 404, 405, 416, 437, + 440, 662, 663, 665, 667, 669, 671, 673, 674, 675, + 677, 678, 681, 682, 727, 765, 859, 862, 36, 225, + 761, 487, 747, 485, 439, 680, 693, 742, 487, 680, + 680, 487, 162, 487, 487, 487, 668, 668, 308, 592, + 487, 487, 670, 487, 487, 64, 65, 680, 693, 487, + 668, 487, 487, 487, 487, 487, 451, 473, 487, 683, + 487, 683, 487, 487, 487, 693, 693, 693, 723, 724, + 592, 693, 723, 714, 715, 761, 762, 9, 747, 746, + 760, 487, 487, 759, 760, 3, 8, 11, 16, 17, + 18, 33, 36, 41, 48, 73, 172, 186, 191, 212, + 213, 226, 264, 267, 281, 284, 371, 471, 474, 475, + 476, 478, 479, 480, 481, 482, 483, 717, 718, 719, + 721, 450, 700, 747, 15, 290, 693, 15, 210, 491, + 599, 487, 760, 747, 746, 599, 3, 114, 230, 513, + 569, 682, 760, 96, 114, 570, 114, 570, 753, 488, + 491, 551, 488, 491, 598, 754, 36, 856, 519, 753, + 36, 761, 366, 768, 594, 594, 607, 608, 693, 594, + 159, 261, 627, 216, 262, 321, 369, 428, 27, 622, + 693, 478, 479, 623, 624, 693, 695, 633, 634, 614, + 613, 611, 612, 162, 636, 274, 638, 611, 633, 723, + 225, 753, 67, 75, 85, 164, 185, 312, 423, 761, + 793, 803, 818, 75, 85, 509, 85, 509, 487, 406, + 487, 791, 236, 426, 791, 85, 491, 406, 753, 665, + 513, 54, 515, 513, 513, 105, 242, 250, 54, 406, + 449, 473, 512, 255, 352, 512, 514, 651, 85, 406, + 509, 352, 753, 406, 352, 725, 725, 726, 488, 491, + 605, 606, 13, 14, 486, 496, 406, 761, 811, 816, + 449, 841, 325, 442, 149, 92, 535, 544, 548, 772, + 778, 185, 539, 761, 806, 753, 264, 511, 549, 264, + 487, 812, 36, 812, 488, 725, 36, 586, 766, 756, + 489, 754, 755, 755, 766, 488, 185, 753, 776, 553, + 559, 4, 759, 4, 759, 770, 840, 847, 50, 94, + 120, 138, 142, 163, 166, 180, 269, 277, 319, 844, + 491, 488, 491, 487, 665, 487, 35, 664, 108, 109, + 182, 183, 244, 245, 246, 247, 248, 249, 252, 253, + 356, 357, 467, 468, 487, 684, 685, 686, 687, 688, + 689, 690, 691, 692, 488, 491, 668, 547, 723, 744, + 724, 487, 445, 739, 740, 693, 723, 487, 759, 759, + 723, 3, 684, 685, 686, 687, 688, 689, 690, 691, + 728, 729, 760, 759, 759, 759, 680, 680, 693, 8, + 16, 17, 18, 474, 475, 476, 478, 479, 480, 481, + 482, 483, 717, 722, 761, 693, 730, 478, 479, 487, + 694, 695, 719, 732, 743, 488, 723, 693, 723, 733, + 404, 404, 759, 759, 693, 53, 167, 222, 407, 693, + 723, 736, 693, 486, 488, 491, 491, 493, 496, 759, + 693, 692, 692, 663, 693, 693, 693, 693, 5, 770, + 771, 404, 40, 392, 748, 766, 693, 693, 487, 592, + 737, 129, 155, 264, 269, 274, 413, 424, 693, 269, + 487, 693, 406, 48, 172, 186, 191, 226, 371, 693, + 693, 693, 693, 693, 693, 693, 693, 693, 693, 27, + 34, 376, 716, 176, 158, 701, 693, 347, 487, 713, + 693, 173, 230, 395, 399, 401, 426, 600, 753, 751, + 167, 641, 725, 641, 487, 760, 488, 753, 504, 753, + 826, 693, 488, 487, 430, 858, 114, 292, 487, 518, + 591, 36, 761, 487, 523, 532, 534, 761, 491, 37, + 123, 430, 609, 347, 348, 478, 479, 624, 626, 695, + 369, 216, 280, 491, 4, 625, 759, 625, 347, 348, + 626, 752, 753, 268, 373, 639, 634, 612, 488, 333, + 579, 487, 185, 803, 755, 216, 264, 216, 430, 487, + 796, 663, 755, 761, 185, 755, 185, 761, 23, 134, + 366, 575, 578, 770, 786, 801, 755, 770, 795, 815, + 755, 576, 755, 333, 366, 511, 579, 513, 766, 755, + 513, 766, 755, 513, 333, 366, 579, 755, 755, 755, + 755, 333, 366, 579, 755, 755, 605, 605, 605, 438, + 726, 488, 693, 693, 693, 745, 317, 837, 488, 491, + 277, 167, 406, 832, 442, 753, 761, 822, 264, 279, + 487, 149, 149, 226, 761, 793, 803, 807, 810, 819, + 821, 449, 451, 798, 148, 591, 449, 540, 488, 693, + 587, 756, 587, 279, 587, 264, 36, 480, 487, 513, + 558, 839, 488, 491, 36, 836, 760, 836, 264, 269, + 319, 836, 836, 568, 727, 35, 664, 661, 761, 485, + 485, 759, 406, 406, 406, 406, 663, 488, 486, 723, + 693, 136, 740, 741, 36, 488, 693, 488, 488, 488, + 488, 167, 488, 488, 488, 491, 488, 489, 302, 731, + 488, 694, 694, 693, 11, 16, 17, 18, 191, 212, + 281, 474, 475, 476, 478, 479, 480, 481, 482, 483, + 719, 694, 488, 488, 162, 167, 734, 735, 488, 470, + 470, 488, 488, 36, 736, 723, 736, 736, 167, 488, + 36, 747, 693, 714, 693, 488, 488, 470, 694, 694, + 142, 723, 167, 129, 155, 269, 274, 413, 424, 487, + 142, 722, 693, 392, 748, 693, 737, 693, 406, 487, + 592, 487, 487, 289, 705, 399, 401, 399, 401, 753, + 395, 601, 601, 601, 221, 348, 487, 592, 642, 643, + 644, 651, 652, 696, 698, 699, 761, 446, 657, 605, + 657, 759, 692, 768, 547, 642, 446, 857, 436, 394, + 429, 527, 522, 531, 761, 279, 524, 761, 528, 534, + 491, 641, 476, 747, 608, 281, 717, 720, 472, 610, + 4, 759, 626, 280, 428, 623, 491, 235, 406, 693, + 264, 818, 487, 149, 487, 796, 194, 816, 779, 283, + 789, 779, 23, 134, 337, 338, 366, 572, 573, 574, + 580, 581, 149, 587, 149, 587, 786, 801, 786, 488, + 491, 760, 782, 476, 489, 488, 491, 406, 352, 85, + 406, 509, 352, 406, 406, 406, 352, 488, 488, 488, + 726, 486, 383, 384, 760, 846, 811, 837, 753, 812, + 543, 395, 149, 753, 816, 753, 753, 776, 753, 488, + 491, 277, 791, 277, 279, 790, 755, 449, 775, 791, + 36, 766, 149, 558, 834, 845, 840, 760, 760, 269, + 816, 480, 816, 760, 760, 488, 485, 488, 491, 663, + 759, 486, 759, 488, 685, 687, 688, 689, 688, 689, + 689, 488, 403, 693, 140, 663, 488, 693, 693, 722, + 693, 734, 663, 694, 694, 694, 694, 129, 264, 274, + 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, + 693, 693, 735, 734, 683, 683, 663, 488, 488, 488, + 723, 663, 488, 692, 693, 33, 33, 693, 488, 693, + 167, 487, 727, 693, 488, 142, 694, 694, 142, 142, + 693, 693, 606, 446, 487, 706, 761, 601, 601, 601, + 601, 753, 753, 753, 592, 652, 167, 592, 643, 644, + 36, 645, 646, 761, 491, 93, 168, 200, 215, 224, + 258, 343, 648, 646, 36, 645, 647, 761, 473, 656, + 746, 693, 176, 628, 488, 628, 488, 488, 693, 340, + 526, 435, 488, 491, 747, 83, 526, 488, 491, 523, + 857, 693, 487, 610, 159, 220, 280, 753, 755, 488, + 149, 816, 803, 816, 779, 806, 488, 116, 198, 262, + 264, 802, 487, 813, 171, 114, 184, 264, 791, 512, + 106, 114, 171, 264, 382, 385, 514, 791, 366, 574, + 417, 755, 761, 578, 3, 44, 50, 74, 81, 93, + 100, 166, 168, 172, 186, 200, 212, 213, 215, 224, + 226, 238, 258, 263, 267, 281, 288, 290, 343, 367, + 371, 388, 397, 416, 440, 478, 479, 513, 663, 720, + 760, 763, 780, 817, 859, 865, 770, 815, 755, 755, + 755, 755, 755, 755, 755, 755, 755, 755, 605, 512, + 846, 487, 540, 185, 753, 806, 430, 537, 488, 549, + 487, 36, 800, 798, 807, 79, 562, 106, 262, 591, + 587, 776, 488, 491, 816, 664, 759, 664, 761, 486, + 486, 693, 488, 488, 735, 167, 129, 274, 487, 488, + 488, 693, 693, 693, 727, 488, 693, 33, 33, 693, + 693, 142, 488, 488, 693, 707, 761, 753, 753, 753, + 753, 646, 647, 487, 488, 761, 762, 397, 619, 620, + 487, 643, 215, 288, 649, 643, 649, 215, 648, 649, + 215, 620, 487, 761, 620, 487, 286, 54, 179, 632, + 760, 632, 760, 750, 591, 292, 591, 522, 279, 487, + 520, 476, 534, 526, 722, 779, 803, 488, 488, 449, + 809, 117, 187, 196, 116, 432, 786, 804, 67, 73, + 85, 114, 116, 171, 198, 264, 269, 312, 327, 423, + 784, 785, 797, 30, 54, 823, 185, 269, 513, 693, + 823, 269, 478, 479, 516, 761, 663, 587, 587, 238, + 388, 763, 767, 476, 406, 406, 488, 838, 430, 833, + 835, 816, 36, 264, 487, 279, 536, 761, 487, 540, + 810, 148, 591, 146, 192, 790, 119, 134, 311, 775, + 106, 449, 773, 36, 845, 486, 663, 694, 167, 487, + 727, 488, 693, 693, 693, 488, 298, 708, 653, 654, + 698, 645, 487, 4, 9, 615, 617, 618, 761, 754, + 643, 279, 430, 650, 643, 215, 643, 658, 659, 761, + 487, 658, 761, 487, 629, 630, 631, 693, 693, 448, + 702, 702, 527, 85, 487, 525, 533, 698, 761, 130, + 693, 488, 327, 809, 487, 799, 779, 488, 491, 487, + 766, 755, 694, 823, 117, 187, 116, 269, 216, 753, + 809, 114, 36, 149, 73, 660, 767, 482, 780, 755, + 755, 512, 121, 488, 591, 149, 753, 533, 36, 488, + 755, 775, 27, 78, 86, 115, 184, 195, 382, 385, + 794, 794, 348, 348, 59, 67, 230, 694, 727, 488, + 54, 605, 488, 491, 36, 655, 754, 301, 482, 301, + 348, 482, 487, 487, 488, 693, 487, 643, 650, 488, + 491, 663, 658, 488, 488, 491, 703, 704, 761, 430, + 616, 616, 435, 755, 693, 488, 491, 73, 529, 529, + 265, 428, 753, 779, 770, 805, 808, 786, 693, 264, + 785, 36, 809, 812, 184, 766, 430, 577, 482, 417, + 838, 760, 540, 773, 753, 537, 488, 591, 798, 562, + 67, 282, 67, 488, 723, 320, 348, 709, 656, 653, + 487, 488, 761, 615, 754, 659, 660, 488, 630, 491, + 36, 350, 591, 488, 657, 525, 766, 530, 766, 530, + 366, 812, 476, 488, 491, 488, 184, 240, 820, 487, + 781, 693, 417, 36, 487, 487, 540, 773, 790, 775, + 282, 282, 48, 96, 419, 693, 710, 711, 710, 488, + 658, 488, 491, 488, 488, 704, 706, 618, 529, 609, + 609, 532, 820, 780, 808, 262, 792, 781, 168, 297, + 372, 279, 787, 788, 814, 511, 591, 533, 657, 711, + 347, 161, 307, 161, 307, 488, 9, 334, 621, 530, + 610, 610, 657, 788, 196, 119, 428, 279, 814, 279, + 787, 488, 773, 488, 33, 488, 487, 609, 779, 58, + 262, 339, 366, 783, 783, 540, 711, 9, 610, 22, + 114, 269, 657, 488 +}; + + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_int16 yyr1[] = +{ + 0, 497, 498, 499, 499, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 501, + 502, 503, 503, 503, 503, 503, 504, 504, 504, 504, + 504, 505, 505, 506, 506, 507, 507, 508, 508, 508, + 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, + 509, 509, 510, 510, 511, 511, 512, 512, 512, 513, + 513, 513, 513, 514, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 515, 515, 516, + 516, 516, 517, 518, 518, 518, 518, 518, 519, 519, + 520, 520, 520, 521, 521, 522, 523, 523, 524, 524, + 524, 525, 525, 525, 526, 526, 527, 527, 528, 528, + 529, 529, 530, 530, 531, 531, 532, 532, 533, 533, + 534, 535, 535, 536, 537, 537, 538, 538, 539, 539, + 540, 540, 541, 541, 542, 542, 543, 543, 544, 544, + 544, 544, 545, 546, 546, 547, 547, 547, 547, 548, + 548, 549, 549, 550, 550, 550, 550, 551, 551, 552, + 552, 552, 553, 553, 553, 553, 553, 554, 554, 554, + 555, 555, 556, 556, 557, 557, 558, 558, 558, 558, + 559, 560, 560, 561, 561, 561, 562, 562, 563, 563, + 563, 563, 563, 563, 564, 564, 564, 565, 565, 565, + 565, 566, 566, 566, 566, 567, 567, 567, 567, 568, + 568, 569, 569, 569, 569, 569, 569, 569, 570, 570, + 571, 571, 571, 571, 571, 571, 571, 571, 572, 572, + 573, 573, 574, 574, 574, 574, 575, 575, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 577, 577, 578, + 578, 578, 578, 579, 579, 580, 581, 581, 581, 582, + 582, 582, 582, 583, 583, 583, 583, 583, 583, 584, + 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, + 584, 584, 584, 584, 585, 585, 585, 585, 585, 585, + 585, 586, 586, 587, 587, 587, 588, 588, 588, 589, + 590, 591, 591, 592, 592, 593, 593, 593, 593, 593, + 593, 593, 593, 594, 594, 595, 595, 595, 595, 595, + 595, 595, 596, 596, 596, 597, 597, 598, 599, 599, + 600, 600, 600, 600, 600, 600, 600, 600, 600, 601, + 601, 602, 602, 602, 603, 603, 604, 604, 605, 605, + 606, 607, 607, 608, 608, 609, 609, 609, 610, 610, + 610, 611, 611, 611, 611, 612, 612, 613, 613, 613, + 613, 614, 614, 615, 615, 615, 615, 615, 615, 616, + 616, 617, 617, 618, 618, 618, 618, 619, 620, 620, + 621, 621, 622, 622, 623, 624, 624, 624, 625, 625, + 626, 626, 627, 627, 628, 628, 629, 629, 630, 630, + 631, 632, 632, 633, 633, 634, 634, 635, 635, 636, + 637, 637, 637, 637, 638, 638, 639, 639, 639, 640, + 640, 641, 641, 642, 642, 643, 643, 643, 643, 643, + 643, 643, 644, 644, 644, 644, 644, 644, 645, 645, + 645, 645, 646, 646, 647, 647, 647, 647, 647, 648, + 648, 648, 648, 649, 649, 650, 650, 651, 651, 651, + 651, 652, 652, 653, 654, 654, 655, 655, 656, 656, + 657, 657, 658, 658, 659, 660, 660, 661, 661, 662, + 662, 663, 663, 663, 663, 663, 663, 663, 663, 664, + 664, 664, 665, 665, 665, 665, 665, 665, 665, 666, + 666, 666, 666, 667, 668, 668, 669, 669, 669, 669, + 669, 669, 669, 669, 669, 669, 669, 670, 670, 671, + 671, 672, 672, 673, 674, 675, 675, 676, 676, 677, + 678, 679, 679, 679, 679, 679, 679, 680, 680, 681, + 681, 681, 681, 682, 683, 683, 683, 684, 684, 685, + 685, 686, 686, 687, 687, 688, 688, 689, 689, 690, + 690, 691, 691, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, 692, 693, + 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, + 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, + 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, + 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, + 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, + 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, + 693, 693, 693, 693, 693, 693, 693, 693, 694, 694, + 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, + 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, + 694, 695, 695, 695, 695, 695, 695, 695, 695, 695, + 695, 695, 696, 696, 696, 696, 696, 696, 696, 697, + 697, 698, 698, 699, 699, 699, 699, 699, 699, 699, + 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, + 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, + 699, 699, 700, 700, 701, 701, 702, 702, 703, 703, + 704, 705, 705, 705, 706, 707, 707, 708, 708, 709, + 709, 709, 710, 710, 711, 711, 711, 711, 711, 712, + 712, 713, 713, 714, 715, 715, 716, 716, 716, 717, + 717, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 719, 719, 720, 720, 721, 721, 721, + 721, 721, 721, 721, 721, 722, 722, 723, 723, 724, + 724, 725, 725, 726, 726, 726, 727, 727, 728, 728, + 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, + 730, 730, 731, 732, 732, 733, 733, 733, 733, 733, + 733, 734, 735, 736, 736, 736, 737, 737, 738, 739, + 739, 740, 741, 741, 742, 742, 743, 743, 744, 744, + 744, 744, 745, 745, 746, 746, 747, 747, 748, 748, + 749, 749, 750, 750, 751, 751, 751, 751, 752, 752, + 753, 753, 754, 754, 755, 756, 757, 757, 758, 758, + 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, + 758, 758, 759, 760, 761, 761, 761, 762, 762, 763, + 763, 763, 764, 764, 764, 765, 765, 765, 766, 766, + 767, 767, 768, 768, 769, 770, 770, 770, 770, 771, + 771, 772, 772, 772, 772, 773, 773, 773, 773, 774, + 774, 775, 775, 775, 776, 777, 777, 777, 778, 778, + 779, 779, 780, 780, 780, 780, 780, 780, 781, 781, + 782, 783, 783, 783, 783, 783, 784, 784, 784, 784, + 785, 785, 785, 785, 785, 785, 785, 785, 786, 787, + 788, 788, 788, 788, 788, 789, 789, 790, 790, 790, + 790, 791, 792, 792, 793, 793, 794, 794, 794, 794, + 794, 794, 794, 794, 795, 795, 796, 797, 797, 797, + 797, 798, 798, 798, 798, 799, 800, 800, 800, 801, + 802, 802, 802, 802, 802, 802, 803, 804, 804, 805, + 805, 806, 807, 807, 807, 808, 808, 809, 809, 810, + 810, 811, 812, 812, 813, 813, 814, 815, 815, 815, + 815, 816, 816, 817, 817, 817, 818, 818, 818, 818, + 818, 818, 819, 819, 820, 820, 820, 820, 821, 822, + 822, 822, 822, 822, 822, 822, 822, 823, 823, 824, + 824, 824, 824, 824, 824, 825, 826, 826, 827, 827, + 827, 827, 827, 827, 827, 828, 828, 829, 829, 830, + 831, 831, 832, 832, 833, 833, 834, 834, 835, 835, + 836, 836, 837, 837, 838, 838, 839, 839, 839, 839, + 839, 840, 841, 841, 842, 842, 843, 843, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 845, 846, 846, 846, 847, 847, 848, 848, + 849, 850, 850, 851, 851, 851, 852, 853, 853, 854, + 854, 855, 856, 856, 856, 857, 857, 858, 858, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 860, + 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, + 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, + 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, + 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, + 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, + 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, + 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, + 861, 861, 861, 861, 861, 861, 862, 862, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, + 862, 863, 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 864, 864, 864, 864, 864, 864, 864, 864, + 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, + 864, 864, 864, 864, 864, 864, 864, 864, 864, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865 +}; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_int8 yyr2[] = +{ + 0, 2, 1, 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, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, + 3, 4, 5, 5, 4, 6, 1, 1, 1, 1, + 1, 1, 0, 1, 3, 1, 0, 6, 6, 8, + 6, 8, 6, 8, 6, 8, 8, 10, 8, 10, + 1, 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, 7, 1, 4, 4, 7, 2, 1, 3, + 4, 3, 0, 1, 0, 2, 3, 5, 8, 5, + 0, 5, 5, 7, 2, 0, 1, 1, 1, 3, + 2, 0, 1, 0, 1, 3, 1, 3, 1, 3, + 2, 13, 16, 1, 2, 0, 1, 0, 1, 0, + 2, 0, 1, 0, 4, 7, 2, 0, 1, 1, + 1, 1, 5, 3, 0, 1, 1, 1, 1, 5, + 8, 1, 0, 2, 4, 3, 5, 1, 0, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 3, 9, 12, 3, 0, 2, 2, + 2, 2, 2, 2, 1, 1, 0, 2, 3, 3, + 3, 1, 3, 3, 2, 3, 3, 3, 3, 1, + 1, 1, 1, 3, 5, 1, 1, 1, 1, 3, + 4, 6, 4, 6, 4, 6, 4, 6, 1, 2, + 3, 2, 1, 3, 2, 3, 1, 3, 2, 5, + 3, 6, 4, 6, 6, 6, 5, 5, 6, 9, + 4, 5, 7, 6, 4, 8, 4, 2, 4, 3, + 6, 4, 2, 2, 2, 2, 1, 2, 0, 1, + 2, 2, 2, 1, 3, 4, 2, 1, 0, 2, + 3, 2, 3, 6, 4, 6, 4, 6, 8, 1, + 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, + 3, 3, 3, 3, 2, 2, 1, 3, 1, 1, + 1, 1, 3, 1, 1, 0, 1, 1, 1, 2, + 1, 1, 1, 3, 3, 1, 2, 4, 4, 2, + 3, 5, 5, 1, 1, 10, 10, 1, 2, 4, + 4, 4, 2, 2, 3, 1, 3, 6, 2, 0, + 3, 3, 4, 4, 4, 4, 3, 2, 1, 1, + 0, 1, 1, 0, 1, 5, 1, 0, 1, 0, + 3, 1, 3, 4, 3, 1, 1, 0, 2, 2, + 0, 2, 2, 1, 1, 1, 0, 2, 4, 5, + 4, 2, 3, 2, 2, 2, 2, 1, 2, 3, + 0, 1, 0, 5, 1, 4, 6, 2, 1, 0, + 4, 0, 1, 1, 1, 1, 2, 2, 1, 1, + 1, 1, 1, 1, 3, 0, 1, 3, 1, 1, + 2, 2, 0, 1, 3, 1, 0, 1, 2, 3, + 2, 4, 2, 3, 2, 0, 1, 2, 0, 4, + 5, 2, 0, 1, 3, 3, 3, 3, 3, 3, + 1, 4, 3, 4, 5, 4, 5, 4, 5, 2, + 4, 1, 1, 0, 1, 4, 5, 4, 0, 2, + 2, 2, 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, 2, 3, 5, 6, 2, 3, 5, 5, 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, 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, 2, 2, + 3, 3, 2, 2, 3, 3, 5, 4, 6, 3, + 5, 4, 6, 4, 6, 5, 7, 3, 2, 4, + 3, 2, 1, 3, 3, 3, 3, 3, 3, 4, + 3, 4, 3, 4, 5, 6, 6, 7, 6, 7, + 6, 7, 3, 4, 4, 6, 1, 4, 1, 3, + 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 2, 2, 5, 6, 6, + 7, 1, 1, 2, 2, 2, 4, 1, 2, 1, + 2, 2, 3, 5, 6, 8, 6, 6, 4, 4, + 1, 1, 1, 5, 1, 1, 4, 1, 4, 1, + 4, 1, 4, 1, 1, 1, 1, 1, 1, 6, + 6, 4, 4, 4, 4, 6, 5, 5, 5, 4, + 6, 4, 5, 0, 5, 0, 2, 0, 1, 3, + 3, 2, 2, 0, 6, 1, 0, 3, 0, 2, + 2, 0, 1, 4, 2, 2, 2, 2, 2, 4, + 3, 1, 5, 3, 1, 3, 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, + 0, 1, 3, 1, 3, 3, 1, 3, 3, 0, + 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, 5, 1, + 2, 4, 2, 0, 1, 0, 1, 2, 2, 2, + 3, 5, 1, 0, 1, 2, 0, 2, 1, 0, + 1, 0, 1, 3, 3, 2, 1, 1, 1, 3, + 1, 2, 1, 3, 1, 1, 1, 2, 1, 1, + 2, 1, 1, 2, 6, 2, 5, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 3, 3, 0, 1, 1, 1, 1, 1, 1, + 1, 9, 11, 12, 14, 3, 4, 4, 0, 7, + 10, 2, 3, 0, 4, 2, 4, 5, 9, 12, + 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, 2, 5, 5, 2, 3, + 1, 1, 2, 2, 0, 4, 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, 4, 1, 3, 1, + 3, 1, 1, 1, 1, 3, 1, 2, 0, 1, + 0, 1, 3, 0, 2, 0, 3, 3, 1, 5, + 3, 1, 3, 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, + 8, 6, 8, 6, 8, 8, 2, 4, 2, 2, + 2, 2, 3, 4, 2, 1, 1, 1, 3, 2, + 11, 9, 1, 1, 3, 0, 1, 3, 1, 0, + 1, 0, 1, 0, 1, 3, 1, 1, 1, 3, + 0, 2, 2, 0, 2, 0, 1, 0, 1, 1, + 1, 3, 3, 1, 1, 3, 3, 3, 3, 4, + 3, 2, 1, 1, 1, 1, 1, 3, 2, 1, + 2, 1, 1, 1, 2, 3, 6, 1, 1, 2, + 3, 7, 1, 2, 3, 2, 0, 2, 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, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 +}; -#define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (&yylloc, yyscanner, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (&yylloc, yyscanner, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (YYID (0)) +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (N) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (0) #endif +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know @@ -221244,114 +220476,93 @@ while (YYID (0)) #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL -# define YY_LOCATION_PRINT(File, Loc) \ - fprintf (File, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column) + +/* Print *YYLOCP on YYO. Private, do not rely on its existence. */ + +YY_ATTRIBUTE_UNUSED +static int +yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) +{ + int res = 0; + int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; + if (0 <= yylocp->first_line) + { + res += YYFPRINTF (yyo, "%d", yylocp->first_line); + if (0 <= yylocp->first_column) + res += YYFPRINTF (yyo, ".%d", yylocp->first_column); + } + if (0 <= yylocp->last_line) + { + if (yylocp->first_line < yylocp->last_line) + { + res += YYFPRINTF (yyo, "-%d", yylocp->last_line); + if (0 <= end_col) + res += YYFPRINTF (yyo, ".%d", end_col); + } + else if (0 <= end_col && yylocp->first_column < end_col) + res += YYFPRINTF (yyo, "-%d", end_col); + } + return res; + } + +# define YY_LOCATION_PRINT(File, Loc) \ + yy_location_print_ (File, &(Loc)) + # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) -#else -# define YYLEX yylex (&yylval, &yylloc, yyscanner) -#endif +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, Location, yyscanner); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) -/* Enable debugging if requested. */ -#if YYDEBUG -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, Location, yyscanner); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) -#else static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; - core_yyscan_t yyscanner; -#endif +yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) { - if (!yyvaluep) - return; + FILE *yyoutput = yyo; + YYUSE (yyoutput); YYUSE (yylocationp); YYUSE (yyscanner); + if (!yyvaluep) + return; # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); + YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif - switch (yytype) - { - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) -#else static void -yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; - core_yyscan_t yyscanner; -#endif +yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyo, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - YY_LOCATION_PRINT (yyoutput, *yylocationp); - YYFPRINTF (yyoutput, ": "); - yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner); - YYFPRINTF (yyoutput, ")"); + YY_LOCATION_PRINT (yyo, *yylocationp); + YYFPRINTF (yyo, ": "); + yy_symbol_value_print (yyo, yytype, yyvaluep, yylocationp, yyscanner); + YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. @@ -221359,68 +220570,54 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) -#else -static void -yy_stack_print (bottom, top) - yytype_int16 *bottom; - yytype_int16 *top; -#endif +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, core_yyscan_t yyscanner) -#else static void -yy_reduce_print (yyvsp, yylsp, yyrule, yyscanner) - YYSTYPE *yyvsp; - YYLTYPE *yylsp; - int yyrule; - core_yyscan_t yyscanner; -#endif +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, core_yyscan_t yyscanner) { + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { - fprintf (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , &(yylsp[(yyi + 1) - (yynrhs)]) , yyscanner); - fprintf (stderr, "\n"); + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[+yyssp[yyi + 1 - yynrhs]], + &yyvsp[(yyi + 1) - (yynrhs)] + , &(yylsp[(yyi + 1) - (yynrhs)]) , yyscanner); + YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, yylsp, Rule, yyscanner); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, yylsp, Rule, yyscanner); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -221434,7 +220631,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -221449,26 +220646,18 @@ int yydebug; # define YYMAXDEPTH 10000 #endif - #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen +# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) # else /* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static YYSIZE_T +static YYPTRDIFF_T yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif { - YYSIZE_T yylen; + YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -221482,16 +220671,8 @@ yystrlen (yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif { char *yyd = yydest; const char *yys = yysrc; @@ -221512,209 +220693,210 @@ yystpcpy (yydest, yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYSIZE_T +static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYSIZE_T yyn = 0; + YYPTRDIFF_T yyn = 0; char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + else + goto append; + + append: + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } - if (! yyres) + if (yyres) + return yystpcpy (yyres, yystr) - yyres; + else return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; } # endif -/* Copy into YYRESULT an error message about the unexpected token - YYCHAR while in state YYSTATE. Return the number of bytes copied, - including the terminating null byte. If YYRESULT is null, do not - copy anything; just return the number of bytes that would be - copied. As a special case, return 0 if an ordinary "syntax error" - message will do. Return YYSIZE_MAXIMUM if overflow occurs during - size calculation. */ -static YYSIZE_T -yysyntax_error (char *yyresult, int yystate, int yychar) +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, + yy_state_t *yyssp, int yytoken) { - int yyn = yypact[yystate]; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULLPTR; + /* Arguments of yyformat: reported tokens (one for the "unexpected", + one per "expected"). */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Actual size of YYARG. */ + int yycount = 0; + /* Cumulated lengths of YYARG. */ + YYPTRDIFF_T yysize = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[+*yyssp]; + YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + yysize = yysize0; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYPTRDIFF_T yysize1 + = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else + return 2; + } + } + } + } - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) - return 0; - else + switch (yycount) { - int yytype = YYTRANSLATE (yychar); - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - int yysize_overflow = 0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - int yyx; - -# if 0 - /* This is so xgettext sees the translatable formats that are - constructed on the fly. */ - YY_("syntax error, unexpected %s"); - YY_("syntax error, unexpected %s, expecting %s"); - YY_("syntax error, unexpected %s, expecting %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); -# endif - char *yyfmt; - char const *yyf; - static char const yyunexpected[] = "syntax error, unexpected %s"; - static char const yyexpecting[] = ", expecting %s"; - static char const yyor[] = " or %s"; - char yyformat[sizeof yyunexpected - + sizeof yyexpecting - 1 - + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) - * (sizeof yyor - 1))]; - char const *yyprefix = yyexpecting; - - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 1; - - yyarg[0] = yytname[yytype]; - yyfmt = yystpcpy (yyformat, yyunexpected); - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - yyformat[sizeof yyunexpected - 1] = '\0'; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - yyfmt = yystpcpy (yyfmt, yyprefix); - yyprefix = yyor; - } - - yyf = YY_(yyformat); - yysize1 = yysize + yystrlen (yyf); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + default: /* Avoid compiler warnings. */ + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } - if (yysize_overflow) - return YYSIZE_MAXIMUM; + { + /* Don't count the "%s"s in the final size, but reserve room for + the terminator. */ + YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else + return 2; + } - if (yyresult) - { - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - char *yyp = yyresult; - int yyi = 0; - while ((*yyp = *yyf) != '\0') - { - if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyf += 2; - } - else - { - yyp++; - yyf++; - } - } - } - return yysize; + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + ++yyp; + ++yyformat; + } + } + return 0; } #endif /* YYERROR_VERBOSE */ - /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, core_yyscan_t yyscanner) -#else -static void -yydestruct (yymsg, yytype, yyvaluep, yylocationp, yyscanner) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; - YYLTYPE *yylocationp; - core_yyscan_t yyscanner; -#endif { YYUSE (yyvaluep); YYUSE (yylocationp); YYUSE (yyscanner); - if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - switch (yytype) - { - - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int yyparse (core_yyscan_t yyscanner); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - @@ -221723,214 +220905,211 @@ int yyparse (); | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (core_yyscan_t yyscanner) -#else -int -yyparse (yyscanner) - core_yyscan_t yyscanner; -#endif -#endif { - /* The look-ahead symbol. */ +/* The lookahead symbol. */ int yychar; -/* The semantic value of the look-ahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; -/* Location data for the look-ahead symbol. */ -YYLTYPE yylloc; +/* The semantic value of the lookahead symbol. */ +/* Default value used for initialization, for pacifying older GCCs + or non-GCC compilers. */ +YY_INITIAL_VALUE (static YYSTYPE yyval_default;) +YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); - int yystate; - int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif +/* Location data for the lookahead symbol. */ +static YYLTYPE yyloc_default +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL + = { 1, 1, 1, 1 } +# endif +; +YYLTYPE yylloc = yyloc_default; - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. + /* Number of syntax errors so far. */ + int yynerrs; - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + yy_state_fast_t yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + 'yyls': related to locations. - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ - /* The location stack. */ - YYLTYPE yylsa[YYINITDEPTH]; - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; - /* The locations where the error started and ended. */ - YYLTYPE yyerror_range[2]; + /* The state stack. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss; + yy_state_t *yyssp; -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + /* The location stack. */ + YYLTYPE yylsa[YYINITDEPTH]; + YYLTYPE *yyls; + YYLTYPE *yylsp; + + /* The locations where the error started and ended. */ + YYLTYPE yyerror_range[3]; - YYSIZE_T yystacksize = YYINITDEPTH; + YYPTRDIFF_T yystacksize; + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; YYLTYPE yyloc; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) + /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yylsp = yyls = yylsa; + yystacksize = YYINITDEPTH; + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; - yylsp = yyls; -#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL - /* Initialize the default location before parsing starts. */ - yylloc.first_line = yylloc.last_line = 1; - yylloc.first_column = yylloc.last_column = 0; -#endif - + yychar = YYEMPTY; /* Cause a token to be read. */ + yylsp[0] = yylloc; goto yysetstate; + /*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | +| yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ - yynewstate: +yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - yysetstate: - *yyssp = yystate; + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + goto yyexhaustedlab; +#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; + YYPTRDIFF_T yysize = yyssp - yyss + 1; -#ifdef yyoverflow +# if defined yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - YYLTYPE *yyls1 = yyls; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yyls1, yysize * sizeof (*yylsp), - &yystacksize); - yyls = yyls1; - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + yy_state_t *yyss1 = yyss; + YYSTYPE *yyvs1 = yyvs; + YYLTYPE *yyls1 = yyls; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yyls1, yysize * YYSIZEOF (*yylsp), + &yystacksize); + yyss = yyss1; + yyvs = yyvs1; + yyls = yyls1; } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else +# else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - YYSTACK_RELOCATE (yyls); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + yy_state_t *yyss1 = yyss; + union yyalloc *yyptr = + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); + YYSTACK_RELOCATE (yyls_alloc, yyls); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif -#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; yylsp = yyls + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + if (yystate == YYFINAL) + YYACCEPT; goto yybackup; + /*-----------. | yybackup. | `-----------*/ yybackup: - /* Do appropriate processing given the current state. Read a - look-ahead token if we need one and don't already have one. */ + lookahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to look-ahead token. */ + /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) + if (yypact_value_is_default (yyn)) goto yydefault; - /* Not known => get a look-ahead token if don't already have one. */ + /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + yychar = yylex (&yylval, &yylloc, yyscanner); } if (yychar <= YYEOF) @@ -221952,30 +221131,27 @@ YYLTYPE yylloc; yyn = yytable[yyn]; if (yyn <= 0) { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; + if (yytable_value_is_error (yyn)) + goto yyerrlab; yyn = -yyn; goto yyreduce; } - if (yyn == YYFINAL) - YYACCEPT; - /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the look-ahead token. */ + /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END *++yylsp = yylloc; + + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -221990,14 +221166,14 @@ YYLTYPE yylloc; /*-----------------------------. -| yyreduce -- Do a reduction. | +| yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -222006,8735 +221182,9862 @@ YYLTYPE yylloc; GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; - /* Default location. */ + /* Default location. */ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); + yyerror_range[1] = yyloc; YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: + case 2: #line 460 "third_party/libpg_query/grammar/grammar.y" - { - pg_yyget_extra(yyscanner)->parsetree = (yyvsp[(1) - (1)].list); - ;} + { + pg_yyget_extra(yyscanner)->parsetree = (yyvsp[0].list); + } +#line 13762 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 3: #line 476 "third_party/libpg_query/grammar/grammar.y" - { - if ((yyvsp[(1) - (3)].list) != NIL) + { + if ((yyvsp[-2].list) != NIL) { /* update length of previous stmt */ - updateRawStmtEnd(llast_node(PGRawStmt, (yyvsp[(1) - (3)].list)), (yylsp[(2) - (3)])); + updateRawStmtEnd(llast_node(PGRawStmt, (yyvsp[-2].list)), (yylsp[-1])); } - if ((yyvsp[(3) - (3)].node) != NULL) - (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeRawStmt((yyvsp[(3) - (3)].node), (yylsp[(2) - (3)]) + 1)); + if ((yyvsp[0].node) != NULL) + (yyval.list) = lappend((yyvsp[-2].list), makeRawStmt((yyvsp[0].node), (yylsp[-1]) + 1)); else - (yyval.list) = (yyvsp[(1) - (3)].list); - ;} + (yyval.list) = (yyvsp[-2].list); + } +#line 13778 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 4: #line 488 "third_party/libpg_query/grammar/grammar.y" - { - if ((yyvsp[(1) - (1)].node) != NULL) - (yyval.list) = list_make1(makeRawStmt((yyvsp[(1) - (1)].node), 0)); + { + if ((yyvsp[0].node) != NULL) + (yyval.list) = list_make1(makeRawStmt((yyvsp[0].node), 0)); else (yyval.list) = NIL; - ;} + } +#line 13789 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 38: #line 530 "third_party/libpg_query/grammar/grammar.y" - { (yyval.node) = NULL; ;} + { (yyval.node) = NULL; } +#line 13795 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 39: -#line 10 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(3) - (4)].range); - n->cmds = (yyvsp[(4) - (4)].list); - n->relkind = PG_OBJECT_TABLE; - n->missing_ok = false; +#line 8 "third_party/libpg_query/grammar/statements/export.y" + { + PGExportStmt *n = makeNode(PGExportStmt); + n->filename = (yyvsp[-1].str); + n->options = NIL; + if ((yyvsp[0].list)) { + n->options = list_concat(n->options, (yyvsp[0].list)); + } (yyval.node) = (PGNode *)n; - ;} + } +#line 13809 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 40: -#line 19 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(5) - (6)].range); - n->cmds = (yyvsp[(6) - (6)].list); - n->relkind = PG_OBJECT_TABLE; - n->missing_ok = true; +#line 21 "third_party/libpg_query/grammar/statements/export.y" + { + PGImportStmt *n = makeNode(PGImportStmt); + n->filename = (yyvsp[0].str); (yyval.node) = (PGNode *)n; - ;} + } +#line 13819 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 41: -#line 28 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(3) - (4)].range); - n->cmds = (yyvsp[(4) - (4)].list); - n->relkind = PG_OBJECT_INDEX; - n->missing_ok = false; +#line 9 "third_party/libpg_query/grammar/statements/vacuum.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_VACUUM; + if ((yyvsp[-2].boolean)) + n->options |= PG_VACOPT_FULL; + if ((yyvsp[-1].boolean)) + n->options |= PG_VACOPT_FREEZE; + if ((yyvsp[0].boolean)) + n->options |= PG_VACOPT_VERBOSE; + n->relation = NULL; + n->va_cols = NIL; (yyval.node) = (PGNode *)n; - ;} + } +#line 13837 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 42: -#line 37 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(5) - (6)].range); - n->cmds = (yyvsp[(6) - (6)].list); - n->relkind = PG_OBJECT_INDEX; - n->missing_ok = true; +#line 23 "third_party/libpg_query/grammar/statements/vacuum.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_VACUUM; + if ((yyvsp[-3].boolean)) + n->options |= PG_VACOPT_FULL; + if ((yyvsp[-2].boolean)) + n->options |= PG_VACOPT_FREEZE; + if ((yyvsp[-1].boolean)) + n->options |= PG_VACOPT_VERBOSE; + n->relation = (yyvsp[0].range); + n->va_cols = NIL; (yyval.node) = (PGNode *)n; - ;} + } +#line 13855 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 43: -#line 46 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(3) - (4)].range); - n->cmds = (yyvsp[(4) - (4)].list); - n->relkind = PG_OBJECT_SEQUENCE; - n->missing_ok = false; +#line 37 "third_party/libpg_query/grammar/statements/vacuum.y" + { + PGVacuumStmt *n = (PGVacuumStmt *) (yyvsp[0].node); + n->options |= PG_VACOPT_VACUUM; + if ((yyvsp[-3].boolean)) + n->options |= PG_VACOPT_FULL; + if ((yyvsp[-2].boolean)) + n->options |= PG_VACOPT_FREEZE; + if ((yyvsp[-1].boolean)) + n->options |= PG_VACOPT_VERBOSE; (yyval.node) = (PGNode *)n; - ;} + } +#line 13871 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 44: -#line 55 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(5) - (6)].range); - n->cmds = (yyvsp[(6) - (6)].list); - n->relkind = PG_OBJECT_SEQUENCE; - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 49 "third_party/libpg_query/grammar/statements/vacuum.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_VACUUM | (yyvsp[-1].ival); + n->relation = NULL; + n->va_cols = NIL; + (yyval.node) = (PGNode *) n; + } +#line 13883 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 45: -#line 64 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(3) - (4)].range); - n->cmds = (yyvsp[(4) - (4)].list); - n->relkind = PG_OBJECT_VIEW; - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 57 "third_party/libpg_query/grammar/statements/vacuum.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_VACUUM | (yyvsp[-3].ival); + n->relation = (yyvsp[-1].range); + n->va_cols = (yyvsp[0].list); + if (n->va_cols != NIL) /* implies analyze */ + n->options |= PG_VACOPT_ANALYZE; + (yyval.node) = (PGNode *) n; + } +#line 13897 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 46: -#line 73 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(5) - (6)].range); - n->cmds = (yyvsp[(6) - (6)].list); - n->relkind = PG_OBJECT_VIEW; - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 70 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = PG_VACOPT_ANALYZE; } +#line 13903 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 47: -#line 86 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} +#line 71 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = PG_VACOPT_VERBOSE; } +#line 13909 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 48: -#line 88 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} +#line 72 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = PG_VACOPT_FREEZE; } +#line 13915 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 49: -#line 93 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.node) = (yyvsp[(3) - (3)].node); ;} +#line 73 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = PG_VACOPT_FULL; } +#line 13921 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 50: -#line 94 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.node) = NULL; ;} +#line 75 "third_party/libpg_query/grammar/statements/vacuum.y" + { + if (strcmp((yyvsp[0].str), "disable_page_skipping") == 0) + (yyval.ival) = PG_VACOPT_DISABLE_PAGE_SKIPPING; + else + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("unrecognized VACUUM option \"%s\"", (yyvsp[0].str)), + parser_errposition((yylsp[0])))); + } +#line 13935 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 51: -#line 100 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); - ;} +#line 87 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.boolean) = true; } +#line 13941 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 52: -#line 104 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = makeDefElem("restart", (PGNode *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); - ;} +#line 88 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.boolean) = false; } +#line 13947 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 53: -#line 108 "third_party/libpg_query/grammar/statements/alter_table.y" - { - if (strcmp((yyvsp[(2) - (2)].defelt)->defname, "as") == 0 || - strcmp((yyvsp[(2) - (2)].defelt)->defname, "restart") == 0 || - strcmp((yyvsp[(2) - (2)].defelt)->defname, "owned_by") == 0) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("sequence option \"%s\" not supported here", (yyvsp[(2) - (2)].defelt)->defname), - parser_errposition((yylsp[(2) - (2)])))); - (yyval.defelt) = (yyvsp[(2) - (2)].defelt); - ;} +#line 93 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = (yyvsp[0].ival); } +#line 13953 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 54: -#line 119 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = makeDefElem("generated", (PGNode *) makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); - ;} +#line 94 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } +#line 13959 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 55: -#line 127 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); - ;} +#line 98 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.boolean) = true; } +#line 13965 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 56: -#line 131 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); - ;} +#line 99 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.boolean) = false; } +#line 13971 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 57: -#line 140 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AddColumn; - n->def = (yyvsp[(2) - (2)].node); +#line 7 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_SCHEMA; + n->subname = (yyvsp[-3].str); + n->newname = (yyvsp[0].str); n->missing_ok = false; (yyval.node) = (PGNode *)n; - ;} + } +#line 13984 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 58: -#line 149 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AddColumn; - n->def = (yyvsp[(5) - (5)].node); - n->missing_ok = true; +#line 16 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = false; (yyval.node) = (PGNode *)n; - ;} + } +#line 13998 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 59: -#line 158 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AddColumn; - n->def = (yyvsp[(3) - (3)].node); - n->missing_ok = false; +#line 26 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = true; (yyval.node) = (PGNode *)n; - ;} + } +#line 14012 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 60: -#line 167 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AddColumn; - n->def = (yyvsp[(6) - (6)].node); - n->missing_ok = true; +#line 36 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_SEQUENCE; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = false; (yyval.node) = (PGNode *)n; - ;} + } +#line 14026 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 61: -#line 176 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_ColumnDefault; - n->name = (yyvsp[(3) - (4)].str); - n->def = (yyvsp[(4) - (4)].node); +#line 46 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_SEQUENCE; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = true; (yyval.node) = (PGNode *)n; - ;} + } +#line 14040 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 62: -#line 185 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_DropNotNull; - n->name = (yyvsp[(3) - (6)].str); +#line 56 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_VIEW; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = false; (yyval.node) = (PGNode *)n; - ;} + } +#line 14054 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 63: -#line 193 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetNotNull; - n->name = (yyvsp[(3) - (6)].str); +#line 66 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_VIEW; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = true; (yyval.node) = (PGNode *)n; - ;} + } +#line 14068 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 64: -#line 201 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetStatistics; - n->name = (yyvsp[(3) - (6)].str); - n->def = (PGNode *) makeInteger((yyvsp[(6) - (6)].ival)); +#line 76 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_INDEX; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = false; (yyval.node) = (PGNode *)n; - ;} + } +#line 14082 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 65: -#line 210 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetOptions; - n->name = (yyvsp[(3) - (5)].str); - n->def = (PGNode *) (yyvsp[(5) - (5)].list); +#line 86 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_INDEX; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = true; (yyval.node) = (PGNode *)n; - ;} + } +#line 14096 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 66: -#line 219 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_ResetOptions; - n->name = (yyvsp[(3) - (5)].str); - n->def = (PGNode *) (yyvsp[(5) - (5)].list); +#line 96 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_COLUMN; + n->relationType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-5].range); + n->subname = (yyvsp[-2].str); + n->newname = (yyvsp[0].str); + n->missing_ok = false; (yyval.node) = (PGNode *)n; - ;} + } +#line 14111 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 67: -#line 228 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetStorage; - n->name = (yyvsp[(3) - (6)].str); - n->def = (PGNode *) makeString((yyvsp[(6) - (6)].str)); +#line 107 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_COLUMN; + n->relationType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-5].range); + n->subname = (yyvsp[-2].str); + n->newname = (yyvsp[0].str); + n->missing_ok = true; (yyval.node) = (PGNode *)n; - ;} + } +#line 14126 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 68: -#line 237 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - PGConstraint *c = makeNode(PGConstraint); - - c->contype = PG_CONSTR_IDENTITY; - c->generated_when = (yyvsp[(6) - (9)].ival); - c->options = (yyvsp[(9) - (9)].list); - c->location = (yylsp[(5) - (9)]); - - n->subtype = PG_AT_AddIdentity; - n->name = (yyvsp[(3) - (9)].str); - n->def = (PGNode *) c; - +#line 118 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_TABCONSTRAINT; + n->relation = (yyvsp[-5].range); + n->subname = (yyvsp[-2].str); + n->newname = (yyvsp[0].str); + n->missing_ok = false; (yyval.node) = (PGNode *)n; - ;} + } +#line 14140 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 69: -#line 254 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetIdentity; - n->name = (yyvsp[(3) - (4)].str); - n->def = (PGNode *) (yyvsp[(4) - (4)].list); +#line 128 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_TABCONSTRAINT; + n->relation = (yyvsp[-5].range); + n->subname = (yyvsp[-2].str); + n->newname = (yyvsp[0].str); + n->missing_ok = true; (yyval.node) = (PGNode *)n; - ;} + } +#line 14154 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 70: -#line 263 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = AT_DropIdentity; - n->name = (yyvsp[(3) - (5)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 140 "third_party/libpg_query/grammar/statements/rename.y" + { (yyval.ival) = COLUMN; } +#line 14160 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 71: -#line 272 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = AT_DropIdentity; - n->name = (yyvsp[(3) - (7)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 141 "third_party/libpg_query/grammar/statements/rename.y" + { (yyval.ival) = 0; } +#line 14166 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 72: -#line 281 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_DropColumn; - n->name = (yyvsp[(5) - (6)].str); - n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->missing_ok = true; +#line 10 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + PGAlterSeqStmt *n = makeNode(PGAlterSeqStmt); + n->sequence = (yyvsp[-1].range); + n->options = (yyvsp[0].list); + n->missing_ok = false; (yyval.node) = (PGNode *)n; - ;} + } +#line 14178 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 73: -#line 291 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_DropColumn; - n->name = (yyvsp[(3) - (4)].str); - n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->missing_ok = false; +#line 18 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + PGAlterSeqStmt *n = makeNode(PGAlterSeqStmt); + n->sequence = (yyvsp[-1].range); + n->options = (yyvsp[0].list); + n->missing_ok = true; (yyval.node) = (PGNode *)n; - ;} + } +#line 14190 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 74: -#line 304 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - PGColumnDef *def = makeNode(PGColumnDef); - n->subtype = PG_AT_AlterColumnType; - n->name = (yyvsp[(3) - (8)].str); - n->def = (PGNode *) def; - /* We only use these fields of the PGColumnDef node */ - def->typeName = (yyvsp[(6) - (8)].typnam); - def->collClause = (PGCollateClause *) (yyvsp[(7) - (8)].node); - def->raw_default = (yyvsp[(8) - (8)].node); - def->location = (yylsp[(3) - (8)]); - (yyval.node) = (PGNode *)n; - ;} +#line 29 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.list) = list_make1((yyvsp[0].defelt)); } +#line 14196 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 75: -#line 319 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AlterColumnGenericOptions; - n->name = (yyvsp[(3) - (4)].str); - n->def = (PGNode *) (yyvsp[(4) - (4)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 30 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } +#line 14202 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 76: -#line 328 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AddConstraint; - n->def = (yyvsp[(2) - (2)].node); - (yyval.node) = (PGNode *)n; - ;} +#line 34 "third_party/libpg_query/grammar/statements/alter_sequence.y" + {} +#line 14208 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 77: -#line 336 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - PGConstraint *c = makeNode(PGConstraint); - n->subtype = PG_AT_AlterConstraint; - n->def = (PGNode *) c; - c->contype = PG_CONSTR_FOREIGN; /* others not supported, yet */ - c->conname = (yyvsp[(3) - (4)].str); - processCASbits((yyvsp[(4) - (4)].ival), (yylsp[(4) - (4)]), "ALTER CONSTRAINT statement", - &c->deferrable, - &c->initdeferred, - NULL, NULL, yyscanner); - (yyval.node) = (PGNode *)n; - ;} +#line 35 "third_party/libpg_query/grammar/statements/alter_sequence.y" + {} +#line 14214 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 78: -#line 351 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_ValidateConstraint; - n->name = (yyvsp[(3) - (3)].str); - (yyval.node) = (PGNode *)n; - ;} +#line 36 "third_party/libpg_query/grammar/statements/alter_sequence.y" + {} +#line 14220 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 79: -#line 359 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_DropConstraint; - n->name = (yyvsp[(5) - (6)].str); - n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 41 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.value) = makeFloat((yyvsp[0].str)); } +#line 14226 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 80: -#line 369 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_DropConstraint; - n->name = (yyvsp[(3) - (4)].str); - n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 42 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.value) = makeFloat((yyvsp[0].str)); } +#line 14232 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 81: -#line 379 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetLogged; - (yyval.node) = (PGNode *)n; - ;} +#line 44 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.value) = makeFloat((yyvsp[0].str)); + doNegateFloat((yyval.value)); + } +#line 14241 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 82: -#line 386 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetUnLogged; - (yyval.node) = (PGNode *)n; - ;} +#line 48 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.value) = makeInteger((yyvsp[0].ival)); } +#line 14247 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 83: -#line 393 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetRelOptions; - n->def = (PGNode *)(yyvsp[(2) - (2)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 53 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("as", (PGNode *)(yyvsp[0].typnam), (yylsp[-1])); + } +#line 14255 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 84: -#line 401 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_ResetRelOptions; - n->def = (PGNode *)(yyvsp[(2) - (2)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 57 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("cache", (PGNode *)(yyvsp[0].value), (yylsp[-1])); + } +#line 14263 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 85: -#line 408 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_GenericOptions; - n->def = (PGNode *)(yyvsp[(1) - (1)].list); - (yyval.node) = (PGNode *) n; - ;} +#line 61 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("cycle", (PGNode *)makeInteger(true), (yylsp[0])); + } +#line 14271 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 86: -#line 418 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} - break; - - case 87: -#line 419 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.node) = NULL; ;} - break; - - case 88: -#line 425 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = (yyvsp[(1) - (1)].defelt); - ;} - break; - - case 89: -#line 429 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = (yyvsp[(2) - (2)].defelt); - (yyval.defelt)->defaction = PG_DEFELEM_SET; - ;} - break; - - case 90: -#line 434 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = (yyvsp[(2) - (2)].defelt); - (yyval.defelt)->defaction = PG_DEFELEM_ADD; - ;} - break; - - case 91: -#line 439 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[(2) - (2)].str), NULL, DEFELEM_DROP, (yylsp[(2) - (2)])); - ;} - break; - - case 92: -#line 446 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} - break; - - case 93: -#line 447 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} - break; - - case 94: -#line 452 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} - break; - - case 95: -#line 456 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.ival) = 1; ;} - break; - - case 96: -#line 457 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.ival) = 0; ;} - break; - - case 97: -#line 458 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.ival) = 0; ;} - break; - - case 98: -#line 8 "third_party/libpg_query/grammar/statements/deallocate.y" - { - PGDeallocateStmt *n = makeNode(PGDeallocateStmt); - n->name = (yyvsp[(2) - (2)].str); - (yyval.node) = (PGNode *) n; - ;} - break; - - case 99: -#line 14 "third_party/libpg_query/grammar/statements/deallocate.y" - { - PGDeallocateStmt *n = makeNode(PGDeallocateStmt); - n->name = (yyvsp[(3) - (3)].str); - (yyval.node) = (PGNode *) n; - ;} - break; - - case 100: -#line 20 "third_party/libpg_query/grammar/statements/deallocate.y" - { - PGDeallocateStmt *n = makeNode(PGDeallocateStmt); - n->name = NULL; - (yyval.node) = (PGNode *) n; - ;} - break; - - case 101: -#line 26 "third_party/libpg_query/grammar/statements/deallocate.y" - { - PGDeallocateStmt *n = makeNode(PGDeallocateStmt); - n->name = NULL; - (yyval.node) = (PGNode *) n; - ;} - break; - - case 102: -#line 7 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_SCHEMA; - n->subname = (yyvsp[(3) - (6)].str); - n->newname = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 65 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("cycle", (PGNode *)makeInteger(false), (yylsp[-1])); + } +#line 14279 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 103: -#line 16 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(3) - (6)].range); - n->subname = NULL; - n->newname = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} + case 87: +#line 69 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("increment", (PGNode *)(yyvsp[0].value), (yylsp[-2])); + } +#line 14287 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 104: -#line 26 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(5) - (8)].range); - n->subname = NULL; - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} + case 88: +#line 73 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("maxvalue", (PGNode *)(yyvsp[0].value), (yylsp[-1])); + } +#line 14295 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 105: -#line 36 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_SEQUENCE; - n->relation = (yyvsp[(3) - (6)].range); - n->subname = NULL; - n->newname = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} + case 89: +#line 77 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("minvalue", (PGNode *)(yyvsp[0].value), (yylsp[-1])); + } +#line 14303 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 106: -#line 46 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_SEQUENCE; - n->relation = (yyvsp[(5) - (8)].range); - n->subname = NULL; - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} + case 90: +#line 81 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[-1])); + } +#line 14311 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 107: -#line 56 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_VIEW; - n->relation = (yyvsp[(3) - (6)].range); - n->subname = NULL; - n->newname = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} + case 91: +#line 85 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[-1])); + } +#line 14319 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 108: -#line 66 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_VIEW; - n->relation = (yyvsp[(5) - (8)].range); - n->subname = NULL; - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} + case 92: +#line 89 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("owned_by", (PGNode *)(yyvsp[0].list), (yylsp[-2])); + } +#line 14327 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 109: -#line 76 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_INDEX; - n->relation = (yyvsp[(3) - (6)].range); - n->subname = NULL; - n->newname = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} + case 93: +#line 93 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + /* not documented, only used by pg_dump */ + (yyval.defelt) = makeDefElem("sequence_name", (PGNode *)(yyvsp[0].list), (yylsp[-2])); + } +#line 14336 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 110: -#line 86 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_INDEX; - n->relation = (yyvsp[(5) - (8)].range); - n->subname = NULL; - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} + case 94: +#line 98 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("start", (PGNode *)(yyvsp[0].value), (yylsp[-2])); + } +#line 14344 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 111: -#line 96 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_COLUMN; - n->relationType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(3) - (8)].range); - n->subname = (yyvsp[(6) - (8)].str); - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} + case 95: +#line 102 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[0])); + } +#line 14352 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 112: -#line 107 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_COLUMN; - n->relationType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(5) - (10)].range); - n->subname = (yyvsp[(8) - (10)].str); - n->newname = (yyvsp[(10) - (10)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} + case 96: +#line 106 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("restart", (PGNode *)(yyvsp[0].value), (yylsp[-2])); + } +#line 14360 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 113: -#line 118 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_TABCONSTRAINT; - n->relation = (yyvsp[(3) - (8)].range); - n->subname = (yyvsp[(6) - (8)].str); - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} + case 97: +#line 112 "third_party/libpg_query/grammar/statements/alter_sequence.y" + {} +#line 14366 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 114: -#line 128 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_TABCONSTRAINT; - n->relation = (yyvsp[(5) - (10)].range); - n->subname = (yyvsp[(8) - (10)].str); - n->newname = (yyvsp[(10) - (10)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} + case 98: +#line 113 "third_party/libpg_query/grammar/statements/alter_sequence.y" + {} +#line 14372 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 115: -#line 140 "third_party/libpg_query/grammar/statements/rename.y" - { (yyval.ival) = COLUMN; ;} + case 99: +#line 117 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.ival) = (yyvsp[0].ival); } +#line 14378 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 116: -#line 141 "third_party/libpg_query/grammar/statements/rename.y" - { (yyval.ival) = 0; ;} + case 100: +#line 118 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.ival) = + (yyvsp[0].ival); } +#line 14384 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 117: + case 101: +#line 119 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.ival) = - (yyvsp[0].ival); } +#line 14390 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 102: #line 10 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyvsp[(5) - (7)].istmt)->relation = (yyvsp[(4) - (7)].range); - (yyvsp[(5) - (7)].istmt)->onConflictClause = (yyvsp[(6) - (7)].onconflict); - (yyvsp[(5) - (7)].istmt)->returningList = (yyvsp[(7) - (7)].list); - (yyvsp[(5) - (7)].istmt)->withClause = (yyvsp[(1) - (7)].with); - (yyval.node) = (PGNode *) (yyvsp[(5) - (7)].istmt); - ;} + { + (yyvsp[-2].istmt)->relation = (yyvsp[-3].range); + (yyvsp[-2].istmt)->onConflictClause = (yyvsp[-1].onconflict); + (yyvsp[-2].istmt)->returningList = (yyvsp[0].list); + (yyvsp[-2].istmt)->withClause = (yyvsp[-6].with); + (yyval.node) = (PGNode *) (yyvsp[-2].istmt); + } +#line 14402 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 118: + case 103: #line 22 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.istmt) = makeNode(PGInsertStmt); (yyval.istmt)->cols = NIL; - (yyval.istmt)->selectStmt = (yyvsp[(1) - (1)].node); - ;} + (yyval.istmt)->selectStmt = (yyvsp[0].node); + } +#line 14412 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 119: + case 104: #line 28 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.istmt) = makeNode(PGInsertStmt); (yyval.istmt)->cols = NIL; - (yyval.istmt)->override = (yyvsp[(2) - (4)].override); - (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); - ;} + (yyval.istmt)->override = (yyvsp[-2].override); + (yyval.istmt)->selectStmt = (yyvsp[0].node); + } +#line 14423 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 120: + case 105: #line 35 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.istmt) = makeNode(PGInsertStmt); - (yyval.istmt)->cols = (yyvsp[(2) - (4)].list); - (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); - ;} + (yyval.istmt)->cols = (yyvsp[-2].list); + (yyval.istmt)->selectStmt = (yyvsp[0].node); + } +#line 14433 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 121: + case 106: #line 41 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.istmt) = makeNode(PGInsertStmt); - (yyval.istmt)->cols = (yyvsp[(2) - (7)].list); - (yyval.istmt)->override = (yyvsp[(5) - (7)].override); - (yyval.istmt)->selectStmt = (yyvsp[(7) - (7)].node); - ;} + (yyval.istmt)->cols = (yyvsp[-5].list); + (yyval.istmt)->override = (yyvsp[-2].override); + (yyval.istmt)->selectStmt = (yyvsp[0].node); + } +#line 14444 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 122: + case 107: #line 48 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.istmt) = makeNode(PGInsertStmt); (yyval.istmt)->cols = NIL; (yyval.istmt)->selectStmt = NULL; - ;} + } +#line 14454 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 123: + case 108: #line 58 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.range) = (yyvsp[(1) - (1)].range); - ;} + { + (yyval.range) = (yyvsp[0].range); + } +#line 14462 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 124: + case 109: #line 62 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyvsp[(1) - (3)].range)->alias = makeAlias((yyvsp[(3) - (3)].str), NIL); - (yyval.range) = (yyvsp[(1) - (3)].range); - ;} + { + (yyvsp[-2].range)->alias = makeAlias((yyvsp[0].str), NIL); + (yyval.range) = (yyvsp[-2].range); + } +#line 14471 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 125: + case 110: #line 71 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.infer) = makeNode(PGInferClause); - (yyval.infer)->indexElems = (yyvsp[(2) - (4)].list); - (yyval.infer)->whereClause = (yyvsp[(4) - (4)].node); + (yyval.infer)->indexElems = (yyvsp[-2].list); + (yyval.infer)->whereClause = (yyvsp[0].node); (yyval.infer)->conname = NULL; - (yyval.infer)->location = (yylsp[(1) - (4)]); - ;} + (yyval.infer)->location = (yylsp[-3]); + } +#line 14483 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 126: + case 111: #line 80 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.infer) = makeNode(PGInferClause); (yyval.infer)->indexElems = NIL; (yyval.infer)->whereClause = NULL; - (yyval.infer)->conname = (yyvsp[(3) - (3)].str); - (yyval.infer)->location = (yylsp[(1) - (3)]); - ;} + (yyval.infer)->conname = (yyvsp[0].str); + (yyval.infer)->location = (yylsp[-2]); + } +#line 14495 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 127: + case 112: #line 88 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.infer) = NULL; - ;} + } +#line 14503 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 128: + case 113: #line 95 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.with) = (yyvsp[(1) - (1)].with); ;} + { (yyval.with) = (yyvsp[0].with); } +#line 14509 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 129: + case 114: #line 96 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.with) = NULL; ;} + { (yyval.with) = NULL; } +#line 14515 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 130: + case 115: #line 102 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = (yyvsp[(1) - (2)].str); - (yyval.target)->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); + (yyval.target)->name = (yyvsp[-1].str); + (yyval.target)->indirection = check_indirection((yyvsp[0].list), yyscanner); (yyval.target)->val = NULL; - (yyval.target)->location = (yylsp[(1) - (2)]); - ;} + (yyval.target)->location = (yylsp[-1]); + } +#line 14527 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 131: + case 116: #line 114 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyvsp[(1) - (3)].target)->val = (PGNode *) (yyvsp[(3) - (3)].node); - (yyval.list) = list_make1((yyvsp[(1) - (3)].target)); - ;} + { + (yyvsp[-2].target)->val = (PGNode *) (yyvsp[0].node); + (yyval.list) = list_make1((yyvsp[-2].target)); + } +#line 14536 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 132: + case 117: #line 119 "third_party/libpg_query/grammar/statements/insert.y" - { - int ncolumns = list_length((yyvsp[(2) - (5)].list)); + { + int ncolumns = list_length((yyvsp[-3].list)); int i = 1; PGListCell *col_cell; /* Create a PGMultiAssignRef source for each target */ - foreach(col_cell, (yyvsp[(2) - (5)].list)) + foreach(col_cell, (yyvsp[-3].list)) { PGResTarget *res_col = (PGResTarget *) lfirst(col_cell); PGMultiAssignRef *r = makeNode(PGMultiAssignRef); - r->source = (PGNode *) (yyvsp[(5) - (5)].node); + r->source = (PGNode *) (yyvsp[0].node); r->colno = i; r->ncolumns = ncolumns; res_col->val = (PGNode *) r; i++; } - (yyval.list) = (yyvsp[(2) - (5)].list); - ;} + (yyval.list) = (yyvsp[-3].list); + } +#line 14561 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 133: + case 118: #line 144 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.onconflict) = makeNode(PGOnConflictClause); (yyval.onconflict)->action = PG_ONCONFLICT_UPDATE; - (yyval.onconflict)->infer = (yyvsp[(3) - (8)].infer); - (yyval.onconflict)->targetList = (yyvsp[(7) - (8)].list); - (yyval.onconflict)->whereClause = (yyvsp[(8) - (8)].node); - (yyval.onconflict)->location = (yylsp[(1) - (8)]); - ;} + (yyval.onconflict)->infer = (yyvsp[-5].infer); + (yyval.onconflict)->targetList = (yyvsp[-1].list); + (yyval.onconflict)->whereClause = (yyvsp[0].node); + (yyval.onconflict)->location = (yylsp[-7]); + } +#line 14574 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 134: + case 119: #line 154 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.onconflict) = makeNode(PGOnConflictClause); (yyval.onconflict)->action = PG_ONCONFLICT_NOTHING; - (yyval.onconflict)->infer = (yyvsp[(3) - (5)].infer); + (yyval.onconflict)->infer = (yyvsp[-2].infer); (yyval.onconflict)->targetList = NIL; (yyval.onconflict)->whereClause = NULL; - (yyval.onconflict)->location = (yylsp[(1) - (5)]); - ;} + (yyval.onconflict)->location = (yylsp[-4]); + } +#line 14587 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 135: + case 120: #line 163 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.onconflict) = NULL; - ;} + } +#line 14595 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 136: + case 121: #line 170 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.ielem) = makeNode(PGIndexElem); - (yyval.ielem)->name = (yyvsp[(1) - (5)].str); + (yyval.ielem)->name = (yyvsp[-4].str); (yyval.ielem)->expr = NULL; (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[(2) - (5)].list); - (yyval.ielem)->opclass = (yyvsp[(3) - (5)].list); - (yyval.ielem)->ordering = (yyvsp[(4) - (5)].sortorder); - (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].nullorder); - ;} + (yyval.ielem)->collation = (yyvsp[-3].list); + (yyval.ielem)->opclass = (yyvsp[-2].list); + (yyval.ielem)->ordering = (yyvsp[-1].sortorder); + (yyval.ielem)->nulls_ordering = (yyvsp[0].nullorder); + } +#line 14610 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 137: + case 122: #line 181 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.ielem) = makeNode(PGIndexElem); (yyval.ielem)->name = NULL; - (yyval.ielem)->expr = (yyvsp[(1) - (5)].node); + (yyval.ielem)->expr = (yyvsp[-4].node); (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[(2) - (5)].list); - (yyval.ielem)->opclass = (yyvsp[(3) - (5)].list); - (yyval.ielem)->ordering = (yyvsp[(4) - (5)].sortorder); - (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].nullorder); - ;} + (yyval.ielem)->collation = (yyvsp[-3].list); + (yyval.ielem)->opclass = (yyvsp[-2].list); + (yyval.ielem)->ordering = (yyvsp[-1].sortorder); + (yyval.ielem)->nulls_ordering = (yyvsp[0].nullorder); + } +#line 14625 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 138: + case 123: #line 192 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.ielem) = makeNode(PGIndexElem); (yyval.ielem)->name = NULL; - (yyval.ielem)->expr = (yyvsp[(2) - (7)].node); + (yyval.ielem)->expr = (yyvsp[-5].node); (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[(4) - (7)].list); - (yyval.ielem)->opclass = (yyvsp[(5) - (7)].list); - (yyval.ielem)->ordering = (yyvsp[(6) - (7)].sortorder); - (yyval.ielem)->nulls_ordering = (yyvsp[(7) - (7)].nullorder); - ;} + (yyval.ielem)->collation = (yyvsp[-3].list); + (yyval.ielem)->opclass = (yyvsp[-2].list); + (yyval.ielem)->ordering = (yyvsp[-1].sortorder); + (yyval.ielem)->nulls_ordering = (yyvsp[0].nullorder); + } +#line 14640 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 139: + case 124: #line 206 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} + { (yyval.list) = (yyvsp[0].list); } +#line 14646 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 140: + case 125: #line 207 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = NIL; ;} + { (yyval.list) = NIL; } +#line 14652 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 141: + case 126: #line 213 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.override) = PG_OVERRIDING_USER_VALUE; ;} + { (yyval.override) = PG_OVERRIDING_USER_VALUE; } +#line 14658 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 142: + case 127: #line 214 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.override) = OVERRIDING_SYSTEM_VALUE; ;} + { (yyval.override) = OVERRIDING_SYSTEM_VALUE; } +#line 14664 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 143: + case 128: #line 219 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} + { (yyval.list) = list_make1((yyvsp[0].target)); } +#line 14670 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 144: + case 129: #line 220 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].target)); ;} + { (yyval.list) = lappend((yyvsp[-2].list),(yyvsp[0].target)); } +#line 14676 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 145: + case 130: #line 226 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} + { (yyval.list) = (yyvsp[0].list); } +#line 14682 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 146: + case 131: #line 227 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = NIL; ;} + { (yyval.list) = NIL; } +#line 14688 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 147: + case 132: #line 231 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} + { (yyval.list) = (yyvsp[0].list); } +#line 14694 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 148: + case 133: #line 232 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = NIL; ;} + { (yyval.list) = NIL; } +#line 14700 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 149: + case 134: #line 238 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} + { (yyval.list) = list_make1((yyvsp[0].target)); } +#line 14706 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 150: + case 135: #line 240 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } +#line 14712 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 151: + case 136: #line 245 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} + { (yyval.list) = (yyvsp[0].list); } +#line 14718 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 152: + case 137: #line 246 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = list_concat((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].list)); ;} + { (yyval.list) = list_concat((yyvsp[-2].list),(yyvsp[0].list)); } +#line 14724 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 153: + case 138: #line 250 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); ;} + { (yyval.list) = list_make1((yyvsp[0].ielem)); } +#line 14730 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 154: + case 139: #line 251 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); ;} + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].ielem)); } +#line 14736 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 155: + case 140: #line 257 "third_party/libpg_query/grammar/statements/insert.y" - { + { (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = (yyvsp[(1) - (2)].str); - (yyval.target)->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); + (yyval.target)->name = (yyvsp[-1].str); + (yyval.target)->indirection = check_indirection((yyvsp[0].list), yyscanner); (yyval.target)->val = NULL; /* upper production sets this */ - (yyval.target)->location = (yylsp[(1) - (2)]); - ;} + (yyval.target)->location = (yylsp[-1]); + } +#line 14748 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 156: -#line 8 "third_party/libpg_query/grammar/statements/pragma.y" - { - PGPragmaStmt *n = makeNode(PGPragmaStmt); - n->kind = PG_PRAGMA_TYPE_NOTHING; - n->name = (yyvsp[(2) - (2)].str); + case 141: +#line 11 "third_party/libpg_query/grammar/statements/index.y" + { + PGIndexStmt *n = makeNode(PGIndexStmt); + n->unique = (yyvsp[-11].boolean); + n->concurrent = (yyvsp[-9].boolean); + n->idxname = (yyvsp[-8].str); + n->relation = (yyvsp[-6].range); + n->accessMethod = (yyvsp[-5].str); + n->indexParams = (yyvsp[-3].list); + n->options = (yyvsp[-1].list); + n->whereClause = (yyvsp[0].node); + n->excludeOpNames = NIL; + n->idxcomment = NULL; + n->indexOid = InvalidOid; + n->oldNode = InvalidOid; + n->primary = false; + n->isconstraint = false; + n->deferrable = false; + n->initdeferred = false; + n->transformed = false; + n->if_not_exists = false; (yyval.node) = (PGNode *)n; - ;} + } +#line 14775 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 157: -#line 15 "third_party/libpg_query/grammar/statements/pragma.y" - { - PGPragmaStmt *n = makeNode(PGPragmaStmt); - n->kind = PG_PRAGMA_TYPE_ASSIGNMENT; - n->name = (yyvsp[(2) - (4)].str); - n->args = (yyvsp[(4) - (4)].list); + case 142: +#line 36 "third_party/libpg_query/grammar/statements/index.y" + { + PGIndexStmt *n = makeNode(PGIndexStmt); + n->unique = (yyvsp[-14].boolean); + n->concurrent = (yyvsp[-12].boolean); + n->idxname = (yyvsp[-8].str); + n->relation = (yyvsp[-6].range); + n->accessMethod = (yyvsp[-5].str); + n->indexParams = (yyvsp[-3].list); + n->options = (yyvsp[-1].list); + n->whereClause = (yyvsp[0].node); + n->excludeOpNames = NIL; + n->idxcomment = NULL; + n->indexOid = InvalidOid; + n->oldNode = InvalidOid; + n->primary = false; + n->isconstraint = false; + n->deferrable = false; + n->initdeferred = false; + n->transformed = false; + n->if_not_exists = true; (yyval.node) = (PGNode *)n; - ;} + } +#line 14802 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 158: -#line 23 "third_party/libpg_query/grammar/statements/pragma.y" - { - PGPragmaStmt *n = makeNode(PGPragmaStmt); - n->kind = PG_PRAGMA_TYPE_CALL; - n->name = (yyvsp[(2) - (5)].str); - n->args = (yyvsp[(4) - (5)].list); - (yyval.node) = (PGNode *)n; - ;} + case 143: +#line 62 "third_party/libpg_query/grammar/statements/index.y" + { (yyval.str) = (yyvsp[0].str); } +#line 14808 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 159: -#line 10 "third_party/libpg_query/grammar/statements/create_sequence.y" - { - PGCreateSeqStmt *n = makeNode(PGCreateSeqStmt); - (yyvsp[(4) - (5)].range)->relpersistence = (yyvsp[(2) - (5)].ival); - n->sequence = (yyvsp[(4) - (5)].range); - n->options = (yyvsp[(5) - (5)].list); - n->ownerId = InvalidOid; - n->if_not_exists = false; - (yyval.node) = (PGNode *)n; - ;} + case 144: +#line 66 "third_party/libpg_query/grammar/statements/index.y" + { (yyval.str) = (yyvsp[0].str); } +#line 14814 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 160: -#line 20 "third_party/libpg_query/grammar/statements/create_sequence.y" - { - PGCreateSeqStmt *n = makeNode(PGCreateSeqStmt); - (yyvsp[(7) - (8)].range)->relpersistence = (yyvsp[(2) - (8)].ival); - n->sequence = (yyvsp[(7) - (8)].range); - n->options = (yyvsp[(8) - (8)].list); - n->ownerId = InvalidOid; - n->if_not_exists = true; - (yyval.node) = (PGNode *)n; - ;} + case 145: +#line 67 "third_party/libpg_query/grammar/statements/index.y" + { (yyval.str) = (char*) DEFAULT_INDEX_TYPE; } +#line 14820 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 161: -#line 32 "third_party/libpg_query/grammar/statements/create_sequence.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} + case 146: +#line 72 "third_party/libpg_query/grammar/statements/index.y" + { (yyval.boolean) = true; } +#line 14826 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 162: -#line 33 "third_party/libpg_query/grammar/statements/create_sequence.y" - { (yyval.list) = NIL; ;} + case 147: +#line 73 "third_party/libpg_query/grammar/statements/index.y" + { (yyval.boolean) = false; } +#line 14832 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 163: -#line 8 "third_party/libpg_query/grammar/statements/execute.y" - { - PGExecuteStmt *n = makeNode(PGExecuteStmt); - n->name = (yyvsp[(2) - (3)].str); - n->params = (yyvsp[(3) - (3)].list); - (yyval.node) = (PGNode *) n; - ;} + case 148: +#line 78 "third_party/libpg_query/grammar/statements/index.y" + { (yyval.str) = (yyvsp[0].str); } +#line 14838 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 164: -#line 16 "third_party/libpg_query/grammar/statements/execute.y" - { - PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); - PGExecuteStmt *n = makeNode(PGExecuteStmt); - n->name = (yyvsp[(7) - (9)].str); - n->params = (yyvsp[(8) - (9)].list); - ctas->query = (PGNode *) n; - ctas->into = (yyvsp[(4) - (9)].into); - ctas->relkind = PG_OBJECT_TABLE; - ctas->is_select_into = false; - ctas->if_not_exists = false; - /* cram additional flags into the PGIntoClause */ - (yyvsp[(4) - (9)].into)->rel->relpersistence = (yyvsp[(2) - (9)].ival); - (yyvsp[(4) - (9)].into)->skipData = !((yyvsp[(9) - (9)].boolean)); - (yyval.node) = (PGNode *) ctas; - ;} + case 149: +#line 79 "third_party/libpg_query/grammar/statements/index.y" + { (yyval.str) = NULL; } +#line 14844 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 165: -#line 33 "third_party/libpg_query/grammar/statements/execute.y" - { - PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); - PGExecuteStmt *n = makeNode(PGExecuteStmt); - n->name = (yyvsp[(10) - (12)].str); - n->params = (yyvsp[(11) - (12)].list); - ctas->query = (PGNode *) n; - ctas->into = (yyvsp[(7) - (12)].into); - ctas->relkind = PG_OBJECT_TABLE; - ctas->is_select_into = false; - ctas->if_not_exists = true; - /* cram additional flags into the PGIntoClause */ - (yyvsp[(7) - (12)].into)->rel->relpersistence = (yyvsp[(2) - (12)].ival); - (yyvsp[(7) - (12)].into)->skipData = !((yyvsp[(12) - (12)].boolean)); - (yyval.node) = (PGNode *) ctas; - ;} + case 150: +#line 83 "third_party/libpg_query/grammar/statements/index.y" + { (yyval.list) = (yyvsp[0].list); } +#line 14850 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 166: -#line 51 "third_party/libpg_query/grammar/statements/execute.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} + case 151: +#line 84 "third_party/libpg_query/grammar/statements/index.y" + { (yyval.list) = NIL; } +#line 14856 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 167: -#line 52 "third_party/libpg_query/grammar/statements/execute.y" - { (yyval.list) = NIL; ;} + case 152: +#line 89 "third_party/libpg_query/grammar/statements/index.y" + { (yyval.boolean) = true; } +#line 14862 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 168: -#line 10 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - PGAlterSeqStmt *n = makeNode(PGAlterSeqStmt); - n->sequence = (yyvsp[(3) - (4)].range); - n->options = (yyvsp[(4) - (4)].list); - n->missing_ok = false; + case 153: +#line 90 "third_party/libpg_query/grammar/statements/index.y" + { (yyval.boolean) = false; } +#line 14868 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 154: +#line 8 "third_party/libpg_query/grammar/statements/create_schema.y" + { + PGCreateSchemaStmt *n = makeNode(PGCreateSchemaStmt); + /* ...but not both */ + n->schemaname = (yyvsp[-1].str); + n->schemaElts = (yyvsp[0].list); + n->if_not_exists = false; + (yyval.node) = (PGNode *)n; + } +#line 14881 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 155: +#line 17 "third_party/libpg_query/grammar/statements/create_schema.y" + { + PGCreateSchemaStmt *n = makeNode(PGCreateSchemaStmt); + /* ...but not here */ + n->schemaname = (yyvsp[-1].str); + if ((yyvsp[0].list) != NIL) + ereport(ERROR, + (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), + parser_errposition((yylsp[0])))); + n->schemaElts = (yyvsp[0].list); + n->if_not_exists = true; (yyval.node) = (PGNode *)n; - ;} + } +#line 14899 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 156: +#line 35 "third_party/libpg_query/grammar/statements/create_schema.y" + { + if ((yyloc) < 0) /* see comments for YYLLOC_DEFAULT */ + (yyloc) = (yylsp[0]); + (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); + } +#line 14909 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 157: +#line 41 "third_party/libpg_query/grammar/statements/create_schema.y" + { (yyval.list) = NIL; } +#line 14915 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 162: +#line 8 "third_party/libpg_query/grammar/statements/prepare.y" + { + PGPrepareStmt *n = makeNode(PGPrepareStmt); + n->name = (yyvsp[-3].str); + n->argtypes = (yyvsp[-2].list); + n->query = (yyvsp[0].node); + (yyval.node) = (PGNode *) n; + } +#line 14927 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 163: +#line 18 "third_party/libpg_query/grammar/statements/prepare.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 14933 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 164: +#line 19 "third_party/libpg_query/grammar/statements/prepare.y" + { (yyval.list) = NIL; } +#line 14939 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 169: -#line 18 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - PGAlterSeqStmt *n = makeNode(PGAlterSeqStmt); - n->sequence = (yyvsp[(5) - (6)].range); - n->options = (yyvsp[(6) - (6)].list); - n->missing_ok = true; +#line 10 "third_party/libpg_query/grammar/statements/create_sequence.y" + { + PGCreateSeqStmt *n = makeNode(PGCreateSeqStmt); + (yyvsp[-1].range)->relpersistence = (yyvsp[-3].ival); + n->sequence = (yyvsp[-1].range); + n->options = (yyvsp[0].list); + n->ownerId = InvalidOid; + n->if_not_exists = false; (yyval.node) = (PGNode *)n; - ;} + } +#line 14953 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 170: -#line 29 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} +#line 20 "third_party/libpg_query/grammar/statements/create_sequence.y" + { + PGCreateSeqStmt *n = makeNode(PGCreateSeqStmt); + (yyvsp[-1].range)->relpersistence = (yyvsp[-6].ival); + n->sequence = (yyvsp[-1].range); + n->options = (yyvsp[0].list); + n->ownerId = InvalidOid; + n->if_not_exists = true; + (yyval.node) = (PGNode *)n; + } +#line 14967 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 171: -#line 30 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} +#line 32 "third_party/libpg_query/grammar/statements/create_sequence.y" + { (yyval.list) = (yyvsp[0].list); } +#line 14973 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 172: -#line 34 "third_party/libpg_query/grammar/statements/alter_sequence.y" - {;} +#line 33 "third_party/libpg_query/grammar/statements/create_sequence.y" + { (yyval.list) = NIL; } +#line 14979 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 173: -#line 35 "third_party/libpg_query/grammar/statements/alter_sequence.y" - {;} +#line 10 "third_party/libpg_query/grammar/statements/explain.y" + { + PGExplainStmt *n = makeNode(PGExplainStmt); + n->query = (yyvsp[0].node); + n->options = NIL; + (yyval.node) = (PGNode *) n; + } +#line 14990 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 174: -#line 36 "third_party/libpg_query/grammar/statements/alter_sequence.y" - {;} +#line 17 "third_party/libpg_query/grammar/statements/explain.y" + { + PGExplainStmt *n = makeNode(PGExplainStmt); + n->query = (yyvsp[0].node); + n->options = list_make1(makeDefElem("analyze", NULL, (yylsp[-2]))); + if ((yyvsp[-1].boolean)) + n->options = lappend(n->options, + makeDefElem("verbose", NULL, (yylsp[-1]))); + (yyval.node) = (PGNode *) n; + } +#line 15004 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 175: -#line 41 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.value) = makeFloat((yyvsp[(1) - (1)].str)); ;} +#line 27 "third_party/libpg_query/grammar/statements/explain.y" + { + PGExplainStmt *n = makeNode(PGExplainStmt); + n->query = (yyvsp[0].node); + n->options = list_make1(makeDefElem("verbose", NULL, (yylsp[-1]))); + (yyval.node) = (PGNode *) n; + } +#line 15015 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 176: -#line 42 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); ;} +#line 34 "third_party/libpg_query/grammar/statements/explain.y" + { + PGExplainStmt *n = makeNode(PGExplainStmt); + n->query = (yyvsp[0].node); + n->options = (yyvsp[-2].list); + (yyval.node) = (PGNode *) n; + } +#line 15026 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 177: -#line 44 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); - doNegateFloat((yyval.value)); - ;} +#line 44 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.boolean) = true; } +#line 15032 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 178: -#line 48 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.value) = makeInteger((yyvsp[(1) - (1)].ival)); ;} +#line 45 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.boolean) = false; } +#line 15038 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 179: -#line 53 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("as", (PGNode *)(yyvsp[(2) - (2)].typnam), (yylsp[(1) - (2)])); - ;} +#line 50 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); } +#line 15044 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 180: -#line 57 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("cache", (PGNode *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); - ;} +#line 51 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.node) = (PGNode *) (yyvsp[0].value); } +#line 15050 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 181: -#line 61 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("cycle", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); - ;} - break; - - case 182: -#line 65 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("cycle", (PGNode *)makeInteger(false), (yylsp[(1) - (2)])); - ;} - break; - - case 183: -#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 184: -#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 185: -#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 186: -#line 81 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[(1) - (2)])); - ;} +#line 52 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.node) = NULL; } +#line 15056 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 187: -#line 85 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[(1) - (2)])); - ;} +#line 65 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (yyvsp[0].str); } +#line 15062 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 188: -#line 89 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("owned_by", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); - ;} +#line 66 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 15068 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 189: -#line 93 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - /* not documented, only used by pg_dump */ - (yyval.defelt) = makeDefElem("sequence_name", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); - ;} +#line 67 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 15074 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 190: -#line 98 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("start", (PGNode *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); - ;} +#line 72 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (yyvsp[0].str); } +#line 15080 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 191: -#line 102 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); - ;} +#line 73 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (yyvsp[0].str); } +#line 15086 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 192: -#line 106 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("restart", (PGNode *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); - ;} +#line 79 "third_party/libpg_query/grammar/statements/explain.y" + { + (yyval.list) = list_make1((yyvsp[0].defelt)); + } +#line 15094 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 193: -#line 112 "third_party/libpg_query/grammar/statements/alter_sequence.y" - {;} +#line 83 "third_party/libpg_query/grammar/statements/explain.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + } +#line 15102 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 194: -#line 113 "third_party/libpg_query/grammar/statements/alter_sequence.y" - {;} +#line 90 "third_party/libpg_query/grammar/statements/explain.y" + {} +#line 15108 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 195: -#line 117 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} +#line 91 "third_party/libpg_query/grammar/statements/explain.y" + {} +#line 15114 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 196: -#line 118 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.ival) = + (yyvsp[(2) - (2)].ival); ;} +#line 96 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (char*) "true"; } +#line 15120 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 197: -#line 119 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.ival) = - (yyvsp[(2) - (2)].ival); ;} +#line 97 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (char*) "false"; } +#line 15126 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 198: -#line 3 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_ROLLBACK; - n->options = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 98 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (char*) "on"; } +#line 15132 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 199: -#line 10 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_BEGIN; - (yyval.node) = (PGNode *)n; - ;} +#line 104 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (yyvsp[0].str); } +#line 15138 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 200: -#line 16 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_START; - (yyval.node) = (PGNode *)n; - ;} +#line 110 "third_party/libpg_query/grammar/statements/explain.y" + { + (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node), (yylsp[-1])); + } +#line 15146 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 201: -#line 22 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_COMMIT; - n->options = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 117 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (yyvsp[0].str); } +#line 15152 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 202: -#line 29 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_COMMIT; - n->options = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 118 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (char*) "analyze"; } +#line 15158 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 203: -#line 36 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_ROLLBACK; - n->options = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 8 "third_party/libpg_query/grammar/statements/execute.y" + { + PGExecuteStmt *n = makeNode(PGExecuteStmt); + n->name = (yyvsp[-1].str); + n->params = (yyvsp[0].list); + (yyval.node) = (PGNode *) n; + } +#line 15169 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 204: -#line 45 "third_party/libpg_query/grammar/statements/transaction.y" - {;} +#line 16 "third_party/libpg_query/grammar/statements/execute.y" + { + PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); + PGExecuteStmt *n = makeNode(PGExecuteStmt); + n->name = (yyvsp[-2].str); + n->params = (yyvsp[-1].list); + ctas->query = (PGNode *) n; + ctas->into = (yyvsp[-5].into); + ctas->relkind = PG_OBJECT_TABLE; + ctas->is_select_into = false; + ctas->if_not_exists = false; + /* cram additional flags into the PGIntoClause */ + (yyvsp[-5].into)->rel->relpersistence = (yyvsp[-7].ival); + (yyvsp[-5].into)->skipData = !((yyvsp[0].boolean)); + (yyval.node) = (PGNode *) ctas; + } +#line 15189 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 205: -#line 46 "third_party/libpg_query/grammar/statements/transaction.y" - {;} +#line 33 "third_party/libpg_query/grammar/statements/execute.y" + { + PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); + PGExecuteStmt *n = makeNode(PGExecuteStmt); + n->name = (yyvsp[-2].str); + n->params = (yyvsp[-1].list); + ctas->query = (PGNode *) n; + ctas->into = (yyvsp[-5].into); + ctas->relkind = PG_OBJECT_TABLE; + ctas->is_select_into = false; + ctas->if_not_exists = true; + /* cram additional flags into the PGIntoClause */ + (yyvsp[-5].into)->rel->relpersistence = (yyvsp[-10].ival); + (yyvsp[-5].into)->skipData = !((yyvsp[0].boolean)); + (yyval.node) = (PGNode *) ctas; + } +#line 15209 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 206: -#line 47 "third_party/libpg_query/grammar/statements/transaction.y" - {;} +#line 51 "third_party/libpg_query/grammar/statements/execute.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 15215 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 207: -#line 9 "third_party/libpg_query/grammar/statements/create.y" - { - PGCreateStmt *n = makeNode(PGCreateStmt); - (yyvsp[(4) - (9)].range)->relpersistence = (yyvsp[(2) - (9)].ival); - n->relation = (yyvsp[(4) - (9)].range); - n->tableElts = (yyvsp[(6) - (9)].list); - n->ofTypename = NULL; - n->constraints = NIL; - n->options = (yyvsp[(8) - (9)].list); - n->oncommit = (yyvsp[(9) - (9)].oncommit); - n->if_not_exists = false; - (yyval.node) = (PGNode *)n; - ;} +#line 52 "third_party/libpg_query/grammar/statements/execute.y" + { (yyval.list) = NIL; } +#line 15221 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 208: -#line 24 "third_party/libpg_query/grammar/statements/create.y" - { - PGCreateStmt *n = makeNode(PGCreateStmt); - (yyvsp[(7) - (12)].range)->relpersistence = (yyvsp[(2) - (12)].ival); - n->relation = (yyvsp[(7) - (12)].range); - n->tableElts = (yyvsp[(9) - (12)].list); - n->ofTypename = NULL; - n->constraints = NIL; - n->options = (yyvsp[(11) - (12)].list); - n->oncommit = (yyvsp[(12) - (12)].oncommit); - n->if_not_exists = true; +#line 3 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_ROLLBACK; + n->options = NIL; (yyval.node) = (PGNode *)n; - ;} + } +#line 15232 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 209: -#line 41 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = 0; ;} +#line 10 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_BEGIN; + (yyval.node) = (PGNode *)n; + } +#line 15242 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 210: -#line 43 "third_party/libpg_query/grammar/statements/create.y" - { - /* - * We must complain about conflicting options. - * We could, but choose not to, complain about redundant - * options (ie, where $2's bit is already set in $1). - */ - int newspec = (yyvsp[(1) - (2)].ival) | (yyvsp[(2) - (2)].ival); - - /* special message for this case */ - if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), - parser_errposition((yylsp[(2) - (2)])))); - /* generic message for other conflicts */ - if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || - (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("conflicting constraint properties"), - parser_errposition((yylsp[(2) - (2)])))); - (yyval.ival) = newspec; - ;} +#line 16 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_START; + (yyval.node) = (PGNode *)n; + } +#line 15252 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 211: -#line 69 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)(yyvsp[(1) - (1)].typnam); ;} +#line 22 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_COMMIT; + n->options = NIL; + (yyval.node) = (PGNode *)n; + } +#line 15263 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 212: -#line 70 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} +#line 29 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_COMMIT; + n->options = NIL; + (yyval.node) = (PGNode *)n; + } +#line 15274 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 213: -#line 71 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)(yyvsp[(1) - (1)].list); ;} +#line 36 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_ROLLBACK; + n->options = NIL; + (yyval.node) = (PGNode *)n; + } +#line 15285 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 214: -#line 72 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)(yyvsp[(1) - (1)].value); ;} +#line 45 "third_party/libpg_query/grammar/statements/transaction.y" + {} +#line 15291 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 215: -#line 73 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)makeString((yyvsp[(1) - (1)].str)); ;} +#line 46 "third_party/libpg_query/grammar/statements/transaction.y" + {} +#line 15297 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 216: -#line 74 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} +#line 47 "third_party/libpg_query/grammar/statements/transaction.y" + {} +#line 15303 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 217: -#line 78 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 11 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGVariableSetStmt *n = (yyvsp[0].vsetstmt); + n->scope = VAR_SET_SCOPE_DEFAULT; + (yyval.node) = (PGNode *) n; + } +#line 15313 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 218: -#line 79 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 17 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGVariableSetStmt *n = (yyvsp[0].vsetstmt); + n->scope = VAR_SET_SCOPE_LOCAL; + (yyval.node) = (PGNode *) n; + } +#line 15323 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 219: -#line 84 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} +#line 23 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGVariableSetStmt *n = (yyvsp[0].vsetstmt); + n->scope = VAR_SET_SCOPE_SESSION; + (yyval.node) = (PGNode *) n; + } +#line 15333 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 220: -#line 89 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_FKCONSTR_ACTION_NOACTION; ;} +#line 29 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGVariableSetStmt *n = (yyvsp[0].vsetstmt); + n->scope = VAR_SET_SCOPE_GLOBAL; + (yyval.node) = (PGNode *) n; + } +#line 15343 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 221: -#line 90 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_FKCONSTR_ACTION_RESTRICT; ;} +#line 38 "third_party/libpg_query/grammar/statements/variable_set.y" + {(yyval.vsetstmt) = (yyvsp[0].vsetstmt);} +#line 15349 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 222: -#line 91 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_FKCONSTR_ACTION_CASCADE; ;} +#line 40 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_SET_CURRENT; + n->name = (yyvsp[-2].str); + (yyval.vsetstmt) = n; + } +#line 15360 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 223: -#line 92 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_FKCONSTR_ACTION_SETNULL; ;} +#line 48 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = (char*) "timezone"; + if ((yyvsp[0].node) != NULL) + n->args = list_make1((yyvsp[0].node)); + else + n->kind = VAR_SET_DEFAULT; + (yyval.vsetstmt) = n; + } +#line 15375 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 224: -#line 93 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_FKCONSTR_ACTION_SETDEFAULT; ;} +#line 59 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = (char*) "search_path"; + n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + (yyval.vsetstmt) = n; + } +#line 15387 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 225: -#line 99 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = castNode(PGConstraint, (yyvsp[(3) - (3)].node)); - n->conname = (yyvsp[(2) - (3)].str); - n->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *) n; - ;} +#line 71 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = (yyvsp[-2].str); + n->args = (yyvsp[0].list); + (yyval.vsetstmt) = n; + } +#line 15399 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 226: -#line 105 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 79 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = (yyvsp[-2].str); + n->args = (yyvsp[0].list); + (yyval.vsetstmt) = n; + } +#line 15411 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 227: -#line 106 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 87 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_SET_DEFAULT; + n->name = (yyvsp[-2].str); + (yyval.vsetstmt) = n; + } +#line 15422 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 228: -#line 108 "third_party/libpg_query/grammar/statements/create.y" - { - /* - * Note: the PGCollateClause is momentarily included in - * the list built by ColQualList, but we split it out - * again in SplitColQualList. - */ - PGCollateClause *n = makeNode(PGCollateClause); - n->arg = NULL; - n->collname = (yyvsp[(2) - (2)].list); - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *) n; - ;} +#line 94 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_SET_DEFAULT; + n->name = (yyvsp[-2].str); + (yyval.vsetstmt) = n; + } +#line 15433 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 229: -#line 125 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_NOTNULL; - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 104 "third_party/libpg_query/grammar/statements/variable_set.y" + { (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); } +#line 15439 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 230: -#line 132 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_NULL; - n->location = (yylsp[(1) - (1)]); - (yyval.node) = (PGNode *)n; - ;} +#line 106 "third_party/libpg_query/grammar/statements/variable_set.y" + { (yyval.node) = makeAConst((yyvsp[0].value), (yylsp[0])); } +#line 15445 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 231: -#line 139 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_UNIQUE; - n->location = (yylsp[(1) - (2)]); - n->keys = NULL; - n->options = (yyvsp[(2) - (2)].list); - n->indexname = NULL; - (yyval.node) = (PGNode *)n; - ;} +#line 112 "third_party/libpg_query/grammar/statements/variable_set.y" + { + (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); + } +#line 15453 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 232: -#line 149 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_PRIMARY; - n->location = (yylsp[(1) - (3)]); - n->keys = NULL; - n->options = (yyvsp[(3) - (3)].list); - n->indexname = NULL; - (yyval.node) = (PGNode *)n; - ;} +#line 116 "third_party/libpg_query/grammar/statements/variable_set.y" + { + (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); + } +#line 15461 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 233: -#line 159 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_CHECK; - n->location = (yylsp[(1) - (5)]); - n->is_no_inherit = (yyvsp[(5) - (5)].boolean); - n->raw_expr = (yyvsp[(3) - (5)].node); - n->cooked_expr = NULL; - n->skip_validation = false; - n->initially_valid = true; - (yyval.node) = (PGNode *)n; - ;} +#line 120 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGTypeName *t = (yyvsp[-2].typnam); + if ((yyvsp[0].list) != NIL) + { + PGAConst *n = (PGAConst *) linitial((yyvsp[0].list)); + if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), + parser_errposition((yylsp[0])))); + } + t->typmods = (yyvsp[0].list); + (yyval.node) = makeStringConstCast((yyvsp[-1].str), (yylsp[-1]), t); + } +#line 15480 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 234: -#line 171 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_DEFAULT; - n->location = (yylsp[(1) - (2)]); - n->raw_expr = (yyvsp[(2) - (2)].node); - n->cooked_expr = NULL; - (yyval.node) = (PGNode *)n; - ;} +#line 135 "third_party/libpg_query/grammar/statements/variable_set.y" + { + PGTypeName *t = (yyvsp[-4].typnam); + t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); + (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + } +#line 15491 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 235: -#line 180 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_IDENTITY; - n->generated_when = (yyvsp[(2) - (5)].ival); - n->options = (yyvsp[(5) - (5)].list); - n->location = (yylsp[(1) - (5)]); - (yyval.node) = (PGNode *)n; - ;} +#line 141 "third_party/libpg_query/grammar/statements/variable_set.y" + { (yyval.node) = makeAConst((yyvsp[0].value), (yylsp[0])); } +#line 15497 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 236: -#line 189 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_FOREIGN; - n->location = (yylsp[(1) - (5)]); - n->pktable = (yyvsp[(2) - (5)].range); - n->fk_attrs = NIL; - n->pk_attrs = (yyvsp[(3) - (5)].list); - n->fk_matchtype = (yyvsp[(4) - (5)].ival); - n->fk_upd_action = (char) ((yyvsp[(5) - (5)].ival) >> 8); - n->fk_del_action = (char) ((yyvsp[(5) - (5)].ival) & 0xFF); - n->skip_validation = false; - n->initially_valid = true; - (yyval.node) = (PGNode *)n; - ;} +#line 142 "third_party/libpg_query/grammar/statements/variable_set.y" + { (yyval.node) = NULL; } +#line 15503 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 237: -#line 208 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); - ;} +#line 143 "third_party/libpg_query/grammar/statements/variable_set.y" + { (yyval.node) = NULL; } +#line 15509 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 238: -#line 214 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (yyvsp[(3) - (3)].ival); ;} +#line 147 "third_party/libpg_query/grammar/statements/variable_set.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 15515 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 239: -#line 220 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = ((yyvsp[(1) - (1)].ival) << 8) | (PG_FKCONSTR_ACTION_NOACTION & 0xFF); ;} +#line 148 "third_party/libpg_query/grammar/statements/variable_set.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 15521 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 240: -#line 222 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (PG_FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[(1) - (1)].ival) & 0xFF); ;} +#line 10 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_TABLE; + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 15534 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 241: -#line 224 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = ((yyvsp[(1) - (2)].ival) << 8) | ((yyvsp[(2) - (2)].ival) & 0xFF); ;} +#line 19 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_TABLE; + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 15547 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 242: -#line 226 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = ((yyvsp[(2) - (2)].ival) << 8) | ((yyvsp[(1) - (2)].ival) & 0xFF); ;} +#line 28 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_INDEX; + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 15560 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 243: -#line 228 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (PG_FKCONSTR_ACTION_NOACTION << 8) | (PG_FKCONSTR_ACTION_NOACTION & 0xFF); ;} +#line 37 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_INDEX; + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 15573 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 244: -#line 233 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} +#line 46 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_SEQUENCE; + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 15586 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 245: -#line 234 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 55 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_SEQUENCE; + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 15599 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 246: -#line 238 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.oncommit) = ONCOMMIT_DROP; ;} +#line 64 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_VIEW; + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 15612 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 247: -#line 239 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.oncommit) = PG_ONCOMMIT_DELETE_ROWS; ;} +#line 73 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_VIEW; + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 15625 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 248: -#line 240 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.oncommit) = PG_ONCOMMIT_PRESERVE_ROWS; ;} +#line 86 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.list) = list_make1((yyvsp[0].defelt)); } +#line 15631 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 249: -#line 241 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.oncommit) = PG_ONCOMMIT_NOOP; ;} +#line 88 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } +#line 15637 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 250: -#line 246 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 93 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.node) = (yyvsp[0].node); } +#line 15643 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 251: -#line 250 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.boolean) = true; ;} +#line 94 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.node) = NULL; } +#line 15649 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 252: -#line 251 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.boolean) = false; ;} +#line 100 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[0])); + } +#line 15657 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 253: -#line 257 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = castNode(PGConstraint, (yyvsp[(3) - (3)].node)); - n->conname = (yyvsp[(2) - (3)].str); - n->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *) n; - ;} +#line 104 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = makeDefElem("restart", (PGNode *)(yyvsp[0].value), (yylsp[-2])); + } +#line 15665 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 254: -#line 263 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 108 "third_party/libpg_query/grammar/statements/alter_table.y" + { + if (strcmp((yyvsp[0].defelt)->defname, "as") == 0 || + strcmp((yyvsp[0].defelt)->defname, "restart") == 0 || + strcmp((yyvsp[0].defelt)->defname, "owned_by") == 0) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("sequence option \"%s\" not supported here", (yyvsp[0].defelt)->defname), + parser_errposition((yylsp[0])))); + (yyval.defelt) = (yyvsp[0].defelt); + } +#line 15680 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 255: -#line 268 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_COMMENTS; ;} +#line 119 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = makeDefElem("generated", (PGNode *) makeInteger((yyvsp[0].ival)), (yylsp[-2])); + } +#line 15688 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 256: -#line 269 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_CONSTRAINTS; ;} +#line 127 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.list) = list_make1((yyvsp[0].defelt)); + } +#line 15696 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 257: -#line 270 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_DEFAULTS; ;} +#line 131 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + } +#line 15704 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 258: -#line 271 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_IDENTITY; ;} +#line 140 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AddColumn; + n->def = (yyvsp[0].node); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 15716 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 259: -#line 272 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_INDEXES; ;} +#line 149 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AddColumn; + n->def = (yyvsp[0].node); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 15728 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 260: -#line 273 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_STATISTICS; ;} +#line 158 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AddColumn; + n->def = (yyvsp[0].node); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 15740 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 261: -#line 274 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_STORAGE; ;} +#line 167 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AddColumn; + n->def = (yyvsp[0].node); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 15752 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 262: -#line 275 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_ALL; ;} +#line 176 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_ColumnDefault; + n->name = (yyvsp[-1].str); + n->def = (yyvsp[0].node); + (yyval.node) = (PGNode *)n; + } +#line 15764 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 263: -#line 281 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} +#line 185 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_DropNotNull; + n->name = (yyvsp[-3].str); + (yyval.node) = (PGNode *)n; + } +#line 15775 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 264: -#line 282 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} +#line 193 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetNotNull; + n->name = (yyvsp[-3].str); + (yyval.node) = (PGNode *)n; + } +#line 15786 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 265: -#line 286 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.str) = (yyvsp[(3) - (3)].str); ;} +#line 201 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetStatistics; + n->name = (yyvsp[-3].str); + n->def = (PGNode *) makeInteger((yyvsp[0].ival)); + (yyval.node) = (PGNode *)n; + } +#line 15798 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 266: -#line 292 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_ATTR_DEFERRABLE; - n->location = (yylsp[(1) - (1)]); +#line 210 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetOptions; + n->name = (yyvsp[-2].str); + n->def = (PGNode *) (yyvsp[0].list); (yyval.node) = (PGNode *)n; - ;} + } +#line 15810 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 267: -#line 299 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_ATTR_NOT_DEFERRABLE; - n->location = (yylsp[(1) - (2)]); +#line 219 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_ResetOptions; + n->name = (yyvsp[-2].str); + n->def = (PGNode *) (yyvsp[0].list); (yyval.node) = (PGNode *)n; - ;} + } +#line 15822 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 268: -#line 306 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_ATTR_DEFERRED; - n->location = (yylsp[(1) - (2)]); +#line 228 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetStorage; + n->name = (yyvsp[-3].str); + n->def = (PGNode *) makeString((yyvsp[0].str)); (yyval.node) = (PGNode *)n; - ;} + } +#line 15834 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 269: -#line 313 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_ATTR_IMMEDIATE; - n->location = (yylsp[(1) - (2)]); +#line 237 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + PGConstraint *c = makeNode(PGConstraint); + + c->contype = PG_CONSTR_IDENTITY; + c->generated_when = (yyvsp[-3].ival); + c->options = (yyvsp[0].list); + c->location = (yylsp[-4]); + + n->subtype = PG_AT_AddIdentity; + n->name = (yyvsp[-6].str); + n->def = (PGNode *) c; + (yyval.node) = (PGNode *)n; - ;} + } +#line 15854 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 270: -#line 324 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 254 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetIdentity; + n->name = (yyvsp[-1].str); + n->def = (PGNode *) (yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 15866 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 271: -#line 325 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = list_make1(makeDefElem("oids", (PGNode *) makeInteger(true), (yylsp[(1) - (2)]))); ;} +#line 263 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = AT_DropIdentity; + n->name = (yyvsp[-2].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 15878 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 272: -#line 326 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = list_make1(makeDefElem("oids", (PGNode *) makeInteger(false), (yylsp[(1) - (2)]))); ;} +#line 272 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = AT_DropIdentity; + n->name = (yyvsp[-4].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 15890 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 273: -#line 327 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 281 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_DropColumn; + n->name = (yyvsp[-1].str); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 15903 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 274: -#line 331 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 291 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_DropColumn; + n->name = (yyvsp[-1].str); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 15916 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 275: -#line 336 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} +#line 304 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + PGColumnDef *def = makeNode(PGColumnDef); + n->subtype = PG_AT_AlterColumnType; + n->name = (yyvsp[-5].str); + n->def = (PGNode *) def; + /* We only use these fields of the PGColumnDef node */ + def->typeName = (yyvsp[-2].typnam); + def->collClause = (PGCollateClause *) (yyvsp[-1].node); + def->raw_default = (yyvsp[0].node); + def->location = (yylsp[-5]); + (yyval.node) = (PGNode *)n; + } +#line 15934 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 276: -#line 337 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (yyvsp[(1) - (3)].ival) & ~(yyvsp[(3) - (3)].ival); ;} +#line 319 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AlterColumnGenericOptions; + n->name = (yyvsp[-1].str); + n->def = (PGNode *) (yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 15946 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 277: -#line 338 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = 0; ;} +#line 328 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AddConstraint; + n->def = (yyvsp[0].node); + (yyval.node) = (PGNode *)n; + } +#line 15957 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 278: -#line 343 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 336 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + PGConstraint *c = makeNode(PGConstraint); + n->subtype = PG_AT_AlterConstraint; + n->def = (PGNode *) c; + c->contype = PG_CONSTR_FOREIGN; /* others not supported, yet */ + c->conname = (yyvsp[-1].str); + processCASbits((yyvsp[0].ival), (yylsp[0]), "ALTER CONSTRAINT statement", + &c->deferrable, + &c->initdeferred, + NULL, NULL, yyscanner); + (yyval.node) = (PGNode *)n; + } +#line 15975 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 279: -#line 348 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_NOT_DEFERRABLE; ;} +#line 351 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_ValidateConstraint; + n->name = (yyvsp[0].str); + (yyval.node) = (PGNode *)n; + } +#line 15986 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 280: -#line 349 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_DEFERRABLE; ;} +#line 359 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_DropConstraint; + n->name = (yyvsp[-1].str); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 15999 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 281: -#line 350 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_INITIALLY_IMMEDIATE; ;} +#line 369 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_DropConstraint; + n->name = (yyvsp[-1].str); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 16012 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 282: -#line 351 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_INITIALLY_DEFERRED; ;} +#line 379 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetLogged; + (yyval.node) = (PGNode *)n; + } +#line 16022 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 283: -#line 352 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_NOT_VALID; ;} +#line 386 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetUnLogged; + (yyval.node) = (PGNode *)n; + } +#line 16032 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 284: -#line 353 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_NO_INHERIT; ;} +#line 393 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetRelOptions; + n->def = (PGNode *)(yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 16043 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 285: -#line 359 "third_party/libpg_query/grammar/statements/create.y" - { - PGColumnDef *n = makeNode(PGColumnDef); - n->colname = (yyvsp[(1) - (4)].str); - n->typeName = (yyvsp[(2) - (4)].typnam); - n->inhcount = 0; - n->is_local = true; - n->is_not_null = false; - n->is_from_type = false; - n->storage = 0; - n->raw_default = NULL; - n->cooked_default = NULL; - n->collOid = InvalidOid; - n->fdwoptions = (yyvsp[(3) - (4)].list); - SplitColQualList((yyvsp[(4) - (4)].list), &n->constraints, &n->collClause, - yyscanner); - n->location = (yylsp[(1) - (4)]); +#line 401 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_ResetRelOptions; + n->def = (PGNode *)(yyvsp[0].list); (yyval.node) = (PGNode *)n; - ;} + } +#line 16054 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 286: -#line 382 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); - ;} +#line 408 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_GenericOptions; + n->def = (PGNode *)(yyvsp[0].list); + (yyval.node) = (PGNode *) n; + } +#line 16065 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 287: -#line 386 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); - ;} +#line 418 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.node) = (yyvsp[0].node); } +#line 16071 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 288: -#line 392 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} +#line 419 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.node) = NULL; } +#line 16077 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 289: -#line 393 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} +#line 425 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = (yyvsp[0].defelt); + } +#line 16085 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 290: -#line 397 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 429 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt)->defaction = PG_DEFELEM_SET; + } +#line 16094 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 291: -#line 401 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 434 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt)->defaction = PG_DEFELEM_ADD; + } +#line 16103 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 292: -#line 402 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 439 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[0].str), NULL, DEFELEM_DROP, (yylsp[0])); + } +#line 16111 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 293: -#line 403 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 446 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 16117 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 294: -#line 408 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (PGNode *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); - ;} +#line 447 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 16123 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 295: -#line 412 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); - ;} +#line 452 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 16129 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 296: -#line 419 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 456 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.ival) = 1; } +#line 16135 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 297: -#line 420 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 457 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.ival) = 0; } +#line 16141 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 298: -#line 425 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 458 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.ival) = 0; } +#line 16147 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 299: -#line 426 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 8 "third_party/libpg_query/grammar/statements/deallocate.y" + { + PGDeallocateStmt *n = makeNode(PGDeallocateStmt); + n->name = (yyvsp[0].str); + (yyval.node) = (PGNode *) n; + } +#line 16157 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 300: -#line 431 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); - ;} +#line 14 "third_party/libpg_query/grammar/statements/deallocate.y" + { + PGDeallocateStmt *n = makeNode(PGDeallocateStmt); + n->name = (yyvsp[0].str); + (yyval.node) = (PGNode *) n; + } +#line 16167 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 301: -#line 438 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 20 "third_party/libpg_query/grammar/statements/deallocate.y" + { + PGDeallocateStmt *n = makeNode(PGDeallocateStmt); + n->name = NULL; + (yyval.node) = (PGNode *) n; + } +#line 16177 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 302: -#line 439 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 26 "third_party/libpg_query/grammar/statements/deallocate.y" + { + PGDeallocateStmt *n = makeNode(PGDeallocateStmt); + n->name = NULL; + (yyval.node) = (PGNode *) n; + } +#line 16187 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 303: -#line 444 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} +#line 10 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-4].objtype); + n->missing_ok = true; + n->objects = (yyvsp[-1].list); + n->behavior = (yyvsp[0].dbehavior); + n->concurrent = false; + (yyval.node) = (PGNode *)n; + } +#line 16201 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 304: -#line 445 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 20 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-2].objtype); + n->missing_ok = false; + n->objects = (yyvsp[-1].list); + n->behavior = (yyvsp[0].dbehavior); + n->concurrent = false; + (yyval.node) = (PGNode *)n; + } +#line 16215 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 305: -#line 449 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (yyvsp[(3) - (3)].ival); ;} +#line 30 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-4].objtype); + n->missing_ok = true; + n->objects = (yyvsp[-1].list); + n->behavior = (yyvsp[0].dbehavior); + n->concurrent = false; + (yyval.node) = (PGNode *)n; + } +#line 16229 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 306: -#line 455 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (PGNode *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); - ;} +#line 40 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-2].objtype); + n->missing_ok = false; + n->objects = (yyvsp[-1].list); + n->behavior = (yyvsp[0].dbehavior); + n->concurrent = false; + (yyval.node) = (PGNode *)n; + } +#line 16243 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 307: -#line 459 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); - ;} +#line 50 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-4].objtype); + n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = false; + n->concurrent = false; + (yyval.node) = (PGNode *) n; + } +#line 16257 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 308: -#line 463 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (PGNode *) (yyvsp[(5) - (5)].node), - PG_DEFELEM_UNSPEC, (yylsp[(1) - (5)])); - ;} +#line 60 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-6].objtype); + n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = true; + n->concurrent = false; + (yyval.node) = (PGNode *) n; + } +#line 16271 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 309: -#line 468 "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)])); - ;} +#line 73 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TABLE; } +#line 16277 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 310: -#line 475 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 74 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_SEQUENCE; } +#line 16283 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 311: -#line 476 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} +#line 75 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_FUNCTION; } +#line 16289 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 312: -#line 480 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 76 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_FUNCTION; } +#line 16295 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 313: -#line 482 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(1) - (4)].str)), (yyvsp[(2) - (4)].list))); - (yyval.typnam)->pct_type = true; - (yyval.typnam)->location = (yylsp[(1) - (4)]); - ;} +#line 77 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_VIEW; } +#line 16301 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 314: -#line 488 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(2) - (5)].str)), (yyvsp[(3) - (5)].list))); - (yyval.typnam)->pct_type = true; - (yyval.typnam)->setof = true; - (yyval.typnam)->location = (yylsp[(2) - (5)]); - ;} +#line 78 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_MATVIEW; } +#line 16307 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 315: -#line 499 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_CHECK; - n->location = (yylsp[(1) - (5)]); - n->raw_expr = (yyvsp[(3) - (5)].node); - n->cooked_expr = NULL; - processCASbits((yyvsp[(5) - (5)].ival), (yylsp[(5) - (5)]), "CHECK", - NULL, NULL, &n->skip_validation, - &n->is_no_inherit, yyscanner); - n->initially_valid = !n->skip_validation; - (yyval.node) = (PGNode *)n; - ;} +#line 79 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_INDEX; } +#line 16313 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 316: -#line 513 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_UNIQUE; - n->location = (yylsp[(1) - (6)]); - n->keys = (yyvsp[(3) - (6)].list); - n->options = (yyvsp[(5) - (6)].list); - n->indexname = NULL; - processCASbits((yyvsp[(6) - (6)].ival), (yylsp[(6) - (6)]), "UNIQUE", - &n->deferrable, &n->initdeferred, NULL, - NULL, yyscanner); - (yyval.node) = (PGNode *)n; - ;} +#line 80 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_FOREIGN_TABLE; } +#line 16319 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 317: -#line 526 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_UNIQUE; - n->location = (yylsp[(1) - (3)]); - n->keys = NIL; - n->options = NIL; - n->indexname = (yyvsp[(2) - (3)].str); - n->indexspace = NULL; - processCASbits((yyvsp[(3) - (3)].ival), (yylsp[(3) - (3)]), "UNIQUE", - &n->deferrable, &n->initdeferred, NULL, - NULL, yyscanner); - (yyval.node) = (PGNode *)n; - ;} +#line 81 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_COLLATION; } +#line 16325 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 318: -#line 541 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_PRIMARY; - n->location = (yylsp[(1) - (7)]); - n->keys = (yyvsp[(4) - (7)].list); - n->options = (yyvsp[(6) - (7)].list); - n->indexname = NULL; - processCASbits((yyvsp[(7) - (7)].ival), (yylsp[(7) - (7)]), "PRIMARY KEY", - &n->deferrable, &n->initdeferred, NULL, - NULL, yyscanner); - (yyval.node) = (PGNode *)n; - ;} +#line 82 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_CONVERSION; } +#line 16331 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 319: -#line 554 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_PRIMARY; - n->location = (yylsp[(1) - (4)]); - n->keys = NIL; - n->options = NIL; - n->indexname = (yyvsp[(3) - (4)].str); - n->indexspace = NULL; - processCASbits((yyvsp[(4) - (4)].ival), (yylsp[(4) - (4)]), "PRIMARY KEY", - &n->deferrable, &n->initdeferred, NULL, - NULL, yyscanner); - (yyval.node) = (PGNode *)n; - ;} +#line 83 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_STATISTIC_EXT; } +#line 16337 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 320: -#line 569 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_FOREIGN; - n->location = (yylsp[(1) - (11)]); - n->pktable = (yyvsp[(7) - (11)].range); - n->fk_attrs = (yyvsp[(4) - (11)].list); - n->pk_attrs = (yyvsp[(8) - (11)].list); - n->fk_matchtype = (yyvsp[(9) - (11)].ival); - n->fk_upd_action = (char) ((yyvsp[(10) - (11)].ival) >> 8); - n->fk_del_action = (char) ((yyvsp[(10) - (11)].ival) & 0xFF); - processCASbits((yyvsp[(11) - (11)].ival), (yylsp[(11) - (11)]), "FOREIGN KEY", - &n->deferrable, &n->initdeferred, - &n->skip_validation, NULL, - yyscanner); - n->initially_valid = !n->skip_validation; - (yyval.node) = (PGNode *)n; - ;} +#line 84 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TSPARSER; } +#line 16343 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 321: -#line 591 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); - ;} +#line 85 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TSDICTIONARY; } +#line 16349 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 322: -#line 595 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); - ;} +#line 86 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TSTEMPLATE; } +#line 16355 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 323: -#line 602 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.ival) = PG_FKCONSTR_MATCH_FULL; - ;} +#line 87 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TSCONFIGURATION; } +#line 16361 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 324: -#line 606 "third_party/libpg_query/grammar/statements/create.y" - { - ereport(ERROR, - (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("MATCH PARTIAL not yet implemented"), - parser_errposition((yylsp[(1) - (2)])))); - (yyval.ival) = PG_FKCONSTR_MATCH_PARTIAL; - ;} +#line 92 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_ACCESS_METHOD; } +#line 16367 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 325: -#line 614 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.ival) = PG_FKCONSTR_MATCH_SIMPLE; - ;} +#line 93 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_EVENT_TRIGGER; } +#line 16373 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 326: -#line 618 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.ival) = PG_FKCONSTR_MATCH_SIMPLE; - ;} +#line 94 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_EXTENSION; } +#line 16379 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 327: -#line 626 "third_party/libpg_query/grammar/statements/create.y" - { - PGTableLikeClause *n = makeNode(PGTableLikeClause); - n->relation = (yyvsp[(2) - (3)].range); - n->options = (yyvsp[(3) - (3)].ival); - (yyval.node) = (PGNode *)n; - ;} +#line 95 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_FDW; } +#line 16385 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 328: -#line 635 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} +#line 96 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_PUBLICATION; } +#line 16391 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 329: -#line 636 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} +#line 97 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_SCHEMA; } +#line 16397 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 330: -#line 637 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} +#line 98 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_FOREIGN_SERVER; } +#line 16403 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 331: -#line 638 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} +#line 103 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.list) = list_make1((yyvsp[0].list)); } +#line 16409 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 332: -#line 640 "third_party/libpg_query/grammar/statements/create.y" - { - ereport(PGWARNING, - (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[(1) - (2)])))); - (yyval.ival) = PG_RELPERSISTENCE_TEMP; - ;} +#line 104 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } +#line 16415 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 333: -#line 647 "third_party/libpg_query/grammar/statements/create.y" - { - ereport(PGWARNING, - (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[(1) - (2)])))); - (yyval.ival) = PG_RELPERSISTENCE_TEMP; - ;} +#line 109 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.dbehavior) = PG_DROP_CASCADE; } +#line 16421 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 334: -#line 653 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_RELPERSISTENCE_UNLOGGED; ;} +#line 110 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.dbehavior) = PG_DROP_RESTRICT; } +#line 16427 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 335: -#line 654 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = RELPERSISTENCE_PERMANENT; ;} +#line 111 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.dbehavior) = PG_DROP_RESTRICT; /* default */ } +#line 16433 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 336: -#line 659 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_ATTRIBUTE_IDENTITY_ALWAYS; ;} +#line 116 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_POLICY; } +#line 16439 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 337: -#line 660 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = ATTRIBUTE_IDENTITY_BY_DEFAULT; ;} +#line 117 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_RULE; } +#line 16445 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 338: -#line 10 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (6)].objtype); - n->missing_ok = true; - n->objects = (yyvsp[(5) - (6)].list); - n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->concurrent = false; - (yyval.node) = (PGNode *)n; - ;} +#line 118 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TRIGGER; } +#line 16451 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 339: -#line 20 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (4)].objtype); - n->missing_ok = false; - n->objects = (yyvsp[(3) - (4)].list); - n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->concurrent = false; +#line 8 "third_party/libpg_query/grammar/statements/load.y" + { + PGLoadStmt *n = makeNode(PGLoadStmt); + n->filename = (yyvsp[0].str); (yyval.node) = (PGNode *)n; - ;} + } +#line 16461 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 340: -#line 30 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (6)].objtype); - n->missing_ok = true; - n->objects = (yyvsp[(5) - (6)].list); - n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->concurrent = false; - (yyval.node) = (PGNode *)n; - ;} - break; - - case 341: -#line 40 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (4)].objtype); - n->missing_ok = false; - n->objects = (yyvsp[(3) - (4)].list); - n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->concurrent = false; - (yyval.node) = (PGNode *)n; - ;} - break; - - case 342: -#line 50 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (6)].objtype); - n->objects = list_make1(lappend((yyvsp[(5) - (6)].list), makeString((yyvsp[(3) - (6)].str)))); - n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->missing_ok = false; - n->concurrent = false; - (yyval.node) = (PGNode *) n; - ;} +#line 16 "third_party/libpg_query/grammar/statements/load.y" + { (yyval.str) = (yyvsp[0].str); } +#line 16467 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 343: -#line 60 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (8)].objtype); - n->objects = list_make1(lappend((yyvsp[(7) - (8)].list), makeString((yyvsp[(5) - (8)].str)))); - n->behavior = (yyvsp[(8) - (8)].dbehavior); - n->missing_ok = true; - n->concurrent = false; - (yyval.node) = (PGNode *) n; - ;} +#line 52 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-1].node); } +#line 16473 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 344: -#line 73 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TABLE; ;} +#line 53 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-1].node); } +#line 16479 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 345: -#line 74 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_SEQUENCE; ;} +#line 68 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 16485 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 346: -#line 75 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_FUNCTION; ;} +#line 70 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-1].node), (yyvsp[0].list), NIL, + NULL, NULL, NULL, + yyscanner); + (yyval.node) = (yyvsp[-1].node); + } +#line 16496 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 347: -#line 76 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_FUNCTION; ;} +#line 77 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[-1].list), + (PGNode*) list_nth((yyvsp[0].list), 0), (PGNode*) list_nth((yyvsp[0].list), 1), + NULL, + yyscanner); + (yyval.node) = (yyvsp[-3].node); + } +#line 16508 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 348: -#line 77 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_VIEW; ;} +#line 85 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[0].list), + (PGNode*) list_nth((yyvsp[-1].list), 0), (PGNode*) list_nth((yyvsp[-1].list), 1), + NULL, + yyscanner); + (yyval.node) = (yyvsp[-3].node); + } +#line 16520 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 349: -#line 78 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_MATVIEW; ;} +#line 93 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[0].node), NULL, NIL, + NULL, NULL, + (yyvsp[-1].with), + yyscanner); + (yyval.node) = (yyvsp[0].node); + } +#line 16532 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 350: -#line 79 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_INDEX; ;} +#line 101 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-1].node), (yyvsp[0].list), NIL, + NULL, NULL, + (yyvsp[-2].with), + yyscanner); + (yyval.node) = (yyvsp[-1].node); + } +#line 16544 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 351: -#line 80 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_FOREIGN_TABLE; ;} +#line 109 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[-1].list), + (PGNode*) list_nth((yyvsp[0].list), 0), (PGNode*) list_nth((yyvsp[0].list), 1), + (yyvsp[-4].with), + yyscanner); + (yyval.node) = (yyvsp[-3].node); + } +#line 16556 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 352: -#line 81 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_COLLATION; ;} +#line 117 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[0].list), + (PGNode*) list_nth((yyvsp[-1].list), 0), (PGNode*) list_nth((yyvsp[-1].list), 1), + (yyvsp[-4].with), + yyscanner); + (yyval.node) = (yyvsp[-3].node); + } +#line 16568 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 353: -#line 82 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_CONVERSION; ;} +#line 127 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 16574 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 354: -#line 83 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_STATISTIC_EXT; ;} +#line 128 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 16580 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 355: -#line 84 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TSPARSER; ;} +#line 158 "third_party/libpg_query/grammar/statements/select.y" + { + PGSelectStmt *n = makeNode(PGSelectStmt); + n->targetList = (yyvsp[-7].list); + n->intoClause = (yyvsp[-6].into); + n->fromClause = (yyvsp[-5].list); + n->whereClause = (yyvsp[-4].node); + n->groupClause = (yyvsp[-3].list); + n->havingClause = (yyvsp[-2].node); + n->windowClause = (yyvsp[-1].list); + n->sampleOptions = (yyvsp[0].node); + (yyval.node) = (PGNode *)n; + } +#line 16597 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 356: -#line 85 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TSDICTIONARY; ;} +#line 173 "third_party/libpg_query/grammar/statements/select.y" + { + PGSelectStmt *n = makeNode(PGSelectStmt); + n->distinctClause = (yyvsp[-8].list); + n->targetList = (yyvsp[-7].list); + n->intoClause = (yyvsp[-6].into); + n->fromClause = (yyvsp[-5].list); + n->whereClause = (yyvsp[-4].node); + n->groupClause = (yyvsp[-3].list); + n->havingClause = (yyvsp[-2].node); + n->windowClause = (yyvsp[-1].list); + n->sampleOptions = (yyvsp[0].node); + (yyval.node) = (PGNode *)n; + } +#line 16615 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 357: -#line 86 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TSTEMPLATE; ;} +#line 186 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 16621 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 358: -#line 87 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TSCONFIGURATION; ;} +#line 188 "third_party/libpg_query/grammar/statements/select.y" + { + /* same as SELECT * FROM relation_expr */ + PGColumnRef *cr = makeNode(PGColumnRef); + PGResTarget *rt = makeNode(PGResTarget); + PGSelectStmt *n = makeNode(PGSelectStmt); + + cr->fields = list_make1(makeNode(PGAStar)); + cr->location = -1; + + rt->name = NULL; + rt->indirection = NIL; + rt->val = (PGNode *)cr; + rt->location = -1; + + n->targetList = list_make1(rt); + n->fromClause = list_make1((yyvsp[0].range)); + (yyval.node) = (PGNode *)n; + } +#line 16644 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 359: -#line 92 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_ACCESS_METHOD; ;} +#line 207 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSetOp(PG_SETOP_UNION, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + } +#line 16652 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 360: -#line 93 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_EVENT_TRIGGER; ;} +#line 211 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSetOp(PG_SETOP_INTERSECT, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + } +#line 16660 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 361: -#line 94 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_EXTENSION; ;} +#line 215 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSetOp(PG_SETOP_EXCEPT, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + } +#line 16668 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 362: -#line 95 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_FDW; ;} +#line 232 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.with) = makeNode(PGWithClause); + (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->recursive = false; + (yyval.with)->location = (yylsp[-1]); + } +#line 16679 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 363: -#line 96 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_PUBLICATION; ;} +#line 239 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.with) = makeNode(PGWithClause); + (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->recursive = false; + (yyval.with)->location = (yylsp[-1]); + } +#line 16690 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 364: -#line 97 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_SCHEMA; ;} +#line 246 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.with) = makeNode(PGWithClause); + (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->recursive = true; + (yyval.with)->location = (yylsp[-2]); + } +#line 16701 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 365: -#line 98 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_FOREIGN_SERVER; ;} +#line 255 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 16707 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 366: -#line 103 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} +#line 256 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 16713 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 367: -#line 104 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} +#line 260 "third_party/libpg_query/grammar/statements/select.y" + { + PGCommonTableExpr *n = makeNode(PGCommonTableExpr); + n->ctename = (yyvsp[-5].str); + n->aliascolnames = (yyvsp[-4].list); + n->ctequery = (yyvsp[-1].node); + n->location = (yylsp[-5]); + (yyval.node) = (PGNode *) n; + } +#line 16726 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 368: -#line 109 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.dbehavior) = PG_DROP_CASCADE; ;} +#line 272 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.into) = makeNode(PGIntoClause); + (yyval.into)->rel = (yyvsp[0].range); + (yyval.into)->colNames = NIL; + (yyval.into)->options = NIL; + (yyval.into)->onCommit = PG_ONCOMMIT_NOOP; + (yyval.into)->viewQuery = NULL; + (yyval.into)->skipData = false; + } +#line 16740 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 369: -#line 110 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.dbehavior) = PG_DROP_RESTRICT; ;} +#line 282 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.into) = NULL; } +#line 16746 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 370: -#line 111 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.dbehavior) = PG_DROP_RESTRICT; /* default */ ;} +#line 291 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 16755 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 371: -#line 116 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_POLICY; ;} +#line 296 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 16764 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 372: -#line 117 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_RULE; ;} +#line 301 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 16773 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 373: -#line 118 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TRIGGER; ;} +#line 306 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 16782 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 374: -#line 8 "third_party/libpg_query/grammar/statements/create_function.y" - { - PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); - n->name = (yyvsp[(3) - (6)].range); - n->params = (yyvsp[(4) - (6)].list); - n->function = (yyvsp[(6) - (6)].node); - (yyval.node) = (PGNode *)n; - ;} +#line 311 "third_party/libpg_query/grammar/statements/select.y" + { + ereport(PGWARNING, + (errmsg("GLOBAL is deprecated in temporary table creation"), + parser_errposition((yylsp[-3])))); + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 16794 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 375: +#line 319 "third_party/libpg_query/grammar/statements/select.y" + { + ereport(PGWARNING, + (errmsg("GLOBAL is deprecated in temporary table creation"), + parser_errposition((yylsp[-3])))); + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 16806 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 376: +#line 327 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_UNLOGGED; + } +#line 16815 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 377: -#line 24 "third_party/libpg_query/grammar/statements/create_function.y" - { - (yyval.list) = NIL; - ;} +#line 332 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; + } +#line 16824 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 378: -#line 28 "third_party/libpg_query/grammar/statements/create_function.y" - { - (yyval.list) = (yyvsp[(2) - (3)].list); - ;} +#line 337 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; + } +#line 16833 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 379: -#line 12 "third_party/libpg_query/grammar/statements/update.y" - { - PGUpdateStmt *n = makeNode(PGUpdateStmt); - n->relation = (yyvsp[(3) - (8)].range); - n->targetList = (yyvsp[(5) - (8)].list); - n->fromClause = (yyvsp[(6) - (8)].list); - n->whereClause = (yyvsp[(7) - (8)].node); - n->returningList = (yyvsp[(8) - (8)].list); - n->withClause = (yyvsp[(1) - (8)].with); - (yyval.node) = (PGNode *)n; - ;} +#line 343 "third_party/libpg_query/grammar/statements/select.y" + {} +#line 16839 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 380: -#line 3 "third_party/libpg_query/grammar/statements/copy.y" - { - PGCopyStmt *n = makeNode(PGCopyStmt); - n->relation = (yyvsp[(3) - (11)].range); - n->query = NULL; - n->attlist = (yyvsp[(4) - (11)].list); - n->is_from = (yyvsp[(6) - (11)].boolean); - n->is_program = (yyvsp[(7) - (11)].boolean); - n->filename = (yyvsp[(8) - (11)].str); - - if (n->is_program && n->filename == NULL) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("STDIN/STDOUT not allowed with PROGRAM"), - parser_errposition((yylsp[(8) - (11)])))); - - n->options = NIL; - /* Concatenate user-supplied flags */ - if ((yyvsp[(2) - (11)].defelt)) - n->options = lappend(n->options, (yyvsp[(2) - (11)].defelt)); - if ((yyvsp[(5) - (11)].defelt)) - n->options = lappend(n->options, (yyvsp[(5) - (11)].defelt)); - if ((yyvsp[(9) - (11)].defelt)) - n->options = lappend(n->options, (yyvsp[(9) - (11)].defelt)); - if ((yyvsp[(11) - (11)].list)) - n->options = list_concat(n->options, (yyvsp[(11) - (11)].list)); - (yyval.node) = (PGNode *)n; - ;} +#line 344 "third_party/libpg_query/grammar/statements/select.y" + {} +#line 16845 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 381: -#line 31 "third_party/libpg_query/grammar/statements/copy.y" - { - PGCopyStmt *n = makeNode(PGCopyStmt); - n->relation = NULL; - n->query = (yyvsp[(3) - (9)].node); - n->attlist = NIL; - n->is_from = false; - n->is_program = (yyvsp[(6) - (9)].boolean); - n->filename = (yyvsp[(7) - (9)].str); - n->options = (yyvsp[(9) - (9)].list); - - if (n->is_program && n->filename == NULL) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("STDIN/STDOUT not allowed with PROGRAM"), - parser_errposition((yylsp[(5) - (9)])))); - - (yyval.node) = (PGNode *)n; - ;} +#line 348 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = true; } +#line 16851 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 382: -#line 53 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.boolean) = true; ;} +#line 349 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 16857 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 383: -#line 54 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.boolean) = false; ;} +#line 350 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 16863 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 384: -#line 60 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("delimiter", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(2) - (3)])); - ;} +#line 357 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(NIL); } +#line 16869 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 385: -#line 63 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.defelt) = NULL; ;} +#line 358 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 16875 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 386: -#line 69 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); - ;} +#line 362 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL;} +#line 16881 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 387: -#line 73 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); - ;} +#line 363 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 16887 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 388: -#line 80 "third_party/libpg_query/grammar/statements/copy.y" - {;} +#line 367 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list);} +#line 16893 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 389: -#line 81 "third_party/libpg_query/grammar/statements/copy.y" - {;} +#line 368 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 16899 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 390: -#line 85 "third_party/libpg_query/grammar/statements/copy.y" - {;} +#line 372 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 16905 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 391: -#line 86 "third_party/libpg_query/grammar/statements/copy.y" - {;} +#line 376 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].sortby)); } +#line 16911 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 392: -#line 91 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.boolean) = true; ;} +#line 377 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].sortby)); } +#line 16917 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 393: -#line 92 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.boolean) = false; ;} +#line 381 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.sortby) = makeNode(PGSortBy); + (yyval.sortby)->node = (yyvsp[-3].node); + (yyval.sortby)->sortby_dir = SORTBY_USING; + (yyval.sortby)->sortby_nulls = (yyvsp[0].nullorder); + (yyval.sortby)->useOp = (yyvsp[-1].list); + (yyval.sortby)->location = (yylsp[-1]); + } +#line 16930 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 394: -#line 96 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 390 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.sortby) = makeNode(PGSortBy); + (yyval.sortby)->node = (yyvsp[-2].node); + (yyval.sortby)->sortby_dir = (yyvsp[-1].sortorder); + (yyval.sortby)->sortby_nulls = (yyvsp[0].nullorder); + (yyval.sortby)->useOp = NIL; + (yyval.sortby)->location = -1; /* no operator */ + } +#line 16943 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 395: -#line 97 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 400 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.sortorder) = PG_SORTBY_ASC; } +#line 16949 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 396: -#line 102 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} +#line 401 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.sortorder) = PG_SORTBY_DESC; } +#line 16955 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 397: -#line 103 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].value); ;} +#line 402 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.sortorder) = PG_SORTBY_DEFAULT; } +#line 16961 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 398: -#line 104 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = (PGNode *) makeNode(PGAStar); ;} +#line 405 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.nullorder) = PG_SORTBY_NULLS_FIRST; } +#line 16967 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 399: -#line 105 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = (PGNode *) (yyvsp[(2) - (3)].list); ;} +#line 406 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.nullorder) = PG_SORTBY_NULLS_LAST; } +#line 16973 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 400: -#line 106 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = NULL; ;} +#line 407 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.nullorder) = PG_SORTBY_NULLS_DEFAULT; } +#line 16979 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 401: -#line 112 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); - ;} +#line 411 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2((yyvsp[0].node), (yyvsp[-1].node)); } +#line 16985 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 402: -#line 120 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("oids", (PGNode *)makeInteger(true), (yylsp[(1) - (2)])); - ;} +#line 412 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].node)); } +#line 16991 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 403: -#line 123 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.defelt) = NULL; ;} +#line 413 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2(NULL, (yyvsp[0].node)); } +#line 16997 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 404: -#line 128 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} +#line 414 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2((yyvsp[0].node), NULL); } +#line 17003 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 405: -#line 129 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.list) = NIL; ;} +#line 418 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 17009 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 406: -#line 135 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("binary"), (yylsp[(1) - (1)])); - ;} +#line 419 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2(NULL,NULL); } +#line 17015 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 407: -#line 138 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.defelt) = NULL; ;} +#line 424 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17021 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 408: -#line 144 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("binary"), (yylsp[(1) - (1)])); - ;} +#line 426 "third_party/libpg_query/grammar/statements/select.y" + { + /* Disabled because it was too confusing, bjm 2002-02-18 */ + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("LIMIT #,# syntax is not supported"), + errhint("Use separate LIMIT and OFFSET clauses."), + parser_errposition((yylsp[-3])))); + } +#line 17034 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 409: -#line 148 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("oids", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); - ;} +#line 442 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-2].node); } +#line 17040 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 410: -#line 152 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("freeze", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); - ;} +#line 444 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeIntConst(1, -1); } +#line 17046 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 411: -#line 156 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("delimiter", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); - ;} +#line 449 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17052 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 412: -#line 160 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("null", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); - ;} +#line 452 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-1].node); } +#line 17058 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 413: -#line 164 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("csv"), (yylsp[(1) - (1)])); - ;} +#line 460 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeFloat((yyvsp[-1].str)), true); + } +#line 17066 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 414: -#line 168 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("header", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); - ;} +#line 464 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeInteger((yyvsp[-1].ival)), true); + } +#line 17074 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 415: -#line 172 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("quote", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); - ;} +#line 468 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeFloat((yyvsp[-1].str)), true); + } +#line 17082 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 416: -#line 176 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("escape", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); - ;} +#line 472 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeInteger((yyvsp[-1].ival)), true); + } +#line 17090 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 417: -#line 180 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("force_quote", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); - ;} +#line 476 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeInteger((yyvsp[0].ival)), false); + } +#line 17098 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 418: -#line 184 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("force_quote", (PGNode *)makeNode(PGAStar), (yylsp[(1) - (3)])); - ;} +#line 480 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeInteger((yyvsp[-1].ival)), false); + } +#line 17106 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 419: -#line 188 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("force_not_null", (PGNode *)(yyvsp[(4) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 487 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (yyvsp[0].node); + } +#line 17114 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 420: -#line 192 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("force_null", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); - ;} +#line 491 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17120 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 421: -#line 196 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("encoding", (PGNode *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); - ;} +#line 498 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 17126 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 422: -#line 203 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} +#line 499 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = NULL; } +#line 17132 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 423: -#line 209 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 504 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleOptions((yyvsp[-2].node), (yyvsp[-4].str), (yyvsp[0].ival), (yylsp[-4])); + } +#line 17140 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 424: -#line 210 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.str) = NULL; ;} +#line 508 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleOptions((yyvsp[0].node), NULL, -1, (yylsp[0])); + } +#line 17148 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 425: -#line 211 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.str) = NULL; ;} +#line 512 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleOptions((yyvsp[-3].node), (yyvsp[-1].str), -1, (yylsp[-3])); + } +#line 17156 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 426: -#line 217 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); - ;} +#line 516 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleOptions((yyvsp[-5].node), (yyvsp[-3].str), (yyvsp[-1].ival), (yylsp[-5])); + } +#line 17164 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 427: -#line 221 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); - ;} +#line 523 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (yyvsp[0].node); + } +#line 17172 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 428: +#line 529 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17178 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 429: +#line 530 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17184 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 430: -#line 52 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (3)].node); ;} +#line 535 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = (yyvsp[-1].ival); } +#line 17190 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 431: -#line 53 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (3)].node); ;} +#line 536 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = -1; } +#line 17196 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 432: -#line 68 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 540 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17202 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 433: -#line 70 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list), NIL, - NULL, NULL, NULL, - yyscanner); - (yyval.node) = (yyvsp[(1) - (2)].node); - ;} +#line 542 "third_party/libpg_query/grammar/statements/select.y" + { + /* LIMIT ALL is represented as a NULL constant */ + (yyval.node) = makeNullAConst((yylsp[0])); + } +#line 17211 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 434: -#line 77 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(3) - (4)].list), - (PGNode*) list_nth((yyvsp[(4) - (4)].list), 0), (PGNode*) list_nth((yyvsp[(4) - (4)].list), 1), - NULL, - yyscanner); - (yyval.node) = (yyvsp[(1) - (4)].node); - ;} +#line 549 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17217 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 435: -#line 85 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(4) - (4)].list), - (PGNode*) list_nth((yyvsp[(3) - (4)].list), 0), (PGNode*) list_nth((yyvsp[(3) - (4)].list), 1), - NULL, - yyscanner); - (yyval.node) = (yyvsp[(1) - (4)].node); - ;} +#line 569 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17223 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 436: -#line 93 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (2)].node), NULL, NIL, - NULL, NULL, - (yyvsp[(1) - (2)].with), - yyscanner); - (yyval.node) = (yyvsp[(2) - (2)].node); - ;} +#line 571 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } +#line 17229 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 437: -#line 101 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].list), NIL, - NULL, NULL, - (yyvsp[(1) - (3)].with), - yyscanner); - (yyval.node) = (yyvsp[(2) - (3)].node); - ;} +#line 573 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } +#line 17235 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 438: -#line 109 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(4) - (5)].list), - (PGNode*) list_nth((yyvsp[(5) - (5)].list), 0), (PGNode*) list_nth((yyvsp[(5) - (5)].list), 1), - (yyvsp[(1) - (5)].with), - yyscanner); - (yyval.node) = (yyvsp[(2) - (5)].node); - ;} +#line 577 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeIntConst((yyvsp[0].ival),(yylsp[0])); } +#line 17241 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 439: -#line 117 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list), - (PGNode*) list_nth((yyvsp[(4) - (5)].list), 0), (PGNode*) list_nth((yyvsp[(4) - (5)].list), 1), - (yyvsp[(1) - (5)].with), - yyscanner); - (yyval.node) = (yyvsp[(2) - (5)].node); - ;} +#line 578 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeFloatConst((yyvsp[0].str),(yylsp[0])); } +#line 17247 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 440: -#line 127 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 582 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = 0; } +#line 17253 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 441: -#line 128 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 583 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = 0; } +#line 17259 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 442: -#line 158 "third_party/libpg_query/grammar/statements/select.y" - { - PGSelectStmt *n = makeNode(PGSelectStmt); - n->targetList = (yyvsp[(3) - (10)].list); - n->intoClause = (yyvsp[(4) - (10)].into); - n->fromClause = (yyvsp[(5) - (10)].list); - n->whereClause = (yyvsp[(6) - (10)].node); - n->groupClause = (yyvsp[(7) - (10)].list); - n->havingClause = (yyvsp[(8) - (10)].node); - n->windowClause = (yyvsp[(9) - (10)].list); - n->sampleOptions = (yyvsp[(10) - (10)].node); - (yyval.node) = (PGNode *)n; - ;} +#line 586 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = 0; } +#line 17265 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 443: -#line 173 "third_party/libpg_query/grammar/statements/select.y" - { - PGSelectStmt *n = makeNode(PGSelectStmt); - n->distinctClause = (yyvsp[(2) - (10)].list); - n->targetList = (yyvsp[(3) - (10)].list); - n->intoClause = (yyvsp[(4) - (10)].into); - n->fromClause = (yyvsp[(5) - (10)].list); - n->whereClause = (yyvsp[(6) - (10)].node); - n->groupClause = (yyvsp[(7) - (10)].list); - n->havingClause = (yyvsp[(8) - (10)].node); - n->windowClause = (yyvsp[(9) - (10)].list); - n->sampleOptions = (yyvsp[(10) - (10)].node); - (yyval.node) = (PGNode *)n; - ;} +#line 587 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = 0; } +#line 17271 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 444: -#line 186 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 612 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 17277 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 445: -#line 188 "third_party/libpg_query/grammar/statements/select.y" - { - /* same as SELECT * FROM relation_expr */ - PGColumnRef *cr = makeNode(PGColumnRef); - PGResTarget *rt = makeNode(PGResTarget); - PGSelectStmt *n = makeNode(PGSelectStmt); - - cr->fields = list_make1(makeNode(PGAStar)); - cr->location = -1; - - rt->name = NULL; - rt->indirection = NIL; - rt->val = (PGNode *)cr; - rt->location = -1; - - n->targetList = list_make1(rt); - n->fromClause = list_make1((yyvsp[(2) - (2)].range)); - (yyval.node) = (PGNode *)n; - ;} +#line 613 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 17283 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 446: -#line 207 "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)); - ;} +#line 617 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 17289 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 447: -#line 211 "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)); - ;} +#line 618 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list),(yyvsp[0].node)); } +#line 17295 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 448: -#line 215 "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)); - ;} +#line 622 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17301 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 449: -#line 232 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.with) = makeNode(PGWithClause); - (yyval.with)->ctes = (yyvsp[(2) - (2)].list); - (yyval.with)->recursive = false; - (yyval.with)->location = (yylsp[(1) - (2)]); - ;} +#line 623 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17307 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 450: -#line 239 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.with) = makeNode(PGWithClause); - (yyval.with)->ctes = (yyvsp[(2) - (2)].list); - (yyval.with)->recursive = false; - (yyval.with)->location = (yylsp[(1) - (2)]); - ;} +#line 628 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[-1])); + } +#line 17315 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 451: -#line 246 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.with) = makeNode(PGWithClause); - (yyval.with)->ctes = (yyvsp[(3) - (3)].list); - (yyval.with)->recursive = true; - (yyval.with)->location = (yylsp[(1) - (3)]); - ;} +#line 640 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17321 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 452: -#line 255 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 641 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17327 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 453: -#line 256 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} +#line 645 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 17333 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 454: -#line 260 "third_party/libpg_query/grammar/statements/select.y" - { - PGCommonTableExpr *n = makeNode(PGCommonTableExpr); - n->ctename = (yyvsp[(1) - (6)].str); - n->aliascolnames = (yyvsp[(2) - (6)].list); - n->ctequery = (yyvsp[(5) - (6)].node); - n->location = (yylsp[(1) - (6)]); - (yyval.node) = (PGNode *) n; - ;} +#line 646 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 17339 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 455: -#line 272 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.into) = makeNode(PGIntoClause); - (yyval.into)->rel = (yyvsp[(2) - (2)].range); - (yyval.into)->colNames = NIL; - (yyval.into)->options = NIL; - (yyval.into)->onCommit = PG_ONCOMMIT_NOOP; - (yyval.into)->viewQuery = NULL; - (yyval.into)->skipData = false; - ;} +#line 650 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 17345 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 456: -#line 282 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.into) = NULL; ;} +#line 651 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 17351 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 457: -#line 291 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(3) - (3)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 655 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 17357 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 458: -#line 296 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(3) - (3)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 656 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } +#line 17363 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 459: -#line 301 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(4) - (4)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 661 "third_party/libpg_query/grammar/statements/select.y" + { + PGLockingClause *n = makeNode(PGLockingClause); + n->lockedRels = (yyvsp[-1].list); + n->strength = (yyvsp[-2].lockstrength); + n->waitPolicy = (yyvsp[0].lockwaitpolicy); + (yyval.node) = (PGNode *) n; + } +#line 17375 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 460: -#line 306 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(4) - (4)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 671 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockstrength) = LCS_FORUPDATE; } +#line 17381 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 461: -#line 311 "third_party/libpg_query/grammar/statements/select.y" - { - ereport(PGWARNING, - (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[(1) - (4)])))); - (yyval.range) = (yyvsp[(4) - (4)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 672 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockstrength) = PG_LCS_FORNOKEYUPDATE; } +#line 17387 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 462: -#line 319 "third_party/libpg_query/grammar/statements/select.y" - { - ereport(PGWARNING, - (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[(1) - (4)])))); - (yyval.range) = (yyvsp[(4) - (4)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 673 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockstrength) = PG_LCS_FORSHARE; } +#line 17393 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 463: -#line 327 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(3) - (3)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_UNLOGGED; - ;} +#line 674 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockstrength) = PG_LCS_FORKEYSHARE; } +#line 17399 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 464: -#line 332 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(2) - (2)].range); - (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; - ;} +#line 678 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 17405 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 465: -#line 337 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(1) - (1)].range); - (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; - ;} +#line 679 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 17411 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 466: -#line 343 "third_party/libpg_query/grammar/statements/select.y" - {;} +#line 684 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockwaitpolicy) = LockWaitError; } +#line 17417 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 467: -#line 344 "third_party/libpg_query/grammar/statements/select.y" - {;} +#line 685 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockwaitpolicy) = PGLockWaitSkip; } +#line 17423 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 468: -#line 348 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = true; ;} +#line 686 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockwaitpolicy) = PGLockWaitBlock; } +#line 17429 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 469: -#line 349 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 696 "third_party/libpg_query/grammar/statements/select.y" + { + PGSelectStmt *n = makeNode(PGSelectStmt); + n->valuesLists = list_make1((yyvsp[-1].list)); + (yyval.node) = (PGNode *) n; + } +#line 17439 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 470: -#line 350 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 702 "third_party/libpg_query/grammar/statements/select.y" + { + PGSelectStmt *n = (PGSelectStmt *) (yyvsp[-4].node); + n->valuesLists = lappend(n->valuesLists, (yyvsp[-1].list)); + (yyval.node) = (PGNode *) n; + } +#line 17449 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 471: -#line 357 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(NIL); ;} +#line 719 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 17455 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 472: -#line 358 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(4) - (5)].list); ;} +#line 720 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 17461 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 473: -#line 362 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL;;} +#line 724 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 17467 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 474: -#line 363 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 725 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 17473 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 475: -#line 367 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list);;} +#line 732 "third_party/libpg_query/grammar/statements/select.y" + { + (yyvsp[-2].range)->alias = (yyvsp[-1].alias); + (yyvsp[-2].range)->sample = (yyvsp[0].node); + (yyval.node) = (PGNode *) (yyvsp[-2].range); + } +#line 17483 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 476: -#line 368 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 738 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeFunction *n = (PGRangeFunction *) (yyvsp[-2].node); + n->alias = (PGAlias*) linitial((yyvsp[-1].list)); + n->coldeflist = (PGList*) lsecond((yyvsp[-1].list)); + n->sample = (yyvsp[0].node); + (yyval.node) = (PGNode *) n; + } +#line 17495 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 477: -#line 372 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (3)].list); ;} +#line 746 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeFunction *n = (PGRangeFunction *) (yyvsp[-1].node); + n->lateral = true; + n->alias = (PGAlias*) linitial((yyvsp[0].list)); + n->coldeflist = (PGList*) lsecond((yyvsp[0].list)); + (yyval.node) = (PGNode *) n; + } +#line 17507 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 478: -#line 376 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].sortby)); ;} +#line 754 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeSubselect *n = makeNode(PGRangeSubselect); + n->lateral = false; + n->subquery = (yyvsp[-2].node); + n->alias = (yyvsp[-1].alias); + n->sample = (yyvsp[0].node); + (yyval.node) = (PGNode *) n; + } +#line 17520 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 479: -#line 377 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].sortby)); ;} +#line 763 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeSubselect *n = makeNode(PGRangeSubselect); + n->lateral = true; + n->subquery = (yyvsp[-1].node); + n->alias = (yyvsp[0].alias); + n->sample = NULL; + (yyval.node) = (PGNode *) n; + } +#line 17533 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 480: -#line 381 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.sortby) = makeNode(PGSortBy); - (yyval.sortby)->node = (yyvsp[(1) - (4)].node); - (yyval.sortby)->sortby_dir = SORTBY_USING; - (yyval.sortby)->sortby_nulls = (yyvsp[(4) - (4)].nullorder); - (yyval.sortby)->useOp = (yyvsp[(3) - (4)].list); - (yyval.sortby)->location = (yylsp[(3) - (4)]); - ;} +#line 772 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) (yyvsp[0].jexpr); + } +#line 17541 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 481: -#line 390 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.sortby) = makeNode(PGSortBy); - (yyval.sortby)->node = (yyvsp[(1) - (3)].node); - (yyval.sortby)->sortby_dir = (yyvsp[(2) - (3)].sortorder); - (yyval.sortby)->sortby_nulls = (yyvsp[(3) - (3)].nullorder); - (yyval.sortby)->useOp = NIL; - (yyval.sortby)->location = -1; /* no operator */ - ;} +#line 776 "third_party/libpg_query/grammar/statements/select.y" + { + (yyvsp[-2].jexpr)->alias = (yyvsp[0].alias); + (yyval.node) = (PGNode *) (yyvsp[-2].jexpr); + } +#line 17550 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 482: -#line 400 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.sortorder) = PG_SORTBY_ASC; ;} +#line 802 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.jexpr) = (yyvsp[-1].jexpr); + } +#line 17558 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 483: -#line 401 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.sortorder) = PG_SORTBY_DESC; ;} +#line 806 "third_party/libpg_query/grammar/statements/select.y" + { + /* CROSS JOIN is same as unqualified inner join */ + PGJoinExpr *n = makeNode(PGJoinExpr); + n->jointype = PG_JOIN_INNER; + n->isNatural = false; + n->larg = (yyvsp[-3].node); + n->rarg = (yyvsp[0].node); + n->usingClause = NIL; + n->quals = NULL; + n->location = (yylsp[-2]); + (yyval.jexpr) = n; + } +#line 17575 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 484: -#line 402 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.sortorder) = PG_SORTBY_DEFAULT; ;} +#line 819 "third_party/libpg_query/grammar/statements/select.y" + { + PGJoinExpr *n = makeNode(PGJoinExpr); + n->jointype = (yyvsp[-3].jtype); + n->isNatural = false; + n->larg = (yyvsp[-4].node); + n->rarg = (yyvsp[-1].node); + if ((yyvsp[0].node) != NULL && IsA((yyvsp[0].node), PGList)) + n->usingClause = (PGList *) (yyvsp[0].node); /* USING clause */ + else + n->quals = (yyvsp[0].node); /* ON clause */ + n->location = (yylsp[-3]); + (yyval.jexpr) = n; + } +#line 17593 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 485: -#line 405 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.nullorder) = PG_SORTBY_NULLS_FIRST; ;} +#line 833 "third_party/libpg_query/grammar/statements/select.y" + { + /* letting join_type reduce to empty doesn't work */ + PGJoinExpr *n = makeNode(PGJoinExpr); + n->jointype = PG_JOIN_INNER; + n->isNatural = false; + n->larg = (yyvsp[-3].node); + n->rarg = (yyvsp[-1].node); + if ((yyvsp[0].node) != NULL && IsA((yyvsp[0].node), PGList)) + n->usingClause = (PGList *) (yyvsp[0].node); /* USING clause */ + else + n->quals = (yyvsp[0].node); /* ON clause */ + n->location = (yylsp[-2]); + (yyval.jexpr) = n; + } +#line 17612 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 486: -#line 406 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.nullorder) = PG_SORTBY_NULLS_LAST; ;} +#line 848 "third_party/libpg_query/grammar/statements/select.y" + { + PGJoinExpr *n = makeNode(PGJoinExpr); + n->jointype = (yyvsp[-2].jtype); + n->isNatural = true; + n->larg = (yyvsp[-4].node); + n->rarg = (yyvsp[0].node); + n->usingClause = NIL; /* figure out which columns later... */ + n->quals = NULL; /* fill later */ + n->location = (yylsp[-3]); + (yyval.jexpr) = n; + } +#line 17628 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 487: -#line 407 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.nullorder) = PG_SORTBY_NULLS_DEFAULT; ;} +#line 860 "third_party/libpg_query/grammar/statements/select.y" + { + /* letting join_type reduce to empty doesn't work */ + PGJoinExpr *n = makeNode(PGJoinExpr); + n->jointype = PG_JOIN_INNER; + n->isNatural = true; + n->larg = (yyvsp[-3].node); + n->rarg = (yyvsp[0].node); + n->usingClause = NIL; /* figure out which columns later... */ + n->quals = NULL; /* fill later */ + n->location = (yylsp[-2]); + (yyval.jexpr) = n; + } +#line 17645 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 488: -#line 411 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2((yyvsp[(2) - (2)].node), (yyvsp[(1) - (2)].node)); ;} +#line 876 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.alias) = makeNode(PGAlias); + (yyval.alias)->aliasname = (yyvsp[-3].str); + (yyval.alias)->colnames = (yyvsp[-1].list); + } +#line 17655 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 489: -#line 412 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); ;} +#line 882 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.alias) = makeNode(PGAlias); + (yyval.alias)->aliasname = (yyvsp[0].str); + } +#line 17664 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 490: -#line 413 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2(NULL, (yyvsp[(1) - (1)].node)); ;} +#line 887 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.alias) = makeNode(PGAlias); + (yyval.alias)->aliasname = (yyvsp[-3].str); + (yyval.alias)->colnames = (yyvsp[-1].list); + } +#line 17674 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 491: -#line 414 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2((yyvsp[(1) - (1)].node), NULL); ;} +#line 893 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.alias) = makeNode(PGAlias); + (yyval.alias)->aliasname = (yyvsp[0].str); + } +#line 17683 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 492: -#line 418 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 899 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.alias) = (yyvsp[0].alias); } +#line 17689 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 493: -#line 419 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2(NULL,NULL); ;} +#line 900 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.alias) = NULL; } +#line 17695 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 494: -#line 424 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 909 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make2((yyvsp[0].alias), NIL); + } +#line 17703 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 495: -#line 426 "third_party/libpg_query/grammar/statements/select.y" - { - /* Disabled because it was too confusing, bjm 2002-02-18 */ - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("LIMIT #,# syntax is not supported"), - errhint("Use separate LIMIT and OFFSET clauses."), - parser_errposition((yylsp[(1) - (4)])))); - ;} +#line 913 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make2(NULL, (yyvsp[-1].list)); + } +#line 17711 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 496: -#line 442 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(3) - (5)].node); ;} +#line 917 "third_party/libpg_query/grammar/statements/select.y" + { + PGAlias *a = makeNode(PGAlias); + a->aliasname = (yyvsp[-3].str); + (yyval.list) = list_make2(a, (yyvsp[-1].list)); + } +#line 17721 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 497: -#line 444 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeIntConst(1, -1); ;} +#line 923 "third_party/libpg_query/grammar/statements/select.y" + { + PGAlias *a = makeNode(PGAlias); + a->aliasname = (yyvsp[-3].str); + (yyval.list) = list_make2(a, (yyvsp[-1].list)); + } +#line 17731 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 498: -#line 449 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 929 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make2(NULL, NIL); + } +#line 17739 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 499: -#line 452 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (3)].node); ;} +#line 934 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.jtype) = PG_JOIN_FULL; } +#line 17745 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 500: -#line 460 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeFloat((yyvsp[(1) - (2)].str)), true); - ;} +#line 935 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.jtype) = PG_JOIN_LEFT; } +#line 17751 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 501: -#line 464 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeInteger((yyvsp[(1) - (2)].ival)), true); - ;} + case 501: +#line 936 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.jtype) = PG_JOIN_RIGHT; } +#line 17757 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 502: -#line 468 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeFloat((yyvsp[(1) - (2)].str)), true); - ;} +#line 937 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.jtype) = PG_JOIN_INNER; } +#line 17763 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 503: -#line 472 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeInteger((yyvsp[(1) - (2)].ival)), true); - ;} +#line 941 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17769 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 504: -#line 476 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeInteger((yyvsp[(1) - (1)].ival)), false); - ;} +#line 942 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17775 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 505: -#line 480 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeInteger((yyvsp[(1) - (2)].ival)), false); - ;} +#line 954 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) (yyvsp[-1].list); } +#line 17781 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 506: -#line 487 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (yyvsp[(3) - (3)].node); - ;} +#line 955 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17787 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 507: -#line 491 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 961 "third_party/libpg_query/grammar/statements/select.y" + { + /* inheritance query, implicitly */ + (yyval.range) = (yyvsp[0].range); + (yyval.range)->inh = true; + (yyval.range)->alias = NULL; + } +#line 17798 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 508: -#line 498 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 968 "third_party/libpg_query/grammar/statements/select.y" + { + /* inheritance query, explicitly */ + (yyval.range) = (yyvsp[-1].range); + (yyval.range)->inh = true; + (yyval.range)->alias = NULL; + } +#line 17809 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 509: -#line 499 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = NULL; ;} +#line 975 "third_party/libpg_query/grammar/statements/select.y" + { + /* no inheritance */ + (yyval.range) = (yyvsp[0].range); + (yyval.range)->inh = false; + (yyval.range)->alias = NULL; + } +#line 17820 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 510: -#line 504 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleOptions((yyvsp[(3) - (5)].node), (yyvsp[(1) - (5)].str), (yyvsp[(5) - (5)].ival), (yylsp[(1) - (5)])); - ;} +#line 982 "third_party/libpg_query/grammar/statements/select.y" + { + /* no inheritance, SQL99-style syntax */ + (yyval.range) = (yyvsp[-1].range); + (yyval.range)->inh = false; + (yyval.range)->alias = NULL; + } +#line 17831 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 511: -#line 508 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleOptions((yyvsp[(1) - (1)].node), NULL, -1, (yylsp[(1) - (1)])); - ;} +#line 1014 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeFunction *n = makeNode(PGRangeFunction); + n->lateral = false; + n->ordinality = (yyvsp[0].boolean); + n->is_rowsfrom = false; + n->functions = list_make1(list_make2((yyvsp[-1].node), NIL)); + n->sample = NULL; + /* alias and coldeflist are set by table_ref production */ + (yyval.node) = (PGNode *) n; + } +#line 17846 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 512: -#line 512 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleOptions((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].str), -1, (yylsp[(1) - (4)])); - ;} +#line 1025 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeFunction *n = makeNode(PGRangeFunction); + n->lateral = false; + n->ordinality = (yyvsp[0].boolean); + n->is_rowsfrom = true; + n->functions = (yyvsp[-2].list); + n->sample = NULL; + /* alias and coldeflist are set by table_ref production */ + (yyval.node) = (PGNode *) n; + } +#line 17861 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 513: -#line 516 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleOptions((yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].str), (yyvsp[(5) - (6)].ival), (yylsp[(1) - (6)])); - ;} +#line 1038 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].list)); } +#line 17867 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 514: -#line 523 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (yyvsp[(2) - (2)].node); - ;} +#line 1042 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].list)); } +#line 17873 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 515: -#line 529 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 1043 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } +#line 17879 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 516: -#line 530 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 1046 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 17885 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 517: -#line 535 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = (yyvsp[(3) - (4)].ival); ;} +#line 1047 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 17891 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 518: -#line 536 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = -1; ;} +#line 1050 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = true; } +#line 17897 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 519: -#line 540 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 1051 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 17903 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 520: -#line 542 "third_party/libpg_query/grammar/statements/select.y" - { - /* LIMIT ALL is represented as a NULL constant */ - (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); - ;} +#line 1056 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17909 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 521: -#line 549 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 1057 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17915 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 522: -#line 569 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 1063 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1((yyvsp[0].node)); + } +#line 17923 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 523: -#line 571 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 1067 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + } +#line 17931 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 524: -#line 573 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 1073 "third_party/libpg_query/grammar/statements/select.y" + { + PGColumnDef *n = makeNode(PGColumnDef); + n->colname = (yyvsp[-2].str); + n->typeName = (yyvsp[-1].typnam); + n->inhcount = 0; + n->is_local = true; + n->is_not_null = false; + n->is_from_type = false; + n->storage = 0; + n->raw_default = NULL; + n->cooked_default = NULL; + n->collClause = (PGCollateClause *) (yyvsp[0].node); + n->collOid = InvalidOid; + n->constraints = NIL; + n->location = (yylsp[-2]); + (yyval.node) = (PGNode *)n; + } +#line 17953 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 525: -#line 577 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival),(yylsp[(1) - (1)])); ;} +#line 1094 "third_party/libpg_query/grammar/statements/select.y" + { + PGCollateClause *n = makeNode(PGCollateClause); + n->arg = NULL; + n->collname = (yyvsp[0].list); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *) n; + } +#line 17965 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 526: -#line 578 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str),(yylsp[(1) - (1)])); ;} +#line 1101 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17971 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 527: -#line 582 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = 0; ;} +#line 1114 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(list_make2(makeString((yyvsp[-1].str)), (yyvsp[0].typnam))); + } +#line 17979 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 528: -#line 583 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = 0; ;} - break; - - case 529: -#line 586 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = 0; ;} - break; - - case 530: -#line 587 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = 0; ;} +#line 1117 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = lappend((yyvsp[-3].list), list_make2(makeString((yyvsp[-1].str)), (yyvsp[0].typnam))); + } +#line 17987 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 531: -#line 612 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (3)].list); ;} +#line 1124 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->arrayBounds = (yyvsp[0].list); + } +#line 17996 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 532: -#line 613 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 1129 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->arrayBounds = (yyvsp[0].list); + (yyval.typnam)->setof = true; + } +#line 18006 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 533: -#line 617 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 1136 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-4].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[-1].ival))); + } +#line 18015 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 534: -#line 618 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].node)); ;} +#line 1141 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-4].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[-1].ival))); + (yyval.typnam)->setof = true; + } +#line 18025 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 535: -#line 622 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 1147 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); + } +#line 18034 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 536: -#line 623 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 1152 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); + (yyval.typnam)->setof = true; + } +#line 18044 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 537: -#line 628 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[(1) - (2)])); - ;} +#line 1157 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("struct"); + (yyval.typnam)->arrayBounds = (yyvsp[0].list); + (yyval.typnam)->typmods = (yyvsp[-2].list); + (yyval.typnam)->location = (yylsp[-4]); + } +#line 18055 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 538: -#line 640 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 1163 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("map"); + (yyval.typnam)->arrayBounds = (yyvsp[0].list); + (yyval.typnam)->typmods = (yyvsp[-2].list); + (yyval.typnam)->location = (yylsp[-4]); + } +#line 18066 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 539: -#line 641 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 1173 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), makeInteger(-1)); } +#line 18072 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 540: -#line 645 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 1175 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-3].list), makeInteger((yyvsp[-1].ival))); } +#line 18078 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 541: -#line 646 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 1177 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 18084 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 542: -#line 650 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 1181 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18090 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 543: -#line 651 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 1182 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18096 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 544: -#line 655 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 1183 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18102 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 545: -#line 656 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} +#line 1184 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18108 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 546: -#line 661 "third_party/libpg_query/grammar/statements/select.y" - { - PGLockingClause *n = makeNode(PGLockingClause); - n->lockedRels = (yyvsp[(2) - (3)].list); - n->strength = (yyvsp[(1) - (3)].lockstrength); - n->waitPolicy = (yyvsp[(3) - (3)].lockwaitpolicy); - (yyval.node) = (PGNode *) n; - ;} +#line 1185 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18114 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 547: -#line 671 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockstrength) = LCS_FORUPDATE; ;} +#line 1187 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->typmods = (yyvsp[0].list); + } +#line 18123 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 548: -#line 672 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockstrength) = PG_LCS_FORNOKEYUPDATE; ;} +#line 1192 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-3].typnam); + (yyval.typnam)->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + } +#line 18133 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 549: -#line 673 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockstrength) = PG_LCS_FORSHARE; ;} +#line 1211 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18139 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 550: -#line 674 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockstrength) = PG_LCS_FORKEYSHARE; ;} +#line 1212 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18145 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 551: -#line 678 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 1213 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18151 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 552: -#line 679 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 1214 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18157 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 553: -#line 684 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockwaitpolicy) = LockWaitError; ;} +#line 1226 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = makeTypeName((yyvsp[-1].str)); + (yyval.typnam)->typmods = (yyvsp[0].list); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18167 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 554: -#line 685 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockwaitpolicy) = PGLockWaitSkip; ;} +#line 1239 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 18173 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 555: -#line 686 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockwaitpolicy) = PGLockWaitBlock; ;} +#line 1240 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 18179 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 556: -#line 696 "third_party/libpg_query/grammar/statements/select.y" - { - PGSelectStmt *n = makeNode(PGSelectStmt); - n->valuesLists = list_make1((yyvsp[(3) - (4)].list)); - (yyval.node) = (PGNode *) n; - ;} +#line 1247 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("int4"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18188 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 557: -#line 702 "third_party/libpg_query/grammar/statements/select.y" - { - PGSelectStmt *n = (PGSelectStmt *) (yyvsp[(1) - (5)].node); - n->valuesLists = lappend(n->valuesLists, (yyvsp[(4) - (5)].list)); - (yyval.node) = (PGNode *) n; - ;} +#line 1252 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("int4"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18197 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 558: -#line 719 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 1257 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("int2"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18206 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 559: -#line 720 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 1262 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("int8"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18215 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 560: -#line 724 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 1267 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("float4"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18224 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 561: -#line 725 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} +#line 1272 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18233 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 562: -#line 732 "third_party/libpg_query/grammar/statements/select.y" - { - (yyvsp[(1) - (3)].range)->alias = (yyvsp[(2) - (3)].alias); - (yyvsp[(1) - (3)].range)->sample = (yyvsp[(3) - (3)].node); - (yyval.node) = (PGNode *) (yyvsp[(1) - (3)].range); - ;} +#line 1277 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("float8"); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18242 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 563: -#line 738 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeFunction *n = (PGRangeFunction *) (yyvsp[(1) - (3)].node); - n->alias = (PGAlias*) linitial((yyvsp[(2) - (3)].list)); - n->coldeflist = (PGList*) lsecond((yyvsp[(2) - (3)].list)); - n->sample = (yyvsp[(3) - (3)].node); - (yyval.node) = (PGNode *) n; - ;} +#line 1282 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("numeric"); + (yyval.typnam)->typmods = (yyvsp[0].list); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18252 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 564: -#line 746 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeFunction *n = (PGRangeFunction *) (yyvsp[(2) - (3)].node); - n->lateral = true; - n->alias = (PGAlias*) linitial((yyvsp[(3) - (3)].list)); - n->coldeflist = (PGList*) lsecond((yyvsp[(3) - (3)].list)); - (yyval.node) = (PGNode *) n; - ;} +#line 1288 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("numeric"); + (yyval.typnam)->typmods = (yyvsp[0].list); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18262 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 565: -#line 754 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeSubselect *n = makeNode(PGRangeSubselect); - n->lateral = false; - n->subquery = (yyvsp[(1) - (3)].node); - n->alias = (yyvsp[(2) - (3)].alias); - n->sample = (yyvsp[(3) - (3)].node); - /* - * The SQL spec does not permit a subselect - * () without an alias clause, - * so we don't either. This avoids the problem - * of needing to invent a unique refname for it. - * That could be surmounted if there's sufficient - * popular demand, but for now let's just implement - * the spec and see if anyone complains. - * However, it does seem like a good idea to emit - * an error message that's better than "syntax error". - */ - if ((yyvsp[(2) - (3)].alias) == NULL) - { - if (IsA((yyvsp[(1) - (3)].node), PGSelectStmt) && - ((PGSelectStmt *) (yyvsp[(1) - (3)].node))->valuesLists) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("VALUES in FROM must have an alias"), - errhint("For example, FROM (VALUES ...) [AS] foo."), - parser_errposition((yylsp[(1) - (3)])))); - else - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("subquery in FROM must have an alias"), - errhint("For example, FROM (SELECT ...) [AS] foo."), - parser_errposition((yylsp[(1) - (3)])))); - } - (yyval.node) = (PGNode *) n; - ;} +#line 1294 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("numeric"); + (yyval.typnam)->typmods = (yyvsp[0].list); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18272 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 566: -#line 790 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeSubselect *n = makeNode(PGRangeSubselect); - n->lateral = true; - n->subquery = (yyvsp[(2) - (3)].node); - n->alias = (yyvsp[(3) - (3)].alias); - n->sample = NULL; - /* same comment as above */ - if ((yyvsp[(3) - (3)].alias) == NULL) - { - if (IsA((yyvsp[(2) - (3)].node), PGSelectStmt) && - ((PGSelectStmt *) (yyvsp[(2) - (3)].node))->valuesLists) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("VALUES in FROM must have an alias"), - errhint("For example, FROM (VALUES ...) [AS] foo."), - parser_errposition((yylsp[(2) - (3)])))); - else - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("subquery in FROM must have an alias"), - errhint("For example, FROM (SELECT ...) [AS] foo."), - parser_errposition((yylsp[(2) - (3)])))); - } - (yyval.node) = (PGNode *) n; - ;} +#line 1300 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("bool"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18281 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 567: -#line 816 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].jexpr); - ;} +#line 1307 "third_party/libpg_query/grammar/statements/select.y" + { + /* + * Check FLOAT() precision limits assuming IEEE floating + * types - thomas 1997-09-18 + */ + if ((yyvsp[-1].ival) < 1) + ereport(ERROR, + (errcode(PG_ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("precision for type float must be at least 1 bit"), + parser_errposition((yylsp[-1])))); + else if ((yyvsp[-1].ival) <= 24) + (yyval.typnam) = SystemTypeName("float4"); + else if ((yyvsp[-1].ival) <= 53) + (yyval.typnam) = SystemTypeName("float8"); + else + ereport(ERROR, + (errcode(PG_ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("precision for type float must be less than 54 bits"), + parser_errposition((yylsp[-1])))); + } +#line 18306 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 568: -#line 820 "third_party/libpg_query/grammar/statements/select.y" - { - (yyvsp[(2) - (4)].jexpr)->alias = (yyvsp[(4) - (4)].alias); - (yyval.node) = (PGNode *) (yyvsp[(2) - (4)].jexpr); - ;} +#line 1328 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("float4"); + } +#line 18314 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 569: -#line 846 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.jexpr) = (yyvsp[(2) - (3)].jexpr); - ;} +#line 1338 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 18322 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 570: -#line 850 "third_party/libpg_query/grammar/statements/select.y" - { - /* CROSS JOIN is same as unqualified inner join */ - PGJoinExpr *n = makeNode(PGJoinExpr); - n->jointype = PG_JOIN_INNER; - n->isNatural = false; - n->larg = (yyvsp[(1) - (4)].node); - n->rarg = (yyvsp[(4) - (4)].node); - n->usingClause = NIL; - n->quals = NULL; - n->location = (yylsp[(2) - (4)]); - (yyval.jexpr) = n; - ;} +#line 1342 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 18330 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 571: -#line 863 "third_party/libpg_query/grammar/statements/select.y" - { - PGJoinExpr *n = makeNode(PGJoinExpr); - n->jointype = (yyvsp[(2) - (5)].jtype); - n->isNatural = false; - n->larg = (yyvsp[(1) - (5)].node); - n->rarg = (yyvsp[(4) - (5)].node); - if ((yyvsp[(5) - (5)].node) != NULL && IsA((yyvsp[(5) - (5)].node), PGList)) - n->usingClause = (PGList *) (yyvsp[(5) - (5)].node); /* USING clause */ - else - n->quals = (yyvsp[(5) - (5)].node); /* ON clause */ - n->location = (yylsp[(2) - (5)]); - (yyval.jexpr) = n; - ;} +#line 1350 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 18338 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 572: -#line 877 "third_party/libpg_query/grammar/statements/select.y" - { - /* letting join_type reduce to empty doesn't work */ - PGJoinExpr *n = makeNode(PGJoinExpr); - n->jointype = PG_JOIN_INNER; - n->isNatural = false; - n->larg = (yyvsp[(1) - (4)].node); - n->rarg = (yyvsp[(3) - (4)].node); - if ((yyvsp[(4) - (4)].node) != NULL && IsA((yyvsp[(4) - (4)].node), PGList)) - n->usingClause = (PGList *) (yyvsp[(4) - (4)].node); /* USING clause */ - else - n->quals = (yyvsp[(4) - (4)].node); /* ON clause */ - n->location = (yylsp[(2) - (4)]); - (yyval.jexpr) = n; - ;} +#line 1354 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam)->typmods = NIL; + } +#line 18347 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 573: -#line 892 "third_party/libpg_query/grammar/statements/select.y" - { - PGJoinExpr *n = makeNode(PGJoinExpr); - n->jointype = (yyvsp[(3) - (5)].jtype); - n->isNatural = true; - n->larg = (yyvsp[(1) - (5)].node); - n->rarg = (yyvsp[(5) - (5)].node); - n->usingClause = NIL; /* figure out which columns later... */ - n->quals = NULL; /* fill later */ - n->location = (yylsp[(2) - (5)]); - (yyval.jexpr) = n; - ;} +#line 1362 "third_party/libpg_query/grammar/statements/select.y" + { + const char *typname; + + typname = (yyvsp[-3].boolean) ? "varbit" : "bit"; + (yyval.typnam) = SystemTypeName(typname); + (yyval.typnam)->typmods = (yyvsp[-1].list); + (yyval.typnam)->location = (yylsp[-4]); + } +#line 18360 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 574: -#line 904 "third_party/libpg_query/grammar/statements/select.y" - { - /* letting join_type reduce to empty doesn't work */ - PGJoinExpr *n = makeNode(PGJoinExpr); - n->jointype = PG_JOIN_INNER; - n->isNatural = true; - n->larg = (yyvsp[(1) - (4)].node); - n->rarg = (yyvsp[(4) - (4)].node); - n->usingClause = NIL; /* figure out which columns later... */ - n->quals = NULL; /* fill later */ - n->location = (yylsp[(2) - (4)]); - (yyval.jexpr) = n; - ;} +#line 1374 "third_party/libpg_query/grammar/statements/select.y" + { + /* bit defaults to bit(1), varbit to no limit */ + if ((yyvsp[0].boolean)) + { + (yyval.typnam) = SystemTypeName("varbit"); + } + else + { + (yyval.typnam) = SystemTypeName("bit"); + (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); + } + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18378 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 575: -#line 920 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.alias) = makeNode(PGAlias); - (yyval.alias)->aliasname = (yyvsp[(2) - (5)].str); - (yyval.alias)->colnames = (yyvsp[(4) - (5)].list); - ;} +#line 1395 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 18386 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 576: -#line 926 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.alias) = makeNode(PGAlias); - (yyval.alias)->aliasname = (yyvsp[(2) - (2)].str); - ;} +#line 1399 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 18394 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 577: -#line 931 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.alias) = makeNode(PGAlias); - (yyval.alias)->aliasname = (yyvsp[(1) - (4)].str); - (yyval.alias)->colnames = (yyvsp[(3) - (4)].list); - ;} +#line 1405 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 18402 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 578: -#line 937 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.alias) = makeNode(PGAlias); - (yyval.alias)->aliasname = (yyvsp[(1) - (1)].str); - ;} +#line 1409 "third_party/libpg_query/grammar/statements/select.y" + { + /* Length was not specified so allow to be unrestricted. + * This handles problems with fixed-length (bpchar) strings + * which in column definitions must default to a length + * of one, but should not be constrained if the length + * was not specified. + */ + (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam)->typmods = NIL; + } +#line 18417 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 579: -#line 943 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.alias) = (yyvsp[(1) - (1)].alias); ;} +#line 1422 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName((yyvsp[-3].conststr)); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + (yyval.typnam)->location = (yylsp[-3]); + } +#line 18427 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 580: -#line 944 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.alias) = NULL; ;} +#line 1430 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName((yyvsp[0].conststr)); + /* char defaults to char(1), varchar to no limit */ + if (strcmp((yyvsp[0].conststr), "bpchar") == 0) + (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18439 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 581: -#line 953 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make2((yyvsp[(1) - (1)].alias), NIL); - ;} +#line 1440 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } +#line 18445 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 582: -#line 957 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make2(NULL, (yyvsp[(3) - (4)].list)); - ;} +#line 1442 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } +#line 18451 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 583: -#line 961 "third_party/libpg_query/grammar/statements/select.y" - { - PGAlias *a = makeNode(PGAlias); - a->aliasname = (yyvsp[(2) - (5)].str); - (yyval.list) = list_make2(a, (yyvsp[(4) - (5)].list)); - ;} +#line 1444 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "varchar"; } +#line 18457 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 584: -#line 967 "third_party/libpg_query/grammar/statements/select.y" - { - PGAlias *a = makeNode(PGAlias); - a->aliasname = (yyvsp[(1) - (4)].str); - (yyval.list) = list_make2(a, (yyvsp[(3) - (4)].list)); - ;} +#line 1446 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } +#line 18463 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 585: -#line 973 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make2(NULL, NIL); - ;} +#line 1448 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } +#line 18469 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 586: -#line 978 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.jtype) = PG_JOIN_FULL; ;} +#line 1450 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } +#line 18475 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 587: -#line 979 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.jtype) = PG_JOIN_LEFT; ;} +#line 1454 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = true; } +#line 18481 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 588: -#line 980 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.jtype) = PG_JOIN_RIGHT; ;} +#line 1455 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 18487 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 589: -#line 981 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.jtype) = PG_JOIN_INNER; ;} +#line 1463 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].boolean)) + (yyval.typnam) = SystemTypeName("timestamptz"); + else + (yyval.typnam) = SystemTypeName("timestamp"); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); + (yyval.typnam)->location = (yylsp[-4]); + } +#line 18500 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 590: -#line 985 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 1472 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].boolean)) + (yyval.typnam) = SystemTypeName("timestamptz"); + else + (yyval.typnam) = SystemTypeName("timestamp"); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18512 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 591: -#line 986 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 1480 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].boolean)) + (yyval.typnam) = SystemTypeName("timetz"); + else + (yyval.typnam) = SystemTypeName("time"); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); + (yyval.typnam)->location = (yylsp[-4]); + } +#line 18525 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 592: -#line 998 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) (yyvsp[(3) - (4)].list); ;} +#line 1489 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].boolean)) + (yyval.typnam) = SystemTypeName("timetz"); + else + (yyval.typnam) = SystemTypeName("time"); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18537 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 593: -#line 999 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 1500 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("interval"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18546 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 594: -#line 1005 "third_party/libpg_query/grammar/statements/select.y" - { - /* inheritance query, implicitly */ - (yyval.range) = (yyvsp[(1) - (1)].range); - (yyval.range)->inh = true; - (yyval.range)->alias = NULL; - ;} +#line 1507 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = true; } +#line 18552 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 595: -#line 1012 "third_party/libpg_query/grammar/statements/select.y" - { - /* inheritance query, explicitly */ - (yyval.range) = (yyvsp[(1) - (2)].range); - (yyval.range)->inh = true; - (yyval.range)->alias = NULL; - ;} +#line 1508 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 18558 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 596: -#line 1019 "third_party/libpg_query/grammar/statements/select.y" - { - /* no inheritance */ - (yyval.range) = (yyvsp[(2) - (2)].range); - (yyval.range)->inh = false; - (yyval.range)->alias = NULL; - ;} - break; - - case 597: -#line 1026 "third_party/libpg_query/grammar/statements/select.y" - { - /* no inheritance, SQL99-style syntax */ - (yyval.range) = (yyvsp[(3) - (4)].range); - (yyval.range)->inh = false; - (yyval.range)->alias = NULL; - ;} - break; - - case 598: -#line 1058 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeFunction *n = makeNode(PGRangeFunction); - n->lateral = false; - n->ordinality = (yyvsp[(2) - (2)].boolean); - n->is_rowsfrom = false; - n->functions = list_make1(list_make2((yyvsp[(1) - (2)].node), NIL)); - n->sample = NULL; - /* alias and coldeflist are set by table_ref production */ - (yyval.node) = (PGNode *) n; - ;} - break; - - case 599: -#line 1069 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeFunction *n = makeNode(PGRangeFunction); - n->lateral = false; - n->ordinality = (yyvsp[(6) - (6)].boolean); - n->is_rowsfrom = true; - n->functions = (yyvsp[(4) - (6)].list); - n->sample = NULL; - /* alias and coldeflist are set by table_ref production */ - (yyval.node) = (PGNode *) n; - ;} - break; - - case 600: -#line 1082 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list)); ;} - break; - - case 601: -#line 1086 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} - break; - - case 602: -#line 1087 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} +#line 1509 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 18564 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 603: -#line 1090 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} - break; - - case 604: -#line 1091 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} - break; - - case 605: -#line 1094 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = true; ;} - break; - - case 606: -#line 1095 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} - break; - - case 607: -#line 1100 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} - break; - - case 608: -#line 1101 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} - break; - - case 609: -#line 1107 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); - ;} - break; - - case 610: -#line 1111 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); - ;} - break; - - case 611: -#line 1117 "third_party/libpg_query/grammar/statements/select.y" - { - PGColumnDef *n = makeNode(PGColumnDef); - n->colname = (yyvsp[(1) - (3)].str); - n->typeName = (yyvsp[(2) - (3)].typnam); - n->inhcount = 0; - n->is_local = true; - n->is_not_null = false; - n->is_from_type = false; - n->storage = 0; - n->raw_default = NULL; - n->cooked_default = NULL; - n->collClause = (PGCollateClause *) (yyvsp[(3) - (3)].node); - n->collOid = InvalidOid; - n->constraints = NIL; - n->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *)n; - ;} + case 613: +#line 1538 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[0]))); } +#line 18570 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 612: -#line 1138 "third_party/libpg_query/grammar/statements/select.y" - { - PGCollateClause *n = makeNode(PGCollateClause); - n->arg = NULL; - n->collname = (yyvsp[(2) - (2)].list); - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *) n; - ;} + case 614: +#line 1540 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[0]))); } +#line 18576 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 613: -#line 1145 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} + case 615: +#line 1542 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[0]))); } +#line 18582 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 614: -#line 1158 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(list_make2(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].typnam))); - ;} + case 616: +#line 1544 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[0]))); } +#line 18588 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 615: -#line 1161 "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))); - ;} + case 617: +#line 1546 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[0]))); } +#line 18594 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 618: -#line 1168 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (2)].typnam); - (yyval.typnam)->arrayBounds = (yyvsp[(2) - (2)].list); - ;} +#line 1548 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[0]))); } +#line 18600 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 619: -#line 1173 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(2) - (3)].typnam); - (yyval.typnam)->arrayBounds = (yyvsp[(3) - (3)].list); - (yyval.typnam)->setof = true; - ;} +#line 1550 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MILLISECOND), (yylsp[0]))); } +#line 18606 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 620: -#line 1180 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (5)].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(4) - (5)].ival))); - ;} +#line 1552 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MICROSECOND), (yylsp[0]))); } +#line 18612 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 621: -#line 1185 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(2) - (6)].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(5) - (6)].ival))); - (yyval.typnam)->setof = true; - ;} +#line 1554 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | + INTERVAL_MASK(MONTH), (yylsp[-2]))); + } +#line 18621 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 622: -#line 1191 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (2)].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); - ;} +#line 1559 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR), (yylsp[-2]))); + } +#line 18630 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 623: -#line 1196 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(2) - (3)].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); - (yyval.typnam)->setof = true; - ;} +#line 1564 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE), (yylsp[-2]))); + } +#line 18640 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 624: -#line 1201 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("struct"); - (yyval.typnam)->arrayBounds = (yyvsp[(5) - (5)].list); - (yyval.typnam)->typmods = (yyvsp[(3) - (5)].list); - (yyval.typnam)->location = (yylsp[(1) - (5)]); - ;} +#line 1570 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), (yylsp[-2]))); + } +#line 18651 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 625: -#line 1207 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("map"); - (yyval.typnam)->arrayBounds = (yyvsp[(5) - (5)].list); - (yyval.typnam)->typmods = (yyvsp[(3) - (5)].list); - (yyval.typnam)->location = (yylsp[(1) - (5)]); - ;} +#line 1577 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE), (yylsp[-2]))); + } +#line 18660 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 626: -#line 1217 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeInteger(-1)); ;} +#line 1582 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), (yylsp[-2]))); + } +#line 18670 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 627: -#line 1219 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (4)].list), makeInteger((yyvsp[(3) - (4)].ival))); ;} +#line 1588 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), (yylsp[-2]))); + } +#line 18679 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 628: -#line 1221 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 1593 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 18685 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 629: -#line 1225 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 1624 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 18691 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 630: -#line 1226 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 1627 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam), 0, (yylsp[-1])); } +#line 18697 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 631: -#line 1227 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 1629 "third_party/libpg_query/grammar/statements/select.y" + { + PGCollateClause *n = makeNode(PGCollateClause); + n->arg = (yyvsp[-2].node); + n->collname = (yyvsp[0].list); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *) n; + } +#line 18709 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 632: -#line 1228 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 1637 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("timezone"), + list_make2((yyvsp[0].node), (yyvsp[-4].node)), + (yylsp[-3])); + } +#line 18719 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 633: -#line 1229 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 1652 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } +#line 18725 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 634: -#line 1231 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (2)].typnam); - (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); - ;} +#line 1654 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } +#line 18731 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 635: -#line 1236 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (4)].typnam); - (yyval.typnam)->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), - makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); - ;} +#line 1656 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18737 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 636: -#line 1255 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 1658 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "-", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18743 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 637: -#line 1256 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 1660 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "*", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18749 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 638: -#line 1257 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 1662 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "/", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18755 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 639: -#line 1258 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 1664 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "%", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18761 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 640: -#line 1270 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = makeTypeName((yyvsp[(1) - (2)].str)); - (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 1666 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "^", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18767 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 641: -#line 1283 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 1668 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18773 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 642: -#line 1284 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 1670 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18779 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 643: -#line 1291 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("int4"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 1672 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18785 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 644: -#line 1296 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("int4"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 1674 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18791 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 645: -#line 1301 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("int2"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 1676 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18797 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 646: -#line 1306 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("int8"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 1678 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<>", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18803 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 647: -#line 1311 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("float4"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 1681 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[-1].list), (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18809 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 648: -#line 1316 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(2) - (2)].typnam); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 1683 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[-1].list), NULL, (yyvsp[0].node), (yylsp[-1])); } +#line 18815 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 649: -#line 1321 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("float8"); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 1685 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[0].list), (yyvsp[-1].node), NULL, (yylsp[0])); } +#line 18821 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 650: -#line 1326 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 1688 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeAndExpr((yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18827 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 651: -#line 1332 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 1690 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeOrExpr((yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 18833 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 652: -#line 1338 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 1692 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeNotExpr((yyvsp[0].node), (yylsp[-1])); } +#line 18839 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 653: -#line 1344 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("bool"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 1694 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeNotExpr((yyvsp[0].node), (yylsp[-1])); } +#line 18845 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 654: -#line 1351 "third_party/libpg_query/grammar/statements/select.y" - { - /* - * Check FLOAT() precision limits assuming IEEE floating - * types - thomas 1997-09-18 - */ - if ((yyvsp[(2) - (3)].ival) < 1) - ereport(ERROR, - (errcode(PG_ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("precision for type float must be at least 1 bit"), - parser_errposition((yylsp[(2) - (3)])))); - else if ((yyvsp[(2) - (3)].ival) <= 24) - (yyval.typnam) = SystemTypeName("float4"); - else if ((yyvsp[(2) - (3)].ival) <= 53) - (yyval.typnam) = SystemTypeName("float8"); - else - ereport(ERROR, - (errcode(PG_ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("precision for type float must be less than 54 bits"), - parser_errposition((yylsp[(2) - (3)])))); - ;} +#line 1697 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_GLOB, "~~~", + (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + } +#line 18854 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 655: -#line 1372 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("float4"); - ;} +#line 1702 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_LIKE, "~~", + (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + } +#line 18863 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 656: -#line 1382 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 1707 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("like_escape"), + list_make3((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-3])); + (yyval.node) = (PGNode *) n; + } +#line 18874 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 657: -#line 1386 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 1714 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_LIKE, "!~~", + (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + } +#line 18883 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 658: -#line 1394 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 1719 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("not_like_escape"), + list_make3((yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-4])); + (yyval.node) = (PGNode *) n; + } +#line 18894 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 659: -#line 1398 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - (yyval.typnam)->typmods = NIL; - ;} +#line 1726 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "~~*", + (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + } +#line 18903 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 660: -#line 1406 "third_party/libpg_query/grammar/statements/select.y" - { - const char *typname; - - typname = (yyvsp[(2) - (5)].boolean) ? "varbit" : "bit"; - (yyval.typnam) = SystemTypeName(typname); - (yyval.typnam)->typmods = (yyvsp[(4) - (5)].list); - (yyval.typnam)->location = (yylsp[(1) - (5)]); - ;} +#line 1731 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("like_escape"), + list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-3])); + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "~~*", + (yyvsp[-4].node), (PGNode *) n, (yylsp[-3])); + } +#line 18915 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 661: -#line 1418 "third_party/libpg_query/grammar/statements/select.y" - { - /* bit defaults to bit(1), varbit to no limit */ - if ((yyvsp[(2) - (2)].boolean)) - { - (yyval.typnam) = SystemTypeName("varbit"); - } - else - { - (yyval.typnam) = SystemTypeName("bit"); - (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); - } - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 1739 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "!~~*", + (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + } +#line 18924 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 662: -#line 1439 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 1744 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("not_like_escape"), + list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-4])); + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "!~~*", + (yyvsp[-5].node), (PGNode *) n, (yylsp[-4])); + } +#line 18936 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 663: -#line 1443 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 1753 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), + list_make2((yyvsp[0].node), makeNullAConst(-1)), + (yylsp[-2])); + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "~", + (yyvsp[-3].node), (PGNode *) n, (yylsp[-2])); + } +#line 18948 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 664: -#line 1449 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 1761 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), + list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-4])); + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "~", + (yyvsp[-5].node), (PGNode *) n, (yylsp[-4])); + } +#line 18960 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 665: -#line 1453 "third_party/libpg_query/grammar/statements/select.y" - { - /* Length was not specified so allow to be unrestricted. - * This handles problems with fixed-length (bpchar) strings - * which in column definitions must default to a length - * of one, but should not be constrained if the length - * was not specified. - */ - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - (yyval.typnam)->typmods = NIL; - ;} +#line 1769 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), + list_make2((yyvsp[0].node), makeNullAConst(-1)), + (yylsp[-3])); + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "!~", + (yyvsp[-4].node), (PGNode *) n, (yylsp[-3])); + } +#line 18972 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 666: -#line 1466 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName((yyvsp[(1) - (4)].conststr)); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); - (yyval.typnam)->location = (yylsp[(1) - (4)]); - ;} +#line 1777 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), + list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-5])); + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "!~", + (yyvsp[-6].node), (PGNode *) n, (yylsp[-5])); + } +#line 18984 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 667: -#line 1474 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName((yyvsp[(1) - (1)].conststr)); - /* char defaults to char(1), varchar to no limit */ - if (strcmp((yyvsp[(1) - (1)].conststr), "bpchar") == 0) - (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 1795 "third_party/libpg_query/grammar/statements/select.y" + { + PGNullTest *n = makeNode(PGNullTest); + n->arg = (PGExpr *) (yyvsp[-2].node); + n->nulltesttype = PG_IS_NULL; + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 18996 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 668: -#line 1484 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} +#line 1803 "third_party/libpg_query/grammar/statements/select.y" + { + PGNullTest *n = makeNode(PGNullTest); + n->arg = (PGExpr *) (yyvsp[-1].node); + n->nulltesttype = PG_IS_NULL; + n->location = (yylsp[0]); + (yyval.node) = (PGNode *)n; + } +#line 19008 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 669: -#line 1486 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} +#line 1811 "third_party/libpg_query/grammar/statements/select.y" + { + PGNullTest *n = makeNode(PGNullTest); + n->arg = (PGExpr *) (yyvsp[-3].node); + n->nulltesttype = IS_NOT_NULL; + n->location = (yylsp[-2]); + (yyval.node) = (PGNode *)n; + } +#line 19020 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 670: -#line 1488 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "varchar"; ;} +#line 1819 "third_party/libpg_query/grammar/statements/select.y" + { + PGNullTest *n = makeNode(PGNullTest); + n->arg = (PGExpr *) (yyvsp[-2].node); + n->nulltesttype = IS_NOT_NULL; + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 19032 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 671: -#line 1490 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} +#line 1827 "third_party/libpg_query/grammar/statements/select.y" + { + PGNullTest *n = makeNode(PGNullTest); + n->arg = (PGExpr *) (yyvsp[-1].node); + n->nulltesttype = IS_NOT_NULL; + n->location = (yylsp[0]); + (yyval.node) = (PGNode *)n; + } +#line 19044 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 672: -#line 1492 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} +#line 1834 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("row"), (yyvsp[0].list), (yylsp[0])); + (yyval.node) = (PGNode *) n; + } +#line 19053 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 673: -#line 1494 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} +#line 1838 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("struct_pack"), (yyvsp[-1].list), (yylsp[-1])); + (yyval.node) = (PGNode *) n; + } +#line 19062 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 674: -#line 1498 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = true; ;} +#line 1842 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("list_value"), (yyvsp[-1].list), (yylsp[-1])); + (yyval.node) = (PGNode *) n; + } +#line 19071 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 675: -#line 1499 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 1847 "third_party/libpg_query/grammar/statements/select.y" + { + PGLambdaFunction *n = makeNode(PGLambdaFunction); + n->parameters = (yyvsp[-2].list); + n->function = (yyvsp[0].node); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *) n; + } +#line 19083 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 676: -#line 1507 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(5) - (5)].boolean)) - (yyval.typnam) = SystemTypeName("timestamptz"); - else - (yyval.typnam) = SystemTypeName("timestamp"); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); - (yyval.typnam)->location = (yylsp[(1) - (5)]); - ;} +#line 1855 "third_party/libpg_query/grammar/statements/select.y" + { + PGLambdaFunction *n = makeNode(PGLambdaFunction); + n->parameters = list_make1((yyvsp[-2].node)); + n->function = (yyvsp[0].node); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *) n; + } +#line 19095 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 677: -#line 1516 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(2) - (2)].boolean)) - (yyval.typnam) = SystemTypeName("timestamptz"); - else - (yyval.typnam) = SystemTypeName("timestamp"); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 1863 "third_party/libpg_query/grammar/statements/select.y" + { + if (list_length((yyvsp[-2].list)) != 2) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("wrong number of parameters on left side of OVERLAPS expression"), + parser_errposition((yylsp[-2])))); + if (list_length((yyvsp[0].list)) != 2) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("wrong number of parameters on right side of OVERLAPS expression"), + parser_errposition((yylsp[0])))); + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("overlaps"), + list_concat((yyvsp[-2].list), (yyvsp[0].list)), + (yylsp[-1])); + } +#line 19115 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 678: -#line 1524 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(5) - (5)].boolean)) - (yyval.typnam) = SystemTypeName("timetz"); - else - (yyval.typnam) = SystemTypeName("time"); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); - (yyval.typnam)->location = (yylsp[(1) - (5)]); - ;} +#line 1879 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-2].node); + b->booltesttype = PG_IS_TRUE; + b->location = (yylsp[-1]); + (yyval.node) = (PGNode *)b; + } +#line 19127 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 679: -#line 1533 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(2) - (2)].boolean)) - (yyval.typnam) = SystemTypeName("timetz"); - else - (yyval.typnam) = SystemTypeName("time"); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 1887 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-3].node); + b->booltesttype = IS_NOT_TRUE; + b->location = (yylsp[-2]); + (yyval.node) = (PGNode *)b; + } +#line 19139 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 680: -#line 1544 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("interval"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 1895 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-2].node); + b->booltesttype = IS_FALSE; + b->location = (yylsp[-1]); + (yyval.node) = (PGNode *)b; + } +#line 19151 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 681: -#line 1551 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = true; ;} +#line 1903 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-3].node); + b->booltesttype = IS_NOT_FALSE; + b->location = (yylsp[-2]); + (yyval.node) = (PGNode *)b; + } +#line 19163 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 682: -#line 1552 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 1911 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-2].node); + b->booltesttype = IS_UNKNOWN; + b->location = (yylsp[-1]); + (yyval.node) = (PGNode *)b; + } +#line 19175 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 683: -#line 1553 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 1919 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-3].node); + b->booltesttype = IS_NOT_UNKNOWN; + b->location = (yylsp[-2]); + (yyval.node) = (PGNode *)b; + } +#line 19187 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 684: +#line 1927 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_DISTINCT, "=", (yyvsp[-4].node), (yyvsp[0].node), (yylsp[-3])); + } +#line 19195 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 685: +#line 1931 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_DISTINCT, "=", (yyvsp[-5].node), (yyvsp[0].node), (yylsp[-4])); + } +#line 19203 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 686: +#line 1935 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "=", (yyvsp[-5].node), (PGNode *) (yyvsp[-1].list), (yylsp[-4])); + } +#line 19211 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 687: +#line 1939 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "<>", (yyvsp[-6].node), (PGNode *) (yyvsp[-1].list), (yylsp[-5])); + } +#line 19219 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 688: +#line 1943 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_BETWEEN, + "BETWEEN", + (yyvsp[-5].node), + (PGNode *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-4])); + } +#line 19231 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 689: +#line 1951 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_BETWEEN, + "NOT BETWEEN", + (yyvsp[-6].node), + (PGNode *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-5])); + } +#line 19243 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 690: +#line 1959 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_BETWEEN_SYM, + "BETWEEN SYMMETRIC", + (yyvsp[-5].node), + (PGNode *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-4])); + } +#line 19255 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 691: +#line 1967 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_BETWEEN_SYM, + "NOT BETWEEN SYMMETRIC", + (yyvsp[-6].node), + (PGNode *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-5])); + } +#line 19267 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 692: +#line 1975 "third_party/libpg_query/grammar/statements/select.y" + { + /* in_expr returns a PGSubLink or a list of a_exprs */ + if (IsA((yyvsp[0].node), PGSubLink)) + { + /* generate foo = ANY (subquery) */ + PGSubLink *n = (PGSubLink *) (yyvsp[0].node); + n->subLinkType = PG_ANY_SUBLINK; + n->subLinkId = 0; + n->testexpr = (yyvsp[-2].node); + n->operName = NIL; /* show it's IN not = ANY */ + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } + else + { + /* generate scalar IN expression */ + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_IN, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + } + } +#line 19291 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 693: +#line 1995 "third_party/libpg_query/grammar/statements/select.y" + { + /* in_expr returns a PGSubLink or a list of a_exprs */ + if (IsA((yyvsp[0].node), PGSubLink)) + { + /* generate NOT (foo = ANY (subquery)) */ + /* Make an = ANY node */ + PGSubLink *n = (PGSubLink *) (yyvsp[0].node); + n->subLinkType = PG_ANY_SUBLINK; + n->subLinkId = 0; + n->testexpr = (yyvsp[-3].node); + n->operName = NIL; /* show it's IN not = ANY */ + n->location = (yylsp[-2]); + /* Stick a NOT on top; must have same parse location */ + (yyval.node) = makeNotExpr((PGNode *) n, (yylsp[-2])); + } + else + { + /* generate scalar NOT IN expression */ + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_IN, "<>", (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + } + } +#line 19317 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 694: +#line 2017 "third_party/libpg_query/grammar/statements/select.y" + { + PGSubLink *n = makeNode(PGSubLink); + n->subLinkType = (yyvsp[-1].subquerytype); + n->subLinkId = 0; + n->testexpr = (yyvsp[-3].node); + n->operName = (yyvsp[-2].list); + n->subselect = (yyvsp[0].node); + n->location = (yylsp[-2]); + (yyval.node) = (PGNode *)n; + } +#line 19332 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 695: +#line 2028 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[-3].subquerytype) == PG_ANY_SUBLINK) + (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP_ANY, (yyvsp[-4].list), (yyvsp[-5].node), (yyvsp[-1].node), (yylsp[-4])); + else + (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP_ALL, (yyvsp[-4].list), (yyvsp[-5].node), (yyvsp[-1].node), (yylsp[-4])); + } +#line 19343 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 696: +#line 2035 "third_party/libpg_query/grammar/statements/select.y" + { + /* + * The SQL spec only allows DEFAULT in "contextually typed + * expressions", but for us, it's easier to allow it in + * any a_expr and then throw error during parse analysis + * if it's in an inappropriate context. This way also + * lets us say something smarter than "syntax error". + */ + PGSetToDefault *n = makeNode(PGSetToDefault); + /* parse analysis will fill in the rest */ + n->location = (yylsp[0]); + (yyval.node) = (PGNode *)n; + } +#line 19361 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 697: +#line 2048 "third_party/libpg_query/grammar/statements/select.y" + { + PGList *func_name = list_make1(makeString("construct_array")); + PGFuncCall *n = makeFuncCall(func_name, (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (PGNode *) n; + } +#line 19371 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 698: +#line 2065 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 19377 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 699: +#line 2067 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam), 0, (yylsp[-1])); } +#line 19383 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 700: -#line 1582 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[(1) - (1)]))); ;} +#line 2069 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } +#line 19389 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 701: -#line 1584 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[(1) - (1)]))); ;} +#line 2071 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } +#line 19395 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 702: -#line 1586 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[(1) - (1)]))); ;} +#line 2073 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19401 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 703: -#line 1588 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[(1) - (1)]))); ;} +#line 2075 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "-", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19407 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 704: -#line 1590 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[(1) - (1)]))); ;} +#line 2077 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "*", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19413 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 705: -#line 1592 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (1)]))); ;} +#line 2079 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "/", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19419 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 706: -#line 1594 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MILLISECOND), (yylsp[(1) - (1)]))); ;} +#line 2081 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "%", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19425 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 707: -#line 1596 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MICROSECOND), (yylsp[(1) - (1)]))); ;} +#line 2083 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "^", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19431 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 708: -#line 1598 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | - INTERVAL_MASK(MONTH), (yylsp[(1) - (3)]))); - ;} +#line 2085 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19437 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 709: -#line 1603 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | - INTERVAL_MASK(HOUR), (yylsp[(1) - (3)]))); - ;} +#line 2087 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19443 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 710: -#line 1608 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | - INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); - ;} +#line 2089 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19449 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 711: -#line 1614 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | - INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[(1) - (3)]))); - ;} +#line 2091 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19455 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 712: -#line 1621 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); - ;} +#line 2093 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19461 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 713: -#line 1626 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[(1) - (3)]))); - ;} +#line 2095 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<>", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19467 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 714: -#line 1632 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[(1) - (3)]))); - ;} +#line 2097 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[-1].list), (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19473 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 715: -#line 1637 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 2099 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[-1].list), NULL, (yyvsp[0].node), (yylsp[-1])); } +#line 19479 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 716: -#line 1668 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2101 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[0].list), (yyvsp[-1].node), NULL, (yylsp[0])); } +#line 19485 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 717: -#line 1671 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), 0, (yylsp[(2) - (3)])); ;} +#line 2103 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_DISTINCT, "=", (yyvsp[-4].node), (yyvsp[0].node), (yylsp[-3])); + } +#line 19493 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 718: -#line 1673 "third_party/libpg_query/grammar/statements/select.y" - { - PGCollateClause *n = makeNode(PGCollateClause); - n->arg = (yyvsp[(1) - (3)].node); - n->collname = (yyvsp[(3) - (3)].list); - n->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *) n; - ;} +#line 2107 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_DISTINCT, "=", (yyvsp[-5].node), (yyvsp[0].node), (yylsp[-4])); + } +#line 19501 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 719: -#line 1681 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("timezone"), - list_make2((yyvsp[(5) - (5)].node), (yyvsp[(1) - (5)].node)), - (yylsp[(2) - (5)])); - ;} +#line 2111 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "=", (yyvsp[-5].node), (PGNode *) (yyvsp[-1].list), (yylsp[-4])); + } +#line 19509 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 720: -#line 1696 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 2115 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "<>", (yyvsp[-6].node), (PGNode *) (yyvsp[-1].list), (yylsp[-5])); + } +#line 19517 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 721: -#line 1698 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 2128 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 19523 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 722: -#line 1700 "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)])); ;} +#line 2129 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 19529 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 723: -#line 1702 "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)])); ;} +#line 2131 "third_party/libpg_query/grammar/statements/select.y" + { + PGPositionalReference *n = makeNode(PGPositionalReference); + n->position = (yyvsp[0].ival); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *) n; + } +#line 19540 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 724: -#line 1704 "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)])); ;} +#line 2138 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].list)) + { + PGAIndirection *n = makeNode(PGAIndirection); + n->arg = makeParamRef(0, (yylsp[-1])); + n->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.node) = (PGNode *) n; + } + else + (yyval.node) = makeParamRef(0, (yylsp[-1])); + } +#line 19556 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 725: -#line 1706 "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)])); ;} +#line 2150 "third_party/libpg_query/grammar/statements/select.y" + { + PGParamRef *p = makeNode(PGParamRef); + p->number = (yyvsp[-1].ival); + p->location = (yylsp[-1]); + if ((yyvsp[0].list)) + { + PGAIndirection *n = makeNode(PGAIndirection); + n->arg = (PGNode *) p; + n->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.node) = (PGNode *) n; + } + else + (yyval.node) = (PGNode *) p; + } +#line 19575 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 726: -#line 1708 "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)])); ;} +#line 2165 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].list)) + { + PGAIndirection *n = makeNode(PGAIndirection); + n->arg = (yyvsp[-2].node); + n->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.node) = (PGNode *)n; + } + else + (yyval.node) = (yyvsp[-2].node); + } +#line 19591 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 727: -#line 1710 "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)])); ;} +#line 2177 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 19597 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 728: -#line 1712 "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)])); ;} +#line 2179 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].list)) { + PGAIndirection *n = makeNode(PGAIndirection); + n->arg = (yyvsp[-1].node); + n->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.node) = (PGNode *)n; + } + else { + (yyval.node) = (yyvsp[-1].node); + } + } +#line 19613 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 729: -#line 1714 "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)])); ;} +#line 2191 "third_party/libpg_query/grammar/statements/select.y" + { + PGSubLink *n = makeNode(PGSubLink); + n->subLinkType = PG_EXPR_SUBLINK; + n->subLinkId = 0; + n->testexpr = NULL; + n->operName = NIL; + n->subselect = (yyvsp[0].node); + n->location = (yylsp[0]); + (yyval.node) = (PGNode *)n; + } +#line 19628 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 730: -#line 1716 "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)])); ;} +#line 2202 "third_party/libpg_query/grammar/statements/select.y" + { + /* + * Because the select_with_parens nonterminal is designed + * to "eat" as many levels of parens as possible, the + * '(' a_expr ')' opt_indirection production above will + * fail to match a sub-SELECT with indirection decoration; + * the sub-SELECT won't be regarded as an a_expr as long + * as there are parens around it. To support applying + * subscripting or field selection to a sub-SELECT result, + * we need this redundant-looking production. + */ + PGSubLink *n = makeNode(PGSubLink); + PGAIndirection *a = makeNode(PGAIndirection); + n->subLinkType = PG_EXPR_SUBLINK; + n->subLinkId = 0; + n->testexpr = NULL; + n->operName = NIL; + n->subselect = (yyvsp[-1].node); + n->location = (yylsp[-1]); + a->arg = (PGNode *)n; + a->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.node) = (PGNode *)a; + } +#line 19656 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 731: -#line 1718 "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)])); ;} +#line 2226 "third_party/libpg_query/grammar/statements/select.y" + { + PGSubLink *n = makeNode(PGSubLink); + n->subLinkType = PG_EXISTS_SUBLINK; + n->subLinkId = 0; + n->testexpr = NULL; + n->operName = NIL; + n->subselect = (yyvsp[0].node); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 19671 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 732: -#line 1720 "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)])); ;} +#line 2239 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall((yyvsp[-2].list), NIL, (yylsp[-2])); + } +#line 19679 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 733: -#line 1722 "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)])); ;} +#line 2243 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall((yyvsp[-4].list), (yyvsp[-2].list), (yylsp[-4])); + n->agg_order = (yyvsp[-1].list); + (yyval.node) = (PGNode *)n; + } +#line 19689 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 734: -#line 1725 "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)])); ;} +#line 2249 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall((yyvsp[-5].list), list_make1((yyvsp[-2].node)), (yylsp[-5])); + n->func_variadic = true; + n->agg_order = (yyvsp[-1].list); + (yyval.node) = (PGNode *)n; + } +#line 19700 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 735: -#line 1727 "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)])); ;} +#line 2256 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall((yyvsp[-7].list), lappend((yyvsp[-5].list), (yyvsp[-2].node)), (yylsp[-7])); + n->func_variadic = true; + n->agg_order = (yyvsp[-1].list); + (yyval.node) = (PGNode *)n; + } +#line 19711 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 736: -#line 1729 "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)])); ;} +#line 2263 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall((yyvsp[-5].list), (yyvsp[-2].list), (yylsp[-5])); + n->agg_order = (yyvsp[-1].list); + /* Ideally we'd mark the PGFuncCall node to indicate + * "must be an aggregate", but there's no provision + * for that in PGFuncCall at the moment. + */ + (yyval.node) = (PGNode *)n; + } +#line 19725 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 737: -#line 1732 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeAndExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 2273 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall((yyvsp[-5].list), (yyvsp[-2].list), (yylsp[-5])); + n->agg_order = (yyvsp[-1].list); + n->agg_distinct = true; + (yyval.node) = (PGNode *)n; + } +#line 19736 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 738: -#line 1734 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeOrExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 2280 "third_party/libpg_query/grammar/statements/select.y" + { + /* + * We consider AGGREGATE(*) to invoke a parameterless + * aggregate. This does the right thing for COUNT(*), + * and there are no other aggregates in SQL that accept + * '*' as parameter. + * + * The PGFuncCall node is also marked agg_star = true, + * so that later processing can detect what the argument + * really was. + */ + PGFuncCall *n = makeFuncCall((yyvsp[-3].list), NIL, (yylsp[-3])); + n->agg_star = true; + (yyval.node) = (PGNode *)n; + } +#line 19756 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 739: -#line 1736 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 2308 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = (PGFuncCall *) (yyvsp[-3].node); + /* + * The order clause for WITHIN GROUP and the one for + * plain-aggregate ORDER BY share a field, so we have to + * check here that at most one is present. We also check + * for DISTINCT and VARIADIC here to give a better error + * location. Other consistency checks are deferred to + * parse analysis. + */ + if ((yyvsp[-2].list) != NIL) + { + if (n->agg_order != NIL) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("cannot use multiple ORDER BY clauses with WITHIN GROUP"), + parser_errposition((yylsp[-2])))); + if (n->agg_distinct) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("cannot use DISTINCT with WITHIN GROUP"), + parser_errposition((yylsp[-2])))); + if (n->func_variadic) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("cannot use VARIADIC with WITHIN GROUP"), + parser_errposition((yylsp[-2])))); + n->agg_order = (yyvsp[-2].list); + n->agg_within_group = true; + } + n->agg_filter = (yyvsp[-1].node); + n->over = (yyvsp[0].windef); + (yyval.node) = (PGNode *) n; + } +#line 19795 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 740: -#line 1738 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 2343 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 19801 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 741: -#line 1741 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_GLOB, "~~~", - (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); - ;} +#line 2353 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 19807 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 742: -#line 1746 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_LIKE, "~~", - (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); - ;} +#line 2354 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 19813 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 743: -#line 1751 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("like_escape"), - list_make3((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), - (yylsp[(2) - (5)])); - (yyval.node) = (PGNode *) n; - ;} +#line 2362 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("pg_collation_for"), + list_make1((yyvsp[-1].node)), + (yylsp[-4])); + } +#line 19823 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 744: -#line 1758 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_LIKE, "!~~", - (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); - ;} +#line 2368 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_DATE, -1, (yylsp[0])); + } +#line 19831 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 745: -#line 1763 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("not_like_escape"), - list_make3((yyvsp[(1) - (6)].node), (yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), - (yylsp[(2) - (6)])); - (yyval.node) = (PGNode *) n; - ;} +#line 2372 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIME, -1, (yylsp[0])); + } +#line 19839 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 746: -#line 1770 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "~~*", - (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); - ;} +#line 2376 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIME_N, (yyvsp[-1].ival), (yylsp[-3])); + } +#line 19847 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 747: -#line 1775 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("like_escape"), - list_make2((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), - (yylsp[(2) - (5)])); - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "~~*", - (yyvsp[(1) - (5)].node), (PGNode *) n, (yylsp[(2) - (5)])); - ;} +#line 2380 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIMESTAMP, -1, (yylsp[0])); + } +#line 19855 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 748: -#line 1783 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "!~~*", - (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); - ;} +#line 2384 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIMESTAMP_N, (yyvsp[-1].ival), (yylsp[-3])); + } +#line 19863 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 749: -#line 1788 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("not_like_escape"), - list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), - (yylsp[(2) - (6)])); - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "!~~*", - (yyvsp[(1) - (6)].node), (PGNode *) n, (yylsp[(2) - (6)])); - ;} +#line 2388 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIME, -1, (yylsp[0])); + } +#line 19871 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 750: -#line 1797 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[(4) - (4)].node), makeNullAConst(-1)), - (yylsp[(2) - (4)])); - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "~", - (yyvsp[(1) - (4)].node), (PGNode *) n, (yylsp[(2) - (4)])); - ;} +#line 2392 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIME_N, (yyvsp[-1].ival), (yylsp[-3])); + } +#line 19879 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 751: -#line 1805 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), - (yylsp[(2) - (6)])); - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "~", - (yyvsp[(1) - (6)].node), (PGNode *) n, (yylsp[(2) - (6)])); - ;} +#line 2396 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIMESTAMP, -1, (yylsp[0])); + } +#line 19887 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 752: -#line 1813 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[(5) - (5)].node), makeNullAConst(-1)), - (yylsp[(2) - (5)])); - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "!~", - (yyvsp[(1) - (5)].node), (PGNode *) n, (yylsp[(2) - (5)])); - ;} +#line 2400 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIMESTAMP_N, (yyvsp[-1].ival), (yylsp[-3])); + } +#line 19895 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 753: -#line 1821 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), - (yylsp[(2) - (7)])); - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "!~", - (yyvsp[(1) - (7)].node), (PGNode *) n, (yylsp[(2) - (7)])); - ;} +#line 2404 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_ROLE, -1, (yylsp[0])); + } +#line 19903 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 754: -#line 1839 "third_party/libpg_query/grammar/statements/select.y" - { - PGNullTest *n = makeNode(PGNullTest); - n->arg = (PGExpr *) (yyvsp[(1) - (3)].node); - n->nulltesttype = PG_IS_NULL; - n->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)n; - ;} +#line 2408 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_USER, -1, (yylsp[0])); + } +#line 19911 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 755: -#line 1847 "third_party/libpg_query/grammar/statements/select.y" - { - PGNullTest *n = makeNode(PGNullTest); - n->arg = (PGExpr *) (yyvsp[(1) - (2)].node); - n->nulltesttype = PG_IS_NULL; - n->location = (yylsp[(2) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 2412 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_SESSION_USER, -1, (yylsp[0])); + } +#line 19919 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 756: -#line 1855 "third_party/libpg_query/grammar/statements/select.y" - { - PGNullTest *n = makeNode(PGNullTest); - n->arg = (PGExpr *) (yyvsp[(1) - (4)].node); - n->nulltesttype = IS_NOT_NULL; - n->location = (yylsp[(2) - (4)]); - (yyval.node) = (PGNode *)n; - ;} +#line 2416 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_USER, -1, (yylsp[0])); + } +#line 19927 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 757: -#line 1863 "third_party/libpg_query/grammar/statements/select.y" - { - PGNullTest *n = makeNode(PGNullTest); - n->arg = (PGExpr *) (yyvsp[(1) - (3)].node); - n->nulltesttype = IS_NOT_NULL; - n->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)n; - ;} +#line 2420 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_CATALOG, -1, (yylsp[0])); + } +#line 19935 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 758: -#line 1871 "third_party/libpg_query/grammar/statements/select.y" - { - PGNullTest *n = makeNode(PGNullTest); - n->arg = (PGExpr *) (yyvsp[(1) - (2)].node); - n->nulltesttype = IS_NOT_NULL; - n->location = (yylsp[(2) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 2424 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_SCHEMA, -1, (yylsp[0])); + } +#line 19943 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 759: -#line 1878 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("row"), (yyvsp[(1) - (1)].list), (yylsp[(1) - (1)])); - (yyval.node) = (PGNode *) n; - ;} +#line 2428 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeTypeCast((yyvsp[-3].node), (yyvsp[-1].typnam), 0, (yylsp[-5])); } +#line 19949 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 760: -#line 1882 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("struct_pack"), (yyvsp[(2) - (3)].list), (yylsp[(2) - (3)])); - (yyval.node) = (PGNode *) n; - ;} +#line 2430 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeTypeCast((yyvsp[-3].node), (yyvsp[-1].typnam), 1, (yylsp[-5])); } +#line 19955 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 761: -#line 1886 "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; - ;} +#line 2432 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("date_part"), (yyvsp[-1].list), (yylsp[-3])); + } +#line 19963 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 762: -#line 1891 "third_party/libpg_query/grammar/statements/select.y" - { - PGLambdaFunction *n = makeNode(PGLambdaFunction); - n->parameters = (yyvsp[(1) - (3)].list); - n->function = (yyvsp[(3) - (3)].node); - n->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *) n; - ;} +#line 2436 "third_party/libpg_query/grammar/statements/select.y" + { + /* overlay(A PLACING B FROM C FOR D) is converted to + * overlay(A, B, C, D) + * overlay(A PLACING B FROM C) is converted to + * overlay(A, B, C) + */ + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("overlay"), (yyvsp[-1].list), (yylsp[-3])); + } +#line 19976 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 763: -#line 1899 "third_party/libpg_query/grammar/statements/select.y" - { - PGLambdaFunction *n = makeNode(PGLambdaFunction); - n->parameters = list_make1((yyvsp[(1) - (3)].node)); - n->function = (yyvsp[(3) - (3)].node); - n->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *) n; - ;} +#line 2445 "third_party/libpg_query/grammar/statements/select.y" + { + /* position(A in B) is converted to position(B, A) */ + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("position"), (yyvsp[-1].list), (yylsp[-3])); + } +#line 19985 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 764: -#line 1907 "third_party/libpg_query/grammar/statements/select.y" - { - if (list_length((yyvsp[(1) - (3)].list)) != 2) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("wrong number of parameters on left side of OVERLAPS expression"), - parser_errposition((yylsp[(1) - (3)])))); - if (list_length((yyvsp[(3) - (3)].list)) != 2) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("wrong number of parameters on right side of OVERLAPS expression"), - parser_errposition((yylsp[(3) - (3)])))); - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("overlaps"), - list_concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)), - (yylsp[(2) - (3)])); - ;} +#line 2450 "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 + */ + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("substring"), (yyvsp[-1].list), (yylsp[-3])); + } +#line 19996 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 765: -#line 1923 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (3)].node); - b->booltesttype = PG_IS_TRUE; - b->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)b; - ;} +#line 2457 "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. + * In SQL99, this is intended for use with structured UDTs, + * but let's make this a generally useful form allowing stronger + * coercions than are handled by implicit casting. + * + * Convert SystemTypeName() to SystemFuncName() even though + * at the moment they result in the same thing. + */ + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName(((PGValue *)llast((yyvsp[-1].typnam)->names))->val.str), + list_make1((yyvsp[-3].node)), + (yylsp[-5])); + } +#line 20015 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 766: -#line 1931 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (4)].node); - b->booltesttype = IS_NOT_TRUE; - b->location = (yylsp[(2) - (4)]); - (yyval.node) = (PGNode *)b; - ;} +#line 2472 "third_party/libpg_query/grammar/statements/select.y" + { + /* various trim expressions are defined in SQL + * - thomas 1997-07-19 + */ + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("trim"), (yyvsp[-1].list), (yylsp[-4])); + } +#line 20026 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 767: -#line 1939 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (3)].node); - b->booltesttype = IS_FALSE; - b->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)b; - ;} +#line 2479 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[-1].list), (yylsp[-4])); + } +#line 20034 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 768: -#line 1947 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (4)].node); - b->booltesttype = IS_NOT_FALSE; - b->location = (yylsp[(2) - (4)]); - (yyval.node) = (PGNode *)b; - ;} +#line 2483 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[-1].list), (yylsp[-4])); + } +#line 20042 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 769: -#line 1955 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (3)].node); - b->booltesttype = IS_UNKNOWN; - b->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)b; - ;} +#line 2487 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("trim"), (yyvsp[-1].list), (yylsp[-3])); + } +#line 20050 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 770: -#line 1963 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (4)].node); - b->booltesttype = IS_NOT_UNKNOWN; - b->location = (yylsp[(2) - (4)]); - (yyval.node) = (PGNode *)b; - ;} +#line 2491 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NULLIF, "=", (yyvsp[-3].node), (yyvsp[-1].node), (yylsp[-5])); + } +#line 20058 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 771: -#line 1971 "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)])); - ;} +#line 2495 "third_party/libpg_query/grammar/statements/select.y" + { + PGCoalesceExpr *c = makeNode(PGCoalesceExpr); + c->args = (yyvsp[-1].list); + c->location = (yylsp[-3]); + (yyval.node) = (PGNode *)c; + } +#line 20069 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 772: -#line 1975 "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)])); - ;} +#line 2508 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 20075 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 773: -#line 1979 "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)])); - ;} +#line 2509 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 20081 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 774: -#line 1983 "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)])); - ;} +#line 2513 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-1].node); } +#line 20087 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 775: -#line 1987 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_BETWEEN, - "BETWEEN", - (yyvsp[(1) - (6)].node), - (PGNode *) list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), - (yylsp[(2) - (6)])); - ;} +#line 2514 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 20093 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 776: -#line 1995 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_BETWEEN, - "NOT BETWEEN", - (yyvsp[(1) - (7)].node), - (PGNode *) list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), - (yylsp[(2) - (7)])); - ;} +#line 2522 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 20099 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 777: -#line 2003 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_BETWEEN_SYM, - "BETWEEN SYMMETRIC", - (yyvsp[(1) - (6)].node), - (PGNode *) list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), - (yylsp[(2) - (6)])); - ;} +#line 2523 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 20105 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 778: -#line 2011 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_BETWEEN_SYM, - "NOT BETWEEN SYMMETRIC", - (yyvsp[(1) - (7)].node), - (PGNode *) list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), - (yylsp[(2) - (7)])); - ;} +#line 2527 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].windef)); } +#line 20111 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 779: -#line 2019 "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)) - { - /* generate foo = ANY (subquery) */ - PGSubLink *n = (PGSubLink *) (yyvsp[(3) - (3)].node); - n->subLinkType = PG_ANY_SUBLINK; - n->subLinkId = 0; - n->testexpr = (yyvsp[(1) - (3)].node); - n->operName = NIL; /* show it's IN not = ANY */ - n->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)n; - } - else - { - /* generate scalar IN expression */ - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_IN, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); - } - ;} +#line 2529 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].windef)); } +#line 20117 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 780: -#line 2039 "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)) - { - /* generate NOT (foo = ANY (subquery)) */ - /* Make an = ANY node */ - PGSubLink *n = (PGSubLink *) (yyvsp[(4) - (4)].node); - n->subLinkType = PG_ANY_SUBLINK; - n->subLinkId = 0; - n->testexpr = (yyvsp[(1) - (4)].node); - n->operName = NIL; /* show it's IN not = ANY */ - n->location = (yylsp[(2) - (4)]); - /* Stick a NOT on top; must have same parse location */ - (yyval.node) = makeNotExpr((PGNode *) n, (yylsp[(2) - (4)])); - } - else - { - /* generate scalar NOT IN expression */ - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_IN, "<>", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); - } - ;} +#line 2534 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = (yyvsp[0].windef); + n->name = (yyvsp[-2].str); + (yyval.windef) = n; + } +#line 20127 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 781: -#line 2061 "third_party/libpg_query/grammar/statements/select.y" - { - PGSubLink *n = makeNode(PGSubLink); - n->subLinkType = (yyvsp[(3) - (4)].subquerytype); - n->subLinkId = 0; - n->testexpr = (yyvsp[(1) - (4)].node); - n->operName = (yyvsp[(2) - (4)].list); - n->subselect = (yyvsp[(4) - (4)].node); - n->location = (yylsp[(2) - (4)]); - (yyval.node) = (PGNode *)n; - ;} +#line 2542 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.windef) = (yyvsp[0].windef); } +#line 20133 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 782: -#line 2072 "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)])); - else - (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP_ALL, (yyvsp[(2) - (6)].list), (yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(2) - (6)])); - ;} +#line 2544 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->name = (yyvsp[0].str); + n->refname = NULL; + n->partitionClause = NIL; + n->orderClause = NIL; + n->frameOptions = FRAMEOPTION_DEFAULTS; + n->startOffset = NULL; + n->endOffset = NULL; + n->location = (yylsp[0]); + (yyval.windef) = n; + } +#line 20150 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 783: -#line 2079 "third_party/libpg_query/grammar/statements/select.y" - { - /* - * The SQL spec only allows DEFAULT in "contextually typed - * expressions", but for us, it's easier to allow it in - * any a_expr and then throw error during parse analysis - * if it's in an inappropriate context. This way also - * lets us say something smarter than "syntax error". - */ - PGSetToDefault *n = makeNode(PGSetToDefault); - /* parse analysis will fill in the rest */ - n->location = (yylsp[(1) - (1)]); - (yyval.node) = (PGNode *)n; - ;} +#line 2557 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.windef) = NULL; } +#line 20156 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 784: -#line 2092 "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)])); - (yyval.node) = (PGNode *) n; - ;} +#line 2562 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->name = NULL; + n->refname = (yyvsp[-4].str); + n->partitionClause = (yyvsp[-3].list); + n->orderClause = (yyvsp[-2].list); + /* copy relevant fields of opt_frame_clause */ + n->frameOptions = (yyvsp[-1].windef)->frameOptions; + n->startOffset = (yyvsp[-1].windef)->startOffset; + n->endOffset = (yyvsp[-1].windef)->endOffset; + n->location = (yylsp[-5]); + (yyval.windef) = n; + } +#line 20174 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 785: -#line 2109 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2587 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 20180 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 786: -#line 2111 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), 0, (yylsp[(2) - (3)])); ;} +#line 2588 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = NULL; } +#line 20186 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 787: -#line 2113 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 2591 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 20192 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 788: -#line 2115 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 2592 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 20198 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 789: -#line 2117 "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)])); ;} +#line 2604 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = (yyvsp[0].windef); + n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; + (yyval.windef) = n; + } +#line 20208 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 790: -#line 2119 "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)])); ;} +#line 2610 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = (yyvsp[0].windef); + n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; + (yyval.windef) = n; + } +#line 20218 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 791: -#line 2121 "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)])); ;} +#line 2616 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_DEFAULTS; + n->startOffset = NULL; + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 20230 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 792: -#line 2123 "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)])); ;} +#line 2626 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = (yyvsp[0].windef); + /* reject invalid cases */ + if (n->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame start cannot be UNBOUNDED FOLLOWING"), + parser_errposition((yylsp[0])))); + if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame starting from following row cannot end with current row"), + parser_errposition((yylsp[0])))); + n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; + (yyval.windef) = n; + } +#line 20251 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 793: -#line 2125 "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)])); ;} +#line 2643 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n1 = (yyvsp[-2].windef); + PGWindowDef *n2 = (yyvsp[0].windef); + /* form merged options */ + int frameOptions = n1->frameOptions; + /* shift converts START_ options to END_ options */ + frameOptions |= n2->frameOptions << 1; + frameOptions |= FRAMEOPTION_BETWEEN; + /* reject invalid cases */ + if (frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame start cannot be UNBOUNDED FOLLOWING"), + parser_errposition((yylsp[-2])))); + if (frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame end cannot be UNBOUNDED PRECEDING"), + parser_errposition((yylsp[0])))); + if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && + (frameOptions & FRAMEOPTION_END_VALUE_PRECEDING)) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame starting from current row cannot have preceding rows"), + parser_errposition((yylsp[0])))); + if ((frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) && + (frameOptions & (FRAMEOPTION_END_VALUE_PRECEDING | + FRAMEOPTION_END_CURRENT_ROW))) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame starting from following row cannot have preceding rows"), + parser_errposition((yylsp[0])))); + n1->frameOptions = frameOptions; + n1->endOffset = n2->startOffset; + (yyval.windef) = n1; + } +#line 20292 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 794: -#line 2127 "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)])); ;} +#line 2688 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; + n->startOffset = NULL; + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 20304 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 795: -#line 2129 "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)])); ;} +#line 2696 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; + n->startOffset = NULL; + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 20316 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 796: -#line 2131 "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)])); ;} +#line 2704 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; + n->startOffset = NULL; + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 20328 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 797: -#line 2133 "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)])); ;} +#line 2712 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; + n->startOffset = (yyvsp[-1].node); + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 20340 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 798: -#line 2135 "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)])); ;} +#line 2720 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; + n->startOffset = (yyvsp[-1].node); + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 20352 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 799: -#line 2137 "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)])); ;} +#line 2740 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 20358 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 800: -#line 2139 "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)])); ;} +#line 2741 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 20364 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 801: -#line 2141 "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)])); ;} +#line 2744 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list);} +#line 20370 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 802: -#line 2143 "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)])); ;} +#line 2745 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-3].list), (yyvsp[-1].node)); } +#line 20376 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 803: -#line 2145 "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)])); ;} +#line 2749 "third_party/libpg_query/grammar/statements/select.y" + { + PGNamedArgExpr *na = makeNode(PGNamedArgExpr); + na->name = (yyvsp[-2].str); + na->arg = (PGExpr *) (yyvsp[0].node); + na->argnumber = -1; + na->location = (yylsp[-2]); + (yyval.node) = (PGNode *) na; + } +#line 20389 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 804: -#line 2147 "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)])); - ;} +#line 2759 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 20395 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 805: -#line 2151 "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)])); - ;} +#line 2760 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 20401 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 806: -#line 2155 "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)])); - ;} +#line 2762 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.subquerytype) = PG_ANY_SUBLINK; } +#line 20407 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 807: -#line 2159 "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)])); - ;} +#line 2763 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.subquerytype) = PG_ANY_SUBLINK; } +#line 20413 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 808: -#line 2172 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2764 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.subquerytype) = PG_ALL_SUBLINK; } +#line 20419 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 809: -#line 2173 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2767 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 20425 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 810: -#line 2175 "third_party/libpg_query/grammar/statements/select.y" - { - PGPositionalReference *n = makeNode(PGPositionalReference); - n->position = (yyvsp[(2) - (2)].ival); - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *) n; - ;} +#line 2768 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) (yyvsp[0].conststr); } +#line 20431 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 811: -#line 2182 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(2) - (2)].list)) - { - PGAIndirection *n = makeNode(PGAIndirection); - n->arg = makeParamRef(0, (yylsp[(1) - (2)])); - n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); - (yyval.node) = (PGNode *) n; - } - else - (yyval.node) = makeParamRef(0, (yylsp[(1) - (2)])); - ;} +#line 2771 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "+"; } +#line 20437 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 812: -#line 2194 "third_party/libpg_query/grammar/statements/select.y" - { - PGParamRef *p = makeNode(PGParamRef); - p->number = (yyvsp[(1) - (2)].ival); - p->location = (yylsp[(1) - (2)]); - if ((yyvsp[(2) - (2)].list)) - { - PGAIndirection *n = makeNode(PGAIndirection); - n->arg = (PGNode *) p; - n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); - (yyval.node) = (PGNode *) n; - } - else - (yyval.node) = (PGNode *) p; - ;} +#line 2772 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "-"; } +#line 20443 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 813: -#line 2209 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(4) - (4)].list)) - { - PGAIndirection *n = makeNode(PGAIndirection); - n->arg = (yyvsp[(2) - (4)].node); - n->indirection = check_indirection((yyvsp[(4) - (4)].list), yyscanner); - (yyval.node) = (PGNode *)n; - } - else - (yyval.node) = (yyvsp[(2) - (4)].node); - ;} +#line 2773 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "*"; } +#line 20449 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 814: -#line 2221 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2774 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "/"; } +#line 20455 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 815: -#line 2223 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(2) - (2)].list)) { - PGAIndirection *n = makeNode(PGAIndirection); - n->arg = (yyvsp[(1) - (2)].node); - n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); - (yyval.node) = (PGNode *)n; - } - else { - (yyval.node) = (yyvsp[(1) - (2)].node); - } - ;} +#line 2775 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "%"; } +#line 20461 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 816: -#line 2235 "third_party/libpg_query/grammar/statements/select.y" - { - PGSubLink *n = makeNode(PGSubLink); - n->subLinkType = PG_EXPR_SUBLINK; - n->subLinkId = 0; - n->testexpr = NULL; - n->operName = NIL; - n->subselect = (yyvsp[(1) - (1)].node); - n->location = (yylsp[(1) - (1)]); - (yyval.node) = (PGNode *)n; - ;} +#line 2776 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "^"; } +#line 20467 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 817: -#line 2246 "third_party/libpg_query/grammar/statements/select.y" - { - /* - * Because the select_with_parens nonterminal is designed - * to "eat" as many levels of parens as possible, the - * '(' a_expr ')' opt_indirection production above will - * fail to match a sub-SELECT with indirection decoration; - * the sub-SELECT won't be regarded as an a_expr as long - * as there are parens around it. To support applying - * subscripting or field selection to a sub-SELECT result, - * we need this redundant-looking production. - */ - PGSubLink *n = makeNode(PGSubLink); - PGAIndirection *a = makeNode(PGAIndirection); - n->subLinkType = PG_EXPR_SUBLINK; - n->subLinkId = 0; - n->testexpr = NULL; - n->operName = NIL; - n->subselect = (yyvsp[(1) - (2)].node); - n->location = (yylsp[(1) - (2)]); - a->arg = (PGNode *)n; - a->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); - (yyval.node) = (PGNode *)a; - ;} +#line 2777 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "<"; } +#line 20473 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 818: -#line 2270 "third_party/libpg_query/grammar/statements/select.y" - { - PGSubLink *n = makeNode(PGSubLink); - n->subLinkType = PG_EXISTS_SUBLINK; - n->subLinkId = 0; - n->testexpr = NULL; - n->operName = NIL; - n->subselect = (yyvsp[(2) - (2)].node); - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 2778 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = ">"; } +#line 20479 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 819: -#line 2283 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall((yyvsp[(1) - (3)].list), NIL, (yylsp[(1) - (3)])); - ;} +#line 2779 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "="; } +#line 20485 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 820: -#line 2287 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (5)].list), (yyvsp[(3) - (5)].list), (yylsp[(1) - (5)])); - n->agg_order = (yyvsp[(4) - (5)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 2780 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "<="; } +#line 20491 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 821: -#line 2293 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), list_make1((yyvsp[(4) - (6)].node)), (yylsp[(1) - (6)])); - n->func_variadic = true; - n->agg_order = (yyvsp[(5) - (6)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 2781 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = ">="; } +#line 20497 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 822: -#line 2300 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (8)].list), lappend((yyvsp[(3) - (8)].list), (yyvsp[(6) - (8)].node)), (yylsp[(1) - (8)])); - n->func_variadic = true; - n->agg_order = (yyvsp[(7) - (8)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 2782 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "<>"; } +#line 20503 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 823: -#line 2307 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), (yylsp[(1) - (6)])); - n->agg_order = (yyvsp[(5) - (6)].list); - /* Ideally we'd mark the PGFuncCall node to indicate - * "must be an aggregate", but there's no provision - * for that in PGFuncCall at the moment. - */ - (yyval.node) = (PGNode *)n; - ;} +#line 2786 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 20509 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 824: -#line 2317 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), (yylsp[(1) - (6)])); - n->agg_order = (yyvsp[(5) - (6)].list); - n->agg_distinct = true; - (yyval.node) = (PGNode *)n; - ;} +#line 2788 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 20515 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 825: -#line 2324 "third_party/libpg_query/grammar/statements/select.y" - { - /* - * We consider AGGREGATE(*) to invoke a parameterless - * aggregate. This does the right thing for COUNT(*), - * and there are no other aggregates in SQL that accept - * '*' as parameter. - * - * The PGFuncCall node is also marked agg_star = true, - * so that later processing can detect what the argument - * really was. - */ - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (4)].list), NIL, (yylsp[(1) - (4)])); - n->agg_star = true; - (yyval.node) = (PGNode *)n; - ;} +#line 2793 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 20521 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 826: -#line 2352 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = (PGFuncCall *) (yyvsp[(1) - (4)].node); - /* - * The order clause for WITHIN GROUP and the one for - * plain-aggregate ORDER BY share a field, so we have to - * check here that at most one is present. We also check - * for DISTINCT and VARIADIC here to give a better error - * location. Other consistency checks are deferred to - * parse analysis. - */ - if ((yyvsp[(2) - (4)].list) != NIL) - { - if (n->agg_order != NIL) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("cannot use multiple ORDER BY clauses with WITHIN GROUP"), - parser_errposition((yylsp[(2) - (4)])))); - if (n->agg_distinct) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("cannot use DISTINCT with WITHIN GROUP"), - parser_errposition((yylsp[(2) - (4)])))); - if (n->func_variadic) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("cannot use VARIADIC with WITHIN GROUP"), - parser_errposition((yylsp[(2) - (4)])))); - n->agg_order = (yyvsp[(2) - (4)].list); - n->agg_within_group = true; - } - n->agg_filter = (yyvsp[(3) - (4)].node); - n->over = (yyvsp[(4) - (4)].windef); - (yyval.node) = (PGNode *) n; - ;} +#line 2795 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 20527 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 827: -#line 2387 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2800 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 20533 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 828: -#line 2397 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2802 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 20539 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 829: -#line 2398 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2804 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("~~")); } +#line 20545 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 830: -#line 2406 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("pg_collation_for"), - list_make1((yyvsp[(4) - (5)].node)), - (yylsp[(1) - (5)])); - ;} +#line 2806 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("!~~")); } +#line 20551 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 831: -#line 2412 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_DATE, -1, (yylsp[(1) - (1)])); - ;} +#line 2808 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("~~~")); } +#line 20557 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 832: -#line 2416 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIME, -1, (yylsp[(1) - (1)])); - ;} +#line 2810 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("!~~~")); } +#line 20563 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 833: -#line 2420 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); - ;} +#line 2812 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("~~*")); } +#line 20569 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 834: -#line 2424 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIMESTAMP, -1, (yylsp[(1) - (1)])); - ;} +#line 2814 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("!~~*")); } +#line 20575 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 835: -#line 2428 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); - ;} +#line 2828 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 20581 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 836: -#line 2432 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIME, -1, (yylsp[(1) - (1)])); - ;} +#line 2830 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lcons(makeString((yyvsp[-2].str)), (yyvsp[0].list)); } +#line 20587 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 837: -#line 2436 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); - ;} +#line 2834 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1((yyvsp[0].node)); + } +#line 20595 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 838: -#line 2440 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIMESTAMP, -1, (yylsp[(1) - (1)])); - ;} +#line 2838 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + } +#line 20603 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 839: -#line 2444 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); - ;} +#line 2845 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = (yyvsp[0].list); + } +#line 20611 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 840: -#line 2448 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_ROLE, -1, (yylsp[(1) - (1)])); - ;} +#line 2849 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = NULL; + } +#line 20619 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 841: -#line 2452 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_USER, -1, (yylsp[(1) - (1)])); - ;} +#line 2857 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1((yyvsp[0].node)); + } +#line 20627 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 842: -#line 2456 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_SESSION_USER, -1, (yylsp[(1) - (1)])); - ;} +#line 2861 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + } +#line 20635 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 843: -#line 2460 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_USER, -1, (yylsp[(1) - (1)])); - ;} +#line 2867 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (yyvsp[0].node); + } +#line 20643 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 844: -#line 2464 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_CATALOG, -1, (yylsp[(1) - (1)])); - ;} +#line 2871 "third_party/libpg_query/grammar/statements/select.y" + { + PGNamedArgExpr *na = makeNode(PGNamedArgExpr); + na->name = (yyvsp[-2].str); + na->arg = (PGExpr *) (yyvsp[0].node); + na->argnumber = -1; /* until determined */ + na->location = (yylsp[-2]); + (yyval.node) = (PGNode *) na; + } +#line 20656 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 845: -#line 2468 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_SCHEMA, -1, (yylsp[(1) - (1)])); - ;} +#line 2880 "third_party/libpg_query/grammar/statements/select.y" + { + PGNamedArgExpr *na = makeNode(PGNamedArgExpr); + na->name = (yyvsp[-2].str); + na->arg = (PGExpr *) (yyvsp[0].node); + na->argnumber = -1; /* until determined */ + na->location = (yylsp[-2]); + (yyval.node) = (PGNode *) na; + } +#line 20669 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 846: -#line 2472 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), 0, (yylsp[(1) - (6)])); ;} +#line 2890 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].typnam)); } +#line 20675 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 847: -#line 2474 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), 1, (yylsp[(1) - (6)])); ;} +#line 2891 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].typnam)); } +#line 20681 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 848: -#line 2476 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("date_part"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 2896 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make2(makeStringConst((yyvsp[-2].str), (yylsp[-2])), (yyvsp[0].node)); + } +#line 20689 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 849: -#line 2480 "third_party/libpg_query/grammar/statements/select.y" - { - /* overlay(A PLACING B FROM C FOR D) is converted to - * overlay(A, B, C, D) - * overlay(A PLACING B FROM C) is converted to - * overlay(A, B, C) - */ - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("overlay"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 2899 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 20695 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 850: -#line 2489 "third_party/libpg_query/grammar/statements/select.y" - { - /* position(A in B) is converted to position(B, A) */ - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("position"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 2906 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 20701 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 851: -#line 2494 "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 - */ - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("substring"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 2907 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "year"; } +#line 20707 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 852: -#line 2501 "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. - * In SQL99, this is intended for use with structured UDTs, - * but let's make this a generally useful form allowing stronger - * coercions than are handled by implicit casting. - * - * Convert SystemTypeName() to SystemFuncName() even though - * at the moment they result in the same thing. - */ - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName(((PGValue *)llast((yyvsp[(5) - (6)].typnam)->names))->val.str), - list_make1((yyvsp[(3) - (6)].node)), - (yylsp[(1) - (6)])); - ;} +#line 2908 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "month"; } +#line 20713 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 853: -#line 2516 "third_party/libpg_query/grammar/statements/select.y" - { - /* various trim expressions are defined in SQL - * - thomas 1997-07-19 - */ - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("trim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); - ;} +#line 2909 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "day"; } +#line 20719 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 854: -#line 2523 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); - ;} +#line 2910 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "hour"; } +#line 20725 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 855: -#line 2527 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); - ;} +#line 2911 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "minute"; } +#line 20731 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 856: -#line 2531 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("trim"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 2912 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "second"; } +#line 20737 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 857: -#line 2535 "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)])); - ;} +#line 2913 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "millisecond"; } +#line 20743 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 858: -#line 2539 "third_party/libpg_query/grammar/statements/select.y" - { - PGCoalesceExpr *c = makeNode(PGCoalesceExpr); - c->args = (yyvsp[(3) - (4)].list); - c->location = (yylsp[(1) - (4)]); - (yyval.node) = (PGNode *)c; - ;} +#line 2914 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "microsecond"; } +#line 20749 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 859: -#line 2552 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(4) - (5)].list); ;} +#line 2915 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 20755 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 860: -#line 2553 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 2926 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make4((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + } +#line 20763 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 861: -#line 2557 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(4) - (5)].node); ;} +#line 2930 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + } +#line 20771 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 862: -#line 2558 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 2937 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20777 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 863: -#line 2566 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 2943 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2((yyvsp[0].node), (yyvsp[-2].node)); } +#line 20783 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 864: -#line 2567 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 2944 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 20789 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 865: -#line 2571 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].windef)); ;} +#line 2961 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + } +#line 20797 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 866: -#line 2573 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].windef)); ;} +#line 2965 "third_party/libpg_query/grammar/statements/select.y" + { + /* not legal per SQL99, but might as well allow it */ + (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[0].node), (yyvsp[-1].node)); + } +#line 20806 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 867: -#line 2578 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = (yyvsp[(3) - (3)].windef); - n->name = (yyvsp[(1) - (3)].str); - (yyval.windef) = n; - ;} +#line 2970 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].node)); + } +#line 20814 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 868: -#line 2586 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.windef) = (yyvsp[(2) - (2)].windef); ;} +#line 2974 "third_party/libpg_query/grammar/statements/select.y" + { + /* + * Since there are no cases where this syntax allows + * a textual FOR value, we forcibly cast the argument + * to int4. The possible matches in pg_proc are + * substring(text,int4) and substring(text,text), + * and we don't want the parser to choose the latter, + * which it is likely to do if the second argument + * is unknown or doesn't have an implicit cast to int4. + */ + (yyval.list) = list_make3((yyvsp[-1].node), makeIntConst(1, -1), + makeTypeCast((yyvsp[0].node), + SystemTypeName("int4"), 0, -1)); + } +#line 20833 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 869: -#line 2588 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->name = (yyvsp[(2) - (2)].str); - n->refname = NULL; - n->partitionClause = NIL; - n->orderClause = NIL; - n->frameOptions = FRAMEOPTION_DEFAULTS; - n->startOffset = NULL; - n->endOffset = NULL; - n->location = (yylsp[(2) - (2)]); - (yyval.windef) = n; - ;} +#line 2989 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = (yyvsp[0].list); + } +#line 20841 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 870: -#line 2601 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.windef) = NULL; ;} +#line 2993 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 20847 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 871: -#line 2606 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->name = NULL; - n->refname = (yyvsp[(2) - (6)].str); - n->partitionClause = (yyvsp[(3) - (6)].list); - n->orderClause = (yyvsp[(4) - (6)].list); - /* copy relevant fields of opt_frame_clause */ - n->frameOptions = (yyvsp[(5) - (6)].windef)->frameOptions; - n->startOffset = (yyvsp[(5) - (6)].windef)->startOffset; - n->endOffset = (yyvsp[(5) - (6)].windef)->endOffset; - n->location = (yylsp[(1) - (6)]); - (yyval.windef) = n; - ;} +#line 2997 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20853 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 872: -#line 2631 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 3000 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20859 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 873: -#line 2632 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = NULL; ;} +#line 3003 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[0].list), (yyvsp[-2].node)); } +#line 20865 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 874: -#line 2635 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (3)].list); ;} +#line 3004 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 20871 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 875: -#line 2636 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 3005 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 20877 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 876: -#line 2648 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = (yyvsp[(2) - (2)].windef); - n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; - (yyval.windef) = n; - ;} +#line 3009 "third_party/libpg_query/grammar/statements/select.y" + { + PGSubLink *n = makeNode(PGSubLink); + n->subselect = (yyvsp[0].node); + /* other fields will be filled later */ + (yyval.node) = (PGNode *)n; + } +#line 20888 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 877: -#line 2654 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = (yyvsp[(2) - (2)].windef); - n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; - (yyval.windef) = n; - ;} +#line 3015 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *)(yyvsp[-1].list); } +#line 20894 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 878: -#line 2660 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_DEFAULTS; - n->startOffset = NULL; - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 3026 "third_party/libpg_query/grammar/statements/select.y" + { + PGCaseExpr *c = makeNode(PGCaseExpr); + c->casetype = InvalidOid; /* not analyzed yet */ + c->arg = (PGExpr *) (yyvsp[-3].node); + c->args = (yyvsp[-2].list); + c->defresult = (PGExpr *) (yyvsp[-1].node); + c->location = (yylsp[-4]); + (yyval.node) = (PGNode *)c; + } +#line 20908 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 879: -#line 2670 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = (yyvsp[(1) - (1)].windef); - /* reject invalid cases */ - if (n->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame start cannot be UNBOUNDED FOLLOWING"), - parser_errposition((yylsp[(1) - (1)])))); - if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame starting from following row cannot end with current row"), - parser_errposition((yylsp[(1) - (1)])))); - n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; - (yyval.windef) = n; - ;} +#line 3039 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 20914 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 880: -#line 2687 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n1 = (yyvsp[(2) - (4)].windef); - PGWindowDef *n2 = (yyvsp[(4) - (4)].windef); - /* form merged options */ - int frameOptions = n1->frameOptions; - /* shift converts START_ options to END_ options */ - frameOptions |= n2->frameOptions << 1; - frameOptions |= FRAMEOPTION_BETWEEN; - /* reject invalid cases */ - if (frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame start cannot be UNBOUNDED FOLLOWING"), - parser_errposition((yylsp[(2) - (4)])))); - if (frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame end cannot be UNBOUNDED PRECEDING"), - parser_errposition((yylsp[(4) - (4)])))); - if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && - (frameOptions & FRAMEOPTION_END_VALUE_PRECEDING)) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame starting from current row cannot have preceding rows"), - parser_errposition((yylsp[(4) - (4)])))); - if ((frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) && - (frameOptions & (FRAMEOPTION_END_VALUE_PRECEDING | - FRAMEOPTION_END_CURRENT_ROW))) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame starting from following row cannot have preceding rows"), - parser_errposition((yylsp[(4) - (4)])))); - n1->frameOptions = frameOptions; - n1->endOffset = n2->startOffset; - (yyval.windef) = n1; - ;} +#line 3040 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } +#line 20920 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 881: -#line 2732 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; - n->startOffset = NULL; - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 3045 "third_party/libpg_query/grammar/statements/select.y" + { + PGCaseWhen *w = makeNode(PGCaseWhen); + w->expr = (PGExpr *) (yyvsp[-2].node); + w->result = (PGExpr *) (yyvsp[0].node); + w->location = (yylsp[-3]); + (yyval.node) = (PGNode *)w; + } +#line 20932 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 882: -#line 2740 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; - n->startOffset = NULL; - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 3055 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20938 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 883: -#line 2748 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; - n->startOffset = NULL; - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 3056 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 20944 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 884: -#line 2756 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; - n->startOffset = (yyvsp[(1) - (2)].node); - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 3059 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20950 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 885: -#line 2764 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; - n->startOffset = (yyvsp[(1) - (2)].node); - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 3060 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 20956 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 886: -#line 2784 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} +#line 3064 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeColumnRef((yyvsp[0].str), NIL, (yylsp[0]), yyscanner); + } +#line 20964 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 887: -#line 2785 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 3068 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeColumnRef((yyvsp[-1].str), (yyvsp[0].list), (yylsp[-1]), yyscanner); + } +#line 20972 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 888: -#line 2788 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list);;} +#line 3075 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); + } +#line 20980 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 889: -#line 2789 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); ;} +#line 3079 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeNode(PGAStar); + } +#line 20988 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 890: -#line 2793 "third_party/libpg_query/grammar/statements/select.y" - { - PGNamedArgExpr *na = makeNode(PGNamedArgExpr); - na->name = (yyvsp[(1) - (3)].str); - na->arg = (PGExpr *) (yyvsp[(3) - (3)].node); - na->argnumber = -1; - na->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *) na; - ;} +#line 3083 "third_party/libpg_query/grammar/statements/select.y" + { + PGAIndices *ai = makeNode(PGAIndices); + ai->is_slice = false; + ai->lidx = NULL; + ai->uidx = (yyvsp[-1].node); + (yyval.node) = (PGNode *) ai; + } +#line 21000 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 891: -#line 2803 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 3091 "third_party/libpg_query/grammar/statements/select.y" + { + PGAIndices *ai = makeNode(PGAIndices); + ai->is_slice = true; + ai->lidx = (yyvsp[-3].node); + ai->uidx = (yyvsp[-1].node); + (yyval.node) = (PGNode *) ai; + } +#line 21012 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 892: -#line 2804 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} +#line 3101 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 21018 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 893: -#line 2806 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.subquerytype) = PG_ANY_SUBLINK; ;} +#line 3102 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 21024 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 894: -#line 2807 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.subquerytype) = PG_ANY_SUBLINK; ;} +#line 3106 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 21030 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 895: -#line 2808 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.subquerytype) = PG_ALL_SUBLINK; ;} +#line 3107 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } +#line 21036 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 896: -#line 2811 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 3111 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 21042 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 897: -#line 2812 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) (yyvsp[(1) - (1)].conststr); ;} - break; - - case 898: -#line 2815 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "+"; ;} - break; - - case 899: -#line 2816 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "-"; ;} +#line 3112 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } +#line 21048 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 900: -#line 2817 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "*"; ;} +#line 3126 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 21054 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 901: -#line 2818 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "/"; ;} +#line 3127 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 21060 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 902: -#line 2819 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "%"; ;} +#line 3131 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].target)); } +#line 21066 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 903: -#line 2820 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "^"; ;} +#line 3132 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } +#line 21072 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 904: -#line 2821 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "<"; ;} +#line 3136 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.target) = makeNode(PGResTarget); + (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->indirection = NIL; + (yyval.target)->val = (PGNode *)(yyvsp[-2].node); + (yyval.target)->location = (yylsp[-2]); + } +#line 21084 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 905: -#line 2822 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = ">"; ;} +#line 3152 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.target) = makeNode(PGResTarget); + (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->indirection = NIL; + (yyval.target)->val = (PGNode *)(yyvsp[-1].node); + (yyval.target)->location = (yylsp[-1]); + } +#line 21096 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 906: -#line 2823 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "="; ;} +#line 3160 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.target) = makeNode(PGResTarget); + (yyval.target)->name = NULL; + (yyval.target)->indirection = NIL; + (yyval.target)->val = (PGNode *)(yyvsp[0].node); + (yyval.target)->location = (yylsp[0]); + } +#line 21108 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 907: -#line 2824 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "<="; ;} +#line 3168 "third_party/libpg_query/grammar/statements/select.y" + { + PGColumnRef *n = makeNode(PGColumnRef); + n->fields = list_make1(makeNode(PGAStar)); + n->location = (yylsp[0]); + + (yyval.target) = makeNode(PGResTarget); + (yyval.target)->name = NULL; + (yyval.target)->indirection = NIL; + (yyval.target)->val = (PGNode *)n; + (yyval.target)->location = (yylsp[0]); + } +#line 21124 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 908: -#line 2825 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = ">="; ;} +#line 3189 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].range)); } +#line 21130 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 909: -#line 2826 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "<>"; ;} +#line 3190 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].range)); } +#line 21136 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 910: -#line 2830 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} +#line 3202 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = makeRangeVar(NULL, (yyvsp[0].str), (yylsp[0])); + } +#line 21144 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 911: -#line 2832 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} +#line 3206 "third_party/libpg_query/grammar/statements/select.y" + { + check_qualified_name((yyvsp[0].list), yyscanner); + (yyval.range) = makeRangeVar(NULL, NULL, (yylsp[-1])); + switch (list_length((yyvsp[0].list))) + { + case 1: + (yyval.range)->catalogname = NULL; + (yyval.range)->schemaname = (yyvsp[-1].str); + (yyval.range)->relname = strVal(linitial((yyvsp[0].list))); + break; + case 2: + (yyval.range)->catalogname = (yyvsp[-1].str); + (yyval.range)->schemaname = strVal(linitial((yyvsp[0].list))); + (yyval.range)->relname = strVal(lsecond((yyvsp[0].list))); + break; + default: + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("improper qualified name (too many dotted names): %s", + NameListToString(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)))), + parser_errposition((yylsp[-1])))); + break; + } + } +#line 21173 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 912: -#line 2837 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} +#line 3233 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 21179 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 913: -#line 2839 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} +#line 3235 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } +#line 21185 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 914: -#line 2844 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} +#line 3239 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21191 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 915: -#line 2846 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} +#line 3241 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21197 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 916: -#line 2848 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("~~")); ;} +#line 3252 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 21203 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 917: -#line 2850 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("!~~")); ;} +#line 3255 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = check_func_name(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)), + yyscanner); + } +#line 21212 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 918: -#line 2852 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("~~~")); ;} +#line 3266 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeIntConst((yyvsp[0].ival), (yylsp[0])); + } +#line 21220 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 919: -#line 2854 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("!~~~")); ;} +#line 3270 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeFloatConst((yyvsp[0].str), (yylsp[0])); + } +#line 21228 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 920: -#line 2856 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("~~*")); ;} +#line 3274 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].list)) + { + PGAIndirection *n = makeNode(PGAIndirection); + n->arg = makeStringConst((yyvsp[-1].str), (yylsp[-1])); + n->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.node) = (PGNode *) n; + } + else + (yyval.node) = makeStringConst((yyvsp[-1].str), (yylsp[-1])); + } +#line 21244 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 921: -#line 2858 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("!~~*")); ;} +#line 3286 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeBitStringConst((yyvsp[0].str), (yylsp[0])); + } +#line 21252 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 922: -#line 2872 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} +#line 3290 "third_party/libpg_query/grammar/statements/select.y" + { + /* This is a bit constant per SQL99: + * Without Feature F511, "BIT data type", + * a shall not be a + * or a . + */ + (yyval.node) = makeBitStringConst((yyvsp[0].str), (yylsp[0])); + } +#line 21265 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 923: -#line 2874 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(3) - (3)].list)); ;} +#line 3299 "third_party/libpg_query/grammar/statements/select.y" + { + /* generic type 'literal' syntax */ + PGTypeName *t = makeTypeNameFromNameList((yyvsp[-1].list)); + t->location = (yylsp[-1]); + (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + } +#line 21276 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 924: -#line 2878 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); - ;} +#line 3306 "third_party/libpg_query/grammar/statements/select.y" + { + /* generic syntax with a type modifier */ + PGTypeName *t = makeTypeNameFromNameList((yyvsp[-5].list)); + PGListCell *lc; + + /* + * We must use func_arg_list and opt_sort_clause in the + * production to avoid reduce/reduce conflicts, but we + * don't actually wish to allow PGNamedArgExpr in this + * context, nor ORDER BY. + */ + foreach(lc, (yyvsp[-3].list)) + { + PGNamedArgExpr *arg = (PGNamedArgExpr *) lfirst(lc); + + if (IsA(arg, PGNamedArgExpr)) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("type modifier cannot have parameter name"), + parser_errposition(arg->location))); + } + if ((yyvsp[-2].list) != NIL) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("type modifier cannot have ORDER BY"), + parser_errposition((yylsp[-2])))); + + t->typmods = (yyvsp[-3].list); + t->location = (yylsp[-5]); + (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + } +#line 21312 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 925: -#line 2882 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); - ;} +#line 3338 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), (yyvsp[-1].typnam)); + } +#line 21320 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 926: -#line 2889 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = (yyvsp[(1) - (1)].list); - ;} +#line 3342 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeIntervalNode((yyvsp[-2].node), (yylsp[-2]), (yyvsp[0].list)); + } +#line 21328 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 927: -#line 2893 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = NULL; - ;} +#line 3346 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeIntervalNode((yyvsp[-1].ival), (yylsp[-1]), (yyvsp[0].list)); + } +#line 21336 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 928: -#line 2901 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); - ;} +#line 3350 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeIntervalNode((yyvsp[-1].str), (yylsp[-1]), (yyvsp[0].list)); + } +#line 21344 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 929: -#line 2905 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); - ;} +#line 3354 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeBoolAConst(true, (yylsp[0])); + } +#line 21352 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 930: -#line 2911 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (yyvsp[(1) - (1)].node); - ;} +#line 3358 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeBoolAConst(false, (yylsp[0])); + } +#line 21360 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 931: -#line 2915 "third_party/libpg_query/grammar/statements/select.y" - { - PGNamedArgExpr *na = makeNode(PGNamedArgExpr); - na->name = (yyvsp[(1) - (3)].str); - na->arg = (PGExpr *) (yyvsp[(3) - (3)].node); - na->argnumber = -1; /* until determined */ - na->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *) na; - ;} +#line 3362 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeNullAConst((yylsp[0])); + } +#line 21368 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 932: -#line 2924 "third_party/libpg_query/grammar/statements/select.y" - { - PGNamedArgExpr *na = makeNode(PGNamedArgExpr); - na->name = (yyvsp[(1) - (3)].str); - na->arg = (PGExpr *) (yyvsp[(3) - (3)].node); - na->argnumber = -1; /* until determined */ - na->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *) na; - ;} +#line 3367 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = (yyvsp[0].ival); } +#line 21374 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 933: -#line 2934 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} +#line 3368 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21380 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 934: -#line 2935 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} +#line 3384 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21386 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 935: -#line 2940 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make2(makeStringConst((yyvsp[(1) - (3)].str), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); - ;} +#line 3385 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 21392 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 936: -#line 2943 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 3386 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 21398 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 937: -#line 2950 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 3389 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21404 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 938: -#line 2951 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "year"; ;} +#line 3390 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21410 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 939: -#line 2952 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "month"; ;} +#line 3396 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21416 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 940: -#line 2953 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "day"; ;} +#line 3397 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 21422 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 941: -#line 2954 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "hour"; ;} +#line 3398 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 21428 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 942: -#line 2955 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "minute"; ;} +#line 3401 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21434 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 943: -#line 2956 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "second"; ;} +#line 3402 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 21440 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 944: -#line 2957 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "millisecond"; ;} +#line 3403 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 21446 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 945: -#line 2958 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "microsecond"; ;} +#line 3406 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21452 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 946: -#line 2959 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 3407 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 21458 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 947: -#line 2970 "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)); - ;} +#line 3408 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 21464 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 948: -#line 2974 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); - ;} +#line 3411 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 21470 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 949: -#line 2981 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 3412 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)); } +#line 21476 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 950: -#line 2987 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2((yyvsp[(3) - (3)].node), (yyvsp[(1) - (3)].node)); ;} +#line 3416 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 21482 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 951: -#line 2988 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 3418 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } +#line 21488 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 952: -#line 3005 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); - ;} +#line 3422 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 21494 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 953: -#line 3009 "third_party/libpg_query/grammar/statements/select.y" - { - /* not legal per SQL99, but might as well allow it */ - (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyvsp[(2) - (3)].node)); - ;} - break; - - case 954: -#line 3014 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); - ;} +#line 3423 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 21500 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 955: -#line 3018 "third_party/libpg_query/grammar/statements/select.y" - { - /* - * Since there are no cases where this syntax allows - * a textual FOR value, we forcibly cast the argument - * to int4. The possible matches in pg_proc are - * substring(text,int4) and substring(text,text), - * and we don't want the parser to choose the latter, - * which it is likely to do if the second argument - * is unknown or doesn't have an implicit cast to int4. - */ - (yyval.list) = list_make3((yyvsp[(1) - (2)].node), makeIntConst(1, -1), - makeTypeCast((yyvsp[(2) - (2)].node), - SystemTypeName("int4"), 0, -1)); - ;} +#line 3434 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21506 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 956: -#line 3033 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = (yyvsp[(1) - (1)].list); - ;} +#line 3435 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 21512 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 957: -#line 3037 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 3436 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 21518 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 958: -#line 3041 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 3437 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 21524 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 959: -#line 3044 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 3440 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21530 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 960: -#line 3047 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(3) - (3)].list), (yyvsp[(1) - (3)].node)); ;} +#line 3441 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21536 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 961: -#line 3048 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 10 "third_party/libpg_query/grammar/statements/view.y" + { + PGViewStmt *n = makeNode(PGViewStmt); + n->view = (yyvsp[-5].range); + n->view->relpersistence = (yyvsp[-7].ival); + n->aliases = (yyvsp[-4].list); + n->query = (yyvsp[-1].node); + n->replace = false; + n->options = (yyvsp[-3].list); + n->withCheckOption = (yyvsp[0].viewcheckoption); + (yyval.node) = (PGNode *) n; + } +#line 21552 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 962: -#line 3049 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 23 "third_party/libpg_query/grammar/statements/view.y" + { + PGViewStmt *n = makeNode(PGViewStmt); + n->view = (yyvsp[-5].range); + n->view->relpersistence = (yyvsp[-7].ival); + n->aliases = (yyvsp[-4].list); + n->query = (yyvsp[-1].node); + n->replace = true; + n->options = (yyvsp[-3].list); + n->withCheckOption = (yyvsp[0].viewcheckoption); + (yyval.node) = (PGNode *) n; + } +#line 21568 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 963: -#line 3053 "third_party/libpg_query/grammar/statements/select.y" - { - PGSubLink *n = makeNode(PGSubLink); - n->subselect = (yyvsp[(1) - (1)].node); - /* other fields will be filled later */ - (yyval.node) = (PGNode *)n; - ;} +#line 36 "third_party/libpg_query/grammar/statements/view.y" + { + PGViewStmt *n = makeNode(PGViewStmt); + n->view = (yyvsp[-7].range); + n->view->relpersistence = (yyvsp[-10].ival); + n->aliases = (yyvsp[-5].list); + n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[-1].node)); + n->replace = false; + n->options = (yyvsp[-3].list); + n->withCheckOption = (yyvsp[0].viewcheckoption); + if (n->withCheckOption != PG_NO_CHECK_OPTION) + ereport(ERROR, + (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("WITH CHECK OPTION not supported on recursive views"), + parser_errposition((yylsp[0])))); + (yyval.node) = (PGNode *) n; + } +#line 21589 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 964: -#line 3059 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *)(yyvsp[(2) - (3)].list); ;} +#line 54 "third_party/libpg_query/grammar/statements/view.y" + { + PGViewStmt *n = makeNode(PGViewStmt); + n->view = (yyvsp[-7].range); + n->view->relpersistence = (yyvsp[-10].ival); + n->aliases = (yyvsp[-5].list); + n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[-1].node)); + n->replace = true; + n->options = (yyvsp[-3].list); + n->withCheckOption = (yyvsp[0].viewcheckoption); + if (n->withCheckOption != PG_NO_CHECK_OPTION) + ereport(ERROR, + (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("WITH CHECK OPTION not supported on recursive views"), + parser_errposition((yylsp[0])))); + (yyval.node) = (PGNode *) n; + } +#line 21610 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 965: -#line 3070 "third_party/libpg_query/grammar/statements/select.y" - { - PGCaseExpr *c = makeNode(PGCaseExpr); - c->casetype = InvalidOid; /* not analyzed yet */ - c->arg = (PGExpr *) (yyvsp[(2) - (5)].node); - c->args = (yyvsp[(3) - (5)].list); - c->defresult = (PGExpr *) (yyvsp[(4) - (5)].node); - c->location = (yylsp[(1) - (5)]); - (yyval.node) = (PGNode *)c; - ;} +#line 74 "third_party/libpg_query/grammar/statements/view.y" + { (yyval.viewcheckoption) = CASCADED_CHECK_OPTION; } +#line 21616 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 966: -#line 3083 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 75 "third_party/libpg_query/grammar/statements/view.y" + { (yyval.viewcheckoption) = CASCADED_CHECK_OPTION; } +#line 21622 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 967: -#line 3084 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} +#line 76 "third_party/libpg_query/grammar/statements/view.y" + { (yyval.viewcheckoption) = PG_LOCAL_CHECK_OPTION; } +#line 21628 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 968: -#line 3089 "third_party/libpg_query/grammar/statements/select.y" - { - PGCaseWhen *w = makeNode(PGCaseWhen); - w->expr = (PGExpr *) (yyvsp[(2) - (4)].node); - w->result = (PGExpr *) (yyvsp[(4) - (4)].node); - w->location = (yylsp[(1) - (4)]); - (yyval.node) = (PGNode *)w; - ;} +#line 77 "third_party/libpg_query/grammar/statements/view.y" + { (yyval.viewcheckoption) = PG_NO_CHECK_OPTION; } +#line 21634 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 969: -#line 3099 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 12 "third_party/libpg_query/grammar/statements/create_as.y" + { + PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); + ctas->query = (yyvsp[-1].node); + ctas->into = (yyvsp[-3].into); + ctas->relkind = PG_OBJECT_TABLE; + ctas->is_select_into = false; + ctas->if_not_exists = false; + /* cram additional flags into the PGIntoClause */ + (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-5].ival); + (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyval.node) = (PGNode *) ctas; + } +#line 21651 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 970: -#line 3100 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 25 "third_party/libpg_query/grammar/statements/create_as.y" + { + PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); + ctas->query = (yyvsp[-1].node); + ctas->into = (yyvsp[-3].into); + ctas->relkind = PG_OBJECT_TABLE; + ctas->is_select_into = false; + ctas->if_not_exists = true; + /* cram additional flags into the PGIntoClause */ + (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-8].ival); + (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyval.node) = (PGNode *) ctas; + } +#line 21668 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 971: -#line 3103 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 41 "third_party/libpg_query/grammar/statements/create_as.y" + { (yyval.boolean) = true; } +#line 21674 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 972: -#line 3104 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 42 "third_party/libpg_query/grammar/statements/create_as.y" + { (yyval.boolean) = false; } +#line 21680 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 973: -#line 3108 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeColumnRef((yyvsp[(1) - (1)].str), NIL, (yylsp[(1) - (1)]), yyscanner); - ;} +#line 43 "third_party/libpg_query/grammar/statements/create_as.y" + { (yyval.boolean) = true; } +#line 21686 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 974: -#line 3112 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeColumnRef((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)]), yyscanner); - ;} +#line 49 "third_party/libpg_query/grammar/statements/create_as.y" + { + (yyval.into) = makeNode(PGIntoClause); + (yyval.into)->rel = (yyvsp[-3].range); + (yyval.into)->colNames = (yyvsp[-2].list); + (yyval.into)->options = (yyvsp[-1].list); + (yyval.into)->onCommit = (yyvsp[0].oncommit); + (yyval.into)->viewQuery = NULL; + (yyval.into)->skipData = false; /* might get changed later */ + } +#line 21700 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 975: -#line 3119 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeString((yyvsp[(2) - (2)].str)); - ;} +#line 8 "third_party/libpg_query/grammar/statements/pragma.y" + { + PGPragmaStmt *n = makeNode(PGPragmaStmt); + n->kind = PG_PRAGMA_TYPE_NOTHING; + n->name = (yyvsp[0].str); + (yyval.node) = (PGNode *)n; + } +#line 21711 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 976: -#line 3123 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeNode(PGAStar); - ;} +#line 15 "third_party/libpg_query/grammar/statements/pragma.y" + { + PGPragmaStmt *n = makeNode(PGPragmaStmt); + n->kind = PG_PRAGMA_TYPE_ASSIGNMENT; + n->name = (yyvsp[-2].str); + n->args = (yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 21723 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 977: -#line 3127 "third_party/libpg_query/grammar/statements/select.y" - { - PGAIndices *ai = makeNode(PGAIndices); - ai->is_slice = false; - ai->lidx = NULL; - ai->uidx = (yyvsp[(2) - (3)].node); - (yyval.node) = (PGNode *) ai; - ;} +#line 23 "third_party/libpg_query/grammar/statements/pragma.y" + { + PGPragmaStmt *n = makeNode(PGPragmaStmt); + n->kind = PG_PRAGMA_TYPE_CALL; + n->name = (yyvsp[-3].str); + n->args = (yyvsp[-1].list); + (yyval.node) = (PGNode *)n; + } +#line 21735 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 978: -#line 3135 "third_party/libpg_query/grammar/statements/select.y" - { - PGAIndices *ai = makeNode(PGAIndices); - ai->is_slice = true; - ai->lidx = (yyvsp[(2) - (5)].node); - ai->uidx = (yyvsp[(4) - (5)].node); - (yyval.node) = (PGNode *) ai; - ;} +#line 9 "third_party/libpg_query/grammar/statements/create.y" + { + PGCreateStmt *n = makeNode(PGCreateStmt); + (yyvsp[-5].range)->relpersistence = (yyvsp[-7].ival); + n->relation = (yyvsp[-5].range); + n->tableElts = (yyvsp[-3].list); + n->ofTypename = NULL; + n->constraints = NIL; + n->options = (yyvsp[-1].list); + n->oncommit = (yyvsp[0].oncommit); + n->if_not_exists = false; + (yyval.node) = (PGNode *)n; + } +#line 21752 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 979: -#line 3145 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 24 "third_party/libpg_query/grammar/statements/create.y" + { + PGCreateStmt *n = makeNode(PGCreateStmt); + (yyvsp[-5].range)->relpersistence = (yyvsp[-10].ival); + n->relation = (yyvsp[-5].range); + n->tableElts = (yyvsp[-3].list); + n->ofTypename = NULL; + n->constraints = NIL; + n->options = (yyvsp[-1].list); + n->oncommit = (yyvsp[0].oncommit); + n->if_not_exists = true; + (yyval.node) = (PGNode *)n; + } +#line 21769 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 980: -#line 3146 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 41 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = 0; } +#line 21775 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 981: -#line 3150 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 43 "third_party/libpg_query/grammar/statements/create.y" + { + /* + * We must complain about conflicting options. + * We could, but choose not to, complain about redundant + * options (ie, where $2's bit is already set in $1). + */ + int newspec = (yyvsp[-1].ival) | (yyvsp[0].ival); + + /* special message for this case */ + if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), + parser_errposition((yylsp[0])))); + /* generic message for other conflicts */ + if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || + (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("conflicting constraint properties"), + parser_errposition((yylsp[0])))); + (yyval.ival) = newspec; + } +#line 21803 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 982: -#line 3151 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} +#line 69 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)(yyvsp[0].typnam); } +#line 21809 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 983: -#line 3155 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 70 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)makeString(pstrdup((yyvsp[0].keyword))); } +#line 21815 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 984: -#line 3156 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} +#line 71 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)(yyvsp[0].list); } +#line 21821 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 985: +#line 72 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)(yyvsp[0].value); } +#line 21827 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 986: +#line 73 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)makeString((yyvsp[0].str)); } +#line 21833 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 987: -#line 3170 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 74 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)makeString(pstrdup((yyvsp[0].keyword))); } +#line 21839 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 988: -#line 3171 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 78 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 21845 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 989: -#line 3175 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} +#line 79 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 21851 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 990: -#line 3176 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} +#line 84 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); } +#line 21857 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 991: -#line 3180 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = (yyvsp[(3) - (3)].str); - (yyval.target)->indirection = NIL; - (yyval.target)->val = (PGNode *)(yyvsp[(1) - (3)].node); - (yyval.target)->location = (yylsp[(1) - (3)]); - ;} +#line 89 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_FKCONSTR_ACTION_NOACTION; } +#line 21863 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 992: -#line 3196 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = (yyvsp[(2) - (2)].str); - (yyval.target)->indirection = NIL; - (yyval.target)->val = (PGNode *)(yyvsp[(1) - (2)].node); - (yyval.target)->location = (yylsp[(1) - (2)]); - ;} +#line 90 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_FKCONSTR_ACTION_RESTRICT; } +#line 21869 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 993: -#line 3204 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = NULL; - (yyval.target)->indirection = NIL; - (yyval.target)->val = (PGNode *)(yyvsp[(1) - (1)].node); - (yyval.target)->location = (yylsp[(1) - (1)]); - ;} +#line 91 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_FKCONSTR_ACTION_CASCADE; } +#line 21875 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 994: -#line 3212 "third_party/libpg_query/grammar/statements/select.y" - { - PGColumnRef *n = makeNode(PGColumnRef); - n->fields = list_make1(makeNode(PGAStar)); - n->location = (yylsp[(1) - (1)]); - - (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = NULL; - (yyval.target)->indirection = NIL; - (yyval.target)->val = (PGNode *)n; - (yyval.target)->location = (yylsp[(1) - (1)]); - ;} +#line 92 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_FKCONSTR_ACTION_SETNULL; } +#line 21881 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 995: -#line 3233 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); ;} +#line 93 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_FKCONSTR_ACTION_SETDEFAULT; } +#line 21887 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 996: -#line 3234 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); ;} +#line 99 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = castNode(PGConstraint, (yyvsp[0].node)); + n->conname = (yyvsp[-1].str); + n->location = (yylsp[-2]); + (yyval.node) = (PGNode *) n; + } +#line 21898 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 997: -#line 3246 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = makeRangeVar(NULL, (yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} +#line 105 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 21904 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 998: -#line 3250 "third_party/libpg_query/grammar/statements/select.y" - { - check_qualified_name((yyvsp[(2) - (2)].list), yyscanner); - (yyval.range) = makeRangeVar(NULL, NULL, (yylsp[(1) - (2)])); - switch (list_length((yyvsp[(2) - (2)].list))) - { - case 1: - (yyval.range)->catalogname = NULL; - (yyval.range)->schemaname = (yyvsp[(1) - (2)].str); - (yyval.range)->relname = strVal(linitial((yyvsp[(2) - (2)].list))); - break; - case 2: - (yyval.range)->catalogname = (yyvsp[(1) - (2)].str); - (yyval.range)->schemaname = strVal(linitial((yyvsp[(2) - (2)].list))); - (yyval.range)->relname = strVal(lsecond((yyvsp[(2) - (2)].list))); - break; - default: - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("improper qualified name (too many dotted names): %s", - NameListToString(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)))), - parser_errposition((yylsp[(1) - (2)])))); - break; - } - ;} +#line 106 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 21910 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 999: -#line 3277 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} +#line 108 "third_party/libpg_query/grammar/statements/create.y" + { + /* + * Note: the PGCollateClause is momentarily included in + * the list built by ColQualList, but we split it out + * again in SplitColQualList. + */ + PGCollateClause *n = makeNode(PGCollateClause); + n->arg = NULL; + n->collname = (yyvsp[0].list); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *) n; + } +#line 21927 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1000: -#line 3279 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} +#line 125 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_NOTNULL; + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 21938 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1001: -#line 3283 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 132 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_NULL; + n->location = (yylsp[0]); + (yyval.node) = (PGNode *)n; + } +#line 21949 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1002: -#line 3285 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 139 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_UNIQUE; + n->location = (yylsp[-1]); + n->keys = NULL; + n->options = (yyvsp[0].list); + n->indexname = NULL; + (yyval.node) = (PGNode *)n; + } +#line 21963 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1003: -#line 3296 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} +#line 149 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_PRIMARY; + n->location = (yylsp[-2]); + n->keys = NULL; + n->options = (yyvsp[0].list); + n->indexname = NULL; + (yyval.node) = (PGNode *)n; + } +#line 21977 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1004: -#line 3299 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), - yyscanner); - ;} +#line 159 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_CHECK; + n->location = (yylsp[-4]); + n->is_no_inherit = (yyvsp[0].boolean); + n->raw_expr = (yyvsp[-2].node); + n->cooked_expr = NULL; + n->skip_validation = false; + n->initially_valid = true; + (yyval.node) = (PGNode *)n; + } +#line 21993 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1005: -#line 3310 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); - ;} +#line 171 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_DEFAULT; + n->location = (yylsp[-1]); + n->raw_expr = (yyvsp[0].node); + n->cooked_expr = NULL; + (yyval.node) = (PGNode *)n; + } +#line 22006 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1006: -#line 3314 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} +#line 180 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_IDENTITY; + n->generated_when = (yyvsp[-3].ival); + n->options = (yyvsp[0].list); + n->location = (yylsp[-4]); + (yyval.node) = (PGNode *)n; + } +#line 22019 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1007: -#line 3318 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(2) - (2)].list)) - { - PGAIndirection *n = makeNode(PGAIndirection); - n->arg = makeStringConst((yyvsp[(1) - (2)].str), (yylsp[(1) - (2)])); - n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); - (yyval.node) = (PGNode *) n; - } - else - (yyval.node) = makeStringConst((yyvsp[(1) - (2)].str), (yylsp[(1) - (2)])); - ;} + case 1007: +#line 189 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_FOREIGN; + n->location = (yylsp[-4]); + n->pktable = (yyvsp[-3].range); + n->fk_attrs = NIL; + n->pk_attrs = (yyvsp[-2].list); + n->fk_matchtype = (yyvsp[-1].ival); + n->fk_upd_action = (char) ((yyvsp[0].ival) >> 8); + n->fk_del_action = (char) ((yyvsp[0].ival) & 0xFF); + n->skip_validation = false; + n->initially_valid = true; + (yyval.node) = (PGNode *)n; + } +#line 22038 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1008: -#line 3330 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} +#line 208 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node), (yylsp[-1])); + } +#line 22046 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1009: -#line 3334 "third_party/libpg_query/grammar/statements/select.y" - { - /* This is a bit constant per SQL99: - * Without Feature F511, "BIT data type", - * a shall not be a - * or a . - */ - (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} +#line 214 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (yyvsp[0].ival); } +#line 22052 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1010: -#line 3343 "third_party/libpg_query/grammar/statements/select.y" - { - /* generic type 'literal' syntax */ - PGTypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (2)].list)); - t->location = (yylsp[(1) - (2)]); - (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), t); - ;} +#line 220 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = ((yyvsp[0].ival) << 8) | (PG_FKCONSTR_ACTION_NOACTION & 0xFF); } +#line 22058 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1011: -#line 3350 "third_party/libpg_query/grammar/statements/select.y" - { - /* generic syntax with a type modifier */ - PGTypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (6)].list)); - PGListCell *lc; - - /* - * We must use func_arg_list and opt_sort_clause in the - * production to avoid reduce/reduce conflicts, but we - * don't actually wish to allow PGNamedArgExpr in this - * context, nor ORDER BY. - */ - foreach(lc, (yyvsp[(3) - (6)].list)) - { - PGNamedArgExpr *arg = (PGNamedArgExpr *) lfirst(lc); - - if (IsA(arg, PGNamedArgExpr)) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("type modifier cannot have parameter name"), - parser_errposition(arg->location))); - } - if ((yyvsp[(4) - (6)].list) != NIL) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("type modifier cannot have ORDER BY"), - parser_errposition((yylsp[(4) - (6)])))); - - t->typmods = (yyvsp[(3) - (6)].list); - t->location = (yylsp[(1) - (6)]); - (yyval.node) = makeStringConstCast((yyvsp[(6) - (6)].str), (yylsp[(6) - (6)]), t); - ;} +#line 222 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (PG_FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[0].ival) & 0xFF); } +#line 22064 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1012: -#line 3382 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); - ;} +#line 224 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = ((yyvsp[-1].ival) << 8) | ((yyvsp[0].ival) & 0xFF); } +#line 22070 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1013: -#line 3386 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeIntervalNode((yyvsp[(3) - (5)].node), (yylsp[(3) - (5)]), (yyvsp[(5) - (5)].list)); - ;} +#line 226 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = ((yyvsp[0].ival) << 8) | ((yyvsp[-1].ival) & 0xFF); } +#line 22076 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1014: -#line 3390 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeIntervalNode((yyvsp[(2) - (3)].ival), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].list)); - ;} +#line 228 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (PG_FKCONSTR_ACTION_NOACTION << 8) | (PG_FKCONSTR_ACTION_NOACTION & 0xFF); } +#line 22082 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1015: -#line 3394 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeIntervalNode((yyvsp[(2) - (3)].str), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].list)); - ;} +#line 233 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 22088 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1016: -#line 3398 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeBoolAConst(true, (yylsp[(1) - (1)])); - ;} +#line 234 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 22094 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1017: -#line 3402 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeBoolAConst(false, (yylsp[(1) - (1)])); - ;} +#line 238 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.oncommit) = ONCOMMIT_DROP; } +#line 22100 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1018: -#line 3406 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); - ;} +#line 239 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.oncommit) = PG_ONCOMMIT_DELETE_ROWS; } +#line 22106 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1019: -#line 3411 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} +#line 240 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.oncommit) = PG_ONCOMMIT_PRESERVE_ROWS; } +#line 22112 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1020: -#line 3412 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 241 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.oncommit) = PG_ONCOMMIT_NOOP; } +#line 22118 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1021: -#line 3428 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 246 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 22124 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1022: -#line 3429 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 250 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.boolean) = true; } +#line 22130 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1023: -#line 3430 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 251 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.boolean) = false; } +#line 22136 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1024: -#line 3433 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 257 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = castNode(PGConstraint, (yyvsp[0].node)); + n->conname = (yyvsp[-1].str); + n->location = (yylsp[-2]); + (yyval.node) = (PGNode *) n; + } +#line 22147 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1025: -#line 3434 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 263 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 22153 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1026: -#line 3440 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 268 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_COMMENTS; } +#line 22159 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1027: -#line 3441 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 269 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_CONSTRAINTS; } +#line 22165 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1028: -#line 3442 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 270 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_DEFAULTS; } +#line 22171 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1029: -#line 3445 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 271 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_IDENTITY; } +#line 22177 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1030: -#line 3446 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 272 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_INDEXES; } +#line 22183 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1031: -#line 3447 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 273 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_STATISTICS; } +#line 22189 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1032: -#line 3450 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 274 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_STORAGE; } +#line 22195 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1033: -#line 3451 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 275 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_ALL; } +#line 22201 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1034: -#line 3452 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 281 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = list_make1((yyvsp[0].defelt)); } +#line 22207 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1035: -#line 3455 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} +#line 282 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } +#line 22213 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1036: -#line 3456 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); ;} +#line 286 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22219 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1037: -#line 3460 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(2) - (2)].str))); ;} +#line 292 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_ATTR_DEFERRABLE; + n->location = (yylsp[0]); + (yyval.node) = (PGNode *)n; + } +#line 22230 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1038: -#line 3462 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} +#line 299 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_ATTR_NOT_DEFERRABLE; + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 22241 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1039: -#line 3466 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 306 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_ATTR_DEFERRED; + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 22252 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1040: -#line 3467 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 313 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_ATTR_IMMEDIATE; + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 22263 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1041: +#line 324 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[0].list); } +#line 22269 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1042: -#line 3478 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 325 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = list_make1(makeDefElem("oids", (PGNode *) makeInteger(true), (yylsp[-1]))); } +#line 22275 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1043: -#line 3479 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 326 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = list_make1(makeDefElem("oids", (PGNode *) makeInteger(false), (yylsp[-1]))); } +#line 22281 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1044: -#line 3480 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 327 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 22287 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1045: -#line 3481 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 331 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 22293 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1046: -#line 3484 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 336 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } +#line 22299 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1047: -#line 3485 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 337 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (yyvsp[-2].ival) & ~(yyvsp[0].ival); } +#line 22305 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1048: -#line 8 "third_party/libpg_query/grammar/statements/prepare.y" - { - PGPrepareStmt *n = makeNode(PGPrepareStmt); - n->name = (yyvsp[(2) - (5)].str); - n->argtypes = (yyvsp[(3) - (5)].list); - n->query = (yyvsp[(5) - (5)].node); - (yyval.node) = (PGNode *) n; - ;} +#line 338 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = 0; } +#line 22311 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1049: -#line 18 "third_party/libpg_query/grammar/statements/prepare.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 343 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22317 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1050: -#line 19 "third_party/libpg_query/grammar/statements/prepare.y" - { (yyval.list) = NIL; ;} +#line 348 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_NOT_DEFERRABLE; } +#line 22323 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1051: +#line 349 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_DEFERRABLE; } +#line 22329 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1052: +#line 350 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_INITIALLY_IMMEDIATE; } +#line 22335 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1053: +#line 351 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_INITIALLY_DEFERRED; } +#line 22341 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1054: +#line 352 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_NOT_VALID; } +#line 22347 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1055: -#line 8 "third_party/libpg_query/grammar/statements/create_schema.y" - { - PGCreateSchemaStmt *n = makeNode(PGCreateSchemaStmt); - /* ...but not both */ - n->schemaname = (yyvsp[(3) - (4)].str); - n->schemaElts = (yyvsp[(4) - (4)].list); - n->if_not_exists = false; - (yyval.node) = (PGNode *)n; - ;} +#line 353 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_NO_INHERIT; } +#line 22353 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1056: -#line 17 "third_party/libpg_query/grammar/statements/create_schema.y" - { - PGCreateSchemaStmt *n = makeNode(PGCreateSchemaStmt); - /* ...but not here */ - n->schemaname = (yyvsp[(6) - (7)].str); - if ((yyvsp[(7) - (7)].list) != NIL) - ereport(ERROR, - (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), - parser_errposition((yylsp[(7) - (7)])))); - n->schemaElts = (yyvsp[(7) - (7)].list); - n->if_not_exists = true; +#line 359 "third_party/libpg_query/grammar/statements/create.y" + { + PGColumnDef *n = makeNode(PGColumnDef); + n->colname = (yyvsp[-3].str); + n->typeName = (yyvsp[-2].typnam); + n->inhcount = 0; + n->is_local = true; + n->is_not_null = false; + n->is_from_type = false; + n->storage = 0; + n->raw_default = NULL; + n->cooked_default = NULL; + n->collOid = InvalidOid; + n->fdwoptions = (yyvsp[-1].list); + SplitColQualList((yyvsp[0].list), &n->constraints, &n->collClause, + yyscanner); + n->location = (yylsp[-3]); (yyval.node) = (PGNode *)n; - ;} + } +#line 22376 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1057: -#line 35 "third_party/libpg_query/grammar/statements/create_schema.y" - { - if ((yyloc) < 0) /* see comments for YYLLOC_DEFAULT */ - (yyloc) = (yylsp[(2) - (2)]); - (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); - ;} +#line 382 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.list) = list_make1((yyvsp[0].defelt)); + } +#line 22384 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1058: -#line 41 "third_party/libpg_query/grammar/statements/create_schema.y" - { (yyval.list) = NIL; ;} +#line 386 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + } +#line 22392 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1059: +#line 392 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = list_make1((yyvsp[0].defelt)); } +#line 22398 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1060: +#line 393 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } +#line 22404 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1061: +#line 397 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22410 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1062: +#line 401 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 22416 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1063: -#line 11 "third_party/libpg_query/grammar/statements/index.y" - { - PGIndexStmt *n = makeNode(PGIndexStmt); - n->unique = (yyvsp[(2) - (13)].boolean); - n->concurrent = (yyvsp[(4) - (13)].boolean); - n->idxname = (yyvsp[(5) - (13)].str); - n->relation = (yyvsp[(7) - (13)].range); - n->accessMethod = (yyvsp[(8) - (13)].str); - n->indexParams = (yyvsp[(10) - (13)].list); - n->options = (yyvsp[(12) - (13)].list); - n->whereClause = (yyvsp[(13) - (13)].node); - n->excludeOpNames = NIL; - n->idxcomment = NULL; - n->indexOid = InvalidOid; - n->oldNode = InvalidOid; - n->primary = false; - n->isconstraint = false; - n->deferrable = false; - n->initdeferred = false; - n->transformed = false; - n->if_not_exists = false; - (yyval.node) = (PGNode *)n; - ;} +#line 402 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 22422 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1064: -#line 36 "third_party/libpg_query/grammar/statements/index.y" - { - PGIndexStmt *n = makeNode(PGIndexStmt); - n->unique = (yyvsp[(2) - (16)].boolean); - n->concurrent = (yyvsp[(4) - (16)].boolean); - n->idxname = (yyvsp[(8) - (16)].str); - n->relation = (yyvsp[(10) - (16)].range); - n->accessMethod = (yyvsp[(11) - (16)].str); - n->indexParams = (yyvsp[(13) - (16)].list); - n->options = (yyvsp[(15) - (16)].list); - n->whereClause = (yyvsp[(16) - (16)].node); - n->excludeOpNames = NIL; - n->idxcomment = NULL; - n->indexOid = InvalidOid; - n->oldNode = InvalidOid; - n->primary = false; - n->isconstraint = false; - n->deferrable = false; - n->initdeferred = false; - n->transformed = false; - n->if_not_exists = true; - (yyval.node) = (PGNode *)n; - ;} +#line 403 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 22428 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1065: -#line 62 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 408 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElem((yyvsp[-2].str), (PGNode *) (yyvsp[0].node), (yylsp[-2])); + } +#line 22436 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1066: -#line 66 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.str) = (yyvsp[(2) - (2)].str); ;} +#line 412 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElem((yyvsp[0].str), NULL, (yylsp[0])); + } +#line 22444 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1067: -#line 67 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.str) = (char*) DEFAULT_INDEX_TYPE; ;} +#line 419 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[0].list); } +#line 22450 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1068: -#line 72 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.boolean) = true; ;} +#line 420 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 22456 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1069: -#line 73 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.boolean) = false; ;} +#line 425 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[0].list); } +#line 22462 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1070: -#line 78 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 426 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 22468 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1071: -#line 79 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.str) = NULL; ;} +#line 431 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); + } +#line 22476 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1072: -#line 83 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 438 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 22482 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1073: -#line 84 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.list) = NIL; ;} +#line 439 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 22488 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1074: -#line 89 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.boolean) = true; ;} +#line 444 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } +#line 22494 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1075: -#line 90 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.boolean) = false; ;} +#line 445 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 22500 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1076: -#line 8 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(3) - (6)].range); - n->newschema = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 449 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (yyvsp[0].ival); } +#line 22506 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1077: -#line 17 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(5) - (8)].range); - n->newschema = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 455 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElem((yyvsp[-2].str), (PGNode *) (yyvsp[0].node), (yylsp[-2])); + } +#line 22514 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1078: -#line 26 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_SEQUENCE; - n->relation = (yyvsp[(3) - (6)].range); - n->newschema = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 459 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElem((yyvsp[0].str), NULL, (yylsp[0])); + } +#line 22522 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1079: -#line 35 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_SEQUENCE; - n->relation = (yyvsp[(5) - (8)].range); - n->newschema = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 463 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElemExtended((yyvsp[-4].str), (yyvsp[-2].str), (PGNode *) (yyvsp[0].node), + PG_DEFELEM_UNSPEC, (yylsp[-4])); + } +#line 22531 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1080: -#line 44 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_VIEW; - n->relation = (yyvsp[(3) - (6)].range); - n->newschema = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 468 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElemExtended((yyvsp[-2].str), (yyvsp[0].str), NULL, PG_DEFELEM_UNSPEC, (yylsp[-2])); + } +#line 22539 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1081: -#line 53 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_VIEW; - n->relation = (yyvsp[(5) - (8)].range); - n->newschema = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 475 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 22545 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1082: -#line 6 "third_party/libpg_query/grammar/statements/checkpoint.y" - { - PGCheckPointStmt *n = makeNode(PGCheckPointStmt); - n->force = true; - (yyval.node) = (PGNode *)n; - ;} +#line 476 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 22551 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1083: -#line 12 "third_party/libpg_query/grammar/statements/checkpoint.y" - { - PGCheckPointStmt *n = makeNode(PGCheckPointStmt); - n->force = false; - (yyval.node) = (PGNode *)n; - ;} +#line 480 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 22557 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1084: -#line 8 "third_party/libpg_query/grammar/statements/export.y" - { - PGExportStmt *n = makeNode(PGExportStmt); - n->filename = (yyvsp[(3) - (4)].str); - n->options = NIL; - if ((yyvsp[(4) - (4)].list)) { - n->options = list_concat(n->options, (yyvsp[(4) - (4)].list)); - } - (yyval.node) = (PGNode *)n; - ;} +#line 482 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-3].str)), (yyvsp[-2].list))); + (yyval.typnam)->pct_type = true; + (yyval.typnam)->location = (yylsp[-3]); + } +#line 22567 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1085: -#line 21 "third_party/libpg_query/grammar/statements/export.y" - { - PGImportStmt *n = makeNode(PGImportStmt); - n->filename = (yyvsp[(3) - (3)].str); - (yyval.node) = (PGNode *)n; - ;} +#line 488 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-3].str)), (yyvsp[-2].list))); + (yyval.typnam)->pct_type = true; + (yyval.typnam)->setof = true; + (yyval.typnam)->location = (yylsp[-3]); + } +#line 22578 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1086: -#line 10 "third_party/libpg_query/grammar/statements/explain.y" - { - PGExplainStmt *n = makeNode(PGExplainStmt); - n->query = (yyvsp[(2) - (2)].node); - n->options = NIL; - (yyval.node) = (PGNode *) n; - ;} +#line 499 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_CHECK; + n->location = (yylsp[-4]); + n->raw_expr = (yyvsp[-2].node); + n->cooked_expr = NULL; + processCASbits((yyvsp[0].ival), (yylsp[0]), "CHECK", + NULL, NULL, &n->skip_validation, + &n->is_no_inherit, yyscanner); + n->initially_valid = !n->skip_validation; + (yyval.node) = (PGNode *)n; + } +#line 22595 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1087: -#line 17 "third_party/libpg_query/grammar/statements/explain.y" - { - PGExplainStmt *n = makeNode(PGExplainStmt); - n->query = (yyvsp[(4) - (4)].node); - n->options = list_make1(makeDefElem("analyze", NULL, (yylsp[(2) - (4)]))); - if ((yyvsp[(3) - (4)].boolean)) - n->options = lappend(n->options, - makeDefElem("verbose", NULL, (yylsp[(3) - (4)]))); - (yyval.node) = (PGNode *) n; - ;} +#line 513 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_UNIQUE; + n->location = (yylsp[-5]); + n->keys = (yyvsp[-3].list); + n->options = (yyvsp[-1].list); + n->indexname = NULL; + processCASbits((yyvsp[0].ival), (yylsp[0]), "UNIQUE", + &n->deferrable, &n->initdeferred, NULL, + NULL, yyscanner); + (yyval.node) = (PGNode *)n; + } +#line 22612 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1088: -#line 27 "third_party/libpg_query/grammar/statements/explain.y" - { - PGExplainStmt *n = makeNode(PGExplainStmt); - n->query = (yyvsp[(3) - (3)].node); - n->options = list_make1(makeDefElem("verbose", NULL, (yylsp[(2) - (3)]))); - (yyval.node) = (PGNode *) n; - ;} +#line 526 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_UNIQUE; + n->location = (yylsp[-2]); + n->keys = NIL; + n->options = NIL; + n->indexname = (yyvsp[-1].str); + n->indexspace = NULL; + processCASbits((yyvsp[0].ival), (yylsp[0]), "UNIQUE", + &n->deferrable, &n->initdeferred, NULL, + NULL, yyscanner); + (yyval.node) = (PGNode *)n; + } +#line 22630 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1089: -#line 34 "third_party/libpg_query/grammar/statements/explain.y" - { - PGExplainStmt *n = makeNode(PGExplainStmt); - n->query = (yyvsp[(5) - (5)].node); - n->options = (yyvsp[(3) - (5)].list); - (yyval.node) = (PGNode *) n; - ;} +#line 541 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_PRIMARY; + n->location = (yylsp[-6]); + n->keys = (yyvsp[-3].list); + n->options = (yyvsp[-1].list); + n->indexname = NULL; + processCASbits((yyvsp[0].ival), (yylsp[0]), "PRIMARY KEY", + &n->deferrable, &n->initdeferred, NULL, + NULL, yyscanner); + (yyval.node) = (PGNode *)n; + } +#line 22647 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1090: -#line 44 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.boolean) = true; ;} +#line 554 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_PRIMARY; + n->location = (yylsp[-3]); + n->keys = NIL; + n->options = NIL; + n->indexname = (yyvsp[-1].str); + n->indexspace = NULL; + processCASbits((yyvsp[0].ival), (yylsp[0]), "PRIMARY KEY", + &n->deferrable, &n->initdeferred, NULL, + NULL, yyscanner); + (yyval.node) = (PGNode *)n; + } +#line 22665 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1091: -#line 45 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.boolean) = false; ;} +#line 569 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_FOREIGN; + n->location = (yylsp[-10]); + n->pktable = (yyvsp[-4].range); + n->fk_attrs = (yyvsp[-7].list); + n->pk_attrs = (yyvsp[-3].list); + n->fk_matchtype = (yyvsp[-2].ival); + n->fk_upd_action = (char) ((yyvsp[-1].ival) >> 8); + n->fk_del_action = (char) ((yyvsp[-1].ival) & 0xFF); + processCASbits((yyvsp[0].ival), (yylsp[0]), "FOREIGN KEY", + &n->deferrable, &n->initdeferred, + &n->skip_validation, NULL, + yyscanner); + n->initially_valid = !n->skip_validation; + (yyval.node) = (PGNode *)n; + } +#line 22687 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1092: -#line 50 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} +#line 591 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.list) = list_make1((yyvsp[0].node)); + } +#line 22695 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1093: -#line 51 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].value); ;} +#line 595 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + } +#line 22703 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1094: -#line 52 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.node) = NULL; ;} +#line 602 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.ival) = PG_FKCONSTR_MATCH_FULL; + } +#line 22711 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1095: +#line 606 "third_party/libpg_query/grammar/statements/create.y" + { + ereport(ERROR, + (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("MATCH PARTIAL not yet implemented"), + parser_errposition((yylsp[-1])))); + (yyval.ival) = PG_FKCONSTR_MATCH_PARTIAL; + } +#line 22723 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1096: +#line 614 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.ival) = PG_FKCONSTR_MATCH_SIMPLE; + } +#line 22731 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1097: +#line 618 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.ival) = PG_FKCONSTR_MATCH_SIMPLE; + } +#line 22739 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1098: +#line 626 "third_party/libpg_query/grammar/statements/create.y" + { + PGTableLikeClause *n = makeNode(PGTableLikeClause); + n->relation = (yyvsp[-1].range); + n->options = (yyvsp[0].ival); + (yyval.node) = (PGNode *)n; + } +#line 22750 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1099: +#line 635 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_RELPERSISTENCE_TEMP; } +#line 22756 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1100: -#line 65 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 636 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_RELPERSISTENCE_TEMP; } +#line 22762 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1101: -#line 66 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 637 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_RELPERSISTENCE_TEMP; } +#line 22768 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1102: -#line 67 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 638 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_RELPERSISTENCE_TEMP; } +#line 22774 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1103: -#line 72 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 640 "third_party/libpg_query/grammar/statements/create.y" + { + ereport(PGWARNING, + (errmsg("GLOBAL is deprecated in temporary table creation"), + parser_errposition((yylsp[-1])))); + (yyval.ival) = PG_RELPERSISTENCE_TEMP; + } +#line 22785 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1104: -#line 73 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 647 "third_party/libpg_query/grammar/statements/create.y" + { + ereport(PGWARNING, + (errmsg("GLOBAL is deprecated in temporary table creation"), + parser_errposition((yylsp[-1])))); + (yyval.ival) = PG_RELPERSISTENCE_TEMP; + } +#line 22796 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1105: -#line 79 "third_party/libpg_query/grammar/statements/explain.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); - ;} +#line 653 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_RELPERSISTENCE_UNLOGGED; } +#line 22802 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1106: -#line 83 "third_party/libpg_query/grammar/statements/explain.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); - ;} +#line 654 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = RELPERSISTENCE_PERMANENT; } +#line 22808 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1107: -#line 90 "third_party/libpg_query/grammar/statements/explain.y" - {;} +#line 659 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_ATTRIBUTE_IDENTITY_ALWAYS; } +#line 22814 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1108: -#line 91 "third_party/libpg_query/grammar/statements/explain.y" - {;} +#line 660 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = ATTRIBUTE_IDENTITY_BY_DEFAULT; } +#line 22820 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1109: -#line 96 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (char*) "true"; ;} +#line 8 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 22833 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1110: -#line 97 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (char*) "false"; ;} +#line 17 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 22846 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1111: -#line 98 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (char*) "on"; ;} +#line 26 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_SEQUENCE; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 22859 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1112: -#line 104 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 35 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_SEQUENCE; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 22872 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1113: -#line 110 "third_party/libpg_query/grammar/statements/explain.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); - ;} +#line 44 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_VIEW; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 22885 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1114: -#line 117 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 53 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_VIEW; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 22898 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1115: -#line 118 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (char*) "analyze"; ;} +#line 12 "third_party/libpg_query/grammar/statements/update.y" + { + PGUpdateStmt *n = makeNode(PGUpdateStmt); + n->relation = (yyvsp[-5].range); + n->targetList = (yyvsp[-3].list); + n->fromClause = (yyvsp[-2].list); + n->whereClause = (yyvsp[-1].node); + n->returningList = (yyvsp[0].list); + n->withClause = (yyvsp[-7].with); + (yyval.node) = (PGNode *)n; + } +#line 22913 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1116: -#line 11 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = (yyvsp[(2) - (2)].vsetstmt); - n->is_local = false; - (yyval.node) = (PGNode *) n; - ;} +#line 10 "third_party/libpg_query/grammar/statements/analyze.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_ANALYZE; + if ((yyvsp[0].boolean)) + n->options |= PG_VACOPT_VERBOSE; + n->relation = NULL; + n->va_cols = NIL; + (yyval.node) = (PGNode *)n; + } +#line 22927 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1117: -#line 17 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); - n->is_local = true; - (yyval.node) = (PGNode *) n; - ;} +#line 20 "third_party/libpg_query/grammar/statements/analyze.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_ANALYZE; + if ((yyvsp[-2].boolean)) + n->options |= PG_VACOPT_VERBOSE; + n->relation = (yyvsp[-1].range); + n->va_cols = (yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 22941 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1118: -#line 23 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); - n->is_local = false; - (yyval.node) = (PGNode *) n; - ;} +#line 3 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowSelectStmt *n = makeNode(PGVariableShowSelectStmt); + n->stmt = (yyvsp[0].node); + n->name = (char*) "select"; + n->is_summary = 0; + (yyval.node) = (PGNode *) n; + } +#line 22953 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1119: -#line 32 "third_party/libpg_query/grammar/statements/variable_set.y" - {(yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt);;} +#line 10 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowSelectStmt *n = makeNode(PGVariableShowSelectStmt); + n->stmt = (yyvsp[0].node); + n->name = (char*) "select"; + n->is_summary = 1; + (yyval.node) = (PGNode *) n; + } +#line 22965 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1120: -#line 34 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_SET_CURRENT; - n->name = (yyvsp[(1) - (3)].str); - (yyval.vsetstmt) = n; - ;} +#line 18 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowStmt *n = makeNode(PGVariableShowStmt); + n->name = (yyvsp[0].str); + n->is_summary = 1; + (yyval.node) = (PGNode *) n; + } +#line 22976 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1121: -#line 42 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_SET_VALUE; - n->name = (char*) "timezone"; - if ((yyvsp[(3) - (3)].node) != NULL) - n->args = list_make1((yyvsp[(3) - (3)].node)); - else - n->kind = VAR_SET_DEFAULT; - (yyval.vsetstmt) = n; - ;} +#line 25 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowStmt *n = makeNode(PGVariableShowStmt); + n->name = (yyvsp[0].str); + n->is_summary = 0; + (yyval.node) = (PGNode *) n; + } +#line 22987 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1122: -#line 53 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_SET_VALUE; - n->name = (char*) "search_path"; - n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); - (yyval.vsetstmt) = n; - ;} +#line 32 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowStmt *n = makeNode(PGVariableShowStmt); + n->name = (char*) "timezone"; + n->is_summary = 0; + (yyval.node) = (PGNode *) n; + } +#line 22998 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1123: -#line 65 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_SET_VALUE; - n->name = (yyvsp[(1) - (3)].str); - n->args = (yyvsp[(3) - (3)].list); - (yyval.vsetstmt) = n; - ;} +#line 39 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowStmt *n = makeNode(PGVariableShowStmt); + n->name = (char*) "transaction_isolation"; + n->is_summary = 0; + (yyval.node) = (PGNode *) n; + } +#line 23009 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1124: -#line 73 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_SET_VALUE; - n->name = (yyvsp[(1) - (3)].str); - n->args = (yyvsp[(3) - (3)].list); - (yyval.vsetstmt) = n; - ;} - break; - - case 1125: -#line 81 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_SET_DEFAULT; - n->name = (yyvsp[(1) - (3)].str); - (yyval.vsetstmt) = n; - ;} - break; - - case 1126: -#line 88 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_SET_DEFAULT; - n->name = (yyvsp[(1) - (3)].str); - (yyval.vsetstmt) = n; - ;} +#line 46 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowStmt *n = makeNode(PGVariableShowStmt); + n->name = (char*) "all"; + n->is_summary = 0; + (yyval.node) = (PGNode *) n; + } +#line 23020 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1127: -#line 98 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} +#line 57 "third_party/libpg_query/grammar/statements/variable_show.y" + { (yyval.str) = (yyvsp[0].str); } +#line 23026 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1128: -#line 100 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); ;} +#line 59 "third_party/libpg_query/grammar/statements/variable_show.y" + { (yyval.str) = psprintf("%s.%s", (yyvsp[-2].str), (yyvsp[0].str)); } +#line 23032 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1129: -#line 106 "third_party/libpg_query/grammar/statements/variable_set.y" - { - (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} +#line 7 "third_party/libpg_query/grammar/statements/call.y" + { + PGCallStmt *n = makeNode(PGCallStmt); + n->func = (yyvsp[0].node); + (yyval.node) = (PGNode *) n; + } +#line 23042 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1130: -#line 110 "third_party/libpg_query/grammar/statements/variable_set.y" - { - (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} +#line 3 "third_party/libpg_query/grammar/statements/copy.y" + { + PGCopyStmt *n = makeNode(PGCopyStmt); + n->relation = (yyvsp[-8].range); + n->query = NULL; + n->attlist = (yyvsp[-7].list); + n->is_from = (yyvsp[-5].boolean); + n->is_program = (yyvsp[-4].boolean); + n->filename = (yyvsp[-3].str); + + if (n->is_program && n->filename == NULL) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("STDIN/STDOUT not allowed with PROGRAM"), + parser_errposition((yylsp[-3])))); + + n->options = NIL; + /* Concatenate user-supplied flags */ + if ((yyvsp[-9].defelt)) + n->options = lappend(n->options, (yyvsp[-9].defelt)); + if ((yyvsp[-6].defelt)) + n->options = lappend(n->options, (yyvsp[-6].defelt)); + if ((yyvsp[-2].defelt)) + n->options = lappend(n->options, (yyvsp[-2].defelt)); + if ((yyvsp[0].list)) + n->options = list_concat(n->options, (yyvsp[0].list)); + (yyval.node) = (PGNode *)n; + } +#line 23074 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1131: -#line 114 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGTypeName *t = (yyvsp[(1) - (3)].typnam); - if ((yyvsp[(3) - (3)].list) != NIL) - { - PGAConst *n = (PGAConst *) linitial((yyvsp[(3) - (3)].list)); - if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), - parser_errposition((yylsp[(3) - (3)])))); - } - t->typmods = (yyvsp[(3) - (3)].list); - (yyval.node) = makeStringConstCast((yyvsp[(2) - (3)].str), (yylsp[(2) - (3)]), t); - ;} +#line 31 "third_party/libpg_query/grammar/statements/copy.y" + { + PGCopyStmt *n = makeNode(PGCopyStmt); + n->relation = NULL; + n->query = (yyvsp[-6].node); + n->attlist = NIL; + n->is_from = false; + n->is_program = (yyvsp[-3].boolean); + n->filename = (yyvsp[-2].str); + n->options = (yyvsp[0].list); + + if (n->is_program && n->filename == NULL) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("STDIN/STDOUT not allowed with PROGRAM"), + parser_errposition((yylsp[-4])))); + + (yyval.node) = (PGNode *)n; + } +#line 23097 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1132: -#line 129 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGTypeName *t = (yyvsp[(1) - (5)].typnam); - t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), - makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); - (yyval.node) = makeStringConstCast((yyvsp[(5) - (5)].str), (yylsp[(5) - (5)]), t); - ;} +#line 53 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.boolean) = true; } +#line 23103 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1133: -#line 135 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); ;} +#line 54 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.boolean) = false; } +#line 23109 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1134: -#line 136 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.node) = NULL; ;} +#line 60 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("delimiter", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-1])); + } +#line 23117 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1135: -#line 137 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.node) = NULL; ;} +#line 63 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.defelt) = NULL; } +#line 23123 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1136: -#line 141 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 69 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.list) = list_make1((yyvsp[0].node)); + } +#line 23131 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1137: -#line 142 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} +#line 73 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + } +#line 23139 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1138: -#line 8 "third_party/libpg_query/grammar/statements/load.y" - { - PGLoadStmt *n = makeNode(PGLoadStmt); - n->filename = (yyvsp[(2) - (2)].str); - (yyval.node) = (PGNode *)n; - ;} +#line 80 "third_party/libpg_query/grammar/statements/copy.y" + {} +#line 23145 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1139: -#line 16 "third_party/libpg_query/grammar/statements/load.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 81 "third_party/libpg_query/grammar/statements/copy.y" + {} +#line 23151 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1140: -#line 9 "third_party/libpg_query/grammar/statements/vacuum.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_VACUUM; - if ((yyvsp[(2) - (4)].boolean)) - n->options |= PG_VACOPT_FULL; - if ((yyvsp[(3) - (4)].boolean)) - n->options |= PG_VACOPT_FREEZE; - if ((yyvsp[(4) - (4)].boolean)) - n->options |= PG_VACOPT_VERBOSE; - n->relation = NULL; - n->va_cols = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 85 "third_party/libpg_query/grammar/statements/copy.y" + {} +#line 23157 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1141: -#line 23 "third_party/libpg_query/grammar/statements/vacuum.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_VACUUM; - if ((yyvsp[(2) - (5)].boolean)) - n->options |= PG_VACOPT_FULL; - if ((yyvsp[(3) - (5)].boolean)) - n->options |= PG_VACOPT_FREEZE; - if ((yyvsp[(4) - (5)].boolean)) - n->options |= PG_VACOPT_VERBOSE; - n->relation = (yyvsp[(5) - (5)].range); - n->va_cols = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 86 "third_party/libpg_query/grammar/statements/copy.y" + {} +#line 23163 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1142: -#line 37 "third_party/libpg_query/grammar/statements/vacuum.y" - { - PGVacuumStmt *n = (PGVacuumStmt *) (yyvsp[(5) - (5)].node); - n->options |= PG_VACOPT_VACUUM; - if ((yyvsp[(2) - (5)].boolean)) - n->options |= PG_VACOPT_FULL; - if ((yyvsp[(3) - (5)].boolean)) - n->options |= PG_VACOPT_FREEZE; - if ((yyvsp[(4) - (5)].boolean)) - n->options |= PG_VACOPT_VERBOSE; - (yyval.node) = (PGNode *)n; - ;} +#line 91 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.boolean) = true; } +#line 23169 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1143: -#line 49 "third_party/libpg_query/grammar/statements/vacuum.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_VACUUM | (yyvsp[(3) - (4)].ival); - n->relation = NULL; - n->va_cols = NIL; - (yyval.node) = (PGNode *) n; - ;} +#line 92 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.boolean) = false; } +#line 23175 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1144: -#line 57 "third_party/libpg_query/grammar/statements/vacuum.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_VACUUM | (yyvsp[(3) - (6)].ival); - n->relation = (yyvsp[(5) - (6)].range); - n->va_cols = (yyvsp[(6) - (6)].list); - if (n->va_cols != NIL) /* implies analyze */ - n->options |= PG_VACOPT_ANALYZE; - (yyval.node) = (PGNode *) n; - ;} +#line 96 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.list) = (yyvsp[0].list); } +#line 23181 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1145: -#line 70 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = PG_VACOPT_ANALYZE; ;} +#line 97 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 23187 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1146: -#line 71 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = PG_VACOPT_VERBOSE; ;} +#line 102 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); } +#line 23193 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1147: -#line 72 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = PG_VACOPT_FREEZE; ;} +#line 103 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = (PGNode *) (yyvsp[0].value); } +#line 23199 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1148: -#line 73 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = PG_VACOPT_FULL; ;} +#line 104 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = (PGNode *) makeNode(PGAStar); } +#line 23205 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1149: -#line 75 "third_party/libpg_query/grammar/statements/vacuum.y" - { - if (strcmp((yyvsp[(1) - (1)].str), "disable_page_skipping") == 0) - (yyval.ival) = PG_VACOPT_DISABLE_PAGE_SKIPPING; - else - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("unrecognized VACUUM option \"%s\"", (yyvsp[(1) - (1)].str)), - parser_errposition((yylsp[(1) - (1)])))); - ;} +#line 105 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = (PGNode *) (yyvsp[-1].list); } +#line 23211 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1150: -#line 87 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.boolean) = true; ;} +#line 106 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = NULL; } +#line 23217 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1151: -#line 88 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.boolean) = false; ;} +#line 112 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node), (yylsp[-1])); + } +#line 23225 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1152: -#line 93 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} +#line 120 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("oids", (PGNode *)makeInteger(true), (yylsp[-1])); + } +#line 23233 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1153: -#line 94 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} +#line 123 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.defelt) = NULL; } +#line 23239 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1154: -#line 98 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.boolean) = true; ;} +#line 128 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } +#line 23245 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1155: -#line 99 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.boolean) = false; ;} +#line 129 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.list) = NIL; } +#line 23251 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1156: -#line 9 "third_party/libpg_query/grammar/statements/delete.y" - { - PGDeleteStmt *n = makeNode(PGDeleteStmt); - n->relation = (yyvsp[(4) - (7)].range); - n->usingClause = (yyvsp[(5) - (7)].list); - n->whereClause = (yyvsp[(6) - (7)].node); - n->returningList = (yyvsp[(7) - (7)].list); - n->withClause = (yyvsp[(1) - (7)].with); - (yyval.node) = (PGNode *)n; - ;} +#line 135 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("binary"), (yylsp[0])); + } +#line 23259 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1157: -#line 22 "third_party/libpg_query/grammar/statements/delete.y" - { - (yyval.range) = (yyvsp[(1) - (1)].range); - ;} +#line 138 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.defelt) = NULL; } +#line 23265 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1158: -#line 26 "third_party/libpg_query/grammar/statements/delete.y" - { - PGAlias *alias = makeNode(PGAlias); - alias->aliasname = (yyvsp[(2) - (2)].str); - (yyvsp[(1) - (2)].range)->alias = alias; - (yyval.range) = (yyvsp[(1) - (2)].range); - ;} +#line 144 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("binary"), (yylsp[0])); + } +#line 23273 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1159: -#line 33 "third_party/libpg_query/grammar/statements/delete.y" - { - PGAlias *alias = makeNode(PGAlias); - alias->aliasname = (yyvsp[(3) - (3)].str); - (yyvsp[(1) - (3)].range)->alias = alias; - (yyval.range) = (yyvsp[(1) - (3)].range); - ;} +#line 148 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("oids", (PGNode *)makeInteger(true), (yylsp[0])); + } +#line 23281 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1160: -#line 43 "third_party/libpg_query/grammar/statements/delete.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 152 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("freeze", (PGNode *)makeInteger(true), (yylsp[0])); + } +#line 23289 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1161: -#line 44 "third_party/libpg_query/grammar/statements/delete.y" - { (yyval.node) = NULL; ;} +#line 156 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("delimiter", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-2])); + } +#line 23297 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1162: -#line 50 "third_party/libpg_query/grammar/statements/delete.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 160 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("null", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-2])); + } +#line 23305 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1163: -#line 51 "third_party/libpg_query/grammar/statements/delete.y" - { (yyval.list) = NIL; ;} +#line 164 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("csv"), (yylsp[0])); + } +#line 23313 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1164: -#line 10 "third_party/libpg_query/grammar/statements/analyze.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_ANALYZE; - if ((yyvsp[(2) - (2)].boolean)) - n->options |= PG_VACOPT_VERBOSE; - n->relation = NULL; - n->va_cols = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 168 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("header", (PGNode *)makeInteger(true), (yylsp[0])); + } +#line 23321 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1165: -#line 20 "third_party/libpg_query/grammar/statements/analyze.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_ANALYZE; - if ((yyvsp[(2) - (4)].boolean)) - n->options |= PG_VACOPT_VERBOSE; - n->relation = (yyvsp[(3) - (4)].range); - n->va_cols = (yyvsp[(4) - (4)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 172 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("quote", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-2])); + } +#line 23329 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1166: -#line 2 "third_party/libpg_query/grammar/statements/variable_reset.y" - { (yyval.node) = (PGNode *) (yyvsp[(2) - (2)].vsetstmt); ;} +#line 176 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("escape", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-2])); + } +#line 23337 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1167: -#line 8 "third_party/libpg_query/grammar/statements/variable_reset.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_RESET; - n->name = (yyvsp[(1) - (1)].str); - (yyval.vsetstmt) = n; - ;} +#line 180 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("force_quote", (PGNode *)(yyvsp[0].list), (yylsp[-2])); + } +#line 23345 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1168: -#line 15 "third_party/libpg_query/grammar/statements/variable_reset.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_RESET_ALL; - (yyval.vsetstmt) = n; - ;} +#line 184 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("force_quote", (PGNode *)makeNode(PGAStar), (yylsp[-2])); + } +#line 23353 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1169: -#line 24 "third_party/libpg_query/grammar/statements/variable_reset.y" - { (yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt); ;} +#line 188 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("force_not_null", (PGNode *)(yyvsp[0].list), (yylsp[-3])); + } +#line 23361 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1170: -#line 26 "third_party/libpg_query/grammar/statements/variable_reset.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_RESET; - n->name = (char*) "timezone"; - (yyval.vsetstmt) = n; - ;} +#line 192 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("force_null", (PGNode *)(yyvsp[0].list), (yylsp[-2])); + } +#line 23369 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1171: -#line 33 "third_party/libpg_query/grammar/statements/variable_reset.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_RESET; - n->name = (char*) "transaction_isolation"; - (yyval.vsetstmt) = n; - ;} +#line 196 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("encoding", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-1])); + } +#line 23377 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1172: -#line 3 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowSelectStmt *n = makeNode(PGVariableShowSelectStmt); - n->stmt = (yyvsp[(2) - (2)].node); - n->name = (char*) "select"; - (yyval.node) = (PGNode *) n; - ;} +#line 203 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); } +#line 23383 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1173: -#line 11 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowStmt *n = makeNode(PGVariableShowStmt); - n->name = (yyvsp[(2) - (2)].str); - (yyval.node) = (PGNode *) n; - ;} +#line 209 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.str) = (yyvsp[0].str); } +#line 23389 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1174: -#line 17 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowStmt *n = makeNode(PGVariableShowStmt); - n->name = (char*) "timezone"; - (yyval.node) = (PGNode *) n; - ;} +#line 210 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.str) = NULL; } +#line 23395 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1175: -#line 23 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowStmt *n = makeNode(PGVariableShowStmt); - n->name = (char*) "transaction_isolation"; - (yyval.node) = (PGNode *) n; - ;} +#line 211 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.str) = NULL; } +#line 23401 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1176: -#line 29 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowStmt *n = makeNode(PGVariableShowStmt); - n->name = (char*) "all"; - (yyval.node) = (PGNode *) n; - ;} +#line 217 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.list) = list_make1((yyvsp[0].defelt)); + } +#line 23409 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1177: +#line 221 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + } +#line 23417 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1178: +#line 6 "third_party/libpg_query/grammar/statements/checkpoint.y" + { + PGCheckPointStmt *n = makeNode(PGCheckPointStmt); + n->force = true; + (yyval.node) = (PGNode *)n; + } +#line 23427 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1179: -#line 39 "third_party/libpg_query/grammar/statements/variable_show.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 12 "third_party/libpg_query/grammar/statements/checkpoint.y" + { + PGCheckPointStmt *n = makeNode(PGCheckPointStmt); + n->force = false; + (yyval.node) = (PGNode *)n; + } +#line 23437 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1180: -#line 41 "third_party/libpg_query/grammar/statements/variable_show.y" - { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); ;} +#line 2 "third_party/libpg_query/grammar/statements/variable_reset.y" + { (yyval.node) = (PGNode *) (yyvsp[0].vsetstmt); } +#line 23443 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1181: -#line 7 "third_party/libpg_query/grammar/statements/call.y" - { - PGCallStmt *n = makeNode(PGCallStmt); - n->func = (yyvsp[(2) - (2)].node); - (yyval.node) = (PGNode *) n; - ;} +#line 8 "third_party/libpg_query/grammar/statements/variable_reset.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_RESET; + n->name = (yyvsp[0].str); + (yyval.vsetstmt) = n; + } +#line 23454 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1182: -#line 10 "third_party/libpg_query/grammar/statements/view.y" - { - PGViewStmt *n = makeNode(PGViewStmt); - n->view = (yyvsp[(4) - (9)].range); - n->view->relpersistence = (yyvsp[(2) - (9)].ival); - n->aliases = (yyvsp[(5) - (9)].list); - n->query = (yyvsp[(8) - (9)].node); - n->replace = false; - n->options = (yyvsp[(6) - (9)].list); - n->withCheckOption = (yyvsp[(9) - (9)].viewcheckoption); - (yyval.node) = (PGNode *) n; - ;} +#line 15 "third_party/libpg_query/grammar/statements/variable_reset.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_RESET_ALL; + (yyval.vsetstmt) = n; + } +#line 23464 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1183: -#line 23 "third_party/libpg_query/grammar/statements/view.y" - { - PGViewStmt *n = makeNode(PGViewStmt); - n->view = (yyvsp[(6) - (11)].range); - n->view->relpersistence = (yyvsp[(4) - (11)].ival); - n->aliases = (yyvsp[(7) - (11)].list); - n->query = (yyvsp[(10) - (11)].node); - n->replace = true; - n->options = (yyvsp[(8) - (11)].list); - n->withCheckOption = (yyvsp[(11) - (11)].viewcheckoption); - (yyval.node) = (PGNode *) n; - ;} +#line 24 "third_party/libpg_query/grammar/statements/variable_reset.y" + { (yyval.vsetstmt) = (yyvsp[0].vsetstmt); } +#line 23470 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1184: -#line 36 "third_party/libpg_query/grammar/statements/view.y" - { - PGViewStmt *n = makeNode(PGViewStmt); - n->view = (yyvsp[(5) - (12)].range); - n->view->relpersistence = (yyvsp[(2) - (12)].ival); - n->aliases = (yyvsp[(7) - (12)].list); - n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[(11) - (12)].node)); - n->replace = false; - n->options = (yyvsp[(9) - (12)].list); - n->withCheckOption = (yyvsp[(12) - (12)].viewcheckoption); - if (n->withCheckOption != PG_NO_CHECK_OPTION) - ereport(ERROR, - (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("WITH CHECK OPTION not supported on recursive views"), - parser_errposition((yylsp[(12) - (12)])))); - (yyval.node) = (PGNode *) n; - ;} +#line 26 "third_party/libpg_query/grammar/statements/variable_reset.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_RESET; + n->name = (char*) "timezone"; + (yyval.vsetstmt) = n; + } +#line 23481 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1185: -#line 54 "third_party/libpg_query/grammar/statements/view.y" - { - PGViewStmt *n = makeNode(PGViewStmt); - n->view = (yyvsp[(7) - (14)].range); - n->view->relpersistence = (yyvsp[(4) - (14)].ival); - n->aliases = (yyvsp[(9) - (14)].list); - n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[(13) - (14)].node)); - n->replace = true; - n->options = (yyvsp[(11) - (14)].list); - n->withCheckOption = (yyvsp[(14) - (14)].viewcheckoption); - if (n->withCheckOption != PG_NO_CHECK_OPTION) - ereport(ERROR, - (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("WITH CHECK OPTION not supported on recursive views"), - parser_errposition((yylsp[(14) - (14)])))); - (yyval.node) = (PGNode *) n; - ;} +#line 33 "third_party/libpg_query/grammar/statements/variable_reset.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_RESET; + n->name = (char*) "transaction_isolation"; + (yyval.vsetstmt) = n; + } +#line 23492 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1186: -#line 74 "third_party/libpg_query/grammar/statements/view.y" - { (yyval.viewcheckoption) = CASCADED_CHECK_OPTION; ;} - break; - - case 1187: -#line 75 "third_party/libpg_query/grammar/statements/view.y" - { (yyval.viewcheckoption) = CASCADED_CHECK_OPTION; ;} - break; - - case 1188: -#line 76 "third_party/libpg_query/grammar/statements/view.y" - { (yyval.viewcheckoption) = PG_LOCAL_CHECK_OPTION; ;} +#line 8 "third_party/libpg_query/grammar/statements/create_function.y" + { + PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); + n->name = (yyvsp[-3].range); + n->params = (yyvsp[-2].list); + n->function = (yyvsp[0].node); + (yyval.node) = (PGNode *)n; + } +#line 23504 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1189: -#line 77 "third_party/libpg_query/grammar/statements/view.y" - { (yyval.viewcheckoption) = PG_NO_CHECK_OPTION; ;} +#line 24 "third_party/libpg_query/grammar/statements/create_function.y" + { + (yyval.list) = NIL; + } +#line 23512 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1190: -#line 12 "third_party/libpg_query/grammar/statements/create_as.y" - { - PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); - ctas->query = (yyvsp[(6) - (7)].node); - ctas->into = (yyvsp[(4) - (7)].into); - ctas->relkind = PG_OBJECT_TABLE; - ctas->is_select_into = false; - ctas->if_not_exists = false; - /* cram additional flags into the PGIntoClause */ - (yyvsp[(4) - (7)].into)->rel->relpersistence = (yyvsp[(2) - (7)].ival); - (yyvsp[(4) - (7)].into)->skipData = !((yyvsp[(7) - (7)].boolean)); - (yyval.node) = (PGNode *) ctas; - ;} +#line 28 "third_party/libpg_query/grammar/statements/create_function.y" + { + (yyval.list) = (yyvsp[-1].list); + } +#line 23520 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1191: -#line 25 "third_party/libpg_query/grammar/statements/create_as.y" - { - PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); - ctas->query = (yyvsp[(9) - (10)].node); - ctas->into = (yyvsp[(7) - (10)].into); - ctas->relkind = PG_OBJECT_TABLE; - ctas->is_select_into = false; - ctas->if_not_exists = true; - /* cram additional flags into the PGIntoClause */ - (yyvsp[(7) - (10)].into)->rel->relpersistence = (yyvsp[(2) - (10)].ival); - (yyvsp[(7) - (10)].into)->skipData = !((yyvsp[(10) - (10)].boolean)); - (yyval.node) = (PGNode *) ctas; - ;} +#line 9 "third_party/libpg_query/grammar/statements/delete.y" + { + PGDeleteStmt *n = makeNode(PGDeleteStmt); + n->relation = (yyvsp[-3].range); + n->usingClause = (yyvsp[-2].list); + n->whereClause = (yyvsp[-1].node); + n->returningList = (yyvsp[0].list); + n->withClause = (yyvsp[-6].with); + (yyval.node) = (PGNode *)n; + } +#line 23534 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1192: -#line 41 "third_party/libpg_query/grammar/statements/create_as.y" - { (yyval.boolean) = true; ;} +#line 22 "third_party/libpg_query/grammar/statements/delete.y" + { + (yyval.range) = (yyvsp[0].range); + } +#line 23542 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1193: -#line 42 "third_party/libpg_query/grammar/statements/create_as.y" - { (yyval.boolean) = false; ;} +#line 26 "third_party/libpg_query/grammar/statements/delete.y" + { + PGAlias *alias = makeNode(PGAlias); + alias->aliasname = (yyvsp[0].str); + (yyvsp[-1].range)->alias = alias; + (yyval.range) = (yyvsp[-1].range); + } +#line 23553 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1194: -#line 43 "third_party/libpg_query/grammar/statements/create_as.y" - { (yyval.boolean) = true; ;} +#line 33 "third_party/libpg_query/grammar/statements/delete.y" + { + PGAlias *alias = makeNode(PGAlias); + alias->aliasname = (yyvsp[0].str); + (yyvsp[-2].range)->alias = alias; + (yyval.range) = (yyvsp[-2].range); + } +#line 23564 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1195: -#line 49 "third_party/libpg_query/grammar/statements/create_as.y" - { - (yyval.into) = makeNode(PGIntoClause); - (yyval.into)->rel = (yyvsp[(1) - (4)].range); - (yyval.into)->colNames = (yyvsp[(2) - (4)].list); - (yyval.into)->options = (yyvsp[(3) - (4)].list); - (yyval.into)->onCommit = (yyvsp[(4) - (4)].oncommit); - (yyval.into)->viewQuery = NULL; - (yyval.into)->skipData = false; /* might get changed later */ - ;} +#line 43 "third_party/libpg_query/grammar/statements/delete.y" + { (yyval.node) = (yyvsp[0].node); } +#line 23570 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1196: +#line 44 "third_party/libpg_query/grammar/statements/delete.y" + { (yyval.node) = NULL; } +#line 23576 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1197: +#line 50 "third_party/libpg_query/grammar/statements/delete.y" + { (yyval.list) = (yyvsp[0].list); } +#line 23582 "third_party/libpg_query/grammar/grammar_out.cpp" break; + case 1198: +#line 51 "third_party/libpg_query/grammar/statements/delete.y" + { (yyval.list) = NIL; } +#line 23588 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + +#line 23592 "third_party/libpg_query/grammar/grammar_out.cpp" -/* Line 1267 of yacc.c. */ -#line 23485 "third_party/libpg_query/grammar/grammar_out.cpp" default: break; } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); @@ -230744,25 +231047,28 @@ YYLTYPE yylloc; *++yyvsp = yyval; *++yylsp = yyloc; - /* Now `shift' the result of the reduction. Determine what state + /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { @@ -230770,62 +231076,61 @@ YYLTYPE yylloc; #if ! YYERROR_VERBOSE yyerror (&yylloc, yyscanner, YY_("syntax error")); #else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) { - YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); - if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) - { - YYSIZE_T yyalloc = 2 * yysize; - if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) - yyalloc = YYSTACK_ALLOC_MAXIMUM; - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yyalloc); - if (yymsg) - yymsg_alloc = yyalloc; - else - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - } - } - - if (0 < yysize && yysize <= yymsg_alloc) - { - (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (&yylloc, yyscanner, yymsg); - } - else - { - yyerror (&yylloc, yyscanner, YY_("syntax error")); - if (yysize != 0) - goto yyexhaustedlab; - } + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (&yylloc, yyscanner, yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; } +# undef YYSYNTAX_ERROR #endif } - yyerror_range[0] = yylloc; + yyerror_range[1] = yylloc; if (yyerrstatus == 3) { - /* If just tried and failed to reuse look-ahead token after an - error, discard it. */ + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, &yylloc, yyscanner); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, &yylloc, yyscanner); + yychar = YYEMPTY; + } } - /* Else will try to reuse look-ahead token after shifting the error + /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; @@ -230834,15 +231139,12 @@ YYLTYPE yylloc; | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - - yyerror_range[0] = yylsp[1-yylen]; - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -230855,43 +231157,42 @@ YYLTYPE yylloc; | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; - yyerror_range[0] = *yylsp; + yyerror_range[1] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp, yyscanner); + yystos[yystate], yyvsp, yylsp, yyscanner); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END - yyerror_range[1] = yylloc; + yyerror_range[2] = yylloc; /* Using YYLLOC is tempting, but would change the location of - the look-ahead. YYLOC is available though. */ - YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); + the lookahead. YYLOC is available though. */ + YYLLOC_DEFAULT (yyloc, yyerror_range, 2); *++yylsp = yyloc; /* Shift the error token. */ @@ -230908,6 +231209,7 @@ YYLTYPE yylloc; yyresult = 0; goto yyreturn; + /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -230915,7 +231217,8 @@ YYLTYPE yylloc; yyresult = 1; goto yyreturn; -#ifndef yyoverflow + +#if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -230925,18 +231228,27 @@ YYLTYPE yylloc; /* Fall through. */ #endif + +/*-----------------------------------------------------. +| yyreturn -- parsing is finished, return the result. | +`-----------------------------------------------------*/ yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval, &yylloc, yyscanner); - /* Do not reclaim the symbols of the rule which action triggered + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, &yylloc, yyscanner); + } + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, yylsp, yyscanner); + yystos[+*yyssp], yyvsp, yylsp, yyscanner); YYPOPSTACK (1); } #ifndef yyoverflow @@ -230947,12 +231259,9 @@ YYLTYPE yylloc; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } - - -#line 70 "third_party/libpg_query/grammar/statements/create_as.y" +#line 64 "third_party/libpg_query/grammar/statements/delete.y" #line 1 "third_party/libpg_query/grammar/grammar.cpp" @@ -232115,6 +232424,7 @@ PG_KEYWORD("strip", STRIP_P, UNRESERVED_KEYWORD) PG_KEYWORD("struct", STRUCT, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("subscription", SUBSCRIPTION, UNRESERVED_KEYWORD) PG_KEYWORD("substring", SUBSTRING, COL_NAME_KEYWORD) +PG_KEYWORD("summarize", SUMMARIZE, UNRESERVED_KEYWORD) PG_KEYWORD("symmetric", SYMMETRIC, RESERVED_KEYWORD) PG_KEYWORD("sysid", SYSID, UNRESERVED_KEYWORD) PG_KEYWORD("system", SYSTEM_P, UNRESERVED_KEYWORD) @@ -236964,28 +237274,28 @@ trademarks mentioned herein are the property of their respective owners. ### THIRD PARTY LICENSE #3 ### -Copyright 2013-2014 RAD Game Tools and Valve Software -Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC - -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Copyright 2013-2014 RAD Game Tools and Valve Software +Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC + +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/libduckdb-sys/duckdb/duckdb.hpp b/libduckdb-sys/duckdb/duckdb.hpp index 14a07d59..fba15054 100644 --- a/libduckdb-sys/duckdb/duckdb.hpp +++ b/libduckdb-sys/duckdb/duckdb.hpp @@ -10,8 +10,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI #pragma once #define DUCKDB_AMALGAMATION 1 -#define DUCKDB_SOURCE_ID "71f1c7a7e" -#define DUCKDB_VERSION "0.2.9-dev462" +#define DUCKDB_SOURCE_ID "1776611ab" +#define DUCKDB_VERSION "0.2.9" //===----------------------------------------------------------------------===// // DuckDB // @@ -3757,6 +3757,8 @@ class DataChunk { //! the two DataChunks have to match exactly. Throws an exception if there //! is not enough space in the chunk. DUCKDB_API void Append(const DataChunk &other); + //! Append a selection of the other DataChunk to this one + DUCKDB_API void Append(const DataChunk &other, const SelectionVector &sel, idx_t count); //! Destroy all data and columns owned by this DataChunk DUCKDB_API void Destroy(); @@ -3765,6 +3767,9 @@ class DataChunk { DUCKDB_API void Copy(DataChunk &other, const SelectionVector &sel, const idx_t source_count, const idx_t offset = 0) const; + //! Splits the DataChunk in two + DUCKDB_API void Split(DataChunk &other, idx_t split_idx); + //! Turn all the vectors from the chunk into flat vectors DUCKDB_API void Normalify(); @@ -3915,6 +3920,13 @@ struct VectorOperations { static idx_t DistinctLessThanEquals(Vector &left, Vector &right, const SelectionVector *sel, idx_t count, SelectionVector *true_sel, SelectionVector *false_sel); + // true := A > B with nulls being minimal + static idx_t DistinctGreaterThanNullsFirst(Vector &left, Vector &right, const SelectionVector *sel, idx_t count, + SelectionVector *true_sel, SelectionVector *false_sel); + // true := A < B with nulls being minimal + static idx_t DistinctLessThanNullsFirst(Vector &left, Vector &right, const SelectionVector *sel, idx_t count, + SelectionVector *true_sel, SelectionVector *false_sel); + //===--------------------------------------------------------------------===// // Nested Comparisons //===--------------------------------------------------------------------===// @@ -6141,6 +6153,14 @@ struct DistinctGreaterThan { } }; +struct DistinctGreaterThanNullsFirst { + template + static inline bool Operation(T left, T right, bool left_null, bool right_null) { + return GreaterThan::Operation(right_null, left_null) || + (!left_null && !right_null && GreaterThan::Operation(left, right)); + } +}; + struct DistinctGreaterThanEquals { template static inline bool Operation(T left, T right, bool left_null, bool right_null) { @@ -6156,6 +6176,14 @@ struct DistinctLessThan { } }; +struct DistinctLessThanNullsFirst { + template + static inline bool Operation(T left, T right, bool left_null, bool right_null) { + return LessThan::Operation(right_null, left_null) || + (!left_null && !right_null && LessThan::Operation(left, right)); + } +}; + struct DistinctLessThanEquals { template static inline bool Operation(T left, T right, bool left_null, bool right_null) { @@ -6991,6 +7019,7 @@ class NodeStatistics { + //===----------------------------------------------------------------------===// // DuckDB // @@ -7955,13 +7984,27 @@ class BoundResultModifier { }; struct BoundOrderByNode { +public: BoundOrderByNode(OrderType type, OrderByNullType null_order, unique_ptr expression) : type(type), null_order(null_order), expression(move(expression)) { } + BoundOrderByNode(OrderType type, OrderByNullType null_order, unique_ptr expression, + unique_ptr stats) + : type(type), null_order(null_order), expression(move(expression)), stats(move(stats)) { + } + + BoundOrderByNode Copy() const { + if (stats) { + return BoundOrderByNode(type, null_order, expression->Copy(), stats->Copy()); + } else { + return BoundOrderByNode(type, null_order, expression->Copy()); + } + } OrderType type; OrderByNullType null_order; unique_ptr expression; + unique_ptr stats; }; class BoundLimitModifier : public BoundResultModifier { @@ -8715,9 +8758,6 @@ class ChunkCollection { return result; } - DUCKDB_API void Heap(vector &desc, vector &null_order, idx_t heap[], idx_t heap_size); - DUCKDB_API idx_t MaterializeHeapChunk(DataChunk &target, idx_t order[], idx_t start_offset, idx_t heap_size); - private: //! The total amount of elements in the collection idx_t count; @@ -9649,6 +9689,9 @@ class AllocatedData { const_data_ptr_t get() const { return pointer; } + idx_t GetSize() const { + return allocated_size; + } void Reset(); private: @@ -11785,6 +11828,162 @@ class DefaultGenerator { } // namespace duckdb +//===----------------------------------------------------------------------===// +// DuckDB +// +// duckdb/common/case_insensitive_map.hpp +// +// +//===----------------------------------------------------------------------===// + + + + + + +//===----------------------------------------------------------------------===// +// DuckDB +// +// duckdb/common/string_util.hpp +// +// +//===----------------------------------------------------------------------===// + + + + + + + +namespace duckdb { +/** + * String Utility Functions + * Note that these are not the most efficient implementations (i.e., they copy + * memory) and therefore they should only be used for debug messages and other + * such things. + */ +class StringUtil { +public: + static bool CharacterIsSpace(char c) { + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; + } + static bool CharacterIsNewline(char c) { + return c == '\n' || c == '\r'; + } + static bool CharacterIsDigit(char c) { + return c >= '0' && c <= '9'; + } + static char CharacterToLower(char c) { + if (c >= 'A' && c <= 'Z') { + return c - ('A' - 'a'); + } + return c; + } + + //! Returns true if the needle string exists in the haystack + static bool Contains(const string &haystack, const string &needle); + + //! Returns true if the target string starts with the given prefix + static bool StartsWith(string str, string prefix); + + //! Returns true if the target string ends with the given suffix. + static bool EndsWith(const string &str, const string &suffix); + + //! Repeat a string multiple times + static string Repeat(const string &str, const idx_t n); + + //! Split the input string based on newline char + static vector Split(const string &str, char delimiter); + + //! Join multiple strings into one string. Components are concatenated by the given separator + static string Join(const vector &input, const string &separator); + + //! Join multiple items of container with given size, transformed to string + //! using function, into one string using the given separator + template + static string Join(const C &input, S count, const string &separator, Func f) { + // The result + std::string result; + + // If the input isn't empty, append the first element. We do this so we + // don't need to introduce an if into the loop. + if (count > 0) { + result += f(input[0]); + } + + // Append the remaining input components, after the first + for (size_t i = 1; i < count; i++) { + result += separator + f(input[i]); + } + + return result; + } + + //! Return a string that formats the give number of bytes + static string BytesToHumanReadableString(idx_t bytes); + + //! Convert a string to uppercase + static string Upper(const string &str); + + //! Convert a string to lowercase + static string Lower(const string &str); + + //! Format a string using printf semantics + template + static string Format(const string fmt_str, Args... params) { + return Exception::ConstructMessage(fmt_str, params...); + } + + //! Split the input string into a vector of strings based on the split string + static vector Split(const string &input, const string &split); + + //! Remove the whitespace char in the left end of the string + static void LTrim(string &str); + //! Remove the whitespace char in the right end of the string + static void RTrim(string &str); + //! Remove the whitespace char in the left and right end of the string + static void Trim(string &str); + + static string Replace(string source, const string &from, const string &to); + + //! Get the levenshtein distance from two strings + static idx_t LevenshteinDistance(const string &s1, const string &s2); + + //! Get the top-n strings (sorted by the given score distance) from a set of scores. + //! At least one entry is returned (if there is one). + //! Strings are only returned if they have a score less than the threshold. + static vector TopNStrings(vector> scores, idx_t n = 5, idx_t threshold = 5); + //! Computes the levenshtein distance of each string in strings, and compares it to target, then returns TopNStrings + //! with the given params. + static vector TopNLevenshtein(const vector &strings, const string &target, idx_t n = 5, + idx_t threshold = 5); + static string CandidatesMessage(const vector &candidates, const string &candidate = "Candidate bindings"); +}; +} // namespace duckdb + + +namespace duckdb { + +struct CaseInsensitiveStringHashFunction { + uint64_t operator()(const string &str) const { + std::hash hasher; + return hasher(StringUtil::Lower(str)); + } +}; + +struct CaseInsensitiveStringEquality { + bool operator()(const string &a, const string &b) const { + return StringUtil::Lower(a) == StringUtil::Lower(b); + } +}; + +template +using case_insensitive_map_t = + unordered_map; + +using case_insensitive_set_t = unordered_set; + +} // namespace duckdb @@ -11867,8 +12066,7 @@ class CatalogSet { void DropEntryInternal(ClientContext &context, idx_t entry_index, CatalogEntry &entry, bool cascade, set_lock_map_t &lock_set); CatalogEntry *CreateEntryInternal(ClientContext &context, unique_ptr entry); - MappingValue *GetMapping(ClientContext &context, const string &name, bool allow_lowercase_alias, - bool get_latest = false); + MappingValue *GetMapping(ClientContext &context, const string &name, bool get_latest = false); void PutMapping(ClientContext &context, const string &name, idx_t entry_index); void DeleteMapping(ClientContext &context, const string &name); @@ -11877,7 +12075,7 @@ class CatalogSet { //! The catalog lock is used to make changes to the data mutex catalog_lock; //! Mapping of string to catalog entry - unordered_map> mapping; + case_insensitive_map_t> mapping; //! The set of catalog entries unordered_map> entries; //! The current catalog entry index @@ -13014,6 +13212,8 @@ class ClientContext : public std::enable_shared_from_this { unique_ptr temporary_objects; unordered_map> prepared_statements; + unordered_map set_variables; + // Whether or not aggressive query verification is enabled bool query_verification_enabled = false; //! Enable the running of optimizers @@ -13103,6 +13303,9 @@ class ClientContext : public std::enable_shared_from_this { DUCKDB_API void RunFunctionInTransactionInternal(ClientContextLock &lock, const std::function &fun, bool requires_valid_transaction = true); + //! Equivalent to CURRENT_SETTING(key) SQL function. + DUCKDB_API bool TryGetCurrentSetting(const std::string &key, Value &result); + private: //! Parse statements from a query vector> ParseStatementsInternal(ClientContextLock &lock, const string &query); diff --git a/libduckdb-sys/upgrade.sh b/libduckdb-sys/upgrade.sh index faebba8d..ef9189e2 100755 --- a/libduckdb-sys/upgrade.sh +++ b/libduckdb-sys/upgrade.sh @@ -10,7 +10,7 @@ export DUCKDB_LIB_DIR="$SCRIPT_DIR/duckdb" export DU_INCLUDE_DIR="$DUCKDB_LIB_DIR" # Download and extract amalgamation -DUCKDB_VERSION=v0.2.6 +DUCKDB_VERSION=v0.2.9 wget -T 20 "https://github.com/duckdb/duckdb/releases/download/$DUCKDB_VERSION/libduckdb-src.zip" unzip -o libduckdb-src.zip -d duckdb rm -f libduckdb-src.zip