From 125d7c0cced77ac39623cd05d0c22f690d427542 Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed Date: Fri, 3 Dec 2021 15:49:28 +0100 Subject: [PATCH] Updating qmljs parser to latest qtdeclarative parser improves support for string templates, required properties, and other smaller improvements Task-number: QTCREATORBUG-21869 Change-Id: Ia2359e1f75d4bd7b9ea4f27a920acd2251e36108 Reviewed-by: Qt CI Bot Reviewed-by: Reviewed-by: Fabian Kosmale --- src/libs/qmljs/CMakeLists.txt | 2 +- src/libs/qmljs/parser/gen-parser.sh | 19 +- src/libs/qmljs/parser/grammar.patch | 460 +- src/libs/qmljs/parser/parser.patch | 453 +- src/libs/qmljs/parser/parser.pri | 1 - src/libs/qmljs/parser/qmldirparser.cpp | 20 + src/libs/qmljs/parser/qmldirparser_p.h | 2 + src/libs/qmljs/parser/qmlimportresolver.cpp | 16 +- src/libs/qmljs/parser/qmljs.g | 261 +- src/libs/qmljs/parser/qmljsast.cpp | 26 +- src/libs/qmljs/parser/qmljsast_p.h | 143 +- src/libs/qmljs/parser/qmljsengine_p.cpp | 143 - src/libs/qmljs/parser/qmljsengine_p.h | 47 +- src/libs/qmljs/parser/qmljsgrammar.cpp | 4113 +++++------- src/libs/qmljs/parser/qmljsgrammar_p.h | 14 +- src/libs/qmljs/parser/qmljsmemorypool_p.h | 14 +- src/libs/qmljs/parser/qmljsparser.cpp | 5837 +++++++++-------- src/libs/qmljs/parser/qmljsparser_p.h | 25 +- src/libs/qmljs/qmljs.qbs | 2 +- src/libs/qmljs/qmljsinterpreter.cpp | 4 +- src/libs/qmljs/qmljsreformatter.cpp | 14 +- .../componentcore/findimplementation.cpp | 3 +- .../designercore/metainfo/nodemetainfo.cpp | 2 +- .../qmljseditor/qmljseditordocument.cpp | 6 +- .../qmljseditor/qmljsfindreferences.cpp | 11 +- 25 files changed, 5669 insertions(+), 5969 deletions(-) delete mode 100644 src/libs/qmljs/parser/qmljsengine_p.cpp diff --git a/src/libs/qmljs/CMakeLists.txt b/src/libs/qmljs/CMakeLists.txt index bf06a2a88d8..baffbdec247 100644 --- a/src/libs/qmljs/CMakeLists.txt +++ b/src/libs/qmljs/CMakeLists.txt @@ -9,7 +9,7 @@ add_qtc_library(QmlJS parser/qmljsastfwd_p.h parser/qmljsastvisitor.cpp parser/qmljsastvisitor_p.h parser/qmljsdiagnosticmessage_p.h - parser/qmljsengine_p.cpp parser/qmljsengine_p.h + parser/qmljsengine_p.h parser/qmljsglobal_p.h parser/qmljsgrammar.cpp parser/qmljsgrammar_p.h parser/qmljskeywords_p.h diff --git a/src/libs/qmljs/parser/gen-parser.sh b/src/libs/qmljs/parser/gen-parser.sh index b3f935e27c9..7a62af7a67f 100755 --- a/src/libs/qmljs/parser/gen-parser.sh +++ b/src/libs/qmljs/parser/gen-parser.sh @@ -15,7 +15,7 @@ # 1. do all changes & commit them # 2. run this script commenting out the two patch commands in the last lines below # 3. update the first patch using -# # git diff > grammar.patch +# # git diff --cached > grammar.patch # 4. uncomment the first (grammar) patch, re-run script # 5. update the second patch with # # git diff > parser.patch @@ -70,13 +70,26 @@ sed -i -e 's/DiagnosticMessage::Warning/Severity::Warning/g' $me/qmljsparser.cpp sed -i -e 's/DiagnosticMessage::Warning/Severity::Warning/g' $me/qmljsparser_p.h sed -i -e 's|#include |#include |g' $me/qmljsengine_p.h sed -i -e 's|#include |#include |g' $me/qmljsengine_p.h -sed -i -e 's/qt_qnan/qQNaN/' $me/qmljsengine_p.cpp -sed -i -e 's|#include |#include |' $me/qmljsengine_p.cpp perl -p -0777 -i -e 's/QT_QML_BEGIN_NAMESPACE/#include \nQT_QML_BEGIN_NAMESPACE/' qmljsengine_p.h +./changeLicense.py $me/../qmljs_global.h qml*.{cpp,h} + +git add -u +git clang-format +git add -u +git reset gen-parser.sh grammar.patch qmljsgrammar.cpp qmljsgrammar_p.h qmljsparser.cpp qmljsparser_p.h +## comment from here to update grammar.patch using +## git diff --cached > grammar.patch patch -R -p5 < grammar.patch $QLALR qmljs.g ./changeLicense.py $me/../qmljs_global.h qml*.{cpp,h} +git add -u +git clang-format +git add -u +git reset gen-parser.sh grammar.patch parser.patch +## comment from here to update parser.patch +## git diff --cached > parser.patch patch -p5 -R < parser.patch +git reset diff --git a/src/libs/qmljs/parser/grammar.patch b/src/libs/qmljs/parser/grammar.patch index d39b70a17cd..e8d82fc67b2 100644 --- a/src/libs/qmljs/parser/grammar.patch +++ b/src/libs/qmljs/parser/grammar.patch @@ -1,8 +1,340 @@ +diff --git a/src/libs/qmljs/parser/qmldirparser.cpp b/src/libs/qmljs/parser/qmldirparser.cpp +index 747d2010f3..e9d22624ef 100644 +--- a/src/libs/qmljs/parser/qmldirparser.cpp ++++ b/src/libs/qmljs/parser/qmldirparser.cpp +@@ -25,14 +25,10 @@ + + #include "qmldirparser_p.h" + +-#include +- + #include + + QT_QML_BEGIN_NAMESPACE + +-using namespace LanguageUtils; +- + static int parseInt(QStringView str, bool *ok) + { + int pos = 0; +@@ -50,45 +46,19 @@ static int parseInt(QStringView str, bool *ok) + return number; + } + +-static bool parseVersion(const QString &str, int *major, int *minor) ++static QTypeRevision parseVersion(const QString &str) + { + const int dotIndex = str.indexOf(QLatin1Char('.')); + if (dotIndex != -1 && str.indexOf(QLatin1Char('.'), dotIndex + 1) == -1) { + bool ok = false; +- *major = parseInt(QStringView(str.constData(), dotIndex), &ok); +- if (ok) +- *minor = parseInt(QStringView(str.constData() + dotIndex + 1, str.length() - dotIndex - 1), +- &ok); +- return ok; +- } +- return false; +-} +- +-static ComponentVersion parseImportVersion(const QString &str) +-{ +- int minor = -1; +- int major = -1; +- const int dotIndex = str.indexOf(QLatin1Char('.')); +- bool ok = false; +- if (dotIndex != -1 && str.indexOf(QLatin1Char('.'), dotIndex + 1) == -1) { +- major = parseInt(QStringView(str.constData(), dotIndex), &ok); +- if (ok) { +- if (str.length() > dotIndex + 1) { +- minor = parseInt(QStringView(str.constData() + dotIndex + 1, str.length() - dotIndex - 1), +- &ok); +- if (!ok) +- minor = ComponentVersion::NoVersion; +- } else { +- minor = ComponentVersion::MaxVersion; +- } +- } +- } else if (str.length() > 0) { +- QTC_ASSERT(str != QLatin1String("auto"), return ComponentVersion(-1, -1)); +- major = parseInt(QStringView(str.constData(), str.length()), +- &ok); +- minor = ComponentVersion::MaxVersion; ++ const int major = parseInt(QStringView(str).left(dotIndex), &ok); ++ if (!ok) ++ return QTypeRevision(); ++ const int minor = parseInt(QStringView(str).mid(dotIndex + 1, str.length() - dotIndex - 1), ++ &ok); ++ return ok ? QTypeRevision::fromVersion(major, minor) : QTypeRevision(); + } +- return ComponentVersion(major, minor); ++ return QTypeRevision(); + } + + void QmlDirParser::clear() +@@ -132,12 +102,12 @@ bool QmlDirParser::parse(const QString &source) + auto readImport = [&](const QString *sections, int sectionCount, Import::Flags flags) { + Import import; + if (sectionCount == 2) { +- import = Import(sections[1], ComponentVersion(), flags); ++ import = Import(sections[1], QTypeRevision(), flags); + } else if (sectionCount == 3) { + if (sections[2] == QLatin1String("auto")) { +- import = Import(sections[1], ComponentVersion(), flags | Import::Auto); ++ import = Import(sections[1], QTypeRevision(), flags | Import::Auto); + } else { +- const auto version = parseImportVersion(sections[2]); ++ const auto version = parseVersion(sections[2]); + if (version.isValid()) { + import = Import(sections[1], version, flags); + } else { +@@ -275,7 +245,7 @@ bool QmlDirParser::parse(const QString &source) + QStringLiteral("internal types require 2 arguments, but %1 were provided").arg(sectionCount - 1)); + continue; + } +- Component entry(sections[1], sections[2], -1, -1); ++ Component entry(sections[1], sections[2], QTypeRevision()); + entry.internal = true; + _components.insert(entry.typeName, entry); + } else if (sections[0] == QLatin1String("singleton")) { +@@ -286,16 +256,16 @@ bool QmlDirParser::parse(const QString &source) + } else if (sectionCount == 3) { + // handle qmldir directory listing case where singleton is defined in the following pattern: + // singleton TestSingletonType TestSingletonType.qml +- Component entry(sections[1], sections[2], -1, -1); ++ Component entry(sections[1], sections[2], QTypeRevision()); + entry.singleton = true; + _components.insert(entry.typeName, entry); + } else { + // handle qmldir module listing case where singleton is defined in the following pattern: + // singleton TestSingletonType 2.0 TestSingletonType20.qml +- int major, minor; +- if (parseVersion(sections[2], &major, &minor)) { ++ const QTypeRevision version = parseVersion(sections[2]); ++ if (version.isValid()) { + const QString &fileName = sections[3]; +- Component entry(sections[1], fileName, major, minor); ++ Component entry(sections[1], fileName, version); + entry.singleton = true; + _components.insert(entry.typeName, entry); + } else { +@@ -361,19 +331,19 @@ bool QmlDirParser::parse(const QString &source) + _linkTarget = sections[1]; + } else if (sectionCount == 2) { + // No version specified (should only be used for relative qmldir files) +- const Component entry(sections[0], sections[1], -1, -1); ++ const Component entry(sections[0], sections[1], QTypeRevision()); + _components.insert(entry.typeName, entry); + } else if (sectionCount == 3) { +- int major, minor; +- if (parseVersion(sections[1], &major, &minor)) { ++ const QTypeRevision version = parseVersion(sections[1]); ++ if (version.isValid()) { + const QString &fileName = sections[2]; + + if (fileName.endsWith(QLatin1String(".js")) || fileName.endsWith(QLatin1String(".mjs"))) { + // A 'js' extension indicates a namespaced script import +- const Script entry(sections[0], fileName, major, minor); ++ const Script entry(sections[0], fileName, version); + _scripts.append(entry); + } else { +- const Component entry(sections[0], fileName, major, minor); ++ const Component entry(sections[0], fileName, version); + _components.insert(entry.typeName, entry); + } + } else { +@@ -420,15 +390,19 @@ QList QmlDirParser::errors(const QString &uri) const + + QDebug &operator<< (QDebug &debug, const QmlDirParser::Component &component) + { +- const QString output = QStringLiteral("{%1 %2.%3}"). +- arg(component.typeName).arg(component.majorVersion).arg(component.minorVersion); ++ const QString output = QStringLiteral("{%1 %2.%3}") ++ .arg(component.typeName) ++ .arg(component.version.majorVersion()) ++ .arg(component.version.minorVersion()); + return debug << qPrintable(output); + } + + QDebug &operator<< (QDebug &debug, const QmlDirParser::Script &script) + { +- const QString output = QStringLiteral("{%1 %2.%3}"). +- arg(script.nameSpace).arg(script.majorVersion).arg(script.minorVersion); ++ const QString output = QStringLiteral("{%1 %2.%3}") ++ .arg(script.nameSpace) ++ .arg(script.version.majorVersion()) ++ .arg(script.version.minorVersion()); + return debug << qPrintable(output); + } + +diff --git a/src/libs/qmljs/parser/qmldirparser_p.h b/src/libs/qmljs/parser/qmldirparser_p.h +index d5a0aabfd0..c1869b7cc8 100644 +--- a/src/libs/qmljs/parser/qmldirparser_p.h ++++ b/src/libs/qmljs/parser/qmldirparser_p.h +@@ -36,15 +36,12 @@ + // We mean it. + // + +-#include +-#include +-#include +- +-#include +- +-#include "qmljs/parser/qmljsglobal_p.h" +-#include "qmljs/parser/qmljsengine_p.h" + #include "qmljs/parser/qmljsdiagnosticmessage_p.h" ++#include "qmljs/parser/qmljsglobal_p.h" ++#include ++#include ++#include ++#include + + QT_QML_BEGIN_NAMESPACE + +@@ -90,17 +87,19 @@ public: + { + Component() = default; + +- Component(const QString &typeName, const QString &fileName, int majorVersion, int minorVersion) +- : typeName(typeName), fileName(fileName), majorVersion(majorVersion), minorVersion(minorVersion), +- internal(false), singleton(false) ++ Component(const QString &typeName, const QString &fileName, QTypeRevision version) ++ : typeName(typeName) ++ , fileName(fileName) ++ , version(version) ++ , internal(false) ++ , singleton(false) + { + checkNonRelative("Component", typeName, fileName); + } + + QString typeName; + QString fileName; +- int majorVersion = 0; +- int minorVersion = 0; ++ QTypeRevision version = QTypeRevision::zero(); + bool internal = false; + bool singleton = false; + }; +@@ -109,16 +108,17 @@ public: + { + Script() = default; + +- Script(const QString &nameSpace, const QString &fileName, int majorVersion, int minorVersion) +- : nameSpace(nameSpace), fileName(fileName), majorVersion(majorVersion), minorVersion(minorVersion) ++ Script(const QString &nameSpace, const QString &fileName, QTypeRevision version) ++ : nameSpace(nameSpace) ++ , fileName(fileName) ++ , version(version) + { + checkNonRelative("Script", nameSpace, fileName); + } + + QString nameSpace; + QString fileName; +- int majorVersion = 0; +- int minorVersion = 0; ++ QTypeRevision version = QTypeRevision::zero(); + }; + + struct Import +@@ -131,13 +131,15 @@ public: + Q_DECLARE_FLAGS(Flags, Flag) + + Import() = default; +- Import(QString module, LanguageUtils::ComponentVersion version, Flags flags) +- : module(module), version(version), flags(flags) ++ Import(QString module, QTypeRevision version, Flags flags) ++ : module(module) ++ , version(version) ++ , flags(flags) + { + } + + QString module; +- LanguageUtils::ComponentVersion version; // invalid version is latest version, unless Flag::Auto ++ QTypeRevision version; // invalid version is latest version, unless Flag::Auto + Flags flags; + }; + +diff --git a/src/libs/qmljs/parser/qmlimportresolver.cpp b/src/libs/qmljs/parser/qmlimportresolver.cpp +index e74c5840c1..e7416ef7f0 100644 +--- a/src/libs/qmljs/parser/qmlimportresolver.cpp ++++ b/src/libs/qmljs/parser/qmlimportresolver.cpp +@@ -40,20 +40,20 @@ enum ImportVersion { FullyVersioned, PartiallyVersioned, Unversioned }; + - base/QtQml.2/Models + - base/QtQml/Models + */ +-QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths, +- LanguageUtils::ComponentVersion version) ++QStringList qQmlResolveImportPaths(QStringView uri, ++ const QStringList &basePaths, ++ QTypeRevision version) + { + static const QLatin1Char Slash('/'); + static const QLatin1Char Backslash('\\'); + +- const QList parts = uri.split(u'.', Qt::SkipEmptyParts); ++ const QVector parts = uri.split(u'.', Qt::SkipEmptyParts); + + QStringList importPaths; + // fully & partially versioned parts + 1 unversioned for each base path + importPaths.reserve(2 * parts.count() + 1); + +- auto versionString = [](LanguageUtils::ComponentVersion version, ImportVersion mode) +- { ++ auto versionString = [](QTypeRevision version, ImportVersion mode) { + if (mode == FullyVersioned) { + // extension with fully encoded version number (eg. MyModule.3.2) + return QString::fromLatin1(".%1.%2").arg(version.majorVersion()) +@@ -67,7 +67,7 @@ QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths + return QString(); + }; + +- auto joinStringRefs = [](const QList &refs, const QChar &sep) { ++ auto joinStringRefs = [](const QVector &refs, const QChar &sep) { + QString str; + for (auto it = refs.cbegin(); it != refs.cend(); ++it) { + if (it != refs.cbegin()) +@@ -77,9 +77,10 @@ QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths + return str; + }; + +- const ImportVersion initial = ((version.minorVersion() >= 0) +- ? FullyVersioned +- : ((version.majorVersion() >= 0) ? PartiallyVersioned : Unversioned)); ++ const ImportVersion initial = (version.hasMinorVersion()) ++ ? FullyVersioned ++ : (version.hasMajorVersion() ? PartiallyVersioned ++ : Unversioned); + for (int mode = initial; mode <= Unversioned; ++mode) { + const QString ver = versionString(version, ImportVersion(mode)); + +diff --git a/src/libs/qmljs/parser/qmlimportresolver_p.h b/src/libs/qmljs/parser/qmlimportresolver_p.h +index 68c052d408..8f18de3d0b 100644 +--- a/src/libs/qmljs/parser/qmlimportresolver_p.h ++++ b/src/libs/qmljs/parser/qmlimportresolver_p.h +@@ -40,11 +40,12 @@ + + #include "qmljsglobal_p.h" + #include +-#include ++#include + + QT_QML_BEGIN_NAMESPACE + +-QML_PARSER_EXPORT QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths, +- LanguageUtils::ComponentVersion version); ++QML_PARSER_EXPORT QStringList qQmlResolveImportPaths(QStringView uri, ++ const QStringList &basePaths, ++ QTypeRevision version); + + QT_QML_END_NAMESPACE diff --git a/src/libs/qmljs/parser/qmljs.g b/src/libs/qmljs/parser/qmljs.g -index ae79830d2e..32a2f6f4b0 100644 +index 5f62edf4d1..19f4e200e5 100644 --- a/src/libs/qmljs/parser/qmljs.g +++ b/src/libs/qmljs/parser/qmljs.g -@@ -380,7 +380,7 @@ public: +@@ -381,7 +381,7 @@ public: inline DiagnosticMessage diagnosticMessage() const { for (const DiagnosticMessage &d : diagnostic_messages) { @@ -11,7 +343,7 @@ index ae79830d2e..32a2f6f4b0 100644 return d; } -@@ -424,7 +424,7 @@ protected: +@@ -425,7 +425,7 @@ protected: DiagnosticMessage error; error.loc = location; error.message = message; @@ -20,7 +352,7 @@ index ae79830d2e..32a2f6f4b0 100644 return error; } -@@ -445,8 +445,8 @@ protected: +@@ -446,8 +446,8 @@ protected: Value *sym_stack = nullptr; int *state_stack = nullptr; SourceLocation *location_stack = nullptr; @@ -31,7 +363,7 @@ index ae79830d2e..32a2f6f4b0 100644 AST::Node *program = nullptr; -@@ -838,7 +838,7 @@ UiVersionSpecifier: T_VERSION_NUMBER T_DOT T_VERSION_NUMBER; +@@ -849,7 +849,7 @@ UiVersionSpecifier: T_VERSION_NUMBER T_DOT T_VERSION_NUMBER; case $rule_number: { const int major = sym(1).dval; const int minor = sym(3).dval; @@ -40,7 +372,7 @@ index ae79830d2e..32a2f6f4b0 100644 diagnostic_messages.append( compileError(loc(1), QLatin1String("Invalid version. Version numbers must be >= 0 and < 255."))); -@@ -851,11 +851,12 @@ UiVersionSpecifier: T_VERSION_NUMBER T_DOT T_VERSION_NUMBER; +@@ -862,11 +862,12 @@ UiVersionSpecifier: T_VERSION_NUMBER T_DOT T_VERSION_NUMBER; } break; ./ @@ -54,3 +386,119 @@ index ae79830d2e..32a2f6f4b0 100644 diagnostic_messages.append( compileError(loc(1), QLatin1String("Invalid major version. Version numbers must be >= 0 and < 255."))); +diff --git a/src/libs/qmljs/parser/qmljsast_p.h b/src/libs/qmljs/parser/qmljsast_p.h +index 78b9f4b080..dcbcb5fd0d 100644 +--- a/src/libs/qmljs/parser/qmljsast_p.h ++++ b/src/libs/qmljs/parser/qmljsast_p.h +@@ -654,12 +654,14 @@ class QML_PARSER_EXPORT UiVersionSpecifier : public Node + public: + QMLJS_DECLARE_AST_NODE(UiVersionSpecifier) + +- UiVersionSpecifier(int majorum) : majorVersion(majorum) ++ UiVersionSpecifier(int majorum) ++ : version(QTypeRevision::fromMajorVersion(majorum)) + { + kind = K; + } + +- UiVersionSpecifier(int majorum, int minorum) : majorVersion(majorum), minorVersion(minorum) ++ UiVersionSpecifier(int majorum, int minorum) ++ : version(QTypeRevision::fromVersion(majorum, minorum)) + { + kind = K; + } +@@ -674,8 +676,7 @@ public: + } + + // attributes: +- int majorVersion = -1; +- int minorVersion = -1; ++ QTypeRevision version; + SourceLocation majorToken; + SourceLocation minorToken; + }; +@@ -881,14 +882,14 @@ struct QML_PARSER_EXPORT BoundName + }; + + QString id; +- TypeAnnotation *typeAnnotation; +- Type typeAnnotationType; ++ QTaggedPointer typeAnnotation; + BoundName(const QString &id, TypeAnnotation *typeAnnotation, Type type = Declared) +- : id(id), typeAnnotation(typeAnnotation), typeAnnotationType(type) ++ : id(id) ++ , typeAnnotation(typeAnnotation, type) + {} + BoundName() = default; + QString typeName() const { return typeAnnotation ? typeAnnotation->type->toString() : QString(); } +- bool isInjected() const { return typeAnnotation && typeAnnotationType == Injected; } ++ bool isInjected() const { return typeAnnotation.tag() == Injected; } + }; + + struct BoundNames : public QVector +@@ -3486,7 +3487,6 @@ public: + SourceLocation identifierToken; + SourceLocation colonToken; + SourceLocation semicolonToken; +- + private: + union { + SourceLocation m_propertyToken = SourceLocation{}; +diff --git a/src/libs/qmljs/parser/qmljslexer.cpp b/src/libs/qmljs/parser/qmljslexer.cpp +index 6c4eb70744..90f567d19c 100644 +--- a/src/libs/qmljs/parser/qmljslexer.cpp ++++ b/src/libs/qmljs/parser/qmljslexer.cpp +@@ -27,6 +27,7 @@ + #include "qmljsengine_p.h" + #include "qmljskeywords_p.h" + ++#include "qmljs/parser/qlocale_tools_p.h" + #include "qmljs/parser/qmljsdiagnosticmessage_p.h" + #include "qmljs/parser/qmljsmemorypool_p.h" + +@@ -35,14 +36,6 @@ + #include + #include + +-QT_BEGIN_NAMESPACE +-#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +-Q_CORE_EXPORT double qstrntod(const char *s00, int len, char const **se, bool *ok); +-#else +-Q_CORE_EXPORT double qstrntod(const char *s00, qsizetype len, char const **se, bool *ok); +-#endif +-QT_END_NAMESPACE +- + using namespace QmlJS; + + static inline int regExpFlagFromChar(const QChar &ch) +diff --git a/src/libs/qmljs/parser/qmljslexer_p.h b/src/libs/qmljs/parser/qmljslexer_p.h +index a442748d74..dc7f7f7308 100644 +--- a/src/libs/qmljs/parser/qmljslexer_p.h ++++ b/src/libs/qmljs/parser/qmljslexer_p.h +@@ -47,7 +47,7 @@ QT_QML_BEGIN_NAMESPACE + namespace QmlJS { + + class Engine; +-class DiagnosticMessage; ++struct DiagnosticMessage; + class Directives; + + class QML_PARSER_EXPORT Lexer: public QmlJSGrammar +diff --git a/src/libs/qmljs/parser/qmljssourcelocation_p.h b/src/libs/qmljs/parser/qmljssourcelocation_p.h +index 29be90fd9b..865c008f19 100644 +--- a/src/libs/qmljs/parser/qmljssourcelocation_p.h ++++ b/src/libs/qmljs/parser/qmljssourcelocation_p.h +@@ -95,8 +95,11 @@ public: + + friend size_t qHash(const SourceLocation &location, size_t seed = 0) + { +- return (seed ^ (size_t(location.offset) << 8) ^ size_t(location.length) +- ^ (size_t(location.startLine) << 16) ^ (size_t(location.startColumn) << 24)); ++ return qHashMulti(seed, ++ location.offset, ++ location.length, ++ location.startLine, ++ location.startColumn); + } + + friend bool operator==(const SourceLocation &a, const SourceLocation &b) diff --git a/src/libs/qmljs/parser/parser.patch b/src/libs/qmljs/parser/parser.patch index 6cc100575d9..0a594a8083d 100644 --- a/src/libs/qmljs/parser/parser.patch +++ b/src/libs/qmljs/parser/parser.patch @@ -1,464 +1,33 @@ -diff --git a/src/libs/qmljs/parser/qmldirparser.cpp b/src/libs/qmljs/parser/qmldirparser.cpp -index cba1cf62c3..404beefe4a 100644 ---- a/src/libs/qmljs/parser/qmldirparser.cpp -+++ b/src/libs/qmljs/parser/qmldirparser.cpp -@@ -25,14 +25,10 @@ - - #include "qmldirparser_p.h" - --#include -- - #include - - QT_QML_BEGIN_NAMESPACE - --using namespace LanguageUtils; -- - static int parseInt(QStringView str, bool *ok) - { - int pos = 0; -@@ -50,45 +46,17 @@ static int parseInt(QStringView str, bool *ok) - return number; - } - --static bool parseVersion(const QString &str, int *major, int *minor) -+static QTypeRevision parseVersion(const QString &str) - { - const int dotIndex = str.indexOf(QLatin1Char('.')); - if (dotIndex != -1 && str.indexOf(QLatin1Char('.'), dotIndex + 1) == -1) { - bool ok = false; -- *major = parseInt(QStringView(str.constData(), dotIndex), &ok); -- if (ok) -- *minor = parseInt(QStringView(str.constData() + dotIndex + 1, str.length() - dotIndex - 1), -- &ok); -- return ok; -- } -- return false; --} -- --static ComponentVersion parseImportVersion(const QString &str) --{ -- int minor = -1; -- int major = -1; -- const int dotIndex = str.indexOf(QLatin1Char('.')); -- bool ok = false; -- if (dotIndex != -1 && str.indexOf(QLatin1Char('.'), dotIndex + 1) == -1) { -- major = parseInt(QStringView(str.constData(), dotIndex), &ok); -- if (ok) { -- if (str.length() > dotIndex + 1) { -- minor = parseInt(QStringView(str.constData() + dotIndex + 1, str.length() - dotIndex - 1), -- &ok); -- if (!ok) -- minor = ComponentVersion::NoVersion; -- } else { -- minor = ComponentVersion::MaxVersion; -- } -- } -- } else if (str.length() > 0) { -- QTC_ASSERT(str != QLatin1String("auto"), return ComponentVersion(-1, -1)); -- major = parseInt(QStringView(str.constData(), str.length()), -- &ok); -- minor = ComponentVersion::MaxVersion; -+ const int major = parseInt(QStringView(str).left(dotIndex), &ok); -+ if (!ok) return QTypeRevision(); -+ const int minor = parseInt(QStringView(str).mid(dotIndex + 1, str.length() - dotIndex - 1), &ok); -+ return ok ? QTypeRevision::fromVersion(major, minor) : QTypeRevision(); - } -- return ComponentVersion(major, minor); -+ return QTypeRevision(); - } - - void QmlDirParser::clear() -@@ -131,12 +99,12 @@ bool QmlDirParser::parse(const QString &source) - auto readImport = [&](const QString *sections, int sectionCount, Import::Flags flags) { - Import import; - if (sectionCount == 2) { -- import = Import(sections[1], ComponentVersion(), flags); -+ import = Import(sections[1], QTypeRevision(), flags); - } else if (sectionCount == 3) { - if (sections[2] == QLatin1String("auto")) { -- import = Import(sections[1], ComponentVersion(), flags | Import::Auto); -+ import = Import(sections[1], QTypeRevision(), flags | Import::Auto); - } else { -- const auto version = parseImportVersion(sections[2]); -+ const auto version = parseVersion(sections[2]); - if (version.isValid()) { - import = Import(sections[1], version, flags); - } else { -@@ -274,7 +242,7 @@ bool QmlDirParser::parse(const QString &source) - QStringLiteral("internal types require 2 arguments, but %1 were provided").arg(sectionCount - 1)); - continue; - } -- Component entry(sections[1], sections[2], -1, -1); -+ Component entry(sections[1], sections[2], QTypeRevision()); - entry.internal = true; - _components.insert(entry.typeName, entry); - } else if (sections[0] == QLatin1String("singleton")) { -@@ -285,16 +253,16 @@ bool QmlDirParser::parse(const QString &source) - } else if (sectionCount == 3) { - // handle qmldir directory listing case where singleton is defined in the following pattern: - // singleton TestSingletonType TestSingletonType.qml -- Component entry(sections[1], sections[2], -1, -1); -+ Component entry(sections[1], sections[2], QTypeRevision()); - entry.singleton = true; - _components.insert(entry.typeName, entry); - } else { - // handle qmldir module listing case where singleton is defined in the following pattern: - // singleton TestSingletonType 2.0 TestSingletonType20.qml -- int major, minor; -- if (parseVersion(sections[2], &major, &minor)) { -+ const QTypeRevision version = parseVersion(sections[2]); -+ if (version.isValid()) { - const QString &fileName = sections[3]; -- Component entry(sections[1], fileName, major, minor); -+ Component entry(sections[1], fileName, version); - entry.singleton = true; - _components.insert(entry.typeName, entry); - } else { -@@ -341,19 +309,19 @@ bool QmlDirParser::parse(const QString &source) - _preferredPath = sections[1]; - } else if (sectionCount == 2) { - // No version specified (should only be used for relative qmldir files) -- const Component entry(sections[0], sections[1], -1, -1); -+ const Component entry(sections[0], sections[1], QTypeRevision()); - _components.insert(entry.typeName, entry); - } else if (sectionCount == 3) { -- int major, minor; -- if (parseVersion(sections[1], &major, &minor)) { -+ const QTypeRevision version = parseVersion(sections[1]); -+ if (version.isValid()) { - const QString &fileName = sections[2]; - - if (fileName.endsWith(QLatin1String(".js")) || fileName.endsWith(QLatin1String(".mjs"))) { - // A 'js' extension indicates a namespaced script import -- const Script entry(sections[0], fileName, major, minor); -+ const Script entry(sections[0], fileName, version); - _scripts.append(entry); - } else { -- const Component entry(sections[0], fileName, major, minor); -+ const Component entry(sections[0], fileName, version); - _components.insert(entry.typeName, entry); - } - } else { -@@ -400,15 +368,17 @@ QList QmlDirParser::errors(const QString &uri) const - - QDebug &operator<< (QDebug &debug, const QmlDirParser::Component &component) - { -- const QString output = QStringLiteral("{%1 %2.%3}"). -- arg(component.typeName).arg(component.majorVersion).arg(component.minorVersion); -+ const QString output = QStringLiteral("{%1 %2.%3}") -+ .arg(component.typeName).arg(component.version.majorVersion()) -+ .arg(component.version.minorVersion()); - return debug << qPrintable(output); - } - - QDebug &operator<< (QDebug &debug, const QmlDirParser::Script &script) - { -- const QString output = QStringLiteral("{%1 %2.%3}"). -- arg(script.nameSpace).arg(script.majorVersion).arg(script.minorVersion); -+ const QString output = QStringLiteral("{%1 %2.%3}") -+ .arg(script.nameSpace).arg(script.version.majorVersion()) -+ .arg(script.version.minorVersion()); - return debug << qPrintable(output); - } - -diff --git a/src/libs/qmljs/parser/qmldirparser_p.h b/src/libs/qmljs/parser/qmldirparser_p.h -index 529a44078a..f83a4ec8a0 100644 ---- a/src/libs/qmljs/parser/qmldirparser_p.h -+++ b/src/libs/qmljs/parser/qmldirparser_p.h -@@ -39,11 +39,8 @@ - #include - #include - #include -- --#include -- -+#include - #include "qmljs/parser/qmljsglobal_p.h" --#include "qmljs/parser/qmljsengine_p.h" - #include "qmljs/parser/qmljsdiagnosticmessage_p.h" - - QT_QML_BEGIN_NAMESPACE -@@ -90,8 +87,8 @@ public: - { - Component() = default; - -- Component(const QString &typeName, const QString &fileName, int majorVersion, int minorVersion) -- : typeName(typeName), fileName(fileName), majorVersion(majorVersion), minorVersion(minorVersion), -+ Component(const QString &typeName, const QString &fileName, QTypeRevision version) -+ : typeName(typeName), fileName(fileName), version(version), - internal(false), singleton(false) - { - checkNonRelative("Component", typeName, fileName); -@@ -99,8 +96,7 @@ public: - - QString typeName; - QString fileName; -- int majorVersion = 0; -- int minorVersion = 0; -+ QTypeRevision version = QTypeRevision::zero(); - bool internal = false; - bool singleton = false; - }; -@@ -109,16 +105,15 @@ public: - { - Script() = default; - -- Script(const QString &nameSpace, const QString &fileName, int majorVersion, int minorVersion) -- : nameSpace(nameSpace), fileName(fileName), majorVersion(majorVersion), minorVersion(minorVersion) -+ Script(const QString &nameSpace, const QString &fileName, QTypeRevision version) -+ : nameSpace(nameSpace), fileName(fileName), version(version) - { - checkNonRelative("Script", nameSpace, fileName); - } - - QString nameSpace; - QString fileName; -- int majorVersion = 0; -- int minorVersion = 0; -+ QTypeRevision version = QTypeRevision::zero(); - }; - - struct Import -@@ -131,13 +126,13 @@ public: - Q_DECLARE_FLAGS(Flags, Flag) - - Import() = default; -- Import(QString module, LanguageUtils::ComponentVersion version, Flags flags) -+ Import(QString module, QTypeRevision version, Flags flags) - : module(module), version(version), flags(flags) - { - } - - QString module; -- LanguageUtils::ComponentVersion version; // invalid version is latest version, unless Flag::Auto -+ QTypeRevision version; // invalid version is latest version, unless Flag::Auto - Flags flags; - }; - -diff --git a/src/libs/qmljs/parser/qmlimportresolver.cpp b/src/libs/qmljs/parser/qmlimportresolver.cpp -index 06f04a14e7..2a6608a1da 100644 ---- a/src/libs/qmljs/parser/qmlimportresolver.cpp -+++ b/src/libs/qmljs/parser/qmlimportresolver.cpp -@@ -41,7 +41,7 @@ enum ImportVersion { FullyVersioned, PartiallyVersioned, Unversioned }; - - base/QtQml/Models - */ - QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths, -- LanguageUtils::ComponentVersion version) -+ QTypeRevision version) - { - static const QLatin1Char Slash('/'); - static const QLatin1Char Backslash('\\'); -@@ -46,13 +46,13 @@ QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths - static const QLatin1Char Slash('/'); - static const QLatin1Char Backslash('\\'); - -- const QList parts = uri.split(u'.', Qt::SkipEmptyParts); -+ const QVector parts = uri.split(u'.', Qt::SkipEmptyParts); - - QStringList importPaths; - // fully & partially versioned parts + 1 unversioned for each base path - importPaths.reserve(2 * parts.count() + 1); - -- auto versionString = [](LanguageUtils::ComponentVersion version, ImportVersion mode) -+ auto versionString = [](QTypeRevision version, ImportVersion mode) - { - if (mode == FullyVersioned) { - // extension with fully encoded version number (eg. MyModule.3.2) -@@ -67,7 +67,7 @@ QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths - return QString(); - }; - -- auto joinStringRefs = [](const QList &refs, const QChar &sep) { -+ auto joinStringRefs = [](const QVector &refs, const QChar &sep) { - QString str; - for (auto it = refs.cbegin(); it != refs.cend(); ++it) { - if (it != refs.cbegin()) -@@ -77,9 +77,9 @@ QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths - return str; - }; - -- const ImportVersion initial = ((version.minorVersion() >= 0) -+ const ImportVersion initial = (version.hasMinorVersion()) - ? FullyVersioned -- : ((version.majorVersion() >= 0) ? PartiallyVersioned : Unversioned)); -+ : (version.hasMajorVersion() ? PartiallyVersioned : Unversioned); - for (int mode = initial; mode <= Unversioned; ++mode) { - const QString ver = versionString(version, ImportVersion(mode)); - -diff --git a/src/libs/qmljs/parser/qmlimportresolver_p.h b/src/libs/qmljs/parser/qmlimportresolver_p.h -index 8f0bf7f6e4..8d0b4ed838 100644 ---- a/src/libs/qmljs/parser/qmlimportresolver_p.h -+++ b/src/libs/qmljs/parser/qmlimportresolver_p.h -@@ -40,11 +40,12 @@ - - #include "qmljsglobal_p.h" - #include --#include -+#include - - QT_QML_BEGIN_NAMESPACE - - QML_PARSER_EXPORT QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths, -- LanguageUtils::ComponentVersion version); -+ QTypeRevision version); - - QT_QML_END_NAMESPACE -+ -diff --git a/src/libs/qmljs/parser/qmljsast_p.h b/src/libs/qmljs/parser/qmljsast_p.h -index ba1f642629..e286571e2e 100644 ---- a/src/libs/qmljs/parser/qmljsast_p.h -+++ b/src/libs/qmljs/parser/qmljsast_p.h -@@ -654,12 +654,12 @@ class QML_PARSER_EXPORT UiVersionSpecifier : public Node - public: - QMLJS_DECLARE_AST_NODE(UiVersionSpecifier) - -- UiVersionSpecifier(int majorum) : majorVersion(majorum) -+ UiVersionSpecifier(int majorum) : version(QTypeRevision::fromMajorVersion(majorum)) - { - kind = K; - } - -- UiVersionSpecifier(int majorum, int minorum) : majorVersion(majorum), minorVersion(minorum) -+ UiVersionSpecifier(int majorum, int minorum) : version(QTypeRevision::fromVersion(majorum, minorum)) - { - kind = K; - } -@@ -674,8 +674,7 @@ public: - } - - // attributes: -- int majorVersion = -1; -- int minorVersion = -1; -+ QTypeRevision version; - SourceLocation majorToken; - SourceLocation minorToken; - }; -@@ -880,12 +879,11 @@ struct QML_PARSER_EXPORT BoundName - }; - - QString id; -- TypeAnnotation *typeAnnotation; -- Type typeAnnotationType; -+ QTaggedPointer typeAnnotation; - BoundName(const QString &id, TypeAnnotation *typeAnnotation, Type type = Declared) -- : id(id), typeAnnotation(typeAnnotation), typeAnnotationType(type) -+ : id(id), typeAnnotation(typeAnnotation, type) - {} - BoundName() = default; - QString typeName() const { return typeAnnotation ? typeAnnotation->type->toString() : QString(); } -- bool isInjected() const { return typeAnnotation && typeAnnotationType == Injected; } -+ bool isInjected() const { return typeAnnotation.tag() == Injected; } - }; - - struct BoundNames : public QVector -@@ -3724,3 +3722,4 @@ public: - - - QT_QML_END_NAMESPACE -+ diff --git a/src/libs/qmljs/parser/qmljsgrammar.cpp b/src/libs/qmljs/parser/qmljsgrammar.cpp -index 3d60e96373..01b98a5033 100644 +index 0413edb006..373f42747d 100644 --- a/src/libs/qmljs/parser/qmljsgrammar.cpp +++ b/src/libs/qmljs/parser/qmljsgrammar.cpp -@@ -21,8 +21,7 @@ - ** information to ensure the GNU General Public License requirements will +@@ -22,6 +22,7 @@ ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** --***************************************************************************/ + ***************************************************************************/ -// This file was generated by qlalr - DO NOT EDIT! -+***************************************************************************// This file was generated by qlalr - DO NOT EDIT! ++ / This file was generated by qlalr ++ - DO NOT EDIT ! #include "qmljsgrammar_p.h" - const char *const QmlJSGrammar::spell [] = { diff --git a/src/libs/qmljs/parser/qmljsgrammar_p.h b/src/libs/qmljs/parser/qmljsgrammar_p.h -index 43ad1b4950..ae32388aa5 100644 +index 2e7172b41d..6a057768d4 100644 --- a/src/libs/qmljs/parser/qmljsgrammar_p.h +++ b/src/libs/qmljs/parser/qmljsgrammar_p.h -@@ -21,13 +21,11 @@ - ** information to ensure the GNU General Public License requirements will +@@ -22,12 +22,12 @@ ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** --***************************************************************************/ + ***************************************************************************/ -// This file was generated by qlalr - DO NOT EDIT! -+***************************************************************************// This file was generated by qlalr - DO NOT EDIT! ++ / This file was generated by qlalr ++ - DO NOT EDIT ! #ifndef QMLJSGRAMMAR_P_H #define QMLJSGRAMMAR_P_H -#include "qmljsglobal_p.h" -class QML_PARSER_EXPORT QmlJSGrammar -+class QmlJSGrammar ++ class QmlJSGrammar { public: enum VariousConstants { -@@ -215,3 +213,4 @@ public: - - - #endif // QMLJSGRAMMAR_P_H -+ -diff --git a/src/libs/qmljs/parser/qmljslexer.cpp b/src/libs/qmljs/parser/qmljslexer.cpp -index 6c4eb70744..ec57f04cb7 100644 ---- a/src/libs/qmljs/parser/qmljslexer.cpp -+++ b/src/libs/qmljs/parser/qmljslexer.cpp -@@ -30,19 +30,12 @@ - #include "qmljs/parser/qmljsdiagnosticmessage_p.h" - #include "qmljs/parser/qmljsmemorypool_p.h" - -+ - #include - #include - #include - #include - --QT_BEGIN_NAMESPACE --#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) --Q_CORE_EXPORT double qstrntod(const char *s00, int len, char const **se, bool *ok); --#else --Q_CORE_EXPORT double qstrntod(const char *s00, qsizetype len, char const **se, bool *ok); --#endif --QT_END_NAMESPACE -- - using namespace QmlJS; - - static inline int regExpFlagFromChar(const QChar &ch) -diff --git a/src/libs/qmljs/parser/qmljslexer_p.h b/src/libs/qmljs/parser/qmljslexer_p.h -index 429c0f6619..794270b032 100644 ---- a/src/libs/qmljs/parser/qmljslexer_p.h -+++ b/src/libs/qmljs/parser/qmljslexer_p.h -@@ -47,7 +47,7 @@ QT_QML_BEGIN_NAMESPACE - namespace QmlJS { - - class Engine; --class DiagnosticMessage; -+struct DiagnosticMessage; - class Directives; - - class QML_PARSER_EXPORT Lexer: public QmlJSGrammar -diff --git a/src/libs/qmljs/parser/qmljssourcelocation_p.h b/src/libs/qmljs/parser/qmljssourcelocation_p.h -index f9ffa21714..5dff8c75dd 100644 ---- a/src/libs/qmljs/parser/qmljssourcelocation_p.h -+++ b/src/libs/qmljs/parser/qmljssourcelocation_p.h -@@ -95,14 +95,14 @@ public: - - friend size_t qHash(const SourceLocation &location, size_t seed = 0) - { -- return (seed ^ (size_t(location.offset) << 8) ^ size_t(location.length) -- ^ (size_t(location.startLine) << 16) ^ (size_t(location.startColumn) << 24)); -+ return qHashMulti(seed, location.offset, location.length, -+ location.startLine, location.startColumn); - } - - friend bool operator==(const SourceLocation &a, const SourceLocation &b) - { -- return a.offset == b.offset && a.length == b.length && a.startLine == b.startLine -- && a.startColumn == b.startColumn; -+ return a.offset == b.offset && a.length == b.length -+ && a.startLine == b.startLine && a.startColumn == b.startColumn; - } - - friend bool operator!=(const SourceLocation &a, const SourceLocation &b) { return !(a == b); } -@@ -124,3 +124,4 @@ public: - } // namespace QmlJS - - QT_QML_END_NAMESPACE -+ diff --git a/src/libs/qmljs/parser/parser.pri b/src/libs/qmljs/parser/parser.pri index d27091628c2..fd374a5c4e3 100644 --- a/src/libs/qmljs/parser/parser.pri +++ b/src/libs/qmljs/parser/parser.pri @@ -16,7 +16,6 @@ HEADERS += \ SOURCES += \ $$PWD/qmljsast.cpp \ $$PWD/qmljsastvisitor.cpp \ - $$PWD/qmljsengine_p.cpp \ $$PWD/qmlimportresolver.cpp \ $$PWD/qmljslexer.cpp \ $$PWD/qmldirparser.cpp \ diff --git a/src/libs/qmljs/parser/qmldirparser.cpp b/src/libs/qmljs/parser/qmldirparser.cpp index f8bce96962c..747d2010f3b 100644 --- a/src/libs/qmljs/parser/qmldirparser.cpp +++ b/src/libs/qmljs/parser/qmldirparser.cpp @@ -103,6 +103,7 @@ void QmlDirParser::clear() _designerSupported = false; _typeInfos.clear(); _classNames.clear(); + _linkTarget.clear(); } inline static void scanSpace(const QChar *&ch) { @@ -339,6 +340,25 @@ bool QmlDirParser::parse(const QString &source) } _preferredPath = sections[1]; + } else if (sections[0] == QLatin1String("linktarget")) { + if (sectionCount < 2) { + reportError(lineNumber, + 0, + QStringLiteral("linktarget directive requires an argument, " + "but %1 were provided") + .arg(sectionCount - 1)); + continue; + } + + if (!_linkTarget.isEmpty()) { + reportError(lineNumber, + 0, + QStringLiteral( + "only one linktarget directive may be defined in a qmldir file")); + continue; + } + + _linkTarget = sections[1]; } else if (sectionCount == 2) { // No version specified (should only be used for relative qmldir files) const Component entry(sections[0], sections[1], -1, -1); diff --git a/src/libs/qmljs/parser/qmldirparser_p.h b/src/libs/qmljs/parser/qmldirparser_p.h index 21315fd71c3..d5a0aabfd0d 100644 --- a/src/libs/qmljs/parser/qmldirparser_p.h +++ b/src/libs/qmljs/parser/qmldirparser_p.h @@ -151,6 +151,7 @@ public: QStringList typeInfos() const { return _typeInfos; } QStringList classNames() const { return _classNames; } QString preferredPath() const { return _preferredPath; } + QString linkTarget() const { return _linkTarget; } private: bool maybeAddComponent(const QString &typeName, const QString &fileName, const QString &version, QHash &hash, int lineNumber = -1, bool multi = true); @@ -168,6 +169,7 @@ private: bool _designerSupported = false; QStringList _typeInfos; QStringList _classNames; + QString _linkTarget; }; using QmlDirComponents = QMultiHash; diff --git a/src/libs/qmljs/parser/qmlimportresolver.cpp b/src/libs/qmljs/parser/qmlimportresolver.cpp index a682f56ac30..995709019ae 100644 --- a/src/libs/qmljs/parser/qmlimportresolver.cpp +++ b/src/libs/qmljs/parser/qmlimportresolver.cpp @@ -24,8 +24,9 @@ ****************************************************************************/ #include "qmlimportresolver_p.h" - -#include +#include +#include +#include QT_QML_BEGIN_NAMESPACE @@ -48,14 +49,7 @@ QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths static const QLatin1Char Slash('/'); static const QLatin1Char Backslash('\\'); - const QList parts -#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 2) - = uri.split(u'.', Qt::SkipEmptyParts); -#else - = Utils::transform(uri.toString().split('.', Qt::SkipEmptyParts), [](const QString &s) { - return QStringView(s); - }); -#endif + const QList parts = uri.split(u'.', Qt::SkipEmptyParts); QStringList importPaths; // fully & partially versioned parts + 1 unversioned for each base path @@ -81,7 +75,7 @@ QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths for (auto it = refs.cbegin(); it != refs.cend(); ++it) { if (it != refs.cbegin()) str += sep; - str += (*it).toString(); + str += *it; } return str; }; diff --git a/src/libs/qmljs/parser/qmljs.g b/src/libs/qmljs/parser/qmljs.g index ae79830d2e8..5f62edf4d16 100644 --- a/src/libs/qmljs/parser/qmljs.g +++ b/src/libs/qmljs/parser/qmljs.g @@ -315,6 +315,7 @@ public: AST::UiPragma *UiPragma; AST::UiImport *UiImport; AST::UiParameterList *UiParameterList; + AST::UiPropertyAttributes *UiPropertyAttributes; AST::UiPublicMember *UiPublicMember; AST::UiObjectDefinition *UiObjectDefinition; AST::UiObjectInitializer *UiObjectInitializer; @@ -824,6 +825,16 @@ UiPragma: T_PRAGMA PragmaId Semicolon; } break; ./ +UiPragma: T_PRAGMA PragmaId T_COLON JsIdentifier Semicolon; +/. + case $rule_number: { + AST::UiPragma *pragma = new (pool) AST::UiPragma(stringRef(2), stringRef(4)); + pragma->pragmaToken = loc(1); + pragma->semicolonToken = loc(5); + sym(1).Node = pragma; + } break; +./ + ImportId: MemberExpression; UiImport: UiImportHead Semicolon; @@ -1262,7 +1273,7 @@ UiObjectMember: T_SIGNAL T_IDENTIFIER T_LPAREN UiParameterListOpt T_RPAREN Semic case $rule_number: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(nullptr, stringRef(2)); node->type = AST::UiPublicMember::Signal; - node->propertyToken = loc(1); + node->setPropertyToken(loc(1)); node->typeToken = loc(2); node->identifierToken = loc(2); node->parameters = sym(4).UiParameterList; @@ -1276,7 +1287,7 @@ UiObjectMember: T_SIGNAL T_IDENTIFIER Semicolon; case $rule_number: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(nullptr, stringRef(2)); node->type = AST::UiPublicMember::Signal; - node->propertyToken = loc(1); + node->setPropertyToken(loc(1)); node->typeToken = loc(2); node->identifierToken = loc(2); node->semicolonToken = loc(3); @@ -1284,12 +1295,70 @@ UiObjectMember: T_SIGNAL T_IDENTIFIER Semicolon; } break; ./ -UiObjectMemberListPropertyNoInitialiser: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT QmlIdentifier Semicolon; +------------------------------------------------------------------------------- +-- There is some ambiguity in whether required default property should be parsed +-- as required (default (property)) or as ((required (default)) property) +-- by reducing after each attribute modifier, we ensure that T_PROPERTY (which +-- is always available is used as the base case (so we only have to allocate the +-- node in the T_PROPERY case, and all other rules can assume that the node is +-- already available). +-------------------------------------------------------------------------------- + +AttrRequired: T_REQUIRED %prec REDUCE_HERE; +AttrReadonly: T_READONLY %prec REDUCE_HERE; +AttrDefault: T_DEFAULT %prec REDUCE_HERE; + +UiPropertyAttributes: AttrRequired UiPropertyAttributes; +/. + case $rule_number: { + AST::UiPropertyAttributes *node = sym(2).UiPropertyAttributes; + if (node->isRequired()) + diagnostic_messages.append(compileError(node->requiredToken(), QLatin1String("Duplicated 'required' attribute is not allowed."), QtCriticalMsg)); + node->m_requiredToken = loc(1); + sym(1).UiPropertyAttributes = node; + } break; +./ + +UiPropertyAttributes: AttrDefault UiPropertyAttributes; +/. + case $rule_number: { + AST::UiPropertyAttributes *node = sym(2).UiPropertyAttributes; + if (node->isDefaultMember()) + diagnostic_messages.append(compileError(node->requiredToken(), QLatin1String("Duplicated 'default' attribute is not allowed."), QtCriticalMsg)); + node->m_defaultToken = loc(1); + sym(1).UiPropertyAttributes = node; + } break; +./ + +UiPropertyAttributes: AttrReadonly UiPropertyAttributes; +/. + case $rule_number: { + AST::UiPropertyAttributes *node = sym(2).UiPropertyAttributes; + if (node->isReadonly()) + diagnostic_messages.append(compileError(node->requiredToken(), QLatin1String("Duplicated 'readonly' attribute is not allowed."), QtCriticalMsg)); + node->m_readonlyToken = loc(1); + sym(1).UiPropertyAttributes = node; + } break; +./ + +UiPropertyAttributes: T_PROPERTY; +/. + case $rule_number: { + AST::UiPropertyAttributes *node = new (pool) AST::UiPropertyAttributes(); + node->m_propertyToken = loc(1); + sym(1).UiPropertyAttributes = node; + } break; +./ + +UiObjectMemberListPropertyNoInitialiser: UiPropertyAttributes T_IDENTIFIER T_LT UiPropertyType T_GT QmlIdentifier Semicolon; /. case $rule_number: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(4).UiQualifiedId->finish(), stringRef(6)); + auto attributes = sym(1).UiPropertyAttributes; + node->setAttributes(attributes); + if (attributes->isReadonly()) + diagnostic_messages.append(compileError(attributes->readonlyToken(), QLatin1String("Read-only properties require an initializer."), QtWarningMsg)); node->typeModifier = stringRef(2); - node->propertyToken = loc(1); node->typeModifierToken = loc(2); node->typeToken = loc(4); node->identifierToken = loc(6); @@ -1300,21 +1369,14 @@ UiObjectMemberListPropertyNoInitialiser: T_PROPERTY T_IDENTIFIER T_LT UiProperty UiObjectMember: UiObjectMemberListPropertyNoInitialiser; -UiObjectMember: T_READONLY UiObjectMemberListPropertyNoInitialiser; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isReadonlyMember = true; - node->readonlyToken = loc(1); - sym(1).Node = node; - } break; -./ - -UiObjectMemberPropertyNoInitialiser: T_PROPERTY UiPropertyType QmlIdentifier Semicolon; +UiObjectMemberPropertyNoInitialiser: UiPropertyAttributes UiPropertyType QmlIdentifier Semicolon; /. case $rule_number: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3)); - node->propertyToken = loc(1); + auto attributes = sym(1).UiPropertyAttributes; + if (attributes->isReadonly()) + diagnostic_messages.append(compileError(attributes->readonlyToken(), QLatin1String("Read-only properties require an initializer."), QtCriticalMsg)); + node->setAttributes(attributes); node->typeToken = loc(2); node->identifierToken = loc(3); node->semicolonToken = loc(4); @@ -1325,86 +1387,6 @@ UiObjectMemberPropertyNoInitialiser: T_PROPERTY UiPropertyType QmlIdentifier Sem UiObjectMember: UiObjectMemberPropertyNoInitialiser; -UiObjectMember: T_DEFAULT UiObjectMemberPropertyNoInitialiser; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isDefaultMember = true; - node->defaultToken = loc(1); - sym(1).Node = node; - } break; -./ - - -UiObjectMember: T_REQUIRED UiObjectMemberListPropertyNoInitialiser; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isRequired = true; - node->requiredToken = loc(1); - sym(1).Node = node; - } break; -./ - -UiObjectMember: T_DEFAULT T_REQUIRED UiObjectMemberListPropertyNoInitialiser; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(3).UiPublicMember; - node->isRequired = true; - node->requiredToken = loc(2); - node->isDefaultMember = true; - node->defaultToken = loc(1); - sym(1).Node = node; - } break; -./ - -UiObjectMember: T_REQUIRED T_DEFAULT UiObjectMemberListPropertyNoInitialiser; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(3).UiPublicMember; - node->isRequired = true; - node->requiredToken = loc(1); - node->isDefaultMember = true; - node->defaultToken = loc(2); - sym(1).Node = node; - } break; -./ - -UiObjectMember: T_DEFAULT UiObjectMemberListPropertyNoInitialiser; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isDefaultMember = true; - node->defaultToken = loc(1); - sym(1).Node = node; - } break; -./ - -UiObjectMember: T_DEFAULT T_REQUIRED UiObjectMemberPropertyNoInitialiser; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(3).UiPublicMember; - node->isDefaultMember = true; - node->defaultToken = loc(1); - node->isRequired = true; - node->requiredToken = loc(2); - sym(1).Node = node; - } break; -./ - - -UiObjectMember: T_REQUIRED T_DEFAULT UiObjectMemberPropertyNoInitialiser; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(3).UiPublicMember; - node->isDefaultMember = true; - node->defaultToken = loc(2); - node->isRequired = true; - node->requiredToken = loc(1); - sym(1).Node = node; - } break; -./ - OptionalSemicolon: | Semicolon; /. /* we need OptionalSemicolon because UiScriptStatement might already parse the last semicolon @@ -1423,21 +1405,14 @@ UiRequired: T_REQUIRED QmlIdentifier Semicolon; UiObjectMember: UiRequired; -UiObjectMember: T_REQUIRED UiObjectMemberPropertyNoInitialiser; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->requiredToken = loc(1); - node->isRequired = true; - sym(1).Node = node; - } break; -./ - -UiObjectMemberWithScriptStatement: T_PROPERTY UiPropertyType QmlIdentifier T_COLON UiScriptStatement OptionalSemicolon; +UiObjectMemberWithScriptStatement: UiPropertyAttributes UiPropertyType QmlIdentifier T_COLON UiScriptStatement OptionalSemicolon; /. case $rule_number: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3), sym(5).Statement); - node->propertyToken = loc(1); + auto attributes = sym(1).UiPropertyAttributes; + if (attributes->isRequired()) + diagnostic_messages.append(compileError(attributes->requiredToken(), QLatin1String("Required properties with initializer do not make sense."), QtCriticalMsg)); + node->setAttributes(attributes); node->typeToken = loc(2); node->identifierToken = loc(3); node->colonToken = loc(4); @@ -1447,32 +1422,15 @@ UiObjectMemberWithScriptStatement: T_PROPERTY UiPropertyType QmlIdentifier T_COL UiObjectMember: UiObjectMemberWithScriptStatement; -UiObjectMember: T_READONLY UiObjectMemberWithScriptStatement; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isReadonlyMember = true; - node->readonlyToken = loc(1); - sym(1).Node = node; - } break; -./ - -UiObjectMember: T_DEFAULT UiObjectMemberWithScriptStatement; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isDefaultMember = true; - node->defaultToken = loc(1); - sym(1).Node = node; - } break; -./ - -UiObjectMemberWithArray: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT QmlIdentifier T_COLON T_LBRACKET UiArrayMemberList T_RBRACKET Semicolon; +UiObjectMemberWithArray: UiPropertyAttributes T_IDENTIFIER T_LT UiPropertyType T_GT QmlIdentifier T_COLON T_LBRACKET UiArrayMemberList T_RBRACKET Semicolon; /. case $rule_number: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(4).UiQualifiedId->finish(), stringRef(6)); + auto attributes = sym(1).UiPropertyAttributes; + if (attributes->isRequired()) + diagnostic_messages.append(compileError(attributes->requiredToken(), QLatin1String("Required properties with initializer do not make sense."), QtCriticalMsg)); + node->setAttributes(attributes); node->typeModifier = stringRef(2); - node->propertyToken = loc(1); node->typeModifierToken = loc(2); node->typeToken = loc(4); node->identifierToken = loc(6); @@ -1480,7 +1438,7 @@ UiObjectMemberWithArray: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT QmlIde AST::UiQualifiedId *propertyName = new (pool) AST::UiQualifiedId(stringRef(6)); propertyName->identifierToken = loc(6); - propertyName->next = 0; + propertyName->next = nullptr; AST::UiArrayBinding *binding = new (pool) AST::UiArrayBinding(propertyName, sym(9).UiArrayMemberList->finish()); binding->colonToken = loc(7); @@ -1495,28 +1453,21 @@ UiObjectMemberWithArray: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT QmlIde UiObjectMember: UiObjectMemberWithArray; -UiObjectMember: T_READONLY UiObjectMemberWithArray; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isReadonlyMember = true; - node->readonlyToken = loc(1); - sym(1).Node = node; - } break; -./ - -UiObjectMemberExpressionStatementLookahead: T_PROPERTY UiPropertyType QmlIdentifier T_COLON ExpressionStatementLookahead UiQualifiedId UiObjectInitializer Semicolon; +UiObjectMemberExpressionStatementLookahead: UiPropertyAttributes UiPropertyType QmlIdentifier T_COLON ExpressionStatementLookahead UiQualifiedId UiObjectInitializer Semicolon; /. case $rule_number: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3)); - node->propertyToken = loc(1); + auto attributes = sym(1).UiPropertyAttributes; + if (attributes->isRequired()) + diagnostic_messages.append(compileError(attributes->requiredToken(), QLatin1String("Required properties with initializer do not make sense."), QtWarningMsg)); + node->setAttributes(attributes); node->typeToken = loc(2); node->identifierToken = loc(3); node->semicolonToken = loc(4); // insert a fake ';' before ':' AST::UiQualifiedId *propertyName = new (pool) AST::UiQualifiedId(stringRef(3)); propertyName->identifierToken = loc(3); - propertyName->next = 0; + propertyName->next = nullptr; AST::UiObjectBinding *binding = new (pool) AST::UiObjectBinding( propertyName, sym(6).UiQualifiedId, sym(7).UiObjectInitializer); @@ -1530,16 +1481,6 @@ UiObjectMemberExpressionStatementLookahead: T_PROPERTY UiPropertyType QmlIdentif UiObjectMember: UiObjectMemberExpressionStatementLookahead; -UiObjectMember: T_READONLY UiObjectMemberExpressionStatementLookahead; -/. - case $rule_number: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isReadonlyMember = true; - node->readonlyToken = loc(1); - sym(1).Node = node; - } break; -./ - UiObjectMember: GeneratorDeclaration; /. case $rule_number: { @@ -2113,6 +2054,7 @@ CoverInitializedName: IdentifierReference Initializer_In; if (auto *c = asAnonymousClassDefinition(sym(2).Expression)) c->name = stringRef(1); AST::BinaryExpression *assignment = new (pool) AST::BinaryExpression(left, QSOperator::Assign, sym(2).Expression); + assignment->operatorToken = loc(2); AST::PatternProperty *node = new (pool) AST::PatternProperty(name, assignment); node->colonToken = loc(1); sym(1).Node = node; @@ -2245,7 +2187,14 @@ InitializerOpt: Initializer; InitializerOpt_In: Initializer_In; TemplateLiteral: T_NO_SUBSTITUTION_TEMPLATE; -/. case $rule_number: Q_FALLTHROUGH(); ./ +/. + case $rule_number: { + AST::TemplateLiteral *node = new (pool) AST::TemplateLiteral(stringRef(1), rawStringRef(1), nullptr); + node->literalToken = loc(1); + node->hasNoSubstitution = true; + sym(1).Node = node; + } break; +./ TemplateSpans: T_TEMPLATE_TAIL; /. @@ -4118,7 +4067,7 @@ ArrowFunction_In: ArrowParameters T_ARROW ConciseBodyLookahead T_FORCE_BLOCK Fun AST::FunctionExpression *f = new (pool) AST::FunctionExpression(QStringView(), sym(1).FormalParameterList, sym(6).StatementList); f->isArrowFunction = true; f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation().startZeroLengthLocation() : loc(1).startZeroLengthLocation(); - f->lbraceToken = loc(6); + f->lbraceToken = loc(5); f->rbraceToken = loc(7); sym(1).Node = f; } break; diff --git a/src/libs/qmljs/parser/qmljsast.cpp b/src/libs/qmljs/parser/qmljsast.cpp index 19db1058a23..5e6c897d639 100644 --- a/src/libs/qmljs/parser/qmljsast.cpp +++ b/src/libs/qmljs/parser/qmljsast.cpp @@ -23,12 +23,15 @@ ** ****************************************************************************/ -#include #include "qmljsast_p.h" +#include +#include #include "qmljsastvisitor_p.h" #include +#include + QT_QML_BEGIN_NAMESPACE namespace QmlJS { namespace AST { @@ -1582,7 +1585,7 @@ QString Type::toString() const void Type::toString(QString *out) const { for (QmlJS::AST::UiQualifiedId *it = typeId; it; it = it->next) { - out->append(it->name.toString()); + out->append(it->name); if (it->next) out->append(QLatin1Char('.')); @@ -1634,6 +1637,25 @@ void UiAnnotation::accept0(BaseVisitor *visitor) visitor->endVisit(this); } +SourceLocation UiPropertyAttributes::firstSourceLocation() const +{ + std::array tokens{&m_propertyToken, + &m_defaultToken, + &m_readonlyToken, + &m_requiredToken}; + const auto it = std::min_element(tokens.begin(), tokens.end(), compareLocationsByBegin); + return **it; +} + +SourceLocation UiPropertyAttributes::lastSourceLocation() const +{ + std::array tokens{&m_propertyToken, + &m_defaultToken, + &m_readonlyToken, + &m_requiredToken}; + const auto it = std::max_element(tokens.begin(), tokens.end(), compareLocationsByBegin); + return **it; +} } } // namespace QmlJS::AST QT_QML_END_NAMESPACE diff --git a/src/libs/qmljs/parser/qmljsast_p.h b/src/libs/qmljs/parser/qmljsast_p.h index b51dd16c568..78b9f4b0800 100644 --- a/src/libs/qmljs/parser/qmljsast_p.h +++ b/src/libs/qmljs/parser/qmljsast_p.h @@ -41,11 +41,16 @@ #include "qmljs/parser/qmljsmemorypool_p.h" -#include #include QT_QML_BEGIN_NAMESPACE +class QString; + +namespace QmlJS { +class Parser; +} + #define QMLJS_DECLARE_AST_NODE(name) \ enum { K = Kind_##name }; @@ -238,6 +243,7 @@ public: Kind_UiPragma, Kind_UiProgram, Kind_UiParameterList, + Kind_UiPropertyAttributes, Kind_UiPublicMember, Kind_UiQualifiedId, Kind_UiScriptBinding, @@ -292,12 +298,6 @@ public: node->accept(visitor); } - // ### Remove when we can. This is part of the qmldevtools library, though. - inline static void acceptChild(Node *node, BaseVisitor *visitor) - { - return accept(node, visitor); - } - virtual void accept0(BaseVisitor *visitor) = 0; virtual SourceLocation firstSourceLocation() const = 0; virtual SourceLocation lastSourceLocation() const = 0; @@ -721,6 +721,7 @@ public: void accept0(BaseVisitor *visitor) override; + bool hasNoSubstitution = false; QStringView value; QStringView rawValue; ExpressionNode *expression; @@ -3121,8 +3122,9 @@ class QML_PARSER_EXPORT UiPragma: public Node public: QMLJS_DECLARE_AST_NODE(UiPragma) - UiPragma(QStringView name) + UiPragma(QStringView name, QStringView value = {}) : name(name) + , value(value) { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -3135,6 +3137,7 @@ public: // attributes QStringView name; + QStringView value; SourceLocation pragmaToken; SourceLocation semicolonToken; }; @@ -3350,34 +3353,77 @@ public: SourceLocation colonToken; }; +class QML_PARSER_EXPORT UiPropertyAttributes : public Node +{ + QMLJS_DECLARE_AST_NODE(UiPropertyAttributes) +public: + UiPropertyAttributes() { kind = K; } + + SourceLocation defaultToken() const { return m_defaultToken; } + bool isDefaultMember() const { return defaultToken().isValid(); } + SourceLocation requiredToken() const { return m_requiredToken; } + bool isRequired() const { return requiredToken().isValid(); } + SourceLocation readonlyToken() const { return m_readonlyToken; } + bool isReadonly() const { return readonlyToken().isValid(); } + + SourceLocation propertyToken() const { return m_propertyToken; } + + template + static bool compareLocationsByBegin(const SourceLocation *&lhs, const SourceLocation *&rhs) + { + if (lhs->isValid() && rhs->isValid()) + return lhs->begin() < rhs->begin(); + else if (lhs->isValid()) + return InvalidIsLargest; + else + return !InvalidIsLargest; + } + + void accept0(BaseVisitor *) override {} // intentionally do nothing + + SourceLocation firstSourceLocation() const override; + + SourceLocation lastSourceLocation() const override; + +private: + friend class QmlJS::Parser; + SourceLocation m_defaultToken; + SourceLocation m_readonlyToken; + SourceLocation m_requiredToken; + SourceLocation m_propertyToken; +}; + class QML_PARSER_EXPORT UiPublicMember: public UiObjectMember { public: QMLJS_DECLARE_AST_NODE(UiPublicMember) - UiPublicMember(UiQualifiedId *memberType, - QStringView name) - : type(Property), memberType(memberType), name(name), statement(nullptr), binding(nullptr), isDefaultMember(false), isReadonlyMember(false), parameters(nullptr) + UiPublicMember(UiQualifiedId *memberType, QStringView name) + : type(Property) + , memberType(memberType) + , name(name) + , statement(nullptr) + , binding(nullptr) + , parameters(nullptr) { kind = K; } - UiPublicMember(UiQualifiedId *memberType, - QStringView name, - Statement *statement) - : type(Property), memberType(memberType), name(name), statement(statement), binding(nullptr), isDefaultMember(false), isReadonlyMember(false), parameters(nullptr) + UiPublicMember(UiQualifiedId *memberType, QStringView name, Statement *statement) + : type(Property) + , memberType(memberType) + , name(name) + , statement(statement) + , binding(nullptr) + , parameters(nullptr) { kind = K; } void accept0(BaseVisitor *visitor) override; SourceLocation firstSourceLocation() const override { - if (defaultToken.isValid()) - return defaultToken; - else if (readonlyToken.isValid()) - return readonlyToken; - else if (requiredToken.isValid()) - return requiredToken; - - return propertyToken; + if (hasAttributes) + return m_attributes->firstSourceLocation(); + else + return m_propertyToken; } SourceLocation lastSourceLocation() const override @@ -3390,27 +3436,62 @@ public: return semicolonToken; } + SourceLocation defaultToken() const + { + return hasAttributes ? m_attributes->defaultToken() : SourceLocation{}; + } + bool isDefaultMember() const { return defaultToken().isValid(); } + + SourceLocation requiredToken() const + { + return hasAttributes ? m_attributes->requiredToken() : SourceLocation{}; + } + bool isRequired() const { return requiredToken().isValid(); } + + SourceLocation readonlyToken() const + { + return hasAttributes ? m_attributes->readonlyToken() : SourceLocation{}; + } + bool isReadonly() const { return readonlyToken().isValid(); } + + void setAttributes(UiPropertyAttributes *attributes) + { + m_attributes = attributes; + hasAttributes = true; + } + + SourceLocation propertyToken() const + { + return hasAttributes ? m_attributes->propertyToken() : m_propertyToken; + } + + void setPropertyToken(SourceLocation token) + { + m_propertyToken = token; + hasAttributes = false; + } + // attributes - enum { Signal, Property } type; + enum : bool { Signal, Property } type; + bool hasAttributes = false; QStringView typeModifier; UiQualifiedId *memberType; QStringView name; Statement *statement; // initialized with a JS expression UiObjectMember *binding; // initialized with a QML object or array. - bool isDefaultMember; - bool isReadonlyMember; - bool isRequired = false; UiParameterList *parameters; // TODO: merge source locations - SourceLocation defaultToken; - SourceLocation readonlyToken; - SourceLocation propertyToken; - SourceLocation requiredToken; SourceLocation typeModifierToken; SourceLocation typeToken; SourceLocation identifierToken; SourceLocation colonToken; SourceLocation semicolonToken; + +private: + union { + SourceLocation m_propertyToken = SourceLocation{}; + UiPropertyAttributes *m_attributes; + }; }; class QML_PARSER_EXPORT UiObjectDefinition: public UiObjectMember diff --git a/src/libs/qmljs/parser/qmljsengine_p.cpp b/src/libs/qmljs/parser/qmljsengine_p.cpp deleted file mode 100644 index 2a0482c5eaa..00000000000 --- a/src/libs/qmljs/parser/qmljsengine_p.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "qmljsengine_p.h" -#include "qmljsglobal_p.h" - -#include -#include -#include - -QT_QML_BEGIN_NAMESPACE - -namespace QmlJS { - -static inline int toDigit(char c) -{ - if ((c >= '0') && (c <= '9')) - return c - '0'; - else if ((c >= 'a') && (c <= 'z')) - return 10 + c - 'a'; - else if ((c >= 'A') && (c <= 'Z')) - return 10 + c - 'A'; - return -1; -} - -double integerFromString(const char *buf, int size, int radix) -{ - if (size == 0) - return qQNaN(); - - double sign = 1.0; - int i = 0; - if (buf[0] == '+') { - ++i; - } else if (buf[0] == '-') { - sign = -1.0; - ++i; - } - - if (((size-i) >= 2) && (buf[i] == '0')) { - if (((buf[i+1] == 'x') || (buf[i+1] == 'X')) - && (radix < 34)) { - if ((radix != 0) && (radix != 16)) - return 0; - radix = 16; - i += 2; - } else { - if (radix == 0) { - radix = 8; - ++i; - } - } - } else if (radix == 0) { - radix = 10; - } - - int j = i; - for ( ; i < size; ++i) { - int d = toDigit(buf[i]); - if ((d == -1) || (d >= radix)) - break; - } - double result; - if (j == i) { - if (!qstrcmp(buf, "Infinity")) - result = qInf(); - else - result = qQNaN(); - } else { - result = 0; - double multiplier = 1; - for (--i ; i >= j; --i, multiplier *= radix) - result += toDigit(buf[i]) * multiplier; - } - result *= sign; - return result; -} - -Engine::Engine() - : _lexer(nullptr), _directives(nullptr) -{ } - -Engine::~Engine() -{ } - -void Engine::setCode(const QString &code) -{ _code = code; } - -void Engine::addComment(int pos, int len, int line, int col) -{ if (len > 0) _comments.append(QmlJS::SourceLocation(pos, len, line, col)); } - -QList Engine::comments() const -{ return _comments; } - -Lexer *Engine::lexer() const -{ return _lexer; } - -void Engine::setLexer(Lexer *lexer) -{ _lexer = lexer; } - -Directives *Engine::directives() const -{ return _directives; } - -void Engine::setDirectives(Directives *directives) -{ _directives = directives; } - -MemoryPool *Engine::pool() -{ return &_pool; } - -QStringView Engine::newStringRef(const QString &text) -{ - _extraCode.append(text); - return QStringView{_extraCode.last()}; -} - -QStringView Engine::newStringRef(const QChar *chars, int size) -{ return newStringRef(QString(chars, size)); } - -} // end of namespace QmlJS - -QT_QML_END_NAMESPACE diff --git a/src/libs/qmljs/parser/qmljsengine_p.h b/src/libs/qmljs/parser/qmljsengine_p.h index 928257ee37a..fbe608de9b5 100644 --- a/src/libs/qmljs/parser/qmljsengine_p.h +++ b/src/libs/qmljs/parser/qmljsengine_p.h @@ -78,41 +78,50 @@ public: } }; -class QML_PARSER_EXPORT Engine +class Engine { - Lexer *_lexer; - Directives *_directives; + Lexer *_lexer = nullptr; + Directives *_directives = nullptr; MemoryPool _pool; QList _comments; QStringList _extraCode; QString _code; public: - Engine(); - ~Engine(); - - void setCode(const QString &code); + void setCode(const QString &code) { _code = code; } const QString &code() const { return _code; } - void addComment(int pos, int len, int line, int col); - QList comments() const; + void addComment(int pos, int len, int line, int col) + { + if (len > 0) + _comments.append(QmlJS::SourceLocation(pos, len, line, col)); + } - Lexer *lexer() const; - void setLexer(Lexer *lexer); + QList comments() const { return _comments; } - Directives *directives() const; - void setDirectives(Directives *directives); + Lexer *lexer() const { return _lexer; } + void setLexer(Lexer *lexer) { _lexer = lexer; } - MemoryPool *pool(); + Directives *directives() const { return _directives; } + void setDirectives(Directives *directives) { _directives = directives; } - inline QStringView midRef(int position, int size) { return QStringView{_code}.mid(position, size); } + MemoryPool *pool() { return &_pool; } + const MemoryPool *pool() const { return &_pool; } - QStringView newStringRef(const QString &s); - QStringView newStringRef(const QChar *chars, int size); + QStringView midRef(int position, int size) { return QStringView{_code}.mid(position, size); } + + QStringView newStringRef(const QString &text) + { + _extraCode.append(text); + return QStringView{_extraCode.last()}; + } + + QStringView newStringRef(const QChar *chars, int size) + { + return newStringRef(QString(chars, size)); + } }; -double integerFromString(const char *buf, int size, int radix); - } // end of namespace QmlJS QT_QML_END_NAMESPACE diff --git a/src/libs/qmljs/parser/qmljsgrammar.cpp b/src/libs/qmljs/parser/qmljsgrammar.cpp index 04d1e6b2952..ed3661807df 100644 --- a/src/libs/qmljs/parser/qmljsgrammar.cpp +++ b/src/libs/qmljs/parser/qmljsgrammar.cpp @@ -25,2355 +25,1800 @@ // This file was generated by qlalr - DO NOT EDIT! #include "qmljsgrammar_p.h" -const char *const QmlJSGrammar::spell [] = { - "end of file", "&", "&&", "&=", "break", "case", "catch", ":", ",", "continue", - "default", "delete", "/", "/=", "do", ".", "else", "=", "==", "===", - "finally", "for", "function *", "function", ">=", ">", ">>", ">>=", ">>>", ">>>=", - "identifier", "if", "in", "instanceof", "{", "[", "<=", "(", "<", "<<", - "<<=", "-", "-=", "--", "new", "!", "!=", "!==", "numeric literal", "|", - "version number", "|=", "||", "+", "+=", "++", "?", "}", "]", "%", - "%=", "return", ")", ";", 0, "*", "**", "**=", "*=", "string literal", - "property", "signal", "readonly", "switch", "this", "throw", "~", "try", "typeof", "var", - "void", "while", "with", "^", "^=", "null", "true", "false", "const", "let", - "@", "debugger", "reserved word", "multiline string literal", "comment", 0, "=>", "??", "?.", "enum", - "...", "yield", "super", "class", "extends", "static", "export", "from", "required", "component", - "(no subst template)", "(template head)", "(template middle)", "(template tail)", "public", "import", "pragma", "as", "of", "get", - "set", 0, 0, 0, 0, 0, 0, 0, "(force decl)", "(force block)", - "(for lookahead ok)", 0, 0, 0, 0, + const char *const QmlJSGrammar::spell[] + = {"end of file", + "&", + "&&", + "&=", + "break", + "case", + "catch", + ":", + ",", + "continue", + "default", + "delete", + "/", + "/=", + "do", + ".", + "else", + "=", + "==", + "===", + "finally", + "for", + "function *", + "function", + ">=", + ">", + ">>", + ">>=", + ">>>", + ">>>=", + "identifier", + "if", + "in", + "instanceof", + "{", + "[", + "<=", + "(", + "<", + "<<", + "<<=", + "-", + "-=", + "--", + "new", + "!", + "!=", + "!==", + "numeric literal", + "|", + "version number", + "|=", + "||", + "+", + "+=", + "++", + "?", + "}", + "]", + "%", + "%=", + "return", + ")", + ";", + 0, + "*", + "**", + "**=", + "*=", + "string literal", + "property", + "signal", + "readonly", + "switch", + "this", + "throw", + "~", + "try", + "typeof", + "var", + "void", + "while", + "with", + "^", + "^=", + "null", + "true", + "false", + "const", + "let", + "@", + "debugger", + "reserved word", + "multiline string literal", + "comment", + 0, + "=>", + "??", + "?.", + "enum", + "...", + "yield", + "super", + "class", + "extends", + "static", + "export", + "from", + "required", + "component", + "(no subst template)", + "(template head)", + "(template middle)", + "(template tail)", + "public", + "import", + "pragma", + "as", + "of", + "get", + "set", + 0, + 0, + 0, + 0, + 0, + 0, + 0, + "(force decl)", + "(force block)", + "(for lookahead ok)", + 0, + 0, + 0, + 0, #ifndef QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO -"TopLevel", "UiProgram", "Statement", "Expression", "UiAnnotatedObjectMember", - "Script", "Module", "UiHeaderItemListOpt", "UiRootMember", "Empty", "UiHeaderItemList", "UiPragma", "UiImport", "PragmaId", "JsIdentifier", - "Semicolon", "ImportId", "MemberExpression", "UiImportHead", "UiVersionSpecifier", "QmlIdentifier", "UiAnnotatedObject", "UiSimpleQualifiedId", "UiAnnotationObjectDefinition", "UiObjectInitializer", - "UiAnnotation", "UiAnnotationList", "UiObjectDefinition", "UiObjectMemberList", "UiArrayMemberList", "UiQualifiedId", "UiObjectMember", "ExpressionStatementLookahead", "UiObjectLiteral", "UiPropertyDefinitionList", - "UiScriptStatement", "ExpressionStatement", "Block", "EmptyStatement", "IfStatement", "WithStatement", "SwitchStatement", "TryStatement", "UiPropertyType", "UiParameterListOpt", - "UiParameterList", "UiObjectMemberListPropertyNoInitialiser", "UiObjectMemberPropertyNoInitialiser", "OptionalSemicolon", "UiRequired", "UiObjectMemberWithScriptStatement", "UiObjectMemberWithArray", "UiObjectMemberExpressionStatementLookahead", "GeneratorDeclaration", "FunctionDeclarationWithTypes", - "VariableStatement", "EnumMemberList", "IdentifierReference", "BindingIdentifier", "TypeArguments", "Type", "TypeAnnotation", "TypeAnnotationOpt", "PrimaryExpression", "Literal", - "ArrayLiteral", "ObjectLiteral", "FunctionExpression", "ClassExpression", "GeneratorExpression", "RegularExpressionLiteral", "TemplateLiteral", "CoverParenthesizedExpressionAndArrowParameterList", "Expression_In", "BindingRestElement", - "BindingRestElementOpt", "ElisionOpt", "ElementList", "AssignmentExpression_In", "Elision", "SpreadElement", "AssignmentExpression", "PropertyDefinitionList", "UiPropertyDefinition", "PropertyDefinition", - "CoverInitializedName", "Initializer_In", "UiPropertyName", "PropertyName", "MethodDefinition", "LiteralPropertyName", "ComputedPropertyName", "IdentifierName", "ReservedIdentifier", "Initializer", - "InitializerOpt", "InitializerOpt_In", "TemplateSpans", "Super", "NewTarget", "MetaProperty", "Arguments", "NewExpression", "CallExpression", "ArgumentList", - "LeftHandSideExpression", "UpdateExpression", "UnaryExpression", "ExponentiationExpression", "MultiplicativeExpression", "MultiplicativeOperator", "AdditiveExpression", "ShiftExpression", "RelationalExpression_In", "RelationalExpression", - "RelationalOperator", "EqualityExpression_In", "EqualityExpression", "EqualityOperator", "BitwiseANDExpression", "BitwiseANDExpression_In", "BitwiseXORExpression", "BitwiseXORExpression_In", "BitwiseORExpression", "BitwiseORExpression_In", - "LogicalANDExpression", "LogicalANDExpression_In", "LogicalORExpression", "LogicalORExpression_In", "CoalesceExpression", "CoalesceExpression_In", "ConditionalExpression", "ConditionalExpression_In", "YieldExpression", "YieldExpression_In", - "ArrowFunction", "ArrowFunction_In", "AssignmentOperator", "ExpressionOpt", "ExpressionOpt_In", "BlockStatement", "BreakableStatement", "ContinueStatement", "BreakStatement", "ReturnStatement", - "LabelledStatement", "ThrowStatement", "DebuggerStatement", "Declaration", "HoistableDeclaration", "ClassDeclaration", "LexicalDeclaration_In", "FunctionDeclaration", "HoistableDeclaration_Default", "FunctionDeclaration_Default", - "GeneratorDeclaration_Default", "IterationStatement", "StatementListOpt", "StatementList", "StatementListItem", "LetOrConst", "Var", "LexicalDeclaration", "BindingList", "BindingList_In", - "VarDeclaration", "VariableDeclarationList", "VarDeclaration_In", "VariableDeclarationList_In", "LexicalBinding_In", "VariableDeclaration", "VariableDeclaration_In", "LexicalBinding", "BindingPattern", "ObjectBindingPattern", - "ArrayBindingPattern", "BindingPropertyList", "BindingElementList", "BindingProperty", "BindingElisionElement", "BindingElement", "InOrOf", "ForDeclaration", "CaseBlock", "CaseClausesOpt", - "DefaultClause", "CaseClauses", "CaseClause", "LabelledItem", "Catch", "Finally", "CatchParameter", "Function", "FormalParameters", "FunctionLBrace", - "FunctionBody", "FunctionRBrace", "StrictFormalParameters", "FormalParameterList", "FormalParameter", "ArrowParameters", "ConciseBodyLookahead", "GeneratorLParen", "GeneratorBody", "GeneratorRBrace", - "PropertySetParameterList", "FunctionStar", "ClassHeritageOpt", "ClassLBrace", "ClassBodyOpt", "ClassRBrace", "ClassDeclaration_Default", "ClassStaticQualifier", "ClassElementList", "ClassElement", - "ScriptBody", "ModuleBodyOpt", "ModuleBody", "ModuleItemList", "ModuleItem", "ImportDeclaration", "ExportDeclaration", "ImportClause", "FromClause", "ModuleSpecifier", - "ImportedDefaultBinding", "NameSpaceImport", "NamedImports", "ImportedBinding", "ImportsList", "ImportSpecifier", "ExportDeclarationLookahead", "ExportClause", "ExportsList", "ExportSpecifier", - "$accept" + "TopLevel", + "UiProgram", + "Statement", + "Expression", + "UiAnnotatedObjectMember", + "Script", + "Module", + "UiHeaderItemListOpt", + "UiRootMember", + "Empty", + "UiHeaderItemList", + "UiPragma", + "UiImport", + "PragmaId", + "JsIdentifier", + "Semicolon", + "ImportId", + "MemberExpression", + "UiImportHead", + "UiVersionSpecifier", + "QmlIdentifier", + "UiAnnotatedObject", + "UiSimpleQualifiedId", + "UiAnnotationObjectDefinition", + "UiObjectInitializer", + "UiAnnotation", + "UiAnnotationList", + "UiObjectDefinition", + "UiObjectMemberList", + "UiArrayMemberList", + "UiQualifiedId", + "UiObjectMember", + "ExpressionStatementLookahead", + "UiObjectLiteral", + "UiPropertyDefinitionList", + "UiScriptStatement", + "ExpressionStatement", + "Block", + "EmptyStatement", + "IfStatement", + "WithStatement", + "SwitchStatement", + "TryStatement", + "UiPropertyType", + "UiParameterListOpt", + "UiParameterList", + "AttrRequired", + "AttrReadonly", + "AttrDefault", + "UiPropertyAttributes", + "UiObjectMemberListPropertyNoInitialiser", + "UiObjectMemberPropertyNoInitialiser", + "OptionalSemicolon", + "UiRequired", + "UiObjectMemberWithScriptStatement", + "UiObjectMemberWithArray", + "UiObjectMemberExpressionStatementLookahead", + "GeneratorDeclaration", + "FunctionDeclarationWithTypes", + "VariableStatement", + "EnumMemberList", + "IdentifierReference", + "BindingIdentifier", + "TypeArguments", + "Type", + "TypeAnnotation", + "TypeAnnotationOpt", + "PrimaryExpression", + "Literal", + "ArrayLiteral", + "ObjectLiteral", + "FunctionExpression", + "ClassExpression", + "GeneratorExpression", + "RegularExpressionLiteral", + "TemplateLiteral", + "CoverParenthesizedExpressionAndArrowParameterList", + "Expression_In", + "BindingRestElement", + "BindingRestElementOpt", + "ElisionOpt", + "ElementList", + "AssignmentExpression_In", + "Elision", + "SpreadElement", + "AssignmentExpression", + "PropertyDefinitionList", + "UiPropertyDefinition", + "PropertyDefinition", + "CoverInitializedName", + "Initializer_In", + "UiPropertyName", + "PropertyName", + "MethodDefinition", + "LiteralPropertyName", + "ComputedPropertyName", + "IdentifierName", + "ReservedIdentifier", + "Initializer", + "InitializerOpt", + "InitializerOpt_In", + "TemplateSpans", + "Super", + "NewTarget", + "MetaProperty", + "Arguments", + "NewExpression", + "CallExpression", + "ArgumentList", + "LeftHandSideExpression", + "UpdateExpression", + "UnaryExpression", + "ExponentiationExpression", + "MultiplicativeExpression", + "MultiplicativeOperator", + "AdditiveExpression", + "ShiftExpression", + "RelationalExpression_In", + "RelationalExpression", + "RelationalOperator", + "EqualityExpression_In", + "EqualityExpression", + "EqualityOperator", + "BitwiseANDExpression", + "BitwiseANDExpression_In", + "BitwiseXORExpression", + "BitwiseXORExpression_In", + "BitwiseORExpression", + "BitwiseORExpression_In", + "LogicalANDExpression", + "LogicalANDExpression_In", + "LogicalORExpression", + "LogicalORExpression_In", + "CoalesceExpression", + "CoalesceExpression_In", + "ConditionalExpression", + "ConditionalExpression_In", + "YieldExpression", + "YieldExpression_In", + "ArrowFunction", + "ArrowFunction_In", + "AssignmentOperator", + "ExpressionOpt", + "ExpressionOpt_In", + "BlockStatement", + "BreakableStatement", + "ContinueStatement", + "BreakStatement", + "ReturnStatement", + "LabelledStatement", + "ThrowStatement", + "DebuggerStatement", + "Declaration", + "HoistableDeclaration", + "ClassDeclaration", + "LexicalDeclaration_In", + "FunctionDeclaration", + "HoistableDeclaration_Default", + "FunctionDeclaration_Default", + "GeneratorDeclaration_Default", + "IterationStatement", + "StatementListOpt", + "StatementList", + "StatementListItem", + "LetOrConst", + "Var", + "LexicalDeclaration", + "BindingList", + "BindingList_In", + "VarDeclaration", + "VariableDeclarationList", + "VarDeclaration_In", + "VariableDeclarationList_In", + "LexicalBinding_In", + "VariableDeclaration", + "VariableDeclaration_In", + "LexicalBinding", + "BindingPattern", + "ObjectBindingPattern", + "ArrayBindingPattern", + "BindingPropertyList", + "BindingElementList", + "BindingProperty", + "BindingElisionElement", + "BindingElement", + "InOrOf", + "ForDeclaration", + "CaseBlock", + "CaseClausesOpt", + "DefaultClause", + "CaseClauses", + "CaseClause", + "LabelledItem", + "Catch", + "Finally", + "CatchParameter", + "Function", + "FormalParameters", + "FunctionLBrace", + "FunctionBody", + "FunctionRBrace", + "StrictFormalParameters", + "FormalParameterList", + "FormalParameter", + "ArrowParameters", + "ConciseBodyLookahead", + "GeneratorLParen", + "GeneratorBody", + "GeneratorRBrace", + "PropertySetParameterList", + "FunctionStar", + "ClassHeritageOpt", + "ClassLBrace", + "ClassBodyOpt", + "ClassRBrace", + "ClassDeclaration_Default", + "ClassStaticQualifier", + "ClassElementList", + "ClassElement", + "ScriptBody", + "ModuleBodyOpt", + "ModuleBody", + "ModuleItemList", + "ModuleItem", + "ImportDeclaration", + "ExportDeclaration", + "ImportClause", + "FromClause", + "ModuleSpecifier", + "ImportedDefaultBinding", + "NameSpaceImport", + "NamedImports", + "ImportedBinding", + "ImportsList", + "ImportSpecifier", + "ExportDeclarationLookahead", + "ExportClause", + "ExportsList", + "ExportSpecifier", + "$accept" #endif // QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO }; -const short QmlJSGrammar::lhs [] = { - 135, 135, 135, 135, 135, 135, 136, 142, 142, 145, - 145, 145, 145, 148, 150, 150, 146, 151, 147, 154, - 154, 147, 147, 147, 153, 144, 143, 157, 157, 158, - 160, 161, 161, 156, 156, 163, 163, 164, 164, 159, - 159, 162, 139, 139, 166, 166, 166, 166, 168, 168, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 166, - 178, 178, 178, 178, 179, 179, 180, 180, 180, 180, - 166, 166, 181, 166, 166, 182, 166, 166, 166, 166, - 166, 166, 166, 166, 183, 183, 184, 166, 166, 185, - 166, 166, 166, 186, 166, 166, 187, 166, 166, 166, - 166, 166, 165, 166, 166, 191, 191, 191, 191, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 192, 193, 194, 194, 195, 195, 195, - 196, 197, 197, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 207, 207, 207, 207, 199, 199, - 199, 199, 199, 199, 205, 205, 200, 200, 200, 212, - 212, 212, 212, 212, 214, 214, 211, 211, 215, 201, - 201, 201, 169, 217, 169, 217, 219, 219, 220, 218, - 219, 219, 223, 223, 225, 222, 225, 222, 225, 227, - 227, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 226, - 229, 221, 230, 231, 230, 231, 206, 232, 232, 206, - 152, 233, 152, 152, 152, 234, 152, 152, 152, 152, - 152, 235, 237, 237, 238, 152, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 236, 236, 236, 239, 239, - 239, 239, 240, 240, 241, 241, 241, 241, 241, 242, - 242, 242, 242, 242, 242, 242, 242, 243, 243, 244, - 244, 245, 245, 245, 246, 246, 246, 247, 247, 247, - 247, 248, 249, 248, 249, 250, 250, 250, 250, 250, - 250, 248, 251, 252, 251, 252, 253, 253, 253, 253, - 254, 255, 254, 255, 256, 257, 256, 257, 258, 259, - 258, 259, 260, 261, 260, 261, 262, 263, 262, 263, - 264, 265, 264, 265, 266, 267, 266, 267, 216, 213, - 216, 213, 216, 213, 216, 213, 216, 213, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 138, 208, 138, 208, 273, 274, 273, 274, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 283, 283, 283, 284, 284, 288, 288, 276, - 276, 275, 172, 293, 293, 294, 294, 292, 292, 295, - 295, 296, 297, 286, 300, 302, 190, 298, 299, 301, - 303, 298, 299, 301, 303, 307, 304, 305, 306, 307, - 304, 305, 306, 308, 308, 309, 309, 309, 310, 310, - 310, 311, 311, 312, 312, 314, 313, 313, 313, 315, - 315, 209, 209, 210, 210, 173, 167, 171, 174, 174, - 291, 291, 291, 291, 291, 291, 316, 316, 291, 291, - 317, 317, 317, 317, 277, 277, 278, 278, 279, 175, - 176, 318, 318, 321, 321, 319, 319, 322, 320, 280, - 323, 323, 281, 177, 177, 177, 324, 325, 326, 326, - 282, 327, 287, 189, 289, 289, 202, 202, 332, 328, - 328, 328, 328, 328, 333, 333, 334, 329, 331, 330, - 270, 271, 270, 271, 335, 335, 336, 224, 224, 224, - 224, 340, 337, 339, 341, 188, 290, 290, 204, 204, - 338, 268, 269, 268, 269, 268, 269, 285, 203, 346, - 203, 346, 343, 345, 347, 342, 342, 344, 344, 348, - 348, 349, 349, 349, 140, 140, 350, 141, 352, 351, - 351, 353, 353, 354, 354, 354, 355, 355, 357, 357, - 357, 357, 357, 360, 361, 362, 362, 362, 358, 364, - 364, 365, 365, 359, 363, 366, 356, 356, 356, 356, - 356, 356, 356, 356, 367, 367, 367, 368, 368, 369, - 369, 370 -}; - -const short QmlJSGrammar::rhs [] = { - 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, - 1, 2, 2, 1, 1, 1, 3, 1, 2, 3, - 1, 3, 5, 4, 2, 0, 1, 1, 3, 2, - 2, 1, 2, 2, 1, 1, 2, 1, 3, 2, - 3, 2, 2, 1, 1, 6, 5, 4, 5, 6, - 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, - 1, 1, 1, 3, 0, 1, 3, 2, 5, 4, - 6, 3, 7, 1, 2, 4, 1, 2, 2, 3, - 3, 2, 3, 3, 0, 1, 3, 1, 2, 6, - 1, 2, 2, 11, 1, 2, 8, 1, 2, 1, - 1, 1, 1, 5, 4, 1, 3, 3, 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, 3, 4, 1, 1, - 2, 1, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 2, 3, 5, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 3, 5, 1, - 2, 2, 4, 4, 1, 2, 0, 1, 2, 2, - 3, 4, 1, 1, 3, 3, 1, 1, 2, 3, - 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, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 2, 2, 0, 0, 1, 1, 1, 1, 3, 3, - 1, 1, 4, 4, 5, 3, 3, 3, 3, 1, - 5, 1, 1, 2, 2, 2, 4, 5, 4, 4, - 5, 4, 5, 3, 3, 0, 1, 2, 1, 2, - 3, 4, 1, 1, 1, 2, 2, 2, 2, 1, - 2, 2, 2, 2, 2, 2, 2, 1, 3, 1, - 3, 1, 1, 1, 1, 3, 3, 1, 3, 3, - 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, - 1, 3, 1, 1, 3, 3, 1, 1, 1, 1, - 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, - 3, 3, 1, 1, 3, 3, 1, 1, 3, 3, - 1, 1, 3, 3, 1, 1, 5, 5, 1, 1, - 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 3, 0, 0, 1, 1, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 1, 2, 1, 4, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, - 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, - 2, 2, 2, 3, 3, 0, 1, 2, 2, 1, - 4, 1, 3, 1, 3, 2, 2, 4, 4, 3, - 2, 2, 2, 0, 1, 1, 0, 2, 7, 5, - 7, 7, 5, 9, 9, 9, 1, 1, 7, 7, - 3, 3, 2, 2, 2, 3, 2, 3, 3, 5, - 5, 3, 5, 1, 2, 0, 1, 4, 3, 3, - 1, 3, 3, 3, 3, 4, 5, 2, 1, 1, - 2, 1, 9, 9, 1, 8, 9, 8, 1, 0, - 1, 1, 2, 3, 1, 3, 1, 1, 1, 1, - 4, 4, 7, 7, 1, 1, 0, 8, 9, 8, - 9, 1, 1, 1, 1, 8, 1, 7, 8, 7, - 1, 1, 1, 3, 3, 2, 2, 6, 6, 5, - 5, 1, 1, 1, 1, 0, 2, 0, 1, 1, - 2, 1, 2, 1, 0, 1, 1, 1, 1, 0, - 1, 1, 2, 2, 2, 1, 3, 2, 1, 1, - 1, 3, 3, 1, 3, 2, 3, 4, 2, 1, - 3, 1, 3, 1, 1, 0, 3, 3, 2, 2, - 2, 5, 5, 4, 2, 3, 4, 1, 3, 1, - 3, 2 -}; +const short QmlJSGrammar::lhs[] + = {135, 135, 135, 135, 135, 135, 136, 142, 142, 145, 145, 145, 145, 148, 150, 150, 146, 146, + 151, 147, 154, 154, 147, 147, 147, 153, 144, 143, 157, 157, 158, 160, 161, 161, 156, 156, + 163, 163, 164, 164, 159, 159, 162, 139, 139, 166, 166, 166, 166, 168, 168, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 166, 178, 178, 178, 178, 179, 179, 180, 180, 180, 180, 166, + 166, 181, 182, 183, 184, 184, 184, 184, 185, 166, 186, 166, 187, 187, 188, 166, 189, 166, + 190, 166, 191, 166, 166, 166, 166, 165, 166, 166, 195, 195, 195, 195, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 196, 197, 198, 198, 199, 199, 199, 200, 201, 201, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 211, 211, 211, 211, 203, 203, 203, 203, 203, 203, 209, 209, 204, + 204, 204, 216, 216, 216, 216, 216, 218, 218, 215, 215, 219, 205, 205, 205, 169, 221, 169, + 221, 223, 223, 224, 222, 223, 223, 227, 227, 229, 226, 229, 226, 229, 231, 231, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 230, 233, 225, 234, 235, 234, 235, 210, 236, 236, 210, 152, 237, 152, 152, 152, 238, 152, + 152, 152, 152, 152, 239, 241, 241, 242, 152, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 240, 240, 240, 243, 243, 243, 243, 244, 244, 245, 245, 245, 245, 245, 246, 246, 246, 246, + 246, 246, 246, 246, 247, 247, 248, 248, 249, 249, 249, 250, 250, 250, 251, 251, 251, 251, + 252, 253, 252, 253, 254, 254, 254, 254, 254, 254, 252, 255, 256, 255, 256, 257, 257, 257, + 257, 258, 259, 258, 259, 260, 261, 260, 261, 262, 263, 262, 263, 264, 265, 264, 265, 266, + 267, 266, 267, 268, 269, 268, 269, 270, 271, 270, 271, 220, 217, 220, 217, 220, 217, 220, + 217, 220, 217, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 138, 212, 138, + 212, 277, 278, 277, 278, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 287, 287, 287, 288, 288, 292, 292, 280, 280, 279, 172, 297, 297, 298, 298, 296, 296, + 299, 299, 300, 301, 290, 304, 306, 194, 302, 303, 305, 307, 302, 303, 305, 307, 311, 308, + 309, 310, 311, 308, 309, 310, 312, 312, 313, 313, 313, 314, 314, 314, 315, 315, 316, 316, + 318, 317, 317, 317, 319, 319, 213, 213, 214, 214, 173, 167, 171, 174, 174, 295, 295, 295, + 295, 295, 295, 320, 320, 295, 295, 321, 321, 321, 321, 281, 281, 282, 282, 283, 175, 176, + 322, 322, 325, 325, 323, 323, 326, 324, 284, 327, 327, 285, 177, 177, 177, 328, 329, 330, + 330, 286, 331, 291, 193, 293, 293, 206, 206, 336, 332, 332, 332, 332, 332, 337, 337, 338, + 333, 335, 334, 274, 275, 274, 275, 339, 339, 340, 228, 228, 228, 228, 344, 341, 343, 345, + 192, 294, 294, 208, 208, 342, 272, 273, 272, 273, 272, 273, 289, 207, 350, 207, 350, 347, + 349, 351, 346, 346, 348, 348, 352, 352, 353, 353, 353, 140, 140, 354, 141, 356, 355, 355, + 357, 357, 358, 358, 358, 359, 359, 361, 361, 361, 361, 361, 364, 365, 366, 366, 366, 362, + 368, 368, 369, 369, 363, 367, 370, 360, 360, 360, 360, 360, 360, 360, 360, 371, 371, 371, + 372, 372, 373, 373, 374}; +const short QmlJSGrammar::rhs[] + = {2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 3, 5, 1, 2, 3, 1, 3, 5, 4, 2, 0, 1, 1, 3, 2, + 2, 1, 2, 2, 1, 1, 2, 1, 3, 2, 3, 2, 2, 1, 1, 6, 5, 4, 5, 6, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 1, + 1, 1, 3, 0, 1, 3, 2, 5, 4, 6, 3, 1, 1, 1, 2, 2, 2, 1, 7, 1, 4, 1, 0, 1, 3, 1, 6, 1, 11, 1, 8, + 1, 1, 1, 1, 1, 5, 4, 1, 3, 3, 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, 3, 4, 1, 1, 2, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 3, 5, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 3, 5, 1, 2, 2, 4, 4, 1, 2, 0, 1, 2, 2, 3, 4, 1, 1, 3, 3, 1, 1, 2, 3, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 0, 0, 1, 1, 1, 1, 3, 3, 1, 1, 4, + 4, 5, 3, 3, 3, 3, 1, 5, 1, 1, 2, 2, 2, 4, 5, 4, 4, 5, 4, 5, 3, 3, 0, 1, 2, 1, 2, 3, 4, 1, 1, + 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 3, 1, 3, 1, 1, 1, 1, 3, 3, 1, 3, 3, 3, 1, 1, 3, 3, + 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, 3, 3, + 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, 5, 5, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 3, 0, 0, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 1, 2, 1, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 2, 2, 3, 3, 0, 1, 2, 2, 1, 4, 1, 3, 1, 3, 2, 2, 4, 4, 3, 2, 2, 2, 0, 1, 1, 0, 2, 7, 5, + 7, 7, 5, 9, 9, 9, 1, 1, 7, 7, 3, 3, 2, 2, 2, 3, 2, 3, 3, 5, 5, 3, 5, 1, 2, 0, 1, 4, 3, 3, 1, + 3, 3, 3, 3, 4, 5, 2, 1, 1, 2, 1, 9, 9, 1, 8, 9, 8, 1, 0, 1, 1, 2, 3, 1, 3, 1, 1, 1, 1, 4, 4, + 7, 7, 1, 1, 0, 8, 9, 8, 9, 1, 1, 1, 1, 8, 1, 7, 8, 7, 1, 1, 1, 3, 3, 2, 2, 6, 6, 5, 5, 1, 1, + 1, 1, 0, 2, 0, 1, 1, 2, 1, 2, 1, 0, 1, 1, 1, 1, 0, 1, 1, 2, 2, 2, 1, 3, 2, 1, 1, 1, 3, 3, 1, + 3, 2, 3, 4, 2, 1, 3, 1, 3, 1, 1, 0, 3, 3, 2, 2, 2, 5, 5, 4, 2, 3, 4, 1, 3, 1, 3, 2}; #ifndef QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO -const int QmlJSGrammar::rule_info [] = { - 135, 122, 136, 135, 124, 137, 135, 125, 138, 135, 123, 139, 135, 126, 140, 135, 127, 141, 136, 142, 143, 142, 144, 142, 145, 145, 146, - 145, 147, 145, 145, 146, 145, 145, 147, 148, 149, 150, 64, 150, 63, 146, 116, 148, 150, 151, 152, 147, 153, 150, 154, 50, 15, 50, - 154, 50, 147, 153, 154, 150, 147, 153, 154, 117, 155, 150, 147, 153, 117, 155, 150, 153, 115, 151, 144, 143, 156, 157, 30, 157, 157, 15, 30, 158, 157, 159, - 160, 90, 158, 161, 160, 161, 161, 160, 156, 161, 162, 156, 162, 163, 139, 163, 163, 139, 164, 162, 164, 164, 8, 162, 159, 34, 57, - 159, 34, 163, 57, 162, 165, 159, 139, 161, 166, 139, 166, 166, 162, 166, 165, 7, 167, 35, 164, 58, 166, 165, 7, 167, 165, 159, 166, 165, 131, 165, 159, 168, 34, 167, 169, 57, 150, 168, 34, 167, 169, 8, 57, 150, - 170, 167, 128, 171, 170, 167, 129, 172, 170, 167, 129, 168, 170, 167, 173, 170, 167, 171, 170, 167, 174, 170, 167, 175, 170, 167, 176, 170, 167, 177, 166, 165, 7, 170, - 178, 79, 178, 92, 178, 30, 178, 178, 15, 30, 179, 179, 180, 180, 155, 7, 178, 180, 178, 155, 180, 180, 8, 155, 7, 178, 180, 180, 8, 178, 155, - 166, 71, 30, 37, 179, 62, 150, 166, 71, 30, 150, 181, 70, 30, 38, 178, 25, 155, 150, 166, 181, 166, 72, 181, 182, 70, 178, 155, 150, 166, 182, 166, 10, 182, 166, 108, 181, 166, 10, 108, 181, - 166, 108, 10, 181, 166, 10, 181, 166, 10, 108, 182, 166, 108, 10, 182, 183, 183, 150, 184, 108, 155, 150, 166, 184, 166, 108, 182, 185, 70, 178, 155, 7, 170, 183, - 166, 185, 166, 72, 185, 166, 10, 185, 186, 70, 30, 38, 178, 25, 155, 7, 35, 164, 58, 150, 166, 186, 166, 72, 186, 187, 70, 178, 155, 7, 167, 165, 159, 150, 166, 187, 166, 72, 187, 166, 188, - 166, 189, 166, 190, 165, 152, 166, 99, 30, 34, 191, 57, 166, 109, 30, 7, 162, 191, 30, 191, 30, 17, 48, 191, 191, 8, 30, 191, 191, 8, 30, 17, 48, 155, 30, - 155, 70, 155, 71, 155, 72, 155, 131, 155, 119, 155, 120, 155, 107, 155, 118, 155, 108, 155, 109, - 149, 30, 149, 70, 149, 71, 149, 72, 149, 131, 149, 119, 149, 120, 149, 107, 149, 105, 149, 118, - 149, 117, 149, 108, 149, 109, 192, 149, 193, 192, 194, 195, 194, 194, 8, 195, 195, 165, 38, 194, 25, 195, 92, 195, 165, - 196, 7, 195, 197, 196, 197, 198, 74, 198, 192, 198, 199, 198, 200, 198, 201, 198, 202, 198, 203, - 198, 204, 198, 205, 198, 206, 198, 207, 207, 37, 208, 62, 207, 37, 62, 207, 37, 209, 62, 207, 37, 208, 8, 210, 62, 199, 85, 199, 86, - 199, 87, 199, 48, 199, 93, 199, 69, 205, 12, 205, 13, 200, 35, 211, 58, 200, 35, 212, 58, 200, 35, 212, 8, 211, 58, 212, 213, - 212, 214, 213, 212, 211, 215, 212, 212, 8, 211, 213, 212, 212, 8, 211, 215, 214, 8, 214, 214, 8, 211, 211, 214, 215, 100, 216, 201, 34, 57, - 201, 34, 217, 57, 201, 34, 217, 8, 57, 169, 218, 217, 219, 169, 169, 8, 218, 217, 217, 8, 219, 219, 192, 219, 220, 220, 192, 221, 218, 222, 7, 213, - 219, 223, 7, 213, 219, 224, 223, 225, 223, 226, 225, 227, 222, 69, 225, 69, 222, 48, 225, 48, 227, 192, - 227, 228, 228, 4, 228, 5, 228, 6, 228, 9, 228, 10, 228, 11, 228, 14, 228, 16, 228, 99, - 228, 87, 228, 20, 228, 21, 228, 23, 228, 31, 228, 32, 228, 33, 228, 44, 228, 85, 228, 61, - 228, 73, 228, 74, 228, 75, 228, 86, 228, 77, 228, 78, 228, 79, 228, 80, 228, 81, 228, 88, - 228, 89, 228, 91, 228, 92, 228, 102, 228, 82, 228, 103, 228, 104, 228, 106, 228, 115, 226, 35, 213, 58, - 229, 17, 216, 221, 17, 213, 230, 231, 230, 229, 231, 221, 206, 110, 232, 113, 232, 112, 138, 232, 206, 111, 138, 232, - 152, 198, 233, 102, 152, 233, 35, 208, 58, 152, 152, 35, 208, 58, 152, 152, 98, 35, 208, 58, 234, 44, 15, 30, 152, 233, 15, 227, 152, 152, 15, 227, 152, 152, 98, 227, 152, 235, - 152, 44, 152, 37, 236, 62, 235, 234, 237, 152, 237, 44, 237, 238, 238, 206, 152, 152, 206, 238, 152, 37, 236, 62, 238, 152, 98, 37, 236, 62, 238, 233, 37, 236, 62, 238, 238, 37, 236, 62, - 238, 238, 98, 37, 236, 62, 238, 238, 35, 208, 58, 238, 238, 98, 35, 208, 58, 238, 238, 15, 227, 238, 238, 98, 227, 236, 236, 239, 236, 239, 8, 239, 213, 239, 100, 213, - 239, 239, 8, 213, 239, 239, 8, 100, 213, 240, 237, 240, 238, 241, 240, 241, 240, 55, 241, 240, 43, 241, 55, 242, 241, 43, 242, 242, 241, - 242, 11, 242, 242, 80, 242, 242, 78, 242, 242, 53, 242, 242, 41, 242, 242, 76, 242, 242, 45, 242, 243, 242, 243, 241, 66, 243, 244, 243, - 244, 244, 245, 243, 245, 65, 245, 12, 245, 59, 246, 244, 246, 246, 53, 244, 246, 246, 41, 244, 247, 246, 247, 247, 39, 246, 247, 247, 26, 246, - 247, 247, 28, 246, 248, 247, 249, 247, 248, 248, 250, 247, 249, 249, 250, 247, 250, 38, 250, 25, 250, 36, 250, 24, 250, 33, - 250, 117, 248, 248, 32, 247, 251, 248, 252, 249, 251, 251, 253, 248, 252, 252, 253, 249, 253, 18, 253, 46, 253, 19, 253, 47, - 254, 252, 255, 251, 254, 254, 1, 252, 255, 255, 1, 251, 256, 254, 257, 255, 256, 256, 83, 254, 257, 257, 83, 255, 258, 256, 259, 257, - 258, 258, 49, 256, 259, 259, 49, 257, 260, 258, 261, 259, 260, 260, 2, 258, 261, 261, 2, 259, 262, 260, 263, 261, 262, 262, 52, 260, 263, 263, 52, 261, - 264, 262, 265, 263, 264, 264, 97, 262, 265, 265, 97, 263, 266, 264, 267, 265, 266, 264, 56, 213, 7, 216, 267, 265, 56, 213, 7, 213, 216, 266, 213, 267, - 216, 268, 213, 269, 216, 270, 213, 271, 216, 240, 17, 216, 213, 240, 17, 213, 216, 240, 272, 216, 213, 240, 272, 213, 272, 68, 272, 67, - 272, 13, 272, 60, 272, 54, 272, 42, 272, 40, 272, 27, 272, 29, 272, 3, 272, 84, 272, 51, - 138, 216, 208, 213, 138, 138, 8, 216, 208, 208, 8, 213, 273, 274, 273, 138, 274, 208, 137, 167, 129, 275, 137, 167, 190, - 137, 167, 173, 137, 167, 171, 137, 167, 174, 137, 167, 276, 137, 167, 277, 137, 167, 278, 137, 167, 279, 137, 167, 175, 137, 167, 280, 137, 167, 281, - 137, 167, 177, 137, 167, 282, 283, 284, 283, 285, 283, 286, 284, 287, 284, 188, 288, 289, 288, 290, 276, 291, - 276, 176, 275, 172, 172, 34, 292, 57, 293, 294, 293, 293, 294, 294, 137, 294, 167, 128, 283, 150, 292, 167, 292, 293, 295, 89, - 295, 88, 296, 79, 297, 295, 298, 286, 295, 299, 300, 296, 301, 302, 296, 303, 190, 302, 150, 298, 304, 299, 304, 301, 305, - 303, 306, 298, 298, 8, 307, 299, 299, 8, 304, 301, 301, 8, 305, 303, 303, 8, 306, 307, 193, 197, 230, 304, 193, 197, 231, 305, 193, 197, 230, 306, 193, 197, 231, 307, 308, 229, - 304, 308, 221, 305, 308, 229, 306, 308, 221, 308, 34, 309, 57, 308, 35, 310, 58, 309, 309, 311, 309, 311, 8, 310, 211, 210, 310, 312, - 310, 312, 8, 211, 210, 311, 313, 311, 311, 8, 313, 312, 314, 312, 312, 8, 314, 314, 211, 315, 313, 193, 231, 313, 223, 7, 193, 231, 313, 223, 7, 308, 231, 315, 193, 197, 231, - 315, 308, 231, 209, 100, 193, 209, 100, 308, 210, 210, 209, 173, 63, 167, 171, 208, 150, 174, 31, 37, 208, 62, 137, 16, 137, 174, 31, 37, 208, 62, 137, - 291, 14, 137, 81, 37, 208, 62, 95, 291, 14, 137, 81, 37, 208, 62, 150, 291, 81, 37, 208, 62, 137, 291, 21, 37, 273, 63, 274, 63, 274, 62, 137, 291, 21, 37, 300, 63, 274, 63, 274, 62, 137, 291, 21, 37, 297, 63, 274, 63, 274, 62, 137, 316, 32, 316, 118, 291, 21, 37, 240, 316, 208, 62, 137, 291, 21, 37, 317, 316, 208, 62, 137, - 317, 295, 193, 197, 317, 296, 193, 197, 317, 295, 308, 317, 296, 308, 277, 9, 150, 277, 9, 192, 150, 278, 4, 150, 278, 4, 192, 150, 279, 61, 274, 150, 175, 82, 37, 208, 62, 137, - 176, 73, 37, 208, 62, 318, 318, 34, 319, 57, 318, 34, 319, 320, 319, 57, 321, 322, 321, 321, 322, 319, 319, 321, 322, 5, 208, 7, 292, 320, 10, 7, 292, 280, 192, 7, 323, - 323, 137, 323, 167, 128, 287, 281, 75, 208, 150, 177, 77, 172, 324, 177, 77, 172, 325, 177, 77, 172, 324, 325, 324, 6, 37, 326, 62, 172, 325, 20, 172, 326, 193, 326, 308, - 282, 91, 150, 327, 23, 287, 327, 193, 37, 328, 62, 197, 329, 330, 331, 189, 327, 193, 37, 328, 62, 197, 329, 330, 331, 289, 287, 289, 327, 37, 328, 62, 197, 329, 330, 331, 202, 23, 193, 37, 328, 62, 197, 329, 330, 331, 202, 23, 37, 328, 62, 197, 329, 330, 331, 332, 328, 328, - 328, 209, 328, 333, 328, 333, 8, 328, 333, 8, 209, 333, 315, 333, 333, 8, 315, 334, 315, 329, 34, 331, 57, 330, 292, - 270, 335, 96, 336, 216, 271, 335, 96, 336, 213, 270, 335, 96, 336, 129, 329, 330, 331, 271, 335, 96, 336, 129, 329, 330, 331, 335, 193, 335, 207, 336, 224, 223, 37, 332, 62, 197, 329, 330, 331, 224, 65, 223, 337, 332, 62, 197, 329, 338, 339, 224, 119, 223, 37, 62, 197, 329, 330, 331, - 224, 120, 223, 37, 340, 62, 197, 329, 330, 331, 340, 334, 337, 37, 339, 57, 341, 22, 188, 341, 193, 337, 328, 62, 329, 338, 339, 290, 188, 290, 341, 337, 328, 62, 329, 338, 339, 204, 22, 193, 337, 328, 62, 329, 338, 339, 204, 22, 337, 328, 62, 329, 338, 339, - 338, 330, 268, 101, 269, 101, 268, 101, 65, 216, 269, 101, 65, 213, 268, 101, 216, 269, 101, 213, 285, 103, 193, 342, 343, 344, 345, 203, 103, 193, 342, 343, 344, 345, 346, 103, 342, 343, 344, 345, - 203, 103, 342, 343, 344, 345, 346, 285, 343, 34, 345, 57, 347, 105, 342, 342, 104, 240, 344, 344, 348, 348, 349, - 348, 348, 349, 349, 224, 349, 347, 224, 349, 63, 140, 140, 350, 350, 293, 141, 351, 352, 353, 351, - 351, 352, 353, 354, 353, 353, 354, 354, 355, 150, 354, 356, 150, 354, 294, 355, 115, 357, 358, 355, 115, 359, 357, 360, 357, 361, - 357, 362, 357, 360, 8, 361, 357, 360, 8, 362, 360, 363, 361, 65, 117, 363, 362, 34, 57, 362, 34, 364, 57, 362, 34, 364, 8, 57, 358, 107, 359, 364, 365, - 364, 364, 8, 365, 365, 363, 365, 227, 117, 363, 359, 69, 363, 193, 366, 356, 106, 65, 358, 356, 106, 367, 358, 356, 106, 367, 356, 106, 190, - 356, 106, 283, 356, 106, 10, 366, 128, 288, 356, 106, 10, 366, 128, 346, 356, 106, 10, 366, 213, 367, 34, 57, 367, 34, 368, 57, 367, 34, 368, 8, 57, 368, 369, 368, 368, 8, 369, 369, 227, - 369, 227, 117, 227, 370, 135, 0 -}; +const int QmlJSGrammar::rule_info[] = { + 135, 122, 136, 135, 124, 137, 135, 125, 138, 135, 123, 139, 135, 126, 140, 135, 127, 141, 136, + 142, 143, 142, 144, 142, 145, 145, 146, 145, 147, 145, 145, 146, 145, 145, 147, 148, 149, 150, + 64, 150, 63, 146, 116, 148, 150, 146, 116, 148, 7, 149, 150, 151, 152, 147, 153, 150, 154, + 50, 15, 50, 154, 50, 147, 153, 154, 150, 147, 153, 154, 117, 155, 150, 147, 153, 117, 155, + 150, 153, 115, 151, 144, 143, 156, 157, 30, 157, 157, 15, 30, 158, 157, 159, 160, 90, 158, + 161, 160, 161, 161, 160, 156, 161, 162, 156, 162, 163, 139, 163, 163, 139, 164, 162, 164, 164, + 8, 162, 159, 34, 57, 159, 34, 163, 57, 162, 165, 159, 139, 161, 166, 139, 166, 166, 162, + 166, 165, 7, 167, 35, 164, 58, 166, 165, 7, 167, 165, 159, 166, 165, 131, 165, 159, 168, + 34, 167, 169, 57, 150, 168, 34, 167, 169, 8, 57, 150, 170, 167, 128, 171, 170, 167, 129, + 172, 170, 167, 129, 168, 170, 167, 173, 170, 167, 171, 170, 167, 174, 170, 167, 175, 170, 167, + 176, 170, 167, 177, 166, 165, 7, 170, 178, 79, 178, 92, 178, 30, 178, 178, 15, 30, 179, + 179, 180, 180, 155, 7, 178, 180, 178, 155, 180, 180, 8, 155, 7, 178, 180, 180, 8, 178, + 155, 166, 71, 30, 37, 179, 62, 150, 166, 71, 30, 150, 181, 108, 182, 72, 183, 10, 184, + 181, 184, 184, 183, 184, 184, 182, 184, 184, 70, 185, 184, 30, 38, 178, 25, 155, 150, 166, + 185, 186, 184, 178, 155, 150, 166, 186, 187, 187, 150, 188, 108, 155, 150, 166, 188, 189, 184, + 178, 155, 7, 170, 187, 166, 189, 190, 184, 30, 38, 178, 25, 155, 7, 35, 164, 58, 150, + 166, 190, 191, 184, 178, 155, 7, 167, 165, 159, 150, 166, 191, 166, 192, 166, 193, 166, 194, + 165, 152, 166, 99, 30, 34, 195, 57, 166, 109, 30, 7, 162, 195, 30, 195, 30, 17, 48, + 195, 195, 8, 30, 195, 195, 8, 30, 17, 48, 155, 30, 155, 70, 155, 71, 155, 72, 155, + 131, 155, 119, 155, 120, 155, 107, 155, 118, 155, 108, 155, 109, 149, 30, 149, 70, 149, 71, + 149, 72, 149, 131, 149, 119, 149, 120, 149, 107, 149, 105, 149, 118, 149, 117, 149, 108, 149, + 109, 196, 149, 197, 196, 198, 199, 198, 198, 8, 199, 199, 165, 38, 198, 25, 199, 92, 199, + 165, 200, 7, 199, 201, 200, 201, 202, 74, 202, 196, 202, 203, 202, 204, 202, 205, 202, 206, + 202, 207, 202, 208, 202, 209, 202, 210, 202, 211, 211, 37, 212, 62, 211, 37, 62, 211, 37, + 213, 62, 211, 37, 212, 8, 214, 62, 203, 85, 203, 86, 203, 87, 203, 48, 203, 93, 203, + 69, 209, 12, 209, 13, 204, 35, 215, 58, 204, 35, 216, 58, 204, 35, 216, 8, 215, 58, + 216, 217, 216, 218, 217, 216, 215, 219, 216, 216, 8, 215, 217, 216, 216, 8, 215, 219, 218, + 8, 218, 218, 8, 215, 215, 218, 219, 100, 220, 205, 34, 57, 205, 34, 221, 57, 205, 34, + 221, 8, 57, 169, 222, 221, 223, 169, 169, 8, 222, 221, 221, 8, 223, 223, 196, 223, 224, + 224, 196, 225, 222, 226, 7, 217, 223, 227, 7, 217, 223, 228, 227, 229, 227, 230, 229, 231, + 226, 69, 229, 69, 226, 48, 229, 48, 231, 196, 231, 232, 232, 4, 232, 5, 232, 6, 232, + 9, 232, 10, 232, 11, 232, 14, 232, 16, 232, 99, 232, 87, 232, 20, 232, 21, 232, 23, + 232, 31, 232, 32, 232, 33, 232, 44, 232, 85, 232, 61, 232, 73, 232, 74, 232, 75, 232, + 86, 232, 77, 232, 78, 232, 79, 232, 80, 232, 81, 232, 88, 232, 89, 232, 91, 232, 92, + 232, 102, 232, 82, 232, 103, 232, 104, 232, 106, 232, 115, 230, 35, 217, 58, 233, 17, 220, + 225, 17, 217, 234, 235, 234, 233, 235, 225, 210, 110, 236, 113, 236, 112, 138, 236, 210, 111, + 138, 236, 152, 202, 237, 102, 152, 237, 35, 212, 58, 152, 152, 35, 212, 58, 152, 152, 98, + 35, 212, 58, 238, 44, 15, 30, 152, 237, 15, 231, 152, 152, 15, 231, 152, 152, 98, 231, + 152, 239, 152, 44, 152, 37, 240, 62, 239, 238, 241, 152, 241, 44, 241, 242, 242, 210, 152, + 152, 210, 242, 152, 37, 240, 62, 242, 152, 98, 37, 240, 62, 242, 237, 37, 240, 62, 242, + 242, 37, 240, 62, 242, 242, 98, 37, 240, 62, 242, 242, 35, 212, 58, 242, 242, 98, 35, + 212, 58, 242, 242, 15, 231, 242, 242, 98, 231, 240, 240, 243, 240, 243, 8, 243, 217, 243, + 100, 217, 243, 243, 8, 217, 243, 243, 8, 100, 217, 244, 241, 244, 242, 245, 244, 245, 244, + 55, 245, 244, 43, 245, 55, 246, 245, 43, 246, 246, 245, 246, 11, 246, 246, 80, 246, 246, + 78, 246, 246, 53, 246, 246, 41, 246, 246, 76, 246, 246, 45, 246, 247, 246, 247, 245, 66, + 247, 248, 247, 248, 248, 249, 247, 249, 65, 249, 12, 249, 59, 250, 248, 250, 250, 53, 248, + 250, 250, 41, 248, 251, 250, 251, 251, 39, 250, 251, 251, 26, 250, 251, 251, 28, 250, 252, + 251, 253, 251, 252, 252, 254, 251, 253, 253, 254, 251, 254, 38, 254, 25, 254, 36, 254, 24, + 254, 33, 254, 117, 252, 252, 32, 251, 255, 252, 256, 253, 255, 255, 257, 252, 256, 256, 257, + 253, 257, 18, 257, 46, 257, 19, 257, 47, 258, 256, 259, 255, 258, 258, 1, 256, 259, 259, + 1, 255, 260, 258, 261, 259, 260, 260, 83, 258, 261, 261, 83, 259, 262, 260, 263, 261, 262, + 262, 49, 260, 263, 263, 49, 261, 264, 262, 265, 263, 264, 264, 2, 262, 265, 265, 2, 263, + 266, 264, 267, 265, 266, 266, 52, 264, 267, 267, 52, 265, 268, 266, 269, 267, 268, 268, 97, + 266, 269, 269, 97, 267, 270, 268, 271, 269, 270, 268, 56, 217, 7, 220, 271, 269, 56, 217, + 7, 217, 220, 270, 217, 271, 220, 272, 217, 273, 220, 274, 217, 275, 220, 244, 17, 220, 217, + 244, 17, 217, 220, 244, 276, 220, 217, 244, 276, 217, 276, 68, 276, 67, 276, 13, 276, 60, + 276, 54, 276, 42, 276, 40, 276, 27, 276, 29, 276, 3, 276, 84, 276, 51, 138, 220, 212, + 217, 138, 138, 8, 220, 212, 212, 8, 217, 277, 278, 277, 138, 278, 212, 137, 167, 129, 279, + 137, 167, 194, 137, 167, 173, 137, 167, 171, 137, 167, 174, 137, 167, 280, 137, 167, 281, 137, + 167, 282, 137, 167, 283, 137, 167, 175, 137, 167, 284, 137, 167, 285, 137, 167, 177, 137, 167, + 286, 287, 288, 287, 289, 287, 290, 288, 291, 288, 192, 292, 293, 292, 294, 280, 295, 280, 176, + 279, 172, 172, 34, 296, 57, 297, 298, 297, 297, 298, 298, 137, 298, 167, 128, 287, 150, 296, + 167, 296, 297, 299, 89, 299, 88, 300, 79, 301, 299, 302, 290, 299, 303, 304, 300, 305, 306, + 300, 307, 194, 306, 150, 302, 308, 303, 308, 305, 309, 307, 310, 302, 302, 8, 311, 303, 303, + 8, 308, 305, 305, 8, 309, 307, 307, 8, 310, 311, 197, 201, 234, 308, 197, 201, 235, 309, + 197, 201, 234, 310, 197, 201, 235, 311, 312, 233, 308, 312, 225, 309, 312, 233, 310, 312, 225, + 312, 34, 313, 57, 312, 35, 314, 58, 313, 313, 315, 313, 315, 8, 314, 215, 214, 314, 316, + 314, 316, 8, 215, 214, 315, 317, 315, 315, 8, 317, 316, 318, 316, 316, 8, 318, 318, 215, + 319, 317, 197, 235, 317, 227, 7, 197, 235, 317, 227, 7, 312, 235, 319, 197, 201, 235, 319, + 312, 235, 213, 100, 197, 213, 100, 312, 214, 214, 213, 173, 63, 167, 171, 212, 150, 174, 31, + 37, 212, 62, 137, 16, 137, 174, 31, 37, 212, 62, 137, 295, 14, 137, 81, 37, 212, 62, + 95, 295, 14, 137, 81, 37, 212, 62, 150, 295, 81, 37, 212, 62, 137, 295, 21, 37, 277, + 63, 278, 63, 278, 62, 137, 295, 21, 37, 304, 63, 278, 63, 278, 62, 137, 295, 21, 37, + 301, 63, 278, 63, 278, 62, 137, 320, 32, 320, 118, 295, 21, 37, 244, 320, 212, 62, 137, + 295, 21, 37, 321, 320, 212, 62, 137, 321, 299, 197, 201, 321, 300, 197, 201, 321, 299, 312, + 321, 300, 312, 281, 9, 150, 281, 9, 196, 150, 282, 4, 150, 282, 4, 196, 150, 283, 61, + 278, 150, 175, 82, 37, 212, 62, 137, 176, 73, 37, 212, 62, 322, 322, 34, 323, 57, 322, + 34, 323, 324, 323, 57, 325, 326, 325, 325, 326, 323, 323, 325, 326, 5, 212, 7, 296, 324, + 10, 7, 296, 284, 196, 7, 327, 327, 137, 327, 167, 128, 291, 285, 75, 212, 150, 177, 77, + 172, 328, 177, 77, 172, 329, 177, 77, 172, 328, 329, 328, 6, 37, 330, 62, 172, 329, 20, + 172, 330, 197, 330, 312, 286, 91, 150, 331, 23, 291, 331, 197, 37, 332, 62, 201, 333, 334, + 335, 193, 331, 197, 37, 332, 62, 201, 333, 334, 335, 293, 291, 293, 331, 37, 332, 62, 201, + 333, 334, 335, 206, 23, 197, 37, 332, 62, 201, 333, 334, 335, 206, 23, 37, 332, 62, 201, + 333, 334, 335, 336, 332, 332, 332, 213, 332, 337, 332, 337, 8, 332, 337, 8, 213, 337, 319, + 337, 337, 8, 319, 338, 319, 333, 34, 335, 57, 334, 296, 274, 339, 96, 340, 220, 275, 339, + 96, 340, 217, 274, 339, 96, 340, 129, 333, 334, 335, 275, 339, 96, 340, 129, 333, 334, 335, + 339, 197, 339, 211, 340, 228, 227, 37, 336, 62, 201, 333, 334, 335, 228, 65, 227, 341, 336, + 62, 201, 333, 342, 343, 228, 119, 227, 37, 62, 201, 333, 334, 335, 228, 120, 227, 37, 344, + 62, 201, 333, 334, 335, 344, 338, 341, 37, 343, 57, 345, 22, 192, 345, 197, 341, 332, 62, + 333, 342, 343, 294, 192, 294, 345, 341, 332, 62, 333, 342, 343, 208, 22, 197, 341, 332, 62, + 333, 342, 343, 208, 22, 341, 332, 62, 333, 342, 343, 342, 334, 272, 101, 273, 101, 272, 101, + 65, 220, 273, 101, 65, 217, 272, 101, 220, 273, 101, 217, 289, 103, 197, 346, 347, 348, 349, + 207, 103, 197, 346, 347, 348, 349, 350, 103, 346, 347, 348, 349, 207, 103, 346, 347, 348, 349, + 350, 289, 347, 34, 349, 57, 351, 105, 346, 346, 104, 244, 348, 348, 352, 352, 353, 352, 352, + 353, 353, 228, 353, 351, 228, 353, 63, 140, 140, 354, 354, 297, 141, 355, 356, 357, 355, 355, + 356, 357, 358, 357, 357, 358, 358, 359, 150, 358, 360, 150, 358, 298, 359, 115, 361, 362, 359, + 115, 363, 361, 364, 361, 365, 361, 366, 361, 364, 8, 365, 361, 364, 8, 366, 364, 367, 365, + 65, 117, 367, 366, 34, 57, 366, 34, 368, 57, 366, 34, 368, 8, 57, 362, 107, 363, 368, + 369, 368, 368, 8, 369, 369, 367, 369, 231, 117, 367, 363, 69, 367, 197, 370, 360, 106, 65, + 362, 360, 106, 371, 362, 360, 106, 371, 360, 106, 194, 360, 106, 287, 360, 106, 10, 370, 128, + 292, 360, 106, 10, 370, 128, 350, 360, 106, 10, 370, 217, 371, 34, 57, 371, 34, 372, 57, + 371, 34, 372, 8, 57, 372, 373, 372, 372, 8, 373, 373, 231, 373, 231, 117, 231, 374, 135, + 0}; -const int QmlJSGrammar::rule_index [] = { - 0, 3, 6, 9, 12, 15, 18, 21, 23, 25, - 27, 29, 32, 35, 37, 39, 41, 45, 47, 50, - 54, 56, 60, 66, 71, 74, 75, 77, 79, 83, - 86, 89, 91, 94, 97, 99, 101, 104, 106, 110, - 113, 117, 120, 123, 125, 127, 134, 140, 145, 151, - 158, 162, 166, 170, 173, 176, 179, 182, 185, 188, - 192, 194, 196, 198, 202, 203, 205, 209, 212, 218, - 223, 230, 234, 242, 244, 247, 252, 254, 257, 260, - 264, 268, 271, 275, 279, 280, 282, 286, 288, 291, - 298, 300, 303, 306, 318, 320, 323, 332, 334, 337, - 339, 341, 343, 345, 351, 356, 358, 362, 366, 372, - 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, - 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, - 414, 416, 418, 420, 422, 424, 426, 430, 435, 437, - 439, 442, 444, 445, 447, 449, 451, 453, 455, 457, - 459, 461, 463, 465, 467, 471, 474, 478, 484, 486, - 488, 490, 492, 494, 496, 498, 500, 504, 508, 514, - 516, 519, 522, 527, 532, 534, 537, 538, 540, 543, - 546, 550, 555, 557, 559, 563, 567, 569, 571, 574, - 578, 582, 584, 586, 588, 590, 592, 594, 596, 598, - 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, - 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, - 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, - 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, - 682, 685, 688, 689, 690, 692, 694, 696, 698, 702, - 706, 708, 710, 715, 720, 726, 730, 734, 738, 742, - 744, 750, 752, 754, 757, 760, 763, 768, 774, 779, - 784, 790, 795, 801, 805, 809, 810, 812, 815, 817, - 820, 824, 829, 831, 833, 835, 838, 841, 844, 847, - 849, 852, 855, 858, 861, 864, 867, 870, 872, 876, - 878, 882, 884, 886, 888, 890, 894, 898, 900, 904, - 908, 912, 914, 916, 920, 924, 926, 928, 930, 932, - 934, 936, 940, 942, 944, 948, 952, 954, 956, 958, - 960, 962, 964, 968, 972, 974, 976, 980, 984, 986, - 988, 992, 996, 998, 1000, 1004, 1008, 1010, 1012, 1016, - 1020, 1022, 1024, 1028, 1032, 1034, 1036, 1042, 1048, 1050, - 1052, 1054, 1056, 1058, 1060, 1064, 1068, 1072, 1076, 1078, - 1080, 1082, 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1098, - 1100, 1102, 1104, 1108, 1112, 1113, 1114, 1116, 1118, 1122, - 1125, 1128, 1131, 1134, 1137, 1140, 1143, 1146, 1149, 1152, - 1155, 1158, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175, - 1177, 1179, 1181, 1185, 1187, 1190, 1192, 1197, 1199, 1201, - 1203, 1205, 1207, 1210, 1213, 1216, 1219, 1222, 1224, 1226, - 1228, 1230, 1234, 1238, 1242, 1246, 1250, 1254, 1258, 1262, - 1265, 1268, 1271, 1274, 1278, 1282, 1283, 1285, 1288, 1291, - 1293, 1298, 1300, 1304, 1306, 1310, 1313, 1316, 1321, 1326, - 1330, 1333, 1336, 1339, 1340, 1342, 1344, 1345, 1348, 1356, - 1362, 1370, 1378, 1384, 1394, 1404, 1414, 1416, 1418, 1426, - 1434, 1438, 1442, 1445, 1448, 1451, 1455, 1458, 1462, 1466, - 1472, 1478, 1482, 1488, 1490, 1493, 1494, 1496, 1501, 1505, - 1509, 1511, 1515, 1519, 1523, 1527, 1532, 1538, 1541, 1543, - 1545, 1548, 1550, 1560, 1570, 1572, 1581, 1591, 1600, 1602, - 1603, 1605, 1607, 1610, 1614, 1616, 1620, 1622, 1624, 1626, - 1628, 1633, 1638, 1646, 1654, 1656, 1658, 1659, 1668, 1678, - 1687, 1697, 1699, 1701, 1703, 1705, 1714, 1716, 1724, 1733, - 1741, 1743, 1745, 1747, 1751, 1755, 1758, 1761, 1768, 1775, - 1781, 1787, 1789, 1791, 1793, 1795, 1796, 1799, 1800, 1802, - 1804, 1807, 1809, 1812, 1814, 1815, 1817, 1819, 1821, 1823, - 1824, 1826, 1828, 1831, 1834, 1837, 1839, 1843, 1846, 1848, - 1850, 1852, 1856, 1860, 1862, 1866, 1869, 1873, 1878, 1881, - 1883, 1887, 1889, 1893, 1895, 1897, 1898, 1902, 1906, 1909, - 1912, 1915, 1921, 1927, 1932, 1935, 1939, 1944, 1946, 1950, - 1952, 1956 -}; +const int QmlJSGrammar::rule_index[] + = {0, 3, 6, 9, 12, 15, 18, 21, 23, 25, 27, 29, 32, 35, 37, + 39, 41, 45, 51, 53, 56, 60, 62, 66, 72, 77, 80, 81, 83, 85, + 89, 92, 95, 97, 100, 103, 105, 107, 110, 112, 116, 119, 123, 126, 129, + 131, 133, 140, 146, 151, 157, 164, 168, 172, 176, 179, 182, 185, 188, 191, + 194, 198, 200, 202, 204, 208, 209, 211, 215, 218, 224, 229, 236, 240, 242, + 244, 246, 249, 252, 255, 257, 265, 267, 272, 274, 275, 277, 281, 283, 290, + 292, 304, 306, 315, 317, 319, 321, 323, 325, 331, 336, 338, 342, 346, 352, + 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, + 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 410, 415, 417, + 419, 422, 424, 425, 427, 429, 431, 433, 435, 437, 439, 441, 443, 445, 447, + 451, 454, 458, 464, 466, 468, 470, 472, 474, 476, 478, 480, 484, 488, 494, + 496, 499, 502, 507, 512, 514, 517, 518, 520, 523, 526, 530, 535, 537, 539, + 543, 547, 549, 551, 554, 558, 562, 564, 566, 568, 570, 572, 574, 576, 578, + 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, + 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, + 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 662, 665, 668, 669, 670, + 672, 674, 676, 678, 682, 686, 688, 690, 695, 700, 706, 710, 714, 718, 722, + 724, 730, 732, 734, 737, 740, 743, 748, 754, 759, 764, 770, 775, 781, 785, + 789, 790, 792, 795, 797, 800, 804, 809, 811, 813, 815, 818, 821, 824, 827, + 829, 832, 835, 838, 841, 844, 847, 850, 852, 856, 858, 862, 864, 866, 868, + 870, 874, 878, 880, 884, 888, 892, 894, 896, 900, 904, 906, 908, 910, 912, + 914, 916, 920, 922, 924, 928, 932, 934, 936, 938, 940, 942, 944, 948, 952, + 954, 956, 960, 964, 966, 968, 972, 976, 978, 980, 984, 988, 990, 992, 996, + 1000, 1002, 1004, 1008, 1012, 1014, 1016, 1022, 1028, 1030, 1032, 1034, 1036, 1038, 1040, + 1044, 1048, 1052, 1056, 1058, 1060, 1062, 1064, 1066, 1068, 1070, 1072, 1074, 1076, 1078, + 1080, 1082, 1084, 1088, 1092, 1093, 1094, 1096, 1098, 1102, 1105, 1108, 1111, 1114, 1117, + 1120, 1123, 1126, 1129, 1132, 1135, 1138, 1141, 1143, 1145, 1147, 1149, 1151, 1153, 1155, + 1157, 1159, 1161, 1165, 1167, 1170, 1172, 1177, 1179, 1181, 1183, 1185, 1187, 1190, 1193, + 1196, 1199, 1202, 1204, 1206, 1208, 1210, 1214, 1218, 1222, 1226, 1230, 1234, 1238, 1242, + 1245, 1248, 1251, 1254, 1258, 1262, 1263, 1265, 1268, 1271, 1273, 1278, 1280, 1284, 1286, + 1290, 1293, 1296, 1301, 1306, 1310, 1313, 1316, 1319, 1320, 1322, 1324, 1325, 1328, 1336, + 1342, 1350, 1358, 1364, 1374, 1384, 1394, 1396, 1398, 1406, 1414, 1418, 1422, 1425, 1428, + 1431, 1435, 1438, 1442, 1446, 1452, 1458, 1462, 1468, 1470, 1473, 1474, 1476, 1481, 1485, + 1489, 1491, 1495, 1499, 1503, 1507, 1512, 1518, 1521, 1523, 1525, 1528, 1530, 1540, 1550, + 1552, 1561, 1571, 1580, 1582, 1583, 1585, 1587, 1590, 1594, 1596, 1600, 1602, 1604, 1606, + 1608, 1613, 1618, 1626, 1634, 1636, 1638, 1639, 1648, 1658, 1667, 1677, 1679, 1681, 1683, + 1685, 1694, 1696, 1704, 1713, 1721, 1723, 1725, 1727, 1731, 1735, 1738, 1741, 1748, 1755, + 1761, 1767, 1769, 1771, 1773, 1775, 1776, 1779, 1780, 1782, 1784, 1787, 1789, 1792, 1794, + 1795, 1797, 1799, 1801, 1803, 1804, 1806, 1808, 1811, 1814, 1817, 1819, 1823, 1826, 1828, + 1830, 1832, 1836, 1840, 1842, 1846, 1849, 1853, 1858, 1861, 1863, 1867, 1869, 1873, 1875, + 1877, 1878, 1882, 1886, 1889, 1892, 1895, 1901, 1907, 1912, 1915, 1919, 1924, 1926, 1930, + 1932, 1936}; #endif // QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO -const short QmlJSGrammar::action_default [] = { - 0, 0, 467, 467, 467, 0, 26, 0, 308, 147, - 363, 0, 381, 535, 335, 343, 339, 284, 150, 355, - 359, 154, 331, 300, 3, 149, 151, 145, 134, 285, - 146, 347, 351, 263, 260, 305, 283, 262, 148, 251, - 152, 324, 313, 0, 131, 566, 133, 0, 165, 166, - 161, 128, 0, 0, 126, 121, 0, 177, 0, 0, - 0, 163, 0, 0, 247, 159, 162, 130, 125, 0, - 0, 122, 124, 132, 127, 123, 129, 164, 252, 0, - 144, 0, 160, 0, 0, 552, 153, 298, 290, 361, - 0, 0, 154, 145, 285, 307, 287, 286, 0, 303, - 304, 302, 301, 306, 537, 0, 531, 0, 467, 528, - 418, 0, 416, 467, 414, 530, 364, 0, 382, 336, - 344, 340, 396, 394, 356, 360, 395, 402, 391, 332, - 392, 0, 145, 393, 410, 399, 285, 348, 352, 323, - 397, 312, 411, 0, 0, 0, 467, 0, 0, 0, - 0, 386, 466, 0, 0, 0, 422, 0, 0, 553, - 400, 401, 0, 0, 390, 398, 362, 537, 0, 532, - 0, 467, 0, 534, 529, 0, 334, 0, 327, 329, - 328, 330, 325, 0, 321, 319, 317, 0, 320, 318, - 316, 314, 0, 0, 0, 310, 311, 309, 322, 0, - 342, 0, 338, 0, 0, 0, 0, 358, 354, 0, - 350, 0, 346, 468, 15, 0, 16, 384, 467, 0, - 500, 501, 0, 0, 502, 512, 0, 135, 520, 525, - 143, 244, 521, 522, 0, 0, 446, 177, 0, 142, - 244, 103, 0, 0, 139, 141, 140, 0, 0, 0, - 266, 258, 200, 201, 202, 203, 204, 236, 230, 205, - 232, 206, 207, 208, 209, 210, 238, 237, 211, 212, - 213, 214, 215, 239, 216, 217, 231, 218, 219, 233, - 220, 234, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 235, 0, 254, 259, 0, 0, 255, 0, 0, - 257, 0, 253, 0, 0, 276, 277, 0, 279, 0, - 278, 281, 0, 282, 261, 280, 256, 0, 136, 0, - 0, 138, 137, 460, 246, 0, 242, 461, 523, 526, - 524, 143, 0, 467, 0, 513, 462, 463, 244, 452, - 447, 194, 195, 135, 193, 0, 0, 0, 199, 197, - 457, 448, 453, 444, 0, 244, 244, 458, 459, 0, - 240, 0, 450, 454, 178, 464, 175, 445, 177, 455, - 464, 456, 465, 451, 176, 449, 0, 378, 371, 0, - 376, 377, 375, 374, 380, 373, 372, 369, 370, 379, - 368, 366, 0, 487, 488, 0, 485, 486, 511, 0, - 0, 0, 0, 0, 0, 472, 471, 385, 387, 0, - 0, 285, 0, 0, 421, 420, 0, 0, 0, 383, - 386, 0, 388, 386, 0, 467, 474, 0, 477, 478, - 0, 467, 480, 0, 0, 0, 367, 0, 467, 479, - 365, 143, 423, 483, 428, 481, 437, 0, 143, 0, - 432, 243, 245, 436, 0, 241, 440, 441, 386, 0, - 386, 0, 467, 476, 143, 484, 430, 425, 482, 438, - 442, 0, 143, 0, 434, 243, 386, 0, 386, 0, - 467, 475, 412, 389, 467, 0, 413, 404, 0, 406, - 0, 407, 403, 0, 405, 0, 545, 417, 0, 520, - 543, 0, 0, 467, 551, 0, 546, 544, 143, 424, - 0, 429, 244, 0, 433, 566, 0, 0, 568, 563, - 0, 570, 569, 0, 572, 0, 126, 574, 127, 0, - 565, 558, 564, 571, 573, 520, 519, 0, 143, 0, - 467, 0, 538, 0, 0, 143, 0, 467, 0, 540, - 0, 0, 527, 542, 0, 143, 0, 467, 0, 541, - 0, 520, 0, 143, 0, 467, 0, 539, 567, 0, - 0, 467, 470, 467, 469, 0, 489, 0, 0, 0, - 491, 496, 494, 497, 0, 0, 495, 496, 0, 492, - 0, 493, 467, 499, 0, 467, 498, 0, 503, 0, - 504, 505, 0, 0, 506, 0, 509, 510, 0, 0, - 507, 508, 0, 0, 467, 473, 0, 0, 467, 490, - 557, 0, 555, 143, 0, 426, 431, 244, 439, 443, - 0, 435, 427, 533, 0, 415, 0, 333, 0, 326, - 0, 315, 0, 341, 0, 337, 0, 0, 276, 0, - 265, 274, 0, 272, 0, 270, 275, 0, 276, 0, - 273, 0, 271, 0, 0, 0, 0, 357, 353, 0, - 349, 0, 345, 276, 0, 0, 267, 276, 0, 268, - 276, 0, 269, 566, 0, 0, 568, 0, 559, 568, - 0, 561, 291, 290, 0, 520, 520, 0, 143, 0, - 467, 0, 517, 0, 143, 0, 467, 0, 518, 0, - 520, 520, 0, 0, 467, 0, 549, 0, 0, 467, - 0, 550, 188, 187, 192, 184, 0, 0, 180, 189, - 0, 181, 186, 182, 0, 191, 170, 0, 178, 0, - 177, 168, 0, 173, 174, 0, 169, 179, 171, 172, - 167, 0, 0, 156, 157, 464, 155, 0, 158, 295, - 289, 263, 264, 297, 294, 288, 0, 0, 248, 250, - 0, 249, 296, 293, 292, 556, 0, 554, 0, 299, - 0, 0, 6, 581, 578, 582, 467, 586, 0, 0, - 585, 584, 583, 611, 609, 606, 0, 0, 610, 608, - 0, 599, 604, 0, 614, 0, 562, 613, 0, 515, - 408, 0, 547, 409, 612, 566, 520, 0, 143, 0, - 467, 0, 516, 520, 0, 0, 467, 0, 548, 0, - 568, 0, 560, 618, 0, 620, 615, 0, 616, 619, - 617, 0, 621, 607, 605, 0, 594, 589, 588, 590, - 591, 0, 0, 587, 0, 592, 593, 0, 600, 602, - 0, 596, 0, 603, 0, 597, 601, 598, 0, 595, - 5, 576, 467, 2, 0, 101, 100, 0, 133, 0, - 0, 512, 545, 122, 124, 132, 123, 4, 32, 0, - 45, 44, 98, 74, 77, 95, 91, 0, 88, 102, - 0, 520, 0, 143, 0, 467, 0, 514, 28, 31, - 0, 0, 0, 30, 29, 40, 36, 0, 41, 37, - 0, 0, 105, 0, 42, 0, 0, 82, 78, 93, - 63, 62, 61, 0, 0, 63, 0, 0, 0, 64, - 0, 120, 117, 115, 110, 118, 114, 111, 113, 119, - 116, 112, 73, 0, 76, 467, 0, 85, 54, 55, - 56, 58, 0, 0, 59, 57, 52, 467, 53, 418, - 162, 164, 183, 0, 0, 0, 0, 198, 0, 196, - 185, 50, 49, 0, 190, 51, 90, 86, 0, 80, - 83, 0, 0, 0, 0, 0, 106, 0, 104, 108, - 0, 109, 0, 107, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 38, 0, 0, 39, 94, 0, 467, - 0, 263, 0, 0, 97, 0, 99, 75, 96, 92, - 63, 0, 0, 0, 0, 0, 0, 467, 0, 263, - 0, 0, 111, 79, 89, 87, 81, 84, 63, 0, - 72, 65, 0, 63, 66, 0, 0, 0, 67, 0, - 0, 0, 0, 69, 70, 0, 71, 68, 33, 43, - 467, 0, 0, 60, 177, 0, 0, 46, 47, 0, - 48, 8, 0, 0, 9, 0, 11, 0, 10, 1, - 25, 18, 14, 0, 17, 13, 12, 27, 0, 35, - 7, 34, 19, 0, 21, 0, 0, 24, 0, 20, - 22, 0, 0, 23, 622 -}; +const short QmlJSGrammar::action_default[] + = {0, 0, 462, 462, 462, 0, 27, 0, 303, 142, 358, 0, 376, 530, 330, 338, 334, 279, + 145, 350, 354, 149, 326, 295, 3, 144, 146, 140, 129, 280, 141, 342, 346, 258, 255, 300, + 278, 257, 143, 246, 147, 319, 308, 0, 126, 561, 128, 0, 160, 161, 156, 123, 0, 0, + 121, 116, 0, 172, 0, 0, 0, 158, 0, 0, 242, 154, 157, 125, 120, 0, 0, 117, + 119, 127, 122, 118, 124, 159, 247, 0, 139, 0, 155, 0, 0, 547, 148, 293, 285, 356, + 0, 0, 149, 140, 280, 302, 282, 281, 0, 298, 299, 297, 296, 301, 532, 0, 526, 0, + 462, 523, 413, 0, 411, 462, 409, 525, 359, 0, 377, 331, 339, 335, 391, 389, 351, 355, + 390, 397, 386, 327, 387, 0, 140, 388, 405, 394, 280, 343, 347, 318, 392, 307, 406, 0, + 0, 0, 462, 0, 0, 0, 0, 381, 461, 0, 0, 0, 417, 0, 0, 548, 395, 396, + 0, 0, 385, 393, 357, 532, 0, 527, 0, 462, 0, 529, 524, 0, 329, 0, 322, 324, + 323, 325, 320, 0, 316, 314, 312, 0, 315, 313, 311, 309, 0, 0, 0, 305, 306, 304, + 317, 0, 337, 0, 333, 0, 0, 0, 0, 353, 349, 0, 345, 0, 341, 463, 15, 0, + 16, 379, 462, 0, 495, 496, 0, 0, 497, 507, 0, 130, 515, 520, 138, 239, 516, 517, + 0, 0, 441, 172, 0, 137, 239, 98, 0, 0, 134, 136, 135, 0, 0, 0, 261, 253, + 195, 196, 197, 198, 199, 231, 225, 200, 227, 201, 202, 203, 204, 205, 233, 232, 206, 207, + 208, 209, 210, 234, 211, 212, 226, 213, 214, 228, 215, 229, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 230, 0, 249, 254, 0, 0, 250, 0, 0, 252, 0, 248, 0, 0, 271, + 272, 0, 274, 0, 273, 276, 0, 277, 256, 275, 251, 0, 131, 0, 0, 133, 132, 455, + 241, 0, 237, 456, 518, 521, 519, 138, 0, 462, 0, 508, 457, 458, 239, 447, 442, 189, + 190, 130, 188, 0, 0, 0, 194, 192, 452, 443, 448, 439, 0, 239, 239, 453, 454, 0, + 235, 0, 445, 449, 173, 459, 170, 440, 172, 450, 459, 451, 460, 446, 171, 444, 0, 373, + 366, 0, 371, 372, 370, 369, 375, 368, 367, 364, 365, 374, 363, 361, 0, 482, 483, 0, + 480, 481, 506, 0, 0, 0, 0, 0, 0, 467, 466, 380, 382, 0, 0, 280, 0, 0, + 416, 415, 0, 0, 0, 378, 381, 0, 383, 381, 0, 462, 469, 0, 472, 473, 0, 462, + 475, 0, 0, 0, 362, 0, 462, 474, 360, 138, 418, 478, 423, 476, 432, 0, 138, 0, + 427, 238, 240, 431, 0, 236, 435, 436, 381, 0, 381, 0, 462, 471, 138, 479, 425, 420, + 477, 433, 437, 0, 138, 0, 429, 238, 381, 0, 381, 0, 462, 470, 407, 384, 462, 0, + 408, 399, 0, 401, 0, 402, 398, 0, 400, 0, 540, 412, 0, 515, 538, 0, 0, 462, + 546, 0, 541, 539, 138, 419, 0, 424, 239, 0, 428, 561, 0, 0, 563, 558, 0, 565, + 564, 0, 567, 0, 121, 569, 122, 0, 560, 553, 559, 566, 568, 515, 514, 0, 138, 0, + 462, 0, 533, 0, 0, 138, 0, 462, 0, 535, 0, 0, 522, 537, 0, 138, 0, 462, + 0, 536, 0, 515, 0, 138, 0, 462, 0, 534, 562, 0, 0, 462, 465, 462, 464, 0, + 484, 0, 0, 0, 486, 491, 489, 492, 0, 0, 490, 491, 0, 487, 0, 488, 462, 494, + 0, 462, 493, 0, 498, 0, 499, 500, 0, 0, 501, 0, 504, 505, 0, 0, 502, 503, + 0, 0, 462, 468, 0, 0, 462, 485, 552, 0, 550, 138, 0, 421, 426, 239, 434, 438, + 0, 430, 422, 528, 0, 410, 0, 328, 0, 321, 0, 310, 0, 336, 0, 332, 0, 0, + 271, 0, 260, 269, 0, 267, 0, 265, 270, 0, 271, 0, 268, 0, 266, 0, 0, 0, + 0, 352, 348, 0, 344, 0, 340, 271, 0, 0, 262, 271, 0, 263, 271, 0, 264, 561, + 0, 0, 563, 0, 554, 563, 0, 556, 286, 285, 0, 515, 515, 0, 138, 0, 462, 0, + 512, 0, 138, 0, 462, 0, 513, 0, 515, 515, 0, 0, 462, 0, 544, 0, 0, 462, + 0, 545, 183, 182, 187, 179, 0, 0, 175, 184, 0, 176, 181, 177, 0, 186, 165, 0, + 173, 0, 172, 163, 0, 168, 169, 0, 164, 174, 166, 167, 162, 0, 0, 151, 152, 459, + 150, 0, 153, 290, 284, 258, 259, 292, 289, 283, 0, 0, 243, 245, 0, 244, 291, 288, + 287, 551, 0, 549, 0, 294, 0, 0, 6, 576, 573, 577, 462, 581, 0, 0, 580, 579, + 578, 606, 604, 601, 0, 0, 605, 603, 0, 594, 599, 0, 609, 0, 557, 608, 0, 510, + 403, 0, 542, 404, 607, 561, 515, 0, 138, 0, 462, 0, 511, 515, 0, 0, 462, 0, + 543, 0, 563, 0, 555, 613, 0, 615, 610, 0, 611, 614, 612, 0, 616, 602, 600, 0, + 589, 584, 583, 585, 586, 0, 0, 582, 0, 587, 588, 0, 595, 597, 0, 591, 0, 598, + 0, 592, 596, 593, 0, 590, 5, 571, 462, 2, 0, 0, 0, 0, 96, 95, 0, 128, + 76, 0, 507, 540, 117, 119, 127, 118, 4, 33, 0, 46, 45, 94, 82, 84, 92, 90, + 0, 0, 88, 97, 80, 75, 74, 78, 79, 77, 0, 515, 0, 138, 0, 462, 0, 509, + 29, 32, 0, 0, 0, 31, 30, 41, 37, 0, 42, 38, 0, 0, 100, 0, 43, 0, + 0, 0, 101, 0, 99, 103, 0, 104, 0, 102, 0, 115, 112, 110, 105, 113, 109, 106, + 108, 114, 111, 107, 87, 0, 73, 66, 0, 64, 63, 62, 67, 0, 0, 0, 64, 68, + 0, 65, 0, 0, 0, 0, 70, 71, 0, 72, 69, 34, 44, 64, 0, 0, 0, 0, + 0, 81, 0, 0, 0, 39, 0, 0, 40, 91, 0, 83, 462, 0, 85, 55, 56, 57, + 258, 59, 0, 0, 60, 0, 58, 53, 462, 54, 413, 157, 159, 178, 0, 0, 0, 0, + 193, 0, 191, 180, 51, 50, 0, 185, 52, 0, 93, 89, 86, 462, 0, 0, 61, 258, + 172, 0, 0, 47, 48, 0, 49, 8, 0, 0, 9, 0, 11, 0, 10, 1, 26, 19, + 14, 0, 17, 0, 0, 18, 13, 12, 28, 0, 36, 7, 35, 20, 0, 22, 0, 0, + 25, 0, 21, 23, 0, 0, 24, 617}; -const short QmlJSGrammar::goto_default [] = { - 7, 1089, 112, 24, 887, 870, 782, 1085, 1100, 1081, - 1084, 1088, 1086, 1093, 28, 954, 1090, 33, 1087, 1105, - 1040, 1097, 910, 909, 924, 888, 889, 890, 917, 1012, - 923, 891, 110, 968, 973, 957, 130, 482, 128, 133, - 165, 142, 161, 991, 1055, 1054, 893, 894, 986, 898, - 896, 895, 892, 876, 875, 164, 995, 27, 13, 319, - 245, 239, 240, 39, 30, 9, 38, 25, 18, 26, - 40, 86, 21, 131, 232, 375, 739, 737, 118, 364, - 749, 12, 726, 972, 725, 722, 324, 974, 525, 524, - 344, 341, 342, 253, 452, 469, 446, 769, 43, 37, - 34, 307, 36, 17, 306, 136, 88, 87, 23, 35, - 98, 8, 141, 139, 41, 183, 129, 22, 177, 14, - 119, 16, 121, 15, 120, 31, 137, 32, 138, 19, - 124, 20, 125, 89, 166, 10, 116, 433, 409, 575, - 483, 123, 126, 122, 140, 135, 160, 127, 488, 492, - 487, 494, 489, 814, 810, 813, 134, 115, 113, 114, - 493, 162, 413, 442, 509, 417, 467, 163, 625, 444, - 466, 626, 450, 231, 345, 361, 340, 362, 339, 363, - 229, 427, 410, 580, 584, 587, 583, 582, 220, 600, - 601, 608, 874, 536, 108, 504, 633, 537, 233, 553, - 117, 105, 710, 505, 506, 554, 490, 684, 518, 520, - 531, 807, 523, 522, 521, 871, 784, 783, 786, 785, - 781, 780, 845, 799, 848, 847, 849, 850, 859, 860, - 858, 803, 794, 834, 833, 0 -}; +const short QmlJSGrammar::goto_default[] + = {7, 1059, 112, 24, 890, 870, 782, 1055, 1073, 1051, 1054, 1058, 1056, 1063, 28, 213, + 1060, 33, 1057, 1078, 946, 1070, 920, 919, 934, 891, 892, 893, 927, 994, 933, 894, + 110, 1017, 1022, 1004, 130, 482, 128, 133, 165, 142, 161, 986, 967, 966, 876, 875, + 874, 900, 896, 897, 1037, 902, 899, 898, 895, 879, 878, 164, 937, 27, 13, 319, + 245, 239, 240, 39, 30, 9, 38, 25, 18, 26, 40, 86, 21, 131, 232, 375, + 739, 737, 118, 364, 749, 12, 726, 1021, 725, 722, 324, 1023, 525, 524, 344, 341, + 342, 253, 452, 469, 446, 769, 43, 37, 34, 307, 36, 17, 306, 136, 88, 87, + 23, 35, 98, 8, 141, 139, 41, 183, 129, 22, 177, 14, 119, 16, 121, 15, + 120, 31, 137, 32, 138, 19, 124, 20, 125, 89, 166, 10, 116, 433, 409, 575, + 483, 123, 126, 122, 140, 135, 160, 127, 488, 492, 487, 494, 489, 814, 810, 813, + 134, 115, 113, 114, 493, 162, 413, 442, 509, 417, 467, 163, 625, 444, 466, 626, + 450, 231, 345, 361, 340, 362, 339, 363, 229, 427, 410, 580, 584, 587, 583, 582, + 220, 600, 601, 608, 877, 536, 108, 504, 633, 537, 233, 553, 117, 105, 710, 505, + 506, 554, 490, 684, 518, 520, 531, 807, 523, 522, 521, 871, 784, 783, 786, 785, + 781, 780, 845, 799, 848, 847, 849, 850, 859, 860, 858, 803, 794, 834, 833, 0}; -const short QmlJSGrammar::action_index [] = { - 416, 2893, 346, 19, -135, 2271, 250, 35, 291, -135, - -135, -54, -135, -135, 40, -3, -34, 510, -135, 260, - -135, -31, 477, -135, 58, -135, -135, -21, -135, 1303, - -135, 75, 39, 539, -135, 443, -135, -135, -135, -135, - -135, 631, 461, 438, -135, 863, -135, 2645, -135, -135, - -135, -135, 1037, 986, -135, -135, 6331, 3643, 4387, 2645, - 2645, -135, 2023, 2645, -135, -135, -135, -135, -135, 2645, - 2645, -135, -135, -135, -135, -135, -135, -135, -135, 2893, - -135, 2645, -135, 2645, 2645, 3268, -135, -135, 119, -135, - 2645, 2645, -135, -135, 200, 391, -135, -135, 2645, -135, - -135, -135, -135, 369, -135, 3516, -135, 176, -135, -135, - 6724, 174, -135, 390, -135, -135, -135, 175, -135, 201, - 179, 180, -135, -135, 208, -135, -135, -135, -135, 485, - -135, 359, 233, -135, -135, -135, 1059, 162, 127, 577, - -135, 351, -135, 1095, 1146, 231, -135, 108, 104, 497, - 61, 2769, -135, 42, 2769, 29, -135, 20, 16, 4139, - -135, -135, 1171, 278, -135, -135, -135, -135, 3891, -135, - -1, -135, -23, -135, -135, 2645, 487, 2645, -135, -135, - -135, -135, 592, 2645, -135, -135, -135, 2645, -135, -135, - -135, 365, 2645, 2645, 2645, 227, 240, 244, 418, 2645, - -56, 2645, 8, 2769, 2645, 55, 2769, -135, 22, 2645, - 84, 2645, 97, -135, -135, 2769, -135, -135, -135, 6855, - -135, -135, 142, 961, -135, -135, 169, -135, 1408, -135, - 185, 186, -135, 209, 136, 1164, 5938, 141, 1777, -135, - -16, 483, 338, 2146, -135, -135, -10, 4890, 2769, 5152, - -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, - -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, - -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, - -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, - -135, -135, 325, -135, -135, 2769, 318, -135, 4890, 2769, - -135, 296, -135, 521, 65, 3144, 139, 118, -135, 2769, - 3767, -135, 2769, -135, -135, -135, -135, 1777, -135, 236, - 1777, -135, -135, -135, -135, 2769, -135, -135, 1408, -135, - -135, 163, 154, -135, 151, -135, -135, -135, 167, -135, - 166, -135, -135, 217, -135, 170, 197, 2769, -135, -135, - -135, 5938, -135, -135, 1171, 204, 202, -135, -135, 181, - -135, 177, 207, -135, 205, 1277, -135, -135, 199, -135, - 1408, -135, -135, -135, -135, -135, 2769, -135, -135, 2769, - -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, - -135, -135, 196, -135, -135, 206, -135, -135, -135, 6593, - 173, 172, 2769, 214, 347, -135, -135, 4511, 165, 157, - 193, 1404, 1171, 153, -135, -135, 1171, 148, 2893, -135, - 2769, 138, 158, 2769, 137, -135, -135, 2769, -135, -135, - 234, -135, -135, 2893, 2769, 2893, -135, 257, -135, -135, - -135, 147, 144, 131, -135, 388, -135, 1171, 133, 113, - -135, 111, -135, -135, 2893, -135, -135, -135, 2769, 74, - 2769, 69, -135, -135, 107, 87, -135, 95, 423, -135, - -135, 1171, 89, 82, -135, 80, 2769, 37, 2769, 21, - -135, -135, -135, -135, -135, 25, -135, -135, 251, -135, - 961, -135, -135, 1171, -135, 756, -135, -135, 36, 1408, - -135, 7, 30, -135, -135, 3, -135, -135, 52, 168, - 38, -135, 33, 1171, -135, -59, 13, 1654, 6200, -135, - -13, -135, 6200, 6069, -135, 0, 5938, -135, 5938, 5938, - -14, -135, -135, -135, -135, 1408, -135, -40, 11, -17, - -135, -42, -135, -27, -55, -4, -32, -135, -57, -135, - 41, 1171, -135, -135, -58, -2, -28, -135, -49, -135, - -26, 1408, -50, 6, -20, -135, -41, -135, -135, 2769, - 335, -135, 5, -135, -135, 288, -135, 2769, 330, -5, - -135, 26, -135, 27, 317, 2769, -135, 31, 32, -135, - -19, -135, -135, -135, 314, -135, -135, 520, -135, 319, - 28, -135, 17, 18, -135, 1171, -135, -135, -6, 24, - -135, -135, 2769, 299, -135, -135, 2769, 298, -135, -135, - -135, 2769, -135, 60, 53, 64, -135, 59, -135, -135, - 1171, -135, -135, -135, 6724, -135, 2645, 464, 2645, 631, - 2645, 441, 2645, 44, 2645, 88, 4890, 2769, 3144, 5807, - -135, -135, 282, -135, 46, -135, -135, 2769, 3144, 270, - -135, 62, -135, 2769, 2645, 105, 2893, -135, 66, 2645, - 114, 2645, 68, 3144, 5676, 67, -135, 3144, 70, -135, - 3144, 73, -135, 51, 91, 92, 6200, 96, -135, 6200, - 99, -135, -135, -135, 106, 1408, 1408, 100, 132, 116, - -135, 101, -135, 109, 134, 117, -135, 120, -135, 122, - 1408, 1408, 121, 123, -135, 124, -135, 125, 126, -135, - 129, -135, -135, 361, -135, -135, 230, 229, -135, -135, - 6462, -135, -135, -135, 2769, -135, -135, 224, 3020, 191, - 160, -135, 4263, -135, -135, 2893, -135, -135, -135, -135, - -135, 164, 221, -135, -135, 4015, -135, 171, -135, -135, - -135, 536, -135, -135, -135, -135, 380, 2893, -135, -135, - 378, -135, -135, -135, -135, -135, 2893, -135, 2645, -135, - 184, 182, -135, -135, -135, -135, 370, -135, 617, 1295, - -135, -135, -135, -135, 149, -135, 5283, 149, -135, -135, - 145, -135, -135, 3392, -135, 340, -135, -135, 881, -135, - -135, 932, -135, -135, -135, 1066, 1408, 72, 112, 81, - -135, 48, -135, 1408, 45, 50, -135, 23, -135, 34, - 6200, 4, -135, -135, 312, -74, -135, 5021, -135, -135, - -135, 4890, -135, -135, -135, -83, -135, 12, -135, -135, - -135, 5545, -11, -135, 243, -135, -135, 76, -135, -135, - 215, -135, 761, -135, 5414, -135, -135, -135, 961, -135, - -135, -135, 161, -135, 961, -135, -135, 93, 90, 216, - 71, 247, 255, 415, 43, 660, 57, -135, -135, 2271, - -135, -135, -135, -135, -135, -135, -135, 348, -135, -135, - 14, 1408, 9, 78, 56, -135, 85, -135, -135, -135, - 219, 273, 2521, -135, -135, -135, -135, 2396, -135, -135, - 190, 1531, -135, 178, -135, 341, 130, -135, -135, -135, - -12, -135, -135, 856, 315, -135, 322, 10, 663, -135, - 267, -135, -135, -135, -135, -135, -135, -135, -135, -135, - -135, -135, -135, 349, -135, -135, 4635, 225, -135, -135, - -135, -135, 135, 2769, -135, -135, -135, -135, -135, 6986, - 188, 189, -135, 210, 198, 332, 187, -135, 194, -135, - -135, -135, -135, 2769, -135, -135, -135, -135, 345, -135, - -135, 856, 211, 156, 159, 222, 155, 152, -135, 150, - 146, -135, 143, -135, 140, 731, 357, 237, 605, 395, - 128, 1531, 265, -135, 1531, 235, -135, -135, 399, -135, - 4635, 555, 110, 238, -135, 385, -135, -135, -135, -135, - 98, 856, 386, 393, 736, 407, 115, -135, 4635, 562, - 246, 63, 389, -135, -135, -135, -135, -135, 83, 362, - -135, 830, 103, 102, 94, 49, 856, 405, 79, 812, - 86, 856, 409, 77, -135, 249, -135, -135, -135, -135, - -135, 1531, 4759, -135, 3643, 54, 292, -135, -135, 47, - -135, -135, 1531, 961, 220, 1900, -135, 449, -135, -135, - -135, 439, -135, 254, -135, -135, -135, -135, 1900, -135, - -135, -135, -135, 680, 15, 321, 285, -135, -25, -135, - -135, 608, 295, -135, -135, +const short QmlJSGrammar::action_index[] = { + 423, 3006, 379, 18, -135, 2508, 212, 33, 284, -135, -135, -54, -135, -135, 175, 11, + -18, 480, -135, 210, -135, -16, 547, -135, 82, -135, -135, -2, -135, 1107, -135, 95, + 51, 486, -135, 376, -135, -135, -135, -135, -135, 466, 321, 346, -135, 988, -135, 2882, + -135, -135, -135, -135, 914, 957, -135, -135, 6568, 3877, 4624, 2882, 2882, -135, 2014, 2882, + -135, -135, -135, -135, -135, 2882, 2882, -135, -135, -135, -135, -135, -135, -135, -135, 3006, + -135, 2882, -135, 2882, 2882, 3626, -135, -135, 85, -135, 2882, 2882, -135, -135, 209, 399, + -135, -135, 2882, -135, -135, -135, -135, 396, -135, 4125, -135, 149, -135, -135, 6961, 154, + -135, 385, -135, -135, -135, 177, -135, 211, 142, 83, -135, -135, 183, -135, -135, -135, + -135, 547, -135, 336, 220, -135, -135, -135, 1139, 105, 43, 658, -135, 320, -135, 1155, + 1173, 250, -135, 40, 7, 425, 27, 3130, -135, 159, 3130, 129, -135, 116, 108, 4001, + -135, -135, 1198, 235, -135, -135, -135, -135, 3750, -135, 65, -135, 17, -135, -135, 2882, + 547, 2882, -135, -135, -135, -135, 531, 2882, -135, -135, -135, 2882, -135, -135, -135, 325, + 2882, 2882, 2882, 288, 285, 265, 370, 2882, -17, 2882, 90, 3130, 2882, 91, 3130, -135, + 56, 2882, 113, 2882, 87, -135, -135, 3130, -135, -135, -135, 7223, -135, -135, 150, 883, + -135, -135, 141, -135, 1408, -135, 178, 171, -135, 195, 181, 1303, 6175, 156, 2260, -135, + 102, 408, 254, 2137, -135, -135, 29, 5127, 3130, 5651, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, 296, -135, -135, 3130, 294, -135, 5127, 3130, -135, 277, -135, 507, + 46, 3378, 88, 50, -135, 3130, 3502, -135, 3130, -135, -135, -135, -135, 2260, -135, 228, + 2260, -135, -135, -135, -135, 3130, -135, -135, 1408, -135, -135, 147, 133, -135, 114, -135, + -135, -135, 152, -135, 166, -135, -135, 213, -135, 144, 174, 3130, -135, -135, -135, 6175, + -135, -135, 1198, 170, 173, -135, -135, 164, -135, 179, 199, -135, 197, 1513, -135, -135, + 302, -135, 1513, -135, -135, -135, -135, -135, 3130, -135, -135, 3130, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, 182, -135, -135, 184, -135, -135, -135, 6830, + 160, 163, 3130, 206, 279, -135, -135, 4748, 176, 153, 187, 1645, 1198, 146, -135, -135, + 1198, 143, 3006, -135, 3130, 139, 162, 3130, 135, -135, -135, 3130, -135, -135, 224, -135, + -135, 3006, 3130, 3006, -135, 225, -135, -135, -135, 140, 131, 120, -135, 393, -135, 1198, + 125, 103, -135, 96, -135, -135, 3006, -135, -135, -135, 3130, 53, 3130, 48, -135, -135, + 99, 75, -135, 81, 367, -135, -135, 1198, 78, 69, -135, 66, 3130, 9, 3130, 8, + -135, -135, -135, -135, -135, 16, -135, -135, 248, -135, 883, -135, -135, 1198, -135, 883, + -135, -135, 24, 1354, -135, -3, 20, -135, -135, -4, -135, -135, 44, 42, 31, -135, + 30, 1198, -135, -60, 6, 1768, 6437, -135, -22, -135, 6437, 6306, -135, -11, 6175, -135, + 6175, 6175, -23, -135, -135, -135, -135, 1513, -135, -53, -1, -30, -135, -57, -135, 41, + -61, -5, -31, -135, -52, -135, -29, 982, -135, -135, -51, 5, -21, -135, -42, -135, + -20, 1513, -43, 13, -13, -135, -34, -135, -135, 3130, 316, -135, 14, -135, -135, 268, + -135, 3130, 301, 2, -135, 32, -135, 34, 305, 3130, -135, 38, 39, -135, -12, -135, + -135, -135, 430, -135, -135, 381, -135, 297, 36, -135, 21, 23, -135, 1198, -135, -135, + 1, 35, -135, -135, 3130, 283, -135, -135, 3130, 246, -135, -135, -135, 3130, -135, 68, + 64, 74, -135, 67, -135, -135, 1198, -135, -135, -135, 6961, -135, 2882, 547, 2882, 505, + 2882, 341, 2882, 19, 2882, 175, 5127, 3130, 3378, 6044, -135, -135, 234, -135, 52, -135, + -135, 3130, 3378, 230, -135, 59, -135, 3130, 2882, 111, 3006, -135, 72, 2882, 123, 2882, + 79, 3378, 5913, 73, -135, 3378, 76, -135, 3378, 80, -135, 26, 107, 109, 6437, 89, + -135, 6437, 93, -135, -135, -135, 112, 1513, 1513, 94, 145, 121, -135, 100, -135, 98, + 151, 128, -135, 104, -135, 122, 1513, 1513, 117, 134, -135, 132, -135, 136, 138, -135, + 137, -135, -135, 387, -135, -135, 221, 219, -135, -135, 6699, -135, -135, -135, 3130, -135, + -135, 207, 4252, 193, 302, -135, 4500, -135, -135, 3006, -135, -135, -135, -135, -135, 161, + 205, -135, -135, 3254, -135, 169, -135, -135, -135, 497, -135, -135, -135, -135, 365, 3006, + -135, -135, 363, -135, -135, -135, -135, -135, 3006, -135, 2882, -135, 194, 196, -135, -135, + -135, -135, 368, -135, 564, 1379, -135, -135, -135, -135, 22, -135, 5258, 10, -135, -135, + 54, -135, -135, 4376, -135, 343, -135, -135, 1093, -135, -135, 1009, -135, -135, -135, 988, + 1249, -7, 45, 15, -135, -19, -135, 1408, -33, -6, -135, -26, -135, -9, 6437, -25, + -135, -135, 262, -49, -135, 5520, -135, -135, -135, 5127, -135, -135, -135, 86, -135, 200, + -135, -135, -135, 5782, 157, -135, 190, -135, -135, 60, -135, -135, 222, -135, 713, -135, + 5389, -135, -135, -135, 858, -135, -135, -135, 101, -135, 417, 416, 412, 681, -135, -135, + 70, 63, -135, 58, 239, 240, 328, 395, 542, 49, -135, -135, 2508, -135, -135, -135, + -135, -135, -135, -135, 340, 348, -135, -135, -135, -135, -135, -135, -135, -135, -27, 1513, + -46, 55, 37, -135, 47, -135, -135, -135, 229, 97, 2758, -135, -135, -135, -135, 2633, + -135, -135, 168, 1891, -135, 165, -135, 158, 118, 227, 92, 57, -135, -10, -24, -135, + -14, -135, 257, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, 313, + -135, 840, 115, 124, -135, -135, 172, 155, 778, 342, -135, 189, 180, -135, 783, 188, + 627, 357, 167, -135, 186, -135, -135, -135, -135, 148, 601, 361, 203, 569, 329, -135, + 130, 1891, 217, -135, 1891, 198, -135, -135, 407, -135, -135, 4872, 208, -135, -135, -135, + 536, -135, 110, 3130, -135, 106, -135, -135, -135, -135, 7092, 127, 126, -135, 226, 119, + 349, 218, -135, 231, -135, -135, -135, -135, 3130, -135, -135, 233, -135, -135, -135, -135, + 1891, 4996, -135, 525, 3877, 77, 232, -135, -135, 71, -135, -135, 1891, 697, 185, 2383, + -135, 409, -135, -135, -135, 398, -135, 405, -135, 764, 259, -135, -135, -135, -135, 2383, + -135, -135, -135, -135, 594, 12, 322, 270, -135, -28, -135, -135, 598, 276, -135, -135, - -236, 270, 185, 187, 214, 797, -236, -236, -236, -236, - -236, -236, -236, -236, -236, -236, -236, -52, -236, -236, - -236, -236, -94, -236, -236, -236, -236, -236, -236, -236, - -236, -236, -236, -46, -236, -236, -236, -236, -236, -236, - -236, -87, -236, -236, -236, 192, -236, 700, -236, -236, - -236, -236, 194, 196, -236, -236, 315, 183, 198, 624, - 620, -236, 589, 599, -236, -236, -236, -236, -236, 592, - 547, -236, -236, -236, -236, -236, -236, -236, -236, 511, - -236, 608, -236, 602, 645, 495, -236, -236, -236, -236, - 526, 508, -236, -236, -236, -236, -236, -236, 503, -236, - -236, -236, -236, -236, -236, 444, -236, -236, -153, -236, - -12, -236, -236, 250, -236, -236, -236, -236, -236, -236, - -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, - -236, 35, -236, -236, -236, -236, -85, -236, -236, -236, - -236, -236, -236, 266, 232, 38, 241, -236, -236, 178, - -236, -17, -236, -236, -16, 24, -236, -236, -236, -19, - -236, -236, 369, 57, -236, -236, -236, -120, 6, -236, - -109, -108, -106, -236, -236, 379, -236, 385, -236, -236, - -236, -236, -236, 405, -236, -236, -236, 419, -236, -236, - -236, -236, 436, 450, 466, -236, -236, -236, -236, 448, - -236, 461, -236, 55, 482, -236, 56, -236, -236, 529, - -236, 542, -236, -236, -236, 60, -236, -236, 286, 78, - -236, -236, 139, 252, -236, -236, -236, -236, 293, -236, - -236, 44, -236, -236, -236, 298, 305, 61, 612, -236, - 46, 70, -236, 552, -236, -236, -236, 237, 72, 236, - -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, - -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, - -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, - -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, - -236, -236, -236, -236, -236, 74, -236, -236, 228, 80, - -236, -236, -236, 84, -236, 76, -236, -236, -236, 85, - 88, -236, 90, -236, -236, -236, -236, 813, -236, -236, - 781, -236, -236, -236, -236, 91, -236, -236, 411, -236, - -236, 100, -30, -25, -21, -236, -236, -236, 92, -236, - -236, -236, -236, -236, -236, -236, -236, 104, -236, -236, - -236, 395, -236, -236, 343, 95, 96, -236, -236, -236, - -236, -236, -236, -236, -236, 387, -236, -236, 146, -236, - 679, -236, -236, -236, -236, -236, 107, -236, -236, 112, - -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, - -236, -236, 179, -236, -236, 180, -236, -236, -236, 140, - -236, -236, 127, -236, 186, -236, -236, 732, -236, -236, - -236, 26, 309, -236, -236, -236, 367, -236, 351, -236, - 137, -236, -236, 138, -236, 212, -236, 125, -236, -236, - -236, 213, -236, 326, 113, 362, -236, -236, 216, -236, - -236, 122, -236, 97, -236, -236, -236, 348, 118, 93, - -236, 94, -236, -236, 384, -236, -236, -236, 157, -236, - 164, -236, 231, -236, 110, 79, -236, -236, -236, -236, - -236, 445, 109, 79, -236, -236, 168, -236, 169, -236, - 234, -236, -236, -236, 10, -236, -236, -236, 143, -236, - 202, -236, -236, 506, -236, 222, -236, -236, -50, 311, - -236, -236, -43, -236, -236, -236, -236, -236, 87, -236, - 62, -236, -236, 521, -236, -61, -236, 269, 82, -236, - -236, -236, 233, 244, -236, -236, 248, -236, 254, 264, - -236, -236, -236, -236, -236, 281, -236, -236, 67, -64, - -63, -65, -236, -236, -236, 64, -67, -72, -75, -236, - -236, 301, -236, -236, -236, 58, -76, -2, -79, -236, - -83, 303, -236, 49, -84, -88, -92, -236, -236, 41, - -236, 225, -236, 224, -236, 89, -236, 29, -236, -236, - -236, -236, -236, -90, -236, 25, -236, -93, -236, -236, - -236, -236, -68, -236, -236, -69, -236, 71, -236, -236, - -107, -236, -236, 45, -236, 363, -236, -236, -236, 43, - -236, -236, 5, -236, 207, -236, 2, -236, 206, -236, - -236, -5, -236, 7, -18, -236, -236, -29, -236, -236, - 372, -236, -236, -236, 8, -236, 531, -58, 683, -57, - 382, -236, 688, -236, 691, -236, 240, -24, 205, 243, - -236, -236, -236, -236, -236, -236, -236, -27, 239, -236, - -236, -236, -236, -35, 675, -236, 432, -236, -236, 661, - -236, 555, -236, 256, 245, -236, -236, 128, -236, -236, - 177, -236, -236, -174, -176, -177, 175, -183, -236, 171, - -184, -236, -236, -236, -236, 337, 341, -236, -40, -173, - -175, -178, -236, -236, -45, -179, -182, -185, -236, -192, - 359, 365, -236, -188, -198, -200, -236, -236, -191, -201, - -203, -236, -236, -86, -236, -236, -236, -236, -236, -236, - 371, -236, -236, -236, -70, -236, -236, -236, -66, -236, - -62, -236, 145, -236, -236, 368, -236, -236, -236, -236, - -236, -236, -236, -236, -236, 312, -236, -236, -236, -236, - -236, -36, -236, -236, -236, -236, -236, 485, -236, -236, - -53, -236, -236, -236, -236, -236, 394, -236, 407, -236, - 39, 40, -236, -236, -236, -236, 282, -236, 380, 361, - -236, -236, -236, -236, -236, -236, 148, -152, -236, -236, - -150, -236, -236, -1, -236, 572, -236, -236, 163, -236, - -236, 357, -236, -236, -236, 535, 355, -236, 30, -101, - -100, -102, -236, 353, -236, -95, -103, -99, -236, -105, - 167, -104, -236, -236, -236, -236, -236, 316, -236, -236, - -236, 227, -236, -236, -236, -98, -236, -236, -236, -236, - -236, 296, -236, -236, 120, -236, -236, -236, -236, -236, - -236, -236, 291, -236, 538, -236, -236, -236, 307, -236, - -236, -236, 238, -236, 229, -236, -236, -236, -236, 331, - -236, 217, 210, 114, 725, 218, -236, -236, -236, 869, - -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, - -236, 334, -236, 115, -15, -14, -20, -236, -236, -236, - 154, -236, 809, -236, -236, -236, -236, 825, -236, -236, - -236, 717, -236, -236, -236, 156, 166, -236, -236, -236, - -236, -236, -236, 184, 160, -236, -236, -236, 182, -236, - 181, -236, -236, -236, -236, -236, -236, -236, -236, -236, - -236, -236, -236, -236, -236, 142, 783, 150, -236, -236, - -236, -236, 124, 123, -236, -236, -236, 226, -236, 103, - -236, -236, -236, -236, -236, 73, 356, -236, 129, -236, - -236, -236, -236, 65, -236, -236, -236, -236, -236, -236, - -236, 116, -236, -236, -236, -236, -236, -236, -236, -236, - -236, -236, -236, -236, -236, 108, 81, -236, 102, 101, - -236, 722, -236, -236, 944, 98, -236, -236, -236, 77, - 874, 37, 83, 86, -236, 53, -236, -236, -236, -236, - -236, 59, 33, -236, 50, 51, -236, 32, 904, -8, - 47, 188, -236, -236, -236, -236, -236, -236, -236, 36, - -236, 249, -236, -236, -236, -236, 28, 4, -236, 284, - -236, 21, -3, -236, -236, 23, -236, -236, -236, -236, - 280, 671, 889, -236, 641, 15, -236, -236, -236, 13, - -236, -236, 565, 22, 287, 791, -236, 19, -236, -236, - -236, -41, -236, 14, -236, -236, -236, -236, 774, -236, - -236, -236, -236, 3, -236, 1, -6, -236, -236, -236, - -236, -13, 135, -236, -236 -}; + -240, 214, 166, 169, 183, 775, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -56, -240, -240, -240, -240, -98, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -48, -240, -240, -240, -240, -240, -240, -240, -94, -240, -240, -240, 151, -240, 664, + -240, -240, -240, -240, 155, 157, -240, -240, 298, 140, 148, 602, 586, -240, 547, 556, + -240, -240, -240, -240, -240, 545, 607, -240, -240, -240, -240, -240, -240, -240, -240, 467, + -240, 623, -240, 633, 670, 446, -240, -240, -240, -240, 482, 472, -240, -240, -240, -240, + -240, -240, 465, -240, -240, -240, -240, -240, -240, 423, -240, -240, -154, -240, -13, -240, + -240, 220, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -92, -240, -240, -240, -240, -240, -240, 243, + 248, 39, 262, -240, -240, 210, -240, -21, -240, -240, -15, 24, -240, -240, -240, -12, + -240, -240, 341, 57, -240, -240, -240, -124, 8, -240, -106, -101, -97, -240, -240, 377, + -240, 502, -240, -240, -240, -240, -240, 496, -240, -240, -240, 452, -240, -240, -240, -240, + 445, 435, 356, -240, -240, -240, -240, 352, -240, 355, -240, 48, 375, -240, 52, -240, + -240, 333, -240, 372, -240, -240, -240, 53, -240, -240, 287, 77, -240, -240, 121, 223, + -240, -240, -240, -240, 325, -240, -240, 44, -240, -240, -240, 335, 331, 65, 585, -240, + 54, 74, -240, 391, -240, -240, -240, 199, 73, 196, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, 80, -240, -240, 192, 82, -240, -240, -240, 83, + -240, 71, -240, -240, -240, 84, 86, -240, 87, -240, -240, -240, -240, 771, -240, -240, + 747, -240, -240, -240, -240, 88, -240, -240, 474, -240, -240, 101, -26, -28, -25, -240, + -240, -240, 91, -240, -240, -240, -240, -240, -240, -240, -240, 96, -240, -240, -240, 537, + -240, -240, 303, 100, 104, -240, -240, -240, -240, -240, -240, -240, -240, 692, -240, -240, + 130, -240, 642, -240, -240, -240, -240, -240, 105, -240, -240, 112, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, 158, -240, -240, 164, -240, -240, -240, 119, + -240, -240, 120, -240, 168, -240, -240, 703, -240, -240, -240, 4, 280, -240, -240, -240, + 282, -240, 471, -240, 125, -240, -240, 126, -240, 197, -240, 118, -240, -240, -240, 182, + -240, 484, 109, 485, -240, -240, 205, -240, -240, 110, -240, 102, -240, -240, -240, 299, + 108, 92, -240, 94, -240, -240, 466, -240, -240, -240, 131, -240, 159, -240, 230, -240, + 99, 66, -240, -240, -240, -240, -240, 412, 97, 64, -240, -240, 171, -240, 172, -240, + 249, -240, -240, -240, -9, -240, -240, -240, 136, -240, 194, -240, -240, 365, -240, 209, + -240, -240, -58, 327, -240, -240, -57, -240, -240, -240, -240, -240, 81, -240, 56, -240, + -240, 343, -240, -72, -240, 301, 79, -240, -240, -240, 226, 240, -240, -240, 242, -240, + 245, 257, -240, -240, -240, -240, -240, 250, -240, -240, 63, -70, -73, -75, -240, -240, + -240, 55, -79, -77, -80, -240, -240, 285, -240, -240, -240, 51, -82, -91, -89, -240, + -105, 309, -240, 41, -99, -111, -113, -240, -240, 20, -240, 284, -240, 276, -240, 76, + -240, 12, -240, -240, -240, -240, -240, -103, -240, 9, -240, -104, -240, -240, -240, -240, + -78, -240, -240, -81, -240, 61, -240, -240, -120, -240, -240, 42, -240, 337, -240, -240, + -240, 40, -240, -240, -6, -240, 513, -240, -10, -240, 273, -240, -240, -14, -240, 0, + -27, -240, -240, -42, -240, -240, 350, -240, -240, -240, -2, -240, 639, -65, 653, -66, + 373, -240, 674, -240, 675, -240, 184, -30, 160, 180, -240, -240, -240, -240, -240, -240, + -240, -34, 156, -240, -240, -240, -240, -41, 647, -240, 494, -240, -240, 548, -240, 565, + -240, 149, 163, -240, -240, 139, -240, -240, 138, -240, -240, -180, -182, -184, 145, -191, + -240, 135, -194, -240, -240, -240, -240, 293, 291, -240, -50, -183, -185, -187, -240, -240, + -55, -188, -190, -192, -240, -200, 265, 263, -240, -197, -207, -175, -240, -240, -196, -204, + -203, -240, -240, -83, -240, -240, -240, -240, -240, -240, 411, -240, -240, -240, -64, -240, + -240, -240, -60, -240, -54, -240, 127, -240, -240, 481, -240, -240, -240, -240, -240, -240, + -240, -240, -240, 290, -240, -240, -240, -240, -240, -29, -240, -240, -240, -240, -240, 421, + -240, -240, -46, -240, -240, -240, -240, -240, 330, -240, 346, -240, 49, 275, -240, -240, + -240, -240, 278, -240, 323, 339, -240, -240, -240, -240, -240, -240, 211, -145, -240, -240, + -143, -240, -240, 5, -240, 483, -240, -240, 221, -240, -240, 277, -240, -240, -240, 312, + 259, -240, 43, -96, -95, -90, -240, 305, -240, -86, -93, -102, -240, -88, 232, -87, + -240, -240, -240, -240, -240, 267, -240, -240, -240, 239, -240, -240, -240, -85, -240, -240, + -240, -240, -240, 289, -240, -240, 67, -240, -240, -240, -240, -240, -240, -240, 317, -240, + 358, -240, -240, -240, 314, -240, -240, -240, 218, -240, 106, 107, 111, 185, -240, -240, + -240, -240, -240, -240, 178, 173, -240, -240, -240, -240, -240, -240, 867, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, 295, + -240, 122, 7, -17, -19, -240, -240, -240, 153, -240, 798, -240, -240, -240, -240, 810, + -240, -240, -240, 663, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, 146, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, 128, + -240, 253, -240, -240, -240, -240, -240, -240, 117, 93, -240, -240, -240, -240, 279, -240, + 113, 89, -240, -240, 116, -240, -240, -240, -240, -240, 103, 75, -240, 95, 98, -240, + -240, 711, -240, -240, 625, 90, -240, -240, 85, -240, 62, 849, 78, -240, -240, -240, + 3, -240, 38, 37, -240, 45, -240, -240, 234, -240, -1, -240, -240, -240, -240, -240, + -35, 36, -240, 35, -240, -240, -240, -240, -38, -240, -240, 27, -240, -240, -240, 198, + 728, 822, -240, -37, 915, 16, -240, -240, -240, 15, -240, -240, 512, 23, 216, 780, + -240, 21, -240, -240, -240, -40, -240, 19, -240, 18, 14, -240, -240, -240, -240, 768, + -240, -240, -240, -240, 1, -240, 2, -3, -240, -240, -240, -240, -16, 50, -240, -240}; -const short QmlJSGrammar::action_info [] = { - 174, 325, 109, 238, 555, 238, 109, 545, 174, 175, - 544, 500, 563, 238, 109, 174, 507, 109, 238, -575, - 854, 573, 538, -129, 800, 1109, 934, 201, 317, 581, - 1108, 585, 585, 109, 174, 1114, 585, 535, 591, 592, - 939, 636, 104, 841, 532, 517, 642, 519, 603, 644, - 325, 901, 484, 616, 605, 325, 609, 612, 484, 238, - 507, 532, 206, 484, 109, -536, 418, 238, 519, 502, - 325, 903, 630, 500, 209, -135, 325, 671, 551, 577, - 507, 912, 486, 480, 109, 238, 211, 1049, 912, 636, - 109, 669, 937, 1062, 937, 316, 238, 454, 569, 454, - 478, 993, 1059, 471, 454, 174, 868, 825, 655, -110, - 1057, 1065, 666, 1025, 238, 109, 671, 642, 669, 238, - 920, 934, 1037, 908, 662, 519, 519, 644, 454, 676, - 454, 462, 679, 988, 818, 682, 1032, 460, 484, 238, - 238, 238, 174, 696, 912, 407, 199, 310, 325, 366, - 109, 109, 447, 532, 238, 517, 532, 109, 174, 500, - 109, -577, 698, 1011, 211, 225, 215, 1000, 366, 967, - 238, 704, 1002, 418, 351, 0, 513, 174, 1006, 209, - 314, 507, 999, 713, 325, 778, 507, 718, 109, 996, - 994, 1003, 238, 862, 1001, -198, -196, 921, 331, 425, - 988, 423, 175, 325, 354, 983, 228, 366, 174, 402, - 109, 476, 912, 374, 802, 368, 458, 328, 975, 325, - 420, 325, 215, 864, -200, 428, 754, 353, 199, 755, - 997, 174, 740, 758, 911, 367, 734, 0, 730, 360, - 218, 0, 215, 96, 320, 216, 214, 216, 214, 750, - 216, 214, 937, 912, 401, 97, 800, 216, 214, 216, - 214, 321, 1008, 201, 203, 215, 535, 976, 90, 216, - 214, 167, 865, 1014, 216, 214, 404, 851, 215, 998, - 91, 90, 741, 756, 695, 90, 925, 731, 216, 214, - 215, 745, 500, 91, 216, 214, 431, 91, 216, 214, - 1014, 216, 214, 914, 215, 204, 215, 215, 852, 216, - 214, 429, 216, 214, 216, 214, 663, 216, 214, 438, - 837, 595, 215, 1015, 926, 602, 215, 588, 660, -135, - 216, 214, 90, 215, -200, 1082, 1083, 937, 215, 603, - 653, 216, 214, 215, 91, 935, -580, 938, 216, 214, - 1077, 216, 214, 298, 302, 1070, 955, 664, 216, 214, - 618, 614, 496, 225, 44, 1082, 1083, 215, -200, 838, - -579, 930, 44, 299, 589, 930, 297, 192, 325, 193, - 977, 99, 912, 293, 216, 214, 418, 935, 418, 978, - 194, 192, 579, 193, 932, -419, -244, 571, -200, 1051, - -419, 979, 1010, 99, 194, 325, 1019, 931, 937, 0, - 216, 214, 216, 214, 1010, 1030, 935, 0, 1034, 1048, - 932, 0, 216, 214, 932, 216, 214, 0, 100, 0, - 0, -243, 0, 931, 101, 935, 932, 931, 1111, 935, - 454, 0, 406, 815, 192, 1004, 193, -419, 0, 931, - 100, -244, 788, 298, 247, 99, 101, 194, 216, 214, - 0, 789, 216, 214, 932, 932, 0, 192, 932, 193, - 216, 214, 0, 299, 248, 680, 788, 931, 931, 1071, - 194, 931, 178, 179, 932, 789, -243, 192, 932, 193, - 767, 768, 767, 768, 932, 178, 179, 931, 247, 1104, - 194, 931, 100, 178, 179, 178, 179, 931, 101, 0, - 180, 181, 216, 214, 0, 0, 0, 0, 248, 496, - 225, 0, 0, 180, 181, 646, 0, 0, 215, 0, - 0, 180, 181, 180, 181, 0, 247, 249, 6, 5, - 4, 1, 3, 2, 0, 647, 0, 648, 0, 64, - 79, 247, 0, 0, 247, 0, 248, 0, 305, 0, - 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, - 247, 248, 0, 305, 248, 0, 673, 247, 0, 0, - 0, 249, 0, 216, 214, 414, 415, 0, 0, -103, - 248, 0, 673, 64, 79, 0, -103, 248, 0, 673, - 495, 185, 186, 0, 0, 0, 0, 0, 649, 187, - 188, 0, 0, 189, 0, 190, 185, 186, 0, 249, - 64, 79, 0, 0, 187, 188, 0, 795, 189, 0, - 190, 64, 79, 0, 249, 944, 0, 674, 944, 496, - 225, 0, 0, 0, 0, 0, 64, 79, 0, 64, - 79, 796, 0, 674, 0, 185, 186, 0, 0, 0, - 674, 0, 0, 0, 188, 64, 79, 189, 0, 190, - 1041, 0, 64, 79, 0, 947, 951, 948, 947, 951, - 948, 0, 797, 0, 0, 0, 0, 0, 0, 0, - 944, 0, 0, 944, 184, 0, 156, 0, 0, 0, - 0, 0, 0, 0, 0, 414, 415, 0, 0, 184, - 944, 0, 942, 949, 941, 942, 949, 941, 0, 0, - 495, 0, 0, 945, 943, 950, 945, 943, 950, 0, - 1042, 951, 948, 947, 951, 948, 946, 0, 0, 946, - 0, 0, 0, 0, 0, 0, 937, 0, 184, 0, - 947, 951, 948, 0, 0, 0, 0, 0, 0, 0, - 0, 944, 0, 0, 0, 0, 944, 942, 949, 941, - 942, 949, 941, 0, 0, 0, 0, 0, 945, 943, - 950, 945, 943, 950, 0, 0, 55, 942, 949, 941, - 0, 55, 0, 0, 946, 0, 0, 0, 945, 943, - 950, 947, 951, 948, 0, 0, 947, 951, 948, 0, - 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 71, 75, 72, 0, - 0, 71, 75, 72, 0, 0, 0, 0, 942, 949, - 941, 0, 1053, 942, 949, 941, 0, 0, 0, 945, - 943, 950, 0, 0, 945, 943, 950, 0, 0, 0, - 1053, 76, 946, 51, 73, 46, 76, 946, 51, 73, - 46, 937, 0, 44, 67, 54, 74, 0, 44, 67, - 54, 74, 947, 951, 948, 0, 944, 68, 0, 0, - 0, 932, 68, 55, 0, 0, 0, 0, 0, 0, - 947, 951, 948, 0, 931, 0, 0, 0, 0, 932, - 0, 55, 0, 0, 0, 0, 0, 0, 816, 942, - 949, 941, 931, 0, 0, 0, 947, 951, 948, 0, - 945, 943, 950, 71, 75, 72, 0, 942, 949, 941, - 0, 0, 0, 946, 0, 0, 0, 0, 945, 943, - 950, 71, 75, 72, 0, 0, 0, 0, 0, 0, - 0, 946, 55, 942, 949, 941, 0, 517, 76, 500, - 51, 73, 46, 0, 945, 943, 950, 0, 0, 0, - 44, 67, 54, 74, 0, 0, 76, 946, 51, 73, - 46, 55, 0, 0, 68, 0, 0, 0, 44, 67, - 54, 74, 71, 75, 72, 0, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 55, 0, 0, 0, - 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, - 0, 71, 75, 72, 0, 0, 0, 76, 0, 51, - 73, 46, 0, 0, 0, 0, 0, 0, 0, 44, - 67, 54, 74, 0, 0, 0, 71, 75, 72, 0, - 0, 0, 377, 68, 0, 0, 76, 55, 51, 73, - 46, 0, 378, 0, 695, 0, 379, 0, 44, 67, - 54, 74, 0, 0, 0, 0, 380, 0, 381, 0, - 0, 76, 68, 51, 73, 46, 55, 0, 0, 382, - 0, 383, 96, 44, 67, 54, 74, 71, 75, 72, - 384, 0, 0, 385, 97, 0, 0, 68, 0, 386, - 0, 0, 0, 0, 0, 55, 388, 387, 0, 0, - 0, 0, 0, 0, 0, 0, 71, 75, 72, 0, - 0, 0, 76, 389, 51, 73, 46, 0, 0, 0, - 0, 0, 0, 0, 44, 67, 54, 74, 216, 214, - 0, 0, 0, 0, 0, 71, 75, 72, 68, 0, - 517, 76, 0, 51, 73, 46, 55, 0, 0, 0, - 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, - 0, 0, 0, 0, 55, 0, 0, 68, 236, 237, - 76, 55, 51, 73, 46, 236, 237, 0, 0, 216, - 214, 0, 44, 67, 54, 74, 71, 75, 72, 0, - 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, - 0, 0, 0, 0, 71, 75, 72, 0, 0, 0, - 0, 71, 75, 72, 0, 0, 0, 0, 0, 0, - 0, 76, 0, 51, 73, 46, 0, 0, 0, 0, - 0, 0, 0, 44, 67, 54, 74, 0, 0, 76, - 0, 51, 73, 46, 0, 0, 76, 68, 51, 73, - 46, 44, 67, 54, 74, 0, 0, 0, 44, 67, - 54, 74, 0, 0, 0, 68, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 377, 55, 0, 0, - 0, 236, 237, 0, 0, 0, 378, 0, 0, 0, - 435, 0, 0, 0, 0, 55, 0, 0, 0, 851, - 380, 0, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 0, 383, 96, 71, 75, 72, - 0, 0, 0, 0, 384, 0, 0, 385, 97, 0, - 852, 0, 0, 386, 802, 71, 75, 72, 0, 0, - 388, 387, 0, 0, 0, 0, 0, 235, 0, 0, - 0, 0, 76, 0, 51, 73, 46, 389, 0, 0, - 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, - 76, 0, 51, 73, 46, 0, 0, 377, 68, 0, - 0, 0, 44, 67, 54, 74, 0, 378, 0, 0, - 0, 435, 0, 0, 0, 0, 68, 0, 0, 0, - 0, 380, 0, 381, 0, 0, 428, 0, 55, 0, - 0, 0, 236, 237, 382, 0, 383, 96, 0, 0, - 0, 0, 0, 0, 0, 384, 0, 0, 385, 97, - 0, 0, 0, 0, 386, 0, 0, 0, 0, 0, - 0, 388, 387, 0, 0, 0, 0, 0, 71, 75, - 72, 0, 0, 0, 0, 0, 0, 0, 389, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, - 0, 0, 0, 76, 0, 51, 73, 46, 0, 0, - 0, 0, 429, 0, 0, 44, 67, 54, 74, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, - 0, 0, 0, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, - 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, - 0, 0, 0, 0, 0, 243, 0, 0, 0, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 71, 75, 72, 0, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 65, 82, 50, 0, - 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, - 0, 0, 0, 78, 45, 0, 76, 0, 51, 73, - 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, - 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 48, 49, 0, 0, - 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, - 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, - 0, 58, 0, 0, 0, 0, 0, 0, 62, 0, - 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, - 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, - 0, 0, 0, 0, 0, 0, 78, 45, 0, 76, - 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, - 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 68, 0, 0, 0, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, - 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, - 0, 56, 57, 0, 58, 0, 0, 0, 0, 0, - 0, 243, 0, 0, 0, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, - 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 65, 82, 50, 0, 0, 0, 0, 244, - 61, 0, 0, 0, 0, 0, 0, 0, 0, 78, - 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, - 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, - 0, 0, 48, 49, 0, 0, 0, 0, 0, 0, - 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, - 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, - 0, 0, 0, 0, 243, 0, 0, 0, 66, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, - 71, 75, 72, 0, 80, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 65, 82, 50, 0, 0, - 877, 0, 0, 61, 0, 0, 0, 0, 0, 0, - 0, 0, 78, 45, 0, 76, 0, 51, 73, 46, - 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 68, 0, 0, 0, 48, 49, 0, 304, 0, - 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, - 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, - 58, 0, 0, 0, 0, 0, 0, 62, 0, 0, - 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 71, 75, 72, 0, 80, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, - 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, - 0, 0, 0, 0, 0, 78, 45, 0, 76, 0, - 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, - 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 0, 0, 0, 48, 49, - 0, 304, 0, 0, 0, 0, 0, 0, 53, 52, - 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, - 56, 57, 0, 58, 0, 0, 0, 0, 0, 0, - 243, 0, 0, 0, 66, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, - 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 78, 45, - 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, - 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, - 0, 879, 0, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 882, 881, 0, 0, 0, 0, 0, - 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, - 0, 0, 0, 0, 0, 243, 0, 0, 0, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 883, 886, 884, 0, 80, 0, 0, 0, 0, - 156, 0, 0, 0, 0, 0, 65, 82, 50, 0, - 0, 877, 0, 0, 61, 0, 0, 0, 0, 0, - 880, 0, 0, 78, 45, 0, 76, 0, 51, 885, - 878, 64, 79, 0, 0, 0, 0, 0, 44, 67, - 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 879, 0, 48, 49, - 0, 0, 0, 0, 0, 0, 0, 0, 882, 881, - 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, - 56, 57, 0, 58, 0, 0, 0, 0, 0, 0, - 243, 0, 0, 0, 66, 0, 0, 0, 0, 0, - 0, 0, 0, 918, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 77, 883, 886, 884, 0, - 80, 0, 0, 0, 0, 156, 0, 0, 0, 0, - 0, 65, 82, 50, 0, 0, 877, 0, 0, 61, - 0, 0, 0, 0, 0, 880, 0, 0, 78, 45, - 0, 76, 0, 51, 885, 878, 64, 79, 0, 0, - 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, - 0, 879, 0, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 882, 881, 0, 0, 0, 0, 0, - 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, - 0, 0, 0, 0, 0, 243, 0, 0, 0, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 915, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 883, 886, 884, 0, 80, 0, 0, 0, 0, - 156, 0, 0, 0, 0, 0, 65, 82, 50, 0, - 0, 877, 0, 0, 61, 0, 0, 0, 0, 0, - 880, 0, 0, 78, 45, 0, 76, 0, 51, 885, - 878, 64, 79, 0, 0, 0, 0, 0, 44, 67, - 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, - 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, - 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, - 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, - 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, - 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, - 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 78, 45, 0, - 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, - 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, - 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, - 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, - 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, - 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, - 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, - 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, - 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, - 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, - 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, - 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, - 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, - 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, - 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, - 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, - 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, - 0, 0, 0, 0, 85, 78, 45, 0, 76, 0, - 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, - 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 0, 0, 0, 374, 0, - 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, - 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, - 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, - 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, - 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, - 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, - 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, - 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, - 0, 159, 78, 45, 0, 76, 0, 51, 73, 46, - 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 68, 0, 0, 0, 47, 48, 49, 0, 0, - 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, - 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, - 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, - 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, - 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, - 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, - 0, 0, 0, 0, 309, 159, 78, 45, 0, 76, - 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, - 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 68, 0, 0, 0, 47, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, - 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, - 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, - 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 776, 0, 0, 0, 77, 71, 75, - 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, - 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, - 0, 61, 0, 0, 0, 0, 0, 0, 0, 85, - 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, - 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, - 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, - 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, - 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, - 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, - 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, - 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, - 0, 0, 0, 159, 78, 45, 0, 76, 0, 51, - 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 805, 0, 0, 68, 0, 0, 0, 47, 48, 49, - 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, - 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, - 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, - 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, - 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, - 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, - 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, - 0, 0, 0, 0, 0, 0, 0, 85, 78, 45, - 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, - 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, - 0, 0, 0, 0, 0, 107, 0, 68, 0, 0, - 0, 366, 0, 0, 47, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, - 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, - 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, - 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, - 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, - 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, - 0, 0, 0, 0, 159, 78, 45, 0, 76, 0, - 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, - 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 0, 0, 0, 47, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, - 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, - 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, - 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, - 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, - 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, - 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, - 61, 0, 0, 0, 0, 0, 0, 312, 159, 78, - 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, - 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, - 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, - 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, - 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, - 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, - 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, - 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, - 0, 0, 159, 78, 45, 0, 76, 0, 51, 73, - 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, - 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, - 170, 0, 68, 0, 0, 0, 47, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, - 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, - 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, - 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, - 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, - 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, - 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, - 0, 0, 0, 0, 0, 235, 159, 78, 45, 0, - 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, - 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, - 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, - 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, - 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, - 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, - 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 621, 0, 0, 0, 77, 71, - 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, - 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, - 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, - 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, - 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, - 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, - 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, - 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, - 0, 746, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, - 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, - 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, - 0, 0, 0, 745, 159, 78, 45, 0, 76, 0, - 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, - 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 0, 0, 0, 47, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, - 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, - 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, - 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, - 69, 0, 70, 0, 0, 0, 0, 0, 0, 753, - 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, - 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, - 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, - 61, 0, 0, 0, 0, 0, 0, 235, 159, 78, - 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, - 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, - 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, - 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, - 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, - 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, - 156, 84, 0, 0, 0, 0, 65, 82, 50, 414, - 415, 0, 0, 0, 61, 0, 0, 0, 0, 0, - 0, 0, 85, 78, 45, 0, 76, 0, 51, 73, - 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, - 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, - 0, 0, 0, 0, 0, 55, 150, 0, 0, 56, - 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, - 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, - 70, 0, 0, 0, 0, 0, 0, 0, 152, 0, - 0, 0, 0, 0, 77, 71, 75, 72, 153, 80, - 0, 81, 155, 83, 0, 84, 0, 158, 0, 0, - 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, - 0, 0, 0, 0, 0, 0, 159, 78, 45, 0, - 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, - 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, - 0, 0, 0, 963, 962, 0, 68, 0, 0, 0, - 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, - 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, - 150, 0, 0, 56, 1074, 0, 58, 0, 0, 0, - 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, - 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, - 0, 0, 152, 0, 0, 0, 0, 0, 77, 71, - 75, 72, 153, 80, 0, 81, 155, 83, 0, 84, - 0, 158, 0, 0, 65, 82, 50, 0, 0, 0, - 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, - 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, - 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, - 0, 0, 0, 0, 0, 0, 0, 963, 962, 0, - 68, 0, 0, 0, 254, 255, 256, 0, 0, 259, - 261, 262, 0, 0, 263, 0, 264, 0, 0, 0, - 269, 270, 0, 271, 0, 0, 0, 0, 0, 0, - 55, 272, 274, 275, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 75, 72, 282, 283, 284, 0, 286, 287, 288, - 289, 290, 291, 0, 0, 278, 285, 268, 258, 276, - 0, 260, 279, 0, 0, 0, 0, 0, 0, 265, - 0, 0, 281, 257, 267, 76, 266, 51, 73, 46, - 0, 0, 0, 0, 0, 273, 0, 44, 67, 54, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 68, 0, 0, 0, 254, 255, 256, 0, 0, - 259, 261, 262, 0, 0, 263, 0, 264, 0, 0, - 0, 269, 270, 0, 271, 0, 0, 0, 0, 0, - 0, 55, 272, 274, 275, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 840, 0, - 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 71, 75, 72, 282, 283, 284, 0, 286, 287, - 288, 289, 290, 291, 0, 0, 278, 285, 268, 258, - 276, 0, 260, 279, 0, 0, 0, 0, 0, 0, - 265, 0, 0, 281, 257, 267, 76, 266, 51, 73, - 46, 0, 0, 0, 0, 0, 273, 0, 44, 67, - 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 254, 255, 256, 0, - 0, 259, 261, 262, 0, 0, 263, 0, 264, 0, - 0, 0, 269, 270, 0, 271, 0, 0, 0, 0, - 0, 0, 55, 272, 274, 275, 0, 295, 0, 0, - 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 71, 75, 72, 282, 283, 284, 0, 286, - 287, 288, 289, 290, 291, 0, 0, 278, 285, 268, - 258, 276, 0, 260, 279, 0, 0, 0, 0, 0, - 0, 265, 0, 0, 281, 257, 267, 76, 266, 51, - 73, 46, 0, 0, 0, 0, 0, 273, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 254, 255, 256, - 0, 0, 259, 261, 262, 0, 0, 263, 0, 264, - 0, 0, 0, 269, 270, 0, 271, 0, 0, 0, - 0, 0, 0, 55, 272, 274, 275, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 836, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 75, 72, 282, 283, 284, 0, - 286, 287, 288, 289, 290, 291, 0, 0, 278, 285, - 268, 258, 276, 0, 260, 279, 0, 0, 0, 0, - 0, 0, 265, 0, 0, 281, 257, 267, 76, 266, - 51, 73, 46, 0, 0, 0, 0, 0, 273, 0, - 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 0, 0, 0, 254, 255, - 256, 0, 0, 259, 261, 262, 0, 0, 263, 0, - 264, 0, 0, 0, 269, 270, 0, 271, 0, 0, - 0, 0, 0, 0, 55, 272, 274, 275, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 867, 0, 0, 0, 280, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 75, 72, 282, 283, 284, - 0, 286, 287, 288, 289, 290, 291, 0, 0, 278, - 285, 268, 258, 276, 0, 260, 279, 0, 0, 0, - 0, 0, 0, 265, 0, 0, 281, 257, 267, 76, - 266, 51, 73, 46, 0, 0, 0, 0, 0, 273, - 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 68, 0, 0, 0, 254, - 255, 256, 0, 0, 259, 261, 262, 0, 0, 263, - 0, 264, 0, 0, 0, 269, 270, 0, 271, 0, - 0, 0, 0, 0, 0, 55, 272, 274, 275, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 861, 0, 0, 0, 280, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 75, 72, 282, 283, - 284, 0, 286, 287, 288, 289, 290, 291, 0, 0, - 278, 285, 268, 258, 276, 0, 260, 279, 0, 0, - 0, 0, 0, 0, 265, 0, 0, 281, 257, 267, - 76, 266, 51, 73, 46, 0, 0, 0, 0, 0, - 273, 0, 44, 67, 54, 74, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, - 254, 255, 256, 0, 0, 259, 261, 262, 0, 0, - 263, 0, 264, 0, 0, 0, 269, 270, 0, 271, - 0, 0, 0, 0, 0, 0, 55, 272, 274, 275, - 0, 295, 0, 677, 0, 0, 0, 0, 0, 0, - 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, - 0, 0, 0, 0, 0, 0, 71, 75, 72, 282, - 283, 284, 0, 286, 287, 288, 289, 290, 291, 0, - 0, 278, 285, 268, 258, 276, 0, 260, 279, 0, - 0, 0, 0, 0, 0, 265, 0, 0, 281, 257, - 267, 76, 266, 51, 73, 46, 0, 0, 0, 0, - 0, 273, 0, 44, 67, 54, 74, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, - 0, 254, 255, 256, 0, 0, 259, 261, 262, 0, - 0, 263, 0, 264, 0, 0, 0, 269, 270, 0, - 271, 0, 0, 0, 0, 0, 0, 55, 272, 274, - 275, 0, 657, 0, 658, 0, 0, 0, 0, 0, - 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, - 0, 0, 0, 0, 0, 0, 0, 71, 75, 72, - 282, 283, 284, 0, 286, 287, 288, 289, 290, 291, - 0, 0, 278, 285, 268, 258, 276, 0, 260, 279, - 0, 0, 0, 0, 0, 0, 265, 0, 0, 281, - 257, 267, 76, 266, 51, 73, 46, 0, 0, 0, - 0, 0, 273, 0, 44, 67, 54, 74, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, - 0, 0, 254, 255, 256, 0, 0, 259, 261, 262, - 0, 0, 263, 0, 264, 0, 0, 0, 269, 270, - 0, 271, 0, 0, 0, 0, 0, 0, 55, 272, - 274, 275, 0, 347, 0, 0, 0, 0, 0, 0, - 0, 0, 277, 0, 0, 0, 348, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, - 0, 0, 0, 0, 0, 0, 0, 349, 71, 75, - 72, 282, 283, 284, 0, 286, 287, 288, 289, 290, - 291, 0, 0, 278, 285, 268, 258, 276, 0, 260, - 279, 0, 0, 0, 0, 0, 0, 265, 0, 0, - 281, 257, 267, 76, 266, 51, 73, 46, 0, 0, - 0, 0, 0, 273, 0, 44, 67, 54, 74, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, - 0, 0, 0, 254, 255, 256, 0, 0, 259, 261, - 262, 0, 0, 263, 0, 264, 0, 0, 0, 269, - 270, 0, 271, 0, 0, 0, 0, 0, 0, 55, - 272, 274, 275, 0, 347, 0, 0, 0, 0, 0, - 0, 0, 0, 277, 0, 0, 0, 348, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 280, 0, 0, 0, 529, 0, 0, 0, 349, 71, - 75, 72, 282, 283, 284, 0, 286, 287, 288, 289, - 290, 291, 0, 0, 278, 285, 268, 258, 276, 0, - 260, 279, 0, 0, 0, 0, 0, 0, 265, 0, - 0, 281, 257, 267, 76, 266, 51, 73, 46, 0, - 0, 0, 0, 0, 273, 0, 44, 67, 526, 528, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 0, 0, 0, 254, 255, 256, 0, 0, 259, - 261, 262, 0, 0, 263, 0, 264, 0, 0, 0, - 269, 270, 0, 271, 0, 0, 0, 0, 0, 0, - 55, 272, 274, 275, 0, 347, 0, 0, 0, 0, - 0, 0, 0, 0, 277, 0, 0, 0, 348, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 527, 0, 529, 0, 0, 0, 349, - 71, 75, 72, 282, 283, 284, 0, 286, 287, 288, - 289, 290, 291, 0, 0, 278, 285, 268, 258, 276, - 0, 260, 279, 0, 0, 0, 0, 0, 0, 265, - 0, 0, 281, 257, 267, 530, 266, 51, 73, 46, - 0, 0, 0, 0, 0, 273, 0, 44, 67, 526, - 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 68, 0, 0, 0, 254, 255, 256, 0, 0, - 259, 261, 262, 0, 0, 263, 0, 264, 0, 0, - 0, 269, 270, 0, 271, 0, 0, 0, 0, 0, - 0, 55, 272, 274, 275, 0, 347, 0, 0, 0, - 0, 0, 0, 0, 0, 277, 0, 0, 0, 348, - 0, 0, 0, 0, 0, 0, 0, 0, 728, 0, - 0, 0, 280, 0, 0, 0, 529, 0, 0, 0, - 349, 71, 75, 72, 282, 283, 284, 0, 286, 287, - 288, 289, 290, 291, 0, 0, 278, 285, 268, 258, - 276, 0, 260, 279, 0, 0, 0, 0, 0, 0, - 265, 0, 0, 281, 257, 267, 76, 266, 51, 73, - 46, 0, 0, 0, 0, 0, 273, 0, 44, 67, - 526, 528, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 254, 255, 256, 0, - 0, 259, 261, 262, 0, 0, 263, 0, 264, 0, - 0, 0, 269, 270, 0, 271, 0, 0, 0, 0, - 0, 0, 55, 272, 274, 275, 0, 347, 0, 0, - 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, - 348, 0, 0, 0, 0, 0, 0, 0, 0, 733, - 0, 0, 0, 280, 0, 0, 0, 529, 0, 0, - 0, 349, 71, 75, 72, 282, 283, 284, 0, 286, - 287, 288, 289, 290, 291, 0, 0, 278, 285, 268, - 258, 276, 0, 260, 279, 0, 0, 0, 0, 0, - 0, 265, 0, 0, 281, 257, 267, 76, 266, 51, - 73, 46, 0, 0, 0, 0, 0, 273, 0, 44, - 67, 526, 528, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 143, 0, 0, - 0, 0, 144, 0, 47, 48, 49, 146, 0, 0, - 0, 0, 0, 0, 147, 53, 52, 0, 0, 0, - 0, 0, 0, 55, 150, 0, 0, 56, 57, 0, - 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, - 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, - 0, 0, 0, 0, 151, 0, 152, 0, 0, 0, - 0, 0, 77, 71, 75, 72, 153, 80, 154, 81, - 155, 83, 156, 84, 157, 158, 0, 0, 65, 82, - 50, 0, 0, 0, 145, 0, 61, 0, 0, 0, - 0, 0, 0, 0, 159, 78, 45, 0, 76, 0, - 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, - 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, - 0, 0, 148, 0, 68, 0, 0, 0, 143, 0, - 0, 0, 0, 144, 0, 47, 48, 49, 146, 0, - 0, 0, 0, 0, 0, 147, 53, 52, 0, 0, - 0, 0, 0, 0, 55, 150, 0, 0, 56, 57, - 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, - 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, - 0, 0, 0, 0, 0, 151, 0, 152, 0, 0, - 0, 0, 0, 77, 71, 75, 72, 153, 80, 154, - 81, 155, 83, 156, 84, 157, 158, 0, 0, 65, - 82, 50, 0, 0, 0, 145, 0, 61, 0, 0, - 0, 0, 0, 0, 0, 159, 78, 45, 0, 76, - 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, - 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, - 0, 0, 149, 148, 0, 68, 0, 0, 0, 143, - 0, 0, 0, 0, 144, 0, 47, 48, 49, 146, - 0, 0, 0, 0, 0, 0, 147, 53, 52, 0, - 0, 0, 0, 0, 0, 55, 150, 0, 0, 56, - 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, - 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, - 70, 0, 0, 0, 0, 0, 151, 0, 152, 0, - 0, 0, 0, 0, 77, 71, 75, 72, 153, 80, - 154, 81, 155, 83, 156, 84, 157, 158, 0, 0, - 65, 82, 50, 0, 0, 0, 145, 0, 61, 0, - 0, 0, 0, 0, 0, 0, 159, 78, 45, 0, - 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, - 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, - 0, 0, 0, 222, 148, 0, 68, 0, 0, 0, - 143, 0, 0, 0, 0, 144, 0, 47, 48, 49, - 146, 0, 0, 0, 0, 0, 0, 147, 53, 52, - 0, 0, 0, 0, 0, 0, 55, 150, 0, 0, - 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, - 62, 63, 0, 0, 970, 0, 0, 0, 0, 69, - 0, 70, 0, 0, 0, 0, 0, 151, 0, 152, - 0, 0, 0, 0, 0, 971, 71, 75, 72, 153, - 80, 154, 81, 155, 83, 156, 84, 157, 158, 0, - 0, 65, 82, 50, 0, 0, 0, 145, 0, 61, - 0, 0, 0, 0, 0, 0, 0, 159, 78, 45, - 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, - 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, - 0, 0, 0, 0, 149, 148, 0, 68, 0, 0, - 0, +const short QmlJSGrammar::action_info[] = { + 174, 545, 238, 109, 109, 174, 238, 942, 551, 538, 911, 555, 238, 109, -124, 174, + 913, 500, -570, 563, 238, 109, 1082, 507, 943, 519, 535, 1081, 109, 825, 573, 507, + 532, 1087, 945, 532, 581, 585, 174, 585, 519, 484, 104, 585, 517, 591, 592, 325, + 325, 109, 513, 238, 238, 507, 109, 818, 603, 484, 605, 502, 642, 500, 238, 609, + 569, 644, 201, 317, 841, 484, 480, 109, 478, 486, 174, 238, 316, 407, 544, 959, + -531, 325, 630, 454, 325, 238, 454, 941, 935, 471, 418, 175, 454, 930, -130, 209, + 310, 671, 206, 109, 918, -572, 644, 669, 174, 922, 238, 211, 209, 944, 462, 922, + 314, 454, 655, 211, 460, 800, 666, 325, 454, 662, 969, 802, 669, 671, 1032, 924, + 642, 800, 517, -105, 238, -191, -193, 676, 199, 325, 679, 447, 922, 519, 682, 519, + 1016, 616, 532, 238, 938, 696, 532, 778, 238, 612, 238, 109, 698, 174, 238, 500, + 704, 174, 109, 484, 366, 993, 201, 109, 109, 325, 215, 174, 109, 225, 351, 931, + 636, 862, 228, 713, 974, 354, 972, 109, 418, 238, 987, 325, 325, 507, 325, 199, + 936, 800, 507, 977, 577, 425, 718, 922, 402, 353, 423, 328, 972, 374, 476, 368, + 854, 458, 973, 174, 175, 755, 215, 740, 420, 980, 972, 428, -195, 0, 360, 754, + 851, 996, 734, 218, 989, 730, 864, 758, 215, 215, 1024, 939, 320, 367, 215, 203, + 996, 401, 215, 331, 921, 216, 214, 216, 214, 216, 214, 750, 96, 321, 215, 852, + 535, 216, 214, 216, 214, 216, 214, 922, 97, 741, 663, 756, 404, 298, 837, 216, + 214, 167, 868, 997, 695, 500, 731, 865, 204, 216, 214, 1025, 940, 215, 431, 438, + 660, 299, 1047, 215, 653, 745, 216, 214, 216, 214, 216, 214, 1052, 1053, 215, 602, + 215, 429, 90, 664, 618, 215, 366, 216, 214, 216, 214, 588, -130, 603, 91, 838, + 216, 214, 216, 214, 215, 90, 90, 1052, 1053, 90, -195, 216, 214, 216, 214, 302, + 992, 91, 91, 216, 214, 91, 216, 214, 215, 614, 192, 192, 193, 193, 961, 192, + 297, 193, 293, 1039, 44, 44, -80, 194, 194, 298, 589, 579, 194, 496, 225, 192, + -574, 193, 985, 418, 970, 418, 406, -238, 216, 214, 571, -575, 194, 299, 922, 680, + 454, 216, 214, 970, 99, 215, -414, 970, 216, 214, -195, -414, 192, 1026, 193, 216, + 214, -239, 0, 0, 325, -75, 1027, -80, 99, 194, 325, 99, 1065, 247, 1002, 0, + 0, 0, 1028, 965, -80, 965, 882, 247, -195, 0, 882, 882, 0, 0, -238, 0, + 964, 248, 964, 100, 965, 595, 215, 1084, 965, 101, -414, 248, 216, 214, 815, 496, + 225, 964, 0, 0, 0, 964, 0, 100, -239, 0, 100, 1077, 0, 101, 0, 0, + 101, -75, 0, -75, 216, 214, 216, 214, 216, 214, 788, 767, 768, 767, 768, 1040, + 0, 0, 904, 789, 905, 788, 904, 904, 905, 905, 185, 186, 0, 0, 789, 646, + 249, 0, 0, 188, 0, 247, 189, -75, 190, 0, 249, 0, 64, 79, 0, 0, + 247, 414, 415, 647, 0, 648, 64, 79, 906, 248, 247, 673, 906, 906, 1076, 0, + 495, 185, 186, 0, 248, 0, 305, 0, 0, 0, 188, 0, 247, 189, 248, 190, + 305, 6, 5, 4, 1, 3, 2, 247, -74, 0, 0, 185, 186, 0, 0, -98, + 248, 0, 673, 187, 188, 178, 179, 189, 0, 190, -98, 248, 950, 673, 795, 0, + 0, 0, 649, 0, 0, 0, 0, 184, 674, 0, 496, 225, 0, 0, 64, 79, + 0, 180, 181, 249, 64, 79, 796, 950, 0, 0, 0, 0, 0, 249, 0, 64, + 79, 0, 0, 0, -74, 957, -74, 0, 972, 64, 79, 0, 0, 0, 184, 674, + 950, 0, 0, 0, 950, 797, 0, 950, 0, 0, 674, 64, 79, 0, 0, 953, + 957, 954, 972, 156, 0, 0, 64, 79, 184, 948, -74, 947, 414, 415, 0, 0, + 0, 950, 0, 0, 951, 949, 956, 0, 953, 957, 954, 495, 953, 957, 954, 953, + 957, 954, 0, 0, 948, 955, 947, 0, 0, 0, 185, 186, 0, 0, 0, 951, + 949, 956, 187, 188, 0, 0, 189, 0, 190, 953, 957, 954, 952, 948, 955, 947, + 0, 948, 955, 947, 948, 955, 947, 55, 951, 949, 956, 0, 951, 949, 956, 951, + 949, 956, 0, 0, 0, 952, 0, 55, 0, 952, 0, 0, 952, 0, 948, 955, + 947, 0, 0, 0, 0, 0, 0, 55, 0, 951, 949, 956, 0, 0, 0, 71, + 75, 72, 0, 0, 0, 0, 952, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 75, 72, 0, 0, 0, 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, 71, + 75, 72, 76, 0, 51, 73, 46, 0, 0, 972, 55, 0, 0, 0, 44, 67, + 54, 74, 76, 0, 51, 73, 46, 0, 950, 0, 0, 0, 68, 963, 44, 67, + 54, 74, 76, 0, 51, 73, 46, 0, 0, 0, 0, 0, 68, 0, 44, 67, + 54, 74, 71, 75, 72, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, + 953, 957, 954, 0, 0, 953, 957, 954, 0, 0, 0, 0, 0, 0, 965, 0, + 0, 0, 0, 0, 0, 76, 963, 51, 73, 46, 0, 964, 0, 0, 0, 0, + 0, 44, 67, 54, 74, 948, 955, 947, 55, 0, 948, 955, 947, 0, 0, 68, + 951, 949, 956, 0, 0, 951, 949, 956, 0, 0, 0, 0, 0, 952, 953, 957, + 954, 55, 952, 0, 0, 0, 0, 965, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 75, 72, 0, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 55, 0, 0, 948, 955, 947, 0, 695, 0, 71, 75, 72, 0, 0, 951, 949, + 956, 0, 0, 76, 0, 51, 73, 46, 0, 0, 0, 952, 0, 0, 0, 44, + 67, 54, 74, 0, 0, 0, 0, 0, 71, 75, 72, 55, 76, 68, 51, 73, + 46, 0, 500, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, + 0, 0, 0, 0, 55, 0, 68, 0, 236, 237, 55, 76, 0, 51, 73, 46, + 0, 0, 0, 71, 75, 72, 0, 44, 67, 54, 74, 0, 0, 0, 0, 55, + 0, 0, 0, 0, 0, 68, 500, 0, 0, 0, 0, 0, 71, 75, 72, 0, + 0, 0, 71, 75, 72, 0, 76, 0, 51, 73, 46, 0, 0, 0, 0, 0, + 0, 0, 44, 67, 54, 74, 0, 71, 75, 72, 0, 0, 0, 0, 0, 76, + 68, 51, 73, 46, 517, 76, 0, 51, 73, 46, 0, 44, 67, 54, 74, 0, + 0, 44, 67, 54, 74, 0, 377, 0, 0, 68, 76, 0, 51, 73, 46, 68, + 378, 0, 0, 55, 435, 0, 44, 67, 54, 74, 816, 0, 0, 0, 380, 0, + 381, 0, 0, 0, 68, 0, 377, 0, 0, 0, 0, 382, 0, 383, 96, 0, + 378, 0, 0, 0, 379, 0, 384, 0, 0, 385, 97, 71, 75, 72, 380, 386, + 381, 0, 0, 0, 0, 0, 388, 387, 0, 0, 0, 382, 0, 383, 96, 0, + 0, 55, 0, 0, 0, 0, 384, 389, 0, 385, 97, 0, 0, 0, 76, 386, + 51, 73, 46, 55, 0, 0, 388, 387, 0, 0, 44, 67, 54, 74, 0, 0, + 0, 0, 216, 214, 0, 0, 0, 389, 68, 71, 75, 72, 55, 0, 0, 0, + 236, 237, 0, 0, 216, 214, 0, 0, 0, 0, 0, 71, 75, 72, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 51, 73, + 46, 0, 0, 0, 71, 75, 72, 0, 44, 67, 54, 74, 0, 0, 76, 55, + 51, 73, 46, 236, 237, 0, 68, 0, 0, 0, 44, 67, 54, 74, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 76, 68, 51, 73, 46, 0, 0, 0, 0, + 0, 0, 0, 44, 67, 54, 74, 71, 75, 72, 0, 0, 0, 0, 0, 0, + 0, 68, 0, 0, 0, 55, 0, 0, 0, 236, 237, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 235, 0, 0, 0, 0, 76, 0, 51, 73, 46, 0, + 0, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 71, 75, 72, + 0, 0, 0, 0, 68, 0, 0, 0, 55, 0, 0, 0, 236, 237, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 55, 51, 73, 46, 851, 0, 0, 0, 0, 0, 0, 44, 67, 54, 74, + 71, 75, 72, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 55, 0, + 0, 0, 236, 237, 852, 0, 0, 0, 802, 71, 75, 72, 0, 0, 235, 0, + 0, 0, 0, 76, 0, 51, 73, 46, 0, 0, 0, 0, 0, 0, 0, 44, + 67, 54, 74, 0, 0, 0, 71, 75, 72, 0, 0, 0, 76, 68, 51, 73, + 46, 0, 0, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, + 0, 0, 0, 0, 235, 0, 68, 0, 0, 76, 0, 51, 73, 46, 0, 0, + 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 68, 0, 0, 0, 55, 0, 0, 0, 236, 237, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 75, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, + 0, 0, 76, 0, 51, 73, 46, 0, 0, 0, 0, 0, 0, 0, 44, 67, + 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, + 377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 378, 0, 0, 0, 435, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 381, 0, 0, 428, 0, 0, + 0, 0, 0, 0, 0, 382, 0, 383, 96, 0, 0, 0, 0, 0, 0, 0, + 384, 0, 0, 385, 97, 0, 0, 0, 0, 386, 0, 0, 0, 0, 0, 0, + 388, 387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, + 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, + 0, 0, 0, 0, 62, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, + 72, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, + 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 78, 45, + 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, + 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 48, + 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, + 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 0, 0, 0, 243, + 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, + 61, 0, 0, 0, 0, 0, 0, 0, 0, 78, 45, 0, 76, 0, 51, 73, + 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 48, 49, 0, 304, 0, 0, + 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, + 56, 57, 0, 58, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 66, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, + 0, 0, 0, 0, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, + 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 68, 0, 0, 0, 48, 49, 0, 304, 0, 0, 0, 0, 0, 0, 53, + 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, + 0, 0, 0, 0, 0, 243, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, + 75, 72, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, + 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 78, + 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, + 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, + 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, + 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 0, 0, 0, + 243, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, + 244, 61, 0, 0, 0, 0, 0, 0, 0, 0, 78, 45, 0, 76, 0, 51, + 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, + 0, 56, 57, 0, 58, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65, 82, 50, 0, 0, 880, 0, 0, 61, 0, 0, 0, + 0, 0, 0, 0, 0, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, + 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 0, 0, 0, 882, 0, 48, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 885, 884, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, + 0, 58, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 66, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 886, 889, 887, 0, 80, 0, 0, 0, 0, 156, 0, 0, 0, 0, + 0, 65, 82, 50, 0, 0, 880, 0, 0, 61, 0, 0, 0, 0, 0, 883, + 0, 0, 78, 45, 0, 76, 0, 51, 888, 881, 64, 79, 0, 0, 0, 0, + 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, + 0, 0, 0, 882, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 885, + 884, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, + 0, 0, 0, 0, 0, 243, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, + 0, 0, 928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 886, + 889, 887, 0, 80, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 65, 82, + 50, 0, 0, 880, 0, 0, 61, 0, 0, 0, 0, 0, 883, 0, 0, 78, + 45, 0, 76, 0, 51, 888, 881, 64, 79, 0, 0, 0, 0, 0, 44, 67, + 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, + 882, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 885, 884, 0, 0, + 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 0, + 0, 0, 243, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 925, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 886, 889, 887, 0, + 80, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 65, 82, 50, 0, 0, + 880, 0, 0, 61, 0, 0, 0, 0, 0, 883, 0, 0, 78, 45, 0, 76, + 0, 51, 888, 881, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 47, 48, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, + 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, + 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, + 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 78, 45, 0, 76, 0, 51, 73, 46, + 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, + 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, + 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, + 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, + 0, 0, 0, 85, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, + 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, + 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, + 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, + 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, + 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 159, + 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, + 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, + 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, + 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, + 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, + 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, + 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 235, 159, 78, 45, 0, 76, + 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 47, 48, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, + 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, + 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, + 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, + 0, 0, 0, 0, 0, 0, 309, 159, 78, 45, 0, 76, 0, 51, 73, 46, + 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, + 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, + 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, + 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, + 0, 0, 312, 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, + 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, + 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, + 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 776, 0, 0, 0, 77, + 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, + 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 85, + 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, + 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, + 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, + 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, + 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, + 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, + 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 159, 78, 45, 0, 76, + 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, + 0, 0, 0, 0, 0, 0, 0, 170, 0, 68, 0, 0, 0, 366, 0, 0, + 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, + 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, + 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, + 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, + 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 159, 78, 45, 0, 76, 0, + 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, + 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, + 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, + 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 621, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, + 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, + 0, 0, 0, 0, 0, 0, 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, + 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, + 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, + 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, + 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, + 0, 0, 85, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, + 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, + 68, 0, 0, 0, 374, 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, + 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, + 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, + 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, + 0, 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, + 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, + 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, + 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, + 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, + 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, + 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 159, 78, 45, + 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, + 74, 0, 0, 0, 0, 0, 0, 0, 805, 0, 0, 68, 0, 0, 0, 47, + 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, + 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, + 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, 746, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, + 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, + 0, 61, 0, 0, 0, 0, 0, 0, 745, 159, 78, 45, 0, 76, 0, 51, + 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, 0, + 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, + 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, + 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 753, 0, + 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, + 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, + 0, 0, 0, 0, 235, 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, + 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, + 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, + 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, 156, 84, 0, 0, 0, + 0, 65, 82, 50, 414, 415, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, + 0, 85, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, + 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, + 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, + 0, 0, 0, 0, 0, 0, 55, 150, 0, 0, 56, 57, 0, 58, 0, 0, + 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, + 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 77, 71, 75, + 72, 153, 80, 0, 81, 155, 83, 0, 84, 0, 158, 0, 0, 65, 82, 50, + 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 159, 78, 45, + 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, + 74, 0, 0, 0, 0, 0, 0, 0, 1011, 1010, 0, 68, 0, 0, 0, 47, + 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, + 0, 0, 55, 150, 0, 0, 56, 1044, 0, 58, 0, 0, 0, 59, 0, 60, + 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, + 0, 0, 0, 152, 0, 0, 0, 0, 0, 77, 71, 75, 72, 153, 80, 0, + 81, 155, 83, 0, 84, 0, 158, 0, 0, 65, 82, 50, 0, 0, 0, 0, + 0, 61, 0, 0, 0, 0, 0, 0, 0, 159, 78, 45, 0, 76, 0, 51, + 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, + 0, 0, 0, 0, 1011, 1010, 0, 68, 0, 0, 0, 254, 255, 256, 0, 0, + 259, 261, 262, 0, 0, 263, 0, 264, 0, 0, 0, 269, 270, 0, 271, 0, + 0, 0, 0, 0, 0, 55, 272, 274, 275, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 71, 75, 72, + 282, 283, 284, 0, 286, 287, 288, 289, 290, 291, 0, 0, 278, 285, 268, 258, + 276, 0, 260, 279, 0, 0, 0, 0, 0, 0, 265, 0, 0, 281, 257, 267, + 76, 266, 51, 73, 46, 0, 0, 0, 0, 0, 273, 0, 44, 67, 54, 74, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 254, 255, + 256, 0, 0, 259, 261, 262, 0, 0, 263, 0, 264, 0, 0, 0, 269, 270, + 0, 271, 0, 0, 0, 0, 0, 0, 55, 272, 274, 275, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 836, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 75, 72, 282, 283, 284, 0, 286, 287, 288, 289, 290, 291, 0, 0, 278, + 285, 268, 258, 276, 0, 260, 279, 0, 0, 0, 0, 0, 0, 265, 0, 0, + 281, 257, 267, 76, 266, 51, 73, 46, 0, 0, 0, 0, 0, 273, 0, 44, + 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, + 0, 254, 255, 256, 0, 0, 259, 261, 262, 0, 0, 263, 0, 264, 0, 0, + 0, 269, 270, 0, 271, 0, 0, 0, 0, 0, 0, 55, 272, 274, 275, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 867, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 71, 75, 72, 282, 283, 284, 0, 286, 287, 288, 289, 290, 291, + 0, 0, 278, 285, 268, 258, 276, 0, 260, 279, 0, 0, 0, 0, 0, 0, + 265, 0, 0, 281, 257, 267, 76, 266, 51, 73, 46, 0, 0, 0, 0, 0, + 273, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 0, 0, 0, 254, 255, 256, 0, 0, 259, 261, 262, 0, 0, 263, 0, + 264, 0, 0, 0, 269, 270, 0, 271, 0, 0, 0, 0, 0, 0, 55, 272, + 274, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 840, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 71, 75, 72, 282, 283, 284, 0, 286, 287, 288, + 289, 290, 291, 0, 0, 278, 285, 268, 258, 276, 0, 260, 279, 0, 0, 0, + 0, 0, 0, 265, 0, 0, 281, 257, 267, 76, 266, 51, 73, 46, 0, 0, + 0, 0, 0, 273, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 68, 0, 0, 0, 254, 255, 256, 0, 0, 259, 261, 262, 0, + 0, 263, 0, 264, 0, 0, 0, 269, 270, 0, 271, 0, 0, 0, 0, 0, + 0, 55, 272, 274, 275, 0, 295, 0, 0, 0, 0, 0, 0, 0, 0, 277, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 71, 75, 72, 282, 283, 284, 0, + 286, 287, 288, 289, 290, 291, 0, 0, 278, 285, 268, 258, 276, 0, 260, 279, + 0, 0, 0, 0, 0, 0, 265, 0, 0, 281, 257, 267, 76, 266, 51, 73, + 46, 0, 0, 0, 0, 0, 273, 0, 44, 67, 54, 74, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 254, 255, 256, 0, 0, 259, + 261, 262, 0, 0, 263, 0, 264, 0, 0, 0, 269, 270, 0, 271, 0, 0, + 0, 0, 0, 0, 55, 272, 274, 275, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 861, + 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 71, 75, 72, 282, + 283, 284, 0, 286, 287, 288, 289, 290, 291, 0, 0, 278, 285, 268, 258, 276, + 0, 260, 279, 0, 0, 0, 0, 0, 0, 265, 0, 0, 281, 257, 267, 76, + 266, 51, 73, 46, 0, 0, 0, 0, 0, 273, 0, 44, 67, 54, 74, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 254, 255, 256, + 0, 0, 259, 261, 262, 0, 0, 263, 0, 264, 0, 0, 0, 269, 270, 0, + 271, 0, 0, 0, 0, 0, 0, 55, 272, 274, 275, 0, 295, 0, 677, 0, + 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 75, 72, 282, 283, 284, 0, 286, 287, 288, 289, 290, 291, 0, 0, 278, 285, + 268, 258, 276, 0, 260, 279, 0, 0, 0, 0, 0, 0, 265, 0, 0, 281, + 257, 267, 76, 266, 51, 73, 46, 0, 0, 0, 0, 0, 273, 0, 44, 67, + 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, + 254, 255, 256, 0, 0, 259, 261, 262, 0, 0, 263, 0, 264, 0, 0, 0, + 269, 270, 0, 271, 0, 0, 0, 0, 0, 0, 55, 272, 274, 275, 0, 657, + 0, 658, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 71, 75, 72, 282, 283, 284, 0, 286, 287, 288, 289, 290, 291, 0, + 0, 278, 285, 268, 258, 276, 0, 260, 279, 0, 0, 0, 0, 0, 0, 265, + 0, 0, 281, 257, 267, 76, 266, 51, 73, 46, 0, 0, 0, 0, 0, 273, + 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, + 0, 0, 0, 254, 255, 256, 0, 0, 259, 261, 262, 0, 0, 263, 0, 264, + 0, 0, 0, 269, 270, 0, 271, 0, 0, 0, 0, 0, 0, 55, 272, 274, + 275, 0, 347, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 348, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, + 0, 0, 0, 0, 349, 71, 75, 72, 282, 283, 284, 0, 286, 287, 288, 289, + 290, 291, 0, 0, 278, 285, 268, 258, 276, 0, 260, 279, 0, 0, 0, 0, + 0, 0, 265, 0, 0, 281, 257, 267, 76, 266, 51, 73, 46, 0, 0, 0, + 0, 0, 273, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 0, 0, 0, 254, 255, 256, 0, 0, 259, 261, 262, 0, 0, + 263, 0, 264, 0, 0, 0, 269, 270, 0, 271, 0, 0, 0, 0, 0, 0, + 55, 272, 274, 275, 0, 347, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, + 0, 0, 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 529, 0, 0, 0, 349, 71, 75, 72, 282, 283, 284, 0, 286, + 287, 288, 289, 290, 291, 0, 0, 278, 285, 268, 258, 276, 0, 260, 279, 0, + 0, 0, 0, 0, 0, 265, 0, 0, 281, 257, 267, 76, 266, 51, 73, 46, + 0, 0, 0, 0, 0, 273, 0, 44, 67, 526, 528, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 68, 0, 0, 0, 254, 255, 256, 0, 0, 259, 261, + 262, 0, 0, 263, 0, 264, 0, 0, 0, 269, 270, 0, 271, 0, 0, 0, + 0, 0, 0, 55, 272, 274, 275, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 0, 277, 0, 0, 0, 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 527, 0, 529, 0, 0, 0, 349, 71, 75, 72, 282, 283, + 284, 0, 286, 287, 288, 289, 290, 291, 0, 0, 278, 285, 268, 258, 276, 0, + 260, 279, 0, 0, 0, 0, 0, 0, 265, 0, 0, 281, 257, 267, 530, 266, + 51, 73, 46, 0, 0, 0, 0, 0, 273, 0, 44, 67, 526, 528, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 254, 255, 256, 0, + 0, 259, 261, 262, 0, 0, 263, 0, 264, 0, 0, 0, 269, 270, 0, 271, + 0, 0, 0, 0, 0, 0, 55, 272, 274, 275, 0, 347, 0, 0, 0, 0, + 0, 0, 0, 0, 277, 0, 0, 0, 348, 0, 0, 0, 0, 0, 0, 0, + 0, 728, 0, 0, 0, 280, 0, 0, 0, 529, 0, 0, 0, 349, 71, 75, + 72, 282, 283, 284, 0, 286, 287, 288, 289, 290, 291, 0, 0, 278, 285, 268, + 258, 276, 0, 260, 279, 0, 0, 0, 0, 0, 0, 265, 0, 0, 281, 257, + 267, 76, 266, 51, 73, 46, 0, 0, 0, 0, 0, 273, 0, 44, 67, 526, + 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 254, + 255, 256, 0, 0, 259, 261, 262, 0, 0, 263, 0, 264, 0, 0, 0, 269, + 270, 0, 271, 0, 0, 0, 0, 0, 0, 55, 272, 274, 275, 0, 347, 0, + 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 348, 0, 0, 0, 0, + 0, 0, 0, 0, 733, 0, 0, 0, 280, 0, 0, 0, 529, 0, 0, 0, + 349, 71, 75, 72, 282, 283, 284, 0, 286, 287, 288, 289, 290, 291, 0, 0, + 278, 285, 268, 258, 276, 0, 260, 279, 0, 0, 0, 0, 0, 0, 265, 0, + 0, 281, 257, 267, 76, 266, 51, 73, 46, 0, 0, 0, 0, 0, 273, 0, + 44, 67, 526, 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, + 0, 0, 143, 0, 0, 0, 0, 144, 0, 47, 48, 49, 146, 0, 0, 0, + 0, 0, 0, 147, 53, 52, 0, 0, 0, 0, 0, 0, 55, 150, 0, 0, + 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, + 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 151, 0, 152, 0, 0, + 0, 0, 0, 77, 71, 75, 72, 153, 80, 154, 81, 155, 83, 156, 84, 157, + 158, 0, 0, 65, 82, 50, 0, 0, 0, 145, 0, 61, 0, 0, 0, 0, + 0, 0, 0, 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, + 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 148, + 0, 68, 0, 0, 0, 143, 0, 0, 0, 0, 144, 0, 47, 48, 49, 146, + 0, 0, 0, 0, 0, 0, 147, 53, 52, 0, 0, 0, 0, 0, 0, 55, + 150, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, + 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 151, 0, + 152, 0, 0, 0, 0, 0, 77, 71, 75, 72, 153, 80, 154, 81, 155, 83, + 156, 84, 157, 158, 0, 0, 65, 82, 50, 0, 0, 0, 145, 0, 61, 0, + 0, 0, 0, 0, 0, 0, 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, + 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, + 0, 149, 148, 0, 68, 0, 0, 0, 143, 0, 0, 0, 0, 144, 0, 47, + 48, 49, 146, 0, 0, 0, 0, 0, 0, 147, 53, 52, 0, 0, 0, 0, + 0, 0, 55, 150, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, + 62, 63, 0, 0, 1019, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, + 0, 151, 0, 152, 0, 0, 0, 0, 0, 1020, 71, 75, 72, 153, 80, 154, + 81, 155, 83, 156, 84, 157, 158, 0, 0, 65, 82, 50, 0, 0, 0, 145, + 0, 61, 0, 0, 0, 0, 0, 0, 0, 159, 78, 45, 0, 76, 0, 51, + 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, + 0, 0, 0, 0, 149, 148, 0, 68, 0, 0, 0, 143, 0, 0, 0, 0, + 144, 0, 47, 48, 49, 146, 0, 0, 0, 0, 0, 0, 147, 53, 52, 0, + 0, 0, 0, 0, 0, 55, 150, 0, 0, 56, 57, 0, 58, 0, 0, 0, + 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, + 0, 0, 0, 0, 151, 0, 152, 0, 0, 0, 0, 0, 77, 71, 75, 72, + 153, 80, 154, 81, 155, 83, 156, 84, 157, 158, 0, 0, 65, 82, 50, 0, + 0, 0, 145, 0, 61, 0, 0, 0, 0, 0, 0, 0, 159, 78, 45, 0, + 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, + 0, 0, 0, 0, 0, 0, 0, 222, 148, 0, 68, 0, 0, 0, - 729, 721, 720, 719, 716, 715, 714, 1112, 735, 1107, - 711, 708, 748, 707, 742, 706, 1110, 705, 702, 650, - 701, 700, 699, 1106, 638, 250, 691, 688, 640, 1094, - 250, 686, 689, 685, 1102, 250, 1092, 1080, 1066, 1078, - 1063, 1064, 111, 665, 771, 132, 659, 1058, 1067, 652, - 213, 1050, 376, 398, 790, 791, 422, 597, 640, 620, - 638, 599, 1045, 250, 1038, 132, 952, 628, 629, 627, - 1035, 843, 632, 622, 801, 617, 1033, 804, 613, 1036, - 610, 168, 611, 604, 169, 171, 598, 172, 596, 593, - 173, 590, 819, 820, 822, 821, 1031, 586, 594, 826, - 827, 1024, 578, 830, 576, 828, 832, 1023, 250, 1020, - 565, 564, 567, 1017, 570, 566, 952, 559, 557, 561, - 556, 549, 1009, 548, 1007, 853, 546, 547, 1018, 539, - 540, 542, 541, 205, 207, 132, 992, 365, 217, 252, - 327, 250, 323, 984, 981, 292, 516, 296, 457, 512, - 1113, 503, 499, 301, 308, 250, 980, 1005, 497, 985, - 132, 966, 332, 315, 333, 987, 311, 485, 313, 326, - 334, 475, 468, 470, 956, 335, 907, 904, 913, 905, - 451, 906, 359, 457, 445, 390, 437, 456, 350, 453, - 391, 357, 358, 558, 394, 397, 952, 132, 430, 933, - 403, 405, 940, 936, 953, 252, 308, 434, 619, 615, - 422, 422, 989, 990, 426, 432, 873, 634, 439, 634, - 227, 226, 370, 743, 252, 744, 574, 572, 252, 678, - 422, 491, 252, 463, 1046, 1047, 481, 422, 399, 399, - 835, 422, 422, 400, 399, 399, 399, 396, 399, 227, - 683, 227, 694, 227, 709, 308, 399, 399, 969, 227, - 498, 736, 738, 399, 1043, 1044, 399, 227, 709, 1052, - 634, 752, 751, 399, 227, 694, 421, 424, 681, 227, - 515, 393, 634, 308, 252, 252, 227, 900, 221, 395, - 252, 224, 1056, 252, 252, 0, 459, 252, 1096, 1095, - 252, 252, 252, 461, 1060, 252, 654, 477, 479, 227, - 226, 252, 1072, 0, 634, 1073, 0, 308, 219, 842, - 300, 252, 0, 392, 0, 369, 93, 1061, 294, 251, - 0, 223, 651, 534, 308, 656, 543, 294, 227, 230, - 661, 92, 550, 0, 787, 872, 855, 856, 227, 844, - 227, 230, 560, 343, 844, 227, 336, 675, 227, 230, - 227, 230, 343, 338, 227, 844, 227, 441, 227, 230, - 223, 982, 723, 252, 568, 29, 831, 927, 928, 0, - 690, 929, 42, 485, 687, 0, 372, 757, 857, 0, - 217, 227, 230, 346, 227, 230, 0, 635, 227, 230, - 227, 355, 0, 727, 724, 227, 448, 436, 835, 635, - 227, 230, 227, 230, 227, 498, 227, 230, 227, 844, - 227, 606, 227, 230, 227, 464, 227, 623, 723, 227, - 623, 29, 419, 491, 0, 798, 93, 0, 42, 93, - 0, 787, 93, 440, 227, 230, 0, 533, 0, 747, - 0, 92, 343, 338, 92, 732, 29, 92, 0, 727, - 724, 372, 93, 42, 93, 455, 0, 29, 227, 230, - 11, 337, 0, 29, 42, 777, 93, 92, 0, 92, - 42, 552, 443, 346, 94, 330, 234, 94, 770, 29, - 94, 92, 0, 93, 641, 176, 42, 0, 182, 29, - 562, 792, 227, 472, 501, 93, 42, 93, 92, 0, - 94, 0, 94, 667, 766, 779, 356, 191, 93, 863, - 92, 449, 92, 93, 94, 106, 11, 902, 793, 0, - 703, 198, 0, 92, 697, 869, 607, 29, 92, 93, - 465, 94, 624, 631, 42, 624, 824, 195, 817, 29, - 839, 11, 717, 94, 92, 94, 42, 0, 712, 823, - 93, 196, 11, 227, 508, 93, 94, 371, 11, 303, - 200, 94, 223, 352, 0, 92, 775, 197, 227, 508, - 92, 202, 1091, 93, 11, 0, 93, 94, 93, 846, - 29, 329, 227, 515, 11, 343, 844, 42, 92, 93, - 29, 92, 0, 92, 93, 0, 761, 42, 94, 93, - 208, 102, 93, 94, 92, 474, 29, 103, 473, 92, - 0, 0, 93, 42, 92, 812, 0, 92, 0, 241, - 857, 94, 11, 0, 94, 95, 94, 92, 0, 0, - 0, 0, 246, 42, 11, 0, 93, 94, 637, 93, - 242, 0, 94, 693, 765, 210, 93, 0, 1021, 93, - 94, 92, 0, 242, 92, 93, 212, 42, 1013, 93, - 1076, 92, 0, 0, 92, 511, 0, 93, 672, 510, - 92, 93, 0, 0, 92, 11, 0, 242, 241, 0, - 514, 762, 92, 0, 510, 11, 92, 94, 693, 764, - 0, 1079, 93, 0, 94, 693, 763, 94, 693, 773, - 242, 11, 0, 94, 693, 772, 0, 92, 93, 736, - 738, 0, 806, 0, 809, 94, 693, 760, 93, 94, - 693, 759, 93, 92, 241, 408, 227, 230, 0, 241, - 93, 0, 829, 92, 922, 93, 0, 92, 93, 1013, - 94, 693, 774, 372, 373, 92, 0, 93, 0, 0, - 92, 0, 0, 92, 808, 0, 94, 0, 866, 242, - 0, 1027, 92, 42, 93, 1029, 1028, 1026, 811, 93, - 94, 0, 0, 0, 0, 0, 670, 42, 94, 92, - 0, 241, 0, 94, 92, 42, 94, 639, 241, 1068, - 42, 1101, 668, 42, 0, 94, 693, 692, 241, 643, - 645, 246, 0, 916, 241, 242, 0, 1098, 1099, 959, - 242, 958, 960, 965, 961, 964, 241, 897, 0, 919, - 241, 93, 0, 0, 0, 0, 0, 411, 93, 897, - 0, 322, 241, 246, 42, 0, 92, 0, 93, 0, - 0, 0, 899, 92, 93, 897, 0, 0, 0, 371, - 0, 0, 0, 92, 899, 0, 93, 0, 0, 92, - 93, 0, 242, 318, 0, 0, 0, 0, 0, 242, - 899, 92, 93, 0, 0, 92, 241, 0, 0, 242, - 0, 1021, 412, 416, 1068, 242, 0, 92, 0, 897, - 1069, 0, 0, 0, 1022, 0, 1039, 242, 0, 0, - 959, 242, 958, 960, 965, 961, 964, 0, 0, 1075, - 0, 1039, 0, 242, 899, 959, 93, 958, 960, 965, - 961, 964, 11, 0, 1022, 0, 0, 0, 0, 0, - 959, 92, 958, 960, 965, 961, 964, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 241, 0, 0, 0, 0, 0, 242, 0, 0, - 0, 1016, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; + 715, 714, 719, 720, 1085, 721, 711, 729, 708, 707, 706, 705, 1080, 702, 701, 700, + 699, 1083, 735, 650, 691, 1079, 748, 688, 638, 640, 742, 250, 686, 1067, 689, 685, + 1066, 716, 1064, 250, 1075, 1062, 250, 1050, 1048, 665, 1036, 659, 1033, 111, 250, 652, + 132, 376, 1030, 1031, 1029, 640, 398, 771, 422, 638, 628, 132, 132, 599, 597, 629, + 790, 1086, 627, 617, 622, 1035, 620, 613, 632, 1034, 604, 1015, 598, 610, 250, 611, + 596, 168, 843, 593, 590, 801, 594, 804, 586, 578, 169, 576, 171, 1038, 1003, 567, + 566, 570, 172, 565, 1001, 561, 820, 173, 821, 999, 828, 564, 558, 819, 822, 559, + 826, 991, 827, 990, 557, 556, 988, 547, 549, 546, 548, 1000, 830, 542, 541, 832, + 540, 539, 205, 981, 978, 979, 207, 217, 971, 982, 132, 516, 252, 503, 853, 960, + 327, 365, 457, 512, 499, 250, 292, 497, 485, 308, 323, 907, 908, 296, 250, 301, + 909, 958, 470, 475, 470, 468, 315, 332, 311, 313, 326, 334, 333, 394, 451, 335, + 445, 923, 359, 397, 132, 917, 916, 405, 432, 873, 437, 390, 914, 434, 456, 350, + 457, 453, 391, 430, 252, 403, 634, 426, 357, 634, 422, 422, 358, 915, 252, 439, + 422, 743, 370, 744, 227, 683, 399, 399, 227, 694, 227, 709, 308, 308, 736, 738, + 252, 752, 751, 1069, 1068, 399, 1041, 308, 463, 1042, 227, 709, 422, 399, 308, 227, + 694, 252, 308, 681, 678, 252, 227, 910, 422, 422, 634, 481, 634, 252, 675, 227, + 498, 252, 393, 294, 252, 661, 399, 396, 400, 654, 1018, 491, 421, 424, 227, 515, + 252, 962, 459, 619, 656, 224, 574, 0, 651, 399, 227, 226, 227, 226, 572, 252, + 300, 221, 791, 0, 294, 252, 399, 251, 968, 855, 856, 975, 252, 252, 461, 252, + 392, 399, 252, 835, 399, 395, 634, 227, 230, 369, 477, 479, 399, 223, 252, 219, + 227, 230, 976, 29, 227, 230, 227, 230, 252, 787, 42, 872, 0, 534, 543, 842, + 0, 550, 227, 498, 0, 227, 441, 227, 464, 0, 227, 230, 690, 560, 343, 844, + 227, 230, 227, 230, 227, 230, 687, 723, 227, 448, 93, 835, 227, 355, 227, 230, + 372, 757, 227, 230, 217, 227, 515, 227, 844, 92, 227, 844, 491, 635, 798, 635, + 0, 857, 227, 230, 227, 230, 727, 724, 343, 338, 93, 485, 227, 336, 227, 606, + 227, 844, 227, 623, 227, 508, 223, 93, 303, 92, 568, 227, 623, 93, 0, 777, + 93, 93, 11, 343, 844, 0, 92, 346, 770, 0, 227, 508, 92, 0, 0, 92, + 92, 93, 93, 0, 93, 0, 93, 29, 0, 787, 94, 0, 533, 831, 42, 0, + 92, 92, 0, 92, 93, 92, 857, 94, 817, 443, 779, 465, 712, 94, 717, 210, + 94, 94, 0, 92, 0, 552, 766, 197, 723, 227, 472, 793, 449, 0, 200, 202, + 356, 94, 94, 823, 94, 0, 94, 0, 697, 641, 703, 0, 912, 242, 0, 0, + 93, 176, 0, 732, 212, 792, 824, 727, 724, 839, 93, 208, 106, 0, 562, 92, + 337, 93, 607, 615, 514, 0, 624, 223, 510, 92, 234, 829, 501, 631, 93, 624, + 92, 1061, 29, 775, 29, 93, 11, 227, 230, 42, 511, 42, 812, 92, 510, 93, + 94, 399, 869, 0, 92, 863, 196, 455, 330, 0, 94, 29, 419, 93, 92, 0, + 195, 94, 42, 93, 761, 0, 747, 0, 198, 436, 440, 846, 92, 93, 94, 29, + 29, 102, 92, 667, 29, 94, 42, 42, 0, 103, 474, 42, 92, 473, 29, 94, + 866, 29, 29, 95, 0, 42, 343, 338, 42, 42, 241, 29, 0, 94, 93, 0, + 93, 93, 42, 94, 191, 0, 242, 246, 0, 93, 0, 182, 0, 92, 0, 92, + 92, 11, 93, 11, 0, 346, 0, 0, 92, 0, 0, 0, 0, 806, 0, 809, + 0, 92, 241, 0, 0, 0, 93, 93, 0, 242, 11, 0, 998, 762, 94, 693, + 764, 94, 329, 0, 0, 92, 92, 93, 42, 94, 693, 763, 93, 0, 11, 11, + 0, 0, 94, 11, 0, 670, 92, 808, 241, 42, 0, 92, 93, 11, 93, 242, + 11, 11, 932, 0, 672, 811, 93, 94, 693, 760, 11, 92, 93, 92, 0, 227, + 230, 0, 408, 0, 93, 92, 0, 94, 693, 759, 93, 92, 94, 693, 765, 352, + 372, 373, 0, 92, 93, 93, 0, 242, 241, 92, 0, 93, 94, 693, 772, 93, + 93, 0, 995, 92, 92, 0, 94, 693, 773, 241, 92, 0, 94, 0, 92, 92, + 0, 227, 230, 42, 94, 0, 1049, 0, 637, 0, 94, 42, 241, 242, 0, 0, + 0, 42, 372, 639, 93, 94, 693, 692, 0, 246, 668, 94, 693, 774, 0, 94, + 94, 241, 0, 92, 241, 93, 42, 42, 241, 983, 0, 1074, 0, 241, 645, 643, + 0, 246, 926, 0, 92, 901, 1071, 1072, 93, 0, 0, 322, 411, 242, 929, 241, + 0, 0, 0, 42, 0, 0, 0, 92, 0, 0, 371, 241, 901, 93, 242, 0, + 93, 0, 903, 318, 93, 0, 0, 1043, 901, 93, 0, 0, 92, 0, 0, 92, + 0, 242, 0, 92, 1045, 0, 0, 0, 92, 903, 1006, 93, 1005, 1007, 1014, 1009, + 1012, 0, 1008, 412, 416, 903, 242, 93, 0, 242, 92, 0, 371, 242, 0, 1013, + 0, 0, 242, 0, 241, 1006, 92, 1005, 1007, 1014, 1009, 1012, 983, 0, 0, 0, + 0, 901, 984, 0, 242, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, + 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 903, 0, + 93, 0, 0, 0, 1008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 995, 92, + 1046, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 736, 738, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0}; -const short QmlJSGrammar::action_check [] = { - 57, 17, 34, 7, 62, 7, 34, 62, 57, 1, - 37, 37, 62, 7, 34, 57, 57, 34, 7, 0, - 8, 16, 62, 37, 107, 50, 38, 83, 38, 34, - 15, 5, 5, 34, 57, 0, 5, 37, 57, 7, - 30, 1, 96, 117, 57, 104, 49, 34, 20, 83, - 17, 37, 34, 37, 37, 17, 62, 37, 34, 7, - 57, 57, 7, 34, 34, 96, 8, 7, 34, 62, - 17, 62, 8, 37, 52, 96, 17, 2, 37, 37, - 57, 34, 57, 62, 34, 7, 2, 30, 34, 1, - 34, 52, 15, 7, 15, 30, 7, 17, 37, 17, - 63, 30, 8, 8, 17, 57, 117, 62, 62, 7, - 7, 62, 7, 70, 7, 34, 2, 49, 52, 7, - 30, 38, 7, 30, 62, 34, 34, 83, 17, 62, - 17, 62, 62, 70, 62, 62, 38, 63, 34, 7, - 7, 7, 57, 37, 34, 37, 49, 8, 17, 8, - 34, 34, 8, 57, 7, 104, 57, 34, 57, 37, - 34, 0, 62, 35, 2, 23, 8, 17, 8, 34, - 7, 62, 17, 8, 8, -1, 8, 57, 38, 52, - 62, 57, 30, 62, 17, 66, 57, 62, 34, 30, - 34, 48, 7, 117, 48, 7, 7, 7, 62, 62, - 70, 63, 1, 17, 7, 7, 37, 8, 57, 37, - 34, 63, 34, 8, 69, 8, 63, 8, 8, 17, - 63, 17, 8, 8, 7, 32, 62, 57, 49, 8, - 8, 57, 8, 62, 15, 58, 7, -1, 8, 58, - 7, -1, 8, 43, 8, 63, 64, 63, 64, 58, - 63, 64, 15, 34, 81, 55, 107, 63, 64, 63, - 64, 25, 25, 83, 56, 8, 37, 57, 41, 63, - 64, 96, 57, 8, 63, 64, 62, 34, 8, 57, - 53, 41, 58, 62, 37, 41, 70, 57, 63, 64, - 8, 100, 37, 53, 63, 64, 62, 53, 63, 64, - 8, 63, 64, 30, 8, 97, 8, 8, 65, 63, - 64, 118, 63, 64, 63, 64, 56, 63, 64, 62, - 8, 7, 8, 58, 108, 6, 8, 10, 58, 96, - 63, 64, 41, 8, 117, 115, 116, 15, 8, 20, - 58, 63, 64, 8, 53, 30, 0, 25, 63, 64, - 58, 63, 64, 15, 58, 7, 7, 97, 63, 64, - 62, 62, 22, 23, 117, 115, 116, 8, 7, 57, - 0, 30, 117, 35, 57, 30, 58, 26, 17, 28, - 48, 12, 34, 58, 63, 64, 8, 30, 8, 57, - 39, 26, 62, 28, 79, 5, 8, 62, 37, 37, - 10, 69, 7, 12, 39, 17, 7, 92, 15, -1, - 63, 64, 63, 64, 7, 30, 30, -1, 25, 30, - 79, -1, 63, 64, 79, 63, 64, -1, 59, -1, - -1, 8, -1, 92, 65, 30, 79, 92, 117, 30, - 17, -1, 95, 103, 26, 30, 28, 57, -1, 92, - 59, 63, 106, 15, 15, 12, 65, 39, 63, 64, - -1, 115, 63, 64, 79, 79, -1, 26, 79, 28, - 63, 64, -1, 35, 35, 37, 106, 92, 92, 131, - 39, 92, 18, 19, 79, 115, 63, 26, 79, 28, - 112, 113, 112, 113, 79, 18, 19, 92, 15, 50, - 39, 92, 59, 18, 19, 18, 19, 92, 65, -1, - 46, 47, 63, 64, -1, -1, -1, -1, 35, 22, - 23, -1, -1, 46, 47, 15, -1, -1, 8, -1, - -1, 46, 47, 46, 47, -1, 15, 98, 122, 123, - 124, 125, 126, 127, -1, 35, -1, 37, -1, 110, - 111, 15, -1, -1, 15, -1, 35, -1, 37, -1, - -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, - 15, 35, -1, 37, 35, -1, 37, 15, -1, -1, - -1, 98, -1, 63, 64, 88, 89, -1, -1, 34, - 35, -1, 37, 110, 111, -1, 34, 35, -1, 37, - 103, 24, 25, -1, -1, -1, -1, -1, 98, 32, - 33, -1, -1, 36, -1, 38, 24, 25, -1, 98, - 110, 111, -1, -1, 32, 33, -1, 10, 36, -1, - 38, 110, 111, -1, 98, 30, -1, 98, 30, 22, - 23, -1, -1, -1, -1, -1, 110, 111, -1, 110, - 111, 34, -1, 98, -1, 24, 25, -1, -1, -1, - 98, -1, -1, -1, 33, 110, 111, 36, -1, 38, - 10, -1, 110, 111, -1, 70, 71, 72, 70, 71, - 72, -1, 65, -1, -1, -1, -1, -1, -1, -1, - 30, -1, -1, 30, 117, -1, 79, -1, -1, -1, - -1, -1, -1, -1, -1, 88, 89, -1, -1, 117, - 30, -1, 107, 108, 109, 107, 108, 109, -1, -1, - 103, -1, -1, 118, 119, 120, 118, 119, 120, -1, - 70, 71, 72, 70, 71, 72, 131, -1, -1, 131, - -1, -1, -1, -1, -1, -1, 15, -1, 117, -1, - 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, - -1, 30, -1, -1, -1, -1, 30, 107, 108, 109, - 107, 108, 109, -1, -1, -1, -1, -1, 118, 119, - 120, 118, 119, 120, -1, -1, 30, 107, 108, 109, - -1, 30, -1, -1, 131, -1, -1, -1, 118, 119, - 120, 70, 71, 72, -1, -1, 70, 71, 72, -1, - -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 70, 71, 72, -1, - -1, 70, 71, 72, -1, -1, -1, -1, 107, 108, - 109, -1, 30, 107, 108, 109, -1, -1, -1, 118, - 119, 120, -1, -1, 118, 119, 120, -1, -1, -1, - 30, 105, 131, 107, 108, 109, 105, 131, 107, 108, - 109, 15, -1, 117, 118, 119, 120, -1, 117, 118, - 119, 120, 70, 71, 72, -1, 30, 131, -1, -1, - -1, 79, 131, 30, -1, -1, -1, -1, -1, -1, - 70, 71, 72, -1, 92, -1, -1, -1, -1, 79, - -1, 30, -1, -1, -1, -1, -1, -1, 37, 107, - 108, 109, 92, -1, -1, -1, 70, 71, 72, -1, - 118, 119, 120, 70, 71, 72, -1, 107, 108, 109, - -1, -1, -1, 131, -1, -1, -1, -1, 118, 119, - 120, 70, 71, 72, -1, -1, -1, -1, -1, -1, - -1, 131, 30, 107, 108, 109, -1, 104, 105, 37, - 107, 108, 109, -1, 118, 119, 120, -1, -1, -1, - 117, 118, 119, 120, -1, -1, 105, 131, 107, 108, - 109, 30, -1, -1, 131, -1, -1, -1, 117, 118, - 119, 120, 70, 71, 72, -1, -1, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 30, -1, -1, -1, - -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, - -1, 70, 71, 72, -1, -1, -1, 105, -1, 107, - 108, 109, -1, -1, -1, -1, -1, -1, -1, 117, - 118, 119, 120, -1, -1, -1, 70, 71, 72, -1, - -1, -1, 3, 131, -1, -1, 105, 30, 107, 108, - 109, -1, 13, -1, 37, -1, 17, -1, 117, 118, - 119, 120, -1, -1, -1, -1, 27, -1, 29, -1, - -1, 105, 131, 107, 108, 109, 30, -1, -1, 40, - -1, 42, 43, 117, 118, 119, 120, 70, 71, 72, - 51, -1, -1, 54, 55, -1, -1, 131, -1, 60, - -1, -1, -1, -1, -1, 30, 67, 68, -1, -1, - -1, -1, -1, -1, -1, -1, 70, 71, 72, -1, - -1, -1, 105, 84, 107, 108, 109, -1, -1, -1, - -1, -1, -1, -1, 117, 118, 119, 120, 63, 64, - -1, -1, -1, -1, -1, 70, 71, 72, 131, -1, - 104, 105, -1, 107, 108, 109, 30, -1, -1, -1, - -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, - -1, -1, -1, -1, 30, -1, -1, 131, 34, 35, - 105, 30, 107, 108, 109, 34, 35, -1, -1, 63, - 64, -1, 117, 118, 119, 120, 70, 71, 72, -1, - -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, - -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, - -1, 70, 71, 72, -1, -1, -1, -1, -1, -1, - -1, 105, -1, 107, 108, 109, -1, -1, -1, -1, - -1, -1, -1, 117, 118, 119, 120, -1, -1, 105, - -1, 107, 108, 109, -1, -1, 105, 131, 107, 108, - 109, 117, 118, 119, 120, -1, -1, -1, 117, 118, - 119, 120, -1, -1, -1, 131, -1, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 3, 30, -1, -1, - -1, 34, 35, -1, -1, -1, 13, -1, -1, -1, - 17, -1, -1, -1, -1, 30, -1, -1, -1, 34, - 27, -1, 29, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 40, -1, 42, 43, 70, 71, 72, - -1, -1, -1, -1, 51, -1, -1, 54, 55, -1, - 65, -1, -1, 60, 69, 70, 71, 72, -1, -1, - 67, 68, -1, -1, -1, -1, -1, 100, -1, -1, - -1, -1, 105, -1, 107, 108, 109, 84, -1, -1, - -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, - 105, -1, 107, 108, 109, -1, -1, 3, 131, -1, - -1, -1, 117, 118, 119, 120, -1, 13, -1, -1, - -1, 17, -1, -1, -1, -1, 131, -1, -1, -1, - -1, 27, -1, 29, -1, -1, 32, -1, 30, -1, - -1, -1, 34, 35, 40, -1, 42, 43, -1, -1, - -1, -1, -1, -1, -1, 51, -1, -1, 54, 55, - -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, - -1, 67, 68, -1, -1, -1, -1, -1, 70, 71, - 72, -1, -1, -1, -1, -1, -1, -1, 84, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, - -1, -1, -1, 105, -1, 107, 108, 109, -1, -1, - -1, -1, 118, -1, -1, 117, 118, 119, 120, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, - -1, -1, -1, 12, 13, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, - -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, - -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 69, 70, 71, 72, -1, 74, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 85, 86, 87, -1, - -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, - -1, -1, -1, 102, 103, -1, 105, -1, 107, 108, - 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, - 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 12, 13, -1, -1, - -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, - -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, - -1, 37, -1, -1, -1, -1, -1, -1, 44, -1, - -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, - 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, - -1, -1, -1, -1, -1, -1, 102, 103, -1, 105, - -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, - -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 131, -1, -1, -1, 12, - 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, - -1, 34, 35, -1, 37, -1, -1, -1, -1, -1, - -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, - -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 85, 86, 87, -1, -1, -1, -1, 92, - 93, -1, -1, -1, -1, -1, -1, -1, -1, 102, - 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, - -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, - -1, -1, 12, 13, -1, -1, -1, -1, -1, -1, - -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, - 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, - -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, - 70, 71, 72, -1, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 85, 86, 87, -1, -1, - 90, -1, -1, 93, -1, -1, -1, -1, -1, -1, - -1, -1, 102, 103, -1, 105, -1, 107, 108, 109, - 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, - 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 131, -1, -1, -1, 12, 13, -1, 15, -1, - -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, - -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, - 37, -1, -1, -1, -1, -1, -1, 44, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 69, 70, 71, 72, -1, 74, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, - 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, -1, -1, 102, 103, -1, 105, -1, - 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, - 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 131, -1, -1, -1, 12, 13, - -1, 15, -1, -1, -1, -1, -1, -1, 22, 23, - -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, - 34, 35, -1, 37, -1, -1, -1, -1, -1, -1, - 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, - 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, - -1, -1, -1, -1, -1, -1, -1, -1, 102, 103, - -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, - -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 10, -1, 12, 13, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, - -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, - -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 69, 70, 71, 72, -1, 74, -1, -1, -1, -1, - 79, -1, -1, -1, -1, -1, 85, 86, 87, -1, - -1, 90, -1, -1, 93, -1, -1, -1, -1, -1, - 99, -1, -1, 102, 103, -1, 105, -1, 107, 108, - 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, - 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 10, -1, 12, 13, - -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, - -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, - 34, 35, -1, 37, -1, -1, -1, -1, -1, -1, - 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, - -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, - 74, -1, -1, -1, -1, 79, -1, -1, -1, -1, - -1, 85, 86, 87, -1, -1, 90, -1, -1, 93, - -1, -1, -1, -1, -1, 99, -1, -1, 102, 103, - -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, - -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 10, -1, 12, 13, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, - -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, - -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, - -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 69, 70, 71, 72, -1, 74, -1, -1, -1, -1, - 79, -1, -1, -1, -1, -1, 85, 86, 87, -1, - -1, 90, -1, -1, 93, -1, -1, -1, -1, -1, - 99, -1, -1, 102, 103, -1, 105, -1, 107, 108, - 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, - 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, - -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, - 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, - 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, - 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, - -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, - 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, -1, -1, -1, 102, 103, -1, - 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, - -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, - 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, - -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, - 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, - -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, - 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, - -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, - -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, - 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, - 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, - -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, - 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, - -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, - -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, - 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, - 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, - 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 131, -1, -1, -1, 8, -1, - -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, - -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, - 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, - -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, - -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, - 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, - 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, - -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, - -1, 101, 102, 103, -1, 105, -1, 107, 108, 109, - 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, - 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, - -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, - -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, - -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, - -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, - 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, - 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, - -1, -1, -1, -1, 100, 101, 102, 103, -1, 105, - -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, - -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, - 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, - 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, - -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, - -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, - -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 65, -1, -1, -1, 69, 70, 71, - 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, - -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, - -1, 93, -1, -1, -1, -1, -1, -1, -1, 101, - 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, - -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, - -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, - -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, - -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, - 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, - 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, - -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, - -1, -1, -1, 101, 102, 103, -1, 105, -1, 107, - 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, - 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, - 128, -1, -1, 131, -1, -1, -1, 11, 12, 13, - -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, - -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, - 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, - 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, - -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, - 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, - -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, - -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, - -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, - -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, - -1, -1, -1, -1, -1, 129, -1, 131, -1, -1, - -1, 8, -1, -1, 11, 12, 13, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, - -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, - 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, - -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, - -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, - 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, - 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, - 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, - 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, - -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, - 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, - 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, - -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, - -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, - -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, - -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, - -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, - -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, - -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, - -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, - -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, - -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, - 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, - 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, - 129, -1, 131, -1, -1, -1, 11, 12, 13, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, - -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, - 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, - 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, - 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, - -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, - 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, -1, 100, 101, 102, 103, -1, - 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, - -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, - 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, - -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, - 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, - -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 65, -1, -1, -1, 69, 70, - 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, - -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, - -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, - 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, - 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, - -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, - 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, - -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, - -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, - -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, - 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, 100, 101, 102, 103, -1, 105, -1, - 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, - 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, - 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, - -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, - 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, - 53, -1, 55, -1, -1, -1, -1, -1, -1, 62, - -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, - -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, - -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, 100, 101, 102, - 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, - -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, - -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, - -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, - -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, - -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, - 79, 80, -1, -1, -1, -1, 85, 86, 87, 88, - 89, -1, -1, -1, 93, -1, -1, -1, -1, -1, - -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, - 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, - 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, - -1, -1, -1, -1, -1, 30, 31, -1, -1, 34, - 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, - 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, - 55, -1, -1, -1, -1, -1, -1, -1, 63, -1, - -1, -1, -1, -1, 69, 70, 71, 72, 73, 74, - -1, 76, 77, 78, -1, 80, -1, 82, -1, -1, - 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, - 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, - -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, - -1, -1, -1, 128, 129, -1, 131, -1, -1, -1, - 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, - 31, -1, -1, 34, 35, -1, 37, -1, -1, -1, - 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, - -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, - -1, -1, 63, -1, -1, -1, -1, -1, 69, 70, - 71, 72, 73, 74, -1, 76, 77, 78, -1, 80, - -1, 82, -1, -1, 85, 86, 87, -1, -1, -1, - -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, - 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, - 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, - -1, -1, -1, -1, -1, -1, -1, 128, 129, -1, - 131, -1, -1, -1, 4, 5, 6, -1, -1, 9, - 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, - 20, 21, -1, 23, -1, -1, -1, -1, -1, -1, - 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, - 80, 81, 82, -1, -1, 85, 86, 87, 88, 89, - -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - -1, -1, -1, -1, -1, 115, -1, 117, 118, 119, - 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 131, -1, -1, -1, 4, 5, 6, -1, -1, - 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, - -1, 20, 21, -1, 23, -1, -1, -1, -1, -1, - -1, 30, 31, 32, 33, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, - -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, - -1, 70, 71, 72, 73, 74, 75, -1, 77, 78, - 79, 80, 81, 82, -1, -1, 85, 86, 87, 88, - 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, - 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, -1, -1, -1, -1, -1, 115, -1, 117, 118, - 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 4, 5, 6, -1, - -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, - -1, -1, 20, 21, -1, 23, -1, -1, -1, -1, - -1, -1, 30, 31, 32, 33, -1, 35, -1, -1, - -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, -1, 77, - 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, - 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, - -1, 99, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, - 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 131, -1, -1, -1, 4, 5, 6, - -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, - -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, -1, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, - -1, -1, 99, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, -1, -1, -1, -1, -1, 115, -1, - 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 131, -1, -1, -1, 4, 5, - 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, - 16, -1, -1, -1, 20, 21, -1, 23, -1, -1, - -1, -1, -1, -1, 30, 31, 32, 33, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 57, -1, -1, -1, 61, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - -1, 77, 78, 79, 80, 81, 82, -1, -1, 85, - 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, - -1, -1, -1, 99, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, -1, -1, -1, -1, -1, 115, - -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 131, -1, -1, -1, 4, - 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, - -1, 16, -1, -1, -1, 20, 21, -1, 23, -1, - -1, -1, -1, -1, -1, 30, 31, 32, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 57, -1, -1, -1, 61, -1, -1, -1, - -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, - 75, -1, 77, 78, 79, 80, 81, 82, -1, -1, - 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, - -1, -1, -1, -1, 99, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, -1, -1, -1, -1, -1, - 115, -1, 117, 118, 119, 120, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, - 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, - 14, -1, 16, -1, -1, -1, 20, 21, -1, 23, - -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, - -1, 35, -1, 37, -1, -1, -1, -1, -1, -1, - 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, - -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, -1, 77, 78, 79, 80, 81, 82, -1, - -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, - -1, -1, -1, -1, -1, 99, -1, -1, 102, 103, - 104, 105, 106, 107, 108, 109, -1, -1, -1, -1, - -1, 115, -1, 117, 118, 119, 120, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, - -1, 14, -1, 16, -1, -1, -1, 20, 21, -1, - 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, - 33, -1, 35, -1, 37, -1, -1, -1, -1, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, - -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, - 73, 74, 75, -1, 77, 78, 79, 80, 81, 82, - -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, - -1, -1, -1, -1, -1, -1, 99, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, -1, -1, -1, - -1, -1, 115, -1, 117, 118, 119, 120, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, - -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, - -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, - -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, - 32, 33, -1, 35, -1, -1, -1, -1, -1, -1, - -1, -1, 44, -1, -1, -1, 48, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, - -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, - 72, 73, 74, 75, -1, 77, 78, 79, 80, 81, - 82, -1, -1, 85, 86, 87, 88, 89, -1, 91, - 92, -1, -1, -1, -1, -1, -1, 99, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, -1, -1, - -1, -1, -1, 115, -1, 117, 118, 119, 120, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, - -1, -1, -1, 4, 5, 6, -1, -1, 9, 10, - 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, - 21, -1, 23, -1, -1, -1, -1, -1, -1, 30, - 31, 32, 33, -1, 35, -1, -1, -1, -1, -1, - -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 61, -1, -1, -1, 65, -1, -1, -1, 69, 70, - 71, 72, 73, 74, 75, -1, 77, 78, 79, 80, - 81, 82, -1, -1, 85, 86, 87, 88, 89, -1, - 91, 92, -1, -1, -1, -1, -1, -1, 99, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, - -1, -1, -1, -1, 115, -1, 117, 118, 119, 120, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 131, -1, -1, -1, 4, 5, 6, -1, -1, 9, - 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, - 20, 21, -1, 23, -1, -1, -1, -1, -1, -1, - 30, 31, 32, 33, -1, 35, -1, -1, -1, -1, - -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 61, -1, 63, -1, 65, -1, -1, -1, 69, - 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, - 80, 81, 82, -1, -1, 85, 86, 87, 88, 89, - -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - -1, -1, -1, -1, -1, 115, -1, 117, 118, 119, - 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 131, -1, -1, -1, 4, 5, 6, -1, -1, - 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, - -1, 20, 21, -1, 23, -1, -1, -1, -1, -1, - -1, 30, 31, 32, 33, -1, 35, -1, -1, -1, - -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, - -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, - -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, - 69, 70, 71, 72, 73, 74, 75, -1, 77, 78, - 79, 80, 81, 82, -1, -1, 85, 86, 87, 88, - 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, - 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, -1, -1, -1, -1, -1, 115, -1, 117, 118, - 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 4, 5, 6, -1, - -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, - -1, -1, 20, 21, -1, 23, -1, -1, -1, -1, - -1, -1, 30, 31, 32, 33, -1, 35, -1, -1, - -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, - 48, -1, -1, -1, -1, -1, -1, -1, -1, 57, - -1, -1, -1, 61, -1, -1, -1, 65, -1, -1, - -1, 69, 70, 71, 72, 73, 74, 75, -1, 77, - 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, - 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, - -1, 99, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, - 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 131, -1, -1, -1, 4, -1, -1, - -1, -1, 9, -1, 11, 12, 13, 14, -1, -1, - -1, -1, -1, -1, 21, 22, 23, -1, -1, -1, - -1, -1, -1, 30, 31, -1, -1, 34, 35, -1, - 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, - -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, - -1, -1, -1, -1, 61, -1, 63, -1, -1, -1, - -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, -1, -1, -1, 91, -1, 93, -1, -1, -1, - -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, - 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, - 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, - -1, -1, 129, -1, 131, -1, -1, -1, 4, -1, - -1, -1, -1, 9, -1, 11, 12, 13, 14, -1, - -1, -1, -1, -1, -1, 21, 22, 23, -1, -1, - -1, -1, -1, -1, 30, 31, -1, -1, 34, 35, - -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, - -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, - -1, -1, -1, -1, -1, 61, -1, 63, -1, -1, - -1, -1, -1, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, - 86, 87, -1, -1, -1, 91, -1, 93, -1, -1, - -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, - -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, - -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, - -1, -1, 128, 129, -1, 131, -1, -1, -1, 4, - -1, -1, -1, -1, 9, -1, 11, 12, 13, 14, - -1, -1, -1, -1, -1, -1, 21, 22, 23, -1, - -1, -1, -1, -1, -1, 30, 31, -1, -1, 34, - 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, - 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, - 55, -1, -1, -1, -1, -1, 61, -1, 63, -1, - -1, -1, -1, -1, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, -1, - 85, 86, 87, -1, -1, -1, 91, -1, 93, -1, - -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, - 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, - -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, - -1, -1, -1, 128, 129, -1, 131, -1, -1, -1, - 4, -1, -1, -1, -1, 9, -1, 11, 12, 13, - 14, -1, -1, -1, -1, -1, -1, 21, 22, 23, - -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, - 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, - 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, - -1, 55, -1, -1, -1, -1, -1, 61, -1, 63, - -1, -1, -1, -1, -1, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, - -1, 85, 86, 87, -1, -1, -1, 91, -1, 93, - -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, - -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, - -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, - -1, -1, -1, -1, 128, 129, -1, 131, -1, -1, - -1, - - 86, 204, 203, 194, 204, 203, 194, 20, 78, 15, - 202, 196, 78, 195, 76, 194, 15, 62, 196, 71, - 195, 194, 62, 20, 118, 71, 210, 210, 115, 15, - 71, 208, 208, 207, 15, 71, 14, 24, 15, 24, - 43, 20, 195, 78, 97, 57, 73, 43, 20, 73, - 15, 15, 137, 15, 15, 15, 73, 73, 115, 78, - 118, 37, 15, 71, 32, 57, 15, 96, 86, 62, - 20, 223, 15, 78, 224, 73, 43, 78, 73, 20, - 37, 201, 37, 190, 78, 194, 15, 195, 157, 157, - 196, 184, 62, 194, 196, 195, 43, 187, 73, 194, - 203, 15, 73, 208, 15, 204, 210, 24, 71, 32, - 194, 62, 204, 15, 73, 203, 15, 196, 194, 202, - 62, 196, 20, 195, 43, 223, 62, 194, 20, 62, - 194, 196, 195, 78, 78, 57, 20, 76, 78, 57, - 96, 71, 96, 78, 15, 73, 207, 73, 86, 62, - 15, 194, 202, 73, 78, 71, 83, 43, 15, 36, - 57, 37, 62, 78, 194, 15, 78, 157, 78, 78, - 195, 62, 62, 94, 32, 196, 196, 62, 24, 194, - 62, 195, 78, 86, 62, 78, 73, 94, 96, 95, - 78, 96, 96, 195, 15, 15, 15, 57, 73, 43, - 73, 15, 20, 43, 20, 57, 78, 181, 2, 2, - 73, 73, 46, 47, 2, 2, 2, 32, 2, 32, - 57, 58, 76, 78, 57, 80, 2, 2, 57, 101, - 73, 53, 57, 2, 46, 47, 2, 73, 32, 32, - 92, 73, 73, 2, 32, 32, 32, 15, 32, 57, - 58, 57, 58, 57, 58, 78, 32, 32, 32, 57, - 58, 78, 79, 32, 46, 47, 32, 57, 58, 20, - 32, 73, 74, 32, 57, 58, 139, 139, 101, 57, - 58, 15, 32, 78, 57, 57, 57, 58, 2, 57, - 57, 152, 43, 57, 57, -1, 139, 57, 11, 12, - 57, 57, 57, 139, 20, 57, 101, 139, 139, 57, - 58, 57, 32, -1, 32, 35, -1, 78, 32, 92, - 92, 57, -1, 57, -1, 179, 57, 43, 92, 92, - -1, 192, 92, 89, 78, 92, 88, 92, 57, 58, - 101, 72, 88, -1, 159, 158, 226, 227, 57, 58, - 57, 58, 88, 57, 58, 57, 58, 101, 57, 58, - 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, - 192, 15, 57, 57, 105, 105, 209, 46, 47, -1, - 209, 50, 112, 157, 209, -1, 74, 75, 92, -1, - 78, 57, 58, 88, 57, 58, -1, 159, 57, 58, - 57, 58, -1, 88, 89, 57, 58, 81, 92, 159, - 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, - 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, - 58, 105, 81, 53, -1, 55, 57, -1, 112, 57, - -1, 159, 57, 81, 57, 58, -1, 214, -1, 81, - -1, 72, 57, 58, 72, 84, 105, 72, -1, 88, - 89, 74, 57, 112, 57, 81, -1, 105, 57, 58, - 200, 173, -1, 105, 112, 81, 57, 72, -1, 72, - 112, 180, 173, 88, 105, 74, 193, 105, 3, 105, - 105, 72, -1, 57, 112, 116, 112, -1, 113, 105, - 197, 219, 57, 58, 193, 57, 112, 57, 72, -1, - 105, -1, 105, 81, 3, 108, 173, 112, 57, 228, - 72, 173, 72, 57, 105, 81, 200, 193, 148, -1, - 193, 112, -1, 72, 193, 228, 173, 105, 72, 57, - 173, 105, 173, 171, 112, 173, 193, 111, 193, 105, - 234, 200, 193, 105, 72, 105, 112, -1, 193, 202, - 57, 111, 200, 57, 58, 57, 105, 180, 200, 17, - 122, 105, 192, 178, -1, 72, 81, 111, 57, 58, - 72, 120, 17, 57, 200, -1, 57, 105, 57, 228, - 105, 180, 57, 58, 200, 57, 58, 112, 72, 57, - 105, 72, -1, 72, 57, -1, 17, 112, 105, 57, - 128, 108, 57, 105, 72, 170, 105, 109, 173, 72, - -1, -1, 57, 112, 72, 53, -1, 72, -1, 17, - 92, 105, 200, -1, 105, 109, 105, 72, -1, -1, - -1, -1, 30, 112, 200, -1, 57, 105, 117, 57, - 98, -1, 105, 106, 107, 126, 57, -1, 17, 57, - 105, 72, -1, 98, 72, 57, 124, 112, 27, 57, - 29, 72, -1, -1, 72, 169, -1, 57, 123, 173, - 72, 57, -1, -1, 72, 200, -1, 98, 17, -1, - 169, 102, 72, -1, 173, 200, 72, 105, 106, 107, - -1, 30, 57, -1, 105, 106, 107, 105, 106, 107, - 98, 200, -1, 105, 106, 107, -1, 72, 57, 78, - 79, -1, 150, -1, 152, 105, 106, 107, 57, 105, - 106, 107, 57, 72, 17, 3, 57, 58, -1, 17, - 57, -1, 207, 72, 27, 57, -1, 72, 57, 27, - 105, 106, 107, 74, 75, 72, -1, 57, -1, -1, - 72, -1, -1, 72, 192, -1, 105, -1, 230, 98, - -1, 46, 72, 112, 57, 50, 51, 52, 206, 57, - 105, -1, -1, -1, -1, -1, 125, 112, 105, 72, - -1, 17, -1, 105, 72, 112, 105, 114, 17, 25, - 112, 27, 127, 112, -1, 105, 106, 107, 17, 121, - 119, 30, -1, 4, 17, 98, -1, 26, 27, 36, - 98, 38, 39, 40, 41, 42, 17, 30, -1, 4, - 17, 57, -1, -1, -1, -1, -1, 105, 57, 30, - -1, 60, 17, 30, 112, -1, 72, -1, 57, -1, - -1, -1, 55, 72, 57, 30, -1, -1, -1, 180, - -1, -1, -1, 72, 55, -1, 57, -1, -1, 72, - 57, -1, 98, 60, -1, -1, -1, -1, -1, 98, - 55, 72, 57, -1, -1, 72, 17, -1, -1, 98, - -1, 17, 160, 161, 25, 98, -1, 72, -1, 30, - 31, -1, -1, -1, 30, -1, 17, 98, -1, -1, - 36, 98, 38, 39, 40, 41, 42, -1, -1, 30, - -1, 17, -1, 98, 55, 36, 57, 38, 39, 40, - 41, 42, 200, -1, 30, -1, -1, -1, -1, -1, - 36, 72, 38, 39, 40, 41, 42, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 17, -1, -1, -1, -1, -1, 98, -1, -1, - -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 -}; +const short QmlJSGrammar::action_check[] = { + 57, 62, 7, 34, 34, 57, 7, 17, 37, 62, 37, 62, 7, 34, 37, 57, 62, 37, 0, + 62, 7, 34, 50, 57, 48, 34, 37, 15, 34, 62, 16, 57, 57, 0, 48, 57, 34, 5, + 57, 5, 34, 34, 96, 5, 104, 57, 7, 17, 17, 34, 8, 7, 7, 57, 34, 62, 20, + 34, 37, 62, 49, 37, 7, 62, 37, 83, 83, 38, 117, 34, 62, 34, 63, 57, 57, 7, + 30, 37, 37, 30, 96, 17, 8, 17, 17, 7, 17, 30, 30, 8, 8, 1, 17, 30, 96, + 52, 8, 2, 7, 34, 30, 0, 83, 52, 57, 34, 7, 2, 52, 17, 62, 34, 62, 17, + 62, 2, 63, 107, 7, 17, 17, 62, 7, 69, 52, 2, 7, 30, 49, 107, 104, 7, 7, + 7, 7, 62, 49, 17, 62, 8, 34, 34, 62, 34, 34, 37, 57, 7, 30, 37, 57, 66, + 7, 37, 7, 34, 62, 57, 7, 37, 62, 57, 34, 34, 8, 35, 83, 34, 34, 17, 8, + 57, 34, 23, 8, 7, 1, 117, 37, 62, 8, 7, 15, 34, 8, 7, 38, 17, 17, 57, + 17, 49, 34, 107, 57, 7, 37, 62, 62, 34, 37, 57, 63, 8, 15, 8, 63, 8, 8, + 63, 30, 57, 1, 8, 8, 8, 63, 62, 15, 32, 7, -1, 58, 62, 34, 8, 7, 7, + 25, 8, 8, 62, 8, 8, 8, 8, 8, 58, 8, 56, 8, 81, 8, 62, 15, 63, 64, + 63, 64, 63, 64, 58, 43, 25, 8, 65, 37, 63, 64, 63, 64, 63, 64, 34, 55, 58, + 56, 62, 62, 15, 8, 63, 64, 96, 117, 58, 37, 37, 57, 57, 97, 63, 64, 57, 57, + 8, 62, 62, 58, 35, 58, 8, 58, 100, 63, 64, 63, 64, 63, 64, 115, 116, 8, 6, + 8, 118, 41, 97, 62, 8, 8, 63, 64, 63, 64, 10, 96, 20, 53, 57, 63, 64, 63, + 64, 8, 41, 41, 115, 116, 41, 117, 63, 64, 63, 64, 58, 7, 53, 53, 63, 64, 53, + 63, 64, 8, 62, 26, 26, 28, 28, 37, 26, 58, 28, 58, 7, 117, 117, 30, 39, 39, + 15, 57, 62, 39, 22, 23, 26, 0, 28, 30, 8, 30, 8, 95, 8, 63, 64, 62, 0, + 39, 35, 34, 37, 17, 63, 64, 30, 12, 8, 5, 30, 63, 64, 7, 10, 26, 48, 28, + 63, 64, 8, -1, -1, 17, 10, 57, 79, 12, 39, 17, 12, 7, 15, 7, -1, -1, -1, + 69, 79, 92, 79, 10, 15, 37, -1, 10, 10, -1, -1, 63, -1, 92, 35, 92, 59, 79, + 7, 8, 117, 79, 65, 57, 35, 63, 64, 103, 22, 23, 92, -1, -1, -1, 92, -1, 59, + 63, -1, 59, 50, -1, 65, -1, -1, 65, 70, -1, 72, 63, 64, 63, 64, 63, 64, 106, + 112, 113, 112, 113, 131, -1, -1, 70, 115, 72, 106, 70, 70, 72, 72, 24, 25, -1, -1, + 115, 15, 98, -1, -1, 33, -1, 15, 36, 108, 38, -1, 98, -1, 110, 111, -1, -1, 15, + 88, 89, 35, -1, 37, 110, 111, 108, 35, 15, 37, 108, 108, 117, -1, 103, 24, 25, -1, + 35, -1, 37, -1, -1, -1, 33, -1, 15, 36, 35, 38, 37, 122, 123, 124, 125, 126, 127, + 15, 10, -1, -1, 24, 25, -1, -1, 34, 35, -1, 37, 32, 33, 18, 19, 36, -1, 38, + 34, 35, 30, 37, 10, -1, -1, -1, 98, -1, -1, -1, -1, 117, 98, -1, 22, 23, -1, + -1, 110, 111, -1, 46, 47, 98, 110, 111, 34, 30, -1, -1, -1, -1, -1, 98, -1, 110, + 111, -1, -1, -1, 70, 71, 72, -1, 15, 110, 111, -1, -1, -1, 117, 98, 30, -1, -1, + -1, 30, 65, -1, 30, -1, -1, 98, 110, 111, -1, -1, 70, 71, 72, 15, 79, -1, -1, + 110, 111, 117, 107, 108, 109, 88, 89, -1, -1, -1, 30, -1, -1, 118, 119, 120, -1, 70, + 71, 72, 103, 70, 71, 72, 70, 71, 72, -1, -1, 107, 108, 109, -1, -1, -1, 24, 25, + -1, -1, -1, 118, 119, 120, 32, 33, -1, -1, 36, -1, 38, 70, 71, 72, 131, 107, 108, + 109, -1, 107, 108, 109, 107, 108, 109, 30, 118, 119, 120, -1, 118, 119, 120, 118, 119, 120, + -1, -1, -1, 131, -1, 30, -1, 131, -1, -1, 131, -1, 107, 108, 109, -1, -1, -1, -1, + -1, -1, 30, -1, 118, 119, 120, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1, 131, -1, + -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1, -1, 117, -1, -1, -1, + -1, -1, -1, -1, 70, 71, 72, 105, -1, 107, 108, 109, -1, -1, 15, 30, -1, -1, -1, + 117, 118, 119, 120, 105, -1, 107, 108, 109, -1, 30, -1, -1, -1, 131, 30, 117, 118, 119, + 120, 105, -1, 107, 108, 109, -1, -1, -1, -1, -1, 131, -1, 117, 118, 119, 120, 70, 71, + 72, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 70, 71, 72, -1, -1, 70, 71, + 72, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, 105, 30, 107, 108, 109, + -1, 92, -1, -1, -1, -1, -1, 117, 118, 119, 120, 107, 108, 109, 30, -1, 107, 108, 109, + -1, -1, 131, 118, 119, 120, -1, -1, 118, 119, 120, -1, -1, -1, -1, -1, 131, 70, 71, + 72, 30, 131, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, + -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, 107, 108, 109, + -1, 37, -1, 70, 71, 72, -1, -1, 118, 119, 120, -1, -1, 105, -1, 107, 108, 109, -1, + -1, -1, 131, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, 70, 71, 72, 30, + 105, 131, 107, 108, 109, -1, 37, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, + -1, -1, -1, -1, -1, 30, -1, 131, -1, 34, 35, 30, 105, -1, 107, 108, 109, -1, -1, + -1, 70, 71, 72, -1, 117, 118, 119, 120, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, + 131, 37, -1, -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, 70, 71, 72, -1, 105, -1, + 107, 108, 109, -1, -1, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, 70, 71, 72, -1, + -1, -1, -1, -1, 105, 131, 107, 108, 109, 104, 105, -1, 107, 108, 109, -1, 117, 118, 119, + 120, -1, -1, 117, 118, 119, 120, -1, 3, -1, -1, 131, 105, -1, 107, 108, 109, 131, 13, + -1, -1, 30, 17, -1, 117, 118, 119, 120, 37, -1, -1, -1, 27, -1, 29, -1, -1, -1, + 131, -1, 3, -1, -1, -1, -1, 40, -1, 42, 43, -1, 13, -1, -1, -1, 17, -1, 51, + -1, -1, 54, 55, 70, 71, 72, 27, 60, 29, -1, -1, -1, -1, -1, 67, 68, -1, -1, + -1, 40, -1, 42, 43, -1, -1, 30, -1, -1, -1, -1, 51, 84, -1, 54, 55, -1, -1, + -1, 105, 60, 107, 108, 109, 30, -1, -1, 67, 68, -1, -1, 117, 118, 119, 120, -1, -1, + -1, -1, 63, 64, -1, -1, -1, 84, 131, 70, 71, 72, 30, -1, -1, -1, 34, 35, -1, + -1, 63, 64, -1, -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 105, -1, 107, 108, 109, -1, -1, -1, 70, 71, 72, -1, 117, + 118, 119, 120, -1, -1, 105, 30, 107, 108, 109, 34, 35, -1, 131, -1, -1, -1, 117, 118, + 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 131, 107, 108, 109, -1, -1, -1, + -1, -1, -1, -1, 117, 118, 119, 120, 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, 131, + -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 100, -1, -1, -1, -1, 105, -1, 107, 108, 109, -1, -1, -1, -1, -1, -1, -1, 117, 118, + 119, 120, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1, 131, -1, -1, -1, 30, -1, -1, + -1, 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 105, 30, 107, 108, 109, 34, -1, -1, -1, -1, -1, -1, 117, 118, 119, 120, 70, + 71, 72, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 30, -1, -1, -1, 34, 35, + 65, -1, -1, -1, 69, 70, 71, 72, -1, -1, 100, -1, -1, -1, -1, 105, -1, 107, 108, + 109, -1, -1, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, 70, 71, 72, -1, + -1, -1, 105, 131, 107, 108, 109, -1, -1, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, + -1, -1, -1, -1, -1, -1, -1, 100, -1, 131, -1, -1, 105, -1, 107, 108, 109, -1, -1, + -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 131, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, + -1, -1, -1, 105, -1, 107, 108, 109, -1, -1, -1, -1, -1, -1, -1, 117, 118, 119, 120, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 13, -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 27, -1, 29, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, 40, -1, 42, 43, -1, -1, + -1, -1, -1, -1, -1, 51, -1, -1, 54, 55, -1, -1, -1, -1, 60, -1, -1, -1, -1, + -1, -1, 67, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, 13, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, + 37, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, + -1, -1, -1, -1, -1, -1, -1, -1, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, + -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, + -1, -1, -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, + -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, -1, -1, -1, 44, -1, -1, + -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 102, 103, + -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 12, 13, -1, 15, -1, -1, -1, + -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, + -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, + -1, -1, -1, -1, -1, -1, -1, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, + -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, + -1, -1, 12, 13, -1, 15, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, + -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, + 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 69, 70, 71, 72, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, + 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 102, 103, -1, + 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 12, 13, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, + -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, 92, 93, -1, -1, + -1, -1, -1, -1, -1, -1, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, + -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, + -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, + 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 69, 70, 71, 72, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, + 87, -1, -1, 90, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 102, 103, -1, 105, + -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 10, -1, 12, 13, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, + -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, + -1, -1, -1, 79, -1, -1, -1, -1, -1, 85, 86, 87, -1, -1, 90, -1, -1, 93, -1, + -1, -1, -1, -1, 99, -1, -1, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, + -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, + -1, -1, 10, -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, + -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, -1, -1, -1, 44, -1, + -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, -1, -1, -1, 79, -1, -1, -1, -1, + -1, 85, 86, 87, -1, -1, 90, -1, -1, 93, -1, -1, -1, -1, -1, 99, -1, -1, 102, + 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 10, -1, 12, 13, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, + 35, -1, 37, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, + -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, + -1, 74, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, 85, 86, 87, -1, -1, 90, -1, + -1, 93, -1, -1, -1, -1, -1, 99, -1, -1, 102, 103, -1, 105, -1, 107, 108, 109, 110, + 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, + -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, + 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, + -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, + -1, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, + 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, + 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, + 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, + 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, + -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, 109, + 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, + 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, + -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, + -1, 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, + 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, 13, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, + -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, + -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, + 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, + -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, 100, 101, 102, 103, -1, 105, -1, 107, 108, + 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, + -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, + 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, + -1, 100, 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, + 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, + 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, + -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, + -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, + 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, + -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, 100, 101, 102, 103, -1, 105, -1, 107, + 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, + 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 65, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, + -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, + -1, -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, + 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, + 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, + -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, + -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, + -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, + 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, + -1, -1, -1, 129, -1, 131, -1, -1, -1, 8, -1, -1, 11, 12, 13, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, + 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, + -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, + -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, + -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, + -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, + -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, + -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 65, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, + -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 101, 102, + 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, + -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, + 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, + 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, + 93, -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, + -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, 129, -1, + 131, -1, -1, -1, 8, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, + -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, + 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, + -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, + 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, + 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, + -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, + -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, + 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, + -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, 107, + 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, + -1, 128, -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, + 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, 58, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, + -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, + -1, -1, 100, 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, + 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, + 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, + -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, + -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, -1, -1, -1, + 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, + -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, 100, 101, 102, 103, -1, 105, -1, + 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, + -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, + 78, 79, 80, -1, -1, -1, -1, 85, 86, 87, 88, 89, -1, -1, -1, 93, -1, -1, -1, + -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, + -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, + 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, + 30, 31, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, + -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, + -1, 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, -1, 80, -1, 82, -1, -1, 85, 86, + 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, + -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, + -1, -1, -1, 128, 129, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, 34, 35, -1, 37, -1, + -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, + -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, 69, 70, 71, 72, 73, 74, -1, 76, + 77, 78, -1, 80, -1, 82, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, + -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, + -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, 128, 129, -1, 131, -1, -1, + -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, + -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, -1, 77, 78, + 79, 80, 81, 82, -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, + -1, 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, -1, -1, -1, -1, 115, -1, + 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 4, + 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, -1, 23, + -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, 61, + -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, 80, + 81, 82, -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, 118, + 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 4, 5, 6, + -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, -1, 23, -1, -1, + -1, -1, -1, -1, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, 61, -1, -1, + -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, 80, 81, 82, + -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, -1, -1, + 102, 103, 104, 105, 106, 107, 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, 118, 119, 120, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 4, 5, 6, -1, -1, + 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, -1, + -1, -1, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, 61, -1, -1, -1, -1, + -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, 80, 81, 82, -1, -1, + 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, -1, -1, 102, 103, + 104, 105, 106, 107, 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, 118, 119, 120, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 4, 5, 6, -1, -1, 9, 10, + 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, -1, -1, -1, + 30, 31, 32, 33, -1, 35, -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, + -1, -1, 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, + 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, -1, -1, 102, 103, 104, 105, + 106, 107, 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, 118, 119, 120, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, + -1, 14, -1, 16, -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, + 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, 88, + 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, -1, -1, 102, 103, 104, 105, 106, 107, + 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 131, -1, -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, + -1, 16, -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, + -1, 35, -1, 37, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, + 72, 73, 74, 75, -1, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, 88, 89, -1, + 91, 92, -1, -1, -1, -1, -1, -1, 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + -1, -1, -1, -1, -1, 115, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 131, -1, -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, + -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, -1, 35, + -1, 37, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, + 74, 75, -1, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, + -1, -1, -1, -1, -1, -1, 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, -1, + -1, -1, -1, 115, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 131, -1, -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, + -1, 20, 21, -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, -1, 35, -1, -1, + -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, 73, 74, 75, + -1, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, + -1, -1, -1, -1, 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, -1, -1, -1, + -1, 115, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, + -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, + 21, -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, -1, 35, -1, -1, -1, -1, + -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, 69, 70, 71, 72, 73, 74, 75, -1, 77, + 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, + -1, -1, 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, -1, -1, -1, -1, 115, + -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, + 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, -1, + 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, -1, 35, -1, -1, -1, -1, -1, -1, + -1, -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 61, -1, 63, -1, 65, -1, -1, -1, 69, 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, + 80, 81, 82, -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, + 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, + 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 4, 5, + 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, -1, 23, -1, + -1, -1, -1, -1, -1, 30, 31, 32, 33, -1, 35, -1, -1, -1, -1, -1, -1, -1, -1, + 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, 61, -1, + -1, -1, 65, -1, -1, -1, 69, 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, 80, 81, + 82, -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, 118, 119, + 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 4, 5, 6, -1, + -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, + -1, -1, -1, 30, 31, 32, 33, -1, 35, -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, + -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, 61, -1, -1, -1, + 65, -1, -1, -1, 69, 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, 80, 81, 82, -1, + -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, 118, 119, 120, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 4, -1, -1, -1, -1, 9, + -1, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, 21, 22, 23, -1, -1, -1, -1, -1, + -1, 30, 31, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, + 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, 61, -1, 63, -1, -1, -1, + -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, + 86, 87, -1, -1, -1, 91, -1, 93, -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, + 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, + -1, -1, -1, -1, -1, 129, -1, 131, -1, -1, -1, 4, -1, -1, -1, -1, 9, -1, 11, + 12, 13, 14, -1, -1, -1, -1, -1, -1, 21, 22, 23, -1, -1, -1, -1, -1, -1, 30, + 31, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, + -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, 61, -1, 63, -1, -1, -1, -1, -1, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, + -1, -1, -1, 91, -1, 93, -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, + 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, + -1, -1, 128, 129, -1, 131, -1, -1, -1, 4, -1, -1, -1, -1, 9, -1, 11, 12, 13, + 14, -1, -1, -1, -1, -1, -1, 21, 22, 23, -1, -1, -1, -1, -1, -1, 30, 31, -1, + -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, + -1, 53, -1, 55, -1, -1, -1, -1, -1, 61, -1, 63, -1, -1, -1, -1, -1, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, -1, -1, + -1, 91, -1, 93, -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, + 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, + 128, 129, -1, 131, -1, -1, -1, 4, -1, -1, -1, -1, 9, -1, 11, 12, 13, 14, -1, + -1, -1, -1, -1, -1, 21, 22, 23, -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, 34, + 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, + -1, 55, -1, -1, -1, -1, -1, 61, -1, 63, -1, -1, -1, -1, -1, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, -1, -1, -1, 91, + -1, 93, -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, + 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, 128, 129, + -1, 131, -1, -1, -1, + 207, 198, 198, 207, 20, 208, 206, 90, 200, 199, 198, 66, 15, 200, 199, 198, 66, 15, 82, + 75, 214, 20, 82, 214, 122, 119, 80, 75, 212, 15, 212, 211, 14, 208, 15, 75, 15, 14, + 75, 24, 24, 82, 15, 77, 82, 199, 75, 77, 61, 141, 15, 15, 87, 119, 15, 101, 77, + 122, 100, 61, 61, 37, 77, 90, 15, 15, 66, 77, 82, 24, 82, 77, 15, 36, 194, 37, + 15, 37, 75, 37, 161, 205, 227, 161, 188, 228, 77, 82, 191, 77, 82, 15, 198, 15, 32, + 208, 207, 77, 199, 198, 15, 206, 198, 200, 199, 15, 208, 66, 199, 66, 200, 200, 198, 15, + 207, 20, 198, 66, 43, 198, 200, 66, 199, 20, 212, 200, 199, 214, 198, 66, 82, 15, 43, + 20, 82, 82, 43, 20, 61, 211, 61, 198, 227, 15, 100, 80, 90, 66, 206, 75, 77, 15, + 161, 82, 100, 49, 49, 77, 75, 77, 49, 15, 98, 66, 98, 66, 82, 66, 82, 82, 82, + 199, 198, 15, 66, 200, 66, 24, 82, 15, 61, 200, 199, 15, 2, 2, 77, 82, 66, 185, + 98, 100, 90, 99, 82, 77, 61, 77, 32, 2, 100, 32, 77, 77, 100, 198, 61, 2, 77, + 82, 80, 84, 61, 62, 32, 32, 61, 62, 61, 62, 82, 82, 82, 83, 61, 77, 78, 11, + 12, 32, 32, 82, 2, 35, 61, 62, 77, 32, 82, 61, 62, 61, 82, 105, 105, 61, 61, + 62, 77, 77, 32, 2, 32, 61, 105, 61, 62, 61, 15, 96, 61, 105, 32, 15, 2, 105, + 32, 57, 143, 143, 61, 62, 61, 20, 143, 2, 96, 156, 2, -1, 96, 32, 61, 62, 61, + 62, 2, 61, 96, 2, 15, -1, 96, 61, 32, 96, 43, 230, 231, 20, 61, 61, 143, 61, + 61, 32, 61, 96, 32, 61, 32, 61, 62, 183, 143, 143, 32, 196, 61, 32, 61, 62, 43, + 109, 61, 62, 61, 62, 61, 163, 116, 162, -1, 93, 92, 96, -1, 92, 61, 62, -1, 61, + 62, 61, 62, -1, 61, 62, 213, 92, 61, 62, 61, 62, 61, 62, 61, 62, 213, 61, 61, + 62, 61, 96, 61, 62, 61, 62, 78, 79, 61, 62, 82, 61, 62, 61, 62, 76, 61, 62, + 57, 163, 59, 163, -1, 96, 61, 62, 61, 62, 92, 93, 61, 62, 61, 161, 61, 62, 61, + 62, 61, 62, 61, 62, 61, 62, 196, 61, 17, 76, 109, 61, 62, 61, -1, 85, 61, 61, + 204, 61, 62, -1, 76, 92, 3, -1, 61, 62, 76, -1, -1, 76, 76, 61, 61, -1, 61, + -1, 61, 109, -1, 163, 109, -1, 218, 213, 116, -1, 76, 76, -1, 76, 61, 76, 96, 109, + 197, 177, 112, 177, 197, 109, 197, 130, 109, 109, -1, 76, -1, 184, 3, 115, 61, 61, 62, + 152, 177, -1, 126, 124, 177, 109, 109, 206, 109, -1, 109, -1, 197, 116, 197, -1, 197, 102, + -1, -1, 61, 120, -1, 88, 128, 223, 197, 92, 93, 238, 61, 132, 85, -1, 201, 76, 177, + 61, 177, 2, 173, -1, 177, 196, 177, 76, 197, 211, 197, 175, 61, 177, 76, 17, 109, 85, + 109, 61, 204, 61, 62, 116, 173, 116, 57, 76, 177, 61, 109, 32, 232, -1, 76, 232, 115, + 85, 78, -1, 109, 109, 85, 61, 76, -1, 115, 109, 116, 61, 17, -1, 85, -1, 116, 85, + 85, 232, 76, 61, 109, 109, 109, 112, 76, 85, 109, 109, 116, 116, -1, 113, 174, 116, 76, + 177, 109, 109, 234, 109, 109, 113, -1, 116, 61, 62, 116, 116, 17, 109, -1, 109, 61, -1, + 61, 61, 116, 109, 116, -1, 102, 30, -1, 61, -1, 117, -1, 76, -1, 76, 76, 204, 61, + 204, -1, 92, -1, -1, 76, -1, -1, -1, -1, 154, -1, 156, -1, 76, 17, -1, -1, -1, + 61, 61, -1, 102, 204, -1, 27, 106, 109, 110, 111, 109, 184, -1, -1, 76, 76, 61, 116, + 109, 110, 111, 61, -1, 204, 204, -1, -1, 109, 204, -1, 129, 76, 196, 17, 116, -1, 76, + 61, 204, 61, 102, 204, 204, 27, -1, 127, 210, 61, 109, 110, 111, 204, 76, 61, 76, -1, + 61, 62, -1, 3, -1, 61, 76, -1, 109, 110, 111, 61, 76, 109, 110, 111, 182, 78, 79, + -1, 76, 61, 61, -1, 102, 17, 76, -1, 61, 109, 110, 111, 61, 61, -1, 27, 76, 76, + -1, 109, 110, 111, 17, 76, -1, 109, -1, 76, 76, -1, 61, 62, 116, 109, -1, 30, -1, + 121, -1, 109, 116, 17, 102, -1, -1, -1, 116, 78, 118, 61, 109, 110, 111, -1, 30, 131, + 109, 110, 111, -1, 109, 109, 17, -1, 76, 17, 61, 116, 116, 17, 25, -1, 27, -1, 17, + 123, 125, -1, 30, 4, -1, 76, 30, 26, 27, 61, -1, -1, 64, 109, 102, 4, 17, -1, + -1, -1, 116, -1, -1, -1, 76, -1, -1, 184, 17, 30, 61, 102, -1, 61, -1, 59, 64, + 61, -1, -1, 17, 30, 61, -1, -1, 76, -1, -1, 76, -1, 102, -1, 76, 30, -1, -1, + -1, 76, 59, 36, 61, 38, 39, 40, 41, 42, -1, 17, 164, 165, 59, 102, 61, -1, 102, + 76, -1, 184, 102, -1, 30, -1, -1, 102, -1, 17, 36, 76, 38, 39, 40, 41, 42, 25, + -1, -1, -1, -1, 30, 31, -1, 102, -1, -1, -1, -1, -1, -1, 204, -1, -1, -1, -1, + 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, 61, -1, -1, + -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, 76, 29, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; diff --git a/src/libs/qmljs/parser/qmljsgrammar_p.h b/src/libs/qmljs/parser/qmljsgrammar_p.h index de07ea242fa..2e7172b41d1 100644 --- a/src/libs/qmljs/parser/qmljsgrammar_p.h +++ b/src/libs/qmljs/parser/qmljsgrammar_p.h @@ -167,15 +167,15 @@ public: T_XOR_EQ = 84, T_YIELD = 101, - ACCEPT_STATE = 1114, - RULE_COUNT = 622, - STATE_COUNT = 1115, + ACCEPT_STATE = 1087, + RULE_COUNT = 617, + STATE_COUNT = 1088, TERMINAL_COUNT = 135, - NON_TERMINAL_COUNT = 236, + NON_TERMINAL_COUNT = 240, - GOTO_INDEX_OFFSET = 1115, - GOTO_INFO_OFFSET = 7121, - GOTO_CHECK_OFFSET = 7121 + GOTO_INDEX_OFFSET = 1088, + GOTO_INFO_OFFSET = 7358, + GOTO_CHECK_OFFSET = 7358 }; static const char *const spell[]; diff --git a/src/libs/qmljs/parser/qmljsmemorypool_p.h b/src/libs/qmljs/parser/qmljsmemorypool_p.h index 6875d415cfa..40ac36ba5a7 100644 --- a/src/libs/qmljs/parser/qmljsmemorypool_p.h +++ b/src/libs/qmljs/parser/qmljsmemorypool_p.h @@ -37,10 +37,10 @@ // #include "qmljsglobal_p.h" -#include -#include +#include +#include -#include +#include QT_QML_BEGIN_NAMESPACE @@ -48,14 +48,12 @@ namespace QmlJS { class Managed; -class MemoryPool : public QSharedData +class MemoryPool { - MemoryPool(const MemoryPool &other); - void operator =(const MemoryPool &other); + Q_DISABLE_COPY_MOVE(MemoryPool); public: - MemoryPool() {} - + MemoryPool() = default; ~MemoryPool() { if (_blocks) { diff --git a/src/libs/qmljs/parser/qmljsparser.cpp b/src/libs/qmljs/parser/qmljsparser.cpp index 9d6ed072ad0..59e27f2d15c 100644 --- a/src/libs/qmljs/parser/qmljsparser.cpp +++ b/src/libs/qmljs/parser/qmljsparser.cpp @@ -33,9 +33,7 @@ #include - -#line 494 "qmljs.g" - +#line 495 "qmljs.g" #include "qmljsparser_p.h" @@ -255,3478 +253,3781 @@ bool Parser::parse(int startToken) #endif switch (r) { +#line 722 "qmljs.g" -#line 721 "qmljs.g" + case 0: { + sym(1).Node = sym(2).Node; + program = sym(1).Node; + } break; - case 0: { - sym(1).Node = sym(2).Node; - program = sym(1).Node; - } break; +#line 730 "qmljs.g" -#line 729 "qmljs.g" + case 1: { + sym(1).Node = sym(2).Node; + program = sym(1).Node; + } break; - case 1: { - sym(1).Node = sym(2).Node; - program = sym(1).Node; - } break; +#line 738 "qmljs.g" -#line 737 "qmljs.g" + case 2: { + sym(1).Node = sym(2).Node; + program = sym(1).Node; + } break; - case 2: { - sym(1).Node = sym(2).Node; - program = sym(1).Node; - } break; +#line 746 "qmljs.g" -#line 745 "qmljs.g" + case 3: { + sym(1).Node = sym(2).Node; + program = sym(1).Node; + } break; - case 3: { - sym(1).Node = sym(2).Node; - program = sym(1).Node; - } break; +#line 754 "qmljs.g" -#line 753 "qmljs.g" + case 4: { + sym(1).Node = sym(2).Node; + program = sym(1).Node; + } break; - case 4: { - sym(1).Node = sym(2).Node; - program = sym(1).Node; - } break; +#line 762 "qmljs.g" -#line 761 "qmljs.g" + case 5: { + sym(1).Node = sym(2).Node; + program = sym(1).Node; + } break; - case 5: { - sym(1).Node = sym(2).Node; - program = sym(1).Node; - } break; +#line 771 "qmljs.g" -#line 770 "qmljs.g" + case 6: { + sym(1).UiProgram = new (pool) + AST::UiProgram(sym(1).UiHeaderItemList, sym(2).UiObjectMemberList->finish()); + } break; - case 6: { - sym(1).UiProgram = new (pool) AST::UiProgram(sym(1).UiHeaderItemList, sym(2).UiObjectMemberList->finish()); - } break; +#line 779 "qmljs.g" -#line 778 "qmljs.g" + case 8: { + sym(1).Node = sym(1).UiHeaderItemList->finish(); + } break; - case 8: { - sym(1).Node = sym(1).UiHeaderItemList->finish(); - } break; +#line 786 "qmljs.g" -#line 785 "qmljs.g" + case 9: { + sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiPragma); + } break; - case 9: { - sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiPragma); - } break; +#line 793 "qmljs.g" -#line 792 "qmljs.g" + case 10: { + sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiImport); + } break; - case 10: { - sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiImport); - } break; +#line 800 "qmljs.g" -#line 799 "qmljs.g" + case 11: { + sym(1).Node = new (pool) + AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiPragma); + } break; - case 11: { - sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiPragma); - } break; +#line 807 "qmljs.g" -#line 806 "qmljs.g" + case 12: { + sym(1).Node = new (pool) + AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiImport); + } break; - case 12: { - sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiImport); - } break; +#line 819 "qmljs.g" -#line 818 "qmljs.g" + case 16: { + AST::UiPragma *pragma = new (pool) AST::UiPragma(stringRef(2)); + pragma->pragmaToken = loc(1); + pragma->semicolonToken = loc(3); + sym(1).Node = pragma; + } break; - case 16: { - AST::UiPragma *pragma = new (pool) AST::UiPragma(stringRef(2)); - pragma->pragmaToken = loc(1); - pragma->semicolonToken = loc(3); - sym(1).Node = pragma; - } break; +#line 829 "qmljs.g" -#line 830 "qmljs.g" + case 17: { + AST::UiPragma *pragma = new (pool) AST::UiPragma(stringRef(2), stringRef(4)); + pragma->pragmaToken = loc(1); + pragma->semicolonToken = loc(5); + sym(1).Node = pragma; + } break; - case 18: { - sym(1).UiImport->semicolonToken = loc(2); - } break; +#line 841 "qmljs.g" -#line 837 "qmljs.g" + case 19: { + sym(1).UiImport->semicolonToken = loc(2); + } break; - case 19: { - const int major = sym(1).dval; - const int minor = sym(3).dval; - if (major < 0 || major >= 255 || minor < 0 || minor >= 255) { - diagnostic_messages.append( - compileError(loc(1), - QLatin1String("Invalid version. Version numbers must be >= 0 and < 255."))); - return false; - } - auto version = new (pool) AST::UiVersionSpecifier(major, minor); - version->majorToken = loc(1); - version->minorToken = loc(3); - sym(1).UiVersionSpecifier = version; - } break; +#line 848 "qmljs.g" -#line 855 "qmljs.g" + case 20: { + const int major = sym(1).dval; + const int minor = sym(3).dval; + if (major < 0 || major >= 255 || minor < 0 || minor >= 255) { + diagnostic_messages.append(compileError( + loc(1), + QLatin1String("Invalid version. Version numbers must be >= 0 and < 255."))); + return false; + } + auto version = new (pool) AST::UiVersionSpecifier(major, minor); + version->majorToken = loc(1); + version->minorToken = loc(3); + sym(1).UiVersionSpecifier = version; + } break; - case 20: { - const int major = sym(1).dval; - if (major < 0 || major >= 255) { - diagnostic_messages.append( - compileError(loc(1), - QLatin1String("Invalid major version. Version numbers must be >= 0 and < 255."))); - return false; - } - auto version = new (pool) AST::UiVersionSpecifier(sym(1).dval); - version->majorToken = loc(1); - sym(1).UiVersionSpecifier = version; - } break; +#line 866 "qmljs.g" -#line 871 "qmljs.g" + case 21: { + const int major = sym(1).dval; + if (major < 0 || major >= 255) { + diagnostic_messages.append(compileError( + loc(1), + QLatin1String( + "Invalid major version. Version numbers must be >= 0 and < 255."))); + return false; + } + auto version = new (pool) AST::UiVersionSpecifier(sym(1).dval); + version->majorToken = loc(1); + sym(1).UiVersionSpecifier = version; + } break; - case 21: { - sym(1).UiImport->version = sym(2).UiVersionSpecifier; - sym(1).UiImport->semicolonToken = loc(3); - } break; +#line 882 "qmljs.g" -#line 879 "qmljs.g" - - case 22: { - sym(1).UiImport->version = sym(2).UiVersionSpecifier; - sym(1).UiImport->asToken = loc(3); - sym(1).UiImport->importIdToken = loc(4); - sym(1).UiImport->importId = stringRef(4); - sym(1).UiImport->semicolonToken = loc(5); - } break; + case 22: { + sym(1).UiImport->version = sym(2).UiVersionSpecifier; + sym(1).UiImport->semicolonToken = loc(3); + } break; #line 890 "qmljs.g" - case 23: { - sym(1).UiImport->asToken = loc(2); - sym(1).UiImport->importIdToken = loc(3); - sym(1).UiImport->importId = stringRef(3); - sym(1).UiImport->semicolonToken = loc(4); - } break; + case 23: { + sym(1).UiImport->version = sym(2).UiVersionSpecifier; + sym(1).UiImport->asToken = loc(3); + sym(1).UiImport->importIdToken = loc(4); + sym(1).UiImport->importId = stringRef(4); + sym(1).UiImport->semicolonToken = loc(5); + } break; -#line 900 "qmljs.g" +#line 901 "qmljs.g" - case 24: { - AST::UiImport *node = 0; + case 24: { + sym(1).UiImport->asToken = loc(2); + sym(1).UiImport->importIdToken = loc(3); + sym(1).UiImport->importId = stringRef(3); + sym(1).UiImport->semicolonToken = loc(4); + } break; - if (AST::StringLiteral *importIdLiteral = AST::cast(sym(2).Expression)) { - node = new (pool) AST::UiImport(importIdLiteral->value); - node->fileNameToken = loc(2); - } else if (AST::UiQualifiedId *qualifiedId = reparseAsQualifiedId(sym(2).Expression)) { - node = new (pool) AST::UiImport(qualifiedId); - node->fileNameToken = loc(2); - } +#line 911 "qmljs.g" - sym(1).Node = node; + case 25: { + AST::UiImport *node = 0; - if (node) { - node->importToken = loc(1); - } else { - diagnostic_messages.append(compileError(loc(1), - QLatin1String("Expected a qualified name id or a string literal"))); + if (AST::StringLiteral *importIdLiteral = AST::cast( + sym(2).Expression)) { + node = new (pool) AST::UiImport(importIdLiteral->value); + node->fileNameToken = loc(2); + } else if (AST::UiQualifiedId *qualifiedId = reparseAsQualifiedId(sym(2).Expression)) { + node = new (pool) AST::UiImport(qualifiedId); + node->fileNameToken = loc(2); + } - return false; // ### remove me - } - } break; + sym(1).Node = node; -#line 926 "qmljs.g" + if (node) { + node->importToken = loc(1); + } else { + diagnostic_messages.append( + compileError(loc(1), + QLatin1String( + "Expected a qualified name id or a string literal"))); - case 25: { - sym(1).Node = nullptr; - } break; + return false; // ### remove me + } + } break; -#line 933 "qmljs.g" +#line 937 "qmljs.g" - case 26: { - sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember); - } break; + case 26: { + sym(1).Node = nullptr; + } break; -#line 940 "qmljs.g" +#line 944 "qmljs.g" - case 27: { - AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1)); - node->identifierToken = loc(1); - sym(1).Node = node; - } break; + case 27: { + sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember); + } break; -#line 949 "qmljs.g" +#line 951 "qmljs.g" - case 28: { - AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); - node->dotToken = loc(2); - node->identifierToken = loc(3); - sym(1).Node = node; - } break; + case 28: { + AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1)); + node->identifierToken = loc(1); + sym(1).Node = node; + } break; -#line 959 "qmljs.g" +#line 960 "qmljs.g" - case 29: { - if (AST::UiQualifiedId *qualifiedId = reparseAsQualifiedId(sym(1).Expression)) { - sym(1).UiQualifiedId = qualifiedId; - } else { - sym(1).UiQualifiedId = 0; + case 29: { + AST::FieldMemberExpression *node = new (pool) + AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); + node->dotToken = loc(2); + node->identifierToken = loc(3); + sym(1).Node = node; + } break; - diagnostic_messages.append(compileError(loc(1), - QLatin1String("Expected a qualified name id"))); +#line 970 "qmljs.g" - return false; - } - AST::UiAnnotation *node = new (pool) AST::UiAnnotation(sym(1).UiQualifiedId, sym(2).UiObjectInitializer); - sym(1).Node = node; - } break; + case 30: { + if (AST::UiQualifiedId *qualifiedId = reparseAsQualifiedId(sym(1).Expression)) { + sym(1).UiQualifiedId = qualifiedId; + } else { + sym(1).UiQualifiedId = 0; -#line 977 "qmljs.g" + diagnostic_messages.append( + compileError(loc(1), QLatin1String("Expected a qualified name id"))); -case 30: { - sym(1).Node = sym(2).Node; -} break; + return false; + } + AST::UiAnnotation *node = new (pool) + AST::UiAnnotation(sym(1).UiQualifiedId, sym(2).UiObjectInitializer); + sym(1).Node = node; + } break; -#line 985 "qmljs.g" +#line 988 "qmljs.g" - case 31: { - sym(1).Node = new (pool) AST::UiAnnotationList(sym(1).UiAnnotation); - } break; + case 31: { + sym(1).Node = sym(2).Node; + } break; -#line 992 "qmljs.g" +#line 996 "qmljs.g" - case 32: { - AST::UiAnnotationList *node = new (pool) AST::UiAnnotationList(sym(1).UiAnnotationList, sym(2).UiAnnotation); - sym(1).Node = node; - } break; + case 32: { + sym(1).Node = new (pool) AST::UiAnnotationList(sym(1).UiAnnotation); + } break; -#line 1000 "qmljs.g" +#line 1003 "qmljs.g" - case 33: { - AST::UiObjectDefinition *node = sym(2).UiObjectDefinition; - node->annotations = sym(1).UiAnnotationList->finish(); - sym(1).Node = node; - } break; + case 33: { + AST::UiAnnotationList *node = new (pool) + AST::UiAnnotationList(sym(1).UiAnnotationList, sym(2).UiAnnotation); + sym(1).Node = node; + } break; #line 1011 "qmljs.g" - case 35: { - sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember); - } break; + case 34: { + AST::UiObjectDefinition *node = sym(2).UiObjectDefinition; + node->annotations = sym(1).UiAnnotationList->finish(); + sym(1).Node = node; + } break; -#line 1018 "qmljs.g" +#line 1022 "qmljs.g" - case 36: { - AST::UiObjectMemberList *node = new (pool) AST:: UiObjectMemberList(sym(1).UiObjectMemberList, sym(2).UiObjectMember); - sym(1).Node = node; - } break; + case 36: { + sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember); + } break; -#line 1026 "qmljs.g" +#line 1029 "qmljs.g" - case 37: { - sym(1).Node = new (pool) AST::UiArrayMemberList(sym(1).UiObjectMember); - } break; + case 37: { + AST::UiObjectMemberList *node = new (pool) + AST::UiObjectMemberList(sym(1).UiObjectMemberList, sym(2).UiObjectMember); + sym(1).Node = node; + } break; -#line 1033 "qmljs.g" +#line 1037 "qmljs.g" - case 38: { - AST::UiArrayMemberList *node = new (pool) AST::UiArrayMemberList(sym(1).UiArrayMemberList, sym(3).UiObjectMember); - node->commaToken = loc(2); - sym(1).Node = node; - } break; + case 38: { + sym(1).Node = new (pool) AST::UiArrayMemberList(sym(1).UiObjectMember); + } break; -#line 1042 "qmljs.g" +#line 1044 "qmljs.g" - case 39: { - AST::UiObjectInitializer *node = new (pool) AST::UiObjectInitializer((AST::UiObjectMemberList*)0); - node->lbraceToken = loc(1); - node->rbraceToken = loc(2); - sym(1).Node = node; - } break; + case 39: { + AST::UiArrayMemberList *node = new (pool) + AST::UiArrayMemberList(sym(1).UiArrayMemberList, sym(3).UiObjectMember); + node->commaToken = loc(2); + sym(1).Node = node; + } break; -#line 1052 "qmljs.g" +#line 1053 "qmljs.g" - case 40: { - AST::UiObjectInitializer *node = new (pool) AST::UiObjectInitializer(sym(2).UiObjectMemberList->finish()); - node->lbraceToken = loc(1); - node->rbraceToken = loc(3); - sym(1).Node = node; - } break; + case 40: { + AST::UiObjectInitializer *node = new (pool) + AST::UiObjectInitializer((AST::UiObjectMemberList *) 0); + node->lbraceToken = loc(1); + node->rbraceToken = loc(2); + sym(1).Node = node; + } break; -#line 1062 "qmljs.g" +#line 1063 "qmljs.g" - case 41: { - AST::UiObjectDefinition *node = new (pool) AST::UiObjectDefinition(sym(1).UiQualifiedId, sym(2).UiObjectInitializer); - sym(1).Node = node; - } break; + case 41: { + AST::UiObjectInitializer *node = new (pool) + AST::UiObjectInitializer(sym(2).UiObjectMemberList->finish()); + node->lbraceToken = loc(1); + node->rbraceToken = loc(3); + sym(1).Node = node; + } break; -#line 1070 "qmljs.g" +#line 1073 "qmljs.g" - case 42: { - AST::UiObjectMember *node = sym(2).UiObjectMember; - node->annotations = sym(1).UiAnnotationList->finish(); - sym(1).Node = sym(2).Node; - } break; + case 42: { + AST::UiObjectDefinition *node = new (pool) + AST::UiObjectDefinition(sym(1).UiQualifiedId, sym(2).UiObjectInitializer); + sym(1).Node = node; + } break; -#line 1083 "qmljs.g" +#line 1081 "qmljs.g" - case 45: { - AST::UiArrayBinding *node = new (pool) AST::UiArrayBinding(sym(1).UiQualifiedId, sym(5).UiArrayMemberList->finish()); - node->colonToken = loc(2); - node->lbracketToken = loc(4); - node->rbracketToken = loc(6); - sym(1).Node = node; - } break; + case 43: { + AST::UiObjectMember *node = sym(2).UiObjectMember; + node->annotations = sym(1).UiAnnotationList->finish(); + sym(1).Node = sym(2).Node; + } break; #line 1094 "qmljs.g" - case 46: { - AST::UiObjectBinding *node = new (pool) AST::UiObjectBinding( - sym(1).UiQualifiedId, sym(4).UiQualifiedId, sym(5).UiObjectInitializer); - node->colonToken = loc(2); - sym(1).Node = node; - } break; + case 46: { + AST::UiArrayBinding *node = new (pool) + AST::UiArrayBinding(sym(1).UiQualifiedId, sym(5).UiArrayMemberList->finish()); + node->colonToken = loc(2); + node->lbracketToken = loc(4); + node->rbracketToken = loc(6); + sym(1).Node = node; + } break; -#line 1104 "qmljs.g" +#line 1105 "qmljs.g" - case 47: { - AST::UiObjectBinding *node = new (pool) AST::UiObjectBinding( - sym(3).UiQualifiedId, sym(1).UiQualifiedId, sym(4).UiObjectInitializer); - node->colonToken = loc(2); - node->hasOnToken = true; - sym(1).Node = node; - } break; + case 47: { + AST::UiObjectBinding *node = new (pool) + AST::UiObjectBinding(sym(1).UiQualifiedId, + sym(4).UiQualifiedId, + sym(5).UiObjectInitializer); + node->colonToken = loc(2); + sym(1).Node = node; + } break; -#line 1116 "qmljs.g" +#line 1115 "qmljs.g" - case 48: { - AST::ObjectPattern *l = new (pool) AST::ObjectPattern(sym(3).PatternPropertyList->finish()); - l->lbraceToken = loc(1); - l->rbraceToken = loc(4); - AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(l); - node->semicolonToken = loc(5); - sym(1).Node = node; - } break; + case 48: { + AST::UiObjectBinding *node = new (pool) + AST::UiObjectBinding(sym(3).UiQualifiedId, + sym(1).UiQualifiedId, + sym(4).UiObjectInitializer); + node->colonToken = loc(2); + node->hasOnToken = true; + sym(1).Node = node; + } break; -#line 1129 "qmljs.g" +#line 1127 "qmljs.g" - case 49: { - AST::ObjectPattern *l = new (pool) AST::ObjectPattern(sym(3).PatternPropertyList->finish()); - l->lbraceToken = loc(1); - l->rbraceToken = loc(5); - AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(l); - node->semicolonToken = loc(6); - sym(1).Node = node; - } break; + case 49: { + AST::ObjectPattern *l = new (pool) + AST::ObjectPattern(sym(3).PatternPropertyList->finish()); + l->lbraceToken = loc(1); + l->rbraceToken = loc(4); + AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(l); + node->semicolonToken = loc(5); + sym(1).Node = node; + } break; -#line 1142 "qmljs.g" - case 50: Q_FALLTHROUGH(); -#line 1144 "qmljs.g" - case 51: Q_FALLTHROUGH(); -#line 1146 "qmljs.g" +#line 1140 "qmljs.g" - case 52: { - sym(1).Node = sym(3).Node; - } break; + case 50: { + AST::ObjectPattern *l = new (pool) + AST::ObjectPattern(sym(3).PatternPropertyList->finish()); + l->lbraceToken = loc(1); + l->rbraceToken = loc(5); + AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(l); + node->semicolonToken = loc(6); + sym(1).Node = node; + } break; -#line 1154 "qmljs.g" - case 53: Q_FALLTHROUGH(); -#line 1156 "qmljs.g" - case 54: Q_FALLTHROUGH(); -#line 1158 "qmljs.g" - case 55: Q_FALLTHROUGH(); -#line 1160 "qmljs.g" - case 56: Q_FALLTHROUGH(); -#line 1162 "qmljs.g" - case 57: Q_FALLTHROUGH(); -#line 1164 "qmljs.g" +#line 1153 "qmljs.g" + case 51: + Q_FALLTHROUGH(); +#line 1155 "qmljs.g" + case 52: + Q_FALLTHROUGH(); +#line 1157 "qmljs.g" - case 58: { - sym(1).Node = sym(2).Node; - } break; + case 53: { + sym(1).Node = sym(3).Node; + } break; +#line 1165 "qmljs.g" + case 54: + Q_FALLTHROUGH(); +#line 1167 "qmljs.g" + case 55: + Q_FALLTHROUGH(); +#line 1169 "qmljs.g" + case 56: + Q_FALLTHROUGH(); #line 1171 "qmljs.g" + case 57: + Q_FALLTHROUGH(); +#line 1173 "qmljs.g" + case 58: + Q_FALLTHROUGH(); +#line 1175 "qmljs.g" -case 59: -{ - AST::UiScriptBinding *node = new (pool) AST::UiScriptBinding(sym(1).UiQualifiedId, sym(3).Statement); - node->colonToken = loc(2); - sym(1).Node = node; - } break; + case 59: { + sym(1).Node = sym(2).Node; + } break; -#line 1181 "qmljs.g" - case 60: Q_FALLTHROUGH(); -#line 1183 "qmljs.g" - case 61: Q_FALLTHROUGH(); -#line 1185 "qmljs.g" +#line 1182 "qmljs.g" - case 62: { - AST::UiQualifiedId *node = new (pool) AST::UiQualifiedId(stringRef(1)); - node->identifierToken = loc(1); - sym(1).Node = node; - } break; + case 60: { + AST::UiScriptBinding *node = new (pool) + AST::UiScriptBinding(sym(1).UiQualifiedId, sym(3).Statement); + node->colonToken = loc(2); + sym(1).Node = node; + } break; +#line 1192 "qmljs.g" + case 61: + Q_FALLTHROUGH(); #line 1194 "qmljs.g" + case 62: + Q_FALLTHROUGH(); +#line 1196 "qmljs.g" - case 63: { - AST::UiQualifiedId *node = new (pool) AST::UiQualifiedId(sym(1).UiQualifiedId, stringRef(3)); - node->identifierToken = loc(3); - sym(1).Node = node; - } break; + case 63: { + AST::UiQualifiedId *node = new (pool) AST::UiQualifiedId(stringRef(1)); + node->identifierToken = loc(1); + sym(1).Node = node; + } break; -#line 1203 "qmljs.g" +#line 1205 "qmljs.g" - case 64: { - sym(1).Node = nullptr; - } break; + case 64: { + AST::UiQualifiedId *node = new (pool) + AST::UiQualifiedId(sym(1).UiQualifiedId, stringRef(3)); + node->identifierToken = loc(3); + sym(1).Node = node; + } break; -#line 1210 "qmljs.g" +#line 1214 "qmljs.g" - case 65: { - sym(1).Node = sym(1).UiParameterList->finish(); - } break; + case 65: { + sym(1).Node = nullptr; + } break; -#line 1217 "qmljs.g" +#line 1221 "qmljs.g" - case 66: { - AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(3).UiQualifiedId->finish(), stringRef(1)); - node->identifierToken = loc(1); - node->colonToken = loc(2); - node->propertyTypeToken = loc(3); - sym(1).Node = node; - } break; + case 66: { + sym(1).Node = sym(1).UiParameterList->finish(); + } break; #line 1228 "qmljs.g" - case 67: { - AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiQualifiedId->finish(), stringRef(2)); - node->propertyTypeToken = loc(1); - node->identifierToken = loc(2); - sym(1).Node = node; - } break; + case 67: { + AST::UiParameterList *node = new (pool) + AST::UiParameterList(sym(3).UiQualifiedId->finish(), stringRef(1)); + node->identifierToken = loc(1); + node->colonToken = loc(2); + node->propertyTypeToken = loc(3); + sym(1).Node = node; + } break; -#line 1238 "qmljs.g" +#line 1239 "qmljs.g" - case 68: { - AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiParameterList, sym(5).UiQualifiedId->finish(), stringRef(3)); - node->propertyTypeToken = loc(5); - node->commaToken = loc(2); - node->identifierToken = loc(3); - node->colonToken = loc(4); - sym(1).Node = node; - } break; + case 68: { + AST::UiParameterList *node = new (pool) + AST::UiParameterList(sym(1).UiQualifiedId->finish(), stringRef(2)); + node->propertyTypeToken = loc(1); + node->identifierToken = loc(2); + sym(1).Node = node; + } break; -#line 1250 "qmljs.g" +#line 1249 "qmljs.g" - case 69: { - AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiParameterList, sym(3).UiQualifiedId->finish(), stringRef(4)); - node->propertyTypeToken = loc(3); - node->commaToken = loc(2); - node->identifierToken = loc(4); - sym(1).Node = node; - } break; + case 69: { + AST::UiParameterList *node = new (pool) + AST::UiParameterList(sym(1).UiParameterList, + sym(5).UiQualifiedId->finish(), + stringRef(3)); + node->propertyTypeToken = loc(5); + node->commaToken = loc(2); + node->identifierToken = loc(3); + node->colonToken = loc(4); + sym(1).Node = node; + } break; #line 1261 "qmljs.g" - case 70: { - AST::UiPublicMember *node = new (pool) AST::UiPublicMember(nullptr, stringRef(2)); - node->type = AST::UiPublicMember::Signal; - node->propertyToken = loc(1); - node->typeToken = loc(2); - node->identifierToken = loc(2); - node->parameters = sym(4).UiParameterList; - node->semicolonToken = loc(6); - sym(1).Node = node; - } break; + case 70: { + AST::UiParameterList *node = new (pool) + AST::UiParameterList(sym(1).UiParameterList, + sym(3).UiQualifiedId->finish(), + stringRef(4)); + node->propertyTypeToken = loc(3); + node->commaToken = loc(2); + node->identifierToken = loc(4); + sym(1).Node = node; + } break; -#line 1275 "qmljs.g" +#line 1272 "qmljs.g" - case 71: { - AST::UiPublicMember *node = new (pool) AST::UiPublicMember(nullptr, stringRef(2)); - node->type = AST::UiPublicMember::Signal; - node->propertyToken = loc(1); - node->typeToken = loc(2); - node->identifierToken = loc(2); - node->semicolonToken = loc(3); - sym(1).Node = node; - } break; + case 71: { + AST::UiPublicMember *node = new (pool) AST::UiPublicMember(nullptr, stringRef(2)); + node->type = AST::UiPublicMember::Signal; + node->setPropertyToken(loc(1)); + node->typeToken = loc(2); + node->identifierToken = loc(2); + node->parameters = sym(4).UiParameterList; + node->semicolonToken = loc(6); + sym(1).Node = node; + } break; -#line 1288 "qmljs.g" +#line 1286 "qmljs.g" - case 72: { - AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(4).UiQualifiedId->finish(), stringRef(6)); - node->typeModifier = stringRef(2); - node->propertyToken = loc(1); - node->typeModifierToken = loc(2); - node->typeToken = loc(4); - node->identifierToken = loc(6); - node->semicolonToken = loc(7); - sym(1).Node = node; - } break; + case 72: { + AST::UiPublicMember *node = new (pool) AST::UiPublicMember(nullptr, stringRef(2)); + node->type = AST::UiPublicMember::Signal; + node->setPropertyToken(loc(1)); + node->typeToken = loc(2); + node->identifierToken = loc(2); + node->semicolonToken = loc(3); + sym(1).Node = node; + } break; -#line 1304 "qmljs.g" +#line 1312 "qmljs.g" - case 74: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isReadonlyMember = true; - node->readonlyToken = loc(1); - sym(1).Node = node; - } break; + case 76: { + AST::UiPropertyAttributes *node = sym(2).UiPropertyAttributes; + if (node->isRequired()) + diagnostic_messages.append( + compileError(node->requiredToken(), + QLatin1String("Duplicated 'required' attribute is not allowed."), + QtCriticalMsg)); + node->m_requiredToken = loc(1); + sym(1).UiPropertyAttributes = node; + } break; -#line 1314 "qmljs.g" +#line 1323 "qmljs.g" - case 75: { - AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3)); - node->propertyToken = loc(1); - node->typeToken = loc(2); - node->identifierToken = loc(3); - node->semicolonToken = loc(4); - sym(1).Node = node; - } break; + case 77: { + AST::UiPropertyAttributes *node = sym(2).UiPropertyAttributes; + if (node->isDefaultMember()) + diagnostic_messages.append( + compileError(node->requiredToken(), + QLatin1String("Duplicated 'default' attribute is not allowed."), + QtCriticalMsg)); + node->m_defaultToken = loc(1); + sym(1).UiPropertyAttributes = node; + } break; -#line 1329 "qmljs.g" +#line 1334 "qmljs.g" - case 77: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isDefaultMember = true; - node->defaultToken = loc(1); - sym(1).Node = node; - } break; + case 78: { + AST::UiPropertyAttributes *node = sym(2).UiPropertyAttributes; + if (node->isReadonly()) + diagnostic_messages.append( + compileError(node->requiredToken(), + QLatin1String("Duplicated 'readonly' attribute is not allowed."), + QtCriticalMsg)); + node->m_readonlyToken = loc(1); + sym(1).UiPropertyAttributes = node; + } break; -#line 1340 "qmljs.g" +#line 1345 "qmljs.g" - case 78: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isRequired = true; - node->requiredToken = loc(1); - sym(1).Node = node; - } break; + case 79: { + AST::UiPropertyAttributes *node = new (pool) AST::UiPropertyAttributes(); + node->m_propertyToken = loc(1); + sym(1).UiPropertyAttributes = node; + } break; -#line 1350 "qmljs.g" +#line 1354 "qmljs.g" - case 79: { - AST::UiPublicMember *node = sym(3).UiPublicMember; - node->isRequired = true; - node->requiredToken = loc(2); - node->isDefaultMember = true; - node->defaultToken = loc(1); - sym(1).Node = node; - } break; + case 80: { + AST::UiPublicMember *node = new (pool) + AST::UiPublicMember(sym(4).UiQualifiedId->finish(), stringRef(6)); + auto attributes = sym(1).UiPropertyAttributes; + node->setAttributes(attributes); + if (attributes->isReadonly()) + diagnostic_messages.append( + compileError(attributes->readonlyToken(), + QLatin1String("Read-only properties require an initializer."), + QtWarningMsg)); + node->typeModifier = stringRef(2); + node->typeModifierToken = loc(2); + node->typeToken = loc(4); + node->identifierToken = loc(6); + node->semicolonToken = loc(7); + sym(1).Node = node; + } break; -#line 1362 "qmljs.g" +#line 1373 "qmljs.g" - case 80: { - AST::UiPublicMember *node = sym(3).UiPublicMember; - node->isRequired = true; - node->requiredToken = loc(1); - node->isDefaultMember = true; - node->defaultToken = loc(2); - sym(1).Node = node; - } break; + case 82: { + AST::UiPublicMember *node = new (pool) + AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3)); + auto attributes = sym(1).UiPropertyAttributes; + if (attributes->isReadonly()) + diagnostic_messages.append( + compileError(attributes->readonlyToken(), + QLatin1String("Read-only properties require an initializer."), + QtCriticalMsg)); + node->setAttributes(attributes); + node->typeToken = loc(2); + node->identifierToken = loc(3); + node->semicolonToken = loc(4); + sym(1).Node = node; + } break; -#line 1374 "qmljs.g" +#line 1391 "qmljs.g" - case 81: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isDefaultMember = true; - node->defaultToken = loc(1); - sym(1).Node = node; - } break; - -#line 1384 "qmljs.g" - - case 82: { - AST::UiPublicMember *node = sym(3).UiPublicMember; - node->isDefaultMember = true; - node->defaultToken = loc(1); - node->isRequired = true; - node->requiredToken = loc(2); - sym(1).Node = node; - } break; + /* we need OptionalSemicolon because UiScriptStatement might already parse the last semicolon + and then we would miss a semicolon (see tests/auto/quick/qquickvisualdatamodel/data/objectlist.qml)*/ #line 1397 "qmljs.g" - case 83: { - AST::UiPublicMember *node = sym(3).UiPublicMember; - node->isDefaultMember = true; - node->defaultToken = loc(2); - node->isRequired = true; - node->requiredToken = loc(1); - sym(1).Node = node; - } break; + case 86: { + AST::UiRequired *node = new (pool) AST::UiRequired(stringRef(2)); + node->requiredToken = loc(1); + node->semicolonToken = loc(3); + sym(1).Node = node; + } break; #line 1409 "qmljs.g" -/* we need OptionalSemicolon because UiScriptStatement might already parse the last semicolon - and then we would miss a semicolon (see tests/auto/quick/qquickvisualdatamodel/data/objectlist.qml)*/ - -#line 1415 "qmljs.g" + case 88: { + AST::UiPublicMember *node = new (pool) + AST::UiPublicMember(sym(2).UiQualifiedId->finish(), + stringRef(3), + sym(5).Statement); + auto attributes = sym(1).UiPropertyAttributes; + if (attributes->isRequired()) + diagnostic_messages.append( + compileError(attributes->requiredToken(), + QLatin1String( + "Required properties with initializer do not make sense."), + QtCriticalMsg)); + node->setAttributes(attributes); + node->typeToken = loc(2); + node->identifierToken = loc(3); + node->colonToken = loc(4); + sym(1).Node = node; + } break; - case 86: { - AST::UiRequired *node = new (pool) AST::UiRequired(stringRef(2)); - node->requiredToken = loc(1); - node->semicolonToken = loc(3); - sym(1).Node = node; - } break; +#line 1426 "qmljs.g" -#line 1427 "qmljs.g" + case 90: { + AST::UiPublicMember *node = new (pool) + AST::UiPublicMember(sym(4).UiQualifiedId->finish(), stringRef(6)); + auto attributes = sym(1).UiPropertyAttributes; + if (attributes->isRequired()) + diagnostic_messages.append( + compileError(attributes->requiredToken(), + QLatin1String( + "Required properties with initializer do not make sense."), + QtCriticalMsg)); + node->setAttributes(attributes); + node->typeModifier = stringRef(2); + node->typeModifierToken = loc(2); + node->typeToken = loc(4); + node->identifierToken = loc(6); + node->semicolonToken = loc(7); // insert a fake ';' before ':' - case 88: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->requiredToken = loc(1); - node->isRequired = true; - sym(1).Node = node; - } break; + AST::UiQualifiedId *propertyName = new (pool) AST::UiQualifiedId(stringRef(6)); + propertyName->identifierToken = loc(6); + propertyName->next = nullptr; -#line 1437 "qmljs.g" + AST::UiArrayBinding *binding = new (pool) + AST::UiArrayBinding(propertyName, sym(9).UiArrayMemberList->finish()); + binding->colonToken = loc(7); + binding->lbracketToken = loc(8); + binding->rbracketToken = loc(10); - case 89: { - AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3), sym(5).Statement); - node->propertyToken = loc(1); - node->typeToken = loc(2); - node->identifierToken = loc(3); - node->colonToken = loc(4); - sym(1).Node = node; - } break; + node->binding = binding; -#line 1451 "qmljs.g" + sym(1).Node = node; + } break; - case 91: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isReadonlyMember = true; - node->readonlyToken = loc(1); - sym(1).Node = node; - } break; +#line 1457 "qmljs.g" -#line 1461 "qmljs.g" + case 92: { + AST::UiPublicMember *node = new (pool) + AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3)); + auto attributes = sym(1).UiPropertyAttributes; + if (attributes->isRequired()) + diagnostic_messages.append( + compileError(attributes->requiredToken(), + QLatin1String( + "Required properties with initializer do not make sense."), + QtWarningMsg)); + node->setAttributes(attributes); + node->typeToken = loc(2); + node->identifierToken = loc(3); + node->semicolonToken = loc(4); // insert a fake ';' before ':' - case 92: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isDefaultMember = true; - node->defaultToken = loc(1); - sym(1).Node = node; - } break; + AST::UiQualifiedId *propertyName = new (pool) AST::UiQualifiedId(stringRef(3)); + propertyName->identifierToken = loc(3); + propertyName->next = nullptr; -#line 1471 "qmljs.g" + AST::UiObjectBinding *binding = new (pool) + AST::UiObjectBinding(propertyName, + sym(6).UiQualifiedId, + sym(7).UiObjectInitializer); + binding->colonToken = loc(4); - case 93: { - AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(4).UiQualifiedId->finish(), stringRef(6)); - node->typeModifier = stringRef(2); - node->propertyToken = loc(1); - node->typeModifierToken = loc(2); - node->typeToken = loc(4); - node->identifierToken = loc(6); - node->semicolonToken = loc(7); // insert a fake ';' before ':' + node->binding = binding; - AST::UiQualifiedId *propertyName = new (pool) AST::UiQualifiedId(stringRef(6)); - propertyName->identifierToken = loc(6); - propertyName->next = 0; + sym(1).Node = node; + } break; - AST::UiArrayBinding *binding = new (pool) AST::UiArrayBinding(propertyName, sym(9).UiArrayMemberList->finish()); - binding->colonToken = loc(7); - binding->lbracketToken = loc(8); - binding->rbracketToken = loc(10); +#line 1485 "qmljs.g" - node->binding = binding; + case 94: { + auto node = new (pool) AST::UiSourceElement(sym(1).Node); + sym(1).Node = node; + } break; - sym(1).Node = node; - } break; +#line 1493 "qmljs.g" -#line 1499 "qmljs.g" + case 95: { + sym(1).Node = new (pool) AST::UiSourceElement(sym(1).Node); + } break; - case 95: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isReadonlyMember = true; - node->readonlyToken = loc(1); - sym(1).Node = node; - } break; +#line 1500 "qmljs.g" -#line 1509 "qmljs.g" + case 96: { + sym(1).Node = new (pool) AST::UiSourceElement(sym(1).Node); + } break; - case 96: { - AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3)); - node->propertyToken = loc(1); - node->typeToken = loc(2); - node->identifierToken = loc(3); - node->semicolonToken = loc(4); // insert a fake ';' before ':' +#line 1507 "qmljs.g" - AST::UiQualifiedId *propertyName = new (pool) AST::UiQualifiedId(stringRef(3)); - propertyName->identifierToken = loc(3); - propertyName->next = 0; + case 97: { + if (AST::ArrayMemberExpression *mem = AST::cast( + sym(1).Expression)) { + diagnostic_messages.append(compileError(mem->lbracketToken, + QLatin1String("Ignored annotation"), + QtWarningMsg)); - AST::UiObjectBinding *binding = new (pool) AST::UiObjectBinding( - propertyName, sym(6).UiQualifiedId, sym(7).UiObjectInitializer); - binding->colonToken = loc(4); + sym(1).Expression = mem->base; + } - node->binding = binding; + if (AST::UiQualifiedId *qualifiedId = reparseAsQualifiedId(sym(1).Expression)) { + sym(1).UiQualifiedId = qualifiedId; + } else { + sym(1).UiQualifiedId = 0; - sym(1).Node = node; - } break; + diagnostic_messages.append( + compileError(loc(1), QLatin1String("Expected a qualified name id"))); -#line 1534 "qmljs.g" + return false; // ### recover + } + } break; - case 98: { - AST::UiPublicMember *node = sym(2).UiPublicMember; - node->isReadonlyMember = true; - node->readonlyToken = loc(1); - sym(1).Node = node; - } break; +#line 1530 "qmljs.g" -#line 1544 "qmljs.g" + case 98: { + AST::UiEnumDeclaration *enumDeclaration = new (pool) + AST::UiEnumDeclaration(stringRef(2), sym(4).UiEnumMemberList->finish()); + enumDeclaration->enumToken = loc(1); + enumDeclaration->rbraceToken = loc(5); + sym(1).Node = enumDeclaration; + break; + } - case 99: { - auto node = new (pool) AST::UiSourceElement(sym(1).Node); - sym(1).Node = node; - } break; +#line 1541 "qmljs.g" -#line 1552 "qmljs.g" + case 99: { + if (!stringRef(2).front().isUpper()) { + diagnostic_messages.append( + compileError(loc(2), + QLatin1String("Type name must be upper case"), + QtWarningMsg)); + } + auto inlineComponent = new (pool) + AST::UiInlineComponent(stringRef(2), sym(4).UiObjectDefinition); + inlineComponent->componentToken = loc(1); + sym(1).Node = inlineComponent; + } break; - case 100: { - sym(1).Node = new (pool) AST::UiSourceElement(sym(1).Node); - } break; +#line 1554 "qmljs.g" -#line 1559 "qmljs.g" + case 100: { + AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(stringRef(1)); + node->memberToken = loc(1); + sym(1).Node = node; + break; + } - case 101: { - sym(1).Node = new (pool) AST::UiSourceElement(sym(1).Node); - } break; +#line 1564 "qmljs.g" -#line 1566 "qmljs.g" + case 101: { + AST::UiEnumMemberList *node = new (pool) + AST::UiEnumMemberList(stringRef(1), sym(3).dval); + node->memberToken = loc(1); + node->valueToken = loc(3); + sym(1).Node = node; + break; + } - case 102: { - if (AST::ArrayMemberExpression *mem = AST::cast(sym(1).Expression)) { - diagnostic_messages.append(compileError(mem->lbracketToken, - QLatin1String("Ignored annotation"), QtWarningMsg)); +#line 1575 "qmljs.g" - sym(1).Expression = mem->base; - } + case 102: { + AST::UiEnumMemberList *node = new (pool) + AST::UiEnumMemberList(sym(1).UiEnumMemberList, stringRef(3)); + node->memberToken = loc(3); + sym(1).Node = node; + break; + } - if (AST::UiQualifiedId *qualifiedId = reparseAsQualifiedId(sym(1).Expression)) { - sym(1).UiQualifiedId = qualifiedId; - } else { - sym(1).UiQualifiedId = 0; +#line 1585 "qmljs.g" - diagnostic_messages.append(compileError(loc(1), - QLatin1String("Expected a qualified name id"))); + case 103: { + AST::UiEnumMemberList *node = new (pool) + AST::UiEnumMemberList(sym(1).UiEnumMemberList, stringRef(3), sym(5).dval); + node->memberToken = loc(3); + node->valueToken = loc(5); + sym(1).Node = node; + break; + } - return false; // ### recover - } - } break; +#line 1629 "qmljs.g" -#line 1589 "qmljs.g" + case 130: { + sym(1).TypeArgumentList = new (pool) AST::TypeArgumentList(sym(1).Type); + } break; - case 103: { - AST::UiEnumDeclaration *enumDeclaration = new (pool) AST::UiEnumDeclaration(stringRef(2), sym(4).UiEnumMemberList->finish()); - enumDeclaration->enumToken = loc(1); - enumDeclaration->rbraceToken = loc(5); - sym(1).Node = enumDeclaration; - break; - } +#line 1636 "qmljs.g" -#line 1600 "qmljs.g" + case 131: { + sym(1).TypeArgumentList = new (pool) + AST::TypeArgumentList(sym(1).TypeArgumentList, sym(3).Type); + } break; - case 104: { - if (!stringRef(2).front().isUpper()) { - diagnostic_messages.append(compileError(loc(2), - QLatin1String("Type name must be upper case"), QtWarningMsg)); - } - auto inlineComponent = new (pool) AST::UiInlineComponent(stringRef(2), sym(4).UiObjectDefinition); - inlineComponent->componentToken = loc(1); - sym(1).Node = inlineComponent; - } break; +#line 1643 "qmljs.g" -#line 1613 "qmljs.g" + case 132: { + sym(1).Type = new (pool) + AST::Type(sym(1).UiQualifiedId, sym(3).TypeArgumentList->finish()); + } break; - case 105: { - AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(stringRef(1)); - node->memberToken = loc(1); - sym(1).Node = node; - break; - } +#line 1650 "qmljs.g" -#line 1623 "qmljs.g" + case 133: { + AST::UiQualifiedId *id = new (pool) AST::UiQualifiedId(stringRef(1)); + id->identifierToken = loc(1); + sym(1).Type = new (pool) AST::Type(id->finish()); + } break; - case 106: { - AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(stringRef(1), sym(3).dval); - node->memberToken = loc(1); - node->valueToken = loc(3); - sym(1).Node = node; - break; - } +#line 1659 "qmljs.g" -#line 1634 "qmljs.g" + case 134: { + sym(1).Type = new (pool) AST::Type(sym(1).UiQualifiedId); + } break; - case 107: { - AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(sym(1).UiEnumMemberList, stringRef(3)); - node->memberToken = loc(3); - sym(1).Node = node; - break; - } +#line 1666 "qmljs.g" -#line 1644 "qmljs.g" + case 135: { + sym(1).TypeAnnotation = new (pool) AST::TypeAnnotation(sym(2).Type); + sym(1).TypeAnnotation->colonToken = loc(1); + } break; - case 108: { - AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(sym(1).UiEnumMemberList, stringRef(3), sym(5).dval); - node->memberToken = loc(3); - node->valueToken = loc(5); - sym(1).Node = node; - break; - } +#line 1675 "qmljs.g" -#line 1688 "qmljs.g" + case 137: { + sym(1).TypeAnnotation = nullptr; + } break; - case 135: { - sym(1).TypeArgumentList = new (pool) AST::TypeArgumentList(sym(1).Type); - } break; +#line 1686 "qmljs.g" + + case 138: { + AST::ThisExpression *node = new (pool) AST::ThisExpression(); + node->thisToken = loc(1); + sym(1).Node = node; + } break; #line 1695 "qmljs.g" - case 136: { - sym(1).TypeArgumentList = new (pool) AST::TypeArgumentList(sym(1).TypeArgumentList, sym(3).Type); - } break; + case 139: { + AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1)); + node->identifierToken = loc(1); + sym(1).Node = node; + } break; -#line 1702 "qmljs.g" +#line 1713 "qmljs.g" - case 137: { - sym(1).Type = new (pool) AST::Type(sym(1).UiQualifiedId, sym(3).TypeArgumentList->finish()); - } break; + case 148: { + if (coverExpressionType != CE_ParenthesizedExpression) { + syntaxError(coverExpressionErrorLocation, "Expected token ')'."); + return false; + } + } break; -#line 1709 "qmljs.g" +#line 1724 "qmljs.g" - case 138: { - AST::UiQualifiedId *id = new (pool) AST::UiQualifiedId(stringRef(1)); - id->identifierToken = loc(1); - sym(1).Type = new (pool) AST::Type(id->finish()); - } break; + case 149: { + AST::NestedExpression *node = new (pool) AST::NestedExpression(sym(2).Expression); + node->lparenToken = loc(1); + node->rparenToken = loc(3); + sym(1).Node = node; + coverExpressionType = CE_ParenthesizedExpression; + } break; -#line 1718 "qmljs.g" +#line 1735 "qmljs.g" - case 139: { - sym(1).Type = new (pool) AST::Type(sym(1).UiQualifiedId); - } break; + case 150: { + sym(1).Node = nullptr; + coverExpressionErrorLocation = loc(2); + coverExpressionType = CE_FormalParameterList; + } break; -#line 1725 "qmljs.g" +#line 1744 "qmljs.g" - case 140: { - sym(1).TypeAnnotation = new (pool) AST::TypeAnnotation(sym(2).Type); - sym(1).TypeAnnotation->colonToken = loc(1); - } break; - -#line 1734 "qmljs.g" - - case 142: { - sym(1).TypeAnnotation = nullptr; - } break; - -#line 1745 "qmljs.g" - - case 143: { - AST::ThisExpression *node = new (pool) AST::ThisExpression(); - node->thisToken = loc(1); - sym(1).Node = node; - } break; + case 151: { + AST::FormalParameterList *node = (new (pool) + AST::FormalParameterList(nullptr, + sym(2).PatternElement)) + ->finish(pool); + sym(1).Node = node; + coverExpressionErrorLocation = loc(2); + coverExpressionType = CE_FormalParameterList; + } break; #line 1754 "qmljs.g" - case 144: { - AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1)); - node->identifierToken = loc(1); - sym(1).Node = node; - } break; + case 152: { + AST::FormalParameterList *list = sym(2).Expression->reparseAsFormalParameterList(pool); + if (!list) { + syntaxError(loc(1), "Invalid Arrow parameter list."); + return false; + } + if (sym(4).Node) { + list = new (pool) AST::FormalParameterList(list, sym(4).PatternElement); + } + coverExpressionErrorLocation = loc(4); + coverExpressionType = CE_FormalParameterList; + sym(1).Node = list->finish(pool); + } break; -#line 1772 "qmljs.g" +#line 1771 "qmljs.g" - case 153: { - if (coverExpressionType != CE_ParenthesizedExpression) { - syntaxError(coverExpressionErrorLocation, "Expected token ')'."); - return false; - } - } break; + case 153: { + AST::NullExpression *node = new (pool) AST::NullExpression(); + node->nullToken = loc(1); + sym(1).Node = node; + } break; -#line 1783 "qmljs.g" +#line 1780 "qmljs.g" - case 154: { - AST::NestedExpression *node = new (pool) AST::NestedExpression(sym(2).Expression); - node->lparenToken = loc(1); - node->rparenToken = loc(3); - sym(1).Node = node; - coverExpressionType = CE_ParenthesizedExpression; - } break; + case 154: { + AST::TrueLiteral *node = new (pool) AST::TrueLiteral(); + node->trueToken = loc(1); + sym(1).Node = node; + } break; -#line 1794 "qmljs.g" +#line 1789 "qmljs.g" - case 155: { - sym(1).Node = nullptr; - coverExpressionErrorLocation = loc(2); - coverExpressionType = CE_FormalParameterList; - } break; + case 155: { + AST::FalseLiteral *node = new (pool) AST::FalseLiteral(); + node->falseToken = loc(1); + sym(1).Node = node; + } break; -#line 1803 "qmljs.g" +#line 1798 "qmljs.g" - case 156: { - AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(nullptr, sym(2).PatternElement))->finish(pool); - sym(1).Node = node; - coverExpressionErrorLocation = loc(2); - coverExpressionType = CE_FormalParameterList; - } break; + case 156: { + AST::NumericLiteral *node = new (pool) AST::NumericLiteral(sym(1).dval); + node->literalToken = loc(1); + sym(1).Node = node; + } break; -#line 1813 "qmljs.g" +#line 1807 "qmljs.g" + case 157: + Q_FALLTHROUGH(); +#line 1810 "qmljs.g" - case 157: { - AST::FormalParameterList *list = sym(2).Expression->reparseAsFormalParameterList(pool); - if (!list) { - syntaxError(loc(1), "Invalid Arrow parameter list."); - return false; - } - if (sym(4).Node) { - list = new (pool) AST::FormalParameterList(list, sym(4).PatternElement); - } - coverExpressionErrorLocation = loc(4); - coverExpressionType = CE_FormalParameterList; - sym(1).Node = list->finish(pool); - } break; + case 158: { + AST::StringLiteral *node = new (pool) AST::StringLiteral(stringRef(1)); + node->literalToken = loc(1); + sym(1).Node = node; + } break; -#line 1830 "qmljs.g" +#line 1822 "qmljs.g" - case 158: { - AST::NullExpression *node = new (pool) AST::NullExpression(); - node->nullToken = loc(1); - sym(1).Node = node; - } break; + { + Lexer::RegExpBodyPrefix prefix; + case 159: + prefix = Lexer::NoPrefix; + goto scan_regexp; -#line 1839 "qmljs.g" +#line 1834 "qmljs.g" - case 159: { - AST::TrueLiteral *node = new (pool) AST::TrueLiteral(); - node->trueToken = loc(1); - sym(1).Node = node; - } break; + case 160: + prefix = Lexer::EqualPrefix; + goto scan_regexp; -#line 1848 "qmljs.g" + scan_regexp : { + bool rx = lexer->scanRegExp(prefix); + if (!rx) { + diagnostic_messages.append( + compileError(location(lexer), lexer->errorMessage())); + return false; + } - case 160: { - AST::FalseLiteral *node = new (pool) AST::FalseLiteral(); - node->falseToken = loc(1); - sym(1).Node = node; - } break; + loc(1).length = lexer->tokenLength(); + yylloc = loc(1); // adjust the location of the current token -#line 1857 "qmljs.g" + AST::RegExpLiteral *node = new (pool) + AST::RegExpLiteral(driver->newStringRef(lexer->regExpPattern()), + lexer->regExpFlags()); + node->literalToken = loc(1); + sym(1).Node = node; + } break; + } - case 161: { - AST::NumericLiteral *node = new (pool) AST::NumericLiteral(sym(1).dval); - node->literalToken = loc(1); - sym(1).Node = node; - } break; +#line 1858 "qmljs.g" -#line 1866 "qmljs.g" - case 162: Q_FALLTHROUGH(); -#line 1869 "qmljs.g" + case 161: { + AST::PatternElementList *list = nullptr; + if (sym(2).Elision) + list = (new (pool) AST::PatternElementList(sym(2).Elision, nullptr))->finish(); + AST::ArrayPattern *node = new (pool) AST::ArrayPattern(list); + node->lbracketToken = loc(1); + node->rbracketToken = loc(3); + sym(1).Node = node; + } break; - case 163: { - AST::StringLiteral *node = new (pool) AST::StringLiteral(stringRef(1)); - node->literalToken = loc(1); - sym(1).Node = node; - } break; +#line 1871 "qmljs.g" + + case 162: { + AST::ArrayPattern *node = new (pool) + AST::ArrayPattern(sym(2).PatternElementList->finish()); + node->lbracketToken = loc(1); + node->rbracketToken = loc(3); + sym(1).Node = node; + } break; #line 1881 "qmljs.g" -{ - Lexer::RegExpBodyPrefix prefix; - case 164: - prefix = Lexer::NoPrefix; - goto scan_regexp; + case 163: { + auto *list = sym(2).PatternElementList; + if (sym(4).Elision) { + AST::PatternElementList *l = new (pool) + AST::PatternElementList(sym(4).Elision, nullptr); + list = list->append(l); + } + AST::ArrayPattern *node = new (pool) AST::ArrayPattern(list->finish()); + node->lbracketToken = loc(1); + node->commaToken = loc(3); + node->rbracketToken = loc(5); + sym(1).Node = node; + Q_ASSERT(node->isValidArrayLiteral()); + } break; -#line 1893 "qmljs.g" +#line 1898 "qmljs.g" - case 165: - prefix = Lexer::EqualPrefix; - goto scan_regexp; + case 164: { + AST::PatternElement *e = new (pool) AST::PatternElement(sym(1).Expression); + sym(1).Node = new (pool) AST::PatternElementList(nullptr, e); + } break; - scan_regexp: { - bool rx = lexer->scanRegExp(prefix); - if (!rx) { - diagnostic_messages.append(compileError(location(lexer), lexer->errorMessage())); - return false; - } +#line 1906 "qmljs.g" - loc(1).length = lexer->tokenLength(); - yylloc = loc(1); // adjust the location of the current token + case 165: { + AST::PatternElement *e = new (pool) AST::PatternElement(sym(2).Expression); + sym(1).Node = new (pool) AST::PatternElementList(sym(1).Elision->finish(), e); + } break; - AST::RegExpLiteral *node = new (pool) AST::RegExpLiteral(driver->newStringRef(lexer->regExpPattern()), lexer->regExpFlags()); - node->literalToken = loc(1); - sym(1).Node = node; - } break; -} +#line 1914 "qmljs.g" -#line 1917 "qmljs.g" + case 166: { + AST::PatternElementList *node = new (pool) + AST::PatternElementList(sym(1).Elision, sym(2).PatternElement); + sym(1).Node = node; + } break; - case 166: { - AST::PatternElementList *list = nullptr; - if (sym(2).Elision) - list = (new (pool) AST::PatternElementList(sym(2).Elision, nullptr))->finish(); - AST::ArrayPattern *node = new (pool) AST::ArrayPattern(list); - node->lbracketToken = loc(1); - node->rbracketToken = loc(3); - sym(1).Node = node; - } break; +#line 1922 "qmljs.g" -#line 1930 "qmljs.g" + case 167: { + AST::PatternElement *e = new (pool) AST::PatternElement(sym(4).Expression); + AST::PatternElementList *node = new (pool) AST::PatternElementList(sym(3).Elision, e); + sym(1).Node = sym(1).PatternElementList->append(node); + } break; - case 167: { - AST::ArrayPattern *node = new (pool) AST::ArrayPattern(sym(2).PatternElementList->finish()); - node->lbracketToken = loc(1); - node->rbracketToken = loc(3); - sym(1).Node = node; - } break; +#line 1931 "qmljs.g" -#line 1940 "qmljs.g" + case 168: { + AST::PatternElementList *node = new (pool) + AST::PatternElementList(sym(3).Elision, sym(4).PatternElement); + sym(1).Node = sym(1).PatternElementList->append(node); + } break; - case 168: { - auto *list = sym(2).PatternElementList; - if (sym(4).Elision) { - AST::PatternElementList *l = new (pool) AST::PatternElementList(sym(4).Elision, nullptr); - list = list->append(l); - } - AST::ArrayPattern *node = new (pool) AST::ArrayPattern(list->finish()); - node->lbracketToken = loc(1); - node->commaToken = loc(3); - node->rbracketToken = loc(5); - sym(1).Node = node; - Q_ASSERT(node->isValidArrayLiteral()); - } break; +#line 1939 "qmljs.g" + + case 169: { + AST::Elision *node = new (pool) AST::Elision(); + node->commaToken = loc(1); + sym(1).Node = node; + } break; + +#line 1948 "qmljs.g" + + case 170: { + AST::Elision *node = new (pool) AST::Elision(sym(1).Elision); + node->commaToken = loc(2); + sym(1).Node = node; + } break; #line 1957 "qmljs.g" - case 169: { - AST::PatternElement *e = new (pool) AST::PatternElement(sym(1).Expression); - sym(1).Node = new (pool) AST::PatternElementList(nullptr, e); - } break; + case 171: { + sym(1).Node = nullptr; + } break; -#line 1965 "qmljs.g" +#line 1964 "qmljs.g" - case 170: { - AST::PatternElement *e = new (pool) AST::PatternElement(sym(2).Expression); - sym(1).Node = new (pool) AST::PatternElementList(sym(1).Elision->finish(), e); - } break; + case 172: { + sym(1).Node = sym(1).Elision->finish(); + } break; -#line 1973 "qmljs.g" +#line 1971 "qmljs.g" - case 171: { - AST::PatternElementList *node = new (pool) AST::PatternElementList(sym(1).Elision, sym(2).PatternElement); - sym(1).Node = node; - } break; + case 173: { + AST::PatternElement *node = new (pool) + AST::PatternElement(sym(2).Expression, AST::PatternElement::SpreadElement); + sym(1).Node = node; + } break; -#line 1981 "qmljs.g" +#line 1979 "qmljs.g" - case 172: { - AST::PatternElement *e = new (pool) AST::PatternElement(sym(4).Expression); - AST::PatternElementList *node = new (pool) AST::PatternElementList(sym(3).Elision, e); - sym(1).Node = sym(1).PatternElementList->append(node); - } break; + case 174: { + AST::ObjectPattern *node = new (pool) AST::ObjectPattern(); + node->lbraceToken = loc(1); + node->rbraceToken = loc(2); + sym(1).Node = node; + } break; -#line 1990 "qmljs.g" +#line 1989 "qmljs.g" - case 173: { - AST::PatternElementList *node = new (pool) AST::PatternElementList(sym(3).Elision, sym(4).PatternElement); - sym(1).Node = sym(1).PatternElementList->append(node); - } break; + case 175: { + AST::ObjectPattern *node = new (pool) + AST::ObjectPattern(sym(2).PatternPropertyList->finish()); + node->lbraceToken = loc(1); + node->rbraceToken = loc(3); + sym(1).Node = node; + } break; -#line 1998 "qmljs.g" +#line 1999 "qmljs.g" - case 174: { - AST::Elision *node = new (pool) AST::Elision(); - node->commaToken = loc(1); - sym(1).Node = node; - } break; + case 176: { + AST::ObjectPattern *node = new (pool) + AST::ObjectPattern(sym(2).PatternPropertyList->finish()); + node->lbraceToken = loc(1); + node->rbraceToken = loc(4); + sym(1).Node = node; + } break; -#line 2007 "qmljs.g" +#line 2010 "qmljs.g" + case 177: + Q_FALLTHROUGH(); +#line 2012 "qmljs.g" - case 175: { - AST::Elision *node = new (pool) AST::Elision(sym(1).Elision); - node->commaToken = loc(2); - sym(1).Node = node; - } break; + case 178: { + sym(1).Node = new (pool) AST::PatternPropertyList(sym(1).PatternProperty); + } break; -#line 2016 "qmljs.g" +#line 2019 "qmljs.g" + case 179: + Q_FALLTHROUGH(); +#line 2021 "qmljs.g" - case 176: { - sym(1).Node = nullptr; - } break; + case 180: { + AST::PatternPropertyList *node = new (pool) + AST::PatternPropertyList(sym(1).PatternPropertyList, sym(3).PatternProperty); + sym(1).Node = node; + } break; -#line 2023 "qmljs.g" +#line 2029 "qmljs.g" - case 177: { - sym(1).Node = sym(1).Elision->finish(); - } break; + case 181: { + AST::IdentifierPropertyName *name = new (pool) + AST::IdentifierPropertyName(stringRef(1)); + name->propertyNameToken = loc(1); + AST::IdentifierExpression *expr = new (pool) AST::IdentifierExpression(stringRef(1)); + expr->identifierToken = loc(1); + AST::PatternProperty *node = new (pool) AST::PatternProperty(name, expr); + node->colonToken = loc(2); + sym(1).Node = node; + } break; -#line 2030 "qmljs.g" +#line 2045 "qmljs.g" - case 178: { - AST::PatternElement *node = new (pool) AST::PatternElement(sym(2).Expression, AST::PatternElement::SpreadElement); - sym(1).Node = node; - } break; + case 183: { + AST::IdentifierPropertyName *name = new (pool) + AST::IdentifierPropertyName(stringRef(1)); + name->propertyNameToken = loc(1); + AST::IdentifierExpression *left = new (pool) AST::IdentifierExpression(stringRef(1)); + left->identifierToken = loc(1); + // if initializer is an anonymous function expression, we need to assign identifierref as it's name + if (auto *f = asAnonymousFunctionDefinition(sym(2).Expression)) + f->name = stringRef(1); + if (auto *c = asAnonymousClassDefinition(sym(2).Expression)) + c->name = stringRef(1); + AST::BinaryExpression *assignment = new (pool) + AST::BinaryExpression(left, QSOperator::Assign, sym(2).Expression); + assignment->operatorToken = loc(2); + AST::PatternProperty *node = new (pool) AST::PatternProperty(name, assignment); + node->colonToken = loc(1); + sym(1).Node = node; -#line 2038 "qmljs.g" + } break; - case 179: { - AST::ObjectPattern *node = new (pool) AST::ObjectPattern(); - node->lbraceToken = loc(1); - node->rbraceToken = loc(2); - sym(1).Node = node; - } break; +#line 2066 "qmljs.g" + case 184: + Q_FALLTHROUGH(); +#line 2068 "qmljs.g" -#line 2048 "qmljs.g" + case 185: { + AST::PatternProperty *node = new (pool) + AST::PatternProperty(sym(1).PropertyName, sym(3).Expression); + if (auto *c = asAnonymousClassDefinition(sym(3).Expression)) { + if (!AST::cast(sym(1).PropertyName)) + c->name = driver->newStringRef(sym(1).PropertyName->asString()); + } + node->colonToken = loc(2); + sym(1).Node = node; + } break; - case 180: { - AST::ObjectPattern *node = new (pool) AST::ObjectPattern(sym(2).PatternPropertyList->finish()); - node->lbraceToken = loc(1); - node->rbraceToken = loc(3); - sym(1).Node = node; - } break; +#line 2086 "qmljs.g" -#line 2058 "qmljs.g" + case 189: { + AST::IdentifierPropertyName *node = new (pool) + AST::IdentifierPropertyName(stringRef(1)); + node->propertyNameToken = loc(1); + sym(1).Node = node; + } break; - case 181: { - AST::ObjectPattern *node = new (pool) AST::ObjectPattern(sym(2).PatternPropertyList->finish()); - node->lbraceToken = loc(1); - node->rbraceToken = loc(4); - sym(1).Node = node; - } break; +#line 2095 "qmljs.g" + case 190: + Q_FALLTHROUGH(); +#line 2097 "qmljs.g" -#line 2069 "qmljs.g" - case 182: Q_FALLTHROUGH(); -#line 2071 "qmljs.g" + case 191: { + AST::StringLiteralPropertyName *node = new (pool) + AST::StringLiteralPropertyName(stringRef(1)); + node->propertyNameToken = loc(1); + sym(1).Node = node; + } break; - case 183: { - sym(1).Node = new (pool) AST::PatternPropertyList(sym(1).PatternProperty); - } break; +#line 2106 "qmljs.g" + case 192: + Q_FALLTHROUGH(); +#line 2108 "qmljs.g" -#line 2078 "qmljs.g" - case 184: Q_FALLTHROUGH(); -#line 2080 "qmljs.g" + case 193: { + AST::NumericLiteralPropertyName *node = new (pool) + AST::NumericLiteralPropertyName(sym(1).dval); + node->propertyNameToken = loc(1); + sym(1).Node = node; + } break; - case 185: { - AST::PatternPropertyList *node = new (pool) AST::PatternPropertyList(sym(1).PatternPropertyList, sym(3).PatternProperty); - sym(1).Node = node; - } break; +#line 2159 "qmljs.g" -#line 2088 "qmljs.g" + case 234: { + AST::ComputedPropertyName *node = new (pool) + AST::ComputedPropertyName(sym(2).Expression); + node->propertyNameToken = loc(1); + sym(1).Node = node; + } break; - case 186: { - AST::IdentifierPropertyName *name = new (pool) AST::IdentifierPropertyName(stringRef(1)); - name->propertyNameToken = loc(1); - AST::IdentifierExpression *expr = new (pool) AST::IdentifierExpression(stringRef(1)); - expr->identifierToken = loc(1); - AST::PatternProperty *node = new (pool) AST::PatternProperty(name, expr); - node->colonToken = loc(2); - sym(1).Node = node; - } break; +#line 2168 "qmljs.g" + case 235: + Q_FALLTHROUGH(); +#line 2170 "qmljs.g" -#line 2104 "qmljs.g" + case 236: { + sym(1) = sym(2); + } break; - case 188: { - AST::IdentifierPropertyName *name = new (pool) AST::IdentifierPropertyName(stringRef(1)); - name->propertyNameToken = loc(1); - AST::IdentifierExpression *left = new (pool) AST::IdentifierExpression(stringRef(1)); - left->identifierToken = loc(1); - // if initializer is an anonymous function expression, we need to assign identifierref as it's name - if (auto *f = asAnonymousFunctionDefinition(sym(2).Expression)) - f->name = stringRef(1); - if (auto *c = asAnonymousClassDefinition(sym(2).Expression)) - c->name = stringRef(1); - AST::BinaryExpression *assignment = new (pool) AST::BinaryExpression(left, QSOperator::Assign, sym(2).Expression); - AST::PatternProperty *node = new (pool) AST::PatternProperty(name, assignment); - node->colonToken = loc(1); - sym(1).Node = node; +#line 2178 "qmljs.g" + case 237: + Q_FALLTHROUGH(); +#line 2180 "qmljs.g" - } break; + case 238: { + sym(1).Node = nullptr; + } break; -#line 2124 "qmljs.g" - case 189: Q_FALLTHROUGH(); -#line 2126 "qmljs.g" +#line 2190 "qmljs.g" - case 190: { - AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(1).PropertyName, sym(3).Expression); - if (auto *c = asAnonymousClassDefinition(sym(3).Expression)) { - if (!AST::cast(sym(1).PropertyName)) - c->name = driver->newStringRef(sym(1).PropertyName->asString()); - } - node->colonToken = loc(2); - sym(1).Node = node; - } break; + case 241: { + AST::TemplateLiteral *node = new (pool) + AST::TemplateLiteral(stringRef(1), rawStringRef(1), nullptr); + node->literalToken = loc(1); + node->hasNoSubstitution = true; + sym(1).Node = node; + } break; -#line 2144 "qmljs.g" +#line 2200 "qmljs.g" - case 194: { - AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1)); - node->propertyNameToken = loc(1); - sym(1).Node = node; - } break; + case 242: { + AST::TemplateLiteral *node = new (pool) + AST::TemplateLiteral(stringRef(1), rawStringRef(1), nullptr); + node->literalToken = loc(1); + sym(1).Node = node; + } break; -#line 2153 "qmljs.g" - case 195: Q_FALLTHROUGH(); -#line 2155 "qmljs.g" +#line 2209 "qmljs.g" + case 243: + Q_FALLTHROUGH(); +#line 2212 "qmljs.g" - case 196: { - AST::StringLiteralPropertyName *node = new (pool) AST::StringLiteralPropertyName(stringRef(1)); - node->propertyNameToken = loc(1); - sym(1).Node = node; - } break; + case 244: { + AST::TemplateLiteral *node = new (pool) + AST::TemplateLiteral(stringRef(1), rawStringRef(1), sym(2).Expression); + node->next = sym(3).Template; + node->literalToken = loc(1); + sym(1).Node = node; + } break; -#line 2164 "qmljs.g" - case 197: Q_FALLTHROUGH(); -#line 2166 "qmljs.g" +#line 2225 "qmljs.g" - case 198: { - AST::NumericLiteralPropertyName *node = new (pool) AST::NumericLiteralPropertyName(sym(1).dval); - node->propertyNameToken = loc(1); - sym(1).Node = node; - } break; + case 246: { + AST::SuperLiteral *node = new (pool) AST::SuperLiteral(); + node->superToken = loc(1); + sym(1).Node = node; + } break; -#line 2217 "qmljs.g" +#line 2235 "qmljs.g" + case 247: + Q_FALLTHROUGH(); +#line 2237 "qmljs.g" - case 239: { - AST::ComputedPropertyName *node = new (pool) AST::ComputedPropertyName(sym(2).Expression); - node->propertyNameToken = loc(1); - sym(1).Node = node; - } break; + case 248: { + AST::ArrayMemberExpression *node = new (pool) + AST::ArrayMemberExpression(sym(1).Expression, sym(3).Expression); + node->lbracketToken = loc(2); + node->rbracketToken = loc(4); + sym(1).Node = node; + } break; -#line 2226 "qmljs.g" - case 240: Q_FALLTHROUGH(); -#line 2228 "qmljs.g" +#line 2246 "qmljs.g" -case 241: { - sym(1) = sym(2); -} break; + case 249: { + AST::ArrayMemberExpression *node = new (pool) + AST::ArrayMemberExpression(sym(1).Expression, sym(4).Expression); + node->lbracketToken = loc(3); + node->rbracketToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; -#line 2236 "qmljs.g" - case 242: Q_FALLTHROUGH(); -#line 2238 "qmljs.g" +#line 2258 "qmljs.g" + case 250: { + AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1)); + node->identifierToken = loc(1); + sym(1).Node = node; + } + Q_FALLTHROUGH(); - case 243: { - sym(1).Node = nullptr; - } break; +#line 2266 "qmljs.g" + case 251: + Q_FALLTHROUGH(); +#line 2268 "qmljs.g" -#line 2248 "qmljs.g" - case 246: Q_FALLTHROUGH(); -#line 2251 "qmljs.g" + case 252: { + AST::FieldMemberExpression *node = new (pool) + AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); + node->dotToken = loc(2); + node->identifierToken = loc(3); + sym(1).Node = node; + } break; - case 247: { - AST::TemplateLiteral *node = new (pool) AST::TemplateLiteral(stringRef(1), rawStringRef(1), nullptr); - node->literalToken = loc(1); - sym(1).Node = node; - } break; +#line 2278 "qmljs.g" -#line 2260 "qmljs.g" - case 248: Q_FALLTHROUGH(); -#line 2263 "qmljs.g" + case 253: { + AST::FieldMemberExpression *node = new (pool) + AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); + node->dotToken = loc(2); + node->identifierToken = loc(3); + node->isOptional = true; + sym(1).Node = node; + } break; - case 249: { - AST::TemplateLiteral *node = new (pool) AST::TemplateLiteral(stringRef(1), rawStringRef(1), sym(2).Expression); - node->next = sym(3).Template; - node->literalToken = loc(1); - sym(1).Node = node; - } break; +#line 2291 "qmljs.g" -#line 2276 "qmljs.g" + case 255: { + AST::NewMemberExpression *node = new (pool) + AST::NewMemberExpression(sym(2).Expression, sym(4).ArgumentList); + node->newToken = loc(1); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + sym(1).Node = node; + } break; - case 251: { - AST::SuperLiteral *node = new (pool) AST::SuperLiteral(); - node->superToken = loc(1); - sym(1).Node = node; - } break; +#line 2307 "qmljs.g" -#line 2286 "qmljs.g" - case 252: Q_FALLTHROUGH(); -#line 2288 "qmljs.g" - - case 253: { - AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(3).Expression); - node->lbracketToken = loc(2); - node->rbracketToken = loc(4); - sym(1).Node = node; - } break; - -#line 2297 "qmljs.g" - - case 254: { - AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(4).Expression); - node->lbracketToken = loc(3); - node->rbracketToken = loc(5); - node->isOptional = true; - sym(1).Node = node; - } break; - -#line 2309 "qmljs.g" - case 255: - { - AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1)); - node->identifierToken= loc(1); - sym(1).Node = node; - } Q_FALLTHROUGH(); + case 258: { + AST::NewExpression *node = new (pool) AST::NewExpression(sym(2).Expression); + node->newToken = loc(1); + sym(1).Node = node; + } break; #line 2317 "qmljs.g" - case 256: Q_FALLTHROUGH(); + case 259: + Q_FALLTHROUGH(); #line 2319 "qmljs.g" - case 257: { - AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); - node->dotToken = loc(2); - node->identifierToken = loc(3); - sym(1).Node = node; - } break; + case 260: { + AST::TaggedTemplate *node = new (pool) + AST::TaggedTemplate(sym(1).Expression, sym(2).Template); + sym(1).Node = node; + } break; -#line 2329 "qmljs.g" +#line 2327 "qmljs.g" - case 258: { - AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); - node->dotToken = loc(2); - node->identifierToken = loc(3); - node->isOptional = true; - sym(1).Node = node; - } break; + case 261: { + AST::CallExpression *node = new (pool) + AST::CallExpression(sym(1).Expression, sym(3).ArgumentList); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + sym(1).Node = node; + } break; -#line 2342 "qmljs.g" +#line 2337 "qmljs.g" - case 260: { - AST::NewMemberExpression *node = new (pool) AST::NewMemberExpression(sym(2).Expression, sym(4).ArgumentList); - node->newToken = loc(1); - node->lparenToken = loc(3); - node->rparenToken = loc(5); - sym(1).Node = node; - } break; + case 262: { + AST::CallExpression *node = new (pool) + AST::CallExpression(sym(1).Expression, sym(4).ArgumentList); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; -#line 2358 "qmljs.g" +#line 2348 "qmljs.g" + case 263: + Q_FALLTHROUGH(); +#line 2350 "qmljs.g" - case 263: { - AST::NewExpression *node = new (pool) AST::NewExpression(sym(2).Expression); - node->newToken = loc(1); - sym(1).Node = node; - } break; + case 264: { + AST::CallExpression *node = new (pool) + AST::CallExpression(sym(1).Expression, sym(3).ArgumentList); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + sym(1).Node = node; + } break; -#line 2368 "qmljs.g" - case 264: Q_FALLTHROUGH(); -#line 2370 "qmljs.g" +#line 2360 "qmljs.g" - case 265: { - AST::TaggedTemplate *node = new (pool) AST::TaggedTemplate(sym(1).Expression, sym(2).Template); - sym(1).Node = node; - } break; + case 265: { + AST::CallExpression *node = new (pool) + AST::CallExpression(sym(1).Expression, sym(4).ArgumentList); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; -#line 2378 "qmljs.g" +#line 2372 "qmljs.g" - case 266: { - AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(3).ArgumentList); - node->lparenToken = loc(2); - node->rparenToken = loc(4); - sym(1).Node = node; - } break; + case 266: { + AST::ArrayMemberExpression *node = new (pool) + AST::ArrayMemberExpression(sym(1).Expression, sym(3).Expression); + node->lbracketToken = loc(2); + node->rbracketToken = loc(4); + sym(1).Node = node; + } break; -#line 2388 "qmljs.g" +#line 2382 "qmljs.g" - case 267: { - AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(4).ArgumentList); - node->lparenToken = loc(3); - node->rparenToken = loc(5); - node->isOptional = true; - sym(1).Node = node; - } break; + case 267: { + AST::ArrayMemberExpression *node = new (pool) + AST::ArrayMemberExpression(sym(1).Expression, sym(4).Expression); + node->lbracketToken = loc(3); + node->rbracketToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; -#line 2399 "qmljs.g" - case 268: Q_FALLTHROUGH(); -#line 2401 "qmljs.g" +#line 2393 "qmljs.g" - case 269: { - AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(3).ArgumentList); - node->lparenToken = loc(2); - node->rparenToken = loc(4); - sym(1).Node = node; - } break; + case 268: { + AST::FieldMemberExpression *node = new (pool) + AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); + node->dotToken = loc(2); + node->identifierToken = loc(3); + sym(1).Node = node; + } break; -#line 2411 "qmljs.g" +#line 2403 "qmljs.g" - case 270: { - AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(4).ArgumentList); - node->lparenToken = loc(3); - node->rparenToken = loc(5); - node->isOptional = true; - sym(1).Node = node; - } break; + case 269: { + AST::FieldMemberExpression *node = new (pool) + AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); + node->dotToken = loc(2); + node->identifierToken = loc(3); + node->isOptional = true; + sym(1).Node = node; + } break; +#line 2414 "qmljs.g" + + case 270: { + sym(1).Node = nullptr; + } break; + +#line 2421 "qmljs.g" + case 271: + Q_FALLTHROUGH(); #line 2423 "qmljs.g" - case 271: { - AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(3).Expression); - node->lbracketToken = loc(2); - node->rbracketToken = loc(4); - sym(1).Node = node; - } break; + case 272: { + sym(1).Node = sym(1).ArgumentList->finish(); + } break; -#line 2433 "qmljs.g" +#line 2430 "qmljs.g" - case 272: { - AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(4).Expression); - node->lbracketToken = loc(3); - node->rbracketToken = loc(5); - node->isOptional = true; - sym(1).Node = node; - } break; + case 273: { + sym(1).Node = new (pool) AST::ArgumentList(sym(1).Expression); + } break; -#line 2444 "qmljs.g" +#line 2437 "qmljs.g" - case 273: { - AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); - node->dotToken = loc(2); - node->identifierToken = loc(3); - sym(1).Node = node; - } break; + case 274: { + AST::ArgumentList *node = new (pool) AST::ArgumentList(sym(2).Expression); + node->isSpreadElement = true; + sym(1).Node = node; + } break; -#line 2454 "qmljs.g" +#line 2446 "qmljs.g" - case 274: { - AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); - node->dotToken = loc(2); - node->identifierToken = loc(3); - node->isOptional = true; - sym(1).Node = node; - } break; + case 275: { + AST::ArgumentList *node = new (pool) + AST::ArgumentList(sym(1).ArgumentList, sym(3).Expression); + node->commaToken = loc(2); + sym(1).Node = node; + } break; -#line 2465 "qmljs.g" +#line 2455 "qmljs.g" - case 275: { - sym(1).Node = nullptr; - } break; + case 276: { + AST::ArgumentList *node = new (pool) + AST::ArgumentList(sym(1).ArgumentList, sym(4).Expression); + node->commaToken = loc(2); + node->isSpreadElement = true; + sym(1).Node = node; + } break; -#line 2472 "qmljs.g" - case 276: Q_FALLTHROUGH(); -#line 2474 "qmljs.g" +#line 2470 "qmljs.g" - case 277: { - sym(1).Node = sym(1).ArgumentList->finish(); - } break; + case 280: { + AST::PostIncrementExpression *node = new (pool) + AST::PostIncrementExpression(sym(1).Expression); + node->incrementToken = loc(2); + sym(1).Node = node; + } break; -#line 2481 "qmljs.g" +#line 2479 "qmljs.g" - case 278: { - sym(1).Node = new (pool) AST::ArgumentList(sym(1).Expression); - } break; + case 281: { + AST::PostDecrementExpression *node = new (pool) + AST::PostDecrementExpression(sym(1).Expression); + node->decrementToken = loc(2); + sym(1).Node = node; + } break; #line 2488 "qmljs.g" - case 279: { - AST::ArgumentList *node = new (pool) AST::ArgumentList(sym(2).Expression); - node->isSpreadElement = true; - sym(1).Node = node; - } break; + case 282: { + AST::PreIncrementExpression *node = new (pool) + AST::PreIncrementExpression(sym(2).Expression); + node->incrementToken = loc(1); + sym(1).Node = node; + } break; #line 2497 "qmljs.g" - case 280: { - AST::ArgumentList *node = new (pool) AST::ArgumentList(sym(1).ArgumentList, sym(3).Expression); - node->commaToken = loc(2); - sym(1).Node = node; - } break; + case 283: { + AST::PreDecrementExpression *node = new (pool) + AST::PreDecrementExpression(sym(2).Expression); + node->decrementToken = loc(1); + sym(1).Node = node; + } break; -#line 2506 "qmljs.g" +#line 2508 "qmljs.g" - case 281: { - AST::ArgumentList *node = new (pool) AST::ArgumentList(sym(1).ArgumentList, sym(4).Expression); - node->commaToken = loc(2); - node->isSpreadElement = true; - sym(1).Node = node; - } break; + case 285: { + AST::DeleteExpression *node = new (pool) AST::DeleteExpression(sym(2).Expression); + node->deleteToken = loc(1); + sym(1).Node = node; + } break; -#line 2521 "qmljs.g" +#line 2517 "qmljs.g" - case 285: { - AST::PostIncrementExpression *node = new (pool) AST::PostIncrementExpression(sym(1).Expression); - node->incrementToken = loc(2); - sym(1).Node = node; - } break; + case 286: { + AST::VoidExpression *node = new (pool) AST::VoidExpression(sym(2).Expression); + node->voidToken = loc(1); + sym(1).Node = node; + } break; -#line 2530 "qmljs.g" +#line 2526 "qmljs.g" - case 286: { - AST::PostDecrementExpression *node = new (pool) AST::PostDecrementExpression(sym(1).Expression); - node->decrementToken = loc(2); - sym(1).Node = node; - } break; + case 287: { + AST::TypeOfExpression *node = new (pool) AST::TypeOfExpression(sym(2).Expression); + node->typeofToken = loc(1); + sym(1).Node = node; + } break; -#line 2539 "qmljs.g" +#line 2535 "qmljs.g" - case 287: { - AST::PreIncrementExpression *node = new (pool) AST::PreIncrementExpression(sym(2).Expression); - node->incrementToken = loc(1); - sym(1).Node = node; - } break; + case 288: { + AST::UnaryPlusExpression *node = new (pool) + AST::UnaryPlusExpression(sym(2).Expression); + node->plusToken = loc(1); + sym(1).Node = node; + } break; -#line 2548 "qmljs.g" +#line 2544 "qmljs.g" - case 288: { - AST::PreDecrementExpression *node = new (pool) AST::PreDecrementExpression(sym(2).Expression); - node->decrementToken = loc(1); - sym(1).Node = node; - } break; + case 289: { + AST::UnaryMinusExpression *node = new (pool) + AST::UnaryMinusExpression(sym(2).Expression); + node->minusToken = loc(1); + sym(1).Node = node; + } break; -#line 2559 "qmljs.g" +#line 2553 "qmljs.g" - case 290: { - AST::DeleteExpression *node = new (pool) AST::DeleteExpression(sym(2).Expression); - node->deleteToken = loc(1); - sym(1).Node = node; - } break; + case 290: { + AST::TildeExpression *node = new (pool) AST::TildeExpression(sym(2).Expression); + node->tildeToken = loc(1); + sym(1).Node = node; + } break; -#line 2568 "qmljs.g" +#line 2562 "qmljs.g" - case 291: { - AST::VoidExpression *node = new (pool) AST::VoidExpression(sym(2).Expression); - node->voidToken = loc(1); - sym(1).Node = node; - } break; + case 291: { + AST::NotExpression *node = new (pool) AST::NotExpression(sym(2).Expression); + node->notToken = loc(1); + sym(1).Node = node; + } break; -#line 2577 "qmljs.g" +#line 2573 "qmljs.g" - case 292: { - AST::TypeOfExpression *node = new (pool) AST::TypeOfExpression(sym(2).Expression); - node->typeofToken = loc(1); - sym(1).Node = node; - } break; + case 293: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::Exp, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2586 "qmljs.g" +#line 2584 "qmljs.g" - case 293: { - AST::UnaryPlusExpression *node = new (pool) AST::UnaryPlusExpression(sym(2).Expression); - node->plusToken = loc(1); - sym(1).Node = node; - } break; + case 295: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, sym(2).ival, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2595 "qmljs.g" +#line 2593 "qmljs.g" - case 294: { - AST::UnaryMinusExpression *node = new (pool) AST::UnaryMinusExpression(sym(2).Expression); - node->minusToken = loc(1); - sym(1).Node = node; - } break; + case 296: { + sym(1).ival = QSOperator::Mul; + } break; -#line 2604 "qmljs.g" +#line 2600 "qmljs.g" - case 295: { - AST::TildeExpression *node = new (pool) AST::TildeExpression(sym(2).Expression); - node->tildeToken = loc(1); - sym(1).Node = node; - } break; + case 297: { + sym(1).ival = QSOperator::Div; + } break; -#line 2613 "qmljs.g" +#line 2607 "qmljs.g" - case 296: { - AST::NotExpression *node = new (pool) AST::NotExpression(sym(2).Expression); - node->notToken = loc(1); - sym(1).Node = node; - } break; + case 298: { + sym(1).ival = QSOperator::Mod; + } break; -#line 2624 "qmljs.g" +#line 2616 "qmljs.g" - case 298: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Exp, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 300: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::Add, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2635 "qmljs.g" +#line 2625 "qmljs.g" - case 300: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, sym(2).ival, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 301: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::Sub, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2644 "qmljs.g" +#line 2636 "qmljs.g" - case 301: { - sym(1).ival = QSOperator::Mul; - } break; + case 303: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::LShift, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2651 "qmljs.g" +#line 2645 "qmljs.g" - case 302: { - sym(1).ival = QSOperator::Div; - } break; + case 304: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::RShift, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2658 "qmljs.g" +#line 2654 "qmljs.g" - case 303: { - sym(1).ival = QSOperator::Mod; - } break; + case 305: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::URShift, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2667 "qmljs.g" +#line 2666 "qmljs.g" + case 308: + Q_FALLTHROUGH(); +#line 2668 "qmljs.g" - case 305: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Add, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 309: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, sym(2).ival, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2676 "qmljs.g" +#line 2677 "qmljs.g" - case 306: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Sub, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 310: { + sym(1).ival = QSOperator::Lt; + } break; -#line 2687 "qmljs.g" +#line 2683 "qmljs.g" - case 308: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::LShift, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 311: { + sym(1).ival = QSOperator::Gt; + } break; -#line 2696 "qmljs.g" +#line 2689 "qmljs.g" - case 309: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::RShift, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 312: { + sym(1).ival = QSOperator::Le; + } break; -#line 2705 "qmljs.g" +#line 2695 "qmljs.g" - case 310: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::URShift, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 313: { + sym(1).ival = QSOperator::Ge; + } break; -#line 2717 "qmljs.g" - case 313: Q_FALLTHROUGH(); -#line 2719 "qmljs.g" +#line 2701 "qmljs.g" - case 314: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, sym(2).ival, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 314: { + sym(1).ival = QSOperator::InstanceOf; + } break; +#line 2707 "qmljs.g" + + case 315: { + sym(1).ival = QSOperator::As; + } break; + +#line 2714 "qmljs.g" + + case 316: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::In, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; + +#line 2726 "qmljs.g" + case 319: + Q_FALLTHROUGH(); #line 2728 "qmljs.g" - case 315: { - sym(1).ival = QSOperator::Lt; - } break; + case 320: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, sym(2).ival, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2734 "qmljs.g" +#line 2737 "qmljs.g" - case 316: { - sym(1).ival = QSOperator::Gt; - } break; + case 321: { + sym(1).ival = QSOperator::Equal; + } break; -#line 2740 "qmljs.g" +#line 2743 "qmljs.g" - case 317: { - sym(1).ival = QSOperator::Le; - } break; + case 322: { + sym(1).ival = QSOperator::NotEqual; + } break; -#line 2746 "qmljs.g" +#line 2749 "qmljs.g" - case 318: { - sym(1).ival = QSOperator::Ge; - } break; + case 323: { + sym(1).ival = QSOperator::StrictEqual; + } break; -#line 2752 "qmljs.g" +#line 2755 "qmljs.g" - case 319: { - sym(1).ival = QSOperator::InstanceOf; - } break; + case 324: { + sym(1).ival = QSOperator::StrictNotEqual; + } break; -#line 2758 "qmljs.g" +#line 2766 "qmljs.g" + case 327: + Q_FALLTHROUGH(); +#line 2768 "qmljs.g" - case 320: { - sym(1).ival = QSOperator::As; - } break; + case 328: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::BitAnd, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2765 "qmljs.g" +#line 2781 "qmljs.g" + case 331: + Q_FALLTHROUGH(); +#line 2783 "qmljs.g" - case 321: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::In, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 332: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::BitXor, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2777 "qmljs.g" - case 324: Q_FALLTHROUGH(); -#line 2779 "qmljs.g" +#line 2795 "qmljs.g" + case 335: + Q_FALLTHROUGH(); +#line 2797 "qmljs.g" - case 325: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, sym(2).ival, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 336: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::BitOr, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2788 "qmljs.g" +#line 2809 "qmljs.g" + case 339: + Q_FALLTHROUGH(); +#line 2811 "qmljs.g" - case 326: { - sym(1).ival = QSOperator::Equal; - } break; + case 340: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::And, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2794 "qmljs.g" +#line 2823 "qmljs.g" + case 343: + Q_FALLTHROUGH(); +#line 2825 "qmljs.g" - case 327: { - sym(1).ival = QSOperator::NotEqual; - } break; + case 344: { + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::Or, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2800 "qmljs.g" +#line 2837 "qmljs.g" + case 347: + Q_FALLTHROUGH(); +#line 2839 "qmljs.g" - case 328: { - sym(1).ival = QSOperator::StrictEqual; - } break; + case 348: { + auto *lhs = sym(1).Expression; + auto *rhs = sym(3).Expression; -#line 2806 "qmljs.g" + // Check if lhs or rhs contain || or && - case 329: { - sym(1).ival = QSOperator::StrictNotEqual; - } break; + if (lhs->binaryExpressionCast() != nullptr) { + auto *binaryExpr = lhs->binaryExpressionCast(); + if (binaryExpr->op == QSOperator::And || binaryExpr->op == QSOperator::Or) { + syntaxError(binaryExpr->operatorToken, + "Left-hand side may not contain || or &&"); + return false; + } + } -#line 2817 "qmljs.g" - case 332: Q_FALLTHROUGH(); -#line 2819 "qmljs.g" + if (rhs->binaryExpressionCast() != nullptr) { + auto *binaryExpr = rhs->binaryExpressionCast(); + if (binaryExpr->op == QSOperator::And || binaryExpr->op == QSOperator::Or) { + syntaxError(binaryExpr->operatorToken, + "Right-hand side may not contain || or &&"); + return false; + } + } - case 333: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitAnd, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(lhs, QSOperator::Coalesce, rhs); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; -#line 2832 "qmljs.g" - case 336: Q_FALLTHROUGH(); -#line 2834 "qmljs.g" +#line 2873 "qmljs.g" + case 351: + Q_FALLTHROUGH(); +#line 2875 "qmljs.g" - case 337: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitXor, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 352: { + AST::ConditionalExpression *node = new (pool) + AST::ConditionalExpression(sym(1).Expression, + sym(3).Expression, + sym(5).Expression); + node->questionToken = loc(2); + node->colonToken = loc(4); + sym(1).Node = node; + } break; -#line 2846 "qmljs.g" - case 340: Q_FALLTHROUGH(); -#line 2848 "qmljs.g" +#line 2894 "qmljs.g" + case 359: + Q_FALLTHROUGH(); +#line 2896 "qmljs.g" - case 341: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitOr, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 360: { + if (sym(1).Expression->containsOptionalChain()) { + syntaxError(loc(1), + QStringLiteral("Optional chains are not permitted on the " + "left-hand-side in assignments")); + } + // need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral + if (AST::Pattern *p = sym(1).Expression->patternCast()) { + SourceLocation errorLoc; + QString errorMsg; + if (!p->convertLiteralToAssignmentPattern(pool, &errorLoc, &errorMsg)) { + syntaxError(errorLoc, errorMsg); + return false; + } + } + // if lhs is an identifier expression and rhs is an anonymous function expression, we need to assign the name of lhs to the function + if (auto *f = asAnonymousFunctionDefinition(sym(3).Expression)) { + if (auto *id = AST::cast(sym(1).Expression)) + f->name = id->name; + } + if (auto *c = asAnonymousClassDefinition(sym(3).Expression)) { + if (auto *id = AST::cast(sym(1).Expression)) + c->name = id->name; + } -#line 2860 "qmljs.g" - case 344: Q_FALLTHROUGH(); -#line 2862 "qmljs.g" + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, QSOperator::Assign, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; - case 345: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::And, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; +#line 2927 "qmljs.g" + case 361: + Q_FALLTHROUGH(); +#line 2929 "qmljs.g" -#line 2874 "qmljs.g" - case 348: Q_FALLTHROUGH(); -#line 2876 "qmljs.g" + case 362: { + if (sym(1).Expression->containsOptionalChain()) { + syntaxError(loc(1), + QStringLiteral("Optional chains are not permitted on the " + "left-hand-side in assignments")); + } + AST::BinaryExpression *node = new (pool) + AST::BinaryExpression(sym(1).Expression, sym(2).ival, sym(3).Expression); + node->operatorToken = loc(2); + sym(1).Node = node; + } break; - case 349: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Or, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; +#line 2941 "qmljs.g" -#line 2888 "qmljs.g" - case 352: Q_FALLTHROUGH(); -#line 2890 "qmljs.g" + case 363: { + sym(1).ival = QSOperator::InplaceMul; + } break; - case 353: { +#line 2948 "qmljs.g" - auto *lhs = sym(1).Expression; - auto *rhs = sym(3).Expression; + case 364: { + sym(1).ival = QSOperator::InplaceExp; + } break; - // Check if lhs or rhs contain || or && +#line 2955 "qmljs.g" - if (lhs->binaryExpressionCast() != nullptr) { - auto *binaryExpr = lhs->binaryExpressionCast(); - if (binaryExpr->op == QSOperator::And || binaryExpr->op == QSOperator::Or) { - syntaxError(binaryExpr->operatorToken, "Left-hand side may not contain || or &&"); - return false; - } - } + case 365: { + sym(1).ival = QSOperator::InplaceDiv; + } break; - if (rhs->binaryExpressionCast() != nullptr) { - auto *binaryExpr = rhs->binaryExpressionCast(); - if (binaryExpr->op == QSOperator::And || binaryExpr->op == QSOperator::Or) { - syntaxError(binaryExpr->operatorToken, "Right-hand side may not contain || or &&"); - return false; - } - } +#line 2962 "qmljs.g" - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(lhs, QSOperator::Coalesce, rhs); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; + case 366: { + sym(1).ival = QSOperator::InplaceMod; + } break; -#line 2924 "qmljs.g" - case 356: Q_FALLTHROUGH(); -#line 2926 "qmljs.g" +#line 2969 "qmljs.g" - case 357: { - AST::ConditionalExpression *node = new (pool) AST::ConditionalExpression(sym(1).Expression, sym(3).Expression, sym(5).Expression); - node->questionToken = loc(2); - node->colonToken = loc(4); - sym(1).Node = node; - } break; + case 367: { + sym(1).ival = QSOperator::InplaceAdd; + } break; -#line 2945 "qmljs.g" - case 364: Q_FALLTHROUGH(); -#line 2947 "qmljs.g" +#line 2976 "qmljs.g" - case 365: { - if (sym(1).Expression->containsOptionalChain()) { - syntaxError(loc(1), QStringLiteral("Optional chains are not permitted on the left-hand-side in assignments")); - } - // need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral - if (AST::Pattern *p = sym(1).Expression->patternCast()) { - SourceLocation errorLoc; - QString errorMsg; - if (!p->convertLiteralToAssignmentPattern(pool, &errorLoc, &errorMsg)) { - syntaxError(errorLoc, errorMsg); - return false; - } - } - // if lhs is an identifier expression and rhs is an anonymous function expression, we need to assign the name of lhs to the function - if (auto *f = asAnonymousFunctionDefinition(sym(3).Expression)) { - if (auto *id = AST::cast(sym(1).Expression)) - f->name = id->name; - } - if (auto *c = asAnonymousClassDefinition(sym(3).Expression)) { - if (auto *id = AST::cast(sym(1).Expression)) - c->name = id->name; - } + case 368: { + sym(1).ival = QSOperator::InplaceSub; + } break; - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Assign, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; +#line 2983 "qmljs.g" -#line 2978 "qmljs.g" - case 366: Q_FALLTHROUGH(); -#line 2980 "qmljs.g" + case 369: { + sym(1).ival = QSOperator::InplaceLeftShift; + } break; - case 367: { - if (sym(1).Expression->containsOptionalChain()) { - syntaxError(loc(1), QStringLiteral("Optional chains are not permitted on the left-hand-side in assignments")); - } - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, sym(2).ival, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; - } break; +#line 2990 "qmljs.g" -#line 2992 "qmljs.g" + case 370: { + sym(1).ival = QSOperator::InplaceRightShift; + } break; - case 368: { - sym(1).ival = QSOperator::InplaceMul; - } break; +#line 2997 "qmljs.g" -#line 2999 "qmljs.g" + case 371: { + sym(1).ival = QSOperator::InplaceURightShift; + } break; - case 369: { - sym(1).ival = QSOperator::InplaceExp; - } break; +#line 3004 "qmljs.g" -#line 3006 "qmljs.g" + case 372: { + sym(1).ival = QSOperator::InplaceAnd; + } break; - case 370: { - sym(1).ival = QSOperator::InplaceDiv; - } break; +#line 3011 "qmljs.g" -#line 3013 "qmljs.g" + case 373: { + sym(1).ival = QSOperator::InplaceXor; + } break; - case 371: { - sym(1).ival = QSOperator::InplaceMod; - } break; +#line 3018 "qmljs.g" -#line 3020 "qmljs.g" + case 374: { + sym(1).ival = QSOperator::InplaceOr; + } break; - case 372: { - sym(1).ival = QSOperator::InplaceAdd; - } break; +#line 3028 "qmljs.g" + case 377: + Q_FALLTHROUGH(); +#line 3030 "qmljs.g" -#line 3027 "qmljs.g" - - case 373: { - sym(1).ival = QSOperator::InplaceSub; - } break; - -#line 3034 "qmljs.g" - - case 374: { - sym(1).ival = QSOperator::InplaceLeftShift; - } break; + case 378: { + AST::Expression *node = new (pool) + AST::Expression(sym(1).Expression, sym(3).Expression); + node->commaToken = loc(2); + sym(1).Node = node; + } break; +#line 3039 "qmljs.g" + case 379: + Q_FALLTHROUGH(); #line 3041 "qmljs.g" - case 375: { - sym(1).ival = QSOperator::InplaceRightShift; - } break; + case 380: { + sym(1).Node = nullptr; + } break; -#line 3048 "qmljs.g" +#line 3053 "qmljs.g" - case 376: { - sym(1).ival = QSOperator::InplaceURightShift; - } break; - -#line 3055 "qmljs.g" - - case 377: { - sym(1).ival = QSOperator::InplaceAnd; - } break; + case 383: { + sym(1).Node = sym(3).Node; + } break; +#line 3060 "qmljs.g" + case 384: + Q_FALLTHROUGH(); #line 3062 "qmljs.g" + case 385: + Q_FALLTHROUGH(); +#line 3064 "qmljs.g" + case 386: + Q_FALLTHROUGH(); +#line 3066 "qmljs.g" + case 387: + Q_FALLTHROUGH(); +#line 3068 "qmljs.g" + case 388: + Q_FALLTHROUGH(); +#line 3070 "qmljs.g" + case 389: + Q_FALLTHROUGH(); +#line 3072 "qmljs.g" + case 390: + Q_FALLTHROUGH(); +#line 3074 "qmljs.g" + case 391: + Q_FALLTHROUGH(); +#line 3076 "qmljs.g" + case 392: + Q_FALLTHROUGH(); +#line 3078 "qmljs.g" + case 393: + Q_FALLTHROUGH(); +#line 3080 "qmljs.g" + case 394: + Q_FALLTHROUGH(); +#line 3082 "qmljs.g" + case 395: + Q_FALLTHROUGH(); +#line 3084 "qmljs.g" - case 378: { - sym(1).ival = QSOperator::InplaceXor; - } break; + case 396: { + sym(1).Node = sym(2).Node; + } break; -#line 3069 "qmljs.g" +#line 3106 "qmljs.g" - case 379: { - sym(1).ival = QSOperator::InplaceOr; - } break; + case 407: { + AST::Block *node = new (pool) AST::Block(sym(2).StatementList); + node->lbraceToken = loc(1); + node->rbraceToken = loc(3); + sym(1).Node = node; + } break; -#line 3079 "qmljs.g" - case 382: Q_FALLTHROUGH(); -#line 3081 "qmljs.g" +#line 3118 "qmljs.g" - case 383: { - AST::Expression *node = new (pool) AST::Expression(sym(1).Expression, sym(3).Expression); - node->commaToken = loc(2); - sym(1).Node = node; - } break; + case 409: { + sym(1).StatementList = sym(1).StatementList->append(sym(2).StatementList); + } break; -#line 3090 "qmljs.g" - case 384: Q_FALLTHROUGH(); -#line 3092 "qmljs.g" - - case 385: { - sym(1).Node = nullptr; - } break; - -#line 3104 "qmljs.g" - - case 388: { - sym(1).Node = sym(3).Node; - } break; - -#line 3111 "qmljs.g" - case 389: Q_FALLTHROUGH(); -#line 3113 "qmljs.g" - case 390: Q_FALLTHROUGH(); -#line 3115 "qmljs.g" - case 391: Q_FALLTHROUGH(); -#line 3117 "qmljs.g" - case 392: Q_FALLTHROUGH(); -#line 3119 "qmljs.g" - case 393: Q_FALLTHROUGH(); -#line 3121 "qmljs.g" - case 394: Q_FALLTHROUGH(); -#line 3123 "qmljs.g" - case 395: Q_FALLTHROUGH(); #line 3125 "qmljs.g" - case 396: Q_FALLTHROUGH(); -#line 3127 "qmljs.g" - case 397: Q_FALLTHROUGH(); -#line 3129 "qmljs.g" - case 398: Q_FALLTHROUGH(); -#line 3131 "qmljs.g" - case 399: Q_FALLTHROUGH(); -#line 3133 "qmljs.g" - case 400: Q_FALLTHROUGH(); -#line 3135 "qmljs.g" - case 401: { - sym(1).Node = sym(2).Node; - } break; + case 410: { + sym(1).StatementList = new (pool) AST::StatementList(sym(1).Statement); + } break; -#line 3157 "qmljs.g" +#line 3132 "qmljs.g" - case 412: { - AST::Block *node = new (pool) AST::Block(sym(2).StatementList); - node->lbraceToken = loc(1); - node->rbraceToken = loc(3); - sym(1).Node = node; - } break; + case 411: { + sym(1).Node = new (pool) AST::StatementList(sym(3).FunctionDeclaration); + } break; -#line 3169 "qmljs.g" +#line 3139 "qmljs.g" - case 414: { - sym(1).StatementList = sym(1).StatementList->append(sym(2).StatementList); - } break; + case 412: { + sym(1).Node = nullptr; + } break; -#line 3176 "qmljs.g" +#line 3146 "qmljs.g" - case 415: { - sym(1).StatementList = new (pool) AST::StatementList(sym(1).Statement); - } break; + case 413: { + sym(1).Node = sym(1).StatementList->finish(); + } break; -#line 3183 "qmljs.g" +#line 3153 "qmljs.g" - case 416: { - sym(1).Node = new (pool) AST::StatementList(sym(3).FunctionDeclaration); - } break; + case 414: { + sym(1).scope = AST::VariableScope::Let; + } break; -#line 3190 "qmljs.g" +#line 3159 "qmljs.g" - case 417: { - sym(1).Node = nullptr; - } break; + case 415: { + sym(1).scope = AST::VariableScope::Const; + } break; + +#line 3166 "qmljs.g" + + case 416: { + sym(1).scope = AST::VariableScope::Var; + } break; + +#line 3173 "qmljs.g" + case 417: + Q_FALLTHROUGH(); +#line 3175 "qmljs.g" + case 418: + Q_FALLTHROUGH(); +#line 3177 "qmljs.g" + case 419: + Q_FALLTHROUGH(); +#line 3179 "qmljs.g" + + case 420: { + AST::VariableDeclarationList *declarations = sym(2).VariableDeclarationList->finish( + sym(1).scope); + for (auto it = declarations; it; it = it->next) { + if (it->declaration && it->declaration->typeAnnotation) { + syntaxError(it->declaration->typeAnnotation->firstSourceLocation(), + "Type annotations are not permitted in variable declarations"); + return false; + } + } + AST::VariableStatement *node = new (pool) AST::VariableStatement(declarations); + node->declarationKindToken = loc(1); + sym(1).Node = node; + } break; #line 3197 "qmljs.g" + case 422: + Q_FALLTHROUGH(); +#line 3199 "qmljs.g" + case 423: + Q_FALLTHROUGH(); +#line 3201 "qmljs.g" + case 424: + Q_FALLTHROUGH(); +#line 3203 "qmljs.g" - case 418: { - sym(1).Node = sym(1).StatementList->finish(); - } break; - -#line 3204 "qmljs.g" - - case 419: { - sym(1).scope = AST::VariableScope::Let; - } break; + case 425: { + sym(1).Node = new (pool) AST::VariableDeclarationList(sym(1).PatternElement); + } break; #line 3210 "qmljs.g" + case 426: + Q_FALLTHROUGH(); +#line 3212 "qmljs.g" + case 427: + Q_FALLTHROUGH(); +#line 3214 "qmljs.g" + case 428: + Q_FALLTHROUGH(); +#line 3216 "qmljs.g" - case 420: { - sym(1).scope = AST::VariableScope::Const; - } break; + case 429: { + AST::VariableDeclarationList *node = new (pool) + AST::VariableDeclarationList(sym(1).VariableDeclarationList, + sym(3).PatternElement); + node->commaToken = loc(2); + sym(1).Node = node; + } break; -#line 3217 "qmljs.g" +#line 3225 "qmljs.g" + case 430: + Q_FALLTHROUGH(); +#line 3227 "qmljs.g" + case 431: + Q_FALLTHROUGH(); +#line 3229 "qmljs.g" + case 432: + Q_FALLTHROUGH(); +#line 3231 "qmljs.g" - case 421: { - sym(1).scope = AST::VariableScope::Var; - } break; + case 433: { + auto *node = new (pool) + AST::PatternElement(stringRef(1), sym(2).TypeAnnotation, sym(3).Expression); + node->identifierToken = loc(1); + sym(1).Node = node; + // if initializer is an anonymous function expression, we need to assign identifierref as it's name + if (auto *f = asAnonymousFunctionDefinition(sym(3).Expression)) + f->name = stringRef(1); + if (auto *c = asAnonymousClassDefinition(sym(3).Expression)) + c->name = stringRef(1); + } break; -#line 3224 "qmljs.g" - case 422: Q_FALLTHROUGH(); -#line 3226 "qmljs.g" - case 423: Q_FALLTHROUGH(); -#line 3228 "qmljs.g" - case 424: Q_FALLTHROUGH(); -#line 3230 "qmljs.g" +#line 3245 "qmljs.g" + case 434: + Q_FALLTHROUGH(); +#line 3247 "qmljs.g" + case 435: + Q_FALLTHROUGH(); +#line 3249 "qmljs.g" + case 436: + Q_FALLTHROUGH(); +#line 3251 "qmljs.g" - case 425: { - AST::VariableDeclarationList *declarations = sym(2).VariableDeclarationList->finish(sym(1).scope); - for (auto it = declarations; it; it = it->next) { - if (it->declaration && it->declaration->typeAnnotation) { - syntaxError(it->declaration->typeAnnotation->firstSourceLocation(), "Type annotations are not permitted in variable declarations"); - return false; - } - } - AST::VariableStatement *node = new (pool) AST::VariableStatement(declarations); - node->declarationKindToken = loc(1); - sym(1).Node = node; - } break; + case 437: { + auto *node = new (pool) AST::PatternElement(sym(1).Pattern, sym(2).Expression); + node->identifierToken = loc(1); + sym(1).Node = node; + } break; -#line 3248 "qmljs.g" - case 427: Q_FALLTHROUGH(); -#line 3250 "qmljs.g" - case 428: Q_FALLTHROUGH(); -#line 3252 "qmljs.g" - case 429: Q_FALLTHROUGH(); -#line 3254 "qmljs.g" +#line 3260 "qmljs.g" - case 430: { - sym(1).Node = new (pool) AST::VariableDeclarationList(sym(1).PatternElement); - } break; + case 438: { + auto *node = new (pool) AST::ObjectPattern(sym(2).PatternPropertyList); + node->lbraceToken = loc(1); + node->rbraceToken = loc(3); + node->parseMode = AST::Pattern::Binding; + sym(1).Node = node; + } break; -#line 3261 "qmljs.g" - case 431: Q_FALLTHROUGH(); -#line 3263 "qmljs.g" - case 432: Q_FALLTHROUGH(); -#line 3265 "qmljs.g" - case 433: Q_FALLTHROUGH(); -#line 3267 "qmljs.g" +#line 3271 "qmljs.g" - case 434: { - AST::VariableDeclarationList *node = new (pool) AST::VariableDeclarationList(sym(1).VariableDeclarationList, sym(3).PatternElement); - node->commaToken = loc(2); - sym(1).Node = node; - } break; + case 439: { + auto *node = new (pool) AST::ArrayPattern(sym(2).PatternElementList); + node->lbracketToken = loc(1); + node->rbracketToken = loc(3); + node->parseMode = AST::Pattern::Binding; + sym(1).Node = node; + } break; -#line 3276 "qmljs.g" - case 435: Q_FALLTHROUGH(); -#line 3278 "qmljs.g" - case 436: Q_FALLTHROUGH(); -#line 3280 "qmljs.g" - case 437: Q_FALLTHROUGH(); #line 3282 "qmljs.g" - case 438: { - auto *node = new (pool) AST::PatternElement(stringRef(1), sym(2).TypeAnnotation, sym(3).Expression); - node->identifierToken = loc(1); - sym(1).Node = node; - // if initializer is an anonymous function expression, we need to assign identifierref as it's name - if (auto *f = asAnonymousFunctionDefinition(sym(3).Expression)) - f->name = stringRef(1); - if (auto *c = asAnonymousClassDefinition(sym(3).Expression)) - c->name = stringRef(1); - } break; + case 440: { + sym(1).Node = nullptr; + } break; + +#line 3289 "qmljs.g" + case 441: +#line 3291 "qmljs.g" + + case 442: { + sym(1).Node = sym(1).PatternPropertyList->finish(); + } break; -#line 3296 "qmljs.g" - case 439: Q_FALLTHROUGH(); #line 3298 "qmljs.g" - case 440: Q_FALLTHROUGH(); -#line 3300 "qmljs.g" - case 441: Q_FALLTHROUGH(); -#line 3302 "qmljs.g" - case 442: { - auto *node = new (pool) AST::PatternElement(sym(1).Pattern, sym(2).Expression); - node->identifierToken = loc(1); - sym(1).Node = node; - } break; + case 443: { + if (sym(1).Elision || sym(2).Node) { + auto *l = new (pool) + AST::PatternElementList(sym(1).Elision, sym(2).PatternElement); + sym(1).Node = l->finish(); + } else { + sym(1).Node = nullptr; + } + } break; -#line 3311 "qmljs.g" +#line 3310 "qmljs.g" - case 443: { - auto *node = new (pool) AST::ObjectPattern(sym(2).PatternPropertyList); - node->lbraceToken = loc(1); - node->rbraceToken = loc(3); - node->parseMode = AST::Pattern::Binding; - sym(1).Node = node; - } break; + case 444: { + sym(1).Node = sym(1).PatternElementList->finish(); + } break; -#line 3322 "qmljs.g" +#line 3317 "qmljs.g" - case 444: { - auto *node = new (pool) AST::ArrayPattern(sym(2).PatternElementList); - node->lbracketToken = loc(1); - node->rbracketToken = loc(3); - node->parseMode = AST::Pattern::Binding; - sym(1).Node = node; - } break; + case 445: { + if (sym(3).Elision || sym(4).Node) { + auto *l = new (pool) + AST::PatternElementList(sym(3).Elision, sym(4).PatternElement); + l = sym(1).PatternElementList->append(l); + sym(1).Node = l; + } + sym(1).Node = sym(1).PatternElementList->finish(); + } break; -#line 3333 "qmljs.g" +#line 3329 "qmljs.g" - case 445: { - sym(1).Node = nullptr; - } break; + case 446: { + sym(1).Node = new (pool) AST::PatternPropertyList(sym(1).PatternProperty); + } break; -#line 3340 "qmljs.g" - case 446: -#line 3342 "qmljs.g" +#line 3336 "qmljs.g" - case 447: { - sym(1).Node = sym(1).PatternPropertyList->finish(); - } break; + case 447: { + sym(1).Node = new (pool) + AST::PatternPropertyList(sym(1).PatternPropertyList, sym(3).PatternProperty); + } break; -#line 3349 "qmljs.g" +#line 3345 "qmljs.g" - case 448: { - if (sym(1).Elision || sym(2).Node) { - auto *l = new (pool) AST::PatternElementList(sym(1).Elision, sym(2).PatternElement); - sym(1).Node = l->finish(); - } else { - sym(1).Node = nullptr; - } - } break; + case 449: { + sym(1).PatternElementList = sym(1).PatternElementList->append( + sym(3).PatternElementList); + } break; -#line 3361 "qmljs.g" +#line 3352 "qmljs.g" - case 449: { - sym(1).Node = sym(1).PatternElementList->finish(); - } break; + case 450: { + sym(1).Node = new (pool) + AST::PatternElementList(sym(1).Elision, sym(2).PatternElement); + } break; -#line 3368 "qmljs.g" +#line 3360 "qmljs.g" - case 450: { - if (sym(3).Elision || sym(4).Node) { - auto *l = new (pool) AST::PatternElementList(sym(3).Elision, sym(4).PatternElement); - l = sym(1).PatternElementList->append(l); - sym(1).Node = l; - } - sym(1).Node = sym(1).PatternElementList->finish(); - } break; + case 451: { + AST::StringLiteralPropertyName *name = new (pool) + AST::StringLiteralPropertyName(stringRef(1)); + name->propertyNameToken = loc(1); + // if initializer is an anonymous function expression, we need to assign identifierref as it's name + if (auto *f = asAnonymousFunctionDefinition(sym(2).Expression)) + f->name = stringRef(1); + if (auto *c = asAnonymousClassDefinition(sym(2).Expression)) + c->name = stringRef(1); + sym(1).Node = new (pool) AST::PatternProperty(name, stringRef(1), sym(2).Expression); + } break; -#line 3380 "qmljs.g" +#line 3374 "qmljs.g" - case 451: { - sym(1).Node = new (pool) AST::PatternPropertyList(sym(1).PatternProperty); - } break; + case 452: { + AST::PatternProperty *node = new (pool) + AST::PatternProperty(sym(1).PropertyName, stringRef(3), sym(4).Expression); + sym(1).Node = node; + } break; -#line 3387 "qmljs.g" +#line 3382 "qmljs.g" - case 452: { - sym(1).Node = new (pool) AST::PatternPropertyList(sym(1).PatternPropertyList, sym(3).PatternProperty); - } break; + case 453: { + AST::PatternProperty *node = new (pool) + AST::PatternProperty(sym(1).PropertyName, sym(3).Pattern, sym(4).Expression); + sym(1).Node = node; + } break; -#line 3396 "qmljs.g" +#line 3390 "qmljs.g" - case 454: { - sym(1).PatternElementList = sym(1).PatternElementList->append(sym(3).PatternElementList); - } break; + case 454: { + AST::PatternElement *node = new (pool) + AST::PatternElement(stringRef(1), sym(2).TypeAnnotation, sym(3).Expression); + node->identifierToken = loc(1); + // if initializer is an anonymous function expression, we need to assign identifierref as it's name + if (auto *f = asAnonymousFunctionDefinition(sym(3).Expression)) + f->name = stringRef(1); + if (auto *c = asAnonymousClassDefinition(sym(3).Expression)) + c->name = stringRef(1); + sym(1).Node = node; + } break; -#line 3403 "qmljs.g" +#line 3404 "qmljs.g" - case 455: { - sym(1).Node = new (pool) AST::PatternElementList(sym(1).Elision, sym(2).PatternElement); - } break; + case 455: { + AST::PatternElement *node = new (pool) + AST::PatternElement(sym(1).Pattern, sym(2).Expression); + sym(1).Node = node; + } break; -#line 3411 "qmljs.g" +#line 3412 "qmljs.g" - case 456: { - AST::StringLiteralPropertyName *name = new (pool) AST::StringLiteralPropertyName(stringRef(1)); - name->propertyNameToken = loc(1); - // if initializer is an anonymous function expression, we need to assign identifierref as it's name - if (auto *f = asAnonymousFunctionDefinition(sym(2).Expression)) - f->name = stringRef(1); - if (auto *c = asAnonymousClassDefinition(sym(2).Expression)) - c->name = stringRef(1); - sym(1).Node = new (pool) AST::PatternProperty(name, stringRef(1), sym(2).Expression); - } break; + case 456: { + AST::PatternElement *node = new (pool) + AST::PatternElement(stringRef(2), + /*type annotation*/ nullptr, + nullptr, + AST::PatternElement::RestElement); + node->identifierToken = loc(2); + sym(1).Node = node; + } break; -#line 3425 "qmljs.g" +#line 3421 "qmljs.g" - case 457: { - AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(1).PropertyName, stringRef(3), sym(4).Expression); - sym(1).Node = node; - } break; + case 457: { + AST::PatternElement *node = new (pool) + AST::PatternElement(sym(2).Pattern, nullptr, AST::PatternElement::RestElement); + sym(1).Node = node; + } break; -#line 3433 "qmljs.g" +#line 3429 "qmljs.g" - case 458: { - AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(1).PropertyName, sym(3).Pattern, sym(4).Expression); - sym(1).Node = node; - } break; + case 458: { + sym(1).Node = nullptr; + } break; -#line 3441 "qmljs.g" +#line 3439 "qmljs.g" - case 459: { - AST::PatternElement *node = new (pool) AST::PatternElement(stringRef(1), sym(2).TypeAnnotation, sym(3).Expression); - node->identifierToken = loc(1); - // if initializer is an anonymous function expression, we need to assign identifierref as it's name - if (auto *f = asAnonymousFunctionDefinition(sym(3).Expression)) - f->name = stringRef(1); - if (auto *c = asAnonymousClassDefinition(sym(3).Expression)) - c->name = stringRef(1); - sym(1).Node = node; - } break; + case 460: { + AST::EmptyStatement *node = new (pool) AST::EmptyStatement(); + node->semicolonToken = loc(1); + sym(1).Node = node; + } break; -#line 3455 "qmljs.g" +#line 3454 "qmljs.g" - case 460: { - AST::PatternElement *node = new (pool) AST::PatternElement(sym(1).Pattern, sym(2).Expression); - sym(1).Node = node; - } break; + case 461: { + int token = lookaheadToken(lexer); + if (token == T_LBRACE) + pushToken(T_FORCE_BLOCK); + else if (token == T_FUNCTION || token == T_FUNCTION_STAR || token == T_CLASS + || token == T_LET || token == T_CONST) + pushToken(T_FORCE_DECLARATION); + } break; -#line 3463 "qmljs.g" +#line 3465 "qmljs.g" - case 461: { - AST::PatternElement *node = new (pool) AST::PatternElement(stringRef(2), /*type annotation*/nullptr, nullptr, AST::PatternElement::RestElement); - node->identifierToken = loc(2); - sym(1).Node = node; - } break; + case 462: { + AST::ExpressionStatement *node = new (pool) + AST::ExpressionStatement(sym(1).Expression); + node->semicolonToken = loc(2); + sym(1).Node = node; + } break; -#line 3472 "qmljs.g" +#line 3474 "qmljs.g" - case 462: { - AST::PatternElement *node = new (pool) AST::PatternElement(sym(2).Pattern, nullptr, AST::PatternElement::RestElement); - sym(1).Node = node; - } break; + case 463: { + AST::IfStatement *node = new (pool) + AST::IfStatement(sym(3).Expression, sym(5).Statement, sym(7).Statement); + node->ifToken = loc(1); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + node->elseToken = loc(6); + sym(1).Node = node; + } break; -#line 3480 "qmljs.g" +#line 3486 "qmljs.g" - case 463: { - sym(1).Node = nullptr; - } break; + case 464: { + AST::IfStatement *node = new (pool) + AST::IfStatement(sym(3).Expression, sym(5).Statement); + node->ifToken = loc(1); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + sym(1).Node = node; + } break; -#line 3490 "qmljs.g" +#line 3499 "qmljs.g" - case 465: { - AST::EmptyStatement *node = new (pool) AST::EmptyStatement(); - node->semicolonToken = loc(1); - sym(1).Node = node; - } break; + case 466: { + AST::DoWhileStatement *node = new (pool) + AST::DoWhileStatement(sym(2).Statement, sym(5).Expression); + node->doToken = loc(1); + node->whileToken = loc(3); + node->lparenToken = loc(4); + node->rparenToken = loc(6); + node->semicolonToken = loc(7); + sym(1).Node = node; + } break; -#line 3505 "qmljs.g" +#line 3512 "qmljs.g" - case 466: { - int token = lookaheadToken(lexer); - if (token == T_LBRACE) - pushToken(T_FORCE_BLOCK); - else if (token == T_FUNCTION || token == T_FUNCTION_STAR || token == T_CLASS || token == T_LET || token == T_CONST) - pushToken(T_FORCE_DECLARATION); - } break; + case 467: { + AST::WhileStatement *node = new (pool) + AST::WhileStatement(sym(3).Expression, sym(5).Statement); + node->whileToken = loc(1); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + sym(1).Node = node; + } break; -#line 3516 "qmljs.g" +#line 3523 "qmljs.g" - case 467: { - AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(sym(1).Expression); - node->semicolonToken = loc(2); - sym(1).Node = node; - } break; + case 468: { + AST::ForStatement *node = new (pool) AST::ForStatement(sym(3).Expression, + sym(5).Expression, + sym(7).Expression, + sym(9).Statement); + node->forToken = loc(1); + node->lparenToken = loc(2); + node->firstSemicolonToken = loc(4); + node->secondSemicolonToken = loc(6); + node->rparenToken = loc(8); + sym(1).Node = node; + } break; -#line 3525 "qmljs.g" +#line 3536 "qmljs.g" + case 469: + Q_FALLTHROUGH(); +#line 3538 "qmljs.g" - case 468: { - AST::IfStatement *node = new (pool) AST::IfStatement(sym(3).Expression, sym(5).Statement, sym(7).Statement); - node->ifToken = loc(1); - node->lparenToken = loc(2); - node->rparenToken = loc(4); - node->elseToken = loc(6); - sym(1).Node = node; - } break; + case 470: { + // ### get rid of the static_cast! + AST::ForStatement *node = new (pool) + AST::ForStatement(static_cast(sym(3).Node)->declarations, + sym(5).Expression, + sym(7).Expression, + sym(9).Statement); + node->forToken = loc(1); + node->lparenToken = loc(2); + node->firstSemicolonToken = loc(4); + node->secondSemicolonToken = loc(6); + node->rparenToken = loc(8); + sym(1).Node = node; + } break; -#line 3537 "qmljs.g" +#line 3554 "qmljs.g" - case 469: { - AST::IfStatement *node = new (pool) AST::IfStatement(sym(3).Expression, sym(5).Statement); - node->ifToken = loc(1); - node->lparenToken = loc(2); - node->rparenToken = loc(4); - sym(1).Node = node; - } break; + case 471: { + sym(1).forEachType = AST::ForEachType::In; + } break; -#line 3550 "qmljs.g" +#line 3561 "qmljs.g" - case 471: { - AST::DoWhileStatement *node = new (pool) AST::DoWhileStatement(sym(2).Statement, sym(5).Expression); - node->doToken = loc(1); - node->whileToken = loc(3); - node->lparenToken = loc(4); - node->rparenToken = loc(6); - node->semicolonToken = loc(7); - sym(1).Node = node; - } break; + case 472: { + sym(1).forEachType = AST::ForEachType::Of; + } break; -#line 3563 "qmljs.g" +#line 3568 "qmljs.g" - case 472: { - AST::WhileStatement *node = new (pool) AST::WhileStatement(sym(3).Expression, sym(5).Statement); - node->whileToken = loc(1); - node->lparenToken = loc(2); - node->rparenToken = loc(4); - sym(1).Node = node; - } break; + case 473: { + // need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral + if (AST::Pattern *p = sym(3).Expression->patternCast()) { + SourceLocation errorLoc; + QString errorMsg; + if (!p->convertLiteralToAssignmentPattern(pool, &errorLoc, &errorMsg)) { + syntaxError(errorLoc, errorMsg); + return false; + } + } + AST::ForEachStatement *node = new (pool) + AST::ForEachStatement(sym(3).Expression, sym(5).Expression, sym(7).Statement); + node->forToken = loc(1); + node->lparenToken = loc(2); + node->inOfToken = loc(4); + node->rparenToken = loc(6); + node->type = sym(4).forEachType; + sym(1).Node = node; + } break; -#line 3574 "qmljs.g" +#line 3590 "qmljs.g" - case 473: { - AST::ForStatement *node = new (pool) AST::ForStatement(sym(3).Expression, sym(5).Expression, sym(7).Expression, sym(9).Statement); - node->forToken = loc(1); - node->lparenToken = loc(2); - node->firstSemicolonToken = loc(4); - node->secondSemicolonToken = loc(6); - node->rparenToken = loc(8); - sym(1).Node = node; - } break; - -#line 3587 "qmljs.g" - case 474: Q_FALLTHROUGH(); -#line 3589 "qmljs.g" - - case 475: { - // ### get rid of the static_cast! - AST::ForStatement *node = new (pool) AST::ForStatement( - static_cast(sym(3).Node)->declarations, sym(5).Expression, - sym(7).Expression, sym(9).Statement); - node->forToken = loc(1); - node->lparenToken = loc(2); - node->firstSemicolonToken = loc(4); - node->secondSemicolonToken = loc(6); - node->rparenToken = loc(8); - sym(1).Node = node; - } break; + case 474: { + AST::ForEachStatement *node = new (pool) + AST::ForEachStatement(sym(3).PatternElement, sym(5).Expression, sym(7).Statement); + node->forToken = loc(1); + node->lparenToken = loc(2); + node->inOfToken = loc(4); + node->rparenToken = loc(6); + node->type = sym(4).forEachType; + sym(1).Node = node; + } break; +#line 3603 "qmljs.g" + case 475: + Q_FALLTHROUGH(); #line 3605 "qmljs.g" - case 476: { - sym(1).forEachType = AST::ForEachType::In; - } break; - -#line 3612 "qmljs.g" - - case 477: { - sym(1).forEachType = AST::ForEachType::Of; - } break; - -#line 3619 "qmljs.g" - - case 478: { - // need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral - if (AST::Pattern *p = sym(3).Expression->patternCast()) { - SourceLocation errorLoc; - QString errorMsg; - if (!p->convertLiteralToAssignmentPattern(pool, &errorLoc, &errorMsg)) { - syntaxError(errorLoc, errorMsg); - return false; - } - } - AST::ForEachStatement *node = new (pool) AST::ForEachStatement(sym(3).Expression, sym(5).Expression, sym(7).Statement); - node->forToken = loc(1); - node->lparenToken = loc(2); - node->inOfToken = loc(4); - node->rparenToken = loc(6); - node->type = sym(4).forEachType; - sym(1).Node = node; - } break; - -#line 3641 "qmljs.g" - - case 479: { - AST::ForEachStatement *node = new (pool) AST::ForEachStatement(sym(3).PatternElement, sym(5).Expression, sym(7).Statement); - node->forToken = loc(1); - node->lparenToken = loc(2); - node->inOfToken = loc(4); - node->rparenToken = loc(6); - node->type = sym(4).forEachType; - sym(1).Node = node; - } break; - -#line 3654 "qmljs.g" - case 480: Q_FALLTHROUGH(); -#line 3656 "qmljs.g" - - case 481: { - if (auto typeAnnotation = sym(3).TypeAnnotation) { - syntaxError(typeAnnotation->firstSourceLocation(), "Type annotations are not permitted in variable declarations"); - return false; - } - auto *node = new (pool) AST::PatternElement(stringRef(2), sym(3).TypeAnnotation, nullptr); - node->identifierToken = loc(2); - node->scope = sym(1).scope; - node->isForDeclaration = true; - sym(1).Node = node; - } break; - -#line 3671 "qmljs.g" - case 482: Q_FALLTHROUGH(); -#line 3673 "qmljs.g" - - case 483: { - auto *node = new (pool) AST::PatternElement(sym(2).Pattern, nullptr); - node->scope = sym(1).scope; - node->isForDeclaration = true; - sym(1).Node = node; - } break; - -#line 3683 "qmljs.g" - - case 484: { - AST::ContinueStatement *node = new (pool) AST::ContinueStatement(); - node->continueToken = loc(1); - node->semicolonToken = loc(2); - sym(1).Node = node; - } break; - -#line 3693 "qmljs.g" - - case 485: { - AST::ContinueStatement *node = new (pool) AST::ContinueStatement(stringRef(2)); - node->continueToken = loc(1); - node->identifierToken = loc(2); - node->semicolonToken = loc(3); - sym(1).Node = node; - } break; - -#line 3704 "qmljs.g" - - case 486: { - AST::BreakStatement *node = new (pool) AST::BreakStatement(QStringView()); - node->breakToken = loc(1); - node->semicolonToken = loc(2); - sym(1).Node = node; - } break; - -#line 3714 "qmljs.g" - - case 487: { - AST::BreakStatement *node = new (pool) AST::BreakStatement(stringRef(2)); - node->breakToken = loc(1); - node->identifierToken = loc(2); - node->semicolonToken = loc(3); - sym(1).Node = node; - } break; - -#line 3725 "qmljs.g" - - case 488: { - if (!functionNestingLevel) { - syntaxError(loc(1), "Return statement not allowed outside of Function declaration."); - return false; - } - AST::ReturnStatement *node = new (pool) AST::ReturnStatement(sym(2).Expression); - node->returnToken = loc(1); - node->semicolonToken = loc(3); - sym(1).Node = node; - } break; - -#line 3739 "qmljs.g" - - case 489: { - AST::WithStatement *node = new (pool) AST::WithStatement(sym(3).Expression, sym(5).Statement); - node->withToken = loc(1); - node->lparenToken = loc(2); - node->rparenToken = loc(4); - sym(1).Node = node; - } break; - -#line 3750 "qmljs.g" - - case 490: { - AST::SwitchStatement *node = new (pool) AST::SwitchStatement(sym(3).Expression, sym(5).CaseBlock); - node->switchToken = loc(1); - node->lparenToken = loc(2); - node->rparenToken = loc(4); - sym(1).Node = node; - } break; - -#line 3761 "qmljs.g" - - case 491: { - AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses); - node->lbraceToken = loc(1); - node->rbraceToken = loc(3); - sym(1).Node = node; - } break; - -#line 3771 "qmljs.g" - - case 492: { - AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses); - node->lbraceToken = loc(1); - node->rbraceToken = loc(5); - sym(1).Node = node; - } break; - -#line 3781 "qmljs.g" - - case 493: { - sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClause); - } break; - -#line 3788 "qmljs.g" - - case 494: { - sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClauses, sym(2).CaseClause); - } break; - -#line 3795 "qmljs.g" - - case 495: { - sym(1).Node = nullptr; - } break; - -#line 3802 "qmljs.g" - - case 496: { - sym(1).Node = sym(1).CaseClauses->finish(); - } break; - -#line 3809 "qmljs.g" - - case 497: { - AST::CaseClause *node = new (pool) AST::CaseClause(sym(2).Expression, sym(4).StatementList); - node->caseToken = loc(1); - node->colonToken = loc(3); - sym(1).Node = node; - } break; - -#line 3819 "qmljs.g" - - case 498: { - AST::DefaultClause *node = new (pool) AST::DefaultClause(sym(3).StatementList); - node->defaultToken = loc(1); - node->colonToken = loc(2); - sym(1).Node = node; - } break; - -#line 3829 "qmljs.g" - - case 499: { - AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement); - node->identifierToken = loc(1); - node->colonToken = loc(2); - sym(1).Node = node; - } break; - -#line 3841 "qmljs.g" - - case 501: { - syntaxError(loc(3), "FunctionDeclarations are not allowed after a label."); - return false; - } break; - -#line 3849 "qmljs.g" - - case 502: { - AST::ThrowStatement *node = new (pool) AST::ThrowStatement(sym(2).Expression); - node->throwToken = loc(1); - node->semicolonToken = loc(3); - sym(1).Node = node; - } break; - -#line 3859 "qmljs.g" - - case 503: { - AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch); - node->tryToken = loc(1); - sym(1).Node = node; - } break; - -#line 3868 "qmljs.g" - - case 504: { - AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Finally); - node->tryToken = loc(1); - sym(1).Node = node; - } break; - -#line 3877 "qmljs.g" - - case 505: { - AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch, sym(4).Finally); - node->tryToken = loc(1); - sym(1).Node = node; - } break; - -#line 3886 "qmljs.g" - - case 506: { - AST::Catch *node = new (pool) AST::Catch(sym(3).PatternElement, sym(5).Block); - node->catchToken = loc(1); - node->lparenToken = loc(2); - node->identifierToken = loc(3); - node->rparenToken = loc(4); - sym(1).Node = node; - } break; - -#line 3898 "qmljs.g" - - case 507: { - AST::Finally *node = new (pool) AST::Finally(sym(2).Block); - node->finallyToken = loc(1); - sym(1).Node = node; - } break; - -#line 3907 "qmljs.g" - - case 508: { - AST::PatternElement *node = new (pool) AST::PatternElement(stringRef(1)); - node->identifierToken = loc(1); - node->scope = AST::VariableScope::Let; - sym(1).Node = node; - } break; - -#line 3917 "qmljs.g" - - case 509: { - AST::PatternElement *node = new (pool) AST::PatternElement(sym(1).Pattern); - node->scope = AST::VariableScope::Let; - sym(1).Node = node; - } break; - -#line 3926 "qmljs.g" - - case 510: { - AST::DebuggerStatement *node = new (pool) AST::DebuggerStatement(); - node->debuggerToken = loc(1); - node->semicolonToken = loc(2); - sym(1).Node = node; - } break; - -#line 3943 "qmljs.g" - - case 512: { - if (!ensureNoFunctionTypeAnnotations(sym(6).TypeAnnotation, sym(4).FormalParameterList)) - return false; - AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(8).StatementList, - /*type annotation*/nullptr); - node->functionToken = loc(1); - node->identifierToken = loc(2); - node->lparenToken = loc(3); - node->rparenToken = loc(5); - node->lbraceToken = loc(7); - node->rbraceToken = loc(9); - sym(1).Node = node; - } break; - -#line 3960 "qmljs.g" - - case 513: { - AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(8).StatementList, - sym(6).TypeAnnotation); - node->functionToken = loc(1); - node->identifierToken = loc(2); - node->lparenToken = loc(3); - node->rparenToken = loc(5); - node->lbraceToken = loc(7); - node->rbraceToken = loc(9); - sym(1).Node = node; - } break; - -#line 3976 "qmljs.g" - - case 515: { - if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, sym(3).FormalParameterList)) - return false; - AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(QStringView(), sym(3).FormalParameterList, sym(7).StatementList, - /*type annotation*/nullptr); - node->functionToken = loc(1); - node->lparenToken = loc(2); - node->rparenToken = loc(4); - node->lbraceToken = loc(6); - node->rbraceToken = loc(8); - sym(1).Node = node; - } break; + case 476: { + if (auto typeAnnotation = sym(3).TypeAnnotation) { + syntaxError(typeAnnotation->firstSourceLocation(), + "Type annotations are not permitted in variable declarations"); + return false; + } + auto *node = new (pool) + AST::PatternElement(stringRef(2), sym(3).TypeAnnotation, nullptr); + node->identifierToken = loc(2); + node->scope = sym(1).scope; + node->isForDeclaration = true; + sym(1).Node = node; + } break; + +#line 3620 "qmljs.g" + case 477: + Q_FALLTHROUGH(); +#line 3622 "qmljs.g" + + case 478: { + auto *node = new (pool) AST::PatternElement(sym(2).Pattern, nullptr); + node->scope = sym(1).scope; + node->isForDeclaration = true; + sym(1).Node = node; + } break; + +#line 3632 "qmljs.g" + + case 479: { + AST::ContinueStatement *node = new (pool) AST::ContinueStatement(); + node->continueToken = loc(1); + node->semicolonToken = loc(2); + sym(1).Node = node; + } break; + +#line 3642 "qmljs.g" + + case 480: { + AST::ContinueStatement *node = new (pool) AST::ContinueStatement(stringRef(2)); + node->continueToken = loc(1); + node->identifierToken = loc(2); + node->semicolonToken = loc(3); + sym(1).Node = node; + } break; + +#line 3653 "qmljs.g" + + case 481: { + AST::BreakStatement *node = new (pool) AST::BreakStatement(QStringView()); + node->breakToken = loc(1); + node->semicolonToken = loc(2); + sym(1).Node = node; + } break; + +#line 3663 "qmljs.g" + + case 482: { + AST::BreakStatement *node = new (pool) AST::BreakStatement(stringRef(2)); + node->breakToken = loc(1); + node->identifierToken = loc(2); + node->semicolonToken = loc(3); + sym(1).Node = node; + } break; + +#line 3674 "qmljs.g" + + case 483: { + if (!functionNestingLevel) { + syntaxError(loc(1), + "Return statement not allowed outside of Function declaration."); + return false; + } + AST::ReturnStatement *node = new (pool) AST::ReturnStatement(sym(2).Expression); + node->returnToken = loc(1); + node->semicolonToken = loc(3); + sym(1).Node = node; + } break; + +#line 3688 "qmljs.g" + + case 484: { + AST::WithStatement *node = new (pool) + AST::WithStatement(sym(3).Expression, sym(5).Statement); + node->withToken = loc(1); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + sym(1).Node = node; + } break; + +#line 3699 "qmljs.g" + + case 485: { + AST::SwitchStatement *node = new (pool) + AST::SwitchStatement(sym(3).Expression, sym(5).CaseBlock); + node->switchToken = loc(1); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + sym(1).Node = node; + } break; + +#line 3710 "qmljs.g" + + case 486: { + AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses); + node->lbraceToken = loc(1); + node->rbraceToken = loc(3); + sym(1).Node = node; + } break; + +#line 3720 "qmljs.g" + + case 487: { + AST::CaseBlock *node = new (pool) + AST::CaseBlock(sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses); + node->lbraceToken = loc(1); + node->rbraceToken = loc(5); + sym(1).Node = node; + } break; + +#line 3730 "qmljs.g" + + case 488: { + sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClause); + } break; + +#line 3737 "qmljs.g" + + case 489: { + sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClauses, sym(2).CaseClause); + } break; + +#line 3744 "qmljs.g" + + case 490: { + sym(1).Node = nullptr; + } break; + +#line 3751 "qmljs.g" + + case 491: { + sym(1).Node = sym(1).CaseClauses->finish(); + } break; + +#line 3758 "qmljs.g" + + case 492: { + AST::CaseClause *node = new (pool) + AST::CaseClause(sym(2).Expression, sym(4).StatementList); + node->caseToken = loc(1); + node->colonToken = loc(3); + sym(1).Node = node; + } break; + +#line 3768 "qmljs.g" + + case 493: { + AST::DefaultClause *node = new (pool) AST::DefaultClause(sym(3).StatementList); + node->defaultToken = loc(1); + node->colonToken = loc(2); + sym(1).Node = node; + } break; + +#line 3778 "qmljs.g" + + case 494: { + AST::LabelledStatement *node = new (pool) + AST::LabelledStatement(stringRef(1), sym(3).Statement); + node->identifierToken = loc(1); + node->colonToken = loc(2); + sym(1).Node = node; + } break; + +#line 3790 "qmljs.g" + + case 496: { + syntaxError(loc(3), "FunctionDeclarations are not allowed after a label."); + return false; + } break; + +#line 3798 "qmljs.g" + + case 497: { + AST::ThrowStatement *node = new (pool) AST::ThrowStatement(sym(2).Expression); + node->throwToken = loc(1); + node->semicolonToken = loc(3); + sym(1).Node = node; + } break; + +#line 3808 "qmljs.g" + + case 498: { + AST::TryStatement *node = new (pool) + AST::TryStatement(sym(2).Statement, sym(3).Catch); + node->tryToken = loc(1); + sym(1).Node = node; + } break; + +#line 3817 "qmljs.g" + + case 499: { + AST::TryStatement *node = new (pool) + AST::TryStatement(sym(2).Statement, sym(3).Finally); + node->tryToken = loc(1); + sym(1).Node = node; + } break; + +#line 3826 "qmljs.g" + + case 500: { + AST::TryStatement *node = new (pool) + AST::TryStatement(sym(2).Statement, sym(3).Catch, sym(4).Finally); + node->tryToken = loc(1); + sym(1).Node = node; + } break; + +#line 3835 "qmljs.g" + + case 501: { + AST::Catch *node = new (pool) AST::Catch(sym(3).PatternElement, sym(5).Block); + node->catchToken = loc(1); + node->lparenToken = loc(2); + node->identifierToken = loc(3); + node->rparenToken = loc(4); + sym(1).Node = node; + } break; + +#line 3847 "qmljs.g" + + case 502: { + AST::Finally *node = new (pool) AST::Finally(sym(2).Block); + node->finallyToken = loc(1); + sym(1).Node = node; + } break; + +#line 3856 "qmljs.g" + + case 503: { + AST::PatternElement *node = new (pool) AST::PatternElement(stringRef(1)); + node->identifierToken = loc(1); + node->scope = AST::VariableScope::Let; + sym(1).Node = node; + } break; + +#line 3866 "qmljs.g" + + case 504: { + AST::PatternElement *node = new (pool) AST::PatternElement(sym(1).Pattern); + node->scope = AST::VariableScope::Let; + sym(1).Node = node; + } break; + +#line 3875 "qmljs.g" + + case 505: { + AST::DebuggerStatement *node = new (pool) AST::DebuggerStatement(); + node->debuggerToken = loc(1); + node->semicolonToken = loc(2); + sym(1).Node = node; + } break; + +#line 3892 "qmljs.g" + + case 507: { + if (!ensureNoFunctionTypeAnnotations(sym(6).TypeAnnotation, + sym(4).FormalParameterList)) + return false; + AST::FunctionDeclaration *node = new (pool) + AST::FunctionDeclaration(stringRef(2), + sym(4).FormalParameterList, + sym(8).StatementList, + /*type annotation*/ nullptr); + node->functionToken = loc(1); + node->identifierToken = loc(2); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->lbraceToken = loc(7); + node->rbraceToken = loc(9); + sym(1).Node = node; + } break; + +#line 3909 "qmljs.g" + + case 508: { + AST::FunctionDeclaration *node = new (pool) + AST::FunctionDeclaration(stringRef(2), + sym(4).FormalParameterList, + sym(8).StatementList, + sym(6).TypeAnnotation); + node->functionToken = loc(1); + node->identifierToken = loc(2); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->lbraceToken = loc(7); + node->rbraceToken = loc(9); + sym(1).Node = node; + } break; + +#line 3925 "qmljs.g" + + case 510: { + if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, + sym(3).FormalParameterList)) + return false; + AST::FunctionDeclaration *node = new (pool) + AST::FunctionDeclaration(QStringView(), + sym(3).FormalParameterList, + sym(7).StatementList, + /*type annotation*/ nullptr); + node->functionToken = loc(1); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + node->lbraceToken = loc(6); + node->rbraceToken = loc(8); + sym(1).Node = node; + } break; + +#line 3941 "qmljs.g" + + case 511: { + if (!ensureNoFunctionTypeAnnotations(sym(6).TypeAnnotation, + sym(4).FormalParameterList)) + return false; + AST::FunctionExpression *node = new (pool) + AST::FunctionExpression(stringRef(2), + sym(4).FormalParameterList, + sym(8).StatementList, + /*type annotation*/ nullptr); + node->functionToken = loc(1); + if (!stringRef(2).isNull()) + node->identifierToken = loc(2); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->lbraceToken = loc(7); + node->rbraceToken = loc(9); + sym(1).Node = node; + } break; + +#line 3959 "qmljs.g" + + case 512: { + if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, + sym(3).FormalParameterList)) + return false; + AST::FunctionExpression *node = new (pool) + AST::FunctionExpression(QStringView(), + sym(3).FormalParameterList, + sym(7).StatementList, + /*type annotation*/ nullptr); + node->functionToken = loc(1); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + node->lbraceToken = loc(6); + node->rbraceToken = loc(8); + sym(1).Node = node; + } break; + +#line 3977 "qmljs.g" + + case 514: { + sym(1).Node = nullptr; + } break; + +#line 3984 "qmljs.g" + + case 515: { + AST::FormalParameterList *node = (new (pool) + AST::FormalParameterList(nullptr, + sym(1).PatternElement)) + ->finish(pool); + sym(1).Node = node; + } break; #line 3992 "qmljs.g" + case 516: +#line 3994 "qmljs.g" - case 516: { - if (!ensureNoFunctionTypeAnnotations(sym(6).TypeAnnotation, sym(4).FormalParameterList)) - return false; - AST::FunctionExpression *node = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(8).StatementList, - /*type annotation*/nullptr); - node->functionToken = loc(1); - if (! stringRef(2).isNull()) - node->identifierToken = loc(2); - node->lparenToken = loc(3); - node->rparenToken = loc(5); - node->lbraceToken = loc(7); - node->rbraceToken = loc(9); - sym(1).Node = node; - } break; + case 517: { + sym(1).Node = sym(1).FormalParameterList->finish(pool); + } break; -#line 4010 "qmljs.g" +#line 4001 "qmljs.g" - case 517: { - if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, sym(3).FormalParameterList)) - return false; - AST::FunctionExpression *node = new (pool) AST::FunctionExpression(QStringView(), sym(3).FormalParameterList, sym(7).StatementList, - /*type annotation*/nullptr); - node->functionToken = loc(1); - node->lparenToken = loc(2); - node->rparenToken = loc(4); - node->lbraceToken = loc(6); - node->rbraceToken = loc(8); - sym(1).Node = node; - } break; + case 518: { + AST::FormalParameterList *node + = (new (pool) AST::FormalParameterList(sym(1).FormalParameterList, + sym(3).PatternElement)) + ->finish(pool); + sym(1).Node = node; + } break; + +#line 4009 "qmljs.g" + + case 519: { + AST::FormalParameterList *node = new (pool) + AST::FormalParameterList(nullptr, sym(1).PatternElement); + sym(1).Node = node; + } break; + +#line 4018 "qmljs.g" + + case 520: { + AST::FormalParameterList *node = new (pool) + AST::FormalParameterList(sym(1).FormalParameterList, sym(3).PatternElement); + sym(1).Node = node; + } break; #line 4028 "qmljs.g" - case 519: { - sym(1).Node = nullptr; - } break; + case 522: { + ++functionNestingLevel; + } break; #line 4035 "qmljs.g" - case 520: { - AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(nullptr, sym(1).PatternElement))->finish(pool); - sym(1).Node = node; - } break; + case 523: { + --functionNestingLevel; + } break; -#line 4043 "qmljs.g" - case 521: #line 4045 "qmljs.g" + case 525: + Q_FALLTHROUGH(); +#line 4047 "qmljs.g" - case 522: { - sym(1).Node = sym(1).FormalParameterList->finish(pool); - } break; + case 526: { + AST::ReturnStatement *ret = new (pool) AST::ReturnStatement(sym(4).Expression); + ret->returnToken = sym(4).Node->firstSourceLocation().startZeroLengthLocation(); + ret->semicolonToken = sym(4).Node->lastSourceLocation().endZeroLengthLocation( + driver->code()); + AST::StatementList *statements = (new (pool) AST::StatementList(ret))->finish(); + AST::FunctionExpression *f = new (pool) + AST::FunctionExpression(QStringView(), sym(1).FormalParameterList, statements); + f->isArrowFunction = true; + f->functionToken = sym(1).Node + ? sym(1).Node->firstSourceLocation().startZeroLengthLocation() + : loc(1).startZeroLengthLocation(); + f->lbraceToken = sym(4).Node->firstSourceLocation().startZeroLengthLocation(); + f->rbraceToken = sym(4).Node->lastSourceLocation().endZeroLengthLocation( + driver->code()); + sym(1).Node = f; + } break; -#line 4052 "qmljs.g" +#line 4063 "qmljs.g" + case 527: + Q_FALLTHROUGH(); +#line 4065 "qmljs.g" - case 523: { - AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(sym(1).FormalParameterList, sym(3).PatternElement))->finish(pool); - sym(1).Node = node; - } break; + case 528: { + AST::FunctionExpression *f = new (pool) + AST::FunctionExpression(QStringView(), + sym(1).FormalParameterList, + sym(6).StatementList); + f->isArrowFunction = true; + f->functionToken = sym(1).Node + ? sym(1).Node->firstSourceLocation().startZeroLengthLocation() + : loc(1).startZeroLengthLocation(); + f->lbraceToken = loc(5); + f->rbraceToken = loc(7); + sym(1).Node = f; + } break; -#line 4060 "qmljs.g" +#line 4077 "qmljs.g" - case 524: { - AST::FormalParameterList *node = new (pool) AST::FormalParameterList(nullptr, sym(1).PatternElement); - sym(1).Node = node; - } break; + case 529: { + AST::PatternElement *e = new (pool) AST::PatternElement(stringRef(1), + /*type annotation*/ nullptr, + nullptr, + AST::PatternElement::Binding); + e->identifierToken = loc(1); + sym(1).FormalParameterList = (new (pool) AST::FormalParameterList(nullptr, e)) + ->finish(pool); + } break; -#line 4069 "qmljs.g" +#line 4088 "qmljs.g" - case 525: { - AST::FormalParameterList *node = new (pool) AST::FormalParameterList(sym(1).FormalParameterList, sym(3).PatternElement); - sym(1).Node = node; - } break; + case 530: { + if (coverExpressionType != CE_FormalParameterList) { + AST::NestedExpression *ne = static_cast(sym(1).Node); + AST::FormalParameterList *list = ne->expression->reparseAsFormalParameterList( + pool); + if (!list) { + syntaxError(loc(1), "Invalid Arrow parameter list."); + return false; + } + sym(1).Node = list->finish(pool); + } + } break; -#line 4079 "qmljs.g" +#line 4106 "qmljs.g" - case 527: { - ++functionNestingLevel; - } break; - -#line 4086 "qmljs.g" - - case 528: { - --functionNestingLevel; - } break; - -#line 4096 "qmljs.g" - case 530: Q_FALLTHROUGH(); -#line 4098 "qmljs.g" - - case 531: { - AST::ReturnStatement *ret = new (pool) AST::ReturnStatement(sym(4).Expression); - ret->returnToken = sym(4).Node->firstSourceLocation().startZeroLengthLocation(); - ret->semicolonToken = sym(4).Node->lastSourceLocation().endZeroLengthLocation(driver->code()); - AST::StatementList *statements = (new (pool) AST::StatementList(ret))->finish(); - AST::FunctionExpression *f = new (pool) AST::FunctionExpression(QStringView(), sym(1).FormalParameterList, statements); - f->isArrowFunction = true; - f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation().startZeroLengthLocation() : loc(1).startZeroLengthLocation(); - f->lbraceToken = sym(4).Node->firstSourceLocation().startZeroLengthLocation(); - f->rbraceToken = sym(4).Node->lastSourceLocation().endZeroLengthLocation(driver->code()); - sym(1).Node = f; - } break; + case 531: { + if (lookaheadToken(lexer) == T_LBRACE) + pushToken(T_FORCE_BLOCK); + } break; #line 4114 "qmljs.g" - case 532: Q_FALLTHROUGH(); -#line 4116 "qmljs.g" - case 533: { - AST::FunctionExpression *f = new (pool) AST::FunctionExpression(QStringView(), sym(1).FormalParameterList, sym(6).StatementList); - f->isArrowFunction = true; - f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation().startZeroLengthLocation() : loc(1).startZeroLengthLocation(); - f->lbraceToken = loc(6); - f->rbraceToken = loc(7); - sym(1).Node = f; - } break; + case 532: { + if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, + sym(3).FormalParameterList)) + return false; + AST::FunctionExpression *f = new (pool) + AST::FunctionExpression(stringRef(1), + sym(3).FormalParameterList, + sym(7).StatementList); + f->functionToken = sym(1).PropertyName->firstSourceLocation(); + f->lparenToken = loc(2); + f->rparenToken = loc(4); + f->lbraceToken = loc(6); + f->rbraceToken = loc(8); + AST::PatternProperty *node = new (pool) + AST::PatternProperty(sym(1).PropertyName, f, AST::PatternProperty::Method); + node->colonToken = loc(2); + sym(1).Node = node; + } break; -#line 4128 "qmljs.g" +#line 4131 "qmljs.g" - case 534: { - AST::PatternElement *e = new (pool) AST::PatternElement(stringRef(1), /*type annotation*/nullptr, nullptr, AST::PatternElement::Binding); - e->identifierToken = loc(1); - sym(1).FormalParameterList = (new (pool) AST::FormalParameterList(nullptr, e))->finish(pool); - } break; + case 533: { + if (!ensureNoFunctionTypeAnnotations(sym(6).TypeAnnotation, + sym(4).FormalParameterList)) + return false; + AST::FunctionExpression *f = new (pool) + AST::FunctionExpression(stringRef(2), + sym(4).FormalParameterList, + sym(8).StatementList); + f->functionToken = sym(2).PropertyName->firstSourceLocation(); + f->lparenToken = loc(3); + f->rparenToken = loc(5); + f->lbraceToken = loc(7); + f->rbraceToken = loc(9); + f->isGenerator = true; + AST::PatternProperty *node = new (pool) + AST::PatternProperty(sym(2).PropertyName, f, AST::PatternProperty::Method); + node->colonToken = loc(2); + sym(1).Node = node; + } break; -#line 4139 "qmljs.g" +#line 4150 "qmljs.g" - case 535: { - if (coverExpressionType != CE_FormalParameterList) { - AST::NestedExpression *ne = static_cast(sym(1).Node); - AST::FormalParameterList *list = ne->expression->reparseAsFormalParameterList(pool); - if (!list) { - syntaxError(loc(1), "Invalid Arrow parameter list."); - return false; - } - sym(1).Node = list->finish(pool); - } - } break; + case 534: { + if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, /*formals*/ nullptr)) + return false; + AST::FunctionExpression *f = new (pool) + AST::FunctionExpression(stringRef(2), nullptr, sym(7).StatementList); + f->functionToken = sym(2).PropertyName->firstSourceLocation(); + f->lparenToken = loc(3); + f->rparenToken = loc(4); + f->lbraceToken = loc(6); + f->rbraceToken = loc(8); + AST::PatternProperty *node = new (pool) + AST::PatternProperty(sym(2).PropertyName, f, AST::PatternProperty::Getter); + node->colonToken = loc(2); + sym(1).Node = node; + } break; -#line 4157 "qmljs.g" +#line 4167 "qmljs.g" - case 536: { - if (lookaheadToken(lexer) == T_LBRACE) - pushToken(T_FORCE_BLOCK); - } break; + case 535: { + if (!ensureNoFunctionTypeAnnotations(sym(6).TypeAnnotation, + sym(4).FormalParameterList)) + return false; + AST::FunctionExpression *f = new (pool) + AST::FunctionExpression(stringRef(2), + sym(4).FormalParameterList, + sym(8).StatementList); + f->functionToken = sym(2).PropertyName->firstSourceLocation(); + f->lparenToken = loc(3); + f->rparenToken = loc(5); + f->lbraceToken = loc(7); + f->rbraceToken = loc(9); + AST::PatternProperty *node = new (pool) + AST::PatternProperty(sym(2).PropertyName, f, AST::PatternProperty::Setter); + node->colonToken = loc(2); + sym(1).Node = node; + } break; -#line 4165 "qmljs.g" +#line 4185 "qmljs.g" - case 537: { - if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, sym(3).FormalParameterList)) - return false; - AST::FunctionExpression *f = new (pool) AST::FunctionExpression(stringRef(1), sym(3).FormalParameterList, sym(7).StatementList); - f->functionToken = sym(1).PropertyName->firstSourceLocation(); - f->lparenToken = loc(2); - f->rparenToken = loc(4); - f->lbraceToken = loc(6); - f->rbraceToken = loc(8); - AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(1).PropertyName, f, AST::PatternProperty::Method); - node->colonToken = loc(2); - sym(1).Node = node; - } break; + case 536: { + AST::FormalParameterList *node = (new (pool) + AST::FormalParameterList(nullptr, + sym(1).PatternElement)) + ->finish(pool); + sym(1).Node = node; + } break; -#line 4182 "qmljs.g" +#line 4193 "qmljs.g" - case 538: { - if (!ensureNoFunctionTypeAnnotations(sym(6).TypeAnnotation, sym(4).FormalParameterList)) - return false; - AST::FunctionExpression *f = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(8).StatementList); - f->functionToken = sym(2).PropertyName->firstSourceLocation(); - f->lparenToken = loc(3); - f->rparenToken = loc(5); - f->lbraceToken = loc(7); - f->rbraceToken = loc(9); - f->isGenerator = true; - AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(2).PropertyName, f, AST::PatternProperty::Method); - node->colonToken = loc(2); - sym(1).Node = node; - } break; + case 537: { + lexer->enterGeneratorBody(); + } break; -#line 4201 "qmljs.g" +#line 4200 "qmljs.g" - case 539: { - if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, /*formals*/nullptr)) - return false; - AST::FunctionExpression *f = new (pool) AST::FunctionExpression(stringRef(2), nullptr, sym(7).StatementList); - f->functionToken = sym(2).PropertyName->firstSourceLocation(); - f->lparenToken = loc(3); - f->rparenToken = loc(4); - f->lbraceToken = loc(6); - f->rbraceToken = loc(8); - AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(2).PropertyName, f, AST::PatternProperty::Getter); - node->colonToken = loc(2); - sym(1).Node = node; - } break; + case 538: { + --functionNestingLevel; + lexer->leaveGeneratorBody(); + } break; -#line 4218 "qmljs.g" +#line 4210 "qmljs.g" - case 540: { - if (!ensureNoFunctionTypeAnnotations(sym(6).TypeAnnotation, sym(4).FormalParameterList)) - return false; - AST::FunctionExpression *f = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(8).StatementList); - f->functionToken = sym(2).PropertyName->firstSourceLocation(); - f->lparenToken = loc(3); - f->rparenToken = loc(5); - f->lbraceToken = loc(7); - f->rbraceToken = loc(9); - AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(2).PropertyName, f, AST::PatternProperty::Setter); - node->colonToken = loc(2); - sym(1).Node = node; - } break; + case 540: { + AST::FunctionDeclaration *node = new (pool) + AST::FunctionDeclaration(stringRef(2), + sym(4).FormalParameterList, + sym(7).StatementList); + node->functionToken = loc(1); + node->identifierToken = loc(2); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->lbraceToken = loc(6); + node->rbraceToken = loc(8); + node->isGenerator = true; + sym(1).Node = node; + } break; -#line 4236 "qmljs.g" +#line 4226 "qmljs.g" - case 541: { - AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(nullptr, sym(1).PatternElement))->finish(pool); - sym(1).Node = node; - } break; + case 542: { + AST::FunctionDeclaration *node = new (pool) + AST::FunctionDeclaration(QStringView(), + sym(3).FormalParameterList, + sym(6).StatementList); + node->functionToken = loc(1); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + node->lbraceToken = loc(5); + node->rbraceToken = loc(7); + node->isGenerator = true; + sym(1).Node = node; + } break; -#line 4244 "qmljs.g" +#line 4240 "qmljs.g" - case 542: { - lexer->enterGeneratorBody(); - } break; + case 543: { + AST::FunctionExpression *node = new (pool) + AST::FunctionExpression(stringRef(2), + sym(4).FormalParameterList, + sym(7).StatementList); + node->functionToken = loc(1); + if (!stringRef(2).isNull()) + node->identifierToken = loc(2); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->lbraceToken = loc(6); + node->rbraceToken = loc(8); + node->isGenerator = true; + sym(1).Node = node; + } break; -#line 4251 "qmljs.g" +#line 4256 "qmljs.g" - case 543: { - --functionNestingLevel; - lexer->leaveGeneratorBody(); - } break; + case 544: { + AST::FunctionExpression *node = new (pool) + AST::FunctionExpression(QStringView(), + sym(3).FormalParameterList, + sym(6).StatementList); + node->functionToken = loc(1); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + node->lbraceToken = loc(5); + node->rbraceToken = loc(7); + node->isGenerator = true; + sym(1).Node = node; + } break; -#line 4261 "qmljs.g" +#line 4272 "qmljs.g" + case 546: + Q_FALLTHROUGH(); +#line 4274 "qmljs.g" - case 545: { - AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(7).StatementList); - node->functionToken = loc(1); - node->identifierToken = loc(2); - node->lparenToken = loc(3); - node->rparenToken = loc(5); - node->lbraceToken = loc(6); - node->rbraceToken = loc(8); - node->isGenerator = true; - sym(1).Node = node; - } break; + case 547: { + AST::YieldExpression *node = new (pool) AST::YieldExpression(); + node->yieldToken = loc(1); + sym(1).Node = node; + } break; -#line 4277 "qmljs.g" +#line 4283 "qmljs.g" + case 548: + Q_FALLTHROUGH(); +#line 4285 "qmljs.g" - case 547: { - AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(QStringView(), sym(3).FormalParameterList, sym(6).StatementList); - node->functionToken = loc(1); - node->lparenToken = loc(2); - node->rparenToken = loc(4); - node->lbraceToken = loc(5); - node->rbraceToken = loc(7); - node->isGenerator = true; - sym(1).Node = node; - } break; + case 549: { + AST::YieldExpression *node = new (pool) AST::YieldExpression(sym(3).Expression); + node->yieldToken = loc(1); + node->isYieldStar = true; + sym(1).Node = node; + } break; -#line 4291 "qmljs.g" +#line 4295 "qmljs.g" + case 550: + Q_FALLTHROUGH(); +#line 4297 "qmljs.g" - case 548: { - AST::FunctionExpression *node = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(7).StatementList); - node->functionToken = loc(1); - if (!stringRef(2).isNull()) - node->identifierToken = loc(2); - node->lparenToken = loc(3); - node->rparenToken = loc(5); - node->lbraceToken = loc(6); - node->rbraceToken = loc(8); - node->isGenerator = true; - sym(1).Node = node; - } break; + case 551: { + AST::YieldExpression *node = new (pool) AST::YieldExpression(sym(2).Expression); + node->yieldToken = loc(1); + sym(1).Node = node; + } break; #line 4307 "qmljs.g" - case 549: { - AST::FunctionExpression *node = new (pool) AST::FunctionExpression(QStringView(), sym(3).FormalParameterList, sym(6).StatementList); - node->functionToken = loc(1); - node->lparenToken = loc(2); - node->rparenToken = loc(4); - node->lbraceToken = loc(5); - node->rbraceToken = loc(7); - node->isGenerator = true; - sym(1).Node = node; - } break; + case 552: { + AST::ClassDeclaration *node = new (pool) + AST::ClassDeclaration(stringRef(2), sym(3).Expression, sym(5).ClassElementList); + node->classToken = loc(1); + node->identifierToken = loc(2); + node->lbraceToken = loc(4); + node->rbraceToken = loc(6); + sym(1).Node = node; + } break; -#line 4323 "qmljs.g" - case 551: Q_FALLTHROUGH(); -#line 4325 "qmljs.g" +#line 4319 "qmljs.g" - case 552: { - AST::YieldExpression *node = new (pool) AST::YieldExpression(); - node->yieldToken = loc(1); - sym(1).Node = node; - } break; + case 553: { + AST::ClassExpression *node = new (pool) + AST::ClassExpression(stringRef(2), sym(3).Expression, sym(5).ClassElementList); + node->classToken = loc(1); + node->identifierToken = loc(2); + node->lbraceToken = loc(4); + node->rbraceToken = loc(6); + sym(1).Node = node; + } break; -#line 4334 "qmljs.g" - case 553: Q_FALLTHROUGH(); -#line 4336 "qmljs.g" +#line 4331 "qmljs.g" - case 554: { - AST::YieldExpression *node = new (pool) AST::YieldExpression(sym(3).Expression); - node->yieldToken = loc(1); - node->isYieldStar = true; - sym(1).Node = node; - } break; + case 554: { + AST::ClassDeclaration *node = new (pool) + AST::ClassDeclaration(QStringView(), sym(2).Expression, sym(4).ClassElementList); + node->classToken = loc(1); + node->lbraceToken = loc(3); + node->rbraceToken = loc(5); + sym(1).Node = node; + } break; -#line 4346 "qmljs.g" - case 555: Q_FALLTHROUGH(); -#line 4348 "qmljs.g" +#line 4342 "qmljs.g" - case 556: { - AST::YieldExpression *node = new (pool) AST::YieldExpression(sym(2).Expression); - node->yieldToken = loc(1); - sym(1).Node = node; - } break; + case 555: { + AST::ClassExpression *node = new (pool) + AST::ClassExpression(QStringView(), sym(2).Expression, sym(4).ClassElementList); + node->classToken = loc(1); + node->lbraceToken = loc(3); + node->rbraceToken = loc(5); + sym(1).Node = node; + } break; -#line 4358 "qmljs.g" +#line 4355 "qmljs.g" - case 557: { - AST::ClassDeclaration *node = new (pool) AST::ClassDeclaration(stringRef(2), sym(3).Expression, sym(5).ClassElementList); - node->classToken = loc(1); - node->identifierToken = loc(2); - node->lbraceToken = loc(4); - node->rbraceToken = loc(6); - sym(1).Node = node; - } break; + case 557: { + lexer->setStaticIsKeyword(true); + } break; -#line 4370 "qmljs.g" +#line 4362 "qmljs.g" + case 558: +#line 4364 "qmljs.g" - case 558: { - AST::ClassExpression *node = new (pool) AST::ClassExpression(stringRef(2), sym(3).Expression, sym(5).ClassElementList); - node->classToken = loc(1); - node->identifierToken = loc(2); - node->lbraceToken = loc(4); - node->rbraceToken = loc(6); - sym(1).Node = node; - } break; + case 559: { + lexer->setStaticIsKeyword(false); + } break; -#line 4382 "qmljs.g" +#line 4371 "qmljs.g" - case 559: { - AST::ClassDeclaration *node = new (pool) AST::ClassDeclaration(QStringView(), sym(2).Expression, sym(4).ClassElementList); - node->classToken = loc(1); - node->lbraceToken = loc(3); - node->rbraceToken = loc(5); - sym(1).Node = node; - } break; + case 560: { + sym(1).Node = nullptr; + } break; -#line 4393 "qmljs.g" +#line 4378 "qmljs.g" - case 560: { - AST::ClassExpression *node = new (pool) AST::ClassExpression(QStringView(), sym(2).Expression, sym(4).ClassElementList); - node->classToken = loc(1); - node->lbraceToken = loc(3); - node->rbraceToken = loc(5); - sym(1).Node = node; - } break; + case 561: { + sym(1).Node = sym(2).Node; + } break; -#line 4406 "qmljs.g" +#line 4385 "qmljs.g" - case 562: { - lexer->setStaticIsKeyword(true); - } break; + case 562: { + sym(1).Node = nullptr; + } break; -#line 4413 "qmljs.g" - case 563: -#line 4415 "qmljs.g" +#line 4392 "qmljs.g" - case 564: { - lexer->setStaticIsKeyword(false); - } break; + case 563: { + if (sym(1).Node) + sym(1).Node = sym(1).ClassElementList->finish(); + } break; + +#line 4402 "qmljs.g" + + case 565: { + if (sym(1).Node) { + if (sym(2).Node) + sym(1).ClassElementList = sym(1).ClassElementList->append( + sym(2).ClassElementList); + } else if (sym(2).Node) { + sym(1).Node = sym(2).Node; + } + } break; + +#line 4414 "qmljs.g" + + case 566: { + AST::ClassElementList *node = new (pool) + AST::ClassElementList(sym(1).PatternProperty, false); + sym(1).Node = node; + } break; #line 4422 "qmljs.g" - case 565: { - sym(1).Node = nullptr; - } break; + case 567: { + lexer->setStaticIsKeyword(true); + AST::ClassElementList *node = new (pool) + AST::ClassElementList(sym(2).PatternProperty, true); + sym(1).Node = node; + } break; -#line 4429 "qmljs.g" +#line 4431 "qmljs.g" - case 566: { - sym(1).Node = sym(2).Node; - } break; + case 568: { + sym(1).Node = nullptr; + } break; -#line 4436 "qmljs.g" +#line 4440 "qmljs.g" - case 567: { - sym(1).Node = nullptr; - } break; + case 569: { + sym(1).Node = nullptr; + } break; -#line 4443 "qmljs.g" +#line 4449 "qmljs.g" - case 568: { - if (sym(1).Node) - sym(1).Node = sym(1).ClassElementList->finish(); - } break; + case 571: { + sym(1).Node = new (pool) AST::Program(sym(1).StatementList->finish()); + } break; -#line 4453 "qmljs.g" +#line 4456 "qmljs.g" + case 572: { + sym(1).Node = new (pool) AST::ESModule(sym(1).StatementList); + } break; - case 570: { - if (sym(1).Node) { - if (sym(2).Node) - sym(1).ClassElementList = sym(1).ClassElementList->append(sym(2).ClassElementList); - } else if (sym(2).Node) { - sym(1).Node = sym(2).Node; - } - } break; +#line 4462 "qmljs.g" -#line 4465 "qmljs.g" + case 573: { + sym(1).StatementList = sym(1).StatementList->finish(); + } break; - case 571: { - AST::ClassElementList *node = new (pool) AST::ClassElementList(sym(1).PatternProperty, false); - sym(1).Node = node; - } break; +#line 4469 "qmljs.g" -#line 4473 "qmljs.g" + case 574: { + sym(1).StatementList = nullptr; + } break; - case 572: { - lexer->setStaticIsKeyword(true); - AST::ClassElementList *node = new (pool) AST::ClassElementList(sym(2).PatternProperty, true); - sym(1).Node = node; - } break; +#line 4479 "qmljs.g" -#line 4482 "qmljs.g" + case 577: { + sym(1).StatementList = sym(1).StatementList->append(sym(2).StatementList); + } break; - case 573: { - sym(1).Node = nullptr; - } break; +#line 4487 "qmljs.g" + case 578: + Q_FALLTHROUGH(); +#line 4489 "qmljs.g" -#line 4491 "qmljs.g" + case 579: { + sym(1).StatementList = new (pool) AST::StatementList(sym(1).Node); + } break; - case 574: { - sym(1).Node = nullptr; - } break; +#line 4498 "qmljs.g" -#line 4500 "qmljs.g" + case 581: { + auto decl = new (pool) AST::ImportDeclaration(sym(2).ImportClause, sym(3).FromClause); + decl->importToken = loc(1); + sym(1).Node = decl; + } break; - case 576: { - sym(1).Node = new (pool) AST::Program(sym(1).StatementList->finish()); - } break; +#line 4506 "qmljs.g" -#line 4507 "qmljs.g" - case 577: { - sym(1).Node = new (pool) AST::ESModule(sym(1).StatementList); - } break; + case 582: { + auto decl = new (pool) AST::ImportDeclaration(stringRef(2)); + decl->importToken = loc(1); + decl->moduleSpecifierToken = loc(2); + sym(1).Node = decl; + } break; -#line 4513 "qmljs.g" +#line 4516 "qmljs.g" - case 578: { - sym(1).StatementList = sym(1).StatementList->finish(); - } break; + case 583: { + auto clause = new (pool) AST::ImportClause(stringRef(1)); + clause->importedDefaultBindingToken = loc(1); + sym(1).ImportClause = clause; + } break; -#line 4520 "qmljs.g" +#line 4524 "qmljs.g" - case 579: { - sym(1).StatementList = nullptr; - } break; + case 584: { + sym(1).ImportClause = new (pool) AST::ImportClause(sym(1).NameSpaceImport); + } break; #line 4530 "qmljs.g" - case 582: { - sym(1).StatementList = sym(1).StatementList->append(sym(2).StatementList); - } break; + case 585: { + sym(1).ImportClause = new (pool) AST::ImportClause(sym(1).NamedImports); + } break; -#line 4538 "qmljs.g" - case 583: Q_FALLTHROUGH(); -#line 4540 "qmljs.g" +#line 4536 "qmljs.g" - case 584: { - sym(1).StatementList = new (pool) AST::StatementList(sym(1).Node); - } break; + case 586: { + auto importClause = new (pool) + AST::ImportClause(stringRef(1), sym(3).NameSpaceImport); + importClause->importedDefaultBindingToken = loc(1); + sym(1).ImportClause = importClause; + } break; -#line 4549 "qmljs.g" +#line 4544 "qmljs.g" - case 586: { - auto decl = new (pool) AST::ImportDeclaration(sym(2).ImportClause, sym(3).FromClause); - decl->importToken = loc(1); - sym(1).Node = decl; - } break; + case 587: { + auto importClause = new (pool) AST::ImportClause(stringRef(1), sym(3).NamedImports); + importClause->importedDefaultBindingToken = loc(1); + sym(1).ImportClause = importClause; + } break; -#line 4557 "qmljs.g" +#line 4555 "qmljs.g" - case 587: { - auto decl = new (pool) AST::ImportDeclaration(stringRef(2)); - decl->importToken = loc(1); - decl->moduleSpecifierToken = loc(2); - sym(1).Node = decl; - } break; + case 589: { + auto import = new (pool) AST::NameSpaceImport(stringRef(3)); + import->starToken = loc(1); + import->importedBindingToken = loc(3); + sym(1).NameSpaceImport = import; + } break; -#line 4567 "qmljs.g" +#line 4565 "qmljs.g" - case 588: { - auto clause = new (pool) AST::ImportClause(stringRef(1)); - clause->importedDefaultBindingToken = loc(1); - sym(1).ImportClause = clause; - } break; + case 590: { + auto namedImports = new (pool) AST::NamedImports(); + namedImports->leftBraceToken = loc(1); + namedImports->rightBraceToken = loc(2); + sym(1).NamedImports = namedImports; + } break; -#line 4575 "qmljs.g" +#line 4574 "qmljs.g" - case 589: { - sym(1).ImportClause = new (pool) AST::ImportClause(sym(1).NameSpaceImport); - } break; + case 591: { + auto namedImports = new (pool) AST::NamedImports(sym(2).ImportsList->finish()); + namedImports->leftBraceToken = loc(1); + namedImports->rightBraceToken = loc(3); + sym(1).NamedImports = namedImports; + } break; -#line 4581 "qmljs.g" +#line 4583 "qmljs.g" - case 590: { - sym(1).ImportClause = new (pool) AST::ImportClause(sym(1).NamedImports); - } break; + case 592: { + auto namedImports = new (pool) AST::NamedImports(sym(2).ImportsList->finish()); + namedImports->leftBraceToken = loc(1); + namedImports->rightBraceToken = loc(4); + sym(1).NamedImports = namedImports; + } break; -#line 4587 "qmljs.g" +#line 4593 "qmljs.g" - case 591: { - auto importClause = new (pool) AST::ImportClause(stringRef(1), sym(3).NameSpaceImport); - importClause->importedDefaultBindingToken = loc(1); - sym(1).ImportClause = importClause; - } break; + case 593: { + auto clause = new (pool) AST::FromClause(stringRef(2)); + clause->fromToken = loc(1); + clause->moduleSpecifierToken = loc(2); + sym(1).FromClause = clause; + } break; -#line 4595 "qmljs.g" +#line 4603 "qmljs.g" - case 592: { - auto importClause = new (pool) AST::ImportClause(stringRef(1), sym(3).NamedImports); - importClause->importedDefaultBindingToken = loc(1); - sym(1).ImportClause = importClause; - } break; + case 594: { + auto importsList = new (pool) AST::ImportsList(sym(1).ImportSpecifier); + importsList->importSpecifierToken = loc(1); + sym(1).ImportsList = importsList; + } break; -#line 4606 "qmljs.g" +#line 4611 "qmljs.g" - case 594: { - auto import = new (pool) AST::NameSpaceImport(stringRef(3)); - import->starToken = loc(1); - import->importedBindingToken = loc(3); - sym(1).NameSpaceImport = import; - } break; + case 595: { + auto importsList = new (pool) + AST::ImportsList(sym(1).ImportsList, sym(3).ImportSpecifier); + importsList->importSpecifierToken = loc(3); + sym(1).ImportsList = importsList; + } break; -#line 4616 "qmljs.g" +#line 4623 "qmljs.g" - case 595: { - auto namedImports = new (pool) AST::NamedImports(); - namedImports->leftBraceToken = loc(1); - namedImports->rightBraceToken = loc(2); - sym(1).NamedImports = namedImports; - } break; + case 596: { + auto importSpecifier = new (pool) AST::ImportSpecifier(stringRef(1)); + importSpecifier->importedBindingToken = loc(1); + sym(1).ImportSpecifier = importSpecifier; + } break; -#line 4625 "qmljs.g" +#line 4631 "qmljs.g" - case 596: { - auto namedImports = new (pool) AST::NamedImports(sym(2).ImportsList->finish()); - namedImports->leftBraceToken = loc(1); - namedImports->rightBraceToken = loc(3); - sym(1).NamedImports = namedImports; - } break; + case 597: { + auto importSpecifier = new (pool) AST::ImportSpecifier(stringRef(1), stringRef(3)); + importSpecifier->identifierToken = loc(1); + importSpecifier->importedBindingToken = loc(3); + sym(1).ImportSpecifier = importSpecifier; + } break; -#line 4634 "qmljs.g" +#line 4648 "qmljs.g" - case 597: { - auto namedImports = new (pool) AST::NamedImports(sym(2).ImportsList->finish()); - namedImports->leftBraceToken = loc(1); - namedImports->rightBraceToken = loc(4); - sym(1).NamedImports = namedImports; - } break; + case 600: { + int token = lookaheadToken(lexer); + if (token == T_FUNCTION || token == T_FUNCTION_STAR || token == T_CLASS) + pushToken(T_FORCE_DECLARATION); + } break; -#line 4644 "qmljs.g" +#line 4657 "qmljs.g" - case 598: { - auto clause = new (pool) AST::FromClause(stringRef(2)); - clause->fromToken = loc(1); - clause->moduleSpecifierToken = loc(2); - sym(1).FromClause = clause; - } break; + case 601: { + auto exportDeclaration = new (pool) AST::ExportDeclaration(sym(3).FromClause); + exportDeclaration->exportToken = loc(1); + sym(1).ExportDeclaration = exportDeclaration; + } break; -#line 4654 "qmljs.g" +#line 4665 "qmljs.g" - case 599: { - auto importsList = new (pool) AST::ImportsList(sym(1).ImportSpecifier); - importsList->importSpecifierToken = loc(1); - sym(1).ImportsList = importsList; - } break; + case 602: { + auto exportDeclaration = new (pool) + AST::ExportDeclaration(sym(2).ExportClause, sym(3).FromClause); + exportDeclaration->exportToken = loc(1); + sym(1).ExportDeclaration = exportDeclaration; + } break; -#line 4662 "qmljs.g" +#line 4673 "qmljs.g" - case 600: { - auto importsList = new (pool) AST::ImportsList(sym(1).ImportsList, sym(3).ImportSpecifier); - importsList->importSpecifierToken = loc(3); - sym(1).ImportsList = importsList; - } break; + case 603: { + auto exportDeclaration = new (pool) AST::ExportDeclaration(sym(2).ExportClause); + exportDeclaration->exportToken = loc(1); + sym(1).ExportDeclaration = exportDeclaration; + } break; -#line 4674 "qmljs.g" +#line 4681 "qmljs.g" + case 604: + Q_FALLTHROUGH(); +#line 4683 "qmljs.g" - case 601: { - auto importSpecifier = new (pool) AST::ImportSpecifier(stringRef(1)); - importSpecifier->importedBindingToken = loc(1); - sym(1).ImportSpecifier = importSpecifier; - } break; + case 605: { + auto exportDeclaration = new (pool) + AST::ExportDeclaration(/*exportDefault=*/false, sym(2).Node); + exportDeclaration->exportToken = loc(1); + sym(1).ExportDeclaration = exportDeclaration; + } break; -#line 4682 "qmljs.g" +#line 4691 "qmljs.g" - case 602: { - auto importSpecifier = new (pool) AST::ImportSpecifier(stringRef(1), stringRef(3)); - importSpecifier->identifierToken = loc(1); - importSpecifier->importedBindingToken = loc(3); - sym(1).ImportSpecifier = importSpecifier; - } break; + case 606: { + if (auto *f = AST::cast(sym(5).Node)) { + if (f->name.isEmpty()) { + f->name = stringRef(2); + f->identifierToken = loc(2); + } + } + } + Q_FALLTHROUGH(); -#line 4699 "qmljs.g" +#line 4702 "qmljs.g" - case 605: { - int token = lookaheadToken(lexer); - if (token == T_FUNCTION || token == T_FUNCTION_STAR || token == T_CLASS) - pushToken(T_FORCE_DECLARATION); - } break; + case 607: { + // Emulate 15.2.3.11 + if (auto *cls = AST::cast(sym(5).Node)) { + if (cls->name.isEmpty()) { + cls->name = stringRef(2); + cls->identifierToken = loc(2); + } + } -#line 4708 "qmljs.g" + auto exportDeclaration = new (pool) + AST::ExportDeclaration(/*exportDefault=*/true, sym(5).Node); + exportDeclaration->exportToken = loc(1); + sym(1).ExportDeclaration = exportDeclaration; + } break; - case 606: { - auto exportDeclaration = new (pool) AST::ExportDeclaration(sym(3).FromClause); - exportDeclaration->exportToken = loc(1); - sym(1).ExportDeclaration = exportDeclaration; - } break; +#line 4718 "qmljs.g" -#line 4716 "qmljs.g" + case 608: { + // if lhs is an identifier expression and rhs is an anonymous function expression, we need to assign the name of lhs to the function + if (auto *f = asAnonymousFunctionDefinition(sym(4).Node)) { + f->name = stringRef(2); + } + if (auto *c = asAnonymousClassDefinition(sym(4).Expression)) { + c->name = stringRef(2); + } - case 607: { - auto exportDeclaration = new (pool) AST::ExportDeclaration(sym(2).ExportClause, sym(3).FromClause); - exportDeclaration->exportToken = loc(1); - sym(1).ExportDeclaration = exportDeclaration; - } break; + auto exportDeclaration = new (pool) + AST::ExportDeclaration(/*exportDefault=*/true, sym(4).Node); + exportDeclaration->exportToken = loc(1); + sym(1).ExportDeclaration = exportDeclaration; + } break; -#line 4724 "qmljs.g" +#line 4735 "qmljs.g" - case 608: { - auto exportDeclaration = new (pool) AST::ExportDeclaration(sym(2).ExportClause); - exportDeclaration->exportToken = loc(1); - sym(1).ExportDeclaration = exportDeclaration; - } break; + case 609: { + auto exportClause = new (pool) AST::ExportClause(); + exportClause->leftBraceToken = loc(1); + exportClause->rightBraceToken = loc(2); + sym(1).ExportClause = exportClause; + } break; -#line 4732 "qmljs.g" - case 609: Q_FALLTHROUGH(); -#line 4734 "qmljs.g" +#line 4744 "qmljs.g" - case 610: { - auto exportDeclaration = new (pool) AST::ExportDeclaration(/*exportDefault=*/false, sym(2).Node); - exportDeclaration->exportToken = loc(1); - sym(1).ExportDeclaration = exportDeclaration; - } break; - -#line 4742 "qmljs.g" - - case 611: { - if (auto *f = AST::cast(sym(5).Node)) { - if (f->name.isEmpty()) { - f->name = stringRef(2); - f->identifierToken = loc(2); - } - } - } Q_FALLTHROUGH(); + case 610: { + auto exportClause = new (pool) AST::ExportClause(sym(2).ExportsList->finish()); + exportClause->leftBraceToken = loc(1); + exportClause->rightBraceToken = loc(3); + sym(1).ExportClause = exportClause; + } break; #line 4753 "qmljs.g" - case 612: { - // Emulate 15.2.3.11 - if (auto *cls = AST::cast(sym(5).Node)) { - if (cls->name.isEmpty()) { - cls->name = stringRef(2); - cls->identifierToken = loc(2); - } - } + case 611: { + auto exportClause = new (pool) AST::ExportClause(sym(2).ExportsList->finish()); + exportClause->leftBraceToken = loc(1); + exportClause->rightBraceToken = loc(4); + sym(1).ExportClause = exportClause; + } break; - auto exportDeclaration = new (pool) AST::ExportDeclaration(/*exportDefault=*/true, sym(5).Node); - exportDeclaration->exportToken = loc(1); - sym(1).ExportDeclaration = exportDeclaration; - } break; +#line 4763 "qmljs.g" + + case 612: { + sym(1).ExportsList = new (pool) AST::ExportsList(sym(1).ExportSpecifier); + } break; #line 4769 "qmljs.g" - case 613: { - // if lhs is an identifier expression and rhs is an anonymous function expression, we need to assign the name of lhs to the function - if (auto *f = asAnonymousFunctionDefinition(sym(4).Node)) { - f->name = stringRef(2); - } - if (auto *c = asAnonymousClassDefinition(sym(4).Expression)) { - c->name = stringRef(2); - } + case 613: { + sym(1).ExportsList = new (pool) + AST::ExportsList(sym(1).ExportsList, sym(3).ExportSpecifier); + } break; - auto exportDeclaration = new (pool) AST::ExportDeclaration(/*exportDefault=*/true, sym(4).Node); - exportDeclaration->exportToken = loc(1); - sym(1).ExportDeclaration = exportDeclaration; - } break; +#line 4776 "qmljs.g" -#line 4786 "qmljs.g" + case 614: { + auto exportSpecifier = new (pool) AST::ExportSpecifier(stringRef(1)); + exportSpecifier->identifierToken = loc(1); + sym(1).ExportSpecifier = exportSpecifier; + } break; - case 614: { - auto exportClause = new (pool) AST::ExportClause(); - exportClause->leftBraceToken = loc(1); - exportClause->rightBraceToken = loc(2); - sym(1).ExportClause = exportClause; - } break; +#line 4784 "qmljs.g" + + case 615: { + auto exportSpecifier = new (pool) AST::ExportSpecifier(stringRef(1), stringRef(3)); + exportSpecifier->identifierToken = loc(1); + exportSpecifier->exportedIdentifierToken = loc(3); + sym(1).ExportSpecifier = exportSpecifier; + } break; #line 4795 "qmljs.g" - case 615: { - auto exportClause = new (pool) AST::ExportClause(sym(2).ExportsList->finish()); - exportClause->leftBraceToken = loc(1); - exportClause->rightBraceToken = loc(3); - sym(1).ExportClause = exportClause; - } break; - -#line 4804 "qmljs.g" - - case 616: { - auto exportClause = new (pool) AST::ExportClause(sym(2).ExportsList->finish()); - exportClause->leftBraceToken = loc(1); - exportClause->rightBraceToken = loc(4); - sym(1).ExportClause = exportClause; - } break; - -#line 4814 "qmljs.g" - - case 617: { - sym(1).ExportsList = new (pool) AST::ExportsList(sym(1).ExportSpecifier); - } break; - -#line 4820 "qmljs.g" - - case 618: { - sym(1).ExportsList = new (pool) AST::ExportsList(sym(1).ExportsList, sym(3).ExportSpecifier); - } break; - -#line 4827 "qmljs.g" - - case 619: { - auto exportSpecifier = new (pool) AST::ExportSpecifier(stringRef(1)); - exportSpecifier->identifierToken = loc(1); - sym(1).ExportSpecifier = exportSpecifier; - } break; - -#line 4835 "qmljs.g" - - case 620: { - auto exportSpecifier = new (pool) AST::ExportSpecifier(stringRef(1), stringRef(3)); - exportSpecifier->identifierToken = loc(1); - exportSpecifier->exportedIdentifierToken = loc(3); - sym(1).ExportSpecifier = exportSpecifier; - } break; - -#line 4846 "qmljs.g" - - // ------------ end of switch statement - } // switch - action = nt_action(state_stack[tos], lhs[r] - TERMINAL_COUNT); + // ------------ end of switch statement + } // switch + action = nt_action(state_stack[tos], lhs[r] - TERMINAL_COUNT); } // if } while (action != 0); diff --git a/src/libs/qmljs/parser/qmljsparser_p.h b/src/libs/qmljs/parser/qmljsparser_p.h index ecbb0a7af27..d19b4ebb885 100644 --- a/src/libs/qmljs/parser/qmljsparser_p.h +++ b/src/libs/qmljs/parser/qmljsparser_p.h @@ -116,6 +116,7 @@ public: AST::UiPragma *UiPragma; AST::UiImport *UiImport; AST::UiParameterList *UiParameterList; + AST::UiPropertyAttributes *UiPropertyAttributes; AST::UiPublicMember *UiPublicMember; AST::UiObjectDefinition *UiObjectDefinition; AST::UiObjectInitializer *UiObjectInitializer; @@ -288,29 +289,27 @@ protected: } // end of namespace QmlJS +#line 1819 "qmljs.g" +#define J_SCRIPT_REGEXPLITERAL_RULE1 159 -#line 1878 "qmljs.g" +#line 1831 "qmljs.g" -#define J_SCRIPT_REGEXPLITERAL_RULE1 164 +#define J_SCRIPT_REGEXPLITERAL_RULE2 160 -#line 1890 "qmljs.g" +#line 3451 "qmljs.g" -#define J_SCRIPT_REGEXPLITERAL_RULE2 165 +#define J_SCRIPT_EXPRESSIONSTATEMENTLOOKAHEAD_RULE 461 -#line 3502 "qmljs.g" +#line 4103 "qmljs.g" -#define J_SCRIPT_EXPRESSIONSTATEMENTLOOKAHEAD_RULE 466 +#define J_SCRIPT_CONCISEBODYLOOKAHEAD_RULE 531 -#line 4154 "qmljs.g" +#line 4645 "qmljs.g" -#define J_SCRIPT_CONCISEBODYLOOKAHEAD_RULE 536 +#define J_SCRIPT_EXPORTDECLARATIONLOOKAHEAD_RULE 600 -#line 4696 "qmljs.g" - -#define J_SCRIPT_EXPORTDECLARATIONLOOKAHEAD_RULE 605 - -#line 4980 "qmljs.g" +#line 4929 "qmljs.g" QT_QML_END_NAMESPACE diff --git a/src/libs/qmljs/qmljs.qbs b/src/libs/qmljs/qmljs.qbs index 3fe7ad5b81a..7726143d8ed 100644 --- a/src/libs/qmljs/qmljs.qbs +++ b/src/libs/qmljs/qmljs.qbs @@ -64,7 +64,7 @@ Project { "qmljsast.cpp", "qmljsast_p.h", "qmljsastfwd_p.h", "qmljsastvisitor.cpp", "qmljsastvisitor_p.h", - "qmljsengine_p.cpp", "qmljsengine_p.h", + "qmljsengine_p.h", "qmljsglobal_p.h", "qmljsgrammar.cpp", "qmljsgrammar_p.h", "qmljskeywords_p.h", diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index 666d176e1d8..74526295813 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -1852,7 +1852,7 @@ ASTObjectValue::ASTObjectValue(UiQualifiedId *typeName, if (def->type == UiPublicMember::Property && !def->name.isEmpty()) { ASTPropertyReference *ref = new ASTPropertyReference(def, m_doc, valueOwner); m_properties.append(ref); - if (def->defaultToken.isValid()) + if (def->defaultToken().isValid()) m_defaultPropertyRef = ref; } else if (def->type == UiPublicMember::Signal && !def->name.isEmpty()) { ASTSignal *ref = new ASTSignal(def, m_doc, valueOwner); @@ -1884,7 +1884,7 @@ void ASTObjectValue::processMembers(MemberProcessor *processor) const { foreach (ASTPropertyReference *ref, m_properties) { uint pFlags = PropertyInfo::Readable; - if (!ref->ast()->isReadonlyMember) + if (!ref->ast()->isReadonly()) pFlags |= PropertyInfo::Writeable; processor->processProperty(ref->ast()->name.toString(), ref, PropertyInfo(pFlags)); // ### Should get a different value? diff --git a/src/libs/qmljs/qmljsreformatter.cpp b/src/libs/qmljs/qmljsreformatter.cpp index 6711790cef7..5e57697aa91 100644 --- a/src/libs/qmljs/qmljsreformatter.cpp +++ b/src/libs/qmljs/qmljsreformatter.cpp @@ -641,13 +641,13 @@ protected: bool visit(UiPublicMember *ast) override { if (ast->type == UiPublicMember::Property) { - if (ast->isRequired) - out("required ", ast->requiredToken); - if (ast->isDefaultMember) - out("default ", ast->defaultToken); - else if (ast->isReadonlyMember) - out("readonly ", ast->readonlyToken); - out("property ", ast->propertyToken); + if (ast->isRequired()) + out("required ", ast->requiredToken()); + if (ast->isDefaultMember()) + out("default ", ast->defaultToken()); + else if (ast->isReadonly()) + out("readonly ", ast->readonlyToken()); + out("property ", ast->propertyToken()); if (!ast->typeModifier.isNull()) { out(ast->typeModifierToken); out("<"); diff --git a/src/plugins/qmldesigner/components/componentcore/findimplementation.cpp b/src/plugins/qmldesigner/components/componentcore/findimplementation.cpp index a1d7b5fad43..1838a3d4e9d 100644 --- a/src/plugins/qmldesigner/components/componentcore/findimplementation.cpp +++ b/src/plugins/qmldesigner/components/componentcore/findimplementation.cpp @@ -79,8 +79,7 @@ protected: return m_document->source().mid(from.offset, to.end() - from.begin()); } - void accept(AST::Node *node) - { AST::Node::acceptChild(node, this); } + void accept(AST::Node *node) { AST::Node::accept(node, this); } using AST::Visitor::visit; diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index 97ff30850ff..84278234d48 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -86,7 +86,7 @@ static TypeName resolveTypeName(const ASTPropertyReference *ref, const ContextPt { TypeName type = "unknown"; - if (ref->ast()->propertyToken.isValid()) { + if (ref->ast()->propertyToken().isValid()) { type = ref->ast()->memberType->name.toUtf8(); const Value *value = context->lookupReference(ref); diff --git a/src/plugins/qmljseditor/qmljseditordocument.cpp b/src/plugins/qmljseditor/qmljseditordocument.cpp index 13d29e72ccc..737631f9e95 100644 --- a/src/plugins/qmljseditor/qmljseditordocument.cpp +++ b/src/plugins/qmljseditor/qmljseditordocument.cpp @@ -101,8 +101,7 @@ protected: return text; } - void accept(AST::Node *node) - { AST::Node::acceptChild(node, this); } + void accept(AST::Node *node) { AST::Node::accept(node, this); } using Visitor::visit; using Visitor::endVisit; @@ -186,8 +185,7 @@ protected: return text; } - void accept(AST::Node *node) - { AST::Node::acceptChild(node, this); } + void accept(AST::Node *node) { AST::Node::accept(node, this); } void init(Declaration *decl, AST::UiObjectMember *member) { diff --git a/src/plugins/qmljseditor/qmljsfindreferences.cpp b/src/plugins/qmljseditor/qmljsfindreferences.cpp index 1acf9638ec1..5f7a9a33eac 100644 --- a/src/plugins/qmljseditor/qmljsfindreferences.cpp +++ b/src/plugins/qmljseditor/qmljsfindreferences.cpp @@ -91,8 +91,7 @@ public: } protected: - void accept(AST::Node *node) - { AST::Node::acceptChild(node, this); } + void accept(AST::Node *node) { AST::Node::accept(node, this); } using Visitor::visit; @@ -321,8 +320,7 @@ public: } protected: - void accept(AST::Node *node) - { AST::Node::acceptChild(node, this); } + void accept(AST::Node *node) { AST::Node::accept(node, this); } using Visitor::visit; @@ -507,8 +505,7 @@ public: } protected: - void accept(AST::Node *node) - { AST::Node::acceptChild(node, this); } + void accept(AST::Node *node) { AST::Node::accept(node, this); } using Visitor::visit; @@ -596,7 +593,7 @@ protected: bool visit(UiPublicMember *node) override { if (containsOffset(node->typeToken)){ - if (node->defaultToken.isValid()) { + if (node->defaultToken().isValid()) { _name = node->memberType->name.toString(); _targetValue = _scopeChain->context()->lookupType(_doc.data(), QStringList(_name)); _scope = nullptr;